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
+
+
IHDR00`Ü	µsBITÛáOà²PLTEÿÿÿÿÿ÷õÿÿþûüøúýûùñúûÓøöïñ÷öéõøèõüû÷²ýîïíñöïïïùïÐöííèîõïîæñò¯åïïçìçôðšøåæôï–æææäçíàæñçåÔúÞÝâââßãåÞßëÞÞÞëærèÚáùÖÖ×ÞèïØØÖÜïÖÜàùÒ×éã_ÚÚØÝÛÇÎÛïÖØÜ÷ÎÑÖÖÖÏÕç÷ÊÆÐÓÛÒØ ÕÒ¾ÌÑäÍÑÞßÛQ¾ÔçßÙA¸×Î÷ÃÅèÇÅÌÌÌÄÍßÃÏÂÈËÕÈÊÏæËRë¿Æ²Ó™ÄÇÐÂÆ×ÅÅÅñº¾åÉI²Çâð¸»¾ÄÔ¾ÂÐÃÌW÷³¶êµ½­Ãà›Ì¾¼ÀÎï²·é´¶ô±«¼¾Ç·¼Ì»¼¿Ë¾i·»Æð¬¯¹º½¬¿ªÎ³Â£»Þ²·ÆÒ¯¹´¶¾°µÄø¤£±³»£»�¦¸Ÿ«¯¿¬®µ£°½§¶]ð™ž‰½d¥ª·§©°Ö�§ð••›ªÃà™ Æžª¢¥±ò�”ï�„Õ–�“¤¿Ÿ¢ªÝ‘˜•«V“¢´¹™§Ì’�a²šš�¦Œ¤�Þ‹’‹ž½è†���¸Ž¤d»�ŸÖˆ�Šœ­ß†ŒìƒzŸ—ˆ•–¡„–·æ~…í{�ƒ•¯ë|q~›}��d‘�¨H§ŒêzTy˜Y{”{]¥)u—Yl�²§€˜õmls“tv‹®ésJ¶zŽÛo€e�©€… '£}çcXv}§ÞbrãbbbˆV­l„†s�æ]SèZZÝ\\Y�aO}¥Uy¯ãZC—l€skro™ÙUhcp ’fP|TæOOYq£`o§Dv¥il‰æKKedíGHäKBJl¨[hžáJ2GtN{^‹åDDZgˆï?<äALu[ŠxYWiVŽT^€ã8C.eœä8;9`£Ç;SsTSâ23Ô1<ã++YI¡Ó+7Ä-F[F‚ß#13F�(<…/~ÂòÀ»	pHYs
+ð
+ðB¬4˜tEXtSoftwareAdobe FireworksO³NtEXtCreation Time02/15/06jŸŠþIDATH‰Õ•ý_SUÇ¿ºÛ®›mÑ
f.Awâ–…[óÎb¤9e[9˜èD'FêBÅP(˜3Ê,ËÌžÌ‡(“¬eYØ*ÎÄ2ÿ�Î½çî˜{õc½¸Ûëìû¾Ÿó=÷œ;€ÿ$òööí,íÉÙÞÞ€ëÉ—KJh“NgR'GWR…�õV«Õåp¹\&Z—G•i='4 ú%.t)IŽµÖT‡…Újï¦ƒÇÁ'448hv’4¥Ñ°šV©ØQºÖû,îÁëã{ýýý«V®tjÑ€è¹5èší–kßAÖ¹sRÈ{7MéÝÄ	u^¯ ú×‹¿Ýé÷w/'Œ�,ºq�åÆõYæ[Xþ§V†îÌ	uu�³µ±±±¹¹Ù¿
¬ÎÈ~ç5ÌóÄß(ý-&x<„¶{'ÇžU!£záœÇÅÌ`nMP\‚‡ÜnqZé"LŽ€bæLbÖÛlbAZ©(3&�±}B&ØBj7j++‰¬mMõõõMMâ-;Î~æo¼ðaM
<üê2¡óXƒ===ÁìL·;"€æð>–Ý²«ƒ;¼Ý[½[¿†_¾/ƒ–ß?�Š¡`(*L¯ôD4‡÷öööîÝE¶?ÒòÅG-GŽ·ÁŠÏ‘°9|*‚=OžFN¨¶W’H`v‘?Œ´=Óç¯é=�á;Ã—éh*œPŽ„}»[[[{·Éu
^èn»:Øu2N&#Ý^�›�ì¡g ’é•‰R/�oŠà£ì8ÁÁØ•‰b´0bÒ¶¨ Õr@(JNX×Ñ±vmGÇ#¼°U¤`…²Ùy¡<µì¯B(Û¢±>xû«gÎ¼ñÓ:,@�Å’‚§G1åX0ÛR—Žå9/�µˆB�°ÿ‰§þ½ÿù§9ÁèjÁëE3'ØY!¬½7(]î„×l8ñÒ†�±`K¬kŠÊ�Lj{$HØ?0ðâ+X(Š_+ÊÌF)Ê“ ž…�“¤œƒ˜ž@›Íœ°ÄÀ(n·¬(b;™k™$èK³;7³lÜqÏÝ,wŠŸÌâîš‚"|sñÄÔ†ˆ`žíüñôp8	îzèA–yR^ð¥°%EÜ÷L^XŒ„eC'Ñ>
+V_ùæèÑO¯¼)^�ÎÏÜ²ÀÂ7NXÈ5Î^>�>î›##£?ß<!~ü�é{I'‡pBÅ¥ï—ÞJ]¸pÚnÍŒ	”ò>Œ8òE*•N;óy�br�FÃŒ	Ðçâ½ó™©å·�Éâ™�Húß c+ò‰¸ÇJ�¹¡šŒ‚ý“ªå*5Š0a¬Qø6A­ˆsR�êcµUbš._%�H
‰‡kA­ŠOˆu JD¢.Øw™ôJtþ§ü<Q.›¼Ï„ÈIEND®B`‚
\ 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"AQ2BaqRu�‘¡#378br’¢²´$%46S±Á‚µÃ5Csƒ“ÑñÿÄÿÄ5!12AQaá"q�‘¡±ð#BRÁÑñ3b²rÿÚ?˜ïš»åÌ«z&9Ó\½î½!ßhq9î!=9s5ˆÍªç¼×}«Ýåã¾]çoHköØ@½`›*ÑÞü#Ê}—Íqg‘óÑ¼W®9˜Ÿ·xpéYÚ]î�Ô­êW
ÐÓÀ–¤¶:%ÔõÇ¸äY]&£Å§3Õ‡'=wo+Òí(]S~Uªaœr•Ã�½ê�5Ÿ†kÄuž:y­Ò?ËßÃô~5ºùkÖ\æõ­Ì95ù2¥x¾^Sx? ”`&°Üøç­æÖ·¾û~2»dŽ”ŠÖ¾ÛoøîÙXuÓsM±÷Ì–ŸITGœÇó(Y·.†½Útøž§xžÓëöKÉ¬ÑÄˆÚc¼z}°êë8Ã
+�@ P(
+�@ P(
+�@ P(
+�@ P(
+
+Ù¨mól·Ù°œR‚Ðáï|ôžiWÖ
i¹élw˜arVkmšã*Iâêñ%Ãwî4ç£‚”Ô’rRâàýài[Ìm›‹^µ½[�Jà¬°¼þ)E•û”Ê‰OÙ^œZËÓ·OÓðv×4Çd¼�Ss—<tGî«@Týþú#gÌx­C˜AéãYl¼BÓµ+Òþ¿õùü?Ï£ÒïO,m‘ë?'7yÔP[p³¡qy<��4—�>;ˆä€>¬VS¯¤t¬sÏõ[¯á™ý6ŠóÚy#úkÓñžîrL·d()a)ÇD¶�Ä�€«“,Ù•¦8«óéüó\yåy!ºÑ±¤ÌÔqT2CŠâ¼’ŸþÏ*Èð¬v¾¢¿¯½i‚ß‰j·†”P(¤ý©ìþß¨¿£s/L³{â¶Ç¡æÿíÞr»Þß4]�@ P(
+�@ P(
+�A¥Õ:ËLiHmMÔ3ÑoŠûœ�p(‚æ
+·{¡^	4Võ¢ÿjbíg’™–é;Ü	ÈJ·P¯XÉI"ƒa@ P(
+6Ù´�ftkS\7ôÈr!�Àt'ŠÖwÇwsÙ<óA°Ÿ´[	óáJbsn[#®lÅú+¥	Œ�ÿÃoAJ¸+	Ç\P~ÚÚ6‘z\(¬Íâ=p€›¤mÔ,ƒj	JÉÆI>©çAî¶Ó6+µ­ùWO.8Ü†Îë€!%XÏB=Æ¼zÍ5/]íéœØëhëè¯¬0ëï¶Ã)ßuÕ6‘âTp+R¬o;0ñ	sCìÂÄí–=ÂîÙ—"Z8‰oyIB¯W¥$’9ó­ƒEÃi4‹_¬Ë#ƒM]·–Ý7§,7Çi%É`
Î'}¸gÅI'ÖsæçÕëåŒ~¯ÃÃ}±ù¿óóýÎÁk¿‹/¤{ü˜R®JS~ƒ{qg,s[ŠW_yÍb/›ùkþÛf<yïþ›½cÓ¥K‡*J%ÝaãÒ`!Dp³æF7È<•ƒ„žG�fø	Ç·ñ:ÛÛÙ�âzÜôˆµc—»[ßü|=Þkm'ÖÓs`å,-\7'8$dO<r¯7áµÃzví³—
+â6Ë3K÷sV¨ÌÊ¹EŒñ!§�Kj)ëÞ8åšÄi©ÉZÏi–[Qy¦9´wˆL›-ºÒÇ{»ÞºÏ5«âk|Ói1á�©
Sª¾iÞÒÎ¯KÎP(Ëi?�2~˜´ÿzŠ¹µP P(
+�@ P(
+�@ P@}±¿ÀVo¥Sü»Õ%aÙvqüŒiÏÕ“üÛµa%%P(
+‚�iÿÎÕß§'µj®š>Ïs“r‘$9ÅºÛÅªYBÊ«8®ï’²ú¹ÕF²6ËtŒYnJŽË­¸ë�¸pê°= ¶T„ƒÑ	,�ÔŽC'h:‰±“*ñUÉ/¶¶É÷,cýë�ë¼L{¤Æð®\vÁ©Xr[„¶Év¿QXWÝÒ´êO…“¯òË_©n¾‰J&¡™Ò,Öõ¥eCûgùŒa¡áÆBy'çœùV^úŒ•ÅÉ�¿òÏÃüû–w†ß‰Ëäôù¹ãë<1’µžc™R”~ü“Z§4ÏGÐvˆêÎÕ–MQ§t’®–ö35Ì‰o¤åØlë!?8ûKöO1±ixm°Óž|ÿùùþ��YƒS¨ðí?WÓÚÓñø{G¯ä‰´ÝÎl“R È1n«y‡‡‰ñJ‡´ˆ®U¼Öw†Ù«Á\”šÞ7¬÷LSµ¤�Weh’Ä˜=ë¤!ÍIWª—‘æÉÏ#àyõñ|·ËŽ6òÇß³PÓðÚé2Ï¬[Ë?Ûÿ¯Ü?:6“5P‘Üa\w�G1öœ
+Æp¬3“=~gÍÁo�OÅ.ÖôÒ
+�AL¶“ùÓ'é‹OðÇ¨«˜µ%	+Y	JFT£È<MTDÛµÎtëÎD€·/ó›ÈRac€<êîŸù©¹³Žo´¶Ôn˜vÅ³×žŒ¯U[’¤ä~»m¶š›«ÅöŸÚ ñ5&�z4p{ÎY‹�­æÖ)¹²@Ð�£vs«^n�»=ÍÃºˆ³÷P•«É·�-Ÿp$åU•%Öïk´@vát”Ô(,
çd> „$|OÝA	j~×>…DÓvÙWçóº‡»2£úÁnŸþ1SuÙ§Gh}³ÊØ;:yQú¤ú<×9~°JAû(=gµ�òÖúÕº*D£ÍhS�/êjCiÏíÓsd· ¶¿¡5Êw,“ÿ¯„ï.Û p¤¤½Ã�°<J	Q›´½^öŽÐ÷MHÌdÌrÞ–Ô˜ËQBUÄy
zÀ+ßÏJnÙÛÍòÒn–WãŒQßyAkt#�,
Ü«#$ÔÝv|Yí!µ»’}"Ï³×]†FP°Ô·Æ?]BOÙA“kífä9é…­4¬›B”{Î´U¼‘æXy-«Üªnl•î[^Ùå¿Iµª�¼4»<ŽìUµ•8ëƒ«hk×ß Ž^8ªˆŽGjËõÚRØÑz.MÅ	8â9Äu~ìµ
+Ýýº›®Ï“Ý¦¶—f<mI �ÚYL˜¿¾ëkM76Iû4Û–‰×ËôH.
á)ÞU²^â€êZP%.îçæ*£†í�þ³}*ŸåÞ©+Ë³�äcN~¬ŸæÝ«	.“[m#Fè¨‰‘¨nŒ§XŠœ­÷qóNTG¿§¾‚ŸÚís%˜ºSII¸+ÙSË;çÿe„:~¦ë³óÿ[oJC«ÙËÜãè³‡/Žím‹µÕ›ÒÄ=Y§åY]Îu£Æ	÷­µ%§øf››:-§ö„·i›
–÷¦š�¨`]Üy¾(x  ²”HWšT†Ônj]!i¿ºÈŒåÊ2$)„�à‚±ÐŒÕEWÓÿ�«¿NNþj*âÕB�AmCú-pÕ)¶C�Ôå±ÄAÀeÕ{©~ú¹ëÈuÅxõÜùqøÔŽ±ù±Z¬˜ç'/óþÿ7ë"\	AF6öÒ²ÒÁêŸA­cY¯ÕžÎšßn’‘ôòÍ.ð”Ü‚MÙC&Qïz‡@ö<}¯�\¦‹Âœ¼ÖóúO¿ÏõûY¼<S$ãðfz~ú$ÇKimjt€Ð¬«ÕÝñÎ|+>o²±kF™¸Ü.Wér<%M€éJGY¾sëâž¾©ãâ*øcŸo«?“tú5ô¯¦|“üHí?ÕóýV‘ºªl†ZL�C¾GÏ ËÆCƒæÖžŠJ‡%'ÄV*’Ø5øybzscžñýãûJmÙÌûcìKŽ"|Ÿ{e@Ü¡“½�ïQl¨úÌ«žïßY‡"ycižÿ¿f�Æqä‰¬ÌóãŸ,þ»ÿÛÝÙVE„(
+2ÚOçLŸ¦-?Ã¢ºþÔûK¼;ygg–E­
­
ªêõßqÿÅGåÏwt…ã‘åI!$l—`WFÛ£Ë¹Ejç©”�¹3Hq¯æGJ¹$'¦÷¬~ê¨•¨<RR¤”¨o$ò ô"‚Û§gÝ=x±ÍÔ:j-÷ømªC‘ã¤!™H@*ZKiäÇª¡Ôò>b+²®ÔnWût½'y}RfZ[KÖùåª.w…Ìð”SƒäqáH%k›ö¢ÛN×[Ò¶Ù%›y.1	ËHiŒñ¥­#ÖR‚IN|0š7¡6[¢ôD$1e€�$=qtÊtø•9Œ�ÕNºª:Ú„ègÆ\YÑÚ—Á‡y	q
+ô« ÐUžÐ�¢}u¢”åº;RéQšR‡¢º£ø7™WT «ºFy1ÈàEt÷½¡»®û.^î²ñò¤`Ì;–èÀ/7%ƒ¾†ú•|sAÏöLÙÖœ»5qÕWXè›*�/$)¶”S»§‘W|ùR	Zj¨ÓjÍ§ue�ÛMö%Åt’ 8�¨ûm/ª<Å#ÐÛ:bñ¶&t<×T¸1§ÊfZÑÝ+nù^>o3Œ×%é´Ùívx
[íqZ…�ºÔvR€>ÇÌ×'S�¡Ä)·…)* Š
+ƒÚCGÂÐêË©4¨ù-S÷ä¡¦;¨jTe¤•6$¥AÄ÷zuð¨®Óµ%×å}‘i;®îçÊ£JÜ‹ÇïRHtÛ*Õô¯f¨:…ôñn‹-Ô·Ó}ÏKu-£?¤²5²]tÛ6µ¹j=]-×­±T•ÎRIJ�qyáÆhû
¤{½ëšubÓ–Á²ÀbßŽ€€}êÇ5yçU
­ÐúWVÛÕÿnjkD‡0ëyñiÁßAø
+A¶
›NÙöªrÊ^\‹[ãÒ­�«Ûi]Þø·ÐFéû|k‹’ãì[òQ¥~�gý+“Š·éÿÎÕß§'µqj¡A�sš˜6ÙsT2˜¬¸ñæÒUþÕÊ•Þb=ÜonZÌû)Œùò§Î~t••É’âžu~kYÉ?mnU¬Dmš=í6�ç¼¦È:
+ýÐ�o’V—oËoˆ‘ÑOÆÇà¸§Ú{wÚñŸ:Ðxï¥òM±FÓëñlxp^ø¢ÓæþßåÆC‡q~baGB½'{’=R‚žj$œnîã$ž•ªc¥ínXîéˆžÍŽ»Ú-ÚåenÈÔî5µ„ðç\’7L×õQâZOLû}kéü/AlU‰É×'éótk5“zòÄý_—êát¤mA+QCoO‹®þc©¿gÌ¨ôÝÇ­žX¬¶y¤Ryü¬nž/7ŽO3¼Ú¶Î�Ó�Ã¾Æ(Bd©(šÜ|¡¶¥îï04¶¢’@ökçZì¬óWË/»ýâ÷ÔSÂÍ×%c¿¼~ÿûgú°Ý·\ßÂoV‰l[ç:9zD‚¸I*¢öê¾#ßM5ý}b)y¸¶‡Ã›R?ãÉY´|-N¿§ï¢m¬«G(
+2Ö„];T%1?	ý¹olãŸ8ü¹û%5æÙô´ˆºÜ�ô!6ÛpÞPÎc¶Þ#Ï¥ª‚æ6ãn¶—P[kHZNA˜ ûê£õ@ ×ê´EŠátž°ˆp£¸ûêWÍBI#ëèMì‹n•'h—)­§v4kk©u^O:ÞâtŸª¤,°û8¾ÞŸÛzí·L3)ÄL¶�þX’•gwâxE"‚çUB�Aöœ¼@�²+¤i
+Oä¶#DlõS�äºqú¨lšISCÛå3Ùs]Lp±.k�ŸÓ±Â”>³�ª¢¤>Çà[×Ògùv©§ê¨PT
”~u¾‘¼ÿ£õoê¡AX»hþ3I|'Ø©+6ÿùÙÿÂßÿNUkVùS»ãd­¦W!I-±rSŽ}ˆI4=�®°•¦¯Ö� '31”ŸÓ­$ûð¦� •ˆª…‚´öÏn?£iW;¾�1>Û„4~8È©+	‡bß’�+ô{?éUúÃ`¾§µ;—[e&ËSWée‡[¥.á[øÝÁóÍE[j¨Pq;@Ö�!±'NEˆýÞó:3ˆTƒ%¶ÜANûªè�Ï•{tºyŸ¯?V±=Þ^¦#êDM­1Ú‚åj¹Û$z5Æ+‘Æ÷
Ôî’<Ç˜øVÍ[ÅºÇV©|v¬í1²rÙvØ­	°F²ÝÐú&[Û
4ë¹ 8Ò9#ºÐZÁ‘åŠÂktææ¯ig´F¼‘[o¼0uåâ4õÉžb*Åc}!2ß}™·ža´¶{ékÏÅ~<…pÑhiŽüÑ9gòqÕåæëå§ço’+¸êk²"Ád!øMd%¶ZHï8â½T„§š”y
+ÍZÕÅ^kKZ_>H­#yžÐ“öi­vs¤W*ƒœe`9}Ü*ãªR€7ÛlWÏ©ÁåZ~«ŒÆkõéXìúf›èV|bkµ²Oš=¾ö¿k»P·jf´ÙÂÌ\ã½%Á¹ÄX)	Iæ�ZÄêµ1~‘Ùµð	}4ÎLži�¶örú
ûÓ9m¶;s@\g%2×.ìwÒúAVR+£ÌON¬¯¦;SkÞ)æÛï�¿ºÆi=mnÔ<há—`]bÿ{¶I® Š9'ÌVch¿Úù¾¿†ßO´ï¥»Z;·E]Ìr½^ûZ&Í©néaç-Ñß[Qeñ‹.8„Ýþ�ûXÈçSuÙµ�Úïfo¶¨—(Žx¤²Ûƒê(sý©¹³žÖý¯m¦‘4]¹õÜˆ�5)J'ÚCI.«Ë{ãÒ››>=›ö5¨¿«Yq‡»ë¶G“ž;Ž½�ù.¥\Ç%Üó$çË!%í·c¶‹iiÆL=C@–¡ÜZO2ËØçºO0Gª~°j!½1µMªly-éÝkczu�ƒÃ†êŽhy )·ä“ÌtåÒ¢¤Ëwjý“Êi*’äØ>³oF*ÇÖÉr››>7nÖ›/ˆÊŒÎ¹=ì!¶xI'Þ§J1önl‹µ¦ÛÝ_M®ËjU»KXÊ“ ä*L•Ä)ê�ÿ.yÐX]“lºÕ³Í7òdUúLù*Ü§‚ë¸Àx!’G×ãU¾Ý;=Ï¿ÝU¬4bÃ7îë’àïp¸Î7ê¼Ëœ‚ä3œ× õŠÑé®Óº£K©6=¥XelwÔ#ƒ!@x­—7¿ÖJ†i¹³¼�Ú£d.µ¾¹’˜V3Ãr+…_æú~ú»¦Í&¢í{¡â²¤ØmÓ.²ÿòø�1™Ï†TJÜýÊ›®Èý�µý¸j÷�J…Yôëˆ[ˆ-6Û*9"+*ï¸¥c×<½ü€ —öÍ§m:o³ÝâÇikƒoƒ3L£©þöÑ*QñR”I'Îª9¾Çà[×ÒgùvªBÊ~ª…@ÙGçQ;éÏú?QVþª‡¶�ã4—ÂwýŠ’°mÿò³ÿ…¿þœª	C³ËHØ�†;èK¬<Ô¦ÝmC)RU)à¤‘âªˆ‡Vl[h›2ÕJÕÛ6.M· ©B3CŠûM+š˜už¯µäFOÀŒÔWS¦û^éõ FÕ–iVÉèî¼¸ :ÖðëÜYmÄ|;ÔÜÙÓ«µ6ÇÃ{â|•+ü±Ýï¼ýõwMœv¢ín&+äý§äN¸=ÝaéiÏ?ÑŽÁZ—ûB¦ë²Ú¶›ÚkmAÕšùÅ	÷¥¸Üh¯Â¶Û +ñIî4�ÂrG_1QVëcnöG¦ �‹kJ!<Ï$ø
+äâ‡ vÂ›'R³Zm	´¾úY/)R‚­Ð¯Wt«žwqîÏ�M×ešª…EZ_x¹Ë)™5òä‘Ð…[Ÿô·Wyb=!¦ÎªñiŸY–¾ó¨æÝZi¹<ÃJ*A<ÈÈÇ*çLq^Î¼¹æýØQãÜ@L¨Í¼VûAC
+iñç\¦c´ºâ'¼:+.ƒ×z¦Z8qd¸YÓJÃi|G:ü“]58±Gxûžœz\¹g´ý²–glEøš,Ûlsqtpñ.+XÝL¼sK[ÝP„i	õ¼1ªñ<·Ôöéèß¾Œ_ÉÍzóLÿ7¬}Ÿ½Ðå×Jj[SÅ«…¶DuYSd¤þªÆR~£Zå±Z½áõLìcz^'ï`?k
¡×ã¸ÓNd6µ¡IJ±×õÆkŒÄ½Ë[NÑ12ÚÚ5\ëd/Dg’7ŠùrÉ>u7—›>Š¹-Í.�Bê‹œÍ¢Xžßß1—æ¦�Îð>áÖ½kO‰oÑÒº<‘ðßï…–¬ãæ/”˜‘%7Â’ÊlõC‰aÍ5;e[5œ¢¹Z^Øµž«ZJ¾Ô€h2ìÚCÙ]Zl!>:<Ìf’çíã{ï ßÐ(?°Ãí)—ÛK¬¬am¬$�"#AÊÍÙ&Ìf¸]‘¥íªpõRc6‚~;�4KvÊömnp9LÛ[ptsÑšR‡À¨AÔ!BBRžIHä ö�A‹qµZîlz=ÊXÿ*Chu²°E.öÆ¶TêÊ×¥mÙ?5„ }‰À ÙÙô‡²¸µX-ðžÃÌÆi.~Þî÷ßA¿ Ç¸[­÷(nB¸Fjd7°ŒúãjÁÈÞB²ÍÂÑa±Ù™[‹|ks+}Æ¢´†R¥cÄ $�AŸ@ ÔÅÒ:R%ÌÝbÙ ±tR–µNn;H|©Ìï’àHVU“ž|è6Ô
+
mãLéËßå›\K—<Ka·÷7±½»Ä
+Æp3Šý3§.·ÏµÄ—.ï£D}†Üi½Äî'q
+)ÂyxPdÛí¶ûl6á[£5YáFa	m´äïÔ$2Nh2h57�#¥oøÅžÄãÒXmÕ}JP$PhFÆ6R¿ý·gÿA8û:Pt–�;`³7Ã´[bÛÑŒÅe¶r=û€PyxÓš~ô–“x¶E¹%‚K)–Ëo„uÝâc8 Ë‡
+(­D†Ãq¢°�†Xi!
¡# JS€•½Ÿèfï-7`·¢í¿ÅDfƒ¼OŸ½�[ßÖƒ  PAûXØÜùW):†Á¸´?—gBR‚_´ãdá$+©õû³z!—`x‡
™´ÞŸ|#]!³íCª¦®5½
¡+_u`%¿>C*?P¬–}U1FòÅéô—Ë;BÐé
/LX#Yá’´2	uãÈ¸â¹­gâzy
+Ö3æœ–æ–×§Á©Ë
Ít»Ê3´
WX•kàÊi\Xr1�ÇÆè¨r5ÓŸ‰]™>Ä­¤ËÏÞ³Òcà­·í±ÝÑjœÊ})ã†w•%yèAÏ/¯†¾Vv—Òô¼K|~%gêÂaÙ>ÉeX¦íì£ÓÂH‡x5¾0¥©C‘Vþ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!ùÿ,--ÿ€‚ƒ„…ƒˆˆ‚‰Œ†Ž��““‚””‘šŽ›žŸŽ%JPJS2‚GPINC6 †�ƒ#>[b[cH‚U[V]O;²ž"HVLÊËLNÎQH8#Å„Š00,,8QL8Þ8;;GÎäC7ÔƒYYSïS;ÙóÚLPäÏQQaÅaÂXh…½l8 TY¥¡C~è”!™ˆD‡‹‹oÙ¸±9,A<9øÇáÆ(SÊxÁ’%5bÂ¸QäÉÇ� fX²bÅÁ–,mÈXábå
'Xž(Õ‚ƒ	5  qÆ£EŒX]¨¨‘¤‹EŠ(3Š²,C49˜à"ˆŽš<ÿ.eIÃÛŽ">n éÂw�UI¤ø(Æ$ˆÜ¹=œ‘a#I—4�Ó”5b¤‰ŽM
$@0Ëk×ZÀ‚¥K4ž”aÃš
™'D~É1AA
+ŽÖI˜¤DÉ�Ã@}è“‰5ÈÕ”-"d	íG´õn¡"…uëmðàaÃ…
ãÈÏ„iG^JZGk'´[H#C†ðGœÈš¼š2O¦ iÍFÎ“	ÿ¢DxjàPA€ `	.Äà U-¤0Ca G†=h´Ñ†mØE$AÑC.x ‚u$�€}EñÅÈ™ñÎkDæ T Io7(eƒuV©`‚
+/°`ÃbˆqÆÿ’�Æ“Ov!ÕDOÉ(r¸Q™B
+1°ÀÃp¬Qcdh¦a†Q´!v¬q¥p´ÑÃ	*¨ÐB	!lƒe¸¡Fši®éDn¸1‡Õ,Ò›]TQ„”ê
+#|À�a¸�&qÄa¦™h“d’[ô ÀŒÖvE8qÒKnÁ„/`�À`šoè‘‡hŒºÆU(3rà,n¬±¤PÐ@ƒwÜá1d�ôGdtaÅwÐ‘É±VÄAÇa8	c¸óÎ7Ð€E¨jX!B€°A]¼‘†­LL!ee!-hðÑGÿØû@	tÐO¤€ 	&Ð�%È0DL”Ñ†dyqF¨°ÁÍ#Ä°�OÈ€@Ø+ôÐ@ÐÅf&‡frj˜ÑÄD
ÑTW]ôÃ&­f´ñ†`¿ùS[möÐ@áé§lp}ªYaAÔg×@è ÆÚoà‡.Ä×�uv×íAãš1m�°ÀÐR—MuÐBK=4Qs‡j>ÅöPùá‰›m@¯áÉÁÇ©í±ÌN»íxp³,<Árìá¡
+´ïññ'œÂòÌ—àüóÐGï¼Ç@‡zÈ„"HÏ'óà‡/þµø€PDh\¯‡7äÂøðË ÿüô×?¿X¼<vXa­µ0¨ß
+n…ð1ã€T „8è�{˜C&¨Š&á‚¼ C6ÈA‡TAlpCB9ØÁxÈƒâd‡dð…IPŠgHÃ'`!
/ËBoª0Á2Ôa|È¤¤f0 HL¢Ã@†ä�a¹àšÜP‡:dÉ§2"�ÅÅ.ž‰P‘‘¢Â³¤2šqI�;
\ 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õØ¾¸žÑ¿#[[WëéY#!ÞÓ1¿¦,//,ÝÛÕúúúüè &
+É¿bøîAüù_z`
+¤ŒÁ¨
!ù,ßà'ŠUi–cJRÉÁqGBU*‰Ñ£iOt`´BÒÙeŽ™]G‚UZC¤qœn	P@¡àé~=@pLÞ˜Ax;dñ@ú~}{r}hr=
Žš�œª›¤	›Ž�	EÆ%	
Ô
¾4
ÔÔ
A	³F	M)	DK	fÔøP¡’€ƒ(ü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Ô..Šò³–¾«PÜÐ2Á«!²³“öñO¥ºÑþé#ÚærÞâç°—!Ï»úñ8øÜrX
+ÊÂž�Ãó¡±{ØÖµ¸Æ°R>
+ŒvöööÊ¶jâî‚ÆÚòÆÆÆZ¢òýúj!ù,Æà'ŠXi–cJR#Ì@a*™	Äáy!d´†QØÂ®À~0ƒ¯pAžÆ€†¡<Ž+ÒÁÄ
+fPer½>zÛáá€¼X�–ªcÞÄ|‘
‚%ˆ
+‹ˆ ¡%¢¢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Ô*Ä¼�ª‘úÓÀ©LüÑTÔ¿(þæ ¹›ü¤AùîTÂ«!ÚÚÙúï:ýùlâÂ:v[�wöööX8ÆÆÆáÓ7–d$¬|(û¿*þÙ=àØº¼›$þŽWÂ°bþ¶Q!ù,Èà'ŠRi–cJjÄ&¡I*Ù!�â8Êƒt´”d³àU�Šn±	~$„bcA
+
Ç‚@“hŽ‰\²ˆT™Œ@�î£¢Â• ŠL2AN&zxMv		
+%†�	—	“C–˜šœžƒ�¥š›�uy
+%
+ÊËÊ
+]È
Ì
ÎÑ#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›Š'Âª××Öþú6ÓÄ0:"§Š
+ëÝ6¹›ûî7!ù,Õà'ŠPi–cJFH·mA*I%ITf´ÔÁaQ *N¡°8#b!©88ž¬£"Y h�ˆAòàd2Ù3ç!1Ì¤ÓHÌësã{è(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Ê¶j¿ªNïïîóñXÎ½"üï7hT·›
¿£-þýqüåZA
+úúúàØºúòGÄ«Ä¼�××Öþù7þúZîÚ"¹›øÝùé%x`ÒÂ0!ù,Ñà'ŠQi–cJJ†&š!E*Y0â8ˆÇ´Ô¡AA`&
+Åƒ 4£ˆ!á˜x<ÉëÄ‘0Ð"FU±€$ËJc&%`..‡cÞƒ1�w~€bp
+�‡‰Ž�š‘•z
+’r’†¡¥r
+xÁ%¬	ÂÂ]¹
Ì˜ÁÒ
AKGP)Ö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Ë±�ÎÎZÁ“Uïíì³�ùÛ¿¥ÊÂ ýö8wiÙ«óïTÑÑÑÌµ úúúýýq¿¨NÞÆ*aK
+Šzüçº�0¿£-þúVÚ¾BßÖ2²u"!ù,Íà'ŠRi–ãx†çeHŒdbK,R=“É£‚ ´ƒ! Q<6ãùPhÏ'0è*•°˜ƒd’¢i;Þpg€–P:ÆÐèt|NR
‰‹RUR}			
+‘
+”mœ	_¦Ÿ¡Q�­®	�w­Š­„
+˜	Š¦Ÿ%³Á—Î—½QÏS*
+‚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=ÆÆÆî44†sóðYÊ¶jè§µ”
+ÞÒ2ïïî”!¿ªNÒÀ*÷Úþî)­™"»ÂmþýqÀ¦úúúàØºùî>Ò9)ÚšÄ¼�þú9××Ö½¥)ûæþúY!ù,Ïà'ŠTi–cJVËsÏRQ*Y!Ir´T‚3!xÂC˜p#Ê‚!X¬×«„± Q*‰æÁy$É�ä0“.9@£‘8Çn¢H¯Ï5q}M		a}
‹Œ„†ˆ
‹”��{•
+/
+–„H

+ª
+
J	·%	S›
\²ˆ·A	HJP)Ò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^HóðYÒ¾Ã«ÈÇÅjSÄ¼�öØúòGàØº·›úúúþýqýö7ˆuZØÕÓºŸ.Ê¶jÞÒ2ycÕÃ1Â¦2þûZ!ù,Õà'ŠSi–cJF‡4ÒM*™I\BQ	'e´”³Hx Hˆ'±ÀF“ƒ‚áp*+„¢8Ð&	µÒ`Ë•­dÕx°s%Žõh¼I‚Ý4úi	yXŠ�„†Ž�—’z¡¢¡œ…dw
%
+%Rº¯³]¶
+		
+AJGO)Ôâ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÷ÚnX6ùôR„µjãØ1ÚÚÙ>^*´—
+üúnüô9²›$J3‰sÊÂ ®¢VöööMw9ZF>2B±å™š†6Ñ¾&ÙÓ¿rx$’~ÂÂÂ!ù,¾à'ŠTi–cJnÄÃ0±Q*I0ÚÑ4‡Æ´å1àŽƒnð~(
ï�D>tàsÃh8",n0fÐÄ!ˆ$lw2*‘ÀÛ‘Wš]Hm„†%‚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=¾¸ŸöÝ§�	ˆˆˆâÚ¾·�àÚR½ªIúêððïÍ·²²²–ŠJÊ¶jçÛ5˜† ·§(öô\ùùùlU
ÌÌÌÎÎNäääÃ»?ý÷:üúo­•"ÞÖ¶ÀªÕÆ/!ù,Âà'ŠSi–cJÈ6RL*éÞ¡i‡g8´”"Ò‘` �#éD£	b¡ÙD™l¢Y hŽA“yx<Ù3Vcà”I–˜×3’ÇWa�gw€Yx
+|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êÏÊ¶jÞÒ2¿ªNïïîóðYÐ½R=
´˜üð6hTÄ«ûæúúúàØºþýqúòGÄ¼�ºž.××ÖÕÃ1þù7¹›Â¦2þûZøÚy`ªŠ!ù,Öà'ŠPi–cJFFæy™A*I,"IÈµ´Ô¡â@l&ÆdƒpT#ˆ!!™\.ÉëD’0Ð ‘E•ÑP$ËJÉb&-l0….‡o
+ÞC1�w~€bp’‡‰Œ’™’‘•zš’†	’	x�Á�%«	¾Å]º	‹�	AKGP)Öâ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Ô(ÆÆÆ�Œ(êÍüë#Ê¶j¿ªNïïîR;	óñZÐÀ&ÝÏ2ªŠ¾¥,kSÂ§úúúàØºþ÷7üúoùÛîà7Ä¼�××ÖùóF>"¶šàÚRþûXûäÄ¸D!ù,Óà'ŠPi–cJF†Æ0šA*YhË6MÛ¢´Ô¡ñHx•ŠÀ“x4#ˆA14*I¥!˜(4HD3ÁTŠ,º‚™hfÒ'ë@ÐíÎ|Ð$0Yx‚Y	}YŽ“ˆŠYš›“–E��‰¢“¥�{�¥%S»‘²Â_·
+	
+i	
+
AP)Ò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ûòFþýqúúúàØº¾¢Z¶/'Ä¼�ýõ7××ÖÕÃ1õà"úRT!ù,Åà'ŠTi–cJV‡Õ4ÖQQ*Y4œ2M
+×´âaQ($H‰Ñò@Œ(‡ÄDÂáh4UÉ$q Q*�©&²¸’5ÚÆêP\e
üªptE‰9²¿*-aWWˆ‰
+
�ƒ‡‰‘Œxn’’€	‘	¡vE¯±
+%�	
+¥
+\©º�ÃA-1N)ÇÒ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·›
¿£-úòGþýqúúúàØºB/Ãªûï9Ä¼�ûã××ÖþúYVCþù7vb¹›Î¿$!ù,Îà'ŠQi–cJJF‡ �!E*I4LA	Ó´ÔÁAId•Ê#“ 8£ˆÁA&¯ˆÇ@‹HUÁD�²�™”‘Ùhœ�[Ï0¸‡Nâ±áTä}	`r
+
‡‰›œœ–y	š�
’†“�twŽ
°%¬½Â“Ä[¹	™Í	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Ê¶j¿ªNóðYïïîÇ³P:üð,´˜¾¤,u\úòGüæþýqúúúàØºÁ¨Ä¼�þü6Ö¾××Öîæ2þúYøÚ¶šÑÂ)ýñ:!ù,Üà'ŠRi–cJN'œ1I*Y0ÄEÁ´¢A9hÏCs 4#‰!A&=�Î#’0Ð$F¤Aðd:‡BaÌ¤MG$,
+…Å¢!x	{{b{{™�‘”™ ™˜œ€¡™Že™~uuÅ%²”	/	rÀ
”×
AKGP)ÝDNé5¸±@0€=uB;
\ 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ôÕ–†{­ˆ	¿ªNùöYîîíÑ¿(R4
+ýð4í«Ê¶j¾ž+ÞÒ3ÍŽôÀúúúnT<àØºúÛ9‡sJþýqùðHÄ¼�µ™××ÖÕª*lLÂ§!ù,Íà'ŠRi–cJR†VšAI*ÙhÏq]Ç£5´Âá90•
+Æèq FCâ‚LZ1—„�&¡h²	«51ÕÌ¢¹… ÃIr:‚Eo‹ÐÀá(*Ku	pƒ…Œ‹“E–�ž„–	„�¡ÀÁr%RÁÁ9Z»	=¦ÎAKGO)Ò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�!ù,.„�©ÁíßœOÒkïÌº‚¾}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  æ½wvÔnn£Ý\\©Ü££Ä<<ÒÑÏÏÒ66ÄCCÙJJ888ÕCCÕdd»--µ”“ÓQQ´33ÜÂÂÛyyÆWWÚiiÛvv»kjÕÔÒÎÏÍÑÌ»<<Íàllßbb¬$$áuuÙEE×ŽŽÏÚ´´³MLápp¬++Ó$$ßeeÍKKÎÙRRÃŒ‹§¨Í³±»¼ºÏ×==ØAAºddÖÖÔÚÎÍÓËÉÒ::Ò))¥¯::¯§¥ÏÒJJßjjÛWWÛPP±((¢Ø;;ÅÆÄ§�›É£¡Ð¿½%%%ÇÈÆª ŸÕ00Ìcc½IIªŸžÕÒÐÏº¹Ì±¯ÐÀ¾Ö˜˜À~ÈŸž¸^]×¢¢ŸÜUUÏ,,ÚŒŒ×ssÕyyÓÉÇÒÓÑà||ÓÔÒÙ­­´QPÀNNÉÊÈËÌÊÌÍËÄ‘�Æ˜–»BBçÁÁÒ__Ñ??¼Úmm§  ãººß€€ÛbbÑÅÃÁ…„ŸÌÿÿÿÖ×Õ!ù,  ÿ€‚ƒ„…†‡ˆ‰Š‹Œ�Ž…�Œo2u20•Šv7$r1U�‡{))F¦…1+55=;°ƒp!}%Y!8¼d>x`~~	¹M¼\j_}]ÏhE(°M2x&sÏÏB¹W¦('ç~7
+?�Wf.óÏä¸ÈãcK¥R�¸˜ðŒ‡s&¢(‘ÃÑ#>88çðÜ…Dpj¤"@ó:ž²¢)Fn$é0&åÃsaº‰xµèS-€*ÏõØÐB—"-È„	À}l9†hÇ¬[ý8q’•‡	!° Â0¥H¶¬hýÜéåAšCz�f•CË€Ú.˜aˆË»xtífÕábÅƒ|„¬Ìò—¶±xXBÈ’³ŽÑÆé³á�
+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ÅPC«½8ëÍ;’�Œdižhª®ìjLm,ÏtJÕx®—÷îÿ¬pHD‹HÝ1Éœ-›P—¨@­Z¯Ø¬vËívoÞ°xLÎ‚Ëè´šz^»ßÛ6|>¿îø¼~Ïïûÿ€v�…†‡ˆzƒ"‰�Ž�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 @@
+GIF89at0Äž¡œïïîn{…Q[c787ÿÿÿ«ºÆk|ŒµÃÏ`r€‹•ž~‘ ÏØßWdp¢±¿˜©·Ziu� ¯^n|\kyø÷÷ööôÄÆÃy{xÏÍÉÿÿÿ!ù,t0ÿ FŒdiž§&¢l;ªnœ®r-bA®ï|¿c#¯B,�< Aèk6•L§T§´L¯9ËÈ:<z‰<-�‹•ŠÉåæ9mÞö¾ß°›­žÓ{ë;Þ®ƒ{åcMƒ„ƒNy=†:Š>ˆz:Ž9D…ƒ;‘‹”Œ{�>„9Ÿu���|’š–¥£<š›€h­”m¬¤˜“FªY¦‹‰‡½;…SbÇÈÇ®ÉÍ#ÆÍÊ”ÒÈÏÑÒÌÍÝ×ÙÛ×…×ÉáåËåçãÔÕÕêìÜôåóÜÖòÐè®úÚü…âÙÛ7®8‚øºò'N�Ãc÷Ú¹c0ßÁã¾Dñ¡Çu+jtòã@Œ&;ÿ¦<Ùp¥¹’.±ÁŒ	r	MiPn6Ë©Ïž€Ð¨QF�ºHª”…ŠP£J�J•êÓªX³B½ªµ«T®^½j€Ê ¬Ù³hÓž•ª¶­[lßÊ5w®Ü¨òêÝË·o_¨~Öx°a¾…+†j ±ãÇ�#Gf,¹²åÆ”/k~œyóf¨B‹MºtiÐ¦S«�Út�×°_¯n]Z¶hÛ©¡>ØÍ»·ïß¿uûõðÞÂ�‡}üAòßÌ‰?5‚õëØ³k×^}{„åÞ±wß¾üuøãÉ?�~À‚÷ðãËŸ?*ý÷âç¿ßþýýúñ·€üÅ&à{P5 àÿ‚6è ƒ	>Ø@
+'¡‚>HaƒJ˜¡„±]¸ T”h¢‰åpâŠ�Èb‰*B âŒ/šèâ‹1ž˜ã‹7âX\�60Á�D™b‘HNU’F7AL¹d”P"Ye”S2	Û�[F©ä„)¦˜)Ži¦P�yfdª)fšn–é&š`ÆÉ&™wº	U|öéçŸ€ºg ~G(Ÿƒª¨ ,ê¨ŸP é¤”Vj©¥‘^ªé¦’fÊé§”z
+*¨Q)`ê©¨¦ª*ªR­êê«
+´
+ë¬§ÊJë¬[…¥+XºfÅk¯Uý
+ìT*`ì±È&«¬²Å.ëì³Æ6í´ÈJK-ÿµk×\Èn+W·Þºn¸j«Ø¹Æž«XºêÆn»‚ëÙ¼òÎ»Y½ö^†o¾•»Ú¿¥ùðÀìZy«\[£áfš±ÍEüÄÃ-'1ÅÊ•×ÆÐMÝpÆ²'2v!{{%«w²w)«Ê(s|Æà�5ÿ7€ôå\ l2+âÐ
+
b…!^h´†vøàÒ ÂF´±@¦$T×#�;²˜5Ž,v½â×>Æv5Öxy¤—Æªíä•L¶Me’p')·–¯q™7ÛÌ)§›ÆÎÙf˜yª¸�Ë	~¸š¯�ÙøœÆ>*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+Øˆ,ÇÀ¹ú¨M¸eÑ…+ìž9ø�Cú­RÚƒ“L š”ö¥5÷´\›™•ì£Dö~õzúÁŒÉÊÈ¼½º÷“3õ~	ÅÆÄù™%ú¸zú²nÒÓÑúœ)µ¶´ù«Eù–"ö‡øš<öƒ­®¬ÎÏÍø�¼jª«ªÁÂÀù°T±²°ö‰¹¹¸ÿû÷ë—,ú -÷ˆù¡EÎ‚-¥wIÜ•@±ƒT÷–8ÃÄÂ»¼º´ŒaËÌÊ¡_ÒÎÈ®}IÏÐÎÕÖÔþ÷ñ¿À¾ÐÑÏø—:³´²°±¯·¸¶ëªTÄÅÃÌÂµ«¬ªÐ†2ù«aÉÃ»•{_–}aÝŠ#÷™?ü×³û¸^ù©]©Ÿ’¯°¯Ý�1ÓÔÒÇÈÆ˜PûÅ‘ø¦Uõ{ø›7¨©§û«9•Pú»ÿýü¸¹·¬­«ö|õy÷•7Ö×Õ!ù,  ÿ€‚ƒ„
Q Q
…’“_J]#i#]J_””Kai~­®aK¥ƒ
#L®¾®G#‘¥
HY¿Ì¯HÅ“É½ÍÖµ’OºÕÖ×O’ÊÍ
+Vê
+Ö?…S¼èöìÍS„Riß~¡°·8¤*Á¸ñ€“À£À mŽ€ƒA¸mŠRâ85Å|,eÐ¿€¿$ìÄF�Ìhp	ð#A}‚µ±â—?`º
+Âbˆ=¡Pçi¥s$“¾
š`A‚¨Qmph)ÈÁ:­´ò‰ÚAN°QðÍˆT@ƒ¸P·âí³£â-NìU°ÍÞ>Eš2`Ç^§Xà5ò�¡r�ñâ±go‘wÜxd>W�qÒ™C:ª‹Ú(SM¡uÐ" ÙC@ƒˆk÷î¡�,U&aIá¥B8ª]1!xh
$qÒ$…ŽmýZ\¢e�8>aG‘àXX„K…îT$AO>Ç„eœw#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É'GŠ½�¿À­¯4%Ú¯C$ÞÚ%4…Þ$CÒŽÔ¬#ë>ñ6öò>÷6ÓTõ@�`>(P¤‚Ã
+
+è(ð°B€è:ª–¢À
 !’¡d†�n0™!F_¬ª‚¤�ÍrhØ©áf$@xjÈñ2]/™p8Xê À
+P)0u€#@T
+;Šj€ôÁ…¯ðÀ@Ø”ÅÀC+Rìâx� .‚.è5`Á‹{
¸p³”aºvñîû7ðà€20Ò¡r‡5hV`¹ƒÀ›kî%ÙÁ„ÓÌØ¬õ„¦6ÏíHò¸-`± ÷‚Ü~öÍ‚6É1$(—°Û÷‚åbï]2+ä ²ƒ "„÷ÚAH7ð]…qÉ
>¨ÿÀ]„{ë?à4ðÞ¼uÒ‰ZØ @�&Àß-`=œ—ß€qà€H„‚ƒ 2€tÈA†È€‡@\q©‚¢d2†ö"†"Æ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,�È$eÉl:ŸÐ¨tJ­VSØ¬vËíz¿™°xL.›Ïh�zÍn»ßðøhN¯Ûïø¼Ãïûÿ€�‚ƒ%…†‡ˆ‰Š‹Œ Ž��‘’“”•!—˜™š›œ�ž ¡¢£¤¥¦§¨©ªª­®¯°±²³´¶·¸¹º»¼½¿ÀÁÂÃÄÅÆ$ÈÉÊËÌÍÎÏÑÒÓÔÕÖ×ØÚÛÜÝÞßàáãäåæçèéêëìííðñòóôõö÷"ùúûüýþÿH° ÁƒNXÈ°¡Ã‡#J\@±¢Å‹3jÜ¨ £Ç� CŠI2�É“(Sª\É²%‚—0cÊœI³¦Í8sêÜÉ³§ÏÿŸ‚
+J´¨Ñ£H(]Ê´©Ó§P£J˜JµªÕ«X³j�Àµ«×¯`ÃŠÛ ¬Ù³hÓª]Ë¶­Û·o!È�K·®Ý»xóêÝË—ïƒ¿€L¸°áÃˆ'vÀ¸±ãÇ�#KžL ²åË˜3kÞÌy€çÏ C‹Mº´éÓ¨Q3XÍºµë×°cË@»¶íÛ¸sëÞ½¢·ïßÀƒN…ñãÈ“+_Î¼¹óçÐ£KŸ>Ý„õëØ³kßÎ½;‹ïàÃ‹O¾¼ùèÓ«_Ï¾½û÷_âËŸŸ…ºýûøóëßÏ¿¿ÿÿ(à€hà�&¨à‚6èàƒ
+¨Â„Vhá…f¨¡yvè!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(æ �«½8µÅÔvu—•ã)‚ž~äÃ*ý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Ã	(JnŠ¢ÉÏÙVjzíîñ®·Ã\Ýßä‚��ýýý8Z�¨°·ÃÒj}ŽŠ›¯!ù,žðÉI«½8?²ÚÍBh„à4NQœŽ0ZÓÂaEÇ¼”ÐÔ„ 0ÈBë@H$
+…Áp0ñ…Ó™pH¶ÃŒ‚r‹š�� ü\ ª ÜîÚ™^¿“5Us
Nam4€CQva*-
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Àaxœ½|	\SÇð¾$„pr‰/EOÎ€Šˆñ¨õ �Ñ�Ð­E¼êUïªEª¢Öz·Zj[­¬µj½µÞj­¶j«µ­k•ov÷½äåÀ¿í÷ý?ýñxowfvvfvfö`K�sBËj)@½=üë%hjjJ¶…×eö
6(
+UHºÌ¡Ò|…F5P§T!¤Õ
Æ(5yº$ƒDŒxL©B[
+4ÙSH
+e“º’‚ñÏ‹›¶û×>ˆaÐÜJ“‘÷›PBI�B£.Ô&†ä«´•>$)¡sIªC“¨=Ø‡£Þ“!g¡}o•^¯Ó£zT�
G)ˆ!;tôèQTPP€Æ��-Z„>üðCå=ðäûÊ>AÃ—ü©Ëè¿¨Ö¡ƒàÞ»—üå¹»÷GJ?¦íŒì‘±›"ÓªÚ¾ïôñâ{SVeÞÍøÉs×Â¶¹¢Å‹¼¦äe^ÜœócKqêæ‘îÓöyÍéÅ?	ú5ì~ùEË^LÿhQD5òîÞ¿Ë¬œ<+�ýÔOß…iÛ8jÒò‘Î¿MN–¾ôè”6¨íÂð,éáä‚ß?Øå�—D~Õÿ#ñ„ä5dü([Tå™Ñ;ÛnJö§	=ÿDAq¿fy‡Á9	áË^Î)jrp‰Š@/o‹ÅÉ°&6ÁÓ¹£Ù¸T„¼+ÇTÉ j‘ØŽAÆ:î´;0Ö)ãY“Žpñ<\<ý0B
Èk*òÛ¥O2žÈìFD ßÁÅG0 cŠ»ÌðÛ¥î´ËB_ðHÁXÞ•A�È!A”$BõÄ,D`Ùÿ�(it
+¥Z[ˆJ~Ÿ‚Ð¬¡’ë¬ÙŽW+
E¨H¥.,2 Â25S�* H¯+Ó*Q‘Z©Tiûâò	(_¥Ö RƒBo˜€Æ°(¥EºñYÅ�ºÔ�Zf0è´¤h07JQ©ÊPªž¨BcÊÕ¥ê<
ÛdŽºX¥QkU(¯�¡L¸"ü‚J¡õ–02èJPžÎ€ô´M W¬Ò–¡²¥Â 2’2�>­>‹UÅ0B¿¥S~4åH]Œ{>¦‚ÀCÇèoÒ±~¤ªPeH�`P•æè
+
RêÊ0Û‹Ò#¯,AÌ£¢P¡†~O(ÎÓ±Â¥Xä„4'¨Ò«Å*%'�‡š�Ï<ScJ”ez…A
ÂÄßE*…×ÁÀŽBqÈ ª0 Î î9R”tƒq›(**.*ª3y"u©\!Gåj¥J—¥(+’ãjCšN�›DcK{)4š<Eþ8T Ö¨r&”¨PE±,]ªR�3Š>‹v¤ŸI)z½bÒ¨´… ‰|�:œ±„´6·K>Kð'Òi³U•Þô*"
+ö–’oP—«�FQj¨Ð�:ø«S›«(Æe¨Äš_¤Ðª†ê4eÐgµVm¢}°3LÓ+ŠYÝc¥ª@Q¦1°€`|e%ƒÁ^b{�¯ÁÅ:�¡«�
+ªnn|êº­r0¶6m>’«½tZ­*Ÿ("Ÿ¾âÒÁD�Ha0(ò‹hOòÊ
+
+TzÜ@*y#š[ËÑaáI¿Á{+
+4VQ®(Í×«KqD´Úuè?aˆZ¡ôÀYPŸ4Œm”O~‘*î,æJÔléÎ®7¬³6F1FÝGƒÉØâœ”´Jbcjè$HA¡™@T£UUå‡?LÆÃó@#N‘¡X“ƒ
D†
”Àt……UZ™F�U©´(‡™J‚BÓ@õEA=;FuŒîÑ±[T�NTK¥ã“êgPýdfFišrÌ…JTÕ1(o´o(‰ëÜY§+�,ÖU¨Uùà"óuÅ�Q~Y©AWŒ	”¢’²Rì
Ø®¤–©5†~ZZ¥T—b-�.Øè‹a0Ÿƒ)ç0LÀÖ@¥À-ûQŠújtãÓhE©Ñ®è5‹4µ!È ¦Ö*uãQoâH‚°8Q&¸2µV¡¡_Ô*ƒ(’÷?Æ@ž o=£Ð”)@c¤VÒAgT
+Œ-�F“‰ÁØ×2ƒiÀÁG)P%ô¢È3š<c�¢´Û3þˆå¬«·n¼DcÈ�QŠÆ”(ô�nPÎµ¦Wå8áHHtzÕ0ÇœøÀ(Uá:l˜ &}©¡W‘Z£DÅŠq*ê8Èˆä	)0ZU>j¸3*­¤½Åä$”ÀˆÓ«óÊÀ¨‘ú2½ŠÊŠó´
+.2‘Ø¡,+�"ÉØè¥Q—Py¤N�â:u¢hˆ„
Î±±½¬Z¢QÙõiqq‰®”­ÂªVBŽgV\:÷g ~c—6”†¼^0ÞHe<“_¦Çb- n‹>QBjÒ`�^?!8¡sjRBjvØ–*.Š.	ÒêAxèF¢ñzèP2òú2p5
+
ŒnÙ¼3o,V/6~JåhD¥%v’~¸ƒ ³¸£Ô+
+±éàBâ H) a+½ãròZZ–�÷Ýx•¾öêXÝXíóÝMŽ!§pÔÑe™I 9†'#Ÿ	©ª¯©@€„¾�C‹„ö1Â2;d�Ó^¨‘
+�½Œ±¨°#$„Òe.H"#öŸÈÎ	àíIìyqv&þe/õ\)@=‘	I"ŠD|H‡l§L¶Z„$Žø7|Iä™ÕÔ‘CD¶ÎIî´ÌÙ¦âL<àù4TËŽ„e©'®q!5õ\
´Ñ�”ìmv³�šV_ðt•/sB7£,21³î"�ÈÑ)Àå!Ç½ó	2Me-h™Ä]Ê+ô"…"<Eäé.í‹ùÁ
õå!xÿ7„D#ÎdsæyÈÞ<d~‰§œ’Z´ìóO�%ä=üß6oÙq+Á«|�’ål—�è÷ÒÚ–ÿMžŒÁ_Êu5�âñ�édXÙþœM‹D4¿P'dìŸ¤U¢¯iLù Æ:0P³O¸NrRŠ_¥¤  ßŒŒ|�m‘@(-$î´@(bœ0Xki!.Åà� )•U µQúé0Ü§ôÂ¾³×Ú(NÜcz·!Š*²¯Å5�æ¨6Àƒ¥P.	±WrŠ¦mLm¥ËÀ¡õó$]j
]â‹.˜Ðj—�›�;"=,G,!S‚YÉý“žó{B	xÊ_ÖÐÓJ‘I-í©ZbMjá��©~ZZêÇT�«Ã,e¬µÐ˜U9_uÿ\cÍ@ýs5(›WÃ¿•¾m¡‡
+9ãH&±*.sðe,@,”½/}7Áˆ	žDä�Ž™o‹XÑÀhv§oÏ—:v÷¸]Œ'×¢Hl„$¨¸ØZ1AÿÂÍôô
+öøïÔv‰á{\Ò�SäKF*ˆcâÛ¾5â!KÄC,¢”Ygš¾<M_´· _Aºç í‹|M5NrNçé$Ž×"jlXD(Ï"B	vžEt�š`lYD°¥E[[D°m‹¶´ˆÿÿ
+ÿ
+ãç-F;²ªr2Ú(¯*œ�¡F@óÍ-˜±¢"1£âÔ<•ædÂQ4É0ì_È0Œ/Ã°ÿÙ¨Š'–a&û`¾ì#ÌdÏY6ªkTvXËÌí*ÂLWÍë*âeºŠ0ÓUDóºŠhFW“~"þ…~"øú‰xýðuÑ1Ñw¾�å’&Bváè‚ÓíD¼—$’ w&] ïQrçÍ‡ð"1R\'àò±N¬:;‘/š|bgÛ=¢XÑ,Vô?ÂŠ5Kb£­ëhcbÍGy%›6öàˆnÍÁºdÓN#(Ñv¶&Jç¥ÂÊÓÙ™°ßUÄô¥´È\ÔªVÐ—â‚óe$Ýú§ß—N^¼é}w‘HÒƒôµ§”¦îqRœitèÉŽS(ñBfÈÐPwI<A‰–Zðî�Í)#�Žð”0!‘ÖHhM¢Ôì3‰Î&«I$M–’*WZ%#-¤ô#~hš·Å²e­24^S›GBËÜMVNY¢Jé•�§­3À8OHö&%}È3MÎMzœˆôC‰ô“ì˜’›;Ý7ÓžÅ2‡qBL8VüPèˆu²ñÝH…ùMOä)µÑK†¤?�…$K_.$ ßíÿ‚<uönrÜÈTžup#“?Qd�ôÿ|ÚS�ÛS� ˆD]è’Nb$‰b®Ø�b
+é$Ï¬Ãrpx^ækP‰ÂÑÈZéF947ßÎäõªÛO'3îRn¨8Ç¬¤³Ñ�Ñ�î„7j¹ØQå„Ø!Svˆ:`wanÎó½-VÏ†£Ïxý¡«	™VëY<Ž-y($n"€c��Æ…JšJÚ!ìB’š3I è€�)Êq¦û,ƒÔ¨5™-f·§RG”dK6uÑ¼â:‘5O[UÑÍT53‚rèbò}Ð3ˆ¡ßÃ(Fu‚é6�†ñ¹yKÃ-èà±à‰Ø»ÎkV]&(`™3åŽ²hlž#²m¸lú.Hòº©µ‘²€eÄ*êu<*›0‰?¹Î�–°�+¡iòÚJ®©œ°‚–çY–çgó"©r¾>¶`7‰tycÑMÇ¶@ˆmŒ<¿¶†W}��×9á!FúÒPM…c¤4È6¤…ÿ-“•d«Za_Š<õã¥aZØ7À–ñ™Y—Ñ³·#¤T0'ž²€<[Ó�Bò,ZÁÐX¨æ'ÜÞÔ;ª¥ü•2I5Ôe°0DÄU:°•1Òk|Ò97ìL%jc!gociØ£õÁ6l|Å`¹1÷ «wcÛƒ°p…¤•4“·ŠÞ’°5S£N†Øè8‰Fš9ßƒ·£Š� ©¶¦¼†Î¬Çõ<±sC¨­©;t–Qœík»,·Zà£¥�½PðÃaè
+ÎDˆû³œé²mÎŠ\œ�V%àçX¯4‹ÒQu0Îœ°Ä$¡ÆÙRÀ+ŠÂ†‰›PÆùÖx˜ï­#4YfVþ6r1šûD¼,K³•¦¼$óWMË3-%l%R—Ž°7 æ¼!ëT«É|©ßäœ+¥MmÕÙ™…è’q’Øm‡,*ˆÝðŽ€�CB|òÀ‡¡B~Cn´F½ŒæøNØßàpu¥”‰!"!oÂe�™q@Íadƒ�
Š,S"¾Ï†ÀÆ,Ù‚79'Ö-°ášÅÙÆ>j'òùnÆ3d¼Çsá(—³(Ž¼LÇIî”Éwƒ%ã¥™ÔŸ0@Œ;õAˆ
°I¬9|ÀSi…Epž�ˆYå4W0QBårú["7Ûa%HH1©¢BÎ4+²ÎˆY:Ö2dêÇî˜©”Ëyƒ×Åt¦±Ëw»;@ŠEî<úäËß¦ÃS\Z“0Œö&‘Ü$“9ßÏzÏ\àXô�9É·d\Ïíü_RI–3&ÛÛáÚ*Ýy%µð#™Bj§òjEF\ÄÖNãÕBüuÃ+›"‘�=>ú�x:1ŽÙ¾Ô}¿�­ÑÅÄ@ÌÌö­q6žûÀ’™ü’£cò4
+í8Tãm}ò¡2"ºó<‹´<›è$Ùr²ˆÈo–d/úYÏ_À›">øl+�
sn�AÐQ>>Ž°�ìë–ˆŠ†D÷ÆdŒD×w¡VD?ìø"_ÎNé¢/|éhÎKq®H c)‹ìÁ7aV$ï�>Ï#}ž?˜5äyÖ8¯NÅfÂÛã§æDXõD Œ`ìVj&³³T§#nÏa�d!Äao‹ÃW PˆÁœË.’,–,‘¼K:•ÊýÇº€d;éd•€nv.…ÑHú²Œ]XŠòLõËÉôá=óeSmk—/+Ø5LÔŒùxC;+/Ö�¬0
ÿšD_[8ïqZ°8Ë1Žä=º5a«õ•–4Viøšh˜wDHz"¢OA‘)Xë†˜ÂBbÎˆm
ž«9a˜'¿ü­>xíËÀÛ[�¯yøZ+ðu¶Áým¥ã£H&Ò¨/)²÷†‚L¢ÈÞ‹¼:Ð±òZŸM¹žÈ÷ ?¤1Œ<é;àÓå.ó¨CrO³³Yt©•è2ŸÓ“>G#“2è\e!D²jìNè`5[µçVúÑ'(•XÏeŒ«Õf€í›Z®µ4eSÐWìøçÂjÏiÐ\küS’
+pþæ‡
+©Œòt�iõÁ$DŒ
_;”¿8ÆÛ µmó½Œ’(q|N¬vc’�&’›èôx#\›í˜LÓ×ÉV mZàÙHšÝ–�ã´ñˆ”3,
+<?2
ý�)¯ãÉ/ËÌBºøŠ›q¦
+–ôæMâ 8�Åé-•sþ�ÎÔæ"ZÁS¶Eê³Ýâ{‡ÅwGÊª!û	ëR OýL�å´oŸÚ�Ä}y'üäŽ$Z|û™¤ö1EŽkG±_ ’HvÊ©œˆ»_E[(°§Hˆ¯ûŒÀ}.7.íqEirã>(Wô…œS^Ñ.9�¢¼¢Ýò™Ü¡2�¯fO„Q!I`R-œhÿ&n �îºóR�Z;°æ„Ê4Wk3°AuoÃ7cÛzØòW0ž	ÿ¯ŒÃÛâŒ'LáÂÐi¡<—Z‰ÇÜV¸•\nDK‘
+°	!:
+Éê?öx–Táù%;·rÄY%>ò$ÀB$“ºãMeNž×¦É ’=tF$6‡f5kTB˜Ò¥Gâ÷mMÀmäˆDd±B ùÂŒQ[³Û¬FÄ«Y!fRj6M‰�&`¹²#\Ù	éš“	CvtÊ*�|EDPœM'²æÁÉ—=—PoÕ)¶e‚PüÒœ¨/Î‰ØMƒ$j%üüódG˜ElÆé‰ç@GÒ`®í“Ùí£i\
ãxáËl}ák6�ãƒš±íJµFeÉà	±9<IÝøØ«,°æØæÝ`1÷[³Øÿl±¸ÿ²¸ßŒÅýÿŽEÐÄ7¼ÀÛÊòÜ4õ‹Jµ-@¦¦ÈùÛ´˜Ìóù—L¼meN“Ä—9÷Í4áÃBCëøUƒ%ßJyŸìÈ¼Øêü6YØk±8À±c¹DÀU’C”Ÿk²\`†Ûì²€U|qˆÏ+Ê´l‹¿v`uˆÀÛâ¯Ž@…áh…È$Íƒ¦Vùâ=”íûr‰7Õ¹ãÛ¦”Ÿ“Ã2·^Þ7îÜwÅ_†Í[“!Ú6E“nô³"†–àaâE¤.�'Dži˜Ÿ5–š-¯Ó•{›&n&ErL˜I·<1Q£e%
t%?¬y:
dW„‡Ç—¾>Šâ@‡Ç¥3Ÿiöü
;7¥eßÑ#0feûm”™w˜˜\7ÞøÜgŒÝæ>‘ïÍF�µÔlXŒ•ß<b”:7×3[ôµ KCDƒ”ž¤ûž"#çNÆPGrKÞ÷¿”÷ýÍð¾ßïû_�w#Y3û<«¿jó@h&ÖÌß7°Çü‡ñŒ¸ùSÞ+mŒv›ÞhöøhÒ\DÏ1Æ¿Ù™/%K[ñ³HLF±ÀÃ|¤³I
Y–‰`¾föw0$íâ8´5�ôag€¤¼>š&ýo|ø‹UHšñê˜Ù_Ê!¼ÍaÅûQ)/ˆòò+{:5¤[6×<¬Pp¡Íöævi¬óLÛt­Èäô‘�…ã¦S5'¹£ü¬Ä´\  [Ê\…;þÓxI.™?á%
G˜ t·ÓžÈâd?ÓÚ‡=Ýç‘°´ÿ©V`©|°TÌ…€�â�¹ðWR\Ø“BÉVÔ’ùÔ’Yj­ÀòÁ²`qV�Æñ�cÂ
+…Íx‹Ê2¸:vK¨�3ÁBB
+¸zÛû¾CLKÕ–x.HrÚd�gè2ÇiÂì÷4‘t·ZòÎda8MÓa}–�ª9gd­Ì‰œOd—ñÇIÎ³{Æü3‡f_«Ìh^0Òt`S¯qq¼\Ó"ë´ÞXk–§‹&ž.šñdÄæqÆ/[e£•Ãe?~ún!õtVê|HSöîÊ?`tÉ”$î|ÄU¶/'Zæì6WÐøþÿ•Xp5cÁõß°`á�…¯Ê‚�>ÿŒzžÎ¶^ú³ÍDðaüLCÚbÉ$s™'’ÈL[ç8^`o*àýp�“qi‚Ö\!!ñjvþÅß¡÷E¬3æâ5²É„^ºR³=Ñ59à¾‹ñ•"ð»^ì
+Ïn"Ä°$»á“1öðS‹*¾ì¢½ŠŽ!h‘ËêÉ›¡VUev}}=rwÙÖ€ì?IoµÙõÛFíö¢î¢	½(£Þn<ÑpŒ'ƒJ˜ªjÑ¬Î…§Š>®røUæ<qÜ÷IfOZ�f¶ûíõA?T­ÊèÚB2²FÙÛîR74àz¯:&/W¨lp)Ÿ}æµõßU
lÏŒ7ó÷³>_:ý¾õÇä
‘Ë³jNV	þ\ât|ÔÉªÎKª:¯èÔâ×ž·¬÷+¯ëÖwê®®bu¢Œâ0ÄÞèOgÜ9r‡J$}¹àÛºœ‹%–W5-p��‘ÉÜ…ÜT¾8mïf4ÚtD“W”» 17_Ÿ�i“€dž¹3íÆ¢ÚÂ¦5]ú\ü]u¯Qüæõ¦>kW÷Y‡®whºväRØ‘K]B† ´{Ôû{F£5c$¤SXŠ}§í»öp»nÖð9ÜE%®\·\øÝr{µn¹ÚìN�º9
€6»É¢u$c¥„\‡ã.aŸ?y5„]l<$ž35¡ó†é�Ò¨ÜaÓ‚8=8qgmá¿áôD#–dOú*1	wï±YÊñ9~�¦ï¨5@´Ž#eHò�A÷îÝˆ¹Q ×›kç÷ÐFÎ8Ä}ÈðßÁÄ[ cQÚY�KHÉ’žðôÆ&<å?Uï`ñ30˜Ü]�G O¯_Hcg*¶–Ð¶›š±mN¶Þœlq©¯¥ÅC#Ø;d¡¼ÒDd‚ïÖÁ�ÂlG8§Î¸ÿšv�èu‡¯�{‡\�%‰ŽÊL;6×Å»KäÕŠ¢¶!ß¤¬Y˜U¶ûáÉí†9­¦ç¾ù™³¨ßº‚µóÎ¥­Ÿ×JÐê3&':hnŸ�s]Z±<´äxðc9ó\>ÆMgÜ@cZ¥B¯Šê>¦kwPq ŠB)¨mA‡�SÀ¬c™N‚‚Ï"a;¡»K£`+šˆdÙO—|†eTë¸Ý~‡,`3º¿Ý¾¸
+
+Ø
ge	?iì†ÊC…ß6¸@˜µn­P¼s³Ö^U•�ƒÁçT,Ã$nN]óÖð÷+B™{ñm¾n@¹	ÞæR-àMüÃ�­Jèˆl¼ÄBLò³†@—î®LÊ0Yà4i*.<WõñhÇõ2&ÚlÜÏ– ÍË¹”‡¹@+¾#ý.¿ Ü's=‹	�¹Aå�gÚh�ôq}ð´nC¯ßôbnåÚÏ¨âzJÈºÙ¡øÜ5od	Ë™‹¹@¶b8næn†ˆçaþ&]®Š9Lãûwæ�”Ð–ªŠ™ ÛÔBå¸þí $„ GÛ1\…‘ïL%@á,á)æ5ó:•p–e?·„
+ßÀégFN/Õ§	yùø™ÞÌÃº6dn¢ã	d÷³`ÈÔóÞX‹EÄª	ú"+Æ"»×ƒrÝØ)˜-`bßÙÖõ
w@JôB{p°lÛêµhRÇC¿/vA+Ä”~z
+U¼¶ZšZø‚?˜QUDŠnNIúN•w„(lÄLÊDyœ@'µè‚úúèoÄ”0CqåN˜
+Õ<é¨0[	×ÍŸQ¥?ÜÀ‚ÛÎÙ4|â^b½T MÆ�x
B�P$ê%Å XÔuEÝPwÔf†q)ÁÉ„Â/¨Œ�ñcñßK‚šÿ�ÐdÏN™`×*«›’…‚±8v ©½„l~[5¡¿“ðg]kgùfÎÖÛ†ømJªp²C¼´B…÷ƒìïKæEûCJ0sæÌ&6¡Efw	Õ(·=xÙ�n’ÎcËGD_Ýž¿ÙÙ%;t€dç.§âR~®ß‹Æd×Mmï6eN¹2¹ãÏ’G³£…£®ËªS¶ŽÙèñá÷ó/¯qDn£OÐl#üçfðŸL¯tQ†hVÖ¢asÉ:©w¡ËIÖïµæü^ ç{Î[²€yG¨‹öÝ½3s#«GG×VÂ)2‰�`©0�¸DzŸˆþkGl›š‡?•Ÿw�†‹oÞ)è?(í�Fh©B@Û '’-Í»2Ð´³ 
+GKæ½yâ4!4z¨
+ó F³Äb­Æ—o	 ÛÃ§Vfa `\?GìÃÖÈõ\æÿÍàƒÌá�lÀã0ô;<Ûp¢�â˜�j$ÞÜ9×Y†Kí«î"|‹Ù½¸ãÛiÈÇ‚Š´ƒ^Š‹âCÔw>ò�Ü®ôžØÕr…½ww#AÍ­ý0lN.®q0ÖLßNkÎw=V‚ªÅ®NPsˆ1d!ç,¤4¯ráªÕb>½z1¾C¯½„1Ÿ©L#wõP½Øóè²weXø™Á‡Jè�D$ª;8
+ð	0;wH%*.m[’x",Åëà[žóµØ6Õ­6%Äÿ‘ƒ»ã¾Œ.Ê¹…¾ÃÖf§÷>9'£Ó'�N§¿{9lO}gŸàY¥wŽîýòðÞ]O6­ê'ïV[ÛÔÔ3ÖÿØ×ºÃÊ¼^Š·
]_Yßù�‰‰kFFÖM‘5üýèÑ#ï{O*òê.NPîtþž÷è�}ç¹-Ør6cëù{•Ÿ_~ž<4ÐY\R�±¯T½öö™ŸDŸ_ž÷¢MÏÛC·Ü¿kääqÞ	¿£õ[œ[ýÌ…å9g~•†<ÊïæçìxB<-¥,àbE‚ëÅûnKçðKß›ã4ÿTÑ7÷Žžá¾Ôñ�¹q‹~?Ôu¹SP<é�ßÞZtnjQ‹ìMï~Ýÿªvù9‡ó‹>Ž©vÞz~œÿ©"çŠ¤�;oüý¨"ý@Þ Ûñ+]o¿p"ç÷›£³ÇÏê½¶á�„Q{ž
+òv´2ySÎÚ�in‡þ>]óöm½ÃÜSz|—?ð�ë	>~oºwçñÓÜn5ûž=ÿðé ˆ�£VŸP—HíW¯–þñç¤¤)WÂÎÝ(Ùø<Ö^Þ¶¡ë^,
�^)?›_=àeŒúÜO†ÉWZy5²»¿Ë¥Îß¿‘´z“ÏïUoõZvwÙã§{®�Ýùâ±ë%M·èåGö•ôøà«�w—ÿÞêÒƒÏÞKoû·ÏÜÛGž¬;ïµ
gÂ¦ïWÌþ=+äš�¾~øâË[ÏŽ­ºkl¥àÎ^·9Ôu´ã†¯¶|×Q[²QêcïRVóŒÁgSŒV?÷ç,÷ƒÏC»…ä�[Óº!Ín‡Gò”9>‹Çi?tZ25W<kã¶á¯ÍýfX›Ö=|>ßß»Ï�ºÂ·æ.óóKS‚ƒK+c›ªcOUžïXPWí6sê®‘Ë&î]õýƒòy;ÙOK™{Xù×l—Š½£wŒþxÉƒòþ��˜°wôÝåGfl±cÄ6qBà‰¦á»®ÿºäÙsyCcØ‘˜ž+å?”y£ûŠÁÚ.þ˜Ô¨ØsC.ì¿!kÛ/dÛÐ¹÷Ÿ¼ùÉåYg
+]ý™�Íffjp×�¶7ì¸?&D"øöÜ½®qŠºÜ|+iõ×Në³žÙ­lëºn�ÏÞ‹š�þ…UuµOg(c6=ÌÞpf_Ï€}•k®Ô­Ñx%úÌ]²/Wæ3×îÇ		�ÙI«‡=-ÿr^BÑ°á=ì;< Ùÿ÷¾“’†uIß5R~vL¨WÉ¹“ÓNwxÿV�_œâkŽ=¼¦2|Ù�;wž<‹þ³²~Ñë‘Ë7.Uø)ƒ»­”VÆŸ¸³ääÊ›+å&NN[7hkNø…d¿ïöCo
<šyý@ïÅ©Ÿcþ<x£äÐÎ.w\ï¿S·Ù®\òói©¾[�ËÍg“©½ªõ�­vné:scë™ç§Ÿ½ïuëQE˜Ðšîþ1ñØî¢ôÞÎd‡/õ¼[ù¨Ëç}¶œ}ñÛ¯›Ÿ"_ÿj&ŒfÒÞ¦™49“¸'0ú}â^ÛáH3C,d€õAÀšÂŒÖ4xà–”A^ô
mÑïÃñ
nQ)‡{WN‰ÿœ(l±[˜ÖFØNÞ&ÿ§ó×:ÿz´¡û�Æ�Ôãño>9¾­Ã‰C›ÎîºZwþÒ¸_ëÈŸ\l7|ÛÐ0©ë‘ÛújÃ—£Nÿdø!oG¨Ý´”}y;öÜš“´:sÓù{†�#N�ù©÷¯OâoV$œ>�·&gË�S÷þxqpÈ›{÷ŽŒôò¹¿yóéç•™'îÄ¾È_1vÝ)÷ÄÀu…G�ìºü`™gêÝ‰{Ï¡U•]½†.È�©î1ÆqFê¥ž%Ýk\nÞ»WÓ~IØÃùÃ#—ûÅú9·­¿~â©~SÎ×÷u¸óÕMa­ïÑš÷ÓÛöXýéåâûg´ŸŸ©8�V^Ô¼†}øÎcÿú³cƒ[ïéàîÔ˜0ÿ'Ãw‰GFnxÚÙËñÂ¸�Ìï={LîâÜ~‰Ã·.3{õôŸ7ö¹“HPñgEÂ§ILÅèãöW´Ý¿+ÈÐïyéyõ±‚õÙ›rŸooè€n¼ýKÇ?×éÚ.pO»qâï+å;‡n¹1ª×•%²Î�ŸJ%¿Å¸t­96§üËç·�ã¤®í–>YY¿`ïÛ•²½÷¿R×]ÌÉÛñ^QÝÅk_µ^w*t×UmOÏÙ
qÁ{ý±Þ¥©£?nzXzö9š¸Ás5•p£©„5c*8‰à"p8b-ãXFG“eœØÂòúsAV·ÅšÂ}­s§-ž÷·]ZÇw½ê¢Ö¿»tÆâíK—îìòtÇ euukJ¢g-|öKÏ½Õ	{oŸûéJõ³·îLºs¥´l÷‰Èãcw:Þ(¾üÈ—,–ohã=·O°Ÿ³üdÀò'O'é÷ŽÞ°åìœUòë¯Ÿš°Í¨Ž>ú�#nïýëä‘ëÏß;uävªbÊ0¯¿<ysbÒêG­çnêâïríÖ£=c¿Ý>þË«Ù©’QŸ_1åÃÕ~1[fÆV#!¦±îTç¿Åõ5¡÷ì~Y~¤]žxÚ”Æ'Ï†|•¾tûè“›nóè™»}fÅVûNÌh¿$œ³�^_­hµg·}Í±‚�7&î]<)éãG¯oóù-åYì‹j·Ê¸•›ýÓ#—ŸùÝ×Ñî~×ïÑ#æÙæÖcWh?«•ëÌìŽ>gþò•ˆÞT‘;©½èÙý?§Šzë>o¥Šm÷ÅÈÈ/ŽÔ�Ü”³½rxmç‡·ù%™ýèâhy[Ï÷÷åþ§k²|ÃàMgÇVœ¯Š—ºnT%­¾åœ2Ú§×á‚º=WµM¥â×™ïVÕ_?8ºWríèòëŸ^Ô|÷¨âýÏ/jt×œ*òº¢ýÜkvïô¸•í×†fh¾ùÔœ¹÷GëÊ�vë4ºv FÒÉh$_b$‘œ‘tâÖ¶€‘t&ë3xk·=ƒ ‚
€„Èçr¾¸X„3µ÷¾”!§ìiAÆkQÙ4N‰Õ�îiA¨“Ìñ+|k%"! ½1ˆo/-ÃW¨Ö‹1ÿ‘Ž\zæ2´±âÁÐ+VëÅ�Ê™ƒr8õ$¯-�ªÃ„`WœxrÌò/;e[ô@¾·›GÒOöÆSº¢Ö¾ä…~§øï=­ãÛ“Û{ÃÄÿó†4z9,]Þlï‰°ÿó†PrYl½‡7‘ž¬y¾“À»}”ánÄ
‡a+ÝUëf¼“–á�:‚®¤ÛÜLWÎ2dŠA–H»¹�Î¤H€ð¹õOw¢P.êÑˆ"‚¸eÇy×¶V:øÚ�¯|VÝ©¿¿ÇÝa§Æ­ìš²d¥kÏÓ[W¼û°„]üŠFéÌ5”`\¯tý5`Gt«ùÏw¸qËL1œáDóŸb¹Ò´t²C{xv�i\·ûÛçE1è�Å4Îx�d“LtafË åxBã€öøÂLé]ÄË´¡Bˆ+"#¦*Ë¼ÂŽ«h5¯°çH}—À« <÷Ç²#ÆîI�=Ž½Õ·æ ª%7<²åBè‚×TG¯õb:
+º"Oe¹õ’Ä«ËÝ9!D!˜›‰ «C/~‘!ç‘3”¬­ˆ U/ÇNìm—l¡úØµ–Ñû.ÙBWRè-£7bÂT§tg_ƒ¨
+­I)¢ýù%~~#goÞî¼¾ŠÞ¥IìÃ£î#“lI¿Ÿ’ƒM¹Ë‰A}}}¾…›ü0m&;¤ÁkPW‚ý}÷Æ–êºß„rÔ�*HWd(RhÊñå¼øQl•AtzUq�º$22Tß0z­¸ƒ¶fðšPTL\L4Ä¥ÈgâLùï‘qþƒ¼¾�æîqkÚÐ£â‡3BæÌÚíá=,Ï'ä/7ÃêÉ©wÓv´Z2£QØr’rÑŒÝ§g8Îÿ"£F=;cîÂ·~Zûàäî‰ÃÜWTï¾×pûë+ÏVþ_[ªÿmò*ULõß«+¿j¬¼|Éõ_›œÅ«¯j»?¹?,rù–›=s]fÈs_ppB„Ôµê×™Ó¶ÌÔt{ÖuiÆƒÈÎ�/ÖÔ´ú,{ÓöóçÏkv�,€Œ¦ÿ™ß�ßy|õ²¦[É®‘#Ÿ÷ÝÚ³ŠÈ6‹$µ®#¶ù@ ©
uOc¶ÝÒáË«•e••Çýæ¥}TY“ÞönVè7¹i2]èÒ˜Ï­ýq¯mC§¥­{t8oÇÉ÷&�‹òûâ¯�]ü×/<Ò+È½ª Îá½–Z�îÉÄÅ²BÝÇd¬Ï.†ø¸ ù¯�<~ó¾GA]Ë£wJV)÷+c¦@~S´óÒží_ß|vìG/ìþxçü½†¸çsžŽ©Ët"téw¾3R÷=î{}�|Ã—}ß~veüøñÏö^~ðuÞŽª?&>gvNØ1|Ï»Gnïy‘èB<4)½~ú[Î\|üë“gÓ“§ÝßTWW7/'üö£ƒÕ§}}}�c*¬Þžüðà5õ÷º7ÞøÃù¯Å“Bn%N¾Ùï“Öÿñ�{ pvo}ÙÄ‰ßÍêríÉÌ·:ooZÝ{r®ü\I�é8ÿl}÷²§ãŒ‡nÏ]ëê÷ý•»sÄ‚Gö?,÷‘ˆ®G	‡Õ}ñ¾dòžÒûM¯·Ð�\½ãÛW[/ ëFÃ\¼1ÌÅ½$Ì%pC2žóV?À3Ñ|ä¶îK©Ê"#¿šºš£�ï$7ýØ’èþD{;(~SQ¦{[Ù1(«÷›^UAâ@5u@G|PÌ ™ìªFSò‰‡h^·H@^_’mt”ÅÇûfîÑû_Yþ\°gzê)š0³"‹
µ$ü¹í“Ýæ.©r/qDÐ§¶‹Õàvèý´´§-á™DzêD{šH�.»B…w2’Ñp¤¤>ýÚµkÈÝESSq\z§eƒò%çÛeœ“9Ž‚g
+xnB²ˆúíC�L:Ý¹Aè],Fò›Ï¹k²â#¿è D¼kVB8mb#<S	óþˆÝ-ú^
+±!ž É’uÔIÈ3t¹£×¸¦D$´¡E©l‚P�Ü€ÈE¸t3©½=ç¡]ú…g/Á­;SŸœ‚ØûvÙÌÇJÈÅù.H0Üxë.ßÕ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Ä7¨ìM³òÔâô6™ênÇñÌØñ�´æöøü›ë–ÊòXšè‹ä
–ì¶øb¦èr¬é¼Öìt³ì§Åï|à¦ô¥ìèìôèòü¼Êì)†ßÀÞôt»ò°ÍòÜæô’äÿÿÿ!ù,¬à'ŠGaÅ1®_g<[´m†¡®\† Eñ…`™,
‚2€2�Ï!³@4£ÂCY(>’…iLÏD 8n²tàYuŽÈD#uxz"#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�Å±¯®@=;.+)c¢À¿¾Ž¶Õ5x®ÌÌÌÁÖæ‹ŠˆH†¶Vš™™™usq}©Ì$p©£¢¡ÕÕÔÔãîX‘¾äãã
êñ÷J“fffÿÿÿ!ù,%ÿà'Žß�¢<CÂ�p,‹ÛDA‚Àí{N
¯lC;ˆ¢h&P8Ác#e
+
‰h�\„gPˆðx"ŸÄî0þX:�J§�É8	Â*14H_$f�pf‚
—;1u
�n³›«¢C«"§p®
ÄÉ‘�hˆT#’V°�tÎ�"j
+Óƒ…{"É�—§—[k&PÉ°à‰
*0÷Ž€…-@`!¢
+9`À€Èº)V“@‡ 4p˜ð!FÖ�Â`Â
+$x°CA›™@7PHÂ¨Q#=5º„K£P 4*‰;
\ 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ÿÌ‚úÕŸëàÐýÀlýº…ÿfÿwú£hú¯|ÿÅœòÓ½ù„;øÄ¢ñÌµÿYÿ™fÌÿ$$ÿ33Õ..Ü77ÞllÝ~~êŸŸí¤¤ò´´ÿÃÃæÅÅýççïÞÞæææÞÞÞÿÿÿ!ù+, À�°*�H#�!H:“FãI]
+çiµ…2ˆÕ 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-£Ñ©‰ aøY0üýý@G„ùÏÃåææ„…‹pµ–Ó­­­ìÇ+ò¬›f™úòÒŽ¯ÌÌÌéÊG,L¹WÉùòéKqxwwØ×ÙV�Þ&ˆç^†šš›íÖqKNCiiimÕûKx¨+tnVŸÂ^K~Ðïîó3fËÄÅÀÆÞõ‚p!è¾BWuƒWrŠ(¢‡��…õa;ÞËÆÓÜÃváTœéH¤é•Ã�oãÃ9…�¨ÿÿÿ!ù?,¼ÀŸÐâ"¤�
+%lh£hDñè4ÎÀ],¨öGÛ:j�Í¤è\fÇà°„TÊô¸€s5 !*$/	�„ ;-!&1/<'9„”;=›7+;¦:78(3ˆ.2	"+½¿¦%?>))'×=.,?

.,	B	á2%3cB(	ýêì~;
\ 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÷]Oþóòú—ŽýÑÍû¹³øthù‹�ýÜÙú¢šüÅÀ÷h[öQBÿÿÿ!ù,dòðÉI«½8ëÍ»ÿ`(Žd
+
Y8†É#9.¤¤ÐÚÍ�aBã‡àÁp8ÃUc k<��A°®„„³ÀtBUÇá5ðqÄC
+n`¡€ÁU8²k
u-z
	0Ck†
+S@BNNVf7œ§ƒœN¡Kƒ_N§¦hJ©œ
›œk=?�©„h“	{}ÈÅÊ‡Š‰ÈÑ:dYx&sÜH\bRN	Oã«ÓñOåçò
+¥5´Ò@`@œ€Þs¤iLÂ‡#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€ü**ÿÿÿ!ù,Df;
\ 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'$!,ÅÁA�‘qt	e›ÜFl:I‡ôÐIgº;@f3ìû¾o*"Ê¢,¢€È.¸²ˆûŽû¾‹òÿVÝ{{#:¿÷þï}^œsªêÔ©íÔ©S§êV3#ú–¢dÜ§(ùªRìn©(Ê�ÙOE¹&\UÝ½¬¸WáÈÚ`]¤;RêP�ÖwïÜyÄˆ�Ftë
+í|ùÕW_Ý¹K×Î]»^ŽË"�uQßÈËê"t¸VVPì�T†õÑ@¨®P¤}¡†èŸ:t°j­ªŒUZßÊ*«*;ûƒþZ]4ÒùòN—£¢ªÊîÕ¡p­/z­¯¾>¨ô‰ê:�¼,Rª6Â7ÜYuÐ©¹¦sœQ”‰¢AÿµEU¡
+a¯ da·Â¢xyÉm²æªxG¯M¦O”îTªí\U5T¢OÕ¨JN,"ª¨o¨"5þðµ
uÃêB#Ì&âTÁSöû¢¡d›&òƒ¾º¡
¾¡þkKúÉ¼XZöÑõ_ÛåêËúWF/ëÚ¥ËÌ^â5�S„mQ0×*ÅYïk×(=ÕñKWßæÔ0Á )¯b’Åßg_
|»5âï9½BJƒêƒ!_•·v¤·ÖW‡–ÃïÀÆHÔ_Û×L*Oä\ßŽ(¢puØWë¿\ÉR:))gñ—IœLýNýZËI»æ2ú>¯ÕÔ”ÕÔÔ”ÈÚôÞ3ä™E›Ø{û¾P·}qB?ojR›F�¦»F�aM¿hMM£iÓ/‚ÚD›šÎð¦QG©gG�ágÏjÏþ2†žÝ®6}ü?5o»®d.^$þN]§(o ®ÏŠºÉ¿·¯3Ãc×}{Ñí3ö|ó¢•þè:“�•Þ{�9üÃý±ëþ™³þú7ÿ1Ö¢¿q]ýDÒmïÎ£×
•á[×=i(¬Åßü•Q-PM—:×©*©úÓ‹ÍÐÌg£á@ÝP:<¨Ò‹Âa_£ÓäêÕêB(Î{„BA¿¯Ž×Ž„z…ýÎÒž5�`UŸ@¥ëÃ�¨ßÙóà—ÖU‡Œ2T
+Múõ�QL‚…ìÙÉ(MšžÜÒ^¡Ê†ˆ•êÂzÔùÃVûQÿÈ¨³¨—\&¹I½Ž1³~
µþ°QöÕEÄ‚Ê6Kû*+ý‘H "DóŠSÂ¡z8ðG½ê*…
+¦•*íª­Õa)ÓŒ9Í¬Æ?\¬m½DÎò@­?,£efBÍì¾¡†ˆ_FÓ“&˜#ÑÆ ?’ÝsàÀ�"Vì¯úÂrm§!7ì�„ÂèbVi™µÊê=Ñ�HZ	ÆXUå¯ê…a{JE“}±Âƒþ^¾J¬ÆÆ¥‰eþ¡˜™pcV©ìŒ�›/Z‰U�Ž‘E[³¿%ápÈNZiÿx"ÃîB�†ºª ßDDNœ;Á(‡j1bz‡†}õ5�ÊHVYEüU1
p”
ìcÖ9Ð_ÙEi4e–&·½R±ÆÜ5=IKô¿ôÃÒ5¤&üÁ*wi,j
Ÿ—öhˆFCu©údÍ§»´.êƒ50Üoj�Sè¤`ÄUjJR¨®ËŒšSh÷P¦8RŠ.¦0êüQç ²>eþ¿7ø#QÇõÖø�ñªÄëa*Ñ�`8zêª|A?«¬�hüÖRê~îd2icý4€j<1¶ØŠsÕ5ÔÊDØ_ç
+ûkCÃý2™1Ô•‘�B^é	YEÑt;³ó3Òé«ª²2r�aÊ$2Ya¹ÞÓ#IÜvÙ¢¨Ã.è¨4×_¤ auwO^ÝFµ˜Œ¾:¿3³™Q˜’ò@½=g RªïƒµL¯ÕŠe0l~�'*
Ñømw…}#l®Q«pRËÙèq±¿:PzjÊÃ!çruVùíht2
+Û•9ªÐa±—gùV“�y&dŽ9òoÆ,†FD<¦pµ-¢ILëaüÌµšd¹2K{¢µ¾úbC(D²&$±òáØ,,£p(*—\z0Té–‡®†*|AZ‡qé#UÑšŒZ¿/ÒöWõö†ÖD
ª«B�ýÎ
+ø¯¾>¨b2z‹Üšn—¸Y”Ïó5o Q<
+Å‚N¯ôÁ†EÌÞ§•](õ=b5²YVïãñ÷– ’ª÷a‰ôðU¡YE•Ñ_p`à~Ý¬¯ñ¥Õ¢åXFRõX­0¢·˜Á­´ÖÆQ�è€µM<Â§áP(šn•5åEF’F^bÕEŒ¾¡á?_}ËDMÒ“Kšužà­\%§Îµ#;„é¨ó]˜^ì’RUr0Yr/ðFîí6,lÔ¡#R[¡Ç%#…¡Dû‡û&MM«ºP4PÝ(í]Oi
+Jël,LÐlosÓ%TÚjN’ˆ¸L–5M
+­§ië¹×œ“,t\š0¡Ç~l˜Y’Òñ[™„bxx!
‹ªo(••fbQô¾“=Êú°ß\Îé�k,1ØÑl¹í{±Ï`ŠíR^{meø-Á˜âÈ‹ÕW¡ÍŠPêj®·ÙEŸîµL‹)o¢•0Ëâ¹¨½É]IK,ŸåM1T³ŽÄ
+¨˜æ•0+ÁÛ—È©
+ø‚KU–$¶¿(¦&¬À0#NoÌ6ˆš“ã
+D¤äÊ ×y‰š�`ÉÓÚ'Xÿo’Åt„#rUE2ä„ª·dß2E«â–]ˆ,>Óî*µ?)÷Û«˜òœÄ’¶Å÷˜Û7A×2êìrU¸ÌM²!FtIqØ3–Û\_Š¢u¡ò„žä„ýC…ªÂD›ëDXž¤a$oP•²a°³MY%)¼�ûuØ•0Y-EÒEÑ¶l3&üˆ@Px5‰.KÄÜ`m›�æMXˆÜkZ1+¼5¿%/­ÅT7—Q$lb–7eÇ)hNpæÎÖ6V‰7+†ãc
¶¹6z†‚!Xs‹uÆ5µ‚é)¼F;è�Æd&Œ^O†=Ìô&oœI³÷-Z$«…m]äl•IIWµmÛËÂvÆ#ùñÙÎ�)†Lo²¢¸½©Ë.+îO˜EŒ˜±N·—»´"mâR­Ùž±ÕÉ‚*°D®ZÌpiB'#Þ¤zrš{F4©þ�«ç'¹RÍžŒÒª¨é‘ÄÒžÒ�1aæ‚‘>gëØ¹£û¹™†Ìú“‰ïEUi¥	<¹‰$­gQÔY‰caXfµJ)è©ç›HV 6" 9Ð<Õ‰ÉJ¦9°¢e,+’RÞ1ÔÊÉËs
N`ÕÕb[Ì)íãk5Dm!É¾&	±†–
õâÂÖîð“Ð‰^AßPÏphœÈ‹»?Ù6ÉrË„IÉ©‡„¯ä¯²¯0BáHšÍ(pfÊ®uâ	¯{Jfvì$Ù=v’Ô+ƒP?c`@œ¡p®qÛ.bŒÒ&æ46wð›gQ$ª GUI‡‹4[ˆ‚?ÚŸ�’a$§¹J[ÛM6—)FQ¡ø†¢‡`««M3ïzÊDa3ÝœbôæeBìÐ'a1¯)ò’œŽî1§Cpz4Fý7ù‚8’i0@ÊªvEjB#¬©Ì®²ŽÅ8Ñ–Ô™.RF $�Á¶‡%½;ŽmU˜ÓL„‰¹¤SêÏ¶¥™pJl)¦4Íº‡‘ËÅ]ƒÕ³t”ŠfJ''Ïx*-Ñál•XOJé¥¥u–NBj-bê’HuÙJÛ/4"#P—¨Â-âÉDÕ�Sãk$'Éˆ™'“Há¯úÜCòšH¹àÂ×À|0yÜñ;+$UœVÍ.%«”×dwx­âòàjF
iD„9åáD^geÄˆòÚËå�·cÄ¼ogÜDó¶é¼d-<g
+3+’·s—<šn¦SÆåÞ‘À&wä„´t2*’|bóÂF^|\(ÜuÑ¤­�=|áN¾Hû+¯¸ª{œ‹
+}Ï(/¹¥ÜÛ·¨ìúÒ~Þ·dšg´Ø–â
+ú*üAóŠ-«oÑ-Þ›K‹Ë{{Kûõì]20«/Ê$²›i·]²0šáÈA5¥}õõ—Ð§èVoyiß’,Hs€³WgêvUº·Â–î‚8í¥ydæòÆ…–æ­7KÉ3!&¼r ˜uW"UŒ»�—ËfÆzoò)#[t4Å'sã¨bŽŠ!+á}ÌD†¨Öê2Ó»ÛÂö%’,H–W‰KÂámì_]�½ÎY
+ƒ_õ$9 ÒÅj™`¨05Åñ9…�,›èµ®2Ì#Û¡UpIhM ÊÏDOá}‹2¢¥LÙÔb«i}²ýÊô&+\rÏÊCð†å´„±«Ÿ(»Ï)+UzNol6˜w¸0ÏN¯Ô9Ñ£,oŠÊ',O8e‘ðø`ÌžX³“nÍ´©ÊæPã“¥‹É¿Eâ[3cŠf
+R#Å~JZŠfd÷¿¹_ŸþEÅÞ%e=Kú•]_âIž)!�×²ËEÿä|æZÚQ™âSClñ¦P §°C1ÝÈs™¤?µ¾‘�Ú†ÚÌ”ªtY:ÍnZ8¼Ì¬Ñ?1¹;¼#-=4¥(øÛ4o’mÿRT£I—Âa»|Â¦Ê{ ¤­y„J9+A2f¾[Þå$æ¹L£
÷3PÇ�[
+³oºhâÞgP .ê†W�\&OØð˜­Ž×žÓ\ã9
uçv½m5ód¾›Ñ›’Û/>p�¸¯«â�ÈqîvÛç€¾�:ëÁRAi§t¬ìÃÉdÈªðEüA˜Ý¡ˆ¼›¤`Š80§²ˆ£6P'#Y±ª­wÁºâ«µ[õDGà‡ß“Ýöå^¬kY	�•5µvM™�ºÊ`C•¿´Ît—�P‹›LË’nmæÙ +¡Vsÿ²ÅdÝŽ·ª³è¯²/û“�)a>˜TÄ*ÃÖÞª\«ˆøP�ÀÝÂ"[ß%,ªÍœ²V
¿à²±škS
’ 5WK
+Ÿ³!´.ô©è¥†´¬/Õ{KüT‘pBJ$·=×ýI¼8Â¶3ÇqaXÊÄ�‹¿®ÒŸÝP_ŸJkSÃÔ/™¦É�‘³Ròí¢©Î¨Mˆ8‹ò¼í7¶;·Ã)·e-J1ï!~i.×•ðq#»™éµ‰G“–¿zþ5&H§Wù«}
Á¨ù¹GÚ^IÇÑ_¸Û¡pNC‰¹`[ŠÅÞì—¡4qCQî«�Wâ*¹ŒX½†ØEe¬µðýä·ÈfªÉLùÎÖ&®Í|ðã~ëü
+»&óÊCPÅhHš@ö+F«‘k(ö7®j3Ìˆ¹‹¢ÑpŽ©ñ
+ÄíaºäéoÕ”“ãe¡Wr72üÖ ˜<kF<ÉöQ|ªé˜²”bóêË»ŸËœN"Å?ð™é4ÂÄÔWÕh/»ÚXyIŸÜââ¼ü¿w$¥DA¼RoŠ�“—�•Ø�Dzbg³›i¼ð·ô‚!3Y‘6	—ÁØ­ú…ê¤û1"†£b›ß¼h4Ì
²¯¯ÞSÕP[Ÿ,W§PmkSŒÀ‚„ÂÑ”Ê#iÞ„6§¹C¼!n ¥F™—Ñòs™qzc¹–—º‘11·MénSZ$÷ÏÚbf¢ÙÜ[ZI;@ÂÞ?ÿ:„eëÐ!]¬Úì 2SL4·NÐ,'÷|ÁÒÜž”&*‘«‚[‰4ð‰MOÖîE“7!OüÂÆþº-nÞM‚ˆt“�æ¹RH$;&£8­uÂGóî©ÍÓ0lÏ2xµ
‘¹Ö£ûûÀìvIå›ãpTÍ
+VMz¥ðž�AuÔdqZß!}QŸá�ZìNápšù ÚEe¿˜WFÔn#Û´=fÂ¬n,<Pt§Òï
+çÂÌDQáË³ˆU±Ý'Ä¬v™WvÏa7™V‚¯µc÷ÎaWÎÍ¯èUéIòRï+-º+‘G¡¤—Øw4¤k“p»‘x5"KçÙ¬)—•N³
aiÝÑÆzÿ@Ë¾ÊÏù©÷—Ë{Ê¶o8òÚÃ•üïÝDÄaìº;¹IPdBÞ{µ±«k–?M^‡XbÈ3½âs.kÓ™"-šåAÃ)±‚	{PÄmK/VÝÉ¢o¶“mlžfs[Ä7¿„µJìOüÁ�Ù³¡çJ=ÿWÔ¤«aï”‘ÜfÞ5G’R6›Ž‰uØ{ÓUWwéÞs¦ÉÛk:üfá83·'W$N¶®êÍDVj=Í{¦"KÜ¦Ø
+ŒóŸ=æ´„º#noê­}|O³„Þst?v°Þã8ýµXõâka•¸¨	öïa~ë3‡í–ÉÏ–÷f‹$ÙœQ_…EtD-§Í-¿°õJàÏK°Ï‰ÞAnüÍO÷„7?ºt8ŽÈ8Üøu¹õS¨œ�[�!u¬Û†zf®—t³ Õáü„*“2ÜI)!ó“(b’»^Õý.qÃhmìf½òÖ5é6ßrÛþz}ò%“\(æžIÅ0Ó©1Ï_afæ¸,ŸR–è�ëÁ@mEÈÀ„‹­°2*nVÅ±-Ó>_[ç“4y2·Ìt§Òëjc´ˆÛ—ú^Œzq®b^)ÔóšDB?œ�Q¿yï”ìÌÈÆ~{ü’G÷ŠyôÔÆuÙ>gØî`U‹¸¶$<þnEâWn©-7œ|É‘?%=ýÊ”î“§Ä)¼ó1Dlr&~ò´KËKi±ìÌ¤U:Í~l&½­˜o‘H•O±sÖûu‰ÝIßSåœ{æˆ\‚á&ô³•�XÈ¢åùë¼ƒ¶7K
+ÇÚ~%·t9qy&“&ËúpÞ¯-+¿…Ù˜èCBS¥Å}J¼å½ËJöîß§ØôÁµKü¾ î¢ÞÜKƒ$oi¿ò’²›Šú¸a€’8#9ñý=þ}—ßTR6°´?Þ­Sñ_¶øp*o¹Š109u•�{F]Ò5ãZQq±†‘U^VÔo`¯þe}½={õ»¾$3önÉôÒKû•–{{öï; OIyIZâå#++éÛÿ¦f®3W�AååýûyÅµ£³BZTqì,¹å–•—þ‘loPwÏ²’¢rô;VqVeÊ‡|T><ÌT(..2Kû]Ï­»Ú43WÔ[Vî2yä¦St·´¨Oém%®!K³i§¼Z–m»•õ±ÆZ,nQ,‡ÇiÕXÒ¯ØÒó’º*Ú»´¸D—õè²†Œe%¢+¨·¸¿’ô¤'é=•
ì_æ4 M¦™¯ÉÛÁt”‹÷L‹¯ ^Ú^ZÌ­ïUT(tI×%Õ…:‹¬~;…¥0û�S4`@ŸÒžÉÂÌN°c¶<ÓP× ÁÒ·´Ü%o¶‘UˆfšÝ�ÎHþälÎÿ€²þ×C‰¦%Þ¡S(õÍùyç½ô˜%é‰Ÿj#º8•EÒ¬/¶r©¥›î¸Hßèoô˜©Äsžê×œ.o½O…áqÆ£¹Í¾«ŠäVwJ\ä�Ï°oÍW(ybñ4ÔŸó>Ø›ûƒ€ùU!‰”Vš@Ñ½bÉQ�\ýú—{1Gýûô/ËèUÚZÓ·h€�Ý€^ñÂÌî¯òzÍ7¯4_¨´¨J|GYn}<6—„P]àï
æÓœàb3áJø kˆŒ’²²þeû³¯äµ§Ô•ðU—¢îÚ´@äæšv«z_%
‘h Ú€u)2¥%/±~'Òºþ×½ßˆ³2æ{~Í§�\Pÿ_
‘ÜH³
8ì8ì+X‡=~‡}S¢Ë�ÝŠ½7Ða]ŠoÕ–”ÀÉ� 9Â/+3ï++-6²Ð<—‰5_“Z›‡9­*›É²Fºez½]½]¼—·ò&±š_5­B9ÍÕ’	cQËâµªqÙÕuóv)øõº\	­¶ð6WqŽÍQÔGŠÁ+°g¸™Y”nOPAå¯;;µ
+HÒ�\Ã@4¿¹
+DÍY–Ã›WíH¯ý4µ�õŠ5þ‚µh`7ókE|®ú†HMÌç_ ÕUOûOzÒSi]J†øI½VŒ¨‘ZV%1Éu”!ß'ÊÏ­âm±£_ïÀžE}JŒˆMrJŽ¢``h�£¼ÿoŸ’^åºO$YÐ_74Z#¿[‰K.ë{Q^Ò/SºÇíæ$ÓÍuí“‰Íÿ ä¼d¦sÞþ·ú�JZ'þè£{ê­nJÅÉÏ¸Û$Mýå….��…µï—ä%]¯òa’¹-¬ÄA3nNpá_¤PœüU…#jüu…Qp'—¾há…äñ¥þ˜‘B¸@…ÑPaEÃÐÂË»^ýû?tíDÅ¶ã’_adÙHšüITÄüønÄÞêéâã|™.?âfªZ|,qöí?h`‰Wx'3:h@ÎvI/-úÛŸ.T&¦a†¹�cÇ �\Â]“ç¶þÕ¤³!Í¤üñÌi„UV•!HÃy.öž¢•í…vïÁ“Úh]ºêCØj{A›"¼*0ÔÁ¶(Î¤‡¸1Š^·MòßÏù¦Ù.9»™‹Ü¶±ö›}h»×löQTÂ=CòEC«„ŒÔÃyË_+Ô•tÔ¡y�¨'ùr‚�è‘š@uÔvÙ;%|´ôT…pŒKªr˜u@Î‹zWë—73n³µÒø
uºý4Ê|ŒÀ4öƒó8~=¨ô»­6q‡ ÝRKs†Ò¡q«B…P¨pX2ü8Êw½Ò‰Á©[^[ÒŠP°Š ™�J§ˆ—Ê¨Ã¾âÔåiÖ¨€\ë0ÝA‡ÜzÄÁ� dˆ_ÈúòA^ëÄ+,ÔphDD¸’r^Rfrž˜€VÉ…{JŸ³¹ïzÝ“²DÑ”v{Cp’m¶Ýä¼fÚMzº˜ô+›î¿‘U*¿L[Ym’²sD{É¹¥åæsw[Ù’{›œ)J§õôÕûä>%ÎÂ úÃåX{¼Ø+×2¹vXÉ¡Í=síÞÏ',sBö¹rLÉ,ˆ/ÉÔo›±ï¥ç|õdµ�‘8´Q¡‘­*›ýÎ"�.fÚDÛFKçT—4]x›QËŠ™†ý�õè�Z_*·¹²Òë{—«}Ê
±ñÉ„ËÌ–»`š—Æ/íë‹Öhµ¾‘º8^4:ã¯„]ðÅÅš¸utVÚ[[Dþì*
+F¨¦†11sý21´‹.fA©Žáâ¸Œ­#'ñé±ˆŠužëÅÖ¶>’Jc>½õö4«ïaÝ±fzÊŸÿØé¯¹‘–û*â¥ÚxÅå"ø0½“¹ÍC‰×ÒóÊÚ›0™æý¬ð¸*BâÃ…x8$i^±¡ôÀ~fJx“ÒäMÍ4™é�ùæ¥±7¨–:Ø4¯ù&™ðxGÈ‡Úâ8Û`¾`vyÅ¯3R³…¤ÍKyK©Õf˜÷lö€ÛyÃ�Ê¡�%U�¨ùHAô;^ Û›dF¬‰ˆ†ª|�q¦q“å—
+�eÜPo�SÔVZWßµzŒe¨‹ð‰_}%ôÙíM8�Yl5~yÖ¶ÞX’IT†·8±¢Ló''}aÇ­6‹„&Éx�72BìRn±hµlþ,I¤~ÿ°âÄAØ��ŠÈû»Ä,»bã/×0aKV­üfÓÙ(îÅEÞ¯h¨¨�G+qK[àýB…ò�]hŸ©á`UÃß’.u5Np…Ô�ŒØÑš—•\?¨OQíÑ¿O±K oiyQŸÒžÌzÃ%‰ÖúCuÁÆÂ
+a¤Þ_)=íÂŠÆÂ†|œÂ` ÎZ]U¡8™E
+Ñœõ™²ca](ZXŠÖtr”ö7��†4Gâ0Ypî“[ûä™“ød×&¶jæá®�ç’ª–ÇWå¯„Ç>¨¬”ŠÕDÚ»®ÙÎëjVÉ~‰/Ì…¶ËQh>‘-„ÙG¼aé)îÌ«}Áˆ87øé�þÆÂó¥W*‹ŠÓ!„zNqŽ³MÞS“¢†hHŒÂá³"FmŽ.â­”cD(\u3\gü% Ûz?æ�YŠ”jµ�:]~|‰åO?ôê`(ÖeQrazÒÉ•Á‡#Õ¥nózàú°¯JÜÛö�L³ãbkc}Jû••¹¥bgïÃi~BšeˆK•aâ¯<Ä¡<”{ê.d�.•¯Ø<ºêü¦eÁ$=˜È§ÁñâÓ]f¦³œiNžP¦°/ÜXHCÕ…N¨_¡<ºz’¾s[¿½.ÁÉ¸´üVS³ô(ŽCþœøoì;Å&Á¨ŸðÄ¢Ñå)#v¯’UU‘¿°*7?ñ¥›Y8IŠT¶™2QÖ–Km}´1‰˜ÂÄph•ÅH÷‹SôÌÞšÏÑ˜ä
+5ß2vpšwjâwíI¿Vw„ôâEÍÛåÂêp¨¶0/ÜüK×L`9:Û›Iú‘z§æ^tqaÀTîF´Pþ¨FÜêø«:1ó&±•·ùgÂIV»wwB°˜^3J¼ä¯êà¿Ò¿… ‰Áâwáá¢¨þ5)$I'N’Æp˜(Y¯ÞþOõö“¡ð˜±¦+ý´ÒªÑ‘j´1Sê£yÚhý[ÖÏ`³âOzIŠcX]¨r\�ý;“.–�4xoÌüú.'×hæÃ©oé
+W£
+cv™ÏTÍ}ÁŒ—Ã[V‡�Ú-¼ý¢ºh (ðEÄêqVËŸq×‚�™"*Œy¯€\Xéò…	†_/ŠÊ—'ÂHr¬FYþfó™¥¹OX¯k Rÿ~P^;¤ÇÓ×ûêù0X<�ä8@ÈGÂ°‚âÚ†U>6ÕÛÃ­•ê!¤Yñ2ùbßJ”‡ê]X‚¡aæCt+Þìƒø)Ié¶Û%»â²SèHV¼[=Í{o;ÓL:ì—¡.ùµÀ¼àÓ+0×ÃhE°Á¯Ö�âDÔÈ"� 
+Ó ,›Ž#ðp¿>B\=²F0Áj}á]u¾á�(«oCKaä}A^ÝPY	ø(6cošÑ!ZÙè«3j|Á�lÃ!b¢I§ˆ„ÂâjNFÍf3„É(ÆÖa~g¦E.P»Œ$]ÒäR¿
+÷UåDšùþMjÓìd¦ª{çÎÛ\¹"Ø+B#¥¡_AÊKÄ¯ "þÖâ&ÃZr>¹Àåb7×¶.¯[\	_ø8ªv×	F°è¢ç¥XÙ©‹þÙåßw/üçåÿît¾Ügêƒæóy¸¯¼º(ª«²¿ìïk±âwx ÒàVÚ¿Û®ñ
‡¥‚ðö}a­äUL¥}/¼(­Š�Ž¥KÏ°?-]Ü);j]ì§�æûF­S§NiEì§‰ö×B[F~;§SÇ¤[ØBë¶}…b^9š]ÑßÃÀ†
+¹_�#ÿÇä ”½ðW…�µ
¥®j–áâNÎáì—Ò²ºnB´ÐŒó
+Ÿ¸
+ðçTXòÛâ€ûÓ)#•÷þÖeVn,V(3
+;@:tºô(0Œ¾Ó$—äÒ\#7-×“Û"· ÷¼Üós—{Qn·Ü+s{ä^¯+Ž~Ž¿8;"ùó‰cÑ•Ü5$÷i’ÿ-q|G?ÇYâ˜¬æÏRóg«ùóTÇ|5©š»LÍ_®æ¯TóïQQÃV5ÿqÕ±SÍß#RÏåèU‘¼[s<¬å?©!ý¢–
+¡ã-ÿu‘~K$ÞÑïiŽ÷µü¯‘qÍŸHNh>Pîš¿Œæ/é•­¥ùÑü‡iþf¤ÏQÇ{‚ú¡@Óü/ñ{êø‰æ�Ò£õü)zþ4y³ºGÏ¿O„9ÖêŽõzþ=ÿQÝñ˜ž¿]Ïß¡çïÔówéù»uÑ™øŽ,ÏS0Ÿœb/±‚—YÁ+¬àUVð+P¯3ÇLpå‘‚oI^ZÁ<µ`©š·†ñ€|QÁµà”Vðº–÷»1Î‚i´@ŒyKhÁC4÷}GÁ4¯GÁ½`š^0K/Ø®_L„•èØ_]$ŸdxòHvi1ŠŒ&cÈX2ŽŒ'ÈDâÉqO"“IV^®~'i&
+ÉžJÈ4R0�¤f¹=9Ù¢,1X#™AÚÍ�ÿ±f!v>iŸ~™M:ÌI*$
+d4C¿s.É7.#®ŽóÈ|rçQÕe¤ã|"b—’Î¼;:wõBÑaþ'4qÍ"Dÿè(&=“%²‚ÉÄUœKœ±ôRr§â
óIé2I¸‚(‰'ï$%¤/+C]¹I#[Nè�l!+IùÝH’tñ.&wÜ‹ø­·8ÉmNo®•¼“Üfü;‹d¬"wVÝ‡´#¨Ú¿õO6"R3ô~B²ØPd
hÏœ¨œh\Õ9aœpN\srââ4�«\ÍäZWÝ\Ïæzg¹\Íã$Ÿk-9oÅIkNÛpÒ–;
+¹£7.àŽö\¿�;;p×Åœ\Âé¥œväô2îèÄ�¹£w\Î]]yÚ<ý*nüž§ý�»®æÎî\ÿ#'×pö'N¯åô:®ÿ™«E<£'7Š¹QÂi/žÙ›«¥<ëNoäîþÜ=€{Ê¸g ÷”sÏ î¹‰{næž[¸çVî¹�{þÊ=·�ˆ‘®Už}Ïöòì!<ÛÇ³+xv%Ï®âÙ~ž]Í³‡òìžàÙãÙÃxv�g×òì:žâÙõœþÝk<'ÊsxÎpž3‚çŒä9�<ç<çŸ<ç_<çß<ç?<çNžÓDxÎ(ÀhÀÀXÀ8ÀxÀ”(g`2`
+`*``:`ÀËsf"˜˜
˜˜¨çê<bü]5²)Ï]HxÞ"Â1çšÅs—–�vÒ·s8«yËòÜ†qrÏ[‰ì»‘òsr‚:žw/‚;8”�ç­B´’çÞ‡jV#y?áù |°Yëë>Ž¥ÇÉ@€“rž÷l$\ß„p3rnæä?œà¹[�À€óAæV„�CÛnì<ž
+ž·Á@NþÊIž÷õ<wXw#:„çíç^Doâyû@Ý�h
Ï;ê“HDòVžwÉ§où’�{Þ³Èzð<Ò·ðÜÃBœTñÜ# Eê˜^@x0ˆçž@ò$²^Dx
+áK€—‘õ7N^APËÉ«Èy
Ô×¾Ò›ßBXÍsßFôd½‹ð=�yîiDßé„‚TÆó>BôcÀ'H~
+Éó>C€Y'ŸƒüàKÀW(õ5àÐ¿%¼Õ÷€·sç�„·>ø™pç/Äø‘è¼
FÖ¦IåmFFÆÆÆÆ&  m&ª\Ÿ¤ò¶S�Û©§ Dm§#œ¡r×L�9*§sU~þÀBÀ"ÀbÐ–¨ÆeÈ™€D@"Èn²V ~·Ê/º°
+p`5à~ÀDsÑTyîZðB\¹ë®Gzè©<ÿa„Q×&„›[Då?
+x°
°CØ¡òKŸììV�«ÏÝ«òËö©¼ã~Ty€lò$à ª?„ð)ä?�EÈnÀ3*ïôàyÀaÀt¾ÓQ„Çè^çÀwBå—Ÿ¼¨ò.§¾x]}E5Ð[Þõ5•w}]åÝÞ¼	xð6hàíöÂwï!~ð>õuûð!è>AüS„IWˆ¡Ûg€Ïÿá—¿Bø5àÄ¿Eø¢éö=ú†~výñ?!~áÏ€_g‘nÒx×Q'_·Ñï60é('v·qHŽf¡Û„‘ž„p2Â)`ƒ(ºME|`:ÒW·!ªn3Á70yssŸ‡p>``!`h‹K_Šro·eˆßÚr„++5~Å=LÕ÷"\¸°p?`
àÀƒ€µLçë®`J¯ÀT_�{Å¤`Z¯¼ƒ_¹QãWnll<Ø
+xð³{å6„Û0eWî@ø8`'`¿öôÊ'ÅŠ¼rÂÝ€=€½€}€ý€Å+±*¯:ˆÑ<¥ñß?­ñ«ž<xéçÅ©!}á1ÀˆGxBãÎ“ïþàeºùÇW5N_ÓŒk1¿ˆþé
�·|Sã×!‹¾­ñ?û9}WãE§5ÞãÞãÞãC>|øð †÷øÁ€/5îøJƒA|«ñžß¡yXò=Â°Ö¢øGäÿ8øYãÅ¿Î"Ž¼’&ÊÉhÊ]cŽŒŒ§¼då½'&¦ *5.†�ù»a:å7ÌÀn5¬˜çf!ÄÌ1Áß0iÌë
sb®o˜‹zpÃ<„˜w‚¹&˜k‚9&˜_= ˜k²€ò>Á³ábÊû.¥œÞEù€”—Ý-ÚBˆY)»!f¢lh÷!Ž™)[�ð9¡�¢MÄ`fÊDZÌÖ:„ë˜¡¾n¤<}Â-€G[)¿ùQÊÕÇnCz;ÂG¸ð``7`èØíoÞ‹ø>À~ÀÀ“ DxáS€§†rç³”ßò<à0àà(ààÀqÀ	ÀIü-/"<x	ð2àÀ«€×¯Þ¼	xð6àÀ»Ôx–êüÖÓ”ßú>å·}@ùí˜ºÛ1u·cênû}ùð)úòàsjt×¹÷KÊ½_	‘Ð5ò.à˜è_#Dwš÷~ƒ8š!h– yï·ÑE‚¡ÅûB�`C"A—	ºO0‚®t� kÝ&è69M�6*òåC~¤Üwð3úíûáY@“Î+Ç°þ*±¶*Ç">00¯ÄlVND|’Î3&ë<k*¼Üé:¯ž�p¦Îkf#œ@Y‚²5sÂzÕÌÓ¹:qÔS³å"«f‘È Ýš%—–!~BâšåW ½!Ú­¹!Ú&÷¢ŽUºÑÓÁ‡­F]v?`¶Fçµê¼n�ÎCllÒyßÍ:vCôf«ÎÃ¨‰nCñ:�bË3Ç¨ž@z·ÎG �·GÇ–ˆô>�çíGüàIÀA��|
+ð4òž<xppppp
+ð2àUÀë€7oÞ¼xðà#À'€Ï_¾|øðà'ÀÏ€³€QŒ7Ž†]Ëø?Æ!�pýùÇD„“°•Cb¹“‘700�ñË¦ƒ> ¶ï™Œw›…8*Š—Eúç¤¡�ÿœËø?1¾\¡Dóÿê-FX<Ÿñÿ×BÔ·°°°°°p7àÀ½Œ{Wî¬ œ÷~„k�÷`-`=ãÿÞ€ð!ÀÃ€�€MèÃfÆÿ³ñGnEø(à1À6ÀvÀÐG¸°°é½÷1N÷3~ç“Œ·<ˆô!ÀS€§o"Ïô¬@ðñšÈs"ö¼@‡W�€ë(àâ/ <88ÉZá@÷bopœ ^L¢§ï>|ø€SÁ)gYN>FúÀ§€ÏÐ¥ÏÅt�þ%â_¾eÆqïœÀù�“pHœÂ�©ÜiLã8*NGz`&òf!œ
˜Ë9›‡p>```17¡ÌbÀBQn)hËw–VVF@Ÿ,êM[�ôÀ6ÀÀãâ³‰'»»{ûû¸áw·£‰'‘:È�?ÒV.~ç!$æp#‡¿Ý˜¤Rc¦ŠaþòÀÏ8¾¦µJ7æª*gM¨.`4``¬£U†±DU�»ÔLc8ÈxG«,Gæ:5sƒš)¼Û)`œ
+˜æ0žÒÜÆ!Í�Î#ŽTÆ#(»C¥™»ÔÌ,s¯šyH5f9<Æîi•mteœ-@É…€E€Å€%€¥€e€»¼å
+„+wîÅ!}Âû«\½áÀ€këëÿâäß<mjÊgX¶Ùä!ÐÃAÁf“�àÚäàwnlA|žn¼óò‚šÃ�!½
°ÝaôR�“šÞªEæi’¹Ÿdî"™'Hæs$óu’y„d.#™‰±•ÐV¹Ækšš¹›d~MŒM„okªñ.àBÚ*3è0“|c)Éç‹ÉNÐíh·@8ÐÃXLöŠØ>�ö;Œz«–™3©1šðùä�&~>y=|F¤pØ˜O6e¾°ÅóÉ³"c¬H
+ßåyr–Ãx‘�òc�^`L¥Ìh¢­Œ	€KU~çQ°œpKikã.ª¶jc¼ µ56aŸÆï|™§­Îƒ‰Dìm‡±lWÂJ¢ïÞœÀi¿‡|€È‡€�–>|
+øð¹ÃØD[µ3¾ÕÎ‡\Î‡\Î7^tœoœÌ|JÏÇÐá-#EÌHÚ,¶íÅb”‹Å(‹Q.Æ(�Ï©n|@/0>\§¦FIš1]ooÌÔÛó,LzŒJÌIÖžõ Á³³VrQGÚ:�õ€
F«ßÁÔ!o#`“aLÖÆT½ƒqCc!‚U€â4cdw#t³alÖ[�èªñ|�;q*$[ŒVÛ@y\O3žÐpùO§…*Ö?.ûSAÖ4„šfG‰“ˆ©"[—i†ŠˆCK©Ã�u+D'fDqŠ�â²ZÐU‹M@ ÝŠgˆÌÌsAÃŠC4–•Ò˜f•=Ó—Û$]³Šè@ŠGD<ÿ5¢xþ‡¼±ŠcM‘4óŸí':KìR¶ˆd'ðÎm”¦YHGÊRsx<ÅAœN%GðçÄ»¥êžNü#z1;DºU"Ý
+57Uô±DÒT�;ÒØä‘Å
+«‰	‘“gqÒ”Nj2#!¡ë´…CÅ€5§“4‘–ÃÿßRD¡Ôº)©©è§Îf¤/'_Õ©ã¿*¬fk­ìQ~*r�´4;KÄ‰Þ2–[�Hn%qÔ2a6’T!eQ·Ì­­¥uÎRµçÞÔÓÄ?š¢f¤�ˆ´1[ÃWì¢,.
‡­ÿ‰±õÓ�%ÑÍˆÔ|]9÷¯mêÊ§p«Nü)ù	&L§ç¡¦ó¨=
‰æM/lÃíVR{z>ŠÑB B1D•Ê�Á/šKªAŽÚ¬%E¨
+=§÷j*-Mwœ—ç!ÔãaøS4Íú#úq™›“ß>¦Z“Oôß¥êIüOO�_û£Í÷Ví@/’
«ç!"zN!gÑµ¤Uær�·a¶à“¥3(y"’—¨U¶¡4íÌ¹&(uY¢¬;Qkibâ\£ÿ¿ÞäÅ	«<É²Œš6«Ë–™Ž£¸ñ$eHsbST‡Ú^bÕì©jîc²_q%¸$Ù&"Å¸ü.Adö¦D/ Ž‹.…±u¹Ä|Ê5+çOï(WNlˆºUHÌ¦Ú‘Æ0V�Ð´‡�2[14f“5O,¦Æby±˜#;/Ó/b©«Ð“8YÍîâJ³[vl·:wJ~s{— UÊÝ,‹tL2ww=�ÙÜÖ¶•je¥±Ôõâ/y/Làº¬Yƒ‹ØóÑFÌ�NÛÄ¶³#bÞ1¤ÿVÅòlb±†CdMP©Ôår:“ô#ÙðvêÜùÿ¿¯Hº¤ÎË›!¥“ÝÔ¯·÷_ÝR#Õ_­¤6ßUdtMT™˜6%mXÝD¤Û¹f–t»B kKQ¹Bã»fâÞIâUhDxqN¹šiÊ¶¬)W
+ý1+¼Rd^•ˆ’¶H[K­¥…À\Ùñ-c¶ÀÙ¼-0×üoZ„ÿ¶ £ˆYJ}Îfoî;	2!T(0ý/î÷‰Y,!K6ó‡?Öœä$;W!ô@ÅßÕè©C8ªfþ'7ÆüÄN		Éq˜«±¤VW<âOqè˜më¿Të—b}ìÿÉAFFt½»'¾×¤ú|çFÎ5.ÿ‡‹v�éª	³7)Íy'çnQÉÛ¼Þ',
iG•ÿ÷¶4qÈÿÃuwŽ³¬ê-˜y@hÖ•¶A�ûÎ)²Dòò ®ºPW¡eÉŠš´ÃJs˜X­ž˜Óó‹ù1©úJ1øvö21§�ð_®¤	‹R¹èWSµA€oX�¤ÔsÜâüT3ðÇÿÁe½ÍôªxUÜå•ŠƒÅe	fèc’DÙ¹úlºŽÄ„!ú5)W'æŠµVío RNë îëÆ]\ÚŒëOþWôäW
+“>Dé[Ú}ÑÔ?…\‹ù6�r»®Sög¢EDIë�
­'QÒ‹q˜)!Jf/¢d\OWo¢ðR¢de(ºvÃ�}.Éí«*ùýT¥ ¿ª´ë«)-å¢¿¨J›2U9o Q..W•¶ƒTåü›ˆÒáf¢\xQ~w«ªäÜ¦)¹U•¼Û5¥õ`¢´¿MUZÜ®*­î Ê^U)¢èªï†Ê«*TåŠJUùsQnö«JçjM)ª*ÞUP•r¿¦tù›¦üq˜¦ü)¨*CjUep�¦ô
©Jïz¢ÜôwUéU£)	«Êå¢ÜU•š2¨�(Ã5¥g­¦ÜQ­*Å#ˆr{HSJÿ¦*Ý‡©Ê5uªÒg¤ª\Û¨*×ý]S®ÿ‡¦tû'Qn®*=þ¥)ÿMßTå¶;Uå²&B”¿F5åÆ
+Ø´¨J×QØ~?èê©JÙDú�"ªrÕh ?ŒêW©)EcéÔi1ZÐÇ“>HÍ$ñJMYI&?M&‹³Ñ¦ ñ™
+¼™L^G¦ïïô”ed&â�‘YDhÄlT8|Z‹Ìj˜†…d>.Ñ"v˜…`˜L�>›,FÁGÉàCd)èÿ\FÎWž!w�p�,a
+Y�Zf‘• ì&w£‚{ˆr/O’Ub}*÷�iÄj ‰ä~�·‘5¨áYòâÈƒÀ��µhjYG„/¾ÞÎåaÙ¡�ÈŸG6¡Ž;7£À¿· 6�<‚èFtJSþµl�Š*J&Ze¶ƒ^¿Qìç�ƒsÙ)‡øÊN"»D×ÒÒîÓÈÝ¨}>Ù<—ìç]dŸ(æríGG‡e5y’x”Ñä ÊN%‡ÌÆÄÿC+KK{å“gˆ <ü yxyÞÇa$sP.|±õä(Ø—�¹ D��ð8y|ÇÑ•hìo'Í†_DÎr
+�E^B�¥�±ªÌ$/ƒ¾‰¼¼•¼
+¼ƒ¼¼–¼|7yœsÈ›ˆï%o�¿îm�w@¸Ÿ¼¼‡¼|9mvm;xB[ÐÈtò¾\õHü!Èÿhù™cÉ'ˆ�#Ÿš…>C
�Ï�w‘/�1ž|IÄAù+Äg�¯A_N¾>@¾5|gJë{äÿç"ÔáGà}ä'"ÔäŒÔÈSÈl"?Cµ¿€¼Ÿœ5Ë~úÒ¤ÊsÁ(•`RG«ç+Á1ª�™2V
+2§ƒŒGô	2A•Ó='ìÆ‰ªÐ‚I ¯"“UqI:Eíd�>‡‰º‚9B6%™ŠNn8EèTTs‚LEÑãdðI2e_$3Äõ:Ñfªâÿ¯uh¯‘™È…ÌF™£~N2æ‚ú)™ê[d>â‘À“… ¼M¡ä{d1(’% œÖ”÷AW•wÁ£)ï�¥Èý€,þ„ÜüY.j¿áâZ¶È
+°ýHVMîÃOäàŸÉ½Èýt3°
+ø;règ@×”oAÑ ùÕ*1ÎS ´‚|£P�¨îWÛ)Ô5 ·S¦Áêb„sUú
+ÎVž©®ž¥®ž£®ßdƒºR¥�°B}ø.u#ðruð2u3X.TîS•-ªÓø�‚šA¨÷§ÑAY§z¶‚í!õQÌÃii�!ñ˜ºML–²]Ì¡ºøõqàGÕ�æä>aÎå.Ð6«»�×«{€7ª{�7¨û€7©ûÁt[û“ªÊ!·¨OoUŸó¶K¥ÏÍPŸ~\}x§ú<ðõ0º|‰²WU:‚ï�ª�ðžT�T�P;£#y…Ò�«bË=!uå$JU_>®žßaõ%Ä�©/ŸP_‘œ¯ª‚ï5¡?êëà9¢¾ü¼ú&(/¨äÌ~ f¼…ÙyE}Yï¨ï¿§¾Êkê{Ào«§Ay]}øMõ-à—Á©)ï‚GEï ~<šòx4å-õTþ¾ú!& ‹ò‰Ê>:©~¬2W´OTqò)J~¬~&Hºö¹˜öø»’/Õ/ÕÁ_�)�h_£àíU\�}+×¾�Cû^+ýÔ2Iû\KµŸŸª�AûÓµŸ‘ÛEùô•ÚYà…ZÎ»ËµQ8ÿPôf4õ3µ18Å�ÖÆ"çAmð}ÚxàUÚMZ¾‰<†6	\cµÉšìÐ0,Ó¦jÂzOÓ¤VLi®6xŽ6xµ6x‘6å~Rç >[›«‰Ì3Ìénm�è
+!E½Nm‘™µY÷kKÐ»ñÚR”oÒ–™}¹Kô…h£A›¡-×ÄØWhç+_©+Á{V½[ÜQ(B3gi÷VM»UÝ«­Õc`°]Új³�û‘˜¢­1 ø�êƒà]¬­^¢­“c[ú·êPÖh!þ½ú0â+0(M9£nµº´M Ý¥m6%³ÕŽÓ¶€ô€öð|m%(¿¨[51 þƒú¨ÃzÄ¿QÏ<Ô
3¡n3G·•�Ò¶#ãmâµÇÅe‹²ñŸÕ`� =aŠm—ìån�&k{ÌyZ¡] |­î•%Î@¦im…nïÕZìC�iûµ"ebîFø$àí ðfíð£ÚS¨n½ö4òw"ý`hš²A{´'�~°Q{©ˆlÕŽoÒŽ‚¶
±cÅ^ìÑŽ?¬�~L;‰œÇËE¯Æ“/´K_DÕ/h§Ðè!`MyJ{	øEíePž×^~XíUà7µ×€ßÖ^> ½�Š>×ÞþH{”—´·�ßÐÞåí]ÄŸÓÞ~¥`ÓµÓˆ¿Ž:aýµ÷R{ø˜öø?Õ>ýCí#à£ÚÇÀ¯hŸ ÷0èªò�ö)ð)ô[ûø„ö9J}¦}ü1JÁ¦ Œ‚ö%r_Ó¾~œØ½@��EUžÖ¾ý}´®)ÇÞ£ý�W)_k™ßhâ`ñ­©Hß™Á÷¦‚þ ³~”ø'‰Ï
P~Fãßj¿¯�•ô&?®VFQ¢|£�¦‚gâßic)1þ ,¤Øù‰q5¹q	Í˜'\VºVx*ômá�Ñ§…3B7
+�‹ŽCáÎÊKˆ¯¢G…g@ÆÞ¿”Ž—ô	À�à^À\ÐÝÂÅ {€—ÑËaº d"Ú\C'¡ÍkÈdº�ªS@XO§¢Ô4
+/’×’7Ò4Ñ…Í²èÙø6ÙÔvÙ©Çd§•Ín¢Óeƒ¢k�PÑ©T4þ¸l|+�!>Cî¦d&U•]t–H êlª)ûèlÐöÓÖ ½DÝs�x–ÎEoŽÒyÀ'é|0=Eç?G¡Áó4]„ÜébÄŸ´¹Ðºôct)ð	ºøðc¦é]ˆ§Ë�OÑ6+¨ÑSy•f®¤Â™ºÄwé=ât1Â]¡«¨˜«û$^
Ê›ô~à×éàÓTÞ¢¿G×Réw­£â®e½)¿
Èyƒ>éöR>¤ôaP7RÈHÔ¶Yâ-ÀWBRèÇõÊÇTÛŠŸÒG�?£�B·‰¼R²�~IÛìÀÀ¾¢;0Œ¯éËj‘2^’½ÝI¥ú=�"ßÒ‘5Y»�ú‘î–{¥ï>K÷ÿL÷O×_ïXð@ê}xª~�)A;„Ô4ý)¤¦ õ&8' |ZŠêä5éÏ�ÖŸþ…>/T™£A™Ià}	e&ëbávÑBbÜ¨ÌÒé1cŽþ‚TúãˆÏÖOÈøIªŸ²PÇtþÁè¯,ÑÕS(·LEáÇëáuüEY¡g½âÝúËÀ÷ê¯H)ŠU´Rxµþš¤¼.;ù(÷éoJÊ[BÓõ·eüÄWéïß£¿gÎÛi™ñ>H÷ë—´7*ku]øzëôdß>lÊG,—î'èm¹²YW.N3)[uò)•ÛÂg ß¤lÓ?ÇÐžÔ¿j«	¼Kÿ
+_SHI2~‹ÆžÖ¿3_ÍÕ¿~\ÿA�Ò´MîŸÀöŒ~FÐÒµŸMÚ/àÛ®Ÿ•EY“.i£tsÏ5ƒ/Áñ„>F—ƒû­ïÔÇêšr@gr�GbHXrúÄ÷èu¹uOi·>x¯þÊíÐ?>¨O¿¡ûPo%¦ó-](ÄëúTàõi(~TŸŽÇô | Ï>¡Ï~CŸ
üŠ>¹ÏësWŸüš>øm”Â¦¢/@ü´¾ø}ð{úbàS(¥)‡Q?L¶¾”÷õ¥BõeÀ¯êw¿¬/>©¯Ê¦¯>®_†ëný3]½?ÑïñS}•ŽeôWåK]»é¯õÕÀßè÷¥¯Ñ‰1XùN§‰+ó]¬Ì�×êÐbÜAÖë?êl—`ÊC?ŒâcÙFàélð¶=nb[ŸÅ‘<[AùE”9ì1IÙ†ø$¶x*Û<“=®‹o;ŸÆžžÀv¡Ô}3pVß-Kí}Û<…íÏöÏe€ç±­àüYñÅì ðlvx"ê�W§?…ø(ö4ð"öðdö,ð8örG³®�×óú
+¦Fr;Œ¦ïbGÀ°œu»ãGAº—i
{ø~v¬÷°ãÀ÷±À«ÙIàUì÷í�
+eSÅÒYÏÌ¥s¥ðkgi/‚ãv
+x{	µ<Æ^ÞÆ^e{øaö(;ØëˆoES6²7”½	¼•½…ÜíìmLF•²—AY0§~e?ÓÞEÆ“ì=)¨ÓÂš±?"k¨rˆµ}_èûå³ï„‹Á>åö(O³�ui7ïÃjy†}"T•}
+Ògºò¹Ð+ö_êÐ¨ûZ—Vý$Ž±MX–¯²oQËsì;³–ï…Ò²Ä¢`?š¤Ÿ„Ž2aŸŽ²3æbüma?£àSl³ØdØ/ºÓY±DX“åF1¬ ö%FPÞ`Úh&‹Š}¨æY\�aáßÈXöËã:-Çõ‰×»l“÷Ghê=&FòÏàXÉþ¾/ûó1›€6>cÁùGEtêCðÀec“Ì.ˆþ|ÀDG>eWµ7‚Ê—Œš:™‰¥ñò¿bb¢¿fÅFþ=#SPÁwì$ÆpÇT$~bSÑî6
ñŸÙtÄGñ¨r4ŸJŸ	ÊY6ñ_Ø,FŒze‡òÎaÆß•É\…§ðµÂôÌàd.
+NçóÀQqe>ë`D•¥œ,`í”e|!ko4(+¸Ô½•Üìê"0WîåXŒÊjñÂº�r?7ÅÙ8¿úùRÆTO†¶Œ)z'è½›]Î˜æÉÔV0…b¶W2·V}7c„bE=ÍÁ„ÂåK¬)•Þƒ£à6ŠÕ¡À·ÙV¡ÌhuœÚæ>TNŸÓÉjÆZÒÃ:¹Ÿ±tzT'kË¡XI0Fé	�<È˜“¾¨“µŒékcc-è+:YÏÐ!¬‰
ŒåÑ7tòc™ÂÛz˜1ƒbld¬…òob,—BñílfÌE¿WÉÆzñcÙôc�lehðS�<Ê˜‡B/c,‹BË¶1–F¿ÖÉvÆZÓou²ƒ1N¡Î�CôG�ìd¬
=£“'+ ¿èdc´‰‘ÝŒåÓ*™¤ê{ ‚UéÖ&«v7ž¢n:E…4ô©êU™¯û˜›/Q÷K^!¥êæv,UŸÄ8ª!ÅócR<„r‹Ô§˜›-VïQõ�©‡®RŸMK³yž‘5=Ë<Ú½˜÷Øø×Æ£ÛUe�ª>ÇÂ°¼p¢Wöcá«úa´ø¬º�ºµgbý=‚Ê/ÂJ\/a·W•ÏTz•c9A~¡¾ Xf3‚Óç~MùJ‹µö£Ön§îÎ�NŸÐÝYéq–­ÿ¬�`ö‹v’¹3'Ð‡uwú8ºQwçÍ /BÃ.ƒÅð8šè	–ÍÏj[twÁlºGwçÏ¤{uwÎTzPw·šCO±lc}RwŸ·€>ª»[Ï¥twÛùô%ôí'm¿în3�¾ŒÎ¯Óaë<ôŒvHw»'ÑW˜Û9šn×Ý-¦A=®1ôÝ�=…>«»3ÆS»Ï¯BIóTlEî–³è6Ýí™L7éî´±ð©cãºŸ*k©–¨ßëèkÂåÊÃq¦'¨²—*©òJœõu³ò7„"-`«>ÔçÉU}AßDUm•™qž§Çº÷ò`ûÞÆ|-Ðßû|áØ¹ËãÑuú®XOKyO4w‹e�ëp#tý}Ôð�þtk£ngÛ¤„Ö‰WøX<úœ®`«Ànð-ìœîø3g*ðú'L‘6R(âgLá—)ŸÃ–�˜�y!ÊRœ.˜²–Å†õ¥èÒƒŒ|%º¼Ž‘¯E—Ç‰%®<çzWwk»Ø7èívZwÓÝlS°L^g
+döcßŠâctQ\Å¿Õ¬‹�ü;aQàÌ/V>\òo™ò#SÆñ˜Bÿ€AŒç“x¬Ä4®Ìâž™ÛXÈbŠ[Á”ÍËÒ~fŠ£u6›ÇÏŠyuk¿0�>—7q¦!1ŠgÓ9|4gzžGÃ´±–ä	FÆñlÇ>ž£¦=ŒŒâm6·[Ç=|>‡áw¡­%\YÎÿ«”îád"WˆøÁ•"JÚIWØ 
+¹”dPE­"C¨¢=GH'ªÐc„LQ)ÑqÍ¤
+{ƒ�XàüBf#tœ%d9B£	vŒckËuŒUÉjPœUR@×t•¬A2mžJÎ§JúÝ*Y�dÆj•lF˜ù ì,Â¬m*¹‡PÅ½[%O#íÙ§’Ã³ŸRIGªäœRIª´øP%@Í]«©_ Ìÿ(oŸFÚR¥å—É¥JÁùUZá`;–R¥5Î��¢Þ68g^N•¶8NNù¼�”<r!Nv3�n‡³Û,„çã`Ôš*à(Ó†*ígèÚC ^¸
¨Ã#@¿ƒ^H•‹àgŸDòbxÑ/"¼ä�DW.]¯“K¨Ò.ì' _Çõbªt‚¿ø’�?ÒÉ$�*]°w\F•Ë—0m’]×]±¨ÛJFºÂåÃ”u£ÊUù=U~¿“‰ïÝøœécUþô»ÿ‘*|‘«¿ºæF®¢Êµ?0²Í\7–“k¨òç‰œÌB�¢©œÌFØc&'kÁÝs±ø!UŠïâd>£¤änN"Ýk•ø!U®_#~LEIoqP#šF®‡+ ¢:wÜ§ð¥¦ÝõÂ°²<vÖ�…·�œÃáJEÖ¥"Ë…¬	¤ðµ&¤Žv^•�7yZÍ�ü1œ—îrÇÝ¬ã!½ænvÇRváû¼f)»c9k_U³œÝ±‚
žFwÃ4J|+ŠTkšáüýá.CV°ù—¸áÙ]<d›ï!Šr="M�N­ž zœŠr¤êh¹8ËP”£ÕgÈ‘þðŽP|(eÎÌ­äp—›/9ÑÅOÚ�®Õü¤°)£–Šà¢Z]çÕ2?9RKüdðî'AÒk
+'ãjÕöÊI4;º’f
UÃO*è±¶²ðhC2&˜Õ A«ûUÿ¬›Õ
>„Aµ¦¥×yÄ¬>(øØ&�R@�!Ú„ÞYnE9Üåh—Û”K*õKº\ZKÚ8ô®TsÏ>{ÖAZao˜GÁàLçl?O˜ÉvÌ�Ø€gs…f(s¸¢_¤Ìk]©ÑT§k¶
+ùž!7)5gÈ³D8‹.U†ì'ž|ECæñêùÜ·€‹øB^½ˆûó!‡ÕêçXõÞ^Ùp‰GŠy?™ï�xÇIÒ¡æ$AÒ-Rû�ÚG†œ$j“¥Yß�ƒ‘o¼™ôÚL”Ž/²ê¥¼‰ÒáHáƒó/Ã¾øˆY½(x¤½‚üqYRÇ7™ï(ü8éÿ8Q/ãý—qÕ7Ë¹‹·'Î÷d+Êài¼ã;„ße+n˜Æ‰6d9·ù–óê|¸xÿ`F‡äW¯äC¦“þ‹ˆ
+=hÄéê5õ­r7Ï�d¦îáéèÓà{y8ÂYb”/�ÁÇIûªŽRó‚ÿµ¬^Å‡ü(«C²?¬*jýA­µ. ½e˜
+ñ_r¸ËaºŸ4¥?âQ1ÐÞË|K¢ëÈpì'ÂjoïB”Úå·‰òµ*RXgCN‘!ÛÉJPêE,¡Ü!«H¯\Á²‹4©HÕ‹&QäŽ&õHM“èß9ò¯EþIâ¶Úºµ÷�ïˆ»=†õü(9<¸ó�I¼ãrCgÕŒ®Ñ%ZÍw¬¨7l·rZ¤"ªæt¹w9‚äÊÈ‰;N“#5§ÅêŠÚl«[ƒÝ™UÈ_%ò‡cõ¹Vbõ6‘ã…ãN 89d)Ì™ˆÎì"ƒ”š]ÄÖ˜qRcÈñöJ%=2ºRÏÊÁš«Ð+hÛq'Pæè‘£È÷-å]uê~DwÐÑv3‡ûW4"*9ÖL%Çš©d—èû{$‹ÔH{$c$‹‘4Úù…ØÿaçO„Ø'
+±ÿÓÎß)ÊÿKäÿ	ó@êƒ÷Àí!:ï[Í¾Ÿ)ô­áwìDí;‰0ƒw”ì¿›AD•ÿUê‡»RPãD¢
êŸ¬zÒ0ÎÉj¯4¥!KrÈ
+^}‚4€éÎs™ÞI`­
+¦&bwõ¬èê(y§«µ˜Ü³rrÏ¢SgÉ+È�äèŠš¢+£e.TûgQhL¬ŽOEr,±åñ)
+*JŒ#Bu³ ºÖô>§Bòà/y/Žg£�òÏK«_e½éuPµOH­ê¨UÕÄÔŒcVÆ$rî"øKï!‡ÌEp(a<_÷ÅÁ!VT3™£Ñ
+Õl î”Ü@?DßðŒÂ"x¦HIä€çKißKúßK¤�9µ™~ôï=d«Ù�­	ý¸/Þ�-±~l%`E5ÓbÒ^/’Óã3¶^ÎØz}=¹c2GÌØ!ÿ²L¦lZØ¡Ã½Ñ8
+ÏŒÕõ¼HÎŠ×õ¼¬ëyÔõ<¹c²EÔµEÔ5›àôíú›`*¨ÞÆ´–Üu¾§Æ1F…­²œIc9FÝ4–“Lc9FÆrð"2¤Uõƒ|Èò;�53½–yÆL>rôX­Ðû-":šœÂéª±›Ìˆ€£ß(¹ŽKZ¯u<¶úÇ¨Ã=!_´…Ý=*DG¿k²ÿÄJÊE2Ë¯
Î•
ž]:E.9Q}ŠÌ:yô˜ïqhuðälòœ^?±øçª;]š¬'+lMÌØ´%óvÈÎâžOTTÜ6^ñœ„Š�#½1ˆ–Ü~"Û;b?8²¢×;’u!Û|:£¤–Ì“ÔEr] )Y+)‹%%]Rž&ö–²„PÌx† Ênö;*÷Ç¥DåN×íÂRk•za«d7)MìŒ@DZÓ¬+ÿ?ÖÞ>ª*Yî»�{og!		(ŠD
™‹0Žëè×iIÞ8qTfæëžÛÝéöFCÂ/£ó½ï?!6EeQödQ�Å]ÀIwKâŠ ŠŠ¨ì›BþUuî½Ý¢3ï}OéôYêÔ©sN�:Uu–IÚ’±º	3wU^`øÜ�âË…v€ñÐÀ„êbñó-W!Þ¶U¥©àµŽŽ8Ôý¬ BÏ=ëA‘§
”+¬Kê€Yóêa­Œ®P[ó{à¸ ÁµmqèõL`Þâ!9÷z<P çv$"áÐ ›�Ë«ò €ÿq¨Æ÷¸,DŸ±QB_<$$#�yD£L4bE”µUJî‚ç;:ú]Ï	4¾ß–¡±
+|\Mæ®KMmñÂüA\Œ®T› jãó=¯
+µaX\Œcv˜3Ð( K^PÅ¦6ÿBÜ“ŽôÀöD¨§‰[@£æ«!T>KÈÊñf€ö4k…�ZØ°\ë –†³$œ]Øpm¸›ùš�w!Ì¶—P‹Î”¬—„ÀSn‘¬§„œóx‰y;�ÖÈÌüs„Ò9  ÎLø×+º™™cDšž]ÃÌƒ|¶þ·d$Æ…Íé©¶ÎçÄOòx[q»“r
+S@Ðwïƒ’š6ÒY( HŸ±Ðz9ÊX(—…dÒDÍC"¦"_†•¸­øÅm¥ò!Àˆ½mœfn‡³0·–÷jNªYñ�
+pZíð)áSÂgRÂg1|‹‚ÃêD6j¼[Õ�b‹::ÎUq¯DnNVÝªö_#TÑUjéµ) ê–‚è£Žs‘ht0ÞŽÕnGÙ«L4ˆ¾yÌÓpQXC˜Q*‡iLƒ�ŒÑvÆÃ�3šºÌÙÁŒ…rø€°—š¡b‡{
TºaÍi£úV«BðÉ.0Nå2ò`Cv~ãLÍ`x2�5@&š‡ó[ÁüF0ÈÀd€÷¦ê$)-RªFSX=”Y¶EÌ„ißLRo0
+¨‚�æ
+5õwT�tóGÁ÷¢ê�äXy+˜€§Qè¹·£
+¶�vKæÂôÚp5þ¨e…
+Ór.CÖ�ÍYâª¼à£Y"È‹Y¢�+Âd®mËÁfÊ6pHÎ�ut&qkˆú«Pàù{Ä@=o
•x7OP““a`/ãPÑ¯¤i¨žñ˜9U~%Å¨î\ª;†U›¨:8WŒ™WR†¹F¥Š®Œù®ŠƒkTª:Ã­ºì�ÔL,Y�6°Lai�*Bêãvêã�ú¸(–MmØì$laqÙ³¢èL¹XbÉªòØÍBÙZÕÓeú:2‚fÓÈÁZíï²d>+í%”­W;õMÙ	�çpž¼È†¬¹´^õÀ5?µe…Ø2ÈžGÙ½`…úô8Ah�ý…Ï§û´k¥óI›¹ $þû`éO�Yà¢Ù‰û
¨Ýþ öY( ½s)-œ´Ò´lÜ†ÝK°q„Å%mQÊ²ËâÅç,ÄKRR¶QÊR"Ô‹)q{^–ô!-OIyœRV�Â
+¾ÿ%Õl}/©B.HÖçÀà˜«È
+X™
+5_p¡æê$A=/@‚Ô:ê~�È¹”B˜Š8¯`%‰ñE$ë‡9M@F�¯X°Q„¯x°Mð¯Wýç�‘ý²Zzž3‚«	Åÿƒ3m²Vúµ™OÑmýázœªO0³n€÷Æh(nBJùÔ?JôK°rJ‚o”È×i×"^-Â–³`Úÿv#þEC8˜°«i9Ÿ.Øt°~í
_Ûsn³	QR	a$ÊX§|Åq.p‚X*A.¦­
+Z•«;:�Hê“NàK‰^ ñEb±ß!…ÝÚÌõB^?èßõB°‘M"&¬ Ž_/T<ú¨Xö¤ì	˜ˆb½ø]6SÆ¹µF¡û�	+¨KØï]
jøÈ®¡s¯Rº�œ'Û#6	;jŒ.ãÝ`°bùDAˆ2ÑV“ÙaÅï….õ
+Ñf©*É$y) ð>�F¢žR€,W!„vÄ¡9WxÈå’,=ò_¶`¡„y]Âyó×Ò|É.žäºÿÖ‘Z}¥aÃ°WrpÂ@w,ÿÞ-ùÐ•þ%Pn	hÊ�W$”mPÅÛAOŒ´Ò:²žù¿�/£�{hØW¨æ÷
+×B¿W æû^¢Uòæä%õœ)¸hšýÇ6ôoèß�ù^Q”¤zßpjOÀ¤|ÉµÎÚq¾¿L-êÉ%bêì´ò7’Æ~…
›Ô0õU�E7ƒ¶jnR}[`Md|$@ýc“š ±òm‚ú6©ÀóÑ�r<ÿ�ÇxZÅ‚[Ñ™ÆH‹yU‰ÄÏ@FÎEÈe[UJ˜Ž	Y˜ðªŠÃbÌ€„‹&ä�šÏUk#èë‚Ghºr—ídè®\�‡Ð3
gS¿!v´*Å®ž´%úš
+ðy)nòëê´Æ¹QúVq©�æ‚¼ Ó o6
+
+÷Á6üz'J°A$Á¢oª�•½¥¢r@ÙÛªˆß\+á*HÙ;ª+ÛFkÛ+Ä?¹Ÿ[[£ —�ƒ0Œé.ÆÝ¨GÃdÊgh¥ä@ÓŠÀzñoWãf‹P¶]ã8eÚs²q¶«	s¥¢2[-ØßÑá?*”°ÂM´>ž¦èéh½¶
+e­±™ô™Wró4ôhKÕàw“�j9z’f… ð¦	þÅÒE�5
E¹Ñ"w¨]Ú®­�]ä¡3!”%ôÃææP¿õ6K�wUYïþDa¿QY$`ù8­îiuÿ§J‹E2�/[˜w�„#4^nC>EñŒfC�u¶­±Îé¬ÊÎµ3æuÎ˜og,èœ±ÐÎXÔ9c±�±¤sÆR;cYZF«�©ÆJ5ÿ·Ð'õ¼
õBçâÏ«¾wd¡0ÿüt¸U©p9?—‰«íŒS3l?y`¬Xl�Ù²F%K«=aE	Û¹452CøÊ÷ä?Ä™€‰23©¢‚(V�µˆ%¤¢­©ö·˜ó¡ìÁã?ªØYÐ~\NÜ* {÷ï   
ÂÎW*‚ ˆqyHÂ0æì´ÇŒu¼%`Ú;¬;è*{Oå úŽ„Ž´�’kHx•|1Fêãš�ë	‡Ð†&"Êœ¸Ç”‘yýmÑNH±ËÑ ™š/Sóåd+_£9ÐÝ:˜£fõv7Rwvó��	Ž×„� ÑÜ£
,�öÀ¡ØÚ 8¦N­ë“FH{‚4—Â%PÿíVø2Áß#�kàQÉZ&ädâhÚÀïÃ¸�í=Õ|Ž»Ðø¦‰½u3àjhæ\¡_‘�”ÀT!0Aô÷ð¿*ø^<€šnMƒG“!´bÈšŠvIÞ
+hç¥qß¥(`–2ó˜P¶S;USÕ¬&K$ã6f‡w°àvöS¾
+¿÷™BšÈ­sÐðâdr2@š!KÁW¼ìUP¦Æ	\Ð ~Š½í-Gh^+ðiXCÉêkKÙ(X|pC²ßÛHˆ›Û@sƒ	éß&Æ}ÛD¡l‡˜¿+zn�sè8Ú~€ýMAÔAÕ‚áµíÙ6Û|m·�Z``nÄ¢(ÞR$Î©3`[Â­·è4¡5Ü�kSóu\9 #gÚÜ˜Ø®æg§·`ò<'ù}–å<á$~Àa¡"L~ÈIž®.�Kë¢flU— .I•ðÒw9`ªù9vŽƒâj'ï#Ê³©àåz9y«ùÙnž]Ýà@Jà°àÏ,ÍôX‡H	±à¿ÕàBüŽ£qXH€�Çy?íÖŠ‘†Ï#XDböÚñ– {½­"9¤ö~I¿:\à£6èa=p4ë¸`€ïüÞ‚ÇÑ{³s�0,ÔR,ú‰
+\ˆ€í£»Ô„ïSU	ŠÓ>`�ÿ´•]”›‰üMØ]a–Íq‰ÍX	³7²ßüÝ¾nÀ6 InèŽD÷Æ&	ÊØV„ô„ïV¡än-0�«�BÿÞ„Îª¥"7 —“	·B?fãâ±[MOÕ|{T°me!/XßÑÒBêŠ¤MC4‰�VæÅÄ{¼`˜/ÈØH”bì·%Úé9H{§‹´m¤]FæqôW6£¿ú8ù«Íã¸0ÛœÉ²Ñ£a¯ý/¥¬ýÛÉD-€Ùó•`.V{a§ÈÏ
+C 
+ªÛ7÷ëdî"Èýsß…\AÿÔü™j
+ ˜ÉƒMi°yå`3w°él6	ø&÷æÿY—C}ÿ$½š»­ÎÈ»µuÔ©ŒÌ€Žíl~£š�ûÓ{US^5
£­ò«`úû>WÅ!j	j›Æ;*Šd¿Ì�}²ÐÔ…Ç7´ÁÂ!äóE‡õ$™sÉ$tXO’…ÖàdA³âÂ•@ÖË ÖÁjhìa÷
+°ÛTc»jìP�wUã˜düS5ZÕ{UãCÅEd
+˜Ñ/T#®	Õ8Ä€ ÐŒ÷Tc§j´©F»j¼¯¸j|¤«Æ'ª±K5>U�Ýª±G5>S�½ªñ¹j’}ªñ¥j|¥_«Æ~ÕøF5¨Æ·ªñ�j|¯¿jV�#ªqHQ�ãªqB5NªÆ)Õ8­ÞÛo(n¼%pl¼—·Žx~jh.‡Ã”ÞÎè<‚Öð{‚sfäCÁ94²O-Æ¬n�ö‘àDÙM¹™�;E,¦Z�cá=náCnö—PX³&cöa7»ÃÍþ
+²ukf7@¬Ä£ð�œ™r<·>E/fœËra�
+Ìeþ‹¸ŸôÁw‘œË wE—¬¸œõ0 ¤\¨ïkbTa˜··µ+m‚Y'¦„™ÏŒwk>ldÆiÅÚÈ‹™Ñ¦X‹Y`)ƒ·–²ÀZf|§XkY`3N*Öx‘ûëExž{ëyXÂŒ÷k	¬ÑZ
«03Ž*ÖK,°�qÅZÈ›™ÑÀ¬Í,°J	ÖJXÏŒÃŠµž–3c—b-g�uÌ8¨XëX`
3(ÖXÄŒ÷k,cÆÇŠµŒV1ãKÅZÅ+˜±[±V°À Y´¶°Àf´*ÖØÄŒ³Šµ‰^`ÆŠõ¼ÌŒãŠõ2¼ÂŒëìå1¢=G¾®x¢5»±x �aïõ2÷«æ7ªy@-í%á¶/ö«œ9ßR¿žÿ†e/õ‚bãióS{v+ê	nÅZ&ˆ’,É½`,·²Xô;•æ'ê�¿SäQ ¯‚»¸Tê—)¥@
ÈåçQÎª±f£Cå§QâÚ�í
+@$nöhHéÄt†xÌeˆïm†Èìm-B†x\tXüIÑ™+€Å³¬K mÚ¹mzÛô:¶é)ÊìÔ½ÅÐÂ¼ÅZoñßbÇÍBjO&Š·�rÌôfÜ+e&É¯¡£¨©­.žþwXÌ<¨F�áÂDX•`)ÍÎ§s:î^Va¼_¿ÒBiˆ{øga‹Ó`�ü<lq*ìÑŸ§�Ã§Æã™!Š0>ý¡‰qÚ…kO�GR÷šQf/A‡CbHQn�ŠJ–$ïåÇRÐC&€ÙÙfýÂj¿°æ¿„ï°Ðì¾Dh¸](z¬1ìÍ™ƒ+³7¤_„Åb!9zŒ\�ŸRÃ™9C€ÌPÆEM¨ìÁÂ|Lí—ËoN�‹ÆÓj¾×ãáÕ û’ž¡¤â°ZI—PÒt'	¡È+iÌPÑµÐ� þB?.2¨!
º ^¶D¯ÈÌÈmìèÐ2µŒ+¼zî½ôjxTo&õÎmÀ4¼Mí1ÐÞñÞn|$�¡Áij''�“p`•Š“âMCÒDþ©gEI‘•€;ßd1ß›Lhj7_g	ì‡‰h>ä¢½gßƒXï 7$�¡zX$À7Pôœ(ê²ríw*Øùì'°v¿‘”Úû�©—ÙÚài„^ÉÄ~å‚mU®ÐÔÜo¡Åš¦†
+}yˆËA}³ˆèk‰Ùqïp'ë{�ŽõÑé 9qQS[Ìÿ6‹ûÞf:ñÞüî4‹’&+"‚9·@q‡fNm{"ÆØí˜
+Œ+#³Å‡�ŠØÊ{7¬F
±‹PPÌ‹Ç¹Be¹û¡Ucx¬%]PÌvÅq[Pd÷¶–£ ˜C³½{ª(ØÆ
+ÁîÂý,$£óp;ÎüyntFç§W±À­â„]E·ÞÖj¬b!ähz§Up‘(IÞn£Ü‰;T³]nõ}Îk‡š“ƒcx�±Í>Ç(Þ.è=/À“‹žÅ€Œ%tjB‰½Œ¶D°z­ª?Ù¥ç–c+/"MK»¢iê�^·EËE5W÷N”i˜²àÃ÷ÍÞ—Ã9!÷6ÑupYˆosR0‚´Ó¢¼IsŽ¢k¯8zJ57ÐyH·ý!Ýv«Ü„»ž…8%i/:ƒ2jy¥9Ð^oHeGO»;½öNov(;”Uð	¨æ™ÒL)š\™)x.B<ïË NÑû0£¨%¡œTvtÞýo‰¡ŒÒ·DÁzSl�_¯à¡œ"/�ÉyE4_±Ïä¼Í7ý_¡39±¼rX/^ã·x¬×Eþ�=ÌÌwD4óý[Á´†44®·‚%óº˜~�@0�?£o%ø%}³àWô­?§o-¸¿Ë¾aŠ­Á}¢ù¦èû\“);3óMÑ¯6ü úTy êügœ'à?ë¤œý·RÊFÉ
+ù6‰ÅÖ&d�¢¦úÕÀžÆ8Í\Om‹ã“Á	n�{96Rzq_	K¥îÌK|Ñ�±3íK-mdµíÐ’™¼}µäùõ8Þ¶KÉ±ð&t”ïYˆž�škÛÉøqˆ·Û^¶�Æ;RÜx[JÅCCÏÑ—Âô°�§…Žñd¾$¢ÆâG,,{‡v»^EE÷þ(*>*Ú Ç*®m÷0D¿`¥„† —�ö`Q$?ØÈ@¸÷Ãbb7 ø
ùîäàjÉÎ¾HPÝ{ÿÏTñ¥[EFUPàß«F=ä° ~#/áÃ¶šªŒþL•ûÜ*‹<T!|ýlu!Ùß Å¢£4_ƒ&¿Nká‹¢
+Õ}$Ð8“'Î¿Vô­Å§ƒÚâÑF­¶=­ÁÈâ€™EÑ#¬_?XÙJ‹•M"Lçj!y¥-\dTCÐ}NAûÔé&¹WòË`­€›û—ù›ÀdV}M‚�­‰+ÎI�©+ó®^K™Ê»ùTN¨g7ö0³wcÆÙœbu¯ÑkÅm�µÄac±Á¯‹èdI�þƒ
?KM9KíHC¬p�˜‡‡'Ö‰ö|B`ˆŒO�LH‰¸³
+¢�ub¡µNtˆ[“BÜ:"o¼,–½,¢D_O4æ'gAjc^rW�&­ë$×^Aæ øË®†½EtÌÀ1Zá°<k²ÛVZWÑÅñ.»×|×—WÓWÌ×Üs¬ÆWÌî½­V,üº‹ûW{´÷|Ë@OIWVåvQV%y
+º‡›ÚqËÃÖBú…YœL´ìú·Ù"ºš‹¸qšñ˜ÖFÇãZs»¿•%â¾V&¢_ÎíŽnõNét^x0ÖÔ9ÖÀ|dC^Áx§‚ñÚÈ¼ÒTDç$k¼ØEüSPXS^oTã¸D1û‘¤5JýÍBC¿a6—ß'´·¢<ž¤²^Ä�úöNi¦³SJGÃH}tY¹:¶Mê±ÚD¼åÀÉ˜`“:!ÿ#v |DƒþvÑ×.b)t‘=Ž§tØè#ÔÓêð�Ù†²9Ö	Ø©!:�ãìœÚNàCð
+2é.1æÛ%
+¾G5¨ÒÆd-Ÿ6@Æ�o›âa’÷€áaýð<·@ªK;ÝÙÍ�1£MTê'ÏbMÔðäe<¹‘ßW"�‰ßÊð7ú˜æûŠ	ÁÇ4¾›¾—ŸÍlCQV2’˜ í}êáþx#AŒA9†èÁñš
+ãe<©5›»EÛú…ÐA:·çHAo«úuDÇ³ß�~‡aŠô°ÞÀøç²Î%Ó D÷ö€œÒOCÎN<1XŽÓ´àf5Vä
~­ Vþ-ÁeÐôl�Yß"žïD&ëÞM Õb…Kä&Oä-á†¾£x5£Í?¸t°§ap{Â|B‹¾¯'i‰âàdü3ÿLÕæwbðI-Ž‚ðnÕ<H»Ó´ÙqÜ´8 ‰³[ÐÝl)ÿ{'?m}OiNF‘'mÁ-‰h›À‹,Tñ‚„�¸€¾ñoÅVÔ²Zøò=)¼©zþ{Ì˜Ì‚ï¡ô8HÝ…ùªö‡ '4�ß¿Çbâ0éÜ¿‚¤Y’¹E²fI�“¢ùƒh�,™ã%k�8&š£%ë˜˜*™ó%kªÄÝG¯6'¢y}”úùŠNã¦cl$)ÍbY‡èÉé	Òj¢d[•1:©éŸ$•M’<�‰RÌšˆÞœcDOO~&iŽDg’ð,ÒiHrÚqª›0ŠÌÁ"'\2æ!']ˆy1!N¹³â´1 f#Ä.ÄSñ£ñ@<…gh�‰@ÒfH‚­íæ4	õä__¶#¨I™sÝÈ—ÌãFö1³ÉŽÐ®ý7²�™+$ûÒY—žã(J:\zŽ‹1ë8ù#%âBŒ’ˆq!% pº¬(»¨ßB‘\zº�GKrºÛ9ý0‡yJ/SðŠååQžg@ß5BÑ
X³šÜ*Ga'�q«=2Š|q.Ä&rÀÄùx,¥`]
+Û�›$ÿãRÙãtÊo¼ÔyìÞÕž@mAy‘	ç•å”fbS!Å)ŒYZp†ú²àÑ<•ErÑ%ž‰.åÏ"å�Zè»À³@ñ³)?î.BÀ'\ÀE¸(p’„w{CÎ«’ÿiÍ÷´æ± 4E2A.´HeS$¤É’,ñù·U)3×Iöl÷M×k«‡éqL±à¤�ÃÞž"ÉP÷§ Äúï4HywÂ<™.áZ%üGEó9É|IòÁ¼4_�f•ÏñÍÐ„ú�9Eç•HÂÀw³
‡;j©@õ;ÍµÚ¢ðÏ<#æ
ÀÓ	êÃÓðe�‰Æ>„ýr– cŽÖŒ•œ=áeÒÈ<$u¬„çw ƒÊ.£/¼sá_/ÅÊÖ“¶4UÒAl5i¸ÐnƒØSx:Ç\)
»ŸK-„Ìå’{H‡÷ð;ªl.–
+»ãÑÒ	‚e0iË$¿·Ôë±–I�Gí |o j:£¡G)˜?H ”þ%öÿÕ·DüK)²Põ-•>\|pðïw2È{7PöŒÆ’…ÁpI+�qE‘ØÂ±Ø(/àÒ‘&txÞ¨Êþ÷�C?ÐÙ'0afj¥35OÃL
Õ±c"¶þBKw«Ñg5àE¬R’Þ1eÏi
+”Ö¢ÍÚÀ‚�=î‹„ðÇÓ·C¸,Û²ÌÿéòiÕÁ_Þ±N‰M)�ÒxBà4žp`›	�è
+¶;°V¢ÕÞæ† àžå9.¼�´”’8}¸?½–â�¸‚Ûá6wª×ÏÖ0éêÈQk‰£0¨Š3"N¨â¤˜R$-¥¤dxR´«àa^Î´Ù8ýÌ…’]Å‘Ø÷{¹ô{ÙÓð½<w¸A†XÑŸƒ'ák�<‹118V	1þ?ç€a5xH©šŠ¡ƒnèaCÁ1þoÎ�²ã²+ö$—ÍÑ¤ôR¼²æ´Âes5±+¨Žµð<
eæ“’š©{Ï€îÜ?œ“•Øµ-ŽGõöØó^‘N3£á¡$OE¬1tõØAüŒÅTšrK}XCR¦:¤Ô‡u¬ªS‘Ø\ö†ô§yBzÈ‹lç\ž¤bÀÚ2gî8f# Š¡”"js§R¬HH/…nAV$%IDúRé�&xCZó”zÜVø	¢ÔAÚ9D	ˆ#Näç(Ôé]Q˜Äñ.ÁüêŒKäí„‹¥¡£¤$ÆŸí˜ë0&iIÐ%0×®S´AòÿßN‘	ÿk�"œÓÁÿ²Sp·OÂî"U9†Š²}$¢q;ªð
++y(ŽÞã> …='ùób`0ZÏI�— ÇðK)ºËS`EêÞJ˜`í1ôHåÚÅ!”ZÃH7Jõ�DÅ¾È3¤¨<6;>§¾Ò6˜íÑZnC$ŠÂÙ
+�¥$�êî@J¨ú÷UèI©ØzRòŸËN‹›ªÀFW‹ÚˆÊÏtÒÃ¸%8ƒ”0
õÌ­î[>“LG	3IUúiJ3¥¾ÍÂ2~Þ	Ô„¢—¡#0_+¬ùZ`~/Ðð‚DP�ƒö�&,ËÚÄcRÙc*QbÏ›ƒæ\ýNÀãˆbˆGuá�ÒgiÌza}7(+ ƒã²x´C�GQ-Ã;†’(‘ë»T\áŒãž%)²·ÛÑy¤¤ñKâ�U|¯ð×*jø¾½SQ)ØÛ4ûŒ™WˆïJÐÛö›¢ÿy	_¡¸ÅSö¼$äì¤w'œg¨˜¼*o/å_¤ùe**¾Ešƒ�ïëÐíö¾¡Ì»‹qäH$¯I¢z†Æï•Òï�My¥Ý¨rSêE²„œ$r+>l'ùj¥AžóVV*þþä+í/Ï`‚ì¿Î¥±ô:¬])%‹·#'	OÒÊbÍ#CµK4|c©æ‘$Ï2Í#öñ,×<
+àn–¯îÅ36ýÃjÿ°Ö‚ð^~Ù`«á±½¶Ê¢vÿYÑwVôÔÃ*ó’’‘Ûéðœ€‡àPVå�KkPÆl�Õ:pNŒ0Çj‘f' ¨ÅBj&¤hÀPƒ2(Rg·Ì&-–,Jl‘!ÍMd±�‚O„(	h)/ç–²Šªðr\çñ>™×ÐÑ7s…Úûd	Ÿ€/ÐÆ}+5¼8[ÔÑO(äAb‘'î{^AÔïD[i¶„žõ0žèPëh#£®Ýžƒæ«RKmX6Ÿu>—.a<"…@ÑsldÞ@¨c�”ÛÓµü$óÉÚ ÀÌ^ ù×Hˆ1–­!3hŽ”ô8ÏM	Ï“Ðê†ù(Œ5Z,º_n6ÖjÍ±è7r3 �ùÔÌUè Þ,¹F9: !ê˜åvÔ1ÌÝ(7ÍÝ(7Îí¨cž»Qn côI	¯ù;­ãâ
+)\GÂ’”F¤¿Ø]¡–î…†ýb[<ýZ.û†ödH)žë4¿<n°JÓ½�#¦õ{›ÞiŽN�&á¡Q`…	=Pñ$ú]P¤øWIqs‚ä[…Ã�ÂmµQkµä¸bpàI)ï—Üb„Ù˜�˜Ž�0hƒp‚4Û|Z2WK-(Ë×H‰¢r{´I,Dsl§à’¶I#Ž m�¸yD\F'©w
+Œ·	¥;K$øÆÄ4¡¸ÃHRâO�”\LR½’?ƒŽ\fÑ4:xÙ2$Žà–¤pÊR	}]%PfÕO¸ùÏ³Ýü‡DÿêŸéiƒì§‹v’ãŠ|Mr¼õ/Ë…ÃÎ·.B_>ä*
+ævsÿ©ëeõ@×˜Ô…/ÿ¨d{N¹#²'é1	�,„1tH1«C
+ü Å­¤Ài)a�–Ç`ZYÇ¤À))¤X§¤¤¼³¤«��zf£òÎj�	…&M…3ÔÇ<�&Ãh9™@bõl
+Ä‹Zt�æ¤ðCƒ SÁLœ*	Q�ç8µ¢zšh['¤Àq	ç²u\2;ÀÞFãSÖAƒt‚àq
+Ÿ;)™?Ø ?ÈrRB¯õ\ì„¥”½7ëGÉ.uyxMx°Tò¯ÕÌ¥²µšŽ7d	¿Ùcž–p¯Ï[ž†
+NÃJS‚·�öÛ­sÀŽ¹`Çì€]bƒ¡p NR{
+ Nµ§$Çw½Îö]_ÐÛº2NKç¿ú„
­Opð�œã�ïóã�ï3ÿ@~áš
‚ï3ÈCï#þJŸ¬è‡,:=og$ç°Ù‡,œˆ_œMš‚@i@S¨ANz�`S€C FâIeÏ(8G§–›CnA*—ÁËùZè½•&Y–%9‹§ÅeO((�ÇÈ0{‘õ)µl–‚L36µŽÇ©Žq©Ë¥©4>­–TË„´´fJ{$­ìsTöÑ4¸É71
îY‚{,
îI‚{<
î‚{"
nÁMJoÛLjÛä4À	8%-m¥MM«äiªäÉ4¸©7MV˜$çØ• |÷ÍUÐGùTzíOQíOËi›�Óegóq½Íœö¶FI3CîB$=#ã¾S�#’ÆÊ­q«InMXc°ÈLYÜxdp¬lŽ‘£/ihÂ¾ò¬Œ{J7Rö{2ú²�¹à7‹—i"Ï#h‡”Ia/é_Ò4Yù±©ç€~Y¹•ãiwñ$bnmñfÄ$ñü1xä‹P)ôâR4£ˆkþN¤R•ŽkàºYÐ$Xž\ŒËùÁ¿¸Kë2|‹!µÔF*uNµSºª¶™šp[zµ¯¤6¡	€åë_ ÃÍ±üµK¥o:²MZÂÅs�!ôl÷Þz¦�Âf€Á��90GI^wÝ#ñä�Ö¾¹²ð—¦Ãoéb4P=ëªî­ÉºçSÝU\MA÷ª]}YèëÕct¹`'~\þ·ÿŠÚ•çŽm�â3-ÜIðš=	`M_G*•ììÀ/‘�U{¬éY¿D¢«)²LvÎÍîâçfwÑ¹Ù]âxù^–TY™”<#:¸Í|TŽE_×øi¿AtDI4†>½¢‡XH¡c¡þÁ`/•Ÿ+˜’»§£CcšÏ½	�XâCvƒcÆÍ÷‚
‡ëß�lK Ö�r‚²=�Ç&_×°î|ãH® é‹ëÑ£²j=*sA±Òí£7ì>êÓÛ�³þù®zá9MwyWÉ¸Á�OG=&Û#õ&nm¯v¹â±$WlJrÅ‹]å¿•Ì_CüÏO•ñ›E:.½¶+“Öu•ÿJ2}Wù)Sæ¥®ò7$ó_&ÏO'p'�OŒ
]aH™»Ê5™ÿŠ;:oÛ£SØÛZ‰|»Éåà­²³AþŽV8ìbëq“WÝì7Ýìm�}‰5	³ßr³?rù;d_j]iÓ€öNU`>EæSØÍŒ§˜µYáYv5@-O²Õrd«à,““j�9p¬ñer¬µŸ­ì‚%GaOÃ„¹¸±íâÆvsŽŒvH¾Wó9
¡Xt‡f.V—â•$øb'5‚é°X=ŸNh›óåÂî—àsòPOð]Í?_.�/{Ñ¾ê9Ï†œgCÎ“Kçu
¹Ïñ
+¥ÂÚèõ)|dIkþ¹`ÜÎ•ñú}?0{—Ò‘-2s�Œ%vpÞçºW|é4ôzÃÂ‡õà�ž2,ß+dr›ÄùtŠÌIã/eâY
+($£ÑN¯Ùoª@5‘ÑŠËþ©9�}ÞÑA0�`bÅe­šhñ‡nvSû¾ù7†åþöùj¤°È8ÿ"9V¶lŸ8ú~ÐJ\F§†ºÛ8*8õ¸Gô)ë.ãE¿Æ6êóß&Þ×ølvvü||FaŽŒµÀkŽŒcî #ìÈ}Åîß¡Qç>¶ÿS,ó’C„£•×ó'KcšËéèøõÎÑñF¼Žµ›ÙÊÐ§bHFa÷LtîðÕ�o”pDxÒü~Ò¯ÉL™l˜le|¿°l!™RŸQòmx/Ec—å›Æ’\ŠóíŒù<ÃéŒ�@i¤þ
U�½0µÃ©ý¹úB–U¦�’Ña–ÑcØ„OÌ6WñK®ñ˜NY^ÛiG¯b}Šýìwk�ñÉÙ&ñgi‘Þá|!Œ @ZDp©F<ÅÃe¢ýB¢=	ã4À��ášBhÒ‡©/VuÓ^™S[©º0rK²<®¯€WØ›ùó»¸ÆBK!ßÒå²¤Wwlb
+rÎ'žÄ¡ƒ¥x_Š©ÅùC¼yÓÜ–	7}.ón«Ä�â�¥YÈFXV@’®M%É‹áã%öéM˜µ”4› o’’-%É›\);b!d9¯íaUì<™Î/§Þ&ÞÀÀ�7F¾Î¸æ‘„ÌÌ„æ‘5Ï{ø³Ðž�šuRóèžvÍÃdÏûšÇ+{>Ð<j�çC
_`ß«¿Â.†åjŽlû“m‰<2u¢Ç})K
+±4÷.æŒÍ²všd2Þ¡{(‹^¨8À/T²¯p�BÕËÿ‘ë°i–‡�6×²¿&£’»ö§2/¢!³
™U¸ì}CF’}lLfÐ–ë2f^=ÊÌõ2Ýzß©*˜p„™kÓŽ3s�›¾³Wa×Y×˜×@ùXô5= –^#5\ƒ‹
+��ŽÛG§ÉÝÇOÇmÇÞw„`°�àÈ¿@�Rð{Y„‚çÙ³Òk(�p�VðNºÛ!JD
v×`÷�»‡AÇaÈVd¶à@m‘ñ{£­(�¾S]A#ô(±xÙ&Ç¬m²»\¶�žÕ9ú¡Â£ËböÍê¦°§·kp)s½óÇ
S“è>6úiôxˆE?Öìò9ñ‘ƒ�F)º}Œòm@ØkkLŸh!oV6ýfé2Í»Uy­lëèÀ‹Í!¹`-wÇeÉ«°™"µ1ÑÊ¸ñ÷ãp I�L§«cøR	¾Ì@ý¯�½ê{Mé\`ÏÔ†:T‹WŒìÀ8ÂšCjs*}È¥OGQsð	Œ8Ï{‡�ÀÜ>P>¿ó³@ ­$x%?×“Ÿ±|SK4oiÍñäC¿�v‹Ç×�NÎêÎ‘Ö	ZÈ'‚�hþ7ä�^öù8Ok1fÄ¢‹•è§Šï?@=27ÊÝ­ÀÄƒ»4óS�í¹C~ô`ÆþTØpM»ñŽfîÖš›ÚÌ=Í
+ßgš�w@w1Iðæpx‚Nâ'â0; TyŸü€Å©
èlƒ%’±"s¯Æ}ÆŸkä€ß«Ñëß_hæ>ÍüR+û�|!§�¦¢GÜÃ
+m�]Ån_#óuo§@Kˆîs×º�Œ‹�¹—$·ïEà…ýkP–*¥k@ûãhn:á,I
+I\Žñ¹'1W³s�b®æäB�"rÿJÙ~ú‘h¥+e)ø1.Œ;…"ÞÄ±é¼é”Ì)­Ô©õ¸28ïs`"zÎqÝñþ•†¿(ñ%Èõ_dfîa¾Sð|Müs�æž= Ù×ÈžOAØk»a1�=_€l¿Ê³–„þ™™?�hÉÑüô®fŸ°þx…
Â= ¸ØÔ‹&Ä¦vs‹Ž@Q‚AÐ©?Öì´DÂxZ’”|´�¶}¬¡æf_pG0�#g©¾þ.Düþ�µËü;@ÍÞ!ógévdbÞÊ&Á“ÁØi
Š²)eûd¿–Ü>¥ˆ°ý2ý:ß–´eZwîñHÞãkTD¦°kèÌ==n‹‡£m:ñ­ðl÷­ðöx‚Ê+rî7ü•p4¼G+¢¦°‘$p¸b�çõU ¼ �<sM¯Ìm�C2I9ª	)Ôc œðèkÎÅ\ß„$˜É*%eãË¹jôq5š!•¿¥UðbG^|X‘¡áx)èMPF¾7e©ÁÀSø¶1UÅD{šYUØolØ�ì+œR?Ã�ñÙ‚0Kàþ’ù-(½	ß~&âõU\CÆ(
+˜÷�[%aq+„ÎCŒxÐy
+_C;‡|ÛC¢Q
$øéúÇÉvµ`wGÕ7V‘a„vÝÄZz�yP#�ŽG¥ŒsKñS	i…ðö�mÿß(Ô
+õ$§5úU—ýÑ¯«þð}£yŒ)îò?BeûÿË¾Dƒ«ÏX<Ôªà$€Î¹ìmÙ“(¤gs_“1\¹Œ<„Ý
+È|­EÇ8±H>C/ó‡_‘‹­WdÿVÙ·UöÐüã?|À¯—ìŒ­®CüÊSŠ:+Q[<z@k`íñè·¸ú§Ã‡˜þ)K�
rÂÚ€*ØcŠs"€6g¿6˜Wôzô;šO¿¶çÓ¥�å_«Å£ŸBw‹ek5ƒ80:ÞŽÕœÛ±Míx-ö¿‹soŸ{x<WA•ñ:¼:Ÿª2ö•ñ%ÙÐv¦ôím­”ý‡R!Šb
bxBéÂý5IA�Ï…¤4ÞÅç=9Ð&›ËEŸ7˜hµaÉÉŠsÿã=Ô”¦¸Ñ6ŒNUœm£Ã6ý{[…¸ œ³môÝû+ž¦àýŸ €í	ùˆ£i‹1®ÄÀbÚÑ==	Eb³ïy
óPášâ;B*Ž\48yÓìºåŠ	­¹-îÿŒÜðw3¿†u¢±�'fžRðê3¿ú�Š>õ­Ä¤öœFÔÊ¢+ÔFû½½DôuÃ^
+¯P1¾$Ï¾ÍžˆîPQ©2oX•w°á
	ß
BôQîá@KÔ§÷@m3vj¾£šÐl´kÍ IÉñBz;%$7¡JÀu¬xsSS›óMaþƒüBÊÓJúˆâ¸ÎŽÙý|Yo«�v@”.”ãg\Vðb%¸jÌ$>µþÍýØ”ÇÇ˜Ù(û^“„†KAJ“Z�›¯;UÜH½ÆÞyub`s|@1<¤àBˆï¾Ó>fi±ÐPÌ	Gi­ñßŸ%ÝsÄØxÕ›šu-ü6˜ö}lÚ¬®˜¶YAŸ-ÞÿT¾×c}*sÛèS:Kœ¬Àø¸ùK9°WŽ[{åÀ.˜¯»äÀÇ°žXË�= �¬=r`Ÿ\Ôaí“ýÊe’æ7÷¨”R g·ìÛ-{ro€±Ý'ØÝ'o†U5¸·wsŸl~Š‹]&ú>•!=›l~"›_Éæg øÉe'54«æ¹—«y–ñG c¼ðÊ<¾l~
+ã®ZsÝ©µ§Ö<Šâv%�ãÆ
uØ8p_@±·¢Í½2ßƒÞ+ÇÊöÊB²]�>3wÙ »d©È‹Ü¼�í¼�!ïcÊ[ìrÝ)›ë~ÑÛzÇw‰‚æU¿Ôéý%3š™õ%ìcÆsÌÚÇ_0c&³¾ÀQ[ª0/SûòNpo¨Di
1k¿ÜR­oà¯f€¿ºõ5Žã2Å+0×úîë'f‡j62s¿l~#›dók¹t€Ž[H#úÕý§5û=”"ø7ÌÀ#ð
+tW\´RÁ]Þ?ãM©|üaH‘§
ðÖ·Šþ¯,*?h‚ïk& …—¨¦Ô¶ãóÁzbK;æ'Ü|Ð�ñnø£> ªÀÂúQ‡¸Z>¯ 7UàÚÀß!EÿIÌpŸÌÂgÓñ$ .ÒÚSß*ìA6¢>Vx†+g4ûÂôg 0\¶†�. €i¢³M/(xcíÿkŒþ½xˆÞoHþ°@›ñ¡ïÅ_çÅÌøÈŽ	øÐ™ñ±súCì;&áCgÆ.;&ã›9RÈºU4ñ‚9JsGGê?HòxV‘ŒýµVC§Qx×�Tì'xãEh—ÉV¡¸t"cQ€Ê‰O…ÅõG_ÜNóŸÕŒÝZª{´fã3­ô¬FL±:4±i'vO¢à=1Ü°I— /º¼Ü s^ØÛú¹mMWt-Œy8Ã–s*Öw¾NqàEˆ2áß°Ë�ÙPw_ß³½”NÉËî<ïÀy¾�&àù�uÇZ�o«CŒSŠ­q(C6ºNa�WÜ§ìðm�J)°É-0�9lvŒVxø¶F+É[Ü?b
[Ý?Ú5À·õcJ
¯ºŽa�×ÜÇìðmK)ðº[àxÃ-pÂ.ßÖ‰”oº±
o¹í6À·Õ˜Ò†·Ý£°À;n�Qvø¶F¥Ø¦°ž²ò®Šç!»õçôçöçõwïÎï.èîaŽSè�øä²d”ì%ñá9Ù×¨øÊ!„VÌ#2½twDŽ6Š®ÖKž|&-Y5OóäÓr´Mp“5³I¡ä&%5­µ¹ÏÅ‡tøÆ3àÍtÎ?&€—³Rîdö	e¨bdÞ½t;Ê£p(‹Žô†»Ù)Í¡Lž’ÊŽ‡XKp´ÊN„´–àÃzÌlÀ|hÒÅfaj¨[(Ç}%Ú•ZO”×ópj=¹vJ²ž<¬GFï`Ç›a?Y#…ry½¹¡¼d½Éö5)n½å”z»Û)ÉzóÓÚ§4Cg"mB—-¥üP~K¨{(¿«öb½#y½‡Rë-°S’õöø‰öþ¼å.=ZB¡©íÏÃ÷�’
åQ‘;WN3úéC¡Éi�¥¶ÆÁ"7§b9#§BXò€K^Ð“ÄrÚÆ…Óòt*-¡nØÀÔ´n0 -üBÇ¬ŸŽEi&,M©ÃêÞL=â`éÝÒÒS_­Þ®x»ÉÊ6¦>18ð^<.Í±ÊìfÎŒ0>˜Ö\¿Ó†yXésPvaÚ¸îf_XF¦¥2+�:ò\·ñª¬[{–½­
+æ$†‹ó€Xœãå˜ÊN1�_Éò›µ¸ÈSzT–ŽÊ`0$ì‰[6Fýcu Á<)›‡eó¬\:V—Æê ˆÇéþLÂ[š)7d†UºÁ|ãubZH�NÐCüi©cà0+áO^îQ£�bÒ£:] Ñ¢1o"Æ2
+Pi�"üi€,ÑjP�¿_Å«#¥ á³²ÇtÙôˆ5¨ mð…S¨9;¤ƒ*â³Gn�Êv„Jsp!ÄBzPgá¯À+Ó‹x5Gd`WbúPVÙãºDo×‘!#ä¤w R>eBÞŽûá4ÜÞÜg·×Æ}F&îŒûàÖÎpFJ��½Í„›~›Ž°!ÒP"=�H‹èDzZžîŒô4 NÏt	™“DÊ§w(³%
w&ânR8îLÂÝ¤§wÆÝ¤B0õW}yÂV_õ¶¾G}ä]÷—J¿QœÃ³•Âaƒ­ñXð€âø=¨8‡#–Cö/­�¸‹¢$÷�+çì!-T:í!ÍW:í!-PRö�Ž(¸„¤=ÍÌ§Yªƒüi&5<Íþ�}¤£„äJÉ‘‰$¥ð1²;/tfPHÀB)@Ç•äÛ	%m‹m±’¶ÅvRù@~–öTåwÌhcÅÆtµØX+Óàû�VlÌ€ï)JñP5øbÆaH;Ÿ£ð9Ÿãð9Ÿ“ðy
+Ê�‚ïÓðù>?Âç|ÎÂ§>
z±1
+>�ð
Ÿ‡áÓŸ1ðŸqð¯=?xˆ0ã;(3ÒÀ÷,ø|ŸG þ¨Žô`�ƒÿ
+æ |ËŒ‰:þ{æ³ñ¸Þ·C0žÐžgLÒžoLÖö2¦è/0¦ê/4žÔö4¦é{Oé/2žÖû6Æt}`c†>°ÐxFx±1Sx‰ñ¬>ðRã9ÍÂP³>°ÈhÑö5fë‹�9úÀ~C{¿E-ù”âIûžoè}Ozß3ˆãû¤¥ã�ò•ÊP�µR	¬Áï5J`£b;,¬�J`=&®W[ð{‹Â5î\Õpª†?’jˆwüW€J¸9÷Œ±!Îºëb=Bt¸[¢�9[bBŒb²À�K>É¢gþmP3óñ6c®~ÿ$ý2uhÚ¬às��ÍŠ¹R1æéÑIúPO¡o².Z›éü2ÌEYéäç_©ü~þÑOañ2°p¡¡jax\!æüjÝ�!“-Vt®íÜ1 íLb²ó/Ž¦ØRy³}c©L×1.œ¤Vc¯V´wöšRö�nbè�AÊ*%æ[¥
½Sžå§FøS	ŽzË9¨±kâé(Ç0|Àð7öQDç$ÑÎ˜ûƒ&½Ð6LñôÆpqÙ]É…ÅeSu‘~Àd7m˜Že?ëg®UbÅÐ<­Mƒ˜ÉÓA1zªÇ»‰ß17q‚[úsJ?âJ>êp'º€’€�¹€]ÀÇ]ÀƒIÀ'h<ñ@â·,†õ8žÄÇ��ðtþüÇd†ž]|	¦?žF‹á�§Eô–¨ïI]0æëù¿ÄûQÆ=V$ø¦éÀyB}›s’Lú%Ò:ºÃÒ3îë)Ô
AX,>Y°áÆÁ·P_‚?áÃï_þK4DïS:ÒË�©õJþð©¿g÷ü=c|Ëa
+
~92s]XŽ‘£>9ò·:#OofÛ·61�ßÜ¼*}Ká	o)Bžy¢zºã�2<±=I'YK,2•zTÇ–v?>Éð¨/7¶÷mSè7-¬1ÊUþ¥Jr_Ù·X}©Òf®QœÝåIz<ø´nN×ÓÙù)†»U…°&µ›£U5é¸
+š3ô{E_B’šÚÌgt¾|ÒvóÕPü'ÖÓ.¶œŸÑ»ÜrxQQŠÌ™|ÓÕ|V§-ç™:m9?§›³t³Y··œ§3Æµ«-çy
+?cõ?Ør¾ip–ºÁÌ’Ìþytí±t€óJnzŠýô–óBî_¤Ø[Î”[ºH‘`D»Ør~šý;[Îê�·EÇ-çf�¶œgê´å<[÷°Ït�v™ŸÓqùÝ£ÎS<³tÚfž¡ãÎó³:îIÏ Žý+Š««€ÝÖ�`iX¤´'ò®Ç�ƒ%JÙTß‹•†«€Ë>S<!™:$]-ã3q=
+ÑUE…Ð¬Nbñ†n(ÜŒ›c+„Wö¶–)þ¹zÊþÏ½{[óÿ<âW½­E¸¸ÌdÎYºæè„óõÂaWYW œ¹ÇÉÝÜ�{µõ+ôä²s<¿‡™±„Y‡Yà(3šë(aÆ2f¡“æŒ©LíÞÙóK~ÞåL˜Ú‹Nþtòó~-—^ƒËþ
+æ¸wê©îÝkÐ½{
zr™£ß¾âRû0+v­uzÂXþ¸Íï§tÃÍæ;Æ<1ß"…Í–sÒSúVBR’v:‹ŽSsq³x:ó®”~®x‚ãTž€¯²ô7óXR¹~�º-Ù‡ç>[3yƒÉŒe¼!$/?üÖóõüÒs>íúà¼¡iæ„NÒnÙp•‚}¤ÔóyrâRŽOÒ™×�åx*åèq…öØo¬“é§hè$H{
+‰îÖ'MR:B¸ŠŸŒðùòü¹Iû>tX±/D+¨|<Ì•�Â!Âƒs……ÂDõ…-�9ÓÇ³æŒìYS¦¿g9Ì©ë=+`Æž•:žÛ{V6…]Žû0Kž×‰^ûuñëc¥×Ã¬xðyÝ?šÅKGÓë¹o¥tëÛ7º²øæYÐÄÎ"¿C�]ˆ�*Î/ŸRø‹Ï‡þ+<ôc�ýÝ6†GÁº0½=x@™#àŽ¶Ç³ýçÍ—.æˆ.ÆnèŒèDÑ»�óN'óþÙ9¯�¹y­DÀ%ç�Á	hd¶�_æcÎ‘¶³¨ ÆžY<…7ˆO(|7ü„Rl�PGÁ¦<ª”±TÇ½Ö"?¬}$•^'4\×ž¼„‰¯¦¢Ü‰A�áÝ÷VzC¼C)Çƒ/èq<àŠ‹¯¹J�®Öñï‹ xqƒÓüÞ¶|A|§Ø·<­ïó;…ßÜlQÍ#
+=Éë¤fæ·©)tÝó‡ÔºÞ¹JNIá÷;Ý$Ü¤ç—:¸›Çç·XvB9=xzðJì¶66¶óÝ–øE8†íae¬uˆÒ½Bs÷wKšètÛ!…~¸úÔþu�«AZŸd¥WÓ	hg!´ººvuëg5°Àiˆ�Vàëòç{OøÜClàÒ4
�ÄC5îõ¨�*,‚kt ¬Ð¦Ê?Š•�b(>vÂbY_üejh|^;ÐFÝ’÷'ävôîs:z÷9½ûœŽÞ}nGÛIˆx€�‡ŒÑŠ¹šrºz»ë-[«{\!² Mn–˜Ì²ûôv©æQá	’.„åÂÚ*¼-ì �§�:õwøJÙWÊOH»?ÿÅHµ£ÚÄþ�:>ŸD©Ó¦;ÍªCŠÿ°Rz8ûV,8_vfZ+æH‹“HzN8ô8	G:'w€Ž÷QçÄã¬þ•;£?*´ý£‚ÛÑ�ýe'³·$³ÍñQxd›ýJÙ~Ò>”eíJYu®Fí
˜Î­áƒk^<ZÕÕ{\
+æúèÙ‹«=M-•¾@Q½ZâÈ+ERUí@#‚‰Æó:÷ý`„ZšÆL8ŸÙÒ„6—!I‚ÝËçôëíbŸË¯@Î˜-</¼H<"®ƒuç<ÏzX•®ö|ÄœóÊ¼÷]Õ)þ9ÓÇTð×?UÐ¦——¶#�Q|B(®màð0ïºN˜¨ÃâÔ[q¼=žî'ÛE¬ùKÀÁù+ÙU¼6>ºb¦OYÒÿµ;]eÙ“²¶~ÆÐh:®±q,FÝkŽeŽîl;ÓŽwN8Ú9ádjT´×]¹šPåûœÖtt­4±˜Õ„Û�g!Æ±è7¸¼íKM™�[Š_¦¦œÀu_¥¦ÇR_§¦t`ÊþÔ”ˆçæÉ„—¤Íh%YG+ÉÕí�QvÌx†f`ì”â	Œ6Ï8�ô;ÚvÏuz>g$myaêPò†&]Îåäæý²\ÁÕ&0ýkí=;D<•èRf ý‡
ˆÛká·¤HàõÃñ,Ï¦ú$QÝ¨Æãû$>‡R³QÃ—3Ü$ï)z$=z<=z4=zÒ‰â§SS~Æì Y0Æ§žlûäºÞÖ^ÅÿrªókPó?WüRÓ®‡´ëýíB7ô¶+þWRþFÓ%jõu©ÆÊ96Jà8ycg�Ì§X'Xà$3Æ+ÖIzJ–1�©çŸk¾àÁ•	qê`j>þ )£›}ØóÕ¼
+O1edö&YqŽ…c.VJ¯F»á˜kälJ3r~ƒFÎÕè±vM²SÌñño“ìFë´£N»Ù«Ž
´²o²n@ŸœÚ…
4FeÝ$ù	˜é¸ÃWöâ®nA—qÝ­Hœ]ŸC?7‰!Üjf¡Ìet~�Õ£ÚÊ¬ÇŸõS�T5™ª†4'UK¦j!ÝIÕÝÔa}PÖìúpVH”
ßÙ±�7”Ò[è=
+g·ÀWV„²ZÊ¶ê2¦fcÔ`¡L
+i6ÍFÇ­Ê|\‚ÙŒ‡²š“â„ÿj”bvyæ”O„X3/ž€òX:»pvs"ù	*ªÚEÕ$ýjK‚Ê¡	¢Þ-ò"Bü«:	¼½ü!À±jšD§:?¯Úsokáx¯Ó¸NP%IËúŸýTÉ#€PÕÒªäQ¬žâ­s=åy™)?Ãn¡‡e&cÅU‡ŸP}xðVk)ÊøIÄ„CSgb˜ku°@ƒ
+ß
jàG60Çú‘Õ�yV££[™5F
<¬›˜õ°
s‡G«�X¿à,0Ví‹W'«Î¯½œÁdŠj¿8ÃbÁ3HÞTªE(T…ÌÑ8ñžTññ‰ñü<hÒÈ2`ô{É£ÔÂ|<áÇwŒwUsŒêKHøKLŽgÍ?J�AjÙ(U4Çª?Qêá.K=L¥ M1Þ¢bhž�Uñùw|pú,+:o~ßaaÝNçðp„^º°®=æ{C÷ÐR4c(A!<çªâ¬;ñg?Ž0~¼¬Íÿ¦ŽÇ¬ÞÒ}oêB];E'–).ºq%p–%ŠÎ›b gÞ
+žEêžþ_@<ZMG<Gpz:×Ïp¹þm›ëoëm=IG[Õ¤†2SÅ58­ÕØÃŒVµ„Žžª¸Ôtkl,Ò�5úPÌ:z�CµÏmñ_çëÿ†ý¸wb�¥þ÷¼ZÍêO{µZTôjÙ{�çºµžfÈ¢³‘<žä'MäûpB=�UÌ!ŽE&§Ça'ÍMï¤yn'm³;éöÞÖt,;?¥“¤uÒ»¼“ªyÐI7B'­Õ�uº±^7^Ò�—ucƒsÍØ¨¯@@76ëÆÝØª¯êÆkºñ:„™ñ†>T·;uQ�:Z0©€’ç¯¾ÊÈƒCGTVËÿ:üÁ¿Vï‹ÔÔþõî‡jë"ÃïàQÏMžmÞ$ çFm<xbß£�Ü„h<¿ò”þ¹u[¿3Kj>\ÍîÙôùüµ¸cséûby|^©²aÓG¹càÜ^Éñy‹v?è½3k³è™>}zGG4í€â—¯¾þ’žË6<RõVÞóž‰.Œ�Šôg×än«¿ðà¯¿:>yÙÁWþóà®E×,ô‰5÷?1cÒ–ƒ
‚§þƒ²C.¾éÀ
•x><|”/þHÖHÃ³É3è=5“¼ðôµ4ˆ‹¤z
+{¿3lÆMö¨zûÊüœØª[v\p¥±ç?¯Ì�­ºùŽØ³ðPÁ•ù;ÿÐ<ñÄßöZs¥±óù–è²‰·Ï¸ÚúÓœhS_¦¯qÆë²Ùóê«r˜µÑ)Wî¿
kýK¯÷¿ßºê·wdxbºÝ9–1¡»ÁÑež„9¢gc²GòôþËEkÀìµ%ðWù_‚è'C¡_¦{°ïØ²nßò¿NXÙgÚþëv×Ç¾íû—=ÿõÔž�wÕþãø—gæònßzÛ ¿<Ôã“'ú†„^×ýaŽøvÊ0”¶œ·Ã{-žsWñ’ÿÙëù«.¹ÿý÷ZÒý7A{˜Ó¥Ëö4Â_õ¡=gï¼³£c»‡ÚSêyë�×Ä+kæø”©Íç}|ûÀ÷j73çÃÒµ[O
zõïsw5÷B{ñ-÷ß®çlþù_FÞäYåÑ<8üjÞ¢jâØ³î›{–üî±–ýÅ?ôÏåSþüÒ‡ûwÆ?Ÿ±sIÛâåO]Øþ§až}ºÎÛ&B¨m’Ó6HT%Ó÷t/ÀMÀaNk:²e†çŽ_Nú]´dÙ˜•±	wŠoAbÔfØ¬_ì–‹�?Íý`ÌšæînˆFv<õ´ð@¯²tÛ¨ê*O¿gžÙ>bÄsÂ
+oÜöÆ©ÂW4Œ3uÞÝ
�“7QC %]#¬,Z^þÆô
+³{ß†^½¶ßoy¦A™œ‡—Ý4L\„Wÿío¿¸áì‹«›¥ÁÊ×ÿgêëö7»_ìéùÔöÀÿã;Xì1þ¿>ì{bs÷@C…µcÎlá¿ìZ±LÿB©?ûã`ïÎÛ!üýÀÚª†gûë¿/�ðÍà¼h¢{¢02yÊÐ¼·6)÷Áß,Ï§F?ëkp†Ã›¿¼½Ç™ç¿;Ñû3w¼òÁe½—Å¯[û~ùŽ[÷xÞYê´Ëß3{â_zíº¡=wß²‰ÿyÁ€^=ªÞ½2_§]¿tbÆÕ•W÷/lÏ+^;éª{îïÿÁÊÖ;¡þlg³ìúoÌ~þ2�ìþàåµTTÕ^®¯©­®¹ü¶šà}¿«¨z2»ÊºµzÄC½Ë¬»"÷GÂuo—™wT�Œx2ÏÉº¥¾ö¡[)èÉöð´»ëj"uaË³)¿ïH•Ú­	�\áÉñ\îù
v|7þFiaÎ¬‰ì¢åùG¥'~¿®§„9j³Ðÿ]„˜‰Þ²Dí,†—Š^Ìß°ÏxfU\þòŸ³Ô
Çv)ÓW½!o‡äO^>Á>y¹��øn£4}Õ>yûôUì»O^VO|ÿ©ºêËÅÊ†}K…I³oëxYlhøQÝ·}ºôÙë�¨‹âëØ‚õ3ä};žQ·OŸÂÞ||û`Õ—¬á,2‘5Œj”gìi”w-~Qôô ñóœüÿÞ}#|€ ïoæÑ¡7²öŽ{ñäç¿ùý·÷Æ(ý÷Ý�<ž¸qÆtüïƒyù¯nÜ±ÿûÜþ>p£ùEë%�úÌ†{Û.÷ê�ÿoþòÛ÷üýa;}½ýýµ�Ÿ�o÷¦g~Ñ2æ™‡Ùì¸4+Z¬µ./¯¨Q|H»½&8Âª×zÔ[ª«+#Á*yduE¹—Ý©®ßÃ¬º¯2’u/SBN`w�¨©¨‹dpÈá‘òŠ`öÝÕõUå÷Ô«j£Õ5Ã¥Š*€ª«©¨ºÏÆWy°.óøswUpD­U]§Ü\S|H¹³A9^˜(\]É+Áe;­ÊŒß–ß¹#Ãµì÷õÃC‘š€vVþ¬_u¸¾Ö^ù³ 'X_W=<XWQ]•[r³æÈ29I‘‘‘ªºZå·øU0´äÖêá#ª« |[¤6\S1¢®ºFDªàÞ`eE9á¸+R[_YG¥4_}UÓ
+J~$•—GÊ}ÕUuwEî«¨­«y¨GZn…œ`EU¤&»„O›ÚL¨¤&R[]_ŽÔæ”ÜeíÜì’4¥†wÍÕåõ•_04>„DÖÖ=T©í~ëÝwß�¡Û"áÊ`
Q«Â‘`ï¯0ÐPS]	Õ ¤FäŽHU}7ìÖÊ
+hY7*�nŸß„ïsK D
Ô[12âL4
+_Ôœ@R«Ü�_^ì>Ê®UK8\æÐÄì	ÖÉõ0öHÖ}6'æÜ…\)wù.#eXºÙ(Jª ŽªpDÇ&P½Yÿy(T¬)§˜—X�„Â‰BÐ­çáÌÔ±Rn^¨=?¥o.‡Ñ¯®¬¤ôH­~7Ån	ÖxKnµ**ËCÛ½^ñÞQ]_kWP’B6vB¨¢ª¦BnÉƒ #5wGêêG­«¨ì6äž{îÄ¾²	Îº³¦ú>`» •*`¾àí5å6]Ù·9ñêÊúáUì–úººê*ÍIÍpáÙ„¦²2B¬ZÛ�&Þ­nB.‘ŠHe¹ÍQÞäåñ>¿'Xs_`*aôsKRÓ†T×B{‰ë8ç`ã]„ç%9Àþ¶Éïô�ˆÔÔ=t«©õ†»­H¤.§äG÷TŒ°Yþ
+ÍIèVrsæÉ)èžŽ„úŒñ¬ìt^�±sfŸ­»iŠ©·ðqÑÝÌ¬’’ª‘öL¯º¯;
8db¥Àª%UÑê<š4Uu¼Û	 ›�tWõß(žû»àCÕõuÉrµ½(ý·ëD€N.çÖüm7–÷a�4qæR§–ðQîœmsšrs%t†|wuM]FÉ½‘¿q1“Í¿@Æ?0<Xó@·’äÐ#P2tz’R‚i½ÎÍpq$“ùìâµ8ºÖ[‚<XR5¢¨À`Y}„{¦òr%bæŒ�yK°6‚5!¨Vbs`.QPrï®„šHM& ìÝ»f, ã`	Ý“ù‘îŒÐ¸ºi>g;í¼sðØvY��é½ço‘o«Kˆ=êCª+�À<gâ
‰!ŠùYNS‡Ýñ;,É*a$ƒ5Ê~ª�÷žŠá‘ÊïÆGéõ‘ú¶;'E8sÑPrgõˆ¡Î¤PmI"ß†rö¶
+"8‹Á-ÕEh‚3\VF„½¸ Q
+5Bsèï«HE´"Rž>Æu�ìý…]gsê3�ò?‚0‡YÙ#	À‹„i=Ê,!¥‘·¢gÊ~y9*¡¶ÐE˜Ü>$È´'?eÎhÁ0,•µ¡ŠÊŠº‡zÞœ³EB A)Ä».mŠéÔ�ÄnP=ñlO.ÆC‘{¹5+PuM¹ƒ–ŸßW×a›kòSÂwWà³1»ÄM
†*#
+d×qÂíÙž©©!ÊÙIYµá`edXZìOv¬ òàˆÊŠpEÝ�HÅ}V��ª=èl™W.ƒ.õ7Ùª(�°Zâz:ï¨¨úcEy�e&Óƒ¦¦gY©ô¨¨
+WÖ—GJªl!Æ“3ÿ–Râ¼”Ò¨³«8'Ý[QUQWbõï‘<0j`HH?àÙ™ÁÊVÐÍŽTaß•ŸSUðÁ4”¬¾
+VÛò|'?µE#‘!m8¾˜gT€ì±“z�Dþ€¾Fõ†¯îweN®U]Sñw”¸•<ïÎj¨Àéí>ÉÜ.KgVC‘J;r�SQˆ\"î–<M·0®ÐOçVÛ%¼•ÎªL7…´×ìiëdNyE
Ÿ˜6TÎðN–Ða”m©‰9Ã;�Aw*µï»
Oç®nÃÓ¹0³®¢®Ò!;‡"%É¡Éª%UÈá([1¼~¸Í8èµÚŠpZÆ]ðàƒ)à4wVÃ‘á¸^Ûü¦ïŒáÕåN9m„­*åÃÄ�€‚ÕºÌYžÉm×¡# ‹#9I5Šgg@–ƒ:ƒV5»ò(©JŽyàÐ[W}ß}në3@Ñ¨‡UdøðŠ:%¼ñÀyœYAft*XM»·3ÕV¤\‚csã¦�äà ¥Ì>”(¡>§Ës©ÓR¡òyJ:=ÝËy±4t„?®‡—žœ‡5ó…Ò©8ìÉá¤Õ”Te‡I·r²zVÕWV¦ª­a@)o§ô¢Ñu(XéTeî„¢{Å¹h³¢Ø(§òaX)A‹ŒTagŽtÇ®
+Vo‡ïªêa¯;d•ÃZÂµGˆýÈ a®s¹ÚT—¤=?Œk4TôG«Âe¾ólSýæÚ;a]ü¬Hç
+„.»Øäu(H�¸U7¼2¥§º¿£]W—2m!èGžm‰ÿ:©7«@×Í5‘`víß‚#nµåÓÍuÙ`Pì–‡P£É+¯®‘)~à·\”kŽu—{H°ªœë
+Þ`y9¼¹.k8šNÎîa¨…zŠ+Xw«"™u)žƒ,§Êè±ó!ÆMÑÚ¡8�äPÈªMÉ®MsNdT¡�à•iaÞ¾Ú#»œ_Yå‘hÌ}®xg¦¶ý¼ŸƒÌhŠv®ƒH«©C}&“ZiwŠ×iÃÍÀÁ�K„‰d�p œU^=2bkµuÕ#› m\´ÞÙvº·D=·Ì¼!¢”¯HF
+Íé÷B˜%%UŽ*U9§:bÜ6¹8Egûu—ª­øÈ`	Þ–érD¤úŠòž%éV›£Oå”Ðœ@—	Wmû¤yq~}Ž§ñI$™\rÛ�ÐÕÙÉ2È�ç£¬)©JB
�º‚5aë!dœd²Ý¿yÉÒ·�pTP�Lº'ª¯Ö Ðì‰.›Ê‘çTß£&B3–'ãøpõ>‰ä^ûÀƒ�*‡áGC—êÆ|·çR3Sõ§‹Kn‹DA­Œ”s;t,Ä–â|¸ÌÅñ¯ ³Ã¨ö‰Ô×À*VîÃ;÷.,…&kY4‡Ø—Óç*�X�ò]^`Ëpc¿[äÁH¸¾.bØµ}Ê¡3�·Üõ£ óÎ6Á«kjóJîuÂ¿#ë9RS˜ðës2R4í¼‘®ßîîú­W=Gvrå¡LªD¿FÒbç�}~ªLËÉCùâ¦ÑˆæÝwnLJ«ºœlºßV’Ò7¥Ë/ÖýòÊÁ¿>Š
ÿ¿¤½k�$ÙZFwWUf½_ÝÕÙ=3»µ{gv÷^öö�×ÎÎÎå
+WwWï”·_tWïÎ€qF=²»ëNUeÝÊªénd"0a�±0 ƒ-!		$ac„¥pØŒ1~I[AX`B�dËF¶#ìïqÎÉs²ªgØ{§:ó¼ò<¿ó½?JŠÁ9H„É×²ì�ÖHZc–Ç½Á¨ïiÜ‹‘àÆ¡�'—1õaW<9„Ë`0Å~¾Õýê4˜ìHØó…óÉdôäK_º¸¸Øhuý¶Ÿ|éþÝ»�¾t
+_ýÒàòK=d[ýÌÈÉ�H˜.!|7`>ê;?ïy­`
+Û�È2ëï"·1<î6”§Ž'n±‘ì -ˆGX�æÇ­.Šy‘y\í4àµ@ô;q “
+§Mõ‚ƒé˜ÆT¢]ÛÕùE­ß\~¥'Y@žàßâÆ²~Žá9‡´Ló–	è[œ`n]ïÎtÑçÛâÃ±?	ûÏ ã]Vš {3$Uµ«Ä#ô]þÒóÜïjÛ¿ŠµãËà8ŽE°�æ�/äN�%WÎ[�VHb;®Pr&Ñ¹p¹pe½ìÑí`»½€ç”;œâ ç:ooôž¥ŒNgèÅ"Í	óiùËãn1–…8Ú
E8v×çî'ú€u›iØÌÍÉHŒ7s[»ôrî@¯�ï¨Žñr†tÁÄˆ /ÛsD$j�É´EäV…¦®—imñ©u>6X¦x|Œ%øš·$Eá…<Õ�±? �$\ÚêewvK,‡»0L,ô†pRzˆqa‡˜t�»Â�{‹·/o_U\FMMöh�Z/½MÀ/‘�Ûº ’zˆrÊX8[N¹8#ÔÄŠxQ0�°Éª¹7aØÇðéî­±)öp;zÃYcŸ!Ê¹#Æ�Ò@—†Ôö<ª‡9¯— í†—MÆ
Y]»+ŽZò¶Ä‘pùÃÃ^ˆ²P²î©¶‡ºÔ‚ÍÞdh"7ÁÓ–T0ns)hA’feì}m
+Ð×ëê�Œ¨&)ÛËD˜aÖØÉ¥>]z°¢°·˜’É1|ß�‘ìÒ°P}q,×æ‚¶�~ë,¯}g-EˆÇüYßo·úM_àãI˜PÚâÏÔÓó’;Ã¨qæm`ü#´D	Á'VðX3Ò#�¨a†¶‰¸…,1â8€=o¼
+€ Ú¢Ð”Œ…ßÃƒH_šêÒ2ÐùˆëzÝPhX.pñ÷yÑ
"´Q­nÌj©C�¾jùë¬Üw›&zÂÝiìs[òKÊn‹>àuÃÙ*»rG†=.ÏYÀwÞÐòp§œig:ßáõkúÒ‚ŠÍ+¥�®†ÑÅð:³qÌðbm*ô!­�˜¼«¼æ1X¡ õ>æK#};$òÊC@‘#àkÉíu.-k:DP‚¬§çTk4ê_Ñ[.çÏ~8SYƒa¿à[�[ââÊˆ¾˜.ªžK€–†Í¬žå$ïûp~pÉ›œ$ÕÕW”‹«$Œ9×àE&»ãÖM_þÔµ&‘Ít	˜øvQë÷<
ó%OF>È*jâ™fðÕ›ÀÅ,X¦	½®jwÞËËO‰…µ˜W»Õy”Ü™K¸Ýû¹ô&±éÓðo‘V»bô’àsC‘.Y±»H
+úÌx{Žp‚Ç—Ñ�hVÎ!ÂÜYÖp·À[xwÊ[Å¼€×ÄØÄ”¡
‚ËeœmM&Ð”€ƒpØfÈ¼"ï–Ú‘r²®ŽÅä]“°ÌõýŽ³Újy—7‚a¤®`EAŒÓ0‹€ãšh3ž:šà¤:üW#hŠÚu&öL/PhoÊU¸¼%¶EF¿¢Ê&Æ¶ÝX›•çœr'<Þò¢"qRPhÃGPx%Ùy×Ä3-¼-ä�Í³)ÙÐÄâ·]ÁÈ™;Óv‘’TdÁòá~^—§Í½]Ü)WáÔL<@ùÒì�Sš¢kH«!yÕ–ÊS©¥â¢ bÙ�ËòáÄQýu÷ZÎ`£:ÊB$ôwâÃtõ†8tÄ	‘dY�hœ51i9ÍwqÆ`[<ÃŸç°õÌ«|•ùi!Ä�-˜°;Ç”„:Ï¬ä!®æe ï‘´Æ“K§�ežû5•´-ñ²"œ?QQlÛdDÑ�¢°Ø_ãÞÌM
r,/èUÙTÑ�¢¢Yïü2qÒ“Jh‘êô½Ö˜¾YÒO� HÜÜ®£+é”ÜXmËs§½®}[ŒÐ‘p,Ü@<ëîµP
+�éaYÄþPåa`G|Rr·
.àj¸×ágqËð­Æ/Iƒ
+näRÊGðGž£ÍÈ©Ò¶V¿ÖïoÉ#”Ü
+oÅ«$‚ðêšÌ¸´+Ø4
+P"¿x�’Z¢‚1œ„´X
+„6Ô¢åZ‘„0³BDíÜÈ`3…r5*ÜÍWöM„¾N=„»9½,òø4$,KÊJ]!d¼i©1”‡e–b­¯4ŽZòà©ÔåyâÃô©sÆå-qbC6ymØåÂíÖ8hœî{Lfu6îÎc–§;ýÞH´’ÊO¢|‘?ÑUì&ÀI5î¹˜Æ5÷:±h�&\CJmšàåÑÔ[2ñØrbÇ«âj|mÙ!ãFå(Û}³5NkC<bV~P€º„eHaÞ5?¶,–,Ê\Ë�ž÷DF
+V�z÷ò<Mx§
+`!FB·Ñ\9èà·t0ÞF¹‹®RÅf•Hö&à/¼ñs†jú·äËƒ¬…p¶‹ntúS€Ž‰yÌ¸Ú¤9j×i;ç*îâ–]uç‹«+óEé}å*óê%wf’VyháÍ-yTÌèò}±Ìx­]+!}=<¸ÏÛOÎu{W •›€,Ÿ�50x„BËm^—¤¶ò:u
Q³¸>9÷<¹VÎ@)š<ûE~›þeüø¼5òŠ3Çº2öË.ƒ-8½#ÚîÐÖ
+À°í|çõ™¹6·Q®cDE¹rqêrœäÀY>¾bõsov-s[ƒxV­4|D”&ÛÓs¤¤®ˆ¸ž:~¸y×ìÿª^M»8�ÂÊ¼.Ô€¦3ÎõÊËOÙ@æ$¬ˆaÞ�¯GŽl`žÙ ãjà¸Ì½7@×ª;_T¹vÍ¨k“4‘.|iÄ]89 h%ùŠH…ùi9z„
+ÜÕÙ+%Ý…{ãŒ+,»s TQ[åM¶©—Ã¹ÃãÛ>+_	|Ó²ÖÏ[=îáf„/†Ó´>oÁX�î„''kœ�"ÏJ-¼ßJîÌ¨Qoh{£Âzî{¸€á^'^uçÁ[óWR`†+î<àZÑ¿¨uãª ýò^ªg02ùÈà›F<²O]ž·N	—@ƒ%€âšâ˜·;€ó›B”î™€4ïg*ºô�7ÖÆ«Š?™)ŽêARFÇú#¹0åÈ¿òJ-—›\•xX$½äÎ´$î~aýÀå-—m¹H	~_¼8„ÈbH®�kû—âK8„’ÁÀ Fk
+?´T„Ï(|‚ªæ]s$EÀÁ_¶­µ´Æ¶PRB�•�Ç�•žOŽv“âCÞ89ˆÕD-¬4÷‡ŽãªÛ
+«j—fÖès™qpÞªg� ¤C�ézíéY®F(µÌ'öHn£ÝÞ 7Éwý}ÀÎ•²+ÑÎ5’A4EöÈ«q?ç#ÈMÿb‹Õ‰Üd cÞä)H §�sþËÝÁ‹P0?VàyŠŸc
_1ŒÒY[ÆR•`k7}#I2�ÍnóØP‰—†•
+'d	úœ$ó¦#M²¸Xë-N£ KUº¶H[{
[èT÷òÚÄàWs
�Ÿ²„W3q]qïÝ»÷ðñÃ»÷0ÎNFÔ«Ä”2Óýv_àóNO�‚þ�kËÌd{2d²3†Ë‚¯›cØuž}
+Uê—"ï¿÷øý÷Þï´ƒ�Ï–Æ	e÷Þû�?zÿÑ£ûešã¾÷è½{<xxï!6 ¸î~ððÁƒ÷½�*x0Àã<úàÑ­‹7t{_ÓîáÞ+òî¿"ïAûÒôDÚ§¤ÁÝè¦Â9+º®6cyôµƒ©v*Hâ"Ré²ûèáûwß{xÿî{P‹¿÷õ®«];‹÷Ü(C†&¯÷Š^åXI@sæ¼•Ý÷Þ»w÷Áã‡�ª¥Ê2²z(çQXœ›WHR B#ÚÁ¸ñ=Qç—Ý{îßïáwï‡‰<~Ñ¿X¢[¯˜S·WÄž*ì‡”äm<ô&Å�h^º}5ñÄcX3kIª.$øâ.»ï?|ïÞÃ÷î?†®òêÀŽ»ûÞÝ‡?øà±Z±D›þ$ÝæÑúÁ£GïÝðþƒ÷Ô¼b ÷a 4<·<p†5¨QvÃŠß}ÿƒB‹\.©ž,q.2þ04ð±�ªá¦:Ÿð¢€@¸¶fÞr¶&çŸŠ–õÛ§Óv€Ýàü�¾çöòÕDìg TJ]:µî>þà‘ØÊ)ø¸¦·+ûAVJS?xÿÞ£<ÒV+©
+-Ï‘Q¹Îœæê—#¤é[h£Â$›üàOÁ
¡#%ä]…JÒû²ËìÈf«Öºå"XD�Ä§fiúÉºB7�ÞŠ®fv@)e¸Tm¨Í®Á�É¹Ê„+iVT‘O~<ç“yW!ô¾âö{ÃÑÁf\¨2+Ò½€éñ/x‹PRÚEÌ5š�°€~WÅTD›Í±”@ø
nìs2�èö`Mš¢ßa…²k˜!Š…˜øÝÖUXhé�ýÑt$Æ‰­‘‰�èñ¨£´¥ÇG`Ô
+íUm E(Šº¬¥‹6-d*ÊÓ¥�4§6½èÈˆlbàf!(z^w:þ4™Ê M|Ùµ¾6õŒyö¼ÛúÈ×eg¤)Šž%{¡«%ó¤JäK³W]šø£Xß;�$Ú>Œd“�²Ó‚ãFÈœ±(L°éilÔžøÌ‡L»#Å)†�Òr/L¹5GY,l;Ëú5¢š%Xì¯+{×'sí]­1=\lš8éJ¢e_35ô¢Ùv TR’´c·ü®gõâµf(e�[_G
+“Áyk<"s°Ó› ü²;þè
+	é,ê6Öú½V@—õä 7.…†ˆO„ýb¥ÓM¦co>A²ÒÙ20ÍggÂ*Ëš�*-*ŽQY­\mnXG¹ið––-$^Ä@² ª×‡]®œàvíî”åNX4¨NO[Ìöë½l
y/#µÀ¯šyS/8ŠYÓ¬\)•yò’.t{–`¢méj'XÚ–3‹Å��µó¶Pþ4<TÍ¨Í(%Ü÷ÈõV�@)ô‘¬fŠ)Oƒ%\kÊbùI$'Iœw´Œ-IÛ¬'*© I†é+ëaW¢YöÐ#˜ê¡€€åq†Þ²ú
+!_€’ƒe!Âá×ç¼$¢TèØ`m:<j¯Mÿ$ÐrR¸7ø1o4ÕØ^Ï¯‚$‚ÖÊù1ÉjŽð”Lz1»øŒ»˜Ù¾¶½MA%œ=9K¿‡ãž?rZÉ)ŒÔŠ3¶Bµ�×æ€-{}öŒÉÝ•ÁÝ…ði%2ãükÇ{¨2ÈzÂLœ_˜k˜fA•JðÒT�ËæMë¦@'vè�`Œ`ÿ‡LÜCE�§�½úñt4òÇ¶µ4ºŠÊóËš»ºGÒ¤æÝ¡k*Õi�½	±KRƒÖ%#Oíát€ü¡À¬V›ˆ@ØËa¡�‘—)ØÊé¥?Ž!¢‘
+”Ut‘˜\­ñ&¢5†ƒ˜j«A­’q61nZãêV·Èè¢,zÉ/ëQ¤Û¡ˆ«Üê_´®‚cØlÊê5IÚ¡˜[íøf
#•âŒuŠ�|DB|Q‹A¶¸0åH #ÈŠ#Sýr ³	ÝåÙã4$Ö“øp�)…‚(ŠªR–´„\viX�Æ§C©�]BkÔ2L.U©MHèeK‹˜’žypŠ3˜å{Z¬‘-meH*œ‹@CÅ>ãšÂYdÑ�hŸOhqè¿ÙûXRÈ·Ãe¤Y·¥)Nj¢Ê¤E²¿j�w½á|¢w6„
*db§è£Mô¹ hGT›Œ§C¤,š>\£9‘'�–r=”ŠSICØX‡,XŸÃlY9Ó6$1ï0à±YôVøí9þÚé�½ÜØ–§=%'X��WÎ(ør°P¥{0L¢`^¨ÃW˜ÐQ)¨ÕNI±!Ùi+YþrØl˜h!viÉSRíE£‘pšƒ¡š)¡b±AôEk@šãÇ/øfdXÍYièÊÛú*$onnú4L¬xC÷äø6ùèÑPÈœt7²9E’1ÅF¤ÐÄý–úl72Rü¶€òu#­¾ÿþ“0ß:elÓ–
+*Yã^Ó7„‘SÒî›è¾›ÍÊ±A„”µ9áJ˜J¯\Ÿ$»9K÷&:Dù±×¹êô•nLZÜ½ˆýÇ;xÏd�¾�%{Ùë’&jT…JšíPs75WO¢ŽXr‚U(^Ó¡™ m,]¯Tžbœ%‘¡a†a½†,H—
+i´ÈŒ‡™huØ’X)]žt•+�œàIjk)èþ'fNQ“)n{Ðµþ

‹‹æ}îZ¿,OB¿,®²gzÐ�Àåú†€&-ìkÇq“Hô×€Ú¸(€t5¤ ²ÜùtÐN‡Ïëè{ä'ðÊnË/ßPÍ¹lv§Ùh”Ü™/ÜÔzÂz˜Zù,}FMò˜ û)WÙ´@“‡�år¦\œ†~ØŸ<‘Å™òÅ	‰ðo¦Z‚7aÓŸyîL×öB­³ìËÞE;Ü‹‚6äÉ"N¿ÖtD3‘wÍé_Qs¤5ïš·åpsæZ¦Â×ÙÙCm/iÍ“ÄcÎõµI>ò®òØ›½ÞPNIÔÞQUŒŸnÍ´¿ëµÔ”ÅðôA¤i&G?u9�¢ê�~Z�NZ¨ÃzÍþÉi5o•Ã‚çe=¿1;!J+õšåÜ®Ï”Sæ2IWÚ(Ü|Õ E	·UFì¡ò,OC*dÈUt`&§>ž_"L^U�ËÔz}²™ùE‚±:1ª˜™<D&(ÑzÈèÂV…ûë‰Vƒeçyu�ð{©!üV¡�('­kwL$k¥m*–b”Î[ADãD¨DRÓ¬\™A]Z¢x×ëOZöHl�eÆÊõzm>–ÙÕ™)�h	e
QmfÓ¿Tu×�¬'zV^5Ç’ÌÕ™Ï•„ÆÞ³½]f%„„Z˜–ÝÒ¥£_x¥ØØ(šrUÁE÷*¯×éz¤Ç¶	ñ3~…KçTÓtPÝËÏ½²¾”03—(¹)%Ço½²–*–êRj•8PR ÖJ�í�!]–	S…/©!FfòeK“9þÕ£×JF@Éxš+¬x·p¾ã÷�G­Ðz¹z,	$v¼R¤Rýr´"t>…@¾6ì² ëëjÑ¯‘±HmØ9÷™!lO‘m*ì×xF]M·VT¬h"v Há¥1<	¼ü˜ú¤:š×t�ó‘qÅ.AÞzIuR%h`ÜkZ�Ïø{çš^ŸD•L+zÿk]©Aÿ¶>å„x?|ÿÉçe¶ÔáWÊü‚�p•Aþ´|I�wäczâ�äs–øÖòmñe'Çt²ªöRU[<ï¼5·O3ÎÓljâçü¥‘¥)‘)æPdCû¼ÃoöÊ¥ð/'}î’.Ù0xNÂ®”–©öKÑx†ÇÃ/I~�üøËüæd
Î¾3ï«3[•u¶<¤)sR[„_‹ÙüY´^fŠçL÷q&“ÓÈÊI-HVHöáê®‚ÊçH¾2º�9GoWÏ(�
@+t‘êz$Ÿ‚áV\T›à«¡Õ‘a;CYe`ÍŽl0@ŽÄ^ë²)\b¤Ék—.DqfrÄƒÂîšÒaIáL¦‹Óå�“]ï”åHk¨k?ßêSnbK;‘QÉ>pØÇ²?ì‡.Ío°,
jš~8î
+2�ü™æp&�äJà
»Ûºâ(“c=i±�NÓÃ™•ƒF6³Äß”8ÂÑü‰S¼×.8O¾ìîÊïjv9VÃµ£LÅÊß­}Xw›µM·±¿]f÷öä°"=—˜ŸdI<[ß«‰^ž7Å™!Ì•œç¤i]t¦}²\“œTë›�ÌÈM4%&ÜœõM¢Ù[ÔªºR=È�—š#@Np
+¨îRšÝb9Þ‚r¶ìZ¦‡ÛG,âjè¶Å˜¨8É"Ë&²Di7
‹­ÖŽGŒ)1ÎB‚JËe7Zi7Ô-B"éy¡ž‘«;á*MDrˆ`ÆÆÞÙ3üyžîôý@ˆš3Š­7Sœj%¸¥¢l\±ÇsãUg°�;,äî¾ÈÏÊ±7>`·ü1NBöLW�’“O•ë§enÚü|ÊUžÅm†¾öª–aÐ£ªªp,=îœÁ°×ädÍí¶ÌÉG–$ƒ;EN= C°¤šJ]I®iÓR ðµö.«\aVBóA­Ò*Óî3Äêë€£t^ ÿ|\›7½	^‚¢uÅ–T	¯ÍÙ€E¸Ìý1 ˜Ý+ê4Éè“¤‚ÌrGçñPªôY“EŠÆÉDMÔt[=Irî‡unjl§_»ñŸt�°h	ÝGéÝ�.n�CÔ¿ê’7%7ô’f	uyWs‡ômè¬Î~é’.ùJ�;WðM^ôädÛ‹„£Kì´ú§ƒÓ…åú:‹zº‡ºœéá.æ¶a÷IgvÊ¶÷ZÁ@_ÆÚÑÈà ¢mÖŽÈºé0;/ïšmÇÉW]Â¥?YÃO^RÉ!/%ÊæTÄÑÚÑ+ëÍK÷kBi�fVúÒà4£iÁ,ìÅ¤Ú\Ti4ºá„§HÀÉC{C³;Ž‘ MÉ³¹m6’IÖMånS4ƒ³h»b?diþ„¨ÁvÅÈ	#AiÙÒWªÇdç«
ÈtF(zõšéÉùIÄ•oÎô:X``<÷LH ÀÃL!·{üØÖNÌy·ÆÞ)tã<†—Úrô³äp5ä'ÅßÚ$ƒ8<1…Áç$EN
-è…¨ÝšødXŒòmÎ[�~&t,k	þ¹�•ñ‚�¡®lßÇÞËÀ$ñºÝj’ÁÉC“­Ó	²t„4dêÊnG¶IÂ±P,ð¼‰Þny!P	û`úNÆb§h„fý##ðþƒ'×;NÎ`·�<Üþ0NŽâtg¿ùîlËçt
+„–?¯YPl©¥$y·7.	‘/N)à&X3}ÑCviµ,+7ÞÌ×§‘Ä]ô"BHjÍ®¹�î_ïŠ¥¬Tô%ÒôüÒ‡c#2GÆ@XH^NnîVŠè©åp³�9ù¥ÖÜgx,>‹a7K#Døà®ª¾.¦fVVäFÆ|%±_Äê@„H®JNla@ØñË-‹)�3O*Þ\ÅIÕ<ƒöé2IÀ!zÎ{¦”Ó‹ÅÎKGYG|°
+01†YOVN¶Cg¢Ctñ(:³ƒ·è½?ÄnäqR©·„y\*ô¦•"œ�H…JÇtô-íxÅq¤™Œ¥ˆ{ù|£~É#ï}­®LÊ^ _3ù¶Ú@mÌÆ0êûûK×ørMy»/ü‰—ô�‘‡Õ‘€óe!íºÓ®7Áš [rå&váíÁÄ»ãXÔ+àb	ô\ƒ	XÂqù<°å(ï•+õCB6«&¶ˆ#¤•Þz·ŒA¡äÖðzõž}CÑe(ü’–Œh3–°ec%�
+šû—�4T×DW>£'¨\¬jäbB¤y¬PB‚/®ž2ÜG„ElÑ‰¹AIöìd¤&ÛLÊ™Ë¡U�]È™I©©j*Á�©pq!SVKðc¶C¼y3fÉ\ž’>ëÂO‚qg“{)Ã�G¥\òó¶|¡Tù][¾X.{ÎÑfP"›„KÛkq:J	�€¢&DQîÞY6Y~=“÷%˜îøJH�ß!Ç\ªOòeYÎÚ¶ÖãB4‘êªžË»'[DV2:…e´/[(Dã¤’`ËÃbË3•–aìlÀÈ[´ û £4Yð@d!š˜t%P0ÊÏtK&’�<›P9ìïZÌ
nÎ=|’	…1æ–Yé†‡ã$@mh¼šd*6¦Ã�+	3WvÕQS9¯Ëó2fJË¡/ÏË¸9«Ëª³–1�<N	sˆ,Tÿ ;äîL¨G{ä-vèÎ(Â�kzŠÔ¼5Sö¦å AqÛœ’`ÆivÉ�IJªKh=ä�È–RØQ š„‹+H€`"[ìŠàå ùácT9gf
+4›{‚³sÓ}…
æº{­©zaìûr (ý ¢™yÝ%ÿôT|7’
+�á³¶ôBÒ;Ï6·¬i7ìõºÂ_²n.¦å’\Tó'i1i¿+2Ù~ï¥§ÄÒ™‹”ƒ9ÑÕëîqiu‘T>Ê™DÆH@¼{‚” !NÛeqe¸=8%Ìm=¤è¤Ž ÑhõÛVI’Òƒ©d™u¼¯Åv½S”ùá3»Öä¬†Xä•"…Ò²ìSFœŸ™
Â�ÙaR‘ÕBµê9özÑÀJ\ˆ:6ÏèÙKbIÔö¯*èEÝ£Šñ˜í‰	e+a¡-¡‘ÊÒbð[¥Aë…WëviÃ6
+´êBãþÅj\¢÷X9ÆUv¾Eó+pjvdC¸ºl<Ð{XBRJRdÇ­S¯µ¬Xv,Ó¡æ2æP¨“(Ki-c¸ì´z}¬-YØÚt5}é¬.çi‡69Ô2"¸ä»"H�tG.g«0ö>ò®_–JŽMOð
Ìi;±ˆ¶ÇZÿÍ7îdÇœyÖûWë€ùû)Ø¼e¢aDZnIÛŒ’c"Ö	Ò|IÒÉB�€<öŒB°ô&çpPVÚF7¥¯w5÷<{Å—­qOVaà.˜›Ê“»˜ý7‚9¡qÊËÂªéC]Œ�ûœÄ%lúÐ½vœ4-%ÜÁ‰ƒ^„3–—"Êñh¬îX<{J�€Q¨§ë“™àŠyÌq{4ýQÖÕƒ¤BVžØîBÞÝDÂ‚Vu•v£Kƒ4mÉV¥Â:êÛ*ôŸŽ³_=K;ruÕB¥5€œkDZ(ç½Óp'ïúþhÕ¬ vXQêñª‘gzQj­abh0SÒGÃ'tíöu.Ö�)Ù$�¨˜•eöÊ¨²iìEèú"
¯öUH	ß�sÃ”x²}Œãƒ(h$ûUÿSÌÄÃ´Úä@NôãX™³Ä™¡-"¼á@Ì›GžÖc¤‘'`íµFkÄb—�ê.çjÇÇ»Ì!Ó„-³p‰J!!,¡|!Ó©P¾Äî¬.BaKp[�*q ç,»½5÷aº–��Ò%ŠF„Û& `£3ÀFBtd]=ŽGÃ	À¹Ž%µO¼dc«ºº¿Nu6@Ÿ!‚†„>M �ö
+üäzÜ‚è"ÞüGèIïÔ/K­]Îìyã�ºª$‡böù´</Ó12oÈÊ`nT+¶
&Ú%Áú¹j�¡þ‡zYLý`Ø¿B"_�ø¼„XüJ«Äf:PC¬1�T¹–�ïµ ¯Ì¼K³³°ÌqãJè›qèÒŠæBEE³êKôg%(´1¬>ŠÏç:ÆÚô
+@=Í+I}Î-ÇwC
9²€€gdUYjCrÞÒŒðñÒÑ…€X¹p²ÆI,@ à~r¦Þ ¤Ð>Ók!rÊª5BµÌ
MN
+(AÇ­²û•ó8 �pÄÃg�û4ëêøZF¿VÞD,¡6æÙÞÉ:ºIx‰Æ*¹³÷°¸Måx€EîIPÒÐNq€¤6Tº¤¶é&�F×Lì=�ËoSs[AAä^Eõjy½ttàÎ5€ËÜ™7‚€•øÞ„T#xsba6“Â›?t’‹vD¸g³®¾5ŠèáCµŠ²:A¸„…°1ÂÒ7#óÁ—Ž®p}^^…(~@è¸	ö¯t#V2˜AäêDÆìFÉòå$`ÎJdãq“¥(lÃ›…Q%
8UpËèCä»wMBQI!³‘ÆÃ�¢®6Ž�&Ö�Ò*…¶Pj“†ö3ZÒÈ	ÔŽ»ð�@rm<ã)q%#7�{ùõWL^	ï­C7ÏLbèèÐÖ#«ÄõX$ÞÒ«·ç»`ÊG´¨W5X`(~óHHøæ+0?)è•—ÁM÷…S®¢ƒ)Òï?)öì¦µ+gm„v*­þát|f’ŽFD¨D5ôCgÎàÁ˜]¬žöÎÐÜYò‚íítX^f,­õªq¹‡ïñ‚ ÎK¯{0Þ‰PBË©"£l!—v¶]$ë3¯í/¼›
+Â¥¤ZÚ5ÖW™ÃXC”,Ä£µnö£wJGk°ˆÓ¤µtYàF(ÐŒŽ@9²Q2¡Ð·.ÎÅ~¡DyÉªmK\šr0lqÌ´^dÎåÈà:®á�:®®ÍYGöØFš7Ê²u¥«ß
¡É <9Kh|sì1Š>í«‘z)œ	r-Òo•½YŸË„9"“ÈNš|sì_ö(±æV¨O·<Ö1�‹1#Ž"6™Ss\+!þ^š½â‹3{�®|
I(ÏÀgï2ý2<'
®Ù$ÕeVžsqçðè"­ÄôYVÂk"ŽJ£Ù£~Ý‰.Â0SœÓ0®^'\‰¨"W’Cs±º©3sf”{éHLDÑà›×²ÚDòmºìî€_žù6
+b­¶#7žÄžqâü«È Ì˜äÅEìVÑ+bÇíÌ¬ Ñ$ZðLt¤Àâ“lãØm4ë{îqóùn½ ‰Øâš6wæ!ºÅ‡ð@îhóò*Ï¡¢S=…d—Îg(ú‚bé°*¸ÅþÍÈU± Ü/ŸÏ›ø‚Úu¡þI0Qö~IW’&Y¾ÕjK½!ÏrÒ»:Au¯†átD�8
+ær~eÉˆ	²°€¾>¬Œq
+íÛø%iã7‚“QJØ–í¾2·Œ±ìe
+/lúGªDQn##½» Kú�WÄ`¢¼!3wÑ
¢X{a§à¨åþ¼¥Ð?ãj¡0•rÏJ¡¯5„ÐÕxQæ\S/\fd€›øD¬_ŠK`¥Êkâ^^ßÒ;d¹š¸å“ñåQ¹'g<4-œØqÍJfÌøí’9%8™Þ0äE¯ôeºN ;RZ†�é=7¾òT�p…û	ã¹2o9‚-fA8‡â“ˆ˜M¸L³ÃwìkÛÑ‘(@Y¯(r(Ü P"ÆËP§‚T.‡åP4Ã�®½“žUóFš}æ,fÏ”K0X:Gz›�Nf‚×:­í¿’kvË»fã¥Ù%pÄœb(¶×D4¹®!ù…˜ÌûØdË83’×€ Î$Ç0É^WIËsv¼!Å¤€¤%&¿8ó•õy›‡ûmKâ¤Ð�,½XKyÓ<Á*R�bae]ãôê
+*rO­¸$ç�ä%Ÿ°(.Kãé›øŠâÍžJ—%ÂoÌ“ÁœŒ&¾Š�Då"²?-i
	;ý7gÛ&§ÈêUT¾àI LÍtiœiÂ’ð¢%ÝàíNœ%�¸)ãÀŒ(ÎT2†³e€®ì›	þ�Ûklk…¶“$åd/–eÔ_¢¤ò’Œd�¢ÞÔKEãØ]XÛ*MÈ—­½vÍ4HÙª©Íô3#b]Q/K[	ËeØj€ó²k^Ê�˜ ‰IL`‹?û¹7Ô®<¾†ü«ˆ
(÷)â>¨Y)#cÔm�[‘îûE£@$¢7†L4²ð+.Æ�ê
ÑŒ2Üè·pNÉŽÂ‹4x!dDòüæ]³Yœ%µ7RÀ7`a m½=;2¾³gd¿R›,KRQÙËb¿a>&©aWÐxj\¹Ê$…Y PÊ\wÃÁÃ^å¯ÿCÿ¸dî+œ
ôp,C�+/{4Ñ×Â¸cÆ^É»æht<´³¶LbáÈÄßRkUŸs-®˜k î(í,Ê-PvgÏ§í
+÷IBèMàÎø
r>â¶=»pÚð"kYœ›Àþ¹_ôFÜoæoÝæË`¾ŽÎæEkÜÍ±c$	õV€(§x	üÊ”@]œ-0dy×lu}v×ËÍ�Çþkë³’QBWUªã8LaÎN—Ã[äxBþ£4ÏÌŸÓ ¶=—Ö&mE7
+±+Üþ^ÄÒe…nX…3£÷z’à —YßlÑ¬4ëÄÆ;
©üÂL‹
+Ù¤¨Œ;øžÂ:ö¾Vÿ¬GFøsÝ@Ð%âQøD<oO[ìý'ÝêÊY’=6ƒ@ï£äñerá‚º©¤)�œ³¤²³+M{ÊPLØ…�½5j‰è k$úêÊžO)úÎé´x-L9ÙûÂg¡xªÒnÅ1D–“Ñb	šm S„�\�ú„ªHÇÞ$gô‚d4>Kd˜¶­¢ÒgyY…W»e J‰¡‰1Þ¤¾"ØËGn�TØí2ÖâcrbRáI.q[¨ÒF—@´$Î	›€ÉZÜ%\v[f£Ë4æ™½‹¾ÔÕHª�*{¥vîœ¾PlSÍ=’è�Ä…ÈÖWAKŒxÇ�²é»	8•ûÓÁº¦T!myŽÅ´
+O|K›þeqÆõA~Ô»ôúL5[²ÄžBbÉ,†I±�gÓ1)A&äcC­™“ltK…Š‰…¨ã¨$Å�Fe¶5YæÉŒs)XyÄ:ÌàÃ‰ÐÍWã÷¬|ß8oõýüqè-›ºeä>‰äæ5o:×—–¹¢4{[¹®´Ê-Îõ¾Á=ŸÉ*R°h	šðÏGüqDýsvòs#®8*î\WË‘Tvq+]4ëêôEòzª§Dë2$Ty7ÌÉ0òr®§%…üØ]Àh´™ØV©)òBUÐ0žC�Ó³r¶¡¥ýË3Ž”]—<ô¹� p©Hà§îàÒegcG�ªÁ=óÂ}üèþãÇÞ{p¿ ”Ä·%³ë5sHÑìÞ*¬ïoù£+üþ£û÷î¿ÿÞÞ§©#¡±{ïÑãû�>~øþ¬Ž¡x;öù/¡¯#¯›33“Ÿ
+5x
+Ò‚yx."³Í.ÊuH_Ÿ_!<ÄºWìÙcÉ]“ï�¨ÝÝÛóëÍ”K=…lÞØŽY%ÌH"ä¢ ‰¹ðèfï¡nÏ—Ip™|Û4�%:!<Òô�’(ÈCcK<èr£k³ùšioØNmxÖ÷ÊaßjÕ¯³8ëøÆìU^šã]r0_aQ¬0ù40s“ìéòW#s.ÓË>ù
+fÖÖ¹d­¼©ƒ’<…r
i„ƒ9NÄ?ã¾½Ýº÷î>¾ûàƒ{ÞK…©‘µ3ìsJZ	)Ø#SææÉ„cn(çô—"«dùY0_“Ä2bMÍ9¦KQYZkmë!j�ÈÒ_ƒ¬°|á·ÚéÒ!‘Æy¡q¥TbíÜŠdmªÏ°¹&7–fl�l—•+d-1I±x{ènIzÀ¤�
+.Ùß‘›‰¸‹žÃS]eŒV$ÌýP+ž¢Ò„š>þCYùùÔªMÖRt«]*K?öH­læHªºbúé•¶.ÜÒŠæÙ$Ü·Ÿ3·ÀÜ2)aÂÅfvŒÌ¸¹mðµ‹2¿¹u^QtÕÌTäö�W5¡J9&êÏ$6ûÖüêÑb7Ìãøü«š0J~ƒéBÿšÃÊgÈ+vÜL<¸÷ðîã¢ª+IÜ×çXåßšqÊv$¬?±*”VvƒÓúåÊÜôÛ¥Š¸±üRBÂúY9W{_›"¡(
O‚”t6ÎG*â�Ž7°Ô�«ß	û/þJBÎ47
ât oxL·¶÷ó¡ïoJOÁ‘š¶Éb�<†óüd…ù:—!¿.T$+ãÊ²S0DSU|Ò6Y„ëf„õõ¸,?®5<eQÞÂ�†?ådMd”Ì�4à°¿v½û^ÌN¹ªóüGèž{Üpèùð±Ž74
žì«ÒBÒ‡
+ii7œ·¬«�±"^ö".å´õ—dw
+jÌ¯gáwƒ�t°ý+‹+�„cÿ�±ž“–^¼(9×X£|¸24ÈR*®Êx{M»´Ö[&{ÊÆ)7(¥ðÈî\™ÒHKç~ÐØªÙªšRtÐº¥�í��õ5ª¨92ÌÚ*j5Œä”nÑ‰ÞÍlè;f¬M8Z‹[%¥#—ÑêCî� ÷o¼Ò-4–H6¤Ç…rè¦Y¥ÅIe½8�ŠîLô×î�á8vÞwô„¬/žÑ¬«‡(»³Ñ
+.*A‰HÞ>bìò�øŒÛ0›C4,x`[kQ(Šn4 ÄŠ!ù¶¨Š?)yaÈyåÿCF° ïQ¿›>7´qœOØyù‘0´ÀJþZpîã!æ›“·x~pÅ¹"�Æ¤+{I^¢Ð‰TÞ5ãZ¤T°ò MŠ"4‡¶FZrqBÏ�œóZ$�Dì›}�×*ã{îÛà‡±U\±4¾=Ýô-f?Ë„ETâó¢Xõ#é3ÈªªØÐÚÌF’Ó†èO‹§
�?8â˜Ýµ&çûþ¶˜�"ŽlK*Ï2'‰…YÏÜÓÍï]-ÄA‘>¦{’½é¾"êA*,~‹ƒcÛ3@3|c–Øt†
+Œ¥Ý0fC�«÷[#
ÕÕb5ÜÈËºúL8ì‘\L¡æ“üƒ¤ÀÛ=<zôHxãPñ÷ì‘ˆW‘ft…v�Ý‘6Š3ÍÜºÖÃ8æ’jÃAo=2È¸)n–ˆw^x�¼ìŒ`?f¸K—²F
V:#O8Eè#Ì¼Õ	�}»¡>s(g5ã‰,÷I•dÇë^Ã¹UI"ºÚm‡î¸ÜyÁCrmEaá(ÉÔ6ivIÄÊg3Ø=ŸRÀÑ¿ yÞ
+8‚%l|³Äí¥xê�šÂ7ž”TK9°´¸‘ÀvÅCI‰e•ÔïÝÏà\¾ói…‰É˜•¾½è-ŽüþçvËØÕ uYÑÜji6'�×rÁÖ%2©�pÇ�‰öÆ+ý7b‰¼ïÃBÚÖ_6kÓ]ä5O¨˜§ßÛóŠ>‰-5tOx,ˆÛlvÆ·Q/zä©^ÈH>m3Ñ’izïlHEÊ´;¤ÇD–¿¦B¾ƒc²¼ÃŒ,NœÚ¿Ép'Ëýhä§µ@-åH)L»11Â�ôh@ª0§£ "+2š¼�!ÉP |‹eY‡öÙÞ.yÒÒL¯ü±2äyÚäìD/ÀÇœkíH‘¿7ºf–µK*ñÍëœ¤=QNÒ,v¡¢ÖÓ›ééPâ�Âe›òE"P/-¸
;i‚–×ÂÝŠßÖöjæ�b¯ÍqªgèR?!WËiÁ©
+Ùñ�cu6<8'�Ô-Œ“–BÉ3J2ä„L%EQÔ8JqD®¤j]�ìzÞˆ*g„Ÿ1ºî’}Y /±ÈOÂˆ$²«‘¬œ¼É>ô&èd‰Ö‡¢€6E\¶,ó1A}0š\%Ñ|ÝC}Ÿ$_²€1)>
Ö[…eçþN€‚œŠãIE-�Ól6²®^YgÀ¢ˆýÆ5~ë(z‘öqè=[AXÓw
Opw®©j–*GkÈ(
}Ú]A(Š\ŸR˜d¾¨L©�tùGÓÉ§¡§ÄtØûÚÔCdÛ£°—ZÕ‚I(ËÉãhf6¤ü1‰ïæeïÄ{ñ`õE@Ìù›	þd’þàª­i§Õô•d£«	ùùBu+ôÃ¿+RRŒ@£ÏÁr„¹Gi‘–�´¹uíw0wÅœoq4{=ºÞš[ìI´X°¸`„¡žÆh[/3°g�ä[Ù´”¤zŸŸßüœ’H„�Gt‹/Ú‹Ój'8À`–­"ëfÔ/œž™u©¢òœ3ñ_$qÇº®íúîëó{¨òoJh§Šh/ÍÈ|ãš¡†%n_çì•…¥&§=j1Â¦‡ŸX“Ï¨ÕYV”¾ÌÏæ©«Î6”Úªøþ»ŸESA.ëÍ¦Iœ¢~ý§9öÐ”Ñ>a›ësU¢ÔŸEÒN‚ÛÂÉ¢¥äœ×U9ª‘¦ŒÒ…mHüÔ–àcŒ�Q­„8‹C®{_øÔf,¡‡åv}ì¿äIÖ
’3H2ÏÆ°cø©4<Èl[ÒÈ)hEP>LÉhxùÐ»ìúÒº&Ô1š§1‘mS|¨ùÅO›mC±­Â>ýë—�þç_X¬�sÿhj–ƒ‹‰)5R�ÖIc›b0*p%ŠÒ¾GÅIýü«ºg”Ô0�¦¢ì~ú^šµÅ{ràà7ìÍµã&ÿì�<™Ÿ+M
+òJ�	Y™@Çòá«ÛS¹Cú›´=0ÀéôŒäI¤%%Dˆ€Ò“è(•hz[= ÷D–¨è>úŽ¤¢…�ö
òí€wyŠ5¿Å›ïNä°ÍI‰ñ2½û(ÝäSIšg'|]
ÛBÁv¿òPš]¬á¬��I��û xkAeÄlˆÈV2ª“ß+t•§øö¨uB·¯$ÒÖ„Ù	_£Üòrº( ¥s´.QIÙ£Â8\ª
^£ðÊ	j?¨¨š$H”õ²¢ò†ùIc'<ù£ìHžâœBQèõ‹¨ƒ�öË/Ídg)Ÿ
+¶wBƒ§$î-¡o)b£)§¦�×wÎ….ž¦±ªZº-o”W:„Âi|šóŸ{UaQ�ûàD=EBO+M�~˜µ•ÄÑ°g*
p�Vàï~æé3d3;M[Cƒ;ìöï¥‰ŠXbÑtÌY�œÑ™eTB©Ê2râC
+Ï|½ÿ¤ZxJÐ’êÎ
+aÜpœÛ[øÉgºúçš·l|–ªR~x%VÒÓ}•MdŠ™3k~á³¤ÌØüPóæœeû$¡n{££ÉR#’‘r¨¬žÌS`%_‘˜¤–µ°/€íËåÎ¬ÐõæÌ÷5	X*P
Þ”uÙ×ûžát4­Íc‚á³×æ”×øT³ŸÕ/yÔ
+Û
+ÑÎœ°èŒÅØ 7|¶>Ó€êM‰­ue±(²àUSÄŒóÒlÆJ¨�¾-aj³¢}/4.)«	Îwñ—å /Ñ‘Õh¤9¹Ú<¨À^zbRèMûãŠ`¦¢¸Và5=BÕlöê5ßO�§ãgËó¢Æßý,ÛÜ0d’.AÃh(J*¯0«/~–VUigµ.Cp|jzµ^z(Å2¬átà�{Ûi·«¨ûœHu–=À‹7
+.Ž¸;~ì`x0¢O§Ù“5•¸á^Ïˆ»–5�N)DN*ünIw™|9�%–ë€RÅsE>¾®ñ|æå["“XŽ�áh:Y1¨ ™šrUÀß¤+¯+>#åRAéO¢Ešã½6±‡59¡ª¢Ü}ÊxÀ9×ˆ¾üÚ5-Hß	n>ØF\i¤bèíF»cvñ¦h!ˆxP\
«2í¤+ÃÀ¤‰"ÞjMÑ`Æ�ì¹ÀÄlÂf	çÍ20ri’¤}ÍðSYrg"P']×Ùq¯™ ’;Fú–9)“Ös‘9"	…1?Ö„P«	i*Û7˜£©È)dUïú5ü§¤3±9‰UÔ�¾*)‚K%�r�O©‹VoR#-¸×BŸ„ð)œtš»fkV¦$YÓ›ß¶¸9²2><•Ñ¤M5¥9Ñ¯¢f5~¯f`.Jã#êðz¦	K…Ý¥²Ÿïb(]é À�¶*¯
+2?m¥ëÏ)•f©8©ÉÝ¨uE(¸Yý¤‡×jÿ¼¢Ò�FëO{]ïX©qèÙ®móú:eM
+.±Øw¯mgNaôì½@~+PM°/cf`rœÄì)á3ÎHÖp”A¡ºl÷Îµ�ÐKÅù~Çå~F¿Ïié…Ã(,òµò�Ñ‹Ê×	˜´‚l
+ªöx4¢ˆ:V1ô‰!Ñ,lŠª>ŸgÙkÞ+oÏs,ø{Ú
+§ê®"cyÞ¸V¨,K�ðŠ¤H¢|áS„ªhìÞ’Ê"ÅñObˆŒ-Áµ°4àˆá¡N—¼ˆ%¥¤4»8çg¦–éÙF1>dÚcrj³:œ¼¡7Êß?`Á¢k<3Ÿœ{ú-Â8d±v:v®Ë]UÚ_fºã^“aMµç“Ø)€ÅôÀïbÍa×¿(Dûxó:	f’ÊÓ^X»‚Í5B¥yÏal	³z
ËA�¶YO.Z¾LåOA¢Õ¨/¡}ŠÛ|©Èë¢!»ÚC,†«¾yup[ã¦ø4Ë#N¡•(»äHV,hÓCû©ˆ’ =äQ¸Êuu›Ìdåõiñe‰­­GÌõ´¬b[×ÃläQÓ˜›$DŽs%Ði›öŽL�­h3hŒ¦}‹“H×âéòJ·LW£"x_èCÛd$	©éP>¾­åÓ^~øH¯rÜCåü‰?ÔÏò9‘(³D•“ìvÖ›œ5K/@E©d­œ©dIqï#�‘CÕ‚Ð™u%¢Y^ò_¦æžg„·><Ø÷$Ñõñ-Õ$Ù‡®eOrˆõŒÈh)P4'Æç¼Öˆ×°f0¯f´4Sím}'BI©Š‰¹dŠGS”•�¸ªV§¡æšŒö%×=åO£Öm�FÝšÏ¹©i¯+ì7ã.*¬Xp¯uOÛIâ( ‘@L$Oðåík‘™'2ƒQŒaÒéã¬4œzÁÝÅË#²`tR½
+¶“üáà”ýÖZ=ÿ¦0«Fe³uj/¶']×ZÃwØh£sr eÑSÓ_Ñ�UÄyyã:°§JÄ6"ëÍã»…`úYÓOÒ_ü==§ÒSÓ¯^,Ž<@X»6žzHÇ‰Ãc¡ßã—Ødü
+—.7¯–®ð_Ó_ºlú™‚ÂŸ†Iè¥2ÂÉ3™Ï$ñ§§ŽéÓ[ÒKeq‡À;#X™=r,ôi
è¥ø„£ë³z™7LCžúþ‹ÔiëóLžW¶ë;µ“Ý¦»W¯ŸÕ·ÝOÛÍ§E•\{Æ)7f
+î5öÝ§õÆ‡O›oð½QÓ©<®ÄÎ£“T&¿UîÉ~c¿ÑlÔvß\ß{ñl™4ý»�ƒÃ�vUÒûÀZ�é§¯£PuàÍÓ*\qçµm}\?:nì[6îâÿÖçŽŽ^ÞƒôÆ!ôþðèà°~ÔlÔ�Sß ÿÄ2"ûBÙ ‡‡‰œ·¶B{=¬ŸËZ96ÁíúhÙ~	ôWˆ&|ù�aø÷ø�jÿøø�jøø�jñøå?†eÖÿP†"ñúÞaó¹ÕØÿ¶ávœ‰¶+†ŒÁ6+D2[O»ÛîQ}ïàãzZ‹Õ�‡÷£ÝÚswë¨^kÖ·s>³
·èdt“\¯¶½mËÙw�¶í~ÒPši´OÈÑ`Ep’Þzº’½IlRHê!ì¿ûéñY[8¿*Ds+['GGõý¦{Ü„º[Okû6ö?\–Ñx&¤á8œšå9eë–8$Öfcjæå¡�ÜíÝúQ¢¾³Sßj¡îñÁÛýÚ‡õ=h%V;i,ì/úÃ¥ƒ��N^¬‡÷9þÛöÈÏë°ƒ&Yˆ‹Ãö\|[ ¦Lç Ëð×°‡GÍ´¦_žõýí¤²ŠXŠÇ!ÙÅK…á	“µ"��Ùq¢Rçf¨+äøeñÒ š1å	Ê= wà!ËôòMºŠÐY<>pb-ØìM­Q•¢é‰«•[Cr*y{@Ò�Oï&6Ì:øäo‡/ÞmyÑYIF°EŸÞ<†¿¡ÊØˆÞêš§O�p¿Kh�2—ÆAÁ
[f¸kLê*ó™£
Ü‰�=<GÂ¦5´wò«-¹û.ï£Å6Ñ{#âS
+Œ"?”‘•SB–kïlˆL§ƒuK¶Q¿DÑ7Q†4&Þ`Äžõµ0R»³u¯k¨´wpr\w·>ÙwNšÇ�íz!J3–¹Ì'Oëõ]Y¨8CŠ&ŽêÇp3r”;1÷º[’,Ï5v]¸zÜã§ðÁŒÆræU¡¬4@¢…Ë5ÓZÅ0ç)tKæ ]˜Q9p˜dÄ/8MZ/ðô©^à
+'·�jºÛp|mé3KI[{pa6ëÝß!—®?k4mé¥9ÅIûÍúQRÅáàDúZR9}äÊymé²<%è4Üˆ]¯==CúíµÑ'
+qùƒ¥‹Bbd�ƒ	ºAghÂéŠµÛØ|å0[ Ž]kºGˆiX­	I‹¬C€m˜?‚ýw2JRqÜ6V „JP–Á$ZÙ­ï4­	†ôIQ	j6‰E¨á\óéÉÞ¦{xpˆÒÁ~v‚úßÒ¯NhÆ[°�¿‰íÑ7±Å$äo4›{vk"ÜyR)þ£�¤ù#Í£ÚÖG)ú™ûr—©EìµØ|ÚØúh¿~|¼TÛÝ]‚ÝŸø¦“úI};ñ5$Nº±ýƒýzlˆª¬Oëµíúì®ÆNS)’F‚!x‰¯@ŠÍ.€z¡Ãü$ÅYOoìî¦ž5¾ù`¿YÛµ?FŒkj›Ç»'ÍºÝj~:ñÆŽ{M¤ìœèË!\¸pQÙÐÉ½ƒíÚn¹ƒ°…ƒâJÛ+UOøµGË¬^å$dB dZÅüÐ7°¯¼€’®|²D‘‚L�eEphâÚ®ÿ‚2÷–ž×�3®ö‘Åƒ�ò"[Ö½é›4[4Ä–¨d»¢‰­ÚþV}7á’7ó¸‹—El·vÜŒï4ŽŽ›–¸èmixQÚ¬ïÕ]ÊåÕ*Ôvà,ºX‰JÍú³&cÇrŠ÷7ä9:£Í§ÚžìnÑCÙ¶7î‘>
©¨oáZQsÇÚc
¡Ûdà$N·’%˜¡ŸØ®#I°
wzàÁ
Êäí2ŠµFp³òr1ç¸\#D�ùs¿u*Ù˜´ÖsÄ©þÕJ©ÒL —›‚‹I¥šëª!˜5³•×T–�af—iö˜p‘ÓwChöë´�Ä:^�‘Zú;â[»Çõ8íý`Y'µÝû�‹×?†µLÂ‚:¢èÕ1<Ïq	†
KB[`Ì}ÍÕöŸ‹“	ç¤¾Ô^åÃå¦´nœ‚¶+(5N»ª¸…ÜBx%N¶ÝŽ�ó¤µTFgµ>/Pm2##¹nˆ>eZ©•¤£zXÈUØ‚.ÃÇw5¨m=­çÆDëïy“
+’-¡[-‚cðóy+�ùeùÉ§aZ¡}5ñjÚÇÒäZ.à�¼+{ì�ÒÝ¿‹”`œ?QvØnÂ»„
ÚµŽê‡»µ­º%”®à}7z~êÍÿFÔŒáC’`ñä0N&ª‚×MÒ[†_Ï´HÃ‹C¸!œž22›ìØt×¬ÖHm’�öº¡ÜìéØlÊáÅ{±¢‹nlÃ-¯òltÒ;ëMg(¥PÛ=|ZÃ•<‚K{»~œl~R¯ï#`O„à%ÃI|<Ó“P“æº©S%ËI‹™Br ­©¶Ù"}Û–zkOô¶%Ðð8L~};NJ}±­ƒÃç1¸Ñ>ŠÁŽx‘%—Øxc NEŽ8\i‘r¶N6�nßÚ…+,ß#w¤*pXžJÔ·pcÖ�ÊötÇ™9­eXºŒj–0Ö„I÷BŸ¦åH›ûp²‹½¨_Rn{ç`ëä»MmKŸ‰)Ê£S42êjV«ÐØ�4ŸÖ�âþýÀ1p‡Ãžä»Î{j¿þ	,ÛîÉÞ~N+²X˜xtðIRŽüy?<­×³†3ÒW†%<ª7·žfYñEÐÑY²Œ“ãØS+‰=ñÉÞÒîÁ'U@ˆÕ¿w�”å5É‹š)@4Ä-#[ÃŸ)÷u£õY‰L¦«1—%mG§9Œã¾¹ÃrÆJÛ”$Hµ�‰d,Â0›O¶íÚÖ`CG6ñýq†AžK°7­Inì#<<ØÛk4›°\½œ�4t
v§Ådò¶Å×y÷fhšþlo¨(�!½‡5¼¯ÓµÃCØ%5„¹ñÃƒC+$mÉ°±ûZI.]	ô,æ�?Ÿ'•hA©=iÔç°Ê–
ó26îGw#Q™�¡/À®¹–É+Ë†P‡þºn›‰BÎÏ´›"u^7‘ê9ÃG.xã�Üä<¡òT7#Ÿ«^6'z=TÊ„žM•�, §}O÷5R-f³jÈEõV9x]U3EÂRÚ³ªòÙæZÖ»úiðµÊŠ0”YÑ3Ãd¥FÖÐØJ·"SÊ,TtA¢ç–1i�È¬­£3Ö=N¶¨©PE"dâ¨¶^Iöì�êÏ‰:JàÃÉa‘hÖŸ¢S!¯8†$k©Ó[áµ.$ú¥¶Ì›¯0ýEbcßŸÄÉ3iÖs;þdç²ß‡BgCµãìp¨=´¶7L±¶ú¾‚›u¿µ¿ÿâ@k/�ÛD„W&Ÿz°7¬ˆÄ´à=»Ü»‹Ÿ|5ÑBí°	j�} p¬s�ˆ²ÿŸ<±(ÃÁi"˜¶á<.|Ëâ·~Kì«~o¸ð­)ÖdBPTÜ§ô¸ví$ÄöZ“s@d};JþçîÕöêÙÃ£z8ÙÚERQºG)ômNÙ·O5š™ÜÛ2WÓà™)MƒóD€Œro	ˆº•¹0E0þ¤ÿÇMÿrñ°±p±pž‘IíGµmè}±�—¬Ì
+¤Ÿ@ò·v”¤L ÀQ¸néï¹ì‹øÿx±Ý_l�—Ù£ïtØ=R±�.QZ‰Õ³¤0ÙôfÏèOÓGó¹~œ˜5IúE­Û=5á/�ÿš
+}¤ÙäÕöÂRÇ–ØOÈaf«XzŽáVÏ‘·�Ø§^O€"OÉLM?iIÜÅlöYŸMÅ"›¯%¸6Ê”s¿íuú-åã�îûöŠSÔ|Zmû8<)ÜXÿ‚,ÃAñQ
+ Wa½¶HVùú¸)²b=t7/NÑvßg5çS¿ØŠ~¸ˆ—0«dû|Ÿ':>’KÖtHÎ}×õÃs<Emy‚P-zgŽ(˜oh@QKS¬õÜj¶x€RÑì-xåÁÕÌ|Ä»0‹Abp…s— Ô"XRêÓhçÛéS:Æ„í©ÝŸœÊÍŽbI[#ŒD¯P‘\³PBTl SPÓuB–Áo¥xÑq/§Ð
ïNkÐë_-¼[„äaùÒ@„ÂÇS0Ÿx©ø'¬éÔöûÝxÛ”äØo`Ë¤XS´‹jÃ=ú“ÄdêY¢7�Æ:ÖÀ5Ðè	IÒw±
9q»úð³×Ã9ÌöÉVýÃ"å'
+1gŠÄ\Ì¦æ¾äðËÛHì±ïœº1’„äq¸6œô`<­ASP…x§G€!Kmœ·Æ#<‚ô¦dœó™9[<bŒLÐ¨;(§ØÁìß€nÙL¤{2E·&éó¥êêùq@}Xo’”òl„×ëŒÐ`—(Øý<ä‹Ø“r’Ã»o^Ñuãç-Á04ûRå”†�ÖNš©Ð�Ù‘(N¤HF'¤R!»[<"¹&‘XJŠG¸ãùéä0­±¿YIãøœ] „Ïò2¿ÖH¯!­ô¤¾ù›c—ª£Ü�Êb”-!FX
ÝZnëzYno¡ÝO¢ú|ÄfékSMªœbßµÛÓâ×åæœPöJ€·nFñÓ³^Ñÿãi›ÀHÙ€^›dc¿fêïj®F:/5ÿ¼µÉ`úøiï(éÓ¾ï�ó¸µ
göjËïzöGÞUÛo�»±§{õ%@éþ€‘˜io¨èD0Ýœ@"/™ì(Ö/¥¡"ü=E[ÂÖËV¯�“oÇÛyžÌð¦ìa8lÂ2[­Se=Ó·‰†ÑaPVÄl‘Šô$az&^Ÿ³,ÂO·3³("#�
+ì€dˆ÷_ð©—=ï‚�ÊXè{	±8ÍNZwpƒJv›ˆ%6†P¾­½Ä�üN
+{õýÏ«ŽŒ³4;éâò]pÑ¢ N×[’Üýàb$¿&=-V¬.T]2„ŠáŸì°õ²wFúNŽvSðïÈƒ
+Á$á¶û­á‹$ÝJè•›ÃZhKº¦éÔ5„l„		± ]1ñG`«ò,¿œ
+V/¿Ñ‘Ï!_}ÈÌ„_/ý•¨Ž{GŸl‘,ô§dÕ•˜ŽH OÀ^7î·O§A"@…‹®5h]¢Òi¿�–ývŸœâ_¬Ó#¡ŸÏÉöØ¿05Éü%|š’r<¥à©7¢(8“�X_<"¯0Á¶ðöâÛÕ „‚Í�”ŸR¸óÙeÚmÚ†Aõ�/l|utönÿxô÷¬wŠFÃ³Ïß Ì/‹Ì/sæ—9s�;æ
+ãÔ�ÑùèyF¾’xN½^÷+é·ðû@*û_Éq%¹°1ÜN«¢!,¥·’~‹æ]Ê|%óÏèÖâ+¶¼ÓO›M’ò5OŽíÃ£ƒ�êÇÇyº÷ªÜ(Û¶&ÓàI5�S�¡K|nbŸâì¾˜ËKe™¥ê«‹wª*AæK8?ã·t¥Óeè½�ÐÁÿ+ŠÝÿlÅhÅòíÉp“¶Ç…‡ÆwÖîß¹~wBP+If‹•ƒY4»lª{ ÊˆŽ9¡P‘½æhR¬œô1Ê×÷Òi°Ì^·Û÷ÒÈ°zÁ_I“àŽÕ4³ÈeVþæÉÇË~’ëa«üü†à3·Úô=gƒpB	OÍ[*�‡hö-=&õ"Ö¾‘Î{”tò†M¾sØ5cÅ#rjù11D•~1tú.¤­yþŽrò’“ïÂkÒàmEÉ8Î¢ä¿|'=ŽÃ×zº£nÖŒã«Âj³ëïb/êÊ;œƒ�Í9(là´ÕY!d
fÉP¨s…Êz+òJa¿C¦Åãèi"¤~Œßó]×ã÷ÁˆÃ”b¡>7@ôÖ>¯ô
+¢ÎU¸¶«„WÛ„›IÎK°6Ó'é¨/�~z�‘æ¦9~6ïuËá%);¬Î¦	Ò„wƒèzœBFäÃÂ„VVfzÂ^ÁÃ5§÷4Sì…†”ð¬—Ì)F'2(†1¸Å âmÄ
’j†˜ÒÞÜ%c2\Ê#�ªÊø#OÕÎ’äL¾åU@JBú‚¬6úÖ¨8Q¦éu,ÎpyÌ^Ûe¾Û+a§uÄÓnu_â–î¦Õ0[£dO.>ó¨#byéYó�ôPFE=„ÊÖÇÚ�¶h¿ðÒ“~u2®¶ûÕö¸L-FüÊ³+DåÌcã‚4ó�	ŠÛÐ_8N/ÑM1ùwFñ
+èdôryú
+›µHÈsµºT€ZŽ wDæ©–�õ�› OxÕP9R‰ÇòÄt�'¶)‡ÄË†ÞnI€9íìf¥ZêErC¾ÞÜ÷:çx	ph˜¦€T)º\ÃÎ¤7&°%®¨l~ƒ´ ACf‰�QÀ}šÄWÒ²´A¯¶|­Dq2át™PªrYâ�wüÁT¬Œ-_óJóˆ3’ê=+tàE;â-Še
½7ES´¢Ö4­m
+f\È.Xâ-'Ù¢gòµ¤2Dã Áþ
+Ê7i
+Z(ÞÞèùB+•ìo\SIÁ[³yšz =ýS¸jVZ}"G?¥pÞløH×9‡ó±)}Uv9Â»É+ÃeÞhs>ˆ±{wïÞÉc[8²+Ÿ›Î×Éx?`ñšð‰©Bbž0å77¿HTÖ|�ÏK$Ÿnsÿ±•B'âÈ=g,/º*ÛImŒH�éœ(Ò’o‡ÏX6§à*MæÊF@x=iw(>[fƒilJ…Óëy/¶ÅIZÙ˜7šeÅ¶“6=þØ­hÜ<-¹4+ZHYíi»�þ}Y`Š�y=€5#ú¾k¡¿ñHN©ìŸ­ãInL¬ãõLO®3~ÖãäÅ#$0’¼rBÜíUÄ+«oÿÉ»ßþöFZÓò*¬°³ÓšÂÿR§XÂó�~¥¶¦Üp@Ô—šj%'%Y„@‘¶tÝÌBoƒ‡	ß°d—Ï­ÎdÜÿÈ»JÀ‰B]	"Tá!ÅÛ!NNÀÁÅPÊº�óÖ¸6aö„üRdé¡Cø†5	Eã7qyR¾@a¹n^¼ÉÚò]Ö/Ëw­…ôæI³y°OÌ«¼B™¹½¢z—-†)²Í•0Eo•�l9"BÊÕˆðMÖfd=ÁÛ­×>®Ç›�½úQœü'H�öŒÿ<O…Æ˜"‚ë¾?Ù!Rjè‹xvôš†É¬ô#wsz" ‰#ï¬~9Zx²p¶ô¯_G‘Ë$…r�´x-ö+ô
átqQ^m~>æo¾Ò±*�>»¶Õl|\kÖ…R,‹û„¶
+úô„Ôv]O¢�ÇÇµÝ“zì.ü÷†ÞøÙÖIEÁêiˆØnaÒjâ�e¨9ÓF¿¯J<H)Ùc¯3E³'"^YJƒõ3¤Q²›üìÆ©ömÀßGp¥¡—‚-„á,5k›%dEÑÛ!çF×ë¢çX²[‚±ÆY…•&7\QSVäÍRÖRä–ÑÓäÆYÕÓ´�—×Õq{F0"FHËå¬Vçˆ€0ÚŽ-Y¯¾XC´,†ÔÕâ�{‹wî/~ã7.Þy°xçÎÂ�%¸áb·ÿäÎ·ÃÏ.þl}{Z³‘KûÓÉÁ)ÇH‘+bv²È�™M¸Øz‘ 
+¹�_ýl, ±&ÀS­ÛåÐµ¨#w|FÈ�ÙwC[¸~’¹¶T)±Flž¿TÂÒd0ç�¶ŠJ�çÖ Ñï “+ŠàIÍª¶Ñ�®|&òSB²iµTÇ&³høbjèIÚ²¦¸ß……nè“Ñ�üRúW1ò�uÁ>=SF�«3%ƒ"éT´à2I¥ÈdKe©6¡�’BúCD[ÆGÂ„Ûƒ<êÅ‹ØB™‹·”žø»þ²�'œpxŠÇnKª6%sNFùˆ;]½à�Ö¶êÖñ¬�NDl�¼T_ÇØyÙ“™¦
+“-”scp®Ÿ'ÙÜçÐ–F>8’¼ŒÂ¢ACôÍBºÐÌãN’À‹¡O¬¢ßïÖ† ¥±|ÄÉHN•à=Ÿ6¼—-z÷Õ”È6,¢Ù<ôÏ:È+ã¢wo5ô÷a¸n\ô,zGŒ.	°‰™<DáñÈì�?�N:»—èëCF[x1¡›/ Q·ÑIÌF–¢ÓSˆ{ZC—@hxCSé&›ÕNFEÜØ›EVò^– Í×f+1hiú{­^	-)Æ^ áiï’˜Ø_-À·d5¬qS”šÛ�ÒKæ·#ÍÅM?—­OOe«vWÊÑ”�§^N‡™À&³$Ú“nU!ÑS
Ê9–JµÉmŒ†}|‚Þñp/y/'	@¤Ž'ãØ.¾5ÃüX½£�÷4"`�¹Âé?CZï“ÆvYDý	HŠ»E‘s“†Ï%ù!C2\YºÖpf~iu†Û	Øyðg±ãeÎÑ,˜ú½áÄÚ?¢±•×¾Üi¯»x~žíèþÑ¸70CÙVÿ¢ulÁ4
§£ÅËËd[‚Å«+.[
+½ÀÂ]Øõí­P(¸áö§ƒ&ï{±yŸJ<ßjsDˆ„YÏ±ZcÂŽ«àfao•q<zA–`ì-v0Œ7Ç,¦šþÅæ‡äëSI¶×õûF;ÅKþ¸DØ,ÖnRçŠ”*œ³[8•p+dæDrè^=Ÿ
¥Žé	RªõÉö£é§^†í¿Œ´rCrqæ´®8‚Fj¬íw¯0x+Œ3¶]?ÞZªo%àoí°nwÄµ%¨[¼¸Xêw.áßÕÒyç2NÎ»+B>ó¤®~¥šz·Jìx´è¡±]èEü'§Æê¶&ç½ 6>ËG"—ß­ŠÇUvUí“WÎói;¥Eègr!€D#jÇ·B…´­ãã(|érÐ/j‚¶ÑÄ4!¤�°=~q/#Uœ¢/÷óŠˆ¾:ƒ{‘÷ûEFÃuÌÉlûþÂÔ–ÙYös$DzEq|v•zJ¦qŠýíÆ�[?::8J…iqJˆ!=‡®i`»Úò9Áª.Ù¾þ�Ã‡á/Sá÷ËªÖ†]©Þ6½¾�÷,Aéx•9íIŸÕì‰Ðg°Û2¥-R(ê$3baH–b¥ÈÇÌHÿ'qƒ+'NT¾Ýœ÷Fý`Ys†XòûpsJ¶¢©ì„¡b“ñÔ+Ëº›áŒÇO[ýÀK¶%¿ÖŒ-!°Ñ	ÒºÑ»ì„ùy¸ Ñ~àñŸaÿ*}PTì˜\Êÿ«­>¢JWUïjÖxJ:Ø¶œF¦%3¤®$½4jH&ÃË¨C.•¶‡�Ð³j>âž5ŽÎ¸Ô¤§6_iž{Uô3Tå6«�Ö°
+Tµ
´>ÓØ^·Ú¾ª¶ª!NæläÂË2ç/ðŸªt_\Å¦ZUš�*zqÒ�Î‰¨3sJ“¼™%—YÅÈ@Ò/ÞØ?<iÞØ÷«axAYVOq3n8FÞ­"ã5#•94DÎ~#ÚàL	:Ù¼«r¤‹‰+]]WZˆ”çØÈ,Ïs
'TŽ1ë‰­Å^ø&IòtŠ±\J¬Cæ
I_†¬?ZÝBÔ“šÐ{B M‚^ùôþAÓ­¡¦ýÁQI)s¶Ðc:Ùšzt7WG2©ªJmXˆƒží¾¹«ðP
ÐKúÄ¯~Üëzþ!Ñæ$jÌ†ÌX°UüQë÷Ýê=\üû‹û~îbìÏàv¦>ëðÄßTyÞÈY*©‹|ˆKR1ÜÏËøÍ.t[¤�Ã5:�›({üîÞ»Íw?�;ï‹Ú¨ŠoôYÔÎŠ±�J>ñ¼wÓ¨˜TÛñ^c÷ÌÈ±aPR
+»¦ëÑÖ	½>æÜûö·7î1�üÎBÈK2U…å
+¶�D.œÇ8Yð‚^�ª;»W!�36ÞÝÇj@µáeÚ™Âa£Åã­ún(Ú³V?Ì€$¦èªè½,|×Åakr&>ÛÛ¥öÛ½	úkæï|9œ¿*d'Ø§�w·ZC*ã€*KßÙéÐ»¶Vvß9QoU€˜Uÿû©m¾*3ý62bŠ‰0>Ôæú6VÓLCþrµwZEu�j/¨ì:í¿|·Ú›pŸÏ[/öl@bU©;l`¬ðOpÍ•®õ¿J7á“*C]º�=äSs8Xþ«¬`	Tp¨xÁ†¡˜¿‘–Du«ß—“†ÚU´£µÇõ…Î£:·¶6[ÄûÍÈãþÜýl}…åbhôn9Ç¸¶ß­’Lâ]Ü\¤¤¶aµ[]@­‚Òf«[mÁn:ò­¿‘ôÈ/	në¯~ú hè!Èã@`{|Ê*@©nu‚Ûv•‚<ÁFZ°œñ„ðÉÄ£ûþàÝ$®& p(¢¨Àã�EÿÄ8€_üoÉ¬k[zî9•L“¶&Áä™üi 2#&ŠØCok3u:‚I| *	ª*»À¨a‡æqIœ~©�€ó×Ë¢éštC}<îÜ×¾ ÒÆé—[¡%†=ô±ÔzŠ¾4¨Ÿ¢ibþ£)îGg«í‘Q\õ‹÷h©:Æð7úä5~#S¨èxÝõðêì…©Õ+o²‘Ù=¨¡iõÎƒ;wÒÔ¾»îh@¡3{q0³�4ŒC„÷Œ¨¢- ¯ŠçÀÇsô=\Ÿ‘�ütLGhÞJJ§ÞÍÆ^ÿj×½ÊßÈòVÎÛÐñkUæBÚ`£]®à_ÓºÚ„ñš¨ýz¯öºïV)žÄ»4Ýqb£J.-%²JAõŒP¸,ÀýMø‡S|în‚{ðµk/)ÌÝX7e(º¬Ãc«íûHç#¦gw.Z¤EýNƒ¼Ñ°þU(àÛ™·º‘–hõíÛoWßáGXìô:jÀóù¢ëîûš}šëÚ"ˆÔ;ÙÏ?©²œ¨½o±¿µúÆvú|iD/ñ!²xklglßŽ„;aÒ3áÃ†kŸ•ŠXiš Yœ.½Ty†ÄFíO!±@íF6¿ÅD:EÆaN³É—åsT ãP+aâØ›LÇCFÑ;ô.‰¢RÓKÐtùÒÿòÙ>Ô•œŒÊä�1®@êd¿ñM'õãƒ£frè/µ|á6„£-y“{Ë¤Uñÿæß·™.92(®&ÀB[Ä%”x­=‚Ñ-&*Åô€:*NØ¦ÄSLV¶<‘.¨-Ai,¼i‘»®·ðÎÂç>·ë·ð�Ù¡Tô<9jÉŽ´«ŽÁ	FWpz-�m±c¸§
+‚°"½`£q@+Hö‚í+h¬×I°¹c’ØÊ>�^I$¬èÍêr{ ¬ªþ¥% Ë’ª­üVí¸ÞØ?®ï£S‹�ë‹£^V�ddM"°…snZF[t2ˆ�Ð¥<�9ŒØa´½×íÒï*1 ½aáG³$ƒ™B“°8èÚxAãµ�€hAu†bMB›]àpÑdúq‹T;8ðq¯Å€Cb/ˆ|à¢WyóU…Du:Â³Ë—ÏŠ¾”?ó'
+éc­4D_e!ºýUIgºè¶åßf¹¢@>YÁ  Áv›Ä/@å
¿È»³Êâ¼ÎˆQ¾ñõ[½Áˆ(�V·‹à3ù'çxx¼jô{#œ	þžBØð*>hH²†½�êž€Àóƒm�€·Un«ô*Â¸`µ$/{Âíp 6V$þM±Õï‹™fm—êÅ9\ÆÂ	ç¬íÁl{ä†>�âˆ]Ñ†Â&¤`J6øÑ ‡Z|Uƒ·EQê#Ä•0;àKrMŠ…ëÃ…×�cã­OÛ$Ü¡U–2ÍT/ŽIËÍôFFÙx]}LtYåUû¼ØEE@×¦•Ïpª»þÀºËÿ¥$Ï²6É‘ÆoMª÷/|‘�ïF—jæÌùÀ›èæÍËz¦r¨‰}^¨-l.l-l/ÔvNÌßH:/eÿ×ÌëVsšUè‘Ã	T˜Ñ>ò½“b'BªÅÈjÅ€zÚ#µ±2vëì$í[x‡VN}k‚ˆÖû1$˜—`£“§Jò´ƒ¤–¶xÚZ<m§ÈÎk§ï·&‹Ak1h[ÛÏ÷k{�­…ORäA„X7K€nÁõ5Ê“¤ýI[FŠu²ÿÑþÁ'û‹§ƒ´ä›îžM
+ŠMÊNâîEîçIÏR1øïEÞï¯ÏúD—ÊkËºSue82Ç³»Ì³&þÞ§YR1’¬«<\š?â@8=Õõn+t‰éÐÃ“ñŒUÂ–à6ÿ¢¸¬È¼ý®ª,�qf›€Qq#ij„+.½ý$•$BR:šó_NFE$Ž��£„Õ¿§¡u¼bˆ›³Saø¬¼uÖ
+¬.�Ô¬çYlÑ]c'x}ÀJÒ—î�¹9Lå®ÏÍ#¾œ:Bª ^'?LŽ¤“xŒ©lŸ¤s$|%R¡ãÒJT*K•D%UÉUÊ•ÕÊZåFåµÊíÊ;•¯¯Ü¯<¬<®lU•½ÊQå›ã_ÿºÊ·U¾~h~~t¡òãø÷¯Ã�ý‹öÏ-Ú?¿hÿ�Eûíÿf±ò+‹ö¯.Ú¿¶ÿ:ç×�ß‚¿öï.Úßw¾?•þtÂþž„óg�ûà§ò·ÎßÁ¿¿�p¾Çrþ-Ëù^Ëù·-çÏXÎ÷YÎ¿c9ßo9?`9?h9Örþ]Ëù!ËùaËù÷,çß·œ?g9Þr~Ärþ‚åüEËùK–ó£–ó—-ç¯XÎ�YÎ�[Î_µœ¿f9?a9?i9Ýr~ÊrþËù–óÓ–óZÎß´œŸ±œ¿eAO~Árþ®åü—–ó_Á›ýßZÎïXÎïZÎ?³œÿÃ²Ïr¾Óvþ
ÛùS¶ý]¶ýgmû‡lç—lç—mç¿·�ÿÁv~Õ†&þWÛù
Ûþ-ÛþmÛùÛù§˜ö¿ÛÎïÙÎïÛÎØö¿°íïL:ÿfÒù®¤ó§“Îw'�ïK:ßŸt~ 	1éüRÒùå¤óß%�¿—´%iÿjÒùµ¤óIçƒüÊo&�”tþqÒþ'Içw±Âÿ‰?¿�?ÿ¾#??˜rþbÊù‰”ó3)çgSößJ9?�Éÿþ\ºò#iÚ_N;?–v~ÿÇ´ýÒöo¦�oÎï¥�?ÀÔ=ãüHÞ,cÿdÆù)x´ÿTÖùÞ,$ý$þüz~~´?ÿþ|o~~ºèüLÑù�ŠÎÏ+ÿIÑù9Lûùbåo�ÿ¬èüÝ¢óŸ�ÿÓ~þþüý¢ó?áßÿ¹èü/Eç�_+:ÿ°èüFÑùÍ¢ó�ŠÎ?ÆÌÿþï¢óÿâßï(9ßY‚¿ß�???öŸ/9¥äüxÉùk%ç'KÎO•œ¿Qr~ºäüÍ’ó3%çç°ÜÏ—ì_(Ù¿Xr~	ß~¯dÿ~Éùj ìüpÙùKexü�ËÎÏ–�ÿÿküùûeçWðï?,;¿^®üFÙù­²ýÛeûŸ”�VvþyÙù=ÌüÿÊÎw,ÃßïZv¾{Ùù|üaüù±eç¯.;?±ìü$¾ýÜ²óËÎÿÏÎ›‡W•]gÞuö¹÷î»%�Ð,î 
+»\±S¥2•*Û±“J§“j'·ÓI:c§»+I·wg¨ªníîˆyž�„@!FB „$æA€Ä<Ï3�€ï÷ÞTaÇéçùþúºü¼ïz×ÚkgŸ}öÙG^›ž¹.={ƒ›ÓÃ[Ò³wHîIÏÞ›ž½/=»UÞÁôìöôì#éÙGåOÏ>™ž}Jò¾(?#{`Fö ŒìÁÙC3²Gdè
+DóD2²gdWfdWed×d„Wdd×ed×gdoPá¶ŒìíÙÍ’3²/gd_ËÈ¾ž‘}K�ŽŒì»²Ã3¡Q¢™Ù‹3³—df/ÅË¬ÊÌ^—™Ý˜™½Qe;EG3³�g†Ïef_ÉÌ¾«ÀÐ¬ìáYØ	YÙ“³²§ Ã³²²Ëege/UQ­h}VöÆ¬ìÍYÙ;äíÎÊ> {Xt,KûË‹ÿËú­ÏÇbqm9OdZä¬‰�DND"'#‘S‘ÈéHäL$’>	Ÿ‹„ÏGÂ"á‹‘ð¥Hør$|%¾	_‹„¯GÂ7"á›‘ð£Høq$<8ž
7F3·E3wDÃÍÑð”œÈ„`¸<'øJdl(s­lq(Ë�¬
…OçèYÌÉ<›“y.'ó|Næ…œÌ‹9Md¤�™Qq3:nÆÄÍ8Ld|\Oˆ›‰q3)n¦ÄÍÔ¸)ˆ›iq3=n
+ãf†šš×³â¦$nJãf¶æÄuYÜÌ�›ò¸™§„ùq½ nÆÍ¢¸Y7q³$n–ÚHmLeõŽ¬³‘�½¹ÁÛ ¬×#WÔàÀpVÿÈÁpÖ/E´ñEÆ±)eýëÈD—5<ÉOˆt¸ðð>YYmHá}²Î¸ˆ¶%
•M'ë+íHY¿¹—YÕ'¼§OxoŸð¾>‘…Ií<Yÿ+2¿[Öw"Ú{"Ú{"Ú{4Í)‘¹ÙrcÎ²”HEJL-ÇdÕ¤DV¦D.åF.çfÕ§DÖ¥DVŽlˆ§4Q3®´ËDî§D´ËD´»è¶¤j&S#eq·\î2ÑÎÔÈ½Ôðì¾ñùO‹¬J‹hÓˆœH‹En§Enì›5#1¢ý!¢�Aw4=2?®Ö¤Gô\Gò3bîÀŒˆäH¥hC<¶-#r?=ÒœÙ÷/«ìZFDÏl¤##r7•Y�¿E™‘¥1•õ§‘uˆH£hgfdcfänfdhVD�hd”UâE¦dEÊ³â75+«*3¢ç3¢Ç2r +r8^r,k¿ç…<ç…=ë%y¯{=½·½T/ÙK÷²½¨—ÛÇ¼Ùè¿Ñäoô7ù›ý-þV›¿ÝÿâÿK;ý]~³¿Ûßãïõ[ü}~¿Vÿ^ûò~¿ÍÿBó•7óB/©×î{_ùb³ÓoõwPùK�þWOúŸMzõ­Cþ)ÿ ÿÅ]Ï·NÛmþ~ÿ)ýóLè¥õÚýÓþ—Þ}Ç4úgüÏ—þÒ³fêØcí§}=/dÎù�4÷µó/méõ¯›VÊJi
ï|±·Ï^½|ù›æ‚ÿËý—·qéçí¿iRFCÙ—¹ŒÞW|ïªïÎú×|?ð­ëþ
ÿ¨üÆM?)|Ë¿í3ŽvÿWî�îðïÆÝ_½'·Ó¿wß{ ·Ëwí‘ÜÇ~~ æþú€îBßÈý×ƒä‰—þÆP¹ÃÃãîoŽ�;20*î¾?Zî˜ÀØ¸ûíqrÇ&ÄÝßš(wR`rÜýí)r§
+âî¿�&wz 0îþN‘Ü�â¸û�™rgJâîwKå.òÍìØ ÿý¹e�¹ñÒß+—;/0?îþþ‚ØÅÝ?X,·"°$îþ‡¥¸¡erþ°R%ËUñ’?ª–[¨�»¼BîÊÀª¸û'urWêãîŸ®‘»Ø7
±ýÙZ¹ëëã¥ÿqƒÜÆ@SÜýó�r76ÇÝ¶ÈÝØwÿb»Ü��q÷/wÉmìŽ»ßÛ#wo %î~Ÿ†ÿW<%¶¢Ü3Õîï„l[ÀüÍÁÀ!"	Ï;í�žÞ„„
+?/É	
´û?:¦¦*|s4“ö¸òÿþD,?üs2ð?OâÏ„×=¼Ô7§½3O"‰Ký<“üid�Góƒ<¯[B•Ÿ·Ü?0©íþXïœº¨ò—û&®S&xy&e¼w>p�\|vÅ{)^±gzæR`�w9pE—�÷ö§n&ýdÚåž¹¨ô®8ì',§QûÔ¿AÃ¯W{¦ÊÓ>u+p;ð’Ý$ß{ñ	o~Ù^•ZM»UÞË›(öîÐQ÷Ý–UÞÝÀóe+=í£Ý^Zv�Z}W{¦3PçÝÿÜõç{ÿÌÞœ²š1u{yå4�h½
Þ¯Íï
+<<b>ê½/1Ï¤g©ài�IÌzm›g¶Æ&©300øÙÆÞÚâÝœb@W?cŠrwzfG¬�öÔAÁ—½i>­útÿä:R›½¼]žì9$Øî
~¾êkÍ	C‚/+{KCÛâmç2wÒvý?íéù~¾ðúo·g†‡¿´•|ïçm'm�——ö3ZÁ5xi_nñÌ^¯30ò§d}üów˜ÞÂmþYmµû£‚ÝB­žÙç-÷GyLZ©‘*¯=æ�	&µIÆàö{ã‚ãƒª˜Ð¦ËøÔÿ¸ÍO�4ÅÞ¤à-ÖÏAorpJðóË=uªr
+b9‡¼i/Íé~”�xÓƒ‡½Bú,
+ÎŸ<×‡=ï¸—^í›™Á“Þ¬`IðùÒVPsl:þI‹#™´ãÞËKi6½F�œòfÿ3�ÔÄù|âéq†¡Ë*çoîgR<“ÙáÑË¯<øÙ²iÞgzJé ­—ç¶ûó‚Ç½î÷<3?¨Á´ûw½/d¤.R·Ó[ôBô…ö³h(÷½ÅÁŸc0©bƒyyvƒh÷“ò�yÌN°$vÿ×x�{ôD&¼n÷—Ó“š&×,6à7yƒLeP›G¢Â¦Á�{Oª§.×…6U?ýBÒkuç†˜êæÎÕÆïÜçk˜ÀÔZõ3Ô¬øéý„VÍhÞV«x¼ŒÄI&Ïšºà5VîD³:vun’1mþµÀS¼I(0Ô˜jêcþÛü5ÁÄ“÷\¬Ýo&'k÷“×O
+ÍºøÅË'2Ë¨ý™f=}Z#/®ÿÎ‹„J
/é³7ÔäÕ6×4¡úívÿ©»1èÍ3ÉKç×MA�_+Ìæà–àÖàÓÇ+s‰Ýø¹x³6‘�wqõý>ÙÉ¦Ü·Ò˜mÁef{ð_þv©äò^^wG°V¯øZ/Tcª�YîïÔ¦Scòp¸+qW0q…É«5&µ9¨�hwPQ»ÂÔªFÜ×ÓXmöŸœ$êé3ýÓH»¿7èVù4ÚÌmðÌ>Í�§Ú[gÂût·ZLëÓ6öÅoË§±ýÁP�ª´™6�³ŽÓÊS§Ý?ÌÍ=äÝrÀ
+þ?ŽÂæ˜©ç19jÚƒ±£QŽ[í{8¶¾N›#/]ÐQVëEs,ã&]Òeê×ó’.á5�r<hNÓ´I_6'ƒ§>7ž¾$¾¼ìŸkßkæª¡òéà™iÕÔXÕ¼´—W>Ëhí¹ Ëú†9ÏŸ3áònš‹Á¸ŸsÇ˜Ût})øâbåX±›s×¾ØŠmŽ­Y½
+[Y·¹—u¡æÊ¿ø–ÜÓÔÞ5WŸ®†{¬†O×‚éí~J±æz�³S»ãs]„êµ7=47õ`Ö³Fžy·Ø4C·ƒ,ŸÇæŽJø<Ýù~G¬ñeÜÂÄ>;Ì§±»š�{AÓäßj²ä
ö»b^Òpß<ft’6Ì|Œï#‰„;ƒÏG>jóŒí3ÖÏkg³ãç‡´¹Œ}¦Gù^ŸÐ-óqþüÐŸÇl¼?ížÓƒBÆÖúy}s�¶ò‰þ`e¯UÍ¸öúö˜â›Éþ�P¯¡!†úìüäRÜÊÜNö‡†>_úÒ?Éx½ì4MX�?œ~¦ú	Óâ“÷GÐYB‘o
+ý‘!N5¡Ø–uâÞoºvõbßŒÍðÇèâžÓcCuœèÛÙºžR\(ö¼ÍõÍøPl’Ëü	¡g“<W“ü|„INœ§`¹?ñù`Òç‚“B¼=0OñvçûS>mw�²Ÿ�ÐÄÖ¯XÏX°&h}k½°õœ
$Z“dM7L¶¦‡õS¬Iµ¡tÊ°&ÓÚlŽX—cC½lBkrm¨¯õ^µ¶ŸMü¢µ¯ÙÐ—lÒ/ØÐ—m·_´¡7lðMË|zoÙ„¯ÚîoÛäwlè]k¾f{|Ã†~Ù&Ó&|Ëº_±îWmÂ{6á×lè_Yóë6å7lè7mè}ëþ�
}Û¦þ¶uÿÖºß±iÿÎvû®íö»¶Û¿·é¿oC`ƒÿÁ&ÿ¡Mþ#›ôÇ6ô'6ãÏlð?Zûç6ô�Mþ›ð—6ù{6ùû6ôŸlèC›úW6ô×6ô76ó?ÛÌÿb3`3hþÖÚYû_mè¿Yûw¶ÛßÛô°éÿhÓ?²éÛôOlú·YÿÃ&üØfÿO›ýÛóÛÐ?Ùžùží9À³	±ƒÀ`0%6;Ü³i#Ð#=kF�1žuc=‡ïY;Á³©‰Oòlöd0Å³ÑÏ&O£îtÏ¦z6§Ì@óÉ™3“:³<Û«”6çx¶÷\Ú)'6Ï³}æ{6w!m-Â.ölß
+ìÏ}Û³¯N2öÕÉ`
+˜
+
+À40‚"0ƒ™`(¥`6˜ÊÀ\Pæ�ù`X�Å ,KÁ2P	–ƒ*P
j@­±¼j]ºgû­26Tgìê±kŒk0ÆÕÏ~q�±_\6€FÐ6‚M`3Ø¶Rg›±¯íÀî4öKÍ`7Øö‚°´‚ýÆ¾~ÀØ_8ÚÁaê1öËÇÀqc¿r‚å
+œ&~Æ¸ˆï~Ós;�çÎ�¿ñÜ�n
ê
Ï�7A÷ÇA·ÂÜrÛˆaÄæµ¹š7/b/ûÆecó®¢¯»Ž½�{Üwˆw`ï’{ËÈÞì$ç>š+³’6àw�‡Äac™)“ÏîÊ›Xö3\™âÛ7†‚aøÃ±#°#}ûæ(ìh0&¶3[3ŽØx0LômÞ$b“Á0¿;
LGÒNv¹ÅÄ¸;†»’7~	(³ñç�W†ž‹-Ç2ÓoÎÃÎ(_Q¶T —ç.ä-¥�ehîš©$¾œò*P�®!ÎJx³»‚ØJì*âuXÔ›«‰Õã¯Áo@¯ëÐë‰mÀ²ÞlÄ6��€c6aYonÆ²¢ò¶`·‚mÔÑÛkmì»ÐÍØÝØ=”í-øû@+ØÚˆ œ…ÿÆAì!b¼ZósMGð�R~'ÀIpŠøiìp}Žüóàú"±KèËè+€UÿæUb×Ð7°7±·°·±w@¹w±¬ts�x'¸�ÿt¡Rþˆ±<ÆÏg—°y±ƒöÍÁXž¬7‡ ‡¢‡�á`þH0
+=ŒA�ÅŽ£îxì„€}c"±IèÉØ)Ä§bð§63[ŠÀÊŠ±3Á,t	(³ñçP·Œöæâ—ãód›yèù`þB°½T€%`)±eÔ«Ëñ«@5¨!^V W‚Uè:°]�ew0ìo®A76@³–6ÖQ¾l ÖˆmÒ¼vŽ77áoFo!o+vþvììN°4ƒÝ”ïÁî¥ŒÍîÍì>üV°´�Är­‡°íšú?Œ}#ç88N?E›§ÁÊÎbÏaÙéÌyìqÍ¸@îEÊ.»Ø-ß¼‚e74W±ë=Öå×É»n‚[ø·Áúè ç.±{ØNì}b(ëÁ#b�)ËÚ7€�AÖ†à
²ß ‡cG`G…�?&hCcƒö­ñA76è¹ÿä¹ÿp¼4ÝÄ ÞzAÛ2˜´_�¨D-^E¦ZÐæM§¬Ÿ�_L|&v>¯¥þ%ØRiÀk¨ÿÊYE¦Œ:s‰•ãÏÃòú2¼¶¾:Ÿøå^MfþbrØ1Mz	XJÙ2l%ý,ÇVqÕØPK¯P¾êmÿ•èUØ:°Ôƒ5Ä¨·»=ØAØHœ×hVÔW7­·™Ü-Ä¶R¶
½»'v¶ìF³júï¡|/hû@+e¼®óö£Û¸VTÿèƒàh§ÞarŽ€£ècØãØØ“ØSäœF�GŸgÁ9üóàú"å—°—Áp\#v{{Ü·É¿C¬ÜÕýàúî¡;Á}Ê06vžþ]è‡Ä‘ó�²ý„Ø‰°ƒ°ƒ±CBö«¬˜¼¡øÃBöí!ûK£Àè�
�	¹¡0§¨�}w\È¾3žò	Xîé»CìB€¼wØ�ß�‚�J^˜¦ƒBbE@+r¹3Á,P²_/
Ù¯Qïë³Ñsè»;ÐÎ×ËÉ™‡�hïëmš…ä-B³“|}1º‚6‹YBÙRô2Ê*e}û5í¼Ëñ«(«5 ¬ œñ|}%eŒÑp„úú*lþê�ýÆš�MmÀ_r
!g¿¹.d¿¹l� ‰²�ØMØÍØ-`+zv;Øv‚]ÄšÁn°/hûð[±ûA8;„mçšc�€£àþqì	pœ"ï48ƒ>Î…ì·.`/‚KèË”]A_×Àupƒ6nbo�Û”ßÁv€»àè÷ÁÐ’ÿûä[ûÍ` ƒ!`¨e­`‡ƒ–ÝŒ£Á0ŒãÁ0L“Á0€i`:(E`(3Á,PJÁl0”�¹ ÌóÁ°,‹AX–‚J°T�jPV€•`•µU‡]
ê¹žf�dÐkÑ¼‰ó&hÇß­}½	»	l[ÀVkÀÉÈlGï ÎN|�àvá7£YÛ?àtùƒÝ÷	ö‡{¬ýá^Ðö�V°´�à 8ÚÁapppýáQì1pœ'Á)pœgÁ9p\ ëKÖ&]¶6÷ªµ	×ño‚[|]Ýà.¸:Á}ðt�‡àxòÃ6a@Ø†�!aûÑpÀØ?bÌ�@�Œû£QØÑ`Æ®á#®å#ÆøÑx|®á#Æýãþh>ãüˆñ~4ÍØC“Âöã)a7)ìÙO
+Âö1Ÿp˜ÿdz:(E`(3Á,é ý¤[
+fƒ9 pk?™‹-ó·çñOæ£€…`X*À°,•`9¨Õ p;?á€÷I-z…ÚÜÞOVaëÀjPÖ–Á'
ê‡|�Ÿ¬E¯ëÁÐšÀFõÍ˜6)»»Ec@oÅnÓ¸Õà#Æ´êP°¡]akw‡­ÛÃ–¼´‚ý 
Û<æPØþä–>Lðƒ#”
ÛîÇ°Ü#sœ§¹·gÂöŸ8|þ‡ßÐ¹°Í÷.Pp1l/…íïrØ&_	ÛAÞ5¢7ÀMº¿Eµ;,�»a;Ü»/z ê==qî=–ÊwÐgGxƒDƒ8WÃñ%4=Œ£ÁgSÇ:›0Þñ…>I4™èÇ §a§;›RˆåU=Á+RÖQ±h¦h–¨„ŒR‰ÙT›ƒS†�ëìx¯\ÑyDæK,p6{!Î"9‹U^!µ„ì¥`E•Šò¢Ÿà-WQ¡jPjX!Z©¤URuR<ûy«©_¯ÈQƒh-uÖI¬mÀk”hBl”Ø¤ºzo&²…ú[�í¶ÍÙ‰j°Ûg'I„v1I»)Ý+ðx·8Úö;[àqt	pn¿óì4ï�ƒÚE‡©s„ücà88�ÒÙNf¦±ÅÞYZ8.:[â±‚Þ¾ìÜEZ1ÜåÙÞUq(�í]“âHj®Kè›ì†D½Êø
+zû¦³eJ/ó8?—y|P˜ÛòFÉ»$º#—Ôrï.#a³0ú‚ãºçz�ß¾çì|ï>3ðt�‡à‘³o?vv¡7 ($,"*&.!)%-#+'/š š˜À»	LSA˜¦ƒBPf€b0”€R0Ìe`.(óÁ°,‹AX–‚J°<Á¾]•`mM‚]æñ.óVH­=0Ð*)ÎòË<>âm]‚ËØå^=U×$ DkXMëED�¢&ÑFÑ&ÑÕÜ,U¬ï0‰­¢m¢í¢¢�¢]4Ù,±[´G´W¤/·‰}¢VÑ~Q›è€è`l êê�T»è0Ã="q46¶ tŒÐqy''ccT�Sx§å�éËà¬Ä9‘~šr^âI%.ÅzU½Ë	,Ü+	îo�jï£¿ž€à˜ZíÝÀ»	n)rq'ÁVéA®ö:º+â›wOqN‘Õ^'=ÜWøé]
+?D<"ÊÆXí=VQ~"a=ßñ&Ú¼AƒEw«¼:u>DîJ¹CÉ¦:Ã!5RÄ`•7J±Ñ¢1"ŽØycUÈÙ5oœÄxjOPÑDÑ¤D–©ÄÄT‰%iÇ˜&1�ì¢D[ëS>3ÑÖh †·ä
+�Ój�§öÌR˜ÎkT­FóaJíJo6Uæ$ºßæ‰D®Ö¼Ú›KƒåÌÃÎÇ.P	ÂÕÞ)6†…‰¶N
¬ö)¾˜¤
+‰%d.ÅY&§g9N•œjÕÐäÕÈ«­­­"³Nb5¢^b�è‚5H­­­m�c�ä7ÉÙ(ÚDg›%¶ˆ¶Š¶‰¶‹vhÌn�æbµ·S±]¢fÑn•ò5½ÚÛ#w¯¨EÄ7R�æ«ÞkM„ö‹xQ×{mRDE‡Dí"¾”×xG!òÖxG¥ˆŽ‰Ž‹NˆNŠN‰N'Úï¬èœè¼è‚ˆÃ|ƒwQê’è²èJ¬@tMt]t#Ñ®‹ÍÝ-fàè4“}7Ñ}œèþ{¢mô:E÷EHì’x(zDêc‰ü$Ûä
LâáLDBœPx0‚ëÚà
IÂšÄš&2peæ€RF¨d¤h”Ú-Åvn¸®¼1rÆRk5˜s\­�ÇÙ¯Ž=¥ÀDUœ¤ÜÉ¢)Ä�¨é©&Þ0½†y6øLk“7
Ñ¦ŒéÊ/L²YEIîÉ`~6yÅIÐLR˜ÁMË&o“e˜+sY9%Ê)qH1Ì¼aÆón˜qÃ„fÙ0Éæ¬Òg'¹²$Ú˜Ê“lÏyIv‹· ÉaÝßÜóì6o×¹T$Ù­Þ‘~0½”È2P	–ƒ*T'‘_#Åc”WK£+Ù¥fVJ­"TVS£^�5ˆU8¢ ál ´Q%MžÍk"°l[À6
+w`w‚f°�’÷àì•hAì<|yûÕ.o�¼ìÂ[½ƒÊ9$:jP1v‘#T9
+Ž�ãà„jèçÕ'qNƒ³à<¸ ‚KˆËì;Û¼«x×ÀuµxCtStK	ÚønËë á®"�òîã=�è=Ä{$¡
ÿ±ZÓ|åwƒxP·êAÝ¦
3o@7›7îf·{ÃDÃE#D#»ÙÐ¨nv§7¦c‰q¢ñÝl·	Ýì5b&*2IÞdÑ¹SE4:M!¾Bvz+õS3y‹‚P!e÷.R¨T!ÝÜS
+S6Sáyú�šZ*‘7_I¥RMR³U0GT&ÒˆæJ”‹æus¤F7Ûì±57{is×°X‘
+œ%Ýì.o)‘e RÎrQ•¨ZT#ª¥pX)g•¨N´ZT¯¦ÖˆDk['Z/wµA“"ÕO±IÞf•om%¾M!–Ñ.o»ÔÑNÑ.Q3»%öˆöâµ¨â>y­¢ýrYq»¼6©d‡TÖÎuVôˆ¼£¢c¢ã¢¢“*=EþiyMjæŒÔYÅÏ?/qAtQñK„.K\¡é«8|ð5{×T~]á¢›ÄoQ~[Nâ®ÊïÉëÝ=P¬Kê¡è‘è±ˆ½Àäw§p@wk‚AÝ‰

íÎ¶ªòáˆŠŒ�Rh´huÆ‚áêaœÊÆãMPÑDÑ$¼É
+O‘7Uê ¦¿@î4¹ÓÉ(¤õ"Ef(R,š)š%*¡°”$ž‘¼ÙJšC Lb®ŠËEóDóET°Pji‹åU –€¥Š.S¤Rê±Æ±\ªJTM5µÊX!µ’ÏhÞ*l�«õ`
­5(m-Î:•¬—·AÔH¨Ib£â›¤6‹¶ˆ¶Š¶©`;Mì;åì5«l·h�Ü½R-¢}¤µJì§é6•ˆÍ#áCíˆÃG”tï˜Äq…NPå$‘SØÓ
+œ±£6{g•t.ÖK±ó*¸ ÷"ù—ä]]]¥ú5•]GŒÔ½¾AÒMpKÑÛÊ¹ƒ×!qWt�ÄN‰ûˆJê=Tè¡Çòò“ñ$³%J
N&>Dj¨h˜ÜáR#¤´�”¥Ðh©1T+1N4>™ÕGd"v’r&+:EjªT�Ô4ÑtQ!©EŠÏ@ƒ™`(Qii,Y[Élš›£¼2…æJ•KÍ±—²øÈX øB…á-¦™
+9KK	,ÃV*e9¢J%Õ¢Q­â+¤VJ­’ª#m5õkõŠ¬QYƒÔZâëä­—·AÔ(âu–×¤øF6Il¦•-`«Š·‰¶‹v¨l§¨KÑ.Åšåî&w�Ä^ZhQxŸ¼Gú]ƒÄ~Q›â¤’~H^»¼ÃRGDGEcÔô1Ú9žlÓN�y*ÙîÖ´[ë�w::Cü¬Ä9ž'û‘‹r.‰.‹êT‡G"ï
+eW¹¦*×ñnHÜTˆ—Ä½$öh[Ê»¥ømÑvHÝ%ÿž<=<�Õz7Jð¤ìöÄB¢®ØHö#‰=êþ1•ó{ xÎòHlVx ÔyÕ$uAêŠh–.qpk†ô°yCUV%W8LÞpŠFHpûòF’3JÎPå¬�–;XjŒï�¼±ÜÄ¼qãEzÐËD©I¢É¢3×”X�ÈT:*Óècº¢…¢J*"4+2StSó§»:Kwp�Þy¥ÔŸ¶-úÆ7³{Ø½zw´xsz@e40”+¬_aÎSt¾<�3Pu¡"‹D‹E„–Pc©œe¢JÑrUáå’W%ÁÃÕâU+^#ª­ñ¡Ÿ·RÜ³o•Bu¢Õ¢zÑ•ò¢iñä®•Ë¦gÖÑïzE6ˆcaQ�ºÚ“m”Ëþ^öz›¨°Y¹[íV•Õ)u›§�o»ÔÑ
f§rw‰š©°[b�h¯¨EiûD­"žU®Em¢¢ƒÔ:DŸíJ`CÜëVøˆèhl¸½ŽÉ;.:!:):%:­ŒÇ÷Ú9«Ð9ÑyÅ§Š.¿(QªÁ_¢§ËD®€«Š^#p]5nˆnÆÆ«ë½%÷¶Ü;R¢»r§ë�’`¡´è''y�òîÓ`W»Ï{ˆxÔÃ¶z�i9?…ç4ø"�Á)< Ø¡Øa)GŒ�)•bÛ¼1”�•àåš7Nb<IÀD0I�NÃAƒ´)r8z´yÇõ÷ò
+È™¦ƒBPDÚH¾f ‹• žN{3)˜J((UÁlÑQ¡¹ œâC>f¾M‡¶6¯\îÀ ÄŽ™7OÙ¼ŠòæK,mtÐ5¥êOXªwnâ¢[ì-Æ¹ïì�ØLÆ‡x(RpX¸ÅÞR•W¦ØnU)ö°W›bC+RÜ™°g�(ù¨·ÆGÝ6¨²´Kî U!·Ft)SòM¹årW©µº{Ü[“bO¨©ãÞÚ{2®Ö§ØSR‡½Æw@?j=Ì7è!gÏxS M¢õh³ÔÑVÑ6æ¦]iÛSìiµpÆÛ¡øNß¹Ç½])öœ·;ÅžUé9oOŠí±—‹jûR\KŠg/x·}H[´_lK±—½ƒ4|H�ƒÃŠI±×ãƒ=žboÄÕÉ{3®N§Ø[qu6ÅÞŽ«óLòÅ{'6É—p.ƒ+à*Øæc
{Ü7Á-p;Åvh�w4æ¼;ê¹#ÅÞóî¥Ø»ñf;Slg\=H±¼‡)ö¾÷Hê1CÍO%> Õ>ò‰‹†ˆ†Š†¥Úôá©6ßŒ-I„FI�]ØÇÞ˜Thlª5ã$Æ+>AÄTæNLµM§o˜É©Ð¹SEr§‰¦‹
+Sí 3#Õ6yÅ*�)W¿fœ%Q¢–¦ÚÁ&v	sRí�¸š›j‡ÆÕ¼T;,®¤Úáqµ(ÕŽ�2ª¿$ÕŽ’7ÚT¦BËo¨5 6Õ&­Hµcu…f•DÑzpÂÚñ¦!ª
@k¥Ö‰Ö‹6ˆEM¢�¢M¢Í¢-¢­¢m©v‚~–8Aãfw¤º?ØIf›Ð‹Ø•jóšéŒF&™Ý8{À^t§ö&™Ñ>Q+EûAEŒ!ï€‚qè2ï�œvÄap„ Ì;ŠmTÁ1œã8Œ?ï8‰fŒâ$sŠÀi‰3ˆ³à8Oiƒ‚Dñ¸’¼[>«{YÁ+¹î¼«à¸n€›©6áVªí~'ÕNÑ_ôLÑO’¦˜»©î�[`:©Öb÷­ÜëS`ŸµyRíTÓE°]¥')9¤_†‡­9«_ˆë7vúÅy˜LÝ½ý8mÊ~„sDâ1bÑcà4�æ§�fÍQK&¦ÀThPÛ:á14yFECpô›àÃjeh‘a¤—�	FÉ­Jà¸òÆ"ÎIŒCœ—¯Æ'¤Ùä‰ivš™LxŠM$OM³Ó%Ì40‚"0ƒ™iî›†‡mQlrFI”P0š
 ;;›�ÌeiÎE”KÌÍ- ´P‚Ë4ãÔ‚.u‘"‹EúåÑÚ©�³D´T´LT)+ZNåª4;Ã\f~jpjÁŠ4kW¦¹~¼´:¬�eêˆå‡«Ó ýVÿ1x_EõŠ¬¡üŽ¼ykEëu‘ôPáõŠl5îT¨IÞF¼òˆ6)¤ßÍ>’·YÞQ5ì]…ôÃ”{[Þ&âcu–ÙžfKÍNÚÚšÁnö ö‚9ûÒlJkš-3DE‡ÒìÃ9¬Ì´Ë¥ñ2sXêˆè(sy,Í¾}œN¦ÙrÍÏ<sï“s.Í.0D«“¬½˜fšË¢+i¼'¯¦ÙEÚˆB×ÓlðFš
ÝJsâÙ%Ú–˜;iPílgÂg€‚0NKÌ]•*IrxOÞy¢JQ�¨^¤?¥è¤••ª]ëC»^#µSê„è¤ˆ·qÞ}5vI…7õW†ªtB»‹ÄšYÃ@6Ç¢=a×º•„èRµ‡¢ûª;*`11Òm¥þ8m™Ñ$;“ð¦ã-Ó_Ú¼µa<ŽÛËô«ËJ3Hùú)ç`eq–Í¢H“²˜¨J34�óVº]®Y¶ÃqF¥Ûj31Fb¬h\º­1ã¥&Ÿ(1	1YbJºM�šnkÍ´t»ÂLÊ+U$šAj±ÄLÑ,<§ZýµË
+S¢Piºí6”�òt[oˆŠ¥ÛôÅÔ¨�³±Tb¢Rb¹¨
+ïq"¢Z^
^­Ä
+‘~Ì¿ŠHX�nsëÓmBCº]gÖ§Û
¦‘hØ¨È¦tÛd¶Š¶ÑéötWàé'…év“ÙIÎV‰]¢feï&´7ÝnÑ´­3-év»^Øf?á6.ã8”nÓ§»<»ÛŒ4¶Ywl·9–Žâ¾5ë&5ë&5ëFìÖ_ö™évŸ9�ÎžFœ‘·×@g¥Î‰ÎÓÁpQÎ%2/K\]]#t�òrnŠn‰n‹îPÖîÊ¹'ê$s™~0“n÷›É\nÅ	ÎO&ð±�àüî¶5ö²×O0ø$Í}œn{È°t	b¿"ï`£’aó†�á¼=À¨{ÄŒFŒcÁ80L3ì13™ì)SE¢áIÐ4¦ƒBP¤èQ±ˆzÌÌ”š%*•Šf‹æˆÊDsEåö„)N‚¨vÂ”èCt©ß§ÌWÑLÍÍæ	YHÑ"z,ãÃ\)è%`i†µË2lÏå ¿6Ãž3+3lÂ*œÕ`
hkÁº›¾>Ã^2�8M`#Ø6ƒ-`+àéÊÛAo;3�¶+Ã^3»3ìUÃÇô5ÃÇôUýÑÞUÃå5³G¥{Uº5bÎ¯š¹w»S°�6Z•±_Ä‡t^›ÄÑAÑ!¥¶K­T“ÔÍqåîQ»'TzR±SŒø´D“Æ¥»}FÞY%œ“Ú¥Jlç×Ìy¹¬”«†/¿„6t)ÃýŸWhƒ)]ÅÞÈ°i73ìsØ‡j‚ö¶¹-·#	jUì„þ¼>`ÓîdØ]oG¬×{öžéärÙÌ}9D]¢‡¢G"ö†¼Çù™Ð€L›Ç&qÏ”7(ÓšÁD†È*b]¤Ë´÷Í‡án#3m—ÒæH5ZîÑ8�¥…q™RáxÅ›<hñ
+6ò…aœ‰JÐ?ãX$oEK9,�„¸˜.3™p•ÊGBlÌÌÅ§¨Í©®Va�¼ñêyš“Õe¦S¸V…/T¼H4CÄ…QêŸdÐe±"3E÷Uq–o™.3J5Kh§Iƒb7êÒìw™R�ü±†Ñ¥vF*m¶jÍ•‰æŠÊEó”¬ma‡3F¹k»ó50?Ó†fZoQ¦Í­Èt5	ÚƒìY&TI¯+äm	@Ë3í@¿ZñïË~­Ô
+ÑE¹+¥Z¥VI–ª“Z-ªÍTSk¤h}e‚ÍX›iùúYŸi36dÚÁ1g…g3š2íP‹`s¦âo‘§äV*nÛÉß‘i‡û»DÍ¢Ý¢=¢½¢Ñ>Q«h¿¨Mt@tPtHÔ.¢ÇáþáLk�dÚ·�Ñþ	pœ§Áp6ÓŽòÏ‹.ˆ.Š.‰.Sx\×Á
pÌ	Ys{Ü¡ñŽL7ÁØ±þ½L¨“èe‰û¢¢.ÑCÑ#Gô±þc©ü,h€h`/jÒ±9¯¢AY2¦Ü!Y<&Yv‚?B4R4J4Z4F4V4Žôñ`"˜¦fÙ)¾NµúýRNzSüiYv²_ä£ô
5�ðŠî8…ˆ"
UÑ
+�Ù‰p,Ô¾eŠÕÔÌ,;Õ/•ˆJE³EsDeYÖÎÍr³˜‰iþ¼,h>
PnæÈY€ †Y(g´ƒáQÉÐØt¿"Ë¦/ÉrK¼î¶ÐçC»Ðç³»È_–�’ª”ZžEŸç¦BbŒâU´P­2¾n‹üÅ'(®£Ç
+ÊV‚UY¶Ø¯­Æ«—XƒhkåÌ66y]–�éëÓeÑF®¥)Ë&oBoÉ²%±‚­8ÛÀvÀ=0;³ìlYÍ8{ÀÞ,;'–Ù‚³´‚ýY6£-ËÎõŠáµgÙyþÄÑ,»À_n¡ÛA¨Rª2*·Zn•¨8�%'ðq›eß<IÃ§Àip†…rœ#~\ÐJ—Àeü+”]E_Ï²ýo o¡ocïdÙov ï‚M!»Ð¿—uŠî‹dÙE~W–]ì?$ãxò³íhñôòƒ�èAÙìé`(FfÛ
+b4Æ‚q`<˜&�É`
+˜
+
+À40�Ù6�¯ò<¾Ýóø_âgC3E³(.¥`6(å¤ÏË¶Ký³>4_J§½@b¡hI‹%*È\"±T´¯èŸ–-ÇVý¦jÖàÔ‚.ý7Vâ¬urô�ð@žm—ÅÆTO	_gË4ÔejÞ]XÖ‘±l@7‚¦l[éo$°	lÛÀv°ìÍ`h­ 
íà8N€SàL¶]îŸEœË¶UþyÄp\WÁupÜà¸ºÀ#�ßÓš�`0
+†�`Æ�ñ`"˜&ƒ)=íB¯ §­ö¦‰¦*ìiWxE"nÄ
+Op<C^1e3%f!J$J³%æ Ê$æ"Ê%ôÌÎ“¸¥6æ^ o¡hÞb‰
+Ä’žv�·T´¯,U
+T÷´›¼QmO›·¢§möV"Võ´m·Ícåõ¸Õzv«ýºž¶FªFªÃ[ÝÓ>ðêEkzÚZÔª`’þÆÙ4ÐÉºž¶Àl52¿©'Ÿá*ÛHÙ&°l[ét[O>·‹ôî�ÐÓ¹³§]©µ²Rkeel	5ScØö�V°´�à8Ž‚ãàDO»Ê?):…wZâ‚#˜^:�­òÏ*zNtž¢EÈÌ%‰Ë¢+¢«¢kd]7ùMìmÐî‚{à>èêÉgËCI<FäG"6o Ä Ñàˆ­ó‡DXO`F(81Jb4b&€I`
+(Ó#|pOîàjMT/�Õš¬Õš¬<½4ŠHœf‚0”�r0,‹Á°T‚*PV€U[¯»k¸t³:ÂÙE7±ž’5 !Âx­h�ˆ¢±þz©
6‚¦ˆ]ãoŒØ“ÔfÑâ[Á6°ìÍ`wÄ®Uy{#¼õÓü–ˆ]§¥cöQÞ
+öGìz6ˆrDlè 8±ö(¥Ç"Ñd{À¿…¼±‰w°œ1—éŒ:ðï‚{ 3bÛü2N…÷qDl³?:= ­‹ÈCZ�´ýÙA»Ã_h Rc]ƒ¡ÖÉ =äëŸ0æG­7 j[ý¾µ£ÖŠÚÝþ%C¤Ág
¾[á÷p%~œáì‘CÈ
+†Em»?<jC#pF‚Q`LÔf�UÁxÑÑä¨[oz¸-¦‡=ì
@çõ7Õ$‚"8gÜ*š§Ã€ÝçØ¤óÆ¶øùA¼ÂñØµ{ýf,€&�ZL#3Á,P¢þJE³ñæèB8®ðËðæ‚rP`Ü¼h7ôìáÆpmcéÜ[@ÙB°,`IÔæ.�ºeäV‚å *Úƒ#e5 ¬+£\ÕÍÔ*jñ;u-¼dvú³™´z²Ö€†(�ÁºIúç¾k‰¬‹º£áöˆß„³QcßuWC=ÜÝTzÚµy[£n­íAk|·€¡æñÎ;êo�ÚcþNêìŠÚãþnÄ^Ð¢îð¤î“híç–´Qt´ƒÃQÛ¨‡¡Ñ¿e #r�Šn„¡cRÇE'D'E§Äý«ijŸç£îwÓ\@_dŠ.EÝeMËÕ¨»&{�rÙ›Qw‹)»-}‹Ü;Q×!}7êîÉvFÝ}ÙûQ÷@öAÔuÉ>ŒºG²�¢î±l~Ž�ÓÃ
ÌAÊqƒÑCÀP0L±á9ì89®T¹#sÜ	ÛÃÍ¦ß­Lk›?+àN$öp£IlôÇä@­³r—såØëÆQw<˜�ã¶2É;t<lõõÏ!&½Çêœ„�œcOøSs˜è‚·ŽÕ¼	4‚­`#Ø~Ùs'L
+÷w¬Áê�Õè™«Ö?È¦‘ Ì³@	(³Áœœhª›L#]ÿ.yQÍ
sÏ§i�×é!¨UƒÓ�Í®ÔET‰ª©¹@ã=­³Kåúãþ•DWåØoÔaWƒú÷×^4Ý�	yö¬¿ŽÈz°!‡z×kvoÔíf¸�×äghÊa}m$gSŽÍÞ¬¼é¾›c2\9Øš“á¶�í`H”WÐ®ª\ä‘n¦ÏÝÔÚö‚°´æ¸½T,ñ3Ü~*u$fD3Ý%“Á]hÓUÌáb/´åÖ…ì·ŽåØoÏq3¶9™“\H>²üƒ6š•¼=˜<ÌºÖhvòMÅ.å@—EWDWs\M(Û]ËÉv×Á
pÜ·ÁÐî‚{ Ü@xåð¢~ÌèÛÉÀ^nP¯l7¸±úÇ®½X4`˜Ö›‚�
+
+z1€™Ð¶t7›ZÂÙÉwôaÔ+¹LesEk-�¯„yræ÷r…9·tE#¬ùˆ›†.`a¯¨[
+s¢n1¶<¬ç$êFäèùˆº
+bK@þÒ^zörÈíE^/òz‘×‹¼^ny¯^<G½Üb°�
+°�¼ª^½]5¨µ`èŠö¡­>ÔïCý>nU¯>®<@7[�ÞîC_¹nM¯\òsÉËuóñ‹@ØÎeü}i§¯[‹}€­À®ëÁP‘ó*mô£~?ê÷£n?ò¿à6öú‚Û*r¾à¶`·‚kÄ·a·ƒàþ.l#9ÍØÝ`ØÊÃ_p-Ø} !§
{Ü¦Þbüƒè"ì!ìa0}»œºCÑuè�Ø£Øcà88V�“ ƒvP~
+}ÜÇ/Ä?ƒ�=‹=ºˆŸÇ^chû"v0å«ˆ_F?À.Ç.$v{U×
+êˆ€ëèà‘òÁ-ô-ìc0L£Þb«5¦XÙ¹þ×è÷5ú|�ñ¾æ:Áâœ×Üì5P�.Ñ…ØGØüÞ¯1î×h÷57=4âÂn¿–Ìº½ýé¯Óüë4ÿ:]½Nìuª¼Î%¼Ît¼N³¯ÓüënDï_p#Áµè—Éû2Ãø
+Í}…¦¾Â2ùEì/ÒÖ´ó·æ
ÚxÃmJyƒúoPöF2{ßšÓ;ú&¯äÞt’Gò[$¿å–ô~‹
+oQá-*¼E…·˜£·¨ô�}•Ü¯’ÛÝß]LêO�þÄúsmý©ÓŸ9ïÏ½éO½þ®²÷Ûn9¨Õ lêõ¶[„]€• \‹þíüm¿Ã¼C»ïpaï0ÇïÐî;Ü¿whóæ÷·¦÷;Œç×Ðû]rß%÷]Öá»ä½ËD½Ë½Ëº~—œwYÛïºù½¿FÞ×è÷kÔÿqlôëô'|ƒú¿ì2¼è7Ù7G÷âeñ-×àË½ï¹^^ôWÜû«¼Á~•o’Þz»>ï¹&²‡CøXf�ÞNÁrÎ½;z»w=÷·ï±áÞó9Zü¢Å@ÛÑÅ{§Äw—mÐ]µÝÝuû^ô×Ý€ð{nPØsCÀ{ï¹]˜Ýá€ûË÷¢ÿÚ½ýîXø7ÜWß‹þ¦»~ß•ßçpð¾Ž]á¿ï*sÞ·§u‰ÐÞÞP‹hŸè …Z¥VJíïíÚ÷][ï÷Ý�Þï3Œ³.ô Êõv³ir/Å+Á-ÿ}^I}w’>*ÒÞwå ƒ¾®„Üµð¿q·Ü�0o�#\ñQp'z»»\Ë—=÷‹ßv¿ö‡¶2ã†:ÏÍñÞsÁñÐo¹G¡ßŠþ¶f‹îOö†Nõv#R~Ë�uÎ�wïñ±MKwØ&£ÿ–Ó8ú.Ð?^Ñ‰ýº³·û�ßqÛÜ·Ý°‹æw»÷Ü>ììI÷^òÞ`òàPòõ`òÁ`òé`r{0ùf0¹5˜|(˜<5˜¼?èªƒž;ë¾ãÎSé²»›`B(ÌeOÖÙb£(_‡‚»zûŸ“{^GÍGâCä6ùîžGÿ]ò
—\î'—’/	�ñ9ö~—þw9ú~——þw©?2�ö]iÂw¹æÇ\G~Ä`ö~:ÿÏ¿ëþËïºü®ûáïºªÑ�>|?¬Ð‘wX{5°#)úïÝbó{öfà†éÿ¸fTÞ”`$Ó‡àŠ´˜ÊXµÜž­²öZ Ä‡J(ÔGÎdUË!2¥Ä§Ë5ÖtU±©Šôa¨wÔÍTß­²¿ÇBø=²FÿL“ÊE`F›WŒ�¥Á5\]B úû\ñpùã8,.ûÜàà¸+	ßqÿíèp“Óÿ0úG¶S‹Õ,êÃJþcþc‰ÔÚ¦Y=pSzý±›
+>"keŸèŸ0€?uu}þÔv)¯+°ÁBÝºõ} ºD7!ãOéèO]«§¤õŒjƒJ&d@�RM".¯+°±�Í:Ÿh³h)kz3É[°Ó"6‹†³Z�/þ^g³N¤Û¬�è]à*ùkÍî>î“DW”ôgîü™Í.K²�s“l~°¥ª<É¶öq¿ÏÈ÷Óp[Ÿèä³ WxPT˜=ŽB‡ä¶‹Ö†¡"œíVl¾RšTpDî<¹]úÒ8J£§Á™>î»ßŽþ9·äl7ª›ÇIüƒè_°Ö>`Ò?`í}à6E?põæ7>ø�k~`‡÷§Cçû@DÛ»A¥:]>Y«¬²Æi•ð�`E*ItûÓ?à‘ìÃ­úÀ­
 ¯öá¨ù�«¦õŽDÕ¹¦Vxü‡ë
Ô�]Wl�Ô
©	R7¥Ž*ï–Ôm®äŽÄ²(†å^•ê�º+º'ªÓà‡pî”·P8ƒ–1¤é¸)iðAÂÐÐd—2Š‰‹òs¡¢�¢A¢Á¢!¢¡¢a¢á¢ÝUM4BîHÑ(ÑhÑÑXÑ8ÑxÑÑDÑ¤\›=9×íMÓ¼ìÖ=›¢p…<Uª —Ø4©é¢BQ‘h†¨X43×µ…?pûÀQ°äÞ˜Y*,•Šf‹æˆÊD¬Î!Á¹Rå¢y¢ù¢­ah•æïDÔÕqÃÌ‚\¾ÄsÝ¢ÜÜEfoºg£É‚ùËè{, ïÙaÁÅ¹P…h¹…–Hq‡—J-U« 2–"šßªR¬J.ëˆ©%ÉPM¬šRj¥*•Çb¡Z
+Ä£9L³;LS1,¸B´RÄ>,¸Jj@6´½;Ì÷Ülÿ{¬Êïñ=ú=.à{¬óï±ö5l–	¤üUéLžB¥òJD«sÝ‰äïGÿu?tm`œÿ¡›—ò¡Ûˆ­Ïý�Ëÿ�ö?äi{¤‡�ëí4äBUz>×J]•-Åë 3°Nª^)×Ki¢›O{ci¯	ŒñÕË©3Àº0r]½ýÐš:å7ªf“h·ïb©�¢M¢Í¹®œ†JÀÈà‡nV
+ÕvÐÄÎ\Wi?tU ,3ÈYŽ2øu=>tÑ�ÝÉßO~
+øãicJøC^Ç¼;û§ÜLZÌnŒ¸¹vWÍUöÃî+­†{Pýµ‹j°G|h±ÜSºêÃ¹îw¿m—û}¢Å€~Žƒàd.áS¢méÐi©’T&ö¯ÝÙÜ¿Æ9§È„t÷WÎMIù;!ØŽþgzÿîO£uÿîûnqÊw’Ç‡ÜV÷_ÜÒ”ï`à*S¾Ãáé†qË¢?t•`9¨=È$ÿ�	ÿ¡›‡?Ô¦ü­«kR~ý¯îJîsWÁ5pÜk)ù;JþÞÝWÁup¬Oùæ\ÈÝ\ëîa;±÷±Àž(›K®-2	…AÞ…AÎY…Á‡Š=1O…ÁÇRù}Ýøè?¸	Ñ°ÞÀ¾|èæºÆ”¿å­Ž
+†�á`	Fõµ×üÑ}Ý.F`ÆôuûR<·?å][Ê�Ü!l;8Žà'Áip–kùˆùûØíó1sð1sð1sò1sò1óó1sö1óõ1óö1sö±;O­þ'îžÿ	ßÒ}]-üw×	ÿ7½ï�Y?æ~ýØÎd»€
+ûBc|¨DG�ÓÏ�éçÇôócúù1ýüØ= ÍüÔtRýÈúŸnxj"ö'Ñÿåî¦þ„}ú',ýŸ¸‰©Ý£ÿÛ•’õOÌy¾Ç¤Csðxnnê�Ü<°,4¸„¢�žûÃîÿ-ãV¤ÝŸ
â5<«¯;çö¢C<—�u¥¢�5¥}ÝŽÔ€»•úž»“úÑ¡ž«Oæ¹:(œ•ŠnhY šíCM'âò¾:1‡Ý÷ÜÄ´7tøÃ=®d¸g³çõu³x'ñÜ÷èy„éÙo,âV®ôxƒ.FTô%}„² •v„gƒK/íëV¦Ü8o”í¹=×šö;®ÐýNtŒçNeŽå`*:-:#:žv§ÓÆyîÕ.‚«iß±¹Õ4Ujûºëi\w±þÿÉÂn½ï¹-û¥«A=X¤ÃÑ	žk¨|C_·YÙ·Ò<÷(í½èDÍÃ$M48-6P§bÅ‰“=7<=�âqŒ›ê¹I¢üˆj\b�Ç»ýj�f©À‹NóÜÔtçf§Û•�òôoGyÓ˜é¯êÐ–J‰fˆŠE3E³DK•²I·¥:õ•(V*š-š#*Í•‹æ‰æ‹¶rŠ[ðª«M/ôÜ¢W=B‹¯U›RKb]¼Ê+$VÊôt*Û–îþAÿW
+¯ºó%ÒÊy¢EgéšW¡ZÑŠWYØEž½é¯z•E]ä±óyÑžmð×¾
+­­m5Šö¨IŠwGƒ7
+qàiðë-4U±•6™�²„¶xü ME^w5Ý}Ó«ÐfÈõ…¶Gp·È=�Í Ö}—Ü�'Tõ²'Ö©¨E´O4£/T¬®Zå²A7ø‹¤nip¼Øüýrw‰x§5øs¥ÚDDEÛ_u›™Û¡©Çÿ°
+ŽˆŽŠŽ‰‰Ž‹NˆNŠN‰vˆN¿Ê!–éKïîÒßsëÓ‹¹`ÑöôD·[¢Eô¿­;ÀÒ9§ßï¿ê&tû¶cpÅ^bt¦ç¶eÎ¢’hkšæ%8PöëW£%ú)ôC:zòû‘PÊï­²Ð@©A¢E¹P½)Õ¥îñâoð‡H
èç§w�Î¦b†uÃø€ÊaiŽgsÎ&Ú>$rÆô³9| äð:Èáƒ!‡Ãk
9|@äŒíç
+½D7Ã+ãÖ‰fŠ0z6*·0k.»OFÀ-§éj°*ã=7ÄÓ×Íø~Lr¹Ö@¹Vgq:�¸£Ó¡�*Ø"Ú**	—ë‚Ê½è<ž\EÖg$ºƒ‰ó½è�Íy¾žgèQò÷ÝïûÑ…zÈi³ƒÆˆÊS úVÞéóU6_îBQ©h†¨Iy#ƒ‹Ô ´+ãûîBÆ{ÑÅž»”áE+<w5ƒr�¦:]Â"¬ó>?…né�ÇÁófÆ÷£K=w'ãû¼uúE—iÐú?žÞO;�¨H´\—?CªXT-w¦Ô¬~Ö”H”Šf÷s‹Y)Ã2Í,×ÈÇé/‰È™Û�7x9bžÄ|Ä‚~Y¸=�ŽÈ��…ýÜÈÌoG«¸ïýªy.tM´Xn…èºÜ¢%r—ŠægþÈ-Ìô¢5ädv�Ö²mFVè�³Â³»õç_»ý9¢‹>¯†Xì–õÝ</]é¹µ™ƒ¼è*ÏmÀº&Ñ#Sç¹!~�îC�¦¶N÷¦NÓ]§µ[ÕÏMV,_±² TÕ¯Î‹®Öæ\ç%_Nç3Œày9iìÁ8;Ôð‘Ì€;–©fÒ/çªûA5ýp;M Þ‹®Ñ+ª¶Ÿë q¾×àE×2�¬îÑuÚ]ÖkÛYÏ«È¬×S…»ýÕõzà×{œÝJ
TßZ#j­íx•í€äºD’‡e9·¾ß®V4P4Š62Í^wWá5yLÓF/º‰—Q¿�\2”\–åJ½Í^t«¼ßVNY°Í‹ng½šmZ2P]¨Äß¦�Z’•ÝÁb�îÔh¡¶h¶ÜêÌ]ž[—•àšhhSVB´™•M÷Í„Öv{Ñ=^rGºkËâÎìõÜÓâq
+ÛÑÏµá¦ìÓMÙç%WeG[Õå>ÝŸ}º?o“7gr„Ø§#Ä>=ÐhåF%/ÉvGieiŸWôŸÆ‡Œo¯„MBBRÒ+>ñ ©,ô\Ò+VB¤Üƒá'Ò‹©°‚~<#GÄ+	8‰I�Iz¾µ§Â3±Šáp¬zðù5ã«‰nÝ^Vû•îÝŸ�$ƒrz</R^yñ?§÷óŸÿïÙ@že&"º¥êU–~rÑÏF£¨Iû9ú‰§+˜.'ý¹´Ø>!óJØKHðüÄŸÖä§•2>Ó�ŠÌç.Ï¼’™H›II1/øOðÊK'ü™È–ÈŽ‹—LøÏ#ž[O¯«ÇK×HÌÓTÇ®;û_Øü+O¢Ÿ¶Ð3¾"<_Ë"¢r¢qñéº{v'žÝ÷çoË+Oîo�£‚œçÓŸ‰^½^¸=æ¥Ùócþ?˜ÑÿïÄóOå§Ùûyç…’g³ÔãÉ²V°�‚}^ú =/^||>÷À}Zü,ê??µ/ÛŸâ[“ò^Z+ðcK:ø9zöDÄ’r_¼Xøt,±EýôÁz!#¾Ðckçi¼Ç§xqÒ½¾î	)Ïø=z¼ð^íÑC¡§6Ñ—íÆŽÝ(l“^ø/^ýI#zÜ?C¯ô{2œà³§.øÂøéTƒOLôŒ{z5_€¾¨9§¡&~1–æžrlBÌkîé´$¾bâMzñ5ýä¾êné3[�ñ_ÿ…gcñý/?çy~Ú;ÅWžP¼ìŸ,GÎ¼/ì£ÝÂ4àù±¤nÝÕA·îñ¶L¬Á'5ßxJ&6)o>£´çH#yâä‰ÞzV–ñBªÚð¿êØê^ñsbÆëÖŸ®»å<]ò/y‘<}Ä_"OWÊçÞG?ë¿Ïmƒ=^ØVŸíAŸ{w%?yÜž=ÓŸßŠŸm•ÏžÄg/ägc¿t?y[âíç#Ïšè/Ñÿ³{H�ç»~éÉü/j;9Ž ï2M˜æ'$àË�¯·—žnžiž?ç˜àË¶€'¸ÿ³žµç}|B_XÖÏ–þó+ó%ÛRâÓ.ÓŸ{©è5Ýß‰�¬ÒÚaí¥—?¤ŸŽûÉ>f^¸BÕyœ_á¥mž<µOË¾ëÑÃ=¿¼ž<Cï>{¤~ñ³�Ï§ÿ=[UÏÄgÿû|Æ/ãgsþä
+ž{LâG¬þ/¼�Ÿm³~øùåÑíù²§¯£O«…?s×ŸÜåXÙ§7ìÅñÄoSôé$ugvgéy¾öeMÉ“ÍÌÄó¾¦j_3Ï¶¢ÏMÔÇÆ¯?w
+‰Ã<gãxzüû´�´'w%î}ãÙ=z÷Yá/Çg ì?v×^ùæ§x>ùÝöuþÏŠÄV™yå[*€^"~EzåW%~õÿ¸ËŸ!Þ“xï¹9öãç:óÂÄÿßàÿ/ƒñþÿ�ŒØ�WbÏp€¸Øÿbûç³ïÍ§;Ò“Ãù‹Ï‚¯pú™{ð¨²ë\tïsN©Î©:§êÔ\’�äÒm;}ÛñMb'Ý‰ÛŒçÙ�9qâ¶;y±;ÎMâß›Ä™’	!@€BÌ$ˆAB˜…„fæAB���Å|ÿµw©(
à¶ß»ï=øøkíµÖž§µ‡³1`,k.íA`,$i 1"a`ê*†"ü�ói¹ú»ds|À°„Ýkˆ_¦[æÿÄ—iÊ´˜='ÔiÒ:“FW?ý‹ŠR7�¦'ÚŸ!â3æ¤øªî¹ÞäI,>|Æ9ñ!_Ø®rÁ?jÅÌ˜·
+’ÍtÅ4¥©1Þùh‚uìNXÍÇKùsÛGlù›÷g¡nYŸIÿÜCòµ×ì|m¼TÖ¢‘X‹‰sVÜt›l®�úÇujMª*Ú’Ô—¯©Ì]•¢›W(‰ûÉŒÄ¨?BÄG+oœµüyr|~‚á9�˜¼V?i«ïãßOÜ„š¼â�ÜÈ^#âµ)9“LûO�5ï—<1»ãC·09”—”“>qMð"¾�è;žðIKãIÙ–†—FK|]búxRÂ´8eŒQÊ§�º"
+CUuÝÛŠTÕ©ÃHìÇ?ÕöääÆ1Ù×Ø¢^®z_‹5v¬±ã»r‰=LŒ·ÔØyOzaƒÿâØ:žŒÕ/ñ¥)7—¾LÄ—§ì•qÑØrLU†ÿ!:¾Döþ›b ¢�éKš¯ˆÑy¦¡AŽÌÎ±Ñ!6&O§Sv‹Ä±ë£SŽ]SzûàTSvÂš@üIIdÞÛ™P¾j´5ùÕ¯~-ÆŸ*ŒtzÜøÛïH«]Q™úŽ¨Û(Q¿ƒÄYTa|üOrìßÿ©árŠ¦9n}%ZØ«´²Có§2vQà4Í¸b®qEþõ‰c„5eSQÔ¯+“+‰«¯Æàý·vE}õÕ)ZÆ—¦l‰Þü†AëU¹r»eã“YJÔTUËø¦XÃ)ÒaÉJý	çlÜŽJ\}ÌÎ1&Œ`/q/ß…µÆÄDzÜZTS¥YÆc­"Vôba®¼6~%þÆ+¿	Ô3jŒ˜Ç Â~±æTcœÂ"±íÓ“dõq±:~áøæ�4, 6-a3bbà†mØÏO¢/
+œ³·cMögØ;ùIÐ²¦jH¿Géÿ½)«<qì'íÒËÐ%oÊàšÀÞðoóíq†ô—ºˆ˜™m{òn¦lµ±–óöøíœ7i¿	ô›rR¤êþý7ãV®bÿiÙHAÿÑ›ñíÞ?ŽÃ/Ëp="ü1äŸI›äñydªßxŽËásCäOA¦þO¶ûÇùùÓç9hü–8hÆ7fÿ”ˆ?M°œ¾EŒoM½#=i5ð-Œ“ŠuŒmîéßúV,u6QŠ‘ò|q(ÌE{�BW‰·sM×Å‹í[±
J1‰Ñ‹ÆíðMÞðKLöÇ¦a&lP[S®™ÞLœÜ_²›ßLŽíhOÚ¿›°‡7FÆŽ:ÔøáÐØôªMÚE3a/�½ŽŸ‹ý{ó%#ì8ãã}lK9ÿÜ0^K
+ü5´Y2J5U¶XM}>á&ÛP	9KlÇšj…Ýî‰Ãõ_,œb<Š—þKÖ/ÎÆ,%^˜OÒ”ñ{¨ãvw'å2>�Æùä‹7›©:ÃÄ°¿ À¾M½ÄJÜÐ–Vk¬°'öciØXbd¤9Ö¢EM»º5Ù¯*Ï� eÅNJ'fâß;±&ÿ�XR`Ì¨;yVÕwÄ*El½$þyçù¿çÛ0zâti}W×Ÿó8{W¦±Ù‰¸ïR|ïNUHã
+ˆJlŠBŠ—„ÌlB‰¢‘`éñcAÙ.(g"'
+§0l¢ )á/9¸‘ÇdFTÝ­ÇvutËˆ©ü¥N¡R©¨•°9‚”Ycù�í±ÀRT`ÿ)naß�<ÆƒŒSc�Š³ï"ßß‰õ;	kE”–’êP‘uè’u¨Ê”)ÂþÁÇm’ØYòØøÇÕÿ‹à¯*ý{ÄøÞÆ…�¸TžbIç¼d<�>i¿¼Á”	�8¾Ÿ?á”$á\Y.›XìàPäßcÈ©^‰ÿLÚ.ùÜøéãcS³S�ºÇ€ç+$Ù>­©L³).½dt‹w–©=L5ÕŒ�«iª®‹ÿ	%ªò	©7q|"öoâjÖz~\+þÙãÏáƒI¬qãë¤ÕÛøi|A2áªK<³ñ²ˆDsö”—À¦ðô}"¾?¥(ÞãiŠ+¿,©“7n^²;Îú˜œ^õÅ6„{âò;¡qÅ†ñMšÍäNÓä�ÜXR•XOûö;”oëcÈ!£¶dÇö«ÐŸ“Ü !GÀÇºI¶/,¹×Ä†)Tõç[dbOì=AšïÞL¢Ä"ø=Jþ{ñ©è½7b F{å=±ÙôÞ˜Ê÷c3„C}OË5<ýqªI”†×Þ£ì$“dqK@=ÕQ»Í[:¨“æL1‰+”
+˜µn·Y¶”wd�Ò ¥ª¯‰-ù3Vè
+U#†fÝ-­áøxãÓèïŠ�þ˜�þæoâ?±­Ä$ã½±¶çŽ2È¢Vt¹Ó¨Ð ¯Çv¬÷‹:6ì8Úºž`y>oØ2YÖ“·|ôÈ¹5M¬ÄyøÛÒüòß-ñïðï§B‘lšVM1h¾¢1]Iy`¹cóª¢¸ušÜ2—–›a•©ÆæñÇÑ‰ðƒ€eÅ�ÿ‡_Žõbc¬q²Æºs¼q³æÛÎÿû÷Ãçÿ¸ú–ØwVŸãÃÉKv¸•±¾=©Ã¹ÌŽqÐ‚b6Œ¢þÞ�öuº¾%&bhêÅ6¶CüŠ^€Ô%½÷Öu�´4ó­÷¤Ü˜ÐÉ&w;Ù7Çz‘l‹ŽïY†®S^í÷Þ¢å·eÇúÄ{oÉþóVÈÏË:î$†¬PQ
î±±#nsˆ1…jí%`ŠFÿ¼ËK_Ï;,
W±>.ûè&´Áq5þ^â]"eÒ„ø|�5>ñ|ÊÓ»Év”š@<ß'µ¹öŽ�ÑªúõãDŽM%âRÅ®RÔÏë&~ÝMŽuÂžýAÂqßÇÊýMY²�øÝÙÿeº¨À“Ô$4«×DCKÒ_{‹~cñž=5OŽz?ÕÔ×cð²ó­X%ÆçÂØmo9 *Ï<ÆæÇ·¦&ìt|l¬¯KéÇÆ	&úøÇ)`lˆ¦”[ÚŸ¢Â\b*Ž�“ºž0ÜªI‰ãPÂZ*6dÖ\(kŒta‹yhV~ô£±§šJ<¶¦Q3/±s&‹„=Ê¦TŽ7Ð¸¯¸òdCl¼a4¦ˆ”;ÆÖAâjfÜzP¾/*æûß'�Èø9�‹Ê_t„ùÜ,³('ï¿Œ1õD"Á¦¶ì^|7q!ñÂÞ„D�kÂ”©‰nâ7ñæí+ãoÞfsßU|ÑÖu,ãw5ëµçì?£F|Wals\ˆ•çWšíïŽÄš¸LyIµˆÞ\¾c/ËïûòñÂ­ô‰¾¦çÅ%ó³HÆ‰Ä¤Øžr|¼Ûcœ=vä�âÂ‹¿˜t×;~ù=áÖè¤;’ãS,ö^˜ìI	×§^/�mBLyÑÿ'mù(‰[>·ŒÆïh$ìáÁ¬¦»ÚŠ<úÊTÇš*ƒ
+ãIþ'©üÏÄ[›cŸ<i´³Ä$Ä¯ˆí%¹…¦Ä
+`,-ï{¿I$nÒñó”MIµÞGÏý¦Åþ4}qÜ‘�âþŒÿ�1e%)Ÿµ^Ø€ãÄgc—‰žúò|=lütM›�;¬ÿÿþZƒ8˜òLø‹ÿ‡Ò({Â¸t*Ž÷ó±Ê—&cSenLÿŠæxÑ.ÚÿŠÃ‡wÖ¦ü£Ž3›¤Û»Ô&*V(ÿ?¸P÷~oÕÅúBâÝ:á‹nZ‹&MÓh],x?4¶ß“Ð–âü‡É™æ�NlþöOyu-îøëÛóuüÿzÉU›„{.œ} >�ütw]ýŸþ)ñHnÊ[/\ýç±Fª?_(|rª6ë;ÚVTaÉ[cƒúÿ¨ñ[±Xß˜êº„j¿mÛñ�ôEToÛcø²kI<ñŽì}`Ò­žî^�ÿèp²u>. ÄP"‰vy4áZËåÙç„)?eœøO
+&i¼�ã
+å7½d¥`'nåL}ïŸ=ÆuâŸŠÚ¿·-�xƒ�ö6Œ±ýFqË0ñ»¿ç(ª¼8îK½Äy2šx’ûé„Û‚ñÖ»58ñÀ]ÜL‰°û�çë7aÃü„ï—Ç]°Òc¬¸:éúL¼\_|üï²Ê§Œç�rÊ;‰ƒÆ¿ r�ãã”9ñ‘º¦zqGâ×Ñž‰7yb½~œ¸“$wÂ£L¬OèUÈ¬åÇg'Yõ?N¸Ìn$l0¿x|ÙŸø²|RÛqènËPÂÌ%38ö¹¥¢Ë­O·ì¥°³cm
+|™QI¹î�ÊËOºîžx³jÂ
{ò)¿‰”û«”5y‹VÕ�XÛUôýW¸Q0î˜õà€qþop¹4%fÉ+†!W
+Pÿ7±«€¶å’úŠeˆ²p©ä¢ö÷#jáVœ�ì»…WEÿ÷§Òx÷]á|ár…Å{à¼`ø|ÑÝñpØJl!/}_64;˜a¼ùüþý\dbÌCQÁ£(­I;“�b_ðÉY|ü\â þŽþó™«ÿß�ûÏØdídX‹ÙvÍ]ã±¯ÒØøïóÃñÆªŽ}«:6£Mœ«'^Ãå,•�
ïÏgâMúœUÜ ý÷±Õ¿c[P¯SOÁãn´PC·¦¼þé@Cr'–H³f`á÷NÂ
•‰=õqßeÇ/G|gâ}5ñªÈØ½ˆ©îŠ¨‰KÄŸ´–œÉÓ¨¤è~‚b¥ñÄq˜éœæ”¿’'Bé<ŽJFcâñ?šeep=6ÁˆÍàß¶^|Wá'ß7y~WaÒ5¬¾ue\ç±…ÿ3‹ê}vìñ]}óoxl:ä×´ëˆ¿I´�ÿfâc“¯s~|\‡KøÉ°&]šŸtóï{±Á0ÞØ‰:â„p|ú‘öG”,‚YA�¯¼ˆ5Næâ«8�¹Œ)Å'•…'ö6Å…ÊÝ™^�ƒgr×œúÌuÜùÍ?Lq:;f¾Û×gî�áŸTu
+ûøcSÂø�3ªEŒ�ïÙâ67Õ#�àb9;éVï/~w ¾-‘¸Á{eªmáØê¸
+ñžÁþþF&M^8—#ƒ46wæåìÎ¦¼Ežðéˆ»¬iÄ|(/Âç¥øMë…_dŠ�$“'\™Â>~¹
>ÁÈŸò%1|N¾·1å=S¬O�).“O¸û§Æ÷D”IS£ûhìàIœ9Å.)‰7‰„ÁœÅ§¸±×5-qï«'aR£.¦jñsùO¾=<ù‚ÉŸLx<$1æq[t“9\Ö�2¹üd“Ž1ÿ)L�„û(±óõÉæ‘•°9� 1~ê3Ù´Ÿê³žŸÅ¼—Ýû�I[Qÿ"®!¿1þTqiª#›ÿš2þƒ‰l>†
+06}gs+ÞR>4	âi�'æ=Ìú¢¥�‹³y|â@˜Ãå„øt_Q$.	þÈ·*­ÄJžÏÉ¦°èÃ*x£¥[ Ìk!7Æî3.äS½òæ7+ÿc“®ÒÁ4yÃšâ[��ßsø™&piü´!LÞ]Ëú„âûÑó3Šø|ýãŠîD£0^h_IHÁØ‡Ö¤�=Æ&ëO‰±'‚‡ã}lŽÏßK”ä)‡ò~Ô_Ø‚|ÂÓKBywç¬‚n¸M`¥ÀíwÜ)p—À*�Õw¬¸Gà^�ûîX+°N`½À�xHàa�GxL`£Àã›6<!°E`«À6�í;;y—pœxJài�gžxNày�^xI`·À�—ö
+ìxEàU�ý¯	¼.p@à
�ƒ‡Þ8,pDà-�·ÞxWà=�÷Ž
+| ð¡ÀG|"ð©ÀgSÂg
+L(Ë$]Ðg	œ-pŽ’©Œå+Kpæ
+Ì8O`ŽÀù\¨”+_gžËí‹0/é‹Áüù%€`Úûkù^0
+Áó,…Ê‹[^x9x¾<8ÿk1¨Hx¿´”¿”»×JP!˜ãìçVƒúÕ5à}t-œ¿°Ô¯¬ïàÔJáüÅ� % ÌM$—^)‡óÃ‹@9—>°*öP¯Sò�N[ç/—>´ðßVƒ÷ñm ’JÙgJ%Í¹pþ—J€²~½eà½º”µÝ…àxÿM¥oVCø»Áb¿­Ô€ñ©0~kÊ^¾�šù!zÛÚŸ_ª…üóu€¯ÕBéõà}¥ÎÏ|ã œ_>øf¤Ÿ;Þ�¾Zç×�R¤ãŽ�ñ‡�\TÇ_ºŽÃõ§Mð÷N3„vÎo·Àùn+à»'Àû‹6Pßi‡àÏÛáüV…õG'ßëãû'!ÿ›.8ßë„ó¯O‘ü”ÓàþýÀß�ÅløKì•sœ,æóœæ×/pãcöE~‰w£4zøeÞËûø~•÷ókHØu>ÀoðÎTù+,ŸñéhªÔ5ÐQ•aD³…�PŸVnÑèŽŠ±ê6�:ÊjâÊ]ê�Ê=îgÅü>ôñQK”ÀNå!uoå|�ã�©¹«OÃ|…ó§HÞ¯šæ3¨”TXšY$ÀVð4à»\3‘Š2%M¡/…ÒA_U2”wYçÊ,…fˆÙð’¦ÌQ^aÅj¦2�*Yàæs±Ò]Ï³áã 2œ*žÎ"e>|gs®.€d¦º¸XÍ…¼†/�¡.æ©KšÉò”é4¸–?39wà7�ó¤BüæpÅ©/çXE
+•ð2…vŠ—Ãû
¥;97V Ê^ž
+œ«” ’F¾ò\u°\y‚âX ¬]­¬Ql%_:M]§øÚz„g+j†ò*¬ßùÀy|6JW6@)_-ªèˆ²I$ e0ƒ—W¨›!=ªlf«À*”ŠŠÑ|+èkÊ6
+šU‚ÎQ·¿;@oTv"´}|è,µJ”@µâgKùnà2^#4÷@z@Ù«ˆc¼}p<Vö”Zä¹›sW™Uj!<Ÿ×+ô6AÙ-Šz@VhrƒçCžÆ‚ÎQ
+@gðCð7_=N9?º¥¨bt<ŠDíáÇDä�¨àÅÊq‘ü&…ž—l–�ž€R%/�‡ã¼Å·TiEýJÕÇ¹»]¦·j;y§LOjqçæIø:ÃOðÓðõH9¼®œ%pô2õ<p‘zÞoò‹Ðlã—dÄÝÜQ6‚uKé=¤\–‚^èó>°V*W€�ÊUJ¶Cí—?×D&®Kå(¬RnG•AÉBVó•›`íR†|*½™ß’âÛÔd•;üÛ]à=ùs_¡µú(tï+€'•‡(ƒAÎ­Gpu(�ú„î	<^àOEz&
+2U…] ÌPe§S)qi`SÒ�êNxØÏ3TztÐVùlHN(s€•LUe?Þ�F¼œg©¢áÎ¡š­’‘=Oõ¡—ä€~¨ÌÇ¢ª–/ 0 §c–\•êv¤·•jQÄƒ>¯,Ò<ÐÛ•|u:ìn¨ïÂæžBÕÏ
+y-RÕÃ—"ÄYJôv*Ë@©ËeŠE6V@°E)>UVB|›¯Ý®¬Ò5 [•µà?áë€Êzà	¾ü¥ÙºÏ7‚^«l’esqîåe"ÍåÌS7‹•-òd»>øVõU¶ˆoƒà	F½é0m¸·®+Êv„¾†ï®å;c%…º\ÇÛî~¸�ï‚ê%ü\¥J�Æ–«Õ:ªO…á·[¥c¯è+{Ý¬Aÿ,á{E~ö�=¨¬@�_æÜîB×Êäû!ñ³ZÄ¹T­CAVsî«Ú
T
¦yžš”ƒP¸ËÉlV©m�àœrTèÝ«4
+þA$mžrXÆ�S*oJÍPêRN¨¢‡µ qKx+ðo“ÁžDÂ0S¹Ú¡—©ž‚Ó„¿®õJ'âˆî¥À€ì¡õ"¿#ü$8ÈOAš­œ†ælõpº…Âþóà_Ï¢Œ–(OÚytösê_²…œÎ‹6vºsÔ‹¢¾.�ÞŠ¶ª°é™ªök•Ëˆ`ïUi¶œÓÊ`¥rŠ;øC$bˆ÷ƒÓ­\“•|šù€(Š\P¥`H¥ý ›`]R†eŽKÈ=>‚æ)· ˜«V€S�&ò
+Ëå·Á9®Ü‘
á®ü¹'Òz’ê(bêà@oPÂßcþ!(�ÁéAí+ìßŸ€œ¥>6+Ï€w•TM$f†Fé›)išÂö*éÝ‚6‹0˜¡Q!·"�£|–ö*Ëã³5ÌùÊMÅ*à$øx&èK<üe.è�<tÊLÁ:eža>YÇs$�x6ðÐÌT®C§‰/ÔD®ráí�²â[è±*&îQˆÛùbð×(K4ª«t›Ù<ÒS<O°Õ<_£›š(ÊB¨žQ–W+Eš“m¦6ËZÞ:e9bíçÅ"sQ)_Nª²ô¥D£uWÂÇ&ÎÃ«à£BY
Ü¦¬>Ö‚¾§¬nVÖNžæg«øÐ4ÍR+�G”!ÌÜ31˜¨X,G€W‘„M�ìWV ªg¼Lf¹¬%êf(ìF�ÛW)FË‚
+¤ë:ßª‘©^ù5Î#ÛàÚ„ÑGÅ*ªt½2È_e|»ûn�ªì@Ð«Ôð¹Z}�9’vj{aÊõÂ„ËåëUööëÆ¯:vi;µ*­ZÛ­mTwóè^U÷ÈÂÛKÅ¦íÓ¦¡eí]¤ÕB\¦Ö÷ªõ”8�†­
+µ-l†Ö€èö©àYçêAÊP’z¼jõ°F·¿w ýnQ�ˆz;
+þnõÂ¾£n³Ú€P÷«��Î‡´IÝ…P¨M Ï©ÍÐVOÈ„µÀ‘¦µ¯«m¢}€ê3µI*Ó:€ÅZ'Ê¨WU¢É] NqüåÚQDS£ž’Å�Óg›z¬:õâéWÏ‚¾¬vûÔsÔD´óˆ¦\»€P0¥\o¥v	¸Uë¦ÊÐZP[ÕãðÑ¬öˆÄ\FHçÕ^Ð}»"ºÔU_'rZ®ö#ÄõBÄHó�ë"Çpµªüƒ4.
ª74º5?(s;¤‰÷¦ì•Ãü”Ú…èZÔ$ D»¯GUþsY¹+ÕÛà­Òî+µ»¢ØïQûÔîkb€…÷ê�®‡ÀG{ùí	BìVŸ’{NŽ–ê@K×f80ô¨ íPg‚³QKsÀTUùÏ× ^Œz¿��*5²
+í6’ÿT¥¡kH�åyžíð³íê(�U30œÔZ¤aZ¬45Þ
+µÇð0S›ë˜Æn©Ùà,Óæ×h9àÜSÏÀ°ÉÐh»­ÎwPë¹Îut–h�KµkHàE5t¾v!×ª‹¢ž…£G]Œè¯©dÞP— ÇÕ>Ð™Ú¼µ©yð¶EË.Ð
+¢˜{ N×
+ÿ€ºTf¤ò<m|V—K-2¹nªÅp|Ü4W@¾B+�|—úeƒ©ã¿¬t|šaô›¶
+²µÚÔ³´ÕQ­kTÇk)•l�Œa½üÉDbO«àe±V
+ÌÕ6´M'™f*
+â¡z)?¦.FSº«–!ÎMZ9”æii�>V7;¨!.AM5ªü•¥Ðš«�ÂÇAu‹C´ƒeRù«ŽWÐ/·Êˆ·9DŸ-Aü;ÕJÉ[¿©Úv‡4àv @FÕ�$b»b¼Ä8[«¼jx=©Î@zÔÝ2¦48ºÔ$n½¶
ª³´=P:¢î•E¸‚EÚ~‡°jü#µŽòÉ6@wŽVñ|­Á�m·¦ ”ib5Í·vÈñ¶ñëü°c¯<ö>í¨Èÿ1`£ýñv@;Ž°kG ¿_k¢è%ñfJ¨v^jµÈj­²rÚ¨JY»tt8¨wŠ »žâSðqHkFIb,üÐ	„U§�vro²Fí“g¨­kÅè”-"ßÝÚYÎ9Ñ‚ÏËÜ_@DÃ?«]tÐ@p	Öº…jè«Õñ9-ÃÌ	­V“vY¦ëŸÆº´^(]ÑúD;ºúºvUŠûáè×®‰�®‹
ˆ¨o€S;C�L£¢9¥=C@�Ú �A:¤Q­_Òn"]}Ú°Lêˆü¹ùˆvxC»y¯vx^ÂÌÓ¦Ýÿš–Žv~Y£vÑ£Ýg@­#Íñ*kÖ æíbn×R{Áàú*†üGBç1B»¨=�¯Aí©(ìgðÕª¥&I%‰>¼š	LKbéIhw4–‘tÚa|’ÏJJuüñì$ÊÅœ$˜pŽLAg%©l«c.8sÙIÓ:Ö‡çÁ•æÈ�d½c¾ÐZ p!äe�ç&ÑC¸‹’è­ÚðÖ�·8‰ÞÄ]?åGe¥Ž%ÂO^¾æ,X˜D9Y*¤Eð½¾—!Æ…Žåpm‡«XÈ–#”ŽB»$‰Þà-g¯c%tç9V%QîWƒ^ëXè
+^+´Ö�—íXŸD5»’Ý�”â}éÃEÈ› ±ÈQÞfðÊáZàØÉ–$V�(ê[áØ–Ä*¡�ÁåÃkÀlpl‡^¦c‡a§ˆi8j�3U"=ÕBZ
+ýýŽÝ�ÎwÔs{€éŽ½BZéÇ>`µc?°ÒQ�xjO-´f;ê€³õ�ìrlÖ8„¿"G}:9ŽÃÀ,ÇÁ9*p?BÚ†�Ž	W=\;áj„Þ*ÇqÁkéÜI$ÍI´V­D,›YàU€wÚ«-I–ñ[ìˆƒµ‚øm†1¡
Äï0ôýv¿K½¼Ä§©Ëv‚˜ÎÐ-»@|��ñYêR§@|Ž¡—œñyv×ÁÎ€ø{è`gA|
˜�ñ%j¯çA|™¡a^ñ´-vÄW©©]ñ5jAÝ ¾ŽÆÁz@|ƒ¡\N¢GÓPá½ ÞFù²>¿ÇP‹W@ü>ÕÖUÀj’X?ˆ?dµIìˆ?¢B½â�©ü@ü	C‘Üñ§È&ñgÈñ-$�Ýñçˆš
ƒøËF@|^Ø-ïÀÉnƒø»—Äî€ø.{”Äî‚x—¥:™×2þ’¥9÷D«¾/pTà�©�8Ý2þŠÍv�D�?N¢áô„Ø[xB5î|*ø´Ç”é|–D›’©NXäÎ±Ãüuã¯Ù<gÒ'ÕôL'ÉÓ�.ðIÒ4–ãÌt(`|�-tj³„k6BÉuÎqR(¡µÈ™é´Œï³<§–%˜sf;i¸œ'è_ü´ñ+rzrœ´[7ßI™ ýrç!_èDÓsæW:	ÙõÅÎÅBs	ø%Î<§Ø²¤µã
+'mO-sæ;iÝ÷eæà{ùZ'V,^àlr~¸�K‘Î}Î"'Fç2pŽ9—ƒ³ÕY,u®–C}|¬D�%Ð9î\	þnè`Íå\z“s5p;Â�©_*Ûì\ºÊ¹ô.è£ï9×�³Á¹XéÜ€pàf¾³t�s#ð(ÂÁHåÜú°³xÈYN…s3èzçàgð BÆ
©Â¶8·‚sÄ¹
X‹x18ÿ8`ü-kq*•Nº4F5ÐêÜŽøïì¤XÆß±óNøÏ.9Õ]¢<«âÕÕíL†·ÛNo5ÂrîF˜×œ5 ‡�{€·œ{�Î}ˆ½×¹ôˆ³xÓY¼>Ìzg=èÎà ó4¯ ˜þ ±öqtô²{NNñÝwrZîÿÁ:‘oËý�ì‰“})X¥¿r~2õ£À< Êòõc gë�·@?ÎB½	œ½™š¤*›£Ÿ f¢·€ž¯·Bš¦·�S¨·ƒž¡wÃ¯Âè�à/C*›¥wçB_eéúIHS¡�å$ôU¶D?Íúiàrh*,K?þ<ý,8Å –­Ÿ]„x–£Ÿ‡t‘~œ¥ Ñô‹Näi½® ÄÙ:ýxkõÏa½Øí¤mÿ«b»‰ñƒx¹¯_¦L½À¹F°$Ò¸ú°Þ:Û¸
+ºIï¶é×à+×¸úˆ>ú¡~t‡>HMS^ÐoÏéÃTyúè
+øUY»~‹*I¿M•¤ß}O¿K
W¿ÎFý>ðŒ>
+|¦?^ÒR‡ÑQ7Ð›õ'ÀÍúSøE¼*ëÔŸé©:–Qú`R‚Æ­ÏÔ±,@ì0ô4Ðû‘6¬)ôtèœÖ3À9¦ÏÒÑŒôÙà”!Í*;¯Ï?Çxº[Ï¿_Ï‚Î�>t=Ò¦²T#t¯>ü›zè*}>|µ"˜”ôàßE^Tv9EÔ‚ó@Ï…N�¾ôBc1è,c	èEÆ]ê`È#º®ž‡Ð.ëùàßB~UvùÅÔ‹r@‡GNöX/€Î|£!T"_V�k•�D~Ö¨/}H/Ýƒ¼`Ì3–!´ÛúrðgàEjÖ¢ƒG_~º‘N­¾˜i”€3Ç˜
,×ÁÙ¦¯„æ
}8O¾Â"44oh¢ƒ+€iÆjà”:04öDÏÝ§¯�ßa}-p±1œ}è}=p�ñËãŸX�¡nÐil-Õå„2�uËøg¶ƒ¯^¦ÿÂvì+ãÇ¬ÆH*×i.Ù¬Ó ²EÐÉãc« ?OÿÊöÎmˆ§Ö¨ÊÛuaGïÐiæØ	A½±XgT	q5¢üwvÐPwë´ãTCÌUœï‰ý~(`ü;b(ÍQc/¸EÙ££5Ê~sÜ¨6uÄk7”z”B«Q�<·
úÝ˜ÁY—ÁêÓØIãåj&��>fÑUÕC9‚0¿Šúaìkh›–‘[Í…:µŒY°]hÍo³a¡¹ÄX¶Àõóˆ¨Äe5!¢E®fD´ˆ¹Èut‘«t¾«¸…-uµ!�+\í�º:@»:ÁÏGaÐÄèãúºÖ¥tA¼Úu¸Æõ+#‹³
.•¢-u�ÕtZà$n.gå.6‡ŒlÎ*\Ê§¯øHw«ëoÐ¥�í.9w¸ÎŠÊ9'Šû¼N–ÿà7Ð+-#‡³½.ôyË=UæbŸxÝX€ÉË5½[—‹;Ú˜9èêÑÅ2ö2õnW¯NFmŸÀ+TÞ®« ûu4B¬´\×uZD
P'wÝ�þát
‰Äß”¬+TE®ar8ÕÉ»Eƒ„ë6ð˜ë°ÙuxÖEÛc\—©«¹îQCvÝ}Ñuaœq�Âó#"¥ç‘.NcC~ÄõDûŽN×3(ŸB°èß®T«=×s¡k&èWš�ÞéJÝïÊ}Ô5Øîš
lrÍØ•	ú‚+x¡aÉåš‹z\Ù�ö¹æ{]9À!×|à5×SÄÕåZ`ˆö¿�~0„+ì¼kÄ7\‹
aÚ€¾éÊ#ZWóá¸å*@¨—]…Píp-^r*;œÎ¹øG–Ÿ0r1Ü¹œ÷õWØ×rè?r=â¯°Qè¿ÂºNb�{¹™ÆÃ×«ìž«~qöÌåXnš›´gºI#ÝMÚ3Ü¤—ê.1,÷b¬.Ül¥0–ÀŠt;V‰„®6èCir¬1ÆÆŒ¹îµð‘‡U†›­3 ÊuóõHóB÷¸x©QèÖ6Â½Ä½	˜ïÞˆœä¹Ë�Ïw9b(Äüìvl6Ä°"B­ˆ‡½i"þVÄ°³¿ËhË(âü_í6aÖ®uÏÅw“ûLÂ2w?,Æ�î!ð7¸+°$^ãÞfÐ£¯g!]ç®Dœåîc´�ç¡sw3í½º·#ôbÎ¶ºÙP+Ðo0LQNªÜ|üìrW6Vr^mÔ¸?°ÙØã®1è±Zyò³YÚë.€1ÛèÞ#ßE‡vî½‚Þ'�vóº÷#¸&w­àÐéÔ!7ÿÅ:Ù<è„´ÞM;ðGÝõÒ�P¸éüíˆ›¿Ö¥`aêæ&m¼póÿJGú‡Ýt.Õ€¨§³cnžÔ`Œž×º¹Fç½uî”öÕ”ö™öV÷A‘ö|ÚÍ=‡Ddtp~ÞÍ_§¼´¹é”²Ë]€ÄœqÓáN§›”�Nºù/É3ì„T·»ÇÓÛí¦
ösî#Èh�›xO¹é4ù‚;xÉM[îgÝ<rTø8&�òÐùtvÑÍ�‚w\ä¤ÑakÑµÜIM¢1ä³+îf$ñªûõTwõ3w«AG«mF£ÃX�ŽåÖÛ©O¹;¨3Aerw‚¾íÆDÀFÜ'©3#€ilP60Œr§Ès)3wè4ÄOÝg€÷Üg
š´Î�žaž¦™€ÏÜ�³ÌKÀG" înÐf�,–ft¥Q÷eá¹øo¬�^å`W ôÄ}˜jögš”º‡îk »¯ÓÍß·ŒMœÍ1=Æó¥ß
Qƒ‡ÞKXÞœa�r‘8"üÞœÛïÎXFº´é¾ç„"d$÷
šF…âÙ	eK•J�…C†#ãýCË(Çizž€Ye°§B&ÓýL²d82±©®ç±Ìp=_ÑÊÄÎt	iò']ÈÿÈ26cd1�âº2%“	OLÉh¢¦{šÎlW›al�µgr*Û\sŽK,—›z¦¶º™,2ç—™ÙÀBsžC’™º4†*s=Ë7¸,c+ç]%ægs]â¨ü�æbàs	°ÍÌƒß�f>èZ³Xf�›´þ>b.Ýi÷˜Ë\¢i,‡£Â¤üÍf±‹žS^Î^³¸Ë\é¢W”W�®1WÍ5"âµ šë€‡MÚ€^c®½ß¤ÃÇrsèj³¸ÍÜl27�šeÀíf9°ÕÜ¬7é2Êsèv³Ø`nEøº¡nƒ£Ê¬Cž°:6·ƒ>aîpÑÿ·¸ô>sø›Ì*™�j‘öÝ.±�HÇ!«ÍhUš{€[Í½ÀC&ÝZoîsÑFô~½]‹òZgÖIoõPê0È�é�ZéAp¶˜‡ ´Ê<z·y¸Ã¬EÔkÍ£ ëÌcÀfè(l¥ÙºÅ<îzÛ¨äÊaG“ë”ùåfðæX'€OÌ—Øº¦�á!³Õ%vÇÛà³Ûl‡|¦Õ!3Óé¢Ú‚î5ù‡º\ÓØ°I;àçÍ“¢žH'µgÌ|:L1O»ä¸qÆEFÇYø¸kž“¹¢Ýð>“vÃ/šç]ÓY¿É?vAF}‘¦Y—\t©¿ô³‰é1/ËdôŠ’èC`·Ì+gX´½;h^ýÈìÞ7¯¹h“çºh.êJ7ÀÏ²�ÏÌ!wÎ¤Ýù&ngM:+;mÞ„¦ešÃPša�gY´g}Ã¼å¢û]·åMóø�MÚ€¿„„cIaÞç©yÏE;ê÷E”´£}Ç?Ýê�ÎeóüŽ˜eA�j=>4Ÿ3­§"OÏ zÕLu¥îéìºÉÿÛ3Î“ÿòL7ì
+Í=�Ý6ÓA�š3Ü*03ÜTN~Üeì@ÇµÌYpÏ–IXaÍ�ã5MÍ„¯åV–[ï\~6x%Ö<©�G‘5Xl-.³º©ƒ¬‹ÃZa«­Eî$£šóÅî
_N©õÛ¯»9or•Y_É£À·;y¾½@¤ªy¨±ø¯,uSË)‚«Üâ¿º~»¬åRq«ŽyØâ/DföXÅP©¶ø'V 
,˜2Ìv©+Ç41S[«ÜTEÐÞm•í¶V»Én_zŸµVD´tXëÖ.‹ÿÚá£¼Nk#Â=bmZe2Xj[[­rˆÛ¬Ína`V:y¨·ø¯ouË+Ä°Ýª„b³µÝ-ñ8NXdpn±øGv’¿NÎwÉ€a±SV5ð¤µ[²Ö#ˆ*k
ÂÝkñ7jð»ßâoî�J£µ×-LrX/¬ÉÚ/R¸
+•ÿ�Zé»¢v«^:ÜÂœ§j>dÁÔa­ÖAdî°uxL´ºmÖa™ò#"[G¥ã˜ôO7à,:/Ûi5ÂËAë8i±š€Ç­f©D§¯;,þó'D-P;j‘‘]a}GLW,w+²tÞjƒ¯ËV»Ë«t�cˆõZ­àœ³º@_²`±>ëô/±F°`X±në]ÔmËuÎëÖYˆ®Yç@X°µØ�u8hÁìaÃÖ%à
«xÓêÞ².G¬o‹@Ò<V/Êì�Å³ìgÖöÐº
+:ÕÓœá¹|b]‡Ö}h
à÷~o€ûÈ„k®!¸[7�3=ÃÀ§Ö;–±ýÔ£V À,Ïˆhr· šëùËwŒ:Ì¾í¶›twÞ~
+ÓØ|Ïwï¹�z®Þw�º«�…ž·ÀÛO!x{
+íGà4xwxž×zžºéÉîg wyRMÚržaNc›=3MXäž4ÐežtóÓ¬ÄÃ?™^­‡,ö¥žYætVàáoÍ6išI½'Óm5¢Åþ©¹`®öd‹=ó€už`�g¾ð2ËÄúÛ³lñ,4É`Ì…t¥g°Ê³¸ÓSE·�<YÐ\âYNµ§•®(xò@¯ñä×y
+ÂFO!èež¥Àž"àÏ2ð+<dçz–ƒÞä)F,e:[aRI”@i•g%p¿g"È÷¬½ôt–çá¿µ®åžµÀížuà-Bþ×#˜rÏðŠ<dP”zJAïöl4écÞM&,ûƒœ—™‡<¡rŽ{6›T9[¨X`d ß{¶ŠœnÝå©¶{¶Oxv ŠFÿÍ�puxv;=U"¡Õ [<»M…öÔ€nõì6{öÂÇ1øØ‡ß£øÝn“§®#pÕ™Ôn~ç»ÆaÎëÍÓ�Æ´³ž(�óž÷ÐxxÕtÐÄÐÛãQ!ŠKžC(‹nÏ§^7Žò¤�ÚaóˆY­5¹Žš}ž¿;o3¼�f¼ÃŽxøÏsŽ·	XèmFùdxO „QO8s½­&MÔm g{Û�¹Þ`ž·S4�.è?óœç‘ç”)®ƒœ–¡ŸþÎRxÏ!]×<çêCÏ)¾hŠ!éùA¾»Î"o¹êL~Yêôš±�p:»íá¿vþ¯{ú$³›ï½J™œî>ÜðÀ,`™ÞkÄ;jòëôÛhr³oz�„AÏ
â5›|P6ó!SŒr7Qâw=üÕa‘ä„2Ï{KÐ·I¿ÓäwL9aÝ¥_äöt
+¼÷eRF‘öÅÞ`å£ävßó�Ô�õGR�Ì†«žÇ¢>Ÿ@y¦÷)b|ìá¿ýžzS-ÎxgX4ŒÏ˜fMcK¼é �Ë&?íåw~7ƒ}&§©áŽg¹®š|6ý–;øú…�‰à–z³È5hò¹ê©'Û¢ÚzŠ|â!ûåŠ‡îY Ó4ø{æÁÏ,/MéÞh
yrÀÉòÒáy¿g>}ýÃXr×Åe—‹pS½‹(–»&_lÑ7žKÈ5jò<‹&ô|á«áäx�ÅÞ¥Àlo‘gEÞåÒQlÅš¤ÊnyVHG‰%L�•ˆ(Í»
+ÚË¼«¥d
IÒ,~)½çYK®‹†6ü¼Ú:h®ô®®òÂø`k¼¥ÀÕÞ�ÖëÆq+ÞßØd‰j§j)õ–Y˜7½üÓå�œeæmïfÐ[,Ì\ÓX�w«Œs›ôTi‰«IÛd­Ó«óîùÜe‰•Vãå^þÁ*Q�Õ™yÃàmõòé»…]�*óÖXtÇfü7x÷Ê�«‘÷
+ï>Ø~!¦›b;½J4™.möÖ"9»½âÂÊŽêj�·Nú…åÁê½
FïÐû¼AñQg¯wìVÌ¸x�y�‰ØAôºtÁl——®¦m¢˜› Úï­F[ÙâåŸ†p›·Y6º‘Wí¥Ëi;¼tãªÊ+o\môž!µˆ°SùFËhæŽ�
C‡ÍV«Ñ;ª´¡ÐïyùgÛPÜ÷½íT�'¼C4ÒNJ­¯¸Û>IõgŸ’5pÚ×vÎ g—½g!Éô�³¨O�}Ý¾Ìð]´è™ßK=ÒÐ
Ít»qåÙüsgW¯÷2´æøz�v§ö.;M¹ì“9ºîIûªŒ­ŽJûštôÀo¾}Ž�˜f7öä3}7€»ìA`�=„ˆrmåw~ý&œ›|Ãˆ=Û�ëë¤uJõ]ÖIñÝ¢*°o·Ùwèß°»P¾å½‡.ñÝ‰‡mÁ.Údü-ÚñxÖCû1ðœý8Ã÷TðŸQýÙ©¹ðˆÛe3=
+ö¦y¨|Ò=H¤/CÊgy¦³”ÊÙÐ(´ç@¶Õ—	,ô
!c‹ì,Ð›í¹Àz;xØž¬D~T6ÏÎýÌîB~º¼ó)*M½ÁmïïBÈ{í\Ï4¶Ò‡	—Íò-öˆj[â‘•œçÁäÍ÷ˆ‡ùÁvØ…À�öRÒì"‘âeàœµ—ƒ³Ì.öPÇ\Î5&ë´WÓ}«�þ‡ÞÕì]‹¯¯Ê^'½ëdàëÁµÂvm÷n�™/•?åÏ&(Ìö•ÏÛ³ás©]ºÔžz¡½ôßÄrÁ[!CÜ
+ÖQ{°Ï®ÎõmÉÝzÀÞ)K`Å¾*Ub5±`^Àn°k€E¾=2ê½p4Ûû€kíýê.µ9~¼Ê:¼uà²ëEÆ@2îxz¨ºA:lF—ØGdÂhKµù«°"Ø}û%Í†-ÂjmZ—Pu'§¯	Xãk–UrŽù¾à)›îî­´[!˜AF¬N_;pƒÝìñvÊ¼uÁÑdŸ”‘ž’Y9
^šïxÂ{Vª�+Ïw^Ær�Z’ï¢T¾D¡ÙÝÀ:Öì½,½ÈÎ
+»ÏCûW¨N1c¢§Úý¨‹gÞkTP¾ëÔ2}z¸äèõö ð€oMz±èxp.óÕ Oy‡áq¾="C¿%S¼
+¼GÞÛÒqÊ}w=ôðû=Ð·ìûRyZÞÔ,¼�Û}�¤à19ì'À;öSÈ38R}©^V¾ÀlßL`©/
XáK.õexeÇƒcÐž
,ðÍñŠí]ÐÝöDwÑ›å¥†4WªfCðÄžì·s€Õ¾ùÀ5¾ÂÛBÐ]v®WlŸ�îó.ü% ÷ÛyÀcv>ð¦]ÌñzE7]
+G™/eõØË?_×{™Œo¹ð_ÖitC…ÍD×SX‘½œv»ÄK/K¯ôÊ"k‡o5p�o
±0åb¾±i2mó®óÒ`¶ž¤6™­Þ
 ÏyK�
öFÒômòÒ]æ¥ÿæ¨Ü“Ö»ü�¾(‡»Þ-^…5y+ÀÙco•©Û¥Ùv¥W´¦í^iìì�²��u{wA}«�	ˆ-òU�Û»�Y¾à{ðž½xÃÞl±÷KÏµpÌóÕyÉt©yig…ï€H3ìƒà¬¶‰4qœÛöQD|Ó{ŒŠÜ×ú�÷8èUv“¨–fÁ	/ý§'ý(ò§^þ…QÅ£p]÷ò/¶B½ÜnóŠ}fðr¨·ƒ¹Þ×¼kwR™ùºd¶OÂqÙ>E‰ñ�öR8ã•·ˆ¥ü’0è=/£½ E¡}Õ¾|dw{§±b»ÇKÝë28Ë}½À»O$÷
+è¾«À!»pÜ{M†tÁfÙ"‘7 Þi“¥}Õ»
J³ìA`‹
+»ä¢oß6ÚÃÀ#(!…
yG@/ñÝB8—ìF/–Ì^þ¥Û¢XîPyùîŠ’½ù5ï}pžÚ£àü-ÊSN|©ï<"ú/?‚ë±ýXŠžÀqÂ~*Ï�¿åvª-§@[|,bsvÅN.ö]GZ2m2y‘ÕWÓÁÛbgØbt�=›sÆh£°ï=DÖïåŸ$«ÚÎ„<#Ö¯v–ð1W`¶Méž'#ÌÁÏ0ÚÇøØk/nóå
+ÝE6ƒ‹ÁÙd/¡'Ãa�ˆZËÇÏkŠZÉ_!ðŒ½Xî+²i _&ò±ÜÆÞ.¿Ê·Øj—Ø©Üh¡½´Ã¾¿Y‰Dó­‚Òÿj`š
”øÖÚ¢¿®ñ­·…Õº’K¾R{:k÷qc#\#¾MRT&b,Gw|›�óü[„ÏLì_"9ëÛ*Ò³Mh–Ú*ëðU"ˆfßvÄx»çÛ)Ka—ü©‚ÇF_µtì–?5T1¾+x��ôº¬&ß>0ß¿^ŽûjAÏò×‘V‡¹á™¯œó¾höúrà9ÕœßApº}‡ yØF³Ã
+ÆÔ¦Aý�|�àŒúhØê;.Ë¤	¬3Ä×|�û†ï8·}-àúZA÷ûÚ€¹þvà}_‡Ld'vÒ×|ê;	Ácß)àÿixö�±é9‹b9ã;þußyYÉäÏEð²ý—ìWY–¿[èö€“é¿,š^/è™þjdë¡¯á
ù®€3×±ñÑ­Í×þUß5¡]åX}gQ¡§}ü+7àêñ
Âãlÿè>ßMÐýÃ oúF�´ æiß-Ð]¾Û �úî@zÁwšw}÷d)Þë–oÔ¦]Ý /ûBœá¿�¾G²Õ>¦¶íVŸ@rÎ×‰OùžÊTýV‰m´qÞí\â_ÀŸQÕú»`Ùnõ§ú¶Â?Ã‡‘Ø?xÎŸæ›Æzüé>êLàŒ@Ge%þY ·ûgCÿ¾tzý™B'ü›þ¹àû³AŸðÏƒþzŽ�ë|pÚý|b–ôMgüü«¹>ºø\Šr_ê_ùQÿbà-%Ò}À¿t�?áíñç#¶»~j—Oüà<ôúD~–Bé°¿8ì_<é_ô‹ Éd[æ_ˆd”ú‘ÍJÿ
+xÞâ/�ÎiÿJ`—/"»èŸ©Lcý«|¢®†`ÀOƒåþ�ÞWX���NÛ
+�-‚(÷¯ƒÎÿz™Š
`uûK¥c#ÒºÊ¿I:Ê vÖ_lño†Ö>ÿ ¼çßNŸ¿Â'–ˆ[!¸ì¿ç}•mòo}Å_	q£;ðŒ‡(³�>±u‹©¼Ð¿:—üUì�WØ~ÿnÛ<D½Î_omþ=Pzäß+Ê�æû|ÿ>u½ý�Vùk�;üuÀ½¨ Ä°öú�ø!ˆ2ÿa™È#`�÷^óù+PWý� [ýÇeÉ5ÁGµŸ– EþfùOÈ`[äÏêz­¿Z·ýmHlž#*gµ¿ÝGÃW‡OìRuúÈ2§/“û»DÁŸ”¾OÁ_…Ý‰ôŸñÉ9VJÎ�·Ûò�þ ;ý#ö»l�Ÿí¢Ô»Ñ.·¹
+ü—}4ò÷‚îð÷�û¯È<\•AöƒwÊ
þîø¯ƒ¾îÖûo�ù¥îýþ›PõƒÞæ_åy…­ô�€³ÙËGãÁmðkýw0˜=õßÝìÿ¦et`‰ðÝõÑâ˜i�û‚�xœx(ªü‘(šÇ¢²Ÿ|*ðð›i‰žá§|Íô“fš‹ß@ºàg€Î¼õsFuù¬ÀÛ³üäl°+ÔãósüTÀÔ³4…mdúi!«eA ëæåþõ¬�W²ü¢dæú¶$@×–²%kžü¡åwq Ç//.ÃQ˜ï—ûU–XàG/,ôSNsý¢Iùb‘Œ%þélQ€#¿+ü›ù~²êJeYÈ8
+‘øÊÀ1¬‰6–Šì*
+[ ³xC >øÛË„Ïå"+Å¤U¢óð¹>P"ƒ¡¶Èz™à_¦Ëë+e’V	¿t¤(ÀiµH-šÛX+»Nê‘%\XG	,|dpq ¸*@fFy`ƒ_~k:�­
pO©pm¤Lu“_|ëI«™œ@™Èz¹”lqÓÊji %¼9RYn€ÖÛ¥2Pçøi±”Øâˆ�²-�­D[ê6‘ØJ™ÅUÐžà¿·]&w‡P'‹·0À¿°Sfe—ÿmãì¸€³
+áì	Ð©PU õ´;°*mF<¬K{ÀªÐÙ®ÿÈ^ÿ.¿qv€ÓEªÚÀ>bœÁh"ûý¯g16ÐöëüÆyî¨¯�\åõþc�×è�+�Ý w?ÚôÖGGà€Lz—ò
+kÐwÇ'¡Ô oÕ/è™Žî}�~*pHäç°ôpJWôúñ=WÐ8ê§ÿí€Þ¸8æó|£Ô¥O¿[ôps€>> gÚÇÆõ@“,-úà»3@öž	Ð3çôÉî¥@³ˆµjS€>5è
ÐwÞ­�ð|-@ßíž
Ð×¹§ô @_€>·½ ½ÏZüµ~ã"ç¥Æ`€Ó~ÜP Õßâ7º1¹Ô‹Èó-$èv;Ð†Ò¾h'ag£Rø@: |è$áeÎžIaj�„3‚]Îž$a/ç§üAû4’67xíhNð,èìà9?]k;z~ð‚ÈÐEÐYÐQØìà%?ÝÞé£I8³‚—!Í	ö"èÌ`èyÁ+Â×U?�·ôûOú�+œåéŽWØ¢à5?í­^‡ú’ ™ê‹ƒàÜðc^F´AÌ¸ÑÏÕ›þ*FQÐIU²<H•±,8,‚H%_¤R]¤+Þòù�ëXk1…€à¼Š¯:¨ÖCs+%±!¸™¦ôà$wSð.©btbî9„Î„ýò&¬™ †oTÍ0g»‚Ê¤»*(®J]ôñ‡$AòGì	>¦¢½…¦å^+b«>�°>ø”„·1?Iá!!<|á‘`*€q»Â¦àŒÀ4Öœ@!ÞÅTôS‘µÓbÂŽ`† g0±g¨`æÐêÍ2?ü“Aôtv*˜
<ÄÁº‚9À³AoìtpA@TÕO[pa€ê'7@#Ò¢òwŸó~~!h/aÓû,—‚ôGw�^“ÒÓ+ƒAzàF�žè
Ò;×ƒôÏÅ }©-Hï6ôéýËAz|£'¸i¿¼Ëa%é½Š¾`Eö¶Z�çC8,Ì±¤ê…"nÊûýà,GƒKE2)É÷‚Yà<	�ÐƒË¨¼Çœ=	b†BszÂYjÈQë�ò§yOa&a3B«€3C«eºñŒ«£îz³�Ï
+}�P‡èä./´*E!:›]¢ãÏÜÐÚ€øˆÞ
+­ˆA„NG„è�/?DÇœ9!:]ZÏKC[u…Í	¥ƒ“¢wtæ†èÜu^hƒ(ìu&úW¨šÅ¡�Àe!:Å�Úza¨¸<Dß!„ÊA†èX13´9@½lKàž[Ÿ¡(”î•¡_ ÃÛí¡
+,�£îÑ1ìæ�>ïù©‰Ü¢#Üõ¡­¢©Ð‰óÆågmh›È[%åŠmÐÿÎC'°e!:Þ¢sêM"ëBtØ»!´# xéÀ»2´é«
+í
+Ð2¤
+ô–P5j¥4´[DSÀŒª	`þ
+í�tWˆN¢ËC{Á_ÚG­ ]a5!Ñö„¨ì
íGûBµÔI2V/…
Bx TáÁP=ùœ…eWˆ7€q4t€³±(•ÚMB»9tÂ¡C$œ£°6)lÂŽÐa;CGH˜©°S!~ŒÓ¡cÔž²v.„™²¹hÚÒã%á±;tz=¡é–‘­°¾�s•8ÏoBö®†š�ý¡¢D[¶‚s%Ô7‘Ú–1OAE:4/Ñdò Ô‰òu‰2ëDi
…¨wÝ
Q¯{¢8,ZÔíM)÷CÔSÃÔŸ…¨—ÞQ¼¢ø8D}òIˆzà­õÆG!ê‡#!šÄFC4ã>-êNˆzã½Ðç-c¾ÂÒÂj³A	8)’qJà1N/GN#á3He­9|ô‚ð9ÐóÃç©»€£²…áÀyá‹�Î
+_½¨°Üp7p1¤
+Ë÷çÀ¯Âr@£e‡/ƒÎ÷R[÷QGeùá+Ô—šÊf#•-	I¼k¶:¬^…sU¸KÂW�+Ã×¨Kç*üz`}øÓ1{ßÃã 
uˆÆÇðMxÜÐÿã3NSøV@œsß† 2|amß…`oø^@Øb÷Eë«5Ü‚’,?Ýí!8ÇÂ�¤ïÇú�®F
?AUá§RpÁn
+?ƒîþpj–Px°+<3¨°Íá´ ÍÀé 7„3=ÒãáÙàT„ç€>¦wmÊÃ™ Û�z…mg�Þ¦ÏMv‡ç‚nß[8;H¹šN-¡²êpèáùÀCáÀöðB`]8X^Ü‡”¨lKx1èæp:èÒðÐÃyAa&åÃÑ.v†Á²½êRhíBU¶5\A}xð@x)R½3¼tK¸x$¼Ø.	ZîÅ
+;f+ƒÈbwX]þ…ðjà¥ðàÅðWQ{y
+_¼þìº |ÒÁ=
+¯G4�ÃdbJá	—B0Þ³"›€s#eÀœH9p~„®J?S�¸Þý;á-AúŒ* �Ù
+Î@x8ºC­+=²]†½Žy‘�A1¼ï‚#+R…ˆúÃÕÀáÝAêÏ5ð~/¼GúØ¥ìÈ>`Zd?”†Â«÷ÓpmPÞ‰4ö ¼‚ëáº ø¾¯!QèÊUeƒázÐ·Â
bQä@�¾58¤ÿ4è�Œá°LM
´î†�@kFä(07rø,‚�"R,	ÃÇEúšÀ_iô	Ð3#-À‘VQm2Ôö x‚m23Òˆ ï‡; ”éŠŽÒG2¤²›á“ÒÇ)°æDN‹`Ï<üªQ€nQÏAV9nØ4/§±üÈÅàÙ Q¨°¢ˆq	Œå‘î ¸úzY¤GÐ—ö
+ìx…¢‚�@ô×Ð–b¤–D>u
)Ü¡:/�\:Tóµ‘js‘²­PÃØ¤†‚jYd7†¸uj«D¥¯)BÍ .r“ºŸh*Õ‘mÔÙ"ÃÔI"#2¿;ÁÚ¹\¡F²�m;BMa}ä0ªŒÜ–us“ºOäum„„.¹+÷¨ÀúJä¾v4(Æj%5hi‰�LLÂj"Ô`ª"D3xß{úuä‘h�ƒô±5§Õ‘Xó€ÑÃ>ÂžÅÃj4(DRCB@Mbw„j¸!2#$’CUX™Å•&yé!ú¨2B¢Úg‘WF•¿?2;t@7–)¬1Âç„¦±ã‘²ŒåX"E’2É§ªf…Ä»%se8ùâóˆ�‡ÅË„Ù!Ë(Vø¼P[äsBX§EæË”-aAYý/?0ÍE!,‹"‹!i�,	QëZ/‘<™Ø|ˆ/D
+€ç"…!ÚKY¢¡²œ‹‘eÀÓ‘åÀ+‘b`w$�Œ¬Ý)ž‰¬”É\+ðz"k€×"k%k�üYÞÙÈé(•±o¯?²	x)R¼)^Žl	Ý"u+Àê‹,@ª»"[…à–Q‚a#¢oQíTBa$²8ÙŽìü] oFª�âÁHµð¸;d¹W)ìN„õëŸ2V£wFÜ5ÐzÙC	‚…$>°A­<Šìt-¤O"Ï`Z�Fê@?ŽÔ~ƒÀà<ˆD}¬UXF”¢ª]‡)8Ê#�Ìè‘ÐÑ�±3s”¡XEµF¤g~ô8pa´™ZZe¹Ñ&Èù³ ª4#Ôüè	häE[BXôoBo�êt°»2Jû­ÅÑV„¾:J[•ËÀy…-�nƒU¿*Zº$úkôÑ¶P{È(SØº('ƒw}´#Ô2ÊçEþüâÎÐ¦èÞƒ*mQŽÒ^ÁùèI$"3ùTˆ†ÖÓ g'ÓîÁ…è#HOGé½ÐûQ²wžDiØ=�´ä³H×�(ì;Ú�:VN2½ƒ·+z!Dÿo½
+º5º‚§Œ^ÑSvt¡¿>z	š3“³Ü¯²ÍÑn%½¥y/J�Ó-IîµyY ½À¹-JÏÕ]‹’ö4Zúr4¸;JïÎm�Ò¤^=	Î™(½5W¥wù†¢´>¥çDoFééÍ…ÉôÐfyT¾.G;#QZ
?ŽöÊ6Mïì-N¦O¢ôJç¢ä¾ÐØêíX”­ËN¦ìžEi+£/úØ½‚ÌÌO¦-‹ãQÚLÉH¦MŒYÉWQ6·£ôÝÑhèUV¥G3ó’¯A?+™¢;¥O¬j¢µg”>sê�Òâ¡(½Mp6z=DoÐÃš×£²s´A°7J�fîŒÞ%4(�öu†£ôäå‚ä!Y»d_UEoJ=D9/™ÞXÌO&sö£?J½uEéU·–(=ýVo»EiÃçJtž_S“FdôÍÉƒ(½úv7Jß™õDé…ÉÜd2ª£·doS÷ŠÞÎI¦= ¦è]4ì�è½�Øˆ¦·%ç&ßGÑÜŠ’)}1JïLŽF3aŒ·Fé¹·-QzòDt½ä`”íþ¨|O’üÔä2 ‡!ZÁ=’)Ë‡�îècDÔ]NïYEÉ¸¿}"ÅOCä�>,«‹ÒÒŒdzn0J› �¢Cdï#:…ˆVÐ“UÑg¢Öi›)=™^uëŒÒË’Qznâ\450¶(li²BêâCÃ¢äÙî×�
+…7¹Š“C3Âc_:¬M¦Ã¬’ä™adÓÂè³Ééaº.˜æ¬4y8ë’g‡é�9aqKœ•ÉYÀÕÉtŒ·"ynXÞ’€‡²äyÀ
É9oJžz}òám!8k’sÁÙ˜¼(ŒQiJ2™/»"yIØ2*V�Ì~lÛQ<ÉV4÷'ç‹„€®M.H^
+¬O®—¸‹@×%/S&—ƒ>˜\lH^Ü›L_OîK.!¬ÿØØ‰æ”ìY¦Üjh4Co;–¼ô‰äµ “×�nJ^æ„v4¹œãÉ�-É›€­ÉeBZ.þç€ÍañÑAØrW¡ü“aÆ[îjLHÉ0–-÷ntødö0oj0‚%‡·É‚ª^·w„aB+¬'y—HeèÉÕ"…;Ã*»œ<kŒþäÝˆ·/¹8�L3û•ä= o$ïö&ï^OÞ/­…¯îä:Zmx:»”Ìÿ 
+¼‹É4â^K®S£ü«€±Éä$ù­{ƒ(Àá±Q†“†ÇÚÍHò!ÔÍ>,ñR°š±Üû–™[³HF›õ¨ðv)Ÿ—Òˆ”ä¤'af“öhSy)JøKRš�‹SN ¸ƒ
+o	¦8ZÁYšÒ&òÛº(¥C”m§àtQ800ŠS°’Cƒ9û,…Ÿ¢&šršdGaL¥°ïYÆ1¬¨Rœ´o±1åŒ¨‘a…¾Jsü.hþ*í}”¦œ™:'ð<²r\aå)X˜Xî&˜„)X–|ÏhÆàœÂåÃëuãØ¥p“kgŠ8ó­N¡.S›Ò-Êº)Ù›rYÄ×+ºÝÇnHéOÊà¾ê U)Yn¢@Ì)Ô?êS¨gÔ¥\…Îþùæa?JpWÊßZF+†×åšHæ>“®–¤sËhC[LáËÄ]ÿ‰Õ®°–”i×eƒ€ßÖ”¢Ÿ‘¹|>e+Ê¶JÆq[Ê kH$úfXžaÁmO!ëøBÊ°(ó¤¨#å– o‹ò¿#¿+÷¤ã>´N§œ‡ïÎ”QßpºR
+¥GÂ÷c©ú$,,*j¯gSžBëTÊ3àÉ2:Ï¥¤Fd_@‘�I™‡­%ýðu£ãdŠŸÎ{RfFÄ%iC„3*Ò"
+»’’[}p\M!CãrÊ¬úHÊìˆ¸8ÿ«Yf„îüe‰PÄ×˜Š:72�õ¦<–aeG(¹ó"¢Dr"–qST
+•¯§°hKQ@ûNÊBàÝ”§6š¢üoÎ¾¾�ãº{fvq¤D€¤H`±KÚV$[QÅmã6IÛÔµÕIƒÖùê8mÉ€Tƒ ©Ý~‰+µé×¯…ŠºoQ·DQ·¨›ºïû>@$uß÷}ß¿ÿ›�-'ýªŸ¸ûfæ½7oÞÌ¼ys-LÓC}ã±ÿŸs\G{æ·™�gDaºÒÌ
+IÌY/þS×QÁZýöÌ{&£
+	�n›ôD÷�¤té$ªU¡¾��JËªA¡úhcL	ÇJ`
+ÝW�gom‚©D3ß‰…rÜ™T(—Ÿ&ƒ´Jë	V'èî§u¢ëã5Z+­MAê4­Ï	Ý>¢M-¤m³:“á´B:q5É35º=2Në›
'Q£…ÓáÚÄOÑfB‚‰Ú,À“µÙxÎÒèÆÈH�n¡Óæ˜ÂÎ-${S/yÓ‚g­6OV-(ŽÑæƒlº¶@¦ÒÚæXm!bê´E‡Ö$k4ºC2B£E×©-¥ö×ènÉ@d¯°IÝ)¬-Õm‰äCwIi
¦5ÒQÀl€Ö›£×œ|^ö­Ý%Y¨--”ª_&e¤Ë‹4jŽË5º@²D£$4þ‡tÍd™¶y¬ÐVHM¯”Oº@2W£$K5ºRÒ Ñ5’Å]#™ºU²ùÑe’y­–-�.“Ô#´ÜVjkeüEŽëŒ`k4›Ù»×Ò™½õò¹A™ÕûiŽë,ÜTÍ¾Q7ÉçfÙ†¶PÍ³L“±­ùL††òÏ]çáùiâ„J5ò0çv¤_€£Ùwš×ùéY-?šeŠa~3ÅœåEèÃ#ß	¡ãÚ®Â<×%ødšm·Ì¶®
É4®Ô7Z´Êq]Æø§9L¹öÈ²šEÙ+¥6%Ý'‹¸_>V¸®`¤ÔrÒ÷&´FdxG“C’6€®�i1ÄÜÖâx^ÖhYó¤–|V£›7'4þ�ƒ�Öšð¼ª5ãy]kÁó¢¶#÷—®k‚Ý×8-ë>Ð~ÕÉu]°ÇšzÈlð‡�õD;"­‡yDëhá¯\7{®}‹&5ãÇLÄã@¬	œ(¤2Ÿ,¤oÿ�BL¿ÀéB2âgœ-”æåìF«F§bªç‘Ð?pÏQ�‹Ô©—ðœ¸lr½‚¾4)pUò¸†„!�ë²Ü<"@§-ª7eÌ-Y]ÕòÃm¤ÜÁsPàn¡<òpÏ4IkG£Õ„À} Œ
<0;äCS¶GˆHšÖÇ’çt¨É�¤™=Ù_hO€5,ðÔ$yfŠúq}tÔpJà°¢�V3!ZÇ9@g+Æè�Q¯@OÄ
�yèxd 7ž£}ŠÀÐ£T½Æz’¶¸/Rzª‹r0`uLXs\·ï_4# DÒ¢
(¢ö;ˆ3ƒŠú¹î`Tˆ�`37_3‘Ïò\w1ªfÓ\$?¯èýòfº 0³P×=a£›Yçø*õ_ð-’E¢Ï®
+Ðvò†-´o+’ó{ú }€–ä·ècC€¿A‹ø+·ølI€ö­×†CÒíZv_º“í0Û–|§(¯±Õ:º¹4@Ëø´È¿5@ÇÆ—�í¯Ð�×å�QEôÑýÑàµ9@Ûjktbm ¦¨“ëzx@Œ�vÆâ¹'°¬¬ÜCô§@`\Ñ»ì@€ÿõø"ùCE˜4!Ó¨ÀJt––ÿh"0ø�'ÉB­¤�Ç&Kì)ÈîT`"°�jŸ	�kL-¢až†ôã�:Ä
LÃót`º¤šø``f©›:í‰À,ÄœÌŸæÀÀÇ¿ËšücrJã�¹ˆ;¨/"<5þ˜Ã•œÁK�ùEtÚ…œÄ‹�RÆ…(ôS‘¼EwÚA÷è®~N3Ò¨Nk=õEEò’Òbhc†>šš “W6M_"ÛBƒn©Y
Ë�ûl}yÑëìZ`Fë+S§›Ù÷»l¸.~ò7ä«MÒW™4«‹d7jµ½Îî–½Á®Ö€hª¾»à»ÎÄ[~ãõ
ˆ|à·ÑŒ¤Ø„ª¬oÆs ¾´StºÞó,ÀË¶‚hŒN>ã­ùŒ#ômRêíÀªÏñ¼Ëžxù“5–>:c'ˆfê»ðœ®ï.’.À¥‚wÙ‹€øÉOé‹¨w{L‚½¨†ú>ä8WßoF0_�R¹1¤ÌÒÉÚÝÐá±�µ ¸ˆ#÷QzÂD=X$íÌ¤<4™qÍ¦NÈ³�¬Sx€6ÜbŠrÈD9üjýHóÜç�£f u4N?V$­À^è«¿ÎCälß†¢6D?^d~×ä·qÃô“&í)H<G?
ùFêgŠÈ?[D‡Çç )<
œ3‘ÎC35:™Â‰ú öÒ/š	—Ì¦ryöÕy}‘¸Ÿ~¹Hþã³H›‘Û �ÜŽÞ:uÇ*ý*²œ§_Ã³^¿T °ÖÀuÙöo —±úMÄ×ê·Lþ·MÁï ]?l±ÎîÝ+r½ÀÌO—ë_ËôûHjÅ¤@gÉ;�¡yP´A×"×Mú#ðÚ«?6y=A`·þÏmú3D=/’ß¼Ü¬¿0­&ZÔgý°ÍV½§O&õòq¶CïíKý^Å.½�‰Ue¦÷5CÕæ«Ÿùêï£{÷@º]ˆçN}bœ^e0{ô‡ÐãF�Ö¶èC|ïºz+ì€.†ú^c�ú0Ÿ,öpD÷Á$C#}PiF�òý…«Ja-ºgnþkì¨>Ú'+¾lOë—ó_g‡õ1€Oécñ<£Ê{��Ôõ¸.7Ø8ü»‘ÿ;¤/Bü1}<0Ïéð<«7#æˆN^Ü	=9™èåsU+ì¢˜äKo@L6âKoOÔJØÜ’0·-¦Ê˜«àyM¯ÿz+àKº¹y1M¦NGüM}ž×usãc&à[ú,™ÚüËº¹ñ1z¸ªÏ–ñsäs®|N@ü½ÞÔÏ<Sÿó}9îþ
+»«³¾×…=Ð]MU-2_‹}æ™¤´÷¶ÄLh�	K}é/ÑüîÛÝ¶r=Ö—ãùT_�ç3}%žOôUx>×a¦0Ôp¯ö‘žimck|ôå¸µÀèmÌ“1ë÷2ÖKœ
€û}òP¸ÄÜì#œ-�y°Â·úyÛ€3ÚØŽç8cžÃŒ�xŽ0vá9ÞØ�çXcž5Æ^<GûðœhìÇs¸qÏ1F#žŒž£Œ8žC�žƒ�ƒx2š|òÞ³�|ƒÄ1!÷¡
+›f°Ã€†)l¦á<â#wÏ!…dà8�ç'ðœmœÄsŽq
+Ïzã4ž³Œ¡PÇ…-6Ä„—gñl0†!v¤Â–¬šwr�ÂÈn�3+î¼Oî‘˜Ÿ »ìÍÆE<WÒ‰0h»ýXfDm4.ã¹Á0¿Swµ¿Î¸Š˜-Æ5<××ñÜdÜ¿o²›²ÍoÙÝæZã¶OZ¦;2á.P×÷$|_>àù;ô³Ž6¶×°?Dú.ãYã±O°íÆÀ»�§Ô¥�gÔ—�çPÒ…¿ð5Ù$ñA£Ï#ê7/oø9k2zá™0z›Q}üðŒ*¿üõè¾~*E5Òýðl6úã7†“Ç>¡£Æ@?íñ)â‘{�ÿ¤ ó1WŒÁHºgÐÑ›KÆÀw:gsÁ c8—�¡~YÐaæ‹&€g�áf€ŽGœ6èÎUc„_žhùMcžw
:^sÎ ã8ç
²³×2à§š¼^4Fç¾Qƒç-ƒfgŒ1€¯cýô#•ãß6ÆãyÃ˜à—?g=Qa�÷DÄ>6&áùÌ˜ŒçScŠ_†µ~¹Äˆ¨V£Î”pOŒéx>—|aÌ-žé?šïš¬°ÞÅê,ÿk¬ªx¶_šjÇ´Oñ\Ž{ŠÂú³zB®Åd·Ø>ÏBT<„ƒ‹È˜…ò¹H>ónçT�Å¶Å~ÙÐ—HÝ4ø©¹Ó‰ áÅthDñRb<Ma£‹�Ë$érù\ÆcŠWJx•|®–Ï5Væ5Åký°¦Ó6¾ØI¶pB²dÛ&¯£ö!mÞÄb²j“ŠÍ‚­§'·o Ú™
+›Zì"ÚºâyÒ‡Å¡¥™ÅÄašä0ý¥rn"³6§8ŸÌ-Î”~³ŸŽÔn1›¨)òVµM>Í¢l—Ï2f§|î’1™…Þí—š„¨—BÌ+&áæïñ›?§ùMömö]ögìGìcö3ö)ûû—Ü½~ænÇöùYNw¶ßo¹yÊ¿ÝžÛViôÛm¹n%æg®v,îgÎ–ð³ìîì ß«toòÛ@jöÛU µø=¶=ägY…ì°ßÎ]7ùÒ|�Úãˆß®äæ+¨\¨oŽ"R‰G‘“Àe*[«Z±ÇüLÐ¯I©Êqd±[ý\ü]•=P•fà¤Ÿñ?`§üyÊCu›�Ÿö{”¶Ý&°×vÀb¶ƒ&Ðl;lGm'Là”í¬ÍvLÞf<o;ëgêÛìœŸ)o³óÈãmvÉÄ¼b»n7mwLàží¡	<¶=3�¶žv	ô¶÷5�~ö�&0Ø>ÌFØG›Àûx˜hŸbSíÓM`¦}Ž]\°¤ª·/0ãÙL`™}¥	¬¶¯3�
öÍ&°Å¾ÝvÚ÷˜À>{£	ÄíM&Ðb?b-þÇì'ÍøÓös&pÁ~Ù®Úo˜À-û]¸odOìÏM ÕÞËaUÞ%Ti[Ö×ÁSƒÒà0‡r™j|r¶u-Ã…‰öè4ÖX‡í*_È®¡öÇ9RÑ×Q%ße7ü^u¼cºƒÍr°õ&‘WY´·Ð]ÕEü6eÓ¿ˆ'Vë¹I:îú=j“ãÚi³ãp:ñ>¢�: ú˜ã!�8N:”GÄ³àÇÄl3·29ë`÷Óâ>vØŸ WÍ§Àwf+ÏÐaœÊstg;åˆ�…J
+û™Cm%v·Õ ëø´ì=5d71‡·:Øt'­_�qYZí¥�¦��Opñã¨¶6Ù¥õÖ<í–¸¯s:žy®®'yß2W¯ü<÷,×Í¼<Ï|<½¹ó\ó=þå®»yÞ6s]Ïó¼ù‹\}4Oaƒ«Jó-uõÉÏ³Mu�ÏÏË[èê«y•)ààÍšéªÖ˜¸œÇªóóræ€8¯m½ë^ž×^‡gžc¼Þ öªµ®ê|oölWJØçyy‹]ý4¦te«\VÑûSš9 ¡ÙºÖ»¬‚oMƒ;\Ê@RÃ´´Z¦æ{\¬ÑÅš\ì°Ë¬¡º\C4OÛ®¡súÙ0Í“wÅ5\c®ÿ`# ¸›�Ô<ÞË®Q³¹ÙhÍc?îªÑ<mÎ»îå{<—,YÇh÷×XÍã:å‰sØx�9~À&@¹×]¡¦®žùžü«®Iš'ë´k²æqœpMÑ<¹]µ³Ãa�ªyœ']uš§àškš†äš®15‡ÍÐ<Ùg]35OÎ9×,èõˆë}ê±`HA^ÖS×lˆ×;kT�×öÀ5Å¹ïš*Ÿe7ë<ž^Yõ(<ZÖ¬OÎ×¨‚<ûC×<”´OÖ|0¼çZ‰°1ž¶Ñ¬	žÜžY<îg®ÚOös×ÈO›V×°¯ã‘kH�×õpžó±«:Ë½:ãEãý²Øbdý[‚òÐ–†–g˜µôÃ3OíŸµJ|�5h^Û€¬åÈ’ŽœAKtS5KYIõ³£ˆ¯¢zÛ•®·Y¬.‹ÍÊ²ÚðjB\Åy}–Xƒ&0/k-2ƒ-Ìr¬Óìv×þ"¾ž0‹øÍnsÅ‹øFê!‹ø&bÝœf½Y³;\‡ŠxC–c%)â[‰ôXßF¤'Šøv"Åüz¡žI“î¤¬ÎñYŽ#Âc[�µ¢¬ÌÚ
uäXºßƒJ^›µ�fMÖ>ÔÍª¬
Ym÷kv—ÓçÄùzoÔì9.L˜cÄñv�kö,×]˜’è~?¨Ù³]‹x“foãz\Ä›I2Ì€[H¢çEüIÜ
+É4»ÓÕÓÇ�hö¶®Þ>~T³»]U¾taÓ<’\§r/ËJ|‘ûºmÇ)ë~>~‚DÄä÷$e9(Í*eyú»ÕS„2ÄÇO“Ò¶í±îãƒÝ¿ÕN
s³Qn6Ám‰w–xíâ|Š[9GàI?O¸#ím�Û}9Vƒ[=G™f$] ÔštQ–»Ùê4¯ið\¼šï§¥¼ˆªVYu6ëŸÍf³ÁÙlXz8•Í¦¤C-Ù*Ü¥»$;t*ú2UC‘2(§ä
+êþMùFŽvìªÆr\ìš4G×ÑëÇäÜÐX¼¢›°;csni^uHÎm�µu±;Zž{tÎ]�y]ìžæµCjžmhÎ}�å¹Ø�¹s­Üj,×ÅAo*ÊcôÊÁ9O À›6åŽæÍ•ó6�>&¡±l{µ½©*/4æ!ÎyŽá9­°’ãr¢�<×ÈœžÖÆÅ¢¯sDN¯€Ýö¦_éód×äÔå°™9r0Ÿ•SŸc)àH»”Ãîç°ª6ŽÞ&~Êú˜òSVðªÕmú¼Jß6)Üê€×Ö¯M¿SÊ·aÃÚX\¶µývŽ™Æ€Ì™¦J§�lÃÎµ!Švl x§Ë]Û–>ü�
+ín›¬ŠAÈ ';{0qR­±e»']…^«ªM¶Ñ<+­_ž2$@®ÅPˆÞ?/½,�±>
nNƒÛÓà®<‹ý0°z�]K§ÝJƒò,Ù†È¶Œx”‡yÏÓÑ#eô(D¿Èë“oOƒcòÙøt¨.ŸÍH‡æç³Eù˜ª°åé¸Õip}Üšw§ÁÆ|«£¥ ÇÓi7ÓàÝ|KÞHz/ŒD~–O'8S)UX[ÀV§C,ê±’nxl*Ø‘ÆØ“ci°%
-`'Ò¡siðJìÕ.-J;6¥›ÑÎÊC«2³ÝxäÞ•IGO@óqmðñ‰˜—M>~¼;›N�1Ïµ›ð¨çÛ�.´˜�/´t6%@.Æ”tÚîB¶?j,|I€Xa-ð}ìjãná—Z¿i¬ÖBûTÈ-ªxì½‹¦<Ž>E©Äé�­WÑHÙ³¨ºˆ6–R)CŠØè"–a²g¤Á9EŽ�ÔwìÊL”]h:”‹Í0{zÒ6'Àlt+½dnÑ8ŸUìzRÛ~Ÿ”6Ä|l‰Ï5˜
¾ù(å‹û<Ž¾„Ïc[æ[€>ýkÖâóØ—û,'Ïçq®ôôyÔ¥¾5iN;Ò`Â§.¤šiLG-¢¬›8_ÀÀ�ðñfŸ²„¢–¤=ñ"YŠ°ÏÐFàÂÊRBmpðeÖ‹Ó$Ë‰ä°�ó©+åh:Ã•DzÜÇWÊI¿‘VÃjB½Êù]_»5¨„¾µ²9¬x²žúÖà«ù6àÞù7¢Âù6<ÎÇ¾Í¨Â‡¾-¸g¾­dÄØ¶6ÿvêW¾O~•gn›oWn›owN�ÿ¹ÝãzâÛ€Ïç�ÂMôí
À1ôïH7Ì2l~×~jS;~€ŠŽIš¸‹šx/j^˜:4àwÜõñ©à~ºœq*ç7Oà‡ÏæýéùZégcÓ¡Ii°ÖÏ¦§C³Òà<¿z�DzìãM¤Â§é,›)Ë£Ù|¡ß¶Œ¤],+JÉ¬ËT…5*Udšñ2¿UÏ¹e[:qgÜãwµ@Ï��ÙÙ‡PKûý‡i|Ñ•#²²ŽBí{ýÇÐÐs¹ý8êæ€?Ex]jŸÿTšÓe¿ë$hÿƒ�BÊUÿip»æ?WügAyÝ5|Ó¢?�Z¿á¿€¸Ù�4—‡~õ"•jH:ê•Z¾L¥áçOÓI/ü¬§¦¤*5F¨4T.§Ê­ÖlWHs£üü*ñ¨ñók„šQG×‰d¼ŸÏÖÄ
sô½iŽ¾«5g]Ü¨µ½…N¼I»�±}³vöà¹�]DWÝ®õò{Û´þ~�}«v7À}9»‡¶¾SëE^ÚÖ}Êk[Ú"÷ñ{m[´$!šJO¿ÇµC;IæÎèžtžûÓ`LcMšûa>ô?DmwªŸ?&¾ÓüüI>ñè‡ÊŠ6öŒÚòÿ¼×çÔ¶ëýüµåù~ÞJ<Gz:£ciðž·ŠÁqš°Euä´²êdSü¼—Ní.­ÍÞ:8-÷ÃèZQ³Óà¼€ó1©šQIŠh'ûèe¥?SD‰X¥£«¥ˆ*‰¸(ÍmgÜ—Ï§Á+ip�®öÕih­Ö=ÊBÝ²ºG]¤7èÞ
+==�gcF£OÈÆ¼G_§¿4P­×ûƒÙ@Îö§)ãi°9
^Hƒwtu´æ´)¡D§bq:=Êý4ê#�E
Ve8ë[?cˆî±÷7†"Ë_[CÏ0Ýã`�0}�á(Eµ1ÙpŒ@á¦–-Bt­1J§Ùúh0šjÔ€Q�1F*b†áKº=+ø8u°ÇÏÇSeîóó	T‰ýŸH•¼0Ýl&QåÇü|¾¡N�¡œe*e�1…´i,5Ø
+#íÔl¿¡ÖBˆ¾iô© Ö0ŽìDýaìUlÙ¯:�LQu±:�$¬Uøt’ì^Ú˜A’µøù€4ÍLI3´˜�JÇÍ’qãŠÓV9
ÎÎˆ¿Ï¨2ö-¾‚«Œÿ	_�—x—¯ÅKù�{U¦þ˜ïBÀö÷|^öOøA¼¿ä‡ðrÖ*â(Þ®N*Ëš¡ð¥ªÊÜ³þ*Ë^ªò¿RYÎ•o±©¬ÍN•oÇ»í•Æ;÷¾ÊûØUæÙjãUv•{wa8Â;o¿�ÇðÎOØxï‚C6žÀ»Ýq?ˆwáoÂ»è¢�7ãí»fã-xûoÛø!¼µ6~ïÀS?‚·µó£xUv~ïâv~ï’¡v~ï×FÙùI¼_gç§ð~c²�ŸÆ»ý4;?ƒ÷WfÛùY¼;Ì·ósxw\bççñ~s& x¿µÖÎ/âÝi“�_Âû«Ûìü2Þ�wÛù¼ç€�_ÅûkíüÞ_?lç×ñîrÂÎoàý�³v~ï·/Ùù-¼÷º�ßÆû÷îØù¼ÿ¡�ßÅû›ÏìüÞïôtðûxÿA•ƒ·UÙtðßWÙ·†:x¾Ê¾=ÊÁTö�1Þß¡²?šæàUöÇ3ü•ýÉ~ï ²ïÆüÇ*ûÓCð€€óî	x@xÿÙ_Ž÷{÷Ü§²÷9ø6KŸ:øv¼¿÷ÂÁwàÝuš“Ue>ÛÉO"øA�‹¿¯²ï�wñ¯«ì“\|®Se±ÒÅëñþá:ÿ¾Ê‚[\ü+*ûËí.¾
+±µÛÅÛ«ìÃ.¾ÁtñMxÿ¯C.¾Å©ò¿¾ã;þñv<>ê›Åwãýñà,¾ïŸÏâ{ñþ›©YÜPÙßÎÌâÅ*û»¹Y¼‹ÊÊdñ#H,_’Åû¡QþtyÿG•…Ögñ“ˆ®Ø”ÅOá]y7‹ÿ®Êº=Ïâ]*ûû*7ŸŒ÷Ïú¹y-ÞáAn>ïŸuóxGFºùL¼ÿa¼›ÏÆû“Ý|>Þÿ8ÕÍãýÉB7?�fÿé7_Šð?-sóexÿó*7_Ž÷ÿÞïæ+ñþåY7ßŠ÷¯®¸ùt€Ïî¹yášmûHe¿>¸û�TÖã©ì_ÿZeÿ62›Wg©ìß'gó~xÿŸæl>ïÿ˜Ã÷âý§æð¿SÙÎÈá ²ÿš›ÃGºUå‡sø«¼'¿˜ÃC*ëÅïåðJ•õæ}Úðr•õáƒÚðŸª¬Š·´Qº©¬/¯ÏVY?^¡²j~¢
ÿ•õçgÛðmˆÀ§´åßQÙ@>³-ÿ3•
â»Úò¹9*Ì·y�“Ê†ð‘^^›«²¡¼ÕËÿHeÃxuÿK•
çKóø·U6‚¯Ëã+`DFòMy|€Q|[_`4ß™Ç7xU^Ã¯æñ�ˆÃoæñFcùý<0Ž?Ëã	ãyï|Þ`–Ï[Lä5ùü€I|\>¿`2ŸšÏo˜Â§çó;jù¼|~ÀT¾0ŸßPÇ—äó¦ñeùü!€é|U>`_—ÏŸ˜É·äógfñ]ùü€Ùü@>�æ©l?–Ï{˜Ëoäó‘êù�|^`šÏÇ˜Ï_äó‰ð>|€…|JŸ`_UÀæ½Çsþ£
|=â–ðí|#€¾»€o°”7ð­–ñæ¾Àr~¤ÚRÙ
+~¼€ï°’Ÿ-à{¬â—ø»*[Í{¶ã	D¬á}ÚñR•­å“Ûñ®*[Ç§·ã®²õüp;~ø±v¼Æb#?Ó*SÙ&>ª�ÿ@e›ù8L®±…O.ä'lå»
+ù_¨lßWÈ«`Áù•B1&f'ÿW•íàw
+yPe»ø}L€»›¿€‹>¶‡÷-âÛ³—(B	U¾�.â;³Ÿ�*BQUv€�+âû4òéE(³Êb|v�ˆó±>~@‚Oôñh;•äó}¼Ú­²&¾ØÇG¶Sy3_íã£‘ÔÂ·ûø¿«ì�ûøTDæM>¾À~ÈÇ8Ê1‰[à¿îãe*;Îïøøß«ì¯öóíH8I›ú;œâCý|'€ÓÎ÷^gø?ÿO•�åýü"Îq¸£ÍÎs8w-�åŸ	o19Ü¸Ÿ«ì_àçÇq™/öó®pxŽ'\å[ý|!zÑ5¾ÃÏ?QÙu¾.!zÓ
~ÒÏÿKe7ù%?ÿ¥ÊnñÛ~>¤Pe·ù?
+àâçÿ[ewùs?ÿg•Ýã«4µHïóÞx>âUx>@çWÙC¾Vã¿PÙc¾AãŸªì	ß­ñ­àñ”ïÓø6Ïx£Æ·xÎj<¢²ü�†
+WY+?ªñRYTÜÕøDô5¾ý¼—xªñ_ÁœˆÚ?Š”>bZ€WÁ ˆYÞ@_QàƒT‹…þŒ‹ØàCÑ_ì
ðÄ¹_]—|b‰ù:_`°X¢ó;†ˆå:¿`¨X£óû†‰µ:Ÿ­Ó¯Ÿç>�D)‡‹˜Î‡`¼!št>ÀHq^ç£Œ·u´qOGëQY�x¨óÆˆV�ÿvFL2ÄDŒƒÀlœ˜n ÅÀÈˆypÍLË
¸~02bž“ÅVƒW˜"ö¼/€ZqØàÏ�9U7øpÄÔ‰æË°0¢g1¹§‹¾Åh°0¢1Ÿ`¦RŒ†#FóÁ š-Æ£�ÀÂˆ)Å|-€¹bV1ß ^,(æ›Ì5Æ¸ÝÎ¿ÇØïÎ…»±KÙ
+µäcùá÷hŸÛl”ö-JËFÚe^ò1�¬ ¸o3®(üI*q=Ed5Å}—qU%àÝTây$*‘µ÷g)ÊSYžD¢ñ"êG©´§¯"ÍÙEq§dýûTâi$Ú#{(îg)ÊOR‰W�èˆ¤¸OS‰¿L%^C¢3rˆâ~Å¹¢*�]~&Õ–ÛØ¥ñÏYc,rŒ7Æ#Ç	å_TîÊú‡Æ.å‡ý�oFûË÷û¿RË#ûýåGüíßŒñ—7ûÛ·‹4ûËéÝè/?àÿÊ°FøË›$Ðä/�ûÿšUÄýå	Y÷Ð½óÿÝEEÂ_¾/qTFìó#Ãî”áë�]B‡üžÆÊùË
+CsõÎÇý¥s4^ZÈ+ù‘Ö•±Bqeµæg§¦ðBmcs,^±Ps
+'	þ¯Bueý¤±KITkÒÛ³6¥Œv3B›Zâ	ÂVœ"•œßÉõzxžÞž…çë ŒõèäE'y+^ ÷ð:# ¸PgÈàßì<Ë=T@5õâ#©åÏDh‘)Yä™(ï©†:…ãþHOµüªb‚W•òy
+Pç)å#è=B)ï£âÝG-!þšE^ˆò5Äj�@-”/Ö;FëåKôÆÐß6D–èå
ˆhÐË•‘F¥¼Fí©QËbj(/|=:¬cª0ƒ×¡2H”Þï0FÑ_/ÕC#E
+ëkáezè¹Eô;áåzh˜HWè¡fp½®,4•8ŸÖBÛEÇö¬Cp¥n+_"Õ±Jd‰(_§4ªÍ"²N�^~Í¡;ªe¿@%ý»"²Ü_…’ö‹XÞÄ¤„¢j‡à E”­TÊ:‡:‡WétæÁ•²¥þŸƒž
+ü1(ƒžJ,‚?¯’T«3¨þoŠj¬
+ªÿ ÊÕX5«"ý¿(½éÃ¯õ<\‰åÚÌÑ¢®t!,E2
§’ôäDãÍh“f4Ñ =4ªI¢^Ã�n£Ž¡Òöæ$í›f8–Ïû^cÌ6F”-ÁeBÊ�×yÿ /%uŸ4ƒ±Ä *Í`lšÁØ—,Ï`Ð—§Ê½„è«ÑÛ³ÜŸP³ÿ°9´H�åÑ‡íñŽ,RË–¨Á%ðá—ˆX(S,{‰`/Aj}X
¢8š<ÔòVè‰èáÍb,\£ã±VÇ\U¸D˜2¬Ï�¡Ÿ%Ã:ª±þ/ÉP#LðŽÔˆ”ë”ÿ¡ D33eX›!ÃK†û¤‡�R�]dÐTc9€È}K‘¦&Ÿ%|Y|ŸÁŸ)>"^É§!ƒÏ‹O”ÚãPÙºÈâRbhø„2Lê©+Z\õUCýåªQ“Y@�{^K6ù)í~�^EÍÐz½*Ý†KaÑxb¶cImÉ�iDº±-¦ŠÉ…-Ë¢Šú½æ’èÝT.VCô¯ynÐK7è<¼QB.z@Ùï5–þG =kÉÅêŠ'J7é<ôFuô�NÝT²••j¬b±²YIÄÃ›õ‚c­­Èx”¥ŒzÊw´”³#YNÔf½R¾Z)‰¬V’­À”{k†Ü5Ryš,W_µ¼	Vµç¹OiÀcõÕ“f_=©DÝf_½Î£nä:–+(í$ÞØ¥=#ùK¢[ôn*¡ÿ¡DÏÌþL–«=Ê…pC@h‹^
4*Z6­óÚ$‚[uA,hnm-?‰"œTþGlV¦Ù4Óv�
+;.]Ió¨Žÿœ‰™ •á”ÊC%Ÿø92)a,!LÎ@ õOÉD ;W›Fh&S3š‰C]a!LË@GÓ­
+îGé3¬à|
+Î´‚K)8Ë²´KÑ•–ýl.ÐÞ£–èk&‹lkÊÅ`ìŠ…Þi0GàÎ×ÔØRÒ^
Î¾æx×XX¢Æ<[[C»�4ô‚ÿÉÿ�]•‚'Ã«k’§_òüIõ£²ŸÄJÂÃÛô4›Ó­­%`0×°
+•[E*ª·ŠðŒŠ0~S–»Ž“À¶¦’hºÏ;-¡‰¢¦“G®¸ÒÃûŸÈz»NŒaÎäE„vè
5^²†E,¤UG&ŠÜ¿B‘¼šŒ*Û¡ÇJwè¼=+Ý¯òdú7’CTsîëÔßBïT#§D’I"¼S'$è%–XqÏa4Ê¸Ò1W d�/KãAi�)�“‰(ÔË¸íäìxr¡-´½~·ÎK5.#³_rŠºÆÀr¡¥�Ô qÅ‘ånà¦!AÛoÏº©%Ñ�»ÙJ¢ïw³ÇÚó…¦€«¯ñVCv@‘JÙ%¸@a¦Åñ|Îâä:Ó|Éž|&Yçþ	i¢R•¦çãêèÇ�ºÙ¼9èX6dU[±GÏ…“‘J¿:ú~§nv²	•v™~Î±Y­T«¥mZl•eik‰U÷û ­}Ô8,Œ=TÚ¥ÒjVPaß�ýXd3»ûw!SÙ~5!«Ž*	½ÝƒÖ—ûêñá½:¨ë;y æ[fp®3|Ü_Ÿ2™{ui
+ Sù¨fÕÏ2+ãVm¹Fr¬°$‚aD°’.ûeè€h¬Î*Ù¯¾C²vjF-‡÷éÑœ¦XcþWÈ•Ý¯‡è¡NÕH‹“þâá$F®ÂXI4‡PÁdµdò®,0ÚºÖLÜó;Ëv)KÚ£Ñ:†BQ?C»Nœ¢âàÖµ¤k.�Z¨k0‘–<Ùâ¨ÆÂ�zT5³¤¡r­UÌTÌuRÝ'‹�¡îogª›Š�Rw‰T÷.Qeg™ÊÞ%ÀÊÒô.Óèn€¦o@q7Hqë­<{’,ÕöÄÜ“ÜÇ�ÆU’j“…q<®�ÍÆC*êã!ÒCjH[-Œ¾Äc›ì~È`,mºïþB;ážZ¾›bàå÷U©ëËØh*¶ÅfK0Ô$Ú³…#‡íÒ.ýH²$üVþŸ‘})DOj˜÷4‰�4ïi4ï¡n"©óòÒé›Òé�2±¾Æ&yï°¤?GÒï”åû£Æ.1/Fº²="Ü#x¬=«€ç‹'Ü×’Š˜^~e:§äRç¾­€4x[áˆ,A$˜î²˜&Hi»-¥% ´)m�…±�²Ýka,ã…ÄcŸ…1‰0ö[“€1‰0XÃ©zÓ®>ªw8.faÌ"9âÆ,È1‹äHX(—ƒÆä2€ri²06F³ì6ß•AÓŸ+‹Ã¾Çuî�-*Ÿ¦„zdšRŽÔÈf%íû¾ìð‚oKZ6’þ�Åw–ú
+¾Í’o³RŽÔÈ,õ7ð=,­¦D m’
—E×Ð*ÁYÆ<ä´1åüˆl$uÍ$ž’&žâYD|Ì"ž’"™BÄÇ%±nÇMb{€Ýs‰Éwp8aqˆ§8ˆÄ‰ÃÉL“T‹Ã$ÕäÐ$9œ²8LJ¹Ô"“¨ÆO[Z­"­ž‘ÎøŸÊ`@¤Êš5}‰Mouu†·zÖb<�Ÿ³OO1™þßc¼!ƒñy‹ñb|Áb<$Å@dÈ�ñšÆ-Æ—©ñ_²_Né@ä²øo1Þ–Áø²Åx5‰+’q…¾¢ån–-w³‚®CÇøBn_:)43Þ‘‘ñU+ãfÊøš•qó«2F/AÆ³Tô�zÎÿoÆK32¾neÜ‹êè†Ìø�’Sá^˜Ž
ùáé¥þf5®Ë`z“+`jÐ$T¡y^ø�‰ÆH8dŸÉYP+2»%ûDÀDk+ÑàIÔ1ý1GWšÝ¶ìÖöÙ­;’}	è&/F¼ð?É>j˜´hï¦:!¶•ˆVèt1™Ã=+‡	h5¨·Þ·
+°[Èìøÿ…<�ÊÓL´‰îì%î-î»Á}7q$Éh!p•Bkt¡£¢J�Ñ¢
+�å0K+Ÿ�y¬Cð1'š'\rêjÒÃÍ:=[ôl"Jè]ËêÔÒ:•yRÁzµó ­´^åÑ×šBÍ¢½ˆ…éµíEmvF5'¢(¯©íÅ´ÚR'ïšDAîOeè„ÜÃµ=¬óª¦Xç¡Zé�Öoßš‡ñ<¯Ò£2
$Ï¬6Ô‡ÚÐs+XKÁReP–¶Vm¶8yy-ZþJòR‘Ír´Õ"ßA]!*HïÉ`Ì/;7€È%´\ÈUJ³{<S:Ÿ)¼¬�öÁ”|¦Úù±œ©ò²P‡`ƒBZì)R¼�ï^BUäâ‚UÍåÇÁ÷¸ªw6ÆcÁÞZrAbQFÃî-¨Aùi�M%Ï¸|´ZöÜ^úÜÎ"£UÄ�gaM5+F“Ý®²29(ªšBçDÔ�”OÃZ¼óH­ô˜Îk;�ÖjkMuöµ„/WÈDª�GOÅègal�ëWRE9ÀØ_Ì[Ù@½d€D¢6¼ÅœUnÁ¬r˜Jó¼ÂÇõ®�‰x Å~Š¿…(IJ…Òè'ô®Ñ\u°•õu¢bQ_õu¢jaì%Œa²øß”Aèx/Ðö¦tÜGSÊ{Š‘ž//.ÎÐøpI¾‰KúÓC„®GÏÛÍãi/EšFè´l·Òy¦ÁÝŠ(_ÞëDîÛ(Â:A>%b:"¦¼—RvŸ±ô>ç$EÕhEÄÔ„ÆhÔ„BÕ¨®?M6m±Ò“:+µñ¨Í43¶¨­9Ö+5_ŸÒ	†¶ßŠ7ÖSk/›Ž†9Ý\Í²³’êu¤¥º•¨×•T¯£„
+oøpQ“sã$ßxè^æá˜@ipGC[„5Cï-0A%#xóÝFu‘mdiƒO|F+Åúì³–²ÙJ,8}c°K£hçáûž‡ïKK[ÂŽ,#©,[IÆ	+ËÄ«³,’YÆ_Î¶t)²nÎÌ0þùkd±´]„È«‚—ÍÄ{&ÞãÕXp¼*‘Æra30cŠÑŒ	Z~<‰OâÇ	?NKeÂ®˜+(ŸÓÿ91Û‹©iAcñ>•†aœ ƒÿ;èµ?ì/Ø«W¿¿¸–=^–ÅE}ý}Ì%h±K�õÌ¢˜øûGªç‰HP$-xeÄÜ�d“eöƒ¨•Ÿ^·Üô	/Òƒƒ²xèÎK1Cså¥˜¡ˆÙ!¼? e!;ÆÂäøJÔx¿Šè‰"¼@å…Ïè¡{œöH¬˜³©˜òSè+§’	É
£)RÎï£mxòÈÖa4Z)?€A:r@ÉíBS¼÷H$Å�”«S”öRT–	¢q!DKwÒV]VÀT.•õ­²wb¥ïpÌÆk¼´p,C˜~ËUÑ³{ äêC4§b¯ua6vŠ•vârîìýWàÈ£^*£ÂÔ9÷§’Ièœi<ˆðy½Äì4ILEÈo›kÄ¿­ä�P*‡²Ù&AF<¨b¡MÎä¢_¬FÒ¶!ÚMÎXé&'ovB:Ä¤"H®ÍN*=Þ,mcð‚Îc¡�¤PÇJ?æ¡[<¹6THZ}¿�$*{?Vú~*éœ#zC®B…+r�ð�Xé¼CÅbEVá¿+}�w^Ô9-ë›¤Ê%£ð(gé·,u˜Á{~ˆqIo Ø²Kp9/é¼$x™„ÇìÇ’Á+º Š�ùJ¥Ð¸û¹˜:AÍhªH.oÊT-•î¯xÒ¨£T–ë%	ß1Hµ¯ÊvX'hÆÜö�&™}Íl>Þ7R˜h<±<‹®­$	‘bi½Wv02ý¯t’;r×R;re�•àc…•-TƒUV6Q
NÄk®œ«�3äÈOÖú:Ê=²3eT>xv
+Çü%y4RvjÂIAâ,«ïôJíÈ^×{¥
+xº5½¬­Úhøú	\ ÁÇ%G4|S‡/JNcø–nú�³åbêaŽHn~n_ÇÜ’Â\)Ý7 ÝáéîW ÷�†‹|�$ƒ4=>gIhéØ¢¼cRÞå�ßL9DRÎ³(Ïš”gAyö7S’”ó3Š¶@ªnŒa£Ù³\Ô`G‰ÒQ‚õ õ%‹ƒ; /¹vº�&{Gç&š©’Ï¡™à­^¢$ÝÅŒí¼/›äsWç²ÅH�ýCNóïsñæâÄBYö6rw_l€,Ø"9 üec—7›Þ¤�æ»†ÆÂˆÖ'ÛB3­Yy_Ç)Jp
+šà4Q:M°îMewyé]Îº7—-H¡—$F‹¥¯@‚zQv”Çâå"x_çr¥RŽãTÔ„<ðMé”¬’ÄçF‚Ä«Ç�DzX"-ö_YK /�0øšdìíh4°�³‰X&c„Á¸#
0õ(mð�ì”
"¹$CYÈ%X£PKíˆ–
+„¥²ŒgDR{÷Eè¢Èû79¢›�i¥uE¥×ƒhèÙ(hý§.²QPÂ"ÕJX¤Òsm-§×q(!.hÉ¦.åKí7×E–ˆÆò‹Ùtj‰\	§b«¡"tÉ’@L	š3•ˆß�P¼.2EJP“N¨!¡Fd¬QÂ$!$LRË×)¡u
+ÀuJcù%Ê\’¡1"tO©G“¦N’M¹N	Ö)-+4OµšEhy
+á©>E#ï)u
¿»#ùÝ‹Õàb•ªy™ö,w?s·~mKGÚù°›-F•Œ¸Übs;núc-	®�	ÞÕ‚�t¾YÄC‹l‡[[Ée¡S”Ò	
+ëÑ©›š¹"A-ýåýsÚ¡}Fõ1<Íµ\(�è¤
µßüfË›ÝÔ7»Ù:6‘QBŠuM×m�Né
Xªîáý.—UT%dõtS)04°Uªíy^)]	MR*Õi‘IJù,š%ÆÓ–L®††«•¶i‘ájù%4@!x€RvSo
+²‹aÓ�¯&iäNRû›Oº)—`ä¤H··¤¸X˜BŠ§�¦¼„ôHA„ÉI‚‘GJºÝd MR¦�&©@ú|	ë2JX÷ŠÖe”°%$Ÿ#Y<°€¿òá*ÞÃÕ²E"¸HÈi×d9íòöîd%£:åš¬¹®yEé™¬”OV3zˆS.»šé³(]-ß›ÙU)}Qr]ô¤èÙ+Ê÷)‰Òk’ô�@¿OéÐ”»Ôœ
+¾Z„îh­“•<—”4�:4}¹<Y5‘U «&ò«…#ä½B"ï	ˆj"¿ZRBÞgŠ±b�Ü4ÛY!íàð-®�®¯ ªè=KAËÀû¤@½âýHî˜	Ú0Y‹núfšw÷&4ëîÍ12ŒJ³³Ìb4àµìaâËìa‚ì! ×2„	i/bVz]ïûÉIÔ%‹ó]Ú¹Ù9Ók¸8´D¯eÙÒ²]qX2”b•ÈX
µbi/ëÕ¥-:éÚyè •’îóÓhcNê*D¾"â/ÊøºîÍ¡iJ<µ¦Õbnü‹‹¹r<Í\SM�©J$-Õ:KØ[ËÒ�ë_á’%Bó«DÈXÖ�qY÷7‹°A:Mm¡«Å¢t1œ#Zþƒ¿FÎA7IÁ¹yÞ�,Í<×›óÚm’v?F{°�õzÓÔÄÂûôFŒ&´Š¸@$ý”¤—Bî	tO®ŒƒÆ‹îrÖ†*©Óº£ÄC?ŸU
¥¤Ù´v)SI7_·eÓ·]
+(Në‰Ð`53z°Ú½¥¬A�'‚
ðTvAK»”òÁè£ƒU¸šájÒ¶¦àJÊ•Ü"R§˜îó­ì ä[¥GFË«»iyb·œÿov›¹°ïm™–€eH|¢ÛÌÐm—(¯e @ÂðS½½˜ö9Ì"Ë“åž¨¢�vË)‰º»µ)‰¾Þ­mI4§[nè™åÝ² U¹Ù[#§#•öŸ�³J{ÈÝà½„¡ÐA@Ž	TšIW:*	
+UfQnÏ¾ÒÊeD–Ì¡Òéý°œ¡×ÍÙßë•ÎÒ×9¥ä~HÁ^g&Z(·�¦Ú•mQŠ²\`år³0u_YÊ“Å¡ñ¾¸áç:/èÑJ�¨�GOƒP*]¡^F¸·‘�I]e¶	Sª+!`eÛ`ÃF#‰™Tõ…¤|JBövd�—¯`_ƒ“§-¥Äâ�.Xm¨¹ß'ß€d.A)r+m@l/êºwËI"UæTæç¨vÚvõ3R±¶p�ôH�AFp°áªt{	†n'šÓ	UÆ_—Œs3#%u£¤x@nRA*Ÿo$óy%R.e›KÙæR¶¹©lQÅ´£ŸbP�Ý){`°±KÇ–•ÊkÇ˜yöòåe§-q:(%“ãt²òåe¨-‰÷�v¨%ß�‰¯<9IÃü+Bvh!?S¦ãýÅCŠÌS;©Sn¦ûˆv[�j¨+jP§ÚcÅ
CÜ0·WNÛÑhŒÛ—Ø/o¦ÏñÀ¡+éJýg±&œ%Ô•¦áá´‘s@ÎA~öê9È·L‚åt :Ïœˆ4V7WR±X£°`zJ’�çˆi�?™TvJ¡ÈSrY¯Q$O
+$W~SÈð£Æ+E%0¼È–´hð–éhEš'¡¢6È*Ü×ã
+YØ"ò¥ßîf£	 4û;EéNÁ¢¶fdA®/^ ŽÚÍEe{ÔÞKYû[J�÷ë7ZŸ¥%óD^�N†ÐêŒ�föu­R-ÕxIÅH#W.+!H!£iÐ¼æQ)ÌX5ž $šÁ¾CáweÐâ÷*¹øMrÆ“
+ŽWÚjäX§E`´9NËì•¶wIøxç•ZÅJ'÷§ùqý8n._Uì!—A7#/aœ»¤óÆŠÑ�×þz¸—º£t@5(áÔqî.áÕZh¡°’“á—NŒÏ7©ã*Æ‰òë˜µ^e·yð6g¹a(ôºðþ-û:†…ëÂ<ÜÓ˜eãlVf˜•f; ¬PØÊüåp
+ÝÊÉh,qápf¹·*dìi†RÍîf³›#Fö½1j#w0«$'*9æD%nNÎTäZjgÐ¬lm’�£´
�¶Aü9¦2Ïyjå9ïLó9:�bmW`~“›cFŒIEP`u2`KXË�‰Ò÷xç5h+ÁC$H®ö°·uµ$�	Ç"4Öð†hô62F…îÝeÙ±ð`!ÖzœÁM`¼Á§ÖM³W&ÕÖMý [�VÊl‰R×Š±uË»$i
+�‹ótü­ÒÌyk+€G!LxÇ"4–Ö”0nÀø…f’Hâ' �´¤CfìÃ-ÖL4XnMZ×;Í†¹Þ™(]ïäÁ
N²m‰ÔZeÙ×e»øàë<úõ¦æÜ³�1L¶+æ8a&cdËï)-rO)¿¯@ªÈ}j-]dÃù �vƒyjÅa0X®TJ3˜§ÂAŠÌSË—+p‡"Ëå¡éžü=yŒ‡æñtÿà­²ýJ¬t¿B­ Û"QFÔÐÚNùQØ÷£¢ü2Ìøe…–8É<ÁÇ‚åbÜ(_¥tˆ¬’=‰n.„ÊŽ†ÌšSÞa,y4†ÖÛÕ"§Þ×Ù®åŽ–ÐeE.L÷SB£Eè¨(í§ˆhÓVuˆbÆ3NM&ŒSEU3`¹Ñ;ZTÑVyg¥
+íñ¼Béçý
+ìàscqŒœë`e×(-xMáæ¹¼àDÄ-w„–;Â�ü,wp’zÅJGˆÖ–¹ä]±Â}&äî~’�Ô’yçb’‘ZáÝIÉñàNE”Ki#£EZ“Ò©M’LN‘HS:Ê$¥ˆ¤P�¿ Ôçœ!TŒÌ´¹&ìŸÅÊÇ¨±þBíÃƒ´ÐMNgªcÁ…j|‡¬Á1j	�èÈ“\«ÄP4/µûiµs(¢•:%„xx¾žbÄòI3Ø•eæÑviÁÑÖÖÐTµó&­óf-ö/­5”ª–²©Fâƒ©GU*Ù`A7À�ƒ¬©€ñd¥©™>«B¥ì
+Qág²e¶1…«TSQ)¬'<Qú‹»›
0&3`ï¬tsäv‚ìðèêVÕÍQi€§63™Ñê(ú1`ÚQ¥RVÚd�Â�æÀóÖ¶¶Êxá%š,5¼ÒYob„,è˜¶¤²Gf`ñIH\-’JÔJºÂQ¹ùÍÆ.tž£9—¾±�¡„´ÔJŠ¢ÂJex%
Îž–ÖVÚ™<&{Ò?PGrwÃ¤*Hk7fNÞRšÍ-w"ãeÎ¨ƒ<ÊïfË¥Ÿj&G–¤kN3x¥mS7”Îs±µ•4Ï#¶SÖ‚lØtVMæøóß’ã{TÊƒQIhâ¦&]nÛdö2÷éßŒ¬+I¶‚È?¸BšÌRA_Íl6ÍäÚ»âÁ%NF
ÈR†¸‹òóI!Yî:i_V9»ÙaFäAéÐÅôcÙvšâæ»YŠs–šùEÊ²NÝìáµÎÎu¼ÞÜÙC=®Ií²™¶çóÉíAüj'eÀ1NN’áµÎØ—‰—‰ˆ"I"Ï™"‹§‰”—‰ýnFN¯"Q_&QA‚D*FIÇè˜ÎÒ½@÷éGêM4‰tèæMQ½?¢•+5¤›£»¸TçÀÊý–™Ð¦ÁìE¿'WkCK�Á;~þ=Šr™»‡·õÎ;4„kKgD�ˆðL#šÓl¹�áY†Ü´)Û nœÜÊ÷ª£ïÁCÑ¨-Í6h2å0�ä�·E‚ÊÝ×ñŠ÷‡tÂ1}niQjï+4\±¶Ä†+$"
3ï†Ÿ"Y‚GNj÷7<ÇŒÈ’2Ká“\RJ/),£× ­ØIÔtíÔTôNÝœ•ŽÆÒa^A•ÎxnÆLv®!Ý€
BÂT²Í°•¶‚õ­­1ï[Ž2HceŒM�Ä’tåËEè¡ JÅË"¢•ªJG4'²\”U¡­DHq¢QºŠ¥Áÿ´PwîML“~Ü©©ËÏàp×Ÿrz»?UéeûÔE/ýÓ¬Ÿ¡ŒÆÒù¨±À§âgüQ’‡éñÏxY½A¡ÒëÓPþÒzà²µ K^—0y}â¢öëú3N�ðBÌkŒd®Ö	°O™ªtª¡¥”.6„Œ¢JXB™)¤e)á'*�àôC²˜ŸÚ’o{òíH¾�¹§PE_Æ¤1d£Pi
+N¹-RþÛ:a›m•ôðIY³$rVp©A„vÂ!�·ƒÂIØIx&ü²x4!z™®l‰%^ºÜà¥ËŒ/Ñ¹Xp¡ºü
ëÔÜ©ËWe…!ZwRµ(%äÄ‘©‘t‡µ—‚Gô<|ÑúÛ¤Ìý@*‹Ðh¨4õ™,²“b,ÑÏ7Z:µS¡UÌ'¥Ñ@ç9Ù*s#°^‚¶®¼·²@Y¢¬0VY«¦ºÙjƒ).¶Æ`¼Þ`k
úfò:ƒ‰[o0—�m0˜ÃÍ6,Kg›fw³ÍsºÙ9öÌ2¯aà¹©oþÿß–)Oß–‰Ú:Á[|ÏÜé~‚4ÒÈÈ‘ËŒŠ¥8Àv¾ß oì¾�yÀ�Üy¾AFÐó2Í9�•.×Wà_Ae[ŒÚ œŽ÷T	ì%*¯*¦£Ñ²xÓQ<ÚL&7«|Š�LQ¿ÚîŒ•NÑ09£Õ}
+5'kBîo5x�–ÔiÅú97“‹‘ql0ž`ôP”éè,ò�ŒH,NÔ•ò¼dÙ38’Ïà‹º¤ÝH%%�™UÚzHÍÎTcÉãŽ±Dò°ãy¹hÒÆ\èm3’K�d!þ–ªè’ÞÍ–¼ËH÷TLí¿cnóAÿtSå’^
4Ú Óå}%:R)k$'­þ8�1ÕºYªõ"Ýtwo�cVŽ¹yG—�\;rIŽ`;”hN™Ä²hÉÙ+((pÁœ½¶|15­�—Ì³vúã¥Û
Ú#—OÁsÉc_—ô†š^=¼N‹×.y-Ôàbæð&
nŒî
+Q¡h	ÅFùî ¤fÀ$Ü½àE|U®Þ¦5�äÈc‰.Æ¹0r8RCŽdîL
+pªL3‹”´)î=¤»ýn†*½Ó‚éð&¿ˆgËâzÂ\]0�öÄáõškt &†©KLð]+}Íçèkèh½ ;¨ÿD[°qÒ&
Ï;�2W¬ÔÅKwB9Í²çÆJsÍ]p¹›áÍJ¡ØE¡eŽxû·Kïû*“àR	£ìV †„<m	ð-K˜mô²œ÷#ÿÓÉÕJ´cSÌó€Xèšá=FçëZé^ßæ²Že·EémÁât„JžÉÚ>£b¿!¡Fç;Z}E#B�J²ƒ‡cFòhà8àŠ„‹W4)šŒŠfj1:?í!3tØ¨8èª>jT3¡ãFÅ	3õ¤QqÊŒ;mTœ1ãÎK|2îœÑ¹w ¾â¼Á¨é�ÐE£b˜	]2*†šÐe£b”}3†¾IK¦Wä9X:ÀtVI­�UÂDY	¢8´K²@¥ÖÝ:éŒ‡ŠÆàA®ÅUaCM~Díã–ºôû.`®èÖ/°*¸QrÄ’“/U.6µ“d¨T�¾—ß1´Ý~îÆTUÞK[/{ü5¹;2•N0öžOhCMÄ"›EyoQÖéƒN,Ò[ ¡ó3Q±Ò	 CE�Zv†¢`<0j”­W‚ë§•kÁo�\¦Ž¼£e¾ÇŠäztùÑžG¶ZÍ)Û":µ„·ˆ�˜¤bF¾E8U§\ÍþqèÇá[þAûÁ�ÕÔ•¹­˜»¸‡˜ÒÚ%bo'
+ð“Æ.	:ìXöV{Ö)té˜	}ð–-úVK,L[7POð
+¦¨j<ØÓ15ƒ9ÓXúÃ$ªï«F{Q—|Ñfµ¹àS6êryHUžÑ,¢ÞÑ› ú¦Nô1H.œ\
’k¿½Q½pÚÊÆÙ:¯â¤�q6Ñ%¾I•�¬l¦,ÁL8Ÿ½E	tŒln	Õ¼>kê7´Y”�†‘rÛ:€¼�Nfß±–¶£™m'Œ»²»ÿÚl$¡>SàƒÄÂ1GéM©Å|CÞ¢Gs!”‰è¾ø6#Ÿú<?bp6R	±à5Lén=ŒØöÖÖò¹¢Cd.\æÝòƒËo)"·”²éJÇä!é{ÂžÜX#dîÉÃ^æ
+J¨søºš¡¦¾èAW5äô³ƒ¼|@­º‰Dè7a¦�à
ƒmñXÁ5ÙNˆäUþ—Ò
ù²G™A™É¯šÿ!¸g¹·:ÓRý*
d_ÍÈªº9ñv™¹�ü¬9÷ò&=í¦«Û¤§èW;Ie’4ùK %$6¶çÁºÀ¤6¥åäpòëôp‚<H¡NSÓye´ó×Í%—NRñ•.¹Ú‘ŸoÖ‚Ö7
A«›]•jø–Q°­µ5#Øžå»’t¿˜¯¿•vþ£µ•–ÀP�d1
+~£Ð¦æx{V¤Éª4�¶L­µC.g¬#*Wú&¦ù@5Ë£x¨çŽ¨gºû"}.ç…ˆ%Ë“#óŽIÿ?ãæÌca‡qE:“îføÒ?¡•€’è÷iÍ2¸”5<(¤±Z)ïÑ:#ˆö˜;Õ„)�œ–DÈÝ@½œb>bª�Qét:‘—sHsùã÷¡ßD\.7H:šÞ‚°�¶CdìË´´`æ"ÉHò„€¦Ê¥êß§Ü’2$_¥4•Š«´oÔüŸ;šÛV‘.³µŠCÓZÓuÊéæ$
¸¾Xxÿ|áK¨ðw^*¼ÜføÈœ1'¨‹Å3æÍo˜e¶§Ëì”ø•¤œJßœ �,8(K(§Ì–Viö�Ôªž*¯Ù¾hÓaÂ�Ëè$…c©­=+ÜßÚZ©¦N¯·1—HXŠ\®àYÅ¡Õ/×¦+VéJjó©´¸ÔÙ§’Rbí[ótÉ›„lŠËæ7G:÷¥wäŽå³ŒS¨ÏS–ô�…g
+Za#Ý¹ôYŽwj–sômš€Ç>åô©¦–ðr-9-×h"CÓ É�í´BÊài8ó¥/ß¡dœf�-ÉdÙ6Gç��¶9x’ÿ'âgâ^q×í�!*£.ÙË<7eæù=þ§?øË]+
q³¶mv3¹<Uè»³e�:Ê»Ù­ÏLÉM(ÚZmŽ§Öcâáò.Kò"A:ãÿÜÏø—žñŒº[R_™Jdô(j]eGyBöžÒ£p‹�rZÆ;ÆKÐäŽÃÂì?MÒ\÷Tó¸7]•+�;i'ÃÜÛH˜g³ö5 Èz)éã½3à>
+YŒ€1ùµ�*…ÚG)©ÃÓ\öŒ—Ùbáý®R/}Æ¹¼9anÌYË`§Ì�j¥.õ„Ž8cáGcp�F¹ö•Âcäý<+“&5ÆUK)~�îÜ<4B�Œðc#OÖÀ<úaC'¯Ü#ü!íÍþ�‡'À�·Ó¦È8t÷Kû@\Ç`+¿£Ñ_I~È'YçVù’Gzã™åÐhrg>'™"Cévºk&uW"¹‹¨�_ŒôÅ¨Á
+�Þ¯Qiö»ó^ÞOïÚÒ÷‰rM¦šS‚’h‡
à”ÙCá+þ|šBÒæhž­„€ÈsžÚÏ¹âOíçœÖ!\i7‡H»™Z·ï‹Ñê9¸ª¹?¢á1Ò�¡ìáàçÿ­vrÈ]ñð`G•üÎÉ#kš"OKk1´ÊcÓÈÔœx%Sh8mc&˜ð©QeÝC>qóò2ŠgäsÙŸþ¬ÒPKÏæ§ÐèÓMJÒ×K·g¸Tý?RÔgy&VúÌà´åÔ¡+}²B~éF*0ï_<7ès5’Ûü6MÒt £Õx[[Í7B±©æMí\Nú_ððƒVÈi+†B­F(ZO”ö,õòÖâÞµü/ûF,žøàJä§ÆFJN…t«Ò_6³ˆDéT¡`òWÚ«˜n]�RlÎ,÷p˜ºò­p9·
+LiOüšœv§§�ˆº-£ªZ~dÂ°¥4a¤£Â4ùëf/Ÿ­–ì*í¥Ç…Ap¾š­Ê%õÙj4 g^»D4PvóÞÃ:/�¯
+é2”Ð˜{—™]¹S„*¯ÿÒð#±xiïbNc3]�ShSîÐÖÔm�W‰Þ”!zs†è-q)9
+@‚ÛH7´…CÚ‰~&ÿ ¿ÒžTS4@ÍlµžfúcdÉ7/}ºä¥ÏXiŸbÞ•Æ¿±2±àåÄ*$Ê;¡ã^EÚ7I:^ùâeÒêâ®í‰p‚Ló¾”Ö¯X’M|ÏþàÙ‘.ÐICK§õöúKhÁ­l¯?ÖÜë�±÷WÊó�“•›ß*Ù®×tòÈÎ¾]§ïuò´I~Ó�ç•—%û‰®eÃŒ²l+	3¿lAÇ
+ÂòCVSÛoe¹ïe–ó“,Û3+1ÅR~úªV�ÇáúCôÔÅ¡œ.¡yÎ.![—Ð]BE]Bö.¡œþ>ÎÒÍ‘Ne%^ÎÇ.=r”zñT%õ½ÌJêƒ™ËÕ’�Ý‘¥´<SI}ˆs¶’ú„ç*$gGþ�.)4.ÈüXæQç;…‘£ôaË¹Hugkò›å
zú–ã½#}ÙqÆùmd•ëQƒîlùa%ºü<µæÎ¦)å59@ÌWTÅ�½Púï4¿t{ýOÍ3+c²]/v¤.ÄÐÁª…t#ªl¿šü´}µ'ùÝ�ð âxxpqm×FµIùíWßCGÔð{]{µVÞpÿÒð&^{Q›º¿@�Ú|½M6Îz[M¤Q]J“ç…¯H�O©Ëä¦asgÿ ýå¶Ô§êûm;õa �fqõ6óÃ@¯ü.]ÁqóÃOR¹_•1kTB{Í.³h5CGe(9g¦Ë;Vý<¦úi€éqg“UÝ=šCgE�–äõ®ä]-ùqœÐ>Ìü‡¿âã8�Q­�UypnŸ
+žÁ¡Å‘%ˆ´¬ÕÛzPåÅ¨�c1 h¬ &ÅtâtGÄÍ\æ±Ý¥RRùÉ¶Et|n™ûL»-•Éƒß«mŸÑç¥¬²M"‚ÏÜÙh~º¢|’-ÁŸ¼!þÒÕ¸ßð}™•²Á¿Mn‘ššXí€•O®{Îv!T:ÛÅÃ³\Ñ¶4Ö…Ú†/ù£mé»U–,gHÏ«­`œ‚k¬n‡þâÔ-ÖZcIøuÃ'ƒæç'ñŽŒµ¥ïó­·Á‹å . •��ÆHÂØdaŒÆHÂØla%Œ-æ·|(0†ÚÊ6ÛbÁÍò3Â[-ÌûT€m“>Év¸¯Âñ-©XKžßvñ!î€evgcz_~ˆÔ”{2¬8uÇ*ÐN‹r!	³Ë
+n#F»%#úäâuµCäºZ¾
ü¶©/}rq_ÆUì=y_â¶÷óä}QÂ¾¶—Èãäû,òéD¾ßÒÝtÐM'Ý��#ùý •6ëûA+m]C
DÓ(³üc°h°%¿B Ò`+¿	nÊ¯eÒRÈJD®|Y’�’Ä,I–×¸äú¦Æò`+ÊñŽ,}™~o}Â¢ŸLô%=VùdÐM¶™»3š,‚
DÐllÁ†$ÁÿãíMÀ£¸®Dá®îªê*íH"jz¡‘%›”cÇ™Äó’™‰“±GÉXñÌØáÍ¤ûUµ’~õgæÍç�ïÿß¼ïýBì›ÙÅfc‰Í€bßØì;ô‚$@ì Àì›ÙAÿ9çVUWk�™÷½ï}ŸÔu—sï=çÞs÷sÏ9`KÐóMfž¸í£ð‰Þ‘Ð pÚ«æÕÏ„z·Wô¢W‡-ðVÞš¾LPçÛÁ�XèlC>8jµÄ6`€mØuZ	—~»Y†»éà�)×D‘*µ²œãqbŸãCm|¬¢�çôs<ÌqÊv÷ø”ò„Uär¬�“yg9TÄòôßk«�SVò˜õéŽÉ/âÒ97fK~ÆJ~“Ÿµ¾é® Áçì¬·:Åz«�õf ÆmëÍ0YúŒŽ¬·WwÏzç-LÖ`®,Ö[c°|õ5ééÚÒ_t¹`v9€³Ë¡:·	ZšvZ=q �#ì‡o^R¿àÕyr´ÚÓÐ¾.!.[-	ˆuá;V’¼Ž¿­^âñ(%|	–ƒE‡~‰Ï{ßxÁ¾êž¨ÝÉõ@Ô0×]Q»Ë\÷Eí¾˜ M—xø äÄgÀ&má÷EdèG\Àƒ*âkZÂ,Cºöòx&òmRBÂ×vDãˆ”V+Î"–63{ù·áŸÞ^íåC¹¹}/!XYGá·9ž2pQô˜Vóu@=  v#èÝ¥ ½YÐ]ºOA3� û"]¹D)3k5G
+)èMÄ;q^ˆ«?ŒNð7°5,z&Ú=“ìžÉvÏ»§Öî™j÷Ló7äÿotù—ó¬÷x<ç�ß¯PÊ/âÖîñ’[ñhï[LmËÜÞ¥æMà<æÄ[+/ff-7ðgºàú¿†;DZ¸ó€ûæ~¸!Œˆ» ñi¸—¥p/3p¿Býïß[ë¥B9ÓrÕÅC/Í=WåŠ©F@Ù´Š'*!’õY6
+‰º4õ*¤|"3¥c¬s S-,ÅK+÷{`ùµ—c÷{¹xù^Ž+­Œs¤påuÝù–®a‚4“Øh’˜ÿÔ#ÄÓ³ï­¼u‰Ø—°[ùdtº?^œAqIv­AË×Óíí¦²—g¡X†("±YŒX¬:…èBAÌuªÛ|<Jr™:bÊ™v•åeG™e…ÑoÇ Ââuo wq7i%ü+TAìÀ8ŽwlôÞ�c‰·FäPÿaK²Ä±˜=	IÂRt)“ÃEaÏ[´íK•hÏRb†fÍ{Ûårgf}N5Þ’ü°ŠO|X%`¢R³©¹œ°²h(èÝÀ3¥lðÍû3|,„9~Ø’€Lë Ó¤¡}�tÚpI*2g_!T/«õrôŒ§¢^æªëeè”qmöH^›‹×M‚6[†‘="¦4ÞÄmCük�j#o«¯=T±ß¸\Pÿ{µOM^Þ�uZÂ~\Ö�ògmþÏ ùW´Ú]c��áˆBw°Œ&
CL`ù³ÞåutZ³»g¢bwOÎ>Ã#¨~†�½3™ž¯ßu‰€Øjº89"4ÅÞA]‡øÊC°ð?Æ§†èÔ€œ
+ë8TWã]ê !€Sá]<8õ]<êËÅ½Ã»+Pâ>ô.ž°¾ËE!ºNŽžðæ1Xð´#xòÛà Pe';C¿™[Yý<›]t"wDWù�¢òòXÀ!z¼ØCZã1õˆUÞH‚TÝHÒÐT¡rªàPë„2<€
+o€•ÀÞ~ëY+Ø®QïÑÜÏNÉï›Ë‰ÀP¨ÈZ—C½Æç¿àÀ�ÚÊ4˜ÂºküP‰—¾Ëð5Ø^ãC'ùÊ“Ô$hüAj,TñˆŽ!]Ö€’{ñü?3tUÑ`Ò“Xò-zF…§æ«¢_ÞŸcŠpP9ƒ
+{ŠNJÓãï¬!}è`ÂÛ*"äÒ»V¼/Ã‡9/Ò³œ=
+ß¹ÏJõ9Bì�jºËÀM#lÏîÿ+[xssÚÈ—oäù¨J8=Ÿ‚.óøJ€}!”!8¨U¶ð•[xì6ù5œƒæü&u°u"t”sÀ»ûÛ°iv¡c0¯5;aÉa–Ù
+efr¸–6�m
XÅãÖò¦—Bû,°ËÀÌÕN½F®|èÁP*.¦ê1�úÍ¸lÇ�²‘Ý\´%X"zó»�–^€!fVoäV¹ˆwbBÌn0­Ãê)z@‚Gç ´ò,ë$e×ÊSùP´Q &¦ì²!á!�ÓÁº!:ZÀ‘—€S™~6Ê‰J›àcF¡‹¢Œ†0ž
«›aŠµÚ#æb¯ú²é‘¬©ôf"\xžË£,X““
+åSæqLØ*‡Án‘léöe^¦WZ{¯´PðŠ÷8D¾"B e"¾Ù¢‰µÖP]ý€*Ñ¨^¬]ô»2úØ‹2*Ìz
+~‘‹ø´–•8úáŸÖÐùè<g³¿Ñ-ÞI•3ý¸‚yärA¾îdGÕ/âVâ�¼úÌOÐ/Ôë<½›ùB¨7ëô:_†›Ž«<Y€öÎ§�z‹×ÎJè˜"hí²G>mÕ¯)Oxˆ€}Sì›ðÉ8„¡C£�ùçúmÓ’ÄúÎ5ë;iUwvzËÐAÿ"£ÖyušPÛU*ÖÑ’Šò,fë}[ç«5æ±a|-¢ˆÕƒS2æ¼£ælê$�€9Tî@Ž£”p<óãÙŸö±?°ÒHuõcšf=éÓ,¾´µ=¹}Ò¾¼µ=Á}J0~‚1´¦vÅË»¸ê¬&\{g8£ „;ïŒ—Ÿ'=uÕ<2D’.áZH�,Ð`Ó®4ï©ºPÄÄÖ"Ç@?ïÝ@ÇŒ;y”*ž	x´&ptœ¸æ‘�¼1y§-îmµE²œ;zXÎ¹)€y½™z'–Lóy®kÔnò•7í¥,�”¯»šÌüŠ�X‹Yë.ém\]ôB>iMjS|©ô��þ{c`–·PúÞ,}coã‚	3h¥`é5Å‡wÝ¼ö:9S2—¦D&“û[vFË'Rëáa9·¸ÆØ.“¢uKñh9áßúßÜý¤½=�²f0�Ã´Ž»rzì
ÌÞÛÓÓ¶øPœâ­ãåâ‡™\ÚÕý˜íZªÓOºÿhS��€æªèÇ$¼ûÁX›CVš$¼YPœ$ _¤Ïo™ÚÿÞ‚(C‰�%äÍ›BÞ¸FGçæƒy<>Ay¿MJËm¢Î!°ÿÌÌ:Ž›zõQ@_Êöx
…ÿ"°Ýƒ%1Œ«0ÜFð¬ ž‚êa´�àA=EÖG&ˆ"´0%¥¿ñE±ÀN!®Ž!Í�`.ûR/ƒM¡C‘„E&t(þ;„ECèp(�goýoÊ�ÆIr!	û®$ÙˆÆãç/iœè08³M8-ÓÕ|sÂ¸Á»`‹å.ÒÖ9œÇ-‚5ñ³T!ØÀñÁ$Þ©£Íó^Îú_Ðht¿\ýz3¤G�¢é‡ù0\½H%@7R¯Ñ…Ðz¡_Kt½`ˆâ¬H‡°¦�»N¨ÅŽñ¼eñHBõ§€FúVˆ$KoWü†«þMs·P� ÷žtÞ} ·qÞ
X·‘|é(Êé5<Èx7ÂvÐ£ü®w•ŠRð"ìUkèäØw®¼å‚›�`2‡ä¢™¸ÎÕò¬�ÎÀ1<|‡=‡l²¬[ä¡D€Ù·IFûß¥övÜ¬�¥X{_nÉ¡k¨îš“£{¾o_¥>úÕÎ?2yï;Nö*¾Ýi®ZÛ�°M¤½!‰L�Û¶?\Úqˆû p»3®·;!mL;ˆ,5ŽÇ÷@^sP†ðÝ*ö`qØ~Å‡6Ç�½é¢Æ]àa
¿ŽhçX�"èe>¾Ky—©³|Ów¹êwñ„¶�¸ÝÂ®ºE0žšl&ÇÓX9•cåóáy ÏÂ[Ñ¤ÞV^ÝÁN³wØN³Yå’âµÓ@',å§y'æ n…Ü­ºÆç½ƒF…¹£eþ“°ØÏ0ß —ic3Â#±hužP¯�Rú,'ð|^fÖ�¤Ý�êj•y³*|YðŸ*Œ—rÕ…-Ih\½BhmÃ¸
+)”´›‚ãÉè wÀxaZ($Ë
+æ{e†F) ‘Œ>«_ƒzü™£z/ŽqÉè!§vÆ·èAóm¹I´1ÃÐp�Ó>ñÃ¨%aâD–0æ[£'µ†­AqÚ¨¡?Ìð¿­˜ákªrQí€É�äø†²sHRœî×¦û_ËÍéq¦½]Ê•rXf™Vf	m£€$á¹ÄVàn8€¸WèW•�‘ÚUoCÜÚuruk7¼
3î÷iÆaÆÅúLFkÜ�?© ™åÇ5I$“Þþh³ü„Ú.)}$’&êÒ#
+$¤ $EAVDŠdöÐ8@KVÆòH6øñQ9’ÓÄÈIF»QÚSÆåÊÇ1:²,:b•Ÿú!0”ƒ¹‡WîG˜è>o2D„¡Ú>¤ÇGÚrÔÝ<6{x72ïn¼z¼¿qÎòAž>.–¨<$9ñ-fh¯3„²3°ÄÛ=¿{FÍ¡&i¾¡ÒQnˆ–FKh��Ø¯WÁvèôø„õºN=èLé°\a23Vçý3ì=¯§:/N&Øyé€3—pBf'œñ&âÄ:.JIïæ±ùŒ;&–coÌq/‡4óP¤™´Ð–òx{;
+ªL¢Ñò¯a¾¤¡o‘q˜nÈªM#
ÓÆÄsÆ+cNcÂè0ðâ(:™Æ�ÿ—îK‹ÙÙlÂXù•pu‹ó{±I Ó¬‡˜Ý“ß‚Å3€F00µuw‹Ášý{¢´
+l5F	Ü‡Í¡™B¢|¦€{ƒZÂo:ÍRìô¦9–À©.4Ö3yàœ¼ðv1k²¸�}ê›ÓPïgLîæÊ×½ù6:6ÛéHŸ;€�©<nsdCl²…\¤�é¶�ÑDØb¾3C>l1ŽXñlu±!9	Î¥44â™!Æ®
+3À-ï;:Š]š_B6ŽLð¯ÒÀ;O»3mX­�«�m!ìäõšCKH|�¶+·ùÊÛ<î²`Ã�ªPÀ-<ÕG6öx<ãM³ÑkMSkèÙýT(ÿTpÌÿ'¶_ùœm¯_kŠ
+þú;dñ3lÏ …ò‰C1JH¼Î4¬¼Ž›¸×9Ø£kuŽûžRþƒ1†úÛvÖõ~gJ$àS  «ÇQÎ|þlGe¢?àB³ýÊòÞå³ý\EÌïðô¶ômzv‹)'LxweøUÆôÂ)ËË^à’O¥³�Íú\JT3�
,#óàÀxfý¹QU”Üõy­”mþ-Ð†4Ð†Ú·¹oõû.ÉeÏñ;¸×sýg¶£ŽÖGxå»¶¾{ñ žÚr›e¯ÏÓŒ'hþj³�oHßlh»¼Yè›…¼ZŠë1Úh³:ÁUœàaÊ0]mJµy~#áG~O{ð*M½ÃÓ3«ÑtM3šïlã ‰žýÄc…({ß…Ð°ÄDƒÚS…e(ÜCKŸÙ¼CÃŽXS] ¯^ C$-ò>Rš�ç“F-Xh‹äŸ³+Q€ ègÂ:Þ¾íÄ;Òú�Nh�D=ßˆÌãåh}‚N
EH«˜„ÙêÞ…°fŒ‡xÌ¡`è¨ày(
+w–¶p&Æ�D‘&¢S¸,*!§MÕÿÀÆá›ÊšÕiBþ‹x''”�š
ããlXò4cWt[]1ñ6ô‡ŽñeeeåÇx×ÀæTšðaº¸ÖóáežæéËË�ÏNãòÇÌÆá˜‹za²H¶Ò2l^›à–‹Zp#KvçŒ'S�½b¹q¦.“æ}ÚB¿‘Qzw¾Ÿ©XùS!‘q3»²ª=íM€wóâOô1{=	:IÐZGB-ˆmlñµª‚â)
+fPU¼¡gAƒI–vàî´T¬xâl¿¥„v~“Úø…Aþ¾¨žåñˆ|R§;q
+ìx‘Ð¸'/dgfµ¡Ô?¤ÐŒ•|sqvPE‡¬t§Ç”\ÞEÏÀ*Ñ@µZrhqOílFë0ý83N`qã¬8R…Å—æ7ôÃƒÜž '©¸$W;oÊJ;¡¯e:‘ÍƒrHØj}‘Ä›‡óxêÚ{ønŒÃ¬î»ÀNˆ…T	UR*£*9"
4üÈ¦ChèLc;|rSm5Z>¬®Æ�U>‘õ&…UF	íÅÐ±(9Opõ„D}IþR#ü¶“r«'lëKKQÖ£´JŠI3«/:dÕ!‰•U‡"Ì¬€*&@‘Ón@(CÛÅ	økŒÎ¶�¯1�­<©ìgÏ‘q‘i/É¢·÷†¤Hr)�eýª²B�Y|¤¼Ÿ!£�ôåÚ9f§abe˜*q.«’`¬Æ–#4\TeÂ°”°v\ŸÁ¸džÓE2ç–¸˜‚>ŸJDøzuŠP9Væ
I 0¦Ñ?`´IÀPC[ÒÊn¾:f×Ê²k.*q$#B½ú„·g‡iôùYI¯"ølo>/ÀÈ´ÔM¯j`Ÿ=´JdûI®J*£C?Ô8òRÂø&ÙÈö˜¯|Ì;âù;	ùPŸ2úX®øXvèûðšG©`³�ÁÂŽ±Ãm.[k°sÙˆh-6öÑÙ2Îy�o!À±XŽžõ¨§Ø4~X¿�|-jŽcŠþ!¦;Î\[²cãÒ*l0óÍ2™¤?N¹àsClŠìâÃ*ßÒØ0Âé{Lùû°] I`�V%C³DdI†FRW@¥ ´:R’„�‘ÀgJ4>Ô²Þea0èÀ\Ž:{sé±…$¾ÞÊo¦¦í±5Èñ¡YrÅ,¨lºŽSÌÊn4+ÛÝá@Û¨lãÛmUv«UÙ�nvÐÁê¢Z Ên5+»ÕVÙ­ÝWö¾®*½(¸£Þeu¿”ñíBv·d•gÕ}«U÷­P÷­ÈÄÀ¿¬î�‡±îçê³îÑ‘¥ë¶î÷ý‡ê½&ÎˆØ>KC>Þìþ†®9{ü
+JÈ‡6çWlÎwèySv`»€Ã8–^öÑ‘°„ÏÕiì0nf‡û`à0ïõòØyìöÔ\>>dÂÛ¡Âh�v®iK�F¢Ëšˆ÷²rR¼WÚ„/í!X]'ädR8¸(Â6yAá·$Â·¨Œ÷W„Ì0s3jÓÈm† Þà)7rQ„m–k¥Üf˜¹AkÎÀÜp/º€wI™Yg9ã]öëLv†™ü„†úŠ@MÆ:¸ZlN(·±æ¥Ú
+ÜŒÐÍdj#R¾À�&u>l1ä½�ƒ�”ÄwƒL;‚-.\£¸Ð~ÔB
›:ø+:b@ù¢·Ì†*!‚±Ñ8ðˆ	4Dƒ{Ü*‘6¹Lv¹nI¤ga=¿ho7	½A
+Ê�‚¡”½}[È‹îÌ¬˜“ÝÏÑ²™nªÍ_ú�=­jlWîP5°@Uð`…PG÷÷¸ÆÆ5ìž¡JëèžÂ`]EÊla¢ÁŒ–¡ßZ¤V‰	K7A’\ì6*"BÁK
Ÿ¾û–O¤ÅBÊw—ùhQñ¼%4¿°úÐMh™6Œ=2À»&·ˆ‹oå¤;ƒQNë%4Q�qZh´z»h¿»åç2YÉ¡½=ªë\,³¡¢b±ÌU/–ûÁªP›)ÃBD[Š¿‰z­QÆ‡©Ú’�Œ�y�rd?'Áýü¿4M?åû5GŸòtÈó”'ÓÅ©àÍ©`cÞ3nÎÑ„�¢¼ÕÑX÷wÌC¬¤í‹'q¾çƒ•æ^Ž‹£<¤�×b^ò†Ó‘.Þß‡žºÊŸº¨ÚMMö\ÁŽÙ¡é8‡ºLŽ¶y†¶¨MØðyíP`¸‰Œáuz|ª<ÿ))÷TÖ|¼r¡ß‘÷Ïœ
²¾#ää[)È'�!c6H�²Sé	äMO*ÎK›m€»R€w:¶~
+€y3p»È�£Š?z¨wD(±ß“fai6C¸¼¿g!1�âÄ…†$Ì2•†!Ÿû�>ÏÇB›!ÔçP�©D¤“Q<ÿÖÞ.zÚÞð´½éi{ûÓö—ÚÛÿ¶½B±/sP‹�Ãk¦ûÏH`3>XâÔëÍ&…ÍDa‹�ÂvÈºŽ�Gl�¿Äº(·×ÅòT]4¬HÕ…Iƒ“hp
[ÛÛ�ÿÜÞ>½½}+1ä^ÙÃ.Œ™ÎddÁ1øLÊŒGeXŽdiõÃfÛÓ�³»á>DÃ¸[…¸çJÛJb`�qO	Ú>IÌ68ˆ±8¬Ú›x³Ì”¸t(½ç!ÖŠô£E':ƒ©q¦ë
+©PWHxÑðßl{
¦× 0ÏeÑ+˜çÖ’OÄ9S¦Pœ3×
+�fÌµ³/‡³êZœUqê\‹“]i3¦JzñÍHJü?LâÿFYèÐW³²VÓŒ*S(Î¨«…Nóéj³,˜sW0çâÄºÚ(k5•µZHØ¤ÕÐŒdÆÉ‘x~=R˜„cØHvÍ8ÊÏÎ5Ôç*{§^"/ãE¨Â£ú¨8¯+ò_FÃü€fd?¢œqcåDÁ8/‡!8ºD6šayWy4a¬7ß’ì­›€¨Îy¬à9XÙH±W‰Åðµ�ª�ž%Ý>¼ìý³½æÛËwÑHo¾¶ü‚7_[îýsô­x[¼�ò
+ìï)�—iÇð5åFˆËÊ~íCCÊ	XjïÂ-‚zXÖ[„pBP²žÆÞwèMBx7~wáfü6±_8Ô=BL;€P›x2Ã—»é1´NVö¯RÂÛ»…‚c¯5´Q�lhª£iô—o“¹˜¶^¦iâ,:vq(§“¹¯¬2šé9YÇ2š»*c­QÆÚe4CÍ�ËØb•±Ÿ¤ñ.gVöbŽüñ‚Ùh'î€r’$Ø„2Dª«äèyO!
+ÙBu¶-VgÞ›, !T$(Àmóâ´œ�!‡ò„Ì©+1æwš–Ó‚Ïapª<¬ð®îÙç·QÓ¢é·bô¢z;—‹6E¯;1¯Êƒ´æØ�§ÜÙÅô¤á�¯`ñ¿¥½c²ÓW��RÄ@PÎnŽÐ#%Ï„�ç�ý2¿ì·ôYüû.üõÏõZ<¼¹t7¡Û5—î!œe …4®¢ežç²sþÐO‘Ÿ
+áµ’rçÛ:ìBöJ¡ê"¯²©wùBW>"ƒÓ`˜´.xYˆ8¸bÚñb|H­3<£bxµ«_äýáÈûÛ�¥ì]ñ>è°Ù9Ly?à›�ƒ’ü!§q cRÐ†j]uLL~:H@ç
+ÿÛŠïølÙ„ÝMvN.=Ÿ�êJñ`Ì>Ëv·¥MØÜI^à³s†!“žè)ÏI�=å9)@,Ëc<\ãîy+3l¡w=ì1=I¢G=ì%=LRYgƒÄè|?YI‹ã">Y�àqãTz�X¾Òï ©Ž^ýà?h²ììC§±59y–aÈXü�v¹´¹sÄ-Šh±2¸Œ¦êîÄÍG,¨«u”r#ÃÏÐC¯"_µR
+1ì¾n�Ø€GY%ío[÷iÇ€¹³snpL9$³è¾,Ä£«üÑ‡‚~YŸfž‚~Z�â•g.¼ßÐ÷;Õ®üÑ|�ÀÞDWûup¦	ÈA‚a:‹�1{—¾Ñ5þmí§¹Ð­Ãçkü/%¢k�ðf'ºuøüa­ß-´Gbè¢PyQpÐƒf„âjoõ
+�cÄË×ù†Ju½?ú…¿´�Äì6øÕsÂÇ2+7�<íq^„:‹W¤ï¬áãBÊþ•~\W‹)KWzµ¨·dÌ«E2â:%„
+ äõ}N	œzA@éT¨D
+UOY¢;áB©~AÀË_Â‡J6 ZÂ\Ê5xó<4È?à{'&8Œ×{�XÿnÄEÚ=±ŽD�a>I—$'�	äJ´Vv‰ìp]r±€K¨qæ$µy6 lCÝ)ó³s^'Ù¦ù<Ç„;Ý—R÷ièÚE=‰$YBcxˆ¨C"i§)gT9ûîkâ±Â�p§;Í¥­ñÃ‚Â©­õãš@Û„>^ûÒŸ`�µ¯ü	ö@QÛ®‡äÚâ-q¢i¾û.F‡U
+¬¬šyXiÀ·‰O½¹G¥4©7÷ä{È|Éz,¯Î°þr§mõãÍÍBx`ìÕD¬°ŠiÅ�	ãÀp†8=	ë TýW~£”ö²?ºÙo”AÅ£[0°ŒG¿ô3<ãÑM~\ÙË�Å£P´!Xw–wŠÙ9C¹4Õ¬(múÖ§c`S¼Çe
+S÷õf–Ó´¤ŠL…”"SÁ¦È´&¥�”ŠÖtÖH*Ù4’’í»s4½±Gl‚I²F¤—˜5¢!ÙµŸ$»´m~ÔgËó€ùöð�}B‡Y‘¸¶Å6èV±–Õ¹@B’ä9ëñZ	ÜwÉ}—ÜÈý€Ü÷ÉÝÕhü&±~êŒº³üŠ¡ÓP%=æLW.ÆMvT‰fÌ]oàñ‘-M%"®£šPS.±V¦8†Ð²|4Ÿ«ŸÁé£ùx¬r»Ÿ×R'EQ[‘›ç
+ ¶!ìÒ}Ù@_p—÷åÔ~m‡ÿç¡�þŠ�~GõNS¼rvØÝþRm�ïü?·äæörsá14XL”V�:Ô=üý?Ñ½~õÝ¢ûü„Ò=áþ¸¾Ão›•*6Ž…:_ó|vvN#iKdzá?þ³Ô§Ó2‡½´J,Ã°¸¶ßO/Ï�@×AøMh1?€gæÍ#Ý†B$3‡ÍµÿÃª”ï€Ÿx$å�&ü¦¼\UFDð’ö4ó —´7×T‘ÓmYæ‡URi•;ï°]ý1©à‡,³
‡=³,–0Ëˆd¥'‡N¸%3’zþ]{{Ä�/=)ª¨RCo=ø¡ ì®í²˜‡¼gf’õ¼Py^ÀQðÍ�˜NÏÂ°}y•ÂŠÍRÝ³T—aàÈ)xÊ¥”Ãg3Ýð¯ÿÉ‰ªY'zhâËAn°Òåí#,XÌrÒŸþT(OkPb”©ˆî÷ª}ÕƒN#*¶úuÔ8mø«_ÇRPŒ%ã°„wIÉü»\iåT�3"ú!ÿ¾dEE-1/’¥cÄâ%=‰Clì­ž'	/”ÉK“áê÷‡Wr’çY˜§¨Fh�ÊUÄ¸CÉPò;œ¯;šü.Ûq…w	Ù9¿¤Q­ŠW\MŒèÖéø“HÄÆ•£½“uJkïº´Õ)ÇÈó×Õ
m²�ž]¥¾9_êBO¦×•ldp³‘Eû|d¯`Êö)#{W6û9Ë{œ¼áAb\$vJØ'-a‰
2Ù’–’?}ãÁîPW-›SPOœÐò*©ü=—0ä\ÞÆW
®j†çðø_Ñ’”Lk¸Š§*þ¹WâéüÛ€R7$Šó„*Ÿ½w´Aàe�•gÏ0E¨5U*ÐÓ
+Ó�³èE›JýïÿJ-Ö-æt†{Ýq�X¾¯¡úÍ5Yµ1½{Üàa`É9ëd¦€a]”?‚™{�Ek%z*)àH$pÑi®Íy¯¢¸™ådš%`eoú‡’à·:Ñ	à³K~7‡Yp6,BgæN)¡Ó®¬^<mj&Áy,Vh&NS]�pjvh±pšê2pšê2ý§©.p#NÍNÂ©Åf#šœDïJCÆÂ4_kF}Êpj!œ°D\5vt’ÒPK=7Ý`üg‚Þ¥6>7‰í¿
…#þÐQœ2*Žú9åtïÊ#´Š½…{OT´j}ÎÞs‡€ÿýó¼©è\pÞ¶ŽQ¾±ŽQ†‰�þ=ô!"¾å¥î-NÀ¾ôîKï™Û�ß}sÍIºÏgpyyŠ2ˆa>¯<Ê)ÉPªsJ•©y¡bùÑZ/–¯‡Ïb±|±èxßõ^q=€¬{ô�”É®’×ÞÃÍÈÃŽ�ø\g�ü�8c1ôwÊÇB¨PYëVÿBI8•�¢²Æ­Üä”&ñ=î=WE!Ç"¿ÌW¾p¿ñ€Ïiüvþ›®àv‚¿jÂŸ3áßÞÃ­ìc>í£4f*±^ÊAAq)Ë3•#½Žç\eÊ8WÙ{(,û„Ï
+^êLÀ_am"ü˜gys”÷S†Ú”ÂþKÞCÀ÷yâ	ñGvÄYÐM/ÊxÑ™›çOËrÁ=5à8‚«DgNîÿ‚¶> 2¨#Bµ3(ý€Þ/¾ïÐ÷‹áµø]+†?ßsèŸ‰ámøÝ&âÁØBoõ1è¸Ÿ9bšé
+�ð÷kbÎè	ü§Ž—$.¦LõBL9Û[­
Chƒ§37WROÂBü”ðªWn�yÎÔd;TDã8é
+Fæ§ýýš�ÌOÃâ€øSî%>Ü+–ïÑH‡i¿c”�z²8€2t¿'IÆ9™(Éˆ9¢Ž~ÍÊJO(�½1H0L�8+'fò¿‡qõ_ÿÄ“þÅÐ¯�’”ÿš«œOvW&üëï¹ï0+*4wÏÏêoo70>cÔKoôŒŸÆí³~N3ÃBçÒaMoôœŸ¦w„=ç7žß'ý×PÑÑæwÙŽó0¾g:.ÀXŸé¸èwð/:..'7µž!²£›è×þè%¿>Cï±…\öë{Äð.[È¿¾Ko·…\õëÛÅðV[È5¿¾Uj¹î×?Ã£l!7üú(1ü¥-ä¦_ÿRb¹å×?Ã#m!·ýúH1¼ÅrÇ¯oÃ›l!ßøõMbx�-ä®__ †gÚBîùõ™bx¡-ä¾__(†—ÚBøõ¥bxº[Íébx‰j+E‡¾DÏC?©ø‰CŸ+ªKDØÄ?ô«LÖ"ð|Nî(<�Z"FùIM;ÌÂ[žebh¹˜H"‹,9}™¨~*Ò›
&û´LŒ.ïA�$ìó[¥Ú‹Ak¥:e�·N�)ÒÒâÙw©X§.+'õrÒ
ñ\–qe]—œ0 …éxE+§¡,UsÿWc�ýÍáY6*ŸøõYbxœ-ä©_ï\±rN–C'²¥*Êx?ö«�rœXñØïÄ|ðF•¡^e˜×¢ïs•í´I&ðBNîeÚ$5ª�Bô\–aáe¸W�´ŒÚöÀw$|wÁw|§‹°öcçˆt)´Ì¯ŒöÆ+«N3‡œ‰(Å!ök‰N'0±óé"‰�õ+c»Îù#øn‡ï8ønëpE¤X³@Æ°’Å™M³›vP@ÝIM‹Þÿ­	¨_YÞEÔÑ¦7Q9$@ê„†PT•ù[e’W™ì�GÛ3ê°™ðl9¹?ƒÈ�Ä2í¡SÃ>+Ø§³Àé,>Ÿ‹¥‡ŸéÎÐf±r³ˆë‚‘‚
u1O£ÃrL>ë�‹k“¦Úyá<ñÂ(Â€"½‘Êr´ B–øžïñ†âÑa�9%¿›]><€æDæ�óE.ô#eš·¬Ì¨ø‘Pý£Ó¾"¾I#nûäBÌ«L÷ÖÅë”Pç#¡U›��„6X€O¼äw•2‘2T�ê‡pCM¹cÅÊ±„ÒGT›¯@Ð�+~ì¨þqS¸ðð¯œ�´ùñêd8)Å”ƒ¢Z+Ò3I˜0ÆQºïÚÒM…tð¯œû¦+ù3YLT§ZÉÆwJ6
’Á?L…éÉâ¢:ÍJ6�*µy®ã•kHÃçD+l%„­¤°IVØAa“ŽËÍå¡9ðM‡1ñM€ÝøÝ\ˆ­œ®Ü\¿:J¬iB«ALÝG
^�2³/55¤¿fª‘jF›’	§	¿|NÂéFÂ©fÂFÂOž“p¦‘pš™ðc#á–ç$üÄHø$ŒëÏYFÂMÏIø©‘pŒ™°ÎH¸à9	ë�„+Ì„³a™“Ûc„m9ñk\¼o,B¿Ž½1YxcŠ ÌôVüšg‘Àl�S­vÊÏ j…7¦
+ÊÇi\Ä4á�é‚òI„3
b†ðÆLA™•áJƒøXxãAù4
‚Oƒ˜%¼ñ© Ô¥AiuÂõ‚RŸ!ZÀÂÏ9"àpþÚ12€K…9Ô
_"�AÀ–ðƒÜGœD\A-L­E5õ9¹¹=b/û^ö½ïÔFÀ¥� \�‡…ÛLÛ)‰×´ ç4–2cÆRfL€IÀ¤—jcdfNùX4¬ÌÑ9	´yøRƒF”UŽ
�*ÿè.)€ïmÑýÆ\AÛ%�µFü(�À(ŒÊÎq@¶×1>€+¤ùÐsrQñit5öÈÏF³RæÇëŠx/²¯­cê/c°IÄÑÔ�1ø-H%Ÿ‡É¦’ÏKK>�%ßžž|Q*y&oH%¯KK^Ç’_MOþy*ùDL¾8•|bZò‰,ùžôäKRÉ'còÆTòÉiÉ'³äméÉ—¦’OÁäËRÉ§¤%ŸÂ’oMO¾<•|<&_‘J>>-ùx–üAzò•©ä»1ùªTòÝiÉw³äÍéÉW§’¯ÂäkRÉW¥%_Å’?NO¾6•|#&_—J¾1-ùF–ü~zòõ©äë0ù©äëÒ’¯cÉO§'ß�J>“oL%ž–|8K~(=ù¦TòE˜üËTòEiÉ±ägÒ“•J¾“oN%ß—–|K~)=ù–TòI˜|k*ù¤´ä“XòãéÉ·	NŽË†EËïÏ?þ8Bÿýó½¶3�¡xÈ±�pñìJyäÈóîØË~mŽa;aãÅ¿7-ŒÐñ7ó½ÆxDczúxädaŽGÎèÄ€99ßØ!hlìqz“`êíØHð‚H*¾Q2)så™”e÷/ðê1Dv�
Ù½„ìË±’mr VâÐ¦Ð]K¿S1e¡W›FžéàY/j3�¤}Ý�t­à9$]+èž¤½]�´?�¤I*ôêq$é �¤Ì&<ÿnìåÀË}`6™Id}L¿ŸbjS¾6&˜ ö)ÕÁ/¯Õ“{6DÇóµ9ðIæks)lK2ÉŽÙÛ‰ì7Ó¨îÕ‰ê7»':ÖÑ‰t¢“‰îéÕHô!ÑMÔŽ°°¼åÑ>C\›»i¢¥Ïãº¥Ïàº¦.°mIÇöpGl¿åÕ“ˆí¶G`‹Ý¯µ4—=ÍeÏ@óhhKGóxG4¿íÕ!š'lhž¤Jýe¬Ä©-–é«-$fYÀ�rNL²~em	°ÊÅ|­1{Å­-% eÐiÖ9µå�ºD[�írª‚'d?‡à	ÙÝ|²‚O§|¦#ÁE^½		>.5Ÿ)VïækgŠÃmÅê7ùZ[qø\±z/_;W>[¬ÞÊ×ÎâIí9ª”’˜z¦X[	ßÎ×VÁç\±¶>mÅÚøœ-ÖÖ"µmÝqaÏçqaÏî©=×µçÓ©½Ð‘Ú^^½©½hkÞ¯‰’¿Š•Ú:h§µ^m=µæÚˆ•j!üH/m…I¿_Á/§m¦5ê¤ñR74nxoxÝ�—Ói¼Ò‘Æb¯Þ‚4^µÑx�hü>òâVh—ûùÚ6bÌíDË âm'…ìR7yµÝDØ$ìz7„MçžCØt®{Â®uAØ�tÂnv$ÌãÕ#a·l„Ý¦QþG±—ûÐžao€†¾}@ãÃ|m?Qw<�óµƒàé­ÅÀó4_‹Ã§º@K }wºÎß}Îpþn÷ÔÝî‚ºoÒ©»Û‘ºÞ^ýRwÏFÝ}k€|ÐM#l}wm}wÝïÍ‡éh>êˆ&,uŽ"š�mh>1g�1½´$VéÓnª4úœ*�v�ë“.pmOÇµZì€«Ï«·"®ƒÄ®5"âÚYý1|ý6Óo"?Xìºª·=¯ª·=£ªkÄÎèÓÐÚ}¿W?†è³¡?\ýA<�S‡i—vºj©v8§WkO™vŒ¦©ã´Ü­�Ï‹ÚÉ@¬L;…½úå—à¿ßû¼vš�vgà³ß«�¥íüþNkÃAï<\@çEZ)}�Y\çw´ËTæHÙìÕ®²r®Ñ(r~íô¯ší&uÀ[ô{~{hw¶Õ«}CAw1ï{˜ë}ò?`ÃìÃqÒ£@ì…‡œö�žÐpô”!ÜŽ)ªûÄ^~YÔÓÕôÁ•éà>?„}†ö a=¼Oì©ÄÃÃò�„_IEŒ¦�1áÔÆö�’>‚äw\Ú¸>HÌø>1å²W›Ð'¦N*Ð&¬¨Mêƒœ2âûiSú`Õ‚û»ÚTÈCÖ¦QÈt‚™á¯h3!�.ícÊÑ>¡âfAÐ-¯ö)¤_‘_Éx%Z£®nê	`6¸_ÕæØ2·6>w¼Ú<Ês>üöÕ>ëƒ§ÀÝð©)äÕ-ŸîëÝ=Ÿï‚OG¦óé¨Ž|ðêÇ‘OGÛøtŒhì~¾§-@dÇvƒì½çuª{ÏèTcº@ö£tdÇuD¶�W?�ÈŽ·!;��ÂÅ^~M[H
°¹§ùás¨ýû^m1°À´m	øzµFjë¥àyìÕ–QŠånyVC®‚ v¯¶º®×PÄZŠX™Õhë)èj×
}�Á7bUMžÚlQfâ%¥UeW3ÒªLïTeW3lUFR<ì¬jS–Ó.Ô”b�
+eVd:úµh›ú$%—	¤<ñ¢Ô9˜Îô˜ÀÀÅ`|ÀáÊ4šaRz3LîØA¯~›aŠ­jÅÔæåK¬‰©Ý0Íßs˜fˆ¯{¦©í‚i¦¥c;½#¶}½ú)Äv†
Û™¢97Ü
šCŸ‡æÐg 9³4?IGsVG4K¼úiDóSšuT©?Aü
+xìûÚfbÇ-Äo[ûPeo£ íÄŽ;úàf'…ì‚èa>m7¶E}7D‘ÃŸAd]DÎN'rNG"_ðêg�È¹6"çYm1¿4G<ÍÏ@s^h~–Žæ‚Žh–zõ³ˆæB÷UYh<©Xý¸@;OVØ¨Qrcê'ÚÎk{±’ºÁþ¶ôìoKÝc¿¨ì?OÇ~qGìË¼ú9Ä~‰­’	éš¢÷ûìGœ—vƒóèçÕøègÔxc8/KÇyyGœ_ôêmˆó
+Î+	ç|Çw$¼cˆ÷ªnðó<¼Ç<ï•]à½:ï5ñ~É«ŸG¼×Úð^Gxgã$N('åõÝ <ê[ÏAyÔ·ºGy](‘Žò†Ž(÷óêå�6”7Ê
+Ör’êúPZ6‘§<.­…Ü‡‰¢#HÑ—ÝP4öy�0ö�°©Š¾J§hsGŠ¾ãÕ/"E[lmKßÎ£qH	_f³iôhŸ¯|äSfÿÔù’ÄwŽçSÆûº‰›àSÎöî&n¢O™Ô]ºÉ>eJwq_å+k¹nâj}ÊÔîÒMó)Ó»‹›áS†ÝÄÍô)Óº£ýcŸ²®;\žx•Oº+ï�W™Õ]Ü§>¥®»¸zŸ2»»¸íùÊ†K¨µ�2×§þ¤²µ�Ýó|êœÓ3ß§6’G¹éQ¶{•óåŒWÙáUôVîz”Ï|Ê ÞÊC�²À§\÷({¼Ê}�rÐ«\ð*‡à×£\„‰¼·rÉ«Üñ(Cz+‡½ÊBŸòÈ£\õ*G¼ÊT�òÔ£\ñ(·=ÊðÞÊ"ŸRëQ|Ê°ÞJMï÷KIà¢íËÀÖ‰dôXŸÊã}è¹?J[\$i‹méÌ»½#ó*^ýkdÞ6æÝi[L�À®¶«›®¶øy]mñ3ºÚÎ.ºÚîtl÷tÄöe¯~	±ÝkÃvŸˆÇ8+)ÒNöÁßS¸�ê[¶Ó}hÂ9C¡ga®ÜT �#OÄ4ú´ó0šü™vIÜß
‰Ö•ow$Ò•o7$îë‚Äé$ìHâw½úe$1f#1nÌùHÍE¶îú‘NtƒôÒçµËÒg´K¼¤“éHêˆô+^ý
+"ÝdCº™�~w(—XC\†&øª@»B™«ŒŽk´Z¼NA7h;s“~oÑïm¤²EìúD¨ò9'B•ÝÓØÜ�‡Ói<Ò‘ÆW½úU¤ñ¨µ*»P¬î)Ð.àª¬•˜ðïbê¶í�y¡Xû>{´»ðÙR ÝrWù´ûÀq/ip{ùÀ¢!vW�ö¾C§��!`G�öÀ×ù´§Hÿ±nèÿõsèÿu÷ô·vAÿñtúOt¤ÿ{^ýÒÒÖÆ§LÆ„Éº½�°Tñ^7ŒùÅóó‹g0æ©.�>“ŽôÙŽH¿æÕ¯#ÒçlH·Ò�ü5(ˆ@M�Î€‚¸´„ßP
+Œ½’¥
"àr�Æ”
>m¥�„žï¦mþå9mó/Ý“ÙÖ™ÒÉ¼Ø‘Ìï{õHæ×62/‰ìnâåjc‚xä66ˆ—‘{¹Ç“{B�Žÿ&ñøoÕÂä NA
+/wÓ”_>¯)¿|FS^ê‚Æ+é4^íHãŸyõ›Hã5�×©Û•áþëÐyj	ù©Aôÿ9ø§éD�Bg 17º!æ«çóÕ3ˆ¹Þ17Ó‰¹Õ‘˜xõ[HÌm1wl£üÌ �Ž#Òßtƒôæç!½ùHßéé»éHßëˆô½úmDú¾
é¶µÂ'ˆíÃn°Ýò<l·<Û]`û(ÛÇ±}Ý«ßAlŸØ°}j-ïÏBdÛ»AöÖó.o=ãrñiÈV»Ó�äî€ìŸ{õoÙ·Èzìº.ÃÆ§_¿ÇÏxý"Î5ƒÝN�˜öX\¿'Æú]1–Ôˆ±¯ßÇ|†¸(¯0öj(W½'ªwEõ�¨Þ+rñÑËP³ôÐ§AVüòê(ë9ÌmNmféxmàæ¡¸Wé�)”ˆº>jªH—á“>LÄÑº ^|�wõ€e'
+Aã!³ÛÅóÂúÎlbZBÔ§"Ù=}*¾­¶‹�4{÷T§zÐY^ätðÈ÷	$:;	ãø2.¥U$Õ'¡8H¡Í	Òë¼+ííhrzÏÁr"G-¼€�†žŠÅÓg3HÙêS9Ñ¨ûh«*æUñ#¯þ<„&ØU1Öít
+"
+
+Å�'F� b†ÛÌÇa†<Vü<Êðð×ÿÇ^¯^ˆÇ”©ÏÞº_+³²ô¯‹Ã—Š•AEú%,f‚›±'³qú6êw,"èÃÜxÆÕ*à”ƒ�‡¹­šù!î†¹“ÑùÁègA´H�+.²{¤¸jÐ<Ÿ²ÃWS7´)nB-šï·1Ã“€û_zõT‹êÂ º(¨Žp|EOTò0Ù"®�ˆ+€¿þÄõÄãØ®˜§6�WÇ¸�WG¹‘¢±nàØÑHÐTjƒ�ëçFü¥W‰1Óºj„énƒ¨ž¢U‡/‡¾�ZGŽ“Ö‘osÚåbˆCMíèUzµ8ô‚îöèœvµâP˜Ø�“+ˆ}±Îõ�KÒ1G!HÝj$3’ÉŽäü"m¡3"ª¾˜êFqbâ
+ä´©î¸>Ÿåæ]‚ˆ&†¦¸ãe‰ò)nŠÛCKÍÐ:· 	b­3öj B«–Á^ôJqh¢[=äSc>õ°¯]Ýí,¯ñ;«{÷«
µ¨È—L‹¨¹«{£ý’dÏ*1”ì©^+Žå‹ƒ\y²'G�	|Á—v±gžÛpŽÊŒˆ1mIÊ@#*øîz`¿¨g2LYQ€º(orµ¥ATåËÀÕInm’¾ãÝÚxüŽskãð;Ù­Mv'˜uŽ8–'2Wâ(¿^ÄU÷©r'Q�IÄ�Z�Ý¨=zY…èÍ€f'4;#X½õnà ñ§PÛµn2†ZëŽ>õÅúá‹Ê—Ð×îS«ý‰dù ¿“™U®u¿®u‡¾Ý§â{.½Ö�!Çlj(Tu>ä‹GùôC¾ðò^ñèò^úò^á$„%}zÒŽ�+æÓc¾ðapöé‡}á6pµùô6_ø¡G½$…ðßªêäðˆ=àÓøÂ'ÀuÂ§Ÿð…Ï€ëŒO?ã7ƒ«Ù§7ûÂÇÀuÌ§Cû^s¬Þ´œøþ§ð×ÿ¯ 7•áµÛ:–F0'ŠìOsúÿD¯€°Ï V ³U¬Øy…�þoè¥¸§¤nSffn+#‹ô›ÅáëÅÊÐ"ýzqøF±2¼H¿�=*#¼ æÚÇ›ÈÅq˜DüMj8Xá®ø
N"	û©±à§€ýoPà¬«±à�›ÏpñçHE¹·J½�Nñ‘
”æ¸*¯ZÑ•A²©XkÙ5C»_
¤èþ¦7:ßG±ÑUAd°x]•«ƒ\"º€b3�`¤ËH¥«âåk‚´{"’æwBM¬@Eíw‰£õ•Ý.Žð‰²òÛÅ.2Æ˜,H”'¸è2‰¡‡:òúã¼'F¤èÚ *Ã@]�åãó�X¦¥Fz!‚ó£ÇwÈ;"GùèB"¶H0Ô¸{ÖÁP�Îò#wã×ÊGðˆP�­-ð¥ðvVâÒ¦ÉÍg»ø]FmgâOQlÙOÇ×S&‰M�ž”ûg#z‰ê7«šâFVUyôhkoÖ
+/f½Ò\ÄÔ<ä}«É
Ä±jÊŒãxõM‘Lƒø¹ˆxjKê¹§½=L�m™‘ÿ/@NÆ¥.¿ðt©†Žao$£ÜË!9¤¬ëvq<ô&½É%Yå6‘¢PX£íôD2êØ:®*+’…ëˆHVYY	¬Ø<4^0ËoÅÙ±Ù-ˆ.ž“U{[â„gs"ÿßš°¬B=3^fOÏ› [ò*0ù¬-
+¼™<�YµÉR0g¼ÉB‰5´ÒÏ;@1ÏÊ FáY£,aÖ‚½h]�Á“
&‹Ý#|;ûó4æÂ´‚Ž p&_&#BZ€½
+Ë�X ÃÑ’¾p=lÍÕë�¹úg^}%GºêòGa%ãâ? ÷\ø¤«$oþíÜ‚Düâ»uöð}€©¹±Dê2šÔåc|—‘B²$o^„/‘æ-Œ¡�ZÝ.(t?´Ó‹†>Éôo²b	Ž¬WŽ’ß%êè‘¿…Ðì-Vé³¡À¸éP;f"
8j"ðMÖ'f×
h‰ðàŽðäÁY}ó¡®ÿ¤�?QM°ä3lXÞNds»d¯Â2áYx$ÌHÔÍkÆºì+%#âlpÎ¡¬#næ¦"y° ãéM~Âjò/Œ&ÿk¯¾
+›üdçåìƒbe§?(ß/V&é÷‘	Nu^Î®¥åìÌä4­9{Aö«Ý©Yf­[]ã®XíÆUçšiÐÌÐ†ÔLó&Ì4«1ýY·©;àŽ5Žíèÿ–Þ÷Î]­ ïºa_"Ê&B¸Õ¥ðg´Ç	mOáQ±ÝíªÞî†ÝKK,}ÓOÄÑ�Am£}Óƒ£Ä}ÛM)lËÛíˆíê%?°WÙÓâvÁÆ§8ü¨¸äwú£âðÃâ‡þ°8ü¸¸ä€þ¸8ü¤¸äcý	"þ0½eY-ó¥Ñ2?÷ê;°˜ÇnS"×*¦½X¹áÒÛ‹Ãƒ<ÊÇÙú O¸Ú£Ì(Ò«=¸GNÏø©•ñWFÆo{õ�˜q»UÛs$³¶/ÂÂãúwpÑ"™±$S�ÃiX´Tè'1ñBˆéÉa­l&n‚¦ú¥þndlªžvœk<ÊA¯A§É�˜h�„L´G©é²¹qy%ÅC$u¡Tñ
+²ÐÙ\¬lN5Ê¯ Q^Ai9u@ð±œVŸÈfEl1*âo¼ú",q–Üc}*›û�ÚoŒð„ÞÆýÆ~¶ßx›ÓFx WýT*Væ‰ž,Àu®ìtÒîBâÚÉ|%h:ƒ@sÒ€Î Ð\;ÐQš—t�æÛ�N Ðgi@'h�è-L:†@‹ì@­Ô�ÔŠ@ŸÛ�N!Ðâ4 S´Ät�Ó€N#ÐR;ÐYZ–t�–Ë<ôèl”HV)ÀN½¢Cè9
+]IÉ3YhåùdÇU²(òB·~åÇ�qVÛ¡ËÛ
+PEÅÙØþ1YK¼…¼·5h¾ÿù\êÿpWrÊºÎ|=Ò£4súHäëõ²ŠFe–êHÏÏ¸ê_¢)ººÂèÌÞÚ‰´�K¤e|1|âÚ2øMh�ð‹O´d^Ä2{—XB]¢~E})üºõÅð+éË‘
²xÑ_¦:ÉIm”Ô¥’ºXR—I¿D9­Þ²-Õ[*�ž_â]}WŒÿ¥Œ!9¸Jzß¡¯’XÕ|%»`ÃõcÒm¦®”zÀ¢0¼R*ÕWÂ‘þË¡úBu•�n–×r•³[¸8„àæ)ºÀÜ,»ŒMjV•è,_JŸð–Ž‘ŸØ"·ß‚Èö†ù5òÞŒÊ],X¶§÷ÿVÿßiôÿw½ú:¬Ì�r§¹oŒG™W¤�ñ„G{”9EúhlÞ]r§­ÕFL¾[6·V%©¶Ø(U”àÖj�Uÿ»Rõÿ·€v	^}Êæ{P6ÇØ-ù�þ§oÂŒcVô!+zF ÿßë›1º‰è3.è¨ò ¦ð)×²~�úZdÜ#ÂÊAŸó½Ç‹ßÃfe²Ëmþ÷�ÚŠù�¼xá
{uLô¼ïÐ&zÂÓ=ï9´éžð\üÎõ„'cødO¸Îƒo§<á	žÐÿ,­øŸœ6+ì(Õk1t¸qÔdçQ—zaôthà‡Cg«ìtñ¶k�§_S´Î3fcÈIrJH÷±ŽÑ“Ò¢�Ëx"õ.âÿÖ\¤$íÃæÄ¤[òúà	ÚDO2º;Ý¬þÜjÂ¿�0øÊÃŽäæ–d‰£è01æ	Yà©çªs=qH2´%IÇ&"3ßP‹ÔIÔÄv§°LÝáŽ>)®ÜDõÓ'eA2¶;M}]�ê×þ$âçWr3•2’]‰—:ÝC‡ÌP†!^é*Ì4¥0­îOLV“Ä-Ë÷Q�é{éAVÑ¥¾FËÏ…^Coùk+ñz¯ü3ŽÉ+P§¨©.ÈÐø@BÃõ€)ïeaJšfvå<Ê2øíÐ ”_Q)¿âA¸qK…_ÌY; £óm\L¥+!óJ¼�!=Tâx!À×•raÒŠ“O” ˆÞæFqO¸ANÔ'&Å‚>Û:Ü¿r$‚á5G2è_s
+¢N¸¦ Ã%;šƒ§ìh	:¤lÇ)Ù•ÁÃhK—‰Š/3™�4øw›ñˆ'	ÿ…¿…DùžBB&Í´éE•Žt¨@gý€‘hLÖeùˆ£¸Ã((nwÝ=O··Ó®_ìy€Ù=-óNš²Bµžxiie­§¬3öÐ23ôll™z.
Öm“Eˆž¸˜½TøP-ž¨N&îg!y}‘ý'{€àÿÃÁx!*04üM
+œ�z6Áö_DI`åˆ;®´øJÊaøyÏeäÊ”&òÇÂŽ­`DD<8œP%á‰ªv$(I’;"F�ÉlÓ
ŒÖ+²ÈzE�W”jû¸¼Ÿ›‰�ô3“¥äé)™±3mô§ît£--T°/ÓZƒy�™‘ZÇ#PlÁ·RxMJÃ«&eˆ‰N)á‚P
+©Iý:ãd*ÆB`xÕ(Ñ¬æ"¼ÁèŠV£nOaÝ²Ä–•ª¦üS{ØZ,Ø±År�+á*ïz�¶k¦!ë<­ˆ~ƒã¸â*ø%ŒO0”¼ÌîWÀØ&62SdqpÖ—rŠFŠ‹ã%#mìBRd�éžD\ÛÄá/_|3T!ãuÛuDâ±|¨Wï¾�‡6±WØí[¨×+®·½iosùÞ>Ø‹¹ãÐ[eÇEY„]ÙTöÍï6ØùtÑ"ÖEãÑ!…jÎ
+fýç’tÅÕï'xÈlÌ«ß�®ò6…
ÿJo*<
}7^þ]òMDW !«Y®RˆÞòATU‹ÃžÖP3�TCP.¨éÙžkAôJoÃzˆ´»
üJïÂÍXÉdµßŠ|TòÛ=åý¸èHW)’L…,ræÿ”ì;ódÚ91ÍCCŸFOY®˜­Ù�pé´³½�J£cËd à'ÀúÑÏ�jÑðê"¼>(@ÃÕB²Í×öÃá.×‹iû1‹Ùý’�“:Þ“Ä�øû|å)ix
+MòÄ‘¸ÊI\*|-y¼ð”O
*æÐZ%ÃŽ§™ø“…?Ùø“ƒÓnn¨xê¦¼Þã¬þUK’Z1©ž,\aV#ÔÛ+ÑON[êgåK·Òê#í´UrhwÏˆLvÝÑÓÁ²ÂJ¬ÛÇâÐ~U,‘q
+œ¡¾]oó)Ñ�^»o“ÍW=í¡±&á–Ÿãx�VlÿZ±EÅ<ÄCÎLC¯w$ÓPLù>Ôœ1dQ ôÎH›¨—¾Ìfš&eÔ‹³AVÄ�³�Yà7"bÏ0!°»·½=Éø…™„F±øc`þÜT™ÙTÆÈ"Ù”}ù'‡Èæ0MU:« ªâBççˆNá�mB¬ŠH/i$7ZÝs šc`‚QàºSXy6èŒä–iÕ=#¹¸*"Ü±¤žKô³Ñó'  ®Í‘“jItŒ—Aƒ
+QSUx†'©ÁùŠB:5–lZ/¶í”’0-"%;%'Ù´gÕr«ee!Ù¦êW¹²�tåÊ.�vÝ¡±žÊ±G"žDe£¡9žÊ9dÚ7Xö²ÌÃ˜r–™ÑÅI°’�Rõwš�•`Kr “÷C„u¸=Á�¬è7FVÔÌo®"«ŠEÉööPv¢<›‹ž–ðôø�›êËnb�a(ÌÞçÑµÛm˜‘D§5† 2J‹ý–ú)ÞN©ž+pÖ2èDk©¨ÍÕ 4=î6ê¥¥˜^÷Âî‹vjêO¼„cCôUkC�Ø|	%jd'L¥¤n§ÄÑ15-x¡.'¾š¦Ò·_s9{ÜloGÛ.¸H¹ž¾ÿ½a;>¹Ikï<óºw—Kè»qp‹¶/@]°ïÅÞGRè¢±¹ú�Wß‰Ð·ikVhßM4À¯7àáŽÌC$²,b‡,‹<¡^xÈrŒ²ôâ´EˆL¿!Ôð¢v1zï’W&otÞÞƒÚpñ×6á!Õ};Ð6z�´
�Ú�Ö#Ð£4 õtG@,¨r³ëê‰=h#=…½€‹Ïe	ñì¡|‹7�í”a&¯ÜêÆ½Ku†-ù:J>ÈôÕØƒ¾  ÁöÌ¾¤Ì†¤…m °¡iÛßaæö÷k£…ú{õ=ØBÃ3°…h¡FÜÆ5zÂ«ñ»Ú^å	+‚m•'¼ÜS¦-÷„×Àg
¶Üˆ³9–csŒÌ0ªãˆÄ„mA¬ÊcL:†c-/þg¯¾1ü(�$Ò6èk=ÊÎ"}­'¼Î£ì.Ò×a~ã2²²Dw/¶Aïxçÿ‹LÚÈÈâD÷w ˆ}Rj¯>¶H½Œ—¡ê• z5¨^ª×ƒj£\±OB›§-µo˜;øÂ_ÿ@u/û½‰æ>½>Ã<½ôÿG¯†g[±ó­Ø[û[µª–ÑéDi½GYÇéë‘¢�NJ�Ð±Ða,wa†yRújŠ˜#’zXªx•e˜g·Sg!À»wCFª«žá’\üJ'3ë*ªÿ¡Ê�¨îÛÿ¸JCƒ‡´Fë±ñD-‡ò~Kû!Ï˜•b´
+Þ·ï-ð��áxÔþz„7Œ&&«ûÂî°ÆÐ¾ï¬0�ã†Þ¨w¸è\n Ùª¦]z�Yh=ZŠnð0S¸d
+˜üÃNa„4à�ÀbQ}#By_qFù¦ÙKÉï‘F	ŸqÕ=`ì¥EJªTõ†Wÿlpµ	E@N<ä¤AÉÀA©Ý	’®ô¨ã«©t6^b±ñ7‡½úQl¯FjëŸÙÛz“G‰é›<áÍ¥¹Hßì	åQé_yÂ_z”D‘þ¥'¼Ñ£(Ò7zÂ[<Êá"}2ÆÒŒNgQ×È(WžEá�É.Å×¸ŠDË3Ì�»)Žø/À#0ñ
+êfiømó(ÇŠômžðV�r´Hßê	ïð(§Šôžðv�r¢Hßî	ïò(çŠô]žðN�r¦Hß‰ø­Ìà3D÷ËvüŽãž óÌctžy%ˆç™WáWÖ¯aM®ÊÈpŠîŸzL!\ROHê1Éê�”«ÿØ�ÁR^[á†ïØ"ml|/µËA<àZM]¶ò¹—ÖeUì²ÄÇW�&¥=x¤µq_›ý‚•—ßâÎ!1÷ƒøû ˆa‰¤ö‚¡}žDù>ìø"úë{ßŸ `ƒó¯Øw~]%ÄÕ!â
+cw}ˆ"qèP3‡›pyßÂ:ÑÃ`õ¯a±�Ðªó#ü„ENN¦ÎO×g¸Ü.þ©@­âµÌ€L%Ãh‡‚Ýé[´‰Æi9WN‰å�id`p?8�‰ÛØ)€‚¢í\¹!HM•HFq]âƒÅ8,�ÊŸ¹ûþö¹„²ÓSW~ÔËáîm÷¾„ama¬�Â€‘ƒß�ÉÊ§Aî5QèQËQB
Š_d¸`Þü9Ô8d‰©?lŽCFäjI$Ù}/êfOâ}ê‡ˆN{aS×Nö’`™ÛZè™­^Ôy½!ÃeL‡{<q£q6¦÷ÒMV/m7z©æÕOb/ý’xuî¦˜ã°Gi/Ò{ÂI�òM‘žô„z”«EúAO¸Ù£<*Ò›=á¸G¹Y¤Ç=á�ò¤Hoñ„�x”A½ô#žð�r¹H?à	'<Êí"=á	·z”¡½ôVOø�G¹W¤ò„cåz‘ó„›<Êƒ"½É>êQ÷Ò�"K~•Žüfùê¾ùˆW?…Èo�˜ŒÌ4Æ>æ)ÉÓ�a.[!—Ì,+—mh8�ÍÛ3Ð<03”³ÐÚa&QOãmÂN¨ØÌ,¼‹<-ÅõÓRWÖÓZlÖÓvQrØU ñî´ ×òš)«ë{FÛ˜íˆ6[<CñØ¼{Øx
+öÁîµp|„8î#Rp¡ñp|„µ²¿ûÜ§r;H¹°r»‰¹´r»	¹Ý¤cùîskNå–¤ÜâVnW0·„•ÛÈí
+æ–ì>·X*·VÊíP÷°‰ì!‚m²J¾Ž%7[%_‡’¯“8ˆq![gâÝXOâ(¬F2³vrÌRÃ‹U|ø	@>‘ÔR~#”=Œï�6nFðP
+£˜6Ö`’ CÀ¹ÇXê¯qõŽDBMä9/‘àG„‚»~@3!&c_¡„7Á¹q\€°˜ ^%CÑfgýìÄu¢\7`@‹:ƒÂ¦¹êKœsÐNPƒí¡Ð„“pêF‘
üV."õÚ­vö<–áL�ê=I}(•ßæj}êêQ’‚`q%Îâ è„=ùI«®ãL{ÊòÞÆétÞ-.´…ôÀåPÏI=þTÕ9)ôáÐÏIR¦Å]ðQ{µÙè8çÓ®d¡£Í§
£�ó>í
+¹àÓÎ ƒ¬µç0kíç$´ÖÓ¦øB{�àCãÔø9å=”zÌB‹ãFy‘Â24ÎþP*ÕŽe‘/Ž>å"
+Ž¯©Pp\¢BÁq™
+G#a—v)‹}‡þÛ†ÿT"ñ�!Å&bêH¹"YàÔ>å1œa;ëA}Õq2©½ncH¶H¶IBH¶1$Û’m’r•�Ç5B×	IpÜ $Áñ9!Ùf Ùf Ùf Ù–B²�!ÙÆ�|,™H¶1$Û$/K†Rö3°ìÎÌšÌ™Æ�˜5GŸsìÓä�6{ñ·Å›ûU‹üIæ­/HåsœÀÎdl|€^+cÜij¾9”}ÚØ§V†þÁžR  ‹ÆT7:r©~ûìÙ�ÏÌZŽ–mç:K8fÙš¿h[kTô0>?ßì¨eýZ Ÿ&%vSâ
È“¬–ÙIÁ<š�ˆ½­Ä�½)�Ì–¡©zô©ÄÐ”Ñ=©S&¸’>G™œ33Ñ¦bØuNÃö0©oë‰¾jHßf¦Ç>Ë ë	›B)qt�•Õ§8ÒàxsFª+óá[Œnú-¬»shR{1ôè«„X\{*ÁXˆÇB9(iÍ@ÛQñ06¢m—ZÓÎ“/iøîH0(‚?=�ù’•¼'VØ
+[IaèC¨úG£a:*æ˜?ŠsP§4Ø>†C~Ð,á£“üêUâCæ�âWkä”·Ö¯Nb]é‚Ô#
+-|A
+]”*.JýŽÒØ}B­.p…FX/£�×0yÿ‹÷/HÊMêcà¸E}·©��ãŽON!K¨��’K‹ÍQºæ-êâus€i}€0L?â²~‚†ÞeÃ“IÝõÓãÅ@ ¨¥^%Ü£'�,Ù×Ëc#1Ê³[”8êl­oÌˆ¢V¹­'µ<É"ª·(Ûã©ÍnI„ÊCs*c-AèÈnc¼‘Ë@CóB®áaa.À:d@34tœD“Àkh´>Z°'�ÿ²ÐŽÏy	coIh á–s ”„¢ãXŸ°IV‡ÊCqG­Þ–†B¾¡¯%<Õ¨üZ"csTêÿ—*õð{¦:#
 TO¥ÿ‡ðfà1]îŒÇ…4ýç°],«‹åèYOÅb™«^,·$Ú3Ö–Ò'^¯5‚c¦¬Í”m*þ/f -n��&Sê…e„�SÄ0j£0‚¢ê`‹.}m¯Ç™©õÂhËê•J^3Íp#
z~M+XF¡¡¥É2YtB«Ú“eH¨O–Ccä’öÊ12"wéßË°—	¶ŸeõŠmÀð¼ýœÔÀ.·ÆËÄ:÷¥Ê–:×¥58J+¥bÑIøÕje�ó¹…ÇË¥úx-öý0:Õ¯N‘Ñ:¨‹ù'ûÕ©–?ºÄË‚îÒàa„Dkúª#Øø‘‡mt¶ÐYÎê¬f,'Q>¸/îÐx_¢|¼�ákR":Í©_“º©Žð%ê�Óœ¬¿Õ!ôbÃÞû·Y×žæÄÀF
+lgÖøôKR¨ZV/I•Õ2UÐãEÈò¾z áRn¬„K¹®â�äÔïK¯Œé«~Ä†:«.¯Ñæä_ ./I0ñõ4‹3PQ¯It­ˆ±í…9Vì5)‹ƒì4^ÌÜ—¢ËK¸†ü"jÄæ.-,µ¡}Á�ú¾ð-Øujx²Ä Ç+G3Ü ö›‚ÛÈñrYÇfÚÖ¡™¶uj¦éBÇfÂ�û’É%Ãú:f( ª¨;õÖfà~ˆK ÷c+%½ÐJxºO(›q—:¼/eš
+èO%ôoQ§ü>žed5#sBC&Ñ7Ù—1I—Œ�Gþ¦öQ}Ÿi€½ÊR›ý}¼ ÝM!®o2Ð u€ÝBàžçœG˜)‡‡:KÚõ¡Îð4_É|}³Þ…ž”•Ív³÷2LÓã7pßrßòÖÊx`yiiþÐòÒÂýˆ¼ß-;Ðî
	
ßÞwAjý>J`<†ºËÊþš„Ágyoà±ÆŒÒ·)t…Ê±ÐXü­!2Š>É0Í{�~Ví|þúÿ.¥Xüclµ§]UQ;aœ—ª¢6¬"¼bÈLUÉ Ì´:¨ÉL«¡Á™‰ZÑ@==$‰Ö¢›»$úPG¢)4æ¡Ðj„­¶BV(ÇB­
+šiVÐ˜çVÐïS4I–‰‡7¯v),}Ü£Œè¥÷„Ox”Q½ôžðI�2¦—~ÏF†g¦�°ŒÈ4OXÆ',Q¯^‡%ŒÌìô ë´G9Ïé§=á3eB/ýŒ'|Ê£|ÔK?E× ™¼$ˆ}ÒdáIè\OBgËx:s�)q‚è‡2ëeû-u®¬Î–Õ9rE½Œ×Sc2ÍCÜ�úZ‡¸ÿj s›ùÿ(�ðqáãÂu¯>3ŸiÞcLÊ4¥Ê�þÿMŸ�Ñ“3ÍGn3¬èÃù�þÐ`ôÌÌN÷g=ÊnN?‹H|Ü¹’–ÈXIK©’fR%5b>ŸX•´ØVIKdu©Œ‡"�2,>°’fY•4>UI„JZŒ¹|J•”v¡tÎ£œì¡Ÿó„Û<hD®
ÑªK¯›z«n&uó�W_†ùÍÎìBþtN¦q=Ë.P—#à\ª¼!\.:Š&öE1ïL—‹¾Má–Q‘I}ñŸrRó3QÚ§ˆÅ·ñ“û&ã‰Ÿ:%|yúYWLIe° «øÚTüÂ®â§¦âu?-ßÐUüôTüçD@¯tf0^¢'æ‹»Êaf*‡%]ÅœŠo´Zç£uþäÕÛPDsé¿¯µ—¥·ör+¿YF~ÿäÕWb#®èÜÅÎ{”Ú^úùT~V	x’žñ*+ãO�ŒÿÙ«¯ÂŒW[]l�Õ‡ÖAûïújŒ^ŸÙ…¸ö™i7øLïÿOÜ›ÀÇU]yÂõª^-o©R©´ØF’%¨Šä("ÐIÒéî$“N„ãt¢ÉÃ/¤*¥W¤ºº'éþzüÉÓ3=Ó-ËØ³²Ù%›ÅÛ˜Å¬Þƒ½*$aƒÁla_Ìâ/õ�ÿ¹÷½z%“îþæû~`Õ»÷ž{îvî¹ç.çœìƒàóŽ>óƒš]xXq!ál4ð®ûXüvÝ·pÊà·ƒ~Jµë¾BAú-<È> áœ‰~zláŸ‡Zä�ïCžßM.ò-(~3#ÿkÚâmT±ÅfÏ¦�ayä-C©…-Ú	Ê¸ÛSÆ·Œ­(c«ÛÄ­„e+š¸Í…Øˆí\‹38(ÚD¿…M'*o·§¼G]lÛc.¶‡$6ú-<t"lÏy�Ä]l�Û®ý_rp’ÚÂ=´E£®²©£&-Æµ*c
+¤OrOÆZý°†W&™‡)ûÃš¨Í½žÚì4ü¡*_ì}–v¿c~ùêy$¿$À~¬3›i“±½ú”ƒ•I£Ñ%�ã©àiÃQ£Jz^ˆü#±ß
ÀôÌd„<RMÈ¶Û¤íhRÑåíÔ”íÀRr!vâYb'AìÄ¨ñ ÆÜ‘{BŽýž8ÑÈ½àiÕ¸‹íQ`{ÎÅö¨ÄF¿…GO„m�Û.Û]à^»Ýi¸VÓ�~kUJÈé·p—ÿÈñ ÞE¾U}Á�†;&#²Ç˜ÈÓ2”ZØq¢<æ)c�[Æc(ãE·ŒÇ&+c—±C£Âl*êe<ï)ã%·Œ'QÆÞ
+]?)èúIÂö¤¤ë{<_ž@×K.]ßèŸ@×¯¸t�¾ntûúøn}Õ¥ëa/]ÿ7¢ëmÀôÚdbÀëLìuikRý¡`k‚Èÿà¬Ù§Ð¾7©•yŠÚõP¾iT”<Þ2»ü~Û]D–ÉEdvKáI\¦¾3Ùäz·zr½gj‚¡ßó{ÜŸŽÎÈé3ð¶óÌœ9#�‘‹�¨OkŸ.iÝ%Í7‡}AÒ?Ü÷áeh^Ú­
ÎîÌ…ñ2ž·ži[Z÷ÓªÂ>:sf~e+ßŠlÎEâÏCe»ûáVÊ¥�»ñ+&ÎçóB¢ËÌ/O2½Àà„™¿9ÉgäV´¯ä*ãI¤Ô¶T‘g…7ÏÊäç‰
°ºnÈŠÑo(ž%f1i	::Mß •Z½“"•‰õYjE�ÙŠY!
+I-€CÇÊéqÍŠt�kJ_NO�á{ß†]²ô¡Þ·¶¥ZÆPï-ôDÌK~(§So³Þ7BÍÁÐF
ÇzqêÙÚ¹ÄŒ\ÝŒ\=0F�ø3eFnêŒÜ´¹“fäšÄp�—Ä�Ð ñô+å¯
+ö×ä‚¥®#M8² J–º®mŸáô³Z÷³
A$=ªu�âK+åi[�Ãhœ4q@Y5ˆWÄ¥ü¸gÜÕ} EYÞ7äˆì£6–ò—{s]îÉu˜/Ü(Ê›ë°B¹œ[::Ï
+æ…†éï�Ðp_ÎÄÉºeÈ„ƒœ°	ÑR~§Úÿõ\¬”¿5x¿Y?[Á£Þ”ÏCuSh�ûrS­)4‚}¹iÖÔÄ™LbqsRüÞ’´¦¦Î¯Á¡¾Ù…šÖTvËŽ3`1¢'qüA°'YÓ*XVJ,·&­iKT`‰ZÓ&`i’X˜Ú›(ÓmIêùêxJþv„`Ãšœ'ußÒŠ.³šðÑ³d:_«XS¬“¬&„¬~†erG?¨fWh¬apjh<ˆ€M+æz§
+(jÅ¨û‡xRé«’ÃVd™¢ˆzJ›’_MÚ2+Lu¢FõN�ê¸F×Q�Nöû$cHD_©ëÝARqK��«•Æ›˜”¬9,à4öVíæ\í–«ÁRö”ËÙí
%*¶v±_6LaEs /—8AõNõ\G„)‡Uý:®ÕÏ'Ô
+s‰À«û¡qòfØÊV,YV}®NZñ! –­YQ.Ç5tÆþC�a:�íþ¢ÎðŒåçwFÂéŒ±˜5MüüÎˆrÓ<4ð…�QÏÝ':£¾Ò85¤)¶åwkù×šV
Ò÷¡}ýïRôÓ3¨±"Mü"±€!Ø@PÖˆ“WIa«ðR©D°²gíÅ|•Aˆö1¢ïT!ÚOˆViDs\<ïNÀó‹�Œ§kœç�Ú]»¦Õ¿?Í?Óîº;ŒÏ”23…Kÿ�½ðK›øÛZ\øõUðŸ¸2Ã¼P?Ä¿sÿo’ŠXà?ååzŠw3ùFSZ�¥úzßÀæq¿A"AhÉ<E“XM±o”B”p%Y¢€.îÛ04}¬ÝyÀ€*è)„ðyí_áy-ó*~_Õ2¯iB;³ðš?�`0´A�Ökäˆ•dÌ.Ö
SQ‰ÂàÉÉï;)û6?#ðÁIÙ—EË
V›qV†H‹%¦¥ ÂŠÙ—jK $žúÛÀf»ØlÕo»Ø˜ˆÍ>A¹ØFìàÓè½CF@†^ðA¦
ë][¿Š'¬gæÂmýÛ´\¤­ƒ–Ó¤HC²KEš±ó»Uäà@|:t¹hu§R³g.Dþô.ZÒ{viŠ¥^qBE%ž+—E†o¢ž[ƒv÷Ö ’ßíÁ;“Tbg."'Ö$yŽÈ É¿½k“*OF¼ï»{R¤Û%Ò
„T«FªU�®;éviúE­çEÍ—y]k+¼®¥ÿ uÿAó¡ƒHæ ¡˜WÝ!^�¥ B;@^q‡xõ•BÉg†jC×³Êá8ºVå®Õ¹k
Ñµ�¹ aÈ
+ŠªuôÞ•$$ÜÅa'²�"m+ŒµžþÂÂ)Ò×~DÍ')ÏíÈüö·¿]Æ³ÿ
+Éñ¯hÙW´ÄS¸Kô…(w U¤Š�ý„@?€û†èj·¬’3~zuWëÞñ#ê×°a2tÛ:ŒœQ�ÎðŽ\ºí:9jÀ:ýøÆ¼¥ñ›vµç-- ô<sÜÃ†JBýB‡+jgŸSö?§H…¬ìkWèç$ âM+u‰ÝM=Òÿs�‹Ô4"$&Òï'Éˆô»ŸÂú=H¿xí½OƒT»5HÌOöÔÂ<Ûa‚–c¬@5˜òÅ®¡âH¤³<
•Ü¹×^°±ö¦üËi¹Á�Þ%~¨f8àA¡A†pˆÃ+‹V�àŠE�/èÒ@üO=Yju]çæ¬­…åß„ŒæD¢ÃÝÄÒÛ ×¥¾êÞ¦)K+[lK”ÖF4]]´b0pgV·NŸØº1âi«EëtÑº¥në"Z§yZ!8ª$ÍCm¨wÌï´.Ri œÖiÞÖUgü6?È =§x›¸AƒD4q5qÌï6Ñô4q—ûGõô`hQ
ÓTýŒ\ÃŒ\ãÞ}´ÍÇöã”¹äŒ\jFîK3rí¹ŽŽÜŒŽÜ—™;tvä¾Ò‘ëêÈ�Ú‘û*sŠÓJ’&Aƒ|B°K+	"÷8À´d$†Á4afÚ2
êô„æÝ;„¼`þ=m~ªrÒoŒ~ß§ßúý€~ãôûýÖÒïÇô› ßwé·®#wR	ä5R«ÁŠ:±Á9¹f+áãÎG­óQG-èØév_®mÅ¾ÜÉVsí·Ëð’§=N­ë˜“ë°bÞà«Æü2º4>lc›V5§¬zI~Ü�VuÓètæŸõãÒŒ>–ÐÞb:õ·5ƒw1‘V+ÓèÓm+
‡õåÄt¨ý	ˆ:†XJ²eRbù�×–z«¾ª ƒ¿)—©dÊ›µµ®Ï¦wžnEÏQº‡¦häÓ�7XÓf=Þ ¨U0±É`¾\
S3	Lœ¦õáI.Ü©"ê��ÚjMæÇD£¶P™Ha1‘¦Ã–”á¾Î\C‰6~��ðÛG²ï·yê”œÃ€¤,OÒÆÍ^FÉéÝšÅYJ´OìÞ­Q_5´Óv0=MÞ
6X-Td½X’*ŒO®I—Ä½ãü«Öì²Þà©V�7øU&Š›@´*ô‚(hÂòT²¾ÂD·Nsˆâ´üRÎ6šuVE­H«•iô‡gúÉ4)­S™(¢Ž!Æ(÷)KŠf­õU.¡nb	4Í¿:�`ÄÂõ#"˜¯xúèt+>1tUÃÔNsj5Lb2˜¯VÃÔMFTNÕÆ`5L>Xƒ‰
+½›œÞN¶Ú½�Uu…Þt—ÞŠ–6lé ·ÆR~¥¤·•Do�.½­ðÐÛ
+ÐŒÒ5‚Þ8K)«¤·Æö\“ 7>7h¬ð˜<¨ašTµ¤ÕÀËKdÈú¯0}¹)üòg+N’ÿïjØ~Âz[ÓyÛ;G3V]ÞÅº¼v@hÚ…‡	' ØÒ¥â³2†ÉÕa›eµ—ò—¶ÒŽžOeÄ&}ÐpÛ�pÚpŠÕÈ5†¬”¬ëTÙ†¢›äÄÿÂ»æ¡
qnC-xNQ>º¼K2ÚPËm8™Æ‡p‚×Q'Ø)ÎS¦R~½<ë›Ò'Û7µ’vI«H›JiSKÖk*ï‡Og8VÃ�KÈ˜2&"Ž�¬&†˜j5%DÑš:Œa<Æ
¨«QPJ¦�u#Ž€ xj£ÁÐ=a6ÅU#iïäLì}ÎÉ…fäÂ3r‘9MœëÎÈ™Ù×5¶¥ûº6“v¼¹¤Ý„’ØÅ“{ñõmNâ÷ÔyÕÞøDùŽu’Hôá‡¸Z	¡ÅÄœòw'+ß÷$‡z…@Å§ž!6¯B¹:8ÊR9Ì°÷&½¡û(çAOÎƒ!X˜zÀïC�íŠ$L¿IbA÷›ÄÏF[Zk¡<x™zÖ4Š,EÐˆAŠœð<¥tïƒbó§R€”+Â`gíil«c t#äOO8mšTq7ö�Œ�ƒ—W„+Œï=á_�¡7ò�§'6˜ßÀhª™¼+NÐ‚ý“¶àà„€gé•¬8AöOÖ‚ƒ“¶àþêp!Ù7š¬0^~Ó/dZüj$ZãW'ù3½—Æ‹={5¤±¸Æ–¡Ðô�ÅKwù–,„IÀå�2RÐC"d„äG—ŸÈäUèZ—yÈÈÕ¨-í
+Àf`<\Çñ"'$ý×53q`M4^‰<"¾ˆÈƒ¡-Š]løîÑ2æŸÏwÌ¨9%ZeVLšÎðÌY6µ1?gÐ?“þEé_ŒþÕÐ¿8æ9Î,_“ø×ÊbuÍ[Lƒ±¢°ÿÍ–ô
gkÝ{4¶Q‹«Úuö�ãÝ¬U‹É¨Ô/JÇ-Â
+á"®P"¤¦ªÐ—B_}ãŒì�™.�åÔø×*Øê&`£Ôz:ÃAG»Xà›¯�/xB|Á*|¦‹/ÈøöOR¿Ð	ñ…ªðE]|!Æwp|áâWá‹¹øÂŒoÁ$í�œ_¤
+_�‹/ÂøÞÑŽÇ§�ŸV…/îâÓð`4þÄÑrú³~áëÿ6HõØÛ4àO#þLåÅï§ž½JÂ96™^9ç¸’‰�–^2Ë�Ó{kV]©÷ýµ�¹“±&ž9¹÷@¨=W/`
<âfØO¥ödà”2Äð�¨oºðûìý¬
+~
+Ã¢ü–„•8ns‰«õ‰›€Âî=@Yó‡µÇ L]þSmp@Ñç�'é°H
+‹Ð~Z3!×¥”ÞC_ØÔY�$Q¨Dê5>Å©ËÐ²ÏkÜaù’°÷ßžk…Ô�RP«1ª_š²ÖRh ÒgÏ:Û×vn*Æaþœ„?MøÓÌ¼^=,Ûå°àø©­2,CXB×EëOai¤­÷¨F?¡Þcøã2�ûm?÷3Ç¸Ÿ< ÓO¸w.~Ü~>‰áVàk\øyŒôöWÁ71ü>Í…�»ðeÔBë½ 
+¾™áß™dÅ¶#Èãx;Pð8NÍÕ¤��©ù}p j‰"PI8ªñU+ƒótwH§æËrH§V†tªu’5í¸!�Š!}õs‡ôÕ	CJ�S1¤éŸŽK
+Ú¦Çgý<Öÿó\Kö5Í¶ZzïLZ-° b¨
ÁÐS1÷¤ž—€(óÿØŒ\ÍŒ\|ß·aî¶­ÔOâF'qcEq~%ïIlB÷d^Ñ:
+¯hgÉ£ÕÊ¥ú§ÀðSEêºA¸{¨:ÒuSà÷¡êp÷Ø9Òù¯ÁM[H…z€Ï;+|Â0KÉE±Gó7úY�‡¨oXQt`ü¯„x…Ã	!3GùÇ¥õAÞè¼ž/ùÛ�iï]ƒÓW”Þp±8ÁmG1–^ò¿Di„Pš…ÓVÝRSÔ{¥âS—¾Ïåï®åzÏƒI…­~}Mññœçcü_tæêò‡4âË†âcÎ��#•hÛ‚¾»·dœgvã;|<X’Á>Õ°™uÀ>=Œù�ƒãôý™Æ{"ñIòL<>ƒÑÑ˜ôãü9$`Vârœ·ïqøÈO3@q±›‰cS§¨qâ5ù£~±­¥+Þó¸¦xºs%ýw¤û

rl If¸åXÙ¹ÄÂøü	¦œéÓv�TVÊÇe¥|
+Â€ñ™æv0÷@Ó+‡Ù¨fJ‹jâÈ4{¶hS‚©wúbúÅíŠ;tÂ§ÅWÂú’(ÑöØ‰#K’}ÙÂÖj,–ËÇÏ’¢ °VfIQ^0äb�X~IÀ3KbÞYƒÏ,‰7KbžYÂßŒœ%Å‰³dƒ3KäyTŒ¸ŠÁŸl–¼«ø7¤ï%üí�%ÿˆYòªœ%gwæêÅ,™E³¤ž83“ÿ­Xä�C×NÉqø–¨'ží+kÇ�Íb°£U`G�K2Ø€Î“I‚
W(EÒdâ­d-}_ ódŸ4–µñï2šþJ|¿ˆŸÁñÇÄ„ªåÏ!�c®îÆÍeXïÐ9“a«VL²Zc-? ?©‚)ÂªíÙHÄXžd/hV=mu^À$Óx’‰åiM2yCŒáý¦^Ó3¼0>7æ¯Ì5éÌ5·<w®=BÃ®yçÚg®¹½ç™kµ•¹®Ìµ/n^­CmÞ¹6Ý35¨Þ$Û,õã!˜8ü9Ä¼‹¯ÌúM5]Äk+”ÌÈEmâ°4?Çmb¡`ªM#�Ó^ñ'lƒ!jlÒDsô¸iÖÛà�}Ä­•¤å•Mó9|*‰ŠÿjÅs\/.gL8z±i9Mù‡Ã¯F¤{1^TNÑ…ù{{ �™¯/ÔAX¦›PÌ�I[_�€Ë¨Â<Q±«/É`”ÉK4„)_	<‘ˆ“™¡*Íâ�ŽULFe`Šô@‹øŠÑ˜ÇÑøàN·B±ñ;lE°íÆ¹ùc$ÁÂ,<,véŒ¿�Í5ó)ÉvÒÒqê^�vEËûÀŒµ!+dN§ Ê³´ao‘Q¹û�â¸5Ì�aÜ?é�á†½¥FE.�¯�Gr%w¡0ˆTÑØ¢e÷�À¤N µDuA(Â2Œ	s4ts'#Ò£Ñ7é€Ž5)‘“Ôx¬šH‰Ïpô\}R"ó»D*fÌ‰‰t;Ì9DºÁK¤@¤{y‰‰‘rê)ŠÙïé†j".£
+W‘
+ZE¤ñNæ"ÕDêÀVé˜ß…§‡.‘�„H5‘j‚Hôã‰4â!Òˆ Ò£"Ð''ÒÈqDê�žé!=ƒ‰u"‘:älxÈÙth�x¬êòXAƒ”„|X)¹LÈB‘˜ðdøái¶¸ãuŽ¢ÒçÌ"	æœñR±ë*ZF…¶rô½>ÌßCô½NÄÏ×éû.ñw‹ïC#¾÷ãû.¿@Çû­y&Þ�ÁZ—(ÏÎ>”ìšÛÚ5Ðú=×ÍÝë¦ÃÌ1"çµ~Oé~8©ôüðëÏ¾a$Œh‹ªSýÒ 9TqiF±wgf7˜xoþR�öÌõì�ëL[Z›]Ù*Ìoˆ×UE$a7©«IòmtÍŠI¾M
›wö8=Ç ŸhÐŽÛ‚vÜÁ´ãö±vÜ;SÓ`LíCú«Þ§¿Fáúk>¢¿ÑÂÇô7Vx—Õ=e-2«ô“.ö$]R�t©'é²ê¤ËM¼sû|åxß¹õµ´žÓÒå#õ9-…Ÿ§7ÉÀo)ü"½Yþ©¥pvz‹ü�–Â9P94ýÂ«�÷)ûTn(ì–{¥©¡ð?ÛApSƒïmý±œ³'#šß}&½“�2ƒ¯ iß‹Ýÿ4æ[ÏWRÅËhNM<KìÃ}I­V^R{X.?À–ïáÿ3ŸXI¾‡�)ý1âùõIK5Åí’Yˆ–/È)pI«t’ÃxN129,½ªÝ
+‹â°E.+Âl—üL¶Ü¦Å;Ž/UøÃC¸°’Èl‚cä‚ÍpzâŽ\QÃ¿sÿ'kêPï4õÎMG5mÿÔ¶sÿ¹p!’o2'Ñ|2¡±÷ˆÂC•ÙªghÍoKv-h]%“â`a«n�ônoÉëvaXÏ\I{žÂ•zf‘?ý¢2ëEÅWXäÏ.òwÍ
ônˆ¤—èÂ½YÏ]±Ùrwv•Þ³¡Åo³ÉÝìz€µÞì5nà‘–ìí"�ßžÌîhYávzGÂÝ;H°ßsR£ìý-Ù'\X»çÑ$[õt(={½×“¦£¥q=Õúz4¹q? n6a:÷âlþ—v÷/•þ_
+Ÿ|¿ìÿ%±£ûõºoÐ8ß¯³:ÿýzGïcÉì�"t#‡2÷ëÅÂýzæFú¡¸Ÿ+¶S<•¶Â-m3J[éÖg3Õg3ês‹ñ nu!!ˆGq›1ˆÛ]10jâa*¼,Õ»—ê>Z|¡ÇiÂ@óy¶Ñ�f¯Ô]¯µ_fCË´/|<™ßÁ‡üXT�])_Š
+å	á¨ÖŽjïà¢á%dP§NÏßÙ’¿bzr4=¤ÛÝC:4Âï4‰Pö<‘Ä¤_cB›t)Û~þåx:ÉŒ¦?ÇÒwéé©„©{ªRì¾K÷Ãó`f£NÈÒÉ"�ca£ž¥ÿ¹ÎRùk!aA÷×UºÿF½Dý^B—Ãê7EË`ú¢£I7ÅLQþ+Çh-“@
õž§rP2åø?©Ž§:Ì‘7°[uÖN¢45³MïZÔZØ†ñ¸ës0®çqjƒšŽãêÌ£z{áQ´��AlÔÛ{žd2¾Û˜€U€ð3D€�Rïf7èlYÒšìWó;“Ù«õŽ”¯�–É 7á©dv�7�-ôg·ëÂ	‡ïiÉÞà†eÆºüÓÉìC“`¬Ë?“ÌÞV…‘
 ]ËÁSó÷¶d·„™
Ôì
Ü’:ÓèÂ…¬¶u¯	W^7(sÚÁ+ùÄ6ÈÈJý·M¨ÿ¶Iê_�IÖÝÁäÔ{Û„zoãzwP½a””'Â7FNg6ngÏ“ôÓçÙÝç)ù‘$[Â¡™6ÛÛµkŸ-—a~nSGò×Æ!~ll±»7wÛÔRì>2�²»ŸP1�îgØ@°ÁL!ñšpMãùkCx©aá’ËP+¤ª*î¿óEÀÁQ»XOó·�°=Àá}ìäìñ"þÒ™*³CãH¾H‘vFœ <Uªk¤U˜©ìÈòiCw�N5½N÷Ï†_,~Çs˜çç�gnÆòp³.yì›ãu$xN‘xA”¨pšI	!Ð§ã“ð,žQ ü›õ[ ÷mœ	R8û˜ÞSb²ˆ$	5‹;ìTe~.DÿÂ]�ñ®@Níº¼5ËO0‡×îâK�ÿkîM$ìSÇÐÂ{“¥ÁT¼ûÙ¤2_8¨M©&žR‘d�R-D°÷
Z“	¿.
ÍçÜ@liÎ @§ƒ—x$Í©½¦\ŽÿX¥£(ýßQ”¥Ò¯ÊùQwÚ_L,LçÂ–”Ë<D°é¥ôÅrŒ,;»Fh—ÓÐõß8®�*^ŽØ‘æÅfâ‘mµk $3‘Na"EPÒ)gºµU™ùÿo•@KDMïhèú}+»‡PâÂ£ˆ4éS¦úÆ’>Ð÷“Ç?ƒ<’“’Ç�=ä‘$ò(!ÜÕWè£tèÃ1L�8y’^¦÷,Ó‰ýyÉæA6×9d³Ñ„»¬1—õô]û”Yg(=û¦³6<÷Üž8¾¡Îƒ§¶þ©pê”òÁR[ÿ7à½ÉÛw<ó±D&òì†é<î§ó�â·â‰¿f÷I�üxÒ‘Xwè¶C^j:Â¨{æâ�p°ëŠÖì“:v9º²5{·ÊN]Ÿx�œÊ˜¦*¢²G,ìNÍ¯oI<ÄÅ‹±<ŸóT�¦hZÿ:w‰.�T»7·°÷9n£~Üôå+ÂE²ä·´àP1ÎÍ�€�Á!íVáSN„O…á;Ë?ß¿Ô½ÿ¹ä®ä¨ÿMÿ»üÚ�ôÎó=Ÿô…¾á{!éS§úö$}ÁˆïE¢8¿®¿Däôm6áf¡[²PÈ‘àbÏ+yäÔqÌ­D=%bK"¶$—úRqÕ`í‹‚‡natg‚ŽŸhOßJ’Ï­º"‘eŸhså‰»û‰ ÅRþÉ†zNGþ­&¡ýòŸ™SÙ÷|ª<“ÈÔ‘Í žÁá)(™æ‚�¬¥™,†½%ÎM;*©ü¼J±ÏÝv÷Þ$T%O‰ò”©ÜmfÐTƒ»ýÂGµwö]A¨‡PÐ�µÈíÙ¹P¼CñiE0{ó(ŒmQJ‰.me§°Å9<E(¾â Œ³‚ì
+>þý«ÇãÃà�¼yö¨²ë?N}s§NåØTy1ï$±o#ÅIê“±ûxˆ:saîÏ¸?­°ìP¹kûgÑ	Är‰_¡	Øœ€Õ%lgÎ Î·"ôÇq¯bäw6Ì�O§t’À’
+±ú
+‹/—·Fj�]J_¥÷WéêLK›=Ê7ÆÄûE_5üHÆñÑc,ow6‚¯IíÞôÃÔ®÷Oé~X'Ž0V„Mñbö)ªì)„þ©†b÷S
+Pr×ú0xv×ºpÏÓ
+ŽH<*JáèQ3¨©ÁA{¹ˆ[
+Ÿ¦dÐÙ¼ì½zÏ½º�xHñ�*A=8Æý\‘®ÅL e³È�WÇ�WtûÝ6<½V/v¯Õ’: x½!Èðƒ¢sˆFmÏ©·ˆ¡CÝ5;£j…å°Â$‡	ï(ÿH’Ó¯>Grª
+¿Œ0û•š(ìÌAGµ0­Û®�ÕÆd†-b:‰õ2©Ô/b×ã¦TîOG‘Uº_Iúº–¶b«´ƒ·¿âüˆvÁ!ò“x|'6³"¬F<x1[ÀÚxcž<ã%jˆÚOÁRäŠVÿ=inÔÙ¡�ßi¯ÓFû›’äñ$–$ƒ‡(Jù„Ó¹ M´¨‰1o¸¹\N/×K=Ëuœ=É›¬›„v �…á
+"2xZ°åZ@(Á:þÜû.›–¹ä½×/xb–2i-e¢¬ë«I¿!j,#D�K‹g�ËZ’5^À;YpŽ;â=ýíÙÞŠ}êø„×xÍ~š:=ð5~g¶Aç9:×3îYTKXòý7ªjK'„~«¦)ÄR©mE¦%"q\Á•^/—‹ù»Z¸vTKÒá-ãE±†G¸‹|=›`6–
+\¢[`)…éì?‰³Gøôb[~N�¦r�°ŒÃ?Z³Ÿ%z±�ˆÎ�jÐˆS@Œx‘YÍ_‚”Æp¼™-ÑNáº€¿"¾˜?êº¦uUgmˆ�}•þÔz^çÍy‰{Š–Ü‰ÚùÛ[añíIÉ.íî7’¾ÁÄŸPCîÑ-üC|2»Nç=Â=zªÜ[fî!¹G?+½B·{VèŠƒþY3Qƒ³íŠà8!8îÊ˜�…åÀíhYØ¿£…8cHèF½™¬Ô£~º�·Ö7bk=9‹Ûª'ÞF³=Ug‹�7ëRÍc§C"—|°äåƒ¼w(1#¬gFXraŒ0§',	NÈŒ.¦Ý!–†Ù0³A,úBV°¦�j}O÷¥þ}'·WÔu>êºøi"G´ã„94ÎAÝNY²›t¡Bî4ù­ä*ÇgDö ëµ…d\b“|±ƒs�[ôž·yB�2
æ‰1¶Lé••	Ñ½RâS¦8w(3À1&£åsIE�X'Òç‰ec­Â€
É³�1Ó±~òŽ<1þ_-…ß#eÜ¬Q³Û«NýVS*Vx«)ófS×p+þ_Æÿ/çÿoæÿWðÿ—Fðÿþúÿìpï›Ð¾~Î*fô×„î6ôÌÛø}[ù¡/m«]7N¯ö	k«*¢o8>:3¢§‹Ú¬¢æ+ŒèÙ}¤÷i-³Ýß^ØŽ™·Ë„Æ?'Nå}ÕMühD
ÌL/S»—©>¼nÏ–Zff?Òa¸t/t‡ðs)¯7»MXhœÅ>¨ÙªÃÑV¥y€ìxž4ç69ö`Ðt›WåK¿ôµçˆëÎv„åw¥[*ŠÏ¦öêvïPkv¾Á¡ù‡Þiïˆ´Ý"´›B#Ð ~ÁtìM¾	gP{Üàœ>¾H+Ÿýk^øx­9 ×ý¹ðd)NëÜ4ïòš‘Þ4Dß(—idl˜jW°ä–ñ6ÊØ;±Œ·'+cƒ,cÃ„2Þ¦2Þ>¾Œ—Ý2ÞA¯¸Á°éô*÷^½×»£üš›¾à¯“ØbFïP8l×-£ÉJ¿…] î¾½�¨„³÷hù?4A:=§ÍzŽÉ(þ}Q¡+úzS=öE�0t5ö^oê½NC#«£_Ct¥<PådN=žõXAúƒÛ
+­xƒ[kx6UÞÖ3¯×UOßãï¹ÇÉ¾×“ýM7û‹ÈþgÿSÊþ"eQÏ<KÙŸu³ËºìS{ö©Ù‹do»ÈÞ²wÙW	Ù[„ì-=Óo´ú�	ÈËK,ïòìƒ­Š§ƒ¢«ÙVÅ{fH3£b¥©;îµþˆŠg�£U3ö<Å—Ý¯ãµNf¿ž®Iù:;S¾Y5ja¿Nñ-2�aâm7Hãøž;]^,!0O‚“EB¬l•æ{l¼ìw�×Á¥KÂ–‘:0Ô{ dã-¼«íIRò~$
+¹Ú`žäÐ”vl¼|¯(SüOë9µ$¡›
Š!|0Å>yEø'<ežô'z÷':[rUÙ GâRßŠ J¢^Þ¡%––˜8§D
+nÝ�Û¡÷yRµñ”sîËé“wˆÙµA˜‘Å±“Ï÷*üyìÔóöIml}§>ÒcŸÄö™iãjFŸå­ë×FÛú¿?ÖÖÿfËøÈO.úˆÁÖÂæÚGzºsV§¯ð‘N10öN?â,w„dŸR)¦ç²V%;ª×ÂË�Ñ�á´Ý„cT·¿ç+Œê‘ýþB*¦ˆ~,v=Z›Ý>½gpº	o’°B…—À¯KðàAhI4…h
+çé7I&êySWÒ/ããe]!ÖZ{5¡ß­g»uŠa#þïëŽÿÝ:­v0âOËZaÄŸ>–·Âˆ?}ÜÜ
+Gô±¢FüA*NÛþÞA¿¥FÔÞµÀÀ7v‹ÆÈHðw£HhWôÂGÈÊ>4vùœnOÄÛù,utä'÷iÏëï¾ÊïKüŠ¾yá6îEÙyíhú£çÃG�µÑVÉ	°Î¸Ðó�
+ô½çˆî£±Ñ!’ídŸÕ!¯RÞäÝ«—é}?œ½(ÀÅózöcvžÚó¼îÏö‰ó´ßè ‘ý€/ED1pÇï#¡ãB?Ð‰»@�Bé·ôYoé>Äy ÑöÉJxUTæUªÌ«hqÌÏ©Ln›jØŒ~÷:¹�p-2¢÷<£ùÒoèÝoè¾~uÔ†Æ	æc0‡æá;wðžù‚`
;ªÉ¿yRMMN-²m6ì04Ô7–
+W)ZÁ”…Ðd(BÒoþ½$"v³(\¤_øßHqžÌÛÐƒ-fß°c„·0�ˆ—ø]L�BÇÍÝÌ2ð¢‹Ë &&òRVa8�2Ã^8	�ft[ÿýÉ&Ú¦Žèv±gDógSy]zLmï}?IÞ..|bˆ1¿‚¹;Ÿwð@Ó[€ïãêÍ–\Ä»ë�ºjÎØˆý“•ªRœãDöOþˆ÷ò­&n?OÜùãU¢)X=ÜÂ6º@ˆ
ô°°”S)ÎR«€oi]Å;oŸ°—žf‘õ–V‘5—=ÔGo¶(V°
+ÃÕì¦ÄÄÿ®f)�¹Pâï(eÔCª£.©Ž©Žêôc…ª8üâ™ox2žÓ™‹€‡Z‘	\'åƒcØ'2ƒ�ft]T©µõ+ŽN©°èU=fêfä0ŒãÄŽ{Ö:˜bi¡áìÞÕ¢tÝ
+�?.¥Ð; ëH‹ãgÒRy	H×@5ÿÑ*JÈ>‡êi©)�â½v$`7"ì¬<�8á[#6Ù1¿Y›ø_~%²ÞBPè-héOõöžO‰»‚Ô>·¢òö‘–~¥3GÛ�é>K?u:uÏ‚é~‹¶[�xIÑ³pºjÑB0ƒµv‚CŸHc÷5€ÄË‹týS8eÉtfªŸéà®Ÿé‰o³È,g~ï7$G[N5Sú°„¶"zÒ(2¥÷åü11·¿Jèhj˜ìZ€êËÅ(Ž_ˆïKú-CÌý”
+^F•(åÉ‘_¡Üì»�8õâÇ½î^¥*¬téEÌ�)Œ	õåjÅ,F«Á‡ñšÎ¶ŒaË¶jøU‹Í>Û�_Ù<Ä1±ìùFþ:.û+"ð~¸+P7�¿¹åÔÃ}Éè­�ME¥T”àÁ�pÝ‡.ƒÃãÔ!Ž¦yw*K|šáS‘!Qo5÷â9
þF†RxOW˜õI«ÖìàÊ�¿QÌ*Š)ÃÃÒ7Ðª$Š©í]ŸŒ·ˆù
ÙéS½C’\‡ ¹�m§d.ÂZ¬	|@sµÐQ­ÇôR°åòôü°”—¸²ïèœR¦eÊ07’95ßzG¼=¢)³–­•åbwn°’›pÃõ¢n¸ATfË„•ÝÑ~S¥-×%|´%ÉjIZÊ‡ƒ‡ô{z[Ï{ºrVúÌôÓ*E/v
Ñ�³#
ë³à?{gå¤
,.´éG\»‚Ûáä2½/P‰(–zw¶�@&cH&£"Š(‚¼�â|¾¦J«Í?aí£q¬ý¯´@ïÕÓ?H_á§qî¾Â¯tÿ@)ì…ìÐÑ;7b§ÊP£ô+Xíãñª(›�”WÖ .‚¡š=¼äïeÙi.šL¿B‚éGî³�½úœ
+Kßë²ô½ÄÒ÷âXãWzž"j]É7ßL ó�‰
`">®,?U7€£ÜÈ•mŒ¢¹„¦Ì
 §ŸMÒ€ù†§¢4`¾ÑF5�q*3DâöV¦…Žñ¶þ“sjª¾o4ëC_9K%ó–9Ì¸öê=×Ow˜e)‰Äšñþþ“IL…(4ÊÏsûP[³…9‰ïð\d‚_0
+N”(Ø‚«-^¦¯—	‹îsß¾±´J,›Më	Ç�EüÎRá#äïAºàâWéz«†—¶QÇÜ1¯ZBb#\Ù·š†„]¾£¼UÕ)“X’ 
+nú©S¾)nÏ°•°ÅƒÍ2àL‚Ž?ÒÙüî£Tð¡Äøä»Ìd±IÁ³�wt¾Ê;(Ð”>¦ÃÐHæIÅÇôÌkzvm€gûÚ@×[<Æ$
+¬†Ñ™ö%¾Æ\1ý	SÛªÁž'AHye¬8Aœ‘N…Ã¤ò?,G:
+>ëùøIwBéèÝ¬8;ù‰')ýQ•ºô§´s×áe&»Ä?\×3Ïéð7“]J¡çt×eÎ€áñt´¤5û´îõtÄsŽêòïÜ¨Jý~S{ro›�{Ûq¹¯	ú©.°ZÍÕÀÇs˜ŠQçÈá#9Ìsƒ{¼À
Î‡óðùÑª¢QÎ·ä3áÝbÄàöMÎ¢kŽCìbKv\�ÑÁ¾Ó&ç0³¯…ÜQ­x÷Ùt_úv•{k\æ~zN–¾-/ä¢¦
+ÇU^Œ¦?Ô{>ÔÑã}À¢(öp°\¹!�îoÌö7æW5ÏêotNM.Ž:~Z>:‘Ÿ–ŸÒÿçþïŠŸ–�èÄK¢`!ç{�i?kJ)…Ïš2›RþÂÁ¦ÌÑ¦”Z8Ú”hNE
+Í™·›N�Vx»)s¸©£÷pSæý¦TcïûM™ýMÕ"!Þ¨ü…�þS_ï~â^•Þm²ï6ÕÂ�â»MÒw/}½‹ÉËxœðØñ½¦ž÷š|Ù#ˆ½œûº“jùN“ÝûNSæH“ÝVGâ²=7¶ÙCM]·µvÝ8�
õAY¿Ÿˆhn3|È»ˆö¢}M™¹Í“ Z&ÍmÆ»æ‰ˆ F‹]DÇÑ±¦Ì�Éj´Z":€]5ÑÇ@tµ‹èSBôiSæãÉ
IDÑ`TÕÍè¥´ë*e•»éVÐl³�90ÐéPvW0¿ç¤î�ÒÊ©#ßóõÿ*§þhÓ­s„3„š½¡ÏªÒRˆ÷$Z©÷RÃ
+sféÿŒCÍÞÐgUi›VñÁ”f…{/4,Íî]D‹½{ ‹‡z¯0¬`[�0 ÉôlÁ&,5ÛÉ7Á––î´ÔîN%¿Ãß»ÃŸ½º–IT/MÐ—‘‘þJ¹Ü‚=�%Ñ�\
7ÕžÌ]G<äå¦l¹‰Ÿ.nh	¦?hêù ÉG¤ÛN¤K]¹”)g¦6eßiêý°)óISv_Sï'M™þæì±¦ÞþæÌGMÙO›z?ü5QxrÂÚ!0ÁË¡ˆÆbâmõ½+PØƒ‰uG×Sm~Å‡^Ø>ÿÊ9óºž¦|4ö¸yÓygy{«4`Ë¦4oRíÂMjv�Q‹²Fz¡1k¡á+,0(n¤÷&îR�àŠ'$l³øtttä'¯ë´eÁ�¨»Ç'PôÔË† Ê6$·üp+EIC…f?’††„“©£ÁP4ö¬â<æÇNržág¼ã”Ç.a»VÂ6µÏñù³,>‹%h›— í"V<ÒçÏëÄ'o§.6jÿžúe5<¬Õ§pŸê')€j,6*Â´tˆp:¯]
³º†8±×Í°tüg.6ÚCº)êDcg°'Ž#l€zyü ‡bŒF¡(FA8s3ìž•üð~ˆ&r4Ý?yÄï«PÂ0ø0;`üøøðNÿÎý—–
+7þ¼E·3+€ÊGvWmçþká›·’Š�hBçã" ˆfbuÑÜîÝ‹gþ·€¦»
+·EÃAM¿�Ø„¥¦Ôôpc×‘P×˜Ò~¶RJ©ùO’ç(ÅYÃ�jï'IJ"ý ›œ˜@ú˜›˜˜îCú7Ý71Ý�ôCnºbº‚ô­nº21=„ô—ÝôÐÄt4Èîù4© -žï€çÛçùö{¾ÏwÈù¦¼ƒi9ý7¾É†3tn¿"o1¨jU.ß'¨^¬ŽÂ™u‹Ô¼0Ò‡"Ù!cÖ¡ˆRØjd¨í…pŒtGÔqRý0„•;£p øc–l©0ÎÏâvw\q�Ol‚¦­Þ)pcˆ´}x¯‹^ñ\®¬qD!k¹ˆ@Ùµ�ù»VÎ¡õÍÌ¼3ƒ†]4>×«ü:#_³Ý…+CÏ5Ûz7}J¼›KÄ¥ÐÂ»ÅÈÜMòn÷RÈ[Ê[žRîq±<,÷Ò‚i˜ß%,�–Ç�Ì3FÕ‚9¬bÁ|&Èfá™êÚ?íÁ{Ÿ‹w
ðnàÚ�†þXc€]gÖþ5Æd·p¯{ÐÜ_é y€Ñü°jì°7ÏÞkd×4æ×4;o/œ¯.Y¨œÕõ|ÍSÀƒn�¡€‡þès
+xŒ
+x¬º€—=<ìp/
+x„‡ñ{èˆ{�:x[˜×5ã!yf	
Ú#s/á¼×È<@¡&I<Éåºþ
a^gPuî��vp ÁGE3Eh8å«áÔùxx™LY^ÙÒ‘pâ>NÐvêü¾ÎŸ‰­Ý&·%ËÑ’ÍÑ€jÖ>¨àÙï˜ó.ú·JV[�»´Ì�FZãg²šR¸Óø�’}ÆŸ½ÓÈïOöGÇ^RGN/âIì8¿`ÍÜGm¼Ïh‰àÕ¯‚£åÌrŸ…åFæJ»á„½kPT«¶ºNÎØæÉ5xv«Ï¢g)_úÆ7ñÚZ9�ô)Qß·�ëÐÀ­<T�ü,àæ	Bô„Qéþm<UžWÄÕšpx¿Ì¨m ,3Ä�ý’(±ŒE‰ì­"íV™v«A	Éi«ŒÚŒÏ7Ñ9ÖË�-òž-³ÊÀÛ*#NôH�e•AyùÚ€ðéÛ¹Jë¤ðœ¸Þƒ´»4øºoéq‡(K
JÃÉ8Õ–2,u�P#·Gý’Ãþd�êËS™Õô³ÚÈl¢ŸM`Î�Fá�^`;œ%¿m•ç^ï¾(eGžÎqÊUŠèw¿„ª}6Lí®Í-õQm‘íˆ¼CDŠ²)¯'»¶´à|MV¡}¬ÈwÕàîH=
ÌÚ—ø�úèéü¸ZùÉ`À¹­“JÖÔð6šÓ?ã7Þ�žà{¸ß)|'ûg>'êÆç]P~—ßãÃÎ¨Ôˆô#FÏ#	["r5E®6Òë�žõ¹IDn¢ÈMD·FÏ=yŸ‘ißG‘÷Dáîl"JÇ!ñL¦1ùÜŸ½Á`å§(Ã
†àJ¯:\)û€‘x† Äš7xv)ùÐÚæúoò\Ênmág¶øüV~^[ö6£çPÒ�`]~n[özâ"NN8Ø¤ðV
Œ ËêºÕŽ7®îMËñ:_²êƒ™ëªâÃË<Åô­zÃåµÊãÊ¸ò¼Âú0Mèˆïñ¨Zg˜+àé~tÆ˜¸l„i@aÒÓëM>BÈ®0òGØ$žûžO)ö¨4”ìÃEåq¼Ÿ°£dÇ/ŒV‘Ôa£Ñ•ÕûrFED‡*º+¤÷å¢,Ëg±ô*5}‡Ñ}‡áÃqÿÉ¹6�ÂU�½ÙæÏ6ä/nr¼4Á(O
äsqr3#×ÀzPœa‡`n62ÄG~V­æËs pÝiÞÄ·áè�’ãâ¦ò3Yqäºl²\}£€ÀÐ»¯Ào‹ÿ’zó#—È®ƒ<d%N‚*”F³Þ‰Q˜Œ(æ^'Æ7);¾ìG;I4Í+—ÓËeúÿÇå2h3fcËuK€v]ÅÎ\‚6ZV"’(Ü€uçÔ‡*T¢úT6aì–€¥ñ‰ÑP½a^Ë—€q\â¾›³õªß3ðãÞqW½ãôŽ{È;îaï¸Gˆ–rlè^
+0¼iº&‡'Ò¡Ù‡Ô‰Äu-3±D'‹Ñ‡««¨—XjâYX$ZjÀ6ß–ÐgÌªá;•ekÕYêöwé�†
ÛÏ¡aËìÙiøã‹81±á_/1ªøPi¨hÕðeÝç Å�•¹ƒ—ÈH ün¥:ÁÐ¤bTÂñh¸2±aKõTò}c´)ž OX+Kh¸hE†9ûŸ[!�µ:ôY½ý3›ˆöÍ×�žïi¶ê$ÍÏ¥ù:IórÜåÄø=³@ÄÜY ò,P#uM¿)—Õ+Ï=V~öX¹½\¦0­ö	lúWò&¶J¦˜Â) ¦UIü]�dï[IKg'ä„NEÞ×ò
pí©Ö³`ºó™�"SÊ?,òÑß×òm0­…ÛŒîm†W(
Ú�@"¹Û�eö	cNâšjw7¿Û Iªƒ$©
+àÃy‚K+Éª*�{m³c´ùaÿ$½ÙèÙlø°î¤W=+imÜb°’òµÇ7ìÇ¬��òÉ„
¶»Ä–o%*°È~�æÙž¥|}ìuˆ³Z‰á¾ÞõÐx~‚¢Zy<‘™Ì>næÁ#á“Qø’ŸÆ‚¾Ø+ð
àS†]ìyÊÀŽm'IÌ†)n‡¾5.Äuq^µ-¶ÅÛ³Aê³u´XgÐ6¦ˆm–<>w“‹^ú[¼ÞÎú–BKvïü¶R±wAÁ•x¥ßÂ¯We§Aô§}‘”vÖxàÝåó9@²;o–_íZYÞÜ6§<W¨zŠw¿¡æ®`QƒæB«¨#­ ¡`³´;ZÜ§b_§­`9vFË{ÅB9ßlQø}F“û>ãi.-G¥]+Jcq÷Z·´k©´k¹´Í•Ò°‹¸–K£Á½¶ª´k+¥y0	™÷.ëï¨¬�ž²6ºem¤²6rY[*e}
+ø\ÖF¦lOY+em4:\Y}£§È‘¨J´ómîLgâ®á€2oå(<µ¸ÖM¤¢P�M\�¡¢´™nGCD`6žÚ¾ÜÂìÞùÑÀËÐXv^pþx)q‹ùïÃâÇêÖ4tœy,‡�-Ú´±I™ñR×­]w¶:�5­]ç{­û
}¤/ÀÁIÅI’Öˆ$š›ý:§\xÆå¦½Š3S4 
ûÙ®ÀL´e”ÛV‡[¹Fßlüžú­¾1;q�ÛBÛ©ÝqUµ=-¤€ÛBúv[8
+C'_€ãs“ã]­”²U£’eÎÇãl”�±6[Š†ˆÉà°ýi‡í™§i›ótE¾¢È…>ûçá½ÂÓÄe«ò°èìˆà|d.·Á>ß(“|bät°«üü6;¿ M2­1Þ'ø~Ì®fãœëž(ùõÉ”bâžéŸƒCxRÏQb¥•ã÷‚•>
yžµõGÅ»clEþï"(¦˜?–ì/æËÒÆFi‚ÛUðÈæ±%KE}‰ŒRç¯­bpUíÜ…CGý«Ÿwè(Ï�;Ï�«¸GÇß¦l»£ŽY˜7¢ŽY˜FÛ¹J!‹·Þnò'nòAJž§,¼-s“/ˆ9É«Í¶s/P
+`ŠMbTfA,@‘XLæ5Ã¬Hf^óH×úÖï)½óš)Šhd¡q�€¸€ îÄÍEº
+ˆ	â@\ØLQqQ:LQq~º�š}ØÍ/Š9FSöáäbGNg]ØKbŽNJJè¤ÌWZ
+¿Æýc¬âÃ÷²˜?MÁÑÉ•‘báSc¤TøØ€M§OPÄå1˜<2¨Jé¾ÚÄKæßÇ&ñè{EÖ©Ú)ò
+Óq+|…‰êÞh¦WGFf­Ž(…Í»°ÈÄubL	°wìôr³g¹‰!_ƒO`ø=^h21,„ùÆ™ÙE"´ÈÌ?o†WÅ7ÌÇÐî«c!ê…Á™FÇ8EÙuçŽ‰iü“=?ÿ@sö6“­]3QÛX†à
+”xŒ·¯0ç’ÌÇSH66'^\kö\kÊ=í{žóÃA·Vý&îá¸ChP3ý¦]è7E†÷=–ºnG†kÜ·S†Ûe†w=®�Á×#L®šv÷ ©¤Ê¬p]Ö¾)þ3£s4ÿ™±iÌ.ö~fDü¾fãäÓ¨œÏá%Ã�Û\�ã4œl¦=‡È
ÎØ§W™#³VñØß¹
+4¬3Ü³ÇÀÑýM.ì°ÙÞ=Ì°C1˜B;›_Åâ¬Rž3eWšk¡îš½Âìº·µë¾V[zÊOÏM•fÍM)P@„)ÀÎ¤˜t&»Ø½×ðÏ„ªëpL
Cø	ìOGsÁ"ÂBè"S>·-rq-žâŠŽc•Ê³T.°8{ežŠÇÆLv1Ó!¹ÙãP) Ø"U¥P´ì~ÑP(Õ¨Ôýª�cÿe<|1ê�‹M´±çb\yyŒ¦dh¥¬æçÕpÍYCçaÆsNÂ[Ã?ç:ÇcËL�Á¯�hL½4Îß²=žfô¼À«ÈÍÜ­·*ŽbF¡ÐHE&ÎÆý²ÚÙtþþæî‡³ÇaYEê÷»iDZN-Ízþ¢8Öó/ÎÜâ/Zjã›¬´Û	¨0œÊ‹ÚÎ†öäçe6ˆl¨2*O¿"æCâY_EûÒ�`‡2òP½¸˜:€mp,2KDI
+2¤—™´D-3•ÄéUUÈ…pø�:X!ª„¥ÖãŒ>ÎÜ‚:cÃËåri3u€oêj-€í+í^ñÈÿmtoÏ6º¤ 7U´„>‹Ý/q«oáIý¦,Ì‹PI±S9c¢•Ä“ÅÔó&›¥0Iè4•âfôÃÔ÷Êå¸à¦=/ó$¿5¦ÿ±mýÆ(2ÇG÷úé>Šˆ‹i×ýŠ�înã‰þ}Á¥qàñh#À�†Œ‰c÷#ŠLQ%?/5‡Ud¸{õRzWË\ÃÌW,¨†ŒõîÍÄ6G2>œKŠ>~²õä/H
 :U†a’ôãÓÝ‹‹îÇ§+}¿Ãy�ð‰QŒO‡#Ž(³ç§¯ž«q‡á'úMVŽËƒ­À)‡æw0ùló%}�É&a. ö¦|ý7‹Lu~Êç�ø¤|ªæ[˜ò)´œ§|�¸oqÊ�ñ°â[™�VQÛ‚Œ«|N“5P
T'4På>Ï|Ià„-ŠE¯ä"SÏ•Ä¿”oþÝß£•Á‹¨•>´2¨ù¨Å�H¥­jÜ·š8}È¸ºzÿ?A6=Âß¾µÂL41î˜©œúëÚ#å£;xA�‚;>‚d;´4½gó¹
¦ó�œ®Qúâîg“ˆYÃ\‚á&E^ÀÝZfTšCX­…ý±Bò“œ;ÜÅëaÔI!)g™ë¹CÄvÓB�+âª¸\È=UqG˜	Üƒ#Ü‹Ø®02	¦#œöôŸŸ3ä:
+“í8[´û
xË*{k'I‰ï_�-rÂl‰f[Áu4^DÄ{j0H
rNâ^ D”.–F¬þ¾æöî²A¼>l…Ø=Q˜°wïÄµØQ‚é>Jœkb*!q˜ÐgþÞF„DÈb–Æê´¡‘ÆSèÅÒ}¸U8ÅÓÓ;-}ÖÎF–¬pç&4ÂÒzö·¨Ç56P bUÊ·D¬²o-—Å")¬È°Kš5		UªŠ§íÈiTÿóY(œu¾Ò>üæ>Ö˜º¹÷ÎˆeXÁÞ­�tm¶5’œf�Ð¬ 
É}, õˆåžZS[©ü#²ò**¯:•ÖMˆÖK	qèè÷.¦Å­¤xã»�YåbwŠÑ@c
+C©L5^k$í+,Ux§ýÆªi J`fq5hš1kS@Ð@|Üµ¯,�&\:‡™5’½‰3ÌÊ©3•³óÇL"
+ö 0Ch¾ûc0Ã»D2`6·žd^ rvwNÉÓž‚•©nm=4Nu+qÅ\Žö˜Td]7^áb¸-Ekg-Y»ÀDZQÌ¯Å½
Á“´ŒæÞOŒ"¡éýØÞ)Ä4u/÷;Â1ÖçËM¾n¸Ü<ÇW¸Ü¤ Íäô¦Ïÿ
VÔ«hiÞÖhç·6ö\eúã#ˆ›¾¥I_XI¿�Ò×"î°áÆ6üñëwÃõ\f*ñKXÙ[lÛãÿ
+5ð;#c‚ÞŠò,ú?Cñ¬1_’Jü;"âá�UDØ2"ÀZq�ŒPÝ“é Y0âoº¸\~½\>«\þy¹ü7åò?—ËóSîc¡X0´XeÁ`Ü•¬àó+fÓÖÿ#Ém:r:EPçåL0�(q™1¨Â"¬F—(Ì… Nã{˜ÓÁi~<Ok�‹,|!ÐŸu‘Uƒ9•æ€§,Häìì¤ò‹R–Æ6Ln‹ËÐ4Õ÷–ËâËÄÄb@´ Þìóu]Ñ`i]-½kT±"g�€�ÜLÀíßÅ©)¢/3¤GžH~Mž{Z�è„–¾Ò§a{ Qè½8µ%«T‰iÂqÆ·ùO¹ÆÜæ(´.N±¶Í|X»¦&àO±g¾® do„‹´Y:áà¾�‹�¡¿Ù“G‘y%œpoÀ®�’ÁKÓâs+˜8Ý¶Âìqà!Xî•~w„Äjv¤v-J6•Ñ‡b¹I€ÔH£>ÆŽØÏ—[…ËÍÄ"žG”HÓ¨�f´²Â—õÀùè�;#¢„ú¿„
:Ú„êUÜa
hÍêúƒŽs:„cÐ„=$Ìâäþ6êÄžÛLÅñX²¤\.ò3õÛHö¥x<î!q96hwš½4Õ3Ìq�Ä|Ç6óHl»üæj€¹¦|`®ôWì�Íã�/ÍãGâS�—š=—è˜È=ý¿UÒÏ4~÷áØw‰Íz¦Ñßód£Ò1“¸)o}þ\Ã‹BåÄ)9~õÇ²©8�‰lËL¶3‡MËV,²ÑA€bórª´F€m¹g÷šX¾kœ}\Ï“2´ÿN‰©Ÿ_»-¤[h¦o2;Çó7™›xrôÞdFÔH@&¿ü™ÁÒ™‡dÐ/¿
aL‹ ¢„A1í3•ïžõ£Ç/K….¥ÅÁï»œäÈ¨ï÷,G^A‹†á»’äÈˆoqÊ:ß·)¦F‚¡;…áK�5�ósaÔ±NÁ‚Íññirƒä]"h(H»N6_F„"ºÄaÌ+fpKE`ãçÐŒïè¾Ê$ñ%TL<0q
+„Á²Ñ©%ÇÞ¬d»vhh/XæcË�Åa™¤"©:d 	Óˆd H
aêÎíì…b��-{ŸV½©ÏÈT©�vÇŠ�W0+ÃrVnæ­Y’Ïfp·L#)÷n4žÐ:£ˆsðM°[b=ÚËÛ|ômÔÏÏiŸ/5"eÏÏ;f±ygŒÌ´ÆZa¬°³¡ÙZŽM}}M|5Ìü5BH°y¶¥c–ã¤®¿ž8Z¥ñ¨Ø |[/¤7ñ¶>(ö2:WsE2MöÊÖ˜J-]/Zªbý:n“mÎJó+9•YmÐÃp“ÜØ0¯Xx@<m„[¢Ï;øs4m-—I°‚$à_hˆÊ¬}�Áló$m³EÛŠ\{{Bå·±Ðÿ§à³ç�óêëÊ^Ä[|/®Q[ÈbÞÙ2÷ö˜´—¹¨9U.\ÔœYÔœ:VX}ŽGc!’'—zfÖ¹'·ëøäöNžé…;Í,ýÏÇ£÷™Î}Ff'Êa"
+L^,jž]Ø`f7@¨%Iße
+É2YGÏ]$�2ñE!�_ÔL™¶�Aˆ/ž¥üúûoÜ0]¹Š8F¯ï1>+…ÖÈ½fÏ½¦�jswc7#vÏƒ¿ªÄ>`æK¼
+‹eýa“õ9²¿Î/hž™½Ç”�ùÍ3Ó½ÛÝ«Põ»ó®ë	ÆÕVÁÅ•%Ll}ËAL€ON¸h2À�¼W¾Ôíx±ÈP÷ËŒÄTe-ú{±Hæ®ð^‹¶Z~ìô['ôazW#Ö˜üÂð¬]�0Uûþ¬DðHDó®˜ZG£A=­¨53•ö¿øîõvàjæÉƒ)¼²\Bœ¹×÷Ô¿¿¾÷ÿ®ïÒÔ$õ}úß_ß
ÿÔ÷Þ"õòAm’@�8®eŠ™=ÇÃã‡ÍÄW|.3o]Çû¥Î~ií—P1œ�S
f�9Í´‹ò(z„Ï.Ò´>P|`Ìbê†9?f/á’jjÅtÅ¼DcpCHß.^§‘Ô6æü=&.#l·”‡�R¼MZ<[Vp1J&6iFýñ¥<Ì¥y”_Q¼/EÅnÓ[Nô{h¢Oç°è®'DwÑÞw—Øûîâ½/z‹†xƒÙ9–ß`n/–z7˜‘@)»¢�‡™zC²)®èÌªŠzF;±ªwž.gs€ùµéS‘†¥ý¢ä]ø±1ÍTþõjå¬0p
ï¯¯å�õu¼Ë.ÅÔPÈ8Ì‚kN=�{ Êzs‰[Í¡ßSÕ®ØY²Ø´2sÆz]š7VãË¥aeðÈú8w¨KJ\à&.l®û>ß„¦\M"��ES>³�{¬MÌ9(OÊA	‰A	ñ à�vø,3(O N”¡%ä©Œ’üC³=ûoU9†QO»qa"ë$£yŠ§&ÔŸhV?p‰‰®º=ˆvœ¥\¬Œ(Ï*;¯O…n`)öFœ3ú7aªûC,ëÓpýCÒ|ÏòùÎDF³kÌDe>?#š6J-³¹Y¸ñ'þ2^V=uüAÅÇç¦ù­�4jÑzÑ¹"óÞh­éô{ÁÌ©Çƒ
,'FP@ÕŸÍ³Sô™yæç’ø´‰Ò³xã úøér½Séí\N­Ã9Q0ªñ}Y
N6ë'¯ìÑêoàqb¨mgP·›MHªRLaK•n%ø¼]Vÿõ/l¿2Yû×–*±†³\G±ñAÙÊ;#ãBè/Éó�^ç8§$Ïwä�Ï@SIžïÈŸ¢„T|Jò|§Å9#A÷À'Är(hú×r9´ãhùÃ£å9VþÃ±r²\þÛrù_a~üŸ.S®$F³+yÐYàÊ¾”eD·çûÆø”¬
.]ˆ	o6Ùeî§»²]ùå©Y]Î
õ8¨ß&)èf~t°ßÀ¿s*--…ÞôŠ”ó–cuäÜ·ÊL¯äÈ_Óÿç.@TNb“8ZÚE²p(l8.¨ÖEðÞƒCáÞò8™ÙåuâM×ò:l€–×)ùu¾4~ž¦^(\Kˆ™”jÏ¢4ñ áN9�1eoI	CÑ·¤�ÿ–”b÷ÜšâMrf]Äî¾-åËE
öp­¾ü¹ùnO±Á;».Ò³*…>z}3éÕnõÒÿç^„·,…ïÀVdÌÑ€|•¢@Â}Ìl;w‘RØŽÊ¾(ºÑäUW¿¸Y¼"Æcž‹!à¿Ã3£ÿF0—Di×wI43ŠÝß¨™±Í”Þ9T°YÆÿ ÙQø ™¶Õìù;RÙgMè‹à�©ì!Opqkv¿'¸¤5û”'xEkö¢¨4qð‡X.ãSßÑ¶þ“ÇªŒéü–ˆ�ÁlØíº¤i4}S ç¦"…ìì-FöE<Ä•2|w3Û½J¯Rmñ–z,{0P„OQ<Î?×243;Í_Òê@pÔDc¥�¿ÂJé1¼š"
+QG6@`ã¢™×ÍöÂëæqº\o2|;ë½¯Ø¸Í&ÐÃ&“Ça³ƒ>+àoÅM¥ßG©´·cxˆEÔ’ù}Ô.Ð?�Kæ%3}ˆvÊ¬ù’Éš/™môIÞqÁÞæÝ^¦n£®=y`ìä�ñÌš�GÌìUQ‡ü¯Šf_j\Ïï	Ž˜é—)¢û¥F%m"¿&50Ö�wRâUQÈFÙçÄ-.¡xÎdJÈÏP�£ÆŠ°Ì!mßg/�òÑÂ³˜õ/,ì13—G;
+—GK^ %„Î˜,æ3KbIÔa¿o­°‹÷ÜÆ=‰Æ½Ï};•zçIjÕ“fæ¦h{á¦h¥7?ˆUiZ~› i¹ÏMBoÄ½ý—„o	!Z¥Xï2ô[ŠfvÑ¸í2'Ólô*H~ì"ý•ü„‘BWþªä'æ)F~êf¿
+uÚÏu†Ýî«¨WEaÈ…øt{á3*à3ó8-©C.ür`üŒ+„]þåÔÊË£éqÓnïg‘ÿ0ÏÄÿÎ vÝo¡D¥.wº´j^Â¤Ü13áyLì>^ŽŸÌis?i“9¼Ö³q«zM;sT_PÓ˜™©Æ7F'S}ýÀÓ…ÇbxÊ
#áøÇˆ@9¦*¬À+û£¬;7�¨ô5¥´ŠîÜ`´ò¨·¿(p6™²Ù`§»�Ò¾“ÌˆçÅ” °ÖþÙ¿©DÉZdã³pÓ�¾4ÚsiÔ—¾,ÚsYÔ—}Ý„™mÊ#�×Ì�:Õ™…—ä8“¾»ÏT!í ¤Ù£¸G¥Áb5š=¹%uPI0>S»»BÎ¶©­¿Fx€9ùw®íuü1ðÇÄŸ(þÄX[�>¾º§?ñêÄÕ,+¯Ré[°c  ÙFƒ%$@ò÷˜¿�¯ú+Ê7(Ä£~ƒâ<
+8(Ø£‚ƒ*Hÿ=p¯b!m?çrJÁF	R`Q8Bˆv�‰›¡u ÝªÍá¯I:;S6á÷;¹ÿzÓì~ÓôõÇ°u€˜/ÖU˜7sÌ¹ý.8!mµ'-$ú&,~"rÑºkÂ"¥…Ÿ;Ï!°‰â,¿
¦|umÜ£ý¥ßÅÉ±”X@f_n‘M¥„	*þ½�$Æ*âÃn÷„(s„óøêêeñµ8™Ñ¹eòBüÃÆ:%2Ëï	9!B ÍñÒŸ®b!0em¹ãÎ#�p
+•	Ó Q¦i\h·)›kCŠlŽ2»MÎIv›™ùûh²ð¡YÉW['›Oa” [_ÁSøÙm¶Š�c…—üÅÛeÝ4@Q$	yKà,åååÖYŒ­£m\Üwmã¾õ)Ÿ÷ÝM›¼¸ïÚñÕøî%‘9î»/å‹Æ}R¾XÜw?mc¾R¾HÜ÷ mã¾‡R>ídßÃ)_8î{$åÓã¾�Õ0Ìù¾õäœVÅ™±AyÂìyÂ$ÙsŽéž×'ÚY rç`gÓ/m²QKó(‘�¹>^Â‘{ÉK×9UÆyèÙëIô´|&à¨°¥jÏ©²”i…*”Œd6g”ÞCùÕ_Åc&á)¹èà
+a/‰æÂTD­SÄN‚­T8Ê;wWxJ…� 	„7 õyè3»R[ï>E¡à{‰õƒ,Ã¯Ô(Ø½RSò·hÂ¢g›°è�²-ŸûÀž(�¾a=ZLŠÜÿ»ô]ÃÝE!¡Ç)´_Ú–‰šB	”Êtm…:s:‘µ¥Gt—®­0"é‘¬L9¯&6Ì÷ø27Æ¯s¤&eö¦(¯3K£=K£>Æ:HË^­8ibÿ®e©Äm¥[Ù Ð†þD^,—«W¶ô>Ó.fŸ1³{óÏ6¯êÙg²™öÑ3�Ëß5Ã–#Ë’»Ü�üÑ9l‘”ÖÄyAè¯Ñ‚º"â›C¤uØ„§I+4B©$™C|i£�ÌTï+ ìu�°—¡²
+A°¾ bÖ|/Öi!¾"*õá½fzYgA4?ý³ç¦¶’�[­¡—gwoLùºÞ6»w·(©r�áfÄUžH¼#(�@ “²”j Ñ{„ÆŸ‚ –w8íí�ô²O�°² "Ý»rs5Œ–ÿZè†íO¦WDçó=Ì+æüù£ˆ„Ã¥—ZÙáÒÞÖùcqh‰îk®÷d|Ëßõf|Yd|Þ¤Œïf­Êxµ,qAÔ“ñ‘ñð´ùìÑðú•Œ‹dÆO½%¾*2¢Œé"‘JO‘Ù…5"Òñ€ RØbb«Ê¡ô×hvÛ˜ÛÝ_Sú¿6^ªý[ê:Df/ŒV¢³7D±5¡8*éEsPz�>²b¥ïù$íªÙG"ëÿXjv‡Âo37�ÜåÜ›€Î¼H"Ü‹f:–~“¶šoº.•ÕÚ+ñ�ëÒ	XíÞZ	�câ8ÄæÄB®hH\PH†#,pÓü¡ïŸ­—ª‹ìž>ý3‚ü™+’�j,®­/m‰Ì#¥gSÄÇW“DR¬C1…V[f€¢Äënp7�@[Av;Ý½CQŠ½Ox2²éŠ‘Œ.T¨ –§c×+-Ý·D UÍ¶qÝ¡–©o¸©Qñq“Œ €ìy‹Ÿ`\ÈÓñjAÖ éiB¹YÊ^Š‡‰€=PoH~›¡fzëé�Z,q]jÅ]d¥¾
¨ùêcàÂ³ç‹¸zM#§§wšÝ;MŽ/„?ùÓîá»ÂESï�AbÏ?6¹¸&2Ìky}��wá¨w¬X›w¨wa…zÇ²×	ê]ê}Õ¡Þâè2¦cEIgã%I¼!6\çÐîuD»×E9o‰I÷U"ÝW'’îx©­~¹ÏWl«»¡'H·ÄJ’&+I–I¦Ü’$Üxú™ðóú³’¤ÑvZ!àNÕbò}$RrH“Ò\ÇƒØÏù™%w7C³Œˆ¥T¢E±D‹¡0Èl²ÓKâŠb8WóÜh©@{¢ë\Zž+hù¨�)M[Í	‰ÿ«—’<@®G@Ý^BòU8�ì¥£ú
+P…›Ñ`ï@Ý1³¬ ¦V¥˜[Ð&¼¤&Øj˜k!ÖÏÈ5·õŸ–k�çÖ^‰"ø£á�Ž?FŠ–~¢^S1¯©ƒ¯©ƒ¸×ÔA-P$ð§bå_N+ëI¬$avÌYX5Þm˜…$’xôÜuxºE™».iªdæ„Ï­÷ÍŠŒÙ<4	ô�BdrÒ­š8L½•±['
+b¹)v_njÑŠ[µÃ}¹iÖ–Ë¦ZS —MaÛÓ`Qä²)�ËGýÍ†gçFÙpu0\­�@È= ø¼öDð®Å'ÍæX	¼Pr{(�B±¯!ååªL„í‹Ç`ô[hõvæ¦ÓhZÓ#Ó{W%áC�@S¾ªX™yZÊ?dÕIù½ûn™5È@«“níêçã}¤e²Œýž™8—‚�]w…¡ôCRjññ¿âÈ»Ã `Šœ
+ÛNÕ@t�Ë&›-ÈìV³C½YÆ
qAÔ‹:•„‡‘nçVå§ÖÊÚü©S
W€L:UÑ‘}1¢x·@Ç¹l¥q£tÙ;a4Fá	ëWYâ¥¡ÕPUX6´âl0ž#ƒU‘aÈV˜Í¸‰°…g1Ý2œÆµ¸’dÄ¿)†Ý± µ´Ê°×y†=ÊÃ>Ë3ì	iÒÃ¶‰c‹ÒhêÔ¥‚Ç-›Õ™Œ*dŒÇ.»”ÆŸº{xwŒÜ`X»ˆcKòžé<]K—Âô�\xºD�ÕIAX…I†Ñg²åÒè�èHôüdñ`¥Ü)±­¢h^`X
}¹“ð§‰æ%dó“x^!¶‰g$}6AY'AýŸa«i¨÷v%~IYtJ¡YEÃèÊiÙÓòM³NSúOëÌµ`Þ®OöÞ±øó’ÖÞÛ0—Ñ»:8EÐà ãµZà
+R
8Ëaœç
@È†Á÷žÃ?ŠvSæV¥zR½)Ð¨­	N7ÌMºdÜàÚÍU;xl®�BéãÚhà¬?š¡ƒ¥0�ýÇz×d�Ï	$ãv­ÍÔÅ›'ãß•ô/bãÄ—§‰õþG7ÚÓ˜¡O±¦�¡O“}
+‘ú40ôi’¡Oý÷0ôïü›ú7œ™
jšâåéV³×áì°UeµDZª9»'ÖåubÒ·`2#‰&óq<ûÛÕ<{Š—»2@ËÄx±Ìø—^
Ü%bš8° ~Š9^áâ°Pçá´T1šÂ¼ ³TŠNˆÇÏ›œ1†Å	`W`gük—3N©^
+'ë§ÄJ&é&o¬Î,cÜîŒ�+º}ªsŸêxö!úúº;œ4�Î"§Cõ…à9¾ºC=¬õ4fƒS%tê+:H¬*–ä¤¼�|v�>À†¥Ið°‡wN“¼sZ…wN«ðNÔìÓaw"\´Âñ¾˜“6W8ió¿�“6ÿá¤—ñéÆÿ9]ž3�:ªÀé}Š*æ×¤p÷²žïß*—Ý»íÝ&â‹ó3úøÐ¤zíÐiëÞ�­ûE0á}zØòZïQŽ{s9Wá;ð}iW…Qó¸*8×ê¯R�¯š´ßê ýL¯×àþÇ#§gœ�AáÓ¹$››”—dÙLœáf_bƒs—²óËÞùI
+k Ïó;¥õ�+ø®ê§Žû€%­Ùë£Ç¹Xe"/™‰/1j•ˆÁk irãÊ×0.®ónö\®þä(ÕÓÙ(ÕaSé¨E0éÎ ð�G›-v½+�¶nJ±E�þhOE\Í‡\³&üèš=e³úv¿/˜uwØ„²¹ì_Â,®³“›ŽwÜœòÿp÷.`RUWþè9§N½ºê<ªº¡U^­ê6ý'ÆÌÄ™IîLn2i	™IÍdf’yUY]�TJƒ3ã%ðŸ¹“›´(¢ˆO0¢vûÖæ¥ "`Ø§ŠîÄ""h| ¼Dé»~kïsêTwšÌÜù¾ë']çì³k¯½öÞkïõâ¨¯9÷èF¹�Ìú”bOôŸç&x}ÙæåÚÂŒ6‰òÜÄ?{MôñU�Qó¹¾C ëë�øüdµ‘¾‘y �,´à¤ô�«¨©ßUÃÆŠ¯\œ²3˜­Õü�º¨=Çeª[äW–T~@øF‡ó Fô�*ŸŸˆ«nþ[xü&õNÊ>£{ÁÛžÑU?®û}í¹YÒCëyài‚ë=¿
+úˆÓäë_D­ÃIšÏ£ã†Nž›�ÚÉs·3ö$íÀ•…×3_¦NnH�Ô÷ÌUUß3_‡?tËUÚ¹Çr½Ç8FÓßÏUKß‚¯rk¿Ø÷ñÑ$üº<fpˆ²Òc†P©Y8!¿ÅU©¹Ÿ˜r#ß®×rëÄ³Í¯okÝöòòs¨›«¼õªšõ*ß�º¡�f}�·<ŽE`±å*;<n8¥Ç
Ã"BRÿ´OR¿Ä+¾Æ°Ky)…3i\€Ïê§Ôr=¼…Òoie°FàÿœßG7÷öK"È£K9p÷¨1Ä‚âG�å;ºå,¨<JÀ>jˆz?ò{êö×»ºZïjªw�¨wÍðzòê]Mõ®–õ~è«w…×í%ÀÚJ¯À*°D8àwæÍã~©FYhÔ/¶}RhÜ©W®ë·õüÝÑbç˜¾ä{˜Ö€‡
•¾ç—D‹»ÇäŸ”í½?ë½?n`d¤~Ç¯¾55õm ú6P}k†Ô·fH}ô¾¾¶>—žOpô?R÷c±çHÐ±•àpó­šï¾�© Jï°b÷°·¯�z4·ž°·Þð“÷H4·Ê+þ(hî±¡4÷¨¤9ú-=ZKs/øªYm©Y¸îèT…“èìSFæ)CÉ¯0ß ò+Œìúä”õI¥´Â ´‰=ÚWEè�=1ö9_Œñ¡©ºV¸\tàqn¥Wì:z…Ñ"ÂE®±tZÓD€I¸,ÝLGÃÌfCs¦ÐÁIÏõÑk€4vè­Q¢ŒB4Bsµ#8³çòd¨ø#
+sh‰u†ˆÅ¦‹�kìœn�!ã¦ÍsÍb¹È!®QÙnæ(§
+q]kÜºV�ÁŽP¥6€a¸¶8T
áêa‰ë·‘CòNo_ÀñdHzdz{¿?+Tcûñt(Ô¾(\kÁ#ÙÕ‹¸YëÆzxxÍ¥c…�u†^séX^“�×~»^ÍºL¨‚ìdxÍecÝðškØBú2/¦Ì8’¬2 êB«<
¡UFSi•!éV¨L›ãxaæ)±Êpý®2×9à¯yÌ”þÊéË|qjÎ>o´=o(3’?`-ë:5lªÿ>4œ
x5¤…~•OEhUUEé>o‡ôÅ½ÊÉ[øqô¹®çó"´˜ŠÙiô9°Gq&Î=bÚ3ô<ÓõþBYïâ¬3gÀ¤yr5®;
+7-–B
+gb`ñüjŽM	/GO5{¸zÂ
+Fbñ£ÁÞI-áÞâÛú¬Ž`oq
ý„rÏÐdy†È\®oÂF»ì,˜Ãq"êX§9ÏèIV˜¿ÏkËç[X×b‘Rº¶µ�*:Âb&Ö[\k!ÜôF3ÁD¯Þ�ç™)5òPÇæçŒ²'í~Æ˜ÁÑZ×å”â”»3WG±ÙD¨yvœè’£b¥çŒÕTzÈ€mµ×?as&^/ã™«Jhük¼öë)¥Ô¯‹&[eƒX©¨¥¨
Ñ›BÈÃðx�V$Š+U‡\ðbo ®½f-V !(^ã¡xM-Š×TQ¼ÆE1ÀË÷ •»ûMÛÿ�¨ˆº^)èËkËë–]Xr(YzÁÈQm¥Jú^%šCCÑ¼¦Šf¹¬B!±hîÓe«­²IÆóŒç\<€,É].q�Yn`UXoi´vœGÛâ:#»(:eQT)­3˜»¹º¦ûV¶~©’´NlAôEëuØf7p} ²ÆÈÞ�rÕÇk?×·ÆWß2·¾5^}kD}kPÑ“¼ÃŸ%Bßvèe‡w�jœååÂYBÅ¡M‰RqúJ§ÂOqáÃR÷•þ³š:iûsˆ.V$ÿ�Pð>b|E¥oeÚ©IP4=ÿ¸‰»ƒS¦k(�;›2u¾Ä§�ÝO®9¬�Û÷Õ¶?™‚m¬¥ÓŠ²2 ZnáMZ³`
ï nP•üƒ†8*,‰:mKˆi^Í¿)ö�aU†¥¼îãlöTŠ^2×NPsKiÕ_jä{"ùGB¡ý—ª2¤ðŽ1
�-ø»Gë`íÄy!¾š€Ã8t›¶ý¥Fâÿ@¬#»Ì˜²ÌPÐ€×è5Ôè&£\Ü)ök)íÎÒ&#÷(öJüÐBp‚ðaDý#&•cŽe—ØŸÛ–Ú,H\&bÜ%P¥½€¡ö91t…š™5FÍÆ§Ä §‚eÚÊ?¥Å…�nlÐa†`¡–ßdt!™aé¦
Û>»š·_1ïÂ€Ì[.„Û®¯¢
4."3ednc©!#no²ôP,.½Ô±GÒ¦Î%QÂÓ0–f&Nµ÷OPœâ²hJYš¶5l/>­_\éâSÛáq çân¡8�ïÓÁˆÑ„¥‰¨ÜQ¾£‹f/
£X³¦ÐXRƒ­ÔâƒÑâž1í·Di½íÓÛ—‹_ZTÚ—Á£K!(ÙËÍ—Ê“æiï•'ã>sâ`½ñägÎ««gÎpÉôõj,A®›ÒKW�ÍÍÛÔ>– ÏZ�jÜ˜‹ÃÆ%öÄûÇ7Ó^Ü<ñ¾±Í?Ó<ñMú·—þí×L¬¥Ó·×éyï¸æ¿‹•.±s+Í¿SJ+ÍÜëJi�•[dÓû";÷±‘ýù”Ÿ+¥��ÜF3ûóæ)?WKÍÜ-È~‹™ëµè·×Êí4èw§‘Û†›ºmº�k.=4.w‹-KÑƒ{à½Á¬š”Ü4!?Óª¾ÎŸ�_jÕ˜£üÊ÷zã„ü{F�9Ê¥¾¯7LÈ_!jªæðñm!ažMÍâÜF„ç-78æ\ø\ÝÊ¯gp¶_¥|3;cP�kÊò‚¿Ž9¨£×«ãuÆ°–ŠÐ­«A7Mï³M9d5õôñ_éaœž‹›R)…8ZGz!-³fdŽ2ý@-²\ã™×ÍùÒÖüuS¨à&ÝV(%¥7§øOþÜÙ�çTWŠ��Ùv±Úy1±Õ*Å¹º*°Ž¡uÇ×(q¹ÂÚ…Z¦v¡ÌÃNVè�Ö„�`•io‰“ÝÛ
+â;ÍÙ�f•”Á›Ö�7-gê_Z†æR¾_†æÈÚqJî¸Õ\:nUÙÐŠ…€ƒÂeí6�BE´Ÿ·õaYû,Ä2<]œño°½3þ
öä^½®´ú-=7^< ‰ãaL2‡¬ùU=MQëÿçn°�Ò
6}÷Ç•¦Tlß7Ø¨}<‚ýzvÀÊXJÙ©‡Ußq‹¯Çˆ�ƒ·LeGú­`Å™6�ï¶f¸;�XËY�÷6+s›¥d×X™5ôsÔÌßjå×™™£¦–]mfV›
+Ä6ÙÝ†¯E»�@öJ«%s¥ÅöwŒøX3ã�`UçCÜšáˆÛîGÜœ*âæq}@ÜK‹ˆ›p¾7n'ÃÜææææÃÜÆÜÕ3æú\Ìåo4	7[Íi`'êá‹�×
+yé2Ö$¦]èÃú» ä_6»—K ö|å:�÷Y�÷YŒ7³s-§,„2s­@Öq?Ò|ÍÏ6ÈÕVf5•'HU†r«	†R"ý¥*ÒûüHïÒwZÑú¸ÑŸ±©q°YÑ_éÕ&ÎžWh†vXôÏ¦žÐN8­#â>Ds7šèq„¶ˆÃJ7šÙ×¬|?v&‚©»í5K›ÖQ—½Ë,Ôeî2Õüa£ø›Xçù1úšRLKo²;šÖ¨…ü¥�Yim¦Ï™›¬ý°ÃÑ&=Í£¢øt*¿ßêªJwã\¾ˆßK»R¥¶›¬º	à2¹óoÇæ'¿ª"oÞ]óRJ<*Eªl}Æ­Éo²Í¡I[R´Å‰Më0‡‘ªVÞ\ˆ‘Î8<ö,Ô
+Ñ†…]cAÙ9AIó:’…D!IìE$IP•™;Æüp<˜v[¬Ÿ¢M�Ä†¡‰bENÜ>8Èz5¢Í8‚1q–‚k%¿ÀîrláÎ¶¦á
vÁ.X£öæ¶Š"¥­&»éÙJãFÏÏÓ;z Î^G£rGûñ(Þ�Ã<›[¬ÂÅë»½‚Ñ�âÇ£Þ8¶_RGSƒï8…ôß‹Ñîh9eP=,Y­¨7¶ê<»=—nôÏÈÏ·AŠò—Ö/¢¾ÅV±£5«Û„¯@½ÃKE‹Nn;Ä†ÊÎ”»Ý�”»� #jfÊ
‚rƒ5”¢ÂÏ… ÜVÑn7˜h·ìJWîlôÊóQ‘á£Ü0•Ç}S!Œf5v‰Š¸zI¹Ç†Pn?Õ¼Ý(Dˆ÷ôSnnA|MÊ¾†‰g•Ÿ‰F0)ýÍs»¢LJi.è.Í"¥ Ç¿_­›
+êDNQ¶ìîíLá÷Í°-AM…8åÎ<›R6Sˆ#áëM�Ä¨2QÖK×SzÉbÊz‰ÐIÏP‘ ZÚn\GÀßÑþ	¿!ûvûY…É×ÓB”Éëy‰‚®BÃéê�%ÚV÷UÞ…`¹ÏpJûÀÄ¾æåèÓ´ËB ï¿»j:¥KLJuêÿ„ˆa›éd¶™jn¹Ù\ZnÖ‘«ÝÎÄõî%fõz÷u¯Yª­ÔgÂ¶ÚköFˆ>Þàfÿ”r<A9ž )g9õP›™g9™y–z’†¶Õ†öx
QùÒ�ì¡½†.EÿöZˆu
UçÜ¥ÔÒ¥f~½åžZÖ[®õnî]ƒ²Ã€w½åðnN•Þ5Xµ™òml\Ñšd¯—‘gc£ZœoR™•¾âþO²xÔýH/#å¾ÅÐÂ�íSŒqèg2ÍljuŸ"Æé
{ÙÏàEË»“[l	QYp³ïäc,jÊ-¶²F/³§ü™ZZlÁ‚“Ï¯`–>å�¶<§_ŠôÂ
+Ü·"½=[pÚ
+ê”vþXÄÇŸy_h¤·ÙS^hä�ßÁÇkÔÉ&¨ŸMù™B€Uœ.ú+òVÜŒM‚iÇM1´n:ûlcº/wØ ~´õÇ”Òa#·Êt_øÉížCûS3ó©Yã„‹ñž®�¬ræ#6±eZ?M$û´y¢¸‡û=¹	ò6S"$ 7}ÜdŽDrG}¢‹w¼âPü7^ñ
T|ÃˆÅ�ùŠ¿ëÅß³‚Tü§ü*-~�ùŒß›ƒùŸ7�É_o·Ày±xjLþ6ñž{•š£¬kFÇ.7o~S¸øÉtúÒEª(QM%ÞçIõúk§\Û¨t^ÛØçô¶¿O”Ä�Ï!†ûÀ
+èq#GyÄ%DŸd
à{8Ñü-&m­¬RÏ¥è/˜i‡2U¼½ñ™Tû­6ééq•ò¨ÇÑÌ³@ózÓyMçY˜Îy9>AŽƒŒ¯GU~¯"ì.Â6�É_mú¶qLþË÷þô˜üÇþïOÒ»øžû„š¤Ðé¨u
E¨¨qhª¨whª¨½ù‡¼þ¬D{ä³’š_i�D>}äsÄ+þ$Èç¨WüI"‡'G¤¾�}Å?öŠoFëÇ¸øRñÍÔúf«v®ÈÊrG�æÒQ)W½T«Vö‰WY{Í§,Úk*ÆH°öš{ÅoCW½â·QWn±+G|Å;m·øztåÛ%�õÔ•õ �™^ŽÈq©�Îå(PŽPŠƒS,í.E6¨”Ix¤ÈÑCi…•{�ÚÐªÞa\æU×…êfÙ.îº(×gÀÝ úË½Ê®CçgÛî.üuþ%“RÅ.¼—vá½´Ð’6ðvá»}»ðJ¨¶ÒuØ…¯ôš½}˜c»»ðUtf¼Ê¦T±?CÍ>cžlîµª
]å5DåKW÷s½†>Dÿ®ör|H |P®ñr<‚×r(‚-¶ÜËæpq¹‚-ö*øˆ™{‘ú¢‘ÛGíóÎÓÙ½Ä5ìåóáu6ÖtîÎê
Öäì1£¥í˜³¡ëOÕÌ
ÔƒhÜ¨þ£–lÍkf5³€›¹Áƒ~9ïTÕÎ¡jçX¹uTíºaÕ¾AÕ¾ÁÕÞÈÕBgf–	9Kþ&»3Ænw�ÔqvÓ©»‰ó&;7‹hf–9´±C4´‡LŽ¡ãõá0F`�íNÀÃ„êÃ#NÀCþˆ:Dï�#
+-ç¦‰]ÉzŽÙåŸO5Õ×AAìùT§ßHNq+=!þŽ×ö1´ý+¯ícÔö±ÛÞ;¡Úö-^ñkÁ¡-r§¶Cïb_K8¸ÖÎ½H8xqÄêîñÍ”[=¢éTÙét®;U×ëÅm¶NŸ¿�O¸šL´–šÙ‹{§\¬–âð˜­Ô÷æ—YS*õšÛ4YlóºÅQ¦^çsÀìÆÒë˜·Û:m¯û8–@ŸˆýÂÞ0(mjlœK¹¯l$.¿g>5rØh§”&ôsÌ–Ò3w�O'½tÝ�í#�È{å½ÇÌÍò©¬—fÙCòy�SÞãfîm®w¡ÈûöÐz—›IÜµõ™)ç5âòó7[Äçã&j¹.#’¹WSO˜Â[zÔ0a1–9}Ê›ßÙU7~ Kñˆu'¸:t´Ð¡#? Ú¹Îmç:3­I+ª�¯
iç*ÛßÎK^;Ï˜”
í¡Ÿ‡¨�gxYm¡e5ÿ •ü'Êy™�¹ÌÆ‰=Ù&¬¼ù.ÔÓ8^ ßÉË¡iýâ„íà|]wCtÀ®à|�ýÄÈ|b(´‹´Ð.�5;HCþë¨—wè�VÐ¡.aÿ›­ily‰9mZ?À—é×š"ý%J¨ö3q.áãH€Þ*w8ó9�ò•ŽÀòœq�Ò¥ÿë½ø@±ýÖÅö['*VGn÷U�ÞÊ”å0²¥,¯j¹ýJ„ã�”*+ð¾îíR±ÆÅv'*&5©Ï8™Ä·ITýª&tiºe­ûî;=½=¬žáú&�š#¡ÒÓ-±r¯÷ÎüÝ6”;YadL_~·–ÜŠ#™–3›Þ˜K9�×#ª§Õo"/@¿e©–½Sk»“Ö Õ¶U…5}î7“ß¥¦ï'Z¼ßÌÝG+Ö}fö9+?‹ãqH%�ÂÂ¥Ý9=íÐý¥Ý9=óœ¥ÙLÍÜjÿ…iÌíÖZJ»q�p‡­qc©ˆH391:b¹§,ÚkJOY¹×š(¥×:Õå³Ä›Ûïi¤•ªz¶kíˆÓñ®�Äiéª¹�ònS¨ö�Yá»Œ[m§PÄùQÈ¬:.CDýƒ¼‰	Ña¢3ÖÚu=ZG¥kdqwSÇ.¤ƒù\êÀêM/ÄØ‹t°knßœÚPW¨ã‚¸»�Ÿly“sËà`~?T�n	Óoñöp/[Žî7zÛoGJfQX¡¾¶ ¯~ÐÝ5²¦\Å-azŠpJ§êÁ·eÎÒ7OIó¹CÙ¡°ø­vèÉšÍ,„Eà�w¤}+„37‡Ut©‹»Ô|ª.e7Z…Hf£…2ùTqî˜üÍ&�Ï5T±,&ùNçFDdé¼`ºüì¹¼Œ»­fS³séDø°Þ6×Tqn£eXHäŸum3Øô*ÿ€~GÈ¸Ë˜S¥zi·ìƒ=N”²:nÍýe¯’§ÆiT‡>¢ø‹ƒƒ®4”ª¹›…oÐFï˜ úÉo4QI¦§^}Ÿ=–º®bbClÿZ O+ùk•c+‹EZÇ\Ñ?ŠŠÌšŠºâª¸ÛÄ¹èD•pÊó9š¸—›@¢�
fFC=7+Ûk»·Q-Ã×õýÌ�"?}hbe®˜Óø9qV4CŸ²póò”Õ„	ì˜M%Ç”Óõ5£u€fj% ‰JkP­A>¡svÀÈJöˆ‘9B?#Nä~·¯ežÈÔ«môŠÀîá5ØºÏt=ŒÜoÎ`IÝÈ•õ¹•9L‡>ìq!rk… àmÄqb±Ç�'yÁ:SØ±ÊrCËßj9=îšo–][�ã–ë@ïEÃ}zÆ˜Ï ¡æ¼Ûž“½nÉ8à:â€Ùˆ§�åÞš/UÐ¿ôµ”’¹Ž%†ƒ8>¸ÎñÁ�²€ û®•y×R8(ÄÃBd÷¨•yÔR¼k]ZK]Ë>Éæ/›ÑÚä¬sÌÌS‘}t;áï¢_J½ÌÛüóæÇŒÒ#\ûOt*ó¦u„€'ZQ…PæCCåÈ[xy‹^®`2f®T
+¤ü/·ˆ¶ÈÂWHhæÛÓ¤î&
ï4wà_²„óŒ£&uï¨©qå÷¡¯®´p$	Zæ&+DÕ·PõÙ…à…+™…¦–£Ž—n¥s•Y.­3]1â•V3¤…4|-8ƒ¿HÔü¢™ý’�OL5¿Õr#;î1f°ïÄ­”q«•½ÜÊ\naê-±!{½”öørJ‰#,ß:sz?ayzŸ`XÝûøÁWºÒŸ�ž (†þièÃ‘(®*.�#÷Ó%ul­»|)ìšN!ØU.„ºÀ0KmHÐ¯äÏg³+ –>Ÿ¸}‚¢43kzƒ�,jzUL^†€¼*bö2Ï±óï3;} *®ût‡Uk‡Ë<uHŽtp¶0àóR-*Ä!+¥ùvîe3ÿ+³ô2fâr[�Å�^
^3ûˆ{èÇVÐÔ„$–6ò/ÌìåŽ-¥£†}‘Ø
Ûî@üÃ~û°ûº Œ×¶T*UI~‹�>Ò÷Å•=\'r´Ù·,ÚJdv“7§¾È¦ üÁÝc�Š°;‰;h_gO\98ÈÒ�l0¿ÇâÖàù‹5yØ¢®¢µ=òoCÀIÚÊ�3;"Ì„ÐÖ?³�R°ÒJþ$ZÎ¤�û÷ð�6âñÔÑl°âÊ;tÈ¿KaX+çÔEÏFê"Ñs"áD=F"aWˆ²ý@iŸÓ‹
+;P7®—˜�Eˆ
§:á4Hkd­‘¸{Ò±�
+ZŒp‹_·ú¹[!îV˜‘�€(5ÝBà—HAŸÙ…Y%’u+HÝ
+Šª¡Ó†^
mâœh$±•:�DÎ	‡wÒc8âæÙh®ÅmnV?A»È‹02´(_å=u(‰©o€pv€&É</’*4íÿyíà]’Z^J¬¯tŽò}6¢e?µd2È)ó©¥ò=õ"YÃs)(¥¿ett8{³M£w³­ÖÊ™�õ}8­a'wRÊi¿`æe…Ñ�¤ã'w><'"®­”?aoyr%½Hs9A«Øýìo
âqÄÊNõeš2U+±dÜ£ü*+ÿ�‘?bMyat¡�r{h²í18ŒAÉ±]%÷âÿ‹¼ðÂ×`íÚË1EÔ.¬Àbé…›C¬¾ç©és¿ÆÎò_`ù½ç‘ú­�¯¬dndõ/Éçi‘}‘ÀxÑÈµ¤q¨ãî
7XM=ìší(QðQ+·�~öYÙ}Áu[~Ý°"sÜ"ë(ï:¯È}ÁUZ~–9´ÈM¶,2‹¶ƒY¦[ä�I_p!–ß‡V,YDl�fj°‡Ýììµè7Œ²¬ŠˆâŒä×Ýˆ£þ0£É³„ßq"“‡p¤h¡ç©§5·}š@í5jNyÄR½?©ÞÌž˜Ïíµ5¹ÔpùX´÷iA§½o²jŸ6–Û¯p°NÑþ£'iïÿí¯²ƒ4YþÓç�ßeB&…Ï6ª«™ê¢æ›¨Eh‡Œ8ID¹Ï:E¬Ø¤?àh8Û˜ª³¡VxŸ6,Hó%6ÖH…k¯Çìç`¯ñ«±
I¾§k.-p/îí‡ðåñåúr�÷e!¾,_ŽÓ—ãÞ—_àËÛ .œÛo4•öìK‰o
+ƒ‚»›n¿„îÏÅÆZq•#D¯T5µè	.å½;™¾”ú6Šö<^æ=ù|Z©®æ?ç´§²¯+¡Që.[
HÁÐ8:‚¬©}]KGD#ù–?F¨	q'î;9ÿ–ÙTÏþ¯xyj{ËT'sÐHž¿.`°€½mSŠËõ¶ëáU¤v©#¯…�Îe¬H~Å_MÓIkPkÂßªù¨PŸtCé2hm„ôÉ^	­Zý	üÑ?çáÉô—·©w°KÓÍÃOêÇ¦yœ12K;!FvZ#;-nm§5FŽŒˆ‘#'ÅÈ?U1òWþjš<·µþN—Ñ¶ÒwÃ2¼õ¿]kÔuŒ¤7Ôß¨øÑõk^!_Ás°>}a¦/:kSK#òÏJÌ=+0÷¬sÿ[v¹lT1÷]ö
+õ¥GU®wj ©þ÷øã9ùÍ³¹íÅ”p'bÇ`.r™üü™ÊNé7U‘>ÇASýOü¯ùsVàxXM˜ìûFXý?0.°'IfªÌ7\M“µoÝ¡ÞÃ˜Þ¨®ÑÖigv;mêŠ"0¿ƒÖés”uv ÊY:S¶N‰Ã;ü6Ô2ë �yÄº£gÿëm¨Ó�‚þ
üÄ
++Îm²â6ÖP0°Oá“Î¿Q	)ÖrŠ·NÈ¯4W²Ý�æJ)èÃKÄºQá²\à„‡ÔÓÄú†Dâ²i=ãP¥Äj÷¨»³ñôéºÊt¶é¢ÃM—€~#_«|:Q|ä™Öï”—?6NY¬«]Ë%q¹ÛÕh ²›¸/“xwpáåãI-°n‹Ý“ó‘âNÜÌÒ(ê­˜è¿™09M£Ó¶g,•Oó×zÖv’5b=Ñä¾JÒ¼�“ŽƒcNÛû‡Pãb„Ùìƒ”þ ©Š[ g9Cö˜å´=ÆYŸ³uF‡Œâ°êpƒ?ºá­=§�Aÿ ÙðM¤¸S¼â,§xåY„9*&½í:˜�°£%WƒTÜ×þÜwÛIÃ„]ªN�XO‘HŒgü[¼¹™¦µRë*b4»‰ÓM@‚pgÛ½T(íÊï…¾×VJ à´õs:ìÅ¡	?Ûšó›¬ÉPdŠ–ó¬wªe:pP?z DU.Þ¬ñÅ
+C/P'Û_–:ô¶«C_üt<¡ü=Š3r.÷öÌOÜ;8ˆÈ'Ïó-hÓ·9Ív—5
+¤�±>ÇÛ¯"Z+Íìo¯Hp/Þ|÷
6Ã8‚I¬‘&¬øæÈŸrÛkga$_àyCÛÊ$2/˜åoaî¤³Ô/ï	;/Sé<�‹:ƒbf- yPžåoxæDù-Î:6Ÿ]d»%�öÍ)û»P¶7X¶yÜ�¶%Ç
JâËÞ�ãÎPŸ¨„üä¤ðRÎßa"EY7LÎ´†àiLš/ªâºVÇ�%ßõAþ>“•Î/01ýÕÌ(„#a,ƒ¸<è/³É"»Â÷WPþÛm§ív[E]Lr:{u%8Ò
<®É“3U@ye®à<î'tþ×oBÖÆ¡?b�÷.Z;BÃÊµàdÿ’8Ù—a«ÂÒv'~—1™ �5K¶…ñEÅŽ˜qcGhA}]íŸÝw„‰5H÷âÙ0'‰ç4BTC³av#e¯«.@�?iíˆq¡Šù}®=_úé*[…Xq¶Ö3?¹
+^OíâÍ¿›œònRA£…:y‡ÁÁfÛ…Pi¶�èš”•/Ô�(ÔÑ2 žJÐ+)Ô]7D³mT–}Ã@8Òg¢ÔèK£Å9Ô)öø¶¤Ø[;8s2oáÜ&+7×vZ;ŒÒ\»`DŒ%H°Ke#S™ï]mÎµñ8²’ØLW˜îvræ,ÍÙ.“r2]¦F7Q­T]UUNšªê2 ª0wBþ:«{:nfkà…–~¾WÔH)‰Y>„Ñè·´ß=¡knÞBˆ?{½%QÖo¸üµ„¹ù^îþÏØø„^÷³·•Ÿ9™ë-"8Ît/-v\­“¹×ØM#R…‰‘ý;·dß�`ÑwÁŸ–´6÷51#y5¹Ópß“ç×¼æÿ­øÖØü5Væå”V›¼wl¾S$W++¾’J©qG~éËœyq¬ê¾òÕY�¯_dÉWq¯–|î‹­äbLb3ñÅSKna°´ÇdbÞcú‰y�YCÌ{ÌZbÞc2~ßüÌÄ¼Wó›DÌ¯NéU#÷¦)è÷Mê”½JÀ¯VùÉLìM!ÛkRÃN¦—ˆöU:rT�“7Y%×�i:~ß‘¦]ò	.¬“øþmÁŒÛiû6§ÂÀËÒRû'´u„œ¶�*%H8h=ÁÍœE´â¢�eÈ.œ2t;+Â?DoO§Ón7Ûfª
+aús]¨†rôÿî�Ø¡W‘R¡”šy5�ÕÌ+ÐPÁ-ˆ¿Š=8÷˜NY?œÛm�öí‹Ù-6±sD{30ý£•òøY}Ù›iÍ¸ÙVÏ	h‰·i)D4�'ÇJ)™wY×‡h$¥4îôL1]ÓÌÙ´ÐÌv¢½&"=Á&@ÄVc	®©Q¾Vø.O'gøTr†O#Ç›B†œBNuú8˜2ÛOËü¯¥äSfW
+3Éi¢åÉ¡¥²Š5ë¢X0‰ÛtÀfbÝtˆ69ŸGŠèˆ Q/‘*,¶l(²_Ç›ù–ÆÝÏrôgo·({Ù³‰ô‡Lµ¥LÕ÷dn·ôìÃi;`€¿t]Xç?´f$ÿÎÓó[‹‡ÇNÙÒ¨RÍp(ÿ¡E,bûÎÑ~\¨µ¿„ÇƒVû&ìƒuVÿ�úô!®ðv²ê†šç½l‡i8G%…‡�d¼*ðŽ3Ïï<¿¯Öò
Ù¦œTò•`É—t6é—ÁÒ/™pŸ…û_G^žLæÚÊÕŠ¼`Â�ŠñÁáï”ö¹¼Ê·ãßÅý§tDÝÄÞÍ¤Cät::‹¾”‹Ï§Àé:4DxÆ•‰(ÎÑ‰íDðz08¢Î×\•NNºI»ìp<n¼Å'Š`GÝÙ1'y»Ñ˜é×´™9SÄÏö›mý¦‚WFÏ}&]å·KêÙÆŸr<*R�†LúD$Í�¼KÛ8 NƒP™[a´9‹¦eýàÌKiM"E~B‰³„ÐWŠ?ûé>„ò0	M”
+[ëökÒªÉ@ŒNg|¢;Dcê�HHíf?³Q>qÐêEmÁÖŽ:œ‚ ï‹Ñnómö#¤B¬»½_³Ïà}ç53¡±.D;¡/m¯™:�¼R˜à¨e,YxÝ†ãÆ<·ŽéˆÓ Ï[0œÌ=[áç-zÊðuò¼`n�éÄÁ°•zGVà(H0t¶×tÀñçDÂ“( ¼0QF±ø†„&˜!µBè‰…;„…»äÈA\h!H“Ò-9ðG@-keñ^¦¥™­˜wÛz$n<¯
+Ú	‹ëÍˆ;¨gÍ¨£>š!qN�²™-©éýòYŽ›#ltßqôÇbBrÂÀ|+öÃ�0�Yw}‰þ`rý°”šÓ'À”dŒò‹PÄqÉsç< 7øfá™Ïñ™gÛTÜø[åUAU¼€Ãè™?£ßÁ�‰»lõ¸qà&»G�šDEÙÃ·_©6Á¥±ÜÂX ³XÏüÉBñÆ‘Z7"MQÞtï òïòP)+Á¹s//?ÂvØÏzªPßÁšaŠ5c<%«}|º¡âm±B8	›µµSƒP×žCkíë<z§¢|[ózJ¤»ïÏ§�AQÞ²ãa#¹!ÂÑ•ƒRJÆa¾D”/<kê¼Íð%Æiñ«-ˆZVƒùÇjA±•éŒ+ÓìL›¯*is™i«óE l”úoÔTv½¸q^oªÓÐ(!Ì-‡Íê¢H~ÿ‰:¾ˆk5é6	—}ó“ªà¥<ð*D5ßc	p§Ö5ÕOà›¸è?Vÿ:2µ®øëÆdÝ�Ä€{\¹íF˜Éæ‹Øæ‹‚Ù—!vÓ3/ªý!�í#Èöüì@x…¸[_¤æ¥ªªN©´>5¼Šì6‹c’](ûÇ¡Ã^¶¦\ ¨3Û¬€Ø—9zmÍÍxÙ5s·[Áœh_¥¬„ÆÑ^>bfŸ5åmšTïi{ÖÔºY›g¤i¥VîmS ¿ô¶™{…_±rÛ-™È"Œo‡Mßfºlu4ùŒG­äŒïí– ‹ü+Ö4PýÆ%Ôót›Zf¨‡5�˜v¢mÄ½£–OÒ¿í–„ç¯9lv�Ea!íNÊ—®´ó;Íì¿ Jžï&‘Œ!ÆPJ™ò/áaò§Pöv´kÐý…2·›AEûtU‘´â¡!¤*UšIbÙÞÂo™-¦Z;’-ÃFR¶“×`÷±¯Z™W-!þ»iß$‘ôë~â8á…OFŒDã›¬Þ¼?¸$ž±;¥D#Ê)EÓ”=)%U¶¥”pDy3¥„ÎWö¦CSÞJ)º‹íK)±ó•ý)E½@y;¥5å�”Ð”ßÐ^QÞM)u*ûìxÄhè
ð"š$âž‡8|ø«P!Hc¦r¤kþFL”kKH,,a�ë0ãÑþ´ZD3–ÃÀ2›ºx»xï-¾åˆ�g  ög*ê
™m8UÅæ0xiâSÞÖó¼pÛž˜2ƒ•ˆéy/='íïñ¼ñ¼Ÿ`^¸¡’¾ƒ'™a1ÎA1Î#K¿æ¶©ºm²üW;¹ð—8Oûò"­KÅ¼«]¸1ðôè÷Rá¢CyŸˆÀí„™v4¦� ÓŽ*iGÙo‡ˆ
1˜û‰$š:/�Bbl˜!Äµ‰‚+ ³ºïQ>š§ež¤|‘_q/ò;/ Æ…�
+·[�NC^tN(˜XAm(âÅÙjiþÐ+ÍžWðû
+fQ&ÐvúºûìÛ¶ª»ŒïØ!;n„{'±S§„K.Üj²‡'£¥#’»‹ŽFwYî½~T<ð²¾ÕìžÖQ‡[÷(ž«®%|ï[R]Â³‚`à»ÍªK(eZG¬¥#žÛKÃ¼×°7 ’üÄ�ú½Ãjí0‹;¬õBà´ï°"VÄlæìÍÈÞªqv¡9/žö•yâDe+Æ+Ò#ƒÆ„¿TZ…Þ×adTˆ¨Û›D”°Lúuå—B]×°W9~#TÛ“ÄbZìÈ�¸õ”
+Õ>é|¿ä~¯pv%AêðÚX.”O¼6¨ŽyK"Î"µGê€‹ú—â¶ú�¾¶PJhù
k÷mÅÅvŸR@3â#rì-J
‚Ï}oÕ¼T?2/¢Ìpbæt˜ð0Þ?¶`ž�‘V`PŽ”mnŠjÿ­Hé#S4û›"¥ì¦€Q¤,ž St\°#e‰›„ô&e©SS(bŽùÅà`hý§ƒï:ø7Ç=>øåÁÁ¿¤ÔBn<ý¨µ¾Î'.Â£Â!¤ÒQ§¬I:Ý—V¨ë¦S…ÿ#×wCEV6[W`¨D�i‰NTSàým¨/3Cøµk_-U·fFZ—pg†ÇöåÑj€3´U�‚Á¾¹iùc·%4-·cý€Y.=`æÖš•ÒZ3·ÀvJìª"ëoøâí
+]‡Ç‡¾ˆ‰¸
+#C¦ôÀµºüç³ž_`‹‘lÀ¥<"æ(|K$è¿O¯tAÙU{)¡Ù3nè÷yµàúh¯1Ã?©ÚåÉ]î(tC4ˆrbÌoÓÇ’	ÒIÓnLÐÖ$œ}ÜB¾ÌüZ3ó¸8�>q=ÕbÊ¾nº
Ühv¹‚H¬ÍÁä�XtF'Yy6ès/½€cªÏ•®8žHõà¬˜½Ú*e{W[�fêØZ“·ãƒ8®5õÌçc_3®¿
+¡$Íþì£·`ayíµkŒ¼öêˆÂ8%@ú$/¿"|rÅÝÖåÕWÄõ?`‡t#¹40D‘N.ÁÍè"-ÈLMÈS¨H
ÖŸ¯VÃû†h2Tõ…ZÈˆZýÝÓ.
+ø¸¿sÑ_¢"!õÅf/í|'©Ò.wžPct)Ý×rÐeªäi-TS“à�qôOÌsµ§Ø.³C!Ç‡¥1ò%µ´` à‰”Žt‚�Lqˆ5>bÖ0jU8«
+6\ˆÇÄªÞ9#ˆssÆ`‹ÙøC62,¸»úïW¨sUð'!âDBQåVM;@¼IDù�µ?b®„xÝPÞ³ëh�§úô‰dÍùU&«ÄÉÌÁ½Ë"­1ó—YÙmºŸ²Ä”
º,F!»ÉŸ›3›ÌÀyÄ^¦Xiî ASÞ·c!#y‹`”õIUÒš…qªa”íï¨J´ª.I#T¡"!e:‰ÈÁ'û/˜×Ó™¿Ž·ä+¹Â*©íˆˆ2.>3)OÕ2•	 ôU¦GdS0Ìò
¯7l5�"¾óŠj™Š1oÁ,«¡Ò`v-ÓB•¢Z@O™µ.ãdîý,÷t¹÷ VŠ¼�ïË>t»Dô\ÐÔb3³Ø‰¦þøo~ˆE£’r„Ê#�¡SáøSW÷‹M&¡$«$ê°a7ŒÉ JsòLt�ž^_‹Ôq–%~ÌkÆ‹1Zß.Ò†Ðá�€¯4ó³ÅxJ5ä¦ádø4wž?k™§iWSç|•µJ3%á³ß‡v]Èh¸2\¥ÇYb¥3x¥ó_5!-"îš¢œV7ìdGä0MUì<._áRÕ¨.AA1¸:õo™wb*ÎCÉVÆ�ÇÝáð.NÐå  M÷ÒŠ—ª1ešÐùJ)V“{v×™¨pÔš«‹”ýÏÊÐuàk.hêÐ%Ái9ÉJô† …ñÏ'}Vzù†;e4oÊ½)£�8e´aS†+KÜt|Ð~€P~µ‡r°..ošÖŽ™}„�ÜS#É0¤l¸‹uæx„"r„pKÖÔ0e(¤µøP›˜µ#|GiLT40r‡#Ÿ³ÃXÝ¼›G	·KL¼…éU�Õj‚è÷Ô:>¯ó•#Žö£>¡U`•	µqßa~Š;ØÚ‰[žÍ¹y°½ÛÆ©Uýî¡´È#á>1áÓ-ñ�§^}ÿúÿâéÑGS³µ›´›5œ·?Î]ÂS�7sZ,öqJ‰^¨K)uÃu^ª"†<Œï§ÅËÀFæ�0D¡-]kzÞqï¡³ï=Vî#£©ôô“²¾Ô”ÞI•&Ä{Ëñ·2­ô¹ GtÊŒ ³}Ü‰Ñ÷2%•+í¿n,WŠ�7¶?ÞX)Óplea˜yè³Vù_³á#}¡*G•¿n¤ª©Ê_û«<Ìën{ï$Év^ØO•ÊQ!ª”ê)ôK�•ÄOB¢ã¡,ªÆ�LÃ÷µJu«#v$7®gÙËèŽ 4^ÑæZq‹Q?��YÚwò;�rö—ôœRz*8å—Aèuí*_®”ú–R—ýRj_Ò-ýŸù4¥¡•�' •üèÙ�£‰YSWæ#¾õ8�pÔ®ú¢ý˜¥ó_ï�Ëê~¾^`Koœ¡q¯¤Pø¤—ñÜR6•�ÁA(^ceô$œž¸¾/Oþ©éÓ',«ùºÐäÛ*?qöY.CPPêvà¹kœ#�ÖÓúéŒV¦#ZóäxAâ�fMÂÛhh1Òùo�ÿV·™YX±Îb�óq_Méÿµùo‚ÿ&‘§�1~Ñ(NÍùïiâÃéø‰]t†ØÁÆð§±üwÿ?lî\§aÁð»R²•é�«H¯˜™¼ç}QJßÄò Òg* ‡›ø||í§‚„xµãcqn{´ÌØÍn+¹¢ìvÁIZóÚ¶›·¤±N]öyË«¶½ci¬Ã†%�—2÷nÜÕ?8(Ë¬­¯»#÷'ìfŒÃ›ýaK¾†3‡-Íþw¾ÛÄMÈ¿ÐÇkL÷#®á¯Ë\c²ŸÂRJV`âÃ§†–t3såÝ(Õœ4õšæi[Åº¬^>>IfSê°žÔ�úz2Õb}ÓnS.äVw¦ÛT]ë-‘2ÏoÃåKbK®¨ïX÷�¸de'¼Eýæ0Å½E�ŸêÕ»­
V)#)è¨^ŽÍ™ŠÜ»ë}øÜ’êæC0‘€SÎŒœØÛê»(#Í�©
4TßäMRš«E…à]ækèâDÑUáwsF&�‚³X¢xûGÒ€A¢nfJÐF·ò]÷h£
ö?‘äÉ“gPŽzžA9…fÿ(˜Y¾aÒGŸIžÈŒC@R87½h”Í·ö®V>RÄÜ‰K6ï›ÃØ¼ßbxs<«¥ÍÜVSŒ4`èv‘¿º¹€"†>ê®�Uª8M²§a6ò÷F¼ñÑ¬{š\Ót(¬E³¯™WptB�£^j}==©„h]U|ôÞxÝ‰i½mT5«ä¢ŸƒÞ½¹–;`¶”˜'·VŒW£¯Ó)w3å>Á ~§98õtö´,ï¿v–±›P%;ãØ˜™‡•Å]‚Q¨º
+»#æí"˜ŽœU,ø<fXì¹M«ñœ•L£¥Ö®ÅbsªÎ}ìRrÁ­Y1±Àbá¥ß147èg¼5‹'Ð8¦4�c¡Ñ"—óš
+°®g{8!Ócò2Ë3T·áR¯fÕÖºjJ¶`ùiÁÇzÿ»•®%béšååãƒŒ!±
çã~ÄÊY¶Ëë2'²·j17šŒûë¤«ê¦ØÓ}n¾«ïòîöx´ãØÝ~I]�/vO‡LŸ\\w~yt^tA<ùÇu]±»bO�îL÷ÄWÅ×ÆŸ}IzüÌ´2*®\š†ÅÙei¥ÁVf¥•ÓãÊåietD™�SU�ó•+ÒÊC¹2­4F”9iÅŠ(W¥•›Gmen‚V!Ÿ½:­¶Rá{ˆkÒ`ú¯M+±ˆr]Z9#¦\ŸVˆ oH+§Ep$Ð#Ê¼´Œ(7¦•qå¦´bG”ùie|DY�VÆF”…inN+¦­ü*­„"Êq6çü¡ðPScÛí™t³±äÿ¶+Žk	wÅ‡õ¤ß0"û©UaSñ`!Xµ•5~m�êÿ+®_Ú]ž5¬ªV(&­8« çN¨t!&™¨¢ß37¯Ú­WºÚŸ+Ü™€SŠŸ‰Š…BÓw|³V}(èpƒîšA…
+Ì¢¯ÄU5Û”Û_JÁ£µ/É¡$(-UF-¤â&»Œ/KÄaä’xã@É¨þ/=Rf…Å£«UútªxóeËažÙ6T›j”ºPË¿iŠÔ=ÐuSáªó³VÿªfhõPÑ‚¡ÕËTªþÒ™¾Î~ú€3­Cì.ˆ*uw·€‘XyôÞÁÁ
+±ñ—%\ó«×á/q–-þ¥Úf%tqÀd¦¹µ‰’ôÙ}„wÏT²)’QNã¼üDßg{ß©ö”Êßw¸OðÜ™¨Êh¯LH3:ÍIT­C®J@÷ïJ]øñ¢òPûòý´û°ÄÔx(&öéÓòO5/;ƒÃŸ%³M–IÐ1ìvó—ÒïœÉžæö[3»¦÷eoIS5™[Òj~‰æÄïå�ƒ¹øÊ<–iÒ›¨’6˜Ô�¦÷CANx6Y¢u§ÆCô)äe_¦ðôJí*„º¦÷çú­ìÚ	ùf¹mí­ÔoUÀúoŽ$%V¥d'þS©‰ýc?« ùü¥ºÓm.qAÒ)Àw³âq±ÿ1Àa÷íVŸ²dýPÏ2àÛõÚƒ†{æ³2ÿÇ&¥g>æ+Ø¹	\}Œ'ºÔcx½QÌ!‰ê¤lW3ù™0Ö<fL\Ý�Y”æpà¼ÀÜ­I«+öÚ¯š:É ÊöWŸæß>“ù®Žjdâ‚.CIéìØD5ü7ŸA Ÿ7ÙG–?A,ÊÂŽïi˜q.Ô–Š süìûæ7÷[Â
+¿µõôCmE*c^A‡6ÔÌÌ®§á[oª¥ÇLû¥Â®Î9¹‚dk|9ƒáp=¦ÈPâ¢@¡¯ùÇØc-/*sDd–™;îH•�%žé‘g¤êÆD	äi�_öyÈž7�_¬1àgùžîúÛæ�ìf„HxC âŒr°pL×%‚‘¸±š‡ðXŒYáü<;1GLôÇÇ‰ –­!x¸ÈI"Wnž�%Ì}Si#¬Ì³Ù3eG8{W 9sW@¥â)
Qéé‹pyE“DGôLJin÷,öÏCÏ®µáÑ"x	™ª]¹óo+gÈ.´œ¶…ßOA>ëžNÇþWZ
Ø:(Ïª‚x¢xãB<(aªJÝ~Á„®3Ä»m/˜ZûÜ	úÎ³cM¢y6‡’�+.Ö¼~"Þè<»‰°Ehjšà8�«%±8ÏKÀ‹Æru7qìõì£VœDä¹DJ+‹¿ŽóÏ¾Ñ|øÎˆÞ6j3~f—»ÙU]n7�Qv›Ù'­Ì“ÖÐèOjëŸ}‹…'ÂàûVbŸ¦*7ú:vS"à­”à-e	iöQ¢â'ËÅ
ôï	ú·¾1ó¨	�çó}¥$Bôü¥á¥o‡Á•º�þ=Kÿ¶Ò¿ç¡ôOÃ¾nNè¢çh«Ìššž¶ÊÅ§F‹šæ5²DBQ~å«á–a5�e“)J£ªÒMEYÄ
+õÛ™Ö_N}a¹4úMýb©ˆd“Ýmå£å¶ÛÒjÛnK�AsñÖDL7F—õ!’ö)Éy³TLöÓóï›ÓpWÇ!•ÎX:¥¤þ­ê[P¿s!ÚVþR;{‘O Š"­¢Õ)…†JËd!bkšæãøÅªâóÃ"D÷W
q"�ÅUj •õó¶¥Ÿ•Ùn¥P;!€þžfW¡›Õ/
+zÑN�‘ÏVûÔ`bê	‘øï@:Í)Ÿª$‹¡ÛhNMÖÿá'?Åél‹º]}YÅéì7ÚQíS
§³­���×8�oOC; +­¨Q¥;
…VqbÞ†nKÄÂFÃzUß~–…^À
+­�q!ÝÒˆkêÜäŒ ÞÊ:r?V³Ë-¡’Ñ¶ÜR¹¡x)¥Cm;ÏÔ8Uˆ;{ZIq'¡¶Ý‘VX\J¿=É›½U��ì1‹ií˜¥f÷ŠÇ½n+
ÆÅ ¡
+h³!…ŠkîQ’AXjj¿ƒ•’áZ&I­ï�5gˆ1cjbÍš'ûˆ*jgN¨õ=|Ìg�M¹8ò¸CW7:_h£ðÕqwí15èêÌÔÒ PO
SÝÉÛð­DÀUÆmøÒñÁZ±?µLÖîÔ–i+4PÞ��³–lôÎ´ÙÒ¨Ì¤Ã~\’Ö1VK¹+
µ"BÝ%Âý)%t�rwZ‰jÊí	8qÙÅä×'¨ÏSC.2�`WX�¨°Ë¼Åœ9`×ó…,,3…N2wƒ�3ßÆ™lÀšÊÛ-–�ËH¤¢¯)Åš¢Jßf
_cÁmî)ª
´ö—vXåˆF¿¯à·©®·jBÜ–2‚@û
�Do—ÛL‘—Ûê4qÁCK´Vˆó+|°X„³W±<¥í*Ø™°ÎzMîÇ8Iä†FÁk–”â‹ ^¬Øä^SòžäFŸiÅ±ö¿ã…?ûpÞ¸ˆÖ‚t|ºÓœ8/ùH	ûuÄú±:Ükd•tÝ=cd(ÿ\B©�R”ûÌŠÁ4…bJþ]“S´•Ú+Úë¬Û½%p™~…Ž§ð1¾_"&'|¡r“è½Äê°†7‘n%…›¢ûøf©+�ûœùº{*Š3VXL±	Úù»Øâ_Û¦%1û¸å˜àß=Ó)¾s&´90®ý>>lÖ||Ø”—�¬ä
R?záJkU!ýšÃÝ‚^’œ*Ö‰Dß©({µUvko»Ú
+ÀÅ&­Ÿeie;L½P¯ààTÐ+®emÅµ«-û­jí¸¯�{Ööž©‚=€o‡/…&Ð‘Xh¥fð"O38(5ƒçˆ”‡ÜÎ!e…›põ‰—L�)º«O¼ØM	ºúÄ½cdJÈÕ'.»)aWŸø‰”L‰xúÄQ^&¢‘à˜ßŒþÉñAúÿ‡üÿÏ|ÿ_|ð÷ù¾¯›8ý¸ÑÅîYáx—0úðÐÈÿ�DîbúéÏ´�
+B!‹0Èw@ë–¯NÀ�’>Š`ú³„t ×§WJ}:ÕŸ;Ò]ƒ^½`ÐåƒÎ	äƒ.U?ïH„hÇw]†”VÓ!K.–YOñSØ´4uþÈc(¥NdŠ!%Î)ÿ5…ðÙlOm4ÿ£ÉÔO²?âý¡»Äf\\A¯­cR§®e]™ÌµØÞéÛ“£YtÁ^!¯èI^XëK{äuäÿ<¡ÀÏ,:	@!U¬p=òß§K˜–C~Ò‹À£œðÔh¨ñ–ÝgÊ$™µmŸ©Í`�œ(ÛqÕ±ÿ¤NñaÁÛpˆEƒïì™`.-_†pÒßO³x(ª�N“§Ûwó&(UšDó|£yZ(
Õ¹ÛV�Ø¶b°oƒ2<~‡”y Ý¾((s³Ï6EÆâ"VhÃc;+Qbç«kÏ�md†ÒkX/‡	î´Q™ÁAß`Û_‰úÑðÂØ†eZ-1™‰Íõ@RUT˜‘ü,ó+Íš ËÅž´¼ÒgÖÉ0Ê(|kd
+ü™RmÔRcñóP£ú;P£¸àc_álÖgÂbH‚	ë×ôGZÁ.ž½Ùæ¬7ÛÃGARÑ¨Ðàà	)ý¶^�¯ˆ~Ú›ç»Ôjñêçn,VÝ4 â„lÌÁâ¡Jå‘P(çS&!å"¡c÷wá¾5ä�÷[ð|öÊÞiÕNaH\Ûî´'�ÆÓB~ú�9¦áM$lt«‰¿‹ÝÎµœþÛNc�­j¥‹•wj°v’Ë/þÄ'G/‘— ì÷oh\ß‚_iâAa_µu4;¾ ,Mù`©ýŸÒ—Ã#fµ©¸pxë5«„GÌÖ�â#æzâ
+zû#&
+Ùc\ãc®ßp5QŠhÏþDœ«þ�%¾ÿ·êÿ“#õãÐþ?ñ_Ñÿ'‡öcmÿŸøý—éDÈ
êa‚øÄíõŒ£ß÷&Èº×�Uœ33)W-Í¶aq�
+Yù¦FÖ�¢·Ì;–/FÕK‡XÆžßÞ1Ü†f¯
+øI·<¶á*S_/ uÍœGžuíCî=r»ÍæÒnSL>ýÌÛm£¬I—5Iuq¨v‹J{VÍáâs-SdåÁ‘Àü¼k„}¹æÇXelÃªâ]Þµ&„×yÓSî­Þß2ü/Zm/ZŠà‘¦²³9öÜê�i
+¾iª-6Âö¥à’�`µó’d§”ö'G‹½ÑÆÞxÊ
ÈUòæØ#îfú]6#ö2ÀVçë¼§£ÞÓ,s6)pŽÃ:ì¥ó
+îlª!øz¢Ì±{S
+¢Ð{±øÛ
øvë×eB;®ú1ËØ†c¿·ô˜Ô	÷1=‹Ó×j
ó¥&R-u"ö©4"û´d8û4ŒÁú¯à ¾688äÒ>¼J^®¿)´7ôvW4ƒ‘ç£«nÜa?io¶ñO×'¶�^š^‘ØŸx7�´ÍõÕ©Ç“½,­QeyZ‰kÊƒ|KóPZ±Å3ª¬H+±¡i­Eä1yeZQëå¥âÃiÅŠáŠ*�¤a,ýhZ©c]íà…Êª´ù‘rg"Ž«YÏ8[BÆh@tm	!qr‰¢O†’/ò¸ND!#KþK­¸LÄª$¿¢ë¨É¡ãÎÁq*K'ùüÁ†|ÙG»Ù[!.‚Ç§ÀªÃ2h’Ø�zbppƒ&ý¿Žú±ö.’ÎÔ„/¥¦ÎsªþÀ÷ìsî :ñmÖk†G¥ü9³)KRÁÊ7JÉí7ÊùæÙ¥ýü~‰Ã,‹¸<ÕH<!Í
+EBˆ÷·ßÈ<VÜh=û
ì’ÿp=RñõN‚Yð¿Û5oÁã˜ó%ÓJ•Ë€ÏŽ™½DÍæž+¯N¹DUQ©c&¿Ì!ŒvÀvwc w?­“÷›§ˆPtw"2’ë®�K%[ü'Ia£2Ô=‚g¿!²ƒÌ9´0|&ôñ\FL¢ð0A³ê½�]&º°½õÄZÚÞƒ]ìÒœîgø-Ð%ùc]xØÐ¬§¯¯Xâ�¾â·êÆ]bé3ß„ú|O@v\+™s×Ï…v¾bMì�Lì¶&®ŽQÑ¿Óª®té³‚íUØ(U€°cdv|N1<Ô‚°Ê;N•ÉÚvõ#õ/;µÃÚ1¾+ŒÇX† &ñ½<­…çŒÕ¬WEK…®)÷$"a#ùkÝgëw!h e˜Ê;u(ÂÔ0\šÀ.Mªª>>/
+ç	â`?
+Ì”‡xiôøÈ¨ ^*%™˜‚L|Ián�I(˜xH¸Q�dbúÉ$Ü-É$(ü‹,sc%q@ˆ	.Ï‡«Æ€b÷•jçs„4RÜZIƒæøh�š®¡ÁÈÉhðOh	yR"
+
+ˆøˆ�ap‰�`Ø12#ážÐvì¤Tè‡�½¶hýÚÚA¦½�ƒ�£<E®¡Í(
+ZG°1X’bºÔ/EF|Ô”{}âÞûX‰'‰üäçuÓÏSjÅµifÎùyqZd‚ßãÖ“Î{6‘:ÕÀ ªç©g�÷]–"Dëuà|°Êý‰P$n	‰UÕ›¦YÂ#GSçO:ÂùÞ€ëíé}7P”,z¤*§øÞ™óÙæêWvæW¶’ë´‘Tê´³ïYNÛ{°MÈ0*Ò’\¯?ÂÕPIÔZ¾Óvù€Ø¹÷pw»"œü>;Îv·ž²5›I~%•ô‡‹³55û¸YA‘¶ÇMMº@Ä	­G¸üÃ—ül»GD~£�²—5Rä])àhê™ÇÌÔ:Ç”Ø@óeƒ%_Aé&²"ÝD6‚®ŸÈ‚îs	ù±ë²¿\ÐÅµu™µ‡Ú_]®ˆ[ë²tYÐKZ¹ƒV¥tÐ²F
Ý°ìºè�ˆ¹Šº?…-Å+5é_õðnÏû¹9.©(ÃaqÁ *}€ÕJ�×#õH£Ù_’‡N;ñÏÔöãfÙ‡yÝÍ!È—5Ïµç�<e9ôœ]d–3‹X·¬'Å�ç˜Fã’D
+Îí'D5Ãá¢(Öïé‰•…šXöºñe¡$ÖOðtÜ^°ðø<îGoÐâ¤Ým‡Ç©ù«Ç.kM4V¿-¤o«ßÀæ·XîÍ;�¤;|/Ð ýuè§ùŸ7�™òSµó§4�{Û_ŽtÑLûÕ§‰G›·Ï,èÍíï�é]Ÿû¦�ç‡t®=ƒÝŠø¦¡bnµ/eîKŒ§ÍØjÏgN‹ìlÁ)zˆ¯5JÔ×1êéÈST™ïkôK¢Šæ!UD¼*fÔVàƒXŒêLËÉÌdo¡‹!=nôhUéÖHËqª¿Ç‘C™=E0Ælg ÓÀòÓ<µÒ”nÁ”®¥��>*‚>r/XD"\ ô‚•ß¬å¿Z\0!¿ÔlN)Í™Uã‚²»t\¾¾8ó¬ü~³©Ž¤ñOŒ¬uÆ„1J¸×£1+ËàÏ¥X/æ-6¸á&$ÃZÔc•K=ÐŸ\Â
+ÀÑ;ÉUæ©q�Z�275ju¾±š$O¤”¹4ëÆËTo`4Qßåz>ÒÀôXìdØªC°Ì0èÁuŸ‹Û´²”â•+µ+õ­‰úFcÖBc†	Ø³viC¥ž.HÕQõËO
+è_'–‘ QàXuà+€-KWŒÙÇÓnLŠ¶ÇÓS¸Û‘ü{—KsCGõÜA‚\ó”0x˜ZžÐ¤“ÌD
£{ž*És¼†�ûÜŸBÄŠ€¿[cG>Wc%¢´'}�eú�¶½g)beÏLÉ(”’}Â*gž°TZg{ËN~&à¿¬å™+Ïˆ ê«Ðÿ²wRµhîÛ)]c�øN±B®ã_‰L\ÝÐ¶b”:£ÖÌÌ3P;†‹ÕpiA?8vÎ xœ9fVfïéjöMZÌÞ¤Å,û‘éd>2QŸ_ƒ¯ÇJ†ãÿ6p´rK¿cûsû“†´ßDí»%²—X™K,ehÁGXó`ÏÁ˜�-ÇÄUƒo0dn�²&îØ°îiä	ßÀ‡àø�å~~x”š�Í¦V\ÍÚiNqgDtÓ�,{Ð˜Á—S|9ÒÛ�%$\n²‡Ý|¬øët¦r–Êþ�qõjÔ½~Ä�¼Œ7-+ñíhëà›à­˜R®ï‚)å´-ƒƒ®«N·4Ç¡.»õâèvp,,í)_ö2³Ìõ¶]fª™÷c*Vð*øˆd•Ì‚ÏÕö”ˆ£ŠMÀÞþ¯ÄÅN~Óh§­Ü(îpV«+pg”]MÌËjUÍ_ÓØöúX¥}�
+-‚rÞX!öû‰=Må• ”²›c]&ç«x-½UõÆ÷r©ŽäÈøþ¡`À{ë¿'ñMà¸èV¦
TæÁže‚áe6jáKq‰`}½Ð}>m{ÁµCýŒõžÇ°‡}ÚŠ‹O¤ÛBj–¸Îå±6[mß	-ØÕ	7ŽÐ5Dõ×0±†Y×/HÎu‘7´Nñ²–›X÷2\YÁÀ`-[¯ Ü[áåq¯2é˜˜Ò~í¥É%�ÒÖyÅBïþ	ïu^×{%.'l^n£Ä/í*ªù*®ùÉj14þ”÷zØ@¨„¦ª1Zë²ëÓycR~qdR>8)Ö¤üi“ò¡IùWÔIùÖIùüûûkÔqî¥Nà`^Ä{'å¶Ÿ1ñ½ÆÒö3(qs" æ7(ñˆ�©±tÄÎ=dËH9Ù½ßQr,|-Ýiæ®5SáÒµfîAÄ7}ÐÎ-¦|-È·”ù4Áj˜º�ðOÞë.¼>ã½nÂë³Þë!¼>ç½nÁëó	U3Lq2ÞJ§d÷ùÎ&­Œz}™œjyDÊ*f
3Ò;©×iß‚1­xß?AýÛøûêó'´Ä~bçÖ¸Þæ`¿Ï+ö2Šõs±f*ö2{ÙÎí§bûÝb¹çèí9»ZzÀ+ý
+J¿è5ú
+•~ÅÎ­¦ü«‡7ºÝ+v7Ší ‚7L,ÌôÎúw¹»©üÝC
+âN¾~â'ê”zUnŒ/Ñh&ŒÃ^²Ý0Ú÷Û)eUº3æ]Z…Ðê¸Üv7™Ä»Cïh‡�¿Çn¿Ç¦‡æöéBüÜ .ÛNö Ô#­ûíüª×ü%Î5vâ)y—�=bO9b+¥]6�oûízöY�ž8¤É&;»Ùî�²ÙVK›l¢÷ó&ñy‹�½¸wÊÅji‹Mõ¹·ðGª¢^Û©\ú‚ç-œd�åæùÈ¿Ën™ZÄwþYíõð0-Y?'(Wð«EEìvþ��ÐÓ¹CUðÙ”èBpH@pH4gr •~dspÍæ�&Q~@‚™½Ë¤t8íCxj*ãB³‰ð=‘Öí«‚ô/ëcM/‡ÄËñ>qÄÀ: $b{ÛeË)Ko^z‹[º:Ö»äXÓ(-ã±Þ%Æz—ë]<ÖQ«�iôr¢.j˜gÐúóÌlœr¥À£áû¿í#;J”õJ‚rÔoÒc“à$†?qü1j]†Ðßz¡ËÝ(Ü�Œåk×q'ñQŒ‹U\¥Â¸ª-DpS[ˆâšµP9XtaZ.b'fÂAIÿõü‘ð•íÌÆÎ,üùåÊÆÎ,óùen#�q†|™ƒ—14\ˆ{lvÕãÚH{ì¿t�FœÆ<ÀE£ c"SØåÀ†tÛ“i=Íî´Ù¢}§íÿZ|*�ŽNC€fYSâ>NR9B†Ç0w@k.`WÒãñg‚¸—žã^tšô$qz®…¤“õÓáò¨ÊFÎ¸h¼}¶&äŒ2€ctÞÏ¤‹wØ²Ï�ÕŽOrM*÷U"¢ˆ!†jêé3<ßòã9¸«hVè �ÇâÕ;©ãKÈø½ÞS‰s1~ã=™nÜsõòÈ¾mKÝñQ™·mèÓN�RjÖŽ+t¢ˆŠ²÷y}Ö	0HôãÚî³ÃT©}¶|TJ]&<ÙOƒ×y—�ééÒÜt:0u‚;wf›3„šG~×¸ìû¶¬Õhn{ß´=x¦*³ÃÌ,ûŽ�8Û¿cë°pÎn¬vf#:#„ã¨mø ƒBw÷µãzØ›Í›¦x¶³G‡U‰/™£v�[…×Ý·li��BB"ÿ–
)aí¨>êÀt«èb"š:Š%¨x4?±–Ì|qý#³—Oþø2Ãsß¥µ.qß§ƒ"BGÝH# ºÍ>É`gž´]ÐAç`NTÝBT�EåpM2¤®ÌÔ/geè	›Øä~sZQ/VžN+š­lá«ögÒJãÊ³i¥N««{.­Älåù´¢ÛÊÖ´bjÊi%n+½lÙï¤• ­”ÙÂ¾’VÆÊ6öÐ—VÎ0”þ´bkÊ@Z9-¦¼˜VFE”íi„
+ß‘VÆE•—ÒÀÙNöð2Û÷¿’VÆkÊ«i%z¶x-­Xš²+­ÔG”×ÓJ„`Ù�V&hÊiåôœò*o¸€ý¼¸CwxÛæxDÐ8d#r2-áøÌg·-â1ˆ	G•2QÌ!+å(íÒ›
ñÐ3ùKÌ}á¯ˆ|“'ó•€h2
+sü:ü‰5u~­#Ž‹{C€Ñ9Ñ*Qà³2½Ã‚q¢mOC¿Ì.˜ªÍ¾kâ…h¹€°oá¶wíšÍ®Aj]wãklMÓ³AGû.ªiƒô]°¥±7}Y¨å¯³ºò³ì.oöA/�§U5Gm‚l.Oˆe�óT´•ËmGŒ–ÛB‹­÷…–Ú‚ÙXt»bÿ_èÅ=CzáüwwÂ*èKÄ”¢þðÎ²$1cp�ãÃ"#÷!Rí’
+Xbw%´�a.R%i±Û…ß‚¾ á­øZ
¢Õ Z­ÈF/³ã…/»¨ÖkQ]-à}A¡>(A‡Ks›. ô‚·"êý„)É1x°CU°C.Ø¡Bí ~S!”Ìàoµéi\w„,¼ôBjÞŠ{h6!ˆ"
UwæÍ´¶!Rˆ¢£ž¦î‡ÔÕŠº‚ÕŠ‚§¬e+ÑèÛÖÄÃõ«*xZnXÄA…ÜšëFª™½oÄŠ+Î"4Ô]ˆµ­œ t³Ô\‡š©Ó1r§¿4¬Ó§¬1:êY"¿¥#Àö‡'‚
N½¦ÊÐsYaJ»³Ëæ“æGó�Næ©+�Bù…¨kw"D\çOqE$…fà:Â' §H•ž".=E
+árvS#³µS65°ÐF ½U@àÒ2}%ÅúúFBæ}nôW*ìN;Ù®^Û\°Ú\°ÂžX	DbÈiò°Ÿ�BHt¥iTæY¸D©a!HÕ‚7¤‡™�n'*êF€B3Ò• Þ“×æ*q[Þiê|utG´Ì0·v„+]@GÄ½µžkRÏ…ÜµB¶áyÐ¦Ô['Pf§g~ò'Äjl·�Z·Û..›S®ÇÎ,Ãab9¤#‚´½—Å`·Ú.Ëh	©¦pWäk!B¹³¯ŽÎöÚ8qÀ,%é´õÚÁ¶WG«ÜøŠAµ…(�Z~c|	f7Æ©å�q:>€K)D;"¸ØŸ´oŠ³ëñ‡©r¸`¬±(˜µçÙåÜFÚ"\!Q%ôˆaÎ`-ìÃ¤#TNþz·Ç.;m{l�	ëþp$Ü¾ê¬ü³‘âò1åæÌœ:­êEþB;-û"\íîÂ1.p¬ñƒÎ³qtWß›ÑRŸã›)CMÇ–oâ0–qì �3=éÞ!ÛóñpÈ¦î çæ»šR-‹W‰Ñ‰Ã.#à…Ÿi…¶~Ñ·Wžú¾w»tƒ÷Ò”ÞKSš—ušk¸ý|ìÌüÅ³‰¶ˆ1ÊLW‘ìVúÌV[Ý.„Å¦7ª—È6³r)Ÿ ˜Þ¶Ø<.öxnj‚»ãŸ¬Á*ˆmh_Bæ™˜ßïçH¤õn$RJ(#iY†ÝŸÐ	ÙïòüþmnÕ˜Õ2ô†ô9|5µYê÷‡‹È^ØÛ.ÇI–bÐL�GU:�s¹m‰7Oë½¡!Üßa6ÀÝËb"uJE˜ê:ùÊÜ�ûÁÉ¼•FÜº[“Ìþeë[“œV–E-^;è]~Æ®%?#Ê5eí0D^ItÃÜ$îóûpÌ.¨ñ�b°^ôAg9êˆU¨Ÿ÷Ä"§WŽj=PIžÉ™³´Ô	G‚Ö|jhwÃ	Úb<±”è`‹heËçie‹¿•-Ÿ¥•M¢•MŸ§•MþV6}†Vz¿÷._X¿Ã÷—&MÚÇl„ÃK)“¡¡ù›D˜Èëop­÷µÉIˆi5šÆå¦$»,ç§Y6,þ*9‹ÿôroeÊ«£C“á¤’ó;0eòQQÞå&Ãð±0@ïï%T]Ü(VÆÑëû‰Íï«y„KnD�ÎŸw„¾0³#L³»ív[ë,Ù&NÇÍi˜#gAç—;Lñâ€NÿŒ	“W¹Ìˆ7ÚãÅÕ’xuyD"´$¯í… �f³þÖ$4U¼O\‚8„Bh&Í{ÿI\ñx‚0{1åpðç\
‚ûE#þ3¡5÷x½íéFEÂ°ETÇ›ÆÓŒå¸‘ Éèímÿt<Çvü€ïgÇÒˆ¯J6ckžŒÇñVÜã¨fºÕô2ÝjÖdú�o^¡AÜû½Û,…V7÷Î`‹=®N5
+Z�Ý(còò³ËûQhŸWâ•ø¾[â�¯Ä¡Újn½66ùJlª-±C\^î°3ÛqÕÇo»ø�Èö£D„ˆd£<VDÚ=Š¥!`wèÅÃ¡nü
u‹û¿ï½a€ÏJÞÀ�*yoˆUÙ+oÝŽ¸�ß£ùÝvâLøy±eüëÒn›?fƒôI²
+õz7‡p�rÔkó¢^GÝ¬´È¨×½”@ûS¤ˆP¡.`p¦�Ð”h�D ü½.S¬£¹ncywm,èCŸ³ûo~îîïÝßçuŸ×ý}5ÝßWÓý}µÝß7´ûû†tÿMîþa÷{«Ýßçv_m÷�$"1Ã\[Ó}ü©;®·—}v<ÄkC>4±Ïë_­‰…^Ç±Ð©“…:‰‘Hë‹ïŒÍßeg]CùBÍåÞB]m¯	¸åæÝ^€ØB

n�ºmö—q;Z¦ZËXÖá¼;¡[†¹0è¦cPkŒ�ŠwDÎ‡Uú;»#N?®ZªZc�Á�Þâ=6±Hq1pÐäö‹Xã¶bÞÃã”<€{‚ìöùQ‰ÓùÝ2u“(²©¦Èòãlž!dlVÂÐÅ³‘Ë„XÉ-Ð¦ãã€NUôðDu4÷Ã�kÙm7œëN¶Ï]KYjgØ“|I^E‰C„@hR	õá’-–^º_‹€“ŽòYEœ8cöµ"]Lì$¸cÇðÒ4(„EâÆtWüï…�¬x5ã41$öWù¥¸@+€}6Åñ¼qÇe^N›\ó•*Ú`Ì‚1j�¹ü
pb…�e/ òOØ)ã+f
+»BÈšéòØ�¼Þž™ž²(PÉlf¥x³ÆŠ¯ThûšíƒJþÜìDûÜJÛ¹jñÓñD@˜((E�®F\¥·g~âÊÁAH=�¹2H¶<Á|‹á`»Ìn[A¸Œõ9ÄU»�ðÏSà¼#ëÞ4Ñ•!ø9qð>l¶û°I|ØäÿWò‰ˆa˜¿²0eÔ~„EÆäp’…>KHíÿš8ÚéÀ°8Úù;ñ§P‡³³Çô)Çt¥DOÏj”ÌGÐ›ÃC÷—EtèrJiMÕµ"8t±¡é;³ú;lzBm;ìâŽFY/µC+MûÂ€|î×Úû5ù¼@ƒ‡O™Gƒ3Ñ5‹a|^Z“õ%M4¡ªØq¥3ËmŽ§‹JJje�Ñv§¦t¡A5šõùm¢oÛ¼¾mã¾m}ÛvŠ¾m};dÓzÄœ÷m›¯oÛ|}ÛæëÛ6_ß¶pîàÜë�s/ƒs¯çÞS€s¯+¥¥'±Åç^8÷úÀ¹×Î½>p6	pV
+pVzà¬dpV
+pVžœ•®0—žÄ&œ•>pVúÀYég¥œ]œµœµ8kœµœµ§g­g—MOb—Gˆk}à¬õ�³ÖÎÚ*8öÃËÿM’&oŠÈéòÿ£IÒäM9]þg'I“7EätùŸ�$MÞ‘Óåv’4ySDN—Ï9Iþ_öÞ<®êJ=§êÔ¤šÎ9U°%YàrIQä@HºÓi’¼¾¹IÙq§QÒýàò’[JéTROùôíþŒÜÝ÷v÷'„�1ƒ±1ˆ)Éc#O Âd‚ÁŒª
+KÁ’`F3cÀ¸Þú×ÞçÔ)©léá½ï»|Xuö<ï½öÚký‹Ï”ÙB˜*W±¡IðoúvLcüNþfŠôˆFù
+Üü(RÑ]DŒŸC{óFÚ›Š8ì=Ô+èHýÇÌV·�£LoÊ00‚&œûî˜tôñbÑ"i¢•ªœn+œ}!–"2ÛŠZÁÚ(™bµ|{ƒÕ`ù§\Ïl¯#ŽHÑ­x2ª0QðmaB¦pý¬Üí±ÛÍ/²Ž€‹�7Æ¸Gô>–æ—èR:ñ`_ÌÏÏ¦(«>‹oâð÷��O_WA“@ÃTÈç½
+ù<
+#Ò»T¥»'ì�gzCÑØ��=¤¬kÖ„¿e‰x+ÂÕåƒ8_]z«<"	Òo^Llj‚zAàRPðks( §$rºxoá´ö«CÞàt°ˆ}‚«f´<h¼5”¦<É]Ùo‚ÌøæaqAµ?—£Ó—Ç¼¨bgµŠíymr}ÌÀ<‰ßÑŠUæe;ª12›har=`JSÆ¹ðóM¾VôÓ„‚-ítu°jÑ>»èq.pO9W�˜ª`Èç�€åGðv`óL(uï›c#±K¯"y¡Vå)·ñƒ  ñ>"~ŠÎÉbÓG³ãŸÄµó“(�]‘«f^B¦oŸÃÂK~šÒ
^‘_�ìã€³Û˜ê¿ÓqW™ÙþªŽûr²}‰)Éeš›C1Õ¾÷r÷ÄtQe	š~�©ÑBù"7ÏGÁ¸1íØ†:'pÁ¨/5! ×ÎE¬EÌ¨&°ê2��¬~¡+Éð„$6Òº¨—¶¾ÌOéOXB“”~X*§]�	yáÜ!œ;„sôô{˜	ywÃ©"µx‡*v_:­*ÀÆ®Âµƒ]£Eß»Ðø¸˜“&À¨Ü­C$:U™�Ï!Zý—˜~={0ôod™›Æúõ9µnº}Ï2÷zkÏºþ?=¶­è/Õ27ÅMS\†›ÓãÔ–t>¢¿)mtïÖWÅ-·ííã˜ëy}VsÝ5%4µ;ûN§v±^Û”0vâÍn8=x°ÁoÃ6ø
˜-þÓ£ý¦(5V¿¥CÜ²ü¸Ëð¶ôú•c
¥l‘”š»"U«à?”uÖ‡>§epJ)Î5‰:ãªÚWÕzÖÁE °n"Æn]"=MŸh\æÓV3$3êÇ’&Ä ýÓ5ø·Â¢ø†zÅÿq’EñÂ$‹âÿç$‹âßždQü”IÅ«˜€1‰hcx]‚±™gW*�WNù¤²ë“J÷‘Ê«G*áJ%[©œÍfÆûÝ3Išÿ«ª©ñ³âÆÀ6-Þä²;ŽÐI¶ÇOtJsúO°A~D/õÑ»îÔË=wê]ëÅž�õì&½s“ŽòRÓG$ÈŸ×¹½u•>åÎ¥å>¶m�w:6ÈS.ãè¸zvÈO¬§Ž-ò;ð0½€SÜ£x6²š�³2''ÿ�ÈÇŸÆ8ù^ñŽè¹;õÎ½:'§,e¥¤�röŠœ`¿’›ú'¥òCÌg	*ë;æ®V=Cæãz13®Cæwê¶!ó�k™ß§[>Y·ût6d~§Î�YE]2g!KiÈ¼¨Û†ÌŸ àÌú¿…!óå¦ˆÆöÅV”BÄ6Á=`²ˆ„|)ïûû±Öñ	Ïéd3øEŒ9›Â6Ñ#!ÇŸŸ½‹IšYéq—‰g+•²Á¹S�—’P
+ŠXþÜÑîïêƒÂ’$
+è¤/�jB¨Ëwg5
/²A¦üeè„œ&„*Êe¦�üCÖXaÀ‚<Ä„ù
+Ú3ïÒka¢åúÝKãÚ"X€Ñ1nzOŒápîw«œó 4ž:£ŽÑ�ø×ZããeHŸ²íˆq6Q®µ¡ý1–#êªî:æÆÄó›Øà¥öuªÈ*}POÄåÃ¸+ÇUºX%{ÖÓ^²ªû’Y8^äÖÓŽ†Ò™
+¯`Z	(&ßQ÷�ÍfÍÆã/É�c¨w¬dù€;C³>$ŒPŒANÑòQHJ‰hÌ]“5?Æ5ŸÐÒ8Ei‚m
+Óç‹%6z&›•µA¿¿ËÈ£^ŒxE�Gh]È�wôlq$×A‘lÂEV\žæqö(!X€ë(l¤’ÄìOî-‚ýlç)ËÒ…™<l.¬"fÚÊGEm›W×è…;í§5yéýùêVõ9õEÆ·ñ¾1x"o2†È~F¹Üôùc‰'¼nËàŒ´NÐ™h=G“r@!HJ�Ò_O*éW±Ä»ÝÑœés4ý)nØR{f¾5GÞ§íâ‹rÛ‚Æ½Rˆà;pöµ°¤N	'pÉ1·‘Ê1vS6BíaÔeUÀû]†¸ä­d{í|‘uß,O)ž#›ªŽ·µa39iªpùÐ0Ïý#>¿¾áÑÏ1ä5_}ÊsØÓÇ2A1äoó�¿ÃødÏ²tû›³gŒÎ‰©ð.Ã­¢û 9mô”ì{ÇSìSñï¬Ëªê€M=ƒ˜¾Wð�r‚>à•¦O�Åÿ•î¦ßSº¶g*=Û�ìc±T²ó±˜š-j¹……Ã�¹‹ŒÖÜŽ@áðŒÎ¢¦	ßs×Möý¸1·d²ïâ¦Ü}¢à|»°ÇBu‹Åa$j™!Ï²ûP»�Â�9¹ñ—Æã*Óë�Å¯e\ëÜî¦ÂXþŽ7EN“»×6âz[4·.4Â„Áº¹2ëBjáæPá Ÿö»ì°ÖñlcfXS¿mœŸ]­eVkŠ±írÓüÜ3:ž7GµÝÞùÙg 
+—yfšZx“®T�¾¯í.:Á`ƒ_í).™5X,\:k�êxµ©RS ˆ·Ýàövƒ¦áü”Ba×Ðí:ÿ28¾QoU&£ØM®eãa>jä–N/ô5u>j¨U5ÁkM/¥<•S®×»¶DOŸ�rHMíÅ†_ìíÙbt=é
ô<iÀ¶ŒÙà‹Åoe ŸÐIú"G—ym%'Þ)°NéÜ ¼Ç´y£Ú˜¶pŒ¿»£ñXÔÖu|Ðè|ÐPrGâÌ2-{¨¾ãñÎñ8V[!”dÀxöI½óI]É¾¤w¾D?704Rkv´óƒi€oRqÙ4A@hÐ6;¨#þ{°~¥­ó€¢ujÆìØÛäÅûYu?Àñâ¡•!IÈ]–¦=¤nå²x+ÛœT”_ðx5q¯¿®Én˜¤Ây½é¡YùZXÏéžg€q÷¢wkÔG†xeøÉ¯
è5þÚP)b+E¤´¿ä‰?,¨ã¨¢øÅ=ŽBå4ÂVIÜÃüqJuÏ1pxŸ2hZ
r5¨OÅž§�ïQ¢±xŸ*.8KÆZ–Œ·æµVÜsóþQmu¬%ùß©f�5ƒŒzc&È¨Ž7gf~Óì!r›¼Þa¯%cø>$¾ÇKïÎÎkåŽéÇ—}ÎÃØ|™ç<^Î4{ÉôÜòé–Á%Ó=¾Õ1B•[íÔu+êº†ë
+­Ú­T×­F×(õÙ¨q4­Ú¹"¼šè¶òTÔ¦o2½4£GXdU`œFsš×ÙB¸uR}÷êäU¦Ûy¯®n÷–KS^­TÜZÌŽfóv£(ò¦ÍÏäÕ4B«�¢“å	�¯ùõ�Æ(=7›–VîÞlrÖ/BÜè¼ÌPê)êq)ê®uúãMôÇÍÎØ½Iýñ&Æn�©QŒ“ Àg€”îKÒWáý9ãüqpÎD·—‘z½©ÑÔë ûh�ì/Œ–Î_ê<JQñ‹»/:Fa%S”[¸Oÿs€o{„í¤µ‚°m
Û	z¢bp†¹î³y×ž´wuÝh´ôÜhÐ28Æâ.4Iq¿Y(ÎhÀeî›£�Å¨ÑFÓë�ÅxP¥GbJî™Xª’kæ�7Gÿ¯×{y»nöænúY¿;÷ŽÎDlXy{=¹]3zözº^£3z^óÎƒqMæ±ÑÓ¿À ¾qÚs
+Ì€PÙqš3Ø;à×­o¬Û·³C?„`ˆ&,¢ÞEƒíÄÃ5»Dß«Á«Úë)øé0øÐ?(*†¿ãCõºGËÝ*Tf;BÛ÷Dû'fhmÙ‹§ÒÂ¸gH6	©…›¾^Ÿ”ÏýÕ|î¯æ#º�<>V‡ª½(Ý7ƒ¥½É`9ùèT­Ü
+£(…½¤èW‚.¢]“|{VŽ†q†^»ÆiñŒ¹Å”³ƒFn%¦/þ~4§sÐðð�î!RÝ®0í‹®l_LJ�ûbÒ1]<%IS‹�çt>SÌ÷)ò‚ãó½)?ÃóžŽ£ÞñÜbß¥ä´¯¡}7¶TÆÇAvòe~õšà÷Ýƒ˜…«<Âtiy°óÍ#=¯ö–„/÷%*unò ”ÕÙë<c»èŒÊ4C¬GÞ?ÿtweÌ‚ÖÄ4ëÅlýL1swfÔãiÌîæ1ÃQõŠ‘3:_¡e<fänîÃÝŠ}mÀè0”ìˆÑ9B^+º:_rù�Ëþ_twŒRêjç~+›-"íp"í€:zÇíIÄôØ1›Ýg&bîtbŠì
+e†ÌXü=�Ü·uwLƒÒ£?mËÇÚòñ¶¼Þ–7º^Ð[{^ÐGkÙ¿»]öEò!la-ªBd']y—tå*-1sÎ¡*mdÛ|›uA‘ö�¦Czo­ãD
&®¨|/’¾\;+l+í4.1€P@_w˜½ùý^F¿qú]eBw°¡pýT-ªRVlÐŠàõXèŒ�7óú!I÷e*èj“‘m  ,‚ÇhƒÃÆŸèUßÃ
+·vïŸ�õS`Ç½-™W4•ŸpÛóQ¶ƒzŸaE]=A}˜[£^´ þ¿ÅÔB±øêü¶Ýmc-}Ñq60Í*mU½¿ÑÓO›ú£1SQ•®Gc­=�Æ°^,¶_W$MÆôè;Bé~³ù8ÍIêÙwôžµº½Ë-r-Ûîeå:ñ=&ì¼Qé¬£#Q4øð¼ååÁí£-„¾þ—à}´–3KMêœõYš0¨ÙÂO‹`}°H®ìÛäÈË�oÓÄ¤þôSÈí³”Ò`qP°·ý¬ ˜r9��Å8J*‰ \£x£²ïTÌâÓîÂò3Õ�U^D¥†1W'N8®âîãê0Ž+œG–†÷bˆ¾�7òº%²æT:¸›§”IúSZ‰5¦f²ÆT	
+Se~×ÜúR¥r÷V­ªí4AÇ	pZ|‹çÆ(–2à	ÞnúüñäõôîÏîòi’‹ä¿!�¡Oàeˆž9“{�¡KWÏxšø�%½ê<
+„k*}‚ö¤…çDÄµ@*ª{˜ *ðrÿ+#<`d0DÖg{…+©ôÎ>›!åIç1ûÐ‹ó‘Õƒà_ðv•�ZÙš›¼÷ˆ¾ûIßOØÌËQ©ÔÏe¸ðH¾¨¸-WªlBoÚdà\\ö-‰Ø3ÊmuoÚdœ['	Õ/®?Ã¦ÏŽ4UèýS>ÎG <EÝñ-ÆBv±œ�öPék˜íC¾iŒ¥„±<Ûo¯¦’ùû[< Õ9¾¬°'—•.—•ô“KÚ|ó1`­/FX{ŠsÓ 6éa±°¡V¿šk{vè	fq6c\Lù!#iÈ!�QÒÀ �«ƒU`|NÄ¨mç1*ûÖ´ûÖc÷-w+Í+8 `úª¤ø^¸ðÍLÌÆ°æ¥ÒC!ßf&›m·1&ÇÃàñèüLR�áù©­·ÎlˆssãçÁ3å6�ˆ“õ(mÐjÚ@uóÝ í&nk~Êó’çeþºÅwŸo»_þ{ýúñõ¾¿?pA€¡øoK)
ºò	ØRïÇ³5¨z�ÌQ|?W*Œ½pg
+h}iÅšr^Z	èÊÝ) 3ô§•xP9?­„‚Êâ´âÕUï’´	*¤•`PYš†öÊ…i%úe« e)sý¾›vŒ1è­Ž;œ±7ˆáŸO“Éþdßµ-ä®M!Ì=£›_R¥‰ey<ør7ÌÚ?¬ç¶*÷¤Ñó Î//OÊ½×Ï“}¬dOô­Dí§Kb‚ïj‚<¹£rrí™Í[p)·”öží¾%×îk?ý”»Ì)ò>á}¸Èû0m¼Åm¼Eès9{n‘÷\œ,ZîA!õ±^g}Ò"V‡´hšÙ�­·è¥Ì-:3‡ºn¦öÍ†|,úB¥‚vƒHßbäë‚cD9ö<iPOXZ‹�wßaj‘Xüa©E,Nvëv/âŒ
+¥Ë…ùPÙ¶'ÎºžâF>,ÊÜƒÓàœ0K*ýòY¶BnÐ
+m”Ï™›ÅÉ]X–Æ`Ä'3«¶õ!:%�i†$®B;Ž5Ô�=�š:Ï§.ûÖ!ŠŸ…0(JÂ $è+Œgv‹1ˆNYþ)-•
+Äçï4=Z,~‹t}e¬mœu1î‰::°äº?:ŒëE1·14bþ*pWt@\e²CÅÌÆ�ZØÂ#ùž™²º.ãð+¬£ò•J)Þ
öŽ—¨èšHË}�ô(QYPSí#¯1m´xú£QÐ'Û˜×øuºª¡H~ýÞ�ÛCs–:ð¢´ýuqzÂ›7ëÇµR3ï2áXü^?ë³ôcî7º¨ìrCè^ŠA£a­Þ/Ÿ,xìX@Üf7ëÎm–§×"æ/Úº¢Tu "ÞCÇ‹âÉŒh&èÑB9Er÷¦ñpÉËýs;íŠíí´3ÞÕæYZJ•O
+Ùû�Ìý†²§3£Â¢|ýv¾¥¬
+cù�÷¥¡-fX¦ØîÇ‘¤Ï€S.ºB®wÕ”2llƒ–ŸxÅàü~ˆy–iwMédž5Tî%~ž¥n‚ì—ï6Ê½yQ{>àÒ^ßÌ”zõv¼�Õ¯¸C.Ä¶;®½Æ¸ýÓí…‚ºÒØÐÿqr·eåv®"Fá’´hn…�¾Ê#9ƒ›ùm1ø Þÿ€.„e¤Ç,
WG{®@Ý-d1FKƒ,ˆöˆ¸Jò ±3©ì˜OM#-r¦DP
–)Úçë›3€’Üv�æMªÉ0`FÂ€3%70vvÌýÈ8di›±8»ÞÖÜ~C=ä¾ßÉÇf<ÀÄtµj x†Dò»|nÿ¡ž» š·éÓâS/öW­µÿ\Ø19M¥Øä´0|I\TRÓnsí é¼âÇ_K<‡j‰gXÚÃäê*g¥;.ZíœMÍ’gc½2÷sÂ(ôõ°|Ô':u‰M§Flºgèžˆ>e¢Yx4@4�}ÈF˜jeŽmLësÛ3”Xái;ÏnˆunˆÑ·žtsÄ|^Öœ)d�hÇ½hÓÇrô[\ô±¸jJË0òPéƒÊ^Ìœ'ÉdÈä¨$“µ¬0¤<™LÖjÈdŸ$'£n2Ù_%“5I&7€È
M$“Ad™n´jS€L–F¶ýb«£‚›ã‡�ñòL/¯³¥ ¿;ŽÊ[‰4‹TLÏ†k­w³ÕÆ”4æbÁDñÍ¹IÀ5a8â	£ó	C‘aó½ëÔQõ)~7ÿ@½ÖóK¦[_Óú|‹™n��Ò¢JµŸ+—¦aO¹Â¦£îdÚ•hSÓ¦~¦M½:ˆÏh„h ÔóÐ©D”.O+á r¿¢ìðÚ¨/Ò†MŽÍµª24ƒÔ%b€aãi?FŽÒ!…cÅ	ówÂÓ™¼ÓÊ½¼ê<†=ÂMK’u
+6µƒ7öþv…9Ÿ´V7² vm>c.©¡‰ p±îVò¬sUè“N•Y`ÅUëKýô‹¦M¬WÊ©WM°ÛÅµ›fˆ­‚×S™>¿+–}0VÊ<S{îbûBe!_ï2¼é†�ì‰M>loòrƒ§ÐÜ]x‹ú?BDGO[ñýØŠ´"ï5ƒÁXü}©�r4ë/v<Xå…�•ð*—}^]ð¼ªÀ	]åÅèÞ,–hN?ãõ`]ßÌÒHáñ²ÜøËòm•ªNa¨Tb>Ú~�Š+0íõJe^î�¦rçeiÕ±ÙòÃ_´;<À¨IÙ§�’åkþAŒ{µú}qºlùQÜ�8¬ý�OþíD–ÅjR½Ò}\º¢ÜÇÏ—³Å-~Wb¶YÉZ¿ä®F©ïç€=æà1L_00]é˜¾»8Úý¶§˜ÛééÞé�êÌ¼ØËÄ·¨¥o(dŠŸ––Ø<8f^±4<`þDUŠ¥�.¹¥
+=E kÿPhÌhtüè2Á|/dÀßøÚ�îPüiåbY¾n¢ùe+@™Þo’ë€‡`“,?mÐg©84Ø³Ç€üt‘œåyO›2R‰¾79¾Å�¸°‰¤8ëéc¯Ìn/>9»½2»½Nv{]Ùíu²ÛkgÇI‘Ý^£îK³´Lü¡Pn(Txaæ‚¡�JýÛNS¦ûÆ�å/u¯¦¿åî5lgÛ/_)‘ÜÏE»O4„*ìc{Ä�WšøñM�9"/É
+²‰ÐØ
°½äsh­ÇÍ«>�ùáoã )âà;ÎqýºQ÷¸ž×jæŽ©âLîø•§c¸åLOæ¾F�¨üÙš€0eëW+Ò¢ag{�®šƒœv±1œ¨ýã¬<þ3µ\Æ_ÏöS–‰“˜;xÚ‚ÓÑM,™äï¾Ö”J*ó�êõ&è
zô~Y¤×E„ôœ�
+ëµ¹fQqøæzY2…Êè…3Ó«V¦E`M©YæfeBê„¢'q¼S®¨Tº˜úðô¼ƒ×ëtÏjcžšý×~>+C—ÓYx81¡ ²ŠN¸¨rEZÑ¢Ê•i
¤oX¹ŠNÇ¨r5�‚ay"ngþî,º	J¶<®‹Ù+�Î+
%»-^,uncõ‡LÍˆÅ_6ñP}’Ç~mUè¿6Öoã‡;†rna~ÿ™
+Øý›ñ»YïzÄ Íû,‡VZóp‰<Ý£HçÑbçF
¨ÙoÃx¼×3�÷¹[Œîçð›ýkÔe£F+¤–-=tq‰ô"ÉrÃ†¹/ÿ…æ,bò–ã²l�„«Èg`bÔ¼/SÖÙpyAX¥üÑ	zBdlAšÀ
+‰
l;]wÊS^®T¸^Kh{¢krˆS,ÔL¼öž73ù].Ë©f‡ÈMˆ%ä}eº?÷|¶‰·\¤„)Iä¾‹Nƒ�Z“ÉÆ8xWß"®™ø„Ð¯ÐéØÍ–.ÉFàM�{"Œ[ÄŸÝä…7ãÈÅxŸ 
+|�jNãð$‘ Åmò;�:ÚhöK £­fÿ †«nU-í¸iiòÐ@@( –ÕÙhvÞ`ªÀ
+³ñ›‰…7:ô¿=bt8sgÀÚ¸Óµ¼ŠüèÍ‡åí™»§_†ò¨^“¶g„ô¸6=ÀV¾JM¶ÏuiH²>§ôÃcM>~,]cß…¯>9&õ§Û­qeÿÑÆ?uUkóÄjmžT­Íuªµ¹nµ6×©Öæ	ÕÚ\·Z+ŒÞ|”þZaû¾ß°È|YUÜõ}¢¦¾ÎMºZá~ùd?©Ò‹XnSxa?áÙ›ÎÈ34þˆD¥ZÓ›�€Ôþœò“Y‘ÕC½Ì­”ÍìÍÇ¤Ã
+Z±Í8]­`?¨+Ößù‹´jE«íB…«µûÚ47}.5}í„®�ÔÂµu[¸vr×þ[µp­»…k�ÓÂµ5-\;©…ÞfgD¤—ä•v·R3Ê_¯Ž2ö‹j51;"«{ÁŽ²‚Hirå¦î­¦µ‚(šË{°¶G¿^íÑÏ™Ûqj¶G¾
+¸
+e²ýI;Ø¿–Q
 2
+£g¼1ÕžwÆ®phN¿”	�ú�u²ÞnmIÌ
+]«÷*Á—ÆsÒ¸SîFÁœ,‹}z#tbì-›
Òº6ýÏ¸i¢2¥	8§4cƒƒu•ÏBÜcÌ_¼‚‚E¢Ty8¬’…×-±×)±·—S™%Ñ¶‘¹Ü7)¥�j|°É;Úž�kcÚ*HÖ}cZPÆi¢ûY{Òá©Ö«“ñwÜŸÕ.ÄºAmîÚœÚ\µ”Õáù3‘íÉB�ÂZS
+Ó³ÆÏ8Täã„3Îí‰WeÝqMÀºÓ§º9zÂ›/©>‡F8Ö§Ö®�&÷ÚÉûÄÊgJžDÏñ•í×¦·!¿ÈçôhÃ%ë´¼¿�‰­¶|¨®ƒ¤Øoí€Í2€íXl7ÀÓ/aO°¿»Í™W’ÚK`X¢êêËÝîÃÁÙ7sXªc	weÆ0¬—áuiWÞò’£�¨RFš•Ö4uÄ‘&ÖEÓ€b»fiå)/A	]Ä_¼ò…» µˆDéO’š"ùsX—Äv^“f±>ŸãÁç˜OdýM(Ù¾ÃsJC–oóÃÇ¬Šú­a$+»Ü%Ê]X[îO…Zdµ`+¸Úò­ÉÜ<K¥Yp¨£c®”ØÃ�@+À{v¨¶úŽ3@4å\Æ´
+Æþ¢:dT`hÈ
+ÊÂìA�Öª$JÂXX~î2¿åÇ¶ÉYð´Ÿ(ý°é£9ùKæ¢|¬åƒ€EÝàÉü½Ú÷÷ù@©XØâ‹@Œïc­XÊìÒÔÌÇšÊñ°Â³š4r·çƒk‚à«ÐêzÜ£ZÁ2ã†4�“Qó”‡¤Ò©d��ö| vÔX80·0'»ó‚f�Â&#@‡X!`‡À,’é�ÄâìzúD�žš­0»GÔŠè\£É]-š]´a¡>>ŽK¤u)*àç
+øËÀ*Éí‘Â‹¼!Eó±Û©ƒ7±»Yì®ï™iÀk¬Êá‘ýOm/¼/‰wëù¢s¹Ð0ÚöÃÛ˜Çj�Ý¦ñ	Y
Ô)kõ’m'·Þ/[ÿˆé£›ÚÓüžƒ¸\âr1HËÅòÑ–¾Só±–¾WšXd®ãÑ–Òà’¼¿c'ÿh)€~,aúÁ¿d	¯òêx¬^�·,É‡²±¢åç¾Œ©(î@Õ–ÀÌá¾«Ÿ5ôÅP²ôm�¾aø¶ç# i‹YŸ‘X¬VÔø>uÜ©4ÖVC�9Uí;µ=3ÿ„¼cVŒÕþ�”È€îëgyóJÓRj�3í¾²9F%kÝŠšßd:ÙŠ>™Í$rãù2»�J©½Á‹Úg˜Î2sÑ�J¾ÓùåÞ`‘ÂÎ‡

–±Lo ÿ3€†º°õ|E{º¤ÔrçÞ”o€”æú´ìN1O™Æmz'�Ñ«ŸnŒvÉ1zòxc4*Æ¨øÿÏ1ú+{Œ»ÇèpíYºìršøb˜,�­4¤<k2K[Ô¡”âŒÙrÌÞà1{Œýß;Ö˜¥~J£æe%Ù-Ìˆ£Í_.×Q*Xâã,ÄoŽž¹Õ÷A…Ÿ¡H‘Õß˜Á©±ø¯‚8½Ï¬‘6Œ«,Uœå0qLÞ£-}j>	°½)àL×HijäiÛ´3Š¦F�Ø›´t÷t€O]¤FMrèRˆ³(AièÐ Yª|GÉ�­Ÿ9Þv¶~
+D¶~éÄn‚QñËÔ8œC˜Î`-“ïŸ±ŸŽÒóµUtžHÐÍµ‘s¹³”sÏÍ7HÞö¹ù0öì§X‡—:Ž2; žÇÌ’¯pH¾1È/<E¶Ã É˜'@Ók
Þþ‚V´óZC3Å
+Oy¸R)nHÒEFh<((‹ìÒÛW.¦íçq¼01˜Qm|+¼Ê)?l¿…rbÔø9aê8�c‡Ý«Á\¥©£\íVßŠ´¥Â­›ªRë"¶0íß«6²Âú*»=zI4˜ŽùÎU†&\˜¹Q/ŸÊFÇö ¿9ÐTÁ‘BëmËlÙ0ÐŽ÷$\8³ºeft•Ã€1lÅŒ“]�´>ypcTa>~cEç
äbÞXø•c—aÅ¬�ÌË2:wt².ÌÇqS³b°‘Mç)¢L:Q�â·rE%ùÐŒY	Þ1\í¤¾ál˜òÒ‘Š³;'F³j‘IäŒ˜1öXB‚WÅ£ÍÖ”Â¶`æÑfÕŠãÊF1¦ k]�ßø5æÄßÌq%,Ù/û%–/¹Ø¨<3mÆô2‹¸m«\Ã	¥qgvI~Q3Ò4^>]¨%ÊÑfÛ
u[úr¥R“³¥sòraušëÝaíD»Èü{’Œbç~ÉÚÅ~	ò{fS_D[;+:Âžd½£
+Ûhtn4@ŒòsXš£KJ¤óƒbnzž0»èäp�Ñy{•êäðx½çèeSÆâ—ÑÉ–{ÙÀÆ…G�=^<ö©ŠxH!hÙ”%¬Ã²UÙ}erj_nw±ðÛp_v¬dLåWÊ$U!ª–²�)Êe^©ðÀT¼ÃqJ~…SŸ®¸²xŠÜ:ÕÑ(“Ož�’¼ç'Ì5xïÜLþ™x²½oLóéëïŽ( ë�æë¦óü”8‚w·ôÜaÌ“ÏœëùB÷”ÓµÏ�Ïs_í®Óµ¿¯×µ¿çèc¦'‹oa¢!A=jã31 1Ké½£maÆKÍEã¥Âí¦¹_<•¢?éô0ÏÄm›ÖÿTª4z�zÕü–€fô`rYï¦t©p­	ÜéCÅ�9¼núÀ8ö!!Y�ÇÀn¦úfdTÌò€ÀÝ:,Ø:UåŠ–ÊÝ—šåÚN¢º£÷üÔYîq+¢Wï5J=÷@1»Ö¤ÝªT0[2Û‡Oª¿`@pK|åîuÓq8Ÿ©v?0•ZkiÝ¿
Óoçx˜
wò¢™>zJ×ÝFºçn£kŒÊ3ª7›ßšÝlÞb°Ñ•ŒrÙ_oH›ââöíZ>“92zýBé´Øoƒä.3r?éw¸„¬á­½aÇ„ëúAƒo˜Ø~½”«��ÍB°¡P!öGUƒ¸Zn¥1 `u‹RåŠräqŠÕß$,EÓçùMK’÷(-™Ì£†: B‘Ù°hNW™º‚þ	8íkiø}†<8gá¸dqðBIØe¦|á�‚›å8¨ÆàÂqÑÄÄ‰¦À¤•üN2i
ÕÜÛ1äŸÀßÇgç¾¸šÎkÙA£T†îX=ýÜ×B¬µÔ�¥yÙ—�ó’¡ÖXoã“ì«‡Ð »„P$À]B¸KO¨Ù…¬óÞš^°ÐÛ·\$Á£ö!™_ú�„üöÚu£Aa=ô÷nrRÏªŽ‚Tßƒ®º*ÊÓ¦�Öô=~šš÷�ˆì¡¿ÜzXûÚ­a_\�H	·RòYÄq9·ÅZL"`Ýb@)·�›â,Êho�½Eˆõ‡®sa®âŽ¨É7ê[úe_ÿ „íêAŽtý¨€v£EÈR‹§)»®›û¥ÚºÈøQ¥ÒµÛ(2šW^>½ïÖ“Ó¸Æ)…j$¢ˆ`°tvë¨>zö N=‹`
+r:¸lczó�À¼ã²Mœ[°$z9–ŸZú.Z±,¿$
+jœ‡\ËÕÞÚ¶K”6æU•e…lx,Æ4xõŒix„ÓoÄXPð]>‹ícAñ¬�ýÊ±ÒXÜåã±Óþc›BuÃF_rØìfU‡-HÃv2
Û‹Â†¸�/°¬Š6ó°�ËK•ç(2ûÛ»:sôxØ u�Ü�ÔåhîäÑ¤T”‚Ñæ÷|$ÄQªÒ6\¬{òá:;˜ßÙÁüb…yó/ÜÍ;�Û®ÌïÞÁv“Cœ±ãÀŠ³Ýu	ÀC[&Õ=Îøí¢7 TÍ³
›¢PÔ„¢`Iª	
x‰i|(ÈÈ@êH¯DÏOiàÑ†ñW€�¿ÊDKÊ¬=(³ò`°Ìºƒ¡2«6tAuRz–aŸ�ú)ÃDJUá‘1~êë?.3iˆ™‘ÙV`X�Žb™ÙƒRÿpÕD³¢ê+ :å}©°µ)÷C‚àêº6žiQs�jíÄš[¸£)·“cå–ÎÎýiaÕ¬Ü~#�RÒäåƒW¢p÷ÌÜkŽŒc³HÒkq‚·ôÑ4ÍÝÈ@#­ós¼ÿžÀ²ëtÞ‘?�xb;_8&Žà…8™Š,¡Táy®B}D€°-¤éâ§{\Ùò
./‹‰´EÚGH)Íñb“ÌsÆ–Ke¼„$c%Ë¿YD/!úIþó›p0ƒ9oëõw
�2ld—z;—z©êéù¶°ÁÚtA…ÿÄKÚCÊÇ¦¨_% šC
ˆËÎBqŽ¼`™áÏìÖ¤»¯5­`‰Î<ÍÒŒ÷èÚÍ‘gM�Èª"óYi¢½òå9q¯ñayE»“¼½î‘„›«óIã‚…*eWC*:'o‘²'o‘·"*{sÚ€¹‹e†m�¦lûSUí¨Q»ÚÊè`®ÅËO%žö4[hÒäh¡©ÃØŒºŠaˆ™ó
ÍCWòc»ÏÆJBq˜ª‰wápú®$ˆ3ªy‰²¡š—ŠÝ�M£ê—˜n¸µex ‡>®1¤iç"†í¼¦aláµ³�*ÐJ(eöÍV`™ÛT=oa½œèEñ“¦À½¦¥ðeÁ7vb¿mÜƒûÂ?çä,–™}ÿ<^6_Ì˜r¾*7à3‡š)M¶ÇÒ2=*!®P•ò�•pguÌ¬ˆ�h:®Ç“ZX â‰è‹ÌHSPœøŸ™¼[�þ|„±ï¬ˆ¦¢‚Òž r·3>5†‰Ò`$HƒgæœÚ2Î¢�†`ˆíQ�^ÊèÈxÊ�ˆ)wlÌ7ÆÞÆ›t}M÷|­Rý/˜A_,þk?ú(:ÖÒ÷Óqú3�?1ïð(ÙŸ3?UÉ·\ØÌ=2µPnL~æ²´PÊHa¡ÙºË¤j‰ƒö�ÌXXé^6­jk£ê§ÿ�G±s.5KAÝmtÍ@î"/ýäjœ]�É‡˜ø7·áDxhª˜\Ñ[Øª2°åJ“("<�+ÂbØµ\øõTlÆ>ÃC]ÿ[^1#ù©ºÆiVŽÙ¼UÚ¿(yÉ•¸4))ö7½KuôdcrŠÊ
jPû2!±Zu§ó„º“Ü õçk?j7¾êg÷$í“rù´]4ô¹ºhèówÑ�«‹NSœ.*6&çŠ1O»›}¬&ŽO?Wy÷(Î¦›u5ÛÂÓ)•õÝV3Š•=¡Oek?ö¼LÎV&B@6>“KuƒVÓ‹Ì`?ßcKÒûY’Þ×š÷g7ÅÌ&2Ç]‹i‡]ldï�åpàK1úÌ½1Ï"0º~Óÿ¢®^L´E{B/IÜNÐ>iþ†…$hM_å§bk2éÒŒã£�ÎëáÇ½Å„ÌQGßòóýjIõtí¨O¯�«%pnÝ…ßÌ¼ ìyñÎóâ¼ÈO˜G6}A:Y­`¡T+ðWÕ
+Š¶Ú-ãTÀ¦˜Z¶ÁýÊ�Ì®*%-6ÊÃæã˜–Ew´çýÒÔ4 JSÊ–ªVÝzÃ&Áq¨˜ÿ êp:ŒZj~:Ä\1øº[ã#Î2µTG0Ÿa0nM³œ&6Ç¦™ÍÑhÐ¤ßIE/6lÀÂÅ·J6„œŸ¹)ÿ4©)�dS¨Ÿ²1râÂ61í>ÍZŸÐi%zqØÀ%ŒNíV:µçQõß¤¨ÝûÄìÜõLÑ
+d<"‚Îc'VÀhâëª¤\¦€F«³8˜-ã6K¦ÿ@Z­’�¶�ªZ+Ui¥
+·ÉÏhžj°R)›ƒ<VÂÀ•=\š=\ZýáÒ…ÛÃäÃÓë�˜6iÄ´ÚÓäˆ‰º¸mPúéV³Þ°‹éÓÌ¼]J#S6SìàcÉ”B#œRÄöþ=Áó­Ò‘\]CÐÙU_ÛÛ>½‚Ì:œ³2ÆL÷Á9Á@Ð/¢‹;@òf¶óü­:Í-»	Æò‚Ñ&u�æ)Êï™}X’r<a’åwú' ¾FõcNDjqE*}šHus³t&x#ºTèNlx â€y5nìdzWþPÉ™ª¥Ú©Z’S•ßiª2î 3OKö<Ã<-ñ<…q:éæéšJ¥V/úŸ³Üèê§½ÜÈ	«ÙÌž# ÍfN„4«¡¸)öË|ÇùÇ–vÊÐ)ÅÂâ¤ä ·Ì Õ0ôJ£r0ª‚²’}%�Ç�½:âûO*Þ8‰aµe«`Ym98ß@,áç~ÖéÛcôƒc�Y—Þ+75zJöbouP.öªÆÄ“
+&‘¹}7¡ZÖl}š…SÜT‚þ/ Êß8I²�(f:õ¥asR´3í–4ryu¶Í¡£lçüA¥æÿËàWçðpZìSîÛ­{ñƒ÷¹Æ(v®áŠ¾Æ=õÜÊM‘ï˜Ó¹}ÓÕÑÌcšºÈ¬ÓÂ×MÍ‹¯ÄåLÜì%#»þÅÞf»ï?‰;¸Ò/žôû¡P.è �Uåé-Ø+-máØÄ»±�ïÆ¾Ú»±Ï¾ûäZ}ƒ§Ë×yºØ§y‘/lýÇÚÝ©‡Š�˜�	÷&÷ÊŸTGïåÙRbQä#À²´(³7yWêýœúH=�À	ÙÇ4^ŒÜ�öJ7Ž†+@™¼eú(“”	J4fÚ´k±ðìTÆ|fª$Ug3½d4òÖŠ«s×z:ûÖ;7Öõ´šÖãÐ|ÛôÓö$ïaÆø	ÁHžœ�Ûl´JNŽÝÆ0e&=6¤éºlúU%{»�Ú *�·ÚÑ²Q}vâÆFÜÀ]ÿáˆŠ¯vDºwDø©ìÙ©’sávP„ÂV­{«†ï¿��ô­Â†8|÷FXÆe/x*™½Õ•ÏÆtK OKÀE¬	YÒýB w±†¶ó£º½ä<÷lJ«¥ÖîÍižs•OÏ¡Ž}ÇôFbñßè)­�k‰mj‰—«`†í�Š-#ú†ª´Ò9òØ4A'AÖî3 Ë…'³§ÂJ×>·}”‚)À”%h¥q
+Dy/¹œ‡÷¤LÅ°x¡h÷–4ËÈ�»¼Ö¤—äÙÐ4õ4ªÙáeµÁ†ì­iº±ßšV·¥ûóa¶æ�³¹	,8’ÎÜžV <
I_vPÙTt¸Áx²R	†ƒ
–¿#ŠA9Á[KÑ¨
+úß€¿Ûñµä„µ�ð›Q[9Ó¦"ðO90"ƒ"0XÎ9ðœŠ=Ô	$B\G ¥1&!?¬ùXB³¼a»dzŒáÄºÌÁi•äðÜ¯ÔiqÕ—[®ŽH5VÄìÜö [xæ~‹­�.†|äœ•À2í¬){“zŒˆîó}®¨Vè2ä°|4“õ³°�‹1êk‚=1v>ñø¸ˆ·ð·cb‚% £h;zè–qó0ccl¡Ø5e«ùJ;²bñò�¨ßèìçGëwíÓVL=êË®m4¹¶Ù!nEçºÛhVmÃ6ñž�Æ{”[ØåŒ®v€cJºÞä¤h+Yâ}†õž(¢Y	6Å˜'™§š`mµú¹/<V,uÞÞ¬BÃõ~š×ÝOó…¥€c=dF|ñd9dCá·Aù°
Ê”mP.lª”‘ZüvÆ6ƒLÙ/U¼n¤”ØB	¹z
TÜ"÷bSõÅŸ-£‚{>Ø{N€ü,‹á&A	`=óžÊ¹¾¨ç1R*4 PV3œ¤Ûux#ÀºŠ|Ä”Åî©Sìž	Å~.NA,
+ÌMÿ]r2Ì&ã¤1ÐAÊ
fy(~ŠÊ-ö¢³÷/(ïcGÐ¥ä`�ÓCÜÖÑt:)÷ŒØîªˆ¸ý…Ÿ÷Ëƒ<HB—Ý»É½Ù¹è¬×0#d‘ù3ÕÍ�vìÏTåÚn·Ä¹Ngè
˜"¢‹[eÏØ^t�‚O´ƒŽØABËÜz’JÑü&á#ÄPíÀ¬ ¿è4xÂ�£®G+åà1J9XSŠ¤pFÁç]ô<}Wë‚<¥pÓ0°µ–láµPn±„›‚šè²Ëk»lçÑ³ó�Ù9±1�àe‘š2(rä&p$/ÏZn+…œ×€¶2 †­×ÅÒ¾q½ZIkÈukõ~¬^³iä:]ì
+Õr×
+“ÿýGpÆ�Qr¤"kìƒúÏS/×~ãeH¸àqSîL+>]ÙÆ`w¥•`D¹;­¨ºê½'
Ô·_¥9îe ¸MmŒÿ×D!VÅgê	êª>k6ªæYJU`ÝfÏÙÊG¼§Oeã48uÙ¦¥Í‚mmÓ§Åâÿ•Í–O¿$îuÉŸ�1AnïÎIá[…ö°�j>Zô]ä)Ú[Ü»3è¦J»Þ5Š=ïâ$û„õªoà·±SaHóe6¤I“wlˆã6o3VrÌÛŒuýÎÈÆJÂ¼ÍïŠ,ìÙüŽ§çÕÞ”Ç¶gó;ñfkt@6EÉú(@>ö²¥Ç5^È‡R\2KØv9ÂwË/±éÂ1„2ÓJ& ·“ö¯J5k¡*Q²
+ÌUDÿ: ïK
+sƒ:þ�µÂe²¢©ç›”O_Â£zµ	&+ÎKh>Í·€MVŒ{>6FK=£åž÷�QKëùÈèê3Ó=}f×'tâbt¡Ÿ#F×aú9lt�g¦*=ç™¹½Á¢¥�vîœ‰áë§,}À²	 %šŸ¹>SÜ‚>ÁÍž5§*Î¥�>Ÿ�‹z‡‰b9lÌ£âÒT\ö 1š[b²¦þAÃa8êèoSÐ›ªÀ¨�Yt
+ùôƒó‹x¡/„,-¨Qò•µŸI%(û+•yžoü5]·¿ñ³Ÿ+Šz?&y$r~Bøb±á�¼ï¸a‚iK;GëZl¶ö,6f[XáM6s° 	>
+LsàÙ¾ùz›
+ÈH¯Au
n˜-Þ¦{°©û
+�ÍÌ}dH3ŽÙƒéŽç[È=Ø±·e);LÓBõëãŠÌPµ3ü‰¯µ{Üµ)lOÏÙ–·]Ûç�I>ïNò¹!8Ñg#ù°�r3ñék×2ßÛþý<:õ¡tû÷‡ÔóR¿¦ßçÕ�Sžží{NU´°ò0oF;VáÚ’¦*�ÒÎI#·8á¥)|ºPÐŠ™�iåÜñr	¿É¯²”|^ÃÕ…æÃJú¤«ÂFUŽªUâ¿Œç¡WžRÀî-IhÍ·“¦1ÍÂÜÇFî#sÐ 1Þ]Ó¨dM£þÐ2Xäåc¦ó¾µØ\d±ªßÄMDÎù~3óXZYÔ/_ÐûÍâ†~êÌÓ„#wîHMD›9_!¬ö|Èà˜KÉoiæ�áéàW“÷QÙbçÐIž.Êµ§ß´×”¢\�Ðü¾Hï¤ƒãˆ�E¤ÅMÇ€‘=Ÿá1:Ï7U\®�3+N£7[ú©ð#¯~<´ØKÎôñ’ÓäNQ]rÓÛ¿¤(Ó¿õmEñ<NCéQ~“†Iž¥´+©^ƒzù	ÞÝ¢g­T›z~K¯âóOØ¯–%4ò„9‡å�@vïZÞ˜�–»¥©ã¹™õ3ÕÌ4µ{y#…Ñ^”ðzü�/Pú«Ìì…Ós›§/¸pºÚs•I[]‘ßü¯¥þ¹Öìº’~®šØÅ	Uõp�Ù½K8ƒ“)ƒMc“™»Ùdíä›M€œÑÏ(Œa£ç{ªF).u²Y�l–s6­”ÍzÊf=gp²É_i©&¿ÌI¾ÉW8ÉWRò•u“r™ÄXé$_�ä—;�XMÉW³ý®F¬¢Þ÷¦Q6˜-	0[.0—0ÃôZs	å{…S­(ßêV«Ï•ß•Nµ®@µJ9á+(ù’Sü«œøëÿjŽËë(þ:ŒÖ5NŒÛãZ§B·QŒÛŽÛO×9ÉoEò_pò?¥ä·Rò['$ÏÝb#�? ßž[L‘Ûs®Ü®wrûrû¥Óë¿ ¿8f¯W\ÙÜàds!²tzéBÊæÂÉ½4äÄ_ƒø«¹Ø(þŠ¿FÖó<×0¬q\Ž7rÎÎbïõôÛCÿìv�Ž²A.t
+šîþ�Ž²a·Ä©ÂMNŽ· Çµ	¯×ø0Éº¶R^[Í®�ô³Ù´(·Ö\4Öµ–ŽÐµðËm6‹�#º‡|Jä£Oìäû\½s³3	D˜wqJß€Ò×;¶�bl˜Üa·$¼!`sG£`ÛEÁµ‹æƒ¥oPÏkÙŸ—2?gÛ˜–¿/J%pg,.4Â¯ñï4u<2Óòfnj†ZÄ›FºÔUÜ4Î"�¿»ÂÄËMÛšïøÎ�6bž®wÇÝÞŒJr	ÁÚ‚v	ñ–%�@ÎþQä.2
˜L½ˆFø"3{#wT„;ª°ÓÓ×( ×;o4™G3LG¬?°šÎBJÑŠï«EQ<Ë™?Äs_Ø/oi±e&žLKÒ½\Ú0`²Éh
ÆJ~9ÓS¤ê'gryÌž¦¹ÕyØ«Ò/¤;G¼žyB»Ø®¼!{�)ª˜¹ÆTe/¥êoHxµ@äA7ù	
À‘Ï6ÎÏ½cå†ì+ŒÆ9šy%æ™�<¥?}VýñueÇ 9,Ô„óµ–aÁJ�“vÃÂ(Ð¦T2^ƒÃ	RÈŽ*F¶@0¥fB*ç�)¦•ùÀ†©�Ý¤¨©'÷wçîœ²­yP]¯nTñ¥–ç€ÚÈ-¼Ðã ™.y
+2ûÙx8‹Ùgãœû³q•›&½eÓØû¨-ûŸ|á?ã<ÏöàîgèÝ‚íÅT/µ¹%1ÅîéÃ½0‹�*e¿´$ôÿˆŽZx§zwÐ>õmõyJD]„Ña›Ú“æŽžRd�¯-fî:3³ÅTç—é~1Ên|®Žñ§¢læÍô{´µ›-I˜„›_l±Í1Òf&H]tÍêX_ÏîbîÂé#l\ç’éDn3Dl.šN‰aÂk>–Ñ^F?!Zç�–â
º§¯g¼l¸rÏ-3ñDÒµÌ”–µ–™äUF×ýb;Mà³?:MaÄzéÞÁcŠciÝ£i–½5áÓü�ÿ"É„8ýŽ4‡åk;¹*Í¹¾Y¥ræ¼Yža<Ã‘ßü®åföËt{_ðeoÏr>Šr[Bú=´îGh§1ëš8s™8w™8ƒq3Ø8óÑv#gþì�§S1™!�·ïËù@×°™»¬Ñ
+3ý³<=ÃØÏGíÏKU§ÍLˆÿ›Y-¯¯þasž·ƒ
+õÍ ‘);wì&úÿ¬Ëq�î9�j¶•¢„#ÈÑ;È3�u'3[
+-(…”ž»A`æèo÷®E¹“N¨H4D-ºÛ,\C/ÛhbE¢­ìSì¾.”½MÃ‘ZcälÜuìÝÅ9ÄaÏë-rî|2„�în:j#Ñó\NÀçAv¥ÎÑžÞïIxÃ‘èmÌùš-£ŸÝff¶™Ê¢1Ç�Wn‹ÏVÉ¾^ökÙ]u %¾¦"a‰�_‚…
³ðK°0<»·7²ýorü×À¿zå
¬T½«a°wÜÒ¬Cå½«+•ÔO{ñÐT„bÝ¹VÓçÐšò<åN�Qÿ\ÊÝ*ü~&�Ñ½£ðWiŒž:ä‡ôÿY«ªÜ�ž;1¯îã<'ŒÞý	ñ<‘™¹õM}ÏÎÊîN‹�}pÑÝciŠù@BõDcÞÑS€þˆzDˆfÊŽ§wšøwÖnë¡÷¢6ÛëÕæ¡ãÖæ3»‹ÚüÚU›‡�Ú<ýéjs¥»6÷¡6;(‹†ð„Ú<B“.ñsm€Ã€bˆ ý™rŒRÚÏprï¹yï¤t�à4WÞ]+³'-8Ié^Ñ¬
+†¦“©»ÌÜ^OÏ.³k‡™;äíÙ�§zC ðv`Cú
xÁ])N‘bTEŒŸp"îBÄ]NÄ]q—+â“‘á~`•¶ÆUt2ù52)q& 8M™üõ);1CŒ§œb£�¹ŠÙíD|Çœ¬§ˆ�#«q'Æˆñ['Æã	ÄxÚ‰±1öÐÆ5²“mavÑoî;K{vºÊ}†»`(Š]¡û*Ïh©ûjìÏ&<Z0ô"ËÇ©Š	¨÷ˆŽI�SÏ–Øƒ~©KÓãeÓ¥Ã«(Ïq-Ät{ž¦žý½7á%Œí#D>bf2sW{scžÎ‡L”ùÇ…®“Õ‹<Üt'Ï=bÈ£ômH�{„Î˜GLa¢c´ó’l~/%T¯]àï\ù½ëûümp®\õ>ogŸ�)â>
‹ËìaŸ}	¿�cgŸ4¶"¥dž4}þ™ò#òjÂï†€Ý¹¢‘í�å^l*|Ü´zÎíêÚs?jòQÅ{-Ñ C‹©ZB¸H4ÏAO?)8Ê°å_„2«åo9áoù†Ñ6õ+’m£¸MÍêV £3üÄº(BxÄü^äñKûÂÐëÛ™ž¾0
+´@Ô¤”9^ù+b…�z©¨MçâfŸå3â(J v,mÖ„�Žœ>å*ÙG%§<«{óQÉŠZÑÎõšüÖÜ…Í¶¯¯ðLšþ<‹?ÏáÏóéÎK›CVØü{€šö¦qA‰#ã“9ã¸+c
+!M^ÄŸ—ðçwi§œ/ËrêFŠ£Ø8Š�£Ø¸],õ%£ˆÄçy›VZß¿wï�k§ä4ñï¬«ÄvÕóVÛ<9'ìƒoÒÜ
+58ûà~vi"Ä¯Ì e¿h’ze<ÀÿÎºZn‹=£(èmJj˜PÐ;”sCØ)è]vb_‚íì÷fð�Ä”@CøeUœü´Ø­©IâeÛØ¹­l·g-cZ¤ÞÈ¼?Ãs.�ø[éäM½$\¾œI©0õ¶-Ø±¯yXjP»BoÁ%îäEÉþÆL)í@éfp�åÏ>,|2›Z®¿¹°¤¹¥ãRoJíXŽ?7Ï,¦<Cëf–ðsÕ	)å_çoÌ0òQÛ†€
+þì£ÂË»†¦|3�šÅ
B¼}:…úøå£õñ(ÿ;ëûøé)¢£rG'Ý§ÏÊÆ3”î•8z>HÐboøï’�{w:OéÌÒ&m	uÌÊFšÍûÒæ!¾ÏPÚó�î}i€"ÈøtåÇò¹°‰H&êÖRjzµû•´�Bµ£úaÍ¨~ä¸ð„–hšÚÞa2r:kÂ@¬	°&œOºFZ ”ôŽWG÷\a¯i™´ÄP*ïÉù@£F®ßØ®M+€ùï?ØÞŒsÕL‘Yhnë¹DÊ]ÞH‡fRJíN©ô“¹¼ÂDaÖC\E;'ÛHŠtl™™R:n�iE:nÃ×}��ˆQ¶˜ø)"Ær<ŽýRH­:ÆAƒèêfÚ0åãD`–��n-s›{Çåæ•Rhþ•¬h9¥ÒÔ	è/û�²à®?o‰ðuàç¯ú™Õ¹=—ÊBr+nþX©æL“˜5…WÒüçL¼Ïô`âz(¼„	[	h®%`ÅÄÐ7Ê¬KVdÕ¶")mÐîúãêžÉ…RÕ€mCE+%ÊéSAT ï$ˆ’ñªt<Œ€	uC¹ÕÚÑx\uB½ÒW�¡¹Ö¬ÓÃ–æÔ‡êbÊº´‹^ JÄd%äÖ0©ôcôŒ½9h¼9Ð¡eXfµ½öPÈ¢Ú^w—ˆÍƒÒ}Ý5„ÚPÊ³Fl9s›ç6S?í}G”l+¹ï@ž«¶*hÅìt”s£«FNÎ²RÓd¥jrvª¥oÑ01¥âÀ´)�˜£^{>& !Sgî&,5™_$óW“%9Ùäé�üßÓû3Mo"a
+¯ÚÓ;Qè�ù�°’õ‰WgvÉ5yzhòL¼èÿ<×à½ö4xáÂëhþÇ(î(Ã¸—I«²¶)sÛNö8¾®bç6ýÿV¶½·-˜ŸFLJÑ¿¥(ï4[Sf(	¢»;Þµ��èûŽ÷l§W7Ú"�šP¦N™ùø¡ŠFÿèÿŸ~\ú¤ÒS©ÐANól
U�QVó:ÕÉÒa§¯ê›ò¡îí'‡d�«ážc‡'ñà±ÃµÉá#r¨Æ7�C5^ëP�eP�ŸL¦W�j\ªñS�ÿÏQ¨ÆU üö§
@Å®r¨ÆýÇ¤÷1ÕøVº†ˆ|;mçE”a¥–ˆìKÂ‰;ÈW
+ÏÎ¤ðó&zô'§)ù¨$%ù"ÇýóR–1é«!&ý &ý“ˆÉ€›˜ÒÜ$òï““ÔŽ-ÃùÂÞ”È~
Ù+é(ÕøÀÚ/¬ýéÌ’ÆüT!ÝnmPòÈãøaOzK{Q¼ONúó¶ôË	Ô¼Ó�ÉI÷½§Ýàòè^ô~KfOÛ:6ÄÖ(­Mgn�1rö¶É»�ùÔp»ð·ª›òÃ5QêÜœX½;¥4×Í)TÛUÜ 8£0’Ÿ¯ê§»®jQÚ˜"ŸŸFû48ŽSÓ�2jI´©NIÂ¿}�‹F«É‹BÚ,ðysÔG}ÿ�ãQKŽíä˜Ã!Çj‡Ì`¨™Ì'’ùªÉLN6yTk/)ª}2ÈqR³ÞçÐ¿÷pƒ$?úà$'Î¿ï`ÿÎËƒ}Þ§l*Å¾H¸†¼ö"Q;&'Ç˜
ÿ9£.¼‹V¾g—öÿ�qùKàÎªÛi¼ÖÜqåÉž?~QÖûjÝ˜�Ëëäø�\aô5ñªdEOöü»�ÈÿÏ»uÒYú˜}–ÂÒdzržþP]:sž>,ÉÆŽWlrP�¡¦Ž7«´#�XÇ«UÚñ¿‘s•v$B£ãµf‡v¤‹vÇ[¶Óµ²Ž×m'£€u¼m;@�fr5È$g�HÎl¥|àP¥õÃÊ>ªÜùQå›‡+®ìþ¤òý#
+ó ðVÈ„
+YŒiQ?ƒEÓ·�ºÆ?´h+–òU¿e,úf°
vs¨“N„"•ýåÄa—d%ŸŸ´‰ÉÇ!&¯sˆÉÝ &'ëðz—$½D°�DžûÌÜ–¦Ìú™JÏ><² Qx£1÷œ	ÈÈl&ñ8‡çãg!r@}¾4)©ÁÜxº0éñ4„ñõ‚YìyÁõ´,éó…õ'½¶¼gKß©Â"��-Òõ˜=ª–¾÷Ó¬JµÄ­IEDKl›¶;!ì#Ì¿å^4?W•ìsfKçs¦Úõ"ÄJ¼=âGJ;q¼S—.Â{åq*Ü]~Ž–Ý‹ˆÚ·•Î½¦ª·Àð'ÚÉB#ÂRlöÔìêY,âÍ„ÔÌêYªÌ·–ZÕ†¦ °V7Ó¶V÷m­Eù¸ ¥œå{Ó¼7]‘M?Û_8˜¦þ>¯%÷;îoÛëƒtáP:÷‡¿Ó…�ª~Ù÷ÓÞO+²ïÎd‡›sÃÍ…�Ó†›Õî-ÍH•ÝS­ý‚=³P¯@çašŠ,#ã…yÏŸ©¹}fÇþHÇ“Hâ=SÍ6{i$²;§ÀZÝ‚�ST/�<¿j=mv>m*óÔ;Ô¢º›¥\‚Ÿ@/D9’V‚!¥’V´S•¾VÅçSÎkU¼Q¥¿UQuåüV¿ÿÀteq« _”Ô|
á=åz–æýË˜>o]/›ÙÓ‹™ÓUjoájoÏËf×ó5~cžžçMÜ().ÕÊ‰ƒo+æ^ibýÅì+MÅÌ+Mjî
â)<¹û);ÔýMäÊÜß¤hêû*¤²_…ÏWÕ¾¯ö}u¬j&b¼ÜqÞ‰ÝÛ‚å”Ò}•¯ö”Ê�Ëg©¥ÑÌºYêBÀ±=kÂÚô`çÐ,}—»Í†oÒ§7„ÏÓð
+k.6NaÐïñ�
vs§�@$3{z1sºZ¸Uí‹Cò;·Ø×ï‹³|ÉVf§wÜÑ8<0Nk
²=ôC�†àÄhqoÞ‡uîjo©ð�¨ÄªB8æ)Â
Õ º3=cfž1< ”è¾Ä÷�ƒÝçø„Ô”å?Y_ÝK×K[�{Ù\iˆ˜å[�{ßA´4Ð½­´‚Ý—A³ˆÎ&�bZ�ÕC«�È+ìë£4VÐñm 4¨õ"ôSOf?Ö0j‡f;˜âaÇ
+Ë(eGèœºª™uREg­U©U!«A:×À‰BªFCºŸÅ¬E”_hP”Ì3È…0BRÛe‘	]^ÖÕ^+2,€É9æ±¢Ã@”'‡¸ÁÅ÷<>·™†8l”D¬(›èˆË}û’¤¦5„¿Ç¶}rå¦^�|[\T£Uxì94�¥Ž[ge–´ªÇË©J³CÇ-/sA«'£«½»!ÄuiR¥ýV<</Oz½
áo@úTl—Y_vi+ã
,mU¶
+XÚ†JØƒä
+†Nyæ#¿bË{'=”Éßà®þÕ1¬uX%üô¦$†±ó2Zô‰_ZÙ-´²)ïÎ±µ¬õØÇÖ/œck	W&ëÈ„\ž¬‘	Y•ô{Ã‘'ñªÉRd¯šóÑ¿y,Ù­wéÑõª™�§âD~{ÛÄµžWMýJÇÛïT\úÿ‹Ë?Z�^¨�n{w	ñ—ŠRë¸ ¹$é—6¢2Î?±$É—äZ,]‡äð2Éá
zfW*ÞŸU*ÿ\©\Q©�õW”+è@
G¾4zJ‘"ßë‹jô	.C±…áC¨B-T‹êi{e2	Gîð‰GÙß†Šì‰ñ*sE2Tnq?ÕÙ¬¿û�™(·Ù&N6°ºÅ´oÀ´ïzS=SéySÕ_TyG}S$ªd±-~›�Üë&€Kº^7³o˜Þ0•ž×MòKy»/jÅï�º/æ_¥»ÜL¿'‡°p_7ñ1Ø}I«óyiõsyõó2|R¥¨lÅ.»sE«Oß$ë†Xº°öÁu²øf…(F€i±†”’Š2Å¿„ó%C±š©ÅÙ•­)OêG)åäÐ‚•­Ú™*:à¿¨.ú6z´‚B“EÅQ!YÄöß®8Ç*pÔ&¨Sác–˜
+ÛåÉ-K#?ñÕ`‡«$Ì|,¢r>ÜqmÌr–ƒÒ¾ Y:U¦´Ï?Q:=Li/¶�^gÚæ®ÏÜT©h¥O*…#•ò‘Êw*•MŒš?€­¢áOh«¸üX[Å8ÿ;ëúªœ×+Ø/®J*ª—·³k��fÁß2[Îú%µá×Ö#ƒ¯ãMF
+½á¡žwÌ®·M:zÞFª_8¤îÛX™×;ÎwXÉ" çwÈ¹ªµ8MB&#'7´ƒé¯PÞëÁ74Pý…Ç!/<	ÚN(³xž(65È¾ ®¯ö{®övÑ1Õ3†�!ÞYçR3¯h=šDÜóêY78Ûê~4h5·@kjwÓ¹ÿO¥¯<j†ûMü;k°Úùï"×›êmÖkéŽŽWá€™jhï<`zDA7s¹¶ÔÁº×zjo82±n¡cŽE_)«b	9‘çpÒ§…#Ô¼+�—±)•ç¶ã(.§Ô¹ß€Y¦2/JÈeyopZ9p¼VU[ùZ¹ÑÕw›jûn³“ëUÇËuu5×÷‘ëW®·Öæz›“ëÕÇËuM5×ƒ,ÆìÊõöÚ\·:¹^s¼\o¬æúr½#YG@éÎd�€Ò¶¤W5|ß
r�NÊ3w.†%w]¨c¯ÁØ-4@Ø†ÊE±E�]îø¥”’´¿tWÒrº¶õèBN7ÙBN‡PÙ»ëUöžÚÊþ*é§Ê~¹neç~]N%‡#âžG÷:5ºî5Zk×è#–®·ÝŸ¬y[yÀvÎy’V&m	?¹¶'cþ†ðeµrWòð¯Ê`±XŒq7YšÄ*‰«^GâÊÅcò•Á¶s³“&1äÀ&ÒDµ†y'¤rÈ¼_‡Ì»ÙÙ�£K~]¯K®í’µ]òHM—<šŒÂ«k»äfVMêgI´ÌŽfšAåsaÊÕõ0äÈ¢µqÏ´CfŸùoþÉ]ä?Ù3™qY·—üNONî¥�N/]œ^ZçôÒôÒcõzéñÚ^ú�ÓK¡—ž¨é¥]Išæá×ÿ˜^ú†œ?{ I�ˆ®ë$ÝbR�½Üw ,Õû!çC3¾“M&KV0¥2á€dV0,ƒ<Yõlž¥UnOmHHqÙ¾œaMÂ”ëàBh›§\ÂÅ“Nwÿò8Ý½Þéî¾,)%
•oUÕ÷×+;.9!¥tÜ×”R;iJy:–ŸH.;1åíX�¯•'RÀåôuF°ûJ¼Óùø3„4=%•Ú}C+Ì,Ñ¦ŽÀjcÛî–%ã¹•	¾»¬L¸ï.c%J!‰ÿ•3ùU7[9åã•‰,n�í)w’•	Ý!B`¾Ôq·ßÉbeá$Q)‰*“<Žˆ÷5%¯ãþ� ÿwÓÐí‡É”Ò»›é?‘Qw5‰ËE¹ã‰¦ÄY4y:nˆgJG[™ ²þ¹ãÖI¾É÷öI¾’ïÈ$ßC~Üª¨K…Z�[/t#Õ„¯PD™AaÊ}�Ÿ®kÕCÕÏ]Mâbµ2Ñ‚:«§˜ú8›æ‘,z‘à	�³$Ì}ãæ-/]]ËÙK™KJÏ²D×…‰Öž]—'è¾Õsy¢k	e½$Ñµ”ÚÕ³4Ñu>9ÏOd/H�rAÂ“½%pâíN6¦Ã‘‡g€…ä„€-KX—ß
­ù0~#Î{Î8þèøcà�ÙŠWöh>Ù–ŸÚ–ŸÖ–Ÿ×	mù™mùÆ–¾ÓóM-}ñ|sk~V[¾™œˆT'µæg·åSo�Î»ÖšŸ"Wú>,Ík"Šþh˜n+"JÈ}§`û¤~+¶�©Âu‚pM.±ç§ç–% ­}BË)¤~B‡w‘„ìÂ	ÙKÖ4kª5=«['dtµö§óÒ„_O|šÂ÷}þÂ§[S�^ø@¸ö½)ò/ªâ¾jÏ„ã-¹uú0)ÞjÂ¤Xš¨^»1+.d÷«13Øªd†Z•Ž+N¦™”»0ÁJ§KÂZ¥ÒÛ›oÌ^œàsŠ|é«Ñjì¼8¤¨€é¢9v†B“�Ó—ö�Þžo2wS£š˜ã˜o¦)Ùq©×j¦ûJÇrüôwÜ<“aƒŠì;Dqs¡�·c�(q4’âu‰¦vnI¢°º5¥lø¡p®�Ó¤K¤5Óò%æÐ.s1G»±ojIì˜ØËP}kFV§!�]Â™|pÌ8Zf·Íà[ì²DuðiùéZƒ˜Wž(¦CÄîª”F?)
Ù§<ä»4!ß5"…¼´3´¹ß¬}å>J,~ª<9a?Ö¡£Vñ+¥öÖ¦ö"uµ5åATïÑ¢¶£ ‡Äà˜NAtGXóírç.¥¥ÊV¤F°ëß¿z48-“¿NX¢.2+ K¢QrUöœÐ¿Jiõ“éO‘Y¤™Æ{·³§9�Ü×	åôp{>Ö2<�Ÿå^z-Ö,ó&U±f¤`HFÓ7›ld2¥Ò	s.ë³ÀV3}[-l&v†¼‘X3ä5…}ÚVGF¨Áqä¾3ëéXáß>™ïðJß“ÆJw{RåÈ“*GÃH«˜O¸ 'å£ÂõUŽêÚîˆÌR‹¥U5‹”%
ý=ö<[&NRÑêf¡ +[/;d˜�å�Ÿ¯|¯×ê.š7<œbæ¸“¯éWÕ¯˜=¬î³Æ‘üŠNbbV§�±Ù¬k£0ëÎ¶aSi£ywÒÄ}—*a¸;[7Xì«âÞY©N0ÅÊzÞiB†D=/2Ot÷vâ“,_½Î¨FˆZ'5BÊ³]�¾•ÿÞf/¶É]�¸“K8zê“ƒ-.yòÈT…Ž–VˆØ£r£6q-W	H!h'IÄ|0�Ÿý™º±
+¬Ð�­¸‘Â)ÂBM­PÊ³š…ä×U'X©3| tpð}�¾£5‚ŽC+I�V
+Š )wP÷ÚV+röÚ jãàì…=Ð”@•Vú1q'úq“‹®žÛ×zŠª3÷§”%íù`•œ>�ÊH-|c«•´’tôáM‹þ&kéÌì¾ÙùZ×š;?Á>âw]+QrÔ¢['æt“Èi
ç´¦NNë'ä´^æä�í_ENu*³ÞùºÅI*~o‘YŒLÌbb-ÖMÊb�;‹–è°”¹œ½7dç`wt/Ä³Ü‡H^!‹Î�Z�£?UêA÷©
+bÞVÍ�œn�›PàÚÖµºéòÁ¹ÕÒÒb%±6È=aòŠ.œèÉ9b
+ÀIm˜=D«�ç–Výû®OØ«œZ.­­%­EÀÁ:ËÑÉ—Ö¥þþsèÂkÍ‘ÿUŠB·^éTõÅä\~¢tzXhç2Ûée¡�Ãvd�…vVØ¡>ÚYi;ýü”p¹íðSÂÝ~édã£tq•Î�ó”ÐÀO	
Á93û?®4¬|¯2ð^%q ²‚ÿ?é`åŽ*ï~PùàƒÊV(ê&C
a†,Éáù<�ÃÛyPôšÐ®Îy±	…¸^uV�'JB|x{²=˜õ*É¨v(Ñ1®Ð²jWÕ	¶4;¼½^¨¯šåÖ‰áwJ÷ÈºáLÔ×ƒ<5·—d`Ž'#áÈ/}¶Œ®�~È'H“Š¸6´åÃöi'àÖt)¾½Áhó4}näéŸˆô¹Iœµæ?ÐíG’ð½y-ÅÇôòDfyBAIB#9¢U“wê€S‚¸�qÉ,§ PÚ¹Í”PÞ¨ŒÜå	yð‹­À6Ü»$±æ@,?]L ²@«¹j¼“/M¡É{4,#ô‡÷`H÷ûéòCúi~ØŽýƒC4WØÛ
+Ò7-~ÍòÙ§)U€ÕW¾Å”À§ËaiÝþœuª5ù–¨fUä<†Øc¨Ä-â1ºÌ
+s_ÛÝÒ�‚¼+ƒ�$º¸ÌL&ÓÌa¦š[†Í%‚d“Tíù¦�˜.ä^<9H½v]‹ŽBjXáI¤†j“«ŽKhÀ^sÒ
G6�[–·ÒŽêu×«•—5>';Æ'iº#Þ=M.âänIœ4T;Œv˜wÑŒíù“øQ/¶Ÿìe	yÏ\–ð ý`L†24!G½©6Øšòâõ|E‚ßÂW$ì·ð	ò³Bx§ß0ÞÂW0Mô4×oâ+âMœÂ}x§_?^Ãé7ˆ§pú
àœ²:Ü$ÔéW´ÂJæÓü’ößFO)Üÿ",^Ð:˜³TíŽÞœÕÞùú7Àý»=�œ.# ©sEø=
+Ÿæòÿ‘ð_NþŠ²‡óÿ¡0¨îÂ×–ö}mwQâfƒ³ýÃ—±F[Ü…w’A7—ÕL;yi~U<�r~Æ~¯Ê-ôÁ³Î»ðð§x¾¥údÕ^îsõ^�ž¯}Úk;;÷ývBâñ­°Pœ/&UO¨A¼¦½äÝˆÐß¹BÏœú0U¶‰Â3MhÏ\á/'ÌPC³9Ò–�¶åcmùx[^oË.Öü‹MU¦Û~9eùZsÏL×�Ç–Ô`±�»gºÄ6Þ·Éî*'S>7@XöV‚Sâ¼³TÇ¦ÖrÏ&ÐÀš®Ê+È�ò•÷áþDñ'†?qØD¢É­SŠ-3™¬SâÈX§¨ ;'øÅÈï¶	~Q�„üâ0Á£(aÞe¬]£Vœ¡xUZþê–N�½(öD/J>Ñ+Î%Â¤a@�†ôSS\˜ÏZ?Î×5Ü^Q¾>¹|}rùúäò]^ÛÊeðŸ¢‚èÿô†ë» õf×RLà/aðmJ”Q5{¨ËŒTR„w�bì8¢o'dUœîžXB�úÌÅÁ,SÒCër&ä¬î™9Ì$ÂtÀ²ÓwAÔ‘…v¹Pƒ)â$ñ:pE¢Ôsv–W9yR…8(Wn�¯ñ.AÄÕ™@õy=©zíà
×nð¦ë{¿ó ¼ùÊÃöƒò*”òV½ÍííÚÍí�dcC¨áOÍÓŸd…�»w­†‰â«Ò8ÿýà¢m;°ÎýL@£aKë¹¡¹Íç
+”�^’†ÆžRJy#Œ40`Ë�nJ™ùj!¼ðƒ¯*òK?ÛÌVs˜—ôÇEXþr]¾‰`…ÔO#y&>ÏdbÚ£%dM�-­Ç%dê$vÈ˜w�á½õÃ»ÁÞï{I ¾Õè�^=Ð«ð¾x ©#ñÔZF˜‚�<‹ÑgŸnbìÂ§›T
+Ì]ÕÈ8‰·µ¦Ô$›9vù(IÆºƒ³ãêaxÇ}øi
+ÊÞšæìnM«²””’‡Ø»·0Òú�ýDŒŸÛáý¶:®Ïa›¼–60ßù@cîöVÊ”W0{üÝ·µ6ÁˆÞ©>ÍxªR	ú‚Z9èí;÷–¡Ïlm¥ÅÎÖJEèÚ[k«]Û”J®ô|E»£‹w¶*Ú¹Ê¶VÅ»\UîjÚâûIÀÕ9à`Ò‰Dwaìš÷:kF5¢1²��ghTí.²‚eî¨Z(5ô}M@‘~­ïkc5a™'¦‡ ÕÛ;^’„O©°v#É—2·ÏÂ�¥å®Ià(mO†ä÷�ÿ—·7��âÊî…«zou$uUK-µ„$4Rƒ+Ç3™Éâ$o&Iƒ“QfÞØŸ“—îT·<�N>;_òaœd2“'Ûx˜Å6``6‹Ìf°ÙlŒ¬êFcï»ÁÛÐïüÏ­*uK2ödy¿ŸÔU÷Ö¹çnçÞ{î½gaOBƒûv¦“\jÌ.åõEœ$* òf‚ ‰aQhX
+}¡¸D^š€*ÑË]t3Œ
WñÑóSD€y„©
E|ñ%“ã`¾xÕ@²�6(±�ù¬&^ž›Ó¾®îÔ§l^�v"€ð…ðÄ9qÞ3ÈƒA”Ä…bˆC7ž+j,FÌ5'”låbäòð#@(Ï{’‹Bùì¢�Õ�•<mñž)�2%ï£Xö¾�Ý•å&ÀyOÚÅÓ-þ‚hÞ–ßÂ^V¹ä_ç†yjƒýºjŒý:e0öRý°ÛhÑ¿ƒ·Ñç•`Y°<çÔ-»vÜåú°‰÷cž¿5ä(!ukÿcm±ñSf–ÞOº¾ä~RÜR_þôvw›ø²×”öŽ¿ô¶’Úù²·•>¾­ô‰ÛJ¿y[é7o+ý%·•~¾­ô¿­ôóm¥äÛÊ=¥·•{íÛJWÉmå#|Ûøh›HbAÚ‡�^û¶R°0Þ/K3¸Kz[	ëLJÔ,ßÉF31a­øŽ�£xo>¾ÊÚóš;VÚÁWM-Ý¯ä1^hL³÷ànÝõ5vë®ÿäný3†%h™+.à l,Ï·’ô9VÃŒFîûª=]Wÿ×¯/2¨y/Úê‹"	Ç‹¥Ž—l	Çý_%á¸ap»¸X#IZuª.oYà=¶Ù-wx Ðs¶^ûÈÇ®ëûíŽË³Ô¾òúXaBxl>>VnK­“xÊ‘‡C–o*Ô
øq'—†LM£ìÒ�¾4¤M«JíôÑ‹©ZB<0Ÿêyø<qZ4A^¯›y%3ìK#…áùhè)å�¢$—ØXÒ—„´©\€%—+€kH8,ÉPþÊ,áUÃ÷¢ú²�å,™5—‡LÍÃ)ªÓQ Þ[|z¥^ï¶>uÙŸîsÛŸ„Ï×©ü©	ûs´+Ì4»S÷6è\Ke¡©ZÔ.'A½Ñ»2�R¹ÜC(äVÕáp{¾O
!KŸrCú”«Cí«Cðl³Ù—Xj_’’kBú]Õñ—£Rv
ÎPeÙí	Á€�mÅoöeV'°9ÐÛøŽBVbé¹]uºÝž�2´‰ú[¤�ÆÎˆ¥Y²n W†(å-lq™_'
”ý‰µ!ŠÊe¶µ¯
É¹¼úV¡�\bCûFgœÌuRg »24,í:;íºÁ´ú*šÇÜyÞ ß�Ù�húž‡/ù|4µÁ_©.SÅè»kP�™Ü\ìL!dˆV¸Su¹Üžß§!6}Àh‘Ö›Ë ¾*¸	J•ú†�¶}Œ¶cŒaj($¦´ä'Ni‘�Ô^•
šQªËïöÜ�q:�½t·am¼kã
¾œ�5ÇXë‹°æL¬4GNiI»,¼¨3|ZÒ›‘:ØF�˜GóQƒh
+ÑK©	V¹
â+ƒò-ÄyQðšÌíu"HÍ-Bs'í¹…}Q]Ã_'^#w^Cì±Þ­d¡ÁÒÞ|jý©õô›Kmô¥ÝUW
m`Ø`x_.u0Lkã¡0­(ŸÔÃ�CÚ‡§½<WRÐ‹`N@hX¸=£àW8ˆVmŸÄh™ÅÍ~7{im,iöÜHÍN	ŒösõN«=„P¸£QÚÍ=‚+¦ÙV®ú'5¥ˆ/:¨0sTåÚ!ü Aqò¤~Âµ‰–-¸
¾'˜k¿'È¥¾›‹—üRE‹?WOÛîÅ~ê½÷ž(å³Ñœ�Ræ(›¹ªÓéö°Ÿ>¢z2!£®†«ˆà¤¾â!$HÂBƒÍ¾ÀQ;8LÌù(áÕÏS·ç¨š%=îìq·‘Úìƒkaô5÷>m›¨û†hÒ}�±Ìç±SÆóC|k¦…<~FÁWˆÏˆ¯m‘hv�Gz¯4h¼¶÷´ õ½*œØÔŠÙÅÇ³KüP›4�ö†½Ø¶ûTÕ¾�Š¹*4¾/³*´¯ßÈ¥V…|Ÿ ñQàÌð’]…¡º�áÃƒðûá¡TÃµÞÎLÌ
ðP{
Õ˜GJwéH�Îï�ÉÃ@£¸ˆ s g8U=¶ç‘’a5Þœˆ˜Þˆiö[¡g£=Uß:È¨m7úL`WÔäë}l8œÞ6ùŠý:/V�Ds�â_C“ìÍf·.Š‚^\ÓHiI‰ª¾�\Y±2Ž\ûAÜÐÄ$ú¾y —�+i‡ëº�ÌF_7§Èíûýª‡:N£Ž³ŽÏõƒõl�7q°Þˆ¬—9ýÁ;OÞY�þ%<¶bC)ÃµªÇX_ŠõÎUCýö˜½Þ­ó]¿‰Ö·ì
+tl7QšË-XªeÜ
+?$ÛÒ7†²;°š¸[¹Vê,ïKî¦‰{w(¹•¶V[CÉÍ`Û7‡’…ë|½×ùäìC¡ï_6…rÙMÀ¾Ü^vc
Xa·!ø€½$l#ÌÛ�`%“nAl
+5Ö–3.kå¤·MH¶ÊN¶‰’q>«y0ÿ¤÷Ê¦®~}sÈˆ?Þ&e·	âô:�J€gWŽ×Ê­Ü£,Ó«?ÎÅŽÚ÷;CF.¾3ä Pè*1ê*®Ð#¢
SÚZÕIT?“©ž>±G63‹ï!Îp�LY©pZÈ]²‡»¸mœUš¼P$îC6]U}k1cþXlÍƒ3G/Í%”R2ûax�[Ç‡	awhü¨0ÍÀõ–�1M!Iëh,Ñ…šÿöPûö�d±8$�¡àGÖ«.‚­ä°P,T7Õ×�l
{«fù\äfjh
+æR‡Û†5�|(·§]#6Oqcü&•FŸÌæ§“�ød93§µ«O¿¦—»9Ÿ‹ßQçâœ­v€r–ê¦^û§Þ+sðÊŒyc°Ž´q>(Usbs¢V¥üá'Âåod
+ÙÈÞ6¶†ævñ©ÏÖP×Ä!'ÆÈÈ@/›x¦Äé1&iZƒhØähØ@Õkp®ÞmÍÕ[T�G´îC!Ó¼5¥C�‹×Árë±ºX]·Y8§ÊR–•ÄQ“QÜö’¸/ˆÛQg6ÔNÕG¹üVÛ>j*˜Ù¿EcoKè:)»%„åqw¨khüù\Ãô>Ðfë«œŽÊw
+ŸÓç€‘nJ@ƒ‰`µEM­Úâ&m¹|�|­#þHÔ™y²�PA¯Ëž’žâ)é\ÿ×oÆ”´»Õ‘”¸ÔR%.Õ<koñÁKCIèµÜë/Û,ç|ž5/lQ——
nh°N¿Ó.ÜkM—êºüFÅ€_�|Þ2:þi­#õt4¥DÌVŒëS‹<žõ‹Üù!ÚE®ár‚PS­ãg.sb¼Å:1~ÍµOf9ð^œß‹ãýª›Úb¢°è–ã3êÁõê÷FiÙ=ÚVÙcô»�žÔÑ¶´Çç1¡i²!Ê»­Þ†BšZ¢ƒtPµìŽÏ<ãä‡Š"zñ˜®)äƒ8½Ñ ~Tü„¿DÅ­äºâ?c0qLÿÁ0ªÙ"Ó#~_ÔIµõ³ÂÜQq•Q†®ôYJ�@ÀáÔ_	##…³à¿’3‡ÇÞBñ8mJ»„¼b¹š+‚£Ì Â8b´©dV±Ð5¨=ž.‡Õ®¯ÖÆK�2l>ŠRÑ:«x†~K*iÙqîÁ8XTÛ?hÂiäÂ9l¹QËR©‹å0QÉASSÓj¨kYz4Ì¶™cD=ºAHóg4®SF�p‰ã-UD,ºÊ©Ø]\�|ºì2åÿ;YÔg#Êv GÖ€¢(J?
+¥õë•þw`JnˆA?î8§ÕI!Û _i‡††ôã¾µ“)¶A¿Ò>W¾voÿÚ­J+ÿÍ­Uæø
æÙ6úéµ‡�üßGŽ+�8üT1ˆþøæèe¶«n³oÌ(†
¡ço:þ«zHM‡G®~Å&Ø}0í³UkG‚éê"ûlç­ °ÏvÔ
+
+ûloXAaŸmÀ
+
+ûlïYAaŸm¿öÙ¦—›ÁáöÙªëþ‘x‹“Ÿèï÷>/¼ùE!|	»øïYáóqÕRø4¾Bás«}¦·Ëæá‘¸Œ'J¹Œ#ªÇç/;.—Ø(¾$/R¸fÿB�ÍÄªÓú.w_-°'�‡«ˆ¤ermƒ™×9�¢Ej¹ŽSð@M“ß¼yÑÍp†À>¦5¸óÖUùPú¼‘û¦°.B_ŠpÜ`}5˜òOÚGþ2Ç6‹á8€–{j¤–{º´åž±92l”ŽÚ!Ø{x–[ÙOF¶ ³•éâ*šèÓ`Å„�™*Ï²e3 ×®Î±ËTç!«:‡Pc¤êäJ«“/©Î±’êô©nªÎoŒ\é›~Ü

·IÑo—´ï2%Ýn•ôq”t`¤’/-é	.ÍTùKZMøzÝ`kcÓ�‹à˜Z3;bc�€ËaA8¬îxÎ®dÿe*¹Ãªä¨äIuðŽçyµäŽç”jÝñ|ÕÏÎÁ;ž'�õ…‘šîÅÒ¦{ÉîV¨ÏŸ.	½¬ÂÂEfÄV…­æû›zØ°Û mLK§Þ4;-ìJµ°úh�K~šÔñŠÝpÇ/Óp»¬†{
+U|•Ò8]Cªøß\Œ�'æ þL(»<˜ìÅ¦®7”|ÏgC¢î¯Ó˜t¹ÇÂ�s�y
+œ˜%–�||yÐ1o9¼:áËJuz]îëÅ‰»žU}Ëír¡®OE+$AhÂj ¯9áN‘­•¯)wí"N´…8ö*�»2O¼Ççn��8¢¼Ž†0¾ÞT]~—{-Ÿ+Ä!¥ŽyQêðÂ¶€a^St¸*þ�22_gœ¦ÝÌQNÉÒúÕÒŸ
Å·6!&À‹¤Ì2*™Ü@û(ýé�5@<µIøÊ=^ôe`Ï‚*–Ÿ9à#žÃ«>T(€Wwõß
+lŠÞR-�âÏµ	�â»åúì÷!6R·¼£:œ.wS^o.ÛâË"HŠñq$M�…2'�ù=îÁFŠ)–êÆ1méØz`¨³œß§Ý½Ë�c±þ�‘ígY±blkèŒ*;¬ã¾³ŒyìPÌpÚJàÛš	=‹Áù‡Eé>b¬Æ
+ÇPv¾Ç(ßcÈ÷“â|—Œ! sä}“3µdœ!©NÓØühNÂòlš�ÿYïMÌUˆ87²²£#5—z8* ¢âoñ÷g%qÂ	ÛçªÓi‚fã
˜£¾(lïƒC‘‹\~‘G|G3NÁ.•¤�¿]B-”¤}£i;ÃÅooFÆSÂ \]>oRÇÃDy4UWxò˜Ê8ê(ò8Y�‡’x`°¥°‹Ïia‹âN™8÷Î8n+Ã–Y¬%€qÀ†ÒÛ¡Æë÷ÊÙ	8¦Ï>?`~)Üxý#rö‡8�
�p×¹Š#ÃT©…Qk$F{¿/¥F)Lõ[Æ©m¥ù4¤o,Ï~Š‚Ò'>²;¢jKšØ¦(\g‡­àé
+NPÃÖQîtÅÈNW`÷É†øÔÕcC|AÔõšl�
ñ ÖÛïÄ;€Ø`CÜ‡\6Ú÷Q.÷!—M6ÄàØÆi9Aœ	úÄÙ3@³Å: ­6šs”Ñ9@l³!ÞÄC6Ä{ñ ¶Ûw¢(;ìŒîT8£;Qš�6Ð§@³ËFó)¡ù”ÏÄÂ.‚øG‚ø<TÙHðy(qÁ¥Ï‰|Žìç!Š×oÉL«ß£à¾\ÿP€}XöaˆâØ½ìR¨./•€]
+%(­Ù(ÚÃaÜ	üïÞ+s4M:¡eqî'
ý;™ùcôûÆèçÅ�þ'DöŸ„X“91W1Úç*2kÜb¦_ t­ô÷¹‹ÒS $}�†U�oÄö\¶·—c¶òk—ãöârÌV.SŽ½aœ†Oì½ÒX`^LffŒåµ¡m^3·9øª(`~Ê¬GØün˜ñ­ñ½ßÀzúH'ÆÍðùìË|šÜOÏ)õA(ñ+*ö¯™Â9
+â|0lžàÒ§F|ÂùÇÁ&Z¯SØ�CÉæP²iŠ>U�7ìÄ"¥}‘"%§*—�Š~ÝÏ„8—ÖØŠÅ:ª“·â-y!”8&ñc²œé“³Bú…Pc�¥v!¤9i%$N'9�†Ò4%ùn¨5ûnè†¾ƒÒÇDú”~¥ße¥•$hãa·²«P 4�I�Wµ\¥}ÌÜ&÷é(Š%¶øÚ·ø$ª“iAUÿ8Ä¶ž·Éúmrf_ÝÄÛhSF	ú’z_&H>æN,¶/JT÷ª¿§Å
•P¸¡Dºv:‚àúâvˆë|)”y¡Mä³Ti_ªH‰ÅJûbzÌRÚgÑ£SiïT$1Ãü ”š>–^ÚB|:ÆíQu˜Èë‘ay™÷Ù0oòã^³‡ ðF¡ÄÅÐÄ‹!‰"¨6ðº�˜‡î‹ÏSäÎºþ\æPKÂM_ânæ‰aW+ì¤9¢»Õ�1
o­B×o,ÐÆr™ê�º# ¿É¯h=¬¸°3ÿ'ùY»àÒº›°.&æ+Õ>ŸˆH@]9S¥ø±*Š°>£ôÃ¾*Šá©§„–ÞåP
°µdî¬Ó§(í;ù‚ò1¦ÃÜ‰üDPýÄˆÿDn_Ü F|ïÉ€Lmû=¼V?vÝž£ëí‹õ7vºÀ!ðñCK…1&?eÞÁjò€ù
+ÝOU¾j‡,%îâ†¼‹ÒÆñ‚§ÅÕ=¹�YçNîõdzÆvçGM”YÒ·ÃÇ¿~–…mq,›Üg�Pºü¨ÚËZ\Ë W[®_AŠøÅ6Öš¡´/õbÛí½>ªMåö¦°Öí¿™—ÚR/µÙIý”´â7EÓ}ýä(ßº±-Žn®ìFñ‹½lrÅ�yÞMµ~[¤’°_£ÜÓ¾¬Ü–¼n	Tb�¦´™˜t ç(}—p§½DÈ™ÇqÝ2›8÷ 8÷{Ô)žÌ½*ì�¨ôeNÕfN·µ¨·ÌÐËm-a*¾è�ÉeFºŒºÄÃ~À©£D…'wré@wÚ5Ê+\õ,ãÄ.bº:Ì£ô0ÝÔõ›#õÑa³‰59UÂh·¢½N�¼ØÀêoéð¤¥dîýýÈœÒ·Òø¥áÀÓØ­Jû­
+û·ælgYÓ2§)ëëÌhb±111 D5\"hÐŒV±
+\îN³|S‡—·®3DÁÎ†ÚÏò¬u„ål.X]f³[ÇJÄ:ðƒ²¾™gƒËŒm }ÜÇÝ]‡Âfž¨'DFñœ“ÑÓ¼O©.…ô�xÚ¼$røò'˜O‹?ˆùôÉ°ÓçöüÿÐ˜)Ÿ¸±\êÜXa+vMìæ\°ï6iã•¶ÎºÎºñ^Ê’ˆcä´WÁi�9Ó=étÐûúhÚ%^
š ‰L	–¨4íÉåÛtQ´þÃ´L?Å½UC3çcÎÀ†Y�ñª•°­.¥ERÀ/QÚ—ÐA]@qú«mAT�ø°.Uû�«†¾ì÷½_F{8Yã\¾cæb-m%d³ÿËÈ†’åäõ˜o¿+lÑ×ˆWMÇÛ=øòz6ŒësÚ™%‚-Òx«ý´ë™…‘ÙŸpåhhæh\4Ã4µNtAò —©&ÄÌ	5Ä`¨m“b„Mé%ð4™­^3:w™$ù‘“ËÝ
+MQ…½a^fQ†M5‡?pÑ
8zcÄ¿…ŽÜëË^"eî'1.á‘Çú0CQJÆÅ€�L4;Žß†G�[Ü¯ËÜ<Šî·ÀÅ=Ç{¾†âÛEQíÑHvQ4¹8ªí�dãîödØÜg‹#šçíMäëæ†omøºÁ/�²w|/‡-CÈo´5^¿_Î.Ã÷WFÚÓ½vz\îØJ}N¡;Ü¹ªã(g â{Ä¶Š¸Š³¸3o¶åòôƒ!pÖp§Ý8�QO
+4²hñ6’œù>m/`Àþ5Îì$Ï(å,e
+18Æ1r”"óV[eµÜT"j +ÅûÛüNlY¼uÑçùÚŠ&b¹«ìè·‹£U¡ERœÀÔ­)ùòöàÌ–6øß¿Ù6ˆh0ý?Bƒ	�¨ä·E%_gÂº‚šù9å:)ûœ’Ì+úÙ¼’<�ð	%ù4žO+EÛø7xVOf
+çMï3´Y¬ÉB(€²ÀáIþ†ã1{·¸[Ê·8W˜‹ÞHöF%iÐÃ@·¿möððqÚÝ=®$û°€ïÚ€�ð={ÿùA<ˆ÷mˆý€ø€K}ÒIá�J¥!KÉý¹_©pÉ’Ÿ
+�¸+2ñ®ˆ”å7Ý ^+"ÚþpOjv¤b¹	3'2qŽ€™Ã0s³CîIÍ�Tü»	óý‰ß}Ö~åÔîr^çHõ†*ôá_§¸´Cæ×ïÿº°¶õZ9•U´ÿv¯õ­lø·Ö·÷¥aßæYßrâ[#ÅW<.IØ?Àþ°åàx0òXþ~A¡�²åà(´Ã9+tXQwçÌ»³ŸPh—ùÍ]ñ':È™7gß�ù•ªœyq˜>|ì�`¥n?ÅQ÷ÓB¡L¿T ¿iü·æRáñK…W/¤B!Z(üN¡ðS¾Z;c÷ùôùY›*ÖP_¯U|Èç>8zN±Œ =§ójp o#XÛV‚U@ð	C¨�-SX—m·2!ñ¤RÁ™Û9;ÁnJ°	>µQžÊó6Ä	‚8ˆ\¦A<-J2
+"\OÓbLcxB#ŽyÑ©eˆ©ý\½lTY0FêM˜kýÜÎæidó>ü6VŒUA–s'
ÀG–ßÀ”Ñ³¥¼2ž«wä÷ä[¤êWhSû4•èi”è¢�ì�]²Ë|ˆ ¢À–æpgµÓË²k��Wtx°f½™ÕJg ÂGýÖ	øds~þä”ŸPÄ‚Ø»+ˆy†¨;+´=í…B~õ
J7%Ê{ƒ	š&ï¼z�
+ºÂß˜]á‡ìÚ”jpW'XrJ¹›¹õw–zí¹â­,g¯UÀ·v¸;
+Ð–_qÜÝÇªù´f^‘È+ÆÄ¼"Ç¯ õ'žUríÏSå†r�ó±<g?4~ŠI{1É¾Óf(AHë™©~ï/n@Õ…Bb�/_ç“‰ÏœY§ç<ƒqÄ{ÇZÏ),L¬¯ð³Z&=ÛŸòÊ¨bW5ZÿOÁÿlVRyo¢Ü 
Šþ¸’z·ÍèM^Cß¥¤ž¡ÇZ%õ$=¶(©çèqXIõÒc»BMièÛ”Ô)¸{�Z
ÂøKš½×ùŒ’’ái0N”ŒâÄð˜E^X)Ì\-�¼*Ââ©žæA8­ÚEÄ îB@
PãÝûQ¥±g<è{°¿úL*(íK�’žSøTï¨’X‡®i‹¯SÙ£
+"–D)"¾$*S8Ñ‹¯ ­ö^Å‘8F}xLaU2îA^cA^Wäu¡/;<‰rÚ¥•Ë¹Ô{mDK9/3i—ÚW(@€z5‡‰¶dýû¼f@Y“ÆÉZ³-XØ>Ä¹ ßD6íÏVˆÛ¿Á­p+·óïq#XéŒIý°¿R’Ž>ç‘W¾½Ï+åöCÅ æyF1ã2¥ºÅ,UÛW•êDI©nc”¿S„'`—Ep²ÁíÕÐíùñ jÏÄa.2Ú�{¥Šß¶‘õçhÆc!Ë[u…-äÙ]SOÍsŒùŽj—Ø¬ÐJÅ›Bb
+ˆ°sq#äœ÷¾3àoí²¯6'Ëk˜nˆK!rÙCÝ´GŸD}Âb¨&â‰*MŒË<— J¯ÒTbQ\«Eq9jÓ¦¸;«!Íz-k9¢®†Èî{B‰Çñoþ\"Î“ª…Ø™gë5Œ}%Çh	šò¡Lr¸ã£Lû¯ª]Bl|8Íç¨\‚»ª=·çN§�…t±@¤5Íáz�þýÔL¸ÞÐ¦ÙåIÜ¥wŠÍô†â÷G)oŒSõ*oÚýwl§³¿e~ÙœÌ�IÛ,3æ-ŠÁÕ¾MAF8.“tÚ•Oû	 ±^¡Yš_ãë-NüiÚ§ž,ÌiqN¡`•ú©¢R?Å¥~Ö.õøŽ2ÓK^ºì¿®ÜŒË*x”ž.ãâÒ„ ^âï·Éƒå~¾¸Ü`fgUãð›v€9ch™Yí	úc¸ê›]í)s{v.Gè4_õ:hÀ(š¦²µK¥T®¨v� ..|Ú§@¥­˜>±fùáßÊ,ÖqÚÊø«¦¤(ñ_@î™›Y¼Õ¶M°;yå6VòzFIû†À‰`qLû3ŠËÌl
õÝSÅKáïc|=¥ÉªªêÐÃâ­ì¸>hs˜8÷R‹éø½K˜	æ7á	d›î+½-þLÎÃžCÚÅ&àrPÞVu‘Ñ>eÐ1¢¬�Új;Wt‹Ýƒ|ÀæLLA´ŸmsTüðò)§¸ŠS:9õ‡mœr´�B8‰X@Ä½W¦ÝìlÑc:[ôü@·NÞÄ>]µI®r©·Yr_ÉF!Ž5ÃÄÝÕÖÉN§uä1—IlÅ]��½É�<B,Â#Š\7¯ûöjè1ïÛ`ßþgPÊªg9d½€2ôxq“oüPÆ~o^„6|PÌªvÒ‡ÿÉ&ˆñIÌ‹ñyY?E¬ƒb³ÿ˜y+ª?o12VÜ›#Ä½aÅAÁ‹3-­å}(=îŒçìÒÿý]R"Ù“(ÓÂj¯ìñ¶<,�j—Út§Ø^™Û(Oj) U{^ßoÖm1ê–ÜGsú>%ù°b¦ä4Ú,çuîìÃÈeqµ,{}àw—ârø~j~¯ïL»‹#ýÔ/Pk,¦ÖX‘“ÓßPRo(9ýe%õ2=N+©ÓôxUI½J�W”Ô+ôxMI½F�×•ÔëÈb	*‹çÄ§Å•=©àÿúC,“}�K«G8úè¶¨¤h#¾¬ÚT­b�}ÄöÑêç‹›z_Nüs»‰ì>ù–WÿÚ;÷LAD‰Äo.0¹�/ˆûÀQîJf³2AŸ®B1ªzÈN}ºjd§«¸�¯¶ö±—XUmí%.Ò^â"*¼Ú†øklˆÏ	âs@¬µ!ÞÄƒ6ÄÛñ6 zx9ý}‚8]¯¤ÌfB©)–‹¶ÐÍQ‡•åÝúû
+›Š“„’Ìv¥«*Fv.·¢Jëí\n¥ºÜŠºl°!¦b£
1� ¦b“
ñ	JºÙ†ø„Jú	JºÅ†˜
+[mˆ©„c*pl³!¦â!b
+ALÄvâS¾¢·!>¥\>åûyâ vÙ—â vÛñ°
q� .b“Ëbø@]á7hÃ‹‘~"–§Ø¬|ã39»YáËXý¨¿µµý|›#Ù©¶f;U
+ëZfo½þ±Ò~�&Ìk!©ûX½¿ðôkKlG„�®½¿Á:h å˜R=Rÿå®÷
+Î©…ýÝ[(ìa¾q/÷ü- P_oûò:y�ß
+21žÞããåÞö¹N™z™Mh0	¿Ol=¬/ŸW|ø"ÄÎ+Éw•ÄgmñÏÚ¤ì»Š~^¢çÄí¼‚ƒo˜ÞJlUÚ·òÑì#Õ'ïÎ)ãû2)¬–ú‘5Sšë-¼¿jkë�ØÂê¡T"¶“{Ô_úéó6L‰�VãBô�©2ç•.“û¡×Ìm]E–uÞU„yÜ P™T¤d—j›>.Ëv�HöÙC÷<S;@o+%ÏÒ=«$ÞQÚßáìç<ÿ§�g™�ç‚âL»T‘ic¢„UKÀMKß–	#C]êdÜˆ†Âµ8ãŽB“O7$É�0-Ñˆ\Ö"wg?�üš=Tí‘yëJ8Z$Jkµï�_Þ¾wµïH„qÚ!3Ý,ªCó?Æ´4÷ÑgK‚™Aœ@*ýzÓ
+,êÔSõç”ÛaÔn� ÿG	Š_í
+?Î
3
+Ô¨ðf%I9ÊÙ-Jùe+IÐtv;å ´ÆIóšð-œû|áá!Ø#Ônu˜ÌÏÐm£Š›{ˆ~Ñ†5ú‰jSÅÒê*p¾žŠMÔ…¢1›ì�ØœÇÅbÎã1pŽ[¯êA%Ý§˜hAëÕŽ6h�zˆÌž®†TŠÚ{¥v²A[Ó¤­mÒlºÖÑYÎËÎ3úŸIÀ~È‡ÿëö í£Õ#È =[]rûÐ;ŒÁ‘8ÿëbaÝ,Ö¥0å›«†ÛO)Í|•v”óÕä<7¨ÉÍxnV!%Ö5rŒCÄÅx'LËóÝ*$"zÍK½Km�ë!«|ú2ÌëÇª-)Äe4¯/DŸ
±ý6ÄZ‚Xˆb ŽÛb N0ûõÌûTM÷©­©ûX¶yø—6ñådµÓïrC;1GÅí#ýîëðÁ tjŽêóù¼“:Ü‰žøÏRç?�Çíej¦Êw�ô›KÝN¿yxDö¤]ðY|·*lîÑKê°*˜ôn5ÅèóUq G/ú½j{~¬œX¢¶/Q¥4[R­†¤)4}3·«9úÂ8Sa‚TØVÓ„ˆ)žªÆ%ÍµÂ¼kcç?³˜-¡ÅÕÌo
^ÍôST.Sh#€|f¦j(*\5©9qvefŽ±‡›’'ÄM	D°¹Á`ód¾*Ž]MPHbW»¨”Wb¦(1²s»edGß &V«9}}$sg}|µê@�!³]
RÈNmPÅ‰¼ÏU>Šˆ/o�â>¹}®
+ÐÓÕn·Ë=Óƒê�í£®bcg×Q$þ]‡¤¯R+[ˆ”ïS/È_�¥ì}*õ­öh¦rÐÉ+Ç$WÑº¼JåŠˆ†Ðç©ú“¾LÛ‹Ô;cíSb‡âC/É ŽÌ&·y}ªÿ¾CN.TóïP¥ìBU_¨V-"0z»ý�Kï¦!¡|æ°ëž%÷Û—ø~›Š·jYƒ¹[M»zð‰ÏÝj¦+F™ñM;âiÜØ‘ñ/XBcê®12=(WØéÑ—«•?_Ÿ©×ÇÎ ´òûø˜[0õáEÿ—ÌÔ˜¾TÅü›\N�²Yp‚þAëxf‚Ü—'8R¿¦¨‰#õ?R/gnsä3÷8Ø�wIüzŠ¿×‡Þ,BÉÝ[«®©ÝrMkÅ¥T@ÄpËl¨×¿“™7F_§¶ê�{3—j©°®ä<ý™�§&gs²ìl5y'ËÞ¥Vl�!Q“BK`Ôˆ´®08=ïR‡äÅn³åÏ:ÑòUÉËµ|Å�–Ç¡òÈM^1¤É	’š¼
MN:7‚�÷2­p.÷ÕÅ%ÖùX�ÏÐ/3µQPmŸsz(3¥QÀ|Úš9ßj†p½ü5�L/F2½ÉtFò*#!æ&¹’Èbå`+Í£oRÍ�ïkTOÃ½ô+Ÿ¶«Fû:é¯W;\.÷°¢Ú§í0çBá<�W£–8àü>e«P ÙP’Þ¨†|÷£fz¼j8=ê³Õ‘ÈQ¿KeššhSão¥Æ¢”ƒÄh¥«bh�‚l.]úõ5ªi’9§çÕ­‚ƒÌen�é3b™Ûb=¸õN®¡[£&gÑc–Zñ-B·3BÍ—¦ZÀ‡kˆ(™ÙÞ³Tö8‹"g©æjfŠ¾R|[IßVªæhÎrÔÞoò3>.™Šß¯Š-°‚šmæ8¶U´Hm_Äóý[ÜÚ±á)B•œÂZKzÔöNð6X'¬ÝÂOÈõÙ;ÕÄfð0ÿš#ñ)ïòÒ�‹íêµÄâ©É-xnQ“»ÀˆìR�óžÍì;ð>2ÄAq�´]Í©™1hVû¶Åþv†Éï›ôm;UnfFÐ…iBKKmQÇ �ÿžäsò½äYN7žq–’í.Ì=1CXpµÈÊ!V[Jwšíp„Ú¡JÕÃdL^­Ó^¬Ì¾Z—|­N›ëÉ¾V‹²¥\Þ'Õ–ŒÉ¯L|O¾Ýà„ÎUÃ0í�†ý´¦ÿTáL{©£¥,»Ô‘|5Øš}5³•Õ0Ê:š¾þ¨”«ísg^¨v¸ƒå5ìðù€Ú›K=ªöæS{Õ^âx"¯Ïˆ�
–_CÅø”í¿%w~«ÏhKÍñFfž_É—é«kËG“H¾>EÄñlº�fÓCõN
+Ûì~Õ´÷9±Áò	|w.(bîÏå2úMrõÎ;ÍÙ=j	Â�ÃŠ¹è‹jØ­gEÌÿŒ±!)ÞG³Ð>ž….V»¼ÁòØþPõGU!r42·�%æk¬ªJÌnÈ	�Ç~Té{hï7�×i‘Âã€Ãp@�<8OXFAãçQŠ¬ÀøW+µMr·#ŸÝíH»¨6ð’qº^?¨ê{Õe„�P,[NÉð\ŸÑ(S|÷ä[æýÐkhÕçD«¶ïoa“Š †À·©îŠ}™ºÝø+õ«éïú§ŠL5¾	E¦ÂHã°³Æ3ÚéÚàâ[ ˆínˆàLÿ»â!Ö°
äçøv›ª�Û¡�AÜÓ¤Ž2¾fø]Yò'¾k¤ýñ£.9þ]¹ó»ã;|™òLû2+é´Ýâ-—¥½¿Íu+žkÆ¦ƒ-7Œ†´èä
+¶T\ÞrÃŠÉðCkšt¨ðãì]Øõ-·-Ô–â�áÃt &ú7D&nˆHT1büÓ�ÔæØþÌcSÛÄÛê±©­x+Oõ³;ÛÔ§P–cSn	Îj/²E kÇ¶È=æ��/ó BxKûPøQñÕcàV>]ŽÈGã#íƒw„¸h,é¢×ž±Ë¨Aù¦L}ôR!í®z€˜Ì¢9t}Ú ê‚Ýb¡-'Ú9-ôøü™Y1Q�Ì§~ÑÖ#¬Ù*˜7³%b•Í›éwØÅ«àâá3Ç#Î,Ð‚B¡Xm4ìØ­€A¹QÛ4šÂt³–éæ¿‘d—!™L’Y=6(%™À—�Ì^›d‚_F2Áá$´Hf•M2kl’¹×92ÉlûZ$SnuË¨!$Sž5œdÖýß$™{�ƒ$#È§„dPoŠÿ
+’Y’Yn’LW�›Hæ»�ñ´ux›º:üô_FÿúÒ9ý�¢éåwçŒ<úqÙäñ ,�çÒ>HÉË,§Hsek‡7—_ÑG¼„§âˆyÛIuíßÈÌŽ¥ýËé-˜dæÄ‚
+SÔôBÙ¤ÔuwÇøj”šnÿxÊŽR¥fÅ¸%ôBTDhêÏ¥Ë)S*oÅ?IRÅßà›%ðÍ�¡È�ô¨¯�o”‰¯‰ð�f�A$ö0ñyÒes¨2„È­~³PH{TVPËÂ*ýäÒžeèÐ55éÔW¹ÓuL\Ç
+Ôßµ.x´AŒ”F¡Íåã[Ù¿‘ÄÀs
<?QLcVüØófé|Ücz¨·Ëº¡FaÙ]ª¬ÐC}“[ßÜ,SÒe£œ=r	!¦…?­îÐiÞÖŽ`Å=”w|—P9¦�XŽ’¬í,­�ŠrÚWæZ3v}Õï}Ii@ÊD˜4Ï¦ËZänMÞ¹¢ ij^ûEa'Saƒæ>	Ÿ6B˜‚>5Îÿ†Öí1«¸âÿ~ë–dý•­»ú+[
ËôòiÝé5%|î­5Ÿ;ÏäsŸ&>÷1ðž3jÏZo«)>ký¬�ÏZo¯ñ9XÙUû¢AÛÔ¤]jÐ67i´-MÚç
ÚÖ¦k]æ¹ë5#�»>ƒs×Ç‘ÕÌšî&ï¬Á¹±W\ºB´¥Æ’&ŸÏE=¢âÿú£Àò°ÜUc	Ï«±„¿Ä¯VÎ>‰ïóé»ËÅWÄö÷{è{¯œ}ßÖ€‡RŠEY>ªJ0ö‹üú6æÕºì"\”.¦–�j%¾·×ÕëÕâŒÖÝëL>ïd»Â-²°>îŸœ}¿÷S{–�‚.øJf
+”–ÔP!F‰^Zãp–�jÃÂþã~ý3‡ªa|Ÿ9`qëÇ3(6‡K¦\ûY:®{¶eEØ–s©ë°áØâ’¥ýŒò�eÃŠ'åX#,9ìªrè=n>¾íq7¦C+ý´RvÊï½Ûûã+õUø¿Þä}ë³½|KK(¼¾¡:Ô”±”9Œ>nV'Æzãcrv§k5)$úM�ÇduÄ¤Õ50_¥r¤XÃií”Óû
*çâ!åÌ«ø¿>'Ê•Í¡HkÃØâýàÌh‹;;3š\mqeWE“k£m©µ¸÷°ÆE°8T]­Ä¾M4Q­?X¯�ª�¯­“ãÕrjM”¾A=»Æ#ûËáVó3Õ²‚ý™š|OÕÇgrµÙ÷Ôä»æë»Øe÷jN÷�äæú¶ìæúä™ò¶ì™òä
+m©××FÙxèý±Öìý1}u´2D¡ÕQý3UÛ_§íhŠw78R«£Â2øé:ýcÕ´!®ílÒ8@°âÛ[j‘ÕÔu5ðÚs5o%Q¦æìÓ¿PM%È^×›ª!\Åé/¨æÄ¡/‰5ö`jJnh¦Øì†f¢È7Õä9ÕÈžSõø¼?±Ô	YKB¿¾–B q<ßÉ‚Äó��5¸jíu­stÖÀP&à÷J
+°À*À³”	5Í9µq¤L6Ö˜¶Jôq6±©ÆI¡Gþ¢jèU3²/¢“73PîíU§>­NÐg»˜¾g»2Kc4(oáâàžã4Õè4Rnå”Äïøu µm5ðˆôÿb”6õ•ø˜€¹ÚjZ¤ø52¾õ;Z\ËŒÌ²Ø²	4ê*…«”	úÍÙÓÏÆa{µ;ë¨žÅ©rhuA-#s¼òa¸”ýZâÛí6zm´Ã®æ+TÍWPÍ�6D? vÕ˜Þ ’+ÇÙ•c’ýØ¯&V¹´�êÚWñ¤¹ÛNò’<l#}�`_Ò=6UU’ö–)
>ZÜgÀ¾ßÆ^ ì`?ÀØúÐ÷ƒ5ƒÎ£ÙI/"écœ´
+¢ ”ô"*ÑhVáqò Û™\ ÈÈä	â}@áþþMô÷Oú)Ê�¡Á@Ïìû*æåŸÌ øî$rí×ÓÏžzVÎ³±¼,OÙù¼G)ßC>OÛïââ‚x‡ï"k¦«== ‹f5¼z‹ÀàÂÐdMæŠ"žEDž‘�†Ä8ÒgŒ…N·~ºF_íž€çòXfE,ó@l9ÇHÒ±ËìDñûŠ²ë/ù2Pôåø—d“«Ñg"›œ•ÍJÊf&gs¢Ùs%¡“v#½�FzÞn¤·©‘ÞF#�²!^ÄñmXó…;w¾M•¦µPHÒ[öUUßæímÿ¸VN~®¶f?W'–m\ï×KvnïRºw‘ÛéR’}¹¨æ¯”~zµèÓkö§³Àûº�÷,á=¼oØ/âM†Ð8hÔbBLÒKöePN¹­`t^p™¤ýSê• ÔïÂ#e§»O(¬±kJ“wÈ<Q?Á¶7ðr¡€‘ôvQQßáœ[¡UŽéXs*Š=O�Lîs“‚¡¤ïÚå>…Ùô½—SLÿ§œÓû“§œFö”SïñõæŒö©u`�Þ/Âe|ÆÆô!Zà¬ÝFRÅ?D}X[iXŠ—ÄÌE"—ÿÑ§ªÒ!íÑ¦‰!Ùü¨Æíö—E™±É§]?zCu	 }E@3¾Zô£“žýE Ÿp¡DÏ1e×eçêõMÂS({“KH¨¼ÈnA?-†Zà°¡8Ôy' ÎsWùøÔ—ïÉ/p28æãÕÞÔóùŒá‡ö`J´%N©ñSª4±Mîlë3ô#ŽÔ‡‘X‹¯ŠIís¼²¡Ïõ¦æz
}¶75›³¼©Yô˜çMÍóbYøœ3Cgî!ÀŒÔ=ŽÞÌ½Ž‡r©{ù@—ášØ]´+BÏ,;ŠÎq�žÙ~@^ä2^Ï×Õ™ƒ
FfuŒ�Šog†“ˆéÂ]}âOÀ|þ‰Ì&ˆº&°Hÿ,'CÍr~”$]ªtXàÌþÌ¢ùÎÆì|'�ê‰†5îå
¨çø“AŸ*…¬¢¸2ñJƒ€B8‰�éUäù€ø
ØN~@¡Tí ‹
+´�ÕƒM×g:õÆšècJÄEtV`Ï8ßëkìü­þÆÎ¨y�NK>ŸrÛÔbº~íuQ3nÂÍ4Ø{zkq�²è®Éî{�ƒÔc§êwPL»þê¥77…?W«>¢b½¤Æ_R%*€‘9ÖP• ˜×U¼™^ú?Þ]uRÑô£9¢˜x×2ß®!¹©¹5»©¹¢…	ÒBÙ)6íbK'¼'uñ�Íò-€«à$°å¶Eøm�il”X¬!D[íä\ï`\v®79›ÃÓEx¶79‹Ã·Šð,or‡gˆð</
o\Ç÷4¶eb;
b:ÅÐÜi
Mê©6ê)ê¢6ê"˜ŽŠ¸¨qe™øÞÄïq[°7/6É—:ÚÀ¡³Ò>¬ëIõ6è½NÈ©ëgTîÚîçê£:Ó÷0Ä6úŽ×QæÇ�­�†þd"Þ8ß«‹?Mù1‘Ñ9Õ/BçÈÊö¸ˆùL|N„>¡ç	çy¢0•ÎÎ–éãuÂwpê|I¿4"pÁ~YOá&Mm‰p¨K¸£šíI½Ö�|�¦UúÇYÓ?ìâ�¡¸3ª9Lú\§E0GaJ_p”0<êÖÈà”9#âñøËÖÈÂ<{O ½Ìô>'Z%Ž«¹ìq~ér0©#üq›Cþ›j÷Æª4f¦ñnZyÒnŸÖôøT.oB­€zÃr>+=Vï`ÕXm)Ä)HÐ½DÃÝHŒNfÊŠ²ØXùl¡Ð:<ÕmkÙ{œqDLf\XˆGß9•¶@Ð,bª£ez„­™~œ Gú¸
+ÿ„Ú~‚oüf2>Îz(Ç;¹½ �tIåÓ%•vLh)sÃô+»H—¨{.ñ17;Øƒ#¦ÌæqèuÂ,w†y�ÜYÇx )í’¬a~�=¯òý¼š¹Ô`ô§èôÎ1¹||ÊGo™žW'$ŸW¿EëãÄßrfŸW#I³#¦çWl�ü¼A2âÒF-8'‚5Ý\àïæ€¥Ì9·øÓ¼H1Ÿ7?b²ÐÇZdî‰ñ÷F`
+ÌeÏÛüÿ_Ÿ·,ACSÝÁ¹’Z¼×ï‰jG#ÙìîÒüíöŒ,À�D&Ù
8×YqeÞDgXÿÂ£¯mÖlÖ7ø'v†q ¾å€¬_b—#D×Ã)TgÇ<ô¹,0äÈcIwÆ(È”ðuRvJÇ[ë[³[ëqö±|~Áñr7µp (øƒ#Xe—EœÞ@p†“G’»±óêOï�.G0+ÜRhŸ–�µé¯åÌœ@çU,&ÃâÈ]áUX)»ÂÆ÷¥lWîÇºÂì~ÌLÐù×ý¹Ì¯7ä2·nîpåõ¿Î\¬[!¢„ŸÞ;£q¿Ly&¦‡Ónmm$>=ì@öiBá79#œödg„‘ô³¢¤Ö']]šô³aIÏ%ý¸$éªÒ¤ç‡%íŠ&=S’tCiÒ®hqR}FØ’Å�f×a£ø#…Z¤Ìú˜áÈ™áÖìÌpâ!GûCì†ryÄé²z0[«éýÑêŽyŽø<‡dY•š†^*Œ‘Ìt'ÜŒ»åøL·<©/ñ«pû¯Âè>½§Ï[=6#|ŒˆR†mÈÐì%ŠN�O¡ÿåVx~²»ƒ»?—øKÿRnl@Ûgð„½"âò‚gàúøG8Óœ*£)ØÄ_,“âs}’ïqÉ�Mý¸*ç¶há+¼Iy«12bËós[|Ë¡8�³iWwU|Ï‡ºµ8Òîå©ž±ÉÛÂÊ,ðéÇÔM¯Y
+´[¿-,€=â`à¸)DÄmÔëM¡tJÛåkeazoKuùøq»›ñµ�½ãN·R,?ºàÈ —8DÝ`ÕÒx¡âµøº›œÍeZÄe¢Ím–Â³Ã“;¼¯GíxÇ-—Ñ+bîvPÌ7ËD9á«Ìj‹�±'š‚�{“/:ˆš^t$Ï;ÓÞìy°”pËßŽ·á¦'¬[]Ž\Ü)Š¶.jb*ðòÜ,¸�´¦Ô'CòÔSñmÈ¾L¡f"0ÚÑ´oŠ9¬ «w§6ÇòV„@Ó=yà€‡Ú�sP÷
+ÔÊè)³�ÜÅ
4˜>cqè
+Cð–4l¸]ð™öù¢d h¾oõÒüµxCR¦ìZÜÝi¯i¯leÄá³˜À ÌqZÓ�ì‚üÇîmè�ž=À÷²—Å_§÷‹ú˜foG›­â¢ZçR[bÂíÛ|Í±*â¤9´›µÅ¯îëýÑ#4®N¼éÂö¦KŽ_-S´QÅœ�=Ñ¥¦ºÐ†‘�xr±�V�ôa	Ðª‘�>6� ¦DlD E“iáÊa0œøÓÄk|ŽCŽÿ©œ�úíMÍo ‡=Žï¤Þ÷šô_<¦øŒ–‚áß§Ö´ƒ)Ü{â¤ÓŠ2ÚO:Ñ3k"NZ{9{6:{Ö�&•¦‘òÇ¹yÄI]ø´ì]=ñj©óê�¼AÈçR;}E=d*b9¤–Òjò�Ìœ1ú�aœHçõßÈl¯×ï2ë©3Ë3(fñsuôó~]ûh;�K}èÐ?q¸Á.È�­YÉÃêÜÎôDi]–;;Ãu‰ÂÒAX`RüÐ"5¨¬ÈóÙŠÈµväEŽ¬Dä†<Ù‹%…"syÖü˜Îµç"ØðõD4íÿ¯Á¢`éì72ŽÑ{ÆdÖ¶*¼ Ý"œ²åÄÊÆR†‰»Ã”CûÝa¹BpXóÊÄ‡UüGôœGÍld¦)D9™�¾éý“3!ÖƒÿÀIObëå®eÆ_ß7hú{ÜÓnˆ^èmŒ_è­Ãz›"?r¸=R[k›´CMÚcMÚãMÚá&í‰&m]„M[ÑŽ4iO6iO5iO7iÏ4iG›´g›´Þ&ÍhÒrMZ¾I;Ö¤õ5iýMÚ@“v¼I;Ñ¤=×¤�lÒžoÒN5i/4i/6i/5i§›´%íå&í•&íÕ&íµ&íõ&í�&íÍ&í-BØ ½Ý¤½Ó¤½Û¤½×¤uG´÷›´š´3MÚÙ&íÃ&í£&íã&í“&í\“öi“æÔÎ7iš´Ïš´Ï©Dní‹&íb“v©I+4i�ÍÚ”f­«Y›Ú¬MkÖ¦7k·6k3šµÛš¯m3¯(7GFº¢ì[7ä¿%2‚×Öˆ‹"Yè^Ümˆ&þ÷C·7óýÐ¿Ê©
Qú†›ƒˆÛít³©¯‹ò±Tü¡¸É‡†Æ·ïŒ@I`;1�NW@Ä·ogúÛQ·ƒãv–Äíâ¸]‘’;ÞÝëŽw›yÇ; ×gç£V�T«=Óp³P
+íàÞÈ ÙëGøû7(Ë{ÂØ«'ï	×ÉÙ{Â¢8vˆeô¶/er}ÔÂÆ_Î±²Â¾äd¿mÛ\¸'\ÕÂImû
+<·ßÎeŠõ¶o�	Ã
+ïðÔ¾ŸÃÙÛá{ªM�FÓ´lrS ³)0¿?§ÝÑ¬DiTÛvB6áêÅ´?K�žrÚŠ¦¡0ƒ6j-˜™ÍJ�	cæÕV
+‚]Ë�•iÔV.ï·tËo”{ÛÏ5È+p£™Ã�æßhR³›õ>gÅmæ'yø§›ÌOóÓÏ7Ê™­ßxßkí’­˜³Ãb>³Ô74f=Å€ëDØIþÀPjžl
(ßšÒrˆ?:¢ž+n•ä°t0âð¸ÜÏFÒ°ú6vþœ¸ìûÂñûÂRçÏûsFjqXïã¨-GOøêLu‡Ñ³WÙ=+–í:Ñµ´l?3â;b20åÒn,b	¡P€…šCLÆ´Jü|âÏ±O|ŒÙåþ®e%ÙAm°;l	Ãr…ó@­/·ïŒ	2o
+)KHx—9ŽÓ@ø9ôÛ"# <ALË7ôæ('7„�ì†po.».Œ�âòpr}8· »£ãHÄRzÝ¦r>qyÜž5ìŠ·¿±óDd@_¶SV‡ÙS¥Æ®ˆ©C©(d)‹³:œÓ{Âí»c¨
½.Ô†ýç¼»O®™‡cÙÕaP!D¯”¤j5Äú0,%×…¯•¨”VN	úr<B¡øÝõrfOå!˜<•5~:"dâ�0•#þ@X®‚Ï÷ý­Ú¯h¿îÖîjî†+<Jz¢^îÖ:ë»Û÷·Ê¬M¸6Ü¾6,A˜êËág5xðØfa“&†õÃíy’x*âv°Ù’Ä²0a¢ÒP/êËÃ—…]�ËÂ<C?!ôü!;èÃ¤A-7€ü…#>C›Ý
+qF5_V>¯mmßsÃ7ßqá›f#yåû]Zãæ4öp]7×ánªÃŠp|EXêFƒRŸis›Y¡[›_Ç
+ÝG#0Vó-î]íùhHÝè‹‹%Ô‹FŽ¾twOï»Êå¬|‹2wùœ¨Ä³LS­#l •ßNÕ6àg8¦•Þ4G;ˆ°¨‹¯�Ïß°6¯Yaw Š£©¢
+?ËÃ�¡ˆˆ\Î¿!|�?×àÀhšb3�ÄÅ¾Iy¦IÜn¿7ŒeÂˆ@/û�„Ò›¡_³šðéz�œÙèƒì>¥²Ýv×%îG_A)”·ßÏ}™³ÏGåQösú»þÒe+y^rÚŠÏd6Eµ>9»)šÜÕz#Ù�Ñäæ¨–�d7ã”æXébÖg/fûÌ1ü�á�ÀÜ&é¿%ªmñf·D“[£Ú6ov+”"<n#Üo"<I7á	Fø»Å·Eµ­Þì¶hr{T;Én�Ï"ùPTÛìÍ>„¼ž+Íë¤�×3¯ç)¯ÍÈëyž�JšeGT;Éîˆ&wEµ#Ù]ÑäÎ¨v*’Ý	Ì§"¦Øä�°%nr œÜ�ã¥ýa‘Ý<-átqk˜�êv…;Ã|*ø0½y½�Z/uUrM$»ÂÉ­a‚iìY�ÝŠ2½dOk;}kœ'
y(êMî T;ìL	
+“=æa™I<„˜|æ`,þ1è”DßOúNŸiÏˆ>boÚW(ˆóýiŽÁ«·—íœEÎ¯D,+�RŽ�¢l¯F<>O`g€­¹xhÅmìßäÁ#p“—ÓoòýLn‘n
+ð{ÅÏä¶›*9¢
+¯!~Uðªòk˜«¿Ä(LÚ}“Ëye,´èÂp¼=¿‡½”O¢ŸRßè›Ø–…9hPÂ´x7Ô"³¥�ÂŠp7*,Ó—ÞÌÎ°(ñ�K;~Ø4HTHo£*­VÁ+VS«Röû‘]µ+×ëÆŠª_ +ÓjLÅ³/—›BÕl<ÆÃÆc¼‚‡@Ýë}„õÆPÕÕ\ÂJ(yÚ•ZÐ¦CñaUCº
+·ß€&Åä…�ˆE±öýL¾m|c•¨ŽzM¡Ñ(ÅíwÏHí—xï2Ü–ÇÚ	Ë¦8$³T|Üâq�Ý¢	Ûnòã§Ìêqú
þL6ûbî¤›ÊAå7�¢/òM£+¾ãäv<]Owcy7¼ÖÍh”'!±i‚'@%iP|\×ÑÓsƒÙÌ£ù=ç$Lù%ñßsLšDYLs  Aö‡8ØzSYEAoþŠØ (FÏMƒð
+ÔŠnÉÀ¿òŸ(N˜…‰µµß¨.�Í
+Ì©&é!.qñ8	âTË¤	®'å®nn£•ýègÅDá(üJ±mªüƒB¡âoä¢z–Ûõl‘»ÿëkZÍ‰ª¿º¦å_]ÓefM÷}uMË7pM'‹ñ)ÈûÞ‘È¦LaÚ©Ã«ïˆ¦½ƒæJô]VPƒ¬ï´‚ÃÍ•xë
+Î}O^,l¹T @ÅÏ¬ö­¬ø)£´s^£;¼-;«~íœjñ{™ŒöRFx±ðçë
+…½<�Ëk5ßòEÁl³q\ªœÖt7ºEärpÑÄ¼qc`ÒÇÇ"ÇR„:Ÿu¾è|ÅÙ>«~,&Ééñ˜äwH‡c’ê�žˆIAŸtk‹äóKGbR™Cz2&Uû¤é-RÀ'=“ŸôtLr‡ƒÁgb’£\:“œ~éÙ˜DSÓÝ-1p½1)ä�Œ˜Té�r1Éå(+ËÇ$o@:“F•K}1)ì“úcR¹OˆIž°t<&�öI¯Ehßêù©Xîh	µÌ¼ï›.°°Qývûh]#¢%°<­o†y�™Ï,ª¹Åt–åÈ¦Ã^¡¯ø:¯¼È;`ú‚}½á`ˆ×Í}ÄS‰u³ý¸"�
3õK…BrKXß^�Ý‚Uð�ˆËéñ”'v†�­§ñ�aâ¼q;=¾ÃNk3Š¥ÑÁë SL„.±Nºy¦ôˆ8¯xøì½+��€iÁŒïM7áPb%:Ð‰ÿã�ÐêÛÃUlÎÆ¼é�Ì‰X<?Ö!ò¹Ñ5dÚÐN1.œb\MŸÁpC…O¬‘ûÂ¢˜7ºoždðj.’Ï!IñzÑ$Œ\½(ÓL±.
I&÷à¦È.¬7ó\Œ“òûIñÎX˜kàÃu²€'¦©¸n>ê¯U·ßE�1í¢|Í,Û)X20sàÊ— ùÄ°x>So4ˆ¾OÉ¤bGTîñI/Æ$_¹ôv¹ô3‡8sy<Ü¿è�èêÛØO]&LÚº@ÓÂê£0CNÛ�j›öhk.ˆÏh_[Ã{r“üNÑÆ¼êÑNh»r�¤õ4_'Á´ŠHþ;b pZB>¾Ã_^#M"æ¬¥}ÝÆ	yªuÚ
ðtLÎSÝÓ¼áß#ì¦¾�õÝ©¢¨f!©¸^Þ0ïWâ${Q||OØ1‰²¾V¸ÝËƒÇek…ØßörÒ¤o7JÙÛì(ñ„be
P`·¤æ	”ºÖW>m¹Eˆ
,f]Wò0ráõmáJšÙ“ÛÂ”ÍÄ‡ÂRv[˜âÐ‰hAX&&&ÆÅŒ˜ÛdÄL’Ù†K¶.· 7N½�ò1Ñ``ÐèvLºÉE£¿*h¥«¥°|’fä+ÿ�úÃ;Ü/Ç`�èÄÍtâƒ¯ðÔø*�OzÏ:éL¼+²±s
+;´„ô†_šïŽjïÈÙÝØw|qùØg@Ñ¥¹¯7íÎ÷¦=ÙÇè×‹MsÚÛÀ¦\löæª3¿ð�–x=¦ý«ÖçÓv)ÚÃŠ¶Ó«nÐžhÐîŠÆ_�ÁoýÙˆOf×‰Šîß}úÁ°þXX?žxƒ*ß\þïá_@-n€ mó�®ñÅµØC{·fm[óuŽÔžhò™h‹”z&š<ñ‡Pµ�#^—“>…kú|â­!ÇŸˆÂ~Ì'´8]P¼ÿåÄ_J�¿ìÏíoÆd‚KmòçâoÅ$	 Þsø¿{¯4æ÷WÔÀÀ¿¡ÿÛV±zz`ëÅ_Ó>y@[Ñ”7×e˜1¿£9o®Ë0c>Ó±K­»*ošF·Vi¯Ò.Ÿ³nk¡àê.ÄßŠBa«Xb>�8œN×OYÑ0
ý—	«[9aÝ_X¼±>sPž`}6×p#gÙÉÉ�,²q>âp;])óÖ…«ŽÆ¡Ñ¨Èœx)LÈóÍWüí˜4½/Ç8Ñx'&Óô@$„$SA¸R€CàQ.$‡mÊéçôç_3'#þnLš<�ãG‡+Ÿv™Å§·âòñP'µô^™oT<0íX4‘Ø5Z¤Æ\>¾—»þóˆÏïòïñî5§[«¦O¬¤~*Ã.„˜Æ¦.ì?hm-¿ì†›êâ…kè1&k$ÏŸ~“·â/yop£/&Mðk;›­@7½wOàoDRUb÷%À8îýØ‘Wm…•1m7Î»øx=Lˆ°€FÍùÅ­-jjÕ7a2¹Ö$êõÃ:—ù &jIH8|&ÆxÿêlTx>Ã¥ó¨¦mÚôlL´Ë�e�¡¨9ky´=Í	¬ŸeqŸÜÝÍ�y£‡ËÚú½" ý™hüØXÉaŒ—:K<…Ví3QËžÔ3QØ“2WêÀVs#çhq?ì}Qq˜ÙäÄAÔ˜7ÞñƒQ£n–ŠË]wcÀžb=ÚÝuÝ&¹D�U6ÔÉ(AU¦ÚÛl§"z2Û8HXæ]ÑÎhvðA\uØv�Q=Tb×^Î»‘r¼¡ÌX4Çƒ/u]Æu¥¦,&î1¯èoh("Ôá¥ùÅÞÀUùŠ&{Wð»<ÙÛ‚ñ<ý˜A'»*»ÑºìéÈÍÓ‘›6
³
+÷„‹úûÉÅÂ
ÓŠ’·¸^p½ì¿_þ!­C´(}ÄËÇ´Bý"ü$&Ò9°5Áà§Äè—Kç‰õ§ñÏŒùg´€ùÎÏyiû‚öé"ñê~é1<~éž$¾A“Äô�¼öxC·àIp²šÇAì˜ŒœzFð#ž�Óõž‡ù[GY[Gv‚ø)oìœÜ1
+ö•Gã§‚@*¿ÞÔ£oñ@Klñ�!Y_Sßùü˜L�F@_®ècnÈÇ~c~‡'7_ß†B»rÀ!U\OS@â@4QaÄ+äDEŽ~ã¢Ä¬ø*–ŠO†^1#GÿVômˆÞGÑ~ŠöÏˆïÑÿäò�yYvÍ�„ýmÚEœ‘^kÎÆné(K»süHÃ86jš,0„tÀŠ*³6vEQÖ*B¨Zi\"~Ð¬Þcv¥™w#vñ(H2‡«p'KXdŽÞX¾éQªD€*˜¹wüÑ¨ÀWøßlà^r÷ð¿ð¿ÍˆïHÀ¥m¸´@z˜àÒ—6‘Hß€œï/mà_
+¤Oð/	ø—3âO	¤�Rì	Z)iî¤gOe
Å=Bµz$*óÙ´@´*¥™?æ?–S½ÒÁty>í·ë”¦-Dýá›B«øî‚éJÌ›D†FzÏ £sÖ[q'éÑéŠ<k"bO&±®~ýd-þÊ•éJ~W7
+â@c6‡i‚´§£
+ã¿Êÿ¿+Æ•9þÇ‹ñ_eŽÿ:1þ«¾„ÿ¨ª[OüÇ_],L¾X¸óbaÅÅ…Y&y_ÄŒžž�[w)â-sù{FÙœ4MÊ.þu‹åÓc�ÛÒ¯ŸËðáf>Äí¼KÆÌlžãq°Ëm†~&ÇpHƒÅXå˜0“q"DÔ[‡i•Àˆä=�Iž/K‡%ï‚imSb®��ÚcÍ­×batÐ¶ñ|,Ï§iQùCî‘Íc%9Þ9N¸1Ÿ2Nª{;¯¶\'¦Ô%€*ª±ëÕ�G8·u›kÍzâ 63u†Îtwefš.3ÃÓ9¬Íkêá93·Ž«J!?l¡ñ—3ÆýKW‡W¿Ys~_îpóál¥�%úßá�ê·�ÓŽ4‡ül“ÃC«êÙX½Ïïó]åõT+|^ŸØŒêöqÝ\æäå2h!ƒ'›Y¥txù‘s0;ùÆòÊïpg=-6’:êdšÑE™3a†ƒŠÆ�`©ÀY\+Y±Úà<ü)^ˆ=ÚãXË¬Ð¬±^+ô¾•[¡§)”x,Ê=ùXT¦�H¥eÎa4Š	N±"c,Z$Î^+p"f–ÜM%m‘r7¯ê|Î®w"‚'Ñ*zøŒ¿¼j§Øã¢êð-ÿKF&¼ËƒømˆQ†¸Ëo¬¨Šss=Ñ€/ñ'äÉ7)ÄÜãÈ’ù{a„Þ›˜¬a8„&NfS’æIÚAáphD0¸¬ÿ…pYÏ%­¸E¸£œ!-WP`¹…ûÎ¯U™‡b‹µ£âïé‘•0Œ‡È`‹ý@*:9F{ÅÏ€Ü‡T·¨Ú3è±P·YÈZsÓyhn<Xî'æÎzŸ<$ksúaÎ‡!3<Ó‡K
+¦ ’ÿ óyoæÎq¦©ßÄ“Qó;¤=Û2ê­ñ§¨6†Þçê¨â´j<6N||Ý"Rš5zu%&ãDßì1Íñ˜¨&(ÀÃ(Žd^žŸ;ÔûÜ�9“bÅÿg50Ëk(©¨ƒU#d¡|½ìðÎäbg)e	ìÜ5x3«§vQ_üˆk+î½þÃY9J³Úçß¾Ä7Pz ó+ ¨Â.˜�|CœôK]kqÌfvü1J½Å‰fà -¸fŒR#ÅÂ@ÞöÛÙ–W_sáá‚ç°Ö/ŸÃÌ“�9çLpö•½Uö^¸æC�ç/ð¶1x8øTo5w�“”
+iÖ8œfÏ‡Óì9´Æ8¤»ÇIj@š;N¢¹œ8kZª‰Ù®¼K–æ�“Ä`Ï'yÊ¥ã$gy0xÏ8Éï—î'¹}ÌsØ}ã¤êÉÒÂqRØ¼Æž;p³´hN��~ÿ8©Ì/-'�.—–ŽÃù|÷8©Ü!".ŸÓ#ˆÄ1§Å[IÚ9Ó*x/�‚´—ö×DþðóUîý
+Ó�ÁE#Ç Ä(4†ÊÁ¯æ)ÜâÓtœnL©uÒž–°¬3n N^ù]‚i(b*ðÍ¾Æ·Áý:ˆ`�AÊùw”à%F›Œ>;Z¤1ÿº*fòü@¥kæ‹~¤¥%¾lœ,&kZY>N”…6z4Ý´H£þ‚Gºƒ½¥™Ë†£h�r˜ûBÐ€9ã»1ã�’­¬Yæ#Š³›uofÅ8QEÆ	ƒT T1±.–
Ú2�5ë�)N;Ù<ˆ„÷–�¡±Ö”¬í~Ä¼Ufn>GQ¯òy+×Ñ2`m½=ƒK0vÑÁÆ3D7ÁÙWš()0M[Á
À\Ôhsæ,³™¢Ñ@aßó–™=æ	"oZ‚Þ¹ÄK¤fþáKÍó!EÂvõ>¬[Ž	ò�³]óxÿ9ú¦Ö•ã¤`¹´Š(Ú/­&*HkÆI"þµ4œèñ 
‹›1 œ ã(—zˆÀýÒ:)7Këy}Î;UòÍÒ†q0kÜUë8]+øðúæwãôý{éßgm ÁÖú6æ‚àãé\³
íÚ¦Ó8idNÞ•ötdÚ=‡€°AÂùÆÐ÷™ðça}ë
+pXeiå|$�«™ÏBæÃ—«Êü•G©¿Ê|~>\›Zë)sºö
+o¤¼õÀ—òâAh¾›tž
+q0ç©˜Á%ð]~v‘
+—F
À�#†ÿ‹f¹jñÿOD
.HŽÅ¦KlV<æ¦Ç3¡Bl(¯òû*wR¹ˆÞðÖã5ÞJ±“øiN8$iZ­“&�IâjÃô©Åu¨-ª.wb/4PAmhˆ£[þåã‚Iì«ãÇÑ.•~xg
gbÐü3�,á$�]qåL'oµšîþ…ó6ðd Gÿ¢Åû°ücn@/[
) çÄƒ·v¥­å¸&u°@¼ª�
+\ù[kKdŒfÔZ2F›Æ	£åúìã8�¿­òL?->?Õö‡³G£É®:mš;ÛU—ÌEµçÙ\4ùlT{ß“}6š4¢Ú'‘¬MöFµ�"ÙÞh2Õæ³ù¨í­š’¥Å¸Ã.Æf³/Q1£3kG²öT;ÄÚS­%t@wñçZB¥>y2GGÂ4Lè³j-ûP[ÆÙ‡:Íö¡�ïì‘ò�3$ß»m,[‹±¼,OËÜZËÊÔ=u¾Do¸ñúWäì¿Ã#QíÕ÷ÕÂ m�0"Õ6²}ád.œËæÂÉcá|öð.¬…Egxy&ýX¸½/qÅEvtNDç8z±Ý¼ÛÌæ}•š÷YV@©šK†Ts©]Í‡Š«ùªÙ,ÝµƒÊËj‹•¶e�åµ-„qrï•Ú‚fíõfí�fíÍfmÇí­fíÁfíífmïí�fížfíÝfí½fíýfíÞfíƒfíÑ1Ú™fíÉ1ÚÙfíá1Ú‡ÍÚ‘1ÚGÍÚ#c´�›µ§ÆhŸ4k›šµsÍÚ³c´O›µùÍÚùfmßíBóµU¦¸þŠÚ‘Äõ_GñPüFj„•Ca•ÝÛ‹á
`9,«GêÌ5µ�„n²Äã§º{sÙŽÞ|öŒ·a'Ã¸
{žUf¬!¡?~°Öòªð‘Às€è©µ$’w˜Ýø&uãßB¤v˜˜ä±¨v!’=MöEµÏ#Ù¾h²?ª�fû1üÖ—¿
6}ì4¿EˆO!Ï�ŒùÊ¥/+Ì¸©4‹Ív»Ì,Þ¦,^`e‰‘Zk­ÇËîz
a83ÿC4ÝÂ*ø&ªµdFw3®¿¥¿ëßA?¼|ÕB§¶äJò¢ãë©‹ ÄíµP®-£kå˜¶ìJX/ÛÁ±0bqØ¥¯ñÝè5~
+Å×øåÌjÿ}tæMÇÙY[¢~»«vˆúínûû+èÆ‡ù;|‡½BÝøJ8y:Üš=mi‡&¶¸Ú·¸¤D—£½‹uE÷ÔBí¯°Â^ÕÇj»T„Ê?zmë¢Â­C_ò°:ºTTú{³^”öÍz”öÍzº_B�‹ÂB�ËÖý…rF-ÔQo·ÔQ¿7¢:ê«¬Žú›–:ê«_ªŽjÖÀ¬–~:\õ´_"øÙ>‰pc½|¡¿/7Pl.õ™—Ô4©÷½”¦�Ò@G¤Öéû?ä½{|T×u?:gæÌCOf„Ð<��ÑXBÃ¸qÓ4n›æ×&MÇTI3mîMêÞt¦gFÉtÜ&½É‹_7é�xÊ`žæil@?6lã·Áà÷CgÆ’lÆ`›‡��±yè®ïÚçœ9#dâ6ýÝ?îýköÞgïµ×^{í÷zTUo•`uÔÍ
+¨êÑ†®1ZîSWÉ²AOç –;Ã	«""�ÖîÏ\%sP7Õrg9åV=´d(v³N¨`RõÐ¥ŸÜrÚô¨÷Õä.ØÙg!Æ‘¬«7Ó×LQ¨É¥÷Û‘·¯™ò
+ÍMD76ÓæI(p>’+«ª¡a¢+n2îCÅ¸Ã[e9òÎâHì]Å‘Ø»yg×Ùá¡1à¦_°¤V€¢$¡�‘Á*”‡´¬§·�­èÕU(Ÿb¶»ŠÍvCq2¾)ÒW¦;‰ûxM<'–¸oGÚ…ÿI
¾…¤K´‰FôïÑ¶Üý‘ÌAÌµ&ÕtÇ¦yJ'–éºT¿ð�U¿pgÈÐ/<dÑ/<dê[p×dŽ²Ce»B†–Ûcm—Õrû ¤åv_
œ-�6g?‚Î�×˜³Ÿ¨¦‰ç=Ôú¬9?®ObÇiû´?Fƒó|¨L5ê6(p¾`ÎƒOè Nˆ™¬ÖÀó`Ü:oí‰üÈ–ÙI¿‰VfÞˆ¤‡"M™¡HzoÜ÷bš})0ÿÇÌ{"´ÑÌo ïrÔ¡ˆ/½¸ƒz#Òþ™G¢Ò”,ü?í‹°í¿¡ˆáÿIÂ ÌÞßúAu`oD÷Ej}‰
f>h(xì™³ ÉË!Ù-;ÿ3Öohô	,6ëâQÛ&!F(‰«ñ}Ê 6e‚ý´$ï‰sO¶}Kêú
àcÎÜñ†pð“uQkpbc­ÚAÓ<Rïe”Dû�ðìfpî+Ljl|ÞŠhT>ùV$}•‘ûµ@ÎÕ:HØw•µHÇ‡*žB‡«?01¢–�’—ŸYWkæã†¬+9Ü@áÜÇ
,ª7˜uîÀq+jì†´îŠ^ôä6‡“s*m†Aøþ”î„±ÇÓ
ê§
ùÓ�¸×Øä?bA¿âÍŸ'ˆK>‚ÖÐ©Ú!œk€ùWÙjþ•ÊØìí¶à‚–öý–ïNþ^Mð¦ù¯<êÎ:×ç§ù!ió	$mòŸ7àiÃ1}œ„üñ†Ôg
ÉÏDïÿ¦?ù&SM3wÓ0¸
+f´Ëëp!C¼¾Ë¯å»üÐºÁUh
/‚TÍòàŒ3ãiZúN³Òg¼Žºéì›³ýR×/RÔ-õ‰‹
ž7™ÍU†ƒNõó†¦±xú¼¡�ü¼Ab�Á�(üT›¤Rl°`­þF5;|ˆ¶[´éÀJ2Yµ¦®_@|íÎÖ�ô
Ôÿyú{Ò”Î<Ó0µn-Ì—DÔ³
½�ƒé´Ñ¾Ð@>CBm³npáLûÒ‰Ö2;âê±úsƒÞ
êpþ43ÃúÐ1ê×c
üõ¨øJ¬VMÌ
+gqŸèmüzÌf‹ÉmRú-‘g°‡}=äq:]k$Ó4Ë·Á'®ŽÕs
“©{Øå–z­·s@=ÑP—ÔÝD«§r;Ût�º«øANQ§PzV&>§ÒâW�÷¢;N7È™'Û„ŽÝKÐ±ób; J¥¼T„_š)B¿F˜è9	Ï	ýW£öõ0q@É�Sh·þ+öÞu‰U��W× µ'äf1,©{
+Ô9é³
­7¶�ÚÞBm‡"Ÿ(®¡|'êš‰yÏUÎ7¤¶VÃÍè…†ÞäÖj‰¸‘°œ’­v�oPÏ7,§\Ð–	AÀ‘MQÁ“HÚÇI0Ü9½ÅÆ¹@ œÀ!TáEpy¿õz=¤mu\`Ð8d¤žn³HÊ�Ä¾ô7Ð�	�bêå@ÈI›±…Ü«Ò`zžÿ‡¶ü<zºŸÎ«Óýé¹ø�ëëÇ�þÔŽøNOÜ‘|ÁaGxS$>/ˆˆÚí÷M†=¿á}«ÛOiñ»ÆÀûV·þ°`Ï¥ÛÏnªºý¹ó
+ÕGói,9»ÑŽßhe,ÙÝ(’ÙÃQÈEˆÝ®#¦Õ]+~ßßÀä€?µ£®}G�-?ÓOiñ¾ñ¨d¦óªF)¢£Õý0aïA`â5fÀf¦Àf¦
+úýfÎ6C~
¹çÚsg›)©¾Òˆ7ÑW
+i™¹”—ýOi*;Ÿ‚AEÞÀ«Ü|1nô'Ï× ‡BN¹ªúïJ›3½íCÅä±F\êèÞ8yÐìvÕ7¢6Ð¤H4¡�á[¾„J[!V:è§�a›vïš‘19æsD-,¥ÚÕ‹=ê´Ê^¸I2“©ìyJ>[�ä£¼mù
+±Ì®Ëo[N•¶-¿„ùÆ��vnÝ)ŽD¯Žþ~ô«Ñ?ˆ~-ú‡Ñ¯G¯‰þQô�£ßŠ~;úÑïDÿ2šø‘78’Þ‚W™ýØ=¹*ò#vSQ7U�¶WI]UBkÖÛ
+«�…ØSƒ0ir8"tbw›-êe#Z¹gÚ2Ï´yÜ´DG=X£Qè¯,…¢WÑwžx, <—åÁ”•ÇixàXÇ¸ÍÃÃeàR¿jÿ•Mí9ãç'Ð²çM¼Ö,%Ö]ië‰žeË¶¸b)e£J:B&žm“DŒíA�í—Æ‹
+Éh¢Z‘[se“�IÈ‡œ‡|Èœ˜oÂE-»W×Øâ–‡��m¨Žz7‘çÚ(R·‰fƒÞ¥‚ÞéÂ$™aá„‚®RÐS
+Vöá’¼PìŒ-¾a �ÇÅ’pÍ`~ Fe�Wž’îŠÊwŠÆ˜ßÜü-:æ.£=®¬¼øHSF½ã¦m-p[aWëƒäUWŠëÁ‰C#ší«ûŸ|S=èÍ3YAòÎ¡ã-ÆY�ª3Cþ>¬«ÅèUcYU;ÃbôêMâs1š¸/G¯úc}¸£ßÚ$Ôê‹o y,:n±a—íxÈávÈ7sü;“åøò\©-q "ÕýŒÈ¯Kç"—÷»@¸˜¸0�
“Ä‡'ð›ìïS®CÚ†ŠH¢Hd£¸È'Ò\¢ |GÖu÷•ÃÒ]ÉçÛ$d*òµïFÞ´ââ˜©w‚f#¹b¥Ó|‡šÅª#^£L‘qñýgRS½N°ÍG¤­u¬¯“zDˆ„<"I¹G%‘ÙÞÔgêbØù©´¯ŽÕR#‰ƒå²C¦Ì£’÷¢$´“Jîç%õš­ËõŠ%ûVT*fT´L¯¨bk�G×\¨èÍºa«©!å^hƒþÅCŸ"j#ÕÅl$u`+Wµ@T°@’,Ok‰ÛÄ›ÚÏäx8Oo�v\Ÿ.ñêH¼Ô‰W¾ÜfTÿ™SmØê²–ÆB)±V1Òñ,äL¾Ò&d_³6êîFØzø©‘¤7;6D©èq0‘J¹)êý7›-Þ×„·�Ï½Ú6™2”§õ·bê~~öEA=ß—×xÎ¼Ú&¤A-ïXzaþüLD(#lGèÂD/�RvãÙË¾[î—_ãw¯Åö�ä3rjm6gƒ­Àï¸Å6ó…«Âö?‡�At|-"ü&­œ\­¢ÿ«éÿú¿–þ3¹"5QkŸ(MöÚ$›6ŸÝl¸ßÞ@Dyü
+ÃýöJŠu7Î·çRlË„‚.LökŠÝ¨“½ÿJ±­szUŠÍÑ¿¹ 8B‡éö~"jú7Ïï
‹X…ž×¿U²ðü<=Ve
+¯U³ðZµÇþÓááê(\Oäqþw5ÿûÿû#þGùl¶Så7 š'ÿýäÿ!�üàüôÑh[ÃÓÆÎBÿ˜–™ªê×Ù~ìõ8Ó\ã~¿„¶Ë?áÒþº$õ”=ÑEcôD--áZÉÒ<9™_µbn°-±¥Vêºž&:v{rÒfùýÍþî,¥g–5f�êîjvšÚ]M“âîjbÐj`€¸q.­+uüÐÁÌ3ô‘?d�ù*ˆòŠ› :p<<Aýe7š£¸i“
w%ˆom¦ó6í™2@|ÞxŠÓÖ*3o<.ãhµ>K‡-$;©XŒ²åÏ:pmGŸö@pXñ	)-™ÍÂÒÇÅáÒí×'!ÙUU=—Žë‡ø2jë¤�Pç ï_¾‰×·Whe„¿õúnÊTdhjÚÖæ¢Q¾(…"¡T40êdÅ¥ÍÎq�néc�h›?æ€H˜¸WLßé€áÒü�"�/Ï˜[C—ß!~TÚ!.K}ºÄBÀ‘H|A($’~/¿9”/’>‰/
+å�b'x6t‰yËÍ0õYæ-ëùÄnj×l®jÿÎzŸ‡¥š×ÛL¥šÓ8ðü®G»;_þ²Äß_Èßìï/æw±¡”'ªñÂ—mÌË¶7ôñò1�—ÿö,¯MÃ!»›ý…ã•†`}RE°NWÖÇU€µ”ï?–�&]aCÑ�r%–UCÑmZØ0a¾`š¯œÆS&Œ‡ñ&×n Íßæ/ª³¤Ü+a
;¿ZÄ_�@Á!½Ò•ò+ý�ˆÓ³±9IJ¦d9#Œ‚ïÛü¢l¼ÎãîQ!|nõ·äoõ§Vúc¹•þ§p1²Òï±{p@�eæZáoÍ¯0sí(Ë5;l¼(­ÄÙ¤;|ÉSÎ‘øÊPþƒHúx$¾*”?I¿‰/åß�¤�EâKCùchü�a¼*þ„
+Þã7¬GÜãOoÆát³?ÝçGŠ|Ÿ?Ýk„{ýéû�ðýþô½Fø^z#Êmô§·i[õîz�e“%BH¯÷çŠUê:?æõn¿!…›ƒ¹Ü2ÝÔëMá’µ©yákÌãj´‘!%«l]išUuÕ¦fHÄæí3$È-àâº£„…VÀ‹,€‡%§¾ÙÈ„K,5.µ‚Zf�,K.#×Š°$á•ÖL·„ÝTÇ�uÈ¹í~xì°mþ‚º¡ú>x&PïñCðÉñ]�Nm/5dåö—$‡–{ªº«f(5]*öGm-÷°?w¼JË=äoŸ.áýUV‘¾‡:†4uº´u¹ØZS	-1�VÂÞ¸^ÏSãYKuˆê(rFÎ®étØÏ}\E@o
Ë•²³“³]³$Öí¨(Lb	-Nr¶
+…oˆV"u³?ëÉíiã¼EšÍoöWcª”pµ*Fƒ©¿–ñQ··Eá~Ãöé:ÿTö¹çbèÞW�¼Q©gDv=|kYQøß1ÔÒáö.³Ô¢Å–—óéÅØ :ÊdD™[ü½S†¼	¨iø³®Ä}~	†(Gâ¼ŠªSÂôJjèX#.žLH;=Y‘Ç†=ì8’lÎÜj?¨èm†LÇÃ~õsÝ‘":´7y²ÊÎž&†)f"4¦ëŠ{:ˆÖDa_‰ô±fÉ]~¼,wùè-~�á4§™–­€csY‡IduØx–^ç×òë0b×p±”Úç×¨[ùfš”û 2Yí-K9N)÷—¥¼O)÷–¥‹ðIim˜†…s)-ÆÞ¯bÝÝâ§u)¹Åïðþßˆnâè&ŠB*5u;Go§¨
+­…ƒV÷z:dõÙjpVÖ·š0~D)¯)öÍHÑŒ”KíÈá-ÃÃŽ™ÃÃK†‡×
oaÛ`=a;a7O2ÛL”í¦þ,ø¾'Ååiì£�ÒþyO[[!¹ÆoKÝí�
åîöï`�ÃÌÝ~È¢ˆ¢0P`K­õ’ký’·M„æ‘ß'`ŒZ’ŒÕ¯	©ÞH}Æ F ‡šå%džú-È\aA¶žF+IžÑL~Y†Ççßg+lÂ˜Ûf�ðÐ°H",ž…„Ñ�ù…FêíagµeR©à¿•BfKèyk¹]¬µ­O-ÇÁ	³$Ì.2Õ�˜Es
+Rš–{º¹i81	ˆÚgI†HT%Æ7¿f©
+€le†"P”©Ñ½ÞL³VO†þV`Lçà"¹’þÜóDÂ*Lå7aHî”áêÜûgìap”LÂŽñfƒ=‚,^kŠ-[IiÚHzvtx „.¶ÉTDwoò�»8,$ÓtBÄ¨JÄˆÁÃ Ù½<¬Lx¿'ºæ‹ië¨bre«<Uüºx²Á©`Ö�Ë�ôÝ~ZºõŽÊºz{òwcÊ¸ƒûöœ}ô¾m½¤k×^¾k‰:Mbn+õjïezõ?Ó�.îÀ†QúƒºBlî/éŒ¿þÏuÆµe�QÞºKú¡÷·öÃ–ýÐ+:aCØU+;§ÉBœ³*¹#ªøoõwGÇÉïšuÂæÛf`ŒHÜ„ÄÊQ:®ªÔ´l…Xî�žƒãÖRïT�@Õ–Þ©²ôŽùÑè�™ìíÕ\çb¾‘ÍØRô�,Ø‡½åNy§WÖ–Ž­FÇÒ”�±"[­£Êt­&ºÒ\Š/•æ—ú$ó§/ä…—h`Þdû�Ð­Œ¬dŠuÔJÕxj˜þsˆ2oüœ×³;yµ]@ëY�(ß„í&wÛC*XéÇzœòrx!V·òLŽí#‚©™’Ö>¾JÚô/“z7,{¸&ÊOR7ú‹Fq
+Z‹‹/pÖÈ‡�±´Û8¡sÓ‰Húd$z1§’»Ã—«êpÉÔF™Î^úó¨òŽém¬’ßæO?Œ�=/~rÇªJ†šü¼›~È¯žˆäò{ãâÒ5÷þ¨yNrG¢6
+§·ûM‹n÷Õ‰-ÞfOF¦ä·ûÕíXQi+�zÙ­ÉGývL#”n
+ªßî§|MœIñ8¯•¶H�K;¤ç¶7:Þ„&†mo›Mš&ÙöµÙìiÛ=a¼ÑÃGéƒþäƒ~›º
‹oßÈÔÇ�º‘�ÁQJ}¤šZ0h"6º�WOò´ÓœM»³ªõÈ¬ÈäÔ4‰2'¦IRb	Ÿ71¬¦,Fž ±‰:0|9Ž’ñähï£ýƒÓ¥Ÿˆ6[#[¬‘û9"Q[Ã2…UÚr²ü(@mÐé�]åvœ
+¦LÐD=c|¢O@`¢¯„g"
+[Z§%züv|¢ÎÐÐwTÃ§Þ6³¢Ç�Š¨Fldð¶XEÕ-AeÑaXõ#jü‡*zœ+z€;N?†>–‰Ñ÷8¬6eø�`:+v”±ýˆ.eQ¦´•Ÿ®ý©DHNV
+¹›…]"¨4¼¬òQcv„´žõ¬³"õl—ÁhðÏ�"ã,‘ñ	3cwdìÓÒtÚs
+dKMçÛçeÕ’@ÃMÇP�nz	BC-L(&UöŸD_'ÑŸË©7 ñ%·¿A§QÂ—µX–ùÒYêgl®Í�Îe`)ºz"‚%ˆ’NÐÏœ:ëÔXèéeãÀ·ZOæaëeeK³6u3@‰)Â)z**háµÒVi³}›ý¥†Û¢î·XSd?ß¬¿ÝÆvÐHÿGÛAõy‡5¯µÙÜÓ%ÛCa»’­Üª�øùØ.øªhàµOãÆÁúwò4Ó�³=æ/àýæ4ãj<·>Ú7j>Æ½œÉ½«_½}*)ùiRê°U²á,.úfH©#œø�ôïºO�4]JÕ‹�¡b³Øhx”»ÀGùRm\I>Î¸|Û“ÇÂÆýß{:´ÏÚ?C‚u4`O„ín¾ðÀžÆÅâNÃ•¢œ�­ŸâËÀÿ¤	þ˜þsÿsÈN^zO¶?ŸÌï§?‰Äw�ËbÑ€8‰¯åÏ`EÚ†�÷(M§#>êéÓ‘Ôl	Þ6³…÷Ù´¼�ŽÐWØçZ ±V£žŠ$jè,ŒïiùŽ<OErŸ!Û®¨p@®„RØæ;ëB»³žäÙ "ŒaÃ¦;}Ožc›îÏ”¥}ÊiÏ2äJNK|„]›ç,IÉóA\‚?.{´x!l<Z| SéQiøbx±í—Â.�Ó,‰mgÝ,·ý–L=±¼ò‚aCxûxIxû<øf7 ¾2Zß¾ÊÛ°Ñ·+íýð(H»Yˆž+ûMLOè˜^€&`jaC	ãµ°¡„1'ÐtÝE)Ÿ‡œ7$gíïáøa) œþ,_ÊIŸ‹ÄïåÏEÒÃ‘ø)?I_ˆÄûBù‘ôùHüîPþ|$}1ßÊ_Œ¤ÏFâ½¡üÙHúÓH|m(ÿi$ýy$~G(ÿ9¸d0›XWXoÚ÷2s¾É6±^ðCRoH5†e«ñ„íóþÒåûÞõÍõ¿º®¶ýy?l[½n’ôdé~$}Íc4’î	Û=²ó*ƒ¤/›÷ð/ú�Ñ+~`ô ·¸“Ó4§t"wÙ•ü¿BÆŠ×÷•ì#6t¹MØ-`×·(£Ë
ß¹Õð7•º)D¡ÄM!)·ÅÓuƒx0ºæ†ins¹[DÆZkÆ¦ÌOzn5%híÍÏ­†xÕåvWhê‡m‰�Ú°79¶;Ü
#û©~ÿŸ¿Nôûé³ô!¿g¤}„ÛíÒ§Û0"Þ”
+Ÿð6Žìõì¶Cü�ÛŸ0üwG…È€ÿ1Ã?lÀ?Ãð�Œ„Ø€”áW¥nÐŸ¶Ù7 í½‘¹�¹�ØtGg›÷GÅæ˜�Mw”°Y'IX
+~Æ��ZðkÁ
+*xÂhÈçÜ�“#Q;a vŠV—û¯MËëÝÕìÕt‹'qŽJÆì±æ
+Q[­žTžiì¡½Ywu!w¾
™zf
à6¨›-’CüñÃ/„záË@½0:Ô�°µr§øvŠ¸N÷UPÓáÔák?¡¾%M¥¦
+SzF¼WÐ:ÙžoC¡¢ö“¬ó[R}„ö¥¿Ó5˜¾RyÔœ©ºZÍÐ¿ë¦Ùñ^÷*éÇa¼öŠýì'DÛêE¼ii¹3cØ–ÿ?‚‰á6[~Jœ¡Íhu
<ûÍÅa³“vœ¶za^‡R´%¹®XnZÌN�ááäS Rõ5BeFì2ï‰¿¤×M·+æ›â³¸“8K8VV	?—½NnAÿ\Ø�j›»ì›å³‚üÇÓ Æ…°Cª®i‡&^‹Nâö_Ï-¯Nèì)º|¼zØ_Š.¯Î°|]1^ÝÇ_ñjHh1U!Z¡î¡}nò„]¢@n3íáüÂÔ0W…‡x?|¨}³;¿ßŸÞãOÅÚc¶<ý¾h§x¸ÆƒbÄA]ðwºÓ4u¿?ñ”ÏÖ9�>ç§pn‡/ÝííÄm²Ö™?çO¿ã/)xäßñ§?õ—”BòŸúñ¦}Î/^§EÜþêšÅnèÅ8'v¸&v¸'vx&v@µ²©k®j®‡%ªëa‰ª¦£¶iQ}£Ã;±ÃG™êšºœc›º¾ÚQßÔUÛ1.ý±¿5ÿ±_ÝàíªR_Ç5Ëx+˜.d~Šâè:}ºî�¸oöNŸZg·ÛÒ¯SÑ×‰h�¸|í„|]'®ƒ:aLww�>ïÏ%[E1[™›T<ëmÉzox@3µ¿!ëÍ-«kK=À¡Y¸j§ÐªºYü7[™C¥¢¶öý
.n_¶šj…ÀA5²U'¨Îz3ÈÙj¼åsDWz¢<B°@=é˜8ccÑ¼Ô‡ŽìX¨‘ð—lufVs+±ŽhØ4x2Û›…?NÎ­´4öZ3K½S½·ö«Ÿú{Õwü½ì‰7[ÑÉò
+ÕØòÐ—håPØ-Ÿ�•B¤0ëÖx@',·f+FJtBL ±e‚¤{”ó]¶6ázÎWÔý„d+Ñu›|]‡ÑëÞ8œZYGí7~s³cY_²;fßY—­£DLƒ¯‹Yì¤?±®Ñ6b•›l�®q#òe+ý{†‡S1ø([ÜÌ>ÊbRFÕ½~XËJï%ÞØëÏÊ™e”mBŽ¬ìËSFOWbu‹›áª?Yh§Ñ |ÓaW”Ü ‚¿CÊ˜?ÚnÛ…¶[¬£þÛ¶®ÚXÇ8Vu«aU·ì8CÓ-+¤qFŸ3ÃÖ}:ì-™[Êàâ�Ž”“Ã^É‹'°#þT-" Ï‘¨•’Gü�|Ñgó²	ˆ%#až“‡|6?-4~ ÁM[›Ôì€–œÀt0#âª¨®9.±˜oç úxHcicj8Ä�Ñ¬>Ñ¬*Zc>T²ÎäÂ)5¡}‚­kB¬ÃU€2·�˜�Ú×C:ûs…ÕK¨ÿJ?ýüÈQ[ôO¯–8âŽJ1‘ì�#¾ÆÜ¬Fp *%g6²ÉÚX,¹?êàPru‹=×¸É5(~ÅÞ+‚QFsûlŽþÄ(`ýn€ÑEÅgF°�ƒ
+Òiº9çëšh³"M¨tÆH]ð'/øQ`6O›ß€ð½_8¾v�³obÎrI]®öÍ£i43/áIú¸?Iü‰8|Ü@qÝû¶?ù6ƒ½1âöT×œsâ>–@hÂsÂFŸóŸuá®î8Ö“ã~ÁÌz•`æÍ6u@£OàÓí««A?ãœCS�Ï9‡]K�hî™z¬]–3š¢¾Ç"âé÷h0¼ç×›KS-¯¼ljoŠ6ÚGû—[äÎiLv° Vƒ�&P4³n¶cZ‘yS¶2fEã¼#FÊs¤¸ÅHqZGŠÓÔ	5¡EüŠŽi<pŽc`À‹žÀtIŸþX~Þ¿Ü÷M$F«X?®™DkðÁI´ÀIÀq˜x(	óç%0Ë’LJâå‹FËTÝé¸K_¶Ä’¾hábQaãÓ�‹“þ"æÂc¤(fÅö9š;ß¬ûuèÍ¬€ômÅØ{in…�T\¢—,ÏÎò]T�“Y‰YËÇ¶ˆ
+f\Õ(T8¢Î,ŠÚD™™�*�Q`A##~ÇxV;taø‹‡EÁÿ.�‹9'ÍAHƒQŸx<\­‡&�Ù�Þ3c¬5Š:<¨@+@“¢(ô(æþN¥oú�JÏ‹¸œÕ5?¥Y¡ß±¼Ô•/ù–³
+aÊ©å^© NèrríVG2ºqNLÌ$p7¯‡9}Æ¯.ÄsÌ¦`n®BÕ'vºåüÌßó#v¹ºæ¯~·Ú¸zÆŸ|Ú�ÙAD¦ég¯ýw™>å73‚íVØ{ò§üÔÑÂžˆñô
)Ö
+Z•EözÜ7ÃÎŽ“òÇè4q9­gkÍÌ�ÁÍkV·sxX=&æÞôg~ìœ:oS}ô%7DÕÒ‡gí4î–ŽW§Z’Û‡ˆÓ¦ús?ÇAííµÝéþ,M@ù~•þ¹¶âb<å¢0MéP@"b¤œˆêkõ�KZJÃÚÌãa?´†ðw¡}½¾œ,Œ¸¨ß ½žúº–øº”;9[ÕÔç~-ù¹_º¹WøXU‡C´»3gÝTµ–»±YËÍin¯¶wUQŽbbQ£„ êÄ&MýŒ&ˆìÚV:ðw–}=‘—_š/z½pò+�…¥�ˆÓ]]³å;>ý–¿)ÿV91w� &âò@×ù•:à/±uK×7©�›¨s/ÓÌ¡Í¤]v=¢¡ìŽY4“§µË¶³ÈíTOùác˜¾r÷ÕA²•rã‘ñÎñRr«×®Ð¦¦¨Sr³”ö)R¬Ð ofoC–«ê2´³wq}™ù`ãÒ/šG<uÕ5Z‹ÜÒ	Ü…eÛ…S�iÆàLs=¬ëÒA`qoS×9¹Ã§�~‚:ý„Þék|]ßÀ±Ü)¶¬S:\Ðc>åg=f7�_NùALFP¡=2j£‹–ÏøÍØ�fÝ_qeö‚"Y7‹(»³5¹O]˜ã:ã¢	¼ÓR'›XGm|Isfõx:àù|Ã®p¼q"@§ü)‚|Ýö²óÍ˜l­õ|SËç›18ß¸iá«5d¤k‹8ëÔb¼=Èã
î}Å9¥VœSj‹z–Ÿ:Ý´†Õòãäao[Æˆ'¢rÈ‚~¬î9¼»p6ÈÖr[›12¹yãÁîºz!ˆ%Ç—2±d“X¼“´x~å8þh©#hŽh"åYW/±ÅJ{/Zö1[A($»nš6öøãËšÍ
!<Gy=fT	T†˜Ð-ªÌÊb‰¦j¸�Äæ¬Œ«gÈb�v-x@p´‡*Ùï§7+é z³î‘ÕòQ€+€¤Æ
+{êzÊ³Dä¹^qF+ ¡”Á ±UC	˜½÷û/xm´­96+A·J}lVf+ç
+Ö$–ëì¨â>»CbëVN10;;èD|ètÜSýÉfÆhKÒS+ºß¨¸zšzzìßI¶4ùÓ~õ}¿o‘Ø7>dî½>¼“>7c,ý>ŽEÞoÛh—™ù­&FÞ÷ÛI1_½oLç©srû9ÙF4ÖáãM/ú–´K9Êê”Ôl¯ïS sSÌ�7pbŸM	8ßÓOŽ²œ“»x“>èn#ÆÃRÄÌ~§úVØ{õŸ¹zÁ4¾r&´æ vÌ¢ÒlªìkîÍlEå´±›7¿ŽK–$ìÈZëç»ˆ�ØÍ™6CcU`–Á½÷ÕÑÀ`Š!ê¢¨mí“)€cü¸`Á%Ôa0‹[(Ò7tþ¼X5Þ�OûaÏþ´‡nÏþ´FõPÈÌ‡®¦)›âZò´Ïa®>úËWŸ"~É`€fœDûÁÄM™5>ª#:L°¯M]�”eÐ±CŒãtA‹�'¹|<¹êtku|»ð¾ÐÖ}ßßJ½,PXZž»BÚEvžc°6~R%]Ž%­É§ba1½ÐVãDè¢vÂ-ÆB½Æ7µÎè�~‡áz•"‡}–ÈfïÔº’MœU—[f
61YWýŸ›Ç<6+'œ=é»»y<íñÕcÅgÂ&çikO²×†‡½ë„7DDœ8(›.³TÚ&
+\áñ¸!06rVq¦ÑÙ_ŸUœú1ég=DgšSVØÇ”cUÃXéWDÏëÁ1¥£zYó
ÔæÇàëi”©ÛåƒìhiåpÑg¬.ÞîAïby×�ÝÂÖæ¨­t6£ãÐWÄêpX_Þõ»±þc‘£…¼@9û'k:dð#êù[¿°çüçzþ÷þßó–n¾bônæÁºG¬—í¤e<<ï”Í}ß�!lˆžr]Bé!�¥Xÿ���¦J9Ž<r¥Çp›8�bÑ[<¡RîÝ(\)­oAlÎÙ'ääMh&¹q~ô~ùRz»@o—Noþª¾¿’MŠ‹ HîÉG W+ÐÓ‰¾Ž¤¬T78sœ…3Mþ�?’MbëÇì[ÖœùÔœŒÙ—ôÞP“½9F‡ŠbˆR®"�Í³þ¢94�æ”Ææ}lžõ»M¬Êj_@µ_c]L¬«Ñö«Ñv>eiz'†YÎ‡ëWyTO„~J¿ª±y9>eŸòH¾q™|ã�o\Ü1CÌ78.[ùÆUÆ7®r¾q•ñ
ýb¾qƒoÜ:ß°!P“o\%¾q|ã¶ð��^­@ÏÂ7®Kø&†v�mb>·É5Óõ«3ÄÎŒ™>‚‰r¸²{Ë_Ÿ…™\3}ËÏ|ò›©´¶´OqPç,„¥`)º0FçÀB1³®ý¸Â¼ÇýÄŸü„ïqWF\UÕ5GñêUš¿¿Úáiê’ÄË×%= :0:Ü§ûÆ¥è~Dëˆ©Õno2º}Ødh¸‚Ôp-x­h®ï²Yº}¾›å­Æ=‡'ÝíËz¾mËwûhÇÚíÃŽµßÁ~™6xñ<_}[]ñY÷Í”¯Ì4—ÃÐjå«ÑÜ�Së¾#Ùôc¬n³Gmž'Ù¬Midöt¬ãµ›vßÍ½QO¯YjQB8()‹c80ûJs”eË,Ž‰S§‘ÆgOÍ§X¦Ž�zÆzub¶°�—Ñ'E6äbÄoŽÑ&Þ¸>¬àëÃ
+ÝH
D¢žž²&ÐÁ¢§Š:*Uˆé´8î¥‹Ã¦w²*³s½¢ŸùTÁSÂt]FYçÛf$Œ1©û–×ÝÊsˆ¸=°ßwowFÎ
^ýž[d¹·.o³öb¥÷oõY§Ò
+£þ�©+õÎªÔ;KOÒ»¨DöJƒìÜÒÊleÖâëA_| ©�¶8ÄyL&1áÍ™�Í×e]ìºv¸SX7îÌ,´Ó‡B‰=pè9çÇ;$qº[”ï¥£%„¤¸©�™�âõT}¢¡OT¶ÔÏ›,Ã
+O4/�áµ£M›Zd6Û-<	Œ¡£ÒÇ~¤÷ÿ~3Á*~(ŠCÂÙïÀ(U›€büà,ÐíkÂP4§�[ùenRÉôá¶Æú*~£lÉïõÃ¿½ßÒXïæ—š–ü{Ø�ÜÆ¸øE
+Jn­G·›aYi
­ä-s3–¤µf™“(Ó1$+–\Nêá¿Ó¿ëfZ$+ÞDý½‘KD§)ñûCùiJºK‰oå»”ôt%¾-”Ÿ®¤g(ñCù
+´­"eâzë#†ÜÒ˜�ÏšeWòÝØ¸�Œ"vG¤ÌBá\dÜ�.Àw i3˜šhŸ°uÕ¨]î¦±“xŸJAµËfjŠ�ðÎGI…Ü²XfYÆÕ³quØÜi"´\Gh6!t#ê¹+2ŠüàÝˆ«6Õ¹Ù¤ê=è¦ÿ”1j.ÏÛ¡ÂH?©7unVÒ3ÆK°ö‹­Qÿ_Þdà\wy”WÄ2+F¢Ü1ìü®d”oàÿëº©Ïòó€øFFü»ÖÎú‰	ÎRâ�„ò³”ôL%¾=”Ÿ‰~Ü‘+�®«.
+\U¼7Ù|D=ùuµýÙŠü|`ro¤RbåwZ‚­ò�«êLAu~ }
+ô8ï‹ºú·ÄL!ÁÑ¨)°ÖK_+*GtÆ–ˆl¯¬ú–0•{¿Òš¿_I¯ŠµæWÅÒgÇµæÏŽƒ�Í�RîÉ°º˜…nÒÚÓj,WÅòšGÊ?ˆ¼Ÿø¬²JäS’˜Ìú“+¥ô’@K~IÀHY@))e!Z·5q#°EßÓdPY&´ü¢€!¸¼h|Ipù³ÈÍ(ò ¹–ŠÜHíoÐû¤üÍõ”dè/	,Ç½â—Äè!üR€ßÎ­‚.ìRÂh)r<�%ˆœw´&Ï3R�p¶[a“p@½ÍiT½Ñ>µî74�õx	ÙÜ){¢Ç+!ÔmO,®•p§ˆmÇAÛŽÎï5£g½¿”õˆ‘µZÄO‡E\SO�KÇ‡ô¹q-ùsãÒ§ÆiùSãô»’þï¯u`æx”‘¼’šö¡’{ºQËÝÊË¢ú Áél”�:ajùc‡³²ê]jÌÉ²aƒµr!¿V¾–Šk‰]�ÒÔ!*ÊœÐ·¼C.Öý€qÒøœ`ªé‡ïÍ8:Iov¤”vÅ–ßì ­�\¶gel‹ˆ–- %V<óœÁü.[/�HŸ ¿AÖ’´n¤¶:´br+›¥}<â�+«îduÅo4u}c°uˆø¤|rs î<•ú¦Þ3ß”(‡–û�{joÑ�6s«�áÌS`Q@ýÆVôYzu­VHÜã•ò«kÑg"þ)Ç-ðrÝµl!ô¶XKþ¶˜–;X3u¨@[à'¹…ƒ­¶ëþ‰šÃði™ý0Y! ®tàeœMäöŽ™n†ÏÖa�Ó§Š‚†S¡Šš>!ZbatBâü	©iDí˜[ß¡¦éiÆgnòÑÈXHTZH­u$Ÿ=ÉCû}3é)¥�„Á¡©»aÐÒôÉaHîŒÈ•U»¸”ö>AÚŠ–V×Ê°N?*í¸i…O)N(e†ÕJ|¨eW§ê6wò£�t-’*ØËqlüÙ0Å{w4¢FÀ†Æ®šAÈÿ}§»ë;DØ0Þqîj„‹7s5r€Ž‰F	:Öu$Ž:lO�-çMv�&Ãœ@¬K�-:wbQ�%²ž‚ÔO›Åáa
Æ�5K.ÍÌDs,q,‹…mv˜9 g–uwÕäÅLÆp£vk„.ÍÉ0ž‘Ä¼•ZH. vq’ öîˆì¨òj’�í…ŒÃZ´Öö³?ÃvT|a˜—Ø=IwÍb÷þ3;�!Š°‚S”=è9„�TáÃ(¹­‘J¤hL­ÏùÖ�—4~lhÝÒL=žA]�§i|µÛh0@W©›
‹¿.‹î¡¨ïçìMÉ>YúÇ9Ò|é¡Æí�ŽÕ1›½Ê¶&f“*lkc6‡b{&âtUVý_^8!uýÕ`ªšŽâ�8µ°±˜X(Þ‰»›�'ãÞ‰‹¹•vuÐ^Èmä2Ëý©ÏÚsýJ—€XHn¥ƒÍ�ÓÖ¸AYg-Œà¤¥¯¹×x0‚†–è
+ÎöŒØBÇ]­èÿ×øÿëæûÇü,:ÏEF1õ|¤L@÷…ˆ»¶ªzØiš�Šá®­†eJ¡Ó1­Äç*~r­Æ­J�°,E+�XvFZ–Z7¢æW­˜ë�•[–ú•ÝÆ©¨K—@êp–›€bIRK÷yë>²ÙÊx,1’0õQQö-[ð„z)5[Ùšuéb§U;­¤èæ1”ÎB¦¹ûêâŽRîöý
Nnp¶Šcñ[Å�±âÁ¢ºÌ”UUÖ…÷Øª"V±(ª“Ve¼ÛVQ]+%{VUY·Èºù¼ïd¿5ãÚ†‡-­Úp™oøÿN‹¡‚,òÞk·—F\G�.õ•­ãŽJ-­Ñ¯Íj¨tMŽMÀ¦Ù„¯rƒöaþ‹6Ìûí,8õ,V¾^Œ”¬|Å~«•¯X7e²Xùâï(³òµ’’¨ÒßÅÊ×KÃÊ×ºËKÌÏ-IÌ/ÇÈy´3Ô+;—þ˜û†t_{ø
´MÝH¯
+ò«é5�b~M ½:@‡�Õ�to@í	ä{öÕˆañ{ö¹ýh^ÏU�±4� `>6>ËÞ>ÖØkfÁ^,pÁzÂ¤—
+ôÒ·`/4;*)šyoGÞ×h�åtEàƒ¤�¶AÛìS†Ô»Pã-F‡×M‚&Å€Yf
ÊˆQTcÄè—Ú$»Ñ‚Ø�Yp
+¾Îƒ„˜ ‰(0ÛRà
³ÀjØcÖ´Z¯‰~‰j¢`·¥à›X=ŸB9o
Lû+u»¦2ù‚�¨|OÀYèÓÝ$Gmê-Œ=��Þ=€æëÑõ1ŠÞh±”\è3¾>qåÝìçf/ÑÐUµÑQrsÇÞâh±4­‹j?—1ßlÉpõP\eXÔ;Þ_Râ-&Ò·ZÙ*«ÉÞ¿¥ï8/éz½¹Ûc¨ã‹ü¨5Õ>Ù$�
+—ýÜá]N£¬ø¬p£h‡“f½Æõü¡ÝR½(œ¸#Óžf…RY…òr‹­Ï•Ílëîdh‹õJïáØ=&ÚÞ	»A¿–A‡âs'u“AßaÆEÝ\Ð×Ù�yQ7Ä¶#õœ¶¹þŠâx:w„×
;}ÃÃã‡‡g/å”t­=óËÎçÇ½Ñ< ”KÏ�Û“çDá>î5ö^~gŠÀwÑ¥Â¶/bêüé»ÄËówa½1¬Ú=ÓÐŸ¸à‚ÖþÍ5³Ùßá�Îñ#‹§á7¹¤>ÞÊšÎR“nºJXxÕv£ßÛ/éwÙëC7YÃZÖûA¸2´›™œf&©,ÓÏdKMN³&þPÆ6ì÷¾”dØ#ß2Ý±¡s¼þÌMýV2öêAç˜ŸJ-?w•˜m›îS¹§Îš—bu1ñNÃ
etX²ÖCðå/tÇš¬0(VVŸà³ïèy×_aÍk�¹‰‹¬ß(VVçZÁþ?sñIŸƒL“Do�Õ¾4¾�L yF7	÷óŠÔ ôÚ+Ú$‡ýoÔŸ€Å:gIs$*2oÝM¼Uc»'fsWØÞ™ž{f¢Íe·ÿ9jl}1ø=Ü³9kl³£púùv„fèš�’ÁUÁSõYEg"êö&ÆžûJ	¯ÔÉ¦Å¼%ÆAZ'Í£óN9{»€<*_Ñ Ð­õÊðÇ7ÙJ´£É?î–nâ¶Ë¢í¢½›h\ym÷¼¶ø°¸W*�™_‰1ó«ÑZX£[:øUw×¯¼côcÇI({ÙŠòvky{yùßÞ¾h_ã_ý5š•ÆÑfÔöýŠÛ÷+ÛAî½-¥ö•¯
+—ô_÷_…4‹É_aé?J›õ%ú�§ô2v+€ßÚ>Úl$žŠ8&Û#“¿‡–¥¾°‰ÜDbbnbñK5Qï@^OÊ;�“f}¹þ³·—ÿ‚æaÑ…Ñ¹gR÷ÅØöô}1Ie™iG%‚ÎÇÆ.#Âf&Â&Â!óþúþ˜ÅZÃM¸ê}JÜïŽöp8RæóhS ¿�¿ËË~"€™ÒMõÞ@rFv9G#%Ó˜ï™wü[õ;þyv%¿…��v2}?bñÀ¶UiÉoÅ
øÆyU}®ã8°â=ç{�z£~�v\ïÒOZòOtjTðD.Ó~-l`Xõ½h½RçVÍÐâˆ¶Æ÷FÔgeã¥U÷ó6n„Ÿ·Ü—ñ´•ê“µDŸ,å^Wz&§ÖÉ‰u²
GZµ¨LVèÜŽ¿óÇC¯ö$£ûg@·ßÁèò“UúaBöaYQ»[¯ýB@þ¨ûRò1�9)ó.÷ad„w¹�Ìï¯�J§KTzM§ÒkD¥×é7©â7-TúØ,ø8
+~ÂDû
+>®|œ
+>Hï§‚ûêá_:n£Ø¶À¨ÞêÄÖ÷&ËÖ÷ŒYG?êø4GsÔ1WLL÷ôþ€úN€o•ßÁeèôA8¤¼Mc¯à_U÷»WAaš#¦³”ÂÛb¶éƒuwãF]kJ=XÎºVs«
+¸x<hÍõEà¬‰Ó!àô·û¿¡Ý‡ôv"ÌÒÏRKŸ½\KçYZú¹	u žc¨Wê>ê>‚º/�~� ¾nBe8,pÎ›pöÎ…œ½:œ½go }Šàœ*‡3ßç¢	ç(à3œÐ°;NåŽ4xÂ�;ÒG	ÚÑ€Þ«éÍ�¦üæ@zˆ‡.×ò…–šº£¦·PÓ4ˆ'�·Ê[óÓo<žÑD	kF38%Mõª¦±U<,Mm¸a=6�¾ ³L ïÐwt¶™ãäèVLB=¢êÊúH ]¤¦Ë	µØ‚þ�¨ðc6�àÃnñnë$ÈsÌŠ¶¢¢¹¥Š¶êm¥Š¶Ò¯PE¯”W´ÈRÑM&œgž¢TŠjòÒ/œ-u>–aØå™Â†ÄS`°˜aQÒƒb0�~•@¼j±p3uÇÄ"Ä1qìR‹Mô7ý›™ÿã†¢ib¹°Œ¦QÆ>¡î²™@[¡œGÄrM`9â…Ë3Ù\ƒxÆ(Þl1H´ÄDg7ÐYjFïGt™Á_â®òé@òé€Íêòr9£ŸÌ./Gswyœ
+¹'áîò`à‹Ü]ê«�>Kê“†>Ëë¼§s†>dÖÇ±úT€/ðhqË<#¨­UÝo&?ÈœsS-­˜‹Ÿ5“2çÝTk+Õª>0L¿˜Z÷"Ë
+râ¾ÀT!®11wãÄYBîebîÁØ¬Ìi7•eƒ²Ä=ã©VDéLÏxjN+š#8“¦°VšÂÔu_¡LûØúèy§y G]^í‡�©”N…[©°Z4Q$�Yå!µ‰ÔWÌä­�ÌB‘¬•H¦¾i&¿Èœu	[‰„ê³¡Û¨M0¦{ØÄb(�¹ÉãÕÑßÈœp§¶Z[’Ûv"}+H¿�~¶ÔWu:²ƒÉ‹n;õJ+õŠzÊ¬wo sÔM½ÔJ½é4Åé¬ª^î€(ÚÄ¡¦®+:daêá’}ÄØûˆ®1Lq8�íÓ5fþ^	åéïøU5ýÐ.#~{3ï3V:èã:8=í�_Óž¨§
+X(4·j¹.¿7·*îèÃsªº'Ô9ˆÒ{#\zÐï¨=ðÚ£¾6.·!ÒÓ9T¦X´ÙŠ%[7£”Ñû+j@ŸLà¬ë
+<^¬t”áÒ9˜•¿D-_µÙ
+%Ç§÷¦à«ä(=t'
ÂµCQŽ9¨Åùc¸@UûCù;qqºRqÒör-¿Ž2\|=+×ý!ì:ŽR¿\
ñ·ˆ
•ÐÙ!—ÚÐÙá,µ ³Ãâªµ³Ã
�¯ðè
+o­ðõ
+_®=Q‰�¶à+«:ã‚>‰•h_ìGãqksVîÅ&3ëb+Û&eO°0«Õ£Ã%*EmðþÊjÈ}ÍFœÁrÒÆfHXñŒYÉKBr™‡…«x
`µýƒÆ�d¿ö—ç%i*LºóWÏßàMÙ�Õ�öÄ�%-ùb³D›ÛïßÎóm
+öxß' MVÿ²S…ðUaª‘¸1ÒÇ‚Ô7¦—pO®gå¦ü³²>sÃ+¹G´§%Æ×÷
—ƒ�‘žh™>ðD»?O´ÆìE�ÖL�‡¦ã§%³NÄæxÊŽn&9k2QÙ±¹aU$·+vDçJ¹‡bêf|lî�°ú¶�o¿B}ÙŒ<y…ú�yê
+õ}3²Ãˆ”9ÁåÕ¥Ü	.'Np×(p‚;]4¾îßgøí�ß®rüvYñÛeÅo—¿]Vü("úC †þ õ�è!7^9,üQÃõ_�pE­5�ýêžßî�úM³Ç…É�Ò‹L³ZX4·–›«%6xhPW;ö*vâ³ñ¥=Ï±@a´}Ë:ÅAö2¢]ëPk‡¬Áh0-I'Ü}Ë‡ÒF˜v(´WFø&$TÒF„6+Åº+m#w%e¶Í­IVfiƒò]rú~µÜ“¿?�ÞÍá[=ùÝ çzsãr—Û§\í[n·¸sè7?“r¯Tôƒiðœ|¯’*ŽCÿÇI™Å�?•Ô›ä.ßÏíêÝ¾’eZûT¬Ð´dÞVPí4�±Jñ’Çî´(=Êÿz–@X§”¾¿Ä.Ñ~ž_ÒÍ½Ã¿Ã”i¬%C§ØÊ=ËS`;>–�å$õ‘XîÑmž*8;AÉ<KÐ:€�Ì²WJo¡tB¿WŽß=>>må7®,©çÇáÖ£ýùq0Åé¸Vê“†¤7%¸ r<Æ�ÇlÒïÙžˆÙì>ÛÌ™ó¼à¸ý?`|,êb¾Ô„(¿”)ÐJMmó¹�ç¸¿í¿ší×9ÞkÖsx¿†§ƒ¯ÀåÀ=ãÕ¾ñôÉðme¼H|Ô‘<öðÐð°´cxxH˜]6NØ³´^ºgÑ’Ÿ7
+îâñ_:]Ü¥È„ÒÓ´Ë9æJbBhmiŸ+9ºæJƒ-7·*3^fYÒ¾�8Òlc‘Ûä»ì0ùntch@íe=ê¦c&d-¥jF©…Q¢Ä¾Ñ7ZÅ†rŒŠñ’ùäå_2ç—^2ïcQF—RõV¡ÊÙÊm™Ù¸ºOÑÍYjñãáÄ^O›Ùã�ÑØIu+0‹™ Cá¬§:Ö9žŠATÇå[M]Œ„ÚbîÌS±¬Ûãæ/êîBô'‰OCöÌŽXVDàèN#z„£O‹h1:&ñ	Ew‰hVÖã»�Ü?äè3FôO9ú¬Qx"GŸ3‹øó1-ëÊíˆ
+ìŒQå<£jØ£
+Ø£šx&Fu ðlŒ #ð\Œà"ð|ŒBlS)“	¾_1®ç^Ð¯çØ•üG,aIŸ<#®ç¶»WŽ‰é\Ñm÷¨·LìO¬š(å·{ÄÃ›EGñØ¯•*üaSÛ
+ÄHñ…·NDG=ˆú=mTÿ‹—²ÄÇüÿuunÈŸf1Ke”ÊíÌ´JðÙóG¶É\g;ù´{²ö#Tõ°bw:äI4ç”T'|ÂÝqî¥˜‚í,y²P8
+7nTæ‘rj=jRëe�Z‹ˆZŸ­Ç(§dwž�+£<¼?Á‰
Ôú9
+^sÒs”þoÛ2sŠSMO*x¨û*s1�ºh¿°å/Ò³‚FdV0=ÍŒL¦Ï›ÙÎvO)Æ«ô�0
»C�´t;Vçg•AJÓx1¦ßü�AµOÉm¤�`î•XîÕ2h¸íLÏrçœyú¹ò¨;sÎ‰MpA�¤ $í<twcó13¸\øcTïñäö…rý±©uß‡ÿß`K~fPíú ÷8'è›ˆ¦……¼9AJ1džµ#z6�|›&ÊJÎ®ÞD,ÝM`ºƒê¼ –{Q©Áeãg´:|Pg5$%oaFyº„Ðì/@h6Ašý¿¡.Jé
+ªÓÊÚÅu>Ã�Ññ¦vþ«ð9°Ö¾›k§
Yê:"TbuÈ–¸NêºŽÅ+´¤£e¨óA®ñb© Ö’)ÄF”Ð|/#¥7dã»Þ™ÁVêWX¶Ô1-˜X?¢Ž³Êeë°–uL+Õ1›ê˜�:žµÔq>pI;Š—o‡µ„¨ƒRŒ:†iíf¹8®c'Ÿ¯P?
Àå+±5Ÿ@Î’ç6Ñ´{ÛÜŒÕõµ˜„÷Zâ4Î37˜œ,åÙbæi¢<Ãh—¥¦“Ó-yî7óÄD]îR]³EL‡:Ì7ìFù™AãŽc¶¦mL­•%¼7Pó>¥æ} îh%î Z\Xzè›¬�83nårƒ1¡iÓ’ˆi¼q9Þˆ�Ë‡�’Ö*ˆi ùž6¶8"§Øq<¯@¬…ýø€’¾(ö782W¤¹›¨	ÝA}·©Åžˆþd“ïÞä¼ 8ÜN×Ë¬ë{ÏÉPy›„�‹yAÕ“+4ãm?-Æ]~^Ð{¿d«h¡“6øUKÜ’7¡Ê\‹K¬Q,ê¬Q4YÜR¤è{©Äãµ&�ÓLÓJ3
3«–XcV�æ
+ˆ¿¿°õ³@�æKêÁå%™™©‰Þqœ¯¬†¢oui<Ôšã�&šVšh
+¾í\„F¼¥Õó©bì¿)pwWPÏ^ŽgŸ6ZÊ*úþu´ñ–u.÷]{J¨Ü£?æå0uiÁ÷]DCÙBnh¼‰YÁíE0h±œA‹&ƒ–‘ðyf«y5
ó:5êÐ¡õñ%E˜)
!Í)Æé�õ�t1HoB†WF[Ü_eX>ñjÙ?6Þãø‘”ïËãŠÝåtýü�èpj¥­Gƒ‘¶¯Çº±'è
+õß…„~îSh—:0ô‚0cØSLîu3iùä²4¢kGfÑ·2+…Ã,M1Ì€¿Áíú6ý»îf´jfÜÂh­*ŽhÕB³U¯q«¾si«ZôVí±´ÊËÍyå)]]4P+
+ÔLÔÞ,¡¶¨-jƒÊ(ÆÃ‡wU0Š¿ÎñÖ!:Q¯ÞÂ“)ýh™õØS`W/;ô¥š¿äÞoè—ß«ï™…Åê=´wå¿?Xo+•ORr{¥Ï÷”}¾‡?ï-}Þ\öy3ÞÇµ7âóëeŸ)Ö¯ž¨_îd$ßâ6(V$µäÖj¡Q±Œ¶mË@Žýì*"Ç‡õ-ùëÕ³õîl}rv3¯À?k°¥o	6åoA©·—ÛåÎ�£»	hÿ�³ë78ëü"÷^D]„ŠV±£e±#FLÝWß4²¿.
+eöÕ«Ë‚Q[m',O
+œ¨'zgáJò€â 4á©sK=åÃeÖ­AB+jK\l�’·²×�ƒŠnžM_KÞQ$JéCü=Fßo%RP½AêÇ
�âjXÉ9•¶Ôñúäq¦õ»ŠaN{¯9~ÿšþ]·”Íi/13	GpÔª‹Î&GåøïñÂp½¤åÎ»húyBÑÝšs|lîƒHOs}4G÷ö{Š‹ŠÂ‘áû[ëm©;‚É;‚6(Q©‡¶±®PŒ„ƒ#ŒL8$ê~
+÷~A\à¤�Ô§AcùõÐ £øÁzõ•ŠÜ¾Xþ`}ú‡ßŠåÕ{'qvý—Ó¿@ÊÊ`1˜ƒõ^(*]M6åk©�ŠÔ1`õ³ËáóƒJÈ™µ¨/ÕÈJOtaK¡T=vS¨úH}T‚vnÔf((¥ºˆ¥��C% „Ä�K�è¯x«=ŒÄW¼„Õ¬' @ÕP9=‚N`õFúÎ Žÿ�Áô]A�»‚éÞ`z
G÷£ñk‚h<¥­¦×ròÛH^ËÉ«ƒ@ø�0<ôÜÍ9Ä¢öõù»ƒ°Â‚¤wêÕ;ƒë(¹ß-å¾‡säÜ÷ˆÜ”ôn½zå¾'HES^õî`TJ¼ƒA ”v�%�ò­g8‡bùõ\Ãú kþcVz¥Bà“9K÷p®wcùÎÕ32×ÁXæ`ŒmjE°ŸLü‘�èJ„£ß-õ‰AÃùp=œ†£Ì×s›¢ê†`kòpÌ!â÷Žˆ/oÄ!B¤8]nžxÔg<Éùaâ«½:¥{Ÿ*ÒW|µã!úT× •ü�z„JY{{¨;PjµÞÖRÔ9kõRo[J­F)î8�NÐGc™}1K¿‰Ô=ë;E"}ç‘½°®³C&Ré×I\AIY¹—Pëì@Ÿ²Î^ª´‡ø€¾SÝ½–~á<”¶Ú’Æx£Í«ƒÉ÷bvšbÕ»•®½ã[2Çb Êú0¦Å÷‡ìö¼-‰·JK�þ	Ó�º³spÖ3‡Ð˜Üû1ÃôGrÄ„À721üBfs³¥Ïu8cÔNÊÒÌ¼ûåà3[šiŠ]”D<u<&¹ã±º« ':–òß”&r™Xƒâf›-ý@‘%·çÏˆ#Fáª#¸êÄ®¢xÿ÷ßç…ä¸"ÅŠ´µ¶©'ë»ZÝÉ†¨†íÌE;ºvwcð{<iX¦²*AŒ}±N«8Rß)æiË|K&‘í`=&³|–Ãü€uŠÓ�¿¥—:@¥xnµÌsp"²ªÇ$×Byˆað×i²^Åÿ1ÿ:š5×éÓNb]Púâf4pÎ¸Rn½5ƒüm—ÃRUYkPÕíúœ•¸Ý(<Z£8g	\)·Þ¶ÁB©m�
+½¼8—ÒÄ*}B‘i•ây“‰	€;ƒýzÈì•å8häx«”ão¾Ç�]ÌBlIbc°%¿1èý}t§ßµnÀŠ}|˜Úôñ•ûç�(ÔJ…±±}�*Iê¤uû²4ˆÿ¯[Æ7¡ùÛ�ó#¾�ZïÄç*Q)?WIß¤Díù›”ô<%êÈÏÃùéò{Ì�Í{ÌSú=ær»’ß°ŸŒv½z¦¼ø§fñõâ+¨ø½(NÇcÝ›Ò°bxSÚlºn¥=ÿ?! ÖŸRbs7­±èôFø‘‡¢ïAõ”]K>Ä•Ö3ù‘ü'Ïl„ç`Ü…ÙJpXb­ÊAu'îê1ßœ²çº›KF„»›ûp°¥a ”CƒvØtDhÌt‹¯vaszVã(¤˜Í‰¸Æ](®qò5îB…â�=k”	±oSr76rsš[�_é€:ä5õš­°
+“ºFK\#¥œ�\âífI˜�^¤h…ä"Õßø;‚ZPÔœFÙé�§µ^ò¨/yr‡Û_òH]_ÒRÕðöj»a¸hXã-²ýÕÌûŠ…ÜÉ	™“ø=1!s¿Ç'dŽã÷ƒ	™ð{_Eæ¾Šbª™ñh–2[ÝZQßÒÏQýöÿw«¿©œÑæ5:]²“FváÛ¶®k:œ©"­¹Õ•,é\D�8¿ÑY%;ïâK©0”É¿Öáií¨Ðr'š§Rþ@!÷Œ’H]:>é’7töyVÙª[íGÏ`^¤®)Pßäž¹;`�+¼•
ä…³.âÙ®p¬Ã�xx¼
œ”uç>SPŸ—g1©4º·%óQ,ý¥J6d ÞÊ­WúðêL¥NÇ
+‰ó�ÒÔŽ
+vÂ_ïPúà¢‹çèúš®þµ®¯Å:<4,ðš¿`<îùN4«Av0ü‘-?LÍ“ÚçI¶®yR¬£RdÍœ²g+³™§‚”7[	gšú÷[!o•ú{-ñ÷Rn·‚ÍwÖ-¢Égš…CKŽ¥UŠ@Kû¢J{f·¢©u¢uuZ¢ŽZ·ƒ ]'îùL—ºNK\'	ãÅ•…ÌF;“£Ñävþ›x|¼‡
có�B�0õd�ÉW‚2N&ÙJu±’y‚°Vç+™G‚Y7»ÈVæBü‚ã+,Èöå´¬†¾øt§¾ÀyÐVÝŠ„s*¶3f;w�góî�NY8¤oêªÒ ¾�Öý@ƒðöm�¶Ô«A-ñjP"’ôGy˜yŸZ—¦l%er¤ÚäZîá	†:¹Æ–µ7ÚYêª�µÉá]*§=Æ'_m´|ZiïÑUÇ6:œ²scGS5çËÚTã"øá	SëþÑVŽ&^+ðE
wS�¢/ÄsNw×5°{ÈÄØô…Ùµ�{*ž/¯éÌµp¼~,–¢0‡Þ(¡~fÁ¤‰äH$þ¾ñpâzBÖzÊíT–$oÏš†E#YOƒ¼j£sŒìœÏök…©OOª¶ð•—°ä {-Rƒ,·1lÚ�f|-J=ñO`ÃŒY�ië¨ˆuÔä>Ž-î¨ÍÖdk3Ç<µžšbÖSÔ5Ùw�—’½ãíY'8¿
+œOé‚õ³.PžâG•Äž)³×Á¶¹=Q³žÖÌýJ¶‚¸bm6€ÖQuU#L=»¸+\ñ×¹$RªØ0ì=ÿ„-£U	Ð•Ð€fõëJb6‹V³h…¬'C«žºc¤ .à!âá!RÀÁE�‡GH�ˆ&;²46	rOŠäTã¹Çõ¹Rì	E}IÄ˜UR»ƒ…äî ßde�Y™†Œ 7B«©Ç1m›�î)�|ïeó½Hù^ä|K¡Œr6d;‚8cà7ùúX›Ö”ÙA%Õ5ÅŽeY£\!;÷ð;Ð†P‡<Q7}ÐÔÕêpkÄ$ÌƒÄCŒêBüUAë¡”Ô’ZP*ÖÙ%[jCHËí¶oI'ó“™»BY¹`têÝ¡ÃN=MÐÑÜ¼°úÓe¸›`KxDžAb.°ç5RkKò“‘1¹µžjÞ-j†5å›l¶ø�2rmãÅ¦†ÔH¹31aÑƒZÁfúBºÒ¾‹Ò!ÅÈ¯Q]5í}„i_(ƒ�âêÌ}¡¬ÇãÉÜÊºé?'’6‹¤�”Ä¨»ê/Ô³n"aÖ
Ôx®7pnaœ�AÄºQ®”�Ï4†·2ÝLÑØcÒxãO.bx
"wÈ•‰•ÎÙ.!³±Ü^hí$B•Á`„«“q-° ÏóÁ®v¿ÜOƒì‚ÚN¢6-Ô†b‰¼®ºy_Ž¼n�×Íäuyi`ÓòVx*@^{;¡¤Í"i#’gO9}= ¯‡éenÂY·‰GkÍè"¦Ñ™ÖdÓæÄ�(^Ì}ã\&¼µz]¸öÃqôÊF™69ŸÛ
pçÄþ¸±óñXáN–.…ïi¼Á®Ÿ(a=ØhGy
+ì†ØîÔX¶;l}êŠè'¦N�¹òˆ
­ÝXí«8«c»'¶0!îIý=¥ÒÒ{6&Qª±Jßâ¤•¼î—è±¾Ë˜½8U¬ï2O_·8iBåé‹hþÚU6!{iþ‚ƒ¡ƒY¹…&š©ÇhŠ_KüÙJLñ•ž
+ïÀÈR!ày¬Âœ:‘-*%Ï(vt#wÂýlþ^˜¯3º õ2qúËAÉJö¯^Ò�;i*{Ü“{Í]_Ï’­ƒÎ¬à9~[Õ'ÊÿÌÙ!<ÎD änýt5ú	±Ò�}%ˆÎ^ÑaqA„h³†Ü_ì±²¡°°È³0.àG©NgßÛí´Ï–X¯…–`K£ÿ¬¬Ñ°ÔK4wW±µwG°žý7aZñ4«×»Dâ£A¦À£L�Õ�8«â@ý™~V]EgÕ§ƒ©Ïõè-�Ä×4:èd×f=P¯€�Ù
+%½¿K•Ô%>o‚º\I.ácÕZê>‡ü+Ýôà‰vUó�-TÕh¥Óf±yéÔŠÆ¦‘ê
+e;ø[A[¶s±ÉœYÖ�×`åhú@jK‹–ØÒ"Zj¾Ô>Ÿ¶óÑí4ýb1ÉÜBaš-ÎÑ�–%é ,œ9/¥ó¥Â`d#�±åñ¸»XJB{a©£
å¹X±ð-Éã˜¬în¤²ë!5…³õÄS[Bío!(µ¾ü¼t{£qÚ?¯“ìV"ÙëX;ïàÃð·­$»M‰ß'åoSÒ«•¸Ê¯VÒ«”øË¡ü*%}«ŸcÏßª¤oQâ/†ò·(é•Jü{~%n(60ÛŒ…Èað‡¶üÞ P5}ÕÜÙèô8=çK’°]7@6j3UwÕ½A–Š½–$~f÷]+ÁÑúÛÁÔ[ÁÄ[AÛm‰·ƒvñ/•ê›ÁÜÅØ¿M'Æc·­Cüt	Nj¦éŸÖÄˆ:½[‰íhàÅÌ•¹S<n�ë«NÙW&”ä¢Çaëšô_¬G´ŒU§M²Maó´“¨�SR%Ó'ùpÚÑ¨ðzâÛ›{ða8ÖïRz’;Z$Œ.%Õ6‹¼ëy)å}´¹•p�Ô~Ï‘›1	„KîÚur"Jx²y,›<s’MöØfM‚U¬Ù“ XÜ=Éæ¸ÁvW£ÃíôÜ¨[S÷}ÿƒŽ’{Ð‹{‚UÎ˜Dé€s›'bÉ‚XƒÞfay“hEë‰´RW+ü®V(ÒúJ¹<NXâ–8;ÈµÕâ©aOPýnnN¸…2R˜ønÚÒ9=·Ù
MoC»;µ/›àhUïÕë�Ö0®F¸i=bnSØ>û)w3
+�û«.'wa“•ÙL…½%¹/èø�^õ¿
+ð­_p+_k³ßÈ}8‡úóÛ=�Úß€	yOÈ7Ð^`Û¬wkÓéô]TèÉº›é;¡¹“ºn îÒ{!€98j£á—»i+d]EÂ€DˆÿžjÁ¢_õ¸}÷V„ ˆeZ
®Æ4ÊBT¡“}Ùa5Î*µ"�&€,GÄ`)P?o4g¦y“ÄÌtÍLo`ÊØ4ÚÝÝ½<Ãã�}�âÃÅð¥?µHj_$Ù¾-eÖ(”[¨�®*Yþ>6¨´sËÍŸ”[0©ë×Dè¦±_g3ïY÷ôŽJo#0¤½LûyR‹¥¬'±X’ô×õäÜ�ó«•¾7	[Ú&Àˆ*&8˜;vóþü¾Æ®!Ë?Ù&im6©Á¶¥zó%ÙÜFê1ç*>¶ÿš6ò$-±@’D$N²AVÙ©6lõý!Ñy­’X«Øàiõ«
ÝÉE“$¸€­â[‹øcöÜâIM‚E+fO¢ÀÎfJ¦å ^áô�Í©_·´ÿšjp£NHDS>lÛŒ¼œì*´P2„„y%¿V è´ 8T40”�!î²²YÛXxe µ¢ðÏ‹'µA¾ØrAü@ù:ô ¹’ß¬÷öjêí…Rj‰]CÑEXÉjÅ°ÀöFY®ªþÃ†Á>O!ÿ�=žSx×9T¯@GÅPQx8lÄ®Ê=¨¨§øH‹ÈCŠzŒ#°êÚ�œ?ÂƒÿRÙ¦v7@§…ÔEÇæ¦7«Ç9šºèH\tØpe˜êv$»ÙÄå#�.GUõf±¾„&Í‡J|ó8aqPÝëQwùsŸDà€ PÑUk¼A3ŸøvFÿö�ù­Õü¶?,¾m5¿U!ú€Õ¨Ê±@CáÝ –7¨~T_ðäúÂpÂïrá].MÉy7µ~?Ä({”¶—UÕû™CÿeW_ê+u/SÑ3AXJ¯5^=ÎéoŸaMºHºg¼®|†*?Lý‹ú/¹çÂíÿ"°‚ºÏ“Ùç)¨oy2oÑÏ^Of¯§ ‰û^úåû_úåûàTu{µ�j/ª'‚¹ù¸èDèý	™•Ð©¢ ß�7k”¤Ç-Æ3ól¯-óþúZ€ˆYêH0y$ˆ.z¬
+Tù€6µðuÃã£¤=Ái~\A¼RA}?–oâ�Ò÷£üýI.UÕká ð_4n(íúò·¢ÍôË�¦_n5ü¤q³àv#À
Ï:Í‹àÈ&ÓIIØÈs¦œE×Ý¿`–Íæ�¸gÏÊÉ¥“€èS�rmUõA‡Ñ³N]6³‡5éÔa'‚&æp`1? Qí†ããÙ…Žz¢~J¢Ö‰Ñ&ÒZï	‰Nœ	…ÎO>ÚÔ�‚½ùöôJœ¥NRx¥]<% )U
ÿVx9ØZ§É8¹
+?iK¦tTy¯²±c´ªÜ²I8©Vö÷é"Ù©äleâYZÎ¯)8UVíè¨ÊVEm�‡‡ÁÄ3l6j-…ÐÞl%À›€D"¥ÔC²÷½ 3«VL¾t´tT£2¯b|xFÿ Â1�›Aa-ò	y¨è{`x8[íodßÖ²5zþl
[Ÿ¥¢)Ï2¾ÿæéy0Oç‰8)ö�
ŽR!7ÉZÙkÜ"He¤�I�à”˜{3m
ñäá 1Nò0³êÎF™æÐçœæØÆíÀ¶®ö×ã~€Â³7Ê'Pœy-ó �£-óé.ë|
+]CËÉ9�éßÉ´¢É„¾!E`´ oyÝ&j<¦Œ§‡)è—Aª‘¢�¡‚1„
+ÆÊÊu|4å)dù$»1•xGP¿4=�Z±-Ôß¾-$I!�ÇW@ï"xÿ�ýøñûq0ó(~?	f¡ß+Ÿ“pqäâK¢k}ûþz‰:‰oöà)#s žï™ŽÔãfO\=I)IÁ÷xe¨xÊPñè¨xús�ºÑž»Ñt8¸ÉŒ<:8¾¶âþÙ5zÿ¤šUã©î·ô•c"fe};Sâ�ÚÈ°‚¨]¶bñBFUSæV«§¡&J“3•�
êB&+'¾ekó°îF£¡žvË¤Ëª§­-©§uc¨ìn4½_;†ÒÅ`Óu=öülm3ú*oF[	›o+é^ÅTÊY5)Ó«¤{øe¹G¡°³Iùe§°·O)|=öü¸øš+X%RíUp�†'2
+
+ØÃ¼CQ{Ý!}Ã¢û*µ+;œ�òXÙ¹[î¿zbGÅDØøU:|ð©SGßy}.
+Á…%ãuA=¾q¨žÒU¹‹¹“¦
+ÏÁ]¡–|W¨ÿÿ)íÚƒ£ºÎûÞ}^�€ENØ]b46pwÆ€0ˆ¦�ú‘(Ç£q<%ô�]í•Ðf�48ƒ$ZÿÑG¦�
3al´¬
H ô0H	â
ž:¹»‘ä&©“ºN;N›dê$$™Æl¿ßwî½û`!Ï€öžï~ç»ç{œ÷ù¾cè/ˆh»ˆl£‘ñºmŠ3Ñ.xÌõË¥±v�
È÷ìGdœmkÌ³´qvødÀº}²·–S@4dØW¾˜<~lQ+vd{égŽæ¾'“ØÀ{°Öv"½±öÝX\\Àf³zö‰�|ÆM¨DÍÏ{[¿_ÄðøÇøu‘4Öçxí‚ûœüèÃí¦ô«êÌÏPƒ�ïô…ˆÿmPÃ5=Rž¡¶%cwŒåf4Ü†r³Q)GOiwŠåV§XÎ�âŒ†rîgš¹
+¨™fÉí®†Yf›4¥™…
ORÿh¾LQ?êMê¿àÔú§þ§(9Iêbqkm»@‚jù¯æ›ÏTÑ=Ÿ„ã‘Ë±RÀ÷ë/@q´ÍKý¼øí§îg¿ëÊðBÎl²®vÁ“Iáú;˜}�ß¬�oc7‘û´c¦2Qü`þ^^ãoûgý¡JY'ØdÈ¬Ó™hü‡ªŒ[Â
A;¾2ý‡y±y9¤À‚š'Óâ:B
+ýT9pC:ÙåB²ÇèôCVÚ& ‹Åár&„CÏ“?Ð»y $è_íÙç«æä M@>FKó}»Aø7»AxI,Ü�r&vú^°ÄiûáDs?÷+2ï~Aµ=²[Ôí˜´ª‘WDÝ+½ö�ƒðöCÐ†Aµö5
‡Øÿ=h9v¢b¿tû<Þ�¸å`YuaÛFªG�ÂºÞ«S ß–
+Ìä3ñO²Sdd� X:~@«Û#”ÎtfÎ‡Ùl´S¼²ÙÖ‚AS¤E.HÔ¶(m-‰N}YÄvÜ[ûþGâeí )':Déj�Þn‘Ž~‡¨ýÞ"G²n»pF:°Ÿïçi†éiðêëüñ«4†ÙI+qxbclc|dÁº�JÛFL/¯Î�gè}jä”‹Æ¯æ)ò ¼»°´ùb¹;\^÷b9Œóƒ ‡DrØÉk
,�t•ã¸yé¡õã”sl¿@ÈÌ·BiÓû|*ò\UfÝsUŠËˆíPp}B%5j9!%i€Á*…†$óìÜ?»�²:)ëõ9n¡#ûDÝ>á ïUBàƒ*®Ë+¯rôói=N“H’[ánlÕhX!pz7ÿ¡wF’ $=ã�“›”×ò’òzò¢ÆíÒ\G9°°|q®-¿È^Q·—�ì'4iöx?Ãâ2lIA ’2n“Ú 2“þgÐåñx¿œ³ÂX"'9.Åy�%„h-ÔviÊ>¤emÌÅFÀ š!J¼”`’NFîc}`úèþW¾(Eª~œ××=®´=Žq]²2¾Ÿùôú ýMëýô7£¨¼Exœ¾+<u;÷º\oœ]ØÈ0&Y73Ÿâ²ìnž@_®’-T
+<~õ€¶ÄŸ ÑÌû‘e¡¡B‰Ó°'Ï@­›í>âÖ¢W•œ!þiâ5­É,®£0KCeLséî¢ýïHí¤s¶�4l XûX`û)R½?áRbUp#æ�7z+ÍG‹*®44±}®ªÁmCš‹9…'f¼GdPÌ;™³�ÍYÞ_Læ¬ª>ÉÐúb†<`È`é¨ß›S¿—Uî5Hã0bÚCLÓ�ÙäÚ®@ü¿Y)+¹Imk™àjÝ<‰«+¤sÓ,LºHn$´1/¦ôœŸf³Èü?A¸)	ÎÌ�5ËIj–­›1¶’QÐdï"^8úÝÏƒpÒ¦Q`d§X:ß)ÎOi}§P�ªTáLœËÂCb':‰_0þÜþx"mr»ðz—$·K’Ûe‘ÃCbÈý¯MÎÄÏáãŒ)¿®A�J5‚°¸”u³œÓVk’gæ¿zÊi¤éb²öüg4ªŸÞÚXFÿ§Ñ¨8ü—H°á¹/Bã­Ú2%ÙŽvhþG•’/|™/Û¡„î€â÷âZtwíAÍ˜›‘?räÃÏ|ó®£ÛÇÅ2é0R&¿J)^–_I"¾Ç~šq›FÒ�ÓÃW5L7ã{ÄŽðU+©ø¿LÉkVÒé'å‡¯[I—
%oXI7üƒÃo[I6õÃGæšI¯9ÄÇ‘C|êôOýc6ë»p+ûƒ[Ù[·²÷f³Z6û¹löo³YzáK~GæVÖPÛY›Ò[iˆEXÒeC™	˜fˆùœ|]sÀnm™I>#/•,EÓº—ÊÝ8Bt»Ø70Ö¡`¨b|7]÷>ö¿æ®×Ÿ÷¦î?øÌîÍ åZù†–çZù:»VÂSjžô[+QOMŠõŽDRÈÕàßñA2Ó'KÒp€�ëú!Í„u‡5%Ö%b)QŽ¨ü)íé¥S‰.‘Q]‰”À~o}ü6M 4áÏD’0	á<yýM^äœ1AØ„1ƒÔ?ï²H—X:ïãSéŒÞ%T—ê4?HšY¸–
+BI*ÊÞ¥ØpXb§ãG4jfŸ¥NÃÕvc½|Âß]Ébqg³zWÂ£Ù,bþÿo!|‡‡€|®i’°š§àKÝL
Z/º×¤ÈP>sµÖL1•~	D>PYä��S
…Q*ó!á¬XÈÅ±aøˆ•¬Rêz4gzíOƒ'GzÎ5™ãSX2ËPy*qv¨KàK�4­"¦}ª—°¨Áe¦qtÌ�™ûD6‹žé÷wUJ
+ÒK‰ó�^JJ�1fÚJIÉ.u»RR·)åŽdó”r7Â¦R>¦q¹Ûs]*Å
¥°>¦üÇþ€:¢æíÔ%Õá.¡w¡:Ü¶:pI�:.¸¤6RR)Q¦ìeJŽÄ]‹[UªÎRÇ-®¤¸6ÒÜêf@¡êD�×¸ª¬¬HYFB÷ÇRë§|m!¨ñ/¡Å•SFl, c.�ŒÚ±€? p†O¡¬5bódLäyFí<%�ÕÛµFúÂÌ†¬‰ØQs"ö&bn6/T‘@!�¹áÊìÔS8xð|n~é÷ÍTÆÎˆDî¸ß)
+™ Š‹õ—ö�ÓåS±?è{•JäŒ0jÏ¥íŒ >°[èÝÔtô½‡�B–Ç1»¥ûâ²Ø*ñÃ!éÅq˜ÛBN¹
+”+à�ð¯îM¼ˆ
+„§DâP úz œt%^Giÿ)T°'öÏ6ë½&ë‡‰õ£ ü­œ\ïÍ§|8þÐ¹^ÑƒÒ‹Å|�™|¿dó}|og¾WAEcbÒd~Œ˜#æÇÀ|ŸÐûˆù^¡÷ÒO¿Ðûég@è(Æ[ÇKˆâˆÅ1`v0krëog#%4ú'Äß8'ÌFWƒôÅˆ¿+ŒxŸ&ã>xÓ¼;ßøníž€së$Þ¥õ>
vù2gs„^q²wâ­ÍCåÜ¸o­•é~Ê´;dõSý\ä›ÓñC7ú©í|Ðôv«:ow…wÀªŽ@º{Š¥;nJw¯-Ý#�î·YºìH?nKwœ¤;NÒ‡t‡„>Dòú(ýœú)úú0ýŒ}„~Ný4$ØiËz „¬{¤¬Os_¨„ô+¡Bèý\¶§åíß‚v' kg‡,%»QË» =Š…î_©A-Ñ#ü?ÇM*gÅý‰³"/o9ç5±
+ò«œŸ¨RÞ71¸:.=©&ÃgX‘Óö0?H›C«§Ïši§¥ï‰ÿÌÄwñXëµ`Ú[ýcŸ3±=‹§Óæè
+wµ0±}öXKå±–ª:?µ)›U?¾•Íÿ·"kþÛÄ‡Î^
yIrû\¦xôœÅ)=°#aNyÞÒR[*ŽÃöóNé»÷PsSãøæ˜hAlçÉŒ¤”{
im*Ê×á²ó=ÊùDŒ`(OPÎ	+´uµ’¯‰øìœ²¡^*Ÿ—ÞÕ¦Nƒ²pP^åmô1üÍÓòîÌc%@!kBUw	Ò=Âò/æoçy¿SÛ7ß^è?¡Ñ¬õEuêƒ8¸ð;:£wÊ	:À j6÷’î¨Vü�³bŸ*¦œ2o—]õNj·ûí•UïjY²TÕ;XTõRœ.³j‚C†¼ÔnÀ‡CÆ Qöå*LŸ¨r'ú¸õæ ½ÐW/CûsÐ~àö3t î€-Ë>AYÖ;‰!åûjã@`®‘˜4žðuÒàå<¤Õ�ç T‡øõ‚’¯¥dqÜ/äöúÔ‹?>¬Ñ;ÃwÚ¹y¼)x¢í¡L±·4¾š3ÃcÉ›'F’
î9ïÑPŠÔ�ÛÂÓ)yK3ÒëÞÒœ˜‚bßU†bŽØŠ9UB1Ç¤bÆ ƒîRŠé)RÌÑ�‹Ò£Š"öà	¹'ÅçÄzvÅ+ÒÔ‡Š+øh1àT1`¸0R8m6«HgC"ò Qû ïVC":Ê­Ìi-1*¢ÃÖ«51,¢#üjDKŒ€©c!ï4ŸÚ£r`äÉÅS‹Ùëa1_÷¸¸Qe‹]ÁygÓôGµ†²Èjl×­VQ–¨e9ö*ÖÈ‚Øìí-fo/Ç2¡Â�[yÅžKÙšÈÏUñŒ”™Ì²Õô	¢Æ�ò-ÂvWüŒÙN`F7*òáÄ86Æ	š#ÅÁ†ðñdÁÇ%ÎpŽ‡a‘“÷ÞbyKHŠ§óx!2ù¹,Nÿvò0"òá¤!æaDäH1Ãøx²àã#vu%‡QMI#Õ¨gµØ“ÛÚžœ0*†Ñ•~ßMJOÇãm¥y`§+ÿ�÷`k£;¿émÅi~\Xú[€¼D6c®óe<òœdˆ�éœ–lp÷› Ñ‡"
žãæóˆ|ž)á@#T¯•{$Äw_¤áÂEaX�Îkf[<®ålrœl;·8#ûì‰Š
Š#z„Âoúj/hJ‚ôïrðm€À¸>ø¢æŒ^e´“�WóÑNÚh—mP¢QâR>Ú �v�ÑNH4J\ËG;a£]–Ô¦1%.P›f¡½-Y�h”x»€Mr†ã,¼“sU¦x–õÐÚè‹^a©^Òü@SêsšdÁÎv­0Û˜†ó7×9Ûe-Á
ª>†f´7ä¦ùøû<ß~rñÔó
+FÃEaÙ½A]d§$kšßdºb<`~SˆwÎ6×éÊHûódØþ¼pÉÎHûó¡÷8CÓÖãÙl‰LZ†æé—Þ°è\Ék#)&ìÉ—oOé<{’¡;Îh½îŠ–Aâx‘Ž:%¯h§L›»ªeò›A×mvA°vŠ
êªÐ%	.6˜k|›�Hp±A¼-îbæ(åŠÐ/ÝIù&Êu¡_ÖH�‹Šµ&ø@N€�£7rCØýyŸÝÍ^+ÑÍöÊnv�Ï_ßsCq8¼ŽrGýc­››ŸÙü„¾IÿJÓæ§Zžý»¦úú¦¯74m¬oln®¤¹¹©¥¹¾ùïãõ_ÿ‡úæ¯=½©¹¾‘sÔ?ÚÚü¬Ì\¿|YÍ²ê5Ë«W.w¸õŸÝ¬åÏ ‡l_|zÓ×êkV­¨©©~¨zð“{ì™o<b«V,_±ú!ÇL"¦·èŸßüôÆ»Q’žjÙÜÔÒ˜ ìÕÕÕËW.«q”}¢²|©é«M�-õËWÕ¬Xµ²fåê5ŽiŸˆÞÏliok–=´Œˆ=ìp8þ’ñÌ
\ 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/tinybrowser/fns_tinybrowser.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/fns_tinybrowser.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/fns_tinybrowser.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/fns_tinybrowser.php	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,431 @@
+<?php
+// *************************CREATE FOLDER**********************************
+function createfolder($dir,$perm) {
+is_dir(dirname($dir)) || createfolder(dirname($dir), $perm);
+    return is_dir($dir) || @mkdir($dir, $perm);
+}
+
+// *************************VALIDATE FILE EXTENSIONS**********************************
+function validateExtension($extension, $types) {
+if(in_array($extension,$types)) return false; else return true;
+}
+
+//*************************************Display Alert Notifications*********************************
+function alert(&$notify){
+$alert_num = count($notify['type']);
+for($i=0;$i<$alert_num;$i++)
+	{
+	?><div class="alert<?php echo $notify['type'][$i]; ?>"><?php echo $notify['message'][$i]; ?></div><br /><?php
+	}
+}
+
+// *************************SORT FILE ARRAY BY SELECTED ORDER**********************************
+function sortfileorder(&$sortbynow,&$sortorder,&$file) {
+
+switch($sortbynow) 
+	{
+	case 'name':
+		array_multisort($file['sortname'], $sortorder, $file['name'], $sortorder, $file['type'], $sortorder, $file['modified'], $sortorder, $file['size'], $sortorder, $file['dimensions'], $sortorder, $file['width'], $sortorder, $file['height'], $sortorder);
+		break;
+	case 'size':
+		array_multisort($file['size'], $sortorder, $file['sortname'], SORT_ASC, $file['name'], SORT_ASC, $file['type'], $sortorder, $file['modified'], $sortorder, $file['dimensions'], $sortorder, $file['width'], $sortorder, $file['height'], $sortorder);
+		break;
+	case 'type':
+		array_multisort($file['type'], $sortorder, $file['sortname'], SORT_ASC, $file['name'], SORT_ASC, $file['size'], $sortorder, $file['modified'], $sortorder, $file['dimensions'], $sortorder, $file['width'], $sortorder, $file['height'], $sortorder);
+		break;
+	case 'modified':
+		array_multisort($file['modified'], $sortorder, $file['name'], $sortorder, $file['name'], $sortorder, $file['type'], $sortorder, $file['size'], $sortorder, $file['dimensions'], $sortorder, $file['width'], $sortorder, $file['height'], $sortorder);
+		break;
+	case 'dimensions':
+		array_multisort($file['dimensions'], $sortorder, $file['width'], $sortorder, $file['sortname'], SORT_ASC, $file['name'], SORT_ASC, $file['modified'], $sortorder, $file['type'], $sortorder, $file['size'], $sortorder, $file['height'], $sortorder);
+		break;
+	default:
+		// do nothing
+	}
+}
+
+// **************************RESIZE IMAGE TO GIVEN SIZE*****************************************
+function resizeimage($im,$maxwidth,$maxheight,$urlandname,$comp,$imagetype){
+$width = imagesx($im);
+$height = imagesy($im);
+if(($maxwidth && $width > $maxwidth) || ($maxheight && $height > $maxheight))
+	{
+	if($maxwidth && $width > $maxwidth)
+		{
+		$widthratio = $maxwidth/$width;
+		$resizewidth=true;
+		} 
+	else $resizewidth=false;
+
+	if($maxheight && $height > $maxheight)
+		{
+		$heightratio = $maxheight/$height;
+		$resizeheight=true;
+		} 
+	else $resizeheight=false;
+
+ 	if($resizewidth && $resizeheight)
+		{
+		if($widthratio < $heightratio) $ratio = $widthratio;
+		else $ratio = $heightratio;
+		}
+	elseif($resizewidth)
+		{
+		$ratio = $widthratio;
+		}
+	elseif($resizeheight)
+		{
+		$ratio = $heightratio;
+		}
+	$newwidth = $width * $ratio;
+	$newheight = $height * $ratio;
+		if(function_exists('imagecopyresampled') && $imagetype !='image/gif')
+		{
+		$newim = imagecreatetruecolor($newwidth, $newheight);
+		}
+	else
+		{
+		$newim = imagecreate($newwidth, $newheight);
+		}
+
+	// additional processing for png / gif transparencies (credit to Dirk Bohl)
+	if($imagetype == 'image/x-png' || $imagetype == 'image/png')
+		{
+		imagealphablending($newim, false);
+		imagesavealpha($newim, true);
+		}
+	elseif($imagetype == '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 );
+			}
+		}
+
+   imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
+   
+   if($imagetype == 'image/pjpeg' || $imagetype == 'image/jpeg')
+   	{
+   	imagejpeg ($newim,$urlandname,$comp);
+   	}
+   elseif($imagetype == 'image/x-png' || $imagetype == 'image/png')
+   	{
+   	imagepng ($newim,$urlandname,substr($comp,0,1));
+   	}
+   elseif($imagetype == 'image/gif')
+   	{
+   	imagegif ($newim,$urlandname);
+   	}
+	imagedestroy ($newim);
+	}
+else
+	{
+   if($imagetype == 'image/pjpeg' || $imagetype == 'image/jpeg')
+   	{
+   	imagejpeg ($im,$urlandname,$comp);
+   	}
+   elseif($imagetype == 'image/x-png' || $imagetype == 'image/png')
+   	{
+   	imagepng ($im,$urlandname,substr($comp,0,1));
+   	}
+   elseif($imagetype == 'image/gif')
+   	{
+   	imagegif ($im,$urlandname);
+   	}
+	}
+}
+
+// **************************CHECK IMAGE TYPE AND CONVERT TO TEMP TYPE*****************************
+function convert_image($imagetemp,$imagetype){
+
+if($imagetype == 'image/pjpeg' || $imagetype == 'image/jpeg')
+	{
+	$cim1 = imagecreatefromjpeg($imagetemp);
+	}
+elseif($imagetype == 'image/x-png' || $imagetype == 'image/png')
+	{
+	$cim1 = imagecreatefrompng($imagetemp);
+	imagealphablending($cim1, false);
+	imagesavealpha($cim1, true);
+	}
+elseif($imagetype == 'image/gif')
+	{
+	$cim1 = imagecreatefromgif($imagetemp);
+	}
+return $cim1;
+}
+
+// **************************GENERATE FORM OPEN*****************************
+function form_open($name,$class,$url,$parameters){
+?><form name="<?php echo $name; ?>" class="<?php echo $class; ?>" method="post" action="<?php echo $url.$parameters; ?>">
+<?php
+}
+
+// **************************GENERATE FORM SELECT ELEMENT*****************************
+function form_select($options,$name,$label,$current,$auto){
+if ($label) {?><label for="<?php echo $name; ?>"><?php echo $label; ?></label><?php } 
+?><select name="<?php echo $name; ?>" <?php if ($auto) {?>onchange="this.form.submit();"<?php }?>>
+<?php
+$loopnum = count($options); 
+for($i=0;$i<$loopnum;$i++)
+	{
+	$selected = ($options[$i][0] == $current ? ' selected' : ''); 
+	echo '<option value="'.$options[$i][0].'"'.$selected.'>'.$options[$i][1].'</option>';
+	}
+?></select><?php
+}
+
+// **************************GENERATE FORM HIDDEN ELEMENT*****************************
+function form_hidden_input($name,$value) {
+?><input type="hidden" name="<?php echo $name; ?>" value="<?php echo $value; ?>" />
+<?php
+}
+
+// **************************GENERATE FORM TEXT ELEMENT*****************************
+function form_text_input($name,$label,$value,$size,$maxlength) {
+if ($label) {?><label for="<?php echo $name; ?>"><?php echo $label; ?></label><?php } ?>
+<input type="text" name="<?php echo $name; ?>" size="<?php echo $size; ?>" maxlength="<?php echo $maxlength; ?>" value="<?php echo $value; ?>" /><?php
+}
+
+// **************************GENERATE FORM SUBMIT BUTTON*****************************
+function form_submit_button($name,$label,$class) {
+?><button <?php if ($class) {?>class="<?php echo $class; ?>"<?php } ?>type="submit" name="<?php echo $name; ?>"><?php echo $label; ?></button>
+</form>
+<?php
+}
+
+//********************************Returns True if Number is Odd**************************************
+function IsOdd($num)
+{
+return (1 - ($num & 1));
+}
+
+//********************************Truncate Text to Given Length If Required***************************
+function truncate_text($textstring,$length){
+	if (strlen($textstring) > $length)
+		{
+		$textstring = substr($textstring,0,$length).'...';
+		}
+	return $textstring;
+}
+
+/**
+ * Present a size (in bytes) as a human-readable value
+ * 
+ * @param int    $size        size (in bytes)
+ * @param int    $precision    number of digits after the decimal point
+ * @return string
+ */
+function bytestostring($size, $precision = 0) {
+    $sizes = array('YB', 'ZB', 'EB', 'PB', 'TB', 'GB', 'MB', 'KB', 'B');
+    $total = count($sizes);
+
+    while($total-- && $size > 1024) $size /= 1024;
+    return round($size, $precision).' '.$sizes[$total];
+}
+
+//function to clean a filename string so it is a valid filename
+function clean_filename($filename){
+    $filename = preg_replace('/^\W+|\W+$/', '', $filename); // remove all non-alphanumeric chars at begin & end of string
+    $filename = preg_replace('/\s+/', '_', $filename); // compress internal whitespace and replace with _
+    return strtolower(preg_replace('/\W-/', '', $filename)); // remove all non-alphanumeric chars except _ and -
+
+}
+
+//********************************Return File MIME Type***************************
+function returnMIMEType($filename)
+    {
+        preg_match("|\.([a-z0-9]{2,4})$|i", $filename, $fileSuffix);
+
+        switch(strtolower($fileSuffix[1]))
+        {
+            case 'js' :
+                return 'application/x-javascript';
+
+            case 'json' :
+                return 'application/json';
+
+            case 'jpg' :
+            case 'jpeg' :
+            case 'jpe' :
+                return 'image/jpg';
+
+            case 'png' :
+            case 'gif' :
+            case 'bmp' :
+            case 'tiff' :
+                return 'image/'.strtolower($fileSuffix[1]);
+
+            case 'css' :
+                return 'text/css';
+
+            case 'xml' :
+                return 'application/xml';
+
+            case 'doc' :
+            case 'docx' :
+                return 'application/msword';
+
+            case 'xls' :
+            case 'xlt' :
+            case 'xlm' :
+            case 'xld' :
+            case 'xla' :
+            case 'xlc' :
+            case 'xlw' :
+            case 'xll' :
+                return 'application/vnd.ms-excel';
+
+            case 'ppt' :
+            case 'pps' :
+                return 'application/vnd.ms-powerpoint';
+
+            case 'rtf' :
+                return 'application/rtf';
+
+            case 'pdf' :
+                return 'application/pdf';
+
+            case 'html' :
+            case 'htm' :
+            case 'php' :
+                return 'text/html';
+
+            case 'txt' :
+                return 'text/plain';
+
+            case 'mpeg' :
+            case 'mpg' :
+            case 'mpe' :
+                return 'video/mpeg';
+
+            case 'mp3' :
+                return 'audio/mpeg3';
+
+            case 'wav' :
+                return 'audio/wav';
+
+            case 'aiff' :
+            case 'aif' :
+                return 'audio/aiff';
+
+            case 'avi' :
+                return 'video/msvideo';
+
+            case 'wmv' :
+                return 'video/x-ms-wmv';
+
+            case 'mov' :
+                return 'video/quicktime';
+
+            case 'zip' :
+                return 'application/zip';
+
+            case 'tar' :
+                return 'application/x-tar';
+
+            case 'swf' :
+                return 'application/x-shockwave-flash';
+
+            default :
+            if(function_exists('mime_content_type'))
+            {
+                $fileSuffix = mime_content_type($filename);
+            }
+
+            return 'unknown/' . trim($fileSuffix[0], '.');
+        }
+    }
+
+//************************Return Array of Directory Structure***************************
+function dirtree(&$alldirs,$types='*.*',$root='',$tree='',$branch='',$level=0) {
+
+// filter file types according to type
+$filetypes = explode(',',preg_replace('{[ \t]+}', '',$types));
+
+if($level==0 && is_dir($root.$tree.$branch))
+	{
+	$filenum=0;
+	foreach($filetypes as $filetype)
+	   {
+   	$filenum = $filenum + count(glob($root.$tree.$branch.sql_regcase($filetype),GLOB_NOSORT));
+   	}
+   $treeparts = explode('/',rtrim($tree,'/'));
+	$topname = end($treeparts);
+	$alldirs[] = array($branch,rtrim($topname,'/').' ('.$filenum.')',rtrim($topname,'/'),rtrim($topname,'/'),$filenum,filemtime($root.$tree.$branch));
+	}
+$level++;
+
+$dh = opendir($root.$tree.$branch);
+while (($dirname = readdir($dh)) !== false)
+	{
+	if($dirname != '.' && $dirname != '..' && is_dir($root.$tree.$branch.$dirname) && $dirname != '_thumbs')
+		{
+		$filenum=0;
+		foreach($filetypes as $filetype)
+		   {
+			$filenum = $filenum + count(glob($root.$tree.$branch.$dirname.'/'.sql_regcase($filetype),GLOB_NOSORT));
+			}
+		$indent = '';
+		for($i=0;$i<$level;$i++) { $indent .= ' &nbsp; '; }
+      if(strlen($indent)>0) $indent .= '&rarr; ';
+		$alldirs[] = array(urlencode($branch.$dirname.'/'),$indent.$dirname.' ('.$filenum.')',$indent.$dirname,$dirname,$filenum,filemtime($root.$tree.$branch.$dirname));
+		dirtree($alldirs,$types,$root,$tree,$branch.$dirname.'/',$level);
+		}
+	}
+closedir($dh);
+$level--;
+}
+
+/* user defined error handling function. */
+function userErrorHandler($errno, $errmsg, $filename, $linenum, $vars)
+{
+    // timestamp for the error entry.
+    $dt = date('Y-m-d H:i:s (T)');
+
+    // define an assoc array of error string
+    // in reality the only entries we should
+    // consider are E_WARNING, E_NOTICE, E_USER_ERROR,
+    // E_USER_WARNING and E_USER_NOTICE.
+    $errortype = array (
+                E_ERROR => 'Error',
+                E_WARNING => 'Warning',
+                E_PARSE => 'Parsing Error',
+                E_NOTICE => 'Notice',
+                E_CORE_ERROR => 'Core Error',
+                E_CORE_WARNING => 'Core Warning',
+                E_COMPILE_ERROR => 'Compile Error',
+                E_COMPILE_WARNING => 'Compile Warning',
+                E_USER_ERROR => 'User Error',
+                E_USER_WARNING => 'User Warning',
+                E_USER_NOTICE => 'User Notice',
+                E_STRICT => 'Runtime Notice'
+                );
+    // set of errors for which a var trace will be saved.
+    $user_errors = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE);
+
+	 if($errno != E_STRICT) // exclude Runtime Notices
+		{
+	 	$err  = $dt. "\t";
+    	$err .= $errno.' '.$errortype[$errno]. "\t";
+    	$err .= $errmsg. "\t";
+    	$err .= 'File: '.basename($filename). "\t";
+    	$err .= 'Line: '.$linenum. "\t";
+
+    	if (in_array($errno, $user_errors))
+			{
+        	$err .= 'Trace: '.wddx_serialize_value($vars, 'Variables'). "\t";
+    		}
+    	$err .= "\n";
+
+	   // save to the error log file, and e-mail me if there is a critical user error.
+	   error_log($err, 3, 'error.log');
+	   }
+}
+$old_error_handler = set_error_handler('userErrorHandler');
+
+?>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/folders.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/folders.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/folders.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/folders.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,273 @@
+<?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['allowfolders'])
+	{
+	echo TB_FODENIED;
+	exit;
+	}
+
+// Assign request / get / post 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']) : ''));
+$dirpath = $tinybrowser['path'][$typenow];
+$passfolder = '&folder='.urlencode($foldernow);
+$passfeid = (isset($_GET['feid']) && $_GET['feid']!='' ? '&feid='.$_GET['feid'] : '');
+
+
+
+// Assign browsing options
+$actionnow = (isset($_POST['editaction']) ? $_POST['editaction'] : 'create' );
+
+// Initalise alert array
+$notify = array(
+	'type' => array(),
+	'message' => array()
+);
+$createqty = 0;
+$deleteqty = 0;
+$renameqty = 0;
+$errorqty = 0;
+	
+// Create any child folders with entered name
+if(isset($_POST['createfolder']))
+	{
+	foreach($_POST['createfolder'] as $parent => $newfolder)
+		{
+		if($newfolder != '')
+			{
+			$createthisfolder = $tinybrowser['docroot'].$dirpath.urldecode($_POST['actionfolder'][$parent]).clean_filename($newfolder);
+			if (!file_exists($createthisfolder) && createfolder($createthisfolder,$tinybrowser['unixpermissions'])) $createqty++; else $errorqty++;
+			if($typenow=='image')
+			   {
+				createfolder($createthisfolder.'/_thumbs/',$tinybrowser['unixpermissions']);
+			   }
+			}
+		}
+	}
+	
+// Delete any checked folders
+if(isset($_POST['deletefolder']))
+	{
+	foreach($_POST['deletefolder'] as $delthis => $val)
+		{
+		if($typenow=='image')
+			{
+			$delthisthumbdir = $tinybrowser['docroot'].$dirpath.urldecode($_POST['actionfolder'][$delthis]).'_thumbs/';
+			if (is_dir($delthisthumbdir)) rmdir($delthisthumbdir);
+			}
+		$delthisdir = $tinybrowser['docroot'].$dirpath.urldecode($_POST['actionfolder'][$delthis]);
+		if (is_dir($delthisdir) && rmdir($delthisdir)) $deleteqty++; else $errorqty++;
+		if($foldernow==urldecode($_POST['actionfolder'][$delthis]))
+         {
+         $foldernow = '';
+         $passfolder = '';
+         }
+		}
+
+	}
+	
+// Rename any folders with changed name
+if(isset($_POST['renamefolder']))
+	{
+	foreach($_POST['renamefolder'] as $namethis => $newname)
+		{
+      $urlparts = explode('/',rtrim(urldecode($_POST['actionfolder'][$namethis]),'/'));
+		if(array_pop($urlparts) != $newname)
+			{
+			$namethisfolderfrom = $tinybrowser['docroot'].$dirpath.urldecode($_POST['actionfolder'][$namethis]);
+         $renameurl = implode('/',$urlparts).'/'.clean_filename($newname).'/';
+			$namethisfolderto = $tinybrowser['docroot'].$dirpath.$renameurl;
+			if (is_dir($namethisfolderfrom) && rename($namethisfolderfrom,$namethisfolderto)) $renameqty++; else $errorqty++;
+			if($foldernow==urldecode($_POST['actionfolder'][$namethis]))
+            {
+            $foldernow = ltrim($renameurl,'/');
+            $passfolder = '&folder='.urlencode(ltrim($renameurl,'/'));
+            }
+			}
+		}
+	}
+
+// Assign directory structure to array
+$dirs=array();
+dirtree($dirs,$tinybrowser['filetype'][$typenow],$tinybrowser['docroot'],$tinybrowser['path'][$typenow]);
+
+// generate alert if folders deleted
+if($createqty>0)
+   {
+	$notify['type'][]='success';
+	$notify['message'][]=sprintf(TB_MSGCREATE, $createqty);
+	}
+// generate alert if folders deleted
+elseif($deleteqty>0)
+   {
+	$notify['type'][]='success';
+	$notify['message'][]=sprintf(TB_MSGDELETE, $deleteqty);
+	}
+// generate alert if folders renamed
+elseif($renameqty>0)
+   {
+	$notify['type'][]='success';
+	$notify['message'][]=sprintf(TB_MSGRENAME, $renameqty);
+	}
+	
+// generate alert if file errors encountered
+if($errorqty>0)
+   {
+	$notify['type'][]='failure';
+	$notify['message'][]=sprintf(TB_MSGEDITERR, $errorqty);
+	}
+	
+// count folders
+$num_of_folders = (isset($dirs) ? count($dirs) : 0);
+
+?>
+<!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_FOLDERS; ?></title>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Pragma" content="no-cache" />
+<?php
+if($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,'folders.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 
+	}
+if($tinybrowser['allowfolders'])
+	{
+   ?><li id="edit_tab"><span><a href="edit.php?type=<?php echo $typenow.$passfolder.$passfeid ; ?>"><?php echo TB_EDIT; ?></a></span></li>
+   <?php
+   }
+?><li id="folders_tab" class="current"><span><a href="folders.php?type=<?php echo $typenow.$passfolder.$passfeid; ?>"><?php echo TB_FOLDERS; ?></a></span></li>
+</ul>
+</div>
+</form>
+<div class="panel_wrapper">
+<div id="general_panel" class="panel currentmod">
+<fieldset>
+<legend><?php echo TB_FOLDERS; ?></legend>
+<?php
+form_open('edit','custom','folders.php','?type='.$typenow.$passfolder.$passfeid);
+?>
+<div class="pushleft">
+<?php
+
+// Assign edit actions based on file type and permissions
+$select = array();
+if($tinybrowser['allowfolders']) $select[] = array('create',TB_CREATE);
+if($tinybrowser['allowdelete']) $select[] = array('delete',TB_DELETE);
+if($tinybrowser['allowedit']) $select[] = array('rename',TB_RENAME);
+
+form_select($select,'editaction',TB_ACTION,$actionnow,true);
+?></form></div><?php
+
+form_open('actionform','custom','folders.php','?type='.$typenow.$passfolder.$passfeid);
+
+if($actionnow=='move')
+   { ?><div class="pushleft"><?php
+   form_select($editdirs,'destination',TB_FOLDERDEST,urlencode($foldernow),false);
+   ?></div><?php
+   } 
+
+switch($actionnow) 
+	{
+	case 'delete':
+		$actionhead = TB_DELETE;
+		break;
+	case 'rename':
+		$actionhead = TB_RENAME;
+		break;
+	case 'create':
+		$actionhead = TB_CREATE;
+		break;
+	default:
+		// do nothing
+	}
+?><div class="tabularwrapper"><table class="browse"><tr>
+<th class="nohvr"><?php echo TB_FOLDERNAME; ?></th>
+<th class="nohvr"><?php echo TB_FILES; ?></th>
+<th class="nohvr"><?php echo TB_DATE; ?></th>
+<th class="nohvr"><?php echo $actionhead; ?></th></tr>
+<?php
+
+for($i=0;$i<$num_of_folders;$i++)
+	{
+	$disable = ($i == 0 ? true : false);
+	$alt = (IsOdd($i) ? 'r1' : 'r0');
+	echo '<tr class="'.$alt.'">';
+	echo '<td>'.$dirs[$i][2].'</td>';
+	echo '<td>'.$dirs[$i][4].'</td><td>'.date($tinybrowser['dateformat'],$dirs[$i][5]).'</td>'
+	.'<td>';
+	form_hidden_input('actionfolder['.$i.']',$dirs[$i][0]);
+	switch($actionnow) 
+		{
+		case 'create':
+         echo '&rarr; ';
+			form_text_input('createfolder['.$i.']',false,'',30,120);
+			break;
+		case 'delete':
+         $disabledel = ($dirs[$i][4] > 0 ? ' DISABLED' : '');
+			if(!$disable) echo '<input class="del" type="checkbox" name="deletefolder['.$i.']" value="1"'.$disabledel.' />';
+			break;
+		case 'rename':
+			if(!$disable) form_text_input('renamefolder['.$i.']',false,$dirs[$i][3],30,120);
+			break;
+		default:
+			// do nothing
+		}
+	echo "</td></tr>\n";
+	}
+
+echo "</table></div>\n".'<div class="pushright">';
+if($tinybrowser['allowdelete'] && $tinybrowser['allowedit'])
+	{
+	form_hidden_input('editaction',$actionnow);
+	form_submit_button('commit',$actionhead.' '.TB_FOLDERS,'edit');
+	}
+?>
+</div></fieldset></div></div>
+</body>
+</html>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/img/asc.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/img/asc.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/img/asc.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/img/asc.gif	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,4 @@
+GIF89a	
+Äggg×××ôôôÜÜÜ»»»ffføøø÷÷÷õõõ£££ÚÚÚJJJ¿¿¿üüüýýýþþþÿÿÿ!ù,	
+  Ždi
+Ê9D�	DL¹Dt;4<9Mœ@R;
\ 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/tinybrowser/img/back.png 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/img/back.png
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/img/back.png	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/img/back.png	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,4 @@
+‰PNG
+
+
IHDR¹gÔLgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<0PLTEñññþþþîîîûûûëëëøøøõõõòòòïïïüüüùùùíííêêê÷÷÷ôôôÿÿÿ0,÷\3IDATxÚ|Ä·À ±7Áöß–ûs�
+±ÅýG4EYLñŠ%ŠøUÄ'’:ÐþÄ²IEND®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/tinybrowser/img/desc.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/img/desc.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/img/desc.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/img/desc.gif	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,3 @@
+GIF89a	
+Äggg×××ôôôÜÜÜ»»»ffføøø÷÷÷õõõ£££ÚÚÚJJJ¿¿¿üüüýýýþþþÿÿÿ!ù,	
+  ŽdIQš£¡2ä¢6%ÁåÑ¦bþ@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/tinybrowser/img/preview.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/img/preview.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/img/preview.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/img/preview.gif	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1 @@
+GIF89aÄÌáöÛêúÙ²ˆÑäø¼ŠSžh$™¸Þ²ÎîæÆ¤„§ÓºÕóÈÞô—œ§ºÑìÂ˜gþÿÿôìäË¥zÁÛôÅÝõáíùÖç÷ÂÜù½ØóýüûµÓôñèÞ‘¨Ç|¡Ð¯Êè¯{@!ù,hà#ŽdI–’e€9%ÍáqtcZ`1¦6‘4+ÈÒ7i^.Žé ³^&‹�i1]\%GÄÔéÃF@Ð˜†'Áphv.#ƒ$…‰Š#ˆ�$k“.!;
\ 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/tinybrowser/img/rotate_ac.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/img/rotate_ac.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/img/rotate_ac.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/img/rotate_ac.gif	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,4 @@
+GIF89aÄ…Â~zºr¤Ô›ŒÉ„©×Ÿ“Ê‹r´ifµ[L’FC‰<R™K�Ñ•îöíªÐ¦^«Tlªe\ŸV˜Í�»Ü·€Áw9}3¡Ò—d¦\-m(Âå¾0r,…Çz°Í­²Ð¯u°n`šZ!ù,q #Ždiž(ƒiÇ`é UÁ9„à/‹N§´ê-&“Â"òà�&À…£Ñp
+éà›4D
DbLr�/�
+
+€A6I‘ÂÀ’€@('B2�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/tinybrowser/img/rotate_c.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/img/rotate_c.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/img/rotate_c.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/img/rotate_c.gif	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1 @@
+GIF89aÄ‚Âze´Z¤Ôš{»s¨É¥^¨VR›Kíõì[�Wi«aŒÊƒ©Ö¡�ÉˆŠÇƒ˜Í�n¯e�Ð”9}3²Ó®Âå¾VŽQ>„8‡Å‰·ƒF�@¼Ý¸t®mv¶oH�@]žW¢ÇŸ!ù,nà!Ždižè1)A0d©bAËâlÛ©(‹àC��¦4ô âHH€_€@(0€©(,DÍµ‚*€�Fäd0.˜ä†b2$œ‚Å0<IvW{Iuh|†')k–$™'!;
\ 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/tinybrowser/img/tabs.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/img/tabs.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/img/tabs.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/img/tabs.gif	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,6 @@
+GIF89a,ZÕÿÿÿüüþ2Jb’¢²¶ÄÍ‘§´äéìãéìíñó¡³»©¹¿ãéë‘›œúûûÈÑÍÐÖÐððêôôïóóîòòíññìððëööòõõñôôðóóïòòîññíööóõõòûûùøøöööôýýüüüûúúùøø÷ñïßîíæëêãïîèìëåñðëðïêåâÚçäÝëèáæãÝéæàèåßóñîöôòþþþüüüúúúÿÿÿ!ù8,,Zÿ@da(�È¤rÉl:ŸÐ¨tJ­Z¯Ø¬)à°xL.›Ïè´zÍn»ßð¸|N¯Ïˆš~Ïïûÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž�Ž""6#–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¨7$°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÄ% ÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßÞ!!åæçèéêëìíîïðñòóôõö÷øùúøåÿ
+H° Áƒ*\È°¡Ã‡#JœHQ¢�0hÜÈ±£Ç� CŠI²¤É“(Sª\É²¥Ë—-
hÌ@³¦Í›8sêÜÉ³§ÏÿŸ@ƒ
+J´¨Ñ£H“5@SƒÓ§P£J�JµªÕ«X³jÝÊµ«×¯`ÃŠÖ€	Òª]Ë¶­Û·pãÊ�K·®Ý»xóêÝË·¯_¾ÒRL¸°áÃˆ+^Ì¸±ãÇ�#KžL¹²åË˜-Ø°�ƒçÏ C‹Mº´éÓ¨S«^Íºµë×°cËžÛÀà
+¸sëÞÍ»·ïßÀƒN¼¸ñãÈ“+_Î¼ùr¸-HŸN½ºõëØ³kßÎ½»÷ïàÃ‹O¾¼ùóå
XˆÀ¾½û÷ðãËŸO¿¾ýûøóëßÏ¿¿ÿÿàhà�&¨à‚JáD(á„Vhá…f¨á†vèÿá‡ †(âˆ$–hb‰ âŠ,¶èâ‹0Æ(ãŒ4Öhã�8æ¨ãŽ<öèã�>ä�Diä‘H&©ä’6 À“PF)å”TJiÇ•Xf©å–\vé%NV)æ˜V~iæ™h¦©æšk„Iæ›U²)çœtÖignÂ©'”wöéçŸ€b™çžzjè¡ˆ&À „¾©è£�FŠ&£�Ž)é¥˜f*¥•Æ©é§ †§�N)ê©¨FJj©Q¦êê«€®Êê“°Öj«œ²Îzë®¼z™+«½+l¿Îjì±È&«ì²Ì6ë,«Å>+í´ÔVkíµØ
+€Ã¶Üvëí·à†+î¸ä–kî¹è¦«ÿîºì¶ëî»ðº«À&Äkï½øæ«ï¾üöëo¹	Á¿lðÁ'|p
, ðÃG,ñÄ@ƒg¬ñÆwLw,òÈ$—|ï*„lòÊ,·ìò
+/¨ìòÌ4×1Ì2Û¬óÎ<ãËB9÷,ôÐD�›ÐE'­´Ò'ÈôÒPGÝrÓOKmõÕ«àBÕXwíuÂ*ÀÀõ×d—½oØc›­öÚí¢ÐBÚlÇ-÷¸/¼=÷Ýxç­÷Þë�|Ž7~nxÜ*Â}øâK?©8ã�íxä”[=yå˜+}yæœ½yç Ûüyè¤·<zé¨“|zê¬o¼zë°Küzì´'<K{í¸|{î¼ï»{ïÀÛû{ðÄ·;|ñÈ'¯üòÌ7ïüóÐG/ýôÔWoýõØg¯ýöÜwïý÷à‡/þøä—oþùÊ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/tinybrowser/js/swfobject.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/js/swfobject.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/js/swfobject.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/js/swfobject.js	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,8 @@
+/**
+ * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
+ *
+ * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ */
+if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\"";_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\">";_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";var _1d=this.getParams();for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split("&");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){return _2d[i].substring((_2d[i].indexOf("=")+1));}}}return "";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName("OBJECT");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;
\ 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/tinybrowser/js/tinybrowser.js.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/js/tinybrowser.js.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/js/tinybrowser.js.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/js/tinybrowser.js.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,79 @@
+<?php
+$mainpage = (strpos(basename($_SERVER['HTTP_REFERER']),'tinybrowser.php') === 0 ? true : false);
+require_once('../config_tinybrowser.php');
+
+if($mainpage && !isset($_GET['feid']) && $tinybrowser['integration'] == 'tinymce')
+	{?>
+	function selectURL(url)
+	{
+		document.passform.fileurl.value = url;
+		FileBrowserDialogue.mySubmit();
+	}
+	var FileBrowserDialogue = {
+	    init : function () {
+	        // Here goes your code for setting your custom things onLoad.
+				rowHighlight();
+	    },
+	    mySubmit : function () {
+	 		  var URL = document.passform.fileurl.value;
+	        var win = tinyMCEPopup.getWindowArg("window");
+	
+	        // insert information now
+	        win.document.getElementById(tinyMCEPopup.getWindowArg("input")).value = URL;
+	
+	        // for image browsers: update image dimensions
+			  if (typeof(win.ImageDialog) != "undefined" && document.URL.indexOf('type=image') != -1)
+				  {
+		        if (win.ImageDialog.getImageData) win.ImageDialog.getImageData();
+		        if (win.ImageDialog.showPreviewImage) win.ImageDialog.showPreviewImage(URL);
+				  }
+	
+	        // close popup window
+	        tinyMCEPopup.close();
+	    }
+	}
+	tinyMCEPopup.onInit.add(FileBrowserDialogue.init, FileBrowserDialogue);
+	<?php 
+	}
+elseif($mainpage && !isset($_GET['feid']) && $tinybrowser['integration'] == 'fckeditor')
+	{?>
+	function selectURL(url){
+	// window.opener.SetUrl( url, width, height, alt);
+	window.opener.SetUrl( url ) ;
+	window.close() ;
+	}
+	<?php
+	}
+elseif($mainpage && $_GET['feid'] != '')
+	{?>
+	function selectURL(url) {
+	opener.document.getElementById("<?php echo $_GET['feid']; ?>").value = url;
+	// Set img source of element id, if img id exists (format is elementid + "img")
+	if (
+        typeof(opener.document.getElementById("<?php echo $_GET['feid']; ?>img")) != "undefined"
+        && opener.document.getElementById("<?php echo $_GET['feid']; ?>img") != null
+        && opener.document.getElementById("<?php echo $_GET['feid']; ?>img").src.length != 0
+		)
+	   {
+		opener.document.getElementById("<?php echo $_GET['feid']; ?>img").src = url;
+		}
+	self.close();
+	}
+	<?php
+	}
+?>
+
+rowHighlight = function() {
+var x = document.getElementsByTagName('tr');
+for (var i=0;i<x.length;i++) 
+	{
+	x[i].onmouseover = function () {this.className = "over " + this.className;}
+	x[i].onmouseout = function () {this.className = this.className.replace("over", ""); this.className = this.className.replace(" ", "");}
+	}
+var y = document.getElementsByTagName('th');
+for (var ii=0;ii<y.length;ii++) 
+	{
+	y[ii].onmouseover = function () {if(this.className != "nohvr") this.className = "over " + this.className;}
+	y[ii].onmouseout = function () {this.className = this.className.replace("over", ""); this.className = this.className.replace(" ", "");}
+	}
+}
\ 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/tinybrowser/langs/cs.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/cs.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/cs.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/cs.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,70 @@
+<?php 
+/*
+TinyBrowser 1.40 - A TinyMCE file browser (C) 2008  Bryn Jones
+Default Language 'cs'
+Author: J. Frank
+*/
+		define("TB_BROWSE", "ProhlÃ­Å¾et");
+		define("TB_EDIT", "Editovat");
+		define("TB_UPLOAD", "NahrÃ¡t");
+		define("TB_FOLDERS", "SloÅ¾ky");
+ 		define("TB_FOLDERNAME", "NÃ¡zev sloÅ¾ky");
+		define("TB_FOLDERCURR", "AktuÃ¡lnÃ­ sloÅ¾ka ");
+ 		define("TB_FOLDERDEST", "CÃ­l: ");
+		define("TB_VIEW", "Zobrazit: ");
+		define("TB_SHOW", "UkÃ¡zat: ");
+		define("TB_PAGE", "Strana");
+		define("TB_FILENAME", "NÃ¡zev souboru");
+		define("TB_SIZE", "Velikost");
+		define("TB_DIMENSIONS", "RozmÄ›ry");
+		define("TB_TYPE", "Typ");
+		define("TB_DATE", "Soubor modifikovÃ¡n");
+		define("TB_SEARCH", "Hledat");
+		define("TB_MOVE", "PÅ™esunout");
+		define("TB_FILES", "Soubory");
+		define("TB_BROWSEFILES", "ProhlÃ­Å¾et soubory");
+		define("TB_DETAILS", "Detaily");
+		define("TB_THUMBS", "NÃ¡hledy");
+		define("TB_EDITFILES", "Editovat soubory");
+		define("TB_ACTION", "Akce");
+		define("TB_CREATE", "VytvoÅ™it");
+		define("TB_DELETE", "Vymazat");
+		define("TB_RENAME", "PÅ™ejmenovat");
+		define("TB_ROTATE", "PÅ™evrÃ¡tit");
+		define("TB_RESIZE", "ZmÄ›nit velikost");
+		define("TB_UPLOADFILES", "NahrÃ¡t soubory");
+		define("TB_PROGRESS", "");
+		define("TB_REMOVE", "Vyjmout");
+		define("TB_BYTES", "bytes");
+		define("TB_WIDTH", "Å¡Ã­Å™ka");
+		define("TB_HEIGHT", "vÃ½Å¡ka");
+		define("TB_NONE", "Nic");
+		define("TB_TYPEIMG", "ObrÃ¡zky");
+		define("TB_TYPEMEDIA", "MultimÃ©dia");
+		define("TB_TYPEFILE", "VÅ¡echny soubory");
+		define("TB_ROTATECW", "OtoÄ�it 90 stupÅˆÅ¯ doprava");
+		define("TB_ROTATECCW", "OtoÄ�it 90 stupÅˆÅ¯ doleva");
+		define("TB_MSGNEWTHUMBS", "%s novÃ½ nÃ¡hled byl vygenerovÃ¡n.");
+		define("TB_MSGMKDIR", "The '%s' sloÅ¾ka byla ÃºspÄ›Å¡nÄ› vytvoÅ™ena.");
+		define("TB_MSGMKDIRFAIL", "Nelze vytvoÅ™it '%s' sloÅ¾ku - prosÃ­m zkontrolujte prÃ¡va pÅ™Ã­stupu.");
+		define("TB_MSGDELETE", "%s soubory byly ÃºspÄ›Å¡nÄ› vymazÃ¡ny.");
+		define("TB_MSGRENAME", "%s soubory byly ÃºspÄ›Å¡nÄ› pÅ™ejmenovÃ¡ny.");
+		define("TB_MSGRESIZE", "%s obrÃ¡zkÅ¯m byla ÃºspÄ›Å¡nÄ› zmÄ›nÄ›na velikost.");
+		define("TB_MSGROTATE", "%s obrÃ¡zky byly ÃºspÄ›Å¡nÄ› otoÄ�eny.");
+		define("TB_MSGEDITERR", "%s soubory hlÃ¡si chybu bÄ›hem poÅ¾adovanÃ© operace.");
+		define("TB_MSGUPGOOD", "%s soubory byly ÃºspÄ›Å¡nÄ› nahrÃ¡ny.");
+		define("TB_MSGUPBAD", "%s soubory nebyly nahrÃ¡ny k vÅ¯li bezpeÄ�nostnÃ­m omezenÃ­m.");
+		define("TB_MSGUPDUP", "%s soubory nebyly nahrÃ¡ny, pravdÄ›podobnÄ› jiÅ¾ existujÃ­, vymaÅ¾te je nebo zmÄ›nte jejich nÃ¡zvy.");
+		define("TB_MSGUPFAIL", "NahrÃ¡nÃ­ selhalo, prosÃ­m zkontroluje oprÃ¡vnÄ›nÃ­ pro '%s'.");
+		define("TB_MSGMAXSIZE", "soubor je vÄ›tÅ¡Ã­ neÅ¾ je maximÃ¡lnÃ­ povolenÃ¡ hranice.");
+		define("TB_TTLMAXSIZE", "Å patnÃ¡ velikost souboru");
+		define("TB_DENIED", "PotÅ™ebujete povolenÃ­ pro vstup na tutu strÃ¡nku");
+		define("TB_UPDENIED", "PotÅ™ebujete povolenÃ­ pro upload souborÅ¯.");
+		define("TB_EDDENIED", "PotÅ™ebujete povolenÃ­ pro zmÄ›nu nebo mazÃ¡nÃ­ souborÅ¯.");
+		define("TB_MSGCREATE", "%s SloÅ¾ky byly ÃºspÄ›Å¡nÄ› vytvoÅ™eny.");
+	
+		
+
+	
+
+?>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/da.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/da.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/da.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/da.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,69 @@
+<?php
+/*
+TinyBrowser 1.40 - En TinyMCE fil browser (C) 2008 Bryn Jones
+Default Language 'da'
+Forfatter: Peter Bentsen
+email: peter.bentsen [at] gmail [dot] com
+*/
+		define("TB_BROWSE", "Gennemse");
+		define("TB_EDIT", "Edit&eacute;r");
+		define("TB_UPLOAD", "Upload");
+		define("TB_FOLDERS", "Mapper");
+		define("TB_FOLDERNAME", "Mappe Navn");
+		define("TB_FOLDERCURR", "Aktuelle Mappe: ");
+		define("TB_FOLDERDEST", "Destination: ");
+		define("TB_VIEW", "Vis som:");
+		define("TB_SHOW", "Vis:");
+		define("TB_PAGE", "Side");
+		define("TB_FILENAME", "Fil Navn");
+		define("TB_SIZE", "St&oslash;rrelse");
+		define("TB_DIMENSIONS", "M&aring;l");
+		define("TB_TYPE", "Type");
+		define("TB_DATE", "Dato &AElig;ndret");
+		define("TB_SEARCH", "S&oslash;g");
+		define("TB_FILES", "Filer");
+		define("TB_BROWSEFILES", "Gennemse Filer");
+		define("TB_DETAILS", "Detaljer");
+		define("TB_THUMBS", "Miniaturer");
+		define("TB_EDITFILES", "Rediger Filer");
+		define("TB_ACTION", "Aktion");
+		define("TB_CREATE", "Opret");
+		define("TB_DELETE", "Slet");
+		define("TB_RENAME", "Omd&oslash;b");
+		define("TB_ROTATE", "Roter");
+		define("TB_RESIZE", "&AElig;ndre st&oslash;rrelse");
+		define("TB_MOVE", "Flyt");
+		define("TB_UPLOADFILES", "Upload Filer");
+		define("TB_PROGRESS", "Progression");
+		define("TB_REMOVE", "Fjern");
+		define("TB_BYTES", "bytes");
+		define("TB_WIDTH", "bredde");
+		define("TB_HEIGHT", "h&oslash;jde");
+		define("TB_NONE", "Ingen");
+		define("TB_TYPEIMG", "Billeder");
+		define("TB_TYPEMEDIA", "Media");
+		define("TB_TYPEFILE", "Alle Filer");
+		define("TB_ROTATECW", "Roter 90 grader med uret");
+		define("TB_ROTATECCW", "Roter 90 grader mod uret");
+		define("TB_MSGNEWTHUMBS", "%s nye billede thumbnails er blevet genereret.");
+		define("TB_MSGMKDIR", "'%s' biblioteket er skabt med succes.");
+		define("TB_MSGMKDIRFAIL", "Kunne ikke oprette '%s' mappen - Kontroller dine tilladelser.");
+		define("TB_MSGCREATE", "%s mapperne er blevet oprettet med succes.");
+		define("TB_MSGDELETE", "%s filer er blevet slettet.");
+		define("TB_MSGRENAME", "%s filer er med succes er blevet omd&oslash;bt.");
+ 		define("TB_MSGMOVE", "%s filer er med succes er blevet flyttet.");
+		define("TB_MSGRESIZE", "%s billeder er med succes er blevet tilpasset.");
+		define("TB_MSGROTATE", "%s billeder er med succes er blevet roteret.");
+		define("TB_MSGEDITERR", "%s filer st&oslash;dt p&aring; fejl under den &oslash;nskede handling.");
+		define("TB_MSGUPGOOD", "%s filer er blevet uploadet.");
+		define("TB_MSGUPBAD", "%s filer ikke er blevet uploadet, p&aring; grund af sikkerhedsm&aelig;ssige begr&aelig;nsninger.");
+		define("TB_MSGUPDUP", "%s filer ikke er blevet uploadet, da de findes i forvejen - du skal slette eller omd&oslash;be originale filer.");
+		define("TB_MSGUPFAIL", "Fil Upload mislykkedes - Kontroller dine tilladelser til '%s'.");
+		define("TB_MSGMAXSIZE", "kan ikke s&aelig;ttes i k&oslash; til upload, da st&oslash;rrelsen overstiger den maksimale gr&aelig;nse p&aring;");
+		define("TB_TTLMAXSIZE", "Filst&oslash;rrelse Fejl");
+		define("TB_DENIED", "Det kr&aelig;ve tilladelse for at se denne side.");
+		define("TB_UPDENIED", "Det kr&aelig;ver upload tilladelse for at se denne side.");
+		define("TB_EDDENIED", "Det kr&aelig;ve, redigere eller slette tilladelser for at se denne side.");
+ 		define("TB_FODENIED", "Det kr&aelig;ver mappe redigerings tilladelse for at se denne side.");
+
+?>
\ 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/tinybrowser/langs/de.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/de.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/de.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/de.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,68 @@
+<?php
+/*
+TinyBrowser 1.41 - A TinyMCE file browser (C) 2008  Bryn Jones
+Language 'de'
+Author: Konrad Richter
+email: webmaster[at]korinet[dot]de
+*/
+define("TB_BROWSE", "Durchsuchen");
+define("TB_EDIT", "Bearbeiten");
+define("TB_UPLOAD", "Hochladen");
+define("TB_FOLDERS", "Ordner");
+define("TB_FOLDERNAME", "Ordner Name");
+define("TB_FOLDERCURR", "Aktueller Ordner: ");
+define("TB_FOLDERDEST", "Zielordner: ");
+define("TB_VIEW", "Zeige: ");
+define("TB_SHOW", "Zeigen: ");
+define("TB_PAGE", "Seite");
+define("TB_FILENAME", "Dateiname");
+define("TB_SIZE", "Gr&ouml;&szlig;e");
+define("TB_DIMENSIONS", "Abmessungen");
+define("TB_TYPE", "Datei Typ");
+define("TB_DATE", "Letzte &Auml;nderung");
+define("TB_SEARCH", "Suchen");
+define("TB_FILES", "Dateien");
+define("TB_BROWSEFILES", "Vorhandene Dateien");
+define("TB_DETAILS", "Details");
+define("TB_THUMBS", "Vorschau");
+define("TB_EDITFILES", "Dateien bearbeiten");
+define("TB_ACTION", "Aktion: ");
+define("TB_CREATE", "Erstellen");
+define("TB_DELETE", "L&ouml;schen");
+define("TB_RENAME", "Umbenennen");
+define("TB_ROTATE", "Drehen");
+define("TB_RESIZE", "Gr&ouml;&szlig;e &auml;ndern");
+define("TB_MOVE", "Verschieben");
+define("TB_UPLOADFILES", "Dateien hochladen");
+define("TB_PROGRESS", "Fortschritt");
+define("TB_REMOVE", "L&ouml;schen");
+define("TB_BYTES", "bytes");
+define("TB_WIDTH", "Breite");
+define("TB_HEIGHT", "H&ouml;he");
+define("TB_NONE", "Keine");
+define("TB_TYPEIMG", "Bilder");
+define("TB_TYPEMEDIA", "Medien");
+define("TB_TYPEFILE", "Alle Dateien");
+define("TB_ROTATECW", "Drehung 90 Grad im Uhrzeigersinn");
+define("TB_ROTATECCW", "Drehung 90 Grad gegen den Uhrzeigersinn");
+define("TB_MSGNEWTHUMBS", "%s neue Vorschaubilder wurden generiert.");
+define("TB_MSGMKDIR", "Das Verzeichnis '%s' wurde erfolgreich angelegt.");
+define("TB_MSGMKDIRFAIL", "Verzeichnis '%s' konnte nicht angelegt werden - &Uuml;berpr&uuml;fen Sie die Schreibrechte.");
+define("TB_MSGCREATE", "%s Ornder wurde(n) erfolgreich erstellt.");
+define("TB_MSGDELETE", "%s Dateie(n) wurde(n) erfolgreich gel&ouml;scht.");
+define("TB_MSGRENAME", "%s Dateie(n) wurde(n) erfolgreich  umbenannt.");
+define("TB_MSGMOVE", "%s Datei(n) wurde(n) erfolgreich verschoben.");
+define("TB_MSGRESIZE", "%s Dateie(n) wurde(n) erfolgreich ge&auml;ndert.");
+define("TB_MSGROTATE", "%s Dateie(n) wurde(n) erfolgreich gedreht.");
+define("TB_MSGEDITERR", "%s Dateie(n) wurde(n) fehlerhaft verarbeitet.");
+define("TB_MSGUPGOOD", "%s Dateie(n) wurde(n) erfolgreich hochgeladen.");
+define("TB_MSGUPBAD", "%s Dateie(n) konnten aufgrund von Sicherheitseinschr&auml;nkungen nicht bearbeitet werden.");
+define("TB_MSGUPDUP", "%s Dateien konnten nicht hochgeladen werden, sollte(n) diese schon existieren, l&ouml;schen oder benennen Sie die entspr. Datei(en) um.");
+define("TB_MSGUPFAIL", "Dateiupload fehlgeschlagen - pr&uuml;fen Sie die Schreibrechte f&uuml;r '%s'.");
+define("TB_MSGMAXSIZE", " kann nicht zum hochladen vorgemerkt werden, da die Datei-Gr&ouml;&szlig;e das maximum &uuml;berschreitet: ");
+define("TB_TTLMAXSIZE", "Datei ist zu gro&szlig;");
+define("TB_DENIED", "Sie haben keine Berechtigung, um diese Seite anzuzeigen.");
+define("TB_UPDENIED", "Sie ben&ouml;tigen Berechtigungen zum Hochladen von Dateien, um diese Seite anzuzeigen.");
+define("TB_EDDENIED", "Sie ben&ouml;tigen Berechtigungen zum Bearbeiten/L&ouml;schen von Dateien, um diese Seite anzuzeigen.");
+define("TB_FODENIED", "Sie ben&ouml;tigen Berechtigungen zum Bearbeiten von Ordnern, um diese Seite anzuzeigen.");
+?>
\ 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/tinybrowser/langs/en.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/en.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/en.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/en.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,68 @@
+<?php 
+/*
+TinyBrowser 1.41 - A TinyMCE file browser (C) 2008  Bryn Jones
+Default Language 'en'
+Author: Bryn Jones
+email: bryn[at]lunarvis[dot]com
+*/
+		define("TB_BROWSE", "Browse");
+		define("TB_EDIT", "Edit");
+		define("TB_UPLOAD", "Upload");
+		define("TB_FOLDERS", "Folders");
+ 		define("TB_FOLDERNAME", "Folder Name");
+		define("TB_FOLDERCURR", "Current Folder: ");
+ 		define("TB_FOLDERDEST", "Destination: ");
+		define("TB_VIEW", "View As: ");
+		define("TB_SHOW", "Show: ");
+		define("TB_PAGE", "Page");
+		define("TB_FILENAME", "File Name");
+		define("TB_SIZE", "Size");
+		define("TB_DIMENSIONS", "Dimensions");
+		define("TB_TYPE", "Type");
+		define("TB_DATE", "Date Modified");
+		define("TB_SEARCH", "Search");
+		define("TB_FILES", "Files");
+		define("TB_BROWSEFILES", "Browse Files");
+		define("TB_DETAILS", "Details");
+		define("TB_THUMBS", "Thumbnails");
+		define("TB_EDITFILES", "Edit Files");
+		define("TB_ACTION", "Action: ");
+ 		define("TB_CREATE", "Create");
+		define("TB_DELETE", "Delete");
+		define("TB_RENAME", "Rename");
+		define("TB_ROTATE", "Rotate");
+		define("TB_RESIZE", "Resize");
+ 		define("TB_MOVE", "Move");
+		define("TB_UPLOADFILES", "Upload Files");
+		define("TB_PROGRESS", "Progress");
+		define("TB_REMOVE", "Remove");
+		define("TB_BYTES", "bytes");
+		define("TB_WIDTH", "width");
+		define("TB_HEIGHT", "height");
+		define("TB_NONE", "None");
+		define("TB_TYPEIMG", "Images");
+		define("TB_TYPEMEDIA", "Media");
+		define("TB_TYPEFILE", "All Files");
+		define("TB_ROTATECW", "Rotate 90 degrees clockwise");
+		define("TB_ROTATECCW", "Rotate 90 degrees anti-clockwise");
+		define("TB_MSGNEWTHUMBS", "%s new image thumbnails have been generated.");
+		define("TB_MSGMKDIR", "The '%s' directory has been successfully created.");
+		define("TB_MSGMKDIRFAIL", "Unable to create the '%s' directory - please check your permissions.");
+		define("TB_MSGCREATE", "%s folders have been successfully created.");
+		define("TB_MSGDELETE", "%s files have been successfully deleted.");
+		define("TB_MSGRENAME", "%s files have been successfully renamed.");
+ 		define("TB_MSGMOVE", "%s files have been successfully moved.");
+		define("TB_MSGRESIZE", "%s images have been successfully resized.");
+		define("TB_MSGROTATE", "%s images have been successfully rotated.");
+		define("TB_MSGEDITERR", "%s files encountered errors during the requested operation.");
+		define("TB_MSGUPGOOD", "%s files have been successfully uploaded.");
+		define("TB_MSGUPBAD", "%s files have not been uploaded, due to security restrictions.");
+		define("TB_MSGUPDUP", "%s files have not been uploaded, as they already exist - please delete or rename original files.");
+		define("TB_MSGUPFAIL", "File upload failed - please check your permissions for '%s' and also your php.ini settings.");
+		define("TB_MSGMAXSIZE", "cannot be queued for upload as the size exceeds the maximum limit of");
+		define("TB_TTLMAXSIZE", "File Size Error");
+		define("TB_DENIED", "You require permission to view this page.");
+		define("TB_UPDENIED", "You require upload permission to view this page.");
+		define("TB_EDDENIED", "You require edit or delete permissions to view this page.");
+ 		define("TB_FODENIED", "You require folder maintenance permissions to view this page.");
+?>
\ 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/tinybrowser/langs/es.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/es.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/es.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/es.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,59 @@
+<?php 
+/*
+TinyBrowser 1.32 - A TinyMCE file browser (C) 2008  Bryn Jones
+Default Language 'en'
+Author: Bryn Jones. Fran Iglesias
+email: bryn[at]lunarvis[dot]com  franiglesias[at]mac[dot]com
+*/
+		define("TB_BROWSE", "Navegar");
+		define("TB_EDIT", "Editar");
+		define("TB_UPLOAD", "Subir");
+		define("TB_VIEW", "Ver como: ");
+		define("TB_SHOW", "Mostrar: ");
+		define("TB_PAGE", "PÃ¡gina");
+		define("TB_FILENAME", "Nombre de archivo");
+		define("TB_SIZE", "TamaÃ±o");
+		define("TB_DIMENSIONS", "Dimensiones");
+		define("TB_TYPE", "Tipo");
+		define("TB_DATE", "ModificaciÃ³n");
+		define("TB_SEARCH", "Buscar");
+		define("TB_FILES", "Archivos");
+		define("TB_BROWSEFILES", "Navegar por archivos");
+		define("TB_DETAILS", "Detalles");
+		define("TB_THUMBS", "Previos");
+		define("TB_EDITFILES", "Editar archivos");
+		define("TB_ACTION", "AcciÃ³n");
+		define("TB_DELETE", "Borrar");
+		define("TB_RENAME", "Cambiar nombre");
+		define("TB_ROTATE", "Rotar");
+		define("TB_RESIZE", "Cambiar tamaÃ±o");
+		define("TB_UPLOADFILES", "Subir archivos");
+		define("TB_PROGRESS", "Progreso");
+		define("TB_REMOVE", "Quitar");
+		define("TB_BYTES", "bytes");
+		define("TB_WIDTH", "ancho");
+		define("TB_HEIGHT", "alto");
+		define("TB_NONE", "Nada");
+		define("TB_TYPEIMG", "ImÃ©genes");
+		define("TB_TYPEMEDIA", "Medios");
+		define("TB_TYPEFILE", "Todos");
+		define("TB_ROTATECW", "Rotar 90 grados derecha");
+		define("TB_ROTATECCW", "Rotar 90 grados izquierda");
+		define("TB_MSGNEWTHUMBS", "%s se han generado previos de la imagen.");
+		define("TB_MSGMKDIR", "El directorio '%s' ha podido ser creado.");
+		define("TB_MSGMKDIRFAIL", "Incapaz de crear el directorio '%s'. Por favor, comprueba los permisos.");
+		define("TB_MSGDELETE", "%s archivos han sido borrados.");
+		define("TB_MSGRENAME", "%s archivos han cambiado de nombre.");
+		define("TB_MSGRESIZE", "%s imÃ¡genes han sido escaladas.");
+		define("TB_MSGROTATE", "%s imÃ¡genes han sido rotadas.");
+		define("TB_MSGEDITERR", "%s archivos han tenido errores en las operaciones solicitadas.");
+		define("TB_MSGUPGOOD", "%s archivos han sido cargados.");
+		define("TB_MSGUPBAD", "%s archivos no se han subido por restrucciones de seguridad.");
+		define("TB_MSGUPDUP", "%s archivos no se han subido porque ya existÃ­an - por favor, cambia su nombre o bÃ¡rralos.");
+		define("TB_MSGUPFAIL", "No se ha podido subir el archivo. Comprueba los permisos de '%s'.");
+		define("TB_MSGMAXSIZE", "no se ha podido poner en cola para subir porque el tamaÃ±o es mayor del lÃ­mite de");
+		define("TB_TTLMAXSIZE", "Error del tamaÃ±o de archivo");
+		define("TB_DENIED", "Necesitas permiso para ver esta pÃ¡gina.");
+		define("TB_UPDENIED", "Necesitas permisos de subida de archivos para ver esta pÃ¡gina.");
+		define("TB_EDDENIED", "Necesitas permisos de ediciÃ³n o borrado para ver esta pÃ¡gina.");
+?>
\ 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/tinybrowser/langs/fi.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/fi.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/fi.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/fi.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,68 @@
+<?php
+/*
+TinyBrowser 1.32 - A TinyMCE file browser (C) 2008  Bryn Jones
+Language 'fi'
+Author: Iisakki PirilÃ¤ - Markus SÃ¤llinen
+email: iisakki[at]piuha[dot]fi
+*/
+define("TB_BROWSE", "Selaa");
+define("TB_EDIT", "Muokkaa");
+define("TB_UPLOAD", "Lataa palvelimelle");
+define("TB_FOLDERS", "Kansiot");
+define("TB_FOLDERNAME", "Kansion nimi");
+define("TB_FOLDERCURR", "Nykyinen kansio: ");
+define("TB_FOLDERDEST", "Kohde: ");
+define("TB_VIEW", "NÃ¤ytÃ¤: ");
+define("TB_SHOW", "NÃ¤ytÃ¤: ");
+define("TB_PAGE", "Sivu");
+define("TB_FILENAME", "Tiedostonimi");
+define("TB_SIZE", "Koko");
+define("TB_DIMENSIONS", "Kuvakoko");
+define("TB_TYPE", "Tyyppi");
+define("TB_DATE", "Muokattu");
+define("TB_SEARCH", "Etsi");
+define("TB_FILES", "tiedostot");
+define("TB_BROWSEFILES", "Selaa tiedostoja");
+define("TB_DETAILS", "Tarkat tiedot");
+define("TB_THUMBS", "Esikatselukuvat");
+define("TB_EDITFILES", "Muokkaa tiedostoja");
+define("TB_ACTION", "Toiminto");
+define("TB_CREATE", "Luo");
+define("TB_DELETE", "Poista");
+define("TB_RENAME", "NimeÃ¤ uudelleen");
+define("TB_ROTATE", "KÃ¤Ã¤nnÃ¤");
+define("TB_RESIZE", "Muuta kokoa");
+define("TB_MOVE", "SiirrÃ¤");
+define("TB_UPLOADFILES", "Lataa tiedostoja");
+define("TB_PROGRESS", "Vaihe");
+define("TB_REMOVE", "Poista");
+define("TB_BYTES", "tavua");
+define("TB_WIDTH", "leveys");
+define("TB_HEIGHT", "korkeus");
+define("TB_NONE", "Ei mitÃ¤Ã¤n");
+define("TB_TYPEIMG", "Kuvat");
+define("TB_TYPEMEDIA", "Mediatiedostot");
+define("TB_TYPEFILE", "Kaikki tiedostot");
+define("TB_ROTATECW", "KÃ¤Ã¤nnÃ¤ 90 astetta myÃ¶tÃ¤pÃ¤ivÃ¤Ã¤n");
+define("TB_ROTATECCW", "KÃ¤Ã¤nnÃ¤ 90 astetta vastapÃ¤ivÃ¤Ã¤n");
+define("TB_MSGNEWTHUMBS", "%s uutta esikatselukuvaa luotu.");
+define("TB_MSGMKDIR", "Kansion '%s' luominen onnistui.");
+define("TB_MSGMKDIRFAIL", "Kansion '%s' luominen epÃ¤onnistui - tarkista oikeudet.");
+define("TB_MSGCREATE", "%s kansiota on luotu oninstuneesti.");
+define("TB_MSGDELETE", "%s tiedoston poistaminen onnistui.");
+define("TB_MSGRENAME", "%s tiedoston uudelleennimeÃ¤minen onnistui.");
+define("TB_MSGMOVE", "%s tiedostoa on siirretty onnistuneesti");
+define("TB_MSGRESIZE", "%s kuvan koon muuttaminen onnistui.");
+define("TB_MSGROTATE", "%s kuvan kÃ¤Ã¤ntÃ¤minen onnistui.");
+define("TB_MSGEDITERR", "Toiminto epÃ¤onnistui %s tiedostolle.");
+define("TB_MSGUPGOOD", "%s tiedoston lataaminen palvelimelle onnistui.");
+define("TB_MSGUPBAD", "%s tiedostoa ei ladattu palvelimelle tietoturvarajoitusten vuoksi.");
+define("TB_MSGUPDUP", "%s tiedostoa ei ladattu palvelimelle, koska samanniminen tiedosto on jo olemassa. Poista tai nimeÃ¤ uudelleen alkuperÃ¤inen tiedosto.");
+define("TB_MSGUPFAIL", "Tiedoston lataaminen epÃ¤onnistui. Tarkista oikeudet kohteeseen '%s'.");
+define("TB_MSGMAXSIZE", "ei voida ladata palvelimelle, koska tiedoston koko ylittÃ¤Ã¤ ylÃ¤rajan");
+define("TB_TTLMAXSIZE", "Tiedostokoossa virhe");
+define("TB_DENIED", "TÃ¤mÃ¤ sivu vaatii kÃ¤yttÃ¶oikeuden.");
+define("TB_UPDENIED", "TÃ¤mÃ¤ sivu vaatii latausoikeudet.");
+define("TB_EDDENIED", "TÃ¤mÃ¤ sivu vaatii muokkaus- tai poisto- oikeudet.");
+define("TB_FODENIED", "TÃ¤mÃ¤ sivu vaatii kansioiden hallintaoikeudet.");
+?>
\ 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/tinybrowser/langs/fr.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/fr.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/fr.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/fr.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,66 @@
+<?php
+/*
+Default Language 'fr'
+Traductions for TinyBrowser 1.4 Beta.
+Based on the 1.3 files, with folders traductions adds
+Author: StÃ©phane RouillÃ© , Ligne13 Web Agency
+email: stephane@ligne13.com
+*/
+define("TB_BROWSE", "Ouvrir...");
+define("TB_EDIT", "Editer");
+define("TB_UPLOAD", "Upload");
+define("TB_VIEW", "Affichage: ");
+define("TB_SHOW", "Montrer: ");
+define("TB_PAGE", "Page");
+define("TB_FILENAME", "Nom");
+define("TB_SIZE", "Taille");
+define("TB_DIMENSIONS", "Dimensions");
+define("TB_TYPE", "Type");
+define("TB_DATE", "Date Modification");
+define("TB_SEARCH", "Rechercher");
+define("TB_FILES", "Fichiers");
+define("TB_FOLDERS", "Dossiers");
+define("TB_BROWSEFILES", "Ouvrir Fichiers");
+define("TB_DETAILS", "DÃ©tails");
+define("TB_THUMBS", "Vignettes");
+define("TB_EDITFILES", "Editer Fichiers");
+define("TB_ACTION", "Action");
+define("TB_DELETE", "Supprimer");
+define("TB_RENAME", "Renommer");
+define("TB_ROTATE", "Pivoter");
+define("TB_MOVE", "Deplacer");
+define("TB_RESIZE", "Redimensionner");
+define("TB_UPLOADFILES", "Upload Fichiers");
+define("TB_PROGRESS", "Progression");
+define("TB_REMOVE", "Retirer");
+define("TB_BYTES", "bytes");
+define("TB_WIDTH", "largeur");
+define("TB_HEIGHT", "hauteur");
+define("TB_NONE", "Auncun");
+define("TB_TYPEIMG", "Images");
+define("TB_TYPEMEDIA", "Media");
+define("TB_TYPEFILE", "Tous Fichiers");
+define("TB_ROTATECW", "Rotation 90 degrÃ©s horaire");
+define("TB_ROTATECCW", "Rotation 90 degrÃ©s anti-horaire");
+define("TB_CREATE", "CrÃ©er");
+define("TB_FOLDERNAME", "Nom du dossier");
+define("TB_MSGCREATE", "Le dossier a bien Ã©tÃ© crÃ©e.");
+define("TB_FOLDERCURR", "Dossier actuel ");
+define("TB_MSGNEWTHUMBS", "%s nouvelles vignettes crÃ©Ã©es.");
+define("TB_MSGMKDIR", "Le '%s' rÃ©pertoire a Ã©tÃ© crÃ©Ã© avec succÃ¨s.");
+define("TB_MSGMKDIRFAIL", "Impossible de crÃ©er le rÃ©pertoire '%s' - vÃ©rifier vos permissions.");
+define("TB_MSGDELETE", "%s fichiers ont Ã©tÃ© supprimÃ©s avec succÃ¨s.");
+define("TB_MSGRENAME", "%s fichiers ont Ã©tÃ© renommÃ©s avec succÃ¨s.");
+define("TB_MSGRESIZE", "%s fichiers ont Ã©tÃ© redimensionnÃ©s avec succÃ¨s.");
+define("TB_MSGROTATE", "%s images ont Ã©tÃ© pivotÃ©es avec succÃ¨s.");
+define("TB_MSGEDITERR", "%s fichiers en Ã©tat erreur pendant l'opÃ©ration.");
+define("TB_MSGUPGOOD", "%s fichiers ont Ã©tÃ© uploadÃ©s avec succÃ¨s.");
+define("TB_MSGUPBAD", "%s fichiers n'ont pas Ã©tÃ© uploadÃ©s, Ã  cause des restrictions de sÃ©curitÃ©.");
+define("TB_MSGUPDUP", "%s fichiers n'ont pas Ã©tÃ© uploadÃ©s car ils existent dÃ©jÃ  - merci de supprimer ou renommer le fichier original.");
+define("TB_MSGUPFAIL", "Echec d'pload de fichier - verifier vos permissions pour '%s'.");
+define("TB_MSGMAXSIZE", "ne peut placer en liste: limite de taille de fichier maximum dÃ©passÃ©");
+define("TB_TTLMAXSIZE", "Erreur de taille de fichier");
+define("TB_DENIED", "Vous devez possÃ©der la permission pour voir cette page.");
+define("TB_UPDENIED", "Vous devez possÃ©der la permission upload pour voir cette page.");
+define("TB_EDDENIED", "Vous devez possÃ©der la permission edition ou suppression pour voir cette page.");
+?>
\ 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/tinybrowser/langs/hr.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/hr.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/hr.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/hr.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,59 @@
+<?php 
+/*
+TinyBrowser 1.32 - A TinyMCE file browser (C) 2008  Bryn Jones
+Language 'hr'
+Author: SaÅ¡a Tomislav MataiÄ‡
+email: stmataic[at]gmail[dot]com
+*/
+		define("TB_BROWSE", "PretraÅ¾i");
+		define("TB_EDIT", "Uredi");
+		define("TB_UPLOAD", "PoÅ¡alji");
+		define("TB_VIEW", "Vrste pregleda: ");
+		define("TB_SHOW", "PrikaÅ¾i: ");
+		define("TB_PAGE", "Stranica");
+		define("TB_FILENAME", "Naziv datoteke");
+		define("TB_SIZE", "VeliÄ�ina");
+		define("TB_DIMENSIONS", "Dimenzije");
+		define("TB_TYPE", "Tip");
+		define("TB_DATE", "Datum promjene");
+		define("TB_SEARCH", "TraÅ¾i");
+		define("TB_FILES", "datoteke");
+		define("TB_BROWSEFILES", "PretraÅ¾i datoteke");
+		define("TB_DETAILS", "Detalji");
+		define("TB_THUMBS", "SliÄ�ice");
+		define("TB_EDITFILES", "Uredi datoteke");
+		define("TB_ACTION", "Akcija");
+		define("TB_DELETE", "ObriÅ¡i");
+		define("TB_RENAME", "Preimenuj");
+		define("TB_ROTATE", "Rotiraj");
+		define("TB_RESIZE", "Promijeni veliÄ�inu");
+		define("TB_UPLOADFILES", "PoÅ¡alji datoteke");
+		define("TB_PROGRESS", "Napredak");
+		define("TB_REMOVE", "Makni");
+		define("TB_BYTES", "bytova");
+		define("TB_WIDTH", "Å¡irina");
+		define("TB_HEIGHT", "visina");
+		define("TB_NONE", "NiÅ¡ta");
+		define("TB_TYPEIMG", "Slike");
+		define("TB_TYPEMEDIA", "Razno");
+		define("TB_TYPEFILE", "Sve datotke");
+		define("TB_ROTATECW", "Rotiraj 90 stupnjeva u smjeru kazaljki na satu");
+		define("TB_ROTATECCW", "Rotiraj 90 stupnjeva suprotno od smjera kazaljki na satu");
+		define("TB_MSGNEWTHUMBS", "Generirano %s novih sliÄ�ica.");
+		define("TB_MSGMKDIR", "UspjeÅ¡no kreirana mapa '%s'.");
+		define("TB_MSGMKDIRFAIL", "NemoguÄ‡e kreirati mapu '%s' - provjerite permissione.");
+		define("TB_MSGDELETE", "%s datoteka uspjeÅ¡no obrisano.");
+		define("TB_MSGRENAME", "%s datoteka uspjeÅ¡no preimenovano.");
+		define("TB_MSGRESIZE", "%s slika uspjeÅ¡no promijenjene dimenzije.");
+		define("TB_MSGROTATE", "%s slika uspjeÅ¡no rotirano.");
+		define("TB_MSGEDITERR", "%s datoteka nije moglo biti promijenjeno.");
+		define("TB_MSGUPGOOD", "%s datoteka uspjeÅ¡no poslano.");
+		define("TB_MSGUPBAD", "%s datoteka nije bilo poslano zbog sigurnosnih postavki.");
+		define("TB_MSGUPDUP", "%s datoteka nije bilo poslano, istoimene datoteke veÄ‡ postoje - obriÅ¡ite ili preimenujte postojeÄ‡e datoteke.");
+		define("TB_MSGUPFAIL", "Neuspjelo slanje datoteka - provjerite dozvole za '%s'.");
+		define("TB_MSGMAXSIZE", "nemoguÄ‡e poslati jer ukupna veliÄ�ina premaÅ¡uje maksimalnu veliÄ�inu od");
+		define("TB_TTLMAXSIZE", "GreÅ¡ka u veliÄ�ini datoteke");
+		define("TB_DENIED", "Potrebna vam je dozvola za pregled ove stranice.");
+		define("TB_UPDENIED", "Potrebna vam je dozvola za slanje datoteka za pregled ove stranice.");
+		define("TB_EDDENIED", "Potrebna vam je dozvola za ureÄ‘ivanje za pregled ove stranice.");
+?>
\ 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/tinybrowser/langs/hu.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/hu.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/hu.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/hu.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,68 @@
+<?php 
+/*
+TinyBrowser 1.40 - A TinyMCE file browser (C) 2008  Bryn Jones
+Default Language 'en'
+Author: Bryn Jones
+email: bryn[at]lunarvis[dot]com
+*/
+		define("TB_BROWSE", "TallÃ³zÃ¡s");
+		define("TB_EDIT", "SzerkesztÃ©s");
+		define("TB_UPLOAD", "FeltÃ¶ltÃ©s");
+		define("TB_FOLDERS", "MappÃ¡k");
+ 		define("TB_FOLDERNAME", "Mappa neve");
+		define("TB_FOLDERCURR", "AktuÃ¡lis mappa: ");
+ 		define("TB_FOLDERDEST", "CÃ©l: ");
+		define("TB_VIEW", "MegtekintÃ©s mint: ");
+		define("TB_SHOW", "Mutat: ");
+		define("TB_PAGE", "Oldal");
+		define("TB_FILENAME", "FÃ¡jl nÃ©v");
+		define("TB_SIZE", "MÃ©ret");
+		define("TB_DIMENSIONS", "MÃ©retek");
+		define("TB_TYPE", "TÃ­pus");
+		define("TB_DATE", "MÃ³dosÃ­tÃ¡s dÃ¡tuma");
+		define("TB_SEARCH", "KeresÃ©s");
+		define("TB_FILES", "FÃ¡jlok");
+		define("TB_BROWSEFILES", "FÃ¡jlok tallÃ³zÃ¡sa");
+		define("TB_DETAILS", "RÃ©szletek");
+		define("TB_THUMBS", "MiniatÅ±rÃ¶k");
+		define("TB_EDITFILES", "FÃ¡jlok szerkesztÃ©se");
+		define("TB_ACTION", "MÅ±velet: ");
+ 		define("TB_CREATE", "LÃ©trehozÃ¡s");
+		define("TB_DELETE", "TÃ¶rlÃ©s");
+		define("TB_RENAME", "Ã�tnevezÃ©s");
+		define("TB_ROTATE", "ForgatÃ¡s");
+		define("TB_RESIZE", "MÃ©retezÃ©s");
+ 		define("TB_MOVE", "MozgatÃ¡s");
+		define("TB_UPLOADFILES", "FÃ¡jlok feltÃ¶ltÃ©se");
+		define("TB_PROGRESS", "Folyamat");
+		define("TB_REMOVE", "EltÃ¡volÃ­tÃ¡s");
+		define("TB_BYTES", "byteok");
+		define("TB_WIDTH", "szÃ©lessÃ©g");
+		define("TB_HEIGHT", "magassÃ¡g");
+		define("TB_NONE", "Semmi");
+		define("TB_TYPEIMG", "KÃ©pek");
+		define("TB_TYPEMEDIA", "MÃ©dia");
+		define("TB_TYPEFILE", "Minden fÃ¡jl");
+		define("TB_ROTATECW", "ForgatÃ¡s 90 fokkal Ã³ramutatÃ³ jÃ¡rÃ¡sa szerint");
+		define("TB_ROTATECCW", "ForgatÃ¡s 90 fokkal Ã³ramutatÃ³ jÃ¡rÃ¡ssal ellentÃ©tesen");
+		define("TB_MSGNEWTHUMBS", "%s Ãºj miniatÅ±r lett generÃ¡lva.");
+		define("TB_MSGMKDIR", "A(z) '%s' kÃ¶nyvtÃ¡r lÃ©trehozva");
+		define("TB_MSGMKDIRFAIL", "Nem lehetsÃ©ges a(z) '%s' kÃ¶nyvtÃ¡r lÃ©trehozÃ¡sa, ellenÅ‘rizd a jogokat!");
+		define("TB_MSGCREATE", "%s mappa sikeresen lÃ©trehozva.");
+		define("TB_MSGDELETE", "%s fÃ¡jl sikeresen tÃ¶rÃ¶lve.");
+		define("TB_MSGRENAME", "%s fÃ¡jl sikeresen Ã¡tnevezve.");
+ 		define("TB_MSGMOVE", "%s fÃ¡jl sikeresen mozgatva.");
+		define("TB_MSGRESIZE", "%s fÃ¡jl sikeresen mÃ©retezve.");
+		define("TB_MSGROTATE", "%s kÃ©p sikeresen forgatva.");
+		define("TB_MSGEDITERR", "%s fÃ¡jlnÃ¡l hiba lÃ©pett fel a folgolgozÃ¡skor.");
+		define("TB_MSGUPGOOD", "%s fÃ¡jl feltÃ¶ltÃ©se sikeres.");
+		define("TB_MSGUPBAD", "%s fÃ¡jl nem lett feltÃ¶ltve biztonsÃ¡gi korlÃ¡tozÃ¡sok miatt.");
+		define("TB_MSGUPDUP", "%s fÃ¡jl nem lett feltÃ¶ltve, mert mÃ¡r lÃ©tezik ilyen. A meglÃ©vÅ‘t nevezd Ã¡t vagy tÃ¶rÃ¶ld!");
+		define("TB_MSGUPFAIL", "FÃ¡jl feltÃ¶ltÃ©s sikeretelen, ellenÅ‘rizd a jogokat: '%s'.");
+		define("TB_MSGMAXSIZE", "nem vehetÅ‘ fel a feltÃ¶ltÃ©si listÃ¡ba, mert a mÃ©rete nagyobb a megengedettnÃ©l: ");
+		define("TB_TTLMAXSIZE", "FÃ¡jl mÃ©ret hiba");
+		define("TB_DENIED", "Nincs jogosultsÃ¡god az oldal megjelenÃ­tÃ©sÃ©hez.");
+		define("TB_UPDENIED", "FeltÃ¶ltÃ©si jogosultsÃ¡ggal kell rendelkezned ennek az oldalanak a megtekintÃ©sÃ©hez.");
+		define("TB_EDDENIED", "SzerkesztÃ©si jogosultsÃ¡ggal kell rendelkezned ennek az oldalanak a megtekintÃ©sÃ©hez.");
+ 		define("TB_FODENIED", "KÃ¶nyvtÃ¡rkezelÃ©si jogosultsÃ¡ggal kell rendelkezned ennek az oldalanak a megtekintÃ©sÃ©hez");
+?>
\ 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/tinybrowser/langs/it.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/it.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/it.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/it.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,68 @@
+<?php 
+/*
+TinyBrowser 1.32 - A TinyMCE file browser (C) 2008  Bryn Jones
+Default Language 'en'
+Author: Bryn Jones
+email: bryn[at]lunarvis[dot]com
+*/
+		define("TB_BROWSE", "Sfoglia");
+		define("TB_GALLERY", "Galleria");
+		define("TB_EDIT", "Modifica");
+		define("TB_UPLOAD", "Upload");
+		define("TB_FOLDERS", "Folders");
+ 		define("TB_FOLDERNAME", "Nome Cartella");
+		define("TB_FOLDERCURR", "Cartella attuale: ");
+ 		define("TB_FOLDERDEST", "Destinazione: ");		
+		define("TB_VIEW", "Vedi come: ");
+		define("TB_SHOW", "Mostra: ");
+		define("TB_PAGE", "Pagina");
+		define("TB_FILENAME", "Nome file");
+		define("TB_SIZE", "Dim. (KB)");
+		define("TB_DIMENSIONS", "Dimensioni img");
+		define("TB_TYPE", "Tipo");
+		define("TB_DATE", "Data Modifica");
+		define("TB_SEARCH", "Cerca");
+		define("TB_FILES", "Files");
+		define("TB_BROWSEFILES", "Sfoglia");
+		define("TB_DETAILS", "Dettagli");
+		define("TB_THUMBS", "Anteprime");
+		define("TB_EDITFILES", "Modifica Files");
+		define("TB_ACTION", "Azione");
+ 		define("TB_CREATE", "Create");		
+		define("TB_DELETE", "Cancella");
+		define("TB_RENAME", "Rinomina");
+		define("TB_ROTATE", "Ruota");
+		define("TB_RESIZE", "Ridimensiona");
+		define("TB_UPLOADFILES", "Upload Files");
+		define("TB_PROGRESS", "Progresso");
+		define("TB_REMOVE", "Rimuovi");
+		define("TB_BYTES", "bytes");
+		define("TB_WIDTH", "larghezza");
+		define("TB_HEIGHT", "altezza");
+		define("TB_NONE", "Nessuno");
+		define("TB_TYPEIMG", "Immagini");
+		define("TB_TYPEMEDIA", "Media");
+		define("TB_TYPEFILE", "Tutti i files");
+		define("TB_ROTATECW", "Ruota 90° orario");
+		define("TB_ROTATECCW", "Ruota 90° antiorario");
+		define("TB_MSGNEWTHUMBS", "%s nuove anteprime sono state generate.");
+		define("TB_MSGMKDIR", "Le '%s' cartelle sono state create.");
+		define("TB_MSGMKDIRFAIL", "Impossibile creare la cartella '%s' - controlla i tuoi permessi.");
+		define("TB_MSGCREATE", "%s cartelle create con successo.");		
+		define("TB_MSGDELETE", "%s files cancellati con successo.");
+		define("TB_MSGRENAME", "%s files rinominati con successo.");
+ 		define("TB_MSGMOVE", "%s files spostati con successo.");		
+		define("TB_MSGRESIZE", "%s immagini ridimensionate con successo.");
+		define("TB_MSGROTATE", "%s immagini ruotate con successo.");
+		define("TB_MSGEDITERR", "%s files sono andati incontro ad un errore durante la operazione richiesta.");
+		define("TB_MSGUPGOOD", "%s files inviati con successo.");
+		define("TB_MSGUPBAD", "%s files non sono stati inviati a causa di restrizioni di sicurezza.");
+		define("TB_MSGUPDUP", "%s files non sono stati inviati, perche' gia' esistenti - cancella o rinomina i files originali.");
+		define("TB_MSGUPFAIL", "Errore nell'invio files - controlla i tuoi permessi per '%s'.");
+		define("TB_MSGMAXSIZE", "Non e possibile mettere in coda per l invio, in quanto le dimensioni del file superano il limite di");
+		define("TB_TTLMAXSIZE", "Errore dimensioni files");
+		define("TB_DENIED", "Devi avere i permessi per vedere questa pagina.");
+		define("TB_UPDENIED", "Devi avere il permesso di upload per vedere questa pagina.");
+		define("TB_EDDENIED", "Devi avere permesso di modifica o cancellazione per vedere questa pagina.");
+ 		define("TB_FODENIED", "Devi avere i permessi di modifica delle cartelle per vedere questa pagina.");		
+?>
\ 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/tinybrowser/langs/lv.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/lv.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/lv.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/lv.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,59 @@
+<?php 
+/*
+TinyBrowser 1.32 - A TinyMCE file browser (C) 2008  Bryn Jones
+Default Language 'lv'
+Author: Raimonds Supulnieks
+email: raimonds6[at]gmail[dot]com
+*/
+		define("TB_BROWSE", "CaurlÅ«kot");
+		define("TB_EDIT", "Labot");
+		define("TB_UPLOAD", "AugÅ¡upielÄ�dÄ“t");
+		define("TB_VIEW", "ApskatÄ«t kÄ�: ");
+		define("TB_SHOW", "ParÄ�dÄ«t: ");
+		define("TB_PAGE", "Lapa");
+		define("TB_FILENAME", "Faila nosaukums");
+		define("TB_SIZE", "IzmÄ“rs");
+		define("TB_DIMENSIONS", "Dimensijas");
+		define("TB_TYPE", "Tips");
+		define("TB_DATE", "RediÄ£Ä“Å¡anas datums");
+		define("TB_SEARCH", "MeklÄ“t");
+		define("TB_FILES", "Faili");
+		define("TB_BROWSEFILES", "CaurlÅ«kot failus");
+		define("TB_DETAILS", "DetaÄ¼as");
+		define("TB_THUMBS", "Mazie attÄ“lojumi");
+		define("TB_EDITFILES", "Labot failus");
+		define("TB_ACTION", "DarbÄ«ba");
+		define("TB_DELETE", "DzÄ“st");
+		define("TB_RENAME", "PÄ�rsaukt");
+		define("TB_ROTATE", "Apgriezt");
+		define("TB_RESIZE", "MainÄ«t izmÄ“ru");
+		define("TB_UPLOADFILES", "AugÅ¡upielÄ�dÄ“t failus");
+		define("TB_PROGRESS", "Progress");
+		define("TB_REMOVE", "AizvÄ�kt");
+		define("TB_BYTES", "baiti");
+		define("TB_WIDTH", "garums");
+		define("TB_HEIGHT", "platums");
+		define("TB_NONE", "Nekas");
+		define("TB_TYPEIMG", "Bildes");
+		define("TB_TYPEMEDIA", "Media");
+		define("TB_TYPEFILE", "Visi faili");
+		define("TB_ROTATECW", "Apgriezt par 90 grÄ�diem pa pulksteÅ†a virzienu");
+		define("TB_ROTATECCW", "Apgriezt par 90 grÄ�diem pret pulksteÅ†a virzienu");
+		define("TB_MSGNEWTHUMBS", "%s jauni bilÅ¾u mazie attÄ“lojumi tikuÅ¡i izveidoti.");
+		define("TB_MSGMKDIR", "Mape '%s' tika veiksmÄ«gi izveidota.");
+		define("TB_MSGMKDIRFAIL", "NeiespÄ“jami izveidot mapi '%s' - lÅ«dzu pÄ�rbaudiet savas atÄ¼aujas.");
+		define("TB_MSGDELETE", "%s faili tika veiksmÄ«gi izdzÄ“sti.");
+		define("TB_MSGRENAME", "%s faili tika veiksmÄ«gi pÄ�rsaukti.");
+		define("TB_MSGRESIZE", "%s bildÄ�m tika veiksmÄ«gi izmainÄ«ts izmÄ“rs.");
+		define("TB_MSGROTATE", "%s bildes tika veiksmÄ«gi apgrieztas.");
+		define("TB_MSGEDITERR", "%s failiem tika konstatÄ“ta kÄ¼Å«da pieprasÄ«tajÄ� darbÄ«bÄ�.");
+		define("TB_MSGUPGOOD", "%s faili tika veiksmÄ«gi augÅ¡upielÄ�dÄ“ti.");
+		define("TB_MSGUPBAD", "%s faili netika augÅ¡upielÄ�dÄ“ti sakarÄ� ar droÅ¡Ä«bas ierobeÅ¾ojumiem.");
+		define("TB_MSGUPDUP", "%s faili netika augÅ¡upielÄ�dÄ“ti, jo tÄ�di faili jau eksistÄ“ - lÅ«dzu izdzÄ“siet vai pÄ�rsauciet orÄ£inÄ�los failus.");
+		define("TB_MSGUPFAIL", " Faila augÅ¡upielÄ�dÄ“ neizdevusies - lÅ«dzu pÄ�rbaudiet atÄ¼aujas priekÅ¡ '%s'.");
+		define("TB_MSGMAXSIZE", "nevar tikt augÅ¡upielÄ�dÄ“ts, jo ir sasniegts maksimÄ�lais izmÄ“rs");
+		define("TB_TTLMAXSIZE", " Faila izmÄ“ra kÄ¼Å«da");
+		define("TB_DENIED", "JÅ«s pieprasiet atÄ¼auju, lai apskatÄ«tu Å¡o lapu.");
+		define("TB_UPDENIED", "JÅ«s pieprasiet augÅ¡upielÄ�des atÄ¼auju, lai apskatÄ«tu Å¡o lapu.");
+		define("TB_EDDENIED", "JÅ«s pieprasiet laboÅ¡anas vai dzÄ“Å¡anas atÄ¼aujas, lai apskatÄ«tu Å¡o lapu.");
+?>
\ 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/tinybrowser/langs/nl.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/nl.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/nl.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/nl.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,69 @@
+<?php 
+/*
+TinyBrowser 1.40 - A TinyMCE file browser (C) 2008  Bryn Jones
+Language: nl
+Author: Rudy Mens
+email: ruud[at]lazyadmin[dot]nl
+updated by fc.stuurman@hccnet.nl
+*/
+define("TB_BROWSE", "Bladeren");
+define("TB_EDIT", "Aanpassen");
+define("TB_UPLOAD", "Upload");
+define("TB_FOLDERS", "Folders");
+define("TB_FOLDERNAME", "Folder Naam");
+define("TB_FOLDERCURR", "Huidige Folder: ");
+define("TB_FOLDERDEST", "Doel Folder: ");
+define("TB_VIEW", "Beeld: ");
+define("TB_SHOW", "Show: ");
+define("TB_PAGE", "Pagina");
+define("TB_FILENAME", "Naam");
+define("TB_SIZE", "Grootte");
+define("TB_DIMENSIONS", "Afmeting");
+define("TB_TYPE", "Type");
+define("TB_DATE", "Gewijzigd op");
+define("TB_SEARCH", "Zoeken");
+define("TB_FILES", "bestanden");
+define("TB_BROWSEFILES", "Overzicht");
+define("TB_DETAILS", "Details");
+define("TB_THUMBS", "Miniatuurweergaven");
+define("TB_EDITFILES", "Bestanden aanpassen");
+define("TB_ACTION", "Actie");
+define("TB_CREATE", "Creer");
+define("TB_DELETE", "Verwijder");
+define("TB_RENAME", "Hernoem");
+define("TB_ROTATE", "Draaien");
+define("TB_RESIZE", "Formaat wijzigen");
+define("TB_MOVE", "Verplaats");
+define("TB_UPLOADFILES", "Upload Bestanden");
+define("TB_PROGRESS", "Voortgang");
+define("TB_REMOVE", "Verwijderen");
+define("TB_BYTES", "bytes");
+define("TB_WIDTH", "breedte");
+define("TB_HEIGHT", "hoogte");
+define("TB_NONE", "Niet");
+define("TB_TYPEIMG", "Afbeeldingen");
+define("TB_TYPEMEDIA", "Media");
+define("TB_TYPEFILE", "Alle bestanden");
+define("TB_ROTATECW", "Rechtsom draaien");
+define("TB_ROTATECCW", "Linksom draaien");
+define("TB_MSGNEWTHUMBS", "%s nieuwe miniatuurweergaven van de afbeeldingen zijn gegenareerd.");
+define("TB_MSGMKDIR", "De map '%s' is successvol aangemaakt.");
+define("TB_MSGMKDIRFAIL", "Kan de map '%s' niet aanmaken - Kijk je rechten instellingen na.");
+define("TB_MSGCREATE", "%s bestand(en) is/zijn succesvol gecreerd.");
+define("TB_MSGDELETE", "%s bestand(en) is/zijn succesvol verwijderd.");
+define("TB_MSGRENAME", "%s bestand(en) is/zijn succesvol hernoemd.");
+define("TB_MSGMOVE", "%s bestand(en) is/zijn succesvol verplaatst.");
+define("TB_MSGRESIZE", "%s afbeelding(en) is/zijn succesvol gewijzigd.");
+define("TB_MSGROTATE", "%s afbeelding(en) is/zijn succesvol hernoemd.");
+define("TB_MSGEDITERR", "%s bestand(en) gevonden met problemen tijdens deze handeling.");
+define("TB_MSGUPGOOD", "%s bestand(en) is/zijn succesvol geupload.");
+define("TB_MSGUPBAD", "%s bestand(en) is/zijn niet geupload door beveilings problemen.");
+define("TB_MSGUPDUP", "%s files have not been uploaded, as they already exist - please delete or rename original file.");
+define("TB_MSGUPFAIL", "Bestand upload mislukt - controleer de rechten voor '%s'.");
+define("TB_MSGMAXSIZE", "Kan niet worden toegevoegd aan de wachtrij om het bestand te groot is");
+define("TB_TTLMAXSIZE", "Bestand is te groot");
+define("TB_DENIED", "Je bent niet bevoegd om deze pagina te bekijken.");
+define("TB_UPDENIED", "Je hebt upload rechten nodig om deze pagina te bekijken.");
+define("TB_EDDENIED", "Je hebt verwijder of aanpas rechten nodig om deze pagina te bekijken.");
+define("TB_FODENIED", "Je hebt folder maintenance rechten nodig om deze pagina te bekijken.");
+?>
\ 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/tinybrowser/langs/pl.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/pl.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/pl.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/pl.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,68 @@
+<?php 
+/*
+TinyBrowser 1.32 - A TinyMCE file browser (C) 2008  Bryn Jones
+Default Language 'en'
+Author: Maja Bielawa
+email: ivoryeve[at]wp[dot]pl
+*/
+		define("TB_BROWSE", "PrzeglÄ…daj");
+		define("TB_EDIT", "Operacje");
+		define("TB_UPLOAD", "ZaÅ‚aduj");
+		define("TB_FOLDERS", "Foldery");
+		define("TB_FOLDERNAME", "Nazwa Folderu");
+		define("TB_FOLDERCURR", "BieÅ¼Ä…cy folder: ");
+ 		define("TB_FOLDERDEST", "Docelowy folder: ");
+		define("TB_VIEW", "PokaÅ¼ jako");
+		define("TB_SHOW", "PokaÅ¼");
+		define("TB_PAGE", "Strona");
+		define("TB_FILENAME", "Nazwa Pliku");
+		define("TB_SIZE", "Rozmiar");
+		define("TB_DIMENSIONS", "Wymiary");
+		define("TB_TYPE", "Typ");
+		define("TB_DATE", "Data modyfikacji");
+		define("TB_SEARCH", "Szukaj");
+		define("TB_FILES", "Pliki");
+		define("TB_BROWSEFILES", "PrzeglÄ…daj pliki");
+		define("TB_DETAILS", "SzczegÃ³Å‚y");
+		define("TB_THUMBS", "Miniatura");
+		define("TB_EDITFILES", "Edytuj pliki");
+		define("TB_ACTION", "Akcja");
+		define("TB_CREATE", "StwÃ³rz");
+		define("TB_DELETE", "UsuÅ„");
+		define("TB_RENAME", "ZmieÅ„ nazwÄ™");
+		define("TB_ROTATE", "ObrÃ³Ä‡");
+		define("TB_RESIZE", "ZmieÅ„ rozmiar");
+		define("TB_MOVE", "PrzenieÅ›");
+		define("TB_UPLOADFILES", "ZaÅ‚aduj pliki");
+		define("TB_PROGRESS", "PostÄ™p");
+		define("TB_REMOVE", "UsuÅ„");
+		define("TB_BYTES", "bajtÃ³w");
+		define("TB_WIDTH", "szerokoÅ›Ä‡");
+		define("TB_HEIGHT", "wysokoÅ›Ä‡");
+		define("TB_NONE", "brak");
+		define("TB_TYPEIMG", "Obrazy");
+		define("TB_TYPEMEDIA", "Media");
+		define("TB_TYPEFILE", "Wszystkie pliki");
+		define("TB_ROTATECW", "ObrÃ³Ä‡ o 90 stopni w prawo");
+		define("TB_ROTATECCW", "ObrÃ³Ä‡ o 90 stopni w lewo");
+		define("TB_MSGNEWTHUMBS", "Stworzono %s nowych miniatur.");
+		define("TB_MSGMKDIR", "Katalog '%s' zostaÅ‚ utworzony.");
+		define("TB_MSGMKDIRFAIL", "Utworzenie katalogu '%s' jest niemoÅ¼liwe.");
+		define("TB_MSGCREATE", "%s katalogÃ³w zostaÅ‚o poprawnie utworzonych.");
+		define("TB_MSGDELETE", "%s plikÃ³w zostaÅ‚y skasowanych.");
+		define("TB_MSGRENAME", "Zmieniono nazwÄ™ %s plikÃ³w.");
+		define("TB_MSGMOVE", "Przeniesiono poprawnie %s plikÃ³w.");
+		define("TB_MSGRESIZE", "Zmieniono rozmiar %s obrazÃ³w.");
+		define("TB_MSGROTATE", "ObrÃ³cono %s obrazÃ³w.");
+		define("TB_MSGEDITERR", "WystÄ…piÅ‚ problem podczas operacji na %s plikach.");
+		define("TB_MSGUPGOOD", "ZaÅ‚adowano %s plikÃ³w.");
+		define("TB_MSGUPBAD", "Nie zaÅ‚adowano %s plikÃ³w ze wzglÄ™du na ograniczenia zwiÄ…zane z bezpieczeÅ„stwem.");
+		define("TB_MSGUPDUP", "%s plikÃ³w nie zostaÅ‚o zaÅ‚adowanych, poniewaÅ¼ pliki z takimi nazwami juÅ¼ istniejÄ…. Skasuj lub zmieÅ„ nazwÄ™ plikom na serwerze.");
+		define("TB_MSGUPFAIL", "Pliki nie mogÄ… zostaÄ‡ zaÅ‚adowane, sprawdÅº katalog '%s'.");
+		define("TB_MSGMAXSIZE", "nie moÅ¼e zostac zaÅ‚adowany, poniewaÅ¼ rozmiar przekracza ustalony limit");
+		define("TB_TTLMAXSIZE", "BÅ‚Ä…d rozmaru pliku");
+		define("TB_DENIED", "Nie masz uprawnieÅ„, aby otworzyÄ‡ tÄ™ zakÅ‚adkÄ™.");
+		define("TB_UPDENIED", "DostÄ™p zabroniony - wÅ‚Ä…cz moÅ¼liwoÅ›Ä‡ Å‚adowania plikÃ³w, aby zobaczyÄ‡ tÄ… zakÅ‚adkÄ™.");
+		define("TB_EDDENIED", "DostÄ™p zabroniony - wÅ‚Ä…cz moÅ¼liwoÅ›Ä‡ kasowania lub zmiany nazw plikÃ³w, aby zobaczyÄ‡ tÄ… zakÅ‚adkÄ™.");
+		define("TB_FODENIED", "DostÄ™p zabroniony - wÅ‚Ä…cz moÅ¼liwoÅ›Ä‡ zarzÄ…dzania folderami, aby zobaczyÄ‡ tÄ… zakÅ‚adkÄ™.");
+?>
\ 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/tinybrowser/langs/pt.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/pt.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/pt.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/pt.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,68 @@
+<?php 
+/*
+TinyBrowser 1.40 Beta 3 - A TinyMCE file browser (C) 2008  Bryn Jones
+Language 'pt'
+Author: Francis Rebouças e MEM
+email: francisreboucas[at]gmail[dot]com e talofo[at]gmail[dot]com
+*/
+		define("TB_BROWSE", "Procurar");
+		define("TB_EDIT", "Editar");
+		define("TB_UPLOAD", "Upload");
+		define("TB_FOLDERS", "Pastas");//new
+ 		define("TB_FOLDERNAME", "Nome da Pasta");//new
+		define("TB_FOLDERCURR", "Pasta Actual: ");//new
+ 		define("TB_FOLDERDEST", "Destino: ");//new
+		define("TB_VIEW", "Visualizar: ");
+		define("TB_SHOW", "Mostrar: ");
+		define("TB_PAGE", "P&aacute;gina");
+		define("TB_FILENAME", "Nome");
+		define("TB_SIZE", "Tam.");
+		define("TB_DIMENSIONS", "Dimens&otilde;es");
+		define("TB_TYPE", "Tipo");
+		define("TB_DATE", "Data de Cria&ccedil;&atilde;o");
+		define("TB_SEARCH", "Procurar");
+		define("TB_FILES", "arquivos");
+		define("TB_BROWSEFILES", "Lista de Arquivos");
+		define("TB_DETAILS", "Detalhes");
+		define("TB_THUMBS", "Miniaturas");
+		define("TB_EDITFILES", "Editar Arquivos");
+		define("TB_ACTION", "Ac&ccedil;&atilde;o");
+ 		define("TB_CREATE", "Criar");//new
+		define("TB_DELETE", "Apagar");
+		define("TB_RENAME", "Renomear");
+		define("TB_ROTATE", "Rodar");
+		define("TB_RESIZE", "Redimencionar");
+ 		define("TB_MOVE", "Mover");//new
+		define("TB_UPLOADFILES", "Enviar Arquivos");
+		define("TB_PROGRESS", "Progresso");
+		define("TB_REMOVE", "Remover");
+		define("TB_BYTES", "bytes");
+		define("TB_WIDTH", "largura");
+		define("TB_HEIGHT", "altura");
+		define("TB_NONE", "Nenhum");
+		define("TB_TYPEIMG", "Imagens");
+		define("TB_TYPEMEDIA", "Medias");
+		define("TB_TYPEFILE", "Todos os arquivos");
+		define("TB_ROTATECW", "Rodar 90 graus no sentido hor&aacute;rio");
+		define("TB_ROTATECCW", "Rodar 90 graus no sentido anti-hor&aacute;rio");
+		define("TB_MSGNEWTHUMBS", "%s novas miniaturas foram geradas.");
+		define("TB_MSGMKDIR", "O diret&oacute;rio %s foi criado com sucesso.");
+		define("TB_MSGMKDIRFAIL", "Incapaz de criar o diret&oacute;rio %s - verifique as suas permiss&otilde;es.");
+		define("TB_MSGCREATE", "%s pasta(s) foram criadas com sucesso.");//new
+		define("TB_MSGDELETE", "%s arquivos foram exclu&iacute;dos com sucesso.");
+		define("TB_MSGRENAME", "%s arquivos foram renomeados com sucesso.");
+		define("TB_MSGMOVE", "%s ficheiro(s) foram movidos com sucesso.");//new
+		define("TB_MSGRESIZE", "%s imagens foram redimensionadas com sucesso.");
+		define("TB_MSGROTATE", "%s imagens foram rodadas com sucesso.");
+		define("TB_MSGEDITERR", "%s arquivos encontraram erros durante a opera&ccedil;&atilde;o solicitada.");
+		define("TB_MSGUPGOOD", "%s arquivos foram enviados com sucesso.");
+		define("TB_MSGUPBAD", "%s arquivos n&atilde;o foram enviados, devido a restri&ccedil;&otilde;es de segurança.");
+ 		define("TB_MSGUPDUP", "%s ficheiro(s) n&atilde;o foram enviados para o servidor. Ficheiros com o mesmo nome j&aacute; existem. - apague or renomeie o ficheiro original.");
+		define("TB_MSGUPFAIL", "Falha no upload de arquivo - Seleccionou algum arquivo?");
+		define("TB_MSGMAXSIZE", "n&atilde;o pode ser colocado em fila para carregar quando o tamanho exceder o limite m&aacute;ximo de");
+		define("TB_TTLMAXSIZE", "Erro no tamanho do ficheiro");
+		define("TB_DENIED", "Voc&ecirc; necessita de permiss&atilde;o para aceder a esta p&aacute;gina.");
+		define("TB_UPDENIED", "Voc&ecirc; necessita de permiss&atilde;o de upload para aceder a esta p&aacute;gina.");
+		define("TB_EDDENIED", "Voc&ecirc; necessita de permiss&atilde;o de excluir ou editar para aceder a esta p&aacute;gina.");
+ 		define("TB_FODENIED", "Voc&ecirc; necessita de permiss&atilde;o de acesso a pastas para ver esta p&aacute;gina.");//new
+?>
\ 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/tinybrowser/langs/ru.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/ru.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/ru.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/ru.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,68 @@
+<?php 
+/*
+TinyBrowser 1.40 - A TinyMCE file browser (C) 2008  Bryn Jones
+Default Language 'ru'
+Author: Bryn Jones
+email: bryn[at]lunarvis[dot]com
+*/
+		define("TB_BROWSE", "ÐžÐ±Ð·Ð¾Ñ€");
+		define("TB_EDIT", "Ð˜Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ");
+		define("TB_UPLOAD", "Ð—Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ");
+		define("TB_FOLDERS", "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¸");
+                define("TB_FOLDERNAME", "Ð˜Ð¼Ñ� ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°");
+		define("TB_FOLDERCURR", "Ð¢ÐµÐºÑƒÑ‰Ð¸Ð¹ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³: ");
+ 		define("TB_FOLDERDEST", "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ�: ");
+		define("TB_VIEW", "ÐŸÐ¾ÐºÐ°Ð·Ð°Ñ‚ÑŒ ÐºÐ°Ðº: ");
+		define("TB_SHOW", "ÐŸÑ€Ð¾Ñ�Ð¼Ð¾Ñ‚Ñ€: ");
+		define("TB_PAGE", "Ð¡Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð°");
+		define("TB_FILENAME", "Ð˜Ð¼Ñ� Ñ„Ð°Ð¹Ð»Ð°");
+		define("TB_SIZE", "ÐžÐ±ÑŠÐµÐ¼");
+		define("TB_DIMENSIONS", "Ð Ð°Ð·Ð¼ÐµÑ€Ð½Ð¾Ñ�Ñ‚ÑŒ");
+		define("TB_TYPE", "Ð¢Ð¸Ð¿");
+		define("TB_DATE", "Ð”Ð°Ñ‚Ð° Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ�");
+		define("TB_SEARCH", "ÐŸÐ¾Ð¸Ñ�Ðº");
+		define("TB_FILES", "Ð¤Ð°Ð¹Ð»Ñ‹");
+		define("TB_BROWSEFILES", "ÐžÐ±Ð·Ð¾Ñ€ Ñ„Ð°Ð¹Ð»Ð¾Ð²");
+		define("TB_DETAILS", "Ð”ÐµÑ‚Ð°Ð»Ð¸");
+		define("TB_THUMBS", "ÐœÐ¸Ð½Ð¸Ð°Ñ‚ÑŽÑ€Ñ‹");
+		define("TB_EDITFILES", "Ð˜Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ñ‹");
+		define("TB_ACTION", "Ð”ÐµÐ¹Ñ�Ñ‚Ð²Ð¸Ðµ");
+                define("TB_CREATE", "Ð¡Ð¾Ð·Ð´Ð°Ñ‚ÑŒ");
+		define("TB_DELETE", "Ð£Ð´Ð°Ð»Ð¸Ñ‚ÑŒ");
+		define("TB_RENAME", "ÐŸÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ñ‚ÑŒ");
+		define("TB_ROTATE", "ÐŸÐ¾Ð²ÐµÑ€Ð½ÑƒÑ‚ÑŒ");
+		define("TB_RESIZE", "Ð˜Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ€");
+                define("TB_MOVE", "ÐŸÐµÑ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ñ‚ÑŒ");
+		define("TB_UPLOADFILES", "Ð—Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° Ñ„Ð°Ð¹Ð»Ð¾Ð²");
+		define("TB_PROGRESS", "Ð’Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ");
+		define("TB_REMOVE", "Ð£Ð±Ñ€Ð°Ñ‚ÑŒ");
+		define("TB_BYTES", "Ð±Ð°Ð¹Ñ‚");
+		define("TB_WIDTH", "ÑˆÐ¸Ñ€Ð¸Ð½Ð°");
+		define("TB_HEIGHT", "Ð²Ñ‹Ñ�Ð¾Ñ‚Ð°");
+		define("TB_NONE", "Ð�Ð¸Ñ‡ÐµÐ³Ð¾");
+		define("TB_TYPEIMG", "Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ�");
+		define("TB_TYPEMEDIA", "ÐœÐµÐ´Ð¸Ð°");
+		define("TB_TYPEFILE", "Ð’Ñ�Ðµ Ñ„Ð°Ð¹Ð»Ñ‹");
+		define("TB_ROTATECW", "ÐŸÐ¾Ð²ÐµÑ€Ð½ÑƒÑ‚ÑŒ Ð½Ð° 90 Ð³Ñ€Ð°Ð´ÑƒÑ�Ð¾Ð² Ð¿Ð¾ Ñ‡Ð°Ñ�Ð¾Ð²Ð¾Ð¹");
+		define("TB_ROTATECCW", "ÐŸÐ¾Ð²ÐµÑ€Ð½ÑƒÑ‚ÑŒ Ð½Ð° 90 Ð³Ñ€Ð°Ð´ÑƒÑ�Ð¾Ð² Ð¿Ñ€Ð¾Ñ‚Ð¸Ð² Ñ‡Ð°Ñ�Ð¾Ð²Ð¾Ð¹");
+		define("TB_MSGNEWTHUMBS", "Ð”Ð»Ñ� %s Ð½Ð¾Ð²Ñ‹Ñ… Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ð¹ Ð±Ñ‹Ð»Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ñ‹ Ð¼Ð¸Ð½Ð¸Ð°Ñ‚ÑŽÑ€Ñ‹.");
+                define("TB_MSGMKDIR", "'%s' ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³(Ð¾Ð²) Ð±Ñ‹Ð»Ð¸ ÑƒÑ�Ð¿ÐµÑˆÐ½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ð½Ñ‹.");
+		define("TB_MSGMKDIRFAIL", "Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ '%s' - Ð¿Ð¾Ð¶Ð°Ð»ÑƒÐ¹Ñ�Ñ‚Ð° Ð¿Ñ€Ð¾Ð²ÐµÑ€ÑŒÑ‚Ðµ Ð¿Ñ€Ð°Ð²Ð° Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð°.");
+		define("TB_MSGCREATE", "%s ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³(Ð¾Ð²) ÑƒÑ�Ð¿ÐµÑˆÐ½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ð½(Ð¾).");
+		define("TB_MSGDELETE", "%s Ñ„Ð°Ð¹Ð»(Ð¾Ð²)  ÑƒÑ�Ð¿ÐµÑˆÐ½Ð¾ ÑƒÐ´Ð°Ð»ÐµÐ½Ñ‹.");
+		define("TB_MSGRENAME", "%s Ñ„Ð°Ð¹Ð»(Ð¾Ð²) ÑƒÑ�Ð¿ÐµÑˆÐ½Ð¾ Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ñ‹.");
+ 		define("TB_MSGMOVE", "%s Ñ„Ð°Ð¹Ð»(Ð¾Ð²) ÑƒÑ�Ð¿ÐµÑˆÐ½Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ñ‹.");
+		define("TB_MSGRESIZE", "%s Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ� Ð±Ñ‹Ð»Ð¸ ÑƒÑ�Ð¿ÐµÑˆÐ½Ð¾ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ‹.");
+		define("TB_MSGROTATE", "%s Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ� ÑƒÑ�Ð¿ÐµÑˆÐ½Ð¾ Ð¿Ð¾Ð²ÐµÑ€Ð½ÑƒÑ‚Ñ‹.");
+		define("TB_MSGEDITERR", "%s Ñ„Ð°Ð¹Ð»(Ð°) Ð²Ð¾Ð·Ð½Ð¸ÐºÐ»Ð¸ Ð¾ÑˆÐ¸Ð±ÐºÐ¸ Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ� Ñ‚Ñ€ÐµÐ±ÑƒÐµÐ¼Ð¾Ð¹ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸.");
+		define("TB_MSGUPGOOD", "%s Ñ„Ð°Ð¹Ð»(Ð°) Ð±Ñ‹Ð»Ð¸ ÑƒÑ�Ð¿ÐµÑˆÐ½Ð¾ Ð·Ð°Ð³Ñ€ÑƒÐ¶ÐµÐ½Ñ‹.");
+		define("TB_MSGUPBAD", "%s Ñ„Ð°Ð¹Ð»(Ð°) Ð½Ðµ Ð±Ñ‹Ð»Ð¸ Ð·Ð°Ð³Ñ€ÑƒÐ¶ÐµÐ½Ñ‹, Ð½Ðµ Ð¸Ð·-Ð·Ð° Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ð¹ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ñ�Ñ‚Ð¸.");
+		define("TB_MSGUPDUP", "%s Ñ„Ð°Ð¹Ð»(Ð°) Ð½Ðµ Ð±Ñ‹Ð»Ð¸ Ð·Ð°Ð³Ñ€ÑƒÐ¶ÐµÐ½Ñ‹, Ð¿Ð¾Ñ�ÐºÐ¾Ð»ÑŒÐºÑƒ Ð¾Ð½Ð¸ ÑƒÐ¶Ðµ Ñ�ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÑŽÑ‚ - Ð¿Ð¾Ð¶Ð°Ð»ÑƒÐ¹Ñ�Ñ‚Ð° ÑƒÐ´Ð°Ð»Ð¸Ñ‚Ðµ Ð¸Ð»Ð¸ Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½ÑƒÐ¹Ñ‚Ðµ Ð¾Ñ€Ð¸Ð³Ð¸Ð½Ð°Ð»ÑŒÐ½Ñ‹Ðµ Ñ„Ð°Ð¹Ð»Ñ‹.");
+		define("TB_MSGUPFAIL", "Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ñ‹ - Ð¿Ð¾Ð¶Ð°Ð»ÑƒÐ¹Ñ�Ñ‚Ð° Ð¿Ñ€Ð¾Ð²ÐµÑ€ÑŒÑ‚Ðµ Ð¿Ñ€Ð°Ð²Ð° Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð° Ð´Ð»Ñ� '%s'.");
+		define("TB_MSGMAXSIZE", "Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ð»ÐµÐ½ Ð² Ð¾Ñ‡ÐµÑ€ÐµÐ´ÑŒ Ð´Ð»Ñ� Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸, Ð¿Ð¾Ñ�ÐºÐ¾Ð»ÑŒÐºÑƒ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð¿Ñ€ÐµÐ´ÐµÐ»");
+		define("TB_TTLMAXSIZE", "ÐžÑˆÐ¸Ð±ÐºÐ° Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ñ„Ð°Ð¹Ð»Ð°");
+		define("TB_DENIED", "Ð’Ð°Ð¼ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð¿Ñ€Ð¾Ñ�Ð¼Ð¾Ñ‚Ñ€Ð° Ñ�Ñ‚Ð¾Ð¹ Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ñ‹.");
+		define("TB_UPDENIED", "Ð’Ð°Ð¼ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ðµ Ð½Ð° Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÑƒ Ñ„Ð°Ð¹Ð»Ð¾Ð².");
+		define("TB_EDDENIED", "Ð’Ð°Ð¼ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ðµ Ð½Ð° Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ� Ð¸Ð»Ð¸ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ðµ.");
+ 		define("TB_FODENIED", "Ð’Ð°Ð¼ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ðµ Ð½Ð° ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°Ð¼Ð¸.");
+?>
\ 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/tinybrowser/langs/sk.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/sk.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/sk.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/sk.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,59 @@
+<?php 
+/*
+TinyBrowser 1.32 - A TinyMCE file browser (C) 2008  Bryn Jones
+Default Language 'en'
+Author: Bryn Jones
+email: bryn[at]lunarvis[dot]com
+*/
+		define("TB_BROWSE", "PrechÃ¡dzaÅ¥");
+		define("TB_EDIT", "UpraviÅ¥");
+		define("TB_UPLOAD", "NahraÅ¥");
+		define("TB_VIEW", "ZobraziÅ¥ ako: ");
+		define("TB_SHOW", "UkÃ¡zaÅ¥: ");
+		define("TB_PAGE", "Strana");
+		define("TB_FILENAME", "Meno sÃºboru");
+		define("TB_SIZE", "VeÄ¾kosÅ¥");
+		define("TB_DIMENSIONS", "RozlÃ­Å¡enie");
+		define("TB_TYPE", "Typ");
+		define("TB_DATE", "ZmenenÃ©");
+		define("TB_SEARCH", "HÄ¾adaÅ¥");
+		define("TB_FILES", "SÃºbory");
+		define("TB_BROWSEFILES", "PrechÃ¡dzaÅ¥ sÃºbory");
+		define("TB_DETAILS", "Detaily");
+		define("TB_THUMBS", "NÃ¡hÄ¾ady");
+		define("TB_EDITFILES", "UpraviÅ¥ sÃºbory");
+		define("TB_ACTION", "Akcia");
+		define("TB_DELETE", "ZmazaÅ¥");
+		define("TB_RENAME", "PremenovaÅ¥");
+		define("TB_ROTATE", "OtoÄ�iÅ¥");
+		define("TB_RESIZE", "ZmenÅ¡iÅ¥/zvÃ¤Ä�Å¡iÅ¥");
+		define("TB_UPLOADFILES", "NahraÅ¥ sÃºbory");
+		define("TB_PROGRESS", "Priebeh");
+		define("TB_REMOVE", "OdstrÃ¡niÅ¥");
+		define("TB_BYTES", "bytov");
+		define("TB_WIDTH", "Å¡irka");
+		define("TB_HEIGHT", "vÃ½Å¡ka");
+		define("TB_NONE", "Å½iadny");
+		define("TB_TYPEIMG", "ObrÃ¡zky");
+		define("TB_TYPEMEDIA", "MÃ©diÃ¡");
+		define("TB_TYPEFILE", "VÅ¡etky sÃºbory");
+		define("TB_ROTATECW", "OtoÄ�iÅ¥ o 90Â° po smere hodinovÃ½ch ruÄ�iÄ�iek");
+		define("TB_ROTATECCW", "OtoÄ�iÅ¥ o 90Â° proti smere hodinovÃ½ch ruÄ�iÄ�iek");
+		define("TB_MSGNEWTHUMBS", "%s novÃ© nÃ¡hÄ¾ady obrÃ¡zkov boli generovanÃ©.");
+		define("TB_MSGMKDIR", "PrieÄ�inok '%s' bol ÃºspeÅ¡ne vytvorenÃ½.");
+		define("TB_MSGMKDIRFAIL", "NemÃ´Å¾em vytvoriÅ¥ prieÄ�inok '%s', skontrolujte prÃ¡va zÃ¡pisu.");
+		define("TB_MSGDELETE", "%s sÃºbory boli ÃºspeÅ¡ne zmazanÃ©.");
+		define("TB_MSGRENAME", "%s sÃºbory boli ÃºspeÅ¡ne premenovanÃ©.");
+		define("TB_MSGRESIZE", "%s sÃºbory boli ÃºspeÅ¡ne zmenÅ¡enÃ©/zvÃ¤Ä�Å¡enÃ©.");
+		define("TB_MSGROTATE", "%s sÃºbory boli ÃºspeÅ¡ne otoÄ�enÃ©.");
+		define("TB_MSGEDITERR", "U '%s'vznikli problÃ©my poÄ�as poÅ¾adovanej operÃ¡cie.");
+		define("TB_MSGUPGOOD", "%s boli ÃºspeÅ¡ne nahranÃ©.");
+		define("TB_MSGUPBAD", "%s sÃºbory neboli ÃºspeÅ¡ne nahranÃ©, kÃ´li bezpeÄ�nostnÃ½m obmedzeniam.");
+		define("TB_MSGUPDUP", "%s sÃºbory neboli ÃºspeÅ¡ne nahranÃ©, pretoÅ¾e existujÃº - premenujte ich alebo zmaÅ¾te.");
+		define("TB_MSGUPFAIL", "NahrÃ¡vanie sÃºboru zlyhalo - prosÃ­m skontrolujte povolenia pre zÃ¡pis u '%s'.");
+		define("TB_MSGMAXSIZE", "nemÃ´Å¾e byÅ¥ oznaÄ�enÃ½ pre upload, pretoÅ¾e jeho veÄ¾kosÅ¥ presiahla limit");
+		define("TB_TTLMAXSIZE", "Chyba veÄ¾kosti sÃºboru");
+		define("TB_DENIED", "Potrebujete prÃ¡va pre zobrazenie tejto strÃ¡nky.");
+		define("TB_UPDENIED", "Potrebujete prÃ¡va na nahrÃ¡vanie pre zobrazenie tejto strÃ¡nky.");
+		define("TB_EDDENIED", "Potrebujete prÃ¡va pre Ãºpravy alebo mazanie pre zobrazenie tejto strÃ¡nky.");
+?>
\ 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/tinybrowser/langs/sv.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/sv.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/sv.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/sv.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,68 @@
+<?php 
+/*
+TinyBrowser 1.41 - A TinyMCE file browser (C) 2008  Bryn Jones
+Language 'sv' - Swedish
+Author: Robin Morero
+email: robin[at]morero[dot]se
+*/
+		define("TB_BROWSE", "Bl&auml;ddra");
+		define("TB_EDIT", "Redigera");
+		define("TB_UPLOAD", "Ladda upp");
+		define("TB_FOLDERS", "Mappar");
+ 		define("TB_FOLDERNAME", "Mappnamn");
+		define("TB_FOLDERCURR", "Aktuell mapp: ");
+ 		define("TB_FOLDERDEST", "Destination: ");
+		define("TB_VIEW", "Visa som: ");
+		define("TB_SHOW", "Visa: ");
+		define("TB_PAGE", "Sida");
+		define("TB_FILENAME", "Filnamn");
+		define("TB_SIZE", "Storlek");
+		define("TB_DIMENSIONS", "Dimensioner");
+		define("TB_TYPE", "Typ");
+		define("TB_DATE", "Modifieringsdatum");
+		define("TB_SEARCH", "S&ouml;k");
+		define("TB_FILES", "Filer");
+		define("TB_BROWSEFILES", "Bl&auml;ddra bland filer");
+		define("TB_DETAILS", "Detaljer");
+		define("TB_THUMBS", "Miniatyrer");
+		define("TB_EDITFILES", "Redigera filer");
+		define("TB_ACTION", "Val: ");
+ 		define("TB_CREATE", "Skapa");
+		define("TB_DELETE", "Radera");
+		define("TB_RENAME", "Byt namn");
+		define("TB_ROTATE", "Rotera");
+		define("TB_RESIZE", "&Auml;ndra storlek");
+ 		define("TB_MOVE", "Flytta");
+		define("TB_UPLOADFILES", "Ladda upp filer");
+		define("TB_PROGRESS", "Status");
+		define("TB_REMOVE", "Radera");
+		define("TB_BYTES", "bytes");
+		define("TB_WIDTH", "bredd");
+		define("TB_HEIGHT", "h&ouml;jd");
+		define("TB_NONE", "Ingen");
+		define("TB_TYPEIMG", "Bilder");
+		define("TB_TYPEMEDIA", "Media");
+		define("TB_TYPEFILE", "Alla Filer");
+		define("TB_ROTATECW", "Rotera 90 grader medurs");
+		define("TB_ROTATECCW", "Rotera 90 grader moturs");
+		define("TB_MSGNEWTHUMBS", "%s nya miniatyrer har skapats.");
+		define("TB_MSGMKDIR", "Mappen: '%s' har skapats.");
+		define("TB_MSGMKDIRFAIL", "Kunde inte skapa mappen: '%s' directory - kontrollera r&auml;ttigheter.");
+		define("TB_MSGCREATE", "%s mappar har skapats.");
+		define("TB_MSGDELETE", "%s filer har tagits bort.");
+		define("TB_MSGRENAME", "%s filer har d&ouml;pts om.");
+ 		define("TB_MSGMOVE", "%s filer har flyttats.");
+		define("TB_MSGRESIZE", "Dimensioner har &auml;ndrats p&aring; %s bilder.");
+		define("TB_MSGROTATE", "%s har roterats.");
+		define("TB_MSGEDITERR", "Fel uppstod vid behandling av %s filer.");
+		define("TB_MSGUPGOOD", "%s filer har laddats upp.");
+		define("TB_MSGUPBAD", "P&aring; grund av s&auml;kerhetsrestriktioner kunde inte %s filer laddas upp..");
+		define("TB_MSGUPDUP", "%s filer laddades inte upp, d&aring; de redan finns - radera eller d&ouml;p om orginalfilerna.");
+		define("TB_MSGUPFAIL", "Filuppladdningen misslyckades - kontrollera r&auml;ttigheter till '%s' samt inst&auml;llningar i php.ini.");
+		define("TB_MSGMAXSIZE", "kan inte k&ouml;as f&ouml;r uppladdning d&aring; storleken &auml;r st&ouml;rre &auml;n maximalt till&aring;tet v&auml;rde p&aring;");
+		define("TB_TTLMAXSIZE", "Ogiltig filstorlek");
+		define("TB_DENIED", "R&auml;ttigheter kr&auml;vs f&ouml;r att visa sidan.");
+		define("TB_UPDENIED", "R&auml;ttigheter att ladda upp filer kr&auml;vs f&ouml;r att visa sidan.");
+		define("TB_EDDENIED", "R&auml;ttigheter att redigera/radera filer kr&auml;vs f&ouml;r att visa sidan.");
+ 		define("TB_FODENIED", "R&auml;ttigheter att redigera mappar kr&auml;vs f&ouml;r att visa sidan.");
+?>
\ 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/tinybrowser/langs/zh-cn.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/zh-cn.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/zh-cn.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/zh-cn.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,68 @@
+<?php
+/*
+TinyBrowser 1.40 - A TinyMCE file browser (C) 2008  Bryn Jones
+Language 'zh-cn'
+Author: John Tam , Last update:2008/10/17
+email: jokytam168[at]gmail[dot]com
+*/
+		define("TB_BROWSE", "æµ�è§ˆ");
+		define("TB_EDIT", "ç¼–è¾‘");
+		define("TB_UPLOAD", "ä¸Šä¼ æ¡£æ¡ˆ");
+		define("TB_FOLDERS", "èµ„æ–™å¤¹");
+ 		define("TB_FOLDERNAME", "èµ„æ–™å¤¹å��ç§°");
+		define("TB_FOLDERCURR", "å½“å‰�èµ„æ–™å¤¹: ");
+ 		define("TB_FOLDERDEST", "ç›®çš„åœ°èµ„æ–™å¤¹: ");
+		define("TB_VIEW", "æŽ’åˆ—å›¾ç¤ºä¾�: ");
+		define("TB_SHOW", "å±•ç¤º: ");
+		define("TB_PAGE", "é¡µ");
+		define("TB_FILENAME", "æ¡£æ¡ˆå��ç§°");
+		define("TB_SIZE", "æ¡£æ¡ˆå¤§å°�");
+		define("TB_DIMENSIONS", "å°ºå¯¸");
+		define("TB_TYPE", "ç§�ç±»");
+		define("TB_DATE", "ä¿®æ”¹æ—¥æœŸ");
+		define("TB_SEARCH", "æ�œå¯»");
+		define("TB_FILES", "æ¡£æ¡ˆ");
+		define("TB_BROWSEFILES", "æ¡£æ¡ˆæµ�è§ˆ");
+		define("TB_DETAILS", "è¯¦ç»†èµ„æ–™");
+		define("TB_THUMBS", "ç¼©å›¾");
+		define("TB_EDITFILES", "ç¼–è¾‘æ¡£æ¡ˆ");
+		define("TB_ACTION", "åŠ¨ä½œ: ");
+ 		define("TB_CREATE", "å»ºç«‹");
+		define("TB_DELETE", "åˆ é™¤");
+		define("TB_RENAME", "æ›´å��æ¡£æ¡ˆ");
+		define("TB_ROTATE", "æ—‹è½¬å›¾ç‰‡");
+		define("TB_RESIZE", "è°ƒæ•´å¤§å°�");
+ 		define("TB_MOVE", "ç§»åŠ¨æ¡£æ¡ˆ");
+		define("TB_UPLOADFILES", "ä¸Šä¼ æ¡£æ¡ˆ");
+		define("TB_PROGRESS", "ä¸Šä¼ è¿›åº¦");
+		define("TB_REMOVE", "ç§»é™¤");
+		define("TB_BYTES", "bytes");
+		define("TB_WIDTH", "å®½åº¦");
+		define("TB_HEIGHT", "é«˜åº¦");
+		define("TB_NONE", "ä¿�æŒ�åŽŸçŠ¶");
+		define("TB_TYPEIMG", "å›¾ç‰‡æ¡£æ¡ˆ");
+		define("TB_TYPEMEDIA", "å¤šåª’ä½“æ¡£æ¡ˆ");
+		define("TB_TYPEFILE", "å…¶ä»–æ¡£æ¡ˆ");
+		define("TB_ROTATECW", "é¡ºæ—¶é’ˆæ—‹è½¬90åº¦");
+		define("TB_ROTATECCW", "é€†æ—¶é’ˆæ—‹è½¬90åº¦");
+		define("TB_MSGNEWTHUMBS", "å›¾ç‰‡ %s çš„ç¼©å›¾æˆ�åŠŸäº§ç”Ÿï¼�");
+		define("TB_MSGMKDIR", "èµ„æ–™å¤¹ %s æˆ�åŠŸå»ºç«‹ï¼�");
+		define("TB_MSGMKDIRFAIL", "æ— æ³•å»ºç«‹èµ„æ–™å¤¹ %s ï¼Œè¯·æ£€æŸ¥èµ„æ–™å¤¹å†™å…¥æ�ƒé™�");
+		define("TB_MSGCREATE", "å»ºç«‹èµ„æ–™å¤¹ %s æˆ�åŠŸï¼�");
+		define("TB_MSGDELETE", "åˆ é™¤ %s ç¬”æ¡£æ¡ˆå®Œæˆ�");
+		define("TB_MSGRENAME", "æ¡£æ¡ˆ %s æ›´å��å®Œæˆ�");
+ 		define("TB_MSGMOVE", "æ¡£æ¡ˆ %s ç§»åŠ¨å®Œæˆ�");
+		define("TB_MSGRESIZE", "å›¾ç‰‡ %s è°ƒæ•´å¤§å°�å®Œæˆ�");
+		define("TB_MSGROTATE", "å›¾ç‰‡ %s æ—‹è½¬å®Œæˆ�");
+		define("TB_MSGEDITERR", "åœ¨è¿›è¡Œæ“�ä½œæ—¶ï¼Œæ¡£æ¡ˆ %s é�­é�‡é”™è¯¯ï¼Œæ— æ³•è¿›è¡Œæ‚¨çš„è¦�æ±‚ï¼�");
+		define("TB_MSGUPGOOD", "ä¸Šä¼  %s ç¬”æ¡£æ¡ˆå®Œæˆ�");
+		define("TB_MSGUPBAD", "ç”±äºŽå†™å…¥æ�ƒé™�å�Šå®‰å…¨æ€§é—®é¢˜ï¼Œæ¡£æ¡ˆ %s æ— æ³•ä¸Šä¼ ");
+		define("TB_MSGUPDUP", "æ¡£æ¡ˆ %s æ— æ³•æ›´æ–°ï¼Œå·²å­˜å�Œæ ·æ¡£å��çš„æ¡£æ¡ˆï¼Œè¯·å…ˆå°†å�Œæ ·æ¡£å��çš„èµ„æ–™åˆ é™¤æˆ–æ›´å��");
+		define("TB_MSGUPFAIL", "æ¡£æ¡ˆ '%s' ä¸Šä¼ å¤±è´¥ï¼Œè¯·æ£€æŸ¥æ¡£æ¡ˆçš„å†™å…¥æ�ƒé™�");
+		define("TB_MSGMAXSIZE", "å·²è¶…è¿‡ç³»ç»Ÿæ¡£æ¡ˆå¤§å°�é™�åˆ¶ï¼Œæ— æ³•å†�åŠ å…¥ä¸Šä¼ ç­‰å¾…åŒºï¼Œç³»ç»Ÿé™�åˆ¶ä¸º");
+		define("TB_TTLMAXSIZE", "æ¡£æ¡ˆå¤§å°�é”™è¯¯");
+		define("TB_DENIED", "æ‚¨æ²¡æœ‰æ�ƒé™�æ“�ä½œæœ¬é¡¹åŠŸèƒ½");
+		define("TB_UPDENIED", "æ‚¨æ²¡æœ‰ä¸Šä¼ æ¡£æ¡ˆçš„æ�ƒé™�");
+		define("TB_EDDENIED", "æ‚¨æ²¡æœ‰ä¿®æ”¹å�Šåˆ é™¤æ¡£æ¡ˆçš„æ�ƒé™�");
+ 		define("TB_FODENIED", "æ‚¨æ²¡æœ‰å»ºç«‹å�Šä¿®æ”¹èµ„æ–™å¤¹çš„æ�ƒé™�");
+?>
\ 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/tinybrowser/langs/zh-tw.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/zh-tw.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/zh-tw.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/zh-tw.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,68 @@
+<?php
+/*
+TinyBrowser 1.40 - A TinyMCE file browser (C) 2008  Bryn Jones
+Language 'zh-tw'
+Author: John Tam , Last update:2008/10/17
+email: jokytam168[at]gmail[dot]com
+*/
+		define("TB_BROWSE", "ç€�è¦½");
+		define("TB_EDIT", "ç·¨è¼¯");
+		define("TB_UPLOAD", "ä¸Šå‚³æª”æ¡ˆ");
+		define("TB_FOLDERS", "è³‡æ–™å¤¾");
+ 		define("TB_FOLDERNAME", "è³‡æ–™å¤¾å��ç¨±");
+		define("TB_FOLDERCURR", "ç•¶å‰�è³‡æ–™å¤¾: ");
+ 		define("TB_FOLDERDEST", "ç›®çš„åœ°è³‡æ–™å¤¾: ");
+		define("TB_VIEW", "æŽ’åˆ—åœ–ç¤ºä¾�: ");
+		define("TB_SHOW", "å±•ç¤º: ");
+		define("TB_PAGE", "é �");
+		define("TB_FILENAME", "æª”æ¡ˆå��ç¨±");
+		define("TB_SIZE", "æª”æ¡ˆå¤§å°�");
+		define("TB_DIMENSIONS", "å°ºå¯¸");
+		define("TB_TYPE", "ç¨®é¡ž");
+		define("TB_DATE", "ä¿®æ”¹æ—¥æœŸ");
+		define("TB_SEARCH", "æ�œå°‹");
+		define("TB_FILES", "æª”æ¡ˆ");
+		define("TB_BROWSEFILES", "æª”æ¡ˆç€�è¦½");
+		define("TB_DETAILS", "è©³ç´°è³‡æ–™");
+		define("TB_THUMBS", "ç¸®åœ–");
+		define("TB_EDITFILES", "ç·¨è¼¯æª”æ¡ˆ");
+		define("TB_ACTION", "å‹•ä½œ: ");
+ 		define("TB_CREATE", "å»ºç«‹");
+		define("TB_DELETE", "åˆªé™¤");
+		define("TB_RENAME", "æ›´å��æª”æ¡ˆ");
+		define("TB_ROTATE", "æ—‹è½‰åœ–ç‰‡");
+		define("TB_RESIZE", "èª¿æ•´å¤§å°�");
+ 		define("TB_MOVE", "ç§»å‹•æª”æ¡ˆ");
+		define("TB_UPLOADFILES", "ä¸Šå‚³æª”æ¡ˆ");
+		define("TB_PROGRESS", "ä¸Šå‚³é€²åº¦");
+		define("TB_REMOVE", "ç§»é™¤");
+		define("TB_BYTES", "bytes");
+		define("TB_WIDTH", "å¯¬åº¦");
+		define("TB_HEIGHT", "é«˜åº¦");
+		define("TB_NONE", "ä¿�æŒ�åŽŸç‹€");
+		define("TB_TYPEIMG", "åœ–ç‰‡æª”æ¡ˆ");
+		define("TB_TYPEMEDIA", "å¤šåª’é«”æª”æ¡ˆ");
+		define("TB_TYPEFILE", "å…¶ä»–æª”æ¡ˆ");
+		define("TB_ROTATECW", "é †æ™‚é‡�æ—‹è½‰90åº¦");
+		define("TB_ROTATECCW", "é€†æ™‚é‡�æ—‹è½‰90åº¦");
+		define("TB_MSGNEWTHUMBS", "åœ–ç‰‡ %s çš„ç¸®åœ–æˆ�åŠŸç”¢ç”Ÿï¼�");
+		define("TB_MSGMKDIR", "è³‡æ–™å¤¾ %s æˆ�åŠŸå»ºç«‹ï¼�");
+		define("TB_MSGMKDIRFAIL", "ç„¡æ³•å»ºç«‹è³‡æ–™å¤¾ %s ï¼Œè«‹æª¢æŸ¥è³‡æ–™å¤¾å¯«å…¥æ¬Šé™�");
+		define("TB_MSGCREATE", "å»ºç«‹è³‡æ–™å¤¾ %s æˆ�åŠŸï¼�");
+		define("TB_MSGDELETE", "åˆªé™¤ %s ç­†æª”æ¡ˆå®Œæˆ�");
+		define("TB_MSGRENAME", "æª”æ¡ˆ %s æ›´å��å®Œæˆ�");
+ 		define("TB_MSGMOVE", "æª”æ¡ˆ %s ç§»å‹•å®Œæˆ�");
+		define("TB_MSGRESIZE", "åœ–ç‰‡ %s èª¿æ•´å¤§å°�å®Œæˆ�");
+		define("TB_MSGROTATE", "åœ–ç‰‡ %s æ—‹è½‰å®Œæˆ�");
+		define("TB_MSGEDITERR", "åœ¨é€²è¡Œæ“�ä½œæ™‚ï¼Œæª”æ¡ˆ %s é�­é�‡éŒ¯èª¤ï¼Œç„¡æ³•é€²è¡Œæ‚¨çš„è¦�æ±‚ï¼�");
+		define("TB_MSGUPGOOD", "ä¸Šå‚³ %s ç­†æª”æ¡ˆå®Œæˆ�");
+		define("TB_MSGUPBAD", "ç”±æ–¼å¯«å…¥æ¬Šé™�å�Šå®‰å…¨æ€§å•�é¡Œï¼Œæª”æ¡ˆ %s ç„¡æ³•ä¸Šå‚³");
+		define("TB_MSGUPDUP", "æª”æ¡ˆ %s ç„¡æ³•æ›´æ–°ï¼Œå·²å­˜å�Œæ¨£æª”å��çš„æª”æ¡ˆï¼Œè«‹å…ˆå°‡å�Œæ¨£æª”å��çš„è³‡æ–™åˆªé™¤æˆ–æ›´å��");
+		define("TB_MSGUPFAIL", "æª”æ¡ˆ '%s' ä¸Šå‚³å¤±æ•—ï¼Œè«‹æª¢æŸ¥æª”æ¡ˆçš„å¯«å…¥æ¬Šé™�");
+		define("TB_MSGMAXSIZE", "å·²è¶…é�Žç³»çµ±æª”æ¡ˆå¤§å°�é™�åˆ¶ï¼Œç„¡æ³•å†�åŠ å…¥ä¸Šå‚³ç­‰å¾…å�€ï¼Œç³»çµ±é™�åˆ¶ç‚º");
+		define("TB_TTLMAXSIZE", "æª”æ¡ˆå¤§å°�éŒ¯èª¤");
+		define("TB_DENIED", "æ‚¨æ²’æœ‰æ¬Šé™�æ“�ä½œæœ¬é …åŠŸèƒ½");
+		define("TB_UPDENIED", "æ‚¨æ²’æœ‰ä¸Šå‚³æª”æ¡ˆçš„æ¬Šé™�");
+		define("TB_EDDENIED", "æ‚¨æ²’æœ‰ä¿®æ”¹å�Šåˆªé™¤æª”æ¡ˆçš„æ¬Šé™�");
+ 		define("TB_FODENIED", "æ‚¨æ²’æœ‰å»ºç«‹å�Šä¿®æ”¹è³‡æ–™å¤¾çš„æ¬Šé™�");
+?>
\ 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/tinybrowser/readme.txt 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/readme.txt
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/readme.txt	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/readme.txt	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,430 @@
+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/>.
+
+
+TinyBrowser Features:
+=====================
+
+- Integrates as a custom file browser within TinyMCE for image, media and 'all'
+  file types, or can work in stand-alone mode
+
+- Adobe Flash based file uploader, supporting multiple file selection and upload
+  with file type and size filtering (permission based)
+
+- Browse files with a list view or as thumbnails (images only), with optional
+  pagination
+
+- List view has image thumbnail on hover
+
+- File display order customisable e.g. by name, type, size, date
+
+- Find function to filter results by search string 
+
+- Display detailed file information such as type, size and dimensions (images
+  only)
+
+- File deletion facility (permission based)
+
+- File edit facility (permission based) - rename, resize and rotate (last two
+  images only)
+  
+- Folder browsing and creation
+
+- File storage location user definable for each file type
+
+- Optional session control
+
+- Multi-lingual support with language definition files
+
+- Many user definable settings, all from central configuration file
+
+
+TinyBrowser Background
+======================
+
+I created TinyBrowser as I couldn't find the right TinyMCE file browser for my
+needs, particularly the ability to select and upload multiple files in an easy
+way.
+
+
+Version Notes
+=============
+
+TinyBrowser 1.41 - released 05/05/2009
+--------------------------------------
+New Features:
+Added folder argument to tinyBrowserPopUp function, so that a sub-folder can be
+selected when using TinyBrowser in standalone mode.
+Added error logging - errors are output to error.log in tinybrowser directory.
+Added Spanish, Croatian, Slovakian, Latvian, Czech, Italian, Hungarian, Swedish
+and Russian language files (thanks to all who contributed).
+
+Changes:
+Prohibited files are no longer browseable (if the paths defined contained files
+of this type).
+Only defined file extensions of a file type are browseable and editable.
+Changed stripos function to strpos to ensure PHP4 compatability.
+Updated createfolder function to work recursively with PHP4.
+Remember current folder after upload.
+Changed filename clean regex to be less strict.
+
+Bug Fixes:
+Fixed transparency support for gif and png (thanks to Dirk Bohl).
+Added 'no-cache' meta tag to ensure latest page is served by web browser.
+Added another fix for no style issue with TinyMCE integration.
+Security fix for browse type when set to non-existant value.
+Security fix for malicious setting of folder get variable to relative values.
+
+TinyBrowser 1.40 - released N/A
+--------------------------------------
+New Features:
+Added multiple folder support with a separate Folders tab to allow folder
+creation, renaming and deletion.
+Added Move action to Edit tab, to allow moving of files between folders.
+Added Danish language file.
+Added 'delayprocess' to config file - this can be set if server response is
+delayed, preventing uploaded files being processed correctly.
+Added width and height config values for the TinyBrowser pop up window size.
+Added 'cleanfilename' flag to config file, to remove disallowed characters
+from filenames on upload (set to true by default).
+  
+Changes:
+Added recursive flag to createfolder function, to allow TinyBrowser to 
+create full upload path.
+Changed default window size to 770px x 480px.
+Minor code optimisation.
+Prohibited files are now not browseable (if the paths defined contained files of
+this type).
+Now only defined file extensions of a file type are browseable and editable.
+Changed stripos function call to strpos to ensure PHP4 compatability.
+Updated createfolder function to work recursively with PHP4.
+Remember current folder after upload.
+
+Bug Fixes:
+Fixed minor bug causing elementid to be lost after file upload in
+stand-alone mode.
+Fixed stand-alone javascript selectURL function bug that prevented 
+TinyBrowser window close on selection. 
+Fixed bug in Flash upload that prevented folder permission error reporting.
+Fixed bug in image resize and rotate functions that converted all types
+to jpeg.
+
+TinyBrowser 1.33 - released 23/09/2008
+--------------------------------------
+New Features:
+Added German, Finnish, Traditional and Simplified Chinese language files.
+Added session control workaround for upload_file.php (called by Flash).
+
+Changes:
+Flash uploader has been modified to display the file type and also to fix
+strange progress bar behaviour when uploading multiple files. As the
+upload process is not concurrent, I have removed the individual progress
+bars and replaced them with one (progress is still per file however).
+When the Upload button is pressed all the buttons now disappear.
+
+Bug Fixes:
+Fixed minor bug that affected css layout after file upload.
+Fixed bug introduced in 1.32 that prevented automatic image resize on
+upload.
+Added 'HTTP/1.1 200' response to upload_file.php script, to address
+Flash bug in some Mac setups.
+Added check for valid images in Browse and Edit tabs - non-image files
+are still listed but error producing image properties code is bypassed.
+	
+
+TinyBrowser 1.32 - released 17/09/2008
+--------------------------------------
+New Features:
+None.
+
+Changes:
+The upload path is now passed to the Flash upload widget, for better
+compatibility with Firefox and Opera when you set your paths using session
+variables (this is due to a Flash bug that loses session data).
+Files are no longer uploaded to a temporary directory, so there's now no
+folder creation during the upload process. Instead, file name extensions
+are suffixed with an underscore until processed. (This renders them
+useless until verification).
+The thumbs directory has been changed to '_thumbs'.
+
+Bug Fixes:
+Fixed security hole - previously, it was possible to directly
+submit files to the upload_file.php script. Due to the Flash session bug,
+normal session control does not work. Instead, a hash string check has been
+added to the upload_file.php script and the installation instructions
+amended.
+   
+TinyBrowser 1.31 - released 16/09/2008
+--------------------------------------
+New Features:
+None.
+
+Changes:
+Added prohibited files logic to the file_upload.php script (previously
+located only in file_process.php script).
+Changed duplicate file handling behaviour - TinyBrowser now discards
+files with the same name.
+
+Bug Fixes:
+None.
+
+TinyBrowser 1.30 - released 12/09/2008
+--------------------------------------
+New Features:
+'Stand-alone' mode, for use without TinyMCE.
+Optional and configurable pagination, to break results down into pages.
+New configuration option, $tinybrowser['link'], allows the passback link to
+be different to the upload path.
+Added automatic creation of upload directories (with definable chmod for Unix
+servers).
+Added alert messages for errors and actions.
+Multi-lingual support - credit to Francis Rebouças 
+(francisreboucas[at]gmail[dot]com) for idea, design, implementation and 
+Portugese language file.
+Experimental support for FCKeditor.
+
+Changes:
+Rationalised TinyBrowser file and folder names and structure (brought in line
+with TinyMCE plugin specification).
+Revised documentation.
+After file upload user is now directed back to upload tab instead of the
+browse tab.
+   
+Bug Fixes:
+Fixed security hole - prohibited file extensions not obeyed due to error in
+inherited code. 
+Fixed small issue with edit / delete permissions (not consistently hiding
+edit tab).
+
+TinyBrowser 1.20 - released 20/08/2008
+--------------------------------------
+New Features:
+Added thumbnail on hover for detail view (images only). Note: not working in
+IE6.
+Added Edit tab - allows file rename, resize and rotate (last two for images
+only). Also moved delete action to here.
+Added configurable automatic image resize on upload.
+
+Changes:
+Moved file thumbnail generation to upload process.
+Changed table css to match Flash upload.
+Improved thumbnail view layout.
+Removed the form select elements for sort by and type, and made the table
+column headers clickable.
+
+Bug Fixes:
+Changed default $tinymce['docroot'] value to
+rtrim($_SERVER['DOCUMENT_ROOT'],'/') - this fixes an issue with server setups
+that return a value with a '/' suffix.
+Removed .htaccess file after various bug reports - doesn't appear to be
+required for majority of server setups.
+Fixed silly bug with thumbnail urls that could prevent generation and viewing
+under some server setups.
+Fixed various other minor bugs and tidied code.
+
+TinyBrowser 1.10 
+----------------
+Adjusted layout of file upload.
+Added facility to limit permitted file upload size (separate values for each
+file type).
+Amended installation instructions for clarity.
+Tested as working in Opera 9.
+
+TinyBrowser 1.00
+----------------
+Tested in Firefox 2 and 3, Internet Explorer 6 and 7 and Safari 3.
+Requires Adobe Flash Player 9.
+
+
+Requirements
+============
+
+Adobe Flash Player 8 +
+PHP enabled server
+
+Supported browsers:
+Internet Explorer 6 +
+Firefox 2 +
+Safari 3 +
+Opera 9 +
+Google Chrome
+
+
+Language Definition Files
+=========================
+
+English (en)
+Chinese Simplified (zh-cn)
+Chinese Traditional (zh-tw)
+Croatian (hr)
+Czech (cs)
+Danish (da)
+Dutch (nl)
+Finnish (fi)
+French (fr)
+German (de)
+Hungarian (hu)
+Italian (it)
+Latvian (lv)
+Polish (pl)
+Portuguese (pt)
+Russian (ru)
+Slovak (sk)
+Spanish (es)
+Swedish (sv)
+
+
+
+Known Issues
+============
+
+None.
+
+
+Troubleshooting
+===============
+
+If you receive a 403, 406 or 412 status error on uploading files, please create
+an .htaccess file in your tinybrowser directory with the following contents:
+
+SecFilterEngine Off
+SecFilterScanPOST Off
+
+If you use Linux and the Squid proxy, you need to add a "ignore_expect_100 on"
+flag to the squid config file to avoid a 417 status error.
+
+
+TinyBrowser Installation Method 1
+=================================
+
+The standard TinyBrowser installation, this integrates TinyBrowser as a custom
+file browseer with TinyMCE.
+
+1) Copy the tinybrowser folder and contents to your TinyMCE plugins directory.
+
+2) Place the following javascript link after the link to TinyMCE (tiny_mce.js):
+
+   <script type="text/javascript"
+   src="/tiny_mce/plugins/tinybrowser/tb_tinymce.js.php"></script>
+
+   ***NOTE:*** The above link assumes TinyMCE is installed in your website root
+   directory, you will need to amend the link to your specific setup!
+
+3) Add this line to your TinyMCE init:
+
+   file_browser_callback : "tinyBrowser"
+
+4) Edit the TinyBrowser configuration file (config_tinybrowser.php). The most
+   important settings are the file paths (these will be automatically created on
+   your server by TinyBrowser if they do not exist) and also the 'obfuscate'
+   property, which should be set to a random value.
+
+   ***NOTE:*** If your server is Unix-based. you may wish to modify the 
+   $tinybrowser['unixpermissions'] config value, which decides permissions.
+
+5) All done! Now you will see a browse button in the TinyMCE dialog windows for
+   plugins like image, media and link - just click this button and TinyBrowser
+   will appear.
+
+
+TinyBrowser Installation Method 2
+=================================
+
+This installation allows TinyBrowser to be used in 'stand-alone' mode, for
+integration with any web application.
+
+1) Copy the tinybrowser folder and contents to your server.
+
+2) Place the following javascript link within the <head> tag on the page you
+   require TinyBrowser:
+
+   <script language="javascript" type="text/javascript"
+   src="/tinybrowser/tb_standalone.js.php"></script>
+
+   ***NOTE:*** The above link assumes TinyBrowser is installed in your website
+   root directory, you will need to amend the link to your specific setup!
+
+3) Edit the TinyBrowser configuration file (config_tinybrowser.php). The most
+   important settings are the file paths (these will be automatically created on
+   your server by TinyBrowser if they do not exist) and also the 'obfuscate'
+   property, which should be set to a random value.
+
+   ***NOTE:*** If your server is Unix-based. you may wish to modify the
+   $tinybrowser['unixpermissions'] config value, which decides permissions.
+
+4) To launch TinyBrowser use the following javascript function:
+
+   tinyBrowserPopUp('type','elementid');
+
+   'type' can contain 'image', 'media' or 'file' - corresponding to the type of
+   file you want TinyBrowser to manage.
+
+   'elementid' is the id of the page element you want populate with the file url
+   TinyBrowser returns - this is generally a form text input. If you want to
+   immediately display the image then create an <img> tag with the same element
+   id, only suffixed with img - e.g. elementidimg.
+
+   
+TinyBrowser Installation Method 3
+=================================
+
+This installation method integrates TinyBrowser as a custom file browser with
+FCKeditor.
+
+1) Copy the tinybrowser folder and contents to your server.
+
+2) Edit your fckconfig.js file as follows (replace existing lines).
+
+   To enable TinyBrowser for files:
+   FCKConfig.LinkBrowserURL = '/yourtinybrowserurl/tinybrowser.php?type=file';
+
+   To enable TinyBrowser for images:
+   FCKConfig.ImageBrowserURL = '/yourtinybrowserurl/tinybrowser.php?type=image';
+
+   To enable TinyBrowser for Flash:
+   FCKConfig.FlashBrowserURL = '/yourtinybrowserurl/tinybrowser.php?type=media';
+
+   If you wish to disable the default FCKeditor file uploads (recommended), set
+   the following:
+   FCKConfig.LinkUpload = false;
+   FCKConfig.ImageUpload = false;
+   FCKConfig.FlashUpload = false;
+
+3) Edit the TinyBrowser configuration file (config_tinybrowser.php).
+
+   Change the $tinybrowser['integration'] line:
+   $tinybrowser['integration'] = 'fckeditor';
+
+   The other most important settings are the file paths (these will be
+   automatically created on your server by TinyBrowser if they do not exist) and
+   the 'obfuscate' property, which should be set to a random value.
+
+   ***NOTE:*** If your server is Unix-based. you may wish to modify the
+   $tinybrowser['unixpermissions'] config value, which decides permissions.
+
+4) All done! Now when you click the Browse Server button in the FCKeditor dialog
+   windows for image, Flash and link, TinyBrowser will appear instead of the
+   standard FCKeditor file browser.
+
+
+Contact
+=======
+
+Please notify me by email bryn[at]lunarvis[dot]com if you notice any bugs or
+have ideas for new features.
+
+-----------------------------
+File Last Modified 05/05/2009
\ 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/tinybrowser/tb_standalone.js.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/tb_standalone.js.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/tb_standalone.js.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/tb_standalone.js.php	2009-06-30 22:05:14.000000000 +0200
@@ -0,0 +1,14 @@
+<?php
+require_once("config_tinybrowser.php");
+
+$tbpath = pathinfo($_SERVER['SCRIPT_NAME']);
+$tbmain = $tbpath['dirname'].'/tinybrowser.php';
+?>
+
+function tinyBrowserPopUp(type,formelementid,folder) {
+   tburl = "<?php echo $tbmain; ?>" + "?type=" + type + "&feid=" + formelementid;
+   if (folder !== undefined) tburl += "&folder="+folder+"%2F";
+   newwindow=window.open(tburl,'tinybrowser','height=<?php echo $tinybrowser['window']['height']+15; ?>,width=<?php echo $tinybrowser['window']['width']+15; ?>,scrollbars=yes,resizable=yes');
+   if (window.focus) {newwindow.focus()}
+   return false;
+}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/tb_tinymce.js.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/tb_tinymce.js.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/tb_tinymce.js.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/tb_tinymce.js.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,39 @@
+<?php
+require_once("config_tinybrowser.php");
+
+$tbpath = pathinfo($_SERVER['SCRIPT_NAME']);
+$tbmain = $tbpath['dirname'].'/tinybrowser.php';
+?>
+
+ function tinyBrowser (field_name, url, type, win) {
+
+    /* If you work with sessions in PHP and your client doesn't accept cookies you might need to carry
+       the session name and session ID in the request string (can look like this: "?PHPSESSID=88p0n70s9dsknra96qhuk6etm5").
+       These lines of code extract the necessary parameters and add them back to the filebrowser URL again. */
+
+    var cmsURL = "<?php echo $tbmain; ?>";    // script URL - use an absolute path!
+    if (cmsURL.indexOf("?") < 0) {
+        //add the type as the only query parameter
+        cmsURL = cmsURL + "?type=" + type;
+    }
+    else {
+        //add the type as an additional query parameter
+        // (PHP session ID is now included if there is one at all)
+        cmsURL = cmsURL + "&type=" + type;
+    }
+
+    tinyMCE.activeEditor.windowManager.open({
+        file : cmsURL,
+        title : 'Tiny Browser',
+        width : <?php echo $tinybrowser['window']['width']; ?>, 
+        height : <?php echo $tinybrowser['window']['height']; ?>,
+        resizable : "yes",
+		  scrollbars : "yes",
+        inline : "yes",  // This parameter only has an effect if you use the inlinepopups plugin!
+        close_previous : "no"
+    }, {
+        window : win,
+        input : field_name
+    });
+    return false;
+  }
\ 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/tinybrowser/tibor.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/tibor.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/tibor.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/tibor.php	2009-06-23 13:11:04.000000000 +0200
@@ -0,0 +1,33 @@
+<?php
+
+$tbpath = pathinfo($_SERVER['SCRIPT_NAME']);
+
+var_dump($tbpath);
+
+//$cfg  = ((@$_SERVER['DOCUMENT_ROOT'] && file_exists(@$_SERVER['DOCUMENT_ROOT'] . $_SERVER['PHP_SELF'])) ? $_SERVER['DOCUMENT_ROOT'] : str_replace(dirname(@$_SERVER['PHP_SELF']), '', str_replace('\\', '/', realpath('.'))));
+//echo "root=".$cfg;
+
+	$cfg['ver'] 		= '1.3.9 - build 11242008';										// iBrowser version
+	//$cfg['root_dir']	= realpath((getenv('DOCUMENT_ROOT') && ereg('^'.preg_quote(realpath(getenv('DOCUMENT_ROOT'))), realpath(__FILE__))) ? getenv('DOCUMENT_ROOT') : str_replace(dirname(@$_SERVER['PHP_SELF']), '', str_replace($osslash, '/', dirname(__FILE__))));
+	$cfg['root_dir']    = ((@$_SERVER['DOCUMENT_ROOT'] && file_exists(@$_SERVER['DOCUMENT_ROOT'] . $_SERVER['PHP_SELF'])) ? $_SERVER['DOCUMENT_ROOT'] : str_replace(dirname(@$_SERVER['PHP_SELF']), '', str_replace('\\', '/', realpath('.'))));
+	$cfg['base_url'] 	= 'http://' . $_SERVER['SERVER_NAME']; 							// base url; e.g. 'http://localhost/'
+	//$cfg['main_dir'] 	= dirname($_SERVER['PHP_SELF']); 								// iBrowser main dir; e.g. '/home/domain/public_html/ibrowser/'
+	$cfg['main_dir']    = ereg_replace("//", "/", dirname($_SERVER['PHP_SELF']));
+	$cfg['scripts']  	= $cfg['main_dir'] . '/scripts/'; 								// scripts dir; e.g. '/home/domain/public_html/ibrowser/scripts/'
+	$cfg['pop_url']    	= $cfg['scripts'] . 'popup.php'; 								// popup dir; relative to 'script' dir
+	$cfg['temp']     	= realpath(dirname(__FILE__) . '/../../../../../../../images/stories'); 					// temp dir; e.g. 'D:/www/temp'
+
+var_dump($cfg);
+
+$docroot = rtrim($_SERVER['DOCUMENT_ROOT'],'/');
+echo $docroot;
+echo "<br>";
+$img = realpath(dirname(__FILE__) . '/../../../../../../../images/stories');
+echo $img;
+echo "<br>";
+echo preg_replace('[\\\]', '/', realpath(dirname(__FILE__) . '/../../../../../../../images/stories'));
+echo "<br>";
+echo str_replace($docroot,'', preg_replace('[\\\]', '/', realpath(dirname(__FILE__) . '/../../../../../../../images/stories'))) ."/";
+
+
+?>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/tinybrowser.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/tinybrowser.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/tinybrowser.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/tinybrowser.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,337 @@
+<?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;
+		}
+	}
+
+// Assign file operation variables
+$validtypes = array('image','media','file');
+$typenow = ((isset($_GET['type']) && in_array($_GET['type'],$validtypes)) ? $_GET['type'] : 'image');
+$standalone = ((isset($_GET['feid']) && $_GET['feid']!='') ? true : false);
+$foldernow = str_replace(array('../','..\\','./','.\\'),'',($tinybrowser['allowfolders'] && isset($_REQUEST['folder']) ? urldecode($_REQUEST['folder']) : ''));
+
+if($standalone)
+	{
+	$passfeid = '&feid='.$_GET['feid'];	
+	$rowhlightinit =  ' onload="rowHighlight();"';
+	}
+else
+	{
+	$passfeid = '';
+	$rowhlightinit =  '';	
+	}
+
+// 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 = (isset($_REQUEST['viewtype']) ? $_REQUEST['viewtype'] : $tinybrowser['view']['image']);
+$findnow = (isset($_POST['find']) && !empty($_POST['find']) ? $_POST['find'] : false);
+$showpagenow = (isset($_REQUEST['showpage']) ? $_REQUEST['showpage'] : 0);
+
+// Assign url pass variables
+$passfolder = '&folder='.urlencode($foldernow);
+$passfeid = (isset($_GET['feid']) && $_GET['feid']!='' ? '&feid='.$_GET['feid'] : '');
+$passviewtype = '&viewtype='.$viewtypenow;
+$passsortby = '&sortby='.$sortbynow.'&sorttype='.$sorttypenow;
+
+// Assign view, thumbnail and link paths
+$browsepath = $tinybrowser['path'][$typenow].$foldernow;
+$linkpath = $tinybrowser['link'][$typenow].$foldernow;
+$thumbpath = $tinybrowser[$tinybrowser['thumbsrc']][$typenow].$foldernow;
+
+// Assign sort parameters for column header links
+$sortbyget = array();
+$sortbyget['name'] = '&viewtype='.$viewtypenow.'&sortby=name';
+$sortbyget['size'] = '&viewtype='.$viewtypenow.'&sortby=size'; 
+$sortbyget['type'] = '&viewtype='.$viewtypenow.'&sortby=type'; 
+$sortbyget['modified'] = '&viewtype='.$viewtypenow.'&sortby=modified';
+$sortbyget['dimensions'] = '&viewtype='.$viewtypenow.'&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()
+);
+$newthumbqty = 0;
+
+// read folder contents if folder exists
+if(file_exists($tinybrowser['docroot'].$browsepath))
+	{
+	// Read directory contents and populate $file array
+	$dh = opendir($tinybrowser['docroot'].$browsepath);
+	$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'].$browsepath.$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'].$browsepath.$filename);
+				$file['size'][] = filesize($tinybrowser['docroot'].$browsepath.$filename);
+	
+				// image specific info or general
+				if($typenow=='image' && $imginfo = getimagesize($tinybrowser['docroot'].$browsepath.$filename))
+					{
+					$file['width'][] = $imginfo[0];
+					$file['height'][] = $imginfo[1];
+					$file['dimensions'][] = $imginfo[0] + $imginfo[1];
+					$file['type'][] = $imginfo['mime'];
+					
+					// Check a thumbnail exists
+					if(!file_exists($tinybrowser['docroot'].$browsepath.'_thumbs/')) createfolder($tinybrowser['docroot'].$browsepath.'_thumbs/',$tinybrowser['unixpermissions']);
+			  		$thumbimg = $tinybrowser['docroot'].$browsepath.'_thumbs/_'.$filename;
+					if (!file_exists($thumbimg))
+						{
+						$nothumbimg = $tinybrowser['docroot'].$browsepath.$filename;
+						$mime = getimagesize($nothumbimg);
+						$im = convert_image($nothumbimg,$mime['mime']);
+						resizeimage($im,$tinybrowser['thumbsize'],$tinybrowser['thumbsize'],$thumbimg,$tinybrowser['thumbquality'],$mime['mime']);
+						imagedestroy($im);
+						$newthumbqty++;
+						}
+					}
+				else 
+					{
+					$file['width'][] = 'N/A';
+					$file['height'][] = 'N/A';
+					$file['dimensions'][] = 'N/A';
+					$file['type'][] = returnMIMEType($filename);
+					}
+				}			
+			}
+		}
+	closedir($dh);
+	}
+// create file upload folder
+else
+	{
+	$success = createfolder($tinybrowser['docroot'].$browsepath,$tinybrowser['unixpermissions']);
+	if($success)
+		{
+		if($typenow=='image') createfolder($tinybrowser['docroot'].$browsepath.'_thumbs/',$tinybrowser['unixpermissions']);
+		$notify['type'][]='success';
+		$notify['message'][]=sprintf(TB_MSGMKDIR, $browsepath);
+		}
+	else
+		{
+		$notify['type'][]='error';
+		$notify['message'][]=sprintf(TB_MSGMKDIRFAIL, $browsepath);
+		}
+	}
+	
+// Assign directory structure to array
+$browsedirs=array();
+dirtree($browsedirs,$tinybrowser['filetype'][$typenow],$tinybrowser['docroot'],$tinybrowser['path'][$typenow]);
+	
+// generate alert if new thumbnails created
+if($newthumbqty>0)
+   {
+	$notify['type'][]='info';
+	$notify['message'][]=sprintf(TB_MSGNEWTHUMBS, $newthumbqty);
+	}
+	
+
+// 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)
+	{
+	$showpage_start = ($showpagenow ? ($_REQUEST['showpage']*$tinybrowser['pagination'])-$tinybrowser['pagination'] : 0);
+	$showpage_end = $showpage_start+$tinybrowser['pagination'];
+	if($showpage_end>$num_of_files) $showpage_end = $num_of_files;
+	}
+else
+	{
+	$showpage_start = 0;
+	$showpage_end = $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_BROWSE; ?></title>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Pragma" content="no-cache" />
+<?php
+if(!$standalone && $tinybrowser['integration']=='tinymce')
+	{
+	?><script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<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?<?php echo substr($passfeid,1); ?>"></script>
+</head>
+<body<?php echo $rowhlightinit; ?>>
+<?php
+if(count($notify['type'])>0) alert($notify);
+form_open('foldertab',false,'tinybrowser.php','?type='.$typenow.$passviewtype.$passsortby.$passfeid);
+?>
+<div class="tabs">
+<ul>
+<li id="browse_tab" class="current"><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
+	}
+if($tinybrowser['allowedit'] || $tinybrowser['allowdelete'])
+	{
+	?><li id="edit_tab"><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($browsedirs)>1)
+	{
+	?><li id="folder_tab" class="right"><span><?php
+	form_select($browsedirs,'folder',TB_FOLDERCURR,urlencode($foldernow),true);
+	?></span></li><?php
+	} 
+?>
+</ul>
+</div>
+</form>
+<div class="panel_wrapper">
+<div id="general_panel" class="panel currentmod">
+<fieldset>
+<legend><?php echo TB_BROWSEFILES; ?></legend>
+<?php
+form_open('browse','custom','tinybrowser.php','?type='.$typenow.$passfolder.$passfeid);
+?>
+<div class="pushleft">
+<?php
+
+// Offer view type if file type is image
+if($typenow=='image')
+	{
+	$select = array(
+		array('thumb',TB_THUMBS),
+		array('detail',TB_DETAILS)
+	);
+	form_select($select,'viewtype',TB_VIEW,$viewtypenow,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',TB_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
+
+// if image show dimensions header
+if($typenow=='image')
+	{
+	$imagehead = '<th><a href="?type='.$typenow.$passfolder.$passfeid.$sortbyget['dimensions'].'"'.$thclass['dimensions'].'>'.TB_DIMENSIONS.'</a></th>';
+	}
+else $imagehead = '';
+
+echo '<div class="tabularwrapper"><table class="browse">'
+		.'<tr><th><a href="?type='.$typenow.$passfolder.$passfeid.$sortbyget['name'].'"'.$thclass['name'].'>'.TB_FILENAME.'</a></th>'
+		.'<th><a href="?type='.$typenow.$passfolder.$passfeid.$sortbyget['size'].'"'.$thclass['size'].'>'.TB_SIZE.'</a></th>'
+		.$imagehead
+		.'<th><a href="?type='.$typenow.$passfolder.$passfeid.$sortbyget['type'].'"'.$thclass['type'].'>'.TB_TYPE.'</th>'
+		.'<th><a href="?type='.$typenow.$passfolder.$passfeid.$sortbyget['modified'].'"'.$thclass['modified'].'>'.TB_DATE.'</th></tr>';
+
+// show image thumbnails, unless detail view is selected
+if($typenow=='image' && $viewtypenow != 'detail')
+	{
+	echo '</table></div>';
+
+	for($i=$showpage_start;$i<$showpage_end;$i++)
+		{
+		echo '<div class="img-browser"><a href="#" onclick="selectURL(\''.$linkpath.$file['name'][$i].'\');" title="'.TB_FILENAME.': '.$file['name'][$i]
+				.'&#13;&#10;'.TB_DIMENSIONS.': '.$file['width'][$i].' x '.$file['height'][$i]
+				.'&#13;&#10;'.TB_DATE.': '.date($tinybrowser['dateformat'],$file['modified'][$i])
+				.'&#13;&#10;'.TB_TYPE.': '.$file['type'][$i]
+				.'&#13;&#10;'.TB_SIZE.': '.bytestostring($file['size'][$i],1)
+				.'"><img src="'.$thumbpath.'_thumbs/_'.$file['name'][$i]
+				.'"  /><div class="filename">'.$file['name'][$i].'</div></a></div>';
+		}
+	}
+else
+	{
+	for($i=$showpage_start;$i<$showpage_end;$i++)
+		{
+		$alt = (IsOdd($i) ? 'r1' : 'r0');
+		echo '<tr class="'.$alt.'">';
+		if($typenow=='image') echo '<td><a class="imghover" href="#" onclick="selectURL(\''.$linkpath.$file['name'][$i].'\');" title="'.$file['name'][$i].'"><img src="'.$thumbpath.'_thumbs/_'.$file['name'][$i].'" alt="" />'.truncate_text($file['name'][$i],30).'</a></td>';
+		else echo '<td><a href="#" onclick="selectURL(\''.$linkpath.$file['name'][$i].'\');" title="'.$file['name'][$i].'">'.truncate_text($file['name'][$i],30).'</a></td>';
+		echo '<td>'.bytestostring($file['size'][$i],1).'</td>';
+		if($typenow=='image') echo '<td>'.$file['width'][$i].' x '.$file['height'][$i].'</td>';	
+		echo '<td>'.$file['type'][$i].'</td>'
+			.'<td>'.date($tinybrowser['dateformat'],$file['modified'][$i]).'</td></tr>'."\n";
+		}
+	echo '</table></div>';
+	}
+?>
+</fieldset></div></div>
+<form name="passform"><input name = "fileurl" type="hidden" value= "" /></form>
+</body>
+</html>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/upload_file.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/upload_file.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/upload_file.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/upload_file.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,40 @@
+<?php
+require_once('config_tinybrowser.php');
+require_once('fns_tinybrowser.php');
+
+// Check session, if it exists
+if(session_id() != '')
+	{
+	if(!isset($_SESSION[$tinybrowser['sessioncheck']])) { echo 'Error!'; exit; }
+	}
+	
+// Check hash is correct (workaround for Flash session bug, to stop external form posting)
+if($_GET['obfuscate'] != md5($_SERVER['DOCUMENT_ROOT'].$tinybrowser['obfuscate'])) { echo 'Error!'; exit; } 
+
+// Check  and assign get variables
+if(isset($_GET['type'])) { $typenow = $_GET['type']; } else { echo 'Error!'; exit; } 
+if(isset($_GET['folder'])) { $dest_folder = urldecode($_GET['folder']); } else { echo 'Error!'; exit; } 
+
+// Check file extension isn't prohibited
+$nameparts = explode('.',$_FILES['Filedata']['name']);
+$ext = end($nameparts);
+
+if(!validateExtension($ext, $tinybrowser['prohibited'])) { echo 'Error!'; exit; } 
+
+// Check file data
+if ($_FILES['Filedata']['tmp_name'] && $_FILES['Filedata']['name'])
+	{	
+	$source_file = $_FILES['Filedata']['tmp_name'];
+	$file_name = stripslashes($_FILES['Filedata']['name']);
+	if($tinybrowser['cleanfilename']) $file_name = clean_filename($file_name);
+	if(is_dir($tinybrowser['docroot'].$dest_folder))
+		{
+		$success = copy($source_file,$tinybrowser['docroot'].$dest_folder.'/'.$file_name.'_');
+		}
+	if($success)
+		{
+		header('HTTP/1.1 200 OK'); //  if this doesn't work for you, try header('HTTP/1.1 201 Created');
+		?><html><head><title>File Upload Success</title></head><body>File Upload Success</body></html><?php
+		}
+	}		
+?>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/upload.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/upload.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/upload.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/upload.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,177 @@
+<?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['allowupload'])
+	{
+	echo TB_UPDENIED;
+	exit;
+	}
+
+// Assign get 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']) : ''));
+$passfolder = '&folder='.urlencode($foldernow);
+$passfeid = (isset($_GET['feid']) && $_GET['feid']!='' ? '&feid='.$_GET['feid'] : '');
+$passupfeid = (isset($_GET['feid']) && $_GET['feid']!='' ? $_GET['feid'] : '');
+
+// Assign upload path
+$uploadpath = urlencode($tinybrowser['path'][$typenow].$foldernow);
+
+// Assign directory structure to array
+$uploaddirs=array();
+dirtree($uploaddirs,$tinybrowser['filetype'][$typenow],$tinybrowser['docroot'],$tinybrowser['path'][$typenow]);
+
+// determine file dialog file types
+switch ($_GET['type'])
+	{
+	case 'image':
+		$filestr = TB_TYPEIMG;
+		break;
+	case 'media':
+		$filestr = TB_TYPEMEDIA;
+		break;
+	case 'file':
+		$filestr = TB_TYPEFILE;
+		break;
+	}
+$fileexts = str_replace(",",";",$tinybrowser['filetype'][$_GET['type']]);
+$filelist = $filestr.' ('.$tinybrowser['filetype'][$_GET['type']].')';
+
+// Initalise alert array
+$notify = array(
+	'type' => array(),
+	'message' => array()
+);
+$goodqty = (isset($_GET['goodfiles']) ? $_GET['goodfiles'] : 0);
+$badqty = (isset($_GET['badfiles']) ? $_GET['badfiles'] : 0);
+$dupqty = (isset($_GET['dupfiles']) ? $_GET['dupfiles'] : 0);
+
+if($goodqty>0)
+	{
+	$notify['type'][]='success';
+	$notify['message'][]=sprintf(TB_MSGUPGOOD, $goodqty);
+	}
+if($badqty>0)
+	{
+	$notify['type'][]='failure';
+	$notify['message'][]=sprintf(TB_MSGUPBAD, $badqty);
+	}
+if($dupqty>0)
+	{
+	$notify['type'][]='failure';
+	$notify['message'][]=sprintf(TB_MSGUPDUP, $dupqty);
+	}
+if(isset($_GET['permerror']))
+	{
+	$notify['type'][]='failure';
+	$notify['message'][]=sprintf(TB_MSGUPFAIL, $tinybrowser['docroot'].$tinybrowser['path'][$typenow]);
+	}
+?>
+<!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_UPLOAD; ?></title>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Pragma" content="no-cache" />
+<?php
+if($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 type="text/javascript" src="js/swfobject.js"></script>
+<script type="text/javascript">
+function uploadComplete(url) {
+document.location = url;
+}
+</script>
+</head>
+<body onload='
+      var so = new SWFObject("flexupload.swf", "mymovie", "100%", "340", "9", "#ffffff");
+      so.addVariable("folder", "<?php echo $uploadpath; ?>");
+      so.addVariable("uptype", "<?php echo $typenow; ?>");
+      so.addVariable("destid", "<?php echo $passupfeid; ?>");
+      so.addVariable("maxsize", "<?php echo $tinybrowser['maxsize'][$_GET['type']]; ?>");
+      so.addVariable("sessid", "<?php echo session_id(); ?>");
+      so.addVariable("obfus", "<?php echo md5($_SERVER['DOCUMENT_ROOT'].$tinybrowser['obfuscate']); ?>");
+      so.addVariable("filenames", "<?php echo $filelist; ?>");
+      so.addVariable("extensions", "<?php echo $fileexts; ?>");
+      so.addVariable("filenamelbl", "<?php echo TB_FILENAME; ?>");
+      so.addVariable("sizelbl", "<?php echo TB_SIZE; ?>");
+      so.addVariable("typelbl", "<?php echo TB_TYPE; ?>");
+      so.addVariable("progresslbl", "<?php echo TB_PROGRESS; ?>");
+      so.addVariable("browselbl", "<?php echo TB_BROWSE; ?>");
+      so.addVariable("removelbl", "<?php echo TB_REMOVE; ?>");
+      so.addVariable("uploadlbl", "<?php echo TB_UPLOAD; ?>");
+      so.addVariable("uplimitmsg", "<?php echo TB_MSGMAXSIZE; ?>");
+      so.addVariable("uplimitlbl", "<?php echo TB_TTLMAXSIZE; ?>");
+      so.addVariable("uplimitbyte", "<?php echo TB_BYTES; ?>");
+      so.addParam("allowScriptAccess", "always");
+      so.addParam("type", "application/x-shockwave-flash");
+      so.write("flashcontent");'>
+<?php
+if(count($notify['type'])>0) alert($notify);
+form_open('foldertab',false,'upload.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>
+<li id="upload_tab" class="current"><span><a href="upload.php?type=<?php echo $typenow.$passfolder.$passfeid ; ?>"><?php echo TB_UPLOAD; ?></a></span></li>
+<?php
+if($tinybrowser['allowedit'] || $tinybrowser['allowdelete'])
+	{
+	?><li id="edit_tab"><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($uploaddirs)>1)
+	{
+	?><li id="folder_tab" class="right"><span><?php
+	form_select($uploaddirs,'folder',TB_FOLDERCURR,urlencode($foldernow),true);
+	?></span></li><?php
+	}
+?>
+</ul>
+</div>
+</form>
+<div class="panel_wrapper">
+<div id="general_panel" class="panel currentmod">
+<fieldset>
+<legend><?php echo TB_UPLOADFILES; ?></legend>
+<?php
+
+?>
+    <div id="flashcontent"></div>
+</fieldset></div></div>
+</body>
+</html>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/upload_process.php 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/upload_process.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/upload_process.php	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/upload_process.php	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,99 @@
+<?php
+require_once('config_tinybrowser.php');
+require_once('fns_tinybrowser.php');
+
+// delay script if set
+if($tinybrowser['delayprocess']>0) sleep($tinybrowser['delayprocess']);
+
+// Initialise files array and error vars
+$files = array();
+$good = 0;
+$bad = 0;
+$dup = 0;
+$total = (isset($_GET['filetotal']) ? $_GET['filetotal'] : 0);
+
+
+// Assign get variables
+$folder = $tinybrowser['docroot'].urldecode($_GET['folder']);
+$foldernow = urlencode(str_replace($tinybrowser['path'][$_GET['type']],'',urldecode($_GET['folder'])));
+$passfeid = (isset($_GET['feid']) ? '&feid='.$_GET['feid'] : '');
+
+if ($handle = opendir($folder))
+	{
+	while (false !== ($file = readdir($handle)))
+		{
+		if ($file != "." && $file != ".." && substr($file,-1)=='_')
+			{
+			//-- File Naming
+			$tmp_filename = $folder.$file;
+			$dest_filename	 = $folder.rtrim($file,'_');
+        
+			//-- Duplicate Files
+			if(file_exists($dest_filename)) { unlink($tmp_filename); $dup++; continue; }
+
+			//-- Bad extensions
+			$nameparts = explode('.',$dest_filename);
+			$ext = end($nameparts);
+			
+			if(!validateExtension($ext, $tinybrowser['prohibited'])) { unlink($tmp_filename); continue; }
+        
+			//-- Rename temp file to dest file
+			rename($tmp_filename, $dest_filename);
+			$good++;
+			
+			//-- if image, perform additional processing
+			if($_GET['type']=='image')
+				{
+				//-- Good mime-types
+				$imginfo = getimagesize($dest_filename);
+	   		if($imginfo === false) { unlink($dest_filename); continue; }
+				$mime = $imginfo['mime'];
+
+				// resize image to maximum height and width, if set
+				if($tinybrowser['imageresize']['width'] > 0 || $tinybrowser['imageresize']['height'] > 0)
+					{
+					// assign new width and height values, only if they are less than existing image size
+					$widthnew  = ($tinybrowser['imageresize']['width'] > 0 && $tinybrowser['imageresize']['width'] < $imginfo[0] ? $tinybrowser['imageresize']['width'] : $imginfo[0]);
+					$heightnew = ($tinybrowser['imageresize']['height'] > 0 && $tinybrowser['imageresize']['height'] < $imginfo[1] ? $tinybrowser['imageresize']['height'] :  $imginfo[1]);
+
+					// only resize if width or height values are different
+					if($widthnew != $imginfo[0] || $heightnew != $imginfo[1])
+						{
+						$im = convert_image($dest_filename,$mime);
+						resizeimage($im,$widthnew,$heightnew,$dest_filename,$tinybrowser['imagequality'],$mime);
+						imagedestroy($im);
+						}
+					}
+
+				// generate thumbnail
+				$thumbimg = $folder.'_thumbs/_'.rtrim($file,'_');
+				if (!file_exists($thumbimg))
+					{
+					$im = convert_image($dest_filename,$mime);
+					resizeimage	($im,$tinybrowser['thumbsize'],$tinybrowser['thumbsize'],$thumbimg,$tinybrowser['thumbquality'],$mime);
+					imagedestroy ($im);
+					}
+				}
+
+      	}
+		}
+	closedir($handle);
+	}
+$bad = $total-($good+$dup);
+
+// Check for problem during upload
+if($total>0 && $bad==$total) Header('Location: ./upload.php?type='.$_GET['type'].$passfeid.'&permerror=1&total='.$total);
+else Header('Location: ./upload.php?type='.$_GET['type'].$passfeid.'&folder='.$foldernow.'&badfiles='.$bad.'&goodfiles='.$good.'&dupfiles='.$dup);
+?>
+
+<!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>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<meta http-equiv="Pragma" content="no-cache" />
+		<title>TinyBrowser :: Process Upload</title>
+	</head>
+	<body>
+		<p>Sorry, there was an error processing file uploads.</p>
+	</body>
+</html>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js	2009-06-30 22:01:34.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('visualchars');var TinyMCE_VisualCharsPlugin={getInfo:function(){return{longname:'Visual characters',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){inst.visualChars={state:false}},getControlHTML:function(cn){switch(cn){case"visualchars":return tinyMCE.getButtonHTML(cn,'lang_visualchars_desc','{$pluginurl}/images/visualchars.gif','mceVisualChars',false)}return""},execCommand:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id);switch(command){case"mceVisualChars":this._toggleVisualChars(editor_id,inst);return true}return false},cleanup:function(type,content,inst){if(type=="insert_to_editor_dom"||type=="get_from_editor_dom"){inst.visualChars.state=true;this._toggleVisualChars(inst.editorId,inst)}return content},_toggleVisualChars:function(editor_id,inst){var nl,i,h,d=inst.getDoc(),b=inst.getBody(),nv,s=inst.selection,bo;inst.visualChars.state=!inst.visualChars.state;bo=s.getBookmark(true);tinyMCE.switchClass(editor_id+'_visualchars',inst.visualChars.state?'mceButtonSelected':'mceButtonNormal');if(inst.visualChars.state){nl=tinyMCE.selectNodes(b,function(n){return n.nodeType==3&&n.nodeValue&&n.nodeValue.indexOf('\u00a0')!=-1});for(i=0;i<nl.length;i++){nv=nl[i].nodeValue;nv=nv.replace(/(\u00a0+)/g,'<span class="mceItemHiddenVisualChar">$1</span>');nv=nv.replace(/\u00a0/g,'\u00b7');tinyMCE.setOuterHTML(nl[i],nv,d)}}else{nl=tinyMCE.selectNodes(b,function(n){return n.nodeType==1&&n.nodeName=='SPAN'&&n.className=='mceItemHiddenVisualChar'});for(i=0;i<nl.length;i++)tinyMCE.setOuterHTML(nl[i],nl[i].innerHTML.replace(/(&middot;|\u00b7)/g,'&nbsp;'),d)}}};tinyMCE.addPlugin("visualchars",TinyMCE_VisualCharsPlugin);
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
+(function(){tinymce.create("tinymce.plugins.VisualChars",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceVisualChars",c._toggleVisualChars,c);a.addButton("visualchars",{title:"visualchars.desc",cmd:"mceVisualChars"});a.onBeforeGetContent.add(function(d,e){if(c.state){c.state=true;c._toggleVisualChars()}})},getInfo:function(){return{longname:"Visual characters",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_toggleVisualChars:function(){var m=this,g=m.editor,a,e,f,k=g.getDoc(),l=g.getBody(),j,n=g.selection,c;m.state=!m.state;g.controlManager.setActive("visualchars",m.state);if(m.state){a=[];tinymce.walk(l,function(b){if(b.nodeType==3&&b.nodeValue&&b.nodeValue.indexOf("\u00a0")!=-1){a.push(b)}},"childNodes");for(e=0;e<a.length;e++){j=a[e].nodeValue;j=j.replace(/(\u00a0+)/g,'<span class="mceItemHidden mceVisualNbsp">$1</span>');j=j.replace(/\u00a0/g,"\u00b7");g.dom.setOuterHTML(a[e],j,k)}}else{a=tinymce.grep(g.dom.select("span",l),function(b){return g.dom.hasClass(b,"mceVisualNbsp")});for(e=0;e<a.length;e++){g.dom.setOuterHTML(a[e],a[e].innerHTML.replace(/(&middot;|\u00b7)/g,"&nbsp;"),k)}}}});tinymce.PluginManager.add("visualchars",tinymce.plugins.VisualChars)})();
\ 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/visualchars/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js	2009-06-30 22:01:34.000000000 +0200
@@ -1,89 +1,73 @@
-/**
- * $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('visualchars');
-
-var TinyMCE_VisualCharsPlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Visual characters',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	initInstance : function(inst) {
-		inst.visualChars = {
-			state : false
-		};
-	},
-
-	getControlHTML : function(cn) {
-		switch (cn) {
-			case "visualchars":
-				return tinyMCE.getButtonHTML(cn, 'lang_visualchars_desc', '{$pluginurl}/images/visualchars.gif', 'mceVisualChars', false);
-		}
-
-		return "";
-	},
-
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		var inst = tinyMCE.getInstanceById(editor_id);
-
-		switch (command) {
-			case "mceVisualChars":
-				this._toggleVisualChars(editor_id, inst);
-				return true;
-		}
-
-		return false;
-	},
-
-	cleanup : function(type, content, inst) {
-		if (type == "insert_to_editor_dom" || type == "get_from_editor_dom") {
-			inst.visualChars.state = true;
-			this._toggleVisualChars(inst.editorId, inst);
-		}
-
-		return content;
-	},
-
-	// Private plugin internal methods
-
-	_toggleVisualChars : function(editor_id, inst) {
-		var nl, i, h, d = inst.getDoc(), b = inst.getBody(), nv, s = inst.selection, bo;
-
-		inst.visualChars.state = !inst.visualChars.state;
-
-		bo = s.getBookmark(true);
-
-		tinyMCE.switchClass(editor_id + '_visualchars', inst.visualChars.state ? 'mceButtonSelected' : 'mceButtonNormal');
-
-		if (inst.visualChars.state) {
-			nl = tinyMCE.selectNodes(b, function(n) {return n.nodeType == 3 && n.nodeValue && n.nodeValue.indexOf('\u00a0') != -1;});
-
-			for (i=0; i<nl.length; i++) {
-				nv = nl[i].nodeValue;
-				nv = nv.replace(/(\u00a0+)/g, '<span class="mceItemHiddenVisualChar">$1</span>');
-				nv = nv.replace(/\u00a0/g, '\u00b7');
-				tinyMCE.setOuterHTML(nl[i], nv, d);
-			}
-		} else {
-			nl = tinyMCE.selectNodes(b, function(n) {return n.nodeType == 1 && n.nodeName == 'SPAN' && n.className == 'mceItemHiddenVisualChar';});
-
-			for (i=0; i<nl.length; i++)
-				tinyMCE.setOuterHTML(nl[i], nl[i].innerHTML.replace(/(&middot;|\u00b7)/g, '&nbsp;'), d);
-		}
-
-		//s.moveToBookmark(bo);
-	}
-};
-
-tinyMCE.addPlugin("visualchars", TinyMCE_VisualCharsPlugin);
+/**
+ * $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.VisualChars', {
+		init : function(ed, url) {
+			var t = this;
+
+			t.editor = ed;
+
+			// Register commands
+			ed.addCommand('mceVisualChars', t._toggleVisualChars, t);
+
+			// Register buttons
+			ed.addButton('visualchars', {title : 'visualchars.desc', cmd : 'mceVisualChars'});
+
+			ed.onBeforeGetContent.add(function(ed, o) {
+				if (t.state) {
+					t.state = true;
+					t._toggleVisualChars();
+				}
+			});
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Visual characters',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		},
+
+		// Private methods
+
+		_toggleVisualChars : function() {
+			var t = this, ed = t.editor, nl, i, h, d = ed.getDoc(), b = ed.getBody(), nv, s = ed.selection, bo;
+
+			t.state = !t.state;
+			ed.controlManager.setActive('visualchars', t.state);
+
+			if (t.state) {
+				nl = [];
+				tinymce.walk(b, function(n) {
+					if (n.nodeType == 3 && n.nodeValue && n.nodeValue.indexOf('\u00a0') != -1)
+						nl.push(n);
+				}, 'childNodes');
+
+				for (i=0; i<nl.length; i++) {
+					nv = nl[i].nodeValue;
+					nv = nv.replace(/(\u00a0+)/g, '<span class="mceItemHidden mceVisualNbsp">$1</span>');
+					nv = nv.replace(/\u00a0/g, '\u00b7');
+					ed.dom.setOuterHTML(nl[i], nv, d);
+				}
+			} else {
+				nl = tinymce.grep(ed.dom.select('span', b), function(n) {
+					return ed.dom.hasClass(n, 'mceVisualNbsp');
+				});
+
+				for (i=0; i<nl.length; i++)
+					ed.dom.setOuterHTML(nl[i], nl[i].innerHTML.replace(/(&middot;|\u00b7)/g, '&nbsp;'), d);
+			}
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('visualchars', tinymce.plugins.VisualChars);
+})();
\ 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/xhtmlxtras/abbr.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm	2006-11-07 06:32:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm	2009-06-30 22:01:34.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_xhtmlxtras_title_abbr_element}</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/editable_selects.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/element_common.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/abbr.js"></script>
+	<title>{#xhtmlxtras_dlg.title_abbr_element}</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/element_common.js"></script>
+	<script type="text/javascript" src="js/abbr.js"></script>
 	<link rel="stylesheet" type="text/css" href="css/popup.css" />
-	<base target="_self" />
 </head>
-<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<body style="display: none">
 <form onsubmit="insertAbbr();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_xhtmlxtras_general_tab}</a></span></li>
-			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->
+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
+			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
 		</ul>
 	</div>
 
 	<div class="panel_wrapper">
 		<div id="general_panel" class="panel current">
 			<fieldset>
-				<legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>
+				<legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
 				<table border="0" cellpadding="0" cellspacing="4">
 					<tr>
-						<td class="label"><label id="titlelabel" for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td> 
-						<td><input id="title" name="title" type="text" value="" class="field" /></td> 
+						<td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> 
+						<td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td> 
 					</tr>
 					<tr>
-						<td class="label"><label id="idlabel" for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td> 
+						<td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> 
 						<td><input id="id" name="id" type="text" value="" class="field" /></td> 
 					</tr>
 					<tr>
-						<td class="label"><label id="classlabel" for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td> 
+						<td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> 
 						<td>
 							<select id="class" name="class" class="field mceEditableSelect">
-								<option value="">{$lang_xhtmlxtras_not_set}</option> 
+								<option value="">{#not_set}</option> 
 							</select>
 						</td>
 					</tr>
 					<tr>
-						<td class="label"><label id="stylelabel" for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td> 
+						<td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> 
 						<td><input id="style" name="style" type="text" value="" class="field" /></td> 
 					</tr>
 					<tr>
-						<td class="label"><label id="dirlabel" for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td> 
+						<td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> 
 						<td>
 							<select id="dir" name="dir" class="field"> 
-								<option value="">{$lang_xhtmlxtras_not_set}</option> 
-								<option value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option> 
-								<option value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option> 
+								<option value="">{#not_set}</option> 
+								<option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> 
+								<option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> 
 							</select>
 						</td> 
 					</tr>
 					<tr>
-						<td class="label"><label id="langlabel" for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td> 
+						<td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> 
 						<td>
 							<input id="lang" name="lang" type="text" value="" class="field" />
 						</td> 
@@ -65,7 +65,7 @@
 		</div>
 		<div id="events_panel" class="panel">
 			<fieldset>
-				<legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>
+				<legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
 
 				<table border="0" cellpadding="0" cellspacing="4">
 					<tr>
@@ -133,13 +133,13 @@
 	</div>
 	<div class="mceActionPanel">
 		<div style="float: left">
-			<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertAbbr();" />
+			<input type="submit" id="insert" name="insert" value="{#update}" />
 		</div>
 		<div style="float: left">
-			<input type="button" id="remove" name="remove" value="{$lang_xhtmlxtras_remove}" onclick="removeAbbr();" style="display: none;" />
+			<input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeAbbr();" style="display: none;" />
 		</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>
 
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm	2006-11-07 06:32:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm	2009-06-30 22:01:34.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_xhtmlxtras_title_acronym_element}</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/editable_selects.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/element_common.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/acronym.js"></script>
+	<title>{#xhtmlxtras_dlg.title_acronym_element}</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/element_common.js"></script>
+	<script type="text/javascript" src="js/acronym.js"></script>
 	<link rel="stylesheet" type="text/css" href="css/popup.css" />
-	<base target="_self" />
 </head>
-<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<body style="display: none">
 <form onsubmit="insertAcronym();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_xhtmlxtras_general_tab}</a></span></li>
-			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->
+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
+			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
 		</ul>
 	</div>
 
 	<div class="panel_wrapper">
 		<div id="general_panel" class="panel current">
 			<fieldset>
-				<legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>
+				<legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
 				<table border="0" cellpadding="0" cellspacing="4">
 					<tr>
-						<td class="label"><label id="titlelabel" for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td> 
-						<td><input id="title" name="title" type="text" value="" class="field" /></td> 
+						<td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> 
+						<td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td> 
 					</tr>
 					<tr>
-						<td class="label"><label id="idlabel" for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td> 
+						<td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> 
 						<td><input id="id" name="id" type="text" value="" class="field" /></td> 
 					</tr>
 					<tr>
-						<td class="label"><label id="classlabel" for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td> 
+						<td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> 
 						<td>
 							<select id="class" name="class" class="field mceEditableSelect">
-								<option value="">{$lang_xhtmlxtras_not_set}</option> 
+								<option value="">{#not_set}</option> 
 							</select>
 						</td>
 					</tr>
 					<tr>
-						<td class="label"><label id="stylelabel" for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td> 
+						<td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> 
 						<td><input id="style" name="style" type="text" value="" class="field" /></td> 
 					</tr>
 					<tr>
-						<td class="label"><label id="dirlabel" for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td> 
+						<td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> 
 						<td>
 							<select id="dir" name="dir" class="field"> 
-								<option value="">{$lang_xhtmlxtras_not_set}</option> 
-								<option value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option> 
-								<option value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option> 
+								<option value="">{#not_set}</option> 
+								<option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> 
+								<option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> 
 							</select>
 						</td> 
 					</tr>
 					<tr>
-						<td class="label"><label id="langlabel" for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td> 
+						<td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> 
 						<td>
 							<input id="lang" name="lang" type="text" value="" class="field" />
 						</td> 
@@ -65,7 +65,7 @@
 		</div>
 		<div id="events_panel" class="panel">
 			<fieldset>
-				<legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>
+				<legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
 
 				<table border="0" cellpadding="0" cellspacing="4">
 					<tr>
@@ -133,13 +133,13 @@
 	</div>
 	<div class="mceActionPanel">
 		<div style="float: left">
-			<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertAcronym();" />
+			<input type="submit" id="insert" name="insert" value="{#update}" />
 		</div>
 		<div style="float: left">
-			<input type="button" id="remove" name="remove" value="{$lang_xhtmlxtras_remove}" onclick="removeAcronym();" style="display: none;" />
+			<input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeAcronym();" style="display: none;" />
 		</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>
 
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm	2007-02-23 06:07:06.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm	2009-06-30 22:01:34.000000000 +0200
@@ -1,71 +1,71 @@
+<!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_xhtmlxtras_attribs_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/attributes.js"></script>
+	<title>{#xhtmlxtras_dlg.attribs_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/attributes.js"></script>
 	<link rel="stylesheet" type="text/css" href="css/attributes.css" />
-	<base target="_self" />
 </head>
-<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<body 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_xhtmlxtras_attribute_attrib_tab}</a></span></li>
-			<li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_xhtmlxtras_attribute_events_tab}</a></span></li>
+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.attribute_attrib_tab}</a></span></li>
+			<li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.attribute_events_tab}</a></span></li>
 		</ul>
 	</div>
 
 	<div class="panel_wrapper">
 		<div id="general_panel" class="panel current">
 			<fieldset>
-				<legend>{$lang_xhtmlxtras_attribute_attrib_tab}</legend>
+				<legend>{#xhtmlxtras_dlg.attribute_attrib_tab}</legend>
 				<table border="0" cellpadding="0" cellspacing="4">
 					<tr>
-						<td class="label"><label id="titlelabel" for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td> 
-						<td><input id="title" name="title" type="text" value="" /></td> 
+						<td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> 
+						<td><input id="title" name="title" type="text" value="" class="mceFocus" /></td> 
 					</tr>
 					<tr>
-						<td class="label"><label id="idlabel" for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td> 
+						<td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> 
 						<td><input id="id" name="id" 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" class="mceEditableSelect">
-								<option value="" selected>{$lang_not_set}</option>
+								<option value="" selected="selected">{#not_set}</option>
 							</select>
 						</td>
 					</tr>
 					<tr>
-						<td class="label"><label id="stylelabel" for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td> 
+						<td class="label"><label id="stylelabel" for="style">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> 
 						<td><input id="style" name="style" type="text" value="" /></td> 
 					</tr>
 					<tr>
-						<td class="label"><label id="dirlabel" for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td> 
+						<td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> 
 						<td>
 							<select id="dir" name="dir"> 
-								<option value="">{$lang_xhtmlxtras_not_set}</option> 
-								<option value="ltr">{$lang_xhtmlxtras_option_ltr}</option> 
-								<option value="rtl">{$lang_xhtmlxtras_option_rtl}</option> 
+								<option value="">{#not_set}</option> 
+								<option value="ltr">{#xhtmlxtras_dlg.option_ltr}</option> 
+								<option value="rtl">{#xhtmlxtras_dlg.option_rtl}</option> 
 							</select>
 						</td> 
 					</tr>
 					<tr>
-						<td class="label"><label id="langlabel" for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td> 
+						<td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> 
 						<td>
 							<input id="lang" name="lang" type="text" value="" />
 						</td> 
 					</tr>
 					<tr>
-							<td><label id="tabindexlabel" for="tabindex">{$lang_xhtmlxtras_attribute_label_tabindex}</label></td>
+							<td><label id="tabindexlabel" for="tabindex">{#xhtmlxtras_dlg.attribute_label_tabindex}</label></td>
 							<td><input type="text" id="tabindex" name="tabindex" value="" /></td>
 						</tr>
 
 						<tr>
-							<td><label id="accesskeylabel" for="accesskey">{$lang_xhtmlxtras_attribute_label_accesskey}</label></td>
+							<td><label id="accesskeylabel" for="accesskey">{#xhtmlxtras_dlg.attribute_label_accesskey}</label></td>
 							<td><input type="text" id="accesskey" name="accesskey" value="" /></td>
 						</tr>
 				</table>
@@ -73,7 +73,7 @@
 		</div>
 		<div id="events_panel" class="panel">
 			<fieldset>
-				<legend>{$lang_xhtmlxtras_attribute_events_tab}</legend>
+				<legend>{#xhtmlxtras_dlg.attribute_events_tab}</legend>
 
 				<table border="0" cellpadding="0" cellspacing="4">
 					<tr>
@@ -141,10 +141,10 @@
 	</div>
 	<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>
 
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm	2006-11-07 06:32:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm	2009-06-30 22:01:34.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_xhtmlxtras_title_cite_element}</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/editable_selects.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/element_common.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/cite.js"></script>
+	<title>{#xhtmlxtras_dlg.title_cite_element}</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/element_common.js"></script>
+	<script type="text/javascript" src="js/cite.js"></script>
 	<link rel="stylesheet" type="text/css" href="css/popup.css" />
-	<base target="_self" />
 </head>
-<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<body style="display: none">
 <form onsubmit="insertCite();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_xhtmlxtras_general_tab}</a></span></li>
-			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->
+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
+			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
 		</ul>
 	</div>
 
 	<div class="panel_wrapper">
 		<div id="general_panel" class="panel current">
 			<fieldset>
-				<legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>
+				<legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
 				<table border="0" cellpadding="0" cellspacing="4">
 					<tr>
-						<td class="label"><label id="titlelabel" for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td> 
-						<td><input id="title" name="title" type="text" value="" class="field" /></td> 
+						<td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> 
+						<td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td> 
 					</tr>
 					<tr>
-						<td class="label"><label id="idlabel" for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td> 
+						<td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> 
 						<td><input id="id" name="id" type="text" value="" class="field" /></td> 
 					</tr>
 					<tr>
-						<td class="label"><label id="classlabel" for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td> 
+						<td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> 
 						<td>
 							<select id="class" name="class" class="field mceEditableSelect">
-								<option value="">{$lang_xhtmlxtras_not_set}</option> 
+								<option value="">{#not_set}</option> 
 							</select>
 						</td>
 					</tr>
 					<tr>
-						<td class="label"><label id="stylelabel" for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td> 
+						<td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> 
 						<td><input id="style" name="style" type="text" value="" class="field" /></td> 
 					</tr>
 					<tr>
-						<td class="label"><label id="dirlabel" for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td> 
+						<td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> 
 						<td>
 							<select id="dir" name="dir" class="field"> 
-								<option value="">{$lang_xhtmlxtras_not_set}</option> 
-								<option value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option> 
-								<option value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option> 
+								<option value="">{#not_set}</option> 
+								<option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> 
+								<option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> 
 							</select>
 						</td> 
 					</tr>
 					<tr>
-						<td class="label"><label id="langlabel" for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td> 
+						<td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> 
 						<td>
 							<input id="lang" name="lang" type="text" value="" class="field" />
 						</td> 
@@ -65,7 +65,7 @@
 		</div>
 		<div id="events_panel" class="panel">
 			<fieldset>
-				<legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>
+				<legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
 
 				<table border="0" cellpadding="0" cellspacing="4">
 					<tr>
@@ -133,13 +133,13 @@
 	</div>
 	<div class="mceActionPanel">
 		<div style="float: left">
-			<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertCite();" />
+			<input type="submit" id="insert" name="insert" value="{#update}" />
 		</div>
 		<div style="float: left">
-			<input type="button" id="remove" name="remove" value="{$lang_xhtmlxtras_remove}" onclick="removeCite();" style="display: none;" />
+			<input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeCite();" style="display: none;" />
 		</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>
 
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css	2009-06-30 22:01:34.000000000 +0200
@@ -1,11 +1,11 @@
-.panel_wrapper div.current {
-	height: 290px;
-}
-
-#id, #style, #title, #dir, #hreflang, #lang, #classlist, #tabindex, #accesskey {
-	width: 200px;
-}
-
-#events_panel input {
-	width: 200px;
-}
+.panel_wrapper div.current {
+	height: 290px;
+}
+
+#id, #style, #title, #dir, #hreflang, #lang, #classlist, #tabindex, #accesskey {
+	width: 200px;
+}
+
+#events_panel input {
+	width: 200px;
+}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css	2009-06-30 22:01:34.000000000 +0200
@@ -1,46 +1,9 @@
-a.mceButtonNormal img, a.mceButtonSelected img {border: 1px solid #F0F0EE !important;}
-a.mceButtonNormal img:hover, a.mceButtonSelected img:hover {border: 1px solid #0A246A !important;  cursor: default;  background-color: #B6BDD2;}
-
-img {
-	border: 0;
-}
-
-input.field, select.field {
-	width: 200px;
-}
-
-input.picker {
-	width: 179px;
-	margin-left: 5px;
-}
-
-input.disabled {
-	border-color: #F2F2F2;
-}
-
-img.picker {
-	vertical-align: text-bottom;
-	cursor: pointer;
-}
-
-h1 {
-	padding: 0 0 5px 0;
-}
-
-#remove {
-	font-weight: bold;
-	width: 90px;
-	height: 21px;
-	border: 0px;
-	background-image: url('../images/remove_button_bg.gif');
-	cursor: pointer;
-	margin-left: 3px;
-}
-
-.panel_wrapper div.current {
-	height: 160px;
-}
-
-#xhtmlxtrasdel .panel_wrapper div.current, #xhtmlxtrasins .panel_wrapper div.current {
-	height: 220px;
-}
+input.field, select.field {width:200px;}
+input.picker {width:179px; margin-left: 5px;}
+input.disabled {border-color:#F2F2F2;}
+img.picker {vertical-align:text-bottom; cursor:pointer;}
+h1 {padding: 0 0 5px 0;}
+.panel_wrapper div.current {height:160px;}
+#xhtmlxtrasdel .panel_wrapper div.current, #xhtmlxtrasins .panel_wrapper div.current {height: 230px;}
+a.browse span {display:block; width:20px; height:20px; background:url('../../../themes/advanced/img/icons.gif') -140px -20px;}
+#datetime {width:180px;}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm	2006-11-07 06:32:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm	2009-06-30 22:01:34.000000000 +0200
@@ -1,81 +1,81 @@
+<!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_xhtmlxtras_title_del_element}</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/editable_selects.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/element_common.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/del.js"></script>
+	<title>{#xhtmlxtras_dlg.title_del_element}</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/element_common.js"></script>
+	<script type="text/javascript" src="js/del.js"></script>
 	<link rel="stylesheet" type="text/css" href="css/popup.css" />
-	<base target="_self" />
 </head>
-<body id="xhtmlxtrasins" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<body id="xhtmlxtrasins" style="display: none">
 <form onsubmit="insertDel();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_xhtmlxtras_general_tab}</a></span></li>
-			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->
+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
+			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
 		</ul>
 	</div>
 
 	<div class="panel_wrapper">
 		<div id="general_panel" class="panel current">
 			<fieldset>
-				<legend>{$lang_xhtmlxtras_fieldset_general_tab}</legend>
+				<legend>{#xhtmlxtras_dlg.fieldset_general_tab}</legend>
 				<table border="0" cellpadding="0" cellspacing="4">
 					<tr>
-						<td class="label"><label id="datetimelabel" for="datetime">{$lang_xhtmlxtras_attribute_label_datetime}</label>:</td>
+						<td class="label"><label id="datetimelabel" for="datetime">{#xhtmlxtras_dlg.attribute_label_datetime}</label>:</td>
 						<td>
 							<table border="0" cellspacing="0" cellpadding="0">
 								<tr> 
-									<td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field" /></td> 
-									<td><a href="javascript:insertDateTime('datetime');" class="mceButtonNormal"><img src="images/date_time.gif" class="picker" alt="{$lang_xhtmlxtras_insert_date}" title="{$lang_xhtmlxtras_insert_date}" /></a></td>
+									<td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field mceFocus" /></td> 
+									<td><a href="javascript:insertDateTime('datetime');" onmousedown="return false;" class="browse"><span class="datetime" title="{#xhtmlxtras_dlg.insert_date}"></span></a></td>
 								</tr>
 							</table>
 						</td>
 					</tr>
 					<tr>
-						<td class="label"><label id="citelabel" for="cite">{$lang_xhtmlxtras_attribute_label_cite}</label>:</td>
+						<td class="label"><label id="citelabel" for="cite">{#xhtmlxtras_dlg.attribute_label_cite}</label>:</td>
 						<td><input id="cite" name="cite" type="text" value="" class="field" /></td> 
 					</tr>
 				</table>
 			</fieldset>
 			<fieldset>
-				<legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>
+				<legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
 				<table border="0" cellpadding="0" cellspacing="4">
 					<tr>
-						<td class="label"><label id="titlelabel" for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td> 
+						<td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> 
 						<td><input id="title" name="title" type="text" value="" class="field" /></td> 
 					</tr>
 					<tr>
-						<td class="label"><label id="idlabel" for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td> 
+						<td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> 
 						<td><input id="id" name="id" type="text" value="" class="field" /></td> 
 					</tr>
 					<tr>
-						<td class="label"><label id="classlabel" for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td> 
+						<td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> 
 						<td>
 							<select id="class" name="class" class="field mceEditableSelect">
-								<option value="">{$lang_xhtmlxtras_not_set}</option> 
+								<option value="">{#not_set}</option> 
 							</select>
 						</td>
 					</tr>
 					<tr>
-						<td class="label"><label id="stylelabel" for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td> 
+						<td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> 
 						<td><input id="style" name="style" type="text" value="" class="field" /></td> 
 					</tr>
 					<tr>
-						<td class="label"><label id="dirlabel" for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td> 
+						<td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> 
 						<td>
 							<select id="dir" name="dir" class="field"> 
-								<option value="">{$lang_xhtmlxtras_not_set}</option> 
-								<option value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option> 
-								<option value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option> 
+								<option value="">{#not_set}</option> 
+								<option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> 
+								<option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> 
 							</select>
 						</td> 
 					</tr>
 					<tr>
-						<td class="label"><label id="langlabel" for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td> 
+						<td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> 
 						<td>
 							<input id="lang" name="lang" type="text" value="" class="field" />
 						</td> 
@@ -85,7 +85,7 @@
 		</div>
 		<div id="events_panel" class="panel">
 			<fieldset>
-				<legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>
+				<legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
 
 				<table border="0" cellpadding="0" cellspacing="4">
 					<tr>
@@ -153,13 +153,13 @@
 	</div>
 	<div class="mceActionPanel">
 		<div style="float: left">
-			<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertDel();" />
+			<input type="submit" id="insert" name="insert" value="{#update}" />
 		</div>
 		<div style="float: left">
-			<input type="button" id="remove" name="remove" value="{$lang_xhtmlxtras_remove}" onclick="removeDel();" style="display: none;" />
+			<input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeDel();" style="display: none;" />
 		</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>
 
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js	2009-06-30 22:01:34.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('xhtmlxtras');var TinyMCE_XHTMLXtrasPlugin={getInfo:function(){return{longname:'XHTML Xtras Plugin',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/plugins/xhtmlxtras/css/xhtmlxtras.css")},getControlHTML:function(cn){switch(cn){case"cite":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_cite_desc','{$pluginurl}/images/cite.gif','mceCite',true);case"acronym":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_acronym_desc','{$pluginurl}/images/acronym.gif','mceAcronym',true);case"abbr":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_abbr_desc','{$pluginurl}/images/abbr.gif','mceAbbr',true);case"del":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_del_desc','{$pluginurl}/images/del.gif','mceDel',true);case"ins":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_ins_desc','{$pluginurl}/images/ins.gif','mceIns',true);case"attribs":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_attribs_desc','{$pluginurl}/images/attribs.gif','mceAttributes',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){var template,inst,elm;switch(command){case"mceCite":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/cite.htm';template['width']=350;template['height']=250;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceAcronym":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/acronym.htm';template['width']=350;template['height']=250;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceAbbr":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/abbr.htm';template['width']=350;template['height']=250;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceIns":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/ins.htm';template['width']=350;template['height']=310;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceDel":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/del.htm';template['width']=350;template['height']=310;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceAttributes":inst=tinyMCE.getInstanceById(editor_id);elm=inst.getFocusElement();if(elm&&elm.nodeName!=='BODY'&&elm.className.indexOf('mceItem')==-1){tinyMCE.openWindow({file:'../../plugins/xhtmlxtras/attributes.htm',width:380,height:370},{editor_id:editor_id})}return true}return false},cleanup:function(type,content,inst){if(type=='insert_to_editor'&&tinyMCE.isIE&&!tinyMCE.isOpera){content=content.replace(/<abbr([^>]+)>/gi,'<html:ABBR $1>');content=content.replace(/<\/abbr>/gi,'</html:ABBR>')}return content},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var elm=tinyMCE.getParentElement(node);if(node==null)return;tinyMCE.switchClass(editor_id+'_attribs','mceButtonDisabled');if(!any_selection){tinyMCE.switchClass(editor_id+'_cite','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_acronym','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_abbr','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_del','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_ins','mceButtonDisabled')}else{tinyMCE.switchClass(editor_id+'_cite','mceButtonNormal');tinyMCE.switchClass(editor_id+'_acronym','mceButtonNormal');tinyMCE.switchClass(editor_id+'_abbr','mceButtonNormal');tinyMCE.switchClass(editor_id+'_del','mceButtonNormal');tinyMCE.switchClass(editor_id+'_ins','mceButtonNormal')}if(elm&&elm.nodeName!='BODY'&&elm.className.indexOf('mceItem')==-1)tinyMCE.switchClass(editor_id+'_attribs','mceButtonNormal');switch(node.nodeName){case"CITE":tinyMCE.switchClass(editor_id+'_cite','mceButtonSelected');return true;case"ACRONYM":tinyMCE.switchClass(editor_id+'_acronym','mceButtonSelected');return true;case"abbr":case"HTML:ABBR":case"ABBR":tinyMCE.switchClass(editor_id+'_abbr','mceButtonSelected');return true;case"DEL":tinyMCE.switchClass(editor_id+'_del','mceButtonSelected');return true;case"INS":tinyMCE.switchClass(editor_id+'_ins','mceButtonSelected');return true}return true},_anySel:function(editor_id){var inst=tinyMCE.getInstanceById(editor_id),t=inst.selection.getSelectedText(),pe;pe=tinyMCE.getParentElement(inst.getFocusElement(),'CITE,ACRONYM,ABBR,HTML:ABBR,DEL,INS');return pe||inst.getFocusElement().nodeName=="IMG"||(t&&t.length>0)}};tinyMCE.addPlugin("xhtmlxtras",TinyMCE_XHTMLXtrasPlugin);
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
+(function(){tinymce.create("tinymce.plugins.XHTMLXtrasPlugin",{init:function(b,c){b.addCommand("mceCite",function(){b.windowManager.open({file:c+"/cite.htm",width:350+parseInt(b.getLang("xhtmlxtras.cite_delta_width",0)),height:250+parseInt(b.getLang("xhtmlxtras.cite_delta_height",0)),inline:1},{plugin_url:c})});b.addCommand("mceAcronym",function(){b.windowManager.open({file:c+"/acronym.htm",width:350+parseInt(b.getLang("xhtmlxtras.acronym_delta_width",0)),height:250+parseInt(b.getLang("xhtmlxtras.acronym_delta_width",0)),inline:1},{plugin_url:c})});b.addCommand("mceAbbr",function(){b.windowManager.open({file:c+"/abbr.htm",width:350+parseInt(b.getLang("xhtmlxtras.abbr_delta_width",0)),height:250+parseInt(b.getLang("xhtmlxtras.abbr_delta_width",0)),inline:1},{plugin_url:c})});b.addCommand("mceDel",function(){b.windowManager.open({file:c+"/del.htm",width:340+parseInt(b.getLang("xhtmlxtras.del_delta_width",0)),height:310+parseInt(b.getLang("xhtmlxtras.del_delta_width",0)),inline:1},{plugin_url:c})});b.addCommand("mceIns",function(){b.windowManager.open({file:c+"/ins.htm",width:340+parseInt(b.getLang("xhtmlxtras.ins_delta_width",0)),height:310+parseInt(b.getLang("xhtmlxtras.ins_delta_width",0)),inline:1},{plugin_url:c})});b.addCommand("mceAttributes",function(){b.windowManager.open({file:c+"/attributes.htm",width:380,height:370,inline:1},{plugin_url:c})});b.addButton("cite",{title:"xhtmlxtras.cite_desc",cmd:"mceCite"});b.addButton("acronym",{title:"xhtmlxtras.acronym_desc",cmd:"mceAcronym"});b.addButton("abbr",{title:"xhtmlxtras.abbr_desc",cmd:"mceAbbr"});b.addButton("del",{title:"xhtmlxtras.del_desc",cmd:"mceDel"});b.addButton("ins",{title:"xhtmlxtras.ins_desc",cmd:"mceIns"});b.addButton("attribs",{title:"xhtmlxtras.attribs_desc",cmd:"mceAttributes"});if(tinymce.isIE){function a(d,e){if(e.set){e.content=e.content.replace(/<abbr([^>]+)>/gi,"<html:abbr $1>");e.content=e.content.replace(/<\/abbr>/gi,"</html:abbr>")}}b.onBeforeSetContent.add(a);b.onPostProcess.add(a)}b.onNodeChange.add(function(e,d,g,f){g=e.dom.getParent(g,"CITE,ACRONYM,ABBR,DEL,INS");d.setDisabled("cite",f);d.setDisabled("acronym",f);d.setDisabled("abbr",f);d.setDisabled("del",f);d.setDisabled("ins",f);d.setDisabled("attribs",g&&g.nodeName=="BODY");d.setActive("cite",0);d.setActive("acronym",0);d.setActive("abbr",0);d.setActive("del",0);d.setActive("ins",0);if(g){do{d.setDisabled(g.nodeName.toLowerCase(),0);d.setActive(g.nodeName.toLowerCase(),1)}while(g=g.parentNode)}})},getInfo:function(){return{longname:"XHTML Xtras Plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("xhtmlxtras",tinymce.plugins.XHTMLXtrasPlugin)})();
\ 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/xhtmlxtras/editor_plugin_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js	2009-06-30 22:01:34.000000000 +0200
@@ -1,199 +1,136 @@
- /**
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
- *
- * @author Moxiecode - based on work by Andrew Tetlaw
- * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('xhtmlxtras');
-
-var TinyMCE_XHTMLXtrasPlugin = {
-	getInfo : function() {
-		return {
-			longname : 'XHTML Xtras Plugin',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	initInstance : function(inst) {
-		tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/xhtmlxtras/css/xhtmlxtras.css");
-	},
-
-	getControlHTML : function(cn) {
-		switch (cn) {
-			case "cite":
-				return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_cite_desc', '{$pluginurl}/images/cite.gif', 'mceCite', true);
-
-			case "acronym":
-				return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_acronym_desc', '{$pluginurl}/images/acronym.gif', 'mceAcronym', true);
-
-			case "abbr":
-				return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_abbr_desc', '{$pluginurl}/images/abbr.gif', 'mceAbbr', true);
-
-			case "del":
-				return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_del_desc', '{$pluginurl}/images/del.gif', 'mceDel', true);
-
-			case "ins":
-				return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_ins_desc', '{$pluginurl}/images/ins.gif', 'mceIns', true);
-
-			case "attribs":
-				return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_attribs_desc', '{$pluginurl}/images/attribs.gif', 'mceAttributes', true);
-		}
-
-		return "";
-	},
-
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		var template, inst, elm;
-
-		switch (command) {
-			case "mceCite":
-				if (!this._anySel(editor_id))
-					return true;
-
-				template = new Array();
-				template['file'] = '../../plugins/xhtmlxtras/cite.htm';
-				template['width'] = 350;
-				template['height'] = 250;
-				tinyMCE.openWindow(template, {editor_id : editor_id});
-				return true;
-
-			case "mceAcronym":
-				if (!this._anySel(editor_id))
-					return true;
-
-				template = new Array();
-				template['file'] = '../../plugins/xhtmlxtras/acronym.htm';
-				template['width'] = 350;
-				template['height'] = 250;
-				tinyMCE.openWindow(template, {editor_id : editor_id});
-				return true;
-
-			case "mceAbbr":
-				if (!this._anySel(editor_id))
-					return true;
-
-				template = new Array();
-				template['file'] = '../../plugins/xhtmlxtras/abbr.htm';
-				template['width'] = 350;
-				template['height'] = 250;
-				tinyMCE.openWindow(template, {editor_id : editor_id});
-				return true;
-
-			case "mceIns":
-				if (!this._anySel(editor_id))
-					return true;
-
-				template = new Array();
-				template['file'] = '../../plugins/xhtmlxtras/ins.htm';
-				template['width'] = 350;
-				template['height'] = 310;
-				tinyMCE.openWindow(template, {editor_id : editor_id});
-				return true;
-
-			case "mceDel":
-				if (!this._anySel(editor_id))
-					return true;
-
-				template = new Array();
-				template['file'] = '../../plugins/xhtmlxtras/del.htm';
-				template['width'] = 350;
-				template['height'] = 310;
-				tinyMCE.openWindow(template, {editor_id : editor_id});
-				return true;
-
-			case "mceAttributes":
-				inst = tinyMCE.getInstanceById(editor_id);
-				elm = inst.getFocusElement();
-
-				if (elm && elm.nodeName !== 'BODY' && elm.className.indexOf('mceItem') == -1) {
-					tinyMCE.openWindow({
-						file : '../../plugins/xhtmlxtras/attributes.htm',
-						width : 380,
-						height : 370
-					}, {editor_id : editor_id});
-				}
-
-				return true;
-		}
-
-		return false;
-	},
-
-	cleanup : function(type, content, inst) {
-		if (type == 'insert_to_editor' && tinyMCE.isIE && !tinyMCE.isOpera) {
-			content = content.replace(/<abbr([^>]+)>/gi, '<html:ABBR $1>');
-			content = content.replace(/<\/abbr>/gi, '</html:ABBR>');
-		}
-
-		return content;
-	},
-
-	handleNodeChange : function(editor_id, node, undo_index,undo_levels, visual_aid, any_selection) {
-		var elm = tinyMCE.getParentElement(node);
-
-		if (node == null)
-			return;
-
-		tinyMCE.switchClass(editor_id + '_attribs', 'mceButtonDisabled');
-
-		if (!any_selection) {
-			// Disable the buttons
-			tinyMCE.switchClass(editor_id + '_cite', 'mceButtonDisabled');
-			tinyMCE.switchClass(editor_id + '_acronym', 'mceButtonDisabled');
-			tinyMCE.switchClass(editor_id + '_abbr', 'mceButtonDisabled');
-			tinyMCE.switchClass(editor_id + '_del', 'mceButtonDisabled');
-			tinyMCE.switchClass(editor_id + '_ins', 'mceButtonDisabled');
-		} else {
-			// A selection means the buttons should be active.
-			tinyMCE.switchClass(editor_id + '_cite', 'mceButtonNormal');
-			tinyMCE.switchClass(editor_id + '_acronym', 'mceButtonNormal');
-			tinyMCE.switchClass(editor_id + '_abbr', 'mceButtonNormal');
-			tinyMCE.switchClass(editor_id + '_del', 'mceButtonNormal');
-			tinyMCE.switchClass(editor_id + '_ins', 'mceButtonNormal');
-		}
-
-		if (elm && elm.nodeName != 'BODY' && elm.className.indexOf('mceItem') == -1)
-			tinyMCE.switchClass(editor_id + '_attribs', 'mceButtonNormal');
-
-		switch (node.nodeName) {
-			case "CITE":
-				tinyMCE.switchClass(editor_id + '_cite', 'mceButtonSelected');
-				return true;
-
-			case "ACRONYM":
-				tinyMCE.switchClass(editor_id + '_acronym', 'mceButtonSelected');
-				return true;
-
-			case "abbr": // IE
-			case "HTML:ABBR": // FF
-			case "ABBR":
-				tinyMCE.switchClass(editor_id + '_abbr', 'mceButtonSelected');
-				return true;
-
-			case "DEL":
-				tinyMCE.switchClass(editor_id + '_del', 'mceButtonSelected');
-				return true;
-
-			case "INS":
-				tinyMCE.switchClass(editor_id + '_ins', 'mceButtonSelected');
-				return true;
-		}
-
-		return true;
-	},
-
-	_anySel : function(editor_id) {
-		var inst = tinyMCE.getInstanceById(editor_id), t = inst.selection.getSelectedText(), pe;
-
-		pe = tinyMCE.getParentElement(inst.getFocusElement(), 'CITE,ACRONYM,ABBR,HTML:ABBR,DEL,INS');
-
-		return pe || inst.getFocusElement().nodeName == "IMG" || (t && t.length > 0);
-	}
-};
-
-tinyMCE.addPlugin("xhtmlxtras", TinyMCE_XHTMLXtrasPlugin);
+/**
+ * $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.XHTMLXtrasPlugin', {
+		init : function(ed, url) {
+			// Register commands
+			ed.addCommand('mceCite', function() {
+				ed.windowManager.open({
+					file : url + '/cite.htm',
+					width : 350 + parseInt(ed.getLang('xhtmlxtras.cite_delta_width', 0)),
+					height : 250 + parseInt(ed.getLang('xhtmlxtras.cite_delta_height', 0)),
+					inline : 1
+				}, {
+					plugin_url : url
+				});
+			});
+
+			ed.addCommand('mceAcronym', function() {
+				ed.windowManager.open({
+					file : url + '/acronym.htm',
+					width : 350 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)),
+					height : 250 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)),
+					inline : 1
+				}, {
+					plugin_url : url
+				});
+			});
+
+			ed.addCommand('mceAbbr', function() {
+				ed.windowManager.open({
+					file : url + '/abbr.htm',
+					width : 350 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)),
+					height : 250 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)),
+					inline : 1
+				}, {
+					plugin_url : url
+				});
+			});
+
+			ed.addCommand('mceDel', function() {
+				ed.windowManager.open({
+					file : url + '/del.htm',
+					width : 340 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)),
+					height : 310 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)),
+					inline : 1
+				}, {
+					plugin_url : url
+				});
+			});
+
+			ed.addCommand('mceIns', function() {
+				ed.windowManager.open({
+					file : url + '/ins.htm',
+					width : 340 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)),
+					height : 310 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)),
+					inline : 1
+				}, {
+					plugin_url : url
+				});
+			});
+
+			ed.addCommand('mceAttributes', function() {
+				ed.windowManager.open({
+					file : url + '/attributes.htm',
+					width : 380,
+					height : 370,
+					inline : 1
+				}, {
+					plugin_url : url
+				});
+			});
+
+			// Register buttons
+			ed.addButton('cite', {title : 'xhtmlxtras.cite_desc', cmd : 'mceCite'});
+			ed.addButton('acronym', {title : 'xhtmlxtras.acronym_desc', cmd : 'mceAcronym'});
+			ed.addButton('abbr', {title : 'xhtmlxtras.abbr_desc', cmd : 'mceAbbr'});
+			ed.addButton('del', {title : 'xhtmlxtras.del_desc', cmd : 'mceDel'});
+			ed.addButton('ins', {title : 'xhtmlxtras.ins_desc', cmd : 'mceIns'});
+			ed.addButton('attribs', {title : 'xhtmlxtras.attribs_desc', cmd : 'mceAttributes'});
+
+			if (tinymce.isIE) {
+				function fix(ed, o) {
+					if (o.set) {
+						o.content = o.content.replace(/<abbr([^>]+)>/gi, '<html:abbr $1>');
+						o.content = o.content.replace(/<\/abbr>/gi, '</html:abbr>');
+					}
+				};
+
+				ed.onBeforeSetContent.add(fix);
+				ed.onPostProcess.add(fix);
+			}
+
+			ed.onNodeChange.add(function(ed, cm, n, co) {
+				n = ed.dom.getParent(n, 'CITE,ACRONYM,ABBR,DEL,INS');
+
+				cm.setDisabled('cite', co);
+				cm.setDisabled('acronym', co);
+				cm.setDisabled('abbr', co);
+				cm.setDisabled('del', co);
+				cm.setDisabled('ins', co);
+				cm.setDisabled('attribs', n && n.nodeName == 'BODY');
+				cm.setActive('cite', 0);
+				cm.setActive('acronym', 0);
+				cm.setActive('abbr', 0);
+				cm.setActive('del', 0);
+				cm.setActive('ins', 0);
+
+				// Activate all
+				if (n) {
+					do {
+						cm.setDisabled(n.nodeName.toLowerCase(), 0);
+						cm.setActive(n.nodeName.toLowerCase(), 1);
+					} while (n = n.parentNode);
+				}
+			});
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'XHTML Xtras Plugin',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('xhtmlxtras', tinymce.plugins.XHTMLXtrasPlugin);
+})();
\ 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/xhtmlxtras/ins.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm	2006-11-07 06:32:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm	2009-06-30 22:01:34.000000000 +0200
@@ -1,81 +1,81 @@
+<!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_xhtmlxtras_title_ins_element}</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/editable_selects.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/element_common.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/ins.js"></script>
+	<title>{#xhtmlxtras_dlg.title_ins_element}</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/element_common.js"></script>
+	<script type="text/javascript" src="js/ins.js"></script>
 	<link rel="stylesheet" type="text/css" href="css/popup.css" />
-	<base target="_self" />
 </head>
-<body id="xhtmlxtrasins" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<body id="xhtmlxtrasins" style="display: none">
 <form onsubmit="insertIns();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_xhtmlxtras_general_tab}</a></span></li>
-			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->
+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
+			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
 		</ul>
 	</div>
 
 	<div class="panel_wrapper">
 		<div id="general_panel" class="panel current">
 			<fieldset>
-				<legend>{$lang_xhtmlxtras_fieldset_general_tab}</legend>
+				<legend>{#xhtmlxtras_dlg.fieldset_general_tab}</legend>
 				<table border="0" cellpadding="0" cellspacing="4">
 					<tr>
-						<td class="label"><label id="datetimelabel" for="datetime">{$lang_xhtmlxtras_attribute_label_datetime}</label>:</td> 
+						<td class="label"><label id="datetimelabel" for="datetime">{#xhtmlxtras_dlg.attribute_label_datetime}</label>:</td> 
 						<td>
 							<table border="0" cellspacing="0" cellpadding="0">
 								<tr> 
-									<td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field" /></td> 
-									<td><a href="javascript:insertDateTime('datetime');" class="mceButtonNormal"><img src="images/date_time.gif" class="picker" alt="{$lang_xhtmlxtras_insert_date}" title="{$lang_xhtmlxtras_insert_date}" /></a></td>
+									<td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field mceFocus" /></td> 
+									<td><a href="javascript:insertDateTime('datetime');" onmousedown="return false;" class="browse"><span class="datetime" title="{#xhtmlxtras_dlg.insert_date}"></span></a></td>
 								</tr>
 							</table>
 						</td>
 					</tr>
 					<tr>
-						<td class="label"><label id="citelabel" for="cite">{$lang_xhtmlxtras_attribute_label_cite}</label>:</td> 
+						<td class="label"><label id="citelabel" for="cite">{#xhtmlxtras_dlg.attribute_label_cite}</label>:</td> 
 						<td><input id="cite" name="cite" type="text" value="" class="field" /></td> 
 					</tr>
 				</table>
 			</fieldset>
 			<fieldset>
-				<legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>
+				<legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
 				<table border="0" cellpadding="0" cellspacing="4">
 					<tr>
-						<td class="label"><label id="titlelabel" for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td> 
+						<td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> 
 						<td><input id="title" name="title" type="text" value="" class="field" /></td> 
 					</tr>
 					<tr>
-						<td class="label"><label id="idlabel" for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td> 
+						<td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> 
 						<td><input id="id" name="id" type="text" value="" class="field" /></td> 
 					</tr>
 					<tr>
-						<td class="label"><label id="classlabel" for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td> 
+						<td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> 
 						<td>
 							<select id="class" name="class" class="field mceEditableSelect">
-								<option value="">{$lang_xhtmlxtras_not_set}</option> 
+								<option value="">{#not_set}</option> 
 							</select>
 						</td>
 					</tr>
 					<tr>
-						<td class="label"><label id="stylelabel" for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td> 
+						<td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> 
 						<td><input id="style" name="style" type="text" value="" class="field" /></td> 
 					</tr>
 					<tr>
-						<td class="label"><label id="dirlabel" for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td> 
+						<td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> 
 						<td>
 							<select id="dir" name="dir" class="field"> 
-								<option value="">{$lang_xhtmlxtras_not_set}</option> 
-								<option value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option> 
-								<option value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option> 
+								<option value="">{#not_set}</option> 
+								<option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> 
+								<option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> 
 							</select>
 						</td> 
 					</tr>
 					<tr>
-						<td class="label"><label id="langlabel" for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td> 
+						<td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> 
 						<td>
 							<input id="lang" name="lang" type="text" value="" class="field" />
 						</td> 
@@ -85,7 +85,7 @@
 		</div>
 		<div id="events_panel" class="panel">
 			<fieldset>
-				<legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>
+				<legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
 
 				<table border="0" cellpadding="0" cellspacing="4">
 					<tr>
@@ -153,13 +153,13 @@
 	</div>
 	<div class="mceActionPanel">
 		<div style="float: left">
-			<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertIns();" />
+			<input type="submit" id="insert" name="insert" value="{#update}" />
 		</div>
 		<div style="float: left">
-			<input type="button" id="remove" name="remove" value="{$lang_xhtmlxtras_remove}" onclick="removeIns();" style="display: none;" />
+			<input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeIns();" style="display: none;" />
 		</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>
 
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,25 @@
+ /**
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
+ *
+ * @author Moxiecode - based on work by Andrew Tetlaw
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+function init() {
+	SXE.initElementDialog('abbr');
+	if (SXE.currentAction == "update") {
+		SXE.showRemoveButton();
+	}
+}
+
+function insertAbbr() {
+	SXE.insertElement(tinymce.isIE ? 'html:abbr' : 'abbr');
+	tinyMCEPopup.close();
+}
+
+function removeAbbr() {
+	SXE.removeElement('abbr');
+	tinyMCEPopup.close();
+}
+
+tinyMCEPopup.onInit.add(init);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,25 @@
+ /**
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
+ *
+ * @author Moxiecode - based on work by Andrew Tetlaw
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+function init() {
+	SXE.initElementDialog('acronym');
+	if (SXE.currentAction == "update") {
+		SXE.showRemoveButton();
+	}
+}
+
+function insertAcronym() {
+	SXE.insertElement('acronym');
+	tinyMCEPopup.close();
+}
+
+function removeAcronym() {
+	SXE.removeElement('acronym');
+	tinyMCEPopup.close();
+}
+
+tinyMCEPopup.onInit.add(init);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,123 @@
+ /**
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
+ *
+ * @author Moxiecode - based on work by Andrew Tetlaw
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+function init() {
+	tinyMCEPopup.resizeToInnerSize();
+	var inst = tinyMCEPopup.editor;
+	var dom = inst.dom;
+	var elm = inst.selection.getNode();
+	var f = document.forms[0];
+	var onclick = dom.getAttrib(elm, 'onclick');
+
+	setFormValue('title', dom.getAttrib(elm, 'title'));
+	setFormValue('id', dom.getAttrib(elm, 'id'));
+	setFormValue('style', dom.getAttrib(elm, "style"));
+	setFormValue('dir', dom.getAttrib(elm, 'dir'));
+	setFormValue('lang', dom.getAttrib(elm, 'lang'));
+	setFormValue('tabindex', dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));
+	setFormValue('accesskey', dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));
+	setFormValue('onfocus', dom.getAttrib(elm, 'onfocus'));
+	setFormValue('onblur', dom.getAttrib(elm, 'onblur'));
+	setFormValue('onclick', onclick);
+	setFormValue('ondblclick', dom.getAttrib(elm, 'ondblclick'));
+	setFormValue('onmousedown', dom.getAttrib(elm, 'onmousedown'));
+	setFormValue('onmouseup', dom.getAttrib(elm, 'onmouseup'));
+	setFormValue('onmouseover', dom.getAttrib(elm, 'onmouseover'));
+	setFormValue('onmousemove', dom.getAttrib(elm, 'onmousemove'));
+	setFormValue('onmouseout', dom.getAttrib(elm, 'onmouseout'));
+	setFormValue('onkeypress', dom.getAttrib(elm, 'onkeypress'));
+	setFormValue('onkeydown', dom.getAttrib(elm, 'onkeydown'));
+	setFormValue('onkeyup', dom.getAttrib(elm, 'onkeyup'));
+	className = dom.getAttrib(elm, 'class');
+
+	addClassesToList('classlist', 'advlink_styles');
+	selectByValue(f, 'classlist', className, true);
+
+	TinyMCE_EditableSelects.init();
+}
+
+function setFormValue(name, value) {
+	if(value && document.forms[0].elements[name]){
+		document.forms[0].elements[name].value = value;
+	}
+}
+
+function insertAction() {
+	var inst = tinyMCEPopup.editor;
+	var elm = inst.selection.getNode();
+
+	tinyMCEPopup.execCommand("mceBeginUndoLevel");	
+	setAllAttribs(elm);
+	tinyMCEPopup.execCommand("mceEndUndoLevel");
+	tinyMCEPopup.close();
+}
+
+function setAttrib(elm, attrib, value) {
+	var formObj = document.forms[0];
+	var valueElm = formObj.elements[attrib.toLowerCase()];
+	var inst = tinyMCEPopup.editor;
+	var dom = inst.dom;
+
+	if (typeof(value) == "undefined" || value == null) {
+		value = "";
+
+		if (valueElm)
+			value = valueElm.value;
+	}
+
+	if (value != "") {
+		dom.setAttrib(elm, attrib.toLowerCase(), value);
+
+		if (attrib == "style")
+			attrib = "style.cssText";
+
+		if (attrib.substring(0, 2) == 'on')
+			value = 'return true;' + value;
+
+		if (attrib == "class")
+			attrib = "className";
+
+		elm[attrib]=value;
+	} else
+		elm.removeAttribute(attrib);
+}
+
+function setAllAttribs(elm) {
+	var f = document.forms[0];
+
+	setAttrib(elm, 'title');
+	setAttrib(elm, 'id');
+	setAttrib(elm, 'style');
+	setAttrib(elm, 'class', getSelectValue(f, 'classlist'));
+	setAttrib(elm, 'dir');
+	setAttrib(elm, 'lang');
+	setAttrib(elm, 'tabindex');
+	setAttrib(elm, 'accesskey');
+	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 insertAttribute() {
+	tinyMCEPopup.close();
+}
+
+tinyMCEPopup.onInit.add(init);
+tinyMCEPopup.requireLangPack();
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,25 @@
+ /**
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
+ *
+ * @author Moxiecode - based on work by Andrew Tetlaw
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+function init() {
+	SXE.initElementDialog('cite');
+	if (SXE.currentAction == "update") {
+		SXE.showRemoveButton();
+	}
+}
+
+function insertCite() {
+	SXE.insertElement('cite');
+	tinyMCEPopup.close();
+}
+
+function removeCite() {
+	SXE.removeElement('cite');
+	tinyMCEPopup.close();
+}
+
+tinyMCEPopup.onInit.add(init);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,60 @@
+ /**
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
+ *
+ * @author Moxiecode - based on work by Andrew Tetlaw
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+function init() {
+	SXE.initElementDialog('del');
+	if (SXE.currentAction == "update") {
+		setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime'));
+		setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite'));
+		SXE.showRemoveButton();
+	}
+}
+
+function setElementAttribs(elm) {
+	setAllCommonAttribs(elm);
+	setAttrib(elm, 'datetime');
+	setAttrib(elm, 'cite');
+}
+
+function insertDel() {
+	var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'DEL');
+
+	tinyMCEPopup.execCommand('mceBeginUndoLevel');
+	if (elm == null) {
+		var s = SXE.inst.selection.getContent();
+		if(s.length > 0) {
+			insertInlineElement('del');
+			var elementArray = tinymce.grep(SXE.inst.dom.select('del'), function(n) {return n.id == '#sxe_temp_del#';});
+			for (var i=0; i<elementArray.length; i++) {
+				var elm = elementArray[i];
+				setElementAttribs(elm);
+			}
+		}
+	} else {
+		setElementAttribs(elm);
+	}
+	tinyMCEPopup.editor.nodeChanged();
+	tinyMCEPopup.execCommand('mceEndUndoLevel');
+	tinyMCEPopup.close();
+}
+
+function insertInlineElement(en) {
+	var ed = tinyMCEPopup.editor, dom = ed.dom;
+
+	ed.getDoc().execCommand('FontName', false, 'mceinline');
+	tinymce.each(dom.select(tinymce.isWebKit ? 'span' : 'font'), function(n) {
+		if (n.style.fontFamily == 'mceinline' || n.face == 'mceinline')
+			dom.replace(dom.create(en), n, 1);
+	});
+}
+
+function removeDel() {
+	SXE.removeElement('del');
+	tinyMCEPopup.close();
+}
+
+tinyMCEPopup.onInit.add(init);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/element_common.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/element_common.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/element_common.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/element_common.js	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,231 @@
+ /**
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
+ *
+ * @author Moxiecode - based on work by Andrew Tetlaw
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+tinyMCEPopup.requireLangPack();
+
+function initCommonAttributes(elm) {
+	var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
+
+	// Setup form data for common element attributes
+	setFormValue('title', dom.getAttrib(elm, 'title'));
+	setFormValue('id', dom.getAttrib(elm, 'id'));
+	selectByValue(formObj, 'class', dom.getAttrib(elm, 'class'), true);
+	setFormValue('style', dom.getAttrib(elm, 'style'));
+	selectByValue(formObj, 'dir', dom.getAttrib(elm, 'dir'));
+	setFormValue('lang', dom.getAttrib(elm, 'lang'));
+	setFormValue('onfocus', dom.getAttrib(elm, 'onfocus'));
+	setFormValue('onblur', dom.getAttrib(elm, 'onblur'));
+	setFormValue('onclick', dom.getAttrib(elm, 'onclick'));
+	setFormValue('ondblclick', dom.getAttrib(elm, 'ondblclick'));
+	setFormValue('onmousedown', dom.getAttrib(elm, 'onmousedown'));
+	setFormValue('onmouseup', dom.getAttrib(elm, 'onmouseup'));
+	setFormValue('onmouseover', dom.getAttrib(elm, 'onmouseover'));
+	setFormValue('onmousemove', dom.getAttrib(elm, 'onmousemove'));
+	setFormValue('onmouseout', dom.getAttrib(elm, 'onmouseout'));
+	setFormValue('onkeypress', dom.getAttrib(elm, 'onkeypress'));
+	setFormValue('onkeydown', dom.getAttrib(elm, 'onkeydown'));
+	setFormValue('onkeyup', dom.getAttrib(elm, 'onkeyup'));
+}
+
+function setFormValue(name, value) {
+	if(document.forms[0].elements[name]) document.forms[0].elements[name].value = value;
+}
+
+function insertDateTime(id) {
+	document.getElementById(id).value = getDateTime(new Date(), "%Y-%m-%dT%H:%M:%S");
+}
+
+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("%%", "%");
+
+	return fmt;
+}
+
+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;
+}
+
+function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
+	if (!form_obj || !form_obj.elements[field_name])
+		return;
+
+	var sel = form_obj.elements[field_name];
+
+	var found = false;
+	for (var i=0; i<sel.options.length; i++) {
+		var option = sel.options[i];
+
+		if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {
+			option.selected = true;
+			found = true;
+		} else
+			option.selected = false;
+	}
+
+	if (!found && add_custom && value != '') {
+		var option = new Option('Value: ' + value, value);
+		option.selected = true;
+		sel.options[sel.options.length] = option;
+	}
+
+	return found;
+}
+
+function setAttrib(elm, attrib, value) {
+	var formObj = document.forms[0];
+	var valueElm = formObj.elements[attrib.toLowerCase()];
+	tinyMCEPopup.editor.dom.setAttrib(elm, attrib, value || valueElm.value);
+}
+
+function setAllCommonAttribs(elm) {
+	setAttrib(elm, 'title');
+	setAttrib(elm, 'id');
+	setAttrib(elm, 'class');
+	setAttrib(elm, 'style');
+	setAttrib(elm, 'dir');
+	setAttrib(elm, 'lang');
+	/*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');*/
+}
+
+SXE = {
+	currentAction : "insert",
+	inst : tinyMCEPopup.editor,
+	updateElement : null
+}
+
+SXE.focusElement = SXE.inst.selection.getNode();
+
+SXE.initElementDialog = function(element_name) {
+	addClassesToList('class', 'xhtmlxtras_styles');
+	TinyMCE_EditableSelects.init();
+
+	element_name = element_name.toLowerCase();
+	var elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase());
+	if (elm != null && elm.nodeName.toUpperCase() == element_name.toUpperCase()) {
+		SXE.currentAction = "update";
+	}
+
+	if (SXE.currentAction == "update") {
+		initCommonAttributes(elm);
+		SXE.updateElement = elm;
+	}
+
+	document.forms[0].insert.value = tinyMCEPopup.getLang(SXE.currentAction, 'Insert', true); 
+}
+
+SXE.insertElement = function(element_name) {
+	var elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase()), h, tagName;
+
+	tinyMCEPopup.execCommand('mceBeginUndoLevel');
+	if (elm == null) {
+		var s = SXE.inst.selection.getContent();
+		if(s.length > 0) {
+			tagName = element_name;
+
+			if (tinymce.isIE && element_name.indexOf('html:') == 0)
+				element_name = element_name.substring(5).toLowerCase();
+
+			insertInlineElement(element_name);
+			var elementArray = tinymce.grep(SXE.inst.dom.select(element_name));
+			for (var i=0; i<elementArray.length; i++) {
+				var elm = elementArray[i];
+
+				if (SXE.inst.dom.getAttrib(elm, '_mce_new')) {
+					elm.id = '';
+					elm.setAttribute('id', '');
+					elm.removeAttribute('id');
+					elm.removeAttribute('_mce_new');
+
+					setAllCommonAttribs(elm);
+				}
+			}
+		}
+	} else {
+		setAllCommonAttribs(elm);
+	}
+	SXE.inst.nodeChanged();
+	tinyMCEPopup.execCommand('mceEndUndoLevel');
+}
+
+SXE.removeElement = function(element_name){
+	element_name = element_name.toLowerCase();
+	elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase());
+	if(elm && elm.nodeName.toUpperCase() == element_name.toUpperCase()){
+		tinyMCEPopup.execCommand('mceBeginUndoLevel');
+		tinyMCE.execCommand('mceRemoveNode', false, elm);
+		SXE.inst.nodeChanged();
+		tinyMCEPopup.execCommand('mceEndUndoLevel');
+	}
+}
+
+SXE.showRemoveButton = function() {
+		document.getElementById("remove").style.display = 'block';
+}
+
+SXE.containsClass = function(elm,cl) {
+	return (elm.className.indexOf(cl) > -1) ? true : false;
+}
+
+SXE.removeClass = function(elm,cl) {
+	if(elm.className == null || elm.className == "" || !SXE.containsClass(elm,cl)) {
+		return true;
+	}
+	var classNames = elm.className.split(" ");
+	var newClassNames = "";
+	for (var x = 0, cnl = classNames.length; x < cnl; x++) {
+		if (classNames[x] != cl) {
+			newClassNames += (classNames[x] + " ");
+		}
+	}
+	elm.className = newClassNames.substring(0,newClassNames.length-1); //removes extra space at the end
+}
+
+SXE.addClass = function(elm,cl) {
+	if(!SXE.containsClass(elm,cl)) elm.className ? elm.className += " " + cl : elm.className = cl;
+	return true;
+}
+
+function insertInlineElement(en) {
+	var ed = tinyMCEPopup.editor, dom = ed.dom;
+
+	ed.getDoc().execCommand('FontName', false, 'mceinline');
+	tinymce.each(dom.select('span,font'), function(n) {
+		if (n.style.fontFamily == 'mceinline' || n.face == 'mceinline')
+			dom.replace(dom.create(en, {_mce_new : 1}), n, 1);
+	});
+}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,59 @@
+ /**
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
+ *
+ * @author Moxiecode - based on work by Andrew Tetlaw
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+function init() {
+	SXE.initElementDialog('ins');
+	if (SXE.currentAction == "update") {
+		setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime'));
+		setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite'));
+		SXE.showRemoveButton();
+	}
+}
+
+function setElementAttribs(elm) {
+	setAllCommonAttribs(elm);
+	setAttrib(elm, 'datetime');
+	setAttrib(elm, 'cite');
+}
+
+function insertIns() {
+	var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'INS');
+	tinyMCEPopup.execCommand('mceBeginUndoLevel');
+	if (elm == null) {
+		var s = SXE.inst.selection.getContent();
+		if(s.length > 0) {
+			insertInlineElement('INS');
+			var elementArray = tinymce.grep(SXE.inst.dom.select('ins'), function(n) {return n.id == '#sxe_temp_ins#';});
+			for (var i=0; i<elementArray.length; i++) {
+				var elm = elementArray[i];
+				setElementAttribs(elm);
+			}
+		}
+	} else {
+		setElementAttribs(elm);
+	}
+	tinyMCEPopup.editor.nodeChanged();
+	tinyMCEPopup.execCommand('mceEndUndoLevel');
+	tinyMCEPopup.close();
+}
+
+function removeIns() {
+	SXE.removeElement('ins');
+	tinyMCEPopup.close();
+}
+
+function insertInlineElement(en) {
+	var ed = tinyMCEPopup.editor, dom = ed.dom;
+
+	ed.getDoc().execCommand('FontName', false, 'mceinline');
+	tinymce.each(dom.select(tinymce.isWebKit ? 'span' : 'font'), function(n) {
+		if (n.style.fontFamily == 'mceinline' || n.face == 'mceinline')
+			dom.replace(dom.create(en), n, 1);
+	});
+}
+
+tinyMCEPopup.onInit.add(init);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ca_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ca_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ca_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ca_dlg.js	2009-04-24 08:53:36.000000000 +0200
@@ -0,0 +1,32 @@
+tinyMCE.addI18n('ca.xhtmlxtras_dlg',{
+attribute_label_title:"T\u00EDtol",
+attribute_label_id:"ID",
+attribute_label_class:"Classe",
+attribute_label_style:"Estil",
+attribute_label_cite:"Cita",
+attribute_label_datetime:"Data/Hora",
+attribute_label_langdir:"Direcci\u00F3 del Text",
+attribute_option_ltr:"D'esquerra a dreta",
+attribute_option_rtl:"De dreta a esquerra",
+attribute_label_langcode:"Idioma",
+attribute_label_tabindex:"\u00CDndex de taula",
+attribute_label_accesskey:"Clau d'acc\u00E9s",
+attribute_events_tab:"Esdeveniments",
+attribute_attrib_tab:"Atributs",
+general_tab:"General",
+attrib_tab:"Atributs",
+events_tab:"Esdeveniments",
+fieldset_general_tab:"Configuraci\u00F3 General",
+fieldset_attrib_tab:"Atributs de l'Element",
+fieldset_events_tab:"Esdeveniments de l'Element",
+title_ins_element:"Element d'Inserci\u00F3",
+title_del_element:"Element de Supressi\u00F3",
+title_acronym_element:"Element d'Acr\u00F2nim",
+title_abbr_element:"Element d'Abreujament",
+title_cite_element:"Element de Citaci\u00F3",
+remove:"Elimina",
+insert_date:"Insereix la data/hora actual",
+option_ltr:"D'esquerra a dreta",
+option_rtl:"De dreta a esquerra",
+attribs_title:"Insereix/Edita Atributs"
+});
\ 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/xhtmlxtras/langs/en_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,32 @@
+tinyMCE.addI18n('en.xhtmlxtras_dlg',{
+attribute_label_title:"Title",
+attribute_label_id:"ID",
+attribute_label_class:"Class",
+attribute_label_style:"Style",
+attribute_label_cite:"Cite",
+attribute_label_datetime:"Date/Time",
+attribute_label_langdir:"Text Direction",
+attribute_option_ltr:"Left to right",
+attribute_option_rtl:"Right to left",
+attribute_label_langcode:"Language",
+attribute_label_tabindex:"TabIndex",
+attribute_label_accesskey:"AccessKey",
+attribute_events_tab:"Events",
+attribute_attrib_tab:"Attributes",
+general_tab:"General",
+attrib_tab:"Attributes",
+events_tab:"Events",
+fieldset_general_tab:"General Settings",
+fieldset_attrib_tab:"Element Attributes",
+fieldset_events_tab:"Element Events",
+title_ins_element:"Insertion Element",
+title_del_element:"Deletion Element",
+title_acronym_element:"Acronym Element",
+title_abbr_element:"Abbreviation Element",
+title_cite_element:"Citation Element",
+remove:"Remove",
+insert_date:"Insert current date/time",
+option_ltr:"Left to right",
+option_rtl:"Right to left",
+attribs_title:"Insert/Edit Attributes"
+});
\ 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/xhtmlxtras/langs/es_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/es_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/es_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/es_dlg.js	2009-06-22 05:25:10.000000000 +0200
@@ -0,0 +1,32 @@
+tinyMCE.addI18n('es.xhtmlxtras_dlg',{
+attribute_label_title:"T\u00EDtulo",
+attribute_label_id:"ID",
+attribute_label_class:"Clase",
+attribute_label_style:"Estilo",
+attribute_label_cite:"Cita",
+attribute_label_datetime:"Fecha/Hora",
+attribute_label_langdir:"Direcci\u00F3n de texto",
+attribute_option_ltr:"Izquierda a derecha",
+attribute_option_rtl:"Derecha a izquierda",
+attribute_label_langcode:"Lenguaje",
+attribute_label_tabindex:"Orden de tabulaci\u00F3n",
+attribute_label_accesskey:"Tecla de acceso",
+attribute_events_tab:"Eventos",
+attribute_attrib_tab:"Atributos",
+general_tab:"General",
+attrib_tab:"Atributos",
+events_tab:"Eventos",
+fieldset_general_tab:"Configuraci\u00F3n general",
+fieldset_attrib_tab:"Atributos",
+fieldset_events_tab:"Evento",
+title_ins_element:"Insertar",
+title_del_element:"Borrar",
+title_acronym_element:"Acr\u00F3nimo",
+title_abbr_element:"Abreviatura",
+title_cite_element:"Cita",
+remove:"Suprimir",
+insert_date:"Insertar fecha/hora actuales",
+option_ltr:"Izquierda a derecha",
+option_rtl:"Derecha a izquierda",
+attribs_title:"Insertar/Editar atributos"
+});
\ 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/xhtmlxtras/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/es.js	2007-03-02 00:57:28.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/es.js	1970-01-01 01:00:00.000000000 +0100
@@ -1,42 +0,0 @@
-// ES lang variables
-
-tinyMCE.addToLang('xhtmlxtras',{
-cite_desc : 'Citaci&oacute;n',
-abbr_desc : 'Abreviatura',
-acronym_desc : 'Acr&oacute;nimo',
-del_desc : 'Borrado',
-ins_desc : 'Inserci&oacute;n',
-attribute_label_title : 'T&iacute;tulo',
-attribute_label_id : 'ID',
-attribute_label_class : 'Clase',
-attribute_label_style : 'Estilo',
-attribute_label_cite : 'Cita',
-attribute_label_datetime : 'Fecha/Hora',
-attribute_label_langdir : 'Direcci&oacute;n del texto',
-attribute_option_ltr : 'De izquierda a derecha',
-attribute_option_rtl : 'De derecha a izquierda',
-attribute_label_langcode : 'Idioma',
-attribute_label_tabindex : 'TabIndex',
-attribute_label_accesskey : 'AccessKey',
-attribute_label_cite : 'Cita',
-attribute_events_tab : 'Eventos',
-attribute_attrib_tab : 'Atributos',
-general_tab : 'General',
-attrib_tab : 'Atributos',
-events_tab : 'Eventos',
-fieldset_general_tab : 'Configuraci&oacute;n General',
-fieldset_attrib_tab : 'Atributos de Elemento',
-fieldset_events_tab : 'Eventos de Elemento',
-title_ins_element : 'Inserci&oacute;n de Elemento',
-title_del_element : 'Borrado de Elemento',
-title_acronym_element : 'Elemento Acr&oacute;nimo',
-title_abbr_element : 'Elemento Abreviatura',
-title_cite_element : 'Elemento Cita',
-remove : 'Eliminar',
-not_set : '--no establecido--',
-insert_date : 'Insertar fecha/hora actual',
-option_ltr : 'De izquierda a derecha',
-option_rtl : 'De derecha a izquierda',
-attribs_desc : 'Insertar/Editar Atributos',
-attribs_title : 'Insertar/Editar Atributos'
-});
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/about.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/about.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/about.htm	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/about.htm	2009-06-30 22:01:34.000000000 +0200
@@ -1,35 +1,39 @@
+<!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_about_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="jscripts/about.js"></script>
-	<base target="_self" />
+	<title>{#advanced_dlg.about_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="js/about.js"></script>
 </head>
-<body id="about" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<body id="about" style="display: none">
 		<div class="tabs">
 			<ul>
-				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_about}</a></span></li>
-				<li id="help_tab"><span><a href="javascript:mcTabs.displayTab('help_tab','help_panel');" onmousedown="return false;">{$lang_help}</a></span></li>
-				<li id="plugins_tab"><span><a href="javascript:mcTabs.displayTab('plugins_tab','plugins_panel');" onmousedown="return false;">{$lang_plugins}</a></span></li>
+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.about_general}</a></span></li>
+				<li id="help_tab" style="display:none"><span><a href="javascript:mcTabs.displayTab('help_tab','help_panel');" onmousedown="return false;">{#advanced_dlg.about_help}</a></span></li>
+				<li id="plugins_tab"><span><a href="javascript:mcTabs.displayTab('plugins_tab','plugins_panel');" onmousedown="return false;">{#advanced_dlg.about_plugins}</a></span></li>
 			</ul>
 		</div>
 
 		<div class="panel_wrapper">
 			<div id="general_panel" class="panel current">
-				<h3>{$lang_about_title}</h3>
-				<p>Version: {$tinymce_version} ({$tinymce_releasedate})</p>
+				<h3>{#advanced_dlg.about_title}</h3>
+				<p>Version: <span id="version"></span> (<span id="date"></span>)</p>
 				<p>TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under <a href="../../license.txt" target="_blank">LGPL</a>
 				by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.</p>
-				<p>Copyright &copy; 2003-2007, <a href="http://www.moxiecode.com" target="_blank">Moxiecode Systems AB</a>, All rights reserved.</p>
+				<p>Copyright &copy; 2003-2008, <a href="http://www.moxiecode.com" target="_blank">Moxiecode Systems AB</a>, All rights reserved.</p>
 				<p>For more information about this software visit the <a href="http://tinymce.moxiecode.com" target="_blank">TinyMCE website</a>.</p>
 
-				<div id="buttoncontainer"></div>
+				<div id="buttoncontainer">
+					<a href="http://www.moxiecode.com" target="_blank"><img src="http://tinymce.moxiecode.com/images/gotmoxie.png" alt="Got Moxie?" border="0" /></a>
+					<a href="http://sourceforge.net/projects/tinymce/" target="_blank"><img src="http://sourceforge.net/sflogo.php?group_id=103281" alt="Hosted By Sourceforge" border="0" /></a>
+					<a href="http://www.freshmeat.net/projects/tinymce" target="_blank"><img src="http://tinymce.moxiecode.com/images/fm.gif" alt="Also on freshmeat" border="0" /></a>
+				</div>
 			</div>
 
 			<div id="plugins_panel" class="panel">
 				<div id="pluginscontainer">
-					<h3>{$lang_loaded_plugins}</h3>
+					<h3>{#advanced_dlg.about_loaded}</h3>
 
 					<div id="plugintablecontainer">
 					</div>
@@ -45,7 +49,7 @@
 
 		<div class="mceActionPanel">
 			<div style="float: right">
-				<input type="button" id="cancel" name="cancel" value="{$lang_close}" onclick="tinyMCEPopup.close();" />
+				<input type="button" id="cancel" name="cancel" value="{#close}" onclick="tinyMCEPopup.close();" />
 			</div>
 		</div>
 </body>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm	2006-03-29 18:54:04.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm	2009-06-30 22:01:34.000000000 +0200
@@ -1,33 +1,31 @@
+<!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_anchor_title}</title>
-	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/anchor.js"></script>
-	<base target="_self" />
+	<title>{#advanced_dlg.anchor_title}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script type="text/javascript" src="js/anchor.js"></script>
 </head>
-<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
-<form onsubmit="insertAnchor();return false;" action="#">
-
+<body style="display: none">
+<form onsubmit="AnchorDialog.update();return false;" action="#">
 	<table border="0" cellpadding="4" cellspacing="0">
 		<tr>
-			<td colspan="2" class="title">{$lang_insert_anchor_title}</td>
+			<td colspan="2" class="title">{#advanced_dlg.anchor_title}</td>
 		</tr>
 		<tr>
-			<td nowrap="nowrap">{$lang_insert_anchor_name}:</td>
-			<td><input name="anchorName" type="text" id="anchorName" value="" style="width: 200px" /></td>
+			<td class="nowrap">{#advanced_dlg.anchor_name}:</td>
+			<td><input name="anchorName" type="text" class="mceFocus" id="anchorName" value="" style="width: 200px" /></td>
 		</tr>
 	</table>
 
 	<div class="mceActionPanel">
 		<div style="float: left">
-			<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertAnchor();" />
+			<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>
 </body>
 </html>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm	2006-03-29 18:54:04.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm	2009-06-30 22:01:34.000000000 +0200
@@ -1,27 +1,27 @@
+<!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_theme_charmap_title}</title>
+	<title>{#advanced_dlg.charmap_title}</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/charmap.js"></script>
-	<base target="_self" />
+	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script type="text/javascript" src="js/charmap.js"></script>
 </head>
-<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<body id="charmap" style="display:none">
 <table align="center" border="0" cellspacing="0" cellpadding="2">
     <tr>
-        <td colspan="2" class="title">{$lang_theme_charmap_title}</td>
+        <td colspan="2" class="title">{#advanced_dlg.charmap_title}</td>
     </tr>
     <tr>
-        <td rowspan="2" align="left" valign="top">
-            <script language="javascript" type="text/javascript">renderCharMapHTML();</script>
+        <td id="charmapView" rowspan="2" align="left" valign="top">
+			<!-- Chars will be rendered here -->
         </td>
         <td width="100" align="center" valign="top">
-            <table border="0" cellpadding="0" cellspacing="0" width="100" style="height: 100px">
+            <table border="0" cellpadding="0" cellspacing="0" width="100" style="height:100px">
                 <tr>
-                    <td class="charmapOver" style="font-size: 40px; height:80px;" id="codeV">&nbsp;</td>
+                    <td id="codeV">&nbsp;</td>
                 </tr>
                 <tr>
-                    <td style="font-size: 10px; font-family: Arial, Helvetica, sans-serif; text-align:center;" id="codeN">&nbsp;</td>
+                    <td id="codeN">&nbsp;</td>
                 </tr>
             </table>
         </td>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm	2007-02-23 04:42:54.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm	2009-06-30 22:01:34.000000000 +0200
@@ -1,27 +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>{$lang_theme_colorpicker_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="jscripts/color_picker.js"></script>
-	<link href="css/colorpicker.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
+	<title>{#advanced_dlg.colorpicker_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="js/color_picker.js"></script>
 </head>
-<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<body id="colorpicker" style="display: none">
+<form onsubmit="insertAction();return false" action="#">
 	<div class="tabs">
 		<ul>
-			<li id="picker_tab" class="current"><span><a href="javascript:mcTabs.displayTab('picker_tab','picker_panel');" onmousedown="return false;">{$lang_color_picker_tab}</a></span></li>
-			<li id="rgb_tab"><span><a href="#" onclick="generateWebColors();mcTabs.displayTab('rgb_tab','rgb_panel');" onmousedown="return false;">{$lang_web_colors_tab}</a></span></li>
-			<li id="named_tab"><span><a  href="#" onclick="generateNamedColors();javascript:mcTabs.displayTab('named_tab','named_panel');" onmousedown="return false;">{$lang_named_colors_tab}</a></span></li>
+			<li id="picker_tab" class="current"><span><a href="javascript:mcTabs.displayTab('picker_tab','picker_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_picker_tab}</a></span></li>
+			<li id="rgb_tab"><span><a href="javascript:;" onclick="generateWebColors();mcTabs.displayTab('rgb_tab','rgb_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_palette_tab}</a></span></li>
+			<li id="named_tab"><span><a  href="javascript:;" onclick="generateNamedColors();javascript:mcTabs.displayTab('named_tab','named_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_named_tab}</a></span></li>
 		</ul>
 	</div>
 
 	<div class="panel_wrapper">
 		<div id="picker_panel" class="panel current">
 			<fieldset>
-				<legend>{$lang_color_picker}</legend>
+				<legend>{#advanced_dlg.colorpicker_picker_title}</legend>
 				<div id="picker">
-					<img id="colorpicker" src="images/colors.jpg" onclick="computeColor(event)" onmousedown="isMouseDown = true;return false;" onmouseup="isMouseDown = false;" onmousemove="if (isMouseDown && isMouseOver) computeColor(event); return false;" onmouseover="isMouseOver=true;" onmouseout="isMouseOver=false;" />
+					<img id="colors" src="img/colorpicker.jpg" onclick="computeColor(event)" onmousedown="isMouseDown = true;return false;" onmouseup="isMouseDown = false;" onmousemove="if (isMouseDown && isMouseOver) computeColor(event); return false;" onmouseover="isMouseOver=true;" onmouseout="isMouseOver=false;" alt=" " />
 
 					<div id="light">
 						<!-- Will be filled with divs -->
@@ -34,7 +34,7 @@
 
 		<div id="rgb_panel" class="panel">
 			<fieldset>
-				<legend>{$lang_web_colors}</legend>
+				<legend>{#advanced_dlg.colorpicker_palette_title}</legend>
 				<div id="webcolors">
 					<!-- Gets filled with web safe colors-->
 				</div>
@@ -45,7 +45,7 @@
 
 		<div id="named_panel" class="panel">
 			<fieldset>
-				<legend>{$lang_named_colors}</legend>
+				<legend>{#advanced_dlg.colorpicker_named_title}</legend>
 				<div id="namedcolors">
 					<!-- Gets filled with named colors-->
 				</div>
@@ -53,7 +53,7 @@
 				<br style="clear: both" />
 
 				<div id="colornamecontainer">
-					{$lang_color_name} <span id="colorname"></span>
+					{#advanced_dlg.colorpicker_name} <span id="colorname"></span>
 				</div>
 			</fieldset>
 		</div>
@@ -61,14 +61,15 @@
 
 	<div class="mceActionPanel">
 		<div style="float: left">
-			<input type="button" id="insert" name="insert" value="{$lang_theme_colorpicker_apply}" onclick="insertAction();" />
+			<input type="submit" id="insert" name="insert" value="{#apply}" />
 		</div>
 
 		<div id="preview"></div>
 
 		<div id="previewblock">
-			<label for="color">{$lang_color}</label> <input id="color" type="text" size="8" maxlength="8" class="text" />
+			<label for="color">{#advanced_dlg.colorpicker_color}</label> <input id="color" type="text" size="8" maxlength="8" class="text mceFocus" />
 		</div>
 	</div>
+</form>
 </body>
 </html>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js	2007-08-28 09:57:30.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js	2009-06-30 22:01:34.000000000 +0200
@@ -1 +1 @@
-tinyMCE.importThemeLanguagePack('advanced');var TinyMCE_AdvancedTheme={_defColors:"000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",_autoImportCSSClasses:true,_resizer:{},_buttons:[['bold','{$lang_bold_img}','lang_bold_desc','Bold'],['italic','{$lang_italic_img}','lang_italic_desc','Italic'],['underline','{$lang_underline_img}','lang_underline_desc','Underline'],['strikethrough','strikethrough.gif','lang_striketrough_desc','Strikethrough'],['justifyleft','justifyleft.gif','lang_justifyleft_desc','JustifyLeft'],['justifycenter','justifycenter.gif','lang_justifycenter_desc','JustifyCenter'],['justifyright','justifyright.gif','lang_justifyright_desc','JustifyRight'],['justifyfull','justifyfull.gif','lang_justifyfull_desc','JustifyFull'],['bullist','bullist.gif','lang_bullist_desc','InsertUnorderedList'],['numlist','numlist.gif','lang_numlist_desc','InsertOrderedList'],['outdent','outdent.gif','lang_outdent_desc','Outdent'],['indent','indent.gif','lang_indent_desc','Indent'],['cut','cut.gif','lang_cut_desc','Cut'],['copy','copy.gif','lang_copy_desc','Copy'],['paste','paste.gif','lang_paste_desc','Paste'],['undo','undo.gif','lang_undo_desc','Undo'],['redo','redo.gif','lang_redo_desc','Redo'],['link','link.gif','lang_link_desc','mceLink',true],['unlink','unlink.gif','lang_unlink_desc','unlink'],['image','image.gif','lang_image_desc','mceImage',true],['cleanup','cleanup.gif','lang_cleanup_desc','mceCleanup'],['help','help.gif','lang_help_desc','mceHelp'],['code','code.gif','lang_theme_code_desc','mceCodeEditor'],['hr','hr.gif','lang_theme_hr_desc','inserthorizontalrule'],['removeformat','removeformat.gif','lang_theme_removeformat_desc','removeformat'],['sub','sub.gif','lang_theme_sub_desc','subscript'],['sup','sup.gif','lang_theme_sup_desc','superscript'],['forecolor','forecolor.gif','lang_theme_forecolor_desc','forecolor',true],['forecolorpicker','forecolor.gif','lang_theme_forecolor_desc','forecolorpicker',true],['backcolor','backcolor.gif','lang_theme_backcolor_desc','HiliteColor',true],['backcolorpicker','backcolor.gif','lang_theme_backcolor_desc','backcolorpicker',true],['charmap','charmap.gif','lang_theme_charmap_desc','mceCharMap'],['visualaid','visualaid.gif','lang_theme_visualaid_desc','mceToggleVisualAid'],['anchor','anchor.gif','lang_theme_anchor_desc','mceInsertAnchor'],['newdocument','newdocument.gif','lang_newdocument_desc','mceNewDocument']],_buttonMap:'anchor,backcolor,bold,bullist,charmap,cleanup,code,copy,cut,forecolor,help,hr,image,indent,italic,justifycenter,justifyfull,justifyleft,justifyright,link,newdocument,numlist,outdent,paste,redo,removeformat,strikethrough,sub,sup,underline,undo,unlink,visualaid,advhr,ltr,rtl,emotions,flash,fullpage,fullscreen,iespell,insertdate,inserttime,pastetext,pasteword,selectall,preview,print,save,replace,search,table,cell_props,delete_col,delete_row,col_after,col_before,row_after,row_before,merge_cells,row_props,split_cells,delete_table',getControlHTML:function(button_name){var i,x,but;for(i=0;i<TinyMCE_AdvancedTheme._buttons.length;i++){but=TinyMCE_AdvancedTheme._buttons[i];if(but[0]==button_name&&(button_name=="forecolor"||button_name=="backcolor"))return tinyMCE.getMenuButtonHTML(but[0],but[2],'{$themeurl}/images/'+but[1],but[3]+"Menu",but[3],(but.length>4?but[4]:false),(but.length>5?but[5]:null));if(but[0]==button_name)return tinyMCE.getButtonHTML(but[0],but[2],'{$themeurl}/images/'+but[1],but[3],(but.length>4?but[4]:false),(but.length>5?but[5]:null))}switch(button_name){case"formatselect":var html='<select id="{$editor_id}_formatSelect" name="{$editor_id}_formatSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FormatBlock\',false,this.options[this.selectedIndex].value);" class="mceSelectList">';var formats=tinyMCE.getParam("theme_advanced_blockformats","p,address,pre,h1,h2,h3,h4,h5,h6",true).split(',');var lookup=[['p','{$lang_theme_paragraph}'],['address','{$lang_theme_address}'],['pre','{$lang_theme_pre}'],['h1','{$lang_theme_h1}'],['h2','{$lang_theme_h2}'],['h3','{$lang_theme_h3}'],['h4','{$lang_theme_h4}'],['h5','{$lang_theme_h5}'],['h6','{$lang_theme_h6}'],['div','{$lang_theme_div}'],['blockquote','{$lang_theme_blockquote}'],['code','{$lang_theme_code}'],['dt','{$lang_theme_dt}'],['dd','{$lang_theme_dd}'],['samp','{$lang_theme_samp}']];html+='<option value="">{$lang_theme_block}</option>';for(var i=0;i<formats.length;i++){for(var x=0;x<lookup.length;x++){if(formats[i]==lookup[x][0])html+='<option value="&lt;'+lookup[x][0]+'&gt;">'+lookup[x][1]+'</option>'}}html+='</select>';return html;case"styleselect":return'<select id="{$editor_id}_styleSelect" onmousedown="tinyMCE.themes.advanced._setupCSSClasses(\'{$editor_id}\');" name="{$editor_id}_styleSelect" onfocus="tinyMCE.addSelectAccessibility(event,this,window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSetCSSClass\',false,this.options[this.selectedIndex].value);" class="mceSelectList">{$style_select_options}</select>';case"fontselect":var fontHTML='<select id="{$editor_id}_fontNameSelect" name="{$editor_id}_fontNameSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontName\',false,this.options[this.selectedIndex].value);" class="mceSelectList"><option value="">{$lang_theme_fontdefault}</option>';var iFonts='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 nFonts='Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats';var fonts=tinyMCE.getParam("theme_advanced_fonts",nFonts).split(';');for(i=0;i<fonts.length;i++){if(fonts[i]!=''){var parts=fonts[i].split('=');fontHTML+='<option value="'+parts[1]+'">'+parts[0]+'</option>'}}fontHTML+='</select>';return fontHTML;case"fontsizeselect":return'<select id="{$editor_id}_fontSizeSelect" name="{$editor_id}_fontSizeSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontSize\',false,this.options[this.selectedIndex].value);" class="mceSelectList">'+'<option value="0">{$lang_theme_font_size}</option>'+'<option value="1">1 (8 pt)</option>'+'<option value="2">2 (10 pt)</option>'+'<option value="3">3 (12 pt)</option>'+'<option value="4">4 (14 pt)</option>'+'<option value="5">5 (18 pt)</option>'+'<option value="6">6 (24 pt)</option>'+'<option value="7">7 (36 pt)</option>'+'</select>';case"|":case"separator":return'<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" alt="" />';case"spacer":return'<img src="{$themeurl}/images/separator.gif" width="2" height="15" border="0" class="mceSeparatorLine" style="vertical-align: middle" alt="" />';case"rowseparator":return'<br />'}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case'mceHelp':tinyMCE.openWindow({file:'about.htm',width:480,height:380},{tinymce_version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion,tinymce_releasedate:tinyMCE.releaseDate,inline:"yes"});return true;case"mceLink":var inst=tinyMCE.getInstanceById(editor_id);var doc=inst.getDoc();var selectedText="";if(tinyMCE.isMSIE){var rng=doc.selection.createRange();selectedText=rng.text}else selectedText=inst.getSel().toString();if(!tinyMCE.linkElement){if((tinyMCE.selectedElement.nodeName.toLowerCase()!="img")&&(selectedText.length<=0))return true}var href="",target="",title="",onclick="",action="insert",style_class="";if(tinyMCE.selectedElement.nodeName.toLowerCase()=="a")tinyMCE.linkElement=tinyMCE.selectedElement;if(tinyMCE.linkElement!=null&&tinyMCE.getAttrib(tinyMCE.linkElement,'href')=="")tinyMCE.linkElement=null;if(tinyMCE.linkElement){href=tinyMCE.getAttrib(tinyMCE.linkElement,'href');target=tinyMCE.getAttrib(tinyMCE.linkElement,'target');title=tinyMCE.getAttrib(tinyMCE.linkElement,'title');onclick=tinyMCE.getAttrib(tinyMCE.linkElement,'onclick');style_class=tinyMCE.getAttrib(tinyMCE.linkElement,'class');if(onclick=="")onclick=tinyMCE.getAttrib(tinyMCE.linkElement,'onclick');onclick=tinyMCE.cleanupEventStr(onclick);href=eval(tinyMCE.settings['urlconverter_callback']+"(href, tinyMCE.linkElement, true);");mceRealHref=tinyMCE.getAttrib(tinyMCE.linkElement,'mce_href');if(mceRealHref!=""){href=mceRealHref;if(tinyMCE.getParam('convert_urls'))href=eval(tinyMCE.settings['urlconverter_callback']+"(href, tinyMCE.linkElement, true);")}action="update"}var template=new Array();template['file']='link.htm';template['width']=310;template['height']=200;template['width']+=tinyMCE.getLang('lang_insert_link_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_link_delta_height',0);if(inst.settings['insertlink_callback']){var returnVal=eval(inst.settings['insertlink_callback']+"(href, target, title, onclick, action, style_class);");if(returnVal&&returnVal['href'])TinyMCE_AdvancedTheme._insertLink(returnVal['href'],returnVal['target'],returnVal['title'],returnVal['onclick'],returnVal['style_class'])}else{tinyMCE.openWindow(template,{href:href,target:target,title:title,onclick:onclick,action:action,className:style_class,inline:"yes"})}return true;case"mceImage":var src="",alt="",border="",hspace="",vspace="",width="",height="",align="";var title="",onmouseover="",onmouseout="",action="insert";var img=tinyMCE.imgElement;var inst=tinyMCE.getInstanceById(editor_id);if(tinyMCE.selectedElement!=null&&tinyMCE.selectedElement.nodeName.toLowerCase()=="img"){img=tinyMCE.selectedElement;tinyMCE.imgElement=img}if(img){if(tinyMCE.getAttrib(img,'name').indexOf('mce_')==0)return true;src=tinyMCE.getAttrib(img,'src');alt=tinyMCE.getAttrib(img,'alt');if(alt=="")alt=tinyMCE.getAttrib(img,'title');if(tinyMCE.isGecko){var w=img.style.width;if(w!=null&&w!="")img.setAttribute("width",w);var h=img.style.height;if(h!=null&&h!="")img.setAttribute("height",h)}border=tinyMCE.getAttrib(img,'border');hspace=tinyMCE.getAttrib(img,'hspace');vspace=tinyMCE.getAttrib(img,'vspace');width=tinyMCE.getAttrib(img,'width');height=tinyMCE.getAttrib(img,'height');align=tinyMCE.getAttrib(img,'align');onmouseover=tinyMCE.getAttrib(img,'onmouseover');onmouseout=tinyMCE.getAttrib(img,'onmouseout');title=tinyMCE.getAttrib(img,'title');if(tinyMCE.isMSIE){width=img.attributes['width'].specified?width:"";height=img.attributes['height'].specified?height:""}src=eval(tinyMCE.settings['urlconverter_callback']+"(src, img, true);");mceRealSrc=tinyMCE.getAttrib(img,'mce_src');if(mceRealSrc!=""){src=mceRealSrc;if(tinyMCE.getParam('convert_urls'))src=eval(tinyMCE.settings['urlconverter_callback']+"(src, img, true);")}action="update"}var template=new Array();template['file']='image.htm?src={$src}';template['width']=355;template['height']=265+(tinyMCE.isMSIE?25:0);template['width']+=tinyMCE.getLang('lang_insert_image_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_image_delta_height',0);if(inst.settings['insertimage_callback']){var returnVal=eval(inst.settings['insertimage_callback']+"(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout, action);");if(returnVal&&returnVal['src'])TinyMCE_AdvancedTheme._insertImage(returnVal['src'],returnVal['alt'],returnVal['border'],returnVal['hspace'],returnVal['vspace'],returnVal['width'],returnVal['height'],returnVal['align'],returnVal['title'],returnVal['onmouseover'],returnVal['onmouseout'])}else tinyMCE.openWindow(template,{src:src,alt:alt,border:border,hspace:hspace,vspace:vspace,width:width,height:height,align:align,title:title,onmouseover:onmouseover,onmouseout:onmouseout,action:action,inline:"yes"});return true;case"forecolor":var fcp=new TinyMCE_Layer(editor_id+'_fcPreview',false),p,img,elm;TinyMCE_AdvancedTheme._hideMenus(editor_id);if(!fcp.exists()){fcp.create('div','mceColorPreview',document.getElementById(editor_id+'_toolbar'));elm=fcp.getElement();elm._editor_id=editor_id;elm._command="forecolor";elm._switchId=editor_id+"_forecolor";tinyMCE.addEvent(elm,'click',TinyMCE_AdvancedTheme._handleMenuEvent);tinyMCE.addEvent(elm,'mouseover',TinyMCE_AdvancedTheme._handleMenuEvent);tinyMCE.addEvent(elm,'mouseout',TinyMCE_AdvancedTheme._handleMenuEvent)}img=tinyMCE.selectNodes(document.getElementById(editor_id+"_forecolor"),function(n){return n.nodeName=="IMG"})[0];p=tinyMCE.getAbsPosition(img,document.getElementById(editor_id+'_toolbar'));fcp.moveTo(p.absLeft,p.absTop);fcp.getElement().style.backgroundColor=value!=null?value:tinyMCE.getInstanceById(editor_id).foreColor;fcp.show();return false;case"forecolorpicker":this._pickColor(editor_id,'forecolor');return true;case"forecolorMenu":TinyMCE_AdvancedTheme._hideMenus(editor_id);var ml=new TinyMCE_Layer(editor_id+'_fcMenu');if(!ml.exists())ml.create('div','mceMenu',document.body,TinyMCE_AdvancedTheme._getColorHTML(editor_id,'theme_advanced_text_colors','forecolor'));tinyMCE.switchClass(editor_id+'_forecolor','mceMenuButtonFocus');ml.moveRelativeTo(document.getElementById(editor_id+"_forecolor"),'bl');ml.moveBy(tinyMCE.isMSIE&&!tinyMCE.isOpera?-1:1,-1);if(tinyMCE.isOpera)ml.moveBy(0,-2);ml.show();return true;case"HiliteColor":var bcp=new TinyMCE_Layer(editor_id+'_bcPreview',false),p,img;TinyMCE_AdvancedTheme._hideMenus(editor_id);if(!bcp.exists()){bcp.create('div','mceColorPreview',document.getElementById(editor_id+'_toolbar'));elm=bcp.getElement();elm._editor_id=editor_id;elm._command="HiliteColor";elm._switchId=editor_id+"_backcolor";tinyMCE.addEvent(elm,'click',TinyMCE_AdvancedTheme._handleMenuEvent);tinyMCE.addEvent(elm,'mouseover',TinyMCE_AdvancedTheme._handleMenuEvent);tinyMCE.addEvent(elm,'mouseout',TinyMCE_AdvancedTheme._handleMenuEvent)}img=tinyMCE.selectNodes(document.getElementById(editor_id+"_backcolor"),function(n){return n.nodeName=="IMG"})[0];p=tinyMCE.getAbsPosition(img,document.getElementById(editor_id+'_toolbar'));bcp.moveTo(p.absLeft,p.absTop);bcp.getElement().style.backgroundColor=value!=null?value:tinyMCE.getInstanceById(editor_id).backColor;bcp.show();return false;case"HiliteColorMenu":TinyMCE_AdvancedTheme._hideMenus(editor_id);var ml=new TinyMCE_Layer(editor_id+'_bcMenu');if(!ml.exists())ml.create('div','mceMenu',document.body,TinyMCE_AdvancedTheme._getColorHTML(editor_id,'theme_advanced_background_colors','HiliteColor'));tinyMCE.switchClass(editor_id+'_backcolor','mceMenuButtonFocus');ml.moveRelativeTo(document.getElementById(editor_id+"_backcolor"),'bl');ml.moveBy(tinyMCE.isMSIE&&!tinyMCE.isOpera?-1:1,-1);if(tinyMCE.isOpera)ml.moveBy(0,-2);ml.show();return true;case"backcolorpicker":this._pickColor(editor_id,'HiliteColor');return true;case"mceColorPicker":if(user_interface){var template=[];if(!value['callback']&&!value['color'])value['color']=value['document'].getElementById(value['element_id']).value;template['file']='color_picker.htm';template['width']=380;template['height']=250;template['close_previous']="no";template['width']+=tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_height',0);if(typeof(value['store_selection'])=="undefined")value['store_selection']=true;tinyMCE.lastColorPickerValue=value;tinyMCE.openWindow(template,{editor_id:editor_id,mce_store_selection:value['store_selection'],inline:"yes",command:"mceColorPicker",input_color:value['color']})}else{var savedVal=tinyMCE.lastColorPickerValue,elm;if(savedVal['callback']){savedVal['callback'](value);return true}elm=savedVal['document'].getElementById(savedVal['element_id']);elm.value=value;if(elm.onchange!=null&&elm.onchange!='')eval('elm.onchange();')}return true;case"mceCodeEditor":var template=new Array();template['file']='source_editor.htm';template['width']=parseInt(tinyMCE.getParam("theme_advanced_source_editor_width",720));template['height']=parseInt(tinyMCE.getParam("theme_advanced_source_editor_height",580));tinyMCE.openWindow(template,{editor_id:editor_id,resizable:"yes",scrollbars:"no",inline:"yes"});return true;case"mceCharMap":var template=new Array();template['file']='charmap.htm';template['width']=550+(tinyMCE.isOpera?40:0);template['height']=250;template['width']+=tinyMCE.getLang('lang_theme_advanced_charmap_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_charmap_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;case"mceInsertAnchor":var template=new Array();template['file']='anchor.htm';template['width']=320;template['height']=90+(tinyMCE.isNS7?30:0);template['width']+=tinyMCE.getLang('lang_theme_advanced_anchor_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_anchor_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;case"mceNewDocument":if(confirm(tinyMCE.entityDecode(tinyMCE.getLang('lang_newdocument'))))tinyMCE.execInstanceCommand(editor_id,'mceSetContent',false,' ');return true}return false},getEditorTemplate:function(settings,editorId){function removeFromArray(in_array,remove_array){var outArray=new Array(),skip;for(var i=0;i<in_array.length;i++){skip=false;for(var j=0;j<remove_array.length;j++){if(in_array[i]==remove_array[j]){skip=true}}if(!skip){outArray[outArray.length]=in_array[i]}}return outArray}function addToArray(in_array,add_array){for(var i=0;i<add_array.length;i++){in_array[in_array.length]=add_array[i]}return in_array}var template=new Array();var deltaHeight=0;var resizing=tinyMCE.getParam("theme_advanced_resizing",false);var path=tinyMCE.getParam("theme_advanced_path",true);var statusbarHTML='<div id="{$editor_id}_path" class="mceStatusbarPathText" style="display: '+(path?"block":"none")+'">&#160;</div><div id="{$editor_id}_resize" class="mceStatusbarResize" style="display: '+(resizing?"block":"none")+'" onmousedown="tinyMCE.themes.advanced._setResizing(event,\'{$editor_id}\',true);"></div><br style="clear: both" />';var layoutManager=tinyMCE.getParam("theme_advanced_layout_manager","SimpleLayout");var styleSelectHTML='<option value="">{$lang_theme_style_select}</option>';if(settings['theme_advanced_styles']){var stylesAr=settings['theme_advanced_styles'].split(';');for(var i=0;i<stylesAr.length;i++){var key,value;key=stylesAr[i].split('=')[0];value=stylesAr[i].split('=')[1];styleSelectHTML+='<option value="'+value+'">'+key+'</option>'}TinyMCE_AdvancedTheme._autoImportCSSClasses=false}switch(layoutManager){case"SimpleLayout":var toolbarHTML="";var toolbarLocation=tinyMCE.getParam("theme_advanced_toolbar_location","bottom");var toolbarAlign=tinyMCE.getParam("theme_advanced_toolbar_align","center");var pathLocation=tinyMCE.getParam("theme_advanced_path_location","none");var statusbarLocation=tinyMCE.getParam("theme_advanced_statusbar_location",pathLocation);var defVals={theme_advanced_buttons1:"bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,separator,sub,sup,separator,charmap"};toolbarHTML+='<a href="#" accesskey="q" title="'+tinyMCE.getLang("lang_toolbar_focus")+'"';if(!tinyMCE.getParam("accessibility_focus"))toolbarHTML+=' onfocus="tinyMCE.getInstanceById(\''+editorId+'\').getWin().focus();"';toolbarHTML+='></a>';for(var i=1;i<100;i++){var def=defVals["theme_advanced_buttons"+i];var buttons=tinyMCE.getParam("theme_advanced_buttons"+i,def==null?'':def,true,',');if(buttons.length==0)break;buttons=removeFromArray(buttons,tinyMCE.getParam("theme_advanced_disable","",true,','));buttons=addToArray(buttons,tinyMCE.getParam("theme_advanced_buttons"+i+"_add","",true,','));buttons=addToArray(tinyMCE.getParam("theme_advanced_buttons"+i+"_add_before","",true,','),buttons);for(var b=0;b<buttons.length;b++)toolbarHTML+=tinyMCE.getControlHTML(buttons[b]);if(buttons.length>0){toolbarHTML+="<br />";deltaHeight-=23}}toolbarHTML+='<a href="#" accesskey="z" onfocus="tinyMCE.getInstanceById(\''+editorId+'\').getWin().focus();"></a>';template['html']='<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width_style};height:{$height_style}"><tbody>';if(toolbarLocation=="top")template['html']+='<tr><td dir="ltr" class="mceToolbarTop" align="'+toolbarAlign+'" height="1" nowrap="nowrap"><span id="'+editorId+'_toolbar" class="mceToolbarContainer">'+toolbarHTML+'</span></td></tr>';if(statusbarLocation=="top"){template['html']+='<tr><td class="mceStatusbarTop" height="1">'+statusbarHTML+'</td></tr>';deltaHeight-=23}template['html']+='<tr><td align="center"><span id="{$editor_id}"></span></td></tr>';if(toolbarLocation=="bottom")template['html']+='<tr><td dir="ltr" class="mceToolbarBottom" align="'+toolbarAlign+'" height="1"><span id="'+editorId+'_toolbar" class="mceToolbarContainer">'+toolbarHTML+'</span></td></tr>';if(toolbarLocation=="external"){var bod=document.body;var elm=document.createElement("div");toolbarHTML=tinyMCE.replaceVar(toolbarHTML,'style_select_options',styleSelectHTML);toolbarHTML=tinyMCE.applyTemplate(toolbarHTML,{editor_id:editorId});elm.className="mceToolbarExternal";elm.id=editorId+"_toolbar";elm.innerHTML='<table width="100%" border="0" align="center"><tr><td align="center">'+toolbarHTML+'</td></tr></table>';bod.appendChild(elm);deltaHeight=0;tinyMCE.getInstanceById(editorId).toolbarElement=elm;}else{tinyMCE.getInstanceById(editorId).toolbarElement=null}if(statusbarLocation=="bottom"){template['html']+='<tr><td class="mceStatusbarBottom" height="1">'+statusbarHTML+'</td></tr>';deltaHeight-=23}template['html']+='</tbody></table>';break;case"RowLayout":template['html']='<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width}px;height:{$height}px"><tbody>';var containers=tinyMCE.getParam("theme_advanced_containers","",true,",");var defaultContainerCSS=tinyMCE.getParam("theme_advanced_containers_default_class","container");var defaultContainerAlign=tinyMCE.getParam("theme_advanced_containers_default_align","center");for(var i=0;i<containers.length;i++){if(containers[i]=="mceEditor")template['html']+='<tr><td align="center" class="mceEditor_border"><span id="{$editor_id}"></span></td></tr>';else if(containers[i]=="mceElementpath"||containers[i]=="mceStatusbar"){var pathClass="mceStatusbar";if(i==containers.length-1){pathClass="mceStatusbarBottom"}else if(i==0){pathClass="mceStatusbar"}else{deltaHeight-=2}template['html']+='<tr><td class="'+pathClass+'" height="1">'+statusbarHTML+'</td></tr>';deltaHeight-=22}else{var curContainer=tinyMCE.getParam("theme_advanced_container_"+containers[i],"",true,',');var curContainerHTML="";var curAlign=tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_align",defaultContainerAlign);var curCSS=tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_class",defaultContainerCSS);curContainer=removeFromArray(curContainer,tinyMCE.getParam("theme_advanced_disable","",true,','));for(var j=0;j<curContainer.length;j++)curContainerHTML+=tinyMCE.getControlHTML(curContainer[j]);if(curContainer.length>0){curContainerHTML+="<br />";deltaHeight-=23}template['html']+='<tr><td class="'+curCSS+'" align="'+curAlign+'" height="1">'+curContainerHTML+'</td></tr>'}}template['html']+='</tbody></table>';break;case"CustomLayout":var customLayout=tinyMCE.getParam("theme_advanced_custom_layout","");if(customLayout!=""&&eval("typeof("+customLayout+")")!="undefined"){template=eval(customLayout+"(template);")}break}if(resizing)template['html']+='<span id="{$editor_id}_resize_box" class="mceResizeBox"></span>';template['html']=tinyMCE.replaceVar(template['html'],'style_select_options',styleSelectHTML);if(!template['delta_width'])template['delta_width']=0;if(!template['delta_height'])template['delta_height']=deltaHeight;return template},initInstance:function(inst){if(tinyMCE.getParam("theme_advanced_resizing",false)){if(tinyMCE.getParam("theme_advanced_resizing_use_cookie",true)){var w=TinyMCE_AdvancedTheme._getCookie("TinyMCE_"+inst.editorId+"_width");var h=TinyMCE_AdvancedTheme._getCookie("TinyMCE_"+inst.editorId+"_height");TinyMCE_AdvancedTheme._resizeTo(inst,w,h,tinyMCE.getParam("theme_advanced_resize_horizontal",true))}}inst.addShortcut('ctrl','k','lang_link_desc','mceLink')},removeInstance:function(inst){new TinyMCE_Layer(inst.editorId+'_fcMenu').remove();new TinyMCE_Layer(inst.editorId+'_bcMenu').remove()},hideInstance:function(inst){TinyMCE_AdvancedTheme._hideMenus(inst.editorId)},_handleMenuEvent:function(e){var te=tinyMCE.isMSIE?window.event.srcElement:e.target;tinyMCE._menuButtonEvent(e.type=="mouseover"?"over":"out",document.getElementById(te._switchId));if(e.type=="click")tinyMCE.execInstanceCommand(te._editor_id,te._command)},_hideMenus:function(id){var fcml=new TinyMCE_Layer(id+'_fcMenu'),bcml=new TinyMCE_Layer(id+'_bcMenu');if(fcml.exists()&&fcml.isVisible()){tinyMCE.switchClass(id+'_forecolor','mceMenuButton');fcml.hide()}if(bcml.exists()&&bcml.isVisible()){tinyMCE.switchClass(id+'_backcolor','mceMenuButton');bcml.hide()}},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection,setup_content){var alignNode,breakOut,classNode;function selectByValue(select_elm,value,first_index){first_index=typeof(first_index)=="undefined"?false:true;if(select_elm){for(var i=0;i<select_elm.options.length;i++){var ov=""+select_elm.options[i].value;if(first_index&&ov.toLowerCase().indexOf(value.toLowerCase())==0){select_elm.selectedIndex=i;return true}if(ov==value){select_elm.selectedIndex=i;return true}}}return false};if(node==null)return;var pathElm=document.getElementById(editor_id+"_path");var inst=tinyMCE.getInstanceById(editor_id);var doc=inst.getDoc();TinyMCE_AdvancedTheme._hideMenus(editor_id);if(pathElm){var parentNode=node;var path=new Array();while(parentNode!=null){if(parentNode.nodeName.toUpperCase()=="BODY"){break}if(parentNode.nodeType==1&&tinyMCE.getAttrib(parentNode,"class").indexOf('mceItemHidden')==-1){path[path.length]=parentNode}parentNode=parentNode.parentNode}var html="";for(var i=path.length-1;i>=0;i--){var nodeName=path[i].nodeName.toLowerCase();var nodeData="";if(nodeName.indexOf("html:")==0)nodeName=nodeName.substring(5);if(nodeName=="b"){nodeName="strong"}if(nodeName=="i"){nodeName="em"}if(nodeName=="span"){var cn=tinyMCE.getAttrib(path[i],"class");if(cn!=""&&cn.indexOf('mceItem')==-1)nodeData+="class: "+cn+" ";var st=tinyMCE.getAttrib(path[i],"style");if(st!=""){st=tinyMCE.serializeStyle(tinyMCE.parseStyle(st));nodeData+="style: "+tinyMCE.xmlEncode(st)+" "}}if(nodeName=="font"){if(tinyMCE.getParam("convert_fonts_to_spans"))nodeName="span";var face=tinyMCE.getAttrib(path[i],"face");if(face!="")nodeData+="font: "+tinyMCE.xmlEncode(face)+" ";var size=tinyMCE.getAttrib(path[i],"size");if(size!="")nodeData+="size: "+tinyMCE.xmlEncode(size)+" ";var color=tinyMCE.getAttrib(path[i],"color");if(color!="")nodeData+="color: "+tinyMCE.xmlEncode(color)+" "}if(tinyMCE.getAttrib(path[i],'id')!=""){nodeData+="id: "+path[i].getAttribute('id')+" "}var className=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i],"class"),false);if(className!=""&&className.indexOf('mceItem')==-1)nodeData+="class: "+className+" ";if(tinyMCE.getAttrib(path[i],'src')!=""){var src=tinyMCE.getAttrib(path[i],"mce_src");if(src=="")src=tinyMCE.getAttrib(path[i],"src");nodeData+="src: "+tinyMCE.xmlEncode(src)+" "}if(path[i].nodeName=='A'&&tinyMCE.getAttrib(path[i],'href')!=""){var href=tinyMCE.getAttrib(path[i],"mce_href");if(href=="")href=tinyMCE.getAttrib(path[i],"href");nodeData+="href: "+tinyMCE.xmlEncode(href)+" "}className=tinyMCE.getAttrib(path[i],"class");if((nodeName=="img"||nodeName=="span")&&className.indexOf('mceItem')!=-1){nodeName=className.replace(/mceItem([a-z]+)/gi,'$1').toLowerCase();nodeData=path[i].getAttribute('title')}if(nodeName=="a"&&(anchor=tinyMCE.getAttrib(path[i],"name"))!=""){nodeName="a";nodeName+="#"+tinyMCE.xmlEncode(anchor);nodeData=""}if(tinyMCE.getAttrib(path[i],'name').indexOf("mce_")!=0){var className=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i],"class"),false);if(className!=""&&className.indexOf('mceItem')==-1){nodeName+="."+className}}var cmd='tinyMCE.execInstanceCommand(\''+editor_id+'\',\'mceSelectNodeDepth\',false,\''+i+'\');';html+='<a title="'+nodeData+'" href="javascript:'+cmd+'" onclick="'+cmd+'return false;" onmousedown="return false;" target="_self" class="mcePathItem">'+nodeName+'</a>';if(i>0){html+=" &raquo; "}}pathElm.innerHTML='<a href="#" accesskey="x"></a>'+tinyMCE.getLang('lang_theme_path')+": "+html+'&#160;'}tinyMCE.switchClass(editor_id+'_justifyleft','mceButtonNormal');tinyMCE.switchClass(editor_id+'_justifyright','mceButtonNormal');tinyMCE.switchClass(editor_id+'_justifycenter','mceButtonNormal');tinyMCE.switchClass(editor_id+'_justifyfull','mceButtonNormal');tinyMCE.switchClass(editor_id+'_bold','mceButtonNormal');tinyMCE.switchClass(editor_id+'_italic','mceButtonNormal');tinyMCE.switchClass(editor_id+'_underline','mceButtonNormal');tinyMCE.switchClass(editor_id+'_strikethrough','mceButtonNormal');tinyMCE.switchClass(editor_id+'_bullist','mceButtonNormal');tinyMCE.switchClass(editor_id+'_numlist','mceButtonNormal');tinyMCE.switchClass(editor_id+'_sub','mceButtonNormal');tinyMCE.switchClass(editor_id+'_sup','mceButtonNormal');tinyMCE.switchClass(editor_id+'_anchor','mceButtonNormal');tinyMCE.switchClass(editor_id+'_link','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_unlink','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_outdent','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_image','mceButtonNormal');tinyMCE.switchClass(editor_id+'_hr','mceButtonNormal');if(node.nodeName=="A"&&tinyMCE.getAttrib(node,"class").indexOf('mceItemAnchor')!=-1)tinyMCE.switchClass(editor_id+'_anchor','mceButtonSelected');var anchorLink=tinyMCE.getParentElement(node,"a","href");if(anchorLink||any_selection){tinyMCE.switchClass(editor_id+'_link',anchorLink?'mceButtonSelected':'mceButtonNormal');tinyMCE.switchClass(editor_id+'_unlink',anchorLink?'mceButtonSelected':'mceButtonNormal')}tinyMCE.switchClass(editor_id+'_visualaid',visual_aid?'mceButtonSelected':'mceButtonNormal');if(undo_levels!=-1){tinyMCE.switchClass(editor_id+'_undo','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_redo','mceButtonDisabled')}if(tinyMCE.getParentElement(node,"li,blockquote"))tinyMCE.switchClass(editor_id+'_outdent','mceButtonNormal');if(undo_index!=-1&&(undo_index<undo_levels-1&&undo_levels>0))tinyMCE.switchClass(editor_id+'_redo','mceButtonNormal');if(undo_index!=-1&&(undo_index>0&&undo_levels>0))tinyMCE.switchClass(editor_id+'_undo','mceButtonNormal');var selectElm=document.getElementById(editor_id+"_styleSelect");if(selectElm){TinyMCE_AdvancedTheme._setupCSSClasses(editor_id);classNode=node;breakOut=false;var index=0;do{if(classNode&&classNode.className){for(var i=0;i<selectElm.options.length;i++){if(selectElm.options[i].value==classNode.className){index=i;breakOut=true;break}}}}while(!breakOut&&classNode!=null&&(classNode=classNode.parentNode)!=null);selectElm.selectedIndex=index}var selectElm=document.getElementById(editor_id+"_formatSelect");if(selectElm){var elm=tinyMCE.getParentElement(node,"p,div,h1,h2,h3,h4,h5,h6,pre,address");if(elm)selectByValue(selectElm,"<"+elm.nodeName.toLowerCase()+">");else selectByValue(selectElm,"")}var selectElm=document.getElementById(editor_id+"_fontNameSelect");if(selectElm){if(!tinyMCE.isSafari&&!(tinyMCE.isMSIE&&!tinyMCE.isOpera)){var face=inst.queryCommandValue('FontName');face=face==null||face==""?"":face;selectByValue(selectElm,face,face!="")}else{var elm=tinyMCE.getParentElement(node,"font","face");if(elm){var family=tinyMCE.getAttrib(elm,"face");if(family=='')family=''+elm.style.fontFamily;if(!selectByValue(selectElm,family,family!=""))selectByValue(selectElm,"")}else selectByValue(selectElm,"")}}var selectElm=document.getElementById(editor_id+"_fontSizeSelect");if(selectElm){if(!tinyMCE.isSafari&&!tinyMCE.isOpera){var size=inst.queryCommandValue('FontSize');selectByValue(selectElm,size==null||size==""?"0":size)}else{var elm=tinyMCE.getParentElement(node,"font","size");if(elm){var size=tinyMCE.getAttrib(elm,"size");if(size==''){var sizes=new Array('','8px','10px','12px','14px','18px','24px','36px');size=''+elm.style.fontSize;for(var i=0;i<sizes.length;i++){if((''+sizes[i])==size){size=i;break}}}if(!selectByValue(selectElm,size))selectByValue(selectElm,"")}else selectByValue(selectElm,"0")}}alignNode=node;breakOut=false;do{if(!alignNode.getAttribute||!alignNode.getAttribute('align'))continue;switch(alignNode.getAttribute('align').toLowerCase()){case"left":tinyMCE.switchClass(editor_id+'_justifyleft','mceButtonSelected');breakOut=true;break;case"right":tinyMCE.switchClass(editor_id+'_justifyright','mceButtonSelected');breakOut=true;break;case"middle":case"center":tinyMCE.switchClass(editor_id+'_justifycenter','mceButtonSelected');breakOut=true;break;case"justify":tinyMCE.switchClass(editor_id+'_justifyfull','mceButtonSelected');breakOut=true;break}}while(!breakOut&&(alignNode=alignNode.parentNode)!=null);var div=tinyMCE.getParentElement(node,"div");if(div&&div.style.textAlign=="center")tinyMCE.switchClass(editor_id+'_justifycenter','mceButtonSelected');if(!setup_content){var ar=new Array("Bold","_bold","Italic","_italic","Strikethrough","_strikethrough","superscript","_sup","subscript","_sub");for(var i=0;i<ar.length;i+=2){if(inst.queryCommandState(ar[i]))tinyMCE.switchClass(editor_id+ar[i+1],'mceButtonSelected')}if(inst.queryCommandState("Underline")&&(node.parentNode==null||node.parentNode.nodeName!="A"))tinyMCE.switchClass(editor_id+'_underline','mceButtonSelected')}do{switch(node.nodeName){case"UL":tinyMCE.switchClass(editor_id+'_bullist','mceButtonSelected');break;case"OL":tinyMCE.switchClass(editor_id+'_numlist','mceButtonSelected');break;case"HR":tinyMCE.switchClass(editor_id+'_hr','mceButtonSelected');break;case"IMG":if(tinyMCE.getAttrib(node,'name').indexOf('mce_')!=0&&tinyMCE.getAttrib(node,'class').indexOf('mceItem')==-1){tinyMCE.switchClass(editor_id+'_image','mceButtonSelected')}break}}while((node=node.parentNode)!=null)},_setupCSSClasses:function(editor_id){var i,selectElm;if(!TinyMCE_AdvancedTheme._autoImportCSSClasses)return;selectElm=document.getElementById(editor_id+'_styleSelect');if(selectElm&&selectElm.getAttribute('cssImported')!='true'){var csses=tinyMCE.getCSSClasses(editor_id);if(csses&&selectElm){for(i=0;i<csses.length;i++)selectElm.options[selectElm.options.length]=new Option(csses[i],csses[i])}if(csses!=null&&csses.length>0)selectElm.setAttribute('cssImported','true')}},_setCookie:function(name,value,expires,path,domain,secure){var curCookie=name+"="+escape(value)+((expires)?"; expires="+expires.toGMTString():"")+((path)?"; path="+escape(path):"")+((domain)?"; domain="+domain:"")+((secure)?"; secure":"");document.cookie=curCookie},_getCookie:function(name){var dc=document.cookie;var prefix=name+"=";var begin=dc.indexOf("; "+prefix);if(begin==-1){begin=dc.indexOf(prefix);if(begin!=0)return null}else begin+=2;var end=document.cookie.indexOf(";",begin);if(end==-1)end=dc.length;return unescape(dc.substring(begin+prefix.length,end))},_resizeTo:function(inst,w,h,set_w){var editorContainer=document.getElementById(inst.editorId+'_parent');var tableElm=editorContainer.firstChild;var iframe=inst.iframeElement;if(w==null||w=="null"){set_w=false;w=0}if(h==null||h=="null")return;w=parseInt(w);h=parseInt(h);if(tinyMCE.isGecko){w+=2;h+=2}var dx=w-tableElm.clientWidth;var dy=h-tableElm.clientHeight;w=w<1?30:w;h=h<1?30:h;if(set_w)tableElm.style.width=w+"px";tableElm.style.height=h+"px";iw=iframe.clientWidth+dx;ih=iframe.clientHeight+dy;iw=iw<1?30:iw;ih=ih<1?30:ih;if(tinyMCE.isGecko){iw-=2;ih-=2}if(set_w)iframe.style.width=iw+"px";iframe.style.height=ih+"px";if(set_w){var tableBodyElm=tableElm.firstChild;var minIframeWidth=tableBodyElm.scrollWidth;if(inst.iframeElement.clientWidth<minIframeWidth){dx=minIframeWidth-inst.iframeElement.clientWidth;inst.iframeElement.style.width=(iw+dx)+"px"}}inst.useCSS=false},_resizeEventHandler:function(e){var resizer=TinyMCE_AdvancedTheme._resizer;if(!resizer.resizing)return;e=typeof(e)=="undefined"?window.event:e;var dx=e.screenX-resizer.downX;var dy=e.screenY-resizer.downY;var resizeBox=resizer.resizeBox;var editorId=resizer.editorId;switch(e.type){case"mousemove":var w,h;w=resizer.width+dx;h=resizer.height+dy;w=w<1?1:w;h=h<1?1:h;if(resizer.horizontal)resizeBox.style.width=w+"px";resizeBox.style.height=h+"px";break;case"mouseup":TinyMCE_AdvancedTheme._setResizing(e,editorId,false);TinyMCE_AdvancedTheme._resizeTo(tinyMCE.getInstanceById(editorId),resizer.width+dx,resizer.height+dy,resizer.horizontal);if(tinyMCE.getParam("theme_advanced_resizing_use_cookie",true)){var expires=new Date();expires.setTime(expires.getTime()+3600000*24*30);TinyMCE_AdvancedTheme._setCookie("TinyMCE_"+editorId+"_width",""+(resizer.horizontal?resizer.width+dx:""),expires);TinyMCE_AdvancedTheme._setCookie("TinyMCE_"+editorId+"_height",""+(resizer.height+dy),expires)}break}},_setResizing:function(e,editor_id,state){e=typeof(e)=="undefined"?window.event:e;var resizer=TinyMCE_AdvancedTheme._resizer;var editorContainer=document.getElementById(editor_id+'_parent');var editorArea=document.getElementById(editor_id+'_parent').firstChild;var resizeBox=document.getElementById(editor_id+'_resize_box');var inst=tinyMCE.getInstanceById(editor_id);if(state){var width=editorArea.clientWidth;var height=editorArea.clientHeight;resizeBox.style.width=width+"px";resizeBox.style.height=height+"px";resizer.iframeWidth=inst.iframeElement.clientWidth;resizer.iframeHeight=inst.iframeElement.clientHeight;editorArea.style.display="none";resizeBox.style.display="block";if(!resizer.eventHandlers){if(tinyMCE.isMSIE)tinyMCE.addEvent(document,"mousemove",TinyMCE_AdvancedTheme._resizeEventHandler);else tinyMCE.addEvent(window,"mousemove",TinyMCE_AdvancedTheme._resizeEventHandler);tinyMCE.addEvent(document,"mouseup",TinyMCE_AdvancedTheme._resizeEventHandler);resizer.eventHandlers=true}resizer.resizing=true;resizer.downX=e.screenX;resizer.downY=e.screenY;resizer.width=parseInt(resizeBox.style.width);resizer.height=parseInt(resizeBox.style.height);resizer.editorId=editor_id;resizer.resizeBox=resizeBox;resizer.horizontal=tinyMCE.getParam("theme_advanced_resize_horizontal",true)}else{resizer.resizing=false;resizeBox.style.display="none";editorArea.style.display=tinyMCE.isMSIE&&!tinyMCE.isOpera?"block":"table";tinyMCE.execCommand('mceResetDesignMode')}},_getColorHTML:function(id,n,cm){var i,h,cl;h='<span class="mceMenuLine"></span>';cl=tinyMCE.getParam(n,TinyMCE_AdvancedTheme._defColors).split(',');h+='<table class="mceColors"><tr>';for(i=0;i<cl.length;i++){c='tinyMCE.execInstanceCommand(\''+id+'\', \''+cm+'\', false, \'#'+cl[i]+'\');';h+='<td><a href="javascript:'+c+'" style="background-color: #'+cl[i]+'" onclick="'+c+';return false;"></a></td>';if((i+1)%8==0)h+='</tr><tr>'}h+='</tr></table>';if(tinyMCE.getParam("theme_advanced_more_colors",true))h+='<a href="javascript:void(0);" onclick="TinyMCE_AdvancedTheme._pickColor(\''+id+'\',\''+cm+'\');" class="mceMoreColors">'+tinyMCE.getLang('lang_more_colors')+'</a>';return h},_pickColor:function(id,cm){var inputColor,inst=tinyMCE.selectedInstance;if(cm=='forecolor'&&inst)inputColor=inst.foreColor;if((cm=='backcolor'||cm=='HiliteColor')&&inst)inputColor=inst.backColor;tinyMCE.execCommand('mceColorPicker',true,{color:inputColor,callback:function(c){tinyMCE.execInstanceCommand(id,cm,false,c)}})},_insertImage:function(src,alt,border,hspace,vspace,width,height,align,title,onmouseover,onmouseout){tinyMCE.execCommand("mceInsertContent",false,tinyMCE.createTagHTML('img',{src:tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],src),mce_src:src,alt:alt,border:border,hspace:hspace,vspace:vspace,width:width,height:height,align:align,title:title,onmouseover:onmouseover,onmouseout:onmouseout}))},_insertLink:function(href,target,title,onclick,style_class){tinyMCE.execCommand('mceBeginUndoLevel');if(tinyMCE.selectedInstance&&tinyMCE.selectedElement&&tinyMCE.selectedElement.nodeName.toLowerCase()=="img"){var doc=tinyMCE.selectedInstance.getDoc();var linkElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"a");var newLink=false;if(!linkElement){linkElement=doc.createElement("a");newLink=true}var mhref=href;var thref=eval(tinyMCE.settings['urlconverter_callback']+"(href, linkElement);");mhref=tinyMCE.getParam('convert_urls')?href:mhref;tinyMCE.setAttrib(linkElement,'href',thref);tinyMCE.setAttrib(linkElement,'mce_href',mhref);tinyMCE.setAttrib(linkElement,'target',target);tinyMCE.setAttrib(linkElement,'title',title);tinyMCE.setAttrib(linkElement,'onclick',onclick);tinyMCE.setAttrib(linkElement,'class',style_class);if(newLink){linkElement.appendChild(tinyMCE.selectedElement.cloneNode(true));tinyMCE.selectedElement.parentNode.replaceChild(linkElement,tinyMCE.selectedElement)}return}if(!tinyMCE.linkElement&&tinyMCE.selectedInstance){if(tinyMCE.isSafari){tinyMCE.execCommand("mceInsertContent",false,'<a href="'+tinyMCE.uniqueURL+'">'+tinyMCE.selectedInstance.selection.getSelectedHTML()+'</a>')}else tinyMCE.selectedInstance.contentDocument.execCommand("createlink",false,tinyMCE.uniqueURL);tinyMCE.linkElement=tinyMCE.getElementByAttributeValue(tinyMCE.selectedInstance.contentDocument.body,"a","href",tinyMCE.uniqueURL);var elementArray=tinyMCE.getElementsByAttributeValue(tinyMCE.selectedInstance.contentDocument.body,"a","href",tinyMCE.uniqueURL);for(var i=0;i<elementArray.length;i++){var mhref=href;var thref=eval(tinyMCE.settings['urlconverter_callback']+"(href, elementArray[i]);");mhref=tinyMCE.getParam('convert_urls')?href:mhref;tinyMCE.setAttrib(elementArray[i],'href',thref);tinyMCE.setAttrib(elementArray[i],'mce_href',mhref);tinyMCE.setAttrib(elementArray[i],'target',target);tinyMCE.setAttrib(elementArray[i],'title',title);tinyMCE.setAttrib(elementArray[i],'onclick',onclick);tinyMCE.setAttrib(elementArray[i],'class',style_class)}tinyMCE.linkElement=elementArray[0]}if(tinyMCE.linkElement){var mhref=href;href=eval(tinyMCE.settings['urlconverter_callback']+"(href, tinyMCE.linkElement);");mhref=tinyMCE.getParam('convert_urls')?href:mhref;tinyMCE.setAttrib(tinyMCE.linkElement,'href',href);tinyMCE.setAttrib(tinyMCE.linkElement,'mce_href',mhref);tinyMCE.setAttrib(tinyMCE.linkElement,'target',target);tinyMCE.setAttrib(tinyMCE.linkElement,'title',title);tinyMCE.setAttrib(tinyMCE.linkElement,'onclick',onclick);tinyMCE.setAttrib(tinyMCE.linkElement,'class',style_class)}tinyMCE.execCommand('mceEndUndoLevel')}};tinyMCE.addTheme("advanced",TinyMCE_AdvancedTheme);tinyMCE.addButtonMap(TinyMCE_AdvancedTheme._buttonMap);
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
+(function(e){var d=e.DOM,b=e.dom.Event,h=e.extend,f=e.each,a=e.util.Cookie,g,c=e.explode;e.ThemeManager.requireLangPack("advanced");e.create("tinymce.themes.AdvancedTheme",{sizes:[8,10,12,14,18,24,36],controls:{bold:["bold_desc","Bold"],italic:["italic_desc","Italic"],underline:["underline_desc","Underline"],strikethrough:["striketrough_desc","Strikethrough"],justifyleft:["justifyleft_desc","JustifyLeft"],justifycenter:["justifycenter_desc","JustifyCenter"],justifyright:["justifyright_desc","JustifyRight"],justifyfull:["justifyfull_desc","JustifyFull"],bullist:["bullist_desc","InsertUnorderedList"],numlist:["numlist_desc","InsertOrderedList"],outdent:["outdent_desc","Outdent"],indent:["indent_desc","Indent"],cut:["cut_desc","Cut"],copy:["copy_desc","Copy"],paste:["paste_desc","Paste"],undo:["undo_desc","Undo"],redo:["redo_desc","Redo"],link:["link_desc","mceLink"],unlink:["unlink_desc","unlink"],image:["image_desc","mceImage"],cleanup:["cleanup_desc","mceCleanup"],help:["help_desc","mceHelp"],code:["code_desc","mceCodeEditor"],hr:["hr_desc","InsertHorizontalRule"],removeformat:["removeformat_desc","RemoveFormat"],sub:["sub_desc","subscript"],sup:["sup_desc","superscript"],forecolor:["forecolor_desc","ForeColor"],forecolorpicker:["forecolor_desc","mceForeColor"],backcolor:["backcolor_desc","HiliteColor"],backcolorpicker:["backcolor_desc","mceBackColor"],charmap:["charmap_desc","mceCharMap"],visualaid:["visualaid_desc","mceToggleVisualAid"],anchor:["anchor_desc","mceInsertAnchor"],newdocument:["newdocument_desc","mceNewDocument"],blockquote:["blockquote_desc","mceBlockQuote"]},stateControls:["bold","italic","underline","strikethrough","bullist","numlist","justifyleft","justifycenter","justifyright","justifyfull","sub","sup","blockquote"],init:function(j,k){var l=this,m,i,n;l.editor=j;l.url=k;l.onResolveName=new e.util.Dispatcher(this);l.settings=m=h({theme_advanced_path:true,theme_advanced_toolbar_location:"bottom",theme_advanced_buttons1:"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,|,sub,sup,|,charmap",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"center",theme_advanced_fonts:"Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",theme_advanced_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1,theme_advanced_font_sizes:"1,2,3,4,5,6,7",readonly:j.settings.readonly},j.settings);if(!m.font_size_style_values){m.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt"}if(e.is(m.theme_advanced_font_sizes,"string")){m.font_size_style_values=e.explode(m.font_size_style_values);m.font_size_classes=e.explode(m.font_size_classes||"");n={};j.settings.theme_advanced_font_sizes=m.theme_advanced_font_sizes;f(j.getParam("theme_advanced_font_sizes","","hash"),function(q,p){var o;if(p==q&&q>=1&&q<=7){p=q+" ("+l.sizes[q-1]+"pt)";if(j.settings.convert_fonts_to_spans){o=m.font_size_classes[q-1];q=m.font_size_style_values[q-1]||(l.sizes[q-1]+"pt")}}if(/^\s*\./.test(q)){o=q.replace(/\./g,"")}n[p]=o?{"class":o}:{fontSize:q}});m.theme_advanced_font_sizes=n}if((i=m.theme_advanced_path_location)&&i!="none"){m.theme_advanced_statusbar_location=m.theme_advanced_path_location}if(m.theme_advanced_statusbar_location=="none"){m.theme_advanced_statusbar_location=0}j.onInit.add(function(){j.onNodeChange.add(l._nodeChanged,l);if(j.settings.content_css!==false){j.dom.loadCSS(j.baseURI.toAbsolute("themes/advanced/skins/"+j.settings.skin+"/content.css"))}});j.onSetProgressState.add(function(q,o,r){var s,t=q.id,p;if(o){l.progressTimer=setTimeout(function(){s=q.getContainer();s=s.insertBefore(d.create("DIV",{style:"position:relative"}),s.firstChild);p=d.get(q.id+"_tbl");d.add(s,"div",{id:t+"_blocker","class":"mceBlocker",style:{width:p.clientWidth+2,height:p.clientHeight+2}});d.add(s,"div",{id:t+"_progress","class":"mceProgress",style:{left:p.clientWidth/2,top:p.clientHeight/2}})},r||0)}else{d.remove(t+"_blocker");d.remove(t+"_progress");clearTimeout(l.progressTimer)}});d.loadCSS(m.editor_css?j.documentBaseURI.toAbsolute(m.editor_css):k+"/skins/"+j.settings.skin+"/ui.css");if(m.skin_variant){d.loadCSS(k+"/skins/"+j.settings.skin+"/ui_"+m.skin_variant+".css")}},createControl:function(l,i){var j,k;if(k=i.createControl(l)){return k}switch(l){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu()}if((j=this.controls[l])){return i.createButton(l,{title:"advanced."+j[0],cmd:j[1],ui:j[2],value:j[3]})}},execCommand:function(k,j,l){var i=this["_"+k];if(i){i.call(this,j,l);return true}return false},_importClasses:function(j){var i=this.editor,k=i.controlManager.get("styleselect");if(k.getLength()==0){f(i.dom.getClasses(),function(l){k.add(l["class"],l["class"])})}},_createStyleSelect:function(m){var j=this,i=j.editor,k=i.controlManager,l=k.createListBox("styleselect",{title:"advanced.style_select",onselect:function(n){if(l.selectedValue===n){i.execCommand("mceSetStyleInfo",0,{command:"removeformat"});l.select();return false}else{i.execCommand("mceSetCSSClass",0,n)}}});if(l){f(i.getParam("theme_advanced_styles","","hash"),function(o,n){if(o){l.add(j.editor.translate(n),o)}});l.onPostRender.add(function(o,p){if(!l.NativeListBox){b.add(p.id+"_text","focus",j._importClasses,j);b.add(p.id+"_text","mousedown",j._importClasses,j);b.add(p.id+"_open","focus",j._importClasses,j);b.add(p.id+"_open","mousedown",j._importClasses,j)}else{b.add(p.id,"focus",j._importClasses,j)}})}return l},_createFontSelect:function(){var k,j=this,i=j.editor;k=i.controlManager.createListBox("fontselect",{title:"advanced.fontdefault",cmd:"FontName"});if(k){f(i.getParam("theme_advanced_fonts",j.settings.theme_advanced_fonts,"hash"),function(m,l){k.add(i.translate(l),m,{style:m.indexOf("dings")==-1?"font-family:"+m:""})})}return k},_createFontSizeSelect:function(){var m=this,k=m.editor,n,l=0,j=[];n=k.controlManager.createListBox("fontsizeselect",{title:"advanced.font_size",onselect:function(i){if(i.fontSize){k.execCommand("FontSize",false,i.fontSize)}else{f(m.settings.theme_advanced_font_sizes,function(p,o){if(p["class"]){j.push(p["class"])}});k.editorCommands._applyInlineStyle("span",{"class":i["class"]},{check_classes:j})}}});if(n){f(m.settings.theme_advanced_font_sizes,function(o,i){var p=o.fontSize;if(p>=1&&p<=7){p=m.sizes[parseInt(p)-1]+"pt"}n.add(i,o,{style:"font-size:"+p,"class":"mceFontSize"+(l++)+(" "+(o["class"]||""))})})}return n},_createBlockFormats:function(){var k,i={p:"advanced.paragraph",address:"advanced.address",pre:"advanced.pre",h1:"advanced.h1",h2:"advanced.h2",h3:"advanced.h3",h4:"advanced.h4",h5:"advanced.h5",h6:"advanced.h6",div:"advanced.div",blockquote:"advanced.blockquote",code:"advanced.code",dt:"advanced.dt",dd:"advanced.dd",samp:"advanced.samp"},j=this;k=j.editor.controlManager.createListBox("formatselect",{title:"advanced.block",cmd:"FormatBlock"});if(k){f(j.editor.getParam("theme_advanced_blockformats",j.settings.theme_advanced_blockformats,"hash"),function(m,l){k.add(j.editor.translate(l!=m?l:i[m]),m,{"class":"mce_formatPreview mce_"+m})})}return k},_createForeColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_text_colors){l.colors=i}if(k.theme_advanced_default_foreground_color){l.default_color=k.theme_advanced_default_foreground_color}l.title="advanced.forecolor_desc";l.cmd="ForeColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("forecolor",l);return m},_createBackColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_background_colors){l.colors=i}if(k.theme_advanced_default_background_color){l.default_color=k.theme_advanced_default_background_color}l.title="advanced.backcolor_desc";l.cmd="HiliteColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("backcolor",l);return m},renderUI:function(k){var m,l,q,v=this,r=v.editor,w=v.settings,u,j,i;m=j=d.create("span",{id:r.id+"_parent","class":"mceEditor "+r.settings.skin+"Skin"+(w.skin_variant?" "+r.settings.skin+"Skin"+v._ufirst(w.skin_variant):"")});if(!d.boxModel){m=d.add(m,"div",{"class":"mceOldBoxModel"})}m=u=d.add(m,"table",{id:r.id+"_tbl","class":"mceLayout",cellSpacing:0,cellPadding:0});m=q=d.add(m,"tbody");switch((w.theme_advanced_layout_manager||"").toLowerCase()){case"rowlayout":l=v._rowLayout(w,q,k);break;case"customlayout":l=r.execCallback("theme_advanced_custom_layout",w,q,k,j);break;default:l=v._simpleLayout(w,q,k,j)}m=k.targetNode;i=d.stdMode?u.getElementsByTagName("tr"):u.rows;d.addClass(i[0],"mceFirst");d.addClass(i[i.length-1],"mceLast");f(d.select("tr",q),function(o){d.addClass(o.firstChild,"mceFirst");d.addClass(o.childNodes[o.childNodes.length-1],"mceLast")});if(d.get(w.theme_advanced_toolbar_container)){d.get(w.theme_advanced_toolbar_container).appendChild(j)}else{d.insertAfter(j,m)}b.add(r.id+"_path_row","click",function(n){n=n.target;if(n.nodeName=="A"){v._sel(n.className.replace(/^.*mcePath_([0-9]+).*$/,"$1"));return b.cancel(n)}});if(!r.getParam("accessibility_focus")){b.add(d.add(j,"a",{href:"#"},"<!-- IE -->"),"focus",function(){tinyMCE.get(r.id).focus()})}if(w.theme_advanced_toolbar_location=="external"){k.deltaHeight=0}v.deltaHeight=k.deltaHeight;k.targetNode=null;return{iframeContainer:l,editorContainer:r.id+"_parent",sizeContainer:u,deltaHeight:k.deltaHeight}},getInfo:function(){return{longname:"Advanced theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:e.majorVersion+"."+e.minorVersion}},resizeBy:function(i,j){var k=d.get(this.editor.id+"_tbl");this.resizeTo(k.clientWidth+i,k.clientHeight+j)},resizeTo:function(i,l){var j=this.editor,k=j.settings,n=d.get(j.id+"_tbl"),o=d.get(j.id+"_ifr"),m;i=Math.max(k.theme_advanced_resizing_min_width||100,i);l=Math.max(k.theme_advanced_resizing_min_height||100,l);i=Math.min(k.theme_advanced_resizing_max_width||65535,i);l=Math.min(k.theme_advanced_resizing_max_height||65535,l);m=n.clientHeight-o.clientHeight;d.setStyle(o,"height",l-m);d.setStyles(n,{width:i,height:l})},destroy:function(){var i=this.editor.id;b.clear(i+"_resize");b.clear(i+"_path_row");b.clear(i+"_external_close")},_simpleLayout:function(y,r,k,i){var x=this,u=x.editor,v=y.theme_advanced_toolbar_location,m=y.theme_advanced_statusbar_location,l,j,q,w;if(y.readonly){l=d.add(r,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"});return j}if(v=="top"){x._addToolbars(r,k)}if(v=="external"){l=w=d.create("div",{style:"position:relative"});l=d.add(l,"div",{id:u.id+"_external","class":"mceExternalToolbar"});d.add(l,"a",{id:u.id+"_external_close",href:"javascript:;","class":"mceExternalClose"});l=d.add(l,"table",{id:u.id+"_tblext",cellSpacing:0,cellPadding:0});q=d.add(l,"tbody");if(i.firstChild.className=="mceOldBoxModel"){i.firstChild.appendChild(w)}else{i.insertBefore(w,i.firstChild)}x._addToolbars(q,k);u.onMouseUp.add(function(){var o=d.get(u.id+"_external");d.show(o);d.hide(g);var n=b.add(u.id+"_external_close","click",function(){d.hide(u.id+"_external");b.remove(u.id+"_external_close","click",n)});d.show(o);d.setStyle(o,"top",0-d.getRect(u.id+"_tblext").h-1);d.hide(o);d.show(o);o.style.filter="";g=u.id+"_external";o=null})}if(m=="top"){x._addStatusBar(r,k)}if(!y.theme_advanced_toolbar_container){l=d.add(r,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"})}if(v=="bottom"){x._addToolbars(r,k)}if(m=="bottom"){x._addStatusBar(r,k)}return j},_rowLayout:function(w,m,k){var v=this,p=v.editor,u,x,i=p.controlManager,l,j,r,q;u=w.theme_advanced_containers_default_class||"";x=w.theme_advanced_containers_default_align||"center";f(c(w.theme_advanced_containers||""),function(s,o){var n=w["theme_advanced_container_"+s]||"";switch(n.toLowerCase()){case"mceeditor":l=d.add(m,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"});break;case"mceelementpath":v._addStatusBar(m,k);break;default:q=(w["theme_advanced_container_"+s+"_align"]||x).toLowerCase();q="mce"+v._ufirst(q);l=d.add(d.add(m,"tr"),"td",{"class":"mceToolbar "+(w["theme_advanced_container_"+s+"_class"]||u)+" "+q||x});r=i.createToolbar("toolbar"+o);v._addControls(n,r);d.setHTML(l,r.renderHTML());k.deltaHeight-=w.theme_advanced_row_height}});return j},_addControls:function(j,i){var k=this,l=k.settings,m,n=k.editor.controlManager;if(l.theme_advanced_disable&&!k._disabled){m={};f(c(l.theme_advanced_disable),function(o){m[o]=1});k._disabled=m}else{m=k._disabled}f(c(j),function(p){var o;if(m&&m[p]){return}if(p=="tablecontrols"){f(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"],function(q){q=k.createControl(q,n);if(q){i.add(q)}});return}o=k.createControl(p,n);if(o){i.add(o)}})},_addToolbars:function(w,k){var z=this,p,m,r=z.editor,A=z.settings,y,j=r.controlManager,u,l,q=[],x;x=A.theme_advanced_toolbar_align.toLowerCase();x="mce"+z._ufirst(x);l=d.add(d.add(w,"tr"),"td",{"class":"mceToolbar "+x});if(!r.getParam("accessibility_focus")){q.push(d.createHTML("a",{href:"#",onfocus:"tinyMCE.get('"+r.id+"').focus();"},"<!-- IE -->"))}q.push(d.createHTML("a",{href:"#",accesskey:"q",title:r.getLang("advanced.toolbar_focus")},"<!-- IE -->"));for(p=1;(y=A["theme_advanced_buttons"+p]);p++){m=j.createToolbar("toolbar"+p,{"class":"mceToolbarRow"+p});if(A["theme_advanced_buttons"+p+"_add"]){y+=","+A["theme_advanced_buttons"+p+"_add"]}if(A["theme_advanced_buttons"+p+"_add_before"]){y=A["theme_advanced_buttons"+p+"_add_before"]+","+y}z._addControls(y,m);q.push(m.renderHTML());k.deltaHeight-=A.theme_advanced_row_height}q.push(d.createHTML("a",{href:"#",accesskey:"z",title:r.getLang("advanced.toolbar_focus"),onfocus:"tinyMCE.getInstanceById('"+r.id+"').focus();"},"<!-- IE -->"));d.setHTML(l,q.join(""))},_addStatusBar:function(m,j){var k,v=this,p=v.editor,w=v.settings,i,q,u,l;k=d.add(m,"tr");k=l=d.add(k,"td",{"class":"mceStatusbar"});k=d.add(k,"div",{id:p.id+"_path_row"},w.theme_advanced_path?p.translate("advanced.path")+": ":"&#160;");d.add(k,"a",{href:"#",accesskey:"x"});if(w.theme_advanced_resizing){d.add(l,"a",{id:p.id+"_resize",href:"javascript:;",onclick:"return false;","class":"mceResize"});if(w.theme_advanced_resizing_use_cookie){p.onPostRender.add(function(){var n=a.getHash("TinyMCE_"+p.id+"_size"),r=d.get(p.id+"_tbl");if(!n){return}if(w.theme_advanced_resize_horizontal){r.style.width=Math.max(10,n.cw)+"px"}r.style.height=Math.max(10,n.ch)+"px";d.get(p.id+"_ifr").style.height=Math.max(10,parseInt(n.ch)+v.deltaHeight)+"px"})}p.onPostRender.add(function(){b.add(p.id+"_resize","mousedown",function(x){var z,t,o,s,y,r;z=d.get(p.id+"_tbl");o=z.clientWidth;s=z.clientHeight;miw=w.theme_advanced_resizing_min_width||100;mih=w.theme_advanced_resizing_min_height||100;maw=w.theme_advanced_resizing_max_width||65535;mah=w.theme_advanced_resizing_max_height||65535;t=d.add(d.get(p.id+"_parent"),"div",{"class":"mcePlaceHolder"});d.setStyles(t,{width:o,height:s});d.hide(z);d.show(t);i={x:x.screenX,y:x.screenY,w:o,h:s,dx:null,dy:null};q=b.add(d.doc,"mousemove",function(B){var n,A;i.dx=B.screenX-i.x;i.dy=B.screenY-i.y;n=Math.max(miw,i.w+i.dx);A=Math.max(mih,i.h+i.dy);n=Math.min(maw,n);A=Math.min(mah,A);if(w.theme_advanced_resize_horizontal){t.style.width=n+"px"}t.style.height=A+"px";return b.cancel(B)});u=b.add(d.doc,"mouseup",function(n){var A;b.remove(d.doc,"mousemove",q);b.remove(d.doc,"mouseup",u);z.style.display="";d.remove(t);if(i.dx===null){return}A=d.get(p.id+"_ifr");if(w.theme_advanced_resize_horizontal){z.style.width=Math.max(10,i.w+i.dx)+"px"}z.style.height=Math.max(10,i.h+i.dy)+"px";A.style.height=Math.max(10,A.clientHeight+i.dy)+"px";if(w.theme_advanced_resizing_use_cookie){a.setHash("TinyMCE_"+p.id+"_size",{cw:i.w+i.dx,ch:i.h+i.dy})}});return b.cancel(x)})})}j.deltaHeight-=21;k=m=null},_nodeChanged:function(l,u,k,q){var y=this,i,r=0,x,m,z=y.settings,w,j,o;if(z.readonly){return}e.each(y.stateControls,function(n){u.setActive(n,l.queryCommandState(y.controls[n][1]))});u.setActive("visualaid",l.hasVisual);u.setDisabled("undo",!l.undoManager.hasUndo()&&!l.typing);u.setDisabled("redo",!l.undoManager.hasRedo());u.setDisabled("outdent",!l.queryCommandState("Outdent"));i=d.getParent(k,"A");if(m=u.get("link")){if(!i||!i.name){m.setDisabled(!i&&q);m.setActive(!!i)}}if(m=u.get("unlink")){m.setDisabled(!i&&q);m.setActive(!!i&&!i.name)}if(m=u.get("anchor")){m.setActive(!!i&&i.name);if(e.isWebKit){i=d.getParent(k,"IMG");m.setActive(!!i&&d.getAttrib(i,"mce_name")=="a")}}i=d.getParent(k,"IMG");if(m=u.get("image")){m.setActive(!!i&&k.className.indexOf("mceItem")==-1)}if(m=u.get("styleselect")){if(k.className){y._importClasses();m.select(k.className)}else{m.select()}}if(m=u.get("formatselect")){i=d.getParent(k,d.isBlock);if(i){m.select(i.nodeName.toLowerCase())}}if(l.settings.convert_fonts_to_spans){l.dom.getParent(k,function(p){if(p.nodeName==="SPAN"){if(!w&&p.className){w=p.className}if(!j&&p.style.fontSize){j=p.style.fontSize}if(!o&&p.style.fontFamily){o=p.style.fontFamily.replace(/[\"\']+/g,"").replace(/^([^,]+).*/,"$1").toLowerCase()}}return false});if(m=u.get("fontselect")){m.select(function(n){return n.replace(/^([^,]+).*/,"$1").toLowerCase()==o})}if(m=u.get("fontsizeselect")){m.select(function(n){if(n.fontSize&&n.fontSize===j){return true}if(n["class"]&&n["class"]===w){return true}})}}else{if(m=u.get("fontselect")){m.select(l.queryCommandValue("FontName"))}if(m=u.get("fontsizeselect")){x=l.queryCommandValue("FontSize");m.select(function(n){return n.fontSize==x})}}if(z.theme_advanced_path&&z.theme_advanced_statusbar_location){i=d.get(l.id+"_path")||d.add(l.id+"_path_row","span",{id:l.id+"_path"});d.setHTML(i,"");l.dom.getParent(k,function(A){var p=A.nodeName.toLowerCase(),s,v,t="";if(A.nodeType!=1||A.nodeName==="BR"||(d.hasClass(A,"mceItemHidden")||d.hasClass(A,"mceItemRemoved"))){return}if(x=d.getAttrib(A,"mce_name")){p=x}if(e.isIE&&A.scopeName!=="HTML"){p=A.scopeName+":"+p}p=p.replace(/mce\:/g,"");switch(p){case"b":p="strong";break;case"i":p="em";break;case"img":if(x=d.getAttrib(A,"src")){t+="src: "+x+" "}break;case"a":if(x=d.getAttrib(A,"name")){t+="name: "+x+" ";p+="#"+x}if(x=d.getAttrib(A,"href")){t+="href: "+x+" "}break;case"font":if(z.convert_fonts_to_spans){p="span"}if(x=d.getAttrib(A,"face")){t+="font: "+x+" "}if(x=d.getAttrib(A,"size")){t+="size: "+x+" "}if(x=d.getAttrib(A,"color")){t+="color: "+x+" "}break;case"span":if(x=d.getAttrib(A,"style")){t+="style: "+x+" "}break}if(x=d.getAttrib(A,"id")){t+="id: "+x+" "}if(x=A.className){x=x.replace(/(webkit-[\w\-]+|Apple-[\w\-]+|mceItem\w+|mceVisualAid)/g,"");if(x&&x.indexOf("mceItem")==-1){t+="class: "+x+" ";if(d.isBlock(A)||p=="img"||p=="span"){p+="."+x}}}p=p.replace(/(html:)/g,"");p={name:p,node:A,title:t};y.onResolveName.dispatch(y,p);t=p.title;p=p.name;v=d.create("a",{href:"javascript:;",onmousedown:"return false;",title:t,"class":"mcePath_"+(r++)},p);if(i.hasChildNodes()){i.insertBefore(d.doc.createTextNode(" \u00bb "),i.firstChild);i.insertBefore(v,i.firstChild)}else{i.appendChild(v)}},l.getBody())}},_sel:function(i){this.editor.execCommand("mceSelectNodeDepth",false,i)},_mceInsertAnchor:function(k,j){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/anchor.htm",width:320+parseInt(i.getLang("advanced.anchor_delta_width",0)),height:90+parseInt(i.getLang("advanced.anchor_delta_height",0)),inline:true},{theme_url:this.url})},_mceCharMap:function(){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/charmap.htm",width:550+parseInt(i.getLang("advanced.charmap_delta_width",0)),height:250+parseInt(i.getLang("advanced.charmap_delta_height",0)),inline:true},{theme_url:this.url})},_mceHelp:function(){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/about.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceColorPicker:function(k,j){var i=this.editor;j=j||{};i.windowManager.open({url:e.baseURL+"/themes/advanced/color_picker.htm",width:375+parseInt(i.getLang("advanced.colorpicker_delta_width",0)),height:250+parseInt(i.getLang("advanced.colorpicker_delta_height",0)),close_previous:false,inline:true},{input_color:j.color,func:j.func,theme_url:this.url})},_mceCodeEditor:function(j,k){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/source_editor.htm",width:parseInt(i.getParam("theme_advanced_source_editor_width",720)),height:parseInt(i.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url})},_mceImage:function(j,k){var i=this.editor;if(i.dom.getAttrib(i.selection.getNode(),"class").indexOf("mceItem")!=-1){return}i.windowManager.open({url:e.baseURL+"/themes/advanced/image.htm",width:355+parseInt(i.getLang("advanced.image_delta_width",0)),height:275+parseInt(i.getLang("advanced.image_delta_height",0)),inline:true},{theme_url:this.url})},_mceLink:function(j,k){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/link.htm",width:310+parseInt(i.getLang("advanced.link_delta_width",0)),height:200+parseInt(i.getLang("advanced.link_delta_height",0)),inline:true},{theme_url:this.url})},_mceNewDocument:function(){var i=this.editor;i.windowManager.confirm("advanced.newdocument",function(j){if(j){i.execCommand("mceSetContent",false,"")}})},_mceForeColor:function(){var i=this;this._mceColorPicker(0,{color:i.fgColor,func:function(j){i.fgColor=j;i.editor.execCommand("ForeColor",false,j)}})},_mceBackColor:function(){var i=this;this._mceColorPicker(0,{color:i.bgColor,func:function(j){i.bgColor=j;i.editor.execCommand("HiliteColor",false,j)}})},_ufirst:function(i){return i.substring(0,1).toUpperCase()+i.substring(1)}});e.ThemeManager.add("advanced",e.themes.AdvancedTheme)}(tinymce));
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js	2008-09-09 17:19:42.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js	2009-06-30 22:01:34.000000000 +0200
@@ -1,1516 +1,1153 @@
-/**
- * $Id: editor_template_src.js 296 2007-08-21 10:36:35Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-/* Import theme specific language pack */
-tinyMCE.importThemeLanguagePack('advanced');
-
-var TinyMCE_AdvancedTheme = {
-	// Private theme fields
-	_defColors : "000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",
-	_autoImportCSSClasses : true,
-	_resizer : {},
-	_buttons : [
-		// Control id, button img, button title, command, user_interface, value
-		['bold', '{$lang_bold_img}', 'lang_bold_desc', 'Bold'],
-		['italic', '{$lang_italic_img}', 'lang_italic_desc', 'Italic'],
-		['underline', '{$lang_underline_img}', 'lang_underline_desc', 'Underline'],
-		['strikethrough', 'strikethrough.gif', 'lang_striketrough_desc', 'Strikethrough'],
-		['justifyleft', 'justifyleft.gif', 'lang_justifyleft_desc', 'JustifyLeft'],
-		['justifycenter', 'justifycenter.gif', 'lang_justifycenter_desc', 'JustifyCenter'],
-		['justifyright', 'justifyright.gif', 'lang_justifyright_desc', 'JustifyRight'],
-		['justifyfull', 'justifyfull.gif', 'lang_justifyfull_desc', 'JustifyFull'],
-		['bullist', 'bullist.gif', 'lang_bullist_desc', 'InsertUnorderedList'],
-		['numlist', 'numlist.gif', 'lang_numlist_desc', 'InsertOrderedList'],
-		['outdent', 'outdent.gif', 'lang_outdent_desc', 'Outdent'],
-		['indent', 'indent.gif', 'lang_indent_desc', 'Indent'],
-		['cut', 'cut.gif', 'lang_cut_desc', 'Cut'],
-		['copy', 'copy.gif', 'lang_copy_desc', 'Copy'],
-		['paste', 'paste.gif', 'lang_paste_desc', 'Paste'],
-		['undo', 'undo.gif', 'lang_undo_desc', 'Undo'],
-		['redo', 'redo.gif', 'lang_redo_desc', 'Redo'],
-		['link', 'link.gif', 'lang_link_desc', 'mceLink', true],
-		['unlink', 'unlink.gif', 'lang_unlink_desc', 'unlink'],
-		['image', 'image.gif', 'lang_image_desc', 'mceImage', true],
-		['cleanup', 'cleanup.gif', 'lang_cleanup_desc', 'mceCleanup'],
-		['help', 'help.gif', 'lang_help_desc', 'mceHelp'],
-		['code', 'code.gif', 'lang_theme_code_desc', 'mceCodeEditor'],
-		['hr', 'hr.gif', 'lang_theme_hr_desc', 'inserthorizontalrule'],
-		['removeformat', 'removeformat.gif', 'lang_theme_removeformat_desc', 'removeformat'],
-		['sub', 'sub.gif', 'lang_theme_sub_desc', 'subscript'],
-		['sup', 'sup.gif', 'lang_theme_sup_desc', 'superscript'],
-		['forecolor', 'forecolor.gif', 'lang_theme_forecolor_desc', 'forecolor', true],
-		['forecolorpicker', 'forecolor.gif', 'lang_theme_forecolor_desc', 'forecolorpicker', true],
-		['backcolor', 'backcolor.gif', 'lang_theme_backcolor_desc', 'HiliteColor', true],
-		['backcolorpicker', 'backcolor.gif', 'lang_theme_backcolor_desc', 'backcolorpicker', true],
-		['charmap', 'charmap.gif', 'lang_theme_charmap_desc', 'mceCharMap'],
-		['visualaid', 'visualaid.gif', 'lang_theme_visualaid_desc', 'mceToggleVisualAid'],
-		['anchor', 'anchor.gif', 'lang_theme_anchor_desc', 'mceInsertAnchor'],
-		['newdocument', 'newdocument.gif', 'lang_newdocument_desc', 'mceNewDocument']
-	],
-
-	_buttonMap : 'anchor,backcolor,bold,bullist,charmap,cleanup,code,copy,cut,forecolor,help,hr,image,indent,italic,justifycenter,justifyfull,justifyleft,justifyright,link,newdocument,numlist,outdent,paste,redo,removeformat,strikethrough,sub,sup,underline,undo,unlink,visualaid,advhr,ltr,rtl,emotions,flash,fullpage,fullscreen,iespell,insertdate,inserttime,pastetext,pasteword,selectall,preview,print,save,replace,search,table,cell_props,delete_col,delete_row,col_after,col_before,row_after,row_before,merge_cells,row_props,split_cells,delete_table',
-
-	/**
-	 * Returns HTML code for the specificed control.
-	 */
-	getControlHTML : function(button_name) {
-		var i, x, but;
-
-		// Lookup button in button list
-		for (i=0; i<TinyMCE_AdvancedTheme._buttons.length; i++) {
-			but = TinyMCE_AdvancedTheme._buttons[i];
-
-			if (but[0] == button_name && (button_name == "forecolor" || button_name == "backcolor"))
-				return tinyMCE.getMenuButtonHTML(but[0], but[2], '{$themeurl}/images/' + but[1], but[3] + "Menu", but[3], (but.length > 4 ? but[4] : false), (but.length > 5 ? but[5] : null));
-
-			if (but[0] == button_name)
-				return tinyMCE.getButtonHTML(but[0], but[2], '{$themeurl}/images/' + but[1], but[3], (but.length > 4 ? but[4] : false), (but.length > 5 ? but[5] : null));
-		}
-
-		// Custom controlls other than buttons
-		switch (button_name) {
-			case "formatselect":
-				var html = '<select id="{$editor_id}_formatSelect" name="{$editor_id}_formatSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FormatBlock\',false,this.options[this.selectedIndex].value);" class="mceSelectList">';
-				var formats = tinyMCE.getParam("theme_advanced_blockformats", "p,address,pre,h1,h2,h3,h4,h5,h6", true).split(',');
-				var lookup = [
-					['p', '{$lang_theme_paragraph}'],
-					['address', '{$lang_theme_address}'],
-					['pre', '{$lang_theme_pre}'],
-					['h1', '{$lang_theme_h1}'],
-					['h2', '{$lang_theme_h2}'],
-					['h3', '{$lang_theme_h3}'],
-					['h4', '{$lang_theme_h4}'],
-					['h5', '{$lang_theme_h5}'],
-					['h6', '{$lang_theme_h6}'],
-					['div', '{$lang_theme_div}'],
-					['blockquote', '{$lang_theme_blockquote}'],
-					['code', '{$lang_theme_code}'],
-					['dt', '{$lang_theme_dt}'],
-					['dd', '{$lang_theme_dd}'],
-					['samp', '{$lang_theme_samp}']
-				];
-
-				html += '<option value="">{$lang_theme_block}</option>';
-
-				// Build format select
-				for (var i=0; i<formats.length; i++) {
-					for (var x=0; x<lookup.length; x++) {
-						if (formats[i] == lookup[x][0])
-							html += '<option value="&lt;' + lookup[x][0] + '&gt;">' + lookup[x][1] + '</option>';
-					}
-				}
-
-				html += '</select>';
-
-				return html;
-
-			case "styleselect":
-				return '<select id="{$editor_id}_styleSelect" onmousedown="tinyMCE.themes.advanced._setupCSSClasses(\'{$editor_id}\');" name="{$editor_id}_styleSelect" onfocus="tinyMCE.addSelectAccessibility(event,this,window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSetCSSClass\',false,this.options[this.selectedIndex].value);" class="mceSelectList">{$style_select_options}</select>';
-
-			case "fontselect":
-				var fontHTML = '<select id="{$editor_id}_fontNameSelect" name="{$editor_id}_fontNameSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontName\',false,this.options[this.selectedIndex].value);" class="mceSelectList"><option value="">{$lang_theme_fontdefault}</option>';
-				var iFonts = '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 nFonts = 'Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats';
-				var fonts = tinyMCE.getParam("theme_advanced_fonts", nFonts).split(';');
-				for (i=0; i<fonts.length; i++) {
-					if (fonts[i] != '') {
-						var parts = fonts[i].split('=');
-						fontHTML += '<option value="' + parts[1] + '">' + parts[0] + '</option>';
-					}
-				}
-
-				fontHTML += '</select>';
-				return fontHTML;
-
-			case "fontsizeselect":
-				return '<select id="{$editor_id}_fontSizeSelect" name="{$editor_id}_fontSizeSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontSize\',false,this.options[this.selectedIndex].value);" class="mceSelectList">'+
-						'<option value="0">{$lang_theme_font_size}</option>'+
-						'<option value="1">1 (8 pt)</option>'+
-						'<option value="2">2 (10 pt)</option>'+
-						'<option value="3">3 (12 pt)</option>'+
-						'<option value="4">4 (14 pt)</option>'+
-						'<option value="5">5 (18 pt)</option>'+
-						'<option value="6">6 (24 pt)</option>'+
-						'<option value="7">7 (36 pt)</option>'+
-						'</select>';
-
-			case "|":
-			case "separator":
-				return '<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" alt="" />';
-
-			case "spacer":
-				return '<img src="{$themeurl}/images/separator.gif" width="2" height="15" border="0" class="mceSeparatorLine" style="vertical-align: middle" alt="" />';
-
-			case "rowseparator":
-				return '<br />';
-		}
-
-		return "";
-	},
-
-	/**
-	 * Theme specific execcommand handling.
-	 */
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		switch (command) {
-			case 'mceHelp':
-				tinyMCE.openWindow({
-					file : 'about.htm',
-					width : 480,
-					height : 380
-				}, {
-					tinymce_version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion,
-					tinymce_releasedate : tinyMCE.releaseDate,
-					inline : "yes"
-				});
-			return true;
-
-			case "mceLink":
-				var inst = tinyMCE.getInstanceById(editor_id);
-				var doc = inst.getDoc();
-				var selectedText = "";
-
-				if (tinyMCE.isMSIE) {
-					var rng = doc.selection.createRange();
-					selectedText = rng.text;
-				} else
-					selectedText = inst.getSel().toString();
-
-				if (!tinyMCE.linkElement) {
-					if ((tinyMCE.selectedElement.nodeName.toLowerCase() != "img") && (selectedText.length <= 0))
-						return true;
-				}
-
-				var href = "", target = "", title = "", onclick = "", action = "insert", style_class = "";
-
-				if (tinyMCE.selectedElement.nodeName.toLowerCase() == "a")
-					tinyMCE.linkElement = tinyMCE.selectedElement;
-
-				// Is anchor not a link
-				if (tinyMCE.linkElement != null && tinyMCE.getAttrib(tinyMCE.linkElement, 'href') == "")
-					tinyMCE.linkElement = null;
-
-				if (tinyMCE.linkElement) {
-					href = tinyMCE.getAttrib(tinyMCE.linkElement, 'href');
-					target = tinyMCE.getAttrib(tinyMCE.linkElement, 'target');
-					title = tinyMCE.getAttrib(tinyMCE.linkElement, 'title');
-					onclick = tinyMCE.getAttrib(tinyMCE.linkElement, 'onclick');
-					style_class = tinyMCE.getAttrib(tinyMCE.linkElement, 'class');
-
-					// Try old onclick to if copy/pasted content
-					if (onclick == "")
-						onclick = tinyMCE.getAttrib(tinyMCE.linkElement, 'onclick');
-
-					onclick = tinyMCE.cleanupEventStr(onclick);
-
-					href = eval(tinyMCE.settings['urlconverter_callback'] + "(href, tinyMCE.linkElement, true);");
-
-					// Use mce_href if defined
-					mceRealHref = tinyMCE.getAttrib(tinyMCE.linkElement, 'mce_href');
-					if (mceRealHref != "") {
-						href = mceRealHref;
-
-						if (tinyMCE.getParam('convert_urls'))
-							href = eval(tinyMCE.settings['urlconverter_callback'] + "(href, tinyMCE.linkElement, true);");
-					}
-
-					action = "update";
-				}
-
-				var template = new Array();
-
-				template['file'] = 'link.htm';
-				template['width'] = 310;
-				template['height'] = 200;
-
-				// Language specific width and height addons
-				template['width'] += tinyMCE.getLang('lang_insert_link_delta_width', 0);
-				template['height'] += tinyMCE.getLang('lang_insert_link_delta_height', 0);
-
-				if (inst.settings['insertlink_callback']) {
-					var returnVal = eval(inst.settings['insertlink_callback'] + "(href, target, title, onclick, action, style_class);");
-					if (returnVal && returnVal['href'])
-						TinyMCE_AdvancedTheme._insertLink(returnVal['href'], returnVal['target'], returnVal['title'], returnVal['onclick'], returnVal['style_class']);
-				} else {
-					tinyMCE.openWindow(template, {href : href, target : target, title : title, onclick : onclick, action : action, className : style_class, inline : "yes"});
-				}
-
-				return true;
-
-			case "mceImage":
-				var src = "", alt = "", border = "", hspace = "", vspace = "", width = "", height = "", align = "";
-				var title = "", onmouseover = "", onmouseout = "", action = "insert";
-				var img = tinyMCE.imgElement;
-				var inst = tinyMCE.getInstanceById(editor_id);
-
-				if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "img") {
-					img = tinyMCE.selectedElement;
-					tinyMCE.imgElement = img;
-				}
-
-				if (img) {
-					// Is it a internal MCE visual aid image, then skip this one.
-					if (tinyMCE.getAttrib(img, 'name').indexOf('mce_') == 0)
-						return true;
-
-					src = tinyMCE.getAttrib(img, 'src');
-					alt = tinyMCE.getAttrib(img, 'alt');
-
-					// Try polling out the title
-					if (alt == "")
-						alt = tinyMCE.getAttrib(img, 'title');
-
-					// Fix width/height attributes if the styles is specified
-					if (tinyMCE.isGecko) {
-						var w = img.style.width;
-						if (w != null && w != "")
-							img.setAttribute("width", w);
-
-						var h = img.style.height;
-						if (h != null && h != "")
-							img.setAttribute("height", h);
-					}
-
-					border = tinyMCE.getAttrib(img, 'border');
-					hspace = tinyMCE.getAttrib(img, 'hspace');
-					vspace = tinyMCE.getAttrib(img, 'vspace');
-					width = tinyMCE.getAttrib(img, 'width');
-					height = tinyMCE.getAttrib(img, 'height');
-					align = tinyMCE.getAttrib(img, 'align');
-					onmouseover = tinyMCE.getAttrib(img, 'onmouseover');
-					onmouseout = tinyMCE.getAttrib(img, 'onmouseout');
-					title = tinyMCE.getAttrib(img, 'title');
-
-					// Is realy specified?
-					if (tinyMCE.isMSIE) {
-						width = img.attributes['width'].specified ? width : "";
-						height = img.attributes['height'].specified ? height : "";
-					}
-
-					//onmouseover = tinyMCE.getImageSrc(tinyMCE.cleanupEventStr(onmouseover));
-					//onmouseout = tinyMCE.getImageSrc(tinyMCE.cleanupEventStr(onmouseout));
-
-					src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, img, true);");
-
-					// Use mce_src if defined
-					mceRealSrc = tinyMCE.getAttrib(img, 'mce_src');
-					if (mceRealSrc != "") {
-						src = mceRealSrc;
-
-						if (tinyMCE.getParam('convert_urls'))
-							src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, img, true);");
-					}
-
-					//if (onmouseover != "")
-					//	onmouseover = eval(tinyMCE.settings['urlconverter_callback'] + "(onmouseover, img, true);");
-
-					//if (onmouseout != "")
-					//	onmouseout = eval(tinyMCE.settings['urlconverter_callback'] + "(onmouseout, img, true);");
-
-					action = "update";
-				}
-
-				var template = new Array();
-
-				template['file'] = 'image.htm?src={$src}';
-				template['width'] = 355;
-				template['height'] = 265 + (tinyMCE.isMSIE ? 25 : 0);
-
-				// Language specific width and height addons
-				template['width'] += tinyMCE.getLang('lang_insert_image_delta_width', 0);
-				template['height'] += tinyMCE.getLang('lang_insert_image_delta_height', 0);
-
-				if (inst.settings['insertimage_callback']) {
-					var returnVal = eval(inst.settings['insertimage_callback'] + "(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout, action);");
-					if (returnVal && returnVal['src'])
-						TinyMCE_AdvancedTheme._insertImage(returnVal['src'], returnVal['alt'], returnVal['border'], returnVal['hspace'], returnVal['vspace'], returnVal['width'], returnVal['height'], returnVal['align'], returnVal['title'], returnVal['onmouseover'], returnVal['onmouseout']);
-				} else
-					tinyMCE.openWindow(template, {src : src, alt : alt, border : border, hspace : hspace, vspace : vspace, width : width, height : height, align : align, title : title, onmouseover : onmouseover, onmouseout : onmouseout, action : action, inline : "yes"});
-
-				return true;
-
-			case "forecolor":
-				var fcp = new TinyMCE_Layer(editor_id + '_fcPreview', false), p, img, elm;
-
-				TinyMCE_AdvancedTheme._hideMenus(editor_id);
-
-				if (!fcp.exists()) {
-					fcp.create('div', 'mceColorPreview', document.getElementById(editor_id + '_toolbar'));
-					elm = fcp.getElement();
-					elm._editor_id = editor_id;
-					elm._command = "forecolor";
-					elm._switchId = editor_id + "_forecolor";
-					tinyMCE.addEvent(elm, 'click', TinyMCE_AdvancedTheme._handleMenuEvent);
-					tinyMCE.addEvent(elm, 'mouseover', TinyMCE_AdvancedTheme._handleMenuEvent);
-					tinyMCE.addEvent(elm, 'mouseout', TinyMCE_AdvancedTheme._handleMenuEvent);
-				}
-
-				img = tinyMCE.selectNodes(document.getElementById(editor_id + "_forecolor"), function(n) {return n.nodeName == "IMG";})[0];
-				p = tinyMCE.getAbsPosition(img, document.getElementById(editor_id + '_toolbar'));
-
-				fcp.moveTo(p.absLeft, p.absTop);
-				fcp.getElement().style.backgroundColor = value != null ? value : tinyMCE.getInstanceById(editor_id).foreColor;
-				fcp.show();
-
-				return false;
-
-			case "forecolorpicker":
-				this._pickColor(editor_id, 'forecolor');
-				return true;
-
-			case "forecolorMenu":
-				TinyMCE_AdvancedTheme._hideMenus(editor_id);
-
-				// Create color layer
-				var ml = new TinyMCE_Layer(editor_id + '_fcMenu');
-
-				if (!ml.exists())
-					ml.create('div', 'mceMenu', document.body, TinyMCE_AdvancedTheme._getColorHTML(editor_id, 'theme_advanced_text_colors', 'forecolor'));
-
-				tinyMCE.switchClass(editor_id + '_forecolor', 'mceMenuButtonFocus');
-				ml.moveRelativeTo(document.getElementById(editor_id + "_forecolor"), 'bl');
-
-				ml.moveBy(tinyMCE.isMSIE && !tinyMCE.isOpera ? -1 : 1, -1);
-
-				if (tinyMCE.isOpera)
-					ml.moveBy(0, -2);
-
-				ml.show();
-			return true;
-
-			case "HiliteColor":
-				var bcp = new TinyMCE_Layer(editor_id + '_bcPreview', false), p, img;
-
-				TinyMCE_AdvancedTheme._hideMenus(editor_id);
-
-				if (!bcp.exists()) {
-					bcp.create('div', 'mceColorPreview', document.getElementById(editor_id + '_toolbar'));
-					elm = bcp.getElement();
-					elm._editor_id = editor_id;
-					elm._command = "HiliteColor";
-					elm._switchId = editor_id + "_backcolor";
-					tinyMCE.addEvent(elm, 'click', TinyMCE_AdvancedTheme._handleMenuEvent);
-					tinyMCE.addEvent(elm, 'mouseover', TinyMCE_AdvancedTheme._handleMenuEvent);
-					tinyMCE.addEvent(elm, 'mouseout', TinyMCE_AdvancedTheme._handleMenuEvent);
-				}
-
-				img = tinyMCE.selectNodes(document.getElementById(editor_id + "_backcolor"), function(n) {return n.nodeName == "IMG";})[0];
-				p = tinyMCE.getAbsPosition(img, document.getElementById(editor_id + '_toolbar'));
-
-				bcp.moveTo(p.absLeft, p.absTop);
-				bcp.getElement().style.backgroundColor = value != null ? value : tinyMCE.getInstanceById(editor_id).backColor;
-				bcp.show();
-
-				return false;
-
-			case "HiliteColorMenu":
-				TinyMCE_AdvancedTheme._hideMenus(editor_id);
-
-				// Create color layer
-				var ml = new TinyMCE_Layer(editor_id + '_bcMenu');
-
-				if (!ml.exists())
-					ml.create('div', 'mceMenu', document.body, TinyMCE_AdvancedTheme._getColorHTML(editor_id, 'theme_advanced_background_colors', 'HiliteColor'));
-
-				tinyMCE.switchClass(editor_id + '_backcolor', 'mceMenuButtonFocus');
-				ml.moveRelativeTo(document.getElementById(editor_id + "_backcolor"), 'bl');
-
-				ml.moveBy(tinyMCE.isMSIE && !tinyMCE.isOpera ? -1 : 1, -1);
-
-				if (tinyMCE.isOpera)
-					ml.moveBy(0, -2);
-
-				ml.show();
-			return true;
-
-			case "backcolorpicker":
-				this._pickColor(editor_id, 'HiliteColor');
-				return true;
-
-			case "mceColorPicker":
-				if (user_interface) {
-					var template = [];
-
-					if (!value['callback'] && !value['color'])
-						value['color'] = value['document'].getElementById(value['element_id']).value;
-
-					template['file'] = 'color_picker.htm';
-					template['width'] = 380;
-					template['height'] = 250;
-					template['close_previous'] = "no";
-
-					template['width'] += tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_width', 0);
-					template['height'] += tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_height', 0);
-
-					if (typeof(value['store_selection']) == "undefined")
-						value['store_selection'] = true;
-
-					tinyMCE.lastColorPickerValue = value;
-					tinyMCE.openWindow(template, {editor_id : editor_id, mce_store_selection : value['store_selection'], inline : "yes", command : "mceColorPicker", input_color : value['color']});
-				} else {
-					var savedVal = tinyMCE.lastColorPickerValue, elm;
-
-					if (savedVal['callback']) {
-						savedVal['callback'](value);
-						return true;
-					}
-
-					elm = savedVal['document'].getElementById(savedVal['element_id']);
-					elm.value = value;
-
-					if (elm.onchange != null && elm.onchange != '')
-						eval('elm.onchange();');
-				}
-			return true;
-
-			case "mceCodeEditor":
-				var template = new Array();
-
-				template['file'] = 'source_editor.htm';
-				template['width'] = parseInt(tinyMCE.getParam("theme_advanced_source_editor_width", 720));
-				template['height'] = parseInt(tinyMCE.getParam("theme_advanced_source_editor_height", 580));
-
-				tinyMCE.openWindow(template, {editor_id : editor_id, resizable : "yes", scrollbars : "no", inline : "yes"});
-				return true;
-
-			case "mceCharMap":
-				var template = new Array();
-
-				template['file'] = 'charmap.htm';
-				template['width'] = 550 + (tinyMCE.isOpera ? 40 : 0);
-				template['height'] = 250;
-
-				template['width'] += tinyMCE.getLang('lang_theme_advanced_charmap_delta_width', 0);
-				template['height'] += tinyMCE.getLang('lang_theme_advanced_charmap_delta_height', 0);
-
-				tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});
-				return true;
-
-			case "mceInsertAnchor":
-				var template = new Array();
-
-				template['file'] = 'anchor.htm';
-				template['width'] = 320;
-				template['height'] = 90 + (tinyMCE.isNS7 ? 30 : 0);
-
-				template['width'] += tinyMCE.getLang('lang_theme_advanced_anchor_delta_width', 0);
-				template['height'] += tinyMCE.getLang('lang_theme_advanced_anchor_delta_height', 0);
-
-				tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});
-				return true;
-
-			case "mceNewDocument":
-				if (confirm(tinyMCE.entityDecode(tinyMCE.getLang('lang_newdocument'))))
-					tinyMCE.execInstanceCommand(editor_id, 'mceSetContent', false, ' ');
-
-				return true;
-		}
-
-		return false;
-	},
-
-	/**
-	 * Editor instance template function.
-	 */
-	getEditorTemplate : function(settings, editorId) {
-		function removeFromArray(in_array, remove_array) {
-			var outArray = new Array(), skip;
-
-			for (var i=0; i<in_array.length; i++) {
-				skip = false;
-
-				for (var j=0; j<remove_array.length; j++) {
-					if (in_array[i] == remove_array[j]) {
-						skip = true;
-					}
-				}
-
-				if (!skip) {
-					outArray[outArray.length] = in_array[i];
-				}
-			}
-
-			return outArray;
-		}
-
-		function addToArray(in_array, add_array) {
-			for (var i=0; i<add_array.length; i++) {
-				in_array[in_array.length] = add_array[i];
-			}
-
-			return in_array;
-		}
-
-		var template = new Array();
-		var deltaHeight = 0;
-		var resizing = tinyMCE.getParam("theme_advanced_resizing", false);
-		var path = tinyMCE.getParam("theme_advanced_path", true);
-		var statusbarHTML = '<div id="{$editor_id}_path" class="mceStatusbarPathText" style="display: ' + (path ? "block" : "none") + '">&#160;</div><div id="{$editor_id}_resize" class="mceStatusbarResize" style="display: ' + (resizing ? "block" : "none") + '" onmousedown="tinyMCE.themes.advanced._setResizing(event,\'{$editor_id}\',true);"></div><br style="clear: both" />';
-		var layoutManager = tinyMCE.getParam("theme_advanced_layout_manager", "SimpleLayout");
-
-		// Setup style select options -- MOVED UP FOR EXTERNAL TOOLBAR COMPATABILITY!
-		var styleSelectHTML = '<option value="">{$lang_theme_style_select}</option>';
-		if (settings['theme_advanced_styles']) {
-			var stylesAr = settings['theme_advanced_styles'].split(';');
-
-			for (var i=0; i<stylesAr.length; i++) {
-				var key, value;
-
-				key = stylesAr[i].split('=')[0];
-				value = stylesAr[i].split('=')[1];
-
-				styleSelectHTML += '<option value="' + value + '">' + key + '</option>';
-			}
-
-			TinyMCE_AdvancedTheme._autoImportCSSClasses = false;
-		}
-
-		switch(layoutManager) {
-			case "SimpleLayout" : //the default TinyMCE Layout (for backwards compatibility)...
-				var toolbarHTML = "";
-				var toolbarLocation = tinyMCE.getParam("theme_advanced_toolbar_location", "bottom");
-				var toolbarAlign = tinyMCE.getParam("theme_advanced_toolbar_align", "center");
-				var pathLocation = tinyMCE.getParam("theme_advanced_path_location", "none"); // Compatiblity
-				var statusbarLocation = tinyMCE.getParam("theme_advanced_statusbar_location", pathLocation);
-				var defVals = {
-					theme_advanced_buttons1 : "bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect",
-					theme_advanced_buttons2 : "bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,image,cleanup,help,code",
-					theme_advanced_buttons3 : "hr,removeformat,visualaid,separator,sub,sup,separator,charmap"
-				};
-
-				// Add accessibility control
-				toolbarHTML += '<a href="#" accesskey="q" title="' + tinyMCE.getLang("lang_toolbar_focus") + '"';
-
-				if (!tinyMCE.getParam("accessibility_focus"))
-					toolbarHTML += ' onfocus="tinyMCE.getInstanceById(\'' + editorId + '\').getWin().focus();"';
-
-				toolbarHTML += '></a>';
-
-				// Render rows
-				for (var i=1; i<100; i++) {
-					var def = defVals["theme_advanced_buttons" + i];
-
-					var buttons = tinyMCE.getParam("theme_advanced_buttons" + i, def == null ? '' : def, true, ',');
-					if (buttons.length == 0)
-						break;
-
-					buttons = removeFromArray(buttons, tinyMCE.getParam("theme_advanced_disable", "", true, ','));
-					buttons = addToArray(buttons, tinyMCE.getParam("theme_advanced_buttons" + i + "_add", "", true, ','));
-					buttons = addToArray(tinyMCE.getParam("theme_advanced_buttons" + i + "_add_before", "", true, ','), buttons);
-
-					for (var b=0; b<buttons.length; b++)
-						toolbarHTML += tinyMCE.getControlHTML(buttons[b]);
-
-					if (buttons.length > 0) {
-						toolbarHTML += "<br />";
-						deltaHeight -= 23;
-					}
-				}
-
-				// Add accessibility control
-				toolbarHTML += '<a href="#" accesskey="z" onfocus="tinyMCE.getInstanceById(\'' + editorId + '\').getWin().focus();"></a>';
-
-				// Setup template html
-				template['html'] = '<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width_style};height:{$height_style}"><tbody>';
-
-				if (toolbarLocation == "top")
-					template['html'] += '<tr><td dir="ltr" class="mceToolbarTop" align="' + toolbarAlign + '" height="1" nowrap="nowrap"><span id="' + editorId + '_toolbar" class="mceToolbarContainer">' + toolbarHTML + '</span></td></tr>';
-
-				if (statusbarLocation == "top") {
-					template['html'] += '<tr><td class="mceStatusbarTop" height="1">' + statusbarHTML + '</td></tr>';
-					deltaHeight -= 23;
-				}
-
-				template['html'] += '<tr><td align="center"><span id="{$editor_id}"></span></td></tr>';
-
-				if (toolbarLocation == "bottom")
-					template['html'] += '<tr><td dir="ltr" class="mceToolbarBottom" align="' + toolbarAlign + '" height="1"><span id="' + editorId + '_toolbar" class="mceToolbarContainer">' + toolbarHTML + '</span></td></tr>';
-
-				// External toolbar changes
-				if (toolbarLocation == "external") {
-					var bod = document.body;
-					var elm = document.createElement ("div");
-
-					toolbarHTML = tinyMCE.replaceVar(toolbarHTML, 'style_select_options', styleSelectHTML);
-					toolbarHTML = tinyMCE.applyTemplate(toolbarHTML, {editor_id : editorId});
-
-					elm.className = "mceToolbarExternal";
-					elm.id = editorId+"_toolbar";
-					elm.innerHTML = '<table width="100%" border="0" align="center"><tr><td align="center">'+toolbarHTML+'</td></tr></table>';
-					bod.appendChild (elm);
-					// bod.style.marginTop = elm.offsetHeight + "px";
-
-					deltaHeight = 0;
-					tinyMCE.getInstanceById(editorId).toolbarElement = elm;
-
-					//template['html'] = '<div id="mceExternalToolbar" align="center" class="mceToolbarExternal"><table width="100%" border="0" align="center"><tr><td align="center">'+toolbarHTML+'</td></tr></table></div>' + template["html"];
-				} else {
-					tinyMCE.getInstanceById(editorId).toolbarElement = null;
-				}
-
-				if (statusbarLocation == "bottom") {
-					template['html'] += '<tr><td class="mceStatusbarBottom" height="1">' + statusbarHTML + '</td></tr>';
-					deltaHeight -= 23;
-				}
-
-				template['html'] += '</tbody></table>';
-				//"SimpleLayout"
-			break;
-
-			case "RowLayout" : //Container Layout - containers defined in "theme_advanced_containers" are rendered from top to bottom.
-				template['html'] = '<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width}px;height:{$height}px"><tbody>';
-
-				var containers = tinyMCE.getParam("theme_advanced_containers", "", true, ",");
-				var defaultContainerCSS = tinyMCE.getParam("theme_advanced_containers_default_class", "container");
-				var defaultContainerAlign = tinyMCE.getParam("theme_advanced_containers_default_align", "center");
-
-				//Render Containers:
-				for (var i = 0; i < containers.length; i++)
-				{
-					if (containers[i] == "mceEditor") //Exceptions for mceEditor and ...
-						template['html'] += '<tr><td align="center" class="mceEditor_border"><span id="{$editor_id}"></span></td></tr>';
-					else if (containers[i] == "mceElementpath" || containers[i] == "mceStatusbar") // ... mceElementpath:
-					{
-						var pathClass = "mceStatusbar";
-
-						if (i == containers.length-1)
-						{
-							pathClass = "mceStatusbarBottom";
-						}
-						else if (i == 0)
-						{
-							pathClass = "mceStatusbar";
-						}
-						else
-						{
-							deltaHeight-=2;
-						}
-
-						template['html'] += '<tr><td class="' + pathClass + '" height="1">' + statusbarHTML + '</td></tr>';
-						deltaHeight -= 22;
-					} else { // Render normal Container
-						var curContainer = tinyMCE.getParam("theme_advanced_container_"+containers[i], "", true, ',');
-						var curContainerHTML = "";
-						var curAlign = tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_align", defaultContainerAlign);
-						var curCSS = tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_class", defaultContainerCSS);
-
-						curContainer = removeFromArray(curContainer, tinyMCE.getParam("theme_advanced_disable", "", true, ','));
-
-						for (var j=0; j<curContainer.length; j++)
-							curContainerHTML += tinyMCE.getControlHTML(curContainer[j]);
-
-						if (curContainer.length > 0) {
-							curContainerHTML += "<br />";
-							deltaHeight -= 23;
-						}
-
-						template['html'] += '<tr><td class="' + curCSS + '" align="' + curAlign + '" height="1">' + curContainerHTML + '</td></tr>';
-					}
-				}
-
-				template['html'] += '</tbody></table>';
-				//RowLayout
-			break;
-
-			case "CustomLayout" : //User defined layout callback...
-				var customLayout = tinyMCE.getParam("theme_advanced_custom_layout","");
-
-				if (customLayout != "" && eval("typeof(" + customLayout + ")") != "undefined") {
-					template = eval(customLayout + "(template);");
-				}
-			break;
-		}
-
-		if (resizing)
-			template['html'] += '<span id="{$editor_id}_resize_box" class="mceResizeBox"></span>';
-
-		template['html'] = tinyMCE.replaceVar(template['html'], 'style_select_options', styleSelectHTML);
-
-		// Set to default values
-		if (!template['delta_width'])
-			template['delta_width'] = 0;
-
-		if (!template['delta_height'])
-			template['delta_height'] = deltaHeight;
-
-		return template;
-	},
-
-	initInstance : function(inst) {
-		if (tinyMCE.getParam("theme_advanced_resizing", false)) {
-			if (tinyMCE.getParam("theme_advanced_resizing_use_cookie", true)) {
-				var w = TinyMCE_AdvancedTheme._getCookie("TinyMCE_" + inst.editorId + "_width");
-				var h = TinyMCE_AdvancedTheme._getCookie("TinyMCE_" + inst.editorId + "_height");
-
-				TinyMCE_AdvancedTheme._resizeTo(inst, w, h, tinyMCE.getParam("theme_advanced_resize_horizontal", true));
-			}
-		}
-
-		inst.addShortcut('ctrl', 'k', 'lang_link_desc', 'mceLink');
-	},
-
-	removeInstance : function(inst) {
-		new TinyMCE_Layer(inst.editorId + '_fcMenu').remove();
-		new TinyMCE_Layer(inst.editorId + '_bcMenu').remove();
-	},
-
-	hideInstance : function(inst) {
-		TinyMCE_AdvancedTheme._hideMenus(inst.editorId);
-	},
-
-	_handleMenuEvent : function(e) {
-		var te = tinyMCE.isMSIE ? window.event.srcElement : e.target;
-		tinyMCE._menuButtonEvent(e.type == "mouseover" ? "over" : "out", document.getElementById(te._switchId));
-
-		if (e.type == "click")
-			tinyMCE.execInstanceCommand(te._editor_id, te._command);
-	},
-
-	_hideMenus : function(id) {
-		var fcml = new TinyMCE_Layer(id + '_fcMenu'), bcml = new TinyMCE_Layer(id + '_bcMenu');
-
-		if (fcml.exists() && fcml.isVisible()) {
-			tinyMCE.switchClass(id + '_forecolor', 'mceMenuButton');
-			fcml.hide();
-		}
-
-		if (bcml.exists() && bcml.isVisible()) {
-			tinyMCE.switchClass(id + '_backcolor', 'mceMenuButton');
-			bcml.hide();
-		}
-	},
-
-	/**
-	 * Node change handler.
-	 */
-	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection, setup_content) {
-		var alignNode, breakOut, classNode;
-
-		function selectByValue(select_elm, value, first_index) {
-			first_index = typeof(first_index) == "undefined" ? false : true;
-
-			if (select_elm) {
-				for (var i=0; i<select_elm.options.length; i++) {
-					var ov = "" + select_elm.options[i].value;
-
-					if (first_index && ov.toLowerCase().indexOf(value.toLowerCase()) == 0) {
-						select_elm.selectedIndex = i;
-						return true;
-					}
-
-					if (ov == value) {
-						select_elm.selectedIndex = i;
-						return true;
-					}
-				}
-			}
-
-			return false;
-		};
-
-		// No node provided
-		if (node == null)
-			return;
-
-		// Update path
-		var pathElm = document.getElementById(editor_id + "_path");
-		var inst = tinyMCE.getInstanceById(editor_id);
-		var doc = inst.getDoc();
-		TinyMCE_AdvancedTheme._hideMenus(editor_id);
-
-		if (pathElm) {
-			// Get node path
-			var parentNode = node;
-			var path = new Array();
-
-			while (parentNode != null) {
-				if (parentNode.nodeName.toUpperCase() == "BODY") {
-					break;
-				}
-
-				// Only append element nodes to path
-				if (parentNode.nodeType == 1 && tinyMCE.getAttrib(parentNode, "class").indexOf('mceItemHidden') == -1) {
-					path[path.length] = parentNode;
-				}
-
-				parentNode = parentNode.parentNode;
-			}
-
-			// Setup HTML
-			var html = "";
-			for (var i=path.length-1; i>=0; i--) {
-				var nodeName = path[i].nodeName.toLowerCase();
-				var nodeData = "";
-
-				if (nodeName.indexOf("html:") == 0)
-					nodeName = nodeName.substring(5);
-
-				if (nodeName == "b") {
-					nodeName = "strong";
-				}
-
-				if (nodeName == "i") {
-					nodeName = "em";
-				}
-
-				if (nodeName == "span") {
-					var cn = tinyMCE.getAttrib(path[i], "class");
-					if (cn != "" && cn.indexOf('mceItem') == -1)
-						nodeData += "class: " + cn + " ";
-
-					var st = tinyMCE.getAttrib(path[i], "style");
-					if (st != "") {
-						st = tinyMCE.serializeStyle(tinyMCE.parseStyle(st));
-						nodeData += "style: " + tinyMCE.xmlEncode(st) + " ";
-					}
-				}
-
-				if (nodeName == "font") {
-					if (tinyMCE.getParam("convert_fonts_to_spans"))
-						nodeName = "span";
-
-					var face = tinyMCE.getAttrib(path[i], "face");
-					if (face != "")
-						nodeData += "font: " + tinyMCE.xmlEncode(face) + " ";
-
-					var size = tinyMCE.getAttrib(path[i], "size");
-					if (size != "")
-						nodeData += "size: " + tinyMCE.xmlEncode(size) + " ";
-
-					var color = tinyMCE.getAttrib(path[i], "color");
-					if (color != "")
-						nodeData += "color: " + tinyMCE.xmlEncode(color) + " ";
-				}
-
-				if (tinyMCE.getAttrib(path[i], 'id') != "") {
-					nodeData += "id: " + path[i].getAttribute('id') + " ";
-				}
-
-				var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i], "class"), false);
-				if (className != "" && className.indexOf('mceItem') == -1)
-					nodeData += "class: " + className + " ";
-
-				if (tinyMCE.getAttrib(path[i], 'src') != "") {
-					var src = tinyMCE.getAttrib(path[i], "mce_src");
-
-					if (src == "")
-						 src = tinyMCE.getAttrib(path[i], "src");
-
-					nodeData += "src: " + tinyMCE.xmlEncode(src) + " ";
-				}
-
-				if (path[i].nodeName == 'A' && tinyMCE.getAttrib(path[i], 'href') != "") {
-					var href = tinyMCE.getAttrib(path[i], "mce_href");
-
-					if (href == "")
-						 href = tinyMCE.getAttrib(path[i], "href");
-
-					nodeData += "href: " + tinyMCE.xmlEncode(href) + " ";
-				}
-
-				className = tinyMCE.getAttrib(path[i], "class");
-				if ((nodeName == "img" || nodeName == "span") && className.indexOf('mceItem') != -1) {
-					nodeName = className.replace(/mceItem([a-z]+)/gi, '$1').toLowerCase();
-					nodeData = path[i].getAttribute('title');
-				}
-
-				if (nodeName == "a" && (anchor = tinyMCE.getAttrib(path[i], "name")) != "") {
-					nodeName = "a";
-					nodeName += "#" + tinyMCE.xmlEncode(anchor);
-					nodeData = "";
-				}
-
-				if (tinyMCE.getAttrib(path[i], 'name').indexOf("mce_") != 0) {
-					var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i], "class"), false);
-					if (className != "" && className.indexOf('mceItem') == -1) {
-						nodeName += "." + className;
-					}
-				}
-
-				var cmd = 'tinyMCE.execInstanceCommand(\'' + editor_id + '\',\'mceSelectNodeDepth\',false,\'' + i + '\');';
-				html += '<a title="' + nodeData + '" href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" target="_self" class="mcePathItem">' + nodeName + '</a>';
-
-				if (i > 0) {
-					html += " &raquo; ";
-				}
-			}
-
-			pathElm.innerHTML = '<a href="#" accesskey="x"></a>' + tinyMCE.getLang('lang_theme_path') + ": " + html + '&#160;';
-		}
-
-		// Reset old states
-		tinyMCE.switchClass(editor_id + '_justifyleft', 'mceButtonNormal');
-		tinyMCE.switchClass(editor_id + '_justifyright', 'mceButtonNormal');
-		tinyMCE.switchClass(editor_id + '_justifycenter', 'mceButtonNormal');
-		tinyMCE.switchClass(editor_id + '_justifyfull', 'mceButtonNormal');
-		tinyMCE.switchClass(editor_id + '_bold', 'mceButtonNormal');
-		tinyMCE.switchClass(editor_id + '_italic', 'mceButtonNormal');
-		tinyMCE.switchClass(editor_id + '_underline', 'mceButtonNormal');
-		tinyMCE.switchClass(editor_id + '_strikethrough', 'mceButtonNormal');
-		tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonNormal');
-		tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonNormal');
-		tinyMCE.switchClass(editor_id + '_sub', 'mceButtonNormal');
-		tinyMCE.switchClass(editor_id + '_sup', 'mceButtonNormal');
-		tinyMCE.switchClass(editor_id + '_anchor', 'mceButtonNormal');
-		tinyMCE.switchClass(editor_id + '_link', 'mceButtonDisabled');
-		tinyMCE.switchClass(editor_id + '_unlink', 'mceButtonDisabled');
-		tinyMCE.switchClass(editor_id + '_outdent', 'mceButtonDisabled');
-		tinyMCE.switchClass(editor_id + '_image', 'mceButtonNormal');
-		tinyMCE.switchClass(editor_id + '_hr', 'mceButtonNormal');
-
-		if (node.nodeName == "A" && tinyMCE.getAttrib(node, "class").indexOf('mceItemAnchor') != -1)
-			tinyMCE.switchClass(editor_id + '_anchor', 'mceButtonSelected');
-
-		// Get link
-		var anchorLink = tinyMCE.getParentElement(node, "a", "href");
-
-		if (anchorLink || any_selection) {
-			tinyMCE.switchClass(editor_id + '_link', anchorLink ? 'mceButtonSelected' : 'mceButtonNormal');
-			tinyMCE.switchClass(editor_id + '_unlink', anchorLink ? 'mceButtonSelected' : 'mceButtonNormal');
-		}
-
-		// Handle visual aid
-		tinyMCE.switchClass(editor_id + '_visualaid', visual_aid ? 'mceButtonSelected' : 'mceButtonNormal');
-
-		if (undo_levels != -1) {
-			tinyMCE.switchClass(editor_id + '_undo', 'mceButtonDisabled');
-			tinyMCE.switchClass(editor_id + '_redo', 'mceButtonDisabled');
-		}
-
-		// Within li, blockquote
-		if (tinyMCE.getParentElement(node, "li,blockquote"))
-			tinyMCE.switchClass(editor_id + '_outdent', 'mceButtonNormal');
-
-		// Has redo levels
-		if (undo_index != -1 && (undo_index < undo_levels-1 && undo_levels > 0))
-			tinyMCE.switchClass(editor_id + '_redo', 'mceButtonNormal');
-
-		// Has undo levels
-		if (undo_index != -1 && (undo_index > 0 && undo_levels > 0))
-			tinyMCE.switchClass(editor_id + '_undo', 'mceButtonNormal');
-
-		// Select class in select box
-		var selectElm = document.getElementById(editor_id + "_styleSelect");
-
-		if (selectElm) {
-			TinyMCE_AdvancedTheme._setupCSSClasses(editor_id);
-
-			classNode = node;
-			breakOut = false;
-			var index = 0;
-
-			do {
-				if (classNode && classNode.className) {
-					for (var i=0; i<selectElm.options.length; i++) {
-						if (selectElm.options[i].value == classNode.className) {
-							index = i;
-							breakOut = true;
-							break;
-						}
-					}
-				}
-			} while (!breakOut && classNode != null && (classNode = classNode.parentNode) != null);
-
-			selectElm.selectedIndex = index;
-		}
-
-		// Select formatblock
-		var selectElm = document.getElementById(editor_id + "_formatSelect");
-		if (selectElm) {
-			var elm = tinyMCE.getParentElement(node, "p,div,h1,h2,h3,h4,h5,h6,pre,address");
-
-			if (elm)
-				selectByValue(selectElm, "<" + elm.nodeName.toLowerCase() + ">");
-			else
-				selectByValue(selectElm, "");
-		}
-
-		// Select fontselect
-		var selectElm = document.getElementById(editor_id + "_fontNameSelect");
-		if (selectElm) {
-			if (!tinyMCE.isSafari && !(tinyMCE.isMSIE && !tinyMCE.isOpera)) {
-				var face = inst.queryCommandValue('FontName');
-
-				face = face == null || face == "" ? "" : face;
-
-				selectByValue(selectElm, face, face != "");
-			} else {
-				var elm = tinyMCE.getParentElement(node, "font", "face");
-
-				if (elm) {
-					var family = tinyMCE.getAttrib(elm, "face");
-
-					if (family == '')
-						family = '' + elm.style.fontFamily;
-
-					if (!selectByValue(selectElm, family, family != ""))
-						selectByValue(selectElm, "");
-				} else
-					selectByValue(selectElm, "");
-			}
-		}
-
-		// Select fontsize
-		var selectElm = document.getElementById(editor_id + "_fontSizeSelect");
-		if (selectElm) {
-			if (!tinyMCE.isSafari && !tinyMCE.isOpera) {
-				var size = inst.queryCommandValue('FontSize');
-				selectByValue(selectElm, size == null || size == "" ? "0" : size);
-			} else {
-				var elm = tinyMCE.getParentElement(node, "font", "size");
-				if (elm) {
-					var size = tinyMCE.getAttrib(elm, "size");
-
-					if (size == '') {
-						var sizes = new Array('', '8px', '10px', '12px', '14px', '18px', '24px', '36px');
-
-						size = '' + elm.style.fontSize;
-
-						for (var i=0; i<sizes.length; i++) {
-							if (('' + sizes[i]) == size) {
-								size = i;
-								break;
-							}
-						}
-					}
-
-					if (!selectByValue(selectElm, size))
-						selectByValue(selectElm, "");
-				} else
-					selectByValue(selectElm, "0");
-			}
-		}
-
-		// Handle align attributes
-		alignNode = node;
-		breakOut = false;
-		do {
-			if (!alignNode.getAttribute || !alignNode.getAttribute('align'))
-				continue;
-
-			switch (alignNode.getAttribute('align').toLowerCase()) {
-				case "left":
-					tinyMCE.switchClass(editor_id + '_justifyleft', 'mceButtonSelected');
-					breakOut = true;
-				break;
-
-				case "right":
-					tinyMCE.switchClass(editor_id + '_justifyright', 'mceButtonSelected');
-					breakOut = true;
-				break;
-
-				case "middle":
-				case "center":
-					tinyMCE.switchClass(editor_id + '_justifycenter', 'mceButtonSelected');
-					breakOut = true;
-				break;
-
-				case "justify":
-					tinyMCE.switchClass(editor_id + '_justifyfull', 'mceButtonSelected');
-					breakOut = true;
-				break;
-			}
-		} while (!breakOut && (alignNode = alignNode.parentNode) != null);
-
-		// Div justification
-		var div = tinyMCE.getParentElement(node, "div");
-		if (div && div.style.textAlign == "center")
-			tinyMCE.switchClass(editor_id + '_justifycenter', 'mceButtonSelected');
-
-		// Do special text
-		if (!setup_content) {
-			// , "JustifyLeft", "_justifyleft", "JustifyCenter", "justifycenter", "JustifyRight", "justifyright", "JustifyFull", "justifyfull", "InsertUnorderedList", "bullist", "InsertOrderedList", "numlist", "InsertUnorderedList", "bullist", "Outdent", "outdent", "Indent", "indent", "subscript", "sub"
-			var ar = new Array("Bold", "_bold", "Italic", "_italic", "Strikethrough", "_strikethrough", "superscript", "_sup", "subscript", "_sub");
-			for (var i=0; i<ar.length; i+=2) {
-				if (inst.queryCommandState(ar[i]))
-					tinyMCE.switchClass(editor_id + ar[i+1], 'mceButtonSelected');
-			}
-
-			if (inst.queryCommandState("Underline") && (node.parentNode == null || node.parentNode.nodeName != "A"))
-				tinyMCE.switchClass(editor_id + '_underline', 'mceButtonSelected');
-		}
-
-		// Handle elements
-		do {
-			switch (node.nodeName) {
-				case "UL":
-					tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonSelected');
-				break;
-
-				case "OL":
-					tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonSelected');
-				break;
-
-				case "HR":
-					 tinyMCE.switchClass(editor_id + '_hr', 'mceButtonSelected');
-				break;
-
-				case "IMG":
-				if (tinyMCE.getAttrib(node, 'name').indexOf('mce_') != 0 && tinyMCE.getAttrib(node, 'class').indexOf('mceItem') == -1) {
-					tinyMCE.switchClass(editor_id + '_image', 'mceButtonSelected');
-				}
-				break;
-			}
-		} while ((node = node.parentNode) != null);
-	},
-
-	// Private theme internal functions
-
-	// This function auto imports CSS classes into the class selection droplist
-	_setupCSSClasses : function(editor_id) {
-		var i, selectElm;
-
-		if (!TinyMCE_AdvancedTheme._autoImportCSSClasses)
-			return;
-
-		selectElm = document.getElementById(editor_id + '_styleSelect');
-
-		if (selectElm && selectElm.getAttribute('cssImported') != 'true') {
-			var csses = tinyMCE.getCSSClasses(editor_id);
-			if (csses && selectElm)	{
-				for (i=0; i<csses.length; i++)
-					selectElm.options[selectElm.options.length] = new Option(csses[i], csses[i]);
-			}
-
-			// Only do this once
-			if (csses != null && csses.length > 0)
-				selectElm.setAttribute('cssImported', 'true');
-		}
-	},
-
-	_setCookie : function(name, value, expires, path, domain, secure) {
-		var curCookie = name + "=" + escape(value) +
-			((expires) ? "; expires=" + expires.toGMTString() : "") +
-			((path) ? "; path=" + escape(path) : "") +
-			((domain) ? "; domain=" + domain : "") +
-			((secure) ? "; secure" : "");
-
-		document.cookie = curCookie;
-	},
-
-	_getCookie : function(name) {
-		var dc = document.cookie;
-		var prefix = name + "=";
-		var begin = dc.indexOf("; " + prefix);
-
-		if (begin == -1) {
-			begin = dc.indexOf(prefix);
-
-			if (begin != 0)
-				return null;
-		} else
-			begin += 2;
-
-		var end = document.cookie.indexOf(";", begin);
-
-		if (end == -1)
-			end = dc.length;
-
-		return unescape(dc.substring(begin + prefix.length, end));
-	},
-
-	_resizeTo : function(inst, w, h, set_w) {
-		var editorContainer = document.getElementById(inst.editorId + '_parent');
-		var tableElm = editorContainer.firstChild;
-		var iframe = inst.iframeElement;
-
-		if (w == null || w == "null") {
-			set_w = false;
-			w = 0;
-		}
-
-		if (h == null || h == "null")
-			return;
-
-		w = parseInt(w);
-		h = parseInt(h);
-
-		if (tinyMCE.isGecko) {
-			w += 2;
-			h += 2;
-		}
-
-		var dx = w - tableElm.clientWidth;
-		var dy = h - tableElm.clientHeight;
-
-		w = w < 1 ? 30 : w;
-		h = h < 1 ? 30 : h;
-
-		if (set_w)
-			tableElm.style.width = w + "px";
-
-		tableElm.style.height = h + "px";
-
-		iw = iframe.clientWidth + dx;
-		ih = iframe.clientHeight + dy;
-
-		iw = iw < 1 ? 30 : iw;
-		ih = ih < 1 ? 30 : ih;
-
-		if (tinyMCE.isGecko) {
-			iw -= 2;
-			ih -= 2;
-		}
-
-		if (set_w)
-			iframe.style.width = iw + "px";
-
-		iframe.style.height = ih + "px";
-
-		// Is it to small, make it bigger again
-		if (set_w) {
-			var tableBodyElm = tableElm.firstChild;
-			var minIframeWidth = tableBodyElm.scrollWidth;
-			if (inst.iframeElement.clientWidth < minIframeWidth) {
-				dx = minIframeWidth - inst.iframeElement.clientWidth;
-
-				inst.iframeElement.style.width = (iw + dx) + "px";
-			}
-		}
-
-		// Remove pesky table controls
-		inst.useCSS = false;
-	},
-
-	/**
-	 * Handles resizing events.
-	 */
-	_resizeEventHandler : function(e) {
-		var resizer = TinyMCE_AdvancedTheme._resizer;
-
-		// Do nothing
-		if (!resizer.resizing)
-			return;
-
-		e = typeof(e) == "undefined" ? window.event : e;
-
-		var dx = e.screenX - resizer.downX;
-		var dy = e.screenY - resizer.downY;
-		var resizeBox = resizer.resizeBox;
-		var editorId = resizer.editorId;
-
-		switch (e.type) {
-			case "mousemove":
-				var w, h;
-
-				w = resizer.width + dx;
-				h = resizer.height + dy;
-
-				w = w < 1 ? 1 : w;
-				h = h < 1 ? 1 : h;
-
-				if (resizer.horizontal)
-					resizeBox.style.width = w + "px";
-
-				resizeBox.style.height = h + "px";
-				break;
-
-			case "mouseup":
-				TinyMCE_AdvancedTheme._setResizing(e, editorId, false);
-				TinyMCE_AdvancedTheme._resizeTo(tinyMCE.getInstanceById(editorId), resizer.width + dx, resizer.height + dy, resizer.horizontal);
-
-				// Expire in a month
-				if (tinyMCE.getParam("theme_advanced_resizing_use_cookie", true)) {
-					var expires = new Date();
-					expires.setTime(expires.getTime() + 3600000 * 24 * 30);
-
-					// Set the cookies
-					TinyMCE_AdvancedTheme._setCookie("TinyMCE_" + editorId + "_width", "" + (resizer.horizontal ? resizer.width + dx : ""), expires);
-					TinyMCE_AdvancedTheme._setCookie("TinyMCE_" + editorId + "_height", "" + (resizer.height + dy), expires);
-				}
-				break;
-		}
-	},
-
-	/**
-	 * Starts/stops the editor resizing.
-	 */
-	_setResizing : function(e, editor_id, state) {
-		e = typeof(e) == "undefined" ? window.event : e;
-
-		var resizer = TinyMCE_AdvancedTheme._resizer;
-		var editorContainer = document.getElementById(editor_id + '_parent');
-		var editorArea = document.getElementById(editor_id + '_parent').firstChild;
-		var resizeBox = document.getElementById(editor_id + '_resize_box');
-		var inst = tinyMCE.getInstanceById(editor_id);
-
-		if (state) {
-			// Place box over editor area
-			var width = editorArea.clientWidth;
-			var height = editorArea.clientHeight;
-
-			resizeBox.style.width = width + "px";
-			resizeBox.style.height = height + "px";
-
-			resizer.iframeWidth = inst.iframeElement.clientWidth;
-			resizer.iframeHeight = inst.iframeElement.clientHeight;
-
-			// Hide editor and show resize box
-			editorArea.style.display = "none";
-			resizeBox.style.display = "block";
-
-			// Add event handlers, only once
-			if (!resizer.eventHandlers) {
-				if (tinyMCE.isMSIE)
-					tinyMCE.addEvent(document, "mousemove", TinyMCE_AdvancedTheme._resizeEventHandler);
-				else
-					tinyMCE.addEvent(window, "mousemove", TinyMCE_AdvancedTheme._resizeEventHandler);
-
-				tinyMCE.addEvent(document, "mouseup", TinyMCE_AdvancedTheme._resizeEventHandler);
-
-				resizer.eventHandlers = true;
-			}
-
-			resizer.resizing = true;
-			resizer.downX = e.screenX;
-			resizer.downY = e.screenY;
-			resizer.width = parseInt(resizeBox.style.width);
-			resizer.height = parseInt(resizeBox.style.height);
-			resizer.editorId = editor_id;
-			resizer.resizeBox = resizeBox;
-			resizer.horizontal = tinyMCE.getParam("theme_advanced_resize_horizontal", true);
-		} else {
-			resizer.resizing = false;
-			resizeBox.style.display = "none";
-			editorArea.style.display = tinyMCE.isMSIE && !tinyMCE.isOpera ? "block" : "table";
-			tinyMCE.execCommand('mceResetDesignMode');
-		}
-	},
-
-	_getColorHTML : function(id, n, cm) {
-		var i, h, cl;
-
-		h = '<span class="mceMenuLine"></span>';
-		cl = tinyMCE.getParam(n, TinyMCE_AdvancedTheme._defColors).split(',');
-
-		h += '<table class="mceColors"><tr>';
-		for (i=0; i<cl.length; i++) {
-			c = 'tinyMCE.execInstanceCommand(\'' + id + '\', \'' + cm + '\', false, \'#' + cl[i] + '\');';
-			h += '<td><a href="javascript:' + c + '" style="background-color: #' + cl[i] + '" onclick="' + c + ';return false;"></a></td>';
-
-			if ((i+1) % 8 == 0)
-				h += '</tr><tr>';
-		}
-
-		h += '</tr></table>';
-
-		if (tinyMCE.getParam("theme_advanced_more_colors", true))
-			h += '<a href="javascript:void(0);" onclick="TinyMCE_AdvancedTheme._pickColor(\'' + id + '\',\'' + cm + '\');" class="mceMoreColors">' + tinyMCE.getLang('lang_more_colors') + '</a>';
-
-		return h;
-	},
-
-	_pickColor : function(id, cm) {
-		var inputColor, inst = tinyMCE.selectedInstance;
-
-		if (cm == 'forecolor' && inst)
-			inputColor = inst.foreColor;
-
-		if ((cm == 'backcolor' || cm == 'HiliteColor') && inst)
-			inputColor = inst.backColor;
-
-		tinyMCE.execCommand('mceColorPicker', true, {color : inputColor, callback : function(c) {
-			tinyMCE.execInstanceCommand(id, cm, false, c);
-		}});
-	},
-
-	_insertImage : function(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout) {
-		tinyMCE.execCommand("mceInsertContent", false, tinyMCE.createTagHTML('img', {
-			src : tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], src), // Force absolute
-			mce_src : src,
-			alt : alt,
-			border : border,
-			hspace : hspace,
-			vspace : vspace,
-			width : width,
-			height : height,
-			align : align,
-			title : title,
-			onmouseover : onmouseover,
-			onmouseout : onmouseout
-		}));
-	},
-
-	_insertLink : function(href, target, title, onclick, style_class) {
-		tinyMCE.execCommand('mceBeginUndoLevel');
-
-		if (tinyMCE.selectedInstance && tinyMCE.selectedElement && tinyMCE.selectedElement.nodeName.toLowerCase() == "img") {
-			var doc = tinyMCE.selectedInstance.getDoc();
-			var linkElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "a");
-			var newLink = false;
-
-			if (!linkElement) {
-				linkElement = doc.createElement("a");
-				newLink = true;
-			}
-
-			var mhref = href;
-			var thref = eval(tinyMCE.settings['urlconverter_callback'] + "(href, linkElement);");
-			mhref = tinyMCE.getParam('convert_urls') ? href : mhref;
-
-			tinyMCE.setAttrib(linkElement, 'href', thref);
-			tinyMCE.setAttrib(linkElement, 'mce_href', mhref);
-			tinyMCE.setAttrib(linkElement, 'target', target);
-			tinyMCE.setAttrib(linkElement, 'title', title);
-			tinyMCE.setAttrib(linkElement, 'onclick', onclick);
-			tinyMCE.setAttrib(linkElement, 'class', style_class);
-
-			if (newLink) {
-				linkElement.appendChild(tinyMCE.selectedElement.cloneNode(true));
-				tinyMCE.selectedElement.parentNode.replaceChild(linkElement, tinyMCE.selectedElement);
-			}
-
-			return;
-		}
-
-		if (!tinyMCE.linkElement && tinyMCE.selectedInstance) {
-			if (tinyMCE.isSafari) {
-				tinyMCE.execCommand("mceInsertContent", false, '<a href="' + tinyMCE.uniqueURL + '">' + tinyMCE.selectedInstance.selection.getSelectedHTML() + '</a>');
-			} else
-				tinyMCE.selectedInstance.contentDocument.execCommand("createlink", false, tinyMCE.uniqueURL);
-
-			tinyMCE.linkElement = tinyMCE.getElementByAttributeValue(tinyMCE.selectedInstance.contentDocument.body, "a", "href", tinyMCE.uniqueURL);
-
-			var elementArray = tinyMCE.getElementsByAttributeValue(tinyMCE.selectedInstance.contentDocument.body, "a", "href", tinyMCE.uniqueURL);
-
-			for (var i=0; i<elementArray.length; i++) {
-				var mhref = href;
-				var thref = eval(tinyMCE.settings['urlconverter_callback'] + "(href, elementArray[i]);");
-				mhref = tinyMCE.getParam('convert_urls') ? href : mhref;
-
-				tinyMCE.setAttrib(elementArray[i], 'href', thref);
-				tinyMCE.setAttrib(elementArray[i], 'mce_href', mhref);
-				tinyMCE.setAttrib(elementArray[i], 'target', target);
-				tinyMCE.setAttrib(elementArray[i], 'title', title);
-				tinyMCE.setAttrib(elementArray[i], 'onclick', onclick);
-				tinyMCE.setAttrib(elementArray[i], 'class', style_class);
-			}
-
-			tinyMCE.linkElement = elementArray[0];
-		}
-
-		if (tinyMCE.linkElement) {
-			var mhref = href;
-			href = eval(tinyMCE.settings['urlconverter_callback'] + "(href, tinyMCE.linkElement);");
-			mhref = tinyMCE.getParam('convert_urls') ? href : mhref;
-
-			tinyMCE.setAttrib(tinyMCE.linkElement, 'href', href);
-			tinyMCE.setAttrib(tinyMCE.linkElement, 'mce_href', mhref);
-			tinyMCE.setAttrib(tinyMCE.linkElement, 'target', target);
-			tinyMCE.setAttrib(tinyMCE.linkElement, 'title', title);
-			tinyMCE.setAttrib(tinyMCE.linkElement, 'onclick', onclick);
-			tinyMCE.setAttrib(tinyMCE.linkElement, 'class', style_class);
-		}
-
-		tinyMCE.execCommand('mceEndUndoLevel');
-	}
-};
-
-tinyMCE.addTheme("advanced", TinyMCE_AdvancedTheme);
-
-// Add default buttons maps for advanced theme and all internal plugins
-tinyMCE.addButtonMap(TinyMCE_AdvancedTheme._buttonMap);
+/**
+ * $Id: editor_template_src.js 1045 2009-03-04 20:03:18Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function(tinymce) {
+	var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, each = tinymce.each, Cookie = tinymce.util.Cookie, lastExtID, explode = tinymce.explode;
+
+	// Tell it to load theme specific language pack(s)
+	tinymce.ThemeManager.requireLangPack('advanced');
+
+	tinymce.create('tinymce.themes.AdvancedTheme', {
+		sizes : [8, 10, 12, 14, 18, 24, 36],
+
+		// Control name lookup, format: title, command
+		controls : {
+			bold : ['bold_desc', 'Bold'],
+			italic : ['italic_desc', 'Italic'],
+			underline : ['underline_desc', 'Underline'],
+			strikethrough : ['striketrough_desc', 'Strikethrough'],
+			justifyleft : ['justifyleft_desc', 'JustifyLeft'],
+			justifycenter : ['justifycenter_desc', 'JustifyCenter'],
+			justifyright : ['justifyright_desc', 'JustifyRight'],
+			justifyfull : ['justifyfull_desc', 'JustifyFull'],
+			bullist : ['bullist_desc', 'InsertUnorderedList'],
+			numlist : ['numlist_desc', 'InsertOrderedList'],
+			outdent : ['outdent_desc', 'Outdent'],
+			indent : ['indent_desc', 'Indent'],
+			cut : ['cut_desc', 'Cut'],
+			copy : ['copy_desc', 'Copy'],
+			paste : ['paste_desc', 'Paste'],
+			undo : ['undo_desc', 'Undo'],
+			redo : ['redo_desc', 'Redo'],
+			link : ['link_desc', 'mceLink'],
+			unlink : ['unlink_desc', 'unlink'],
+			image : ['image_desc', 'mceImage'],
+			cleanup : ['cleanup_desc', 'mceCleanup'],
+			help : ['help_desc', 'mceHelp'],
+			code : ['code_desc', 'mceCodeEditor'],
+			hr : ['hr_desc', 'InsertHorizontalRule'],
+			removeformat : ['removeformat_desc', 'RemoveFormat'],
+			sub : ['sub_desc', 'subscript'],
+			sup : ['sup_desc', 'superscript'],
+			forecolor : ['forecolor_desc', 'ForeColor'],
+			forecolorpicker : ['forecolor_desc', 'mceForeColor'],
+			backcolor : ['backcolor_desc', 'HiliteColor'],
+			backcolorpicker : ['backcolor_desc', 'mceBackColor'],
+			charmap : ['charmap_desc', 'mceCharMap'],
+			visualaid : ['visualaid_desc', 'mceToggleVisualAid'],
+			anchor : ['anchor_desc', 'mceInsertAnchor'],
+			newdocument : ['newdocument_desc', 'mceNewDocument'],
+			blockquote : ['blockquote_desc', 'mceBlockQuote']
+		},
+
+		stateControls : ['bold', 'italic', 'underline', 'strikethrough', 'bullist', 'numlist', 'justifyleft', 'justifycenter', 'justifyright', 'justifyfull', 'sub', 'sup', 'blockquote'],
+
+		init : function(ed, url) {
+			var t = this, s, v, o;
+	
+			t.editor = ed;
+			t.url = url;
+			t.onResolveName = new tinymce.util.Dispatcher(this);
+
+			// Default settings
+			t.settings = s = extend({
+				theme_advanced_path : true,
+				theme_advanced_toolbar_location : 'bottom',
+				theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",
+				theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",
+				theme_advanced_buttons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap",
+				theme_advanced_blockformats : "p,address,pre,h1,h2,h3,h4,h5,h6",
+				theme_advanced_toolbar_align : "center",
+				theme_advanced_fonts : "Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",
+				theme_advanced_more_colors : 1,
+				theme_advanced_row_height : 23,
+				theme_advanced_resize_horizontal : 1,
+				theme_advanced_resizing_use_cookie : 1,
+				theme_advanced_font_sizes : "1,2,3,4,5,6,7",
+				readonly : ed.settings.readonly
+			}, ed.settings);
+
+			// Setup default font_size_style_values
+			if (!s.font_size_style_values)
+				s.font_size_style_values = "8pt,10pt,12pt,14pt,18pt,24pt,36pt";
+
+			if (tinymce.is(s.theme_advanced_font_sizes, 'string')) {
+				s.font_size_style_values = tinymce.explode(s.font_size_style_values);
+				s.font_size_classes = tinymce.explode(s.font_size_classes || '');
+
+				// Parse string value
+				o = {};
+				ed.settings.theme_advanced_font_sizes = s.theme_advanced_font_sizes;
+				each(ed.getParam('theme_advanced_font_sizes', '', 'hash'), function(v, k) {
+					var cl;
+
+					if (k == v && v >= 1 && v <= 7) {
+						k = v + ' (' + t.sizes[v - 1] + 'pt)';
+
+						if (ed.settings.convert_fonts_to_spans) {
+							cl = s.font_size_classes[v - 1];
+							v = s.font_size_style_values[v - 1] || (t.sizes[v - 1] + 'pt');
+						}
+					}
+
+					if (/^\s*\./.test(v))
+						cl = v.replace(/\./g, '');
+
+					o[k] = cl ? {'class' : cl} : {fontSize : v};
+				});
+
+				s.theme_advanced_font_sizes = o;
+			}
+
+			if ((v = s.theme_advanced_path_location) && v != 'none')
+				s.theme_advanced_statusbar_location = s.theme_advanced_path_location;
+
+			if (s.theme_advanced_statusbar_location == 'none')
+				s.theme_advanced_statusbar_location = 0;
+
+			// Init editor
+			ed.onInit.add(function() {
+				ed.onNodeChange.add(t._nodeChanged, t);
+
+				if (ed.settings.content_css !== false)
+					ed.dom.loadCSS(ed.baseURI.toAbsolute("themes/advanced/skins/" + ed.settings.skin + "/content.css"));
+			});
+
+			ed.onSetProgressState.add(function(ed, b, ti) {
+				var co, id = ed.id, tb;
+
+				if (b) {
+					t.progressTimer = setTimeout(function() {
+						co = ed.getContainer();
+						co = co.insertBefore(DOM.create('DIV', {style : 'position:relative'}), co.firstChild);
+						tb = DOM.get(ed.id + '_tbl');
+
+						DOM.add(co, 'div', {id : id + '_blocker', 'class' : 'mceBlocker', style : {width : tb.clientWidth + 2, height : tb.clientHeight + 2}});
+						DOM.add(co, 'div', {id : id + '_progress', 'class' : 'mceProgress', style : {left : tb.clientWidth / 2, top : tb.clientHeight / 2}});
+					}, ti || 0);
+				} else {
+					DOM.remove(id + '_blocker');
+					DOM.remove(id + '_progress');
+					clearTimeout(t.progressTimer);
+				}
+			});
+
+			DOM.loadCSS(s.editor_css ? ed.documentBaseURI.toAbsolute(s.editor_css) : url + "/skins/" + ed.settings.skin + "/ui.css");
+
+			if (s.skin_variant)
+				DOM.loadCSS(url + "/skins/" + ed.settings.skin + "/ui_" + s.skin_variant + ".css");
+		},
+
+		createControl : function(n, cf) {
+			var cd, c;
+
+			if (c = cf.createControl(n))
+				return c;
+
+			switch (n) {
+				case "styleselect":
+					return this._createStyleSelect();
+
+				case "formatselect":
+					return this._createBlockFormats();
+
+				case "fontselect":
+					return this._createFontSelect();
+
+				case "fontsizeselect":
+					return this._createFontSizeSelect();
+
+				case "forecolor":
+					return this._createForeColorMenu();
+
+				case "backcolor":
+					return this._createBackColorMenu();
+			}
+
+			if ((cd = this.controls[n]))
+				return cf.createButton(n, {title : "advanced." + cd[0], cmd : cd[1], ui : cd[2], value : cd[3]});
+		},
+
+		execCommand : function(cmd, ui, val) {
+			var f = this['_' + cmd];
+
+			if (f) {
+				f.call(this, ui, val);
+				return true;
+			}
+
+			return false;
+		},
+
+		_importClasses : function(e) {
+			var ed = this.editor, c = ed.controlManager.get('styleselect');
+
+			if (c.getLength() == 0) {
+				each(ed.dom.getClasses(), function(o) {
+					c.add(o['class'], o['class']);
+				});
+			}
+		},
+
+		_createStyleSelect : function(n) {
+			var t = this, ed = t.editor, cf = ed.controlManager, c = cf.createListBox('styleselect', {
+				title : 'advanced.style_select',
+				onselect : function(v) {
+					if (c.selectedValue === v) {
+						ed.execCommand('mceSetStyleInfo', 0, {command : 'removeformat'});
+						c.select();
+						return false;
+					} else
+						ed.execCommand('mceSetCSSClass', 0, v);
+				}
+			});
+
+			if (c) {
+				each(ed.getParam('theme_advanced_styles', '', 'hash'), function(v, k) {
+					if (v)
+						c.add(t.editor.translate(k), v);
+				});
+
+				c.onPostRender.add(function(ed, n) {
+					if (!c.NativeListBox) {
+						Event.add(n.id + '_text', 'focus', t._importClasses, t);
+						Event.add(n.id + '_text', 'mousedown', t._importClasses, t);
+						Event.add(n.id + '_open', 'focus', t._importClasses, t);
+						Event.add(n.id + '_open', 'mousedown', t._importClasses, t);
+					} else
+						Event.add(n.id, 'focus', t._importClasses, t);
+				});
+			}
+
+			return c;
+		},
+
+		_createFontSelect : function() {
+			var c, t = this, ed = t.editor;
+
+			c = ed.controlManager.createListBox('fontselect', {title : 'advanced.fontdefault', cmd : 'FontName'});
+			if (c) {
+				each(ed.getParam('theme_advanced_fonts', t.settings.theme_advanced_fonts, 'hash'), function(v, k) {
+					c.add(ed.translate(k), v, {style : v.indexOf('dings') == -1 ? 'font-family:' + v : ''});
+				});
+			}
+
+			return c;
+		},
+
+		_createFontSizeSelect : function() {
+			var t = this, ed = t.editor, c, i = 0, cl = [];
+
+			c = ed.controlManager.createListBox('fontsizeselect', {title : 'advanced.font_size', onselect : function(v) {
+				if (v.fontSize)
+					ed.execCommand('FontSize', false, v.fontSize);
+				else {
+					each(t.settings.theme_advanced_font_sizes, function(v, k) {
+						if (v['class'])
+							cl.push(v['class']);
+					});
+
+					ed.editorCommands._applyInlineStyle('span', {'class' : v['class']}, {check_classes : cl});
+				}
+			}});
+
+			if (c) {
+				each(t.settings.theme_advanced_font_sizes, function(v, k) {
+					var fz = v.fontSize;
+
+					if (fz >= 1 && fz <= 7)
+						fz = t.sizes[parseInt(fz) - 1] + 'pt';
+
+					c.add(k, v, {'style' : 'font-size:' + fz, 'class' : 'mceFontSize' + (i++) + (' ' + (v['class'] || ''))});
+				});
+			}
+
+			return c;
+		},
+
+		_createBlockFormats : function() {
+			var c, fmts = {
+				p : 'advanced.paragraph',
+				address : 'advanced.address',
+				pre : 'advanced.pre',
+				h1 : 'advanced.h1',
+				h2 : 'advanced.h2',
+				h3 : 'advanced.h3',
+				h4 : 'advanced.h4',
+				h5 : 'advanced.h5',
+				h6 : 'advanced.h6',
+				div : 'advanced.div',
+				blockquote : 'advanced.blockquote',
+				code : 'advanced.code',
+				dt : 'advanced.dt',
+				dd : 'advanced.dd',
+				samp : 'advanced.samp'
+			}, t = this;
+
+			c = t.editor.controlManager.createListBox('formatselect', {title : 'advanced.block', cmd : 'FormatBlock'});
+			if (c) {
+				each(t.editor.getParam('theme_advanced_blockformats', t.settings.theme_advanced_blockformats, 'hash'), function(v, k) {
+					c.add(t.editor.translate(k != v ? k : fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v});
+				});
+			}
+
+			return c;
+		},
+
+		_createForeColorMenu : function() {
+			var c, t = this, s = t.settings, o = {}, v;
+
+			if (s.theme_advanced_more_colors) {
+				o.more_colors_func = function() {
+					t._mceColorPicker(0, {
+						color : c.value,
+						func : function(co) {
+							c.setColor(co);
+						}
+					});
+				};
+			}
+
+			if (v = s.theme_advanced_text_colors)
+				o.colors = v;
+
+			if (s.theme_advanced_default_foreground_color)
+				o.default_color = s.theme_advanced_default_foreground_color;
+
+			o.title = 'advanced.forecolor_desc';
+			o.cmd = 'ForeColor';
+			o.scope = this;
+
+			c = t.editor.controlManager.createColorSplitButton('forecolor', o);
+
+			return c;
+		},
+
+		_createBackColorMenu : function() {
+			var c, t = this, s = t.settings, o = {}, v;
+
+			if (s.theme_advanced_more_colors) {
+				o.more_colors_func = function() {
+					t._mceColorPicker(0, {
+						color : c.value,
+						func : function(co) {
+							c.setColor(co);
+						}
+					});
+				};
+			}
+
+			if (v = s.theme_advanced_background_colors)
+				o.colors = v;
+
+			if (s.theme_advanced_default_background_color)
+				o.default_color = s.theme_advanced_default_background_color;
+
+			o.title = 'advanced.backcolor_desc';
+			o.cmd = 'HiliteColor';
+			o.scope = this;
+
+			c = t.editor.controlManager.createColorSplitButton('backcolor', o);
+
+			return c;
+		},
+
+		renderUI : function(o) {
+			var n, ic, tb, t = this, ed = t.editor, s = t.settings, sc, p, nl;
+
+			n = p = DOM.create('span', {id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '')});
+
+			if (!DOM.boxModel)
+				n = DOM.add(n, 'div', {'class' : 'mceOldBoxModel'});
+
+			n = sc = DOM.add(n, 'table', {id : ed.id + '_tbl', 'class' : 'mceLayout', cellSpacing : 0, cellPadding : 0});
+			n = tb = DOM.add(n, 'tbody');
+
+			switch ((s.theme_advanced_layout_manager || '').toLowerCase()) {
+				case "rowlayout":
+					ic = t._rowLayout(s, tb, o);
+					break;
+
+				case "customlayout":
+					ic = ed.execCallback("theme_advanced_custom_layout", s, tb, o, p);
+					break;
+
+				default:
+					ic = t._simpleLayout(s, tb, o, p);
+			}
+
+			n = o.targetNode;
+
+			// Add classes to first and last TRs
+			nl = DOM.stdMode ? sc.getElementsByTagName('tr') : sc.rows; // Quick fix for IE 8
+			DOM.addClass(nl[0], 'mceFirst');
+			DOM.addClass(nl[nl.length - 1], 'mceLast');
+
+			// Add classes to first and last TDs
+			each(DOM.select('tr', tb), function(n) {
+				DOM.addClass(n.firstChild, 'mceFirst');
+				DOM.addClass(n.childNodes[n.childNodes.length - 1], 'mceLast');
+			});
+
+			if (DOM.get(s.theme_advanced_toolbar_container))
+				DOM.get(s.theme_advanced_toolbar_container).appendChild(p);
+			else
+				DOM.insertAfter(p, n);
+
+			Event.add(ed.id + '_path_row', 'click', function(e) {
+				e = e.target;
+
+				if (e.nodeName == 'A') {
+					t._sel(e.className.replace(/^.*mcePath_([0-9]+).*$/, '$1'));
+
+					return Event.cancel(e);
+				}
+			});
+/*
+			if (DOM.get(ed.id + '_path_row')) {
+				Event.add(ed.id + '_tbl', 'mouseover', function(e) {
+					var re;
+	
+					e = e.target;
+
+					if (e.nodeName == 'SPAN' && DOM.hasClass(e.parentNode, 'mceButton')) {
+						re = DOM.get(ed.id + '_path_row');
+						t.lastPath = re.innerHTML;
+						DOM.setHTML(re, e.parentNode.title);
+					}
+				});
+
+				Event.add(ed.id + '_tbl', 'mouseout', function(e) {
+					if (t.lastPath) {
+						DOM.setHTML(ed.id + '_path_row', t.lastPath);
+						t.lastPath = 0;
+					}
+				});
+			}
+*/
+
+			if (!ed.getParam('accessibility_focus'))
+				Event.add(DOM.add(p, 'a', {href : '#'}, '<!-- IE -->'), 'focus', function() {tinyMCE.get(ed.id).focus();});
+
+			if (s.theme_advanced_toolbar_location == 'external')
+				o.deltaHeight = 0;
+
+			t.deltaHeight = o.deltaHeight;
+			o.targetNode = null;
+
+			return {
+				iframeContainer : ic,
+				editorContainer : ed.id + '_parent',
+				sizeContainer : sc,
+				deltaHeight : o.deltaHeight
+			};
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Advanced theme',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			}
+		},
+
+		resizeBy : function(dw, dh) {
+			var e = DOM.get(this.editor.id + '_tbl');
+
+			this.resizeTo(e.clientWidth + dw, e.clientHeight + dh);
+		},
+
+		resizeTo : function(w, h) {
+			var ed = this.editor, s = ed.settings, e = DOM.get(ed.id + '_tbl'), ifr = DOM.get(ed.id + '_ifr'), dh;
+
+			// Boundery fix box
+			w = Math.max(s.theme_advanced_resizing_min_width || 100, w);
+			h = Math.max(s.theme_advanced_resizing_min_height || 100, h);
+			w = Math.min(s.theme_advanced_resizing_max_width || 0xFFFF, w);
+			h = Math.min(s.theme_advanced_resizing_max_height || 0xFFFF, h);
+
+			// Calc difference between iframe and container
+			dh = e.clientHeight - ifr.clientHeight;
+
+			// Resize iframe and container
+			DOM.setStyle(ifr, 'height', h - dh);
+			DOM.setStyles(e, {width : w, height : h});
+		},
+
+		destroy : function() {
+			var id = this.editor.id;
+
+			Event.clear(id + '_resize');
+			Event.clear(id + '_path_row');
+			Event.clear(id + '_external_close');
+		},
+
+		// Internal functions
+
+		_simpleLayout : function(s, tb, o, p) {
+			var t = this, ed = t.editor, lo = s.theme_advanced_toolbar_location, sl = s.theme_advanced_statusbar_location, n, ic, etb, c;
+
+			if (s.readonly) {
+				n = DOM.add(tb, 'tr');
+				n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
+				return ic;
+			}
+
+			// Create toolbar container at top
+			if (lo == 'top')
+				t._addToolbars(tb, o);
+
+			// Create external toolbar
+			if (lo == 'external') {
+				n = c = DOM.create('div', {style : 'position:relative'});
+				n = DOM.add(n, 'div', {id : ed.id + '_external', 'class' : 'mceExternalToolbar'});
+				DOM.add(n, 'a', {id : ed.id + '_external_close', href : 'javascript:;', 'class' : 'mceExternalClose'});
+				n = DOM.add(n, 'table', {id : ed.id + '_tblext', cellSpacing : 0, cellPadding : 0});
+				etb = DOM.add(n, 'tbody');
+
+				if (p.firstChild.className == 'mceOldBoxModel')
+					p.firstChild.appendChild(c);
+				else
+					p.insertBefore(c, p.firstChild);
+
+				t._addToolbars(etb, o);
+
+				ed.onMouseUp.add(function() {
+					var e = DOM.get(ed.id + '_external');
+					DOM.show(e);
+
+					DOM.hide(lastExtID);
+
+					var f = Event.add(ed.id + '_external_close', 'click', function() {
+						DOM.hide(ed.id + '_external');
+						Event.remove(ed.id + '_external_close', 'click', f);
+					});
+
+					DOM.show(e);
+					DOM.setStyle(e, 'top', 0 - DOM.getRect(ed.id + '_tblext').h - 1);
+
+					// Fixes IE rendering bug
+					DOM.hide(e);
+					DOM.show(e);
+					e.style.filter = '';
+
+					lastExtID = ed.id + '_external';
+
+					e = null;
+				});
+			}
+
+			if (sl == 'top')
+				t._addStatusBar(tb, o);
+
+			// Create iframe container
+			if (!s.theme_advanced_toolbar_container) {
+				n = DOM.add(tb, 'tr');
+				n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
+			}
+
+			// Create toolbar container at bottom
+			if (lo == 'bottom')
+				t._addToolbars(tb, o);
+
+			if (sl == 'bottom')
+				t._addStatusBar(tb, o);
+
+			return ic;
+		},
+
+		_rowLayout : function(s, tb, o) {
+			var t = this, ed = t.editor, dc, da, cf = ed.controlManager, n, ic, to, a;
+
+			dc = s.theme_advanced_containers_default_class || '';
+			da = s.theme_advanced_containers_default_align || 'center';
+
+			each(explode(s.theme_advanced_containers || ''), function(c, i) {
+				var v = s['theme_advanced_container_' + c] || '';
+
+				switch (v.toLowerCase()) {
+					case 'mceeditor':
+						n = DOM.add(tb, 'tr');
+						n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
+						break;
+
+					case 'mceelementpath':
+						t._addStatusBar(tb, o);
+						break;
+
+					default:
+						a = (s['theme_advanced_container_' + c + '_align'] || da).toLowerCase();
+						a = 'mce' + t._ufirst(a);
+
+						n = DOM.add(DOM.add(tb, 'tr'), 'td', {
+							'class' : 'mceToolbar ' + (s['theme_advanced_container_' + c + '_class'] || dc) + ' ' + a || da
+						});
+
+						to = cf.createToolbar("toolbar" + i);
+						t._addControls(v, to);
+						DOM.setHTML(n, to.renderHTML());
+						o.deltaHeight -= s.theme_advanced_row_height;
+				}
+			});
+
+			return ic;
+		},
+
+		_addControls : function(v, tb) {
+			var t = this, s = t.settings, di, cf = t.editor.controlManager;
+
+			if (s.theme_advanced_disable && !t._disabled) {
+				di = {};
+
+				each(explode(s.theme_advanced_disable), function(v) {
+					di[v] = 1;
+				});
+
+				t._disabled = di;
+			} else
+				di = t._disabled;
+
+			each(explode(v), function(n) {
+				var c;
+
+				if (di && di[n])
+					return;
+
+				// Compatiblity with 2.x
+				if (n == 'tablecontrols') {
+					each(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"], function(n) {
+						n = t.createControl(n, cf);
+
+						if (n)
+							tb.add(n);
+					});
+
+					return;
+				}
+
+				c = t.createControl(n, cf);
+
+				if (c)
+					tb.add(c);
+			});
+		},
+
+		_addToolbars : function(c, o) {
+			var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a;
+
+			a = s.theme_advanced_toolbar_align.toLowerCase();
+			a = 'mce' + t._ufirst(a);
+
+			n = DOM.add(DOM.add(c, 'tr'), 'td', {'class' : 'mceToolbar ' + a});
+
+			if (!ed.getParam('accessibility_focus'))
+				h.push(DOM.createHTML('a', {href : '#', onfocus : 'tinyMCE.get(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));
+
+			h.push(DOM.createHTML('a', {href : '#', accesskey : 'q', title : ed.getLang("advanced.toolbar_focus")}, '<!-- IE -->'));
+
+			// Create toolbar and add the controls
+			for (i=1; (v = s['theme_advanced_buttons' + i]); i++) {
+				tb = cf.createToolbar("toolbar" + i, {'class' : 'mceToolbarRow' + i});
+
+				if (s['theme_advanced_buttons' + i + '_add'])
+					v += ',' + s['theme_advanced_buttons' + i + '_add'];
+
+				if (s['theme_advanced_buttons' + i + '_add_before'])
+					v = s['theme_advanced_buttons' + i + '_add_before'] + ',' + v;
+
+				t._addControls(v, tb);
+
+				//n.appendChild(n = tb.render());
+				h.push(tb.renderHTML());
+
+				o.deltaHeight -= s.theme_advanced_row_height;
+			}
+
+			h.push(DOM.createHTML('a', {href : '#', accesskey : 'z', title : ed.getLang("advanced.toolbar_focus"), onfocus : 'tinyMCE.getInstanceById(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));
+			DOM.setHTML(n, h.join(''));
+		},
+
+		_addStatusBar : function(tb, o) {
+			var n, t = this, ed = t.editor, s = t.settings, r, mf, me, td;
+
+			n = DOM.add(tb, 'tr');
+			n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'});
+			n = DOM.add(n, 'div', {id : ed.id + '_path_row'}, s.theme_advanced_path ? ed.translate('advanced.path') + ': ' : '&#160;');
+			DOM.add(n, 'a', {href : '#', accesskey : 'x'});
+
+			if (s.theme_advanced_resizing) {
+				DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize'});
+
+				if (s.theme_advanced_resizing_use_cookie) {
+					ed.onPostRender.add(function() {
+						var o = Cookie.getHash("TinyMCE_" + ed.id + "_size"), c = DOM.get(ed.id + '_tbl');
+
+						if (!o)
+							return;
+
+						if (s.theme_advanced_resize_horizontal)
+							c.style.width = Math.max(10, o.cw) + 'px';
+
+						c.style.height = Math.max(10, o.ch) + 'px';
+						DOM.get(ed.id + '_ifr').style.height = Math.max(10, parseInt(o.ch) + t.deltaHeight) + 'px';
+					});
+				}
+
+				ed.onPostRender.add(function() {
+					Event.add(ed.id + '_resize', 'mousedown', function(e) {
+						var c, p, w, h, n, pa;
+
+						// Measure container
+						c = DOM.get(ed.id + '_tbl');
+						w = c.clientWidth;
+						h = c.clientHeight;
+
+						miw = s.theme_advanced_resizing_min_width || 100;
+						mih = s.theme_advanced_resizing_min_height || 100;
+						maw = s.theme_advanced_resizing_max_width || 0xFFFF;
+						mah = s.theme_advanced_resizing_max_height || 0xFFFF;
+
+						// Setup placeholder
+						p = DOM.add(DOM.get(ed.id + '_parent'), 'div', {'class' : 'mcePlaceHolder'});
+						DOM.setStyles(p, {width : w, height : h});
+
+						// Replace with placeholder
+						DOM.hide(c);
+						DOM.show(p);
+
+						// Create internal resize obj
+						r = {
+							x : e.screenX,
+							y : e.screenY,
+							w : w,
+							h : h,
+							dx : null,
+							dy : null
+						};
+
+						// Start listening
+						mf = Event.add(DOM.doc, 'mousemove', function(e) {
+							var w, h;
+
+							// Calc delta values
+							r.dx = e.screenX - r.x;
+							r.dy = e.screenY - r.y;
+
+							// Boundery fix box
+							w = Math.max(miw, r.w + r.dx);
+							h = Math.max(mih, r.h + r.dy);
+							w = Math.min(maw, w);
+							h = Math.min(mah, h);
+
+							// Resize placeholder
+							if (s.theme_advanced_resize_horizontal)
+								p.style.width = w + 'px';
+
+							p.style.height = h + 'px';
+
+							return Event.cancel(e);
+						});
+
+						me = Event.add(DOM.doc, 'mouseup', function(e) {
+							var ifr;
+
+							// Stop listening
+							Event.remove(DOM.doc, 'mousemove', mf);
+							Event.remove(DOM.doc, 'mouseup', me);
+
+							c.style.display = '';
+							DOM.remove(p);
+
+							if (r.dx === null)
+								return;
+
+							ifr = DOM.get(ed.id + '_ifr');
+
+							if (s.theme_advanced_resize_horizontal)
+								c.style.width = Math.max(10, r.w + r.dx) + 'px';
+
+							c.style.height = Math.max(10, r.h + r.dy) + 'px';
+							ifr.style.height = Math.max(10, ifr.clientHeight + r.dy) + 'px';
+
+							if (s.theme_advanced_resizing_use_cookie) {
+								Cookie.setHash("TinyMCE_" + ed.id + "_size", {
+									cw : r.w + r.dx,
+									ch : r.h + r.dy
+								});
+							}
+						});
+
+						return Event.cancel(e);
+					});
+				});
+			}
+
+			o.deltaHeight -= 21;
+			n = tb = null;
+		},
+
+		_nodeChanged : function(ed, cm, n, co) {
+			var t = this, p, de = 0, v, c, s = t.settings, cl, fz, fn;
+
+			if (s.readonly)
+				return;
+
+			tinymce.each(t.stateControls, function(c) {
+				cm.setActive(c, ed.queryCommandState(t.controls[c][1]));
+			});
+
+			cm.setActive('visualaid', ed.hasVisual);
+			cm.setDisabled('undo', !ed.undoManager.hasUndo() && !ed.typing);
+			cm.setDisabled('redo', !ed.undoManager.hasRedo());
+			cm.setDisabled('outdent', !ed.queryCommandState('Outdent'));
+
+			p = DOM.getParent(n, 'A');
+			if (c = cm.get('link')) {
+				if (!p || !p.name) {
+					c.setDisabled(!p && co);
+					c.setActive(!!p);
+				}
+			}
+
+			if (c = cm.get('unlink')) {
+				c.setDisabled(!p && co);
+				c.setActive(!!p && !p.name);
+			}
+
+			if (c = cm.get('anchor')) {
+				c.setActive(!!p && p.name);
+
+				if (tinymce.isWebKit) {
+					p = DOM.getParent(n, 'IMG');
+					c.setActive(!!p && DOM.getAttrib(p, 'mce_name') == 'a');
+				}
+			}
+
+			p = DOM.getParent(n, 'IMG');
+			if (c = cm.get('image'))
+				c.setActive(!!p && n.className.indexOf('mceItem') == -1);
+
+			if (c = cm.get('styleselect')) {
+				if (n.className) {
+					t._importClasses();
+					c.select(n.className);
+				} else
+					c.select();
+			}
+
+			if (c = cm.get('formatselect')) {
+				p = DOM.getParent(n, DOM.isBlock);
+
+				if (p)
+					c.select(p.nodeName.toLowerCase());
+			}
+
+			if (ed.settings.convert_fonts_to_spans) {
+				ed.dom.getParent(n, function(n) {
+					if (n.nodeName === 'SPAN') {
+						if (!cl && n.className)
+							cl = n.className;
+
+						if (!fz && n.style.fontSize)
+							fz = n.style.fontSize;
+
+						if (!fn && n.style.fontFamily)
+							fn = n.style.fontFamily.replace(/[\"\']+/g, '').replace(/^([^,]+).*/, '$1').toLowerCase();
+					}
+
+					return false;
+				});
+
+				if (c = cm.get('fontselect')) {
+					c.select(function(v) {
+						return v.replace(/^([^,]+).*/, '$1').toLowerCase() == fn;
+					});
+				}
+
+				if (c = cm.get('fontsizeselect')) {
+					c.select(function(v) {
+						if (v.fontSize && v.fontSize === fz)
+							return true;
+
+						if (v['class'] && v['class'] === cl)
+							return true;
+					});
+				}
+			} else {
+				if (c = cm.get('fontselect'))
+					c.select(ed.queryCommandValue('FontName'));
+
+				if (c = cm.get('fontsizeselect')) {
+					v = ed.queryCommandValue('FontSize');
+					c.select(function(iv) {
+						return iv.fontSize == v;
+					});
+				}
+			}
+
+			if (s.theme_advanced_path && s.theme_advanced_statusbar_location) {
+				p = DOM.get(ed.id + '_path') || DOM.add(ed.id + '_path_row', 'span', {id : ed.id + '_path'});
+				DOM.setHTML(p, '');
+
+				ed.dom.getParent(n, function(n) {
+					var na = n.nodeName.toLowerCase(), u, pi, ti = '';
+
+					// Ignore non element and hidden elements
+					if (n.nodeType != 1 || n.nodeName === 'BR' || (DOM.hasClass(n, 'mceItemHidden') || DOM.hasClass(n, 'mceItemRemoved')))
+						return;
+
+					// Fake name
+					if (v = DOM.getAttrib(n, 'mce_name'))
+						na = v;
+
+					// Handle prefix
+					if (tinymce.isIE && n.scopeName !== 'HTML')
+						na = n.scopeName + ':' + na;
+
+					// Remove internal prefix
+					na = na.replace(/mce\:/g, '');
+
+					// Handle node name
+					switch (na) {
+						case 'b':
+							na = 'strong';
+							break;
+
+						case 'i':
+							na = 'em';
+							break;
+
+						case 'img':
+							if (v = DOM.getAttrib(n, 'src'))
+								ti += 'src: ' + v + ' ';
+
+							break;
+
+						case 'a':
+							if (v = DOM.getAttrib(n, 'name')) {
+								ti += 'name: ' + v + ' ';
+								na += '#' + v;
+							}
+
+							if (v = DOM.getAttrib(n, 'href'))
+								ti += 'href: ' + v + ' ';
+
+							break;
+
+						case 'font':
+							if (s.convert_fonts_to_spans)
+								na = 'span';
+
+							if (v = DOM.getAttrib(n, 'face'))
+								ti += 'font: ' + v + ' ';
+
+							if (v = DOM.getAttrib(n, 'size'))
+								ti += 'size: ' + v + ' ';
+
+							if (v = DOM.getAttrib(n, 'color'))
+								ti += 'color: ' + v + ' ';
+
+							break;
+
+						case 'span':
+							if (v = DOM.getAttrib(n, 'style'))
+								ti += 'style: ' + v + ' ';
+
+							break;
+					}
+
+					if (v = DOM.getAttrib(n, 'id'))
+						ti += 'id: ' + v + ' ';
+
+					if (v = n.className) {
+						v = v.replace(/(webkit-[\w\-]+|Apple-[\w\-]+|mceItem\w+|mceVisualAid)/g, '');
+
+						if (v && v.indexOf('mceItem') == -1) {
+							ti += 'class: ' + v + ' ';
+
+							if (DOM.isBlock(n) || na == 'img' || na == 'span')
+								na += '.' + v;
+						}
+					}
+
+					na = na.replace(/(html:)/g, '');
+					na = {name : na, node : n, title : ti};
+					t.onResolveName.dispatch(t, na);
+					ti = na.title;
+					na = na.name;
+
+					//u = "javascript:tinymce.EditorManager.get('" + ed.id + "').theme._sel('" + (de++) + "');";
+					pi = DOM.create('a', {'href' : "javascript:;", onmousedown : "return false;", title : ti, 'class' : 'mcePath_' + (de++)}, na);
+
+					if (p.hasChildNodes()) {
+						p.insertBefore(DOM.doc.createTextNode(' \u00bb '), p.firstChild);
+						p.insertBefore(pi, p.firstChild);
+					} else
+						p.appendChild(pi);
+				}, ed.getBody());
+			}
+		},
+
+		// Commands gets called by execCommand
+
+		_sel : function(v) {
+			this.editor.execCommand('mceSelectNodeDepth', false, v);
+		},
+
+		_mceInsertAnchor : function(ui, v) {
+			var ed = this.editor;
+
+			ed.windowManager.open({
+				url : tinymce.baseURL + '/themes/advanced/anchor.htm',
+				width : 320 + parseInt(ed.getLang('advanced.anchor_delta_width', 0)),
+				height : 90 + parseInt(ed.getLang('advanced.anchor_delta_height', 0)),
+				inline : true
+			}, {
+				theme_url : this.url
+			});
+		},
+
+		_mceCharMap : function() {
+			var ed = this.editor;
+
+			ed.windowManager.open({
+				url : tinymce.baseURL + '/themes/advanced/charmap.htm',
+				width : 550 + parseInt(ed.getLang('advanced.charmap_delta_width', 0)),
+				height : 250 + parseInt(ed.getLang('advanced.charmap_delta_height', 0)),
+				inline : true
+			}, {
+				theme_url : this.url
+			});
+		},
+
+		_mceHelp : function() {
+			var ed = this.editor;
+
+			ed.windowManager.open({
+				url : tinymce.baseURL + '/themes/advanced/about.htm',
+				width : 480,
+				height : 380,
+				inline : true
+			}, {
+				theme_url : this.url
+			});
+		},
+
+		_mceColorPicker : function(u, v) {
+			var ed = this.editor;
+
+			v = v || {};
+
+			ed.windowManager.open({
+				url : tinymce.baseURL + '/themes/advanced/color_picker.htm',
+				width : 375 + parseInt(ed.getLang('advanced.colorpicker_delta_width', 0)),
+				height : 250 + parseInt(ed.getLang('advanced.colorpicker_delta_height', 0)),
+				close_previous : false,
+				inline : true
+			}, {
+				input_color : v.color,
+				func : v.func,
+				theme_url : this.url
+			});
+		},
+
+		_mceCodeEditor : function(ui, val) {
+			var ed = this.editor;
+
+			ed.windowManager.open({
+				url : tinymce.baseURL + '/themes/advanced/source_editor.htm',
+				width : parseInt(ed.getParam("theme_advanced_source_editor_width", 720)),
+				height : parseInt(ed.getParam("theme_advanced_source_editor_height", 580)),
+				inline : true,
+				resizable : true,
+				maximizable : true
+			}, {
+				theme_url : this.url
+			});
+		},
+
+		_mceImage : function(ui, val) {
+			var ed = this.editor;
+
+			// Internal image object like a flash placeholder
+			if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1)
+				return;
+
+			ed.windowManager.open({
+				url : tinymce.baseURL + '/themes/advanced/image.htm',
+				width : 355 + parseInt(ed.getLang('advanced.image_delta_width', 0)),
+				height : 275 + parseInt(ed.getLang('advanced.image_delta_height', 0)),
+				inline : true
+			}, {
+				theme_url : this.url
+			});
+		},
+
+		_mceLink : function(ui, val) {
+			var ed = this.editor;
+
+			ed.windowManager.open({
+				url : tinymce.baseURL + '/themes/advanced/link.htm',
+				width : 310 + parseInt(ed.getLang('advanced.link_delta_width', 0)),
+				height : 200 + parseInt(ed.getLang('advanced.link_delta_height', 0)),
+				inline : true
+			}, {
+				theme_url : this.url
+			});
+		},
+
+		_mceNewDocument : function() {
+			var ed = this.editor;
+
+			ed.windowManager.confirm('advanced.newdocument', function(s) {
+				if (s)
+					ed.execCommand('mceSetContent', false, '');
+			});
+		},
+
+		_mceForeColor : function() {
+			var t = this;
+
+			this._mceColorPicker(0, {
+				color: t.fgColor,
+				func : function(co) {
+					t.fgColor = co;
+					t.editor.execCommand('ForeColor', false, co);
+				}
+			});
+		},
+
+		_mceBackColor : function() {
+			var t = this;
+
+			this._mceColorPicker(0, {
+				color: t.bgColor,
+				func : function(co) {
+					t.bgColor = co;
+					t.editor.execCommand('HiliteColor', false, co);
+				}
+			});
+		},
+
+		_ufirst : function(s) {
+			return s.substring(0, 1).toUpperCase() + s.substring(1);
+		}
+	});
+
+	tinymce.ThemeManager.add('advanced', tinymce.themes.AdvancedTheme);
+}(tinymce));
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/image.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/image.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/image.htm	2007-05-08 22:57:54.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/image.htm	2009-06-30 22:01:34.000000000 +0200
@@ -1,17 +1,17 @@
+<!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="jscripts/image.js"></script>
-	<base target="_self" />
+	<title>{#advanced_dlg.image_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/image.js"></script>
 </head>
-<body id="image" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
-<form onsubmit="insertImage();return false;" action="#">
+<body id="image" style="display: none">
+<form onsubmit="ImageDialog.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_image_title}</a></span></li>
+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.image_title}</a></span></li>
 		</ul>
 	</div>
 
@@ -19,68 +19,53 @@
 		<div id="general_panel" class="panel current">
      <table border="0" cellpadding="4" cellspacing="0">
           <tr>
-            <td nowrap="nowrap"><label for="src">{$lang_insert_image_src}</label></td>
+            <td class="nowrap"><label for="src">{#advanced_dlg.image_src}</label></td>
             <td><table border="0" cellspacing="0" cellpadding="0">
                 <tr>
-                  <td><input id="src" name="src" type="text" value="" style="width: 200px" onchange="getImageData();" /></td>
+                  <td><input id="src" name="src" type="text" class="mceFocus" value="" style="width: 200px" onchange="ImageDialog.getImageData();" /></td>
                   <td id="srcbrowsercontainer">&nbsp;</td>
                 </tr>
               </table></td>
           </tr>
-		  <!-- Image list -->
-		  <script language="javascript">
-			if (typeof(tinyMCEImageList) != "undefined" && tinyMCEImageList.length > 0) {
-				var html = "";
-
-				html += '<tr><td><label for="image_list">{$lang_image_list}</label></td>';
-				html += '<td><select id="image_list" name="image_list" style="width: 200px" onchange="this.form.src.value=this.options[this.selectedIndex].value;resetImageData();getImageData();">';
-				html += '<option value="">---</option>';
-
-				for (var i=0; i<tinyMCEImageList.length; i++)
-					html += '<option value="' + tinyMCEImageList[i][1] + '">' + tinyMCEImageList[i][0] + '</option>';
-
-				html += '</select></td></tr>';
-
-				document.write(html);
-			}
-		  </script>
-		  <!-- /Image list -->
+		  <tr>
+			<td><label for="image_list">{#advanced_dlg.image_list}</label></td>
+			<td><select id="image_list" name="image_list" onchange="document.getElementById('src').value=this.options[this.selectedIndex].value;document.getElementById('alt').value=this.options[this.selectedIndex].text;"></select></td>
+		  </tr>
           <tr>
-            <td nowrap="nowrap"><label for="alt">{$lang_insert_image_alt}</label></td>
+            <td class="nowrap"><label for="alt">{#advanced_dlg.image_alt}</label></td>
             <td><input id="alt" name="alt" type="text" value="" style="width: 200px" /></td>
           </tr>
           <tr>
-            <td nowrap="nowrap"><label for="align">{$lang_insert_image_align}</label></td>
-            <td><select id="align" name="align">
-                <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="nowrap"><label for="align">{#advanced_dlg.image_align}</label></td>
+            <td><select id="align" name="align" onchange="ImageDialog.updateStyle();">
+                <option value="">{#not_set}</option>
+                <option value="baseline">{#advanced_dlg.image_align_baseline}</option>
+                <option value="top">{#advanced_dlg.image_align_top}</option>
+                <option value="middle">{#advanced_dlg.image_align_middle}</option>
+                <option value="bottom">{#advanced_dlg.image_align_bottom}</option>
+                <option value="text-top">{#advanced_dlg.image_align_texttop}</option>
+                <option value="text-bottom">{#advanced_dlg.image_align_textbottom}</option>
+                <option value="left">{#advanced_dlg.image_align_left}</option>
+                <option value="right">{#advanced_dlg.image_align_right}</option>
               </select></td>
           </tr>
           <tr>
-            <td nowrap="nowrap"><label for="width">{$lang_insert_image_dimensions}</label></td>
+            <td class="nowrap"><label for="width">{#advanced_dlg.image_dimensions}</label></td>
             <td><input id="width" name="width" type="text" value="" size="3" maxlength="5" />
               x
               <input id="height" name="height" type="text" value="" size="3" maxlength="5" /></td>
           </tr>
           <tr>
-            <td nowrap="nowrap"><label for="border">{$lang_insert_image_border}</label></td>
-            <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" /></td>
+            <td class="nowrap"><label for="border">{#advanced_dlg.image_border}</label></td>
+            <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>
           </tr>
           <tr>
-            <td nowrap="nowrap"><label for="vspace">{$lang_insert_image_vspace}</label></td>
-            <td><input id="vspace" name="vspace" type="text" value="" size="3" maxlength="3" /></td>
+            <td class="nowrap"><label for="vspace">{#advanced_dlg.image_vspace}</label></td>
+            <td><input id="vspace" name="vspace" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>
           </tr>
           <tr>
-            <td nowrap="nowrap"><label for="hspace">{$lang_insert_image_hspace}</label></td>
-            <td><input id="hspace" name="hspace" type="text" value="" size="3" maxlength="3" /></td>
+            <td class="nowrap"><label for="hspace">{#advanced_dlg.image_hspace}</label></td>
+            <td><input id="hspace" name="hspace" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>
           </tr>
         </table>
 		</div>
@@ -88,11 +73,11 @@
 
 	<div class="mceActionPanel">
 		<div style="float: left">
-			<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertImage();" />
+			<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/themes/advanced/img/colorpicker.jpg 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,19 @@
+ÿØÿàJFIFÿþ>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality
+ÿÛC		
+
 $.' ",#(7),01444'9=82<.342ÿÛC			

2!!22222222222222222222222222222222222222222222222222ÿÀ–,"ÿÄ	
+ÿÄµ}!1AQa"q2�‘¡#B±ÁRÑð$3br‚	
+%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ	
+ÿÄµw!1AQaq"2�B‘¡±Á	#3RðbrÑ
+$4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ?å­‡JØ¶íY6ã¥k[ö¯�­õìDÍ{nÕ¯lzVE¿jÖ·=+È¯ÂÄHÙ¶=+^ÙºV-¹éZÖíÒ¼ŠÐ<,C4Ù¾AUej•›äZF®X@ðqEyZ©ÊjÄ†ªHk®>sŠÒš§)«R©!®È@ùÜTJÌ~jršcšœ¦½4u<IÃRe5"š…MH¦¾‹
+Œ%u5"š�MJ¦¾‹
+c(ÅQ¹=jà<UƒÖ¾‡ô({ÆUÏzÇ¹ïZ÷ë&ã½zô${Xx˜÷#­d\Žµ³p:ÖMÈë^½žî&%Êõªñ-]¸^µ^5¯N3÷Ow‰âZ¹ªñ­\ŒV™ôXRÄB®D*´b­Æ+’s>‹"ÔB¬v¨#cµqU–‡Ðáç¡TL*f
+ðqLìŒÈXTL*v
+ùÜQ´f@Â£"¦aL#šùìBÔÕL·n:V¥¿jÍ€t­8;W�Z'“^f¥¿jÕ·=+*ßµiÀzW—Z'‹^F½¹éZ¶íÒ±à=+Ré^]h-vh–ùEV‘ªBß(ªò5rÆ‰‰ �ÕY
O!ª²ê„Šò«!««!®¸@ðq1+·Þ§)¦1ù©À×~:ž<á©*š‘MD
<÷°ÈÅÀ™MH
B
H
{øc'`xªW­ZŠ©9ë^åá©™qÞ²®;Ö¤ýë.~õêÑ‘ëÐ‰•p:ÖUÀëZóŽµ—8ë^­žÕ˜÷Ö �jäëÖ �kÑŒýÓÚÃ¢hÖ­F*Ö­F+Ì÷°ÄñŠµ¨#j1\“™ïá¤XŒTøâ¢ŒTý«’¤´=ÚÐ‰…FÂ¥4ÆââYÔ¦BÂ£aSQ‘^$ÕL……FELE0Šð«­MTËP•¥jÏ„t­{W
XžUišPv­(JÌ‡µhÂzW›V'“ZF¤¥i@Ý+*Ò´an•æÕ�äVf�o”Uyž[åµsÆ�ˆ"‘ª´†¥sUœ×L x¸„C!ªÒ�ÍVs]0�âb"BÇšPi§­(5ÛB:žT¡©(4ðj j@kÚÃ£'Pj@jià×·‡2p&Š©9ëVâªÎz×³EŽœ53§ïY³÷­)»ÖtÕéÒ‘êQ‰™8ëY³Žµ©8ëYÓµèÒ™ëQFLëÖ¡�jÜëÖ¡E®øÏC× ‰#Zµ¨‘jÂ-e9žÖš1VPT(*Ê
+æ”Ïo"xÅMÚ¢AScŠå©-fŒô#5)Â+ÈÄ3©LˆŠŒŠ˜Šaâb
ÈH¦R‘L"¼ZËSE2Ì#¥hCT¢zä©Ë«2ü5¡	¬èªü&¸*Dó*ÈÑ„Ö„-Ò³!5~&®
+�<Ê¬¼[åµ8·Ê*jÂ0<ºÄnj»š‘Í@æ·Œ"²"sUÜÔÎj»šèŒ"´H�Zp¦´ ×]êy²†¤ ÓÁ¨�§ƒ^µfàJ
<ˆp5ëÐ3p&Š«1©Áâ«LkÖ¤ÂÔ£5P˜u«óU	«Ð§#Ñ¥>aÖ³æ¥(ªŠï§3Ô¥2e¨‘jÔËQ"×bž‡§EE«µ-XAYÊg¯E’ «*$:
+ç”ÏZ„‰�T¸â˜‚¥ÇÏ9hzÔ§¡Â*B)¤W—Y�
+dDS©H¦^EcE2")˜©H¦â¼š«RÔË
+»TŒUÈ«š¢<Ú³.EWb5J*¹®:‘<ú’/DjôMYÑš»WH}F\-òÔ.Ô¥¸¨™«Àóª�v¨ÓÙª5´`y•Qš�ÍJÆ¡c[Æ™V$g­(4Òy é¥‚PÔ�x54àkÓ¤ˆp$ž
D
<ôéàH
W”ÔÙâ �×¥M„!©NZ¥-]–©Ë]´äwR‰FQT¥~ATåÙNg¡IÒ¯Z�¬Èµ­u©èz�äZ™5V¦QYÊg§E�AS ¨ÔTÊ+LôéH•IÚ˜¢¤íXNZ•9è0Ša)¦^uVl¦FE0Š”ŠiæU-LˆŠn*B)¸¯6¢Ôµ2xÅ[Ž«F*Ôu„ÑçT™f:·ª‘Õ˜ÍrÎ'Ic5j6ªHjÌm\³�ÅQ–ËqQ³Râ£f¬Ô‚1¨˜Ò±¨˜ÖªD5�DÆžÆ¢cZ¨"0õ¥šzÒŠÞœN7àÓ�¨Å8ï¦ˆp$œ
F
8ï¦K�&j
Iš†C]ÐajV’ªIVÞªÉ]p‘ÙNIT�U×ZA]P™ÙN%£U«-1Vºô;i U©”R*Ôªµg}1TTÊ)Š*U“™ßNCÔT˜âš¢ŸŽ+Hî„ôE4Š�ŠiÇQ›)‘‘M"¤"šEyõ
+S#"›Š�ŠLWÑJdÈ*ÂT(*t¬äŽ	Ì�*Â¬•:ç”NYÈ´†¬#UD5:5a(Óe’ÜS©»¸¦¬ÔYŠÆ¢cJMFMh rMÆ£cN&£&´P8çZ¦š\ÖÐ‰Îà<Pi€Ó³]PDrœ
Gš\×dàIš‰Í;5šêƒÃRªïS½BõÑ‰YÅWqVœT+¢3:¡£­1V§u¦…­”ô:`„U©P¤¡Ìëƒ"Š@*@*Î¸HrŠv)§â²”Ž¸ÌaÒ*B)¤W4Ù¢˜Â)¤T„R\“)LŒŠn*LRb¹&Šç%QS-F¢¤Z–Ž	L•je5
+Ô‹Y8˜ÊDêjej¬¦¤V¬œdË¸¦–¦nâšZ¥@ÂC‰¦HM4š¥	 &šMÓI«P9å	¥Í6ŒÖ‘‰“€üÒæ™š\ÖñDòÍ.i™£5¼EÈIš��.i¬kx°P#j…ªV¨ÚµR6ŒHXT,*Ã
+�…j¦mVe¦…©™iÖœæÑCBÓÀ¥N“™¼DžSÀ¨s:# �@¸¨r7ŒÆâ“üRb±“+œf)1OÅ&+	Î3˜§âŒVCç<P(¡Äâs)àÓ8—‰§†¨A§¨p!²mÔ…ª=Ô›¨ä!�&�šnêLÓä3hRi	¤Í&iòâ¥Í74f©DŽAÙ¥Í74f­!rÍ.i™¥Íhƒ�~i¤Òf�š´Ã�CL4ãHj”ŠP#"˜EJE4Šµ2ÔHJÒ©ŠÒm§ÎZDaiÀSöÒâŽsDÆN�Š1Kœµ!¥Å.)qSÌZ˜ÜRbŸŠLT6W8ÜRbŸŠ1PÃœf)1OÅ¬Úqø¢Š*Žk°¥¢Š,4fŠ)XAºŒÑEÍ¢ŠvÍ%QaX(¢Š,AES Í¢ŠasIEÂÁIŠ(¢ã°RbŠ(¸(ÛE]Œ1F(¢‹°RâŠ(¸ÂŠ(¢áp¢Š)ØbŒQEv¤ÅPgÿÙ
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,78 @@
+GIF89aè<÷9cÂ§³Æñïn%4Oœ8*•ºý£ÃûopqyŽ®n’Ï4Kcãìûpz�”§Ãÿÿÿ1QŽÅÒâ÷ï®�š°Ð¥X†Ì£·ÓX„ß×ÙÝ¹¹¸üËÊòÑpQQRÊËÔš›š=8)æñüÐ¨™ˆƒ—ÃÑÚìíØŠœËòùõS·sb»Ëï/iä´•›T|Õ�xYõ“¡³ÈÈÈû.-öë‘ûùÆY]fñùþ²Ìü§§§r[v…•»¾Áðñý�Ðƒƒ†µªO•ˆmAwã×Þô³©Š‚¥ñlÁð‘£¹•€ÉtlÓaÍUOP­šáhõØÄ¸‘5f¶¡¯Ã-Mªïº9æåäýõ7Ï°QŽŽìàèóŸÏ¨ÔË´g–æ€¥ÙºÃÑO5„`p…ñ³Ë‘6ûMGÊþÿYu§¢±Êršè™™‡ÞåðóÍR§˜k¢¿ôààðÒâþÆ´qÖÅ*‚‘ŸÃÉÞÛKKÂzBRc€òòò…Š�ÀÐïŠ¦âÜéü‚¨ò¨©¶s�Ïu—ô–¢®±›R˜yM±FHš|lOf>¦ë´±÷ùþ0¸CØÇhBg²d}ª‘«ñ‘¥Î“ˆˆR{»kW@KsÁ±»Ñ@`™´ÁÒøA8?g©¬µËÕ..ÎØú<<?À¿£1þbUðøàëïöÐÕÜb�·§©Ïb‘ðSˆòàÿÿaŒà‚­þ�¯Ô¯ÀâÀÂÄÔ““­â×îÇÈè°èè÷sK¿ƒÐÐ�±ÀÙ„¤Ä›˜Íø Æ˜–Oq¬ÂØô!@xûüý_o�¿È×B„þþþþýþðïðf™üüþ‰ªôÂÚþ‹´ýÿ™™¾¾þÿgdúä >QkãÜ±SÉ"XÂ^Œœ°ÈÝSp¢%c÷õøÐáð®¦þWn±´¯¢ÿøÿNXÆ	9†Lp—ÈÙðßßàðøð¨¸¸ÂÖþJ²vð¶c°³µ¨µÇÚæþ¢ºÝ"Zâþ»ÈàÚŽr‡¯‡¥Øð°ÐàÎÍÌ¦žæP¸¶ôãßUg‹2Rr6¿Þ[[ø¾Z?®Ë�¨°()'ûûûßÕÐ ¥´ àðÀíú°œ`€°Àÿÿÿ!ùÿ,è<ÿÿ	H° Áƒ*\È°¡Ã‡#JœH±¢Å‹3jÜÈ±£Ç� CŠI²¤É“(}Ô¨¡’eC0cÊœ)óÊ›8sêÜÉ³§ÏŸ@ƒ
+J´¨Ñ£H;Öxð`iÓ—¢J�JUªÍ¤X³jÝêpQ.®I((¬Ù³hÓÜ¥K­Û‹*™6õõƒÝ»xó~ØvuÁ^~ÿ
Lø­áÃˆzMÜ3€®]u�ýØ‰\*-z´�ó(·³g¹0.¹«ti± ?
‘�ëÄºHlû�íŽáŒ�Õò‰§�‚‡%|€Ï*s±|ð’¯Ã®òz° áÁƒ­�> Ád�ÛFŒÿè�‘Ä…Š¥¨6Jâ€{ÙkLð8dûD.\ ’š£{Óý=ÄVÑ·GÎhqK.ær‹Îpô€	Vha…ÌmÇÓ.
6Àfä@H A	�¡âC$aD	ÀTlÿ´eB¦å¸j<~GV}I†Ð
Î9äIä	5>jTÜÄ	÷Ï#ÀØdIq1åCDçÐÊ, a¼fæ`fjVð"�pÆ	gDŒP5·YtÉé'Bî!(!…ß îÅ÷UFÞ‘ æGø]à]ùéG FtèX¡
+%`d;^Ú‘3ä8HD(¡qšm4¡…À˜ÿŒfH�œÿø‰ë­ºöjP¯¾¬®¿»kFtÈà§ &„ë°±a¢HŠ.@A#
µØ 	1š¤o	µenB,«l‡0ð¨AèâÁ@i�3šÚë%ÔP‰G?ÀËP
+L0•Þ�NN5\×s^þS].¬«ì»jæ¬Bð"êD$„#r�wBPChÇDW2´Ë{ ¡ñÉÑ³q&D„@‡àó‰FfëE±}ø�¤E›´‹~!&àsËqØà§ú.$�“zÔ‰¹¤D‚°G TÀéD¯ÊjB=#÷6�1JÉ*k„__ÿ$­µ%H�¸°-CÞvîIØ|‘ÕFXœK»î&äÁ§ÿœòbBV/»K3I:ä‰'�@0BGÂG\À8�KÀÓ7–+µD—Î5�tLPÀ/rù<S³ß}RÎ¹Î	Ò6álÓÁ6Œ@�Éá0'
+ùìøC0Ëó~/o/ì›È'ÏZ±}ž�~/5ÐÉ‡‘cB6¤@Ò!áAãò@žáP{Zäž@F	�‘§°6‹�ã·ÂrqƒPÜ A ’4ò*`ÀíƒÐˆUÝ
+¢A«X;ˆ±RF¾Zï„!A\„9Ò�jyÓÛÞ8Æþão„k„ÿ…h8n)$qjW.>™ú}iÜ•H°ÒÆ6.*T'5C)Fº(ž@Œºø 7	IÖ-n@@"á'
D$(Qºq$`ƒÒp^ñ€_Ô!¨^Vºt†ì¥/ó�ðr¡Èß=ÀMÆÓ˜òÊ×‘&4AáøÅó| ‹R!ºPžGº'"üLPâ»UŸÞ”+Vªð|¢\ß |Æ™íŒ òYr?¥1â:c™ÿI7•ÉMÚóÙ?ÎC�N.S
2e²@}D¹ BR¥L0A38H!‚�µ*ˆy.`ÙøPC2$ƒv1)yæ‚ž-sf‡vxÿ�”°…Ä¢×´´E�‚´�Aâä°DÒëË0/†„±¢X}Ö·x2ˆF¶™§wÖÂ ¼%Žží:€©éOù tq&.MLSzÿp@é6¸‘(©n?h„8Qr+„„ï~ÁT¦2¨©Ã[i$E‚<J’e¤ÁÂ+š Ð@ØÆp;”9”„ì”ÌnÃ–J¥²…®�ú^™>…èg?ˆ-ã·(Šø(ŒÍDˆla‚0B
+q†2
2µ‚S �ä“d—I–°
+šbŸM"™³f¤¹E7»
+1ƒ¹°#F&$ÂÊ
è4ÁÐîª½Õÿ¬0–5
+W¸[Ý6³E�ŒXv\2žUŸIä'ZcöÖƒTK8 !=[›È5H‰0ZiF0ÑŠr	¢0én�K£…QÆ%i.’EpÝ¥7P©B.ç˜pÌ²ZÐfs±‡l!Ùx‚@J·0„ü©!û,¨ °\Á�#8*Nìö�¤:—&[@}G±
 ÃÚ™êM‚…6AÒ…Á‚2¼Êb	¼¢¾º,gq‹�Æå–…<ÛA"Hþª•æs¥³`9WÚò2’Ùøj¬Öè]ŽAÈq:�XàžxDBV&Ìfú,DÇ|ì?&Ë'fÄºí’¡eÍã3äÿE¼ÐEœÉµÐa´¥½3þ€ZÕÞØ·™Ð6äÖ°‡4¶a·Nho,�dä@”Ãö>¦�ÅCn»”K�NÁgð‰4Až;dD÷ºˆqB­[6†f—jñÀD©ë\¿ˆ7!“æT0]Ù\H÷‹1Ž±TkZÿÃº `	Rñö™‡=®1$¦=mðBÀ¦qBž46\!E•ðM�C‘°"tÔU	Ó˜(ÖHàµû‘"ñ$µ-�Ž1q!XœWMT‚4�%5vòŒý)JäiŽKf™zË[º’/{É´ÙÊ."]P"1V�Œm#FOLâãrÀÇ?Î¹ÅdO…ÿsdÇÌr3�1›‚ò»dèæÈð¢Çë1Á#rþª å B.–Aôpfƒƒ�ÛÜX°�lãÐL)HŒMxàl£˜W·e8Ž­Nâz·ÈSa^€§rsVV_¸
+ùô��[jSŸ5¶ÙÅìÌŽ]@Âºà…“w_2Ña Eèõ‹@°8CæÍº(eÀb³ì•ÂYÎÍ sA"G„ÌdfæC"¨á9±SH‘ò$4Hb7J�SÖˆXØ ]òSÄ¦“¨VÌöÔ‰7JªJïŠ(ã]=Q¿IðO"$”£g¬É!µÕ¬’5rEY]#Ò8—$—±—ŒÞq@
+ÿÿê‰þ÷»øßAT^3–—Y?gÎE{K#tAÝ5óðò˜.øg9OS"°FåPtZ@t€$÷FrP‡VrÓºÇ"dÔ^ôá".èuf·Ph§@Pj•È¶6yJÔ ¯Æ1Ýåz·L y!kq²wNc'w²aTt�½9¥‘3µx$ (bÔ|öF�„ãÄ�òGE»PzpWäPsAG”@ˆ€
7¦'8hÆw¬W¯7ƒ q’†�¢a¿ÀaLñ† !6�$Á{ÉgXÐý6|T°0†¯´s3Ö7drUuV•>æÒ{	ÿ¡W‚}A©ÁqèG+å}ã'šAq+s(gc±7|#vßÒøG¼ÀüÇ@×Æ ¬BtÌö  �§€t�Qð†3]g>
‡uÇ˜>Y',·Udôt^cñŒÅ…¨lU´RÄ(j!hP „¨ñ).rn´$àjv·°@Q±¦<¤è\-ø‚œCål1&ƒyóEòH�ÛG§ðÍ�
Ëðþ�½øf§¸ØÄ $pÎSÙ`2b&¼�…ái‚XexquA1!`câa¾c’sov8W÷#w—Mp-%Àø6Èpÿ¡Í•“ðSUç�àO‡X#élc˜(l£žð1#€	¡=7§WÉ=wW�h…wsK™\ù’¨‹äP§Å4»x“ñôAPkÙE¹’¥8sTÄiÜHº`�§1Cç.ž‚ƒçèW]véˆQŽ8÷˜R{Y„ŒGÅ³„ÐüG
ý(ƒüóXY«8”ðÀSÿ@	4„ƒŒÑ‘­ U!¬ùši8{qØTUÓ…ryºÐ&–‡ÿÐ.@“€ˆ–q“ñNhõ>ñ4Æy’&H&¼–ÑfW3Uù°^<bZéŠ·±Yÿƒ�àjeCOÄ©€J'7�í9Œ9“˜ÊXŒõ	h÷ù“¢‡œ9¥YšØ8Ÿ¾)Ad±ñŸáØOÁÖ’‡›ç’F"„ñ©@
+™¸è�ÿ�I¸‘ÑsGò�Zo¨™šaÜ¥u-Ê]cr�×Á7€‘›Aaoño.`“ ¡vè¡œÁŸ€ÒNŠÑWFq.†!•av¢7AOÙ0mÙÀ‹ñ,[Zš¥\
+[q‰£ýI£§ºà¢v�4b#Ôõ!b*¦±Ù ~ÑÌ:
á¤pL¹™¢`Ú§$Á£ ÑXrùœ~
+¦Âx¨¡Q¨»‡£óÿ8x„¨¨9Á§_
+©”Z©‘Š¤–š©šº©œº§>@¨Ù©¢:ª¤Zª¦zª¨:�Ÿú|šª®úª°«²:«´Z«¶z«¸š«ºº«¼Ú«±ú+¬+ð¾Z¬jÈš¬±ðo`¬�(€X�›]�¨Ò7Õz­Îº­±C0P"°8€W`l°mpÁqm°l�‰0¯‰€D°d0
+£pAÐ¯:!°ù:
+ýºGP«°	;Kë°
«>€*Šp21Û±pP	•°ß*aIC±°.O°ÍÚ°2;³2«´ÿð8›³´�ÆÐ³Æ0
ÓÐU0´U€F{p£Å‘Ð[ÀÛ0p	— ‘
+øSÐŠè€Ôš§‚­b
+úO�¶0±¶nà]Ð`‘¦ 
+p·x{·ZP
+¥àÞ
+®âJ®æª0ý6pT°Wp®\‘	p’;S ¹'@™€‰P@`Ä@
+¤@d°  >cpº¨›º¨‹Iû ñº!�Û¹+ºZ%+¾+ePØ“½û»Á;¼�°`c�¶›¶¡	ûÊË¼ÎKÐëÒ;±Q¼¾{¼
+ÿá½À+¼�8€±�¾êë[û‡Ê˜`ß:%r"�‹€¼ôû­_ˆ"@@¾Á{`	BPÀl		Ì`	±²ÊÂ¬.Ë€Êb” €´ ÇpšÂš@;{=[½�Â*œÂ× °[8À8 ´* Š�ª%8Œ�ÀÀPûŸÊ:ð5€aYpzÈ�ðµPôZ¯xPÅVlÅ¡/ðZ¬°ç`ì Å@`ìÜ+³°Æl<ëÙn0bÛ7q<ÇqÆ6`nP¬10rœ¡º„üŸRL¯ƒ’ÈƒÿR„¬º†Lä¿rÑ·Q—`Ÿ<Q¸‡›¸‹Û¸áÊ
+1Åx@	†Û%°‰QI�0•/k?Ðà®m@¹m°®ÐÄjôj¯ùªÛ3„�ÌÊ¼Ì„ 0;I[ÃÑìº
+°Â@Ö|ÍúZ°Ñ;ÀoË;Ð»KC@Ó"3�ÊHL¼è<-ë¼íŒc ÉLáPõlÏuÎéÏó|üÏì\¾€EpÐEð
+%ÀpnÑ‡ŠókÎÓ"€~°^=-¦çÀFdœÒ
+¬ÒðÀë²|Ã”À 2ÿK	”€qËÁ2ÐÓ2 	#\ÂqÂ+¬ÂÑp
ðÂ1ÍQÃ5œ@„àc	Õ<|2÷0p@À¶A£�dp~¦¹ÁlÅÐl0†àÐR\»r=×xpÈózÅx�³/P4ƒg,ÆdlÆ`œÆÿpÆ†ýÆÇrLÇ€œ
+ÆyÌ
@r¢Øe;È)<E-EÝ7‰0× m·4c�ÙE��]ZÐ6R7ˆue 't!*Ê¦Œ"©¼Ê­üÊ¡ÔPXáÛÀ­¹îaO`¸�€"gpQÐà¼}£:;PU{	÷p	ÁkµVÿ;oÖ±·<9ð”{Þ•;+pÀ
ðmÂØ²ƒLyÛ
+àúíAP9¡ÝäºOÝº¡ÔñÁ´[»·K¹[ÞÌ6à6Ð
�Öm"ñ¼TðÏÑáêœÛ!®¿6ÀjÐ¾‘â‡ºâ->â­Ê'ž$þá7ž>p¾ò€ÐW05€.>pðP	ƒ R€R€RPÑÑá2YgÐ�à¨àÑôk"@À‡©ŒYŽ
+']+­À–�ÂÑ
¬ÀÖ÷¹°
Õpé°¹ðO0Ù
+±VpÁl‘ÑÁ ¬<-`@è`ÿ@Â1
Æ€ÂE
¬H`àÿÃÝ4Ã¡ÃÏà}ÿpÃ›î‰Ñ°pZ­Ý`µ“]rP¿±> àª5­p›ë�ëÐlÝ°0­v�×x�qÚ 8+‹ðÅaLÆÇ Øhl†
Æa€ØáÇ‹]ÖîØÙí"·”-
�e
+˜Ýš½Âœ½Âž=¯Š¬ÈÂ^îç®ÂÏ�Ú¡AøŽï²µµqÉUõËkÜÈ­ÜÌíÜÐí”`¶PÖ‘ð?ÊóúÈm�p�à9€Ñm-0ÝÑÝ÷€°€éñSµb(†q£àQË'@¹vÿ!óè]¹¾lOn úðä@P
+ŠðôMÚö½kà
Ô¹ý=;°[ÃJ�P?”þ Ö<°Å/;Pá;`á6]0Î¯¤ŸÑá3 ã"^jÏö
+‘ÏŸa
2>;rïtÏâ³óö&ÞöÁ÷6î÷a±_]+AàQ	L1!°äÀR€®À»^0 ›?tÐ
Ö½&‚‘.`¨owÛ-àNPÌ½�Ÿ
½àæLpžWPßð
|ànÐÛ�0ÓVPÓ[€Ór0`/p‡Î `¢†þ‹nHÿðè¬ ’NéþÔAþ	1„p#à&èŠ •÷0Ù:�ŽÙ­
ps‡0©@i9áß¿OH¸dx0ÑC<
tè3ÃPXO2|ÔËc§^ïzEØV2B²�Ed‰gÐ˜/6ô KŠ#`óæL_A}…!ªkæQ¤ÿ&LpÓ ËÆ¥MŸ&Ý¸ÀêUªYv¹jµá˜#ŒM Æ,$HÔ.ØhÁc/�RFJ¡{r#X±c!zö­Zl*x`ÂðaÄ!…%À±€ƒ�µN¦œÔí»!%
+t¦Q
+~r HR¹²'OiGœN
a5ÒŽ½†¼j”asÿ (°>Ü«Á¡ôÁ¨nºçÚÕêÔ†£RµðÁ¥{÷:ÀBúuêÿÞŒ"âäèŠ'¦LÉ‘c|ùñáWlÌN?]Ø= OŸÛÁÇR°†8Àˆ‚�üRáŸUXð •8ê	 `‹'‚	&
·è0Áƒv°!(>°��5Fh +ÈpÑE*¨)$˜¡„6Øœ/ ªÆsÜ±Gªž¨¯>xøÅ
+5"ñ#�| É%›|HuäÑÇ¤°rË¬ð€´$Êt§žàà¨JêË“A`G€0`Ç•�j”@‚
`�2šh¬8ž††Ø3G
+ìxÿkÑ^þØhKØ£xŽƒ^¸À!6zâ�o
+É"‹tv`€>Ü@jJ¶ÈåÕ\¬°‚9Ü u¦4‘Xa•„0dÚ¨c�X4V„Ð
+$$lèAMûgOžQO°–iÿÑ¢[8ÊPVKë $ZYh¦ØFêe›Š.‚&|$‘H2IŽ�"y+‚CÀä:L$Cª�x¢Ê†vØƒn2x¦‰'{ä‘'ž`Š2Œ3^Š²1<Jà’K¾AÀAtë£^äŠ€.)"à÷+‘K¡äg$Ä
+¤ôY1¤.yL²Š#6ú.Ùh³�³Üvëí7†<Yì©#†ÿä‘´ ©ìê¬“Ší¶±!†F2ù‡jø'�Fš`œq†¹!
P‚°;ˆPö0 
fja”QZè‡.�e:¤ÂQ»ƒ¸Šïo<d�aârÌOX�¡S¢%�Æ™1JQdü¾âÏoP.�ˆ,|’*ggÊpjÈ0>|ð¡†-XI}#>„j ƒS‡)eö†Z”Ò‚h” Ë
ºé&>& C‡óœ^È3¢ø"í¹ßˆê³&IY™$á
ôB_}öeUãýøª‘zë±/¿{ý}OGáßÿŽ‚€J-A�ä€Ö4“6Ía‹xÓ æT§;y/GgÁ0ÿ4À (aH¦·�3xÁ¦°C„àB1ØÁQ
‰¤¢��pà½Ø”.à©d¡ßpÃ`…ªjÌd0 DaàtArèt0³†äJ»êÕ¯^¬™T¡XoA–²´ñ$‚2ÐBÊAˆ[x‚HÀãÈ­Ê´Ðc@
+(�´üã­Äº6Ò.€á 	òÚFÔf»ND -ÁC'"ù2ä	ÿúW-`±ÀbIiF1vBªE«\¥)‹1Ê�EI‘e*ƒb¨j2BÁ¥.µ²^ŒÌd'�væ©HJR™°d"‘IýÔŒdÂ<$@Œcÿ6¤gŒàæÌðMpí(‹Zd²‚Gµd‡87g‚Çƒ²!Œ˜QC6	6±‘Ílh;Ûæ9‰vô ž˜„'¨VÐ¤Œ@ÿp€ZÄ¥…2Ô¡HyÂ2—ÙÔ!mCÜ ·4à¡nwÒpƒaø’!‡(HþÑ�„qHaG8§'8r3Y�ä¦`9Ì•	škHÖ�ËÏ©£õáÆ&T1<ý¬§ZCU×»50ï(µ³ï€
+E€5¨o2ö$7Ü²yXƒÜ„�Jª8�Ü`+a¤”a:Ba7¤€�NÄ €kCôÊ×ð‰�‚%ìùÒGŸõñ@ÿVÒ 	L‘¿ƒÌ²õ£¬e1{�ÃÐ¯€elaK¸×FA±¥= ¥8ðZØ~€`Ó&(vT�NvÂ“þJp†ÒPˆ†¬ €ÀšeØ`T(„
+Á	B"fÈIEÊ#•Òa/8u�xjYhF!ÜÀ€#Æ€�A¯Ü+á`‘!Zä¢¯`"	a5DŒÅºF¡ð_4^C�3aãdÎQÇs(â¼GÌpEx=Ê#ò-Œâ�‰ÁÇ8â³hÅ¸`H{.ó8ÄH"ðˆGzê-”Ü€ z�ŠZÔ¢0ÎJ)�¡°¤°R'®ü±.@X™Ç%É•ÿ¹å‰ÖkK\2àÉI¦Læ:eS“Dàr—½L„ÿ˜ˆKöâ—´†gp„œàMNÄ™fç8
G4ªp‹[Ñ@ñº˜zDÏ�œ@ÿ15OáRÑcÃ¨FBá€FZ�XÌ$(�1häi!”V2OtÚvœôIxp‡0ÿCi0ÀBq· €â¤Ã€Ûf¢–æ4äpÙIÊMÿq'ìt#à™V Tc3DeˆÖ!ŠÏñCÉˆéL§
+$h?
+p—GÕ‚ d•2\�	H@àíÎC¬	„‡V!h]¸™´Ê2<€®w¸ƒ¼sæ¦6ˆÿcó`ZÐ‚OµâûÀ`>?= ²“ÍhÆð¤ˆOÜ
+”­ƒÅŸpFaàw8ÂÿòÄ2¼ä¬T\^„W”€>xàFÚä�Æ8¦˜¨A�bÐ[†ˆà·ÎnŒ.€À@é´-áÐ½@ôBN06ì	!`ãQ‘�îZ¼– ^.ž�
7œ÷UÐÆ¸Ô7°ŠO„âp¦EhD‹¼r¯^€ß0ÃÓ¨Bá‘px$\C	žÌ‚@ŠDlDÚR/pAGkAÀò9¤)Ò`?‚dp‚�½‡Ž�‡(ñ?Nl¯R÷5€Å6N�êaÆ-Âÿ¼ÉØ—Úö¨¾÷?|d¤y'?f¾QÌišZÆRZQ>r²B}XŸ*ºï…•I†e�ÂÞ1Â—Ífî#¢dˆ1 @bŒ`ÍNp3œO5çàu–ÒO
+/üÿ�tú‡uj'D´9byj§	Y´1i¨ƒ`K¨	¨Kó„K›¯˜Ø@Ü@_˜‰¤4ÃMÛx‹ø—S#¾™(ã Ž.H»�ÙÈ5]›©^û^Óakˆhƒb�6¸œ6È?`‚)hƒh˜¢à‡;°1i*U¨ÂlSnC«bp7Ûˆ+·`ØÇP·`ð�K`H5>ˆÿ«’›F˜²™ Và7!ð7¤‚
 ?ü>èÆÂ09>ôC*øE\�†#D“ó\ªŽ‹€7PŒ›�ÄŠ«Ä'9Ä?ÄA,Ä™ðÄD\ÄFÅ™¨�ß‘‡—»‚ð:¦³9Û"§S¨ÅSÀ„Z`‡ºƒX„
p./h+ˆYA®HºX<¹_ô‚§‹:Dp1À'À†^Ð:’J™¹h¸„Š†ð¡²Ë…Ø0¶Ó†ð€$‚;+x/+0s`)Ê»Ð"
xI�„WÑZ¼�@‚i <²È.P<%@1¡
+Ppˆ†p#3H0xò„o:‡à¼Kÿ.#ƒ1Ð"8„×˜	Eø#ÎcH ¤{½™8A�HÁR[AÜ3‚K¢¤Œy#•ì–	—,¾f°‰Ïš	ô	J¡üÉ†`
+§X€´;ÊÊ0J®HJ®¨
+ã ã(>†0³°2ð#R ƒñk˜Œ°Ë™¤I1¾xbzøs?lB„ùÓƒ73N¸?:Ó¿¸z>¤4>Àø³´´ƒ0C+@M²}Ð€�¥X
+r�@ ÀÈdw:4Ãd¾Ð¥ÓÀQC
+¾p0ˆÏ<
+ˆ€è€°Œ„Žy‚+<š™p©™Øµ¬ðµƒ8‡£h
+8�ÊÉ�ë¸Žÿ¨œ €&hˆS@YØu�Â~‚2¨ÂUXÐ6þoË‚ØÎp{�É
+>èV0·-Ø>>˜É'é€(“ˆ‡Ð
+;¼!°èÁ†„@h˜ÆÊðCüÏ}­Ý€EPˆ£&á¸7xg°ÄU’	Í¨
+½ÐNTP%ÐÁzÐP�­{pÐ5¹H“H‚Bx¹"`Ð£�ø…m@ØQ¨WX„pàÅàCfôx°¥ƒ�JÒd$Ò§C…è>H¨:l0…jÜˆìê…m¼ºˆ
+¯†àƒ^Ù7hÃ'h@ÿ4XÇƒpp/+¸sè�ƒd GZ0ÐüzÐø˜	€,¼€K!è%X<„D
+hYÈˆ<†@°‹È‰¬È™'8„
+€2€Ë¤ŠAú„ƒ($ÔTMÖË×ŒMò{‹Ž°±Þ«É�HÍÕlÍW¥Jþ³%¡
+XJŠ	8ÖSáUà Ö0VYJ¦ë»�Q©íók*&ÑJ)Ë·ˆøÖ'øV°U¯´Ö3û‹µXxË¸”3ü³KZÂË£ÐKÎÀCûË†Ø3ü(Ðš`§C›‘@{EcL� ‡ÇD
+‚2¨†¥Ì©©Ì�  „ÿ†@Àª X‹e1À�…¸nýVT»mÐX•M•�˜ôMd
? âTÂ™`ÈÓèƒ(  ð€ŒQ:ëT€.í´›ðB0ÏðÏ8Ï'Ï1$«°Â½<èùd„xàƒÉ¨°[YàÏ¤ ƒÁ"DðÝ³5ÐU[ˆ«,J4S ‡1øEÐù‹[˜Ûº½Û¼ÝÛ¬h[´…ÛÁ=Û·eÑÀß(“$8“ð€ddL˜),[<…Wp!/@Ñm€h ÆÇ¨EhÒ(]Ñ�Ri¬F'ðkdHa€ÐR!8ðS† ÓõŒ…ÿX G×
+„/ 4¨Ïƒ˜»v” xÞ<Õ¾ƒØS0ð»˜èGZ(TC%¼*(œ¨«€@€‚H�–g¡TÈK„|hL•£¨ÙT‹lJ`(p„(èØÉø„V˜…ƒø„B:‘õo½=“EÙÙá¾^x„Þ{‚ZY>Ù”�×¬øÕ ƒ`¥¨([‚=d…’þàfÝ¿	`€a†4Hƒ†à¥\¢î³&	?måÊ®¬J	æ�pýVrÅá^°&øƒ„µ\y†ùs‚¸§oÊ?­À³•]Y‚}}0ÆlL;á�ššªA[ˆ,J�Yýmˆ°–/c\ãÿˆ`�x—<Ù¨Î'žciÉ„6�ŸB†ôhƒL ©8h
+ˆ‚~:ÀS¯`ˆý�S¡*«ª*æùÎÒ
+>è
+¨Ý‚Kˆ€°ªd¤Ø7¨�u­äÕŠ
+°[@âÿ"[¤Ð·M[7X[&lexeÇ’ƒ®@ãø,ô±å«Àå[†åƒ`åÂ¥å¬æ·%æ�ø€ø€Z X ½£À„mˆ�B¼fð\!Òý€H®$
çÉu�Fh„ø€ØeÙÝˆ²od€hØƒoÜ]G ž©\€ph„8(Þ@`ˆ-€ÓphåÚ¤ Þ|LèìE
+$(<(¸„q¬PHåÿòMÈI„…´TK=ˆöÕÔsß6‚€C€‚¨Œ#(¤uQ—CÕ†`ã~cmˆã~1i�I#¸é>—vc~{8–ã&ÖŠ_%Š0p¾"ñ~¤.áÉPê¤^êâš�Ra"…Fj'ƒa�€€žáQ€>#p&°KœÎéÜÛêµ|?ø#€"Âø™#Y¨ý‹>:ž°�;p@TØTH,¦J[ÓKÞpVãäu}(ì Íä&ºUgªéŒ	[ ½kÌÖŠ €;�h
+XB­(ƒF`ÄNŠ{žJªP�ØèÊàƒ¦Å�™äNÎl£i€¡$Ê™ÀíÜv,ÿß–ÓúIáæàí¡Ô
+ãÊ£8Ù‚­×‚…PB
+W˜nê®îéÎ
+x8gíÞîÉÝ'øðÆño,­Ý¯0MGàÝÉ¨~n7ý‡-˜¢)ÊSûÎSjÝZè@ZHŠTh–G]<@„“ä‚�Í
+ T�f_¿¨¼¨éµ8ð£H0(ÛNM×|MØM &¿ÔŽÊ–žl
·ì§%ÇÈŠÜî	­Pj¤^€G¸¥fqpqêâ^áª¶j†À>éEŠšüp¯J Ç
+¯ò®ØrÐ©á&Snr[ƒ’¶m)Ï½!ŸòÊx^,Ïr-Çrö2òÀ¶òˆi‚È
+ €Lø�ÿã¤ø€Óžr×~m s9Ÿs:7šÙª9†øÝ¨s>7šjø€øîs:¦ÔJ}AŸ‰VHtE_ôD¿U/Ÿãê4òÉ°kÙ|ñ·ô¯L§ñ¯LäƒPíCuR/uS?õR/¸‚CuVouWuX�uYŸuZ¯u[¿u\Ïu]ßu^ïu_ÿu`vavb/vc?vdOve_vfovgvh�viŸvj¯vk¿vlÏvmßvnïvo—õ¥’ë#é…ûvs?wtOwu_wvow9Gq?_x;w¯w{¿w|Ïw}ß÷a¯�^ˆ÷ú(w~x‚/xƒ?x„Oøêð€§zWxˆ�xÎ‰ŸxŠ¯øcw€'w‹ßxŽïx�ÿx�—r�=’ù‘y”Oy•_y–oy—y˜�y™Ÿyg—Yø›·yœÏù�×y�§y z¡z¢/z£?z¤Oz¥Oö’oz“Ÿ½¥�z©Ÿzª‡yWg¬øªßz®ïz¯xÀ‡†€‡ÿz³?{´O{lÇøx×xµ{¸�{¹vxox|(û¹Ï{½ß{¾?t{­ï{Á|Â/ünA†ox¼7|Æo|Ç|È�|ÉŸ|Ê¯|Ë¿|Ìú€;
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,72 @@
+tinyMCEPopup.requireLangPack();
+
+function init() {
+	var ed, tcont;
+
+	tinyMCEPopup.resizeToInnerSize();
+	ed = tinyMCEPopup.editor;
+
+	// Give FF some time
+	window.setTimeout(insertHelpIFrame, 10);
+
+	tcont = document.getElementById('plugintablecontainer');
+	document.getElementById('plugins_tab').style.display = 'none';
+
+	var html = "";
+	html += '<table id="plugintable">';
+	html += '<thead>';
+	html += '<tr>';
+	html += '<td>' + ed.getLang('advanced_dlg.about_plugin') + '</td>';
+	html += '<td>' + ed.getLang('advanced_dlg.about_author') + '</td>';
+	html += '<td>' + ed.getLang('advanced_dlg.about_version') + '</td>';
+	html += '</tr>';
+	html += '</thead>';
+	html += '<tbody>';
+
+	tinymce.each(ed.plugins, function(p, n) {
+		var info;
+
+		if (!p.getInfo)
+			return;
+
+		html += '<tr>';
+
+		info = p.getInfo();
+
+		if (info.infourl != null && info.infourl != '')
+			html += '<td width="50%" title="' + n + '"><a href="' + info.infourl + '" target="_blank">' + info.longname + '</a></td>';
+		else
+			html += '<td width="50%" title="' + n + '">' + info.longname + '</td>';
+
+		if (info.authorurl != null && info.authorurl != '')
+			html += '<td width="35%"><a href="' + info.authorurl + '" target="_blank">' + info.author + '</a></td>';
+		else
+			html += '<td width="35%">' + info.author + '</td>';
+
+		html += '<td width="15%">' + info.version + '</td>';
+		html += '</tr>';
+
+		document.getElementById('plugins_tab').style.display = '';
+
+	});
+
+	html += '</tbody>';
+	html += '</table>';
+
+	tcont.innerHTML = html;
+
+	tinyMCEPopup.dom.get('version').innerHTML = tinymce.majorVersion + "." + tinymce.minorVersion;
+	tinyMCEPopup.dom.get('date').innerHTML = tinymce.releaseDate;
+}
+
+function insertHelpIFrame() {
+	var html;
+
+	if (tinyMCEPopup.getParam('docs_url')) {
+		html = '<iframe width="100%" height="300" src="' + tinyMCEPopup.editor.baseURI.toAbsolute(tinyMCEPopup.getParam('docs_url')) + '"></iframe>';
+		document.getElementById('iframecontainer').innerHTML = html;
+		document.getElementById('help_tab').style.display = 'block';
+	}
+}
+
+tinyMCEPopup.onInit.add(init);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,37 @@
+tinyMCEPopup.requireLangPack();
+
+var AnchorDialog = {
+	init : function(ed) {
+		var action, elm, f = document.forms[0];
+
+		this.editor = ed;
+		elm = ed.dom.getParent(ed.selection.getNode(), 'A,IMG');
+		v = ed.dom.getAttrib(elm, 'name');
+
+		if (v) {
+			this.action = 'update';
+			f.anchorName.value = v;
+		}
+
+		f.insert.value = ed.getLang(elm ? 'update' : 'insert');
+	},
+
+	update : function() {
+		var ed = this.editor;
+		
+		tinyMCEPopup.restoreSelection();
+
+		if (this.action != 'update')
+			ed.selection.collapse(1);
+
+		// Webkit acts weird if empty inline element is inserted so we need to use a image instead
+		if (tinymce.isWebKit)
+			ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('img', {mce_name : 'a', name : document.forms[0].anchorName.value, 'class' : 'mceItemAnchor'}));
+		else
+			ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : document.forms[0].anchorName.value, 'class' : 'mceItemAnchor'}, ''));
+
+		tinyMCEPopup.close();
+	}
+};
+
+tinyMCEPopup.onInit.add(AnchorDialog.init, AnchorDialog);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/charmap.js 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/charmap.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/charmap.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/charmap.js	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,325 @@
+tinyMCEPopup.requireLangPack();
+
+var charmap = [
+	['&nbsp;',    '&#160;',  true, 'no-break space'],
+	['&amp;',     '&#38;',   true, 'ampersand'],
+	['&quot;',    '&#34;',   true, 'quotation mark'],
+// finance
+	['&cent;',    '&#162;',  true, 'cent sign'],
+	['&euro;',    '&#8364;', true, 'euro sign'],
+	['&pound;',   '&#163;',  true, 'pound sign'],
+	['&yen;',     '&#165;',  true, 'yen sign'],
+// signs
+	['&copy;',    '&#169;',  true, 'copyright sign'],
+	['&reg;',     '&#174;',  true, 'registered sign'],
+	['&trade;',   '&#8482;', true, 'trade mark sign'],
+	['&permil;',  '&#8240;', true, 'per mille sign'],
+	['&micro;',   '&#181;',  true, 'micro sign'],
+	['&middot;',  '&#183;',  true, 'middle dot'],
+	['&bull;',    '&#8226;', true, 'bullet'],
+	['&hellip;',  '&#8230;', true, 'three dot leader'],
+	['&prime;',   '&#8242;', true, 'minutes / feet'],
+	['&Prime;',   '&#8243;', true, 'seconds / inches'],
+	['&sect;',    '&#167;',  true, 'section sign'],
+	['&para;',    '&#182;',  true, 'paragraph sign'],
+	['&szlig;',   '&#223;',  true, 'sharp s / ess-zed'],
+// quotations
+	['&lsaquo;',  '&#8249;', true, 'single left-pointing angle quotation mark'],
+	['&rsaquo;',  '&#8250;', true, 'single right-pointing angle quotation mark'],
+	['&laquo;',   '&#171;',  true, 'left pointing guillemet'],
+	['&raquo;',   '&#187;',  true, 'right pointing guillemet'],
+	['&lsquo;',   '&#8216;', true, 'left single quotation mark'],
+	['&rsquo;',   '&#8217;', true, 'right single quotation mark'],
+	['&ldquo;',   '&#8220;', true, 'left double quotation mark'],
+	['&rdquo;',   '&#8221;', true, 'right double quotation mark'],
+	['&sbquo;',   '&#8218;', true, 'single low-9 quotation mark'],
+	['&bdquo;',   '&#8222;', true, 'double low-9 quotation mark'],
+	['&lt;',      '&#60;',   true, 'less-than sign'],
+	['&gt;',      '&#62;',   true, 'greater-than sign'],
+	['&le;',      '&#8804;', true, 'less-than or equal to'],
+	['&ge;',      '&#8805;', true, 'greater-than or equal to'],
+	['&ndash;',   '&#8211;', true, 'en dash'],
+	['&mdash;',   '&#8212;', true, 'em dash'],
+	['&macr;',    '&#175;',  true, 'macron'],
+	['&oline;',   '&#8254;', true, 'overline'],
+	['&curren;',  '&#164;',  true, 'currency sign'],
+	['&brvbar;',  '&#166;',  true, 'broken bar'],
+	['&uml;',     '&#168;',  true, 'diaeresis'],
+	['&iexcl;',   '&#161;',  true, 'inverted exclamation mark'],
+	['&iquest;',  '&#191;',  true, 'turned question mark'],
+	['&circ;',    '&#710;',  true, 'circumflex accent'],
+	['&tilde;',   '&#732;',  true, 'small tilde'],
+	['&deg;',     '&#176;',  true, 'degree sign'],
+	['&minus;',   '&#8722;', true, 'minus sign'],
+	['&plusmn;',  '&#177;',  true, 'plus-minus sign'],
+	['&divide;',  '&#247;',  true, 'division sign'],
+	['&frasl;',   '&#8260;', true, 'fraction slash'],
+	['&times;',   '&#215;',  true, 'multiplication sign'],
+	['&sup1;',    '&#185;',  true, 'superscript one'],
+	['&sup2;',    '&#178;',  true, 'superscript two'],
+	['&sup3;',    '&#179;',  true, 'superscript three'],
+	['&frac14;',  '&#188;',  true, 'fraction one quarter'],
+	['&frac12;',  '&#189;',  true, 'fraction one half'],
+	['&frac34;',  '&#190;',  true, 'fraction three quarters'],
+// math / logical
+	['&fnof;',    '&#402;',  true, 'function / florin'],
+	['&int;',     '&#8747;', true, 'integral'],
+	['&sum;',     '&#8721;', true, 'n-ary sumation'],
+	['&infin;',   '&#8734;', true, 'infinity'],
+	['&radic;',   '&#8730;', true, 'square root'],
+	['&sim;',     '&#8764;', false,'similar to'],
+	['&cong;',    '&#8773;', false,'approximately equal to'],
+	['&asymp;',   '&#8776;', true, 'almost equal to'],
+	['&ne;',      '&#8800;', true, 'not equal to'],
+	['&equiv;',   '&#8801;', true, 'identical to'],
+	['&isin;',    '&#8712;', false,'element of'],
+	['&notin;',   '&#8713;', false,'not an element of'],
+	['&ni;',      '&#8715;', false,'contains as member'],
+	['&prod;',    '&#8719;', true, 'n-ary product'],
+	['&and;',     '&#8743;', false,'logical and'],
+	['&or;',      '&#8744;', false,'logical or'],
+	['&not;',     '&#172;',  true, 'not sign'],
+	['&cap;',     '&#8745;', true, 'intersection'],
+	['&cup;',     '&#8746;', false,'union'],
+	['&part;',    '&#8706;', true, 'partial differential'],
+	['&forall;',  '&#8704;', false,'for all'],
+	['&exist;',   '&#8707;', false,'there exists'],
+	['&empty;',   '&#8709;', false,'diameter'],
+	['&nabla;',   '&#8711;', false,'backward difference'],
+	['&lowast;',  '&#8727;', false,'asterisk operator'],
+	['&prop;',    '&#8733;', false,'proportional to'],
+	['&ang;',     '&#8736;', false,'angle'],
+// undefined
+	['&acute;',   '&#180;',  true, 'acute accent'],
+	['&cedil;',   '&#184;',  true, 'cedilla'],
+	['&ordf;',    '&#170;',  true, 'feminine ordinal indicator'],
+	['&ordm;',    '&#186;',  true, 'masculine ordinal indicator'],
+	['&dagger;',  '&#8224;', true, 'dagger'],
+	['&Dagger;',  '&#8225;', true, 'double dagger'],
+// alphabetical special chars
+	['&Agrave;',  '&#192;',  true, 'A - grave'],
+	['&Aacute;',  '&#193;',  true, 'A - acute'],
+	['&Acirc;',   '&#194;',  true, 'A - circumflex'],
+	['&Atilde;',  '&#195;',  true, 'A - tilde'],
+	['&Auml;',    '&#196;',  true, 'A - diaeresis'],
+	['&Aring;',   '&#197;',  true, 'A - ring above'],
+	['&AElig;',   '&#198;',  true, 'ligature AE'],
+	['&Ccedil;',  '&#199;',  true, 'C - cedilla'],
+	['&Egrave;',  '&#200;',  true, 'E - grave'],
+	['&Eacute;',  '&#201;',  true, 'E - acute'],
+	['&Ecirc;',   '&#202;',  true, 'E - circumflex'],
+	['&Euml;',    '&#203;',  true, 'E - diaeresis'],
+	['&Igrave;',  '&#204;',  true, 'I - grave'],
+	['&Iacute;',  '&#205;',  true, 'I - acute'],
+	['&Icirc;',   '&#206;',  true, 'I - circumflex'],
+	['&Iuml;',    '&#207;',  true, 'I - diaeresis'],
+	['&ETH;',     '&#208;',  true, 'ETH'],
+	['&Ntilde;',  '&#209;',  true, 'N - tilde'],
+	['&Ograve;',  '&#210;',  true, 'O - grave'],
+	['&Oacute;',  '&#211;',  true, 'O - acute'],
+	['&Ocirc;',   '&#212;',  true, 'O - circumflex'],
+	['&Otilde;',  '&#213;',  true, 'O - tilde'],
+	['&Ouml;',    '&#214;',  true, 'O - diaeresis'],
+	['&Oslash;',  '&#216;',  true, 'O - slash'],
+	['&OElig;',   '&#338;',  true, 'ligature OE'],
+	['&Scaron;',  '&#352;',  true, 'S - caron'],
+	['&Ugrave;',  '&#217;',  true, 'U - grave'],
+	['&Uacute;',  '&#218;',  true, 'U - acute'],
+	['&Ucirc;',   '&#219;',  true, 'U - circumflex'],
+	['&Uuml;',    '&#220;',  true, 'U - diaeresis'],
+	['&Yacute;',  '&#221;',  true, 'Y - acute'],
+	['&Yuml;',    '&#376;',  true, 'Y - diaeresis'],
+	['&THORN;',   '&#222;',  true, 'THORN'],
+	['&agrave;',  '&#224;',  true, 'a - grave'],
+	['&aacute;',  '&#225;',  true, 'a - acute'],
+	['&acirc;',   '&#226;',  true, 'a - circumflex'],
+	['&atilde;',  '&#227;',  true, 'a - tilde'],
+	['&auml;',    '&#228;',  true, 'a - diaeresis'],
+	['&aring;',   '&#229;',  true, 'a - ring above'],
+	['&aelig;',   '&#230;',  true, 'ligature ae'],
+	['&ccedil;',  '&#231;',  true, 'c - cedilla'],
+	['&egrave;',  '&#232;',  true, 'e - grave'],
+	['&eacute;',  '&#233;',  true, 'e - acute'],
+	['&ecirc;',   '&#234;',  true, 'e - circumflex'],
+	['&euml;',    '&#235;',  true, 'e - diaeresis'],
+	['&igrave;',  '&#236;',  true, 'i - grave'],
+	['&iacute;',  '&#237;',  true, 'i - acute'],
+	['&icirc;',   '&#238;',  true, 'i - circumflex'],
+	['&iuml;',    '&#239;',  true, 'i - diaeresis'],
+	['&eth;',     '&#240;',  true, 'eth'],
+	['&ntilde;',  '&#241;',  true, 'n - tilde'],
+	['&ograve;',  '&#242;',  true, 'o - grave'],
+	['&oacute;',  '&#243;',  true, 'o - acute'],
+	['&ocirc;',   '&#244;',  true, 'o - circumflex'],
+	['&otilde;',  '&#245;',  true, 'o - tilde'],
+	['&ouml;',    '&#246;',  true, 'o - diaeresis'],
+	['&oslash;',  '&#248;',  true, 'o slash'],
+	['&oelig;',   '&#339;',  true, 'ligature oe'],
+	['&scaron;',  '&#353;',  true, 's - caron'],
+	['&ugrave;',  '&#249;',  true, 'u - grave'],
+	['&uacute;',  '&#250;',  true, 'u - acute'],
+	['&ucirc;',   '&#251;',  true, 'u - circumflex'],
+	['&uuml;',    '&#252;',  true, 'u - diaeresis'],
+	['&yacute;',  '&#253;',  true, 'y - acute'],
+	['&thorn;',   '&#254;',  true, 'thorn'],
+	['&yuml;',    '&#255;',  true, 'y - diaeresis'],
+    ['&Alpha;',   '&#913;',  true, 'Alpha'],
+	['&Beta;',    '&#914;',  true, 'Beta'],
+	['&Gamma;',   '&#915;',  true, 'Gamma'],
+	['&Delta;',   '&#916;',  true, 'Delta'],
+	['&Epsilon;', '&#917;',  true, 'Epsilon'],
+	['&Zeta;',    '&#918;',  true, 'Zeta'],
+	['&Eta;',     '&#919;',  true, 'Eta'],
+	['&Theta;',   '&#920;',  true, 'Theta'],
+	['&Iota;',    '&#921;',  true, 'Iota'],
+	['&Kappa;',   '&#922;',  true, 'Kappa'],
+	['&Lambda;',  '&#923;',  true, 'Lambda'],
+	['&Mu;',      '&#924;',  true, 'Mu'],
+	['&Nu;',      '&#925;',  true, 'Nu'],
+	['&Xi;',      '&#926;',  true, 'Xi'],
+	['&Omicron;', '&#927;',  true, 'Omicron'],
+	['&Pi;',      '&#928;',  true, 'Pi'],
+	['&Rho;',     '&#929;',  true, 'Rho'],
+	['&Sigma;',   '&#931;',  true, 'Sigma'],
+	['&Tau;',     '&#932;',  true, 'Tau'],
+	['&Upsilon;', '&#933;',  true, 'Upsilon'],
+	['&Phi;',     '&#934;',  true, 'Phi'],
+	['&Chi;',     '&#935;',  true, 'Chi'],
+	['&Psi;',     '&#936;',  true, 'Psi'],
+	['&Omega;',   '&#937;',  true, 'Omega'],
+	['&alpha;',   '&#945;',  true, 'alpha'],
+	['&beta;',    '&#946;',  true, 'beta'],
+	['&gamma;',   '&#947;',  true, 'gamma'],
+	['&delta;',   '&#948;',  true, 'delta'],
+	['&epsilon;', '&#949;',  true, 'epsilon'],
+	['&zeta;',    '&#950;',  true, 'zeta'],
+	['&eta;',     '&#951;',  true, 'eta'],
+	['&theta;',   '&#952;',  true, 'theta'],
+	['&iota;',    '&#953;',  true, 'iota'],
+	['&kappa;',   '&#954;',  true, 'kappa'],
+	['&lambda;',  '&#955;',  true, 'lambda'],
+	['&mu;',      '&#956;',  true, 'mu'],
+	['&nu;',      '&#957;',  true, 'nu'],
+	['&xi;',      '&#958;',  true, 'xi'],
+	['&omicron;', '&#959;',  true, 'omicron'],
+	['&pi;',      '&#960;',  true, 'pi'],
+	['&rho;',     '&#961;',  true, 'rho'],
+	['&sigmaf;',  '&#962;',  true, 'final sigma'],
+	['&sigma;',   '&#963;',  true, 'sigma'],
+	['&tau;',     '&#964;',  true, 'tau'],
+	['&upsilon;', '&#965;',  true, 'upsilon'],
+	['&phi;',     '&#966;',  true, 'phi'],
+	['&chi;',     '&#967;',  true, 'chi'],
+	['&psi;',     '&#968;',  true, 'psi'],
+	['&omega;',   '&#969;',  true, 'omega'],
+// symbols
+	['&alefsym;', '&#8501;', false,'alef symbol'],
+	['&piv;',     '&#982;',  false,'pi symbol'],
+	['&real;',    '&#8476;', false,'real part symbol'],
+	['&thetasym;','&#977;',  false,'theta symbol'],
+	['&upsih;',   '&#978;',  false,'upsilon - hook symbol'],
+	['&weierp;',  '&#8472;', false,'Weierstrass p'],
+	['&image;',   '&#8465;', false,'imaginary part'],
+// arrows
+	['&larr;',    '&#8592;', true, 'leftwards arrow'],
+	['&uarr;',    '&#8593;', true, 'upwards arrow'],
+	['&rarr;',    '&#8594;', true, 'rightwards arrow'],
+	['&darr;',    '&#8595;', true, 'downwards arrow'],
+	['&harr;',    '&#8596;', true, 'left right arrow'],
+	['&crarr;',   '&#8629;', false,'carriage return'],
+	['&lArr;',    '&#8656;', false,'leftwards double arrow'],
+	['&uArr;',    '&#8657;', false,'upwards double arrow'],
+	['&rArr;',    '&#8658;', false,'rightwards double arrow'],
+	['&dArr;',    '&#8659;', false,'downwards double arrow'],
+	['&hArr;',    '&#8660;', false,'left right double arrow'],
+	['&there4;',  '&#8756;', false,'therefore'],
+	['&sub;',     '&#8834;', false,'subset of'],
+	['&sup;',     '&#8835;', false,'superset of'],
+	['&nsub;',    '&#8836;', false,'not a subset of'],
+	['&sube;',    '&#8838;', false,'subset of or equal to'],
+	['&supe;',    '&#8839;', false,'superset of or equal to'],
+	['&oplus;',   '&#8853;', false,'circled plus'],
+	['&otimes;',  '&#8855;', false,'circled times'],
+	['&perp;',    '&#8869;', false,'perpendicular'],
+	['&sdot;',    '&#8901;', false,'dot operator'],
+	['&lceil;',   '&#8968;', false,'left ceiling'],
+	['&rceil;',   '&#8969;', false,'right ceiling'],
+	['&lfloor;',  '&#8970;', false,'left floor'],
+	['&rfloor;',  '&#8971;', false,'right floor'],
+	['&lang;',    '&#9001;', false,'left-pointing angle bracket'],
+	['&rang;',    '&#9002;', false,'right-pointing angle bracket'],
+	['&loz;',     '&#9674;', true,'lozenge'],
+	['&spades;',  '&#9824;', false,'black spade suit'],
+	['&clubs;',   '&#9827;', true, 'black club suit'],
+	['&hearts;',  '&#9829;', true, 'black heart suit'],
+	['&diams;',   '&#9830;', true, 'black diamond suit'],
+	['&ensp;',    '&#8194;', false,'en space'],
+	['&emsp;',    '&#8195;', false,'em space'],
+	['&thinsp;',  '&#8201;', false,'thin space'],
+	['&zwnj;',    '&#8204;', false,'zero width non-joiner'],
+	['&zwj;',     '&#8205;', false,'zero width joiner'],
+	['&lrm;',     '&#8206;', false,'left-to-right mark'],
+	['&rlm;',     '&#8207;', false,'right-to-left mark'],
+	['&shy;',     '&#173;',  false,'soft hyphen']
+];
+
+tinyMCEPopup.onInit.add(function() {
+	tinyMCEPopup.dom.setHTML('charmapView', renderCharMapHTML());
+});
+
+function renderCharMapHTML() {
+	var charsPerRow = 20, tdWidth=20, tdHeight=20, i;
+	var html = '<table border="0" cellspacing="1" cellpadding="0" width="' + (tdWidth*charsPerRow) + '"><tr height="' + tdHeight + '">';
+	var cols=-1;
+
+	for (i=0; i<charmap.length; i++) {
+		if (charmap[i][2]==true) {
+			cols++;
+			html += ''
+				+ '<td class="charmap">'
+				+ '<a onmouseover="previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');" onfocus="previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');" href="javascript:void(0)" onclick="insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');" onclick="return false;" onmousedown="return false;" title="' + charmap[i][3] + '">'
+				+ charmap[i][1]
+				+ '</a></td>';
+			if ((cols+1) % charsPerRow == 0)
+				html += '</tr><tr height="' + tdHeight + '">';
+		}
+	 }
+
+	if (cols % charsPerRow > 0) {
+		var padd = charsPerRow - (cols % charsPerRow);
+		for (var i=0; i<padd-1; i++)
+			html += '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap">&nbsp;</td>';
+	}
+
+	html += '</tr></table>';
+
+	return html;
+}
+
+function insertChar(chr) {
+	tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';');
+
+	// Refocus in window
+	if (tinyMCEPopup.isWindow)
+		window.focus();
+
+	tinyMCEPopup.editor.focus();
+	tinyMCEPopup.close();
+}
+
+function previewChar(codeA, codeB, codeN) {
+	var elmA = document.getElementById('codeA');
+	var elmB = document.getElementById('codeB');
+	var elmV = document.getElementById('codeV');
+	var elmN = document.getElementById('codeN');
+
+	if (codeA=='#160;') {
+		elmV.innerHTML = '__';
+	} else {
+		elmV.innerHTML = '&' + codeA;
+	}
+
+	elmB.innerHTML = '&amp;' + codeA;
+	elmA.innerHTML = '&amp;' + codeB;
+	elmN.innerHTML = codeN;
+}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,253 @@
+tinyMCEPopup.requireLangPack();
+
+var detail = 50, strhex = "0123456789abcdef", i, isMouseDown = false, isMouseOver = false;
+
+var colors = [
+	"#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033",
+	"#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099",
+	"#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff",
+	"#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033",
+	"#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399",
+	"#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff",
+	"#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333",
+	"#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399",
+	"#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff",
+	"#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633",
+	"#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699",
+	"#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff",
+	"#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633",
+	"#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999",
+	"#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff",
+	"#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933",
+	"#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999",
+	"#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff",
+	"#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33",
+	"#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99",
+	"#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff",
+	"#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33",
+	"#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99",
+	"#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff",
+	"#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33",
+	"#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99",
+	"#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff"
+];
+
+var named = {
+	'#F0F8FF':'AliceBlue','#FAEBD7':'AntiqueWhite','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige',
+	'#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'BlanchedAlmond','#0000FF':'Blue','#8A2BE2':'BlueViolet','#A52A2A':'Brown',
+	'#DEB887':'BurlyWood','#5F9EA0':'CadetBlue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495ED':'CornflowerBlue',
+	'#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'DarkBlue','#008B8B':'DarkCyan','#B8860B':'DarkGoldenRod',
+	'#A9A9A9':'DarkGray','#A9A9A9':'DarkGrey','#006400':'DarkGreen','#BDB76B':'DarkKhaki','#8B008B':'DarkMagenta','#556B2F':'DarkOliveGreen',
+	'#FF8C00':'Darkorange','#9932CC':'DarkOrchid','#8B0000':'DarkRed','#E9967A':'DarkSalmon','#8FBC8F':'DarkSeaGreen','#483D8B':'DarkSlateBlue',
+	'#2F4F4F':'DarkSlateGray','#2F4F4F':'DarkSlateGrey','#00CED1':'DarkTurquoise','#9400D3':'DarkViolet','#FF1493':'DeepPink','#00BFFF':'DeepSkyBlue',
+	'#696969':'DimGray','#696969':'DimGrey','#1E90FF':'DodgerBlue','#B22222':'FireBrick','#FFFAF0':'FloralWhite','#228B22':'ForestGreen',
+	'#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'GhostWhite','#FFD700':'Gold','#DAA520':'GoldenRod','#808080':'Gray','#808080':'Grey',
+	'#008000':'Green','#ADFF2F':'GreenYellow','#F0FFF0':'HoneyDew','#FF69B4':'HotPink','#CD5C5C':'IndianRed','#4B0082':'Indigo','#FFFFF0':'Ivory',
+	'#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'LavenderBlush','#7CFC00':'LawnGreen','#FFFACD':'LemonChiffon','#ADD8E6':'LightBlue',
+	'#F08080':'LightCoral','#E0FFFF':'LightCyan','#FAFAD2':'LightGoldenRodYellow','#D3D3D3':'LightGray','#D3D3D3':'LightGrey','#90EE90':'LightGreen',
+	'#FFB6C1':'LightPink','#FFA07A':'LightSalmon','#20B2AA':'LightSeaGreen','#87CEFA':'LightSkyBlue','#778899':'LightSlateGray','#778899':'LightSlateGrey',
+	'#B0C4DE':'LightSteelBlue','#FFFFE0':'LightYellow','#00FF00':'Lime','#32CD32':'LimeGreen','#FAF0E6':'Linen','#FF00FF':'Magenta','#800000':'Maroon',
+	'#66CDAA':'MediumAquaMarine','#0000CD':'MediumBlue','#BA55D3':'MediumOrchid','#9370D8':'MediumPurple','#3CB371':'MediumSeaGreen','#7B68EE':'MediumSlateBlue',
+	'#00FA9A':'MediumSpringGreen','#48D1CC':'MediumTurquoise','#C71585':'MediumVioletRed','#191970':'MidnightBlue','#F5FFFA':'MintCream','#FFE4E1':'MistyRose','#FFE4B5':'Moccasin',
+	'#FFDEAD':'NavajoWhite','#000080':'Navy','#FDF5E6':'OldLace','#808000':'Olive','#6B8E23':'OliveDrab','#FFA500':'Orange','#FF4500':'OrangeRed','#DA70D6':'Orchid',
+	'#EEE8AA':'PaleGoldenRod','#98FB98':'PaleGreen','#AFEEEE':'PaleTurquoise','#D87093':'PaleVioletRed','#FFEFD5':'PapayaWhip','#FFDAB9':'PeachPuff',
+	'#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'PowderBlue','#800080':'Purple','#FF0000':'Red','#BC8F8F':'RosyBrown','#4169E1':'RoyalBlue',
+	'#8B4513':'SaddleBrown','#FA8072':'Salmon','#F4A460':'SandyBrown','#2E8B57':'SeaGreen','#FFF5EE':'SeaShell','#A0522D':'Sienna','#C0C0C0':'Silver',
+	'#87CEEB':'SkyBlue','#6A5ACD':'SlateBlue','#708090':'SlateGray','#708090':'SlateGrey','#FFFAFA':'Snow','#00FF7F':'SpringGreen',
+	'#4682B4':'SteelBlue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquoise','#EE82EE':'Violet',
+	'#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'WhiteSmoke','#FFFF00':'Yellow','#9ACD32':'YellowGreen'
+};
+
+function init() {
+	var inputColor = convertRGBToHex(tinyMCEPopup.getWindowArg('input_color'));
+
+	tinyMCEPopup.resizeToInnerSize();
+
+	generatePicker();
+
+	if (inputColor) {
+		changeFinalColor(inputColor);
+
+		col = convertHexToRGB(inputColor);
+
+		if (col)
+			updateLight(col.r, col.g, col.b);
+	}
+}
+
+function insertAction() {
+	var color = document.getElementById("color").value, f = tinyMCEPopup.getWindowArg('func');
+
+	tinyMCEPopup.restoreSelection();
+
+	if (f)
+		f(color);
+
+	tinyMCEPopup.close();
+}
+
+function showColor(color, name) {
+	if (name)
+		document.getElementById("colorname").innerHTML = name;
+
+	document.getElementById("preview").style.backgroundColor = color;
+	document.getElementById("color").value = color.toLowerCase();
+}
+
+function convertRGBToHex(col) {
+	var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
+
+	if (!col)
+		return col;
+
+	var rgb = col.replace(re, "$1,$2,$3").split(',');
+	if (rgb.length == 3) {
+		r = parseInt(rgb[0]).toString(16);
+		g = parseInt(rgb[1]).toString(16);
+		b = parseInt(rgb[2]).toString(16);
+
+		r = r.length == 1 ? '0' + r : r;
+		g = g.length == 1 ? '0' + g : g;
+		b = b.length == 1 ? '0' + b : b;
+
+		return "#" + r + g + b;
+	}
+
+	return col;
+}
+
+function convertHexToRGB(col) {
+	if (col.indexOf('#') != -1) {
+		col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
+
+		r = parseInt(col.substring(0, 2), 16);
+		g = parseInt(col.substring(2, 4), 16);
+		b = parseInt(col.substring(4, 6), 16);
+
+		return {r : r, g : g, b : b};
+	}
+
+	return null;
+}
+
+function generatePicker() {
+	var el = document.getElementById('light'), h = '', i;
+
+	for (i = 0; i < detail; i++){
+		h += '<div id="gs'+i+'" style="background-color:#000000; width:15px; height:3px; border-style:none; border-width:0px;"'
+		+ ' onclick="changeFinalColor(this.style.backgroundColor)"'
+		+ ' onmousedown="isMouseDown = true; return false;"'
+		+ ' onmouseup="isMouseDown = false;"'
+		+ ' onmousemove="if (isMouseDown && isMouseOver) changeFinalColor(this.style.backgroundColor); return false;"'
+		+ ' onmouseover="isMouseOver = true;"'
+		+ ' onmouseout="isMouseOver = false;"'
+		+ '></div>';
+	}
+
+	el.innerHTML = h;
+}
+
+function generateWebColors() {
+	var el = document.getElementById('webcolors'), h = '', i;
+
+	if (el.className == 'generated')
+		return;
+
+	h += '<table border="0" cellspacing="1" cellpadding="0">'
+		+ '<tr>';
+
+	for (i=0; i<colors.length; i++) {
+		h += '<td bgcolor="' + colors[i] + '" width="10" height="10">'
+			+ '<a href="javascript:insertAction();" onfocus="showColor(\'' + colors[i] +  '\');" onmouseover="showColor(\'' + colors[i] +  '\');" style="display:block;width:10px;height:10px;overflow:hidden;">'
+			+ '</a></td>';
+		if ((i+1) % 18 == 0)
+			h += '</tr><tr>';
+	}
+
+	h += '</table>';
+
+	el.innerHTML = h;
+	el.className = 'generated';
+}
+
+function generateNamedColors() {
+	var el = document.getElementById('namedcolors'), h = '', n, v, i = 0;
+
+	if (el.className == 'generated')
+		return;
+
+	for (n in named) {
+		v = named[n];
+		h += '<a href="javascript:insertAction();" onmouseover="showColor(\'' + n +  '\',\'' + v + '\');" style="background-color: ' + n + '"><!-- IE --></a>'
+	}
+
+	el.innerHTML = h;
+	el.className = 'generated';
+}
+
+function dechex(n) {
+	return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16);
+}
+
+function computeColor(e) {
+	var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB;
+
+	x = e.offsetX ? e.offsetX : (e.target ? e.clientX - e.target.x : 0);
+	y = e.offsetY ? e.offsetY : (e.target ? e.clientY - e.target.y : 0);
+
+	partWidth = document.getElementById('colors').width / 6;
+	partDetail = detail / 2;
+	imHeight = document.getElementById('colors').height;
+
+	r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255;
+	g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255	+ (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth);
+	b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth);
+
+	coef = (imHeight - y) / imHeight;
+	r = 128 + (r - 128) * coef;
+	g = 128 + (g - 128) * coef;
+	b = 128 + (b - 128) * coef;
+
+	changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b));
+	updateLight(r, g, b);
+}
+
+function updateLight(r, g, b) {
+	var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color;
+
+	for (i=0; i<detail; i++) {
+		if ((i>=0) && (i<partDetail)) {
+			finalCoef = i / partDetail;
+			finalR = dechex(255 - (255 - r) * finalCoef);
+			finalG = dechex(255 - (255 - g) * finalCoef);
+			finalB = dechex(255 - (255 - b) * finalCoef);
+		} else {
+			finalCoef = 2 - i / partDetail;
+			finalR = dechex(r * finalCoef);
+			finalG = dechex(g * finalCoef);
+			finalB = dechex(b * finalCoef);
+		}
+
+		color = finalR + finalG + finalB;
+
+		setCol('gs' + i, '#'+color);
+	}
+}
+
+function changeFinalColor(color) {
+	if (color.indexOf('#') == -1)
+		color = convertRGBToHex(color);
+
+	setCol('preview', color);
+	document.getElementById('color').value = color;
+}
+
+function setCol(e, c) {
+	try {
+		document.getElementById(e).style.backgroundColor = c;
+	} catch (ex) {
+		// Ignore IE warning
+	}
+}
+
+tinyMCEPopup.onInit.add(init);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,245 @@
+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() {
+		var f = document.forms[0], ed = tinyMCEPopup.editor;
+
+		// Setup browse button
+		document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');
+		if (isVisible('srcbrowser'))
+			document.getElementById('src').style.width = '180px';
+
+		e = ed.selection.getNode();
+
+		this.fillFileList('image_list', 'tinyMCEImageList');
+
+		if (e.nodeName == 'IMG') {
+			f.src.value = ed.dom.getAttrib(e, 'src');
+			f.alt.value = ed.dom.getAttrib(e, 'alt');
+			f.border.value = this.getAttrib(e, 'border');
+			f.vspace.value = this.getAttrib(e, 'vspace');
+			f.hspace.value = this.getAttrib(e, 'hspace');
+			f.width.value = ed.dom.getAttrib(e, 'width');
+			f.height.value = ed.dom.getAttrib(e, 'height');
+			f.insert.value = ed.getLang('update');
+			this.styleVal = ed.dom.getAttrib(e, 'style');
+			selectByValue(f, 'image_list', f.src.value);
+			selectByValue(f, 'align', this.getAttrib(e, 'align'));
+			this.updateStyle();
+		}
+	},
+
+	fillFileList : function(id, l) {
+		var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
+
+		l = window[l];
+
+		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'));
+	},
+
+	update : function() {
+		var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, args = {}, el;
+
+		tinyMCEPopup.restoreSelection();
+
+		if (f.src.value === '') {
+			if (ed.selection.getNode().nodeName == 'IMG') {
+				ed.dom.remove(ed.selection.getNode());
+				ed.execCommand('mceRepaint');
+			}
+
+			tinyMCEPopup.close();
+			return;
+		}
+
+		if (!ed.settings.inline_styles) {
+			args = tinymce.extend(args, {
+				vspace : nl.vspace.value,
+				hspace : nl.hspace.value,
+				border : nl.border.value,
+				align : getSelectValue(f, 'align')
+			});
+		} else
+			args.style = this.styleVal;
+
+		tinymce.extend(args, {
+			src : f.src.value,
+			alt : f.alt.value,
+			width : f.width.value,
+			height : f.height.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();
+	},
+
+	updateStyle : function() {
+		var dom = tinyMCEPopup.dom, st, v, f = document.forms[0];
+
+		if (tinyMCEPopup.editor.settings.inline_styles) {
+			st = tinyMCEPopup.dom.parseStyle(this.styleVal);
+
+			// Handle align
+			v = getSelectValue(f, 'align');
+			if (v) {
+				if (v == 'left' || v == 'right') {
+					st['float'] = v;
+					delete st['vertical-align'];
+				} else {
+					st['vertical-align'] = v;
+					delete st['float'];
+				}
+			} else {
+				delete st['float'];
+				delete st['vertical-align'];
+			}
+
+			// Handle border
+			v = f.border.value;
+			if (v || v == '0') {
+				if (v == '0')
+					st['border'] = '0';
+				else
+					st['border'] = v + 'px solid black';
+			} else
+				delete st['border'];
+
+			// Handle hspace
+			v = f.hspace.value;
+			if (v) {
+				delete st['margin'];
+				st['margin-left'] = v + 'px';
+				st['margin-right'] = v + 'px';
+			} else {
+				delete st['margin-left'];
+				delete st['margin-right'];
+			}
+
+			// Handle vspace
+			v = f.vspace.value;
+			if (v) {
+				delete st['margin'];
+				st['margin-top'] = v + 'px';
+				st['margin-bottom'] = v + 'px';
+			} else {
+				delete st['margin-top'];
+				delete st['margin-bottom'];
+			}
+
+			// Merge
+			st = tinyMCEPopup.dom.parseStyle(dom.serializeStyle(st));
+			this.styleVal = dom.serializeStyle(st);
+		}
+	},
+
+	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 '';
+	},
+
+	resetImageData : function() {
+		var f = document.forms[0];
+
+		f.width.value = f.height.value = "";	
+	},
+
+	updateImageData : function() {
+		var f = document.forms[0], t = ImageDialog;
+
+		if (f.width.value == "")
+			f.width.value = t.preloadImg.width;
+
+		if (f.height.value == "")
+			f.height.value = t.preloadImg.height;
+	},
+
+	getImageData : function() {
+		var f = document.forms[0];
+
+		this.preloadImg = new Image();
+		this.preloadImg.onload = this.updateImageData;
+		this.preloadImg.onerror = this.resetImageData;
+		this.preloadImg.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.src.value);
+	}
+};
+
+ImageDialog.preInit();
+tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,156 @@
+tinyMCEPopup.requireLangPack();
+
+var LinkDialog = {
+	preInit : function() {
+		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>');
+	},
+
+	init : function() {
+		var f = document.forms[0], ed = tinyMCEPopup.editor;
+
+		// Setup browse button
+		document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser', 'href', 'file', 'theme_advanced_link');
+		if (isVisible('hrefbrowser'))
+			document.getElementById('href').style.width = '180px';
+
+		this.fillClassList('class_list');
+		this.fillFileList('link_list', 'tinyMCELinkList');
+		this.fillTargetList('target_list');
+
+		if (e = ed.dom.getParent(ed.selection.getNode(), 'A')) {
+			f.href.value = ed.dom.getAttrib(e, 'href');
+			f.linktitle.value = ed.dom.getAttrib(e, 'title');
+			f.insert.value = ed.getLang('update');
+			selectByValue(f, 'link_list', f.href.value);
+			selectByValue(f, 'target_list', ed.dom.getAttrib(e, 'target'));
+			selectByValue(f, 'class_list', ed.dom.getAttrib(e, 'class'));
+		}
+	},
+
+	update : function() {
+		var f = document.forms[0], ed = tinyMCEPopup.editor, e, b;
+
+		tinyMCEPopup.restoreSelection();
+		e = ed.dom.getParent(ed.selection.getNode(), 'A');
+
+		// Remove element if there is no href
+		if (!f.href.value) {
+			if (e) {
+				tinyMCEPopup.execCommand("mceBeginUndoLevel");
+				b = ed.selection.getBookmark();
+				ed.dom.remove(e, 1);
+				ed.selection.moveToBookmark(b);
+				tinyMCEPopup.execCommand("mceEndUndoLevel");
+				tinyMCEPopup.close();
+				return;
+			}
+		}
+
+		tinyMCEPopup.execCommand("mceBeginUndoLevel");
+
+		// Create new anchor elements
+		if (e == null) {
+			ed.getDoc().execCommand("unlink", false, null);
+			tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1});
+
+			tinymce.each(ed.dom.select("a"), function(n) {
+				if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') {
+					e = n;
+
+					ed.dom.setAttribs(e, {
+						href : f.href.value,
+						title : f.linktitle.value,
+						target : f.target_list ? f.target_list.options[f.target_list.selectedIndex].value : null,
+						'class' : f.class_list ? f.class_list.options[f.class_list.selectedIndex].value : null
+					});
+				}
+			});
+		} else {
+			ed.dom.setAttribs(e, {
+				href : f.href.value,
+				title : f.linktitle.value,
+				target : f.target_list ? f.target_list.options[f.target_list.selectedIndex].value : null,
+				'class' : f.class_list ? f.class_list.options[f.class_list.selectedIndex].value : null
+			});
+		}
+
+		// Don't move caret if selection was image
+		if (e.childNodes.length != 1 || e.firstChild.nodeName != 'IMG') {
+			ed.focus();
+			ed.selection.select(e);
+			ed.selection.collapse(0);
+			tinyMCEPopup.storeSelection();
+		}
+
+		tinyMCEPopup.execCommand("mceEndUndoLevel");
+		tinyMCEPopup.close();
+	},
+
+	checkPrefix : function(n) {
+		if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_email')))
+			n.value = 'mailto:' + n.value;
+
+		if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_external')))
+			n.value = 'http://' + n.value;
+	},
+
+	fillFileList : function(id, l) {
+		var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
+
+		l = window[l];
+
+		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'));
+	},
+
+	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[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'));
+	},
+
+	fillTargetList : function(id) {
+		var dom = tinyMCEPopup.dom, lst = dom.get(id), v;
+
+		lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');
+		lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_same'), '_self');
+		lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_blank'), '_blank');
+
+		if (v = tinyMCEPopup.getParam('theme_advanced_link_targets')) {
+			tinymce.each(v.split(','), function(v) {
+				v = v.split('=');
+				lst.options[lst.options.length] = new Option(v[0], v[1]);
+			});
+		}
+	}
+};
+
+LinkDialog.preInit();
+tinyMCEPopup.onInit.add(LinkDialog.init, LinkDialog);
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,62 @@
+tinyMCEPopup.requireLangPack();
+tinyMCEPopup.onInit.add(onLoadInit);
+
+function saveContent() {
+	tinyMCEPopup.editor.setContent(document.getElementById('htmlSource').value, {source_view : true});
+	tinyMCEPopup.close();
+}
+
+function onLoadInit() {
+	tinyMCEPopup.resizeToInnerSize();
+
+	// Remove Gecko spellchecking
+	if (tinymce.isGecko)
+		document.body.spellcheck = tinyMCEPopup.editor.getParam("gecko_spellcheck");
+
+	document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent({source_view : true});
+
+	if (tinyMCEPopup.editor.getParam("theme_advanced_source_editor_wrap", true)) {
+		setWrap('soft');
+		document.getElementById('wraped').checked = true;
+	}
+
+	resizeInputs();
+}
+
+function setWrap(val) {
+	var v, n, s = document.getElementById('htmlSource');
+
+	s.wrap = val;
+
+	if (!tinymce.isIE) {
+		v = s.value;
+		n = s.cloneNode(false);
+		n.setAttribute("wrap", val);
+		s.parentNode.replaceChild(n, s);
+		n.value = v;
+	}
+}
+
+function toggleWordWrap(elm) {
+	if (elm.checked)
+		setWrap('soft');
+	else
+		setWrap('off');
+}
+
+var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
+
+function resizeInputs() {
+	var el = document.getElementById('htmlSource');
+
+	if (!tinymce.isIE) {
+		 wHeight = self.innerHeight - 65;
+		 wWidth = self.innerWidth - 16;
+	} else {
+		 wHeight = document.body.clientHeight - 70;
+		 wWidth = document.body.clientWidth - 16;
+	}
+
+	el.style.height = Math.abs(wHeight) + 'px';
+	el.style.width  = Math.abs(wWidth) + 'px';
+}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/ca_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/ca_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/ca_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/ca_dlg.js	2009-04-24 08:53:36.000000000 +0200
@@ -0,0 +1,51 @@
+tinyMCE.addI18n('ca.advanced_dlg',{
+about_title:"Quant a TinyMCE",
+about_general:"Quant a",
+about_help:"Ajuda",
+about_license:"Llic\u00E8ncia",
+about_plugins:"Extensions",
+about_plugin:"Extensi\u00F3",
+about_author:"Autor",
+about_version:"Versi\u00F3",
+about_loaded:"Extensions carregades",
+anchor_title:"Insereix/edita \u00E0ncora",
+anchor_name:"Nom de l'\u00E0ncora",
+code_title:"Editor de Font HTML",
+code_wordwrap:"Salt de paraula",
+colorpicker_title:"Selecciona un color",
+colorpicker_picker_tab:"Triador",
+colorpicker_picker_title:"Triador de color",
+colorpicker_palette_tab:"Paleta",
+colorpicker_palette_title:"Colors de la paleta",
+colorpicker_named_tab:"Amb nom",
+colorpicker_named_title:"Colors amb nom",
+colorpicker_color:"Color:",
+colorpicker_name:"Nom:",
+charmap_title:"Selecciona el car\u00E0cter personalitzat",
+image_title:"Insereix/edita imatge",
+image_src:"URL de la imatge",
+image_alt:"Descripci\u00F3 de la imatge",
+image_list:"Llista d'imatges",
+image_border:"Vora",
+image_dimensions:"Dimensions",
+image_vspace:"Espaiat vertical",
+image_hspace:"Espaiat horitzontal",
+image_align:"Alineaci\u00F3",
+image_align_baseline:"L\u00EDnia base",
+image_align_top:"Dalt",
+image_align_middle:"Mig",
+image_align_bottom:"Baix",
+image_align_texttop:"A dalt del text",
+image_align_textbottom:"A baix del text",
+image_align_left:"Esquerra",
+image_align_right:"Dreta",
+link_title:"Insereix/edita enlla\u00E7",
+link_url:"URL de l'enlla\u00E7",
+link_target:"Objectiu",
+link_target_same:"Obre l'enlla\u00E7 a la mateixa finestra",
+link_target_blank:"Obre l'enlla\u00E7 en una finestra nova",
+link_titlefield:"T\u00EDtol",
+link_is_email:"L'URL que has introdu\u00EFt sembla una adre\u00E7a de correu, vols afegir-hi el prefix mailto://?",
+link_is_external:"L'URL que has introdu\u00EFt sembla un enlla\u00E7 extern, vols afegir-hi el prefix http://?",
+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/themes/advanced/langs/ca.js 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/ca.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/ca.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/ca.js	2009-04-24 08:53:36.000000000 +0200
@@ -0,0 +1,62 @@
+tinyMCE.addI18n('ca.advanced',{
+style_select:"Estils",
+font_size:"Mida de lletra",
+fontdefault:"Tipografia",
+block:"Format",
+paragraph:"Par\u00E0graf",
+div:"Div",
+address:"Adre\u00E7a",
+pre:"Preformatat",
+h1:"Cap\u00E7alera 1",
+h2:"Cap\u00E7alera 2",
+h3:"Cap\u00E7alera 3",
+h4:"Cap\u00E7alera 4",
+h5:"Cap\u00E7alera 5",
+h6:"Cap\u00E7alera 6",
+blockquote:"Cita",
+code:"Codi",
+samp:"Mostra de codi",
+dt:"Terme de la definici\u00F3",
+dd:"Descripci\u00F3 de la definici\u00F3",
+bold_desc:"Negreta (Ctrl+B)",
+italic_desc:"Cursiva (Ctrl+I)",
+underline_desc:"Subratllat (Ctrl+U)",
+striketrough_desc:"Tatxat",
+justifyleft_desc:"Alinea a l'esquerra",
+justifycenter_desc:"Centra",
+justifyright_desc:"Alinea a la dreta",
+justifyfull_desc:"Justifica",
+bullist_desc:"Llista no ordenada",
+numlist_desc:"Llista ordenada",
+outdent_desc:"Redueix el sagnat",
+indent_desc:"Augmenta el sagnat",
+undo_desc:"Desf\u00E9s (Ctrl+Z)",
+redo_desc:"Ref\u00E9s (Ctrl+Y)",
+link_desc:"Insereix/edita enlla\u00E7",
+unlink_desc:"Desenlla\u00E7a",
+image_desc:"Insereix/edita imatge",
+cleanup_desc:"Neteja el codi no correcte",
+code_desc:"Edita la font HTML",
+sub_desc:"Sub\u00EDndex",
+sup_desc:"Super\u00EDndex",
+hr_desc:"Insereix regle horitzontal",
+removeformat_desc:"Elimina el format",
+custom1_desc:"Aqu\u00ED la teva descripci\u00F3 personalitzada",
+forecolor_desc:"Selecciona el color del text",
+backcolor_desc:"Selecciona el color de fons",
+charmap_desc:"Insereix car\u00E0cter personalitzat",
+visualaid_desc:"Canvia els elements guies/invisibles",
+anchor_desc:"Insereix/edita \u00E0ncora",
+cut_desc:"Retalla",
+copy_desc:"Copia",
+paste_desc:"Enganxa",
+image_props_desc:"Propietats de la imatge",
+newdocument_desc:"Nou document",
+help_desc:"Ajuda",
+blockquote_desc:"Descripci\u00F3 de la cita",
+clipboard_msg:"Copia/Retalla/Enganxa no est\u00E0 disponible en Mozilla/Firefox.\r\nVols m\u00E9s informaci\u00F3 sobre aquest tema?",
+path:"Cam\u00ED",
+newdocument:"Segur que vols esborrar tot el contingut?",
+toolbar_focus:"Salta als botons d'eines - Alt+Q, Salta a l'editor - Alt-Z, Salta al cam\u00ED de l'element - Alt-X",
+more_colors:"M\u00E9s colors"
+});
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,51 @@
+tinyMCE.addI18n('en.advanced_dlg',{
+about_title:"About TinyMCE",
+about_general:"About",
+about_help:"Help",
+about_license:"License",
+about_plugins:"Plugins",
+about_plugin:"Plugin",
+about_author:"Author",
+about_version:"Version",
+about_loaded:"Loaded plugins",
+anchor_title:"Insert/edit anchor",
+anchor_name:"Anchor name",
+code_title:"HTML Source Editor",
+code_wordwrap:"Word wrap",
+colorpicker_title:"Select a color",
+colorpicker_picker_tab:"Picker",
+colorpicker_picker_title:"Color picker",
+colorpicker_palette_tab:"Palette",
+colorpicker_palette_title:"Palette colors",
+colorpicker_named_tab:"Named",
+colorpicker_named_title:"Named colors",
+colorpicker_color:"Color:",
+colorpicker_name:"Name:",
+charmap_title:"Select custom character",
+image_title:"Insert/edit image",
+image_src:"Image URL",
+image_alt:"Image description",
+image_list:"Image list",
+image_border:"Border",
+image_dimensions:"Dimensions",
+image_vspace:"Vertical space",
+image_hspace:"Horizontal space",
+image_align:"Alignment",
+image_align_baseline:"Baseline",
+image_align_top:"Top",
+image_align_middle:"Middle",
+image_align_bottom:"Bottom",
+image_align_texttop:"Text top",
+image_align_textbottom:"Text bottom",
+image_align_left:"Left",
+image_align_right:"Right",
+link_title:"Insert/edit link",
+link_url:"Link URL",
+link_target:"Target",
+link_target_same:"Open link in the same window",
+link_target_blank:"Open link in a new window",
+link_titlefield:"Title",
+link_is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",
+link_is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",
+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/themes/advanced/langs/en.js 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js	2009-06-30 22:01:34.000000000 +0200
@@ -1,93 +1,62 @@
-// UK lang variables
-
-tinyMCE.addToLang('',{
-theme_style_select : '-- Styles --',
-theme_code_desc : 'Edit HTML Source',
-theme_code_title : 'HTML Source Editor',
-theme_code_wordwrap : 'Word wrap',
-theme_sub_desc : 'Subscript',
-theme_sup_desc : 'Superscript',
-theme_hr_desc : 'Insert horizontal ruler',
-theme_removeformat_desc : 'Remove formatting',
-theme_custom1_desc : 'Your custom description here',
-insert_image_border : 'Border',
-insert_image_dimensions : 'Dimensions',
-insert_image_vspace : 'Vertical space',
-insert_image_hspace : 'Horizontal space',
-insert_image_align : 'Alignment',
-insert_image_align_default : '-- Not set --',
-insert_image_align_baseline : 'Baseline',
-insert_image_align_top : 'Top',
-insert_image_align_middle : 'Middle',
-insert_image_align_bottom : 'Bottom',
-insert_image_align_texttop : 'TextTop',
-insert_image_align_absmiddle : 'Absolute Middle',
-insert_image_align_absbottom : 'Absolute Bottom',
-insert_image_align_left : 'Left',
-insert_image_align_right : 'Right',
-theme_font_size : '-- Font size --',
-theme_fontdefault : '-- Font family --',
-theme_block : '-- Format --',
-theme_paragraph : 'Paragraph',
-theme_div : 'Div',
-theme_address : 'Address',
-theme_pre : 'Preformatted',
-theme_h1 : 'Heading 1',
-theme_h2 : 'Heading 2',
-theme_h3 : 'Heading 3',
-theme_h4 : 'Heading 4',
-theme_h5 : 'Heading 5',
-theme_h6 : 'Heading 6',
-theme_blockquote : 'Blockquote',
-theme_code : 'Code',
-theme_samp : 'Code sample',
-theme_dt : 'Definition term ',
-theme_dd : 'Definition description',
-theme_colorpicker_title : 'Select a color',
-theme_colorpicker_apply : 'Apply',
-theme_forecolor_desc : 'Select text color',
-theme_backcolor_desc : 'Select background color',
-theme_charmap_title : 'Select custom character',
-theme_charmap_desc : 'Insert custom character',
-theme_visualaid_desc : 'Toggle guidelines/invisible elements',
-insert_anchor_title : 'Insert/edit anchor',
-insert_anchor_name : 'Anchor name',
-theme_anchor_desc : 'Insert/edit anchor',
-theme_insert_link_titlefield : 'Title',
-theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
-theme_path : 'Path',
-cut_desc : 'Cut',
-copy_desc : 'Copy',
-paste_desc : 'Paste',
-link_list : 'Link list',
-image_list : 'Image list',
-browse : 'Browse',
-image_props_desc : 'Image properties',
-newdocument_desc : 'New document',
-class_name : 'Class',
-newdocument : 'Are you sure you want clear all contents?',
-about_title : 'About TinyMCE',
-about : 'About',
-license : 'License',
-plugins : 'Plugins',
-plugin : 'Plugin',
-author : 'Author',
-version : 'Version',
-loaded_plugins : 'Loaded plugins',
-help : 'Help',
-not_set : '-- Not set --',
-close : 'Close',
-toolbar_focus : 'Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X',
-invalid_data : 'Error: Invalid values entered, these are marked in red.',
-more_colors : 'More colors',
-color_picker_tab : 'Picker',
-color_picker : 'Color picker',
-web_colors_tab : 'Palette',
-web_colors : 'Palette colors',
-named_colors_tab : 'Named',
-named_colors : 'Named colors',
-color : 'Color:',
-color_name : 'Name:',
-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?'
-});
+tinyMCE.addI18n('en.advanced',{
+style_select:"Styles",
+font_size:"Font size",
+fontdefault:"Font family",
+block:"Format",
+paragraph:"Paragraph",
+div:"Div",
+address:"Address",
+pre:"Preformatted",
+h1:"Heading 1",
+h2:"Heading 2",
+h3:"Heading 3",
+h4:"Heading 4",
+h5:"Heading 5",
+h6:"Heading 6",
+blockquote:"Blockquote",
+code:"Code",
+samp:"Code sample",
+dt:"Definition term ",
+dd:"Definition description",
+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",
+code_desc:"Edit HTML Source",
+sub_desc:"Subscript",
+sup_desc:"Superscript",
+hr_desc:"Insert horizontal ruler",
+removeformat_desc:"Remove formatting",
+custom1_desc:"Your custom description here",
+forecolor_desc:"Select text color",
+backcolor_desc:"Select background color",
+charmap_desc:"Insert custom character",
+visualaid_desc:"Toggle guidelines/invisible elements",
+anchor_desc:"Insert/edit anchor",
+cut_desc:"Cut",
+copy_desc:"Copy",
+paste_desc:"Paste",
+image_props_desc:"Image properties",
+newdocument_desc:"New document",
+help_desc:"Help",
+blockquote_desc:"Blockquote",
+clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\r\nDo you want more information about this issue?",
+path:"Path",
+newdocument:"Are you sure you want clear all contents?",
+toolbar_focus:"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",
+more_colors:"More colors"
+});
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/es_dlg.js 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/es_dlg.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/es_dlg.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/es_dlg.js	2009-06-22 05:25:10.000000000 +0200
@@ -0,0 +1,51 @@
+tinyMCE.addI18n('es.advanced_dlg',{
+about_title:"Acerca de TinyMCE",
+about_general:"Acerca de ",
+about_help:"Ayuda",
+about_license:"Licencia",
+about_plugins:"Complementos",
+about_plugin:"Complemento",
+about_author:"Autor",
+about_version:"Versi\u00F3n",
+about_loaded:"Complementos cargados",
+anchor_title:"Insertar/editar ancla",
+anchor_name:"Nombre del ancla",
+code_title:"Editor del c\u00F3digo fuente HTML",
+code_wordwrap:"Ajustar al margen",
+colorpicker_title:"Seleccionar color",
+colorpicker_picker_tab:"Selector",
+colorpicker_picker_title:"Paleta de color",
+colorpicker_palette_tab:"Paleta",
+colorpicker_palette_title:"Paleta de colores",
+colorpicker_named_tab:"Nombrados",
+colorpicker_named_title:"Colores nombrados",
+colorpicker_color:"Color:",
+colorpicker_name:"Nombre:",
+charmap_title:"Seleccionar caracter personalizado",
+image_title:"Insertar/editar imagen",
+image_src:"URL de la Imagen",
+image_alt:"Descripci\u00F3n de la Imagen",
+image_list:"Lista de la Imagen",
+image_border:"Borde",
+image_dimensions:"Dimensi\u00F3n",
+image_vspace:"Espacio vertical",
+image_hspace:"Espacio horizontal",
+image_align:"Alineaci\u00F3n",
+image_align_baseline:"L\u00EDnea base",
+image_align_top:"Arriba",
+image_align_middle:"Medio",
+image_align_bottom:"Debajo",
+image_align_texttop:"Texto arriba",
+image_align_textbottom:"Texto debajo",
+image_align_left:"Izquierda",
+image_align_right:"Derecha",
+link_title:"Insertar/editar hiperv\u00EDnculo",
+link_url:"URL del hiperv\u00EDnculo",
+link_target:"Destino",
+link_target_same:"Abrir v\u00EDnculo en la misma ventana",
+link_target_blank:"Abrir v\u00EDnculo en una ventana nueva",
+link_titlefield:"T\u00EDtulo",
+link_is_email:"La URL que introdujo parece ser una direcci\u00F3n de email,  \u00BFdesea agregar el prefijo mailto: necesario?",
+link_is_external:"La URL que introdujo parece ser un v\u00EDnculo externo,  \u00BFdesea agregar el prefijo http:// necesario?",
+link_list:"Lista de hiperv\u00EDnculos"
+});
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/es.js	2007-12-22 00:38:24.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/es.js	2009-06-22 05:25:10.000000000 +0200
@@ -1,115 +1,62 @@
-/**
- * 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('',{
-theme_style_select : '-- Estilos --',
-theme_code_desc : 'Editar c&oacute;digo HTML',
-theme_code_title : 'Editor c&oacute;digo HTML',
-theme_code_wordwrap : 'Ajuste de l&iacute;nea',
-theme_sub_desc : 'Sub&iacute;ndice',
-theme_sup_desc : 'Super&iacute;ndice',
-theme_hr_desc : 'Insertar una barra horizontal',
-theme_removeformat_desc : 'Quitar formato',
-theme_custom1_desc : 'Tu descripci&oacute;n aqu&iacute;',
-insert_image_border : 'Borde',
-insert_image_dimensions : 'Dimensiones',
-insert_image_vspace : 'Espacio vertical',
-insert_image_hspace : 'Espacio horizontal',
-insert_image_align : 'Alineaci&oacute;n',
-insert_image_align_default : '-- Por defecto --',
-insert_image_align_baseline : 'Linea base',
-insert_image_align_top : 'Arriba',
-insert_image_align_middle : 'Centrado',
-insert_image_align_bottom : 'Abajo',
-insert_image_align_texttop : 'Texto arriba',
-insert_image_align_absmiddle : 'Centrado total',
-insert_image_align_absbottom : 'Abajo total',
-insert_image_align_left : 'Izquierda',
-insert_image_align_right : 'Derecha',
-theme_font_size : '-- Tama&ntilde;o del texto --',
-theme_fontdefault : '-- Tipo de fuente --',
-theme_block : '-- Formato del texto --',
-theme_paragraph : 'P&aacute;rrafo',
-theme_div : 'Capa',
-theme_address : 'Direcci&oacute;n',
-theme_pre : 'Preformateado',
-theme_h1 : 'T&iacute;tulo 1',
-theme_h2 : 'T&iacute;tulo 2',
-theme_h3 : 'T&iacute;tulo 3',
-theme_h4 : 'T&iacute;tulo 4',
-theme_h5 : 'T&iacute;tulo 5',
-theme_h6 : 'T&iacute;tulo 6',
-theme_colorpicker_title : 'Selecciona un color',
-theme_colorpicker_apply : 'Aplicar',
-theme_forecolor_desc : 'Selecciona un color para el texto',
-theme_backcolor_desc : 'Selecciona un color de fondo',
-theme_charmap_title : 'Selecciona un car&aacute;cter especial',
-theme_charmap_desc : 'Inserta un car&aacute;cter especial',
-theme_charmap_all_title : 'Todos',
-theme_charmap_all_desc : 'Todos los caracteres',
-theme_charmap_alpha_title : 'Alfab&eacute;ticos',
-theme_charmap_alpha_desc : 'Caracteres alfab&eacute;ticos',
-theme_charmap_arrows_title : 'Flechas',
-theme_charmap_arrows_desc : 'Caracteres de flechas',
-theme_charmap_greek_title : 'Griegos',
-theme_charmap_greek_desc : 'Caracteres Griegos',
-theme_charmap_math_title : 'Mathem&aacute;ticos',
-theme_charmap_math_desc : 'Caracteres mathem&aacute;ticos',
-theme_charmap_misc_title : 'Miscel&aacute;neos',
-theme_charmap_misc_desc : 'Caracteres miscel&aacute;neos',
-theme_charmap_money_title : 'Monedas',
-theme_charmap_money_desc : 'Caracteres de monedas',
-theme_charmap_quotaion_title : 'Comillas',
-theme_charmap_quotaion_desc : 'Caracteres de comillas',
-theme_visualaid_desc : 'Cambiar las l&iacute;neas de ayuda por elementos invisibles',
-insert_anchor_title : 'Insertar/editar ancla',
-insert_anchor_name : 'Nombre del ancla',
-theme_anchor_desc : 'Insertar/editar ancla',
-theme_insert_link_titlefield : 'T&iacute;tulo',
-theme_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?',
-theme_path : 'Ruta',
-cut_desc : 'Cortar (Ctrl+X)',
-copy_desc : 'Copiar (Ctrl+C)',
-paste_desc : 'Pegar (Ctrl+V)',
-link_list : 'Lista de enlaces',
-image_list : 'Lista de im&aacute;genes',
-browse : 'Navegar',
-image_props_desc : 'Propiedades de la imagen',
-newdocument_desc : 'Nuevo documento',
-class_name : 'Clase',
-newdocument : '&#191;Est&aacute;s seguro de que quieres borrar todo el contenido?',
-about_title : 'Acerca de TinyMCE',
-about : 'Acerca',
-license : 'Licencia',
-plugins : 'Plugins',
-plugin : 'Plugin',
-author : 'Autor',
-version : 'Versi&oacute;n',
-loaded_plugins : 'Plugins cargados',
-help : 'Ayuda',
-not_set : '-- Por defecto --',
-close : 'Cerrar',
-toolbar_focus : 'Saltar a la barra de herramientas - Alt+Q, Saltar al editor - Alt+Z, Saltar al elemento de la ruta - Alt+X',
-invalid_data : 'Error: Invalid values entered, these are marked in red.',
-more_colors : 'Mas colores',
-color_picker_tab : 'Picker',
-color_picker : 'Color picker',
-web_colors_tab : 'Paleta',
-web_colors : 'Palette colors',
-named_colors_tab : 'Nombrar',
-named_colors : 'Nombrar colores',
-color : 'Color:',
-color_name : 'Nombre:',
-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?'
-
-});
+tinyMCE.addI18n('es.advanced',{
+style_select:"Estilos",
+font_size:"Tama\u00F1o",
+fontdefault:"Fuente",
+block:"Formato",
+paragraph:"P\u00E1rrafo",
+div:"Div",
+address:"Direcci\u00F3n",
+pre:"Preformateado",
+h1:"Encabezado 1",
+h2:"Encabezado 2",
+h3:"Encabezado 3",
+h4:"Encabezado 4",
+h5:"Encabezado 5",
+h6:"Encabezado 6",
+blockquote:"Cita",
+code:"C\u00F3digo",
+samp:"Ejemplo de c\u00F3digo",
+dt:"T\u00E9rmino de definici\u00F3n",
+dd:"Descripci\u00F3n de definici\u00F3n",
+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:"Justificar",
+bullist_desc:"Lista desordenada",
+numlist_desc:"Lista ordenada",
+outdent_desc:"Reducir sangr\u00EDa",
+indent_desc:"Aumentar sangr\u00EDa",
+undo_desc:"Deshacer (Ctrl+Z)",
+redo_desc:"Rehacer (Ctrl+Y)",
+link_desc:"Insertar/editar hiperv\u00EDnculo",
+unlink_desc:"Quitar hiperv\u00EDnculo",
+image_desc:"Insertar/editar imagen",
+cleanup_desc:"Limpiar c\u00F3digo basura",
+code_desc:"Editar c\u00F3digo HTML",
+sub_desc:"Sub\u00EDndice",
+sup_desc:"Super\u00EDndice",
+hr_desc:"Insertar regla horizontal",
+removeformat_desc:"Limpiar formato",
+custom1_desc:"Su descripci\u00F3n personal aqu\u00ED",
+forecolor_desc:"Seleccionar color del texto",
+backcolor_desc:"Seleccionar color de fondo",
+charmap_desc:"Insertar caracteres personalizados",
+visualaid_desc:"Mostrar/ocultar l\u00EDnea de gu\u00EDa/elementos invisibles",
+anchor_desc:"Insertar/editar ancla",
+cut_desc:"Cortar",
+copy_desc:"Copiar",
+paste_desc:"Pegar",
+image_props_desc:"Propiedades de imagen",
+newdocument_desc:"Nuevo documento",
+help_desc:"Ayuda",
+blockquote_desc:"Cita",
+clipboard_msg:"Copiar/Cortar/Pegar no se encuentra disponible en Mozilla y Firefox.\n \u00BFDesea obtener m\u00E1s informaci\u00F3n acerca de este tema?",
+path:"Ruta",
+newdocument:" \u00BFEst\u00E1 seguro que desea limpiar todo el contenido?",
+toolbar_focus:"Ir a los botones de herramientas - Alt+Q, Ir al editor - Alt-Z, Ir a la ruta del elemento - Alt-X",
+more_colors:"M\u00E1s colores"
+});
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/link.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/link.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/link.htm	2007-05-08 22:57:54.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/link.htm	2009-06-30 22:01:34.000000000 +0200
@@ -1,18 +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_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/link.js"></script>
-	<base target="_self" />
+	<title>{#advanced_dlg.link_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/link.js"></script>
 </head>
-<body id="link" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
-<form onsubmit="insertLink();return false;" action="#">
+<body id="link" style="display: none">
+<form onsubmit="LinkDialog.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_link_title}</a></span></li>
+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.link_title}</a></span></li>
 		</ul>
 	</div>
 
@@ -21,79 +21,41 @@
 
 		<table border="0" cellpadding="4" cellspacing="0">
           <tr>
-            <td nowrap="nowrap"><label for="href">{$lang_insert_link_url}</label></td>
+            <td class="nowrap"><label for="href">{#advanced_dlg.link_url}</label></td>
             <td><table border="0" cellspacing="0" cellpadding="0"> 
 				  <tr> 
-					<td><input id="href" name="href" type="text" value="" style="width: 200px" onchange="checkPrefix(this);" /></td> 
+					<td><input id="href" name="href" type="text" class="mceFocus" value="" style="width: 200px" onchange="LinkDialog.checkPrefix(this);" /></td> 
 					<td id="hrefbrowsercontainer">&nbsp;</td>
 				  </tr> 
 				</table></td>
           </tr>
-		  <!-- Link list -->
-		  <script language="javascript">
-			if (typeof(tinyMCELinkList) != "undefined" && tinyMCELinkList.length > 0) {
-				var html = "";
-
-				html += '<tr><td><label for="link_list">{$lang_link_list}</label></td>';
-				html += '<td><select id="link_list" name="link_list" style="width: 200px" onchange="this.form.href.value=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></td></tr>';
-
-				document.write(html);
-			}
-		  </script>
-		  <!-- /Link list -->
-          <tr>
-            <td nowrap="nowrap"><label for="target">{$lang_insert_link_target}</label></td>
-            <td><select id="target" name="target" style="width: 200px">
-                <option value="_self">{$lang_insert_link_target_same}</option>
-                <option value="_blank">{$lang_insert_link_target_blank}</option>
-				<script language="javascript">
-					var html = "";
-					var targets = tinyMCE.getParam('theme_advanced_link_targets', '').split(';');
-
-					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="' + value + '">' + key + '</option>';
-					}
-
-					document.write(html);
-				</script>
-            </select></td>
-          </tr>
+		  <tr>
+			<td><label for="link_list">{#advanced_dlg.link_list}</label></td>
+			<td><select id="link_list" name="link_list" onchange="document.getElementById('href').value=this.options[this.selectedIndex].value;"></select></td>
+		  </tr>
+		<tr>
+			<td><label id="targetlistlabel" for="targetlist">{#advanced_dlg.link_target}</label></td>
+			<td><select id="target_list" name="target_list"></select></td>
+		</tr>
           <tr>
-            <td nowrap="nowrap"><label for="linktitle">{$lang_theme_insert_link_titlefield}</label></td>
-            <td><input id="linktitle" name="linktitle" type="text" value="" style="width: 200px"></td>
-          </tr>
-          <tr id="styleSelectRow">
-            <td><label for="styleSelect">{$lang_class_name}</label></td>
-            <td>
-			 <select id="styleSelect" name="styleSelect">
-                <option value="" selected>{$lang_theme_style_select}</option>
-             </select></td>
+            <td class="nowrap"><label for="linktitle">{#advanced_dlg.link_titlefield}</label></td>
+            <td><input id="linktitle" name="linktitle" type="text" value="" style="width: 200px" /></td>
           </tr>
+			<tr>
+				<td><label for="class_list">{#class_name}</label></td>
+				<td><select id="class_list" name="class_list"></select></td>
+			</tr>
         </table>
 		</div>
 	</div>
 
 	<div class="mceActionPanel">
 		<div style="float: left">
-			<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertLink();" />
+			<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/themes/advanced/skins/default/content.css 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,32 @@
+body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;}
+body {background:#FFF;}
+body.mceForceColors {background:#FFF; color:#000;}
+h1 {font-size: 2em}
+h2 {font-size: 1.5em}
+h3 {font-size: 1.17em}
+h4 {font-size: 1em}
+h5 {font-size: .83em}
+h6 {font-size: .75em}
+.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}
+a.mceItemAnchor {width:12px; line-height:6px; overflow:hidden; padding-left:12px; background:url(img/items.gif) no-repeat bottom left;}
+img.mceItemAnchor {width:12px; height:12px; background:url(img/items.gif) no-repeat;}
+img {border:0;}
+table {cursor:default}
+table td, table th {cursor:text}
+ins {border-bottom:1px solid green; text-decoration: none; color:green}
+del {color:red; text-decoration:line-through}
+cite {border-bottom:1px dashed blue}
+acronym {border-bottom:1px dotted #CCC; cursor:help}
+abbr, html\:abbr {border-bottom:1px dashed #CCC; cursor:help}
+
+/* IE */
+* html body {
+scrollbar-3dlight-color:#F0F0EE;
+scrollbar-arrow-color:#676662;
+scrollbar-base-color:#F0F0EE;
+scrollbar-darkshadow-color:#DDD;
+scrollbar-face-color:#E0E0DD;
+scrollbar-highlight-color:#F0F0EE;
+scrollbar-shadow-color:#F0F0EE;
+scrollbar-track-color:#F5F5F5;
+}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,116 @@
+/* Generic */
+body {
+font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
+scrollbar-3dlight-color:#F0F0EE;
+scrollbar-arrow-color:#676662;
+scrollbar-base-color:#F0F0EE;
+scrollbar-darkshadow-color:#DDDDDD;
+scrollbar-face-color:#E0E0DD;
+scrollbar-highlight-color:#F0F0EE;
+scrollbar-shadow-color:#F0F0EE;
+scrollbar-track-color:#F5F5F5;
+background:#F0F0EE;
+padding:0;
+margin:8px 8px 0 8px;
+}
+
+html {background:#F0F0EE;}
+td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
+textarea {resize:none;outline:none;}
+a:link, a:visited {color:black;}
+a:hover {color:#2B6FB6;}
+.nowrap {white-space: nowrap}
+
+/* Forms */
+fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}
+legend {color:#2B6FB6; font-weight:bold;}
+label.msg {display:none;}
+label.invalid {color:#EE0000; display:inline;}
+input.invalid {border:1px solid #EE0000;}
+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;}
+input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}
+input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}
+.input_noborder {border:0;}
+
+/* Buttons */
+#insert, #cancel, input.button, .updateButton {
+border:0; margin:0; padding:0;
+font-weight:bold;
+width:94px; height:26px;
+background:url(img/buttons.png) 0 -26px;
+cursor:pointer;
+padding-bottom:2px;
+}
+
+#insert {background:url(img/buttons.png) 0 -52px;}
+#cancel {background:url(img/buttons.png) 0 0;}
+
+/* Browse */
+a.pickcolor, a.browse {text-decoration:none}
+a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}
+.mceOldBoxModel a.browse span {width:22px; height:20px;}
+a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}
+a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}
+a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}
+.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
+a.pickcolor:hover span {background-color:#B2BBD0;}
+a.pickcolor:hover span.disabled {}
+
+/* Charmap */
+table.charmap {border:1px solid #AAA; text-align:center}
+td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}
+#charmap a {display:block; color:#000; text-decoration:none; border:0}
+#charmap a:hover {background:#CCC;color:#2B6FB6}
+#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}
+#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}
+
+/* Source */
+.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}
+.mceActionPanel {margin-top:5px;}
+
+/* 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;}
+
+/* Columns */
+.column {float:left;}
+.properties {width:100%;}
+.properties .column1 {}
+.properties .column2 {text-align:left;}
+
+/* Titles */
+h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}
+h3 {font-size:14px;}
+.title {font-size:12px; font-weight:bold; color:#2B6FB6;}
+
+/* Dialog specific */
+#link .panel_wrapper, #link div.current {height:125px;}
+#image .panel_wrapper, #image div.current {height:200px;}
+#plugintable thead {font-weight:bold; background:#DDD;}
+#plugintable, #about #plugintable td {border:1px solid #919B9C;}
+#plugintable {width:96%; margin-top:10px;}
+#pluginscontainer {height:290px; overflow:auto;}
+#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}
+#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
+#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
+#colorpicker #light div {overflow:hidden;}
+#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}
+#colorpicker .panel_wrapper div.current {height:175px;}
+#colorpicker #namedcolors {width:150px;}
+#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
+#colorpicker #colornamecontainer {margin-top:5px;}
+#colorpicker #picker_panel fieldset {margin:auto;width:325px;}
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,12 @@
+‰PNG
+
+
IHDR^NžÚQÇgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<OPLTEïîíäääðÏÅðïîôôóùùøñðïõõôíìë�!ññð´³²òÐÆæÆÀ[[[õÓÈøøö¦´^åÅ¾òòñ×××uˆôÑÇôóò¤³\ˆ
+ap”“’ìëéíÍÅùùùéèæêéçìëêèÉÂìÌÄ«'xxxøø÷ƒƒƒêÊÂçÇÁ÷÷ölllööõøøøHHHäãáóòòÝÛØêËÄâÂ»èÈÁâàÞ***ðððòñðìËÃkkkÜ»´úúúäÄ½çÈÁóóòóòñçÇ¿áÁºÞ¾¶éÊÃ444÷÷÷çæäàÞÛèçåJJJíìê×·¯äÄ»Ù¹±yyyzzzKKKõõõîÌÂß¿¸]]]„™ÞÜÙëêèÎÍËÜÚ×éÈ¿æåãäâàvvvãÃ¼ªº^†˜0}�#àÞÜõôóõôôöõõ999UUUBBB111ððï™©KôôôÛÙÖôóóYYYðîíåãá‘¢9ôôòññïèæä```÷öönnnŽ�DööôãããéééÇÆÅÀ¿½¡°YÅÄÃ>>>ÜÜÜÈÇÆêèçìÌÃrrr·¶µêÊÀMMMãáßéçåïðîòòðÓÓÓ¿¾¼ttt©¨§ððî™™—ìêéëéèæäâïíìýýýÌËÉgggáàÝìËÄ‹Š‰ÈÈÈõöõÜÚØö÷ö%%%ñðîåäáììêåäââàßçåãbq˜˜—êèæ……ƒîîì‘��ÁÁ¿îìëóóóæåâííë÷÷õïîîèçæêÈÀçåäöööîíìÍÍÍÃÃÁÉ1òòòÝÝÝïïïÌMÎó
+IDATxÚ´–û_WÆG2É„�PÌTâîf"‘
Y„I$	%Wˆæ.ÈUåZ©RWE@Áâµ^«m]ë­÷ë¶Ý["Ø¾çœ™É¤à§¿�o>™99ç9ÏsÎÌÀ¼TQQÑZ†kªhíþA`_Þ¾ƒiìË#ì;øçßGV+ÄÞ_û¹C¯3DÞ\µ¶#sö;ÖDû‚‚ÜÜ‚‚‚·ÐWzrá”‹�;·@½„ÒF²²�¿©'ñ†„‚ÜÔ 4ÞJó—ìÍHÓ�…2¹ÝÝäœ­îîMé8�ˆ?R-Ìë×‡°}�Ùw×f¥S_�Óà�UX\‘ÂáJâk	sàC<É"r˜•ö…õW¯d¥X ‡\”eŠ»ËÍºrõªåj·Ô…$¢–`6Ëö=õÅ·¥¸¸°}Ezz,YèLR‹-=€¼Eøù_(TxµGþ“À¾†\{³Y¯wëuz\�Å·®GVXhqëtz�»¶Ñƒäzw½b´°Øí¾"5�Â”}¶¾¡³Hü¨×uêÐ/–©ww*©.Ns·tvZˆŒ °¯ÖU!ª÷ˆ@è«:Å$‰âê¾*‰Î=ÅJêë««ª`Zß�–ì”½Û­Uî¦¦¦jÄHêWIIÒž,M¤óxÂ¢U
+‹ÞãAbi…Õ
+{½^çñ¡Ñç
»«	{dô^L¸ô€Œ8òj‰Ò¦¦>…½K¯wy¯î™˜QÕÐ +uã¤Òj9Çƒd
}{4a<
a¢u:OƒdŸgÎîs¹\a<¯Á£—{—r7¸è±ª´I	ó†¼D¬G+…öp«ú<¡�7Ý^È"ö¡�˜%†èÐºÀ&
+—Ê¸ñb�†�W�W ¯ÂÞƒu„«<
¡0ÚŒËUÕÑ‘ÚJ*ÅÓÑÑÑ§K�†:¼DF!O_ÊžøÃ8ìÂ³ªúú°½×%‘J€î×o¬¬�\ÈŒ²öæì?l3Ùf³ÂÞœ½Ý˜¥i÷Å×ð¡ššT«¦æ:îÛLÞÖÝHMæ‰&55÷Á¾hîí?|;€ë*Dævdˆ9Tˆd¶Œú¸qÒ¹‘œ“�S�Îï?N¼óî~‘¿cN¼C8üÁ�;Ù»÷¯[#«÷cÝ�; ~t6R“Ænß^Í·oŸ¼0I9×Ç~º[ZÜ^ïÅ¥ØÅŸN®;©�Ëc?‰•—wu•Ë!|]]‰¢¢òDàÃ=�[!	Á¡«(Eì“‹'/oPëc±˜ÏWFÓe%JÊ¡'�²Ê°–«�¢ßRn%ƒÐT34£Aób±KëØ~iÞjµÒ“H$ÊdJÊš¹ó>Ÿ¯Äç;ßÌqmE¡jqÄ¡œ�îtY9ü*)iæhqi0«¤l~é8¶o_\aººšÙŸ­	„•e'QD&~f�5«/}ƒ½ƒÛe>Ç6Ãr¤åYWÇˆýjÎy†forÌºŒóÔú”±Z»Æor	+|ÿzž`Ø›*Õ8 é>ÃÝÜ¿Yù›ùÊÎ&ØñÓgŸ—‰Ë{:š³úÛ®æP\³&©2LOO£‹92<<<B%5£0ÊŒZGG+UT2™diqƒM~k†­gÏZÑ÷ì(è
£ DSFF&guÛ_Í1™´&“‰mii©šCÒD‘0š¡5HcJþ{\£¢pS[ÇÈŒŒ4›LÜð0–OOO9«í²½€Ðžaë·nq\KPøòÄ,ƒaÚÀ%%”AtNŸ6œ„:·`8…½*x£
 ^Þ× Îœ�›fjPz882¥™âÛ$�ÓŒ-Á“jûÏ$½…ÖÇ²u
+ûä¦^ �R©6Tˆ{ª{ãÑÞ6;ÃBÙÇÕ©fö>ÄR¶E\%"×º/zgAÌâå��ßS)ìƒAíìQ`î^òÑ£GB8:C©/_jDLG13T�Œ8²|ô¡¨V�‚Ù¼Âþ�É½îf¢Z ‰Yv|¥Å9Ô©SÒD�æHæ4
+ÈÐ¬ãËSDþ(™Ô~íPØ�F¿
+

=žEÏD…ðCCQ”¤DÀ%¢!‡´-³
Íñ?µÚå¯†’ý¥Õœï¾[f#‘ëŸà D ‰ÜƒònÄ”ë‘H¤—J
>ŽÌ€1L0™>ÉŒl¿¸ÒÖvãF[$þßö8�ü‚6�òñx/Î	•)_Çãñ�’éÀ )Ÿ	bù�@<˜VEû¥ù»èQ‹LÍð<4>5õ˜ aùÙ”�ìƒD ök2ÉOM=3¥œEÝ0}6õt¢60¸Î/ß�_"µ—b±Õ»ßþi[ùöîj,†í/_‚×ÉüJÎ¶²2¯“ð:q®ÿx’0Ö>HÞÇ×Ž¶·Ž½€Ã	Â»ÀaÂû× ûðû˜Ã0<Ýh^ûØµk×�Ë`û÷ð2œ¼ðê³Ï^ep…Wy£óÂúåõpyý".£Ôj:Sö´ZM©�OPi–W‘·?�¼
+BÞþ½¿�¬VŠ÷?qª)ÚÖº°°3,,TØhx0[wïìïß¹{[ÁŽ¨J[o…v~>ÃäËàR(Á0	µ:?�Þ¤	õ‘àÀ(úÁ¿ÿShíï‡Êj²ü4¤ž®Òùo0O
*ª44¯¿_´ß=�ìq•–"?aàÎãsâ¼Ui8K-ïŸH•– ÝŽ–VÚÄÄîVl_»0û2°†D:,KKMªÒ8¦D¬ÒDÇ—îpnA´Ÿ8‡ª´
v‡�1ø2Î
NÖ2¬S¥rrÊé�öF¥b9ÎÓÊás²=ÅP•f iô�*M*’àöIUš´R¥Ñ);Ð° a¡ç&jÉµŸ8g4j�F#[I Œ!i¤a4Ti 1&)'ªÒPSË¦ª4X˜ÑÈ‰J<]¶ï˜‘Ti¬ºc•ZA›ÊBlªÒRÑP¥±‚ÀbY#wì=Ù^¥å”FãÄ¥Î0ò‚˜Yd[/#Ui"••0FÄâöÉŒ~€—«4�Jã4úy§˜$í‰UùmðARéJr"¬ÖïGb¼<'\@…=¼�ý6À¯¬8›�’«'	£�@¥RÅÞfK«ÒdûcèFáêËfLUi¼Ã±E•æS•æwØNÉU�Öï8&Û`o ~üLà*-0n®Ò´XµU•°ÉEïdû#èVùív‡-”…àívç¤Wi»Ýîß¢JsØmD
+µÛ¶�#J{Üü<@“Éo…ìEN�eØ…ÍUš1ödxü‚Â~²‡q8B²ÝÁ¶·%R	Ðm7¦[ã5KjbÀïJÙ9²ë›?n+ßìSb_­�]ÛÌ˜¢iÎõ'âk¸µ¶6Õª­mEÇ¼ÍTlÝ�ÔdžhR[û^†´íUÆ€W¹Úi[Ï6(D2[Fý_€¬l¬Ä0ù[’IEND®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/themes/advanced/skins/default/img/items.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1 @@
+GIF89a‘ÿÿÿÿÿÌÿÿÿ!ù,@„Œw&ËÛÚƒq‚¤ÔÕ|Æÿa 4’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/themes/advanced/skins/default/img/menu_arrow.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1 @@
+GIF89a€ÿÿÿ!ù,Œ�©Ëí£œÐìÍzòq(‘×‰¦êÊ*;
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1 @@
+GIF89a€ÿÿÿ!ù,Œ�©Ëí£œ´‚À…;ëø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/themes/advanced/skins/default/img/progress.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,9 @@
+GIF89a  ³ÿÿÿ³³³ûûûÖÖÖáááòòòººº���444ÄÄÄ———ýýýTTT!ÿNETSCAPE2.0!ù,  çÈI)K¬êÍ§JJ5�U¢RK”¡(¥&á05+/Émbp
z“Ã1;$1Cœ®I*	üHCh`Ao"3qT5º\Ñ8a¨ŽàBÁî´²dwxG=YgƒwHb†vA=’0V\œ\ˆ;¤¥œŸ;¥ª›H¨Š¢«¬�³˜0¶µt%‘Hs‰‹rY<H.�Å‰·–¾’b¿ZbÇOEg:˜GY].À=ÚAßOQœs†æê\bÃh.9ì=sgõžcŒóeâØ*�Ö†f7D!ù,rÈI«
+5ë‰ª³‰”bRH’hÈWž£*lkL&-)ê¡1-v˜mŽ)¨¤MËÅt¨\ÍÃá†ÂRd‹‰A«HÌ‘ ‡ëÍÀí‹oÆ‡°ý¨Þûãƒ„‚„…�‰ƒ†��‘’“Gz{!ù,rÈIg@5ë
rYÀMƒQ!(å(Ê(‡8¡˜°õÃœJ–KbØùr¸¡„3hK!›6ã3u`�&‡D‚AzfLÓZ*Ä	^`n¸F‹ÑOÔssyJ}T�N.aqXshC‘XJ!ù,iÈ	ÖY4ëÍËßCvœ‚ˆA€MçA©"ÐŒJŽjƒ–A'0TŽÀÐ*bÕJI¸I ZF¡PMMásbgÍqV$•›ö”â…¹vø!—ïû5	�‚
+?}‚‡	ˆ	„!ù,ep°ª½80å#^Ìq€áX
æ	Š[Õ(\-šÆí÷ŽS¬Â@ P‹Áâ0"† Šó¨«L´ªõ©íz¿…xLÕ�ÏŠ*Z�€½_÷�H¸ºõºŠDäeU
+ywZt	n!ù,€�ª½Øƒ¾A2ÌW…ÁE¦&j¤×ŠÀB–&àw~Š6«b8¦Áp`4r|Fó€óM�>ËÂ™Å»à,bLv|?ä4B¬v„ßÊ›¡PÀëuÄ9éÀ+Ü&	2x&		k†&Š	U]‚	vo
+Šo‘pŠraT&!ù,{È	¡¯²'œáe7ŒÔ¢\lÅ-)S7@”&»¹4”+`ÈyT�SL¢\:=‡¨”„J¯¨k”úì:Ã;žeÄˆ¡ 8ÊcÊA¡8OÆj@b/¡+:{	ty‚t#ˆ„‹‡|��-
+	mN	qK!ù,lÈI+8bûÌ áy ¶�hŠ*º‡ØZp=ÌÁÔ3ˆ`À“‰C�¨`B"‘pX	³9bP¬BÂ`Z=
+ªòš•8˜>u,S¶�t"Î¦O˜T\um|;
+ƒ8~*!ù,xÈI«ãÒá´A�]G’e„�AP�bš)µ°Á"!s‚èžÅá ¬Bƒ’IÁ�˜–ÀáÐœV†	5q((„X2=Œ,ÄIì»åÚÁn#&Œ©AøÞíVq5t
+sny\)_‡g†Ž|r�5!ù,g�©D+¸8ë[{Ú`&y_hžèI)ª(L"ï+gN­8èl5Äï"Üø‹LÀ¦A .‡è%@% œO@”8NgL+½¨ƒÃÉƒ–êp–us/jÈ©ÙjVjc7I!ù,\0¤t€½øž™Ë €p	²„£�h¶Qm6Tqmßx®ï(ƒ 6ƒã÷«�ƒ–ïç¸'Ðïsa@`‹š]-Ûlèz0€¹ ù_“g±‹iƒr‹!`¾!ù,sÈ	Ø¡X’”PÆ\|ÓÁ)ä¤pWÊ„ƒêQç¨Š‚ŒÀ’´G.çˆ}ˆ!*È1˜”p ®Øv;£T¹Ý©˜—2ÒàÌþXØ)Æ|f¤%9`}0PF�d�ƒ�~e�zGw)‹;
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,6 @@
+GIF89a,ZÕÿÿÿüüþ2Jb’¢²¶ÄÍ‘§´äéìãéìíñó¡³»©¹¿ãéë‘›œúûûÈÑÍÐÖÐððêôôïóóîòòíññìððëööòõõñôôðóóïòòîññíööóõõòûûùøøöööôýýüüüûúúùøø÷ñïßîíæëêãïîèìëåñðëðïêåâÚçäÝëèáæãÝéæàèåßóñîöôòþþþüüüúúúÿÿÿ!ù8,,Zÿ@da(�È¤rÉl:ŸÐ¨tJ­Z¯Ø¬)à°xL.›Ïè´zÍn»ßð¸|N¯Ïˆš~Ïïûÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž�Ž""6#–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¨7$°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÄ% ÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßÞ!!åæçèéêëìíîïðñòóôõö÷øùúøåÿ
+H° Áƒ*\È°¡Ã‡#JœHQ¢�0hÜÈ±£Ç� CŠI²¤É“(Sª\É²¥Ë—-
hÌ@³¦Í›8sêÜÉ³§ÏÿŸ@ƒ
+J´¨Ñ£H“5@SƒÓ§P£J�JµªÕ«X³jÝÊµ«×¯`ÃŠÖ€	Òª]Ë¶­Û·pãÊ�K·®Ý»xóêÝË·¯_¾ÒRL¸°áÃˆ+^Ì¸±ãÇ�#KžL¹²åË˜-Ø°�ƒçÏ C‹Mº´éÓ¨S«^Íºµë×°cËžÛÀà
+¸sëÞÍ»·ïßÀƒN¼¸ñãÈ“+_Î¼ùr¸-HŸN½ºõëØ³kßÎ½»÷ïàÃ‹O¾¼ùóå
XˆÀ¾½û÷ðãËŸO¿¾ýûøóëßÏ¿¿ÿÿàhà�&¨à‚JáD(á„Vhá…f¨á†vèÿá‡ †(âˆ$–hb‰ âŠ,¶èâ‹0Æ(ãŒ4Öhã�8æ¨ãŽ<öèã�>ä�Diä‘H&©ä’6 À“PF)å”TJiÇ•Xf©å–\vé%NV)æ˜V~iæ™h¦©æšk„Iæ›U²)çœtÖignÂ©'”wöéçŸ€b™çžzjè¡ˆ&À „¾©è£�FŠ&£�Ž)é¥˜f*¥•Æ©é§ †§�N)ê©¨FJj©Q¦êê«€®Êê“°Öj«œ²Îzë®¼z™+«½+l¿Îjì±È&«ì²Ì6ë,«Å>+í´ÔVkíµØ
+€Ã¶Üvëí·à†+î¸ä–kî¹è¦«ÿîºì¶ëî»ðº«À&Äkï½øæ«ï¾üöëo¹	Á¿lðÁ'|p
, ðÃG,ñÄ@ƒg¬ñÆwLw,òÈ$—|ï*„lòÊ,·ìò
+/¨ìòÌ4×1Ì2Û¬óÎ<ãËB9÷,ôÐD�›ÐE'­´Ò'ÈôÒPGÝrÓOKmõÕ«àBÕXwíuÂ*ÀÀõ×d—½oØc›­öÚí¢ÐBÚlÇ-÷¸/¼=÷Ýxç­÷Þë�|Ž7~nxÜ*Â}øâK?©8ã�íxä”[=yå˜+}yæœ½yç Ûüyè¤·<zé¨“|zê¬o¼zë°Küzì´'<K{í¸|{î¼ï»{ïÀÛû{ðÄ·;|ñÈ'¯üòÌ7ïüóÐG/ýôÔWoýõØg¯ýöÜwïý÷à‡/þøä—oþùÊ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/themes/advanced/skins/default/ui.css 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,214 @@
+/* Reset */
+.defaultSkin table, .defaultSkin tbody, .defaultSkin a, .defaultSkin img, .defaultSkin tr, .defaultSkin div, .defaultSkin td, .defaultSkin iframe, .defaultSkin span, .defaultSkin *, .defaultSkin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left}
+.defaultSkin a:hover, .defaultSkin a:link, .defaultSkin a:visited, .defaultSkin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000}
+.defaultSkin table td {vertical-align:middle}
+
+/* Containers */
+.defaultSkin table {background:#F0F0EE}
+.defaultSkin iframe {display:block; background:#FFF}
+.defaultSkin .mceToolbar {height:26px}
+.defaultSkin .mceLeft {text-align:left}
+.defaultSkin .mceRight {text-align:right}
+
+/* External */
+.defaultSkin .mceExternalToolbar {position:absolute; border:1px solid #CCC; border-bottom:0; display:none;}
+.defaultSkin .mceExternalToolbar td.mceToolbar {padding-right:13px;}
+.defaultSkin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0}
+
+/* Layout */
+.defaultSkin table.mceLayout {border:0; border-left:1px solid #CCC; border-right:1px solid #CCC}
+.defaultSkin table.mceLayout tr.mceFirst td {border-top:1px solid #CCC}
+.defaultSkin table.mceLayout tr.mceLast td {border-bottom:1px solid #CCC}
+.defaultSkin table.mceToolbar, .defaultSkin tr.mceFirst .mceToolbar tr td, .defaultSkin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0;}
+.defaultSkin td.mceToolbar {padding-top:1px; vertical-align:top}
+.defaultSkin .mceIframeContainer {border-top:1px solid #CCC; border-bottom:1px solid #CCC}
+.defaultSkin .mceStatusbar {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; display:block; height:20px}
+.defaultSkin .mceStatusbar div {float:left; margin:2px}
+.defaultSkin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize}
+.defaultSkin .mceStatusbar a:hover {text-decoration:underline}
+.defaultSkin table.mceToolbar {margin-left:3px}
+.defaultSkin span.mceIcon, .defaultSkin img.mceIcon {display:block; width:20px; height:20px}
+.defaultSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
+.defaultSkin td.mceCenter {text-align:center;}
+.defaultSkin td.mceCenter table {margin:0 auto; text-align:left;}
+.defaultSkin td.mceRight table {margin:0 0 0 auto;}
+
+/* Button */
+.defaultSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px; margin-right:1px}
+.defaultSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0}
+.defaultSkin a.mceButtonActive, .defaultSkin a.mceButtonSelected {border:1px solid #0A246A; background-color:#C2CBE0}
+.defaultSkin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+.defaultSkin .mceButtonLabeled {width:auto}
+.defaultSkin .mceButtonLabeled span.mceIcon {float:left}
+.defaultSkin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica}
+.defaultSkin .mceButtonDisabled .mceButtonLabel {color:#888}
+
+/* Separator */
+.defaultSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:2px 2px 0 4px}
+
+/* ListBox */
+.defaultSkin .mceListBox {direction:ltr}
+.defaultSkin .mceListBox, .defaultSkin .mceListBox a {display:block}
+.defaultSkin .mceListBox .mceText {padding-left:4px; width:70px; text-align:left; border:1px solid #CCC; border-right:0; background:#FFF; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden}
+.defaultSkin .mceListBox .mceOpen {width:9px; height:20px; background:url(../../img/icons.gif) -741px 0; margin-right:2px; border:1px solid #CCC;}
+.defaultSkin table.mceListBoxEnabled:hover .mceText, .defaultSkin .mceListBoxHover .mceText, .defaultSkin .mceListBoxSelected .mceText {border:1px solid #A2ABC0; border-right:0; background:#FFF}
+.defaultSkin table.mceListBoxEnabled:hover .mceOpen, .defaultSkin .mceListBoxHover .mceOpen, .defaultSkin .mceListBoxSelected .mceOpen {background-color:#FFF; border:1px solid #A2ABC0}
+.defaultSkin .mceListBoxDisabled a.mceText {color:gray; background-color:transparent;}
+.defaultSkin .mceListBoxMenu {overflow:auto; overflow-x:hidden}
+.defaultSkin .mceOldBoxModel .mceListBox .mceText {height:22px}
+.defaultSkin .mceOldBoxModel .mceListBox .mceOpen {width:11px; height:22px;}
+.defaultSkin select.mceNativeListBox {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:7pt; background:#F0F0EE; border:1px solid gray; margin-right:2px;}
+
+/* SplitButton */
+.defaultSkin .mceSplitButton {width:32px; height:20px; direction:ltr}
+.defaultSkin .mceSplitButton a, .defaultSkin .mceSplitButton span {height:20px; display:block}
+.defaultSkin .mceSplitButton a.mceAction {width:20px; border:1px solid #F0F0EE; border-right:0;}
+.defaultSkin .mceSplitButton span.mceAction {width:20px; background:url(../../img/icons.gif) 20px 20px;}
+.defaultSkin .mceSplitButton a.mceOpen {width:9px; background:url(../../img/icons.gif) -741px 0; border:1px solid #F0F0EE;}
+.defaultSkin .mceSplitButton span.mceOpen {display:none}
+.defaultSkin table.mceSplitButtonEnabled:hover a.mceAction, .defaultSkin .mceSplitButtonHover a.mceAction, .defaultSkin .mceSplitButtonSelected a.mceAction {border:1px solid #0A246A; border-right:0; background-color:#B2BBD0}
+.defaultSkin table.mceSplitButtonEnabled:hover a.mceOpen, .defaultSkin .mceSplitButtonHover a.mceOpen, .defaultSkin .mceSplitButtonSelected a.mceOpen {background-color:#B2BBD0; border:1px solid #0A246A;}
+.defaultSkin .mceSplitButtonDisabled .mceAction, .defaultSkin .mceSplitButtonDisabled a.mceOpen {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+.defaultSkin .mceSplitButtonActive a.mceAction {border:1px solid #0A246A; background-color:#C2CBE0}
+.defaultSkin .mceSplitButtonActive a.mceOpen {border-left:0;}
+
+/* ColorSplitButton */
+.defaultSkin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray}
+.defaultSkin .mceColorSplitMenu td {padding:2px}
+.defaultSkin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080}
+.defaultSkin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px}
+.defaultSkin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF}
+.defaultSkin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2}
+.defaultSkin a.mceMoreColors:hover {border:1px solid #0A246A}
+.defaultSkin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a}
+.defaultSkin .mce_forecolor span.mceAction, .defaultSkin .mce_backcolor span.mceAction {overflow:hidden; height:16px}
+
+/* Menu */
+.defaultSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #D4D0C8}
+.defaultSkin .mceNoIcons span.mceIcon {width:0;}
+.defaultSkin .mceNoIcons a .mceText {padding-left:10px}
+.defaultSkin .mceMenu table {background:#FFF}
+.defaultSkin .mceMenu a, .defaultSkin .mceMenu span, .defaultSkin .mceMenu {display:block}
+.defaultSkin .mceMenu td {height:20px}
+.defaultSkin .mceMenu a {position:relative;padding:3px 0 4px 0}
+.defaultSkin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block}
+.defaultSkin .mceMenu span.mceText, .defaultSkin .mceMenu .mcePreview {font-size:11px}
+.defaultSkin .mceMenu pre.mceText {font-family:Monospace}
+.defaultSkin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;}
+.defaultSkin .mceMenu .mceMenuItemEnabled a:hover, .defaultSkin .mceMenu .mceMenuItemActive {background-color:#dbecf3}
+.defaultSkin td.mceMenuItemSeparator {background:#DDD; height:1px}
+.defaultSkin .mceMenuItemTitle a {border:0; background:#EEE; border-bottom:1px solid #DDD}
+.defaultSkin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px}
+.defaultSkin .mceMenuItemDisabled .mceText {color:#888}
+.defaultSkin .mceMenuItemSelected .mceIcon {background:url(img/menu_check.gif)}
+.defaultSkin .mceNoIcons .mceMenuItemSelected a {background:url(img/menu_arrow.gif) no-repeat -6px center}
+.defaultSkin .mceMenu span.mceMenuLine {display:none}
+.defaultSkin .mceMenuItemSub a {background:url(img/menu_arrow.gif) no-repeat top right;}
+
+/* Progress,Resize */
+.defaultSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50); background:#FFF}
+.defaultSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
+.defaultSkin .mcePlaceHolder {border:1px dotted gray}
+
+/* Formats */
+.defaultSkin .mce_formatPreview a {font-size:10px}
+.defaultSkin .mce_p span.mceText {}
+.defaultSkin .mce_address span.mceText {font-style:italic}
+.defaultSkin .mce_pre span.mceText {font-family:monospace}
+.defaultSkin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em}
+.defaultSkin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em}
+.defaultSkin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em}
+.defaultSkin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em}
+.defaultSkin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em}
+.defaultSkin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em}
+
+/* Theme */
+.defaultSkin span.mce_bold {background-position:0 0}
+.defaultSkin span.mce_italic {background-position:-60px 0}
+.defaultSkin span.mce_underline {background-position:-140px 0}
+.defaultSkin span.mce_strikethrough {background-position:-120px 0}
+.defaultSkin span.mce_undo {background-position:-160px 0}
+.defaultSkin span.mce_redo {background-position:-100px 0}
+.defaultSkin span.mce_cleanup {background-position:-40px 0}
+.defaultSkin span.mce_bullist {background-position:-20px 0}
+.defaultSkin span.mce_numlist {background-position:-80px 0}
+.defaultSkin span.mce_justifyleft {background-position:-460px 0}
+.defaultSkin span.mce_justifyright {background-position:-480px 0}
+.defaultSkin span.mce_justifycenter {background-position:-420px 0}
+.defaultSkin span.mce_justifyfull {background-position:-440px 0}
+.defaultSkin span.mce_anchor {background-position:-200px 0}
+.defaultSkin span.mce_indent {background-position:-400px 0}
+.defaultSkin span.mce_outdent {background-position:-540px 0}
+.defaultSkin span.mce_link {background-position:-500px 0}
+.defaultSkin span.mce_unlink {background-position:-640px 0}
+.defaultSkin span.mce_sub {background-position:-600px 0}
+.defaultSkin span.mce_sup {background-position:-620px 0}
+.defaultSkin span.mce_removeformat {background-position:-580px 0}
+.defaultSkin span.mce_newdocument {background-position:-520px 0}
+.defaultSkin span.mce_image {background-position:-380px 0}
+.defaultSkin span.mce_help {background-position:-340px 0}
+.defaultSkin span.mce_code {background-position:-260px 0}
+.defaultSkin span.mce_hr {background-position:-360px 0}
+.defaultSkin span.mce_visualaid {background-position:-660px 0}
+.defaultSkin span.mce_charmap {background-position:-240px 0}
+.defaultSkin span.mce_paste {background-position:-560px 0}
+.defaultSkin span.mce_copy {background-position:-700px 0}
+.defaultSkin span.mce_cut {background-position:-680px 0}
+.defaultSkin span.mce_blockquote {background-position:-220px 0}
+.defaultSkin .mce_forecolor span.mceAction {background-position:-720px 0}
+.defaultSkin .mce_backcolor span.mceAction {background-position:-760px 0}
+.defaultSkin span.mce_forecolorpicker {background-position:-720px 0}
+.defaultSkin span.mce_backcolorpicker {background-position:-760px 0}
+
+/* Plugins */
+.defaultSkin span.mce_advhr {background-position:-0px -20px}
+.defaultSkin span.mce_ltr {background-position:-20px -20px}
+.defaultSkin span.mce_rtl {background-position:-40px -20px}
+.defaultSkin span.mce_emotions {background-position:-60px -20px}
+.defaultSkin span.mce_fullpage {background-position:-80px -20px}
+.defaultSkin span.mce_fullscreen {background-position:-100px -20px}
+.defaultSkin span.mce_iespell {background-position:-120px -20px}
+.defaultSkin span.mce_insertdate {background-position:-140px -20px}
+.defaultSkin span.mce_inserttime {background-position:-160px -20px}
+.defaultSkin span.mce_absolute {background-position:-180px -20px}
+.defaultSkin span.mce_backward {background-position:-200px -20px}
+.defaultSkin span.mce_forward {background-position:-220px -20px}
+.defaultSkin span.mce_insert_layer {background-position:-240px -20px}
+.defaultSkin span.mce_insertlayer {background-position:-260px -20px}
+.defaultSkin span.mce_movebackward {background-position:-280px -20px}
+.defaultSkin span.mce_moveforward {background-position:-300px -20px}
+.defaultSkin span.mce_media {background-position:-320px -20px}
+.defaultSkin span.mce_nonbreaking {background-position:-340px -20px}
+.defaultSkin span.mce_pastetext {background-position:-360px -20px}
+.defaultSkin span.mce_pasteword {background-position:-380px -20px}
+.defaultSkin span.mce_selectall {background-position:-400px -20px}
+.defaultSkin span.mce_preview {background-position:-420px -20px}
+.defaultSkin span.mce_print {background-position:-440px -20px}
+.defaultSkin span.mce_cancel {background-position:-460px -20px}
+.defaultSkin span.mce_save {background-position:-480px -20px}
+.defaultSkin span.mce_replace {background-position:-500px -20px}
+.defaultSkin span.mce_search {background-position:-520px -20px}
+.defaultSkin span.mce_styleprops {background-position:-560px -20px}
+.defaultSkin span.mce_table {background-position:-580px -20px}
+.defaultSkin span.mce_cell_props {background-position:-600px -20px}
+.defaultSkin span.mce_delete_table {background-position:-620px -20px}
+.defaultSkin span.mce_delete_col {background-position:-640px -20px}
+.defaultSkin span.mce_delete_row {background-position:-660px -20px}
+.defaultSkin span.mce_col_after {background-position:-680px -20px}
+.defaultSkin span.mce_col_before {background-position:-700px -20px}
+.defaultSkin span.mce_row_after {background-position:-720px -20px}
+.defaultSkin span.mce_row_before {background-position:-740px -20px}
+.defaultSkin span.mce_merge_cells {background-position:-760px -20px}
+.defaultSkin span.mce_table_props {background-position:-980px -20px}
+.defaultSkin span.mce_row_props {background-position:-780px -20px}
+.defaultSkin span.mce_split_cells {background-position:-800px -20px}
+.defaultSkin span.mce_template {background-position:-820px -20px}
+.defaultSkin span.mce_visualchars {background-position:-840px -20px}
+.defaultSkin span.mce_abbr {background-position:-860px -20px}
+.defaultSkin span.mce_acronym {background-position:-880px -20px}
+.defaultSkin span.mce_attribs {background-position:-900px -20px}
+.defaultSkin span.mce_cite {background-position:-920px -20px}
+.defaultSkin span.mce_del {background-position:-940px -20px}
+.defaultSkin span.mce_ins {background-position:-960px -20px}
+.defaultSkin span.mce_pagebreak {background-position:0 -40px}
+.defaultSkin .mce_spellchecker span.mceAction {background-position:-540px -20px}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,32 @@
+body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;}
+body {background:#FFF;}
+body.mceForceColors {background:#FFF; color:#000;}
+h1 {font-size: 2em}
+h2 {font-size: 1.5em}
+h3 {font-size: 1.17em}
+h4 {font-size: 1em}
+h5 {font-size: .83em}
+h6 {font-size: .75em}
+.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}
+a.mceItemAnchor {width:12px; line-height:6px; overflow:hidden; padding-left:12px; background:url(../default/img/items.gif) no-repeat bottom left;}
+img.mceItemAnchor {width:12px; height:12px; background:url(../default/img/items.gif) no-repeat;}
+img {border:0;}
+table {cursor:default}
+table td, table th {cursor:text}
+ins {border-bottom:1px solid green; text-decoration: none; color:green}
+del {color:red; text-decoration:line-through}
+cite {border-bottom:1px dashed blue}
+acronym {border-bottom:1px dotted #CCC; cursor:help}
+abbr, html\:abbr {border-bottom:1px dashed #CCC; cursor:help}
+
+/* IE */
+* html body {
+scrollbar-3dlight-color:#F0F0EE;
+scrollbar-arrow-color:#676662;
+scrollbar-base-color:#F0F0EE;
+scrollbar-darkshadow-color:#DDD;
+scrollbar-face-color:#E0E0DD;
+scrollbar-highlight-color:#F0F0EE;
+scrollbar-shadow-color:#F0F0EE;
+scrollbar-track-color:#F5F5F5;
+}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,115 @@
+/* Generic */
+body {
+font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
+scrollbar-3dlight-color:#F0F0EE;
+scrollbar-arrow-color:#676662;
+scrollbar-base-color:#F0F0EE;
+scrollbar-darkshadow-color:#DDDDDD;
+scrollbar-face-color:#E0E0DD;
+scrollbar-highlight-color:#F0F0EE;
+scrollbar-shadow-color:#F0F0EE;
+scrollbar-track-color:#F5F5F5;
+background:#F0F0EE;
+padding:0;
+margin:8px 8px 0 8px;
+}
+
+html {background:#F0F0EE;}
+td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
+textarea {resize:none;outline:none;}
+a:link, a:visited {color:black;}
+a:hover {color:#2B6FB6;}
+.nowrap {white-space: nowrap}
+
+/* Forms */
+fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}
+legend {color:#2B6FB6; font-weight:bold;}
+label.msg {display:none;}
+label.invalid {color:#EE0000; display:inline;}
+input.invalid {border:1px solid #EE0000;}
+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;}
+input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}
+input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}
+.input_noborder {border:0;}
+
+/* Buttons */
+#insert, #cancel, input.button, .updateButton {
+border:0; margin:0; padding:0;
+font-weight:bold;
+width:94px; height:26px;
+background:url(../default/img/buttons.png) 0 -26px;
+cursor:pointer;
+padding-bottom:2px;
+}
+
+#insert {background:url(../default/img/buttons.png) 0 -52px;}
+#cancel {background:url(../default/img/buttons.png) 0 0;}
+
+/* Browse */
+a.pickcolor, a.browse {text-decoration:none}
+a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}
+.mceOldBoxModel a.browse span {width:22px; height:20px;}
+a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}
+a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}
+a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}
+.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
+a.pickcolor:hover span {background-color:#B2BBD0;}
+a.pickcolor:hover span.disabled {}
+
+/* Charmap */
+table.charmap {border:1px solid #AAA; text-align:center}
+td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}
+#charmap a {display:block; color:#000; text-decoration:none; border:0}
+#charmap a:hover {background:#CCC;color:#2B6FB6}
+#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}
+#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}
+
+/* Source */
+.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}
+.mceActionPanel {margin-top:5px;}
+
+/* Tabs classes */
+.tabs {width:100%; height:18px; line-height:normal; background:url(../default/img/tabs.gif) repeat-x 0 -72px;}
+.tabs ul {margin:0; padding:0; list-style:none;}
+.tabs li {float:left; background:url(../default/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(../default/img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}
+.tabs span {float:left; display:block; background:url(../default/img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}
+.tabs .current span {background:url(../default/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;}
+
+/* Columns */
+.column {float:left;}
+.properties {width:100%;}
+.properties .column1 {}
+.properties .column2 {text-align:left;}
+
+/* Titles */
+h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}
+h3 {font-size:14px;}
+.title {font-size:12px; font-weight:bold; color:#2B6FB6;}
+
+/* Dialog specific */
+#link .panel_wrapper, #link div.current {height:125px;}
+#image .panel_wrapper, #image div.current {height:200px;}
+#plugintable thead {font-weight:bold; background:#DDD;}
+#plugintable, #about #plugintable td {border:1px solid #919B9C;}
+#plugintable {width:96%; margin-top:10px;}
+#pluginscontainer {height:290px; overflow:auto;}
+#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}
+#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
+#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
+#colorpicker #light div {overflow:hidden;}
+#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}
+#colorpicker .panel_wrapper div.current {height:175px;}
+#colorpicker #namedcolors {width:150px;}
+#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
+#colorpicker #colornamecontainer {margin-top:5px;}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,15 @@
+‰PNG
+
+
IHDRXBÓØÉ	pHYsšœ
+OiCCPPhotoshop ICC profilexÚ�SgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*!	Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ,Š
+Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó�³ÏÀ–H3Q5€©BàƒÇÄÆáä.@�
+$p³d!sý#ø~<<+"À¾xÓÀM›À0‡ÿêB™\€„Àt‘8K€@zŽB¦@F€�˜&S `ËcbãP-`'æÓ€�ø™{[”! ‘ eˆDh;¬ÏVŠEX0fKÄ9Ø-0IWfH°·ÀÎ²0Qˆ…){`È##x„™FòW<ñ+®ç*x™²<¹$9E�[-qWW.(ÎI+6aaš@.Ây™2�4àóÌ ‘àƒóýxÎ®ÎÎ6Ž¶_-ê¿ÿ"bbãþåÏ«p@át~Ñþ,/³€;€mþ¢%îh^ u÷‹f²@µ éÚWópø~<<E¡�¹ÙÙåääØJÄB[aÊW}þgÂ_ÀWýlù~<ü÷õà¾â$�2]�GøàÂÌôL¥Ï’	„bÜæ�Gü·ÿüÓ"ÄIb¹X*ãQqŽDšŒó2¥"‰B’)Å%Òÿdâß,û>ß5°j>{‘-¨]cöK'XtÀâ÷ò»oÁÔ(€hƒáÏwÿï?ýG %€fI’q^D$.TÊ³?ÇD �*°AôÁ,ÀÁÜÁü`6„B$ÄÂBB
+d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼�	AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ÉˆQ"K‘5H1RŠT UHò=r9‡\Fº‘;È2‚ü†¼G1”�²Q=ÔµC¹¨7„F¢Ðdt1š� ›Ðr´=Œ6¡çÐ«hÚ�>CÇ0Àè3Äl0.ÆÃB±8,	“cË±"¬«Æ°V¬»‰õcÏ±w�EÀ	6wB aAHXLXNØH¨ $4Ú	7	„QÂ'"“¨K´&ºùÄb21‡XH,#Ö�/{ˆCÄ7$‰C2'¹�I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ä�äÃä3ää!ò[
+�b@q¤øSâ(RÊjJåå4åe˜2AU£šRÝ¨¡T5�ZB­¡¶R¯Q‡¨4uš9ÍƒIK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw
†ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê
+•J•&•*/T©ª¦ªÞªUóUËT�©^S}®FU3Sã©	Ô–«Uª�PëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k
«†u�5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN	ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§�¦½E»Yû�AÇJ'\'Gg�Î�çSÙSÝ§
+§M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õGX³$ÛÎ<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕF�FŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­�­%Ö»­»§§¹N“N«žÖgÃ°ñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ãî“½“}º}�ý=
‡Ù«Z~s´r:V:ÞšÎœî?}Åô–é/gXÏÏØ3ã¶Ë)Äi�S›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝÈ½äJtõq]ázÒõ�›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ?Ÿ•0kß¬~OCO�gµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿÑ§€%g‰�A�[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA�‚­‚åÁ­!hÈì�­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~'…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕX�XIlK9.*®6nl¾ßüíó‡â�âã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž
+yÂÂg"/Ñ6ÑˆØC\*NòH*Mz’ì‘¼5y$Å3¥,å¹„'©�¼L
LÝ›:žšv m2=:½1ƒ’‘�qBª!M“¶gêgæfvË¬e…²þÅn‹·/•Ék³�¬Y-
+¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+ÍíÌ³ÊÛ�7œïŸÿíÂá’¶¥†KW-Xæ½¬j9²<qyÛ
+ã+†V¬<¸Š¶*mÕO«íW—®~½&zMk�^ÁÊ‚ÁµkëU
+å…}ëÜ×í]OX/Yßµaú†�>‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n
ÙÚ´
ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒÝµa×ønÑî{¼ö4ìÕÛ[¼÷ý>É¾ÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TR�Ö+ëGÇ¾þ�ïw-
6
U�œÆâ#pDyäé÷	ß÷
:ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ4<YyJóTÉiÚé‚Ó“gòÏŒ�•�}~.ùÜ`Û¢¶{çcÎßjoïºtáÒEÿ‹ç;¼;Î\ò¸tò²ÛåW¸Wš¯:_mêtê<þ“ÓOÇ»œ»š®¹\k¹îz½µ{f÷éž7ÎÝô½yñÿÖÕž9=Ý½ózo÷Å÷õßÝ~r'ýÎË»Ùw'î­¼O¼_ô@íAÙCÝ‡Õ?[þÜØïÜjÀw óÑÜG÷…ƒÏþ‘õ�C�™�Ë†
†ëž8>99â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×ÎÑ˜Ñ¡—ò—“¿m|¥ýêÀë¯ÛÆÂÆ¾Éx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSÐ§û“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF³IDATxÚì[ÏkA~ö^�J±¯)4P…R"Æ³^½ˆXJÐ‚ø§ˆP5‡€í±ä"ŠfÅ´„jQ±ˆEVh1ô¦XëÌfÇCŠM&“dfw¾M6¼{˜ôÍ›÷¾~y3³q^½}/`•õ2UÖŸÿOÏ\ ;·ç�¨q_omkå›žwqå›kº{oAÈ5ºAÁ—¦g2À+qQù¦'Æ­Ô,›+DI¸^—Çu+qQùm¾y§í;5y¶­&U�0£˜‡Ì×4¶ì¯šï"&€-­ƒÌ×4¶ì¯šïŠ ˆ`[ë ó5�-û«æ3ƒÑæîÁÈ]±û#ó5�-û«æ3ƒñ11XX�s)s¾ío¥òk9êÄ—kRÕ˜"„{Z–·õ¯""A¥ò†TüF—µÍbëÇï]cÊ÷B=Í&�ÃZsüU¯BDD«^¥ëÚabëÄ×©Ñµu…í}u®Câ¬<YƒÅî_ëªìÇ°­u�ùšÆ–ýUóÏà~æ¨Ç`?&[Z™¯ilÙ_5Ÿg0÷`îÁÜƒöë÷Ÿ–ñÁ�Ÿßƒ¯_½bä/×¤ªÆàÝ��]ÇaÌó¼T¾ùGË�ÝIbŸÊJ+ËÒâ"ÇÌf³ßOlmCòÍ�•Í'�µO�žl8ýu’p±XtqÓŸæõ'BvnÖÌÿe¡e¨T•‰ˆhêš]6—p»å™Ë½}>?ù®§f}“lø”jÀØÑpP¾†'�(€£ÅVjr6¾ñü¶EÄA©*3ƒã`0÷`pæa§EnØÑ™Á~âì\|ÐÎ g7#2øçTûÝ@ì/õ`°RU&ÂªÉ o³fdp%Äþ¢î¢F��|»šÁG�(Í5Ê*ÍÙY_ªCTWaQ-hÕ©T•·É‰Öë¨xz£í3››œøòPŸÎWe>EX9Eø�ßE$—ÁƒtŠ`£ìÀHã^W2ƒmàà×™Á}bðî·äü÷``VªÊù½$× ¦çy#;‡·pëïFÊO¥*;¨ß*›þVX×P¿UF™«­ÒšZUW8müþ@t´FÖQjM,¬ª«c:
+8RÕ0Ó`[gÕ>œ Vˆ3˜Ì=˜[·nÃÊà#U9„êÛKQâLGõe[ÙäDµ@Îèì±ê;°-BÔDàÖl¢ú2ƒ‡ö‘$ó)‚<T=˜Ì-‚Œ©ÔÚ¶$)àDäæ5UZSË�ÖUÁsð¿p…ÖÞ«¬«—IEND®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/themes/advanced/skins/o2k7/img/button_bg.png 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,20 @@
+‰PNG
+
+
IHDRXBäáû	pHYsšœ
+OiCCPPhotoshop ICC profilexÚ�SgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*!	Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ,Š
+Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó�³ÏÀ–H3Q5€©BàƒÇÄÆáä.@�
+$p³d!sý#ø~<<+"À¾xÓÀM›À0‡ÿêB™\€„Àt‘8K€@zŽB¦@F€�˜&S `ËcbãP-`'æÓ€�ø™{[”! ‘ eˆDh;¬ÏVŠEX0fKÄ9Ø-0IWfH°·ÀÎ²0Qˆ…){`È##x„™FòW<ñ+®ç*x™²<¹$9E�[-qWW.(ÎI+6aaš@.Ây™2�4àóÌ ‘àƒóýxÎ®ÎÎ6Ž¶_-ê¿ÿ"bbãþåÏ«p@át~Ñþ,/³€;€mþ¢%îh^ u÷‹f²@µ éÚWópø~<<E¡�¹ÙÙåääØJÄB[aÊW}þgÂ_ÀWýlù~<ü÷õà¾â$�2]�GøàÂÌôL¥Ï’	„bÜæ�Gü·ÿüÓ"ÄIb¹X*ãQqŽDšŒó2¥"‰B’)Å%Òÿdâß,û>ß5°j>{‘-¨]cöK'XtÀâ÷ò»oÁÔ(€hƒáÏwÿï?ýG %€fI’q^D$.TÊ³?ÇD �*°AôÁ,ÀÁÜÁü`6„B$ÄÂBB
+d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼�	AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ÉˆQ"K‘5H1RŠT UHò=r9‡\Fº‘;È2‚ü†¼G1”�²Q=ÔµC¹¨7„F¢Ðdt1š� ›Ðr´=Œ6¡çÐ«hÚ�>CÇ0Àè3Äl0.ÆÃB±8,	“cË±"¬«Æ°V¬»‰õcÏ±w�EÀ	6wB aAHXLXNØH¨ $4Ú	7	„QÂ'"“¨K´&ºùÄb21‡XH,#Ö�/{ˆCÄ7$‰C2'¹�I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ä�äÃä3ää!ò[
+�b@q¤øSâ(RÊjJåå4åe˜2AU£šRÝ¨¡T5�ZB­¡¶R¯Q‡¨4uš9ÍƒIK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw
†ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê
+•J•&•*/T©ª¦ªÞªUóUËT�©^S}®FU3Sã©	Ô–«Uª�PëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k
«†u�5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN	ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§�¦½E»Yû�AÇJ'\'Gg�Î�çSÙSÝ§
+§M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õGX³$ÛÎ<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕF�FŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­�­%Ö»­»§§¹N“N«žÖgÃ°ñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ãî“½“}º}�ý=
‡Ù«Z~s´r:V:ÞšÎœî?}Åô–é/gXÏÏØ3ã¶Ë)Äi�S›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝÈ½äJtõq]ázÒõ�›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ?Ÿ•0kß¬~OCO�gµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿÑ§€%g‰�A�[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA�‚­‚åÁ­!hÈì�­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~'…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕX�XIlK9.*®6nl¾ßüíó‡â�âã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž
+yÂÂg"/Ñ6ÑˆØC\*NòH*Mz’ì‘¼5y$Å3¥,å¹„'©�¼L
LÝ›:žšv m2=:½1ƒ’‘�qBª!M“¶gêgæfvË¬e…²þÅn‹·/•Ék³�¬Y-
+¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+ÍíÌ³ÊÛ�7œïŸÿíÂá’¶¥†KW-Xæ½¬j9²<qyÛ
+ã+†V¬<¸Š¶*mÕO«íW—®~½&zMk�^ÁÊ‚ÁµkëU
+å…}ëÜ×í]OX/Yßµaú†�>‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n
ÙÚ´
ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒÝµa×ønÑî{¼ö4ìÕÛ[¼÷ý>É¾ÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TR�Ö+ëGÇ¾þ�ïw-
6
U�œÆâ#pDyäé÷	ß÷
:ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ4<YyJóTÉiÚé‚Ó“gòÏŒ�•�}~.ùÜ`Û¢¶{çcÎßjoïºtáÒEÿ‹ç;¼;Î\ò¸tò²ÛåW¸Wš¯:_mêtê<þ“ÓOÇ»œ»š®¹\k¹îz½µ{f÷éž7ÎÝô½yñÿÖÕž9=Ý½ózo÷Å÷õßÝ~r'ýÎË»Ùw'î­¼O¼_ô@íAÙCÝ‡Õ?[þÜØïÜjÀw óÑÜG÷…ƒÏþ‘õ�C�™�Ë†
†ëž8>99â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×ÎÑ˜Ñ¡—ò—“¿m|¥ýêÀë¯ÛÆÂÆ¾Éx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSÐ§û“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFPLTEÿÿÿÛÎ™ÊÜñ¯Äßƒ”Ãƒ“Ã„”Ä„”Ã›·à ¼ä•¯Õ »â–¯Ô¸ËçØäõàéöV}±Ÿ»âŸ»á ¼â »ÞÁÔî¾Ñê½Ðé¼ÏèÃÖïÂÕîÁÔí¾ÐéÁÓìÅ×ðÊÜõÐá÷ÍÝòÑàôÕãöÚçùÙæ÷×äõÝêûÜéúßëûÝéùãíûßéöèñýäíùãìøœ¹ÜŸ»Þ ¼ÞŸ»Ý´Éâ¾Ôî¾Óí½Ñê¾ÒêÉÝöÄ×ïÂÕíÈÛóÅØðËÞöÆÙðÅØïÍßöÍÞòÎßóÖåøÕä÷ÒáôÖäöÏÝîãïþâîýáíüáìúäïüËÞôÈÛñÇÚðËÞóÉÜñËÝòÊÛîÒâôÑáóÐßïÎÝíÍÜì×äóÚçõäðþßëøÈÛîÊÜïÑâôÕãñÞéôÈÛíÑáðÐàïÏßîêòùÿÿùÿÿûÿÿýÿüÕÿüÚÿúÅÿüÝÿüâÿþõÿùÌÿüåÿýíÿþ÷ÿõ·ÿøËþöÊÿüêþõÉþõÊýê�ýêžüé�ûé�ÿï§þõÐÿ÷ÔýõÓþùåÿûéýùèÿûëÿüïÿüðÿýôÿä€þäþãÿè–ýòÊÿöÓþõÓÿûìùé¶ûì»ûì¼üïÃûîÃýõÚÿøâÿùæþùèÿûîÿÐIÿÒMÿÑMÿÒNÿÑNÿÓVÿÕ`þÕdÿÖeÿÖfÿ×jÿÚvýß�ÿâ�ýá�ÿâ”ýá”ýâ”ÿä˜ÿåœþåŸþå ÿç¥ùä§úå¨ÿê²úè²ûê·úé¶ÿî»ÿî¿ÿïÁÿïÃÿðÇÿñÊüïÊÿòÏÿóÓüñÐÿôÖýóÕÿöÝÿ÷ßÿ÷áÿüóÿÙuÿÙxÿÚ|ÿÜ�ÿÜƒýÙƒþÚ„ýÚ„ÿß‹þß�ÿá”ÿè«ÿë¸ÿñÌÿôÙÿõÛÿûñÿÖyÿÕyýÔxÿÖzýÙ„ÿùëþÉuüÇtþÉvüÈuü»_ý¼`þÃhþÃjýÂiÿÎ‡þÍ†ÿÏˆû´Uû´Vü¶WüµWý»`ÿÔ˜ýØ¨ÿÚªÊ´—É´˜ÿÙ©úÛ¶ùÚµÊ´˜É³˜ìÓµëÓµúÚµÿÿÿ¿õ8DtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿS÷%æIDATxÚ”×\gÀñ®§-BZ}X¸]ÉIum³Xn®3A¢Òr\Á_c“æoœzY		�‚$�27J®`™2“(Õd�ªu•à¯ÕÁ™ž"àâ)�@´l\îò¤¹óº¯<É+¼y^w÷}±C§×ßªÏÕé²u¹ú\}®>[§Óér+++ë>úâ�½*ôí+Ò’¾Ýq‹‘¢ŽR÷[)Š¢(im êêêˆø¹»aøP)ø®©ûÄ·š†††Ûr*++÷dÀ÷Éƒá÷C¥à×Ô×××$_õ5âZoÈ©«¬ËÉ€¹�Áð RpqM}M}="ÂÒï@sêê*ÿüqþ #$‰ ‚�$‰�$‰ ‰à{ê”ŽâˆÜ0ü¨Ü„ y„$I„DHAHAH<«ÖfÛ•Dî“0ü&¨`AªIGŽ $‰ïj´ÕîÎ€ß%w†ßÃGÈjAD•ãž,›ÒŽß!w§6\ŒPƒÍÇqƒÅQŠâ8¾w—íXm&Œã8Oûã(***JÁŸº
Û‡a†a‡°×b‡°}û0Û›ekTØ1†aM€&{†i]XXXíØ€â¸Gq5 ¸Á`@qºw—­Ñ–yÆM ©  à.¶X,Ð‹Åb�nÇ
(Š¢8ŽæpE
(¾7«±öXV\ZZZZÚTZZZšvƒ�F£‘6�F£‚Mf“É¼ßd6•›÷›ËËMfSù~,ËÖh{eœ/÷j¦ `Ø”o2ç›Ìærs¹Ùd2å›Ì¦C»km¶Ìï—{#¿
+‚Í‡Íe‡ËÊÊÌÉWY™¹Û­x¹•ÉÞ\Uu¸ª*¹T_oÏ¡ŒTæ³â�rï…á7@A�Íj„D!«„$«ÅÛïž=¥¿N.mÇw@A;®°TTX**,–
+Ëí‹År»Å‚ï±­™¡wË¥íøCPÐŽ­”ÕJQGï§(+u”¢(«ÕJ™rŒJ;~½Ü{`øÃPÐh*....>P,¾—£9ŠGq§Ão…JÁAä	‚ ˆ¢„8HD	AX)Š¢2à·¥Ò¦z}®N¯ËÍÖé³õ¹¹·êuÙÙz�þEÅ²SAßîL+un·»ßýp¿Ûíîïw»¿îv÷»ûÝÊðg¾"Oé�Ÿ†JÁî~ãa¦·½—ée†a˜v†Q†›;“57§Á_”ƒà~ÆÓÎx<íž^¦—igÆãa<ø´Ô7aøÁ/È=˜‚n9~ü¸½Ån·Ûi{KÝb··´Ø•á©SRSiðçä ØÓ÷hß
=Ú×§wº¥:ÓàÏÊApo0ôH(
+ƒ�ƒÁ`(
+C!øq©nþ¼\3´ãP(
+…‚É5…B¡ 2Üñ˜Ô©4ø«rÜ76666v^\ÏKŸUàI©ohÃOz½¬×ëõzY/ëeY/Ëz½gX•£‡„ÃÏÀðT[€¶¶¶©üC–É3,ëõ²^/Ë²¬
+ÜÓ:¾Ã==4€îéééHÁVÖ¼¬W¤½*ðäøø8
èñññ4øÊôô4
èéééé+)ØÇžIñX–õªîøÒÄÄÄ=111ñ—4xfff†ž™™™™�àÑáá³g‡‡‡Ï?1,¥_¾ u)
þ�\:<œ?qV
¾ø3©I>õ;¹S)xŒ›ç¸ùyŽãþÊqÇqóœ2üì/¤~­
‡æææf#³ÑÙH4™›�D¢‘¹HD¾pQêŸþ½Üéùƒ¼$Wexü©ÇÓ.7Ÿt¹õ|¿?à÷�@Àðûü>¿__–ê‡áÎËuBpß¨Ø9q9wntttT~úR²+W`ø¹§äžƒFÓq»½…¶ÓöÚÞ"=–÷*Ã}YêÞ´[j'4¥‘—GˆåååD^ž2|0•ö0M$ÿI$þ›H$ÄO/$‰Ä/gJ+·ãzFÿ»~]P™Òò¹[ÞÞÜÜÚÞÜÜÞÜÚÞÞÞÞÞÜÜÜÚÚR�›™d'NhÃëëë×Ö××¯m\Û¸¶¾±±¾¾±±¡Mê1møßJ©ÀSß’šÔ†×V×ÖV×Öþ±º*~X]][[U�;åAþ]mx‘çy~ñ*Ïó‹<Ïÿ�çyžçÕào'ûÎ¯´áx\AˆÿS„ç!âBüy•ÑôS©_Þ�B\„xêG>/õsm8	Š‹ Äã‚ ÄUàÎ�OjÃËKËKKËKËKËÉþµ¼´¬¶ã�@ß[Y‰ÅVb�Åb±••ØJ,¶²SùãMÒ€ôiÃWyžçyq]\äyþ*Uíª¸4444D


ýHçÜÇqÜ<7Ï-Ìs§_þžÔ¨6�‹D#s‘ÙHdv6�D¢³ÑhT¾ø}©§´á‘´Ä‰7¢?û©?iÃ�€?à|âÌóû}¿? _ø­ÔO´aW«Ëéhu¸\.§Ãálu8]®V‡Êå6.�ù?kÃN—Ãår9�.‡Óépº\N—ÓáTÙqø�Rá›€N§ÓÙêr9œ.G«Ëåt:Tá§“}tbB¾ådWwW×É®®®“Ý'»»»»»»ººTà‡¾$u¯6LDI	AäD‰øo4‘G”/gJ+÷Òâ6rÍæ>wIEND®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/themes/advanced/skins/o2k7/img/button_bg_silver.png 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,28 @@
+‰PNG
+
+
IHDRXBÓØÉ	pHYsšœ
+OiCCPPhotoshop ICC profilexÚ�SgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*!	Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ,Š
+Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó�³ÏÀ–H3Q5€©BàƒÇÄÆáä.@�
+$p³d!sý#ø~<<+"À¾xÓÀM›À0‡ÿêB™\€„Àt‘8K€@zŽB¦@F€�˜&S `ËcbãP-`'æÓ€�ø™{[”! ‘ eˆDh;¬ÏVŠEX0fKÄ9Ø-0IWfH°·ÀÎ²0Qˆ…){`È##x„™FòW<ñ+®ç*x™²<¹$9E�[-qWW.(ÎI+6aaš@.Ây™2�4àóÌ ‘àƒóýxÎ®ÎÎ6Ž¶_-ê¿ÿ"bbãþåÏ«p@át~Ñþ,/³€;€mþ¢%îh^ u÷‹f²@µ éÚWópø~<<E¡�¹ÙÙåääØJÄB[aÊW}þgÂ_ÀWýlù~<ü÷õà¾â$�2]�GøàÂÌôL¥Ï’	„bÜæ�Gü·ÿüÓ"ÄIb¹X*ãQqŽDšŒó2¥"‰B’)Å%Òÿdâß,û>ß5°j>{‘-¨]cöK'XtÀâ÷ò»oÁÔ(€hƒáÏwÿï?ýG %€fI’q^D$.TÊ³?ÇD �*°AôÁ,ÀÁÜÁü`6„B$ÄÂBB
+d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼�	AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ÉˆQ"K‘5H1RŠT UHò=r9‡\Fº‘;È2‚ü†¼G1”�²Q=ÔµC¹¨7„F¢Ðdt1š� ›Ðr´=Œ6¡çÐ«hÚ�>CÇ0Àè3Äl0.ÆÃB±8,	“cË±"¬«Æ°V¬»‰õcÏ±w�EÀ	6wB aAHXLXNØH¨ $4Ú	7	„QÂ'"“¨K´&ºùÄb21‡XH,#Ö�/{ˆCÄ7$‰C2'¹�I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ä�äÃä3ää!ò[
+�b@q¤øSâ(RÊjJåå4åe˜2AU£šRÝ¨¡T5�ZB­¡¶R¯Q‡¨4uš9ÍƒIK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw
†ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê
+•J•&•*/T©ª¦ªÞªUóUËT�©^S}®FU3Sã©	Ô–«Uª�PëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k
«†u�5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN	ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§�¦½E»Yû�AÇJ'\'Gg�Î�çSÙSÝ§
+§M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õGX³$ÛÎ<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕF�FŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­�­%Ö»­»§§¹N“N«žÖgÃ°ñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ãî“½“}º}�ý=
‡Ù«Z~s´r:V:ÞšÎœî?}Åô–é/gXÏÏØ3ã¶Ë)Äi�S›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝÈ½äJtõq]ázÒõ�›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ?Ÿ•0kß¬~OCO�gµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿÑ§€%g‰�A�[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA�‚­‚åÁ­!hÈì�­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~'…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕX�XIlK9.*®6nl¾ßüíó‡â�âã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž
+yÂÂg"/Ñ6ÑˆØC\*NòH*Mz’ì‘¼5y$Å3¥,å¹„'©�¼L
LÝ›:žšv m2=:½1ƒ’‘�qBª!M“¶gêgæfvË¬e…²þÅn‹·/•Ék³�¬Y-
+¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+ÍíÌ³ÊÛ�7œïŸÿíÂá’¶¥†KW-Xæ½¬j9²<qyÛ
+ã+†V¬<¸Š¶*mÕO«íW—®~½&zMk�^ÁÊ‚ÁµkëU
+å…}ëÜ×í]OX/Yßµaú†�>‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n
ÙÚ´
ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒÝµa×ønÑî{¼ö4ìÕÛ[¼÷ý>É¾ÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TR�Ö+ëGÇ¾þ�ïw-
6
U�œÆâ#pDyäé÷	ß÷
:ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ4<YyJóTÉiÚé‚Ó“gòÏŒ�•�}~.ùÜ`Û¢¶{çcÎßjoïºtáÒEÿ‹ç;¼;Î\ò¸tò²ÛåW¸Wš¯:_mêtê<þ“ÓOÇ»œ»š®¹\k¹îz½µ{f÷éž7ÎÝô½yñÿÖÕž9=Ý½ózo÷Å÷õßÝ~r'ýÎË»Ùw'î­¼O¼_ô@íAÙCÝ‡Õ?[þÜØïÜjÀw óÑÜG÷…ƒÏþ‘õ�C�™�Ë†
†ëž8>99â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×ÎÑ˜Ñ¡—ò—“¿m|¥ýêÀë¯ÛÆÂÆ¾Éx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSÐ§û“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF
+	IDATxÚì\MŒGþ^uÏÎîÚØ;1`„"$NÉ!LDh57.Ì™S’Hœ|AÎæ	N$á7Gò�óŽŽ1(â†°‚wv#Š½ò¬I´ÛÕ3S�CuuWõôlW·§Ömä’z§»ºúuÕ×¯ÞoÕÒíÛ·Y)…U—ápH“É„Íõ`0 UÐ½sçŽw‡Ã¡÷;G£!Ð‹Úwp ²³³Ã�=Ê���ff¬àhZ¼èfýk<Æ
+Ýx2™¬œ{ƒB•&ým:kÒöj'ž6Ïjñ£Àó´<øYøàÁƒ¯ÿŠÏkæç,ø„%fæ%À’²]SWB~fnÔ—¦´«1x€�“$G„²?å¯ 0d€&LGˆ².0˜©ø$à$Itÿ˜ðáï/Üóí·ÁÌ }8NŽõxÁøýû,Ò~ë-°³'	)%¤”H¥„L$R"M$¤L!“I’ •Iv¤‰„LSýL’@&I’"M$2A’&�RXšþ¤7¶·�{7¶·‘Hýþ¤ER)!e‚4YB;ÍÆœaå§äØp+kÆÌ¦ 3âœC
‹31�qçÜÊ9SÙÔ"fìîîæ@ÜØÞÆîî¸˜‰ÜFD˜1Æ´wšÌÞCŒ)›Kù'€ÌÃD¹˜é·“%Hdƒ%²„JØBTˆ"°7ãÆö6öÆc-Ì}jGÛºÀ8£=Þ;÷šÐ�…ˆ–P/=L`‰XQ¡Š÷SPDÖË´¶ØÛß	Qè
j§ž„%&!ìïïCœ”½€&ô¸Œ–«?møõÈR�ncs`é˜�¬OK¿¥`°¨zÜze3+BDàLw.ÃÆ–VƒÅæáÅ„ÑÒw�
N0"�WÜÿ8"¡M/ÒSŸ¹Ð€™2¹¬?¡±	&†`ÃÓœÿ‚€._v^T¾n[¢¨˜q–µ0!ëª«˜›|¼Hä&`N�²k*„@ ö£æ`cëRµfE•Lã%¾`(/ 4�ÁËýÐ¶]X—°(ÞÃ¶‰B¾28Z2ÑZháS°#
+Vß‹zÚ¥×4SrËŸf¶j¨ŠMØ%—.]
+°­_Ùµ��Èàî¤±¨Êò<¯³Æ|ñâE?€}v¥„ìoÚ"é)„ÀÖÖÖÊ“ž£Ñè<€Ã&}h@ûKg›ˆ¥TmÒS„È(šƒÁ€Ì±
+ºÃáðqÓ>4(g›Ðö¥‡C`VŠY1Hho‰çJŸ[÷´‹LÙ‹";7Ï±bÐÚ×ƒMãápà´¶ÝÝOþÖ‚ö�Î¨?—g—9:Æì�nöP§Tè³9çUdB•Š
+MJAÍ¿N¿2'€šÖÌá®þàÕvôçÿñ4È¿éÇÁ¬¤ÀGN5JSP®š"‡smÎ‚À³‡º2 ƒk¦ç\b­…1¬L´õ‰¦E<;*<7…<¨AdùŒBdí("ð¼°áòqt4 ”ßàZœæ«u•Y~•ÊÖÁŒe‘h#ÂsOÚ5]-ÀDO¿3CU0Ÿ‰ƒ*f*teÎ~M;ˆBÃÊ¼¨MÄ}¨C¿¶b¶PU•UŽ™‹dŸ°‚9\¡hG¥vž(€5µÍZrðô¿ž¬éÙL¥‡àéã…øåÜX®gP.}Œvq¬¦Ïý>DJ}ù)¢ÃÛ'‡¡x™s^:7'ÌÀ·~¨Ëï®ýv‘Ûnþâ\aÅÄ/4W ©×~³¹Hû—GÅEßÏŠ*ÏôU||SoR%U± *µåÐœSÐ¿yýŠ€sÝFÌ9ä¤švvr¢ÛúêUƒÆ&OÇ®¦S0Ñ`z¨³­$€ã£ˆ›×¯ÇGÅ½VÊx<ÖÇþG.íý�Š{�Çº­WÜ¢ÌŠeN¥% —9ý´D«Ì‡ÌŽã$7qëÛ‚Œ¨8öoeàÞrëÌŽ˜£3 Þ7KÀ¶ll9Ò§XÔ ’
+O*êÚ\¦óùŸëš(¹²ÍË­e(�Y6Ñ =äÁAmˆ¾[€§¼ŽX]‚:Æà8&&Á:º,D'²¤©IW)æpëb•D®7jÔK'Ì4ê�ÖÎÞ=3Øpr”­ƒ ‚âb¦pÖ®ðÞ¬5¡õO½¸ŒEÜ¢ˆÖýÛ–JeV™ˆ€ÞF­a´LÇÑ}GOYDP»µSþAOQSï,õ!LŒŠÍz-®ø~Êˆ+Œ¬NÅŠ¨˜!Z@L
8Ø`à¯½
+>úç	�,òo¾ÈÄúËèÂ+�ž¢F«GçÚÍ &@lø·õr•/¼>úÐ%Ÿã‘“²ë–É§íækáð=÷2@õ\v÷î=\}½¡«Lxñ'«Ur£Ñ(
+#‡ÃÕSÕYå`eôñ'Oô|U†9>/ïW+­ðU«/[¬àápø8C4Û×Üˆƒ¿óÒ·WãÊ¥Çàó?x3[Àì ^Düõ~7ìàó}Xkm³-y2®XQI5¦
+ó)¹Ïœ&±ºÔàûß{©÷ø«ÜcÓÑ5WÎu./ò¬²ÒÞ)";�4�±ª‰d©‡ ¨KÂbL'>I�“)ž¦Cªx^¿ð„Ä¼³|äyœsÃ½%1Pn¿,¦ÌÁóú-Z*šv"«éÄ	1ŒWFÎrzkÁ�»H¥Â~.†çu{Ô¤¦áàƒ}Ì+8O¥'
+?Y×)P
+œ—8ºàì ›iÁ³ãúV½Žìtªjš³{ŸH8Aø2¸ú7´”8ò�Õi7.s®³¢¼ò¨;l!ôþpíÖ¢­}ó§ê“‹?.¼Ö€ûH¥(¦ÎÞ]YO2Kú³Õ?*9
+*"r0¯_Áµwÿí\ãèTÔ_õ7�µ
ˆu}˜sêof¿ëù�5}ßœS´nÎ7õuHKbz¨3Ôî½ãf~ï½SÜCÜ
�µs Ší„Ë’›öÞ4{÷.9aù€ÿ‰ ¬hÚgïáæõ_Ÿ½çÖ‹ŽÌgD[»ùL�bF”åî(û5ù8ÛÄAÀ« J«nîÿn¡Ž©|‰†÷Îæ	Kãç«,+VM*!ßU©Ìâáè”†Ãé"À•žÜZWDÄ†£:–ýž¬nNÓU–@ä±_…ºpÔw,�<7—ÅÔ’�Fz*ry®iŠƒ§€8ã¡¾ûÝXõ7rùJ0û[´²š±«øÜ(¦n3·²H"«js
+D›ÏÌêuÍ­œÉT²l‘™Èv–Cå»îmÆeü�V„Gb2êÃ�J�*¯bÏ9¹´O¾¿Ã¿ÌÀñÉ"‚6¿ÛG#Ž.ÿü¯_CÀu‡ŒØÉ¼±³ea�þiÜÏ½:SÿŸOï~šâêëX'ßX-ÕµHyê2úøïx–ÊÿŸ™ µÿ¢»šIEND®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/themes/advanced/skins/o2k7/ui_black.css 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,8 @@
+/* Black */
+.o2k7SkinBlack .mceToolbar .mceToolbarStart span, .o2k7SkinBlack .mceToolbar .mceToolbarEnd span, .o2k7SkinBlack .mceButton, .o2k7SkinBlack .mceSplitButton, .o2k7SkinBlack .mceSeparator, .o2k7SkinBlack .mceSplitButton a.mceOpen, .o2k7SkinBlack .mceListBox a.mceOpen {background-image:url(img/button_bg_black.png)}
+.o2k7SkinBlack table, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack .mceMenuItemTitle span.mceText, .o2k7SkinBlack .mceStatusbar div, .o2k7SkinBlack .mceStatusbar span, .o2k7SkinBlack .mceStatusbar a {background:#535353; color:#FFF}
+.o2k7SkinBlack table.mceListBoxEnabled .mceText, o2k7SkinBlack .mceListBox .mceText {background:#FFF; border:1px solid #CBCFD4; border-bottom-color:#989FA9; border-right:0}
+.o2k7SkinBlack table.mceListBoxEnabled:hover .mceText, .o2k7SkinBlack .mceListBoxHover .mceText, .o2k7SkinBlack .mceListBoxSelected .mceText {background:#FFF; border:1px solid #FFBD69; border-right:0}
+.o2k7SkinBlack .mceExternalToolbar, .o2k7SkinBlack .mceListBox .mceText, .o2k7SkinBlack div.mceMenu, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceFirst td, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceLast td, .o2k7SkinBlack .mceIframeContainer {border-color: #535353;}
+.o2k7SkinBlack table.mceSplitButtonEnabled:hover a.mceAction, .o2k7SkinBlack .mceSplitButtonHover a.mceAction, .o2k7SkinBlack .mceSplitButtonSelected {background-image:url(img/button_bg_black.png)}
+.o2k7SkinBlack .mceMenu .mceMenuItemEnabled a:hover, .o2k7SkinBlack .mceMenu .mceMenuItemActive {background-color:#FFE7A1}
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,215 @@
+/* Reset */
+.o2k7Skin table, .o2k7Skin tbody, .o2k7Skin a, .o2k7Skin img, .o2k7Skin tr, .o2k7Skin div, .o2k7Skin td, .o2k7Skin iframe, .o2k7Skin span, .o2k7Skin *, .o2k7Skin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left}
+.o2k7Skin a:hover, .o2k7Skin a:link, .o2k7Skin a:visited, .o2k7Skin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000}
+.o2k7Skin table td {vertical-align:middle}
+
+/* Containers */
+.o2k7Skin table {background:#E5EFFD}
+.o2k7Skin iframe {display:block; background:#FFF}
+.o2k7Skin .mceToolbar {height:26px}
+
+/* External */
+.o2k7Skin .mceExternalToolbar {position:absolute; border:1px solid #ABC6DD; border-bottom:0; display:none}
+.o2k7Skin .mceExternalToolbar td.mceToolbar {padding-right:13px;}
+.o2k7Skin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0}
+
+/* Layout */
+.o2k7Skin table.mceLayout {border:0; border-left:1px solid #ABC6DD; border-right:1px solid #ABC6DD}
+.o2k7Skin table.mceLayout tr.mceFirst td {border-top:1px solid #ABC6DD}
+.o2k7Skin table.mceLayout tr.mceLast td {border-bottom:1px solid #ABC6DD}
+.o2k7Skin table.mceToolbar, .o2k7Skin tr.mceFirst .mceToolbar tr td, .o2k7Skin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0}
+.o2k7Skin .mceIframeContainer {border-top:1px solid #ABC6DD; border-bottom:1px solid #ABC6DD}
+.o2k7Skin .mceStatusbar {display:block; font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; height:20px}
+.o2k7Skin .mceStatusbar div {float:left; padding:2px}
+.o2k7Skin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize}
+.o2k7Skin .mceStatusbar a:hover {text-decoration:underline}
+.o2k7Skin table.mceToolbar {margin-left:3px}
+.o2k7Skin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; margin-left:3px;}
+.o2k7Skin .mceToolbar td.mceFirst span {margin:0}
+.o2k7Skin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px}
+.o2k7Skin .mceToolbar .mceToolbarEndListBox span, .o2k7Skin .mceToolbar .mceToolbarStartListBox span {display:none}
+.o2k7Skin span.mceIcon, .o2k7Skin img.mceIcon {display:block; width:20px; height:20px}
+.o2k7Skin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
+.o2k7Skin td.mceCenter {text-align:center;}
+.o2k7Skin td.mceCenter table {margin:0 auto; text-align:left;}
+.o2k7Skin td.mceRight table {margin:0 0 0 auto;}
+
+/* Button */
+.o2k7Skin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px}
+.o2k7Skin a.mceButton span, .o2k7Skin a.mceButton img {margin-left:1px}
+.o2k7Skin .mceOldBoxModel a.mceButton span, .o2k7Skin .mceOldBoxModel a.mceButton img {margin:0 0 0 1px}
+.o2k7Skin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}
+.o2k7Skin a.mceButtonActive, .o2k7Skin a.mceButtonSelected {background-position:0 -44px}
+.o2k7Skin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+.o2k7Skin .mceButtonLabeled {width:auto}
+.o2k7Skin .mceButtonLabeled span.mceIcon {float:left}
+.o2k7Skin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica}
+.o2k7Skin .mceButtonDisabled .mceButtonLabel {color:#888}
+
+/* Separator */
+.o2k7Skin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px}
+
+/* ListBox */
+.o2k7Skin .mceListBox {margin-left:3px}
+.o2k7Skin .mceListBox, .o2k7Skin .mceListBox a {display:block}
+.o2k7Skin .mceListBox .mceText {padding-left:4px; text-align:left; width:70px; border:1px solid #b3c7e1; border-right:0; background:#eaf2fb; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden}
+.o2k7Skin .mceListBox .mceOpen {width:14px; height:22px; background:url(img/button_bg.png) -66px 0}
+.o2k7Skin table.mceListBoxEnabled:hover .mceText, .o2k7Skin .mceListBoxHover .mceText, .o2k7Skin .mceListBoxSelected .mceText {background:#FFF}
+.o2k7Skin table.mceListBoxEnabled:hover .mceOpen, .o2k7Skin .mceListBoxHover .mceOpen, .o2k7Skin .mceListBoxSelected .mceOpen {background-position:-66px -22px}
+.o2k7Skin .mceListBoxDisabled .mceText {color:gray}
+.o2k7Skin .mceListBoxMenu {overflow:auto; overflow-x:hidden}
+.o2k7Skin .mceOldBoxModel .mceListBox .mceText {height:22px}
+.o2k7Skin select.mceListBox {font-family:Tahoma,Verdana,Arial,Helvetica; font-size:12px; border:1px solid #b3c7e1; background:#FFF;}
+
+/* SplitButton */
+.o2k7Skin .mceSplitButton, .o2k7Skin .mceSplitButton a, .o2k7Skin .mceSplitButton span {display:block; height:22px}
+.o2k7Skin .mceSplitButton {background:url(img/button_bg.png)}
+.o2k7Skin .mceSplitButton a.mceAction {width:22px}
+.o2k7Skin .mceSplitButton span.mceAction {width:22px; background:url(../../img/icons.gif) 20px 20px}
+.o2k7Skin .mceSplitButton a.mceOpen {width:10px; background:url(img/button_bg.png) -44px 0}
+.o2k7Skin .mceSplitButton span.mceOpen {display:none}
+.o2k7Skin table.mceSplitButtonEnabled:hover a.mceAction, .o2k7Skin .mceSplitButtonHover a.mceAction, .o2k7Skin .mceSplitButtonSelected {background:url(img/button_bg.png) 0 -22px}
+.o2k7Skin table.mceSplitButtonEnabled:hover a.mceOpen, .o2k7Skin .mceSplitButtonHover a.mceOpen, .o2k7Skin .mceSplitButtonSelected a.mceOpen {background-position:-44px -44px}
+.o2k7Skin .mceSplitButtonDisabled .mceAction {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+.o2k7Skin .mceSplitButtonActive {background-position:0 -44px}
+
+/* ColorSplitButton */
+.o2k7Skin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray}
+.o2k7Skin .mceColorSplitMenu td {padding:2px}
+.o2k7Skin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080}
+.o2k7Skin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px}
+.o2k7Skin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF}
+.o2k7Skin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2}
+.o2k7Skin a.mceMoreColors:hover {border:1px solid #0A246A}
+.o2k7Skin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a;overflow:hidden}
+.o2k7Skin .mce_forecolor span.mceAction, .o2k7Skin .mce_backcolor span.mceAction {height:15px;overflow:hidden}
+
+/* Menu */
+.o2k7Skin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #ABC6DD}
+.o2k7Skin .mceNoIcons span.mceIcon {width:0;}
+.o2k7Skin .mceNoIcons a .mceText {padding-left:10px}
+.o2k7Skin .mceMenu table {background:#FFF}
+.o2k7Skin .mceMenu a, .o2k7Skin .mceMenu span, .o2k7Skin .mceMenu {display:block}
+.o2k7Skin .mceMenu td {height:20px}
+.o2k7Skin .mceMenu a {position:relative;padding:3px 0 4px 0}
+.o2k7Skin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block}
+.o2k7Skin .mceMenu span.mceText, .o2k7Skin .mceMenu .mcePreview {font-size:11px}
+.o2k7Skin .mceMenu pre.mceText {font-family:Monospace}
+.o2k7Skin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;}
+.o2k7Skin .mceMenu .mceMenuItemEnabled a:hover, .o2k7Skin .mceMenu .mceMenuItemActive {background-color:#dbecf3}
+.o2k7Skin td.mceMenuItemSeparator {background:#DDD; height:1px}
+.o2k7Skin .mceMenuItemTitle a {border:0; background:#E5EFFD; border-bottom:1px solid #ABC6DD}
+.o2k7Skin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px}
+.o2k7Skin .mceMenuItemDisabled .mceText {color:#888}
+.o2k7Skin .mceMenuItemSelected .mceIcon {background:url(../default/img/menu_check.gif)}
+.o2k7Skin .mceNoIcons .mceMenuItemSelected a {background:url(../default/img/menu_arrow.gif) no-repeat -6px center}
+.o2k7Skin .mceMenu span.mceMenuLine {display:none}
+.o2k7Skin .mceMenuItemSub a {background:url(../default/img/menu_arrow.gif) no-repeat top right;}
+
+/* Progress,Resize */
+.o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF}
+.o2k7Skin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
+.o2k7Skin .mcePlaceHolder {border:1px dotted gray}
+
+/* Formats */
+.o2k7Skin .mce_formatPreview a {font-size:10px}
+.o2k7Skin .mce_p span.mceText {}
+.o2k7Skin .mce_address span.mceText {font-style:italic}
+.o2k7Skin .mce_pre span.mceText {font-family:monospace}
+.o2k7Skin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em}
+.o2k7Skin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em}
+.o2k7Skin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em}
+.o2k7Skin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em}
+.o2k7Skin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em}
+.o2k7Skin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em}
+
+/* Theme */
+.o2k7Skin span.mce_bold {background-position:0 0}
+.o2k7Skin span.mce_italic {background-position:-60px 0}
+.o2k7Skin span.mce_underline {background-position:-140px 0}
+.o2k7Skin span.mce_strikethrough {background-position:-120px 0}
+.o2k7Skin span.mce_undo {background-position:-160px 0}
+.o2k7Skin span.mce_redo {background-position:-100px 0}
+.o2k7Skin span.mce_cleanup {background-position:-40px 0}
+.o2k7Skin span.mce_bullist {background-position:-20px 0}
+.o2k7Skin span.mce_numlist {background-position:-80px 0}
+.o2k7Skin span.mce_justifyleft {background-position:-460px 0}
+.o2k7Skin span.mce_justifyright {background-position:-480px 0}
+.o2k7Skin span.mce_justifycenter {background-position:-420px 0}
+.o2k7Skin span.mce_justifyfull {background-position:-440px 0}
+.o2k7Skin span.mce_anchor {background-position:-200px 0}
+.o2k7Skin span.mce_indent {background-position:-400px 0}
+.o2k7Skin span.mce_outdent {background-position:-540px 0}
+.o2k7Skin span.mce_link {background-position:-500px 0}
+.o2k7Skin span.mce_unlink {background-position:-640px 0}
+.o2k7Skin span.mce_sub {background-position:-600px 0}
+.o2k7Skin span.mce_sup {background-position:-620px 0}
+.o2k7Skin span.mce_removeformat {background-position:-580px 0}
+.o2k7Skin span.mce_newdocument {background-position:-520px 0}
+.o2k7Skin span.mce_image {background-position:-380px 0}
+.o2k7Skin span.mce_help {background-position:-340px 0}
+.o2k7Skin span.mce_code {background-position:-260px 0}
+.o2k7Skin span.mce_hr {background-position:-360px 0}
+.o2k7Skin span.mce_visualaid {background-position:-660px 0}
+.o2k7Skin span.mce_charmap {background-position:-240px 0}
+.o2k7Skin span.mce_paste {background-position:-560px 0}
+.o2k7Skin span.mce_copy {background-position:-700px 0}
+.o2k7Skin span.mce_cut {background-position:-680px 0}
+.o2k7Skin span.mce_blockquote {background-position:-220px 0}
+.o2k7Skin .mce_forecolor span.mceAction {background-position:-720px 0}
+.o2k7Skin .mce_backcolor span.mceAction {background-position:-760px 0}
+.o2k7Skin span.mce_forecolorpicker {background-position:-720px 0}
+.o2k7Skin span.mce_backcolorpicker {background-position:-760px 0}
+
+/* Plugins */
+.o2k7Skin span.mce_advhr {background-position:-0px -20px}
+.o2k7Skin span.mce_ltr {background-position:-20px -20px}
+.o2k7Skin span.mce_rtl {background-position:-40px -20px}
+.o2k7Skin span.mce_emotions {background-position:-60px -20px}
+.o2k7Skin span.mce_fullpage {background-position:-80px -20px}
+.o2k7Skin span.mce_fullscreen {background-position:-100px -20px}
+.o2k7Skin span.mce_iespell {background-position:-120px -20px}
+.o2k7Skin span.mce_insertdate {background-position:-140px -20px}
+.o2k7Skin span.mce_inserttime {background-position:-160px -20px}
+.o2k7Skin span.mce_absolute {background-position:-180px -20px}
+.o2k7Skin span.mce_backward {background-position:-200px -20px}
+.o2k7Skin span.mce_forward {background-position:-220px -20px}
+.o2k7Skin span.mce_insert_layer {background-position:-240px -20px}
+.o2k7Skin span.mce_insertlayer {background-position:-260px -20px}
+.o2k7Skin span.mce_movebackward {background-position:-280px -20px}
+.o2k7Skin span.mce_moveforward {background-position:-300px -20px}
+.o2k7Skin span.mce_media {background-position:-320px -20px}
+.o2k7Skin span.mce_nonbreaking {background-position:-340px -20px}
+.o2k7Skin span.mce_pastetext {background-position:-360px -20px}
+.o2k7Skin span.mce_pasteword {background-position:-380px -20px}
+.o2k7Skin span.mce_selectall {background-position:-400px -20px}
+.o2k7Skin span.mce_preview {background-position:-420px -20px}
+.o2k7Skin span.mce_print {background-position:-440px -20px}
+.o2k7Skin span.mce_cancel {background-position:-460px -20px}
+.o2k7Skin span.mce_save {background-position:-480px -20px}
+.o2k7Skin span.mce_replace {background-position:-500px -20px}
+.o2k7Skin span.mce_search {background-position:-520px -20px}
+.o2k7Skin span.mce_styleprops {background-position:-560px -20px}
+.o2k7Skin span.mce_table {background-position:-580px -20px}
+.o2k7Skin span.mce_cell_props {background-position:-600px -20px}
+.o2k7Skin span.mce_delete_table {background-position:-620px -20px}
+.o2k7Skin span.mce_delete_col {background-position:-640px -20px}
+.o2k7Skin span.mce_delete_row {background-position:-660px -20px}
+.o2k7Skin span.mce_col_after {background-position:-680px -20px}
+.o2k7Skin span.mce_col_before {background-position:-700px -20px}
+.o2k7Skin span.mce_row_after {background-position:-720px -20px}
+.o2k7Skin span.mce_row_before {background-position:-740px -20px}
+.o2k7Skin span.mce_merge_cells {background-position:-760px -20px}
+.o2k7Skin span.mce_table_props {background-position:-980px -20px}
+.o2k7Skin span.mce_row_props {background-position:-780px -20px}
+.o2k7Skin span.mce_split_cells {background-position:-800px -20px}
+.o2k7Skin span.mce_template {background-position:-820px -20px}
+.o2k7Skin span.mce_visualchars {background-position:-840px -20px}
+.o2k7Skin span.mce_abbr {background-position:-860px -20px}
+.o2k7Skin span.mce_acronym {background-position:-880px -20px}
+.o2k7Skin span.mce_attribs {background-position:-900px -20px}
+.o2k7Skin span.mce_cite {background-position:-920px -20px}
+.o2k7Skin span.mce_del {background-position:-940px -20px}
+.o2k7Skin span.mce_ins {background-position:-960px -20px}
+.o2k7Skin span.mce_pagebreak {background-position:0 -40px}
+.o2k7Skin .mce_spellchecker span.mceAction {background-position:-540px -20px}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,5 @@
+/* Silver */
+.o2k7SkinSilver .mceToolbar .mceToolbarStart span, .o2k7SkinSilver .mceButton, .o2k7SkinSilver .mceSplitButton, .o2k7SkinSilver .mceSeparator, .o2k7SkinSilver .mceSplitButton a.mceOpen, .o2k7SkinSilver .mceListBox a.mceOpen {background-image:url(img/button_bg_silver.png)}
+.o2k7SkinSilver table, .o2k7SkinSilver .mceMenuItemTitle a {background:#eee}
+.o2k7SkinSilver .mceListBox .mceText {background:#FFF}
+.o2k7SkinSilver .mceExternalToolbar, .o2k7SkinSilver .mceListBox .mceText, .o2k7SkinSilver div.mceMenu, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceFirst td, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceLast td, .o2k7SkinSilver .mceIframeContainer {border-color: #bbb}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm	2007-05-08 22:57:54.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm	2009-06-30 22:01:34.000000000 +0200
@@ -1,30 +1,29 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-	<title>{$lang_theme_code_title}</title>
-	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/source_editor.js"></script>
-	<base target="_self" />
+	<title>{#advanced_dlg.code_title}</title>
+	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script type="text/javascript" src="js/source_editor.js"></script>
 </head>
-<body onload="tinyMCEPopup.executeOnLoad('onLoadInit();');" onresize="resizeInputs();" style="display: none">
-	<form name="source" onsubmit="saveContent();" action="#">
-		<div style="float: left" class="title">{$lang_theme_code_title}</div>
+<body onresize="resizeInputs();" style="display:none; overflow:hidden;">
+	<form name="source" onsubmit="saveContent();return false;" action="#">
+		<div style="float: left" class="title">{#advanced_dlg.code_title}</div>
 
 		<div id="wrapline" style="float: right">
-			<input type="checkbox" name="wraped" id="wraped" onclick="toggleWordWrap(this);" class="wordWrapCode" /><label for="wraped">{$lang_theme_code_wordwrap}</label>
+			<input type="checkbox" name="wraped" id="wraped" onclick="toggleWordWrap(this);" class="wordWrapCode" /><label for="wraped">{#advanced_dlg.code_wordwrap}</label>
 		</div>
 
 		<br style="clear: both" />
 
-		<textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,monospace; font-size: 12px" dir="ltr" wrap="off"></textarea>
+		<textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,monospace; font-size: 12px;" dir="ltr" wrap="off" class="mceFocus"></textarea>
 
 		<div class="mceActionPanel">
 			<div style="float: left">
-				<input type="button" name="insert" value="{$lang_update}" onclick="saveContent();" id="insert" />
+				<input type="submit" name="insert" value="{#update}" id="insert" />
 			</div>
 
 			<div style="float: right">
-				<input type="button" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
+				<input type="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
 			</div>
 		</div>
 	</form>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js	2006-11-07 04:01:10.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js	2009-06-30 22:01:34.000000000 +0200
@@ -1 +1 @@
-var TinyMCE_SimpleTheme={_buttonMap:'bold,bullist,cleanup,italic,numlist,redo,strikethrough,underline,undo',getEditorTemplate:function(){var html='';html+='<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}">';html+='<tr><td align="center">';html+='<span id="{$editor_id}">IFRAME</span>';html+='</td></tr>';html+='<tr><td class="mceToolbar" align="center" height="1">';html+=tinyMCE.getButtonHTML('bold','lang_bold_desc','{$themeurl}/images/{$lang_bold_img}','Bold');html+=tinyMCE.getButtonHTML('italic','lang_italic_desc','{$themeurl}/images/{$lang_italic_img}','Italic');html+=tinyMCE.getButtonHTML('underline','lang_underline_desc','{$themeurl}/images/{$lang_underline_img}','Underline');html+=tinyMCE.getButtonHTML('strikethrough','lang_striketrough_desc','{$themeurl}/images/strikethrough.gif','Strikethrough');html+='<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';html+=tinyMCE.getButtonHTML('undo','lang_undo_desc','{$themeurl}/images/undo.gif','Undo');html+=tinyMCE.getButtonHTML('redo','lang_redo_desc','{$themeurl}/images/redo.gif','Redo');html+='<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';html+=tinyMCE.getButtonHTML('cleanup','lang_cleanup_desc','{$themeurl}/images/cleanup.gif','mceCleanup');html+='<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';html+=tinyMCE.getButtonHTML('bullist','lang_bullist_desc','{$themeurl}/images/bullist.gif','InsertUnorderedList');html+=tinyMCE.getButtonHTML('numlist','lang_numlist_desc','{$themeurl}/images/numlist.gif','InsertOrderedList');html+='</td></tr></table>';return{delta_width:0,delta_height:20,html:html}},handleNodeChange:function(editor_id,node){tinyMCE.switchClass(editor_id+'_bold','mceButtonNormal');tinyMCE.switchClass(editor_id+'_italic','mceButtonNormal');tinyMCE.switchClass(editor_id+'_underline','mceButtonNormal');tinyMCE.switchClass(editor_id+'_strikethrough','mceButtonNormal');tinyMCE.switchClass(editor_id+'_bullist','mceButtonNormal');tinyMCE.switchClass(editor_id+'_numlist','mceButtonNormal');do{switch(node.nodeName.toLowerCase()){case"b":case"strong":tinyMCE.switchClass(editor_id+'_bold','mceButtonSelected');break;case"i":case"em":tinyMCE.switchClass(editor_id+'_italic','mceButtonSelected');break;case"u":tinyMCE.switchClass(editor_id+'_underline','mceButtonSelected');break;case"strike":tinyMCE.switchClass(editor_id+'_strikethrough','mceButtonSelected');break;case"ul":tinyMCE.switchClass(editor_id+'_bullist','mceButtonSelected');break;case"ol":tinyMCE.switchClass(editor_id+'_numlist','mceButtonSelected');break}}while((node=node.parentNode)!=null)}};tinyMCE.addTheme("simple",TinyMCE_SimpleTheme);tinyMCE.addButtonMap(TinyMCE_SimpleTheme._buttonMap);
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
+(function(){var a=tinymce.DOM;tinymce.ThemeManager.requireLangPack("simple");tinymce.create("tinymce.themes.SimpleTheme",{init:function(c,d){var e=this,b=["Bold","Italic","Underline","Strikethrough","InsertUnorderedList","InsertOrderedList"],f=c.settings;e.editor=c;c.onInit.add(function(){c.onNodeChange.add(function(h,g){tinymce.each(b,function(i){g.get(i.toLowerCase()).setActive(h.queryCommandState(i))})});c.dom.loadCSS(d+"/skins/"+f.skin+"/content.css")});a.loadCSS((f.editor_css?c.documentBaseURI.toAbsolute(f.editor_css):"")||d+"/skins/"+f.skin+"/ui.css")},renderUI:function(h){var e=this,i=h.targetNode,b,c,d=e.editor,f=d.controlManager,g;i=a.insertAfter(a.create("span",{id:d.id+"_container","class":"mceEditor "+d.settings.skin+"SimpleSkin"}),i);i=g=a.add(i,"table",{cellPadding:0,cellSpacing:0,"class":"mceLayout"});i=c=a.add(i,"tbody");i=a.add(c,"tr");i=b=a.add(a.add(i,"td"),"div",{"class":"mceIframeContainer"});i=a.add(a.add(c,"tr",{"class":"last"}),"td",{"class":"mceToolbar mceLast",align:"center"});c=e.toolbar=f.createToolbar("tools1");c.add(f.createButton("bold",{title:"simple.bold_desc",cmd:"Bold"}));c.add(f.createButton("italic",{title:"simple.italic_desc",cmd:"Italic"}));c.add(f.createButton("underline",{title:"simple.underline_desc",cmd:"Underline"}));c.add(f.createButton("strikethrough",{title:"simple.striketrough_desc",cmd:"Strikethrough"}));c.add(f.createSeparator());c.add(f.createButton("undo",{title:"simple.undo_desc",cmd:"Undo"}));c.add(f.createButton("redo",{title:"simple.redo_desc",cmd:"Redo"}));c.add(f.createSeparator());c.add(f.createButton("cleanup",{title:"simple.cleanup_desc",cmd:"mceCleanup"}));c.add(f.createSeparator());c.add(f.createButton("insertunorderedlist",{title:"simple.bullist_desc",cmd:"InsertUnorderedList"}));c.add(f.createButton("insertorderedlist",{title:"simple.numlist_desc",cmd:"InsertOrderedList"}));c.renderTo(i);return{iframeContainer:b,editorContainer:d.id+"_container",sizeContainer:g,deltaHeight:-20}},getInfo:function(){return{longname:"Simple theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.ThemeManager.add("simple",tinymce.themes.SimpleTheme)})();
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js	2008-09-09 17:19:42.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js	2009-06-30 22:01:34.000000000 +0200
@@ -1,84 +1,85 @@
-/**
- * $Id: editor_template_src.js 162 2007-01-03 16:16:52Z spocke $
- *
- * @author Moxiecode
- * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-var TinyMCE_SimpleTheme = {
-	// List of button ids in tile map
-	_buttonMap : 'bold,bullist,cleanup,italic,numlist,redo,strikethrough,underline,undo',
-
-	getEditorTemplate : function() {
-		var html = '';
-
-		html += '<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}">';
-		html += '<tr><td align="center">';
-		html += '<span id="{$editor_id}">IFRAME</span>';
-		html += '</td></tr>';
-		html += '<tr><td class="mceToolbar" align="center" height="1">';
-		html += tinyMCE.getButtonHTML('bold', 'lang_bold_desc', '{$themeurl}/images/{$lang_bold_img}', 'Bold');
-		html += tinyMCE.getButtonHTML('italic', 'lang_italic_desc', '{$themeurl}/images/{$lang_italic_img}', 'Italic');
-		html += tinyMCE.getButtonHTML('underline', 'lang_underline_desc', '{$themeurl}/images/{$lang_underline_img}', 'Underline');
-		html += tinyMCE.getButtonHTML('strikethrough', 'lang_striketrough_desc', '{$themeurl}/images/strikethrough.gif', 'Strikethrough');
-		html += '<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';
-		html += tinyMCE.getButtonHTML('undo', 'lang_undo_desc', '{$themeurl}/images/undo.gif', 'Undo');
-		html += tinyMCE.getButtonHTML('redo', 'lang_redo_desc', '{$themeurl}/images/redo.gif', 'Redo');
-		html += '<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';
-		html += tinyMCE.getButtonHTML('cleanup', 'lang_cleanup_desc', '{$themeurl}/images/cleanup.gif', 'mceCleanup');
-		html += '<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';
-		html += tinyMCE.getButtonHTML('bullist', 'lang_bullist_desc', '{$themeurl}/images/bullist.gif', 'InsertUnorderedList');
-		html += tinyMCE.getButtonHTML('numlist', 'lang_numlist_desc', '{$themeurl}/images/numlist.gif', 'InsertOrderedList');
-		html += '</td></tr></table>';
-
-		return {
-			delta_width : 0,
-			delta_height : 20,
-			html : html
-		};
-	},
-
-	handleNodeChange : function(editor_id, node) {
-		// Reset old states
-		tinyMCE.switchClass(editor_id + '_bold', 'mceButtonNormal');
-		tinyMCE.switchClass(editor_id + '_italic', 'mceButtonNormal');
-		tinyMCE.switchClass(editor_id + '_underline', 'mceButtonNormal');
-		tinyMCE.switchClass(editor_id + '_strikethrough', 'mceButtonNormal');
-		tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonNormal');
-		tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonNormal');
-
-		// Handle elements
-		do {
-			switch (node.nodeName.toLowerCase()) {
-				case "b":
-				case "strong":
-					tinyMCE.switchClass(editor_id + '_bold', 'mceButtonSelected');
-				break;
-
-				case "i":
-				case "em":
-					tinyMCE.switchClass(editor_id + '_italic', 'mceButtonSelected');
-				break;
-
-				case "u":
-					tinyMCE.switchClass(editor_id + '_underline', 'mceButtonSelected');
-				break;
-
-				case "strike":
-					tinyMCE.switchClass(editor_id + '_strikethrough', 'mceButtonSelected');
-				break;
-
-				case "ul":
-					tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonSelected');
-				break;
-
-				case "ol":
-					tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonSelected');
-				break;
-			}
-		} while ((node = node.parentNode) != null);
-	}
-};
-
-tinyMCE.addTheme("simple", TinyMCE_SimpleTheme);
-tinyMCE.addButtonMap(TinyMCE_SimpleTheme._buttonMap);
+/**
+ * $Id: editor_template_src.js 920 2008-09-09 14:05:33Z spocke $
+ *
+ * This file is meant to showcase how to create a simple theme. The advanced
+ * theme is more suitable for production use.
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+	var DOM = tinymce.DOM;
+
+	// Tell it to load theme specific language pack(s)
+	tinymce.ThemeManager.requireLangPack('simple');
+
+	tinymce.create('tinymce.themes.SimpleTheme', {
+		init : function(ed, url) {
+			var t = this, states = ['Bold', 'Italic', 'Underline', 'Strikethrough', 'InsertUnorderedList', 'InsertOrderedList'], s = ed.settings;
+
+			t.editor = ed;
+
+			ed.onInit.add(function() {
+				ed.onNodeChange.add(function(ed, cm) {
+					tinymce.each(states, function(c) {
+						cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c));
+					});
+				});
+
+				ed.dom.loadCSS(url + "/skins/" + s.skin + "/content.css");
+			});
+
+			DOM.loadCSS((s.editor_css ? ed.documentBaseURI.toAbsolute(s.editor_css) : '') || url + "/skins/" + s.skin + "/ui.css");
+		},
+
+		renderUI : function(o) {
+			var t = this, n = o.targetNode, ic, tb, ed = t.editor, cf = ed.controlManager, sc;
+
+			n = DOM.insertAfter(DOM.create('span', {id : ed.id + '_container', 'class' : 'mceEditor ' + ed.settings.skin + 'SimpleSkin'}), n);
+			n = sc = DOM.add(n, 'table', {cellPadding : 0, cellSpacing : 0, 'class' : 'mceLayout'});
+			n = tb = DOM.add(n, 'tbody');
+
+			// Create iframe container
+			n = DOM.add(tb, 'tr');
+			n = ic = DOM.add(DOM.add(n, 'td'), 'div', {'class' : 'mceIframeContainer'});
+
+			// Create toolbar container
+			n = DOM.add(DOM.add(tb, 'tr', {'class' : 'last'}), 'td', {'class' : 'mceToolbar mceLast', align : 'center'});
+
+			// Create toolbar
+			tb = t.toolbar = cf.createToolbar("tools1");
+			tb.add(cf.createButton('bold', {title : 'simple.bold_desc', cmd : 'Bold'}));
+			tb.add(cf.createButton('italic', {title : 'simple.italic_desc', cmd : 'Italic'}));
+			tb.add(cf.createButton('underline', {title : 'simple.underline_desc', cmd : 'Underline'}));
+			tb.add(cf.createButton('strikethrough', {title : 'simple.striketrough_desc', cmd : 'Strikethrough'}));
+			tb.add(cf.createSeparator());
+			tb.add(cf.createButton('undo', {title : 'simple.undo_desc', cmd : 'Undo'}));
+			tb.add(cf.createButton('redo', {title : 'simple.redo_desc', cmd : 'Redo'}));
+			tb.add(cf.createSeparator());
+			tb.add(cf.createButton('cleanup', {title : 'simple.cleanup_desc', cmd : 'mceCleanup'}));
+			tb.add(cf.createSeparator());
+			tb.add(cf.createButton('insertunorderedlist', {title : 'simple.bullist_desc', cmd : 'InsertUnorderedList'}));
+			tb.add(cf.createButton('insertorderedlist', {title : 'simple.numlist_desc', cmd : 'InsertOrderedList'}));
+			tb.renderTo(n);
+
+			return {
+				iframeContainer : ic,
+				editorContainer : ed.id + '_container',
+				sizeContainer : sc,
+				deltaHeight : -20
+			};
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'Simple theme',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			}
+		}
+	});
+
+	tinymce.ThemeManager.add('simple', tinymce.themes.SimpleTheme);
+})();
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gif 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gif
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gif	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gif	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1 @@
+GIF89aÈ÷9cÂ§³Æñïn%4Oœ8*•ºý£ÃûopqyŽ®n’Ï4Kcãìûpz�”§Ãÿÿÿ1QŽÅÒâ÷ï®�š°Ð¥X†Ì£·ÓX„ß×ÙÝ¹¹¸üËÊòÑpQQRÊËÔš›š=8)æñüÐ¨™ˆƒ—ÃÑÚìíØŠœËòùõS·sb»Ëï/iä´•›T|Õ�xYõ“¡³ÈÈÈû.-öë‘ûùÆY]fñùþ²Ìü§§§r[v…•»¾Áðñý�Ðƒƒ†µªO•ˆmAwã×Þô³©Š‚¥ñlÁð‘£¹•€ÉtlÓaÍUOP­šáhõØÄ¸‘5f¶¡¯Ã-Mªïº9æåäýõ7Ï°QŽŽìàèóŸÏ¨ÔË´g–æ€¥ÙºÃÑO5„`p…ñ³Ë‘6ûMGÊþÿYu§¢±Êršè™™‡ÞåðóÍR§˜k¢¿ôààðÒâþÆ´qÖÅ*‚‘ŸÃÉÞÛKKÂzBRc€òòò…Š�ÀÐïŠ¦âÜéü‚¨ò¨©¶s�Ïu—ô–¢®±›R˜yM±FHš|lOf>¦ë´±÷ùþ0¸CØÇhBg²d}ª‘«ñ‘¥Î“ˆˆR{»kW@KsÁ±»Ñ@`™´ÁÒøA8?g©¬µËÕ..ÎØú<<?À¿£1þbUðøàëïöÐÕÜb�·§©Ïb‘ðSˆòàÿÿaŒà‚­þ�¯Ô¯ÀâÀÂÄÔ““­â×îÇÈè°èè÷sK¿ƒÐÐ�±ÀÙ„¤Ä›˜Íø Æ˜–Oq¬ÂØô!@xûüý_o�¿È×B„þþþþýþðïðf™üüþ‰ªôÂÚþ‹´ýÿ™™¾¾þÿgdúä >QkãÜ±SÉ"XÂ^Œœ°ÈÝSp¢%c÷õøÐáð®¦þWn±´¯¢ÿøÿNXÆ	9†Lp—ÈÙðßßàðøð¨¸¸ÂÖþJ²vð¶c°³µ¨µÇÚæþ¢ºÝ"Zâþ»ÈàÚŽr‡¯‡¥Øð°ÐàÎÍÌ¦žæP¸¶ôãßUg‹2Rr6¿Þ[[ø¾Z?®Ë�¨°()'ûûûßÕÐ ¥´ àðÀíú°œ`€°Àÿÿÿ!ùÿ,Èÿÿ	H° Áƒ*\È°¡Ã‡#JœH±¢Å‹3jÜÈ±£Ç� CN\”K¤É“(SJ$©R`€8n1¢CF*îÚu`WK‰$%q�eËx	À´)ÓˆFT¡¦+ã�jE(”ˆW">6<ð•ˆPƒF+jmª0¯I„›u*„·"$ fDžW\¸V VŽNÿ%FHD Y""_8KP×Œl?¹-Ü¶Û<Œ v7C¦@F>ñÀÕÁ’Á`mPÀÒÌšmÜ¬Y¡Y²�/$| `Zµ›qwlÒDY¸_ }èªaz¡.Þ]†,Ø+í‚º/ÿO¾vxìËF6b˜°ñ’3+/øÒïC,¯šH AC™‡m>„³€
1U•Bƒ±‘kþ³‹.DÀ†�|ã…7áy4a	„õOwïa¶–BH)•›^a¡,JðŠè¢Ë]—!B¶Ö|Ž]Ep˜Xy*Äz½!QíGÐqÉ‡ä@nÁu_	ûÑ �%”ÐD
>Ô@c^4˜PŽö=´‹�†­Æ‹�Yí(ç…qª¶Zdñu�‡Y&¢n<^¤Ì+ûqÙ%@ˆY]B66´ÚDƒñ™WVD–Gçmå˜Sˆñ%7åEX4Ñå¡T¬ðÁ¢	h’k›žöÔˆ·Ý}x[U�F4XšA)Ñœgê‚«CMAª©�¹‚lJ4˜“'¡èP'v�Ÿ-é’T¬ÎÔ„l”úA±]à—œ²©XÝZ|*UYÑ—.|’ßý%©Gä>t€L¢Å.ºÁRd¿°®'¬ðÂ=ð/ÃG,1C;
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/langs/ca.js 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/langs/ca.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/langs/ca.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/langs/ca.js	2009-04-24 08:53:36.000000000 +0200
@@ -0,0 +1,11 @@
+tinyMCE.addI18n('ca.simple',{
+bold_desc:"Negreta (Ctrl+B)",
+italic_desc:"Cursiva (Ctrl+I)",
+underline_desc:"Subratllat (Ctrl+U)",
+striketrough_desc:"Tatxat",
+bullist_desc:"Llista no ordenada",
+numlist_desc:"Llista ordenada",
+undo_desc:"Desf\u00E9s (Ctrl+Z)",
+redo_desc:"Ref\u00E9s (Ctrl+Y)",
+cleanup_desc:"Neteja el codi mal format"
+});
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/langs/en.js 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/langs/en.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/langs/en.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/langs/en.js	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,11 @@
+tinyMCE.addI18n('en.simple',{
+bold_desc:"Bold (Ctrl+B)",
+italic_desc:"Italic (Ctrl+I)",
+underline_desc:"Underline (Ctrl+U)",
+striketrough_desc:"Strikethrough",
+bullist_desc:"Unordered list",
+numlist_desc:"Ordered list",
+undo_desc:"Undo (Ctrl+Z)",
+redo_desc:"Redo (Ctrl+Y)",
+cleanup_desc:"Cleanup messy code"
+});
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/langs/es.js 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/langs/es.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/langs/es.js	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/langs/es.js	2009-06-22 05:25:10.000000000 +0200
@@ -0,0 +1,11 @@
+tinyMCE.addI18n('es.simple',{
+bold_desc:"Negrita (Ctrl+B)",
+italic_desc:"Cursiva (Ctrl+I)",
+underline_desc:"Subrayado (Ctrl+U)",
+striketrough_desc:"Tachado",
+bullist_desc:"Lista desordenada",
+numlist_desc:"Lista ordenada",
+undo_desc:"Deshacer (Ctrl+Z)",
+redo_desc:"Rehacer (Ctrl+Y)",
+cleanup_desc:"Limpiar c\u00F3digo basura"
+});
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/default/content.css 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/default/content.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/default/content.css	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/default/content.css	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,25 @@
+body, td, pre {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 10px;
+}
+
+body {
+	background-color: #FFFFFF;
+}
+
+.mceVisualAid {
+	border: 1px dashed #BBBBBB;
+}
+
+/* MSIE specific */
+
+* html body {
+	scrollbar-3dlight-color: #F0F0EE;
+	scrollbar-arrow-color: #676662;
+	scrollbar-base-color: #F0F0EE;
+	scrollbar-darkshadow-color: #DDDDDD;
+	scrollbar-face-color: #E0E0DD;
+	scrollbar-highlight-color: #F0F0EE;
+	scrollbar-shadow-color: #F0F0EE;
+	scrollbar-track-color: #F5F5F5;	
+}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,32 @@
+/* Reset */
+.defaultSimpleSkin table, .defaultSimpleSkin tbody, .defaultSimpleSkin a, .defaultSimpleSkin img, .defaultSimpleSkin tr, .defaultSimpleSkin div, .defaultSimpleSkin td, .defaultSimpleSkin iframe, .defaultSimpleSkin span, .defaultSimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000}
+
+/* Containers */
+.defaultSimpleSkin {position:relative}
+.defaultSimpleSkin table.mceLayout {background:#F0F0EE; border:1px solid #CCC;}
+.defaultSimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #CCC;}
+.defaultSimpleSkin .mceToolbar {height:24px;}
+
+/* Layout */
+.defaultSimpleSkin span.mceIcon, .defaultSimpleSkin img.mceIcon {display:block; width:20px; height:20px}
+.defaultSimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
+
+/* Button */
+.defaultSimpleSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px}
+.defaultSimpleSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0}
+.defaultSimpleSkin a.mceButtonActive {border:1px solid #0A246A; background-color:#C2CBE0}
+.defaultSimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+
+/* Separator */
+.defaultSimpleSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:0 2px 0 4px}
+
+/* Theme */
+.defaultSimpleSkin span.mce_bold {background-position:0 0}
+.defaultSimpleSkin span.mce_italic {background-position:-60px 0}
+.defaultSimpleSkin span.mce_underline {background-position:-140px 0}
+.defaultSimpleSkin span.mce_strikethrough {background-position:-120px 0}
+.defaultSimpleSkin span.mce_undo {background-position:-160px 0}
+.defaultSimpleSkin span.mce_redo {background-position:-100px 0}
+.defaultSimpleSkin span.mce_cleanup {background-position:-40px 0}
+.defaultSimpleSkin span.mce_insertunorderedlist {background-position:-20px 0}
+.defaultSimpleSkin span.mce_insertorderedlist {background-position:-80px 0}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,17 @@
+body, td, pre {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
+
+body {background: #FFF;}
+.mceVisualAid {border: 1px dashed #BBB;}
+
+/* IE */
+
+* html body {
+scrollbar-3dlight-color: #F0F0EE;
+scrollbar-arrow-color: #676662;
+scrollbar-base-color: #F0F0EE;
+scrollbar-darkshadow-color: #DDDDDD;
+scrollbar-face-color: #E0E0DD;
+scrollbar-highlight-color: #F0F0EE;
+scrollbar-shadow-color: #F0F0EE;
+scrollbar-track-color: #F5F5F5;	
+}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,16 @@
+‰PNG
+
+
IHDR(BOdc	pHYsšœ
+OiCCPPhotoshop ICC profilexÚ�SgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*!	Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ,Š
+Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó�³ÏÀ–H3Q5€©BàƒÇÄÆáä.@�
+$p³d!sý#ø~<<+"À¾xÓÀM›À0‡ÿêB™\€„Àt‘8K€@zŽB¦@F€�˜&S `ËcbãP-`'æÓ€�ø™{[”! ‘ eˆDh;¬ÏVŠEX0fKÄ9Ø-0IWfH°·ÀÎ²0Qˆ…){`È##x„™FòW<ñ+®ç*x™²<¹$9E�[-qWW.(ÎI+6aaš@.Ây™2�4àóÌ ‘àƒóýxÎ®ÎÎ6Ž¶_-ê¿ÿ"bbãþåÏ«p@át~Ñþ,/³€;€mþ¢%îh^ u÷‹f²@µ éÚWópø~<<E¡�¹ÙÙåääØJÄB[aÊW}þgÂ_ÀWýlù~<ü÷õà¾â$�2]�GøàÂÌôL¥Ï’	„bÜæ�Gü·ÿüÓ"ÄIb¹X*ãQqŽDšŒó2¥"‰B’)Å%Òÿdâß,û>ß5°j>{‘-¨]cöK'XtÀâ÷ò»oÁÔ(€hƒáÏwÿï?ýG %€fI’q^D$.TÊ³?ÇD �*°AôÁ,ÀÁÜÁü`6„B$ÄÂBB
+d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼�	AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ÉˆQ"K‘5H1RŠT UHò=r9‡\Fº‘;È2‚ü†¼G1”�²Q=ÔµC¹¨7„F¢Ðdt1š� ›Ðr´=Œ6¡çÐ«hÚ�>CÇ0Àè3Äl0.ÆÃB±8,	“cË±"¬«Æ°V¬»‰õcÏ±w�EÀ	6wB aAHXLXNØH¨ $4Ú	7	„QÂ'"“¨K´&ºùÄb21‡XH,#Ö�/{ˆCÄ7$‰C2'¹�I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ä�äÃä3ää!ò[
+�b@q¤øSâ(RÊjJåå4åe˜2AU£šRÝ¨¡T5�ZB­¡¶R¯Q‡¨4uš9ÍƒIK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw
†ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê
+•J•&•*/T©ª¦ªÞªUóUËT�©^S}®FU3Sã©	Ô–«Uª�PëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k
«†u�5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN	ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§�¦½E»Yû�AÇJ'\'Gg�Î�çSÙSÝ§
+§M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õGX³$ÛÎ<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕF�FŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­�­%Ö»­»§§¹N“N«žÖgÃ°ñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ãî“½“}º}�ý=
‡Ù«Z~s´r:V:ÞšÎœî?}Åô–é/gXÏÏØ3ã¶Ë)Äi�S›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝÈ½äJtõq]ázÒõ�›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ?Ÿ•0kß¬~OCO�gµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿÑ§€%g‰�A�[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA�‚­‚åÁ­!hÈì�­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~'…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕX�XIlK9.*®6nl¾ßüíó‡â�âã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž
+yÂÂg"/Ñ6ÑˆØC\*NòH*Mz’ì‘¼5y$Å3¥,å¹„'©�¼L
LÝ›:žšv m2=:½1ƒ’‘�qBª!M“¶gêgæfvË¬e…²þÅn‹·/•Ék³�¬Y-
+¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+ÍíÌ³ÊÛ�7œïŸÿíÂá’¶¥†KW-Xæ½¬j9²<qyÛ
+ã+†V¬<¸Š¶*mÕO«íW—®~½&zMk�^ÁÊ‚ÁµkëU
+å…}ëÜ×í]OX/Yßµaú†�>‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n
ÙÚ´
ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒÝµa×ønÑî{¼ö4ìÕÛ[¼÷ý>É¾ÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TR�Ö+ëGÇ¾þ�ïw-
6
U�œÆâ#pDyäé÷	ß÷
:ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ4<YyJóTÉiÚé‚Ó“gòÏŒ�•�}~.ùÜ`Û¢¶{çcÎßjoïºtáÒEÿ‹ç;¼;Î\ò¸tò²ÛåW¸Wš¯:_mêtê<þ“ÓOÇ»œ»š®¹\k¹îz½µ{f÷éž7ÎÝô½yñÿÖÕž9=Ý½ózo÷Å÷õßÝ~r'ýÎË»Ùw'î­¼O¼_ô@íAÙCÝ‡Õ?[þÜØïÜjÀw óÑÜG÷…ƒÏþ‘õ�C�™�Ë†
†ëž8>99â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×ÎÑ˜Ñ¡—ò—“¿m|¥ýêÀë¯ÛÆÂÆ¾Éx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSÐ§û“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFPLTEÿÿÿÛÎ™ÊÜñ¯Äßƒ”Ãƒ“Ã„”Ä„”Ã›·à ¼ä•¯Õ »â–¯Ô¸ËçØäõàéöV}±Ÿ»âŸ»á ¼â »ÞÁÔî¾Ñê½Ðé¼ÏèÃÖïÂÕîÁÔí¾ÐéÁÓìÅ×ðÊÜõÐá÷ÍÝòÑàôÕãöÚçùÙæ÷×äõÝêûÜéúßëûÝéùãíûßéöèñýäíùãìøœ¹ÜŸ»Þ ¼ÞŸ»Ý´Éâ¾Ôî¾Óí½Ñê¾ÒêÉÝöÄ×ïÂÕíÈÛóÅØðËÞöÆÙðÅØïÍßöÍÞòÎßóÖåøÕä÷ÒáôÖäöÏÝîãïþâîýáíüáìúäïüËÞôÈÛñÇÚðËÞóÉÜñËÝòÊÛîÒâôÑáóÐßïÎÝíÍÜì×äóÚçõäðþßëøÈÛîÊÜïÑâôÕãñÞéôÈÛíÑáðÐàïÏßîêòùÿÿùÿÿûÿÿýÿüÕÿüÚÿúÅÿüÝÿüâÿþõÿùÌÿüåÿýíÿþ÷ÿõ·ÿøËþöÊÿüêþõÉþõÊýê�ýêžüé�ûé�ÿï§þõÐÿ÷ÔýõÓþùåÿûéýùèÿûëÿüïÿüðÿýôÿä€þäþãÿè–ýòÊÿöÓþõÓÿûìùé¶ûì»ûì¼üïÃûîÃýõÚÿøâÿùæþùèÿûîÿÐIÿÒMÿÑMÿÒNÿÑNÿÓVÿÕ`þÕdÿÖeÿÖfÿ×jÿÚvýß�ÿâ�ýá�ÿâ”ýá”ýâ”ÿä˜ÿåœþåŸþå ÿç¥ùä§úå¨ÿê²úè²ûê·úé¶ÿî»ÿî¿ÿïÁÿïÃÿðÇÿñÊüïÊÿòÏÿóÓüñÐÿôÖýóÕÿöÝÿ÷ßÿ÷áÿüóÿÙuÿÙxÿÚ|ÿÜ�ÿÜƒýÙƒþÚ„ýÚ„ÿß‹þß�ÿá”ÿè«ÿë¸ÿñÌÿôÙÿõÛÿûñÿÖyÿÕyýÔxÿÖzýÙ„ÿùëþÉuüÇtþÉvüÈuü»_ý¼`þÃhþÃjýÂiÿÎ‡þÍ†ÿÏˆû´Uû´Vü¶WüµWý»`ÿÔ˜ýØ¨ÿÚªÊ´—É´˜ÿÙ©úÛ¶ùÚµÊ´˜É³˜ìÓµëÓµúÚµÿÿÿ¿õ8DtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿS÷%ñIDATxÚlÕïoÚFðF§¥Q QDÁucO•š×UQ8­•,YD !Þ%ÍÅ	{3ª¥dÿAh ¶äˆ½!HA•ÒHv_„JÙÀRªT²ÿ
+Œö’xÈKƒ¬Ìé l¥{aÒ-p_t�OâÃsøÇÉ·œn÷·ËéœtºÜ.·Ë=ét:�®p8ùúÓÿsklŽãV¹g!Žã8îº®ÃH$oÂ‡ë×ùÆ>¬¬¯¯ßu„Ãá©›p&�®FtÅ®QÊ	G7¡w%º�^ÿ†pD"áa€!ôTddéïè)B €€è‰µXlËÈÆà)@ˆßˆ­Ý†OÑ2ÀVÈ^üñDl¤£—¦Š"fiš¢š ‚¦ééñØóµ!øí]òI’$I>!¿$Ÿ�÷î‘$9=ÛéH4MÑMASEÐ1=Ûˆ
ýÇ‚¦)‚ š&f)š Š §'6ÖžOA†eö>Ã2ì}va�a™…ûäDl#öÅ0dfv–aÙv�ef–a™'·×b±áŽìë_òûýì`øý¬Ÿ¼=zyf—eqÉ_9¸9nè^?\Ð2-Û·çñÇ
Ã™@0Á` ø ƒ‚Az*4z(†¸PˆãVŸq\ˆ[å8.
+qŒcn¤ã˜×ëõzyíÃ#»¬:F—†zà<„BôÁy¡ÂÇqÜMèv»œn§kÒéžt»\wÜÎÉI·Óýi$·ÆR©T.õ"—J¥r¹TêûT*—Ê¥00•ËŠYQ÷vöÄ=QEQÜEÌ‰Ù1›ÝÉî‰{âŽ(ŠÙ¬˜Íbà‹ÄÖÖV<�Çã›ñDb3�'qÌî¿ÚÊ«ý}ÜSµ—š¦iªúRUUUS5UÕ4\GMS5MSUS5MÓTÜ?>>>>~g×w×süA’dI’$I–dI–%Y–¤×2þ(Ë6y-Ë’$K’,Ë2*òço%Y²©„ƒùµMìUeY–ð�òùƒƒ|>�Ïçßä¯ƒ‡ù›ðÍÃ¨TÃøÙ0Ã0N*''jår¹¤—ª%½ªëå’®Wõ²®c zxxxøÓç2¨¸;£”bQ)EQ”‚R,Å"îÙyk—·o�ŽŽŽp[a+OlÆ7ã‰Íxâú±œÆ@ç!„´ãñx ôx0°×ëýÕëýÝëõìÙ‡^¯×û€�GòÏÇ�ö»Ý«~·Ûï^õûý~¿Ûí^]]á`§Ýn_¶ÛíËÎeç²Ýé´Û�NÿÄ/šÍ‹‹ßšM{Òl^\4qðÌ4MóìÔ4Í3Ó41MÓ4Mlµ,Ë²¬Öï–e½·¬VËjY­÷xØjYVË²¬Ö»XV«eYVkçµóóÚyí¼6ÈµóÖ�z½Qÿµ^¯×�z£^o4ê¸“95MÓ4ízvfšæ©yŠ=k{Ÿœ†qbTŒŠqR1«e½ª—õ’®—JÕª®WKÕjoÄÞ1‡8¨(E¥ ({Ï‹¥XTpPØøävR>™ä·“¼ l'q—‡’‚ ð¼�äù$/¼À'y\G>Éó<¿-I^HnÏ'ñpl7�I§wÓéônf7“Éd2étÚÂîBèóAè�Ðg¿¡úà(üw�ÖM`ÉgëKIEND®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/themes/simple/skins/o2k7/ui.css 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css	1970-01-01 01:00:00.000000000 +0100
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css	2009-06-30 22:05:16.000000000 +0200
@@ -0,0 +1,35 @@
+/* Reset */
+.o2k7SimpleSkin table, .o2k7SimpleSkin tbody, .o2k7SimpleSkin a, .o2k7SimpleSkin img, .o2k7SimpleSkin tr, .o2k7SimpleSkin div, .o2k7SimpleSkin td, .o2k7SimpleSkin iframe, .o2k7SimpleSkin span, .o2k7SimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000}
+
+/* Containers */
+.o2k7SimpleSkin {position:relative}
+.o2k7SimpleSkin table.mceLayout {background:#E5EFFD; border:1px solid #ABC6DD;}
+.o2k7SimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #ABC6DD;}
+.o2k7SimpleSkin .mceToolbar {height:26px;}
+
+/* Layout */
+.o2k7SimpleSkin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; }
+.o2k7SimpleSkin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px}
+.o2k7SimpleSkin span.mceIcon, .o2k7SimpleSkin img.mceIcon {display:block; width:20px; height:20px}
+.o2k7SimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
+
+/* Button */
+.o2k7SimpleSkin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px}
+.o2k7SimpleSkin a.mceButton span, .o2k7SimpleSkin a.mceButton img {margin:1px 0 0 1px}
+.o2k7SimpleSkin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}
+.o2k7SimpleSkin a.mceButtonActive {background-position:0 -44px}
+.o2k7SimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+
+/* Separator */
+.o2k7SimpleSkin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px}
+
+/* Theme */
+.o2k7SimpleSkin span.mce_bold {background-position:0 0}
+.o2k7SimpleSkin span.mce_italic {background-position:-60px 0}
+.o2k7SimpleSkin span.mce_underline {background-position:-140px 0}
+.o2k7SimpleSkin span.mce_strikethrough {background-position:-120px 0}
+.o2k7SimpleSkin span.mce_undo {background-position:-160px 0}
+.o2k7SimpleSkin span.mce_redo {background-position:-100px 0}
+.o2k7SimpleSkin span.mce_cleanup {background-position:-40px 0}
+.o2k7SimpleSkin span.mce_insertunorderedlist {background-position:-20px 0}
+.o2k7SimpleSkin span.mce_insertorderedlist {background-position:-80px 0}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_gzip.js 12/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_gzip.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_gzip.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_gzip.js	2009-06-30 22:01:34.000000000 +0200
@@ -1,152 +1,134 @@
-var tinyMCE_GZ = {
-	settings : {
-		plugins : 'style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras',
-		themes : 'simple,advanced',
-		languages : 'en',
-		disk_cache : true,
-		page_name : 'tiny_mce_gzip.php',
-		debug : false
-	},
-
-	init : function(s) {
-		var n, d = document, nl, i, b = '', sr, db;
-
-		this.isIE = (navigator.appName == "Microsoft Internet Explorer");
-		this.isOpera = navigator.userAgent.indexOf('Opera') != -1;
-
-		for (n in s)
-			this.settings[n] = s[n];
-
-		for (i=0, nl = d.getElementsByTagName('base'); i<nl.length; i++) {
-			if (nl[i].href)
-				b = nl[i].href;
-		}
-
-		for (i=0, nl = d.getElementsByTagName('script'); i<nl.length; i++) {
-			if (nl[i].src && nl[i].src.indexOf('tiny_mce_gzip') != -1) {
-				sr = nl[i].src;
-				sr = sr.substring(0, sr.lastIndexOf('/'));
-
-				if (b != '' && b.indexOf('://') == -1)
-					b += sr;
-				else
-					b = sr;
-			}
-		}
-
-		db = document.location.href;
-
-		if (db.indexOf('?') != -1)
-			db = db.substring(0, db.indexOf('?'));
-
-		db = db.substring(0, db.lastIndexOf('/'));
-
-		if (b.indexOf('://') == -1 && b.charAt(0) != '/')
-			b = db + "/" + b;
-
-		this.baseURL = b + '/';
-		this.load(this.settings.page_name);
-	},
-
-	load : function(v) {
-		var s = this.settings, h, d = document, sp2;
-
-		v += '?js=true&plugins=' + escape(s.plugins);
-		v += '&themes=' + escape(s.themes);
-		v += '&languages=' + escape(s.languages);
-		v += '&diskcache=' + (s.disk_cache ? 'true' : 'false');
-		//v += this.checkCompress() ? '' : '&compress=false';
-
-		this.loadFile(this.baseURL + v);
-	},
-
-	checkCompress : function() {
-		var sp2, ver, na = navigator, ua = navigator.userAgent;
-
-		// Non IE browsers are fine
-		if (!this.isIE)
-			return 1;
-
-		sp2 = na.appMinorVersion.indexOf('SP2') != -1;
-		ver = parseFloat(ua.match(/MSIE\s+([0-9\.]+)/)[1]);
-
-		// IE 6.0+ with SP2 seems fine
-		if (ver >= 6 && sp2)
-			return 1;
-
-		// IE 7.0+ seems fine
-		if (ver >= 7)
-			return 1;
-
-		// All others might fail
-		return 0;
-	},
-
-	loadFile : function(u) {
-		var x, ex;
-
-		if (this.settings['debug'])
-			alert('JS: ' + u);
-
-		if (this.isIE) {
-			// Synchronous AJAX load gzip JS file
-			try {
-				x = new ActiveXObject("Microsoft.XMLHTTP");
-			} catch (ex) {
-				x = new ActiveXObject("Msxml2.XMLHTTP");
-			}
-
-			x.open("GET", u.replace(/%2C/g, ','), false);
-			x.send(null);
-
-			this.scriptData = x.responseText;
-
-			document.write('<script type="text/javascript">eval(tinyMCE_GZ.scriptData);</script>');
-		} else
-			document.write('<script type="text/javascript" src="' + u + '"></script>');
-	},
-
-	start : function() {
-		var s = this.settings, p = TinyMCE_Engine.prototype;
-
-		p.__loadScript = p.loadScript;
-		p.__importThemeLanguagePack = p.importThemeLanguagePack;
-		p.__importPluginLanguagePack = p.importPluginLanguagePack;
-		p.__loadNextScript = p.loadNextScript;
-		p.loadScript = p.importThemeLanguagePack = p.importPluginLanguagePack = p.loadNextScript = function() {};
-		tinyMCE.baseURL = this.baseURL.substring(0, this.baseURL.length - 1);
-		tinyMCE.settings = {};
-		tinyMCE.srcMode = '';
-	},
-
-	end : function() {
-		var s = this.settings, l = tinyMCE.loadedFiles, la, i, p = TinyMCE_Engine.prototype;
-
-		this.addFiles(s.plugins, 'plugins', 'editor_plugin.js');
-		this.addFiles(s.themes, 'themes', 'editor_template.js');
-
-		la = s.languages.replace(/\s+/, '').split(',')
-		for (i=0; i<la.length; i++)
-			l[l.length] = this.baseURL + 'langs/' + la[i] + '.js';
-
-		p.loadScript = p.__loadScript;
-		p.importThemeLanguagePack = p.__importThemeLanguagePack;
-		p.importPluginLanguagePack = p.__importPluginLanguagePack;
-		p.loadNextScript = p.__loadNextScript;
-	},
-
-	addFiles : function(f, c, e) {
-		var i, a, s = this.settings, l = tinyMCE.loadedFiles, la, x;
-
-		a = f.replace(/\s+/, '').split(',');
-		for (i=0; i<a.length; i++) {
-			if (a[i]) {
-				l[l.length] = this.baseURL + c + '/' +  a[i] + '/' + e;
-
-				la = s.languages.replace(/\s+/, '').split(',')
-				for (x=0; x<la.length; x++)
-					l[l.length] = this.baseURL + c + '/' +  a[i] + '/langs/' + la[x] + '.js';
-			}
-		}
-	}
-};
+var tinyMCE_GZ = {
+	settings : {
+		themes : '',
+		plugins : '',
+		languages : '',
+		disk_cache : true,
+		page_name : 'tiny_mce_gzip.php',
+		debug : false,
+		suffix : ''
+	},
+
+	init : function(s, cb, sc) {
+		var t = this, n, i, nl = document.getElementsByTagName('script');
+
+		for (n in s)
+			t.settings[n] = s[n];
+
+		s = t.settings;
+
+		for (i=0; i<nl.length; i++) {
+			n = nl[i];
+
+			if (n.src && n.src.indexOf('tiny_mce') != -1)
+				t.baseURL = n.src.substring(0, n.src.lastIndexOf('/'));
+		}
+
+		if (!t.coreLoaded)
+			t.loadScripts(1, s.themes, s.plugins, s.languages, cb, sc);
+	},
+
+	loadScripts : function(co, th, pl, la, cb, sc) {
+		var t = this, x, w = window, q, c = 0, ti, s = t.settings;
+
+		function get(s) {
+			x = 0;
+
+			try {
+				x = new ActiveXObject(s);
+			} catch (s) {
+			}
+
+			return x;
+		};
+
+		// Build query string
+		q = 'js=true&diskcache=' + (s.disk_cache ? 'true' : 'false') + '&core=' + (co ? 'true' : 'false') + '&suffix=' + escape(s.suffix) + '&themes=' + escape(th) + '&plugins=' + escape(pl) + '&languages=' + escape(la);
+
+		if (co)
+			t.coreLoaded = 1;
+
+		// Send request
+		x = w.XMLHttpRequest ? new XMLHttpRequest() : get('Msxml2.XMLHTTP') || get('Microsoft.XMLHTTP');
+		x.overrideMimeType && x.overrideMimeType('text/javascript');
+		x.open('GET', t.baseURL + '/' + s.page_name + '?' + q, !!cb);
+//		x.setRequestHeader('Content-Type', 'text/javascript');
+		x.send('');
+
+		// Handle asyncronous loading
+		if (cb) {
+			// Wait for response
+			ti = w.setInterval(function() {
+				if (x.readyState == 4 || c++ > 10000) {
+					w.clearInterval(ti);
+
+					if (c < 10000 && x.status == 200) {
+						t.loaded = 1;
+						t.eval(x.responseText);
+						tinymce.dom.Event.domLoaded = true;
+						cb.call(sc || t, x);
+					}
+
+					ti = x = null;
+				}
+			}, 10);
+		} else
+			t.eval(x.responseText);
+	},
+
+	start : function() {
+		var t = this, each = tinymce.each, s = t.settings, ln = s.languages.split(',');
+
+		tinymce.suffix = s.suffix;
+
+		function load(u) {
+			tinymce.ScriptLoader.markDone(tinyMCE.baseURI.toAbsolute(u));
+		};
+
+		// Add core languages
+		each(ln, function(c) {
+			if (c)
+				load('langs/' + c + '.js');
+		});
+
+		// Add themes with languages
+		each(s.themes.split(','), function(n) {
+			if (n) {
+				load('themes/' + n + '/editor_template' + s.suffix + '.js');
+
+				each (ln, function(c) {
+					if (c)
+						load('themes/' + n + '/langs/' + c + '.js');
+				});
+			}
+		});
+
+		// Add plugins with languages
+		each(s.plugins.split(','), function(n) {
+			if (n) {
+				load('plugins/' + n + '/editor_plugin' + s.suffix + '.js');
+
+				each(ln, function(c) {
+					if (c)
+						load('plugins/' + n + '/langs/' + c + '.js');
+				});
+			}
+		});
+	},
+
+	end : function() {
+	},
+
+	eval : function(co) {
+		var w = window;
+
+		// Evaluate script
+		if (!w.execScript) {
+			if (/Gecko/.test(navigator.userAgent))
+				eval(co, w); // Firefox 3.0
+			else
+				eval.call(w, co);
+		} else
+			w.execScript(co); // IE
+	}
+};
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_gzip.php 12/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_gzip.php
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_gzip.php	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_gzip.php	2009-06-30 22:01:34.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
- * $Id: tiny_mce_gzip.php 10381 2008-06-01 03:35:53Z pasamio $
+ * $Id: tiny_mce_gzip.php 315 2007-10-25 14:03:43Z spocke $
  *
  * @author Moxiecode
  * @copyright Copyright © 2005-2006, Moxiecode Systems AB, All rights reserved.
@@ -10,6 +10,8 @@
  * Notice: This script defaults the button_tile_map option to true for extra performance.
  */
 
+	defined('_JEXEC') or die('Restricted access');
+
 	// Set the error reporting to minimal.
 	@error_reporting(E_ERROR | E_WARNING | E_PARSE);
 
@@ -20,6 +22,7 @@
 	$diskCache = getParam("diskcache", "") == "true";
 	$isJS = getParam("js", "") == "true";
 	$compress = getParam("compress", "true") == "true";
+	$core = getParam("core", "true") == "true";
 	$suffix = getParam("suffix", "_src") == "_src" ? "_src" : "";
 	$cachePath = realpath("."); // Cache path, this is where the .gz files will be stored
 	$expiresOffset = 3600 * 24 * 10; // Cache for 10 days in browser cache
@@ -52,7 +55,7 @@
 		if (!$cachePath)
 			die("alert('Real path failed.');");
 
-		$cacheKey = getParam("plugins", "") . getParam("languages", "") . getParam("themes", "");
+		$cacheKey = getParam("plugins", "") . getParam("languages", "") . getParam("themes", "") . $suffix;
 
 		foreach ($custom as $file)
 			$cacheKey .= $file;
@@ -84,10 +87,12 @@
 	}
 
 	// Add core
-	$content .= getFileContents("tiny_mce" . $suffix . ".js");
+	if ($core == "true") {
+		$content .= getFileContents("tiny_mce" . $suffix . ".js");
 
-	// Patch loading functions
-	$content .= "tinyMCE_GZ.start();";
+		// Patch loading functions
+		$content .= "tinyMCE_GZ.start();";
+	}
 
 	// Add core languages
 	foreach ($languages as $lang)
@@ -114,7 +119,8 @@
 		$content .= getFileContents($file);
 
 	// Restore loading functions
-	$content .= "tinyMCE_GZ.end();";
+	if ($core == "true")
+		$content .= "tinyMCE_GZ.end();";
 
 	// Generate GZIP'd content
 	if ($supportsGzip) {
@@ -176,4 +182,4 @@
 			fclose($fp);
 		}
 	}
-?>
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
+?>
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce.js 12/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce.js	2007-08-28 09:57:30.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce.js	2009-06-30 22:01:34.000000000 +0200
@@ -1 +1 @@
-function TinyMCE_Engine(){var ua;this.majorVersion="2";this.minorVersion="1.2";this.releaseDate="2007-08-21";this.instances=[];this.switchClassCache=[];this.windowArgs=[];this.loadedFiles=[];this.pendingFiles=[];this.loadingIndex=0;this.configs=[];this.currentConfig=0;this.eventHandlers=[];this.log=[];this.undoLevels=[];this.undoIndex=0;this.typingUndoIndex=-1;this.settings=[];ua=navigator.userAgent;this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.isMSIE5=this.isMSIE&&(ua.indexOf('MSIE 5')!=-1);this.isMSIE5_0=this.isMSIE&&(ua.indexOf('MSIE 5.0')!=-1);this.isMSIE7=this.isMSIE&&(ua.indexOf('MSIE 7')!=-1);this.isGecko=ua.indexOf('Gecko')!=-1;this.isSafari=ua.indexOf('Safari')!=-1;this.isOpera=window['opera']&&opera.buildNumber?true:false;this.isMac=ua.indexOf('Mac')!=-1;this.isNS7=ua.indexOf('Netscape/7')!=-1;this.isNS71=ua.indexOf('Netscape/7.1')!=-1;this.dialogCounter=0;this.plugins=[];this.themes=[];this.menus=[];this.loadedPlugins=[];this.buttonMap=[];this.isLoaded=false;if(this.isOpera){this.isMSIE=true;this.isGecko=false;this.isSafari=false}this.isIE=this.isMSIE;this.isRealIE=this.isMSIE&&!this.isOpera;this.idCounter=0};TinyMCE_Engine.prototype={init:function(settings){var theme,nl,baseHREF="",i,cssPath,entities,h,p,src,elements=[],head;if(this.isMSIE5_0)return;this.settings=settings;if(typeof(document.execCommand)=='undefined')return;if(!tinyMCE.baseURL){head=document.getElementsByTagName('head')[0];if(head){for(i=0,nl=head.getElementsByTagName('script');i<nl.length;i++)elements.push(nl[i])}for(i=0,nl=document.getElementsByTagName('script');i<nl.length;i++)elements.push(nl[i]);nl=document.getElementsByTagName('base');for(i=0;i<nl.length;i++){if(nl[i].href)baseHREF=nl[i].href}for(i=0;i<elements.length;i++){if(elements[i].src&&(elements[i].src.indexOf("tiny_mce.js")!=-1||elements[i].src.indexOf("tiny_mce_dev.js")!=-1||elements[i].src.indexOf("tiny_mce_src.js")!=-1||elements[i].src.indexOf("tiny_mce_gzip")!=-1)){src=elements[i].src;tinyMCE.srcMode=(src.indexOf('_src')!=-1||src.indexOf('_dev')!=-1)?'_src':'';tinyMCE.gzipMode=src.indexOf('_gzip')!=-1;src=src.substring(0,src.lastIndexOf('/'));if(settings.exec_mode=="src"||settings.exec_mode=="normal")tinyMCE.srcMode=settings.exec_mode=="src"?'_src':'';if(baseHREF!==''&&src.indexOf('://')==-1)tinyMCE.baseURL=baseHREF+src;else tinyMCE.baseURL=src;break}}}this.documentBasePath=document.location.href;if(this.documentBasePath.indexOf('?')!=-1)this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.indexOf('?'));this.documentURL=this.documentBasePath;this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.lastIndexOf('/'));if(tinyMCE.baseURL.indexOf('://')==-1&&tinyMCE.baseURL.charAt(0)!='/'){tinyMCE.baseURL=this.documentBasePath+"/"+tinyMCE.baseURL}this._def("mode","none");this._def("theme","advanced");this._def("plugins","",true);this._def("language","en");this._def("docs_language",this.settings.language);this._def("elements","");this._def("textarea_trigger","mce_editable");this._def("editor_selector","");this._def("editor_deselector","mceNoEditor");this._def("valid_elements","+a[id|style|rel|rev|charset|hreflang|dir|lang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],-strong/-b[class|style],-em/-i[class|style],-strike[class|style],-u[class|style],#p[id|style|dir|class|align],-ol[class|style],-ul[class|style],-li[class|style],br,img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border|alt=|title|hspace|vspace|width|height|align],-sub[style|class],-sup[style|class],-blockquote[dir|style],-table[border=0|cellspacing|cellpadding|width|height|class|align|summary|style|dir|id|lang|bgcolor|background|bordercolor],-tr[id|lang|dir|class|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor],tbody[id|class],thead[id|class],tfoot[id|class],#td[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor|scope],-th[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|scope],caption[id|lang|dir|class|style],-div[id|dir|class|align|style],-span[style|class|align],-pre[class|align|style],address[class|align|style],-h1[id|style|dir|class|align],-h2[id|style|dir|class|align],-h3[id|style|dir|class|align],-h4[id|style|dir|class|align],-h5[id|style|dir|class|align],-h6[id|style|dir|class|align],hr[class|style],-font[face|size|style|id|class|dir|color],dd[id|class|title|style|dir|lang],dl[id|class|title|style|dir|lang],dt[id|class|title|style|dir|lang],cite[title|id|class|style|dir|lang],abbr[title|id|class|style|dir|lang],acronym[title|id|class|style|dir|lang],del[title|id|class|style|dir|lang|datetime|cite],ins[title|id|class|style|dir|lang|datetime|cite]");this._def("extended_valid_elements","");this._def("invalid_elements","");this._def("encoding","");this._def("urlconverter_callback",tinyMCE.getParam("urlconvertor_callback","TinyMCE_Engine.prototype.convertURL"));this._def("save_callback","");this._def("force_br_newlines",false);this._def("force_p_newlines",true);this._def("add_form_submit_trigger",true);this._def("relative_urls",true);this._def("remove_script_host",true);this._def("focus_alert",true);this._def("document_base_url",this.documentURL);this._def("visual",true);this._def("visual_table_class","mceVisualAid");this._def("setupcontent_callback","");this._def("fix_content_duplication",true);this._def("custom_undo_redo",true);this._def("custom_undo_redo_levels",-1);this._def("custom_undo_redo_keyboard_shortcuts",true);this._def("custom_undo_redo_restore_selection",true);this._def("custom_undo_redo_global",false);this._def("verify_html",true);this._def("apply_source_formatting",false);this._def("directionality","ltr");this._def("cleanup_on_startup",false);this._def("inline_styles",false);this._def("convert_newlines_to_brs",false);this._def("auto_reset_designmode",true);this._def("entities","39,#39,160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,34,quot,38,amp,60,lt,62,gt,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro",true);this._def("entity_encoding","named");this._def("cleanup_callback","");this._def("add_unload_trigger",true);this._def("ask",false);this._def("nowrap",false);this._def("auto_resize",false);this._def("auto_focus",false);this._def("cleanup",true);this._def("remove_linebreaks",true);this._def("button_tile_map",false);this._def("submit_patch",true);this._def("browsers","msie,safari,gecko,opera",true);this._def("dialog_type","window");this._def("accessibility_warnings",true);this._def("accessibility_focus",true);this._def("merge_styles_invalid_parents","");this._def("force_hex_style_colors",true);this._def("trim_span_elements",true);this._def("convert_fonts_to_spans",false);this._def("doctype",'<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">');this._def("font_size_classes",'');this._def("font_size_style_values",'xx-small,x-small,small,medium,large,x-large,xx-large',true);this._def("event_elements",'a,img',true);this._def("convert_urls",true);this._def("table_inline_editing",false);this._def("object_resizing",true);this._def("custom_shortcuts",true);this._def("convert_on_click",false);this._def("content_css",'');this._def("fix_list_elements",true);this._def("fix_table_elements",false);this._def("strict_loading_mode",document.contentType=='application/xhtml+xml');this._def("hidden_tab_class",'');this._def("display_tab_class",'');this._def("gecko_spellcheck",false);this._def("hide_selects_on_submit",true);this._def("forced_root_block",false);this._def("remove_trailing_nbsp",false);this._def("save_on_tinymce_forms",false);if(this.isMSIE&&!this.isOpera)this.settings.strict_loading_mode=false;if(this.isMSIE&&this.settings.browsers.indexOf('msie')==-1)return;if(this.isGecko&&this.settings.browsers.indexOf('gecko')==-1)return;if(this.isSafari&&this.settings.browsers.indexOf('safari')==-1)return;if(this.isOpera&&this.settings.browsers.indexOf('opera')==-1)return;baseHREF=tinyMCE.settings.document_base_url;h=document.location.href;p=h.indexOf('://');if(p>0&&document.location.protocol!="file:"){p=h.indexOf('/',p+3);h=h.substring(0,p);if(baseHREF.indexOf('://')==-1)baseHREF=h+baseHREF;tinyMCE.settings.document_base_url=baseHREF;tinyMCE.settings.document_base_prefix=h}if(baseHREF.indexOf('?')!=-1)baseHREF=baseHREF.substring(0,baseHREF.indexOf('?'));this.settings.base_href=baseHREF.substring(0,baseHREF.lastIndexOf('/'))+"/";theme=this.settings.theme;this.inlineStrict='A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment';this.inlineTransitional='A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment';this.blockElms='H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP';this.blockRegExp=new RegExp("^("+this.blockElms+")$","i");this.posKeyCodes=[13,45,36,35,33,34,37,38,39,40];this.uniqueURL='javascript:void(091039730);';this.uniqueTag='<div id="mceTMPElement" style="display: none">TMP</div>';this.callbacks=['onInit','getInfo','getEditorTemplate','setupContent','onChange','onPageLoad','handleNodeChange','initInstance','execCommand','getControlHTML','handleEvent','cleanup','removeInstance'];this.settings.theme_href=tinyMCE.baseURL+"/themes/"+theme;if(!tinyMCE.isIE||tinyMCE.isOpera)this.settings.force_br_newlines=false;if(tinyMCE.getParam("popups_css",false)){cssPath=tinyMCE.getParam("popups_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings.popups_css=this.documentBasePath+"/"+cssPath;else this.settings.popups_css=cssPath}else this.settings.popups_css=tinyMCE.baseURL+"/themes/"+theme+"/css/editor_popup.css";if(tinyMCE.getParam("editor_css",false)){cssPath=tinyMCE.getParam("editor_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings.editor_css=this.documentBasePath+"/"+cssPath;else this.settings.editor_css=cssPath}else{if(this.settings.editor_css!=='')this.settings.editor_css=tinyMCE.baseURL+"/themes/"+theme+"/css/editor_ui.css"}if(this.configs.length==0){if(typeof(TinyMCECompressed)=="undefined"){tinyMCE.addEvent(window,"DOMContentLoaded",TinyMCE_Engine.prototype.onLoad);if(tinyMCE.isRealIE){if(document.body)tinyMCE.addEvent(document.body,"readystatechange",TinyMCE_Engine.prototype.onLoad);else tinyMCE.addEvent(document,"readystatechange",TinyMCE_Engine.prototype.onLoad)}tinyMCE.addEvent(window,"load",TinyMCE_Engine.prototype.onLoad);tinyMCE._addUnloadEvents()}}this.loadScript(tinyMCE.baseURL+'/themes/'+this.settings.theme+'/editor_template'+tinyMCE.srcMode+'.js');this.loadScript(tinyMCE.baseURL+'/langs/'+this.settings.language+'.js');this.loadCSS(this.settings.editor_css);p=tinyMCE.getParam('plugins','',true,',');if(p.length>0){for(i=0;i<p.length;i++){if(p[i].charAt(0)!='-')this.loadScript(tinyMCE.baseURL+'/plugins/'+p[i]+'/editor_plugin'+tinyMCE.srcMode+'.js')}}if(tinyMCE.getParam('entity_encoding')=='named'){settings.cleanup_entities=[];entities=tinyMCE.getParam('entities','',true,',');for(i=0;i<entities.length;i+=2)settings.cleanup_entities['c'+entities[i]]=entities[i+1]}settings.index=this.configs.length;this.configs[this.configs.length]=settings;this.loadNextScript();if(this.isIE&&!this.isOpera){try{document.execCommand('BackgroundImageCache',false,true)}catch(e){}}this.xmlEncodeRe=new RegExp('[<>&"]','g')},_addUnloadEvents:function(){var st=tinyMCE.settings.add_unload_trigger;if(tinyMCE.isIE){if(st){tinyMCE.addEvent(window,"unload",TinyMCE_Engine.prototype.unloadHandler);tinyMCE.addEvent(window.document,"beforeunload",TinyMCE_Engine.prototype.unloadHandler)}}else{if(st)tinyMCE.addEvent(window,"unload",function(){tinyMCE.triggerSave(true,true)})}},_def:function(key,def_val,t){var v=tinyMCE.getParam(key,def_val);v=t?v.replace(/\s+/g,""):v;this.settings[key]=v},hasPlugin:function(n){return typeof(this.plugins[n])!="undefined"&&this.plugins[n]!=null},addPlugin:function(n,p){var op=this.plugins[n];p.baseURL=op?op.baseURL:tinyMCE.baseURL+"/plugins/"+n;this.plugins[n]=p;this.loadNextScript()},setPluginBaseURL:function(n,u){var op=this.plugins[n];if(op)op.baseURL=u;else this.plugins[n]={baseURL:u}},loadPlugin:function(n,u){u=u.indexOf('.js')!=-1?u.substring(0,u.lastIndexOf('/')):u;u=u.charAt(u.length-1)=='/'?u.substring(0,u.length-1):u;this.plugins[n]={baseURL:u};this.loadScript(u+"/editor_plugin"+(tinyMCE.srcMode?'_src':'')+".js")},hasTheme:function(n){return typeof(this.themes[n])!="undefined"&&this.themes[n]!=null},addTheme:function(n,t){this.themes[n]=t;this.loadNextScript()},addMenu:function(n,m){this.menus[n]=m},hasMenu:function(n){return typeof(this.plugins[n])!="undefined"&&this.plugins[n]!=null},loadScript:function(url){var i;for(i=0;i<this.loadedFiles.length;i++){if(this.loadedFiles[i]==url)return}if(tinyMCE.settings.strict_loading_mode)this.pendingFiles[this.pendingFiles.length]=url;else document.write('<sc'+'ript language="javascript" type="text/javascript" src="'+url+'"></script>');this.loadedFiles[this.loadedFiles.length]=url},loadNextScript:function(){var d=document,se;if(!tinyMCE.settings.strict_loading_mode)return;if(this.loadingIndex<this.pendingFiles.length){se=d.createElementNS('http://www.w3.org/1999/xhtml','script');se.setAttribute('language','javascript');se.setAttribute('type','text/javascript');se.setAttribute('src',this.pendingFiles[this.loadingIndex++]);d.getElementsByTagName("head")[0].appendChild(se)}else this.loadingIndex=-1;},loadCSS:function(url){var ar=url.replace(/\s+/,'').split(',');var lflen=0,csslen=0,skip=false;var x=0,i=0,nl,le;for(x=0,csslen=ar.length;x<csslen;x++){if(ar[x]!=null&&ar[x]!='null'&&ar[x].length>0){for(i=0,lflen=this.loadedFiles.length;i<lflen;i++){if(this.loadedFiles[i]==ar[x]){skip=true;break}}if(!skip){if(tinyMCE.settings.strict_loading_mode){nl=document.getElementsByTagName("head");le=document.createElement('link');le.setAttribute('href',ar[x]);le.setAttribute('rel','stylesheet');le.setAttribute('type','text/css');nl[0].appendChild(le)}else document.write('<link href="'+ar[x]+'" rel="stylesheet" type="text/css" />');this.loadedFiles[this.loadedFiles.length]=ar[x]}}}},importCSS:function(doc,css){var css_ary=css.replace(/\s+/,'').split(',');var csslen,elm,headArr,x,css_file;for(x=0,csslen=css_ary.length;x<csslen;x++){css_file=css_ary[x];if(css_file!=null&&css_file!='null'&&css_file.length>0){if(css_file.indexOf('://')==-1&&css_file.charAt(0)!='/')css_file=this.documentBasePath+"/"+css_file;if(typeof(doc.createStyleSheet)=="undefined"){elm=doc.createElement("link");elm.rel="stylesheet";elm.href=css_file;if((headArr=doc.getElementsByTagName("head"))!=null&&headArr.length>0)headArr[0].appendChild(elm)}else doc.createStyleSheet(css_file)}}},confirmAdd:function(e,settings){var elm=tinyMCE.isIE?event.srcElement:e.target;var elementId=elm.name?elm.name:elm.id;tinyMCE.settings=settings;if(tinyMCE.settings.convert_on_click||(!elm.getAttribute('mce_noask')&&confirm(tinyMCELang.lang_edit_confirm)))tinyMCE.addMCEControl(elm,elementId);elm.setAttribute('mce_noask','true')},updateContent:function(form_element_name){var formElement,n,inst,doc;formElement=document.getElementById(form_element_name);for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.switchSettings();if(inst.formElement==formElement){doc=inst.getDoc();tinyMCE._setHTML(doc,inst.formElement.value);if(!tinyMCE.isIE)doc.body.innerHTML=tinyMCE._cleanupHTML(inst,doc,this.settings,doc.body,inst.visualAid)}}},addMCEControl:function(replace_element,form_element_name,target_document){var id="mce_editor_"+tinyMCE.idCounter++;var inst=new TinyMCE_Control(tinyMCE.settings);inst.editorId=id;this.instances[id]=inst;inst._onAdd(replace_element,form_element_name,target_document)},removeInstance:function(ti){var t=[],n,i;for(n in tinyMCE.instances){i=tinyMCE.instances[n];if(tinyMCE.isInstance(i)&&ti!=i)t[n]=i}tinyMCE.instances=t;n=[];t=tinyMCE.undoLevels;for(i=0;i<t.length;i++){if(t[i]!=ti)n.push(t[i])}tinyMCE.undoLevels=n;tinyMCE.undoIndex=n.length;tinyMCE.dispatchCallback(ti,'remove_instance_callback','removeInstance',ti);return ti},removeMCEControl:function(editor_id){var inst=tinyMCE.getInstanceById(editor_id),h,re,ot,tn,n;if(inst){inst.switchSettings();editor_id=inst.editorId;h=tinyMCE.getContent(editor_id);this.removeInstance(inst);tinyMCE.selectedElement=null;tinyMCE.selectedInstance=null;tinyMCE.selectedElement=null;tinyMCE.selectedInstance=null;for(n in tinyMCE.instances){if(!tinyMCE.isInstance(tinyMCE.instances[n]))continue;tinyMCE.selectedInstance=tinyMCE.instances[n];break}re=document.getElementById(editor_id+"_parent");ot=inst.oldTargetElement;tn=ot.nodeName.toLowerCase();if(tn=="textarea"||tn=="input"){re.parentNode.removeChild(re);ot.style.display="inline";ot.value=h}else{ot.innerHTML=h;ot.style.display='block';re.parentNode.insertBefore(ot,re);re.parentNode.removeChild(re)}}},triggerSave:function(skip_cleanup,skip_callback){var inst,n;if(typeof(skip_cleanup)=="undefined")skip_cleanup=false;if(typeof(skip_callback)=="undefined")skip_callback=false;for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.triggerSave(skip_cleanup,skip_callback)}},resetForm:function(form_index){var i,inst,n,formObj=document.forms[form_index];for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.switchSettings();for(i=0;i<formObj.elements.length;i++){if(inst.formTargetElementId==formObj.elements[i].name)inst.getBody().innerHTML=inst.startContent}}},execInstanceCommand:function(editor_id,command,user_interface,value,focus){var inst=tinyMCE.getInstanceById(editor_id),r;if(inst){r=inst.selection.getRng();if(typeof(focus)=="undefined")focus=true;if(focus&&(!r||!r.item))inst.contentWindow.focus();inst.autoResetDesignMode();this.selectedElement=inst.getFocusElement();inst.select();tinyMCE.execCommand(command,user_interface,value);if(tinyMCE.isIE&&window.event!=null)tinyMCE.cancelEvent(window.event)}},execCommand:function(command,user_interface,value){var inst=tinyMCE.selectedInstance,n,pe,te;user_interface=user_interface?user_interface:false;value=value?value:null;if(inst)inst.switchSettings();switch(command){case"Undo":if(this.getParam('custom_undo_redo_global')){if(this.undoIndex>0){tinyMCE.nextUndoRedoAction='Undo';inst=this.undoLevels[--this.undoIndex];inst.select();if(!tinyMCE.nextUndoRedoInstanceId)inst.execCommand('Undo')}}else inst.execCommand('Undo');return true;case"Redo":if(this.getParam('custom_undo_redo_global')){if(this.undoIndex<=this.undoLevels.length-1){tinyMCE.nextUndoRedoAction='Redo';inst=this.undoLevels[this.undoIndex++];inst.select();if(!tinyMCE.nextUndoRedoInstanceId)inst.execCommand('Redo')}}else inst.execCommand('Redo');return true;case'mceFocus':inst=tinyMCE.getInstanceById(value);if(inst)inst.getWin().focus();return;case"mceAddControl":case"mceAddEditor":tinyMCE.addMCEControl(tinyMCE._getElementById(value),value);return;case"mceAddFrameControl":tinyMCE.addMCEControl(tinyMCE._getElementById(value.element,value.document),value.element,value.document);return;case"mceRemoveControl":case"mceRemoveEditor":tinyMCE.removeMCEControl(value);return;case"mceToggleEditor":inst=tinyMCE.getInstanceById(value);if(inst){pe=document.getElementById(inst.editorId+'_parent');te=inst.oldTargetElement;if(typeof(inst.enabled)=='undefined')inst.enabled=true;inst.enabled=!inst.enabled;if(!inst.enabled){pe.style.display='none';if(te.nodeName=='TEXTAREA'||te.nodeName=='INPUT')te.value=inst.getHTML();else te.innerHTML=inst.getHTML();te.style.display=inst.oldTargetDisplay;tinyMCE.dispatchCallback(inst,'hide_instance_callback','hideInstance',inst)}else{pe.style.display='block';te.style.display='none';if(te.nodeName=='TEXTAREA'||te.nodeName=='INPUT')inst.setHTML(te.value);else inst.setHTML(te.innerHTML);inst.useCSS=false;tinyMCE.dispatchCallback(inst,'show_instance_callback','showInstance',inst)}}else tinyMCE.addMCEControl(tinyMCE._getElementById(value),value);return;case"mceResetDesignMode":if(tinyMCE.isGecko){for(n in tinyMCE.instances){if(!tinyMCE.isInstance(tinyMCE.instances[n]))continue;try{tinyMCE.instances[n].getDoc().designMode="off";tinyMCE.instances[n].getDoc().designMode="on";tinyMCE.instances[n].useCSS=false}catch(e){}}}return}if(inst){inst.execCommand(command,user_interface,value)}else if(tinyMCE.settings.focus_alert)alert(tinyMCELang.lang_focus_alert)},_createIFrame:function(replace_element,doc,win){var iframe,id=replace_element.getAttribute("id");var aw,ah;if(typeof(doc)=="undefined")doc=document;if(typeof(win)=="undefined")win=window;iframe=doc.createElement("iframe");aw=""+tinyMCE.settings.area_width;ah=""+tinyMCE.settings.area_height;if(aw.indexOf('%')==-1){aw=parseInt(aw);aw=(isNaN(aw)||aw<0)?300:aw;aw=aw+"px"}if(ah.indexOf('%')==-1){ah=parseInt(ah);ah=(isNaN(ah)||ah<0)?240:ah;ah=ah+"px"}iframe.setAttribute("id",id);iframe.setAttribute("name",id);iframe.setAttribute("class","mceEditorIframe");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",aw);iframe.setAttribute("height",ah);iframe.setAttribute("allowtransparency","true");iframe.className='mceEditorIframe';if(tinyMCE.settings.auto_resize)iframe.setAttribute("scrolling","no");if(tinyMCE.isRealIE)iframe.setAttribute("src",this.settings.default_document);iframe.style.width=aw;iframe.style.height=ah;if(tinyMCE.settings.strict_loading_mode)iframe.style.marginBottom='-5px';if(tinyMCE.isRealIE)replace_element.outerHTML=iframe.outerHTML;else replace_element.parentNode.replaceChild(iframe,replace_element);if(tinyMCE.isRealIE)return win.frames[id];else return iframe},setupContent:function(editor_id){var inst=tinyMCE.instances[editor_id],i,doc=inst.getDoc(),head=doc.getElementsByTagName('head').item(0);var content=inst.startContent,contentElement,body;if(tinyMCE.settings.strict_loading_mode){content=content.replace(/&lt;/g,'<');content=content.replace(/&gt;/g,'>');content=content.replace(/&quot;/g,'"');content=content.replace(/&amp;/g,'&')}tinyMCE.selectedInstance=inst;inst.switchSettings();if(!tinyMCE.isIE&&tinyMCE.getParam("setupcontent_reload",false)&&doc.title!="blank_page"){try{doc.location.href=tinyMCE.baseURL+"/blank.htm"}catch(ex){}window.setTimeout("tinyMCE.setupContent('"+editor_id+"');",1000);return}if(!head||!doc.body){window.setTimeout("tinyMCE.setupContent('"+editor_id+"');",10);return}tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/themes/"+inst.settings.theme+"/css/editor_content.css");tinyMCE.importCSS(inst.getDoc(),inst.settings.content_css);tinyMCE.dispatchCallback(inst,'init_instance_callback','initInstance',inst);if(tinyMCE.getParam('custom_undo_redo_keyboard_shortcuts')){inst.addShortcut('ctrl','z','lang_undo_desc','Undo');inst.addShortcut('ctrl','y','lang_redo_desc','Redo')}for(i=1;i<=6;i++)inst.addShortcut('ctrl',''+i,'','FormatBlock',false,'<h'+i+'>');inst.addShortcut('ctrl','7','','FormatBlock',false,'<p>');inst.addShortcut('ctrl','8','','FormatBlock',false,'<div>');inst.addShortcut('ctrl','9','','FormatBlock',false,'<address>');if(tinyMCE.isGecko){inst.addShortcut('ctrl','b','lang_bold_desc','Bold');inst.addShortcut('ctrl','i','lang_italic_desc','Italic');inst.addShortcut('ctrl','u','lang_underline_desc','Underline')}if(tinyMCE.getParam("convert_fonts_to_spans"))inst.getBody().setAttribute('id','mceSpanFonts');if(tinyMCE.settings.nowrap)doc.body.style.whiteSpace="nowrap";doc.body.dir=this.settings.directionality;doc.editorId=editor_id;if(!tinyMCE.isIE)doc.documentElement.editorId=editor_id;inst.setBaseHREF(tinyMCE.settings.base_href);if(tinyMCE.settings.convert_newlines_to_brs){content=tinyMCE.regexpReplace(content,"\r\n","<br />","gi");content=tinyMCE.regexpReplace(content,"\r","<br />","gi");content=tinyMCE.regexpReplace(content,"\n","<br />","gi")}content=tinyMCE.storeAwayURLs(content);content=tinyMCE._customCleanup(inst,"insert_to_editor",content);if(tinyMCE.isIE){window.setInterval('try{tinyMCE.getCSSClasses(tinyMCE.instances["'+editor_id+'"].getDoc(), "'+editor_id+'");}catch(e){}',500);if(tinyMCE.settings.force_br_newlines)doc.styleSheets[0].addRule("p","margin: 0;");body=inst.getBody();body.editorId=editor_id}content=tinyMCE.cleanupHTMLCode(content);if(!tinyMCE.isIE){contentElement=inst.getDoc().createElement("body");doc=inst.getDoc();contentElement.innerHTML=content;if(tinyMCE.settings.cleanup_on_startup)tinyMCE.setInnerHTML(inst.getBody(),tinyMCE._cleanupHTML(inst,doc,this.settings,contentElement));else tinyMCE.setInnerHTML(inst.getBody(),content);tinyMCE.convertAllRelativeURLs(inst.getBody())}else{if(tinyMCE.settings.cleanup_on_startup){tinyMCE._setHTML(inst.getDoc(),content);try{tinyMCE.setInnerHTML(inst.getBody(),tinyMCE._cleanupHTML(inst,inst.contentDocument,this.settings,inst.getBody()))}catch(e){}}else tinyMCE._setHTML(inst.getDoc(),content)}tinyMCE.handleVisualAid(inst.getBody(),true,tinyMCE.settings.visual,inst);tinyMCE.dispatchCallback(inst,'setupcontent_callback','setupContent',editor_id,inst.getBody(),inst.getDoc());if(!tinyMCE.isIE)tinyMCE.addEventHandlers(inst);if(tinyMCE.isIE){tinyMCE.addEvent(inst.getBody(),"blur",TinyMCE_Engine.prototype._eventPatch);tinyMCE.addEvent(inst.getBody(),"beforedeactivate",TinyMCE_Engine.prototype._eventPatch);if(!tinyMCE.isOpera){tinyMCE.addEvent(doc.body,"mousemove",TinyMCE_Engine.prototype.onMouseMove);tinyMCE.addEvent(doc.body,"beforepaste",TinyMCE_Engine.prototype._eventPatch);tinyMCE.addEvent(doc.body,"drop",TinyMCE_Engine.prototype._eventPatch)}}inst.select();tinyMCE.selectedElement=inst.contentWindow.document.body;tinyMCE._customCleanup(inst,"insert_to_editor_dom",inst.getBody());tinyMCE._customCleanup(inst,"setup_content_dom",inst.getBody());tinyMCE._setEventsEnabled(inst.getBody(),false);tinyMCE.cleanupAnchors(inst.getDoc());if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(inst.getDoc());inst.startContent=tinyMCE.trim(inst.getBody().innerHTML);inst.undoRedo.add({content:inst.startContent});if(tinyMCE.isGecko){tinyMCE.selectNodes(inst.getBody(),function(n){if(n.nodeType==3||n.nodeType==8)n.nodeValue=n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"','gi'),"");return false})}if(tinyMCE.isGecko)inst.getBody().spellcheck=tinyMCE.getParam("gecko_spellcheck");tinyMCE._removeInternal(inst.getBody());inst.select();tinyMCE.triggerNodeChange(false,true)},storeAwayURLs:function(s){if(!s.match(/(mce_src|mce_href)/gi,s)){s=s.replace(new RegExp('src\\s*=\\s*\"([^ >\"]*)\"','gi'),'src="$1" mce_src="$1"');s=s.replace(new RegExp('href\\s*=\\s*\"([^ >\"]*)\"','gi'),'href="$1" mce_href="$1"')}return s},_removeInternal:function(n){if(tinyMCE.isGecko){tinyMCE.selectNodes(n,function(n){if(n.nodeType==3||n.nodeType==8)n.nodeValue=n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"','gi'),"");return false})}},removeTinyMCEFormElements:function(form_obj){var i,elementId;if(!tinyMCE.getParam('hide_selects_on_submit'))return;if(typeof(form_obj)=="undefined"||form_obj==null)return;if(form_obj.nodeName!="FORM"){if(form_obj.form)form_obj=form_obj.form;else form_obj=tinyMCE.getParentElement(form_obj,"form")}if(form_obj==null)return;for(i=0;i<form_obj.elements.length;i++){elementId=form_obj.elements[i].name?form_obj.elements[i].name:form_obj.elements[i].id;if(elementId.indexOf('mce_editor_')==0)form_obj.elements[i].disabled=true}},handleEvent:function(e){var inst=tinyMCE.selectedInstance,i,elm,keys;if(typeof(tinyMCE)=="undefined")return true;if(tinyMCE.executeCallback(tinyMCE.selectedInstance,'handle_event_callback','handleEvent',e))return false;switch(e.type){case"beforedeactivate":case"blur":if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.execCommand('mceEndTyping');tinyMCE.hideMenus();return;case"drop":case"beforepaste":if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.setBaseHREF(null);if(tinyMCE.isRealIE){var ife=tinyMCE.selectedInstance.iframeElement;if(ife.style.height.indexOf('%')!=-1){ife._oldHeight=ife.style.height;ife.style.height=ife.clientHeight}}window.setTimeout("tinyMCE.selectedInstance.setBaseHREF(tinyMCE.settings.base_href);tinyMCE._resetIframeHeight();",1);return;case"submit":tinyMCE.formSubmit(tinyMCE.isMSIE?window.event.srcElement:e.target);return;case"reset":var formObj=tinyMCE.isIE?window.event.srcElement:e.target;for(i=0;i<document.forms.length;i++){if(document.forms[i]==formObj)window.setTimeout('tinyMCE.resetForm('+i+');',10)}return;case"keypress":if(inst&&inst.handleShortcut(e))return false;if(e.target.editorId){tinyMCE.instances[e.target.editorId].select()}else{if(e.target.ownerDocument.editorId)tinyMCE.instances[e.target.ownerDocument.editorId].select()}if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.switchSettings();if((tinyMCE.isGecko||tinyMCE.isOpera||tinyMCE.isSafari)&&tinyMCE.settings.force_p_newlines&&e.keyCode==13&&!e.shiftKey){if(TinyMCE_ForceParagraphs._insertPara(tinyMCE.selectedInstance,e)){tinyMCE.execCommand("mceAddUndoLevel");return tinyMCE.cancelEvent(e)}}if((tinyMCE.isGecko&&!tinyMCE.isSafari)&&tinyMCE.settings.force_p_newlines&&(e.keyCode==8||e.keyCode==46)&&!e.shiftKey){if(TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance,e.type)){tinyMCE.execCommand("mceAddUndoLevel");return tinyMCE.cancelEvent(e)}}if(tinyMCE.isIE&&tinyMCE.settings.force_br_newlines&&e.keyCode==13){if(e.target.editorId)tinyMCE.instances[e.target.editorId].select();if(tinyMCE.selectedInstance){var sel=tinyMCE.selectedInstance.getDoc().selection;var rng=sel.createRange();if(tinyMCE.getParentElement(rng.parentElement(),"li")!=null)return false;e.returnValue=false;e.cancelBubble=true;rng.pasteHTML("<br />");rng.collapse(false);rng.select();tinyMCE.execCommand("mceAddUndoLevel");tinyMCE.triggerNodeChange(false);return false}}if(e.keyCode==8||e.keyCode==46){tinyMCE.selectedElement=e.target;tinyMCE.linkElement=tinyMCE.getParentElement(e.target,"a");tinyMCE.imgElement=tinyMCE.getParentElement(e.target,"img");tinyMCE.triggerNodeChange(false)}return false;case"keyup":case"keydown":tinyMCE.hideMenus();tinyMCE.hasMouseMoved=false;if(inst&&inst.handleShortcut(e))return false;inst._fixRootBlocks();if(inst.settings.remove_trailing_nbsp)inst._fixTrailingNbsp();if(e.target.editorId)tinyMCE.instances[e.target.editorId].select();if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.switchSettings();inst=tinyMCE.selectedInstance;if(tinyMCE.isGecko&&tinyMCE.settings.force_p_newlines&&(e.keyCode==8||e.keyCode==46)&&!e.shiftKey){if(TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance,e.type)){tinyMCE.execCommand("mceAddUndoLevel");e.preventDefault();return false}}tinyMCE.selectedElement=null;tinyMCE.selectedNode=null;elm=tinyMCE.selectedInstance.getFocusElement();tinyMCE.linkElement=tinyMCE.getParentElement(elm,"a");tinyMCE.imgElement=tinyMCE.getParentElement(elm,"img");tinyMCE.selectedElement=elm;if(tinyMCE.isGecko&&e.type=="keyup"&&e.keyCode==9)tinyMCE.handleVisualAid(tinyMCE.selectedInstance.getBody(),true,tinyMCE.settings.visual,tinyMCE.selectedInstance);if(tinyMCE.isIE&&e.type=="keydown"&&e.keyCode==13)tinyMCE.enterKeyElement=tinyMCE.selectedInstance.getFocusElement();if(tinyMCE.isIE&&e.type=="keyup"&&e.keyCode==13){elm=tinyMCE.enterKeyElement;if(elm){var re=new RegExp('^HR|IMG|BR$','g');var dre=new RegExp('^H[1-6]$','g');if(!elm.hasChildNodes()&&!re.test(elm.nodeName)){if(dre.test(elm.nodeName))elm.innerHTML="&nbsp;&nbsp;";else elm.innerHTML="&nbsp;"}}}keys=tinyMCE.posKeyCodes;var posKey=false;for(i=0;i<keys.length;i++){if(keys[i]==e.keyCode){posKey=true;break}}if(tinyMCE.isIE&&tinyMCE.settings.custom_undo_redo){keys=[8,46];for(i=0;i<keys.length;i++){if(keys[i]==e.keyCode){if(e.type=="keyup")tinyMCE.triggerNodeChange(false)}}}if(e.keyCode==17)return true;if(tinyMCE.isGecko){if(!posKey&&e.type=="keyup"&&!e.ctrlKey||(e.ctrlKey&&(e.keyCode==86||e.keyCode==88)))tinyMCE.execCommand("mceStartTyping")}else{if(!posKey&&e.type=="keyup")tinyMCE.execCommand("mceStartTyping")}if(e.type=="keydown"&&(posKey||e.ctrlKey)&&inst)inst.undoBookmark=inst.selection.getBookmark();if(e.type=="keyup"&&(posKey||e.ctrlKey))tinyMCE.execCommand("mceEndTyping");if(posKey&&e.type=="keyup")tinyMCE.triggerNodeChange(false);if(tinyMCE.isIE&&e.ctrlKey)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);break;case"mousedown":case"mouseup":case"click":case"dblclick":case"focus":tinyMCE.hideMenus();if(tinyMCE.selectedInstance){tinyMCE.selectedInstance.switchSettings();tinyMCE.selectedInstance.isFocused=true}var targetBody=tinyMCE.getParentElement(e.target,"html");for(var instanceName in tinyMCE.instances){if(!tinyMCE.isInstance(tinyMCE.instances[instanceName]))continue;inst=tinyMCE.instances[instanceName];inst.autoResetDesignMode();if(inst.getBody().parentNode==targetBody){inst.select();tinyMCE.selectedElement=e.target;tinyMCE.linkElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"a");tinyMCE.imgElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"img");break}}if(!tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark&&(e.type=="mouseup"||e.type=="dblclick"))tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark=tinyMCE.selectedInstance.selection.getBookmark();if(e.type!="focus")tinyMCE.selectedNode=null;tinyMCE.triggerNodeChange(false);tinyMCE.execCommand("mceEndTyping");if(e.type=="mouseup")tinyMCE.execCommand("mceAddUndoLevel");if(!tinyMCE.selectedInstance&&e.target.editorId)tinyMCE.instances[e.target.editorId].select();return false}},getButtonHTML:function(id,lang,img,cmd,ui,val){var h='',m,x,io='';cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+cmd+'\'';if(typeof(ui)!="undefined"&&ui!=null)cmd+=','+ui;if(typeof(val)!="undefined"&&val!=null)cmd+=",'"+val+"'";cmd+=');';if(tinyMCE.isRealIE)io='onmouseover="tinyMCE.lastHover = this;"';if(tinyMCE.getParam('button_tile_map')&&(!tinyMCE.isIE||tinyMCE.isOpera)&&(m=this.buttonMap[id])!=null&&(tinyMCE.getParam("language")=="en"||img.indexOf('$lang')==-1)){x=0-(m*20)==0?'0':0-(m*20);h+='<a id="{$editor_id}_'+id+'" href="javascript:'+cmd+'" onclick="'+cmd+'return false;" onmousedown="return false;" '+io+' class="mceTiledButton mceButtonNormal" target="_self">';h+='<img src="{$themeurl}/images/spacer.gif" style="background-position: '+x+'px 0" alt="{$'+lang+'}" title="{$'+lang+'}" />';h+='</a>'}else{h+='<a id="{$editor_id}_'+id+'" href="javascript:'+cmd+'" onclick="'+cmd+'return false;" onmousedown="return false;" '+io+' class="mceButtonNormal" target="_self">';h+='<img src="'+img+'" alt="{$'+lang+'}" title="{$'+lang+'}" />';h+='</a>'}return h},getMenuButtonHTML:function(id,lang,img,mcmd,cmd,ui,val){var h='',m,x;mcmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+mcmd+'\');';cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+cmd+'\'';if(typeof(ui)!="undefined"&&ui!=null)cmd+=','+ui;if(typeof(val)!="undefined"&&val!=null)cmd+=",'"+val+"'";cmd+=');';if(tinyMCE.getParam('button_tile_map')&&(!tinyMCE.isIE||tinyMCE.isOpera)&&(m=tinyMCE.buttonMap[id])!=null&&(tinyMCE.getParam("language")=="en"||img.indexOf('$lang')==-1)){x=0-(m*20)==0?'0':0-(m*20);if(tinyMCE.isRealIE)h+='<span id="{$editor_id}_'+id+'" class="mceMenuButton" onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover = this;" onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">';else h+='<span id="{$editor_id}_'+id+'" class="mceMenuButton">';h+='<a href="javascript:'+cmd+'" onclick="'+cmd+'return false;" onmousedown="return false;" class="mceTiledButton mceMenuButtonNormal" target="_self">';h+='<img src="{$themeurl}/images/spacer.gif" style="width: 20px; height: 20px; background-position: '+x+'px 0" title="{$'+lang+'}" /></a>';h+='<a href="javascript:'+mcmd+'" onclick="'+mcmd+'return false;" onmousedown="return false;"><img src="{$themeurl}/images/button_menu.gif" title="{$'+lang+'}" class="mceMenuButton" />';h+='</a></span>'}else{if(tinyMCE.isRealIE)h+='<span id="{$editor_id}_'+id+'" dir="ltr" class="mceMenuButton" onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover = this;" onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">';else h+='<span id="{$editor_id}_'+id+'" dir="ltr" class="mceMenuButton">';h+='<a href="javascript:'+cmd+'" onclick="'+cmd+'return false;" onmousedown="return false;" class="mceMenuButtonNormal" target="_self">';h+='<img src="'+img+'" title="{$'+lang+'}" /></a>';h+='<a href="javascript:'+mcmd+'" onclick="'+mcmd+'return false;" onmousedown="return false;"><img src="{$themeurl}/images/button_menu.gif" title="{$'+lang+'}" class="mceMenuButton" />';h+='</a></span>'}return h},_menuButtonEvent:function(e,o){if(o.className=='mceMenuButtonFocus')return;if(e=='over')o.className=o.className+' mceMenuHover';else o.className=o.className.replace(/\s.*$/,'')},addButtonMap:function(m){var i,a=m.replace(/\s+/,'').split(',');for(i=0;i<a.length;i++)this.buttonMap[a[i]]=i},formSubmit:function(f,p){var n,inst,found=false;if(f.form)f=f.form;if(tinyMCE.getParam('save_on_tinymce_forms')){for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;if(inst.formElement){if(f==inst.formElement.form){found=true;inst.isNotDirty=true}}}}else found=true;if(found){tinyMCE.removeTinyMCEFormElements(f);tinyMCE.triggerSave()}if(f.mceOldSubmit&&p)f.mceOldSubmit()},submitPatch:function(){tinyMCE.formSubmit(this,true)},onLoad:function(){var r,i,c,mode,trigger,elements,element,settings,elementId,elm;var selector,deselector,elementRefAr,form;if(tinyMCE.settings.strict_loading_mode&&this.loadingIndex!=-1){window.setTimeout('tinyMCE.onLoad();',1);return}if(tinyMCE.isRealIE&&window.event.type=="readystatechange"&&document.readyState!="complete")return true;if(tinyMCE.isLoaded)return true;tinyMCE.isLoaded=true;if(tinyMCE.isRealIE&&document.body&&window.location.href!=window.top.location.href){r=document.body.createTextRange();r.collapse(true);r.select()}tinyMCE.dispatchCallback(null,'onpageload','onPageLoad');for(c=0;c<tinyMCE.configs.length;c++){tinyMCE.settings=tinyMCE.configs[c];selector=tinyMCE.getParam("editor_selector");deselector=tinyMCE.getParam("editor_deselector");elementRefAr=[];if(document.forms&&tinyMCE.settings.add_form_submit_trigger&&!tinyMCE.submitTriggers){for(i=0;i<document.forms.length;i++){form=document.forms[i];tinyMCE.addEvent(form,"submit",TinyMCE_Engine.prototype.handleEvent);tinyMCE.addEvent(form,"reset",TinyMCE_Engine.prototype.handleEvent);tinyMCE.submitTriggers=true;if(tinyMCE.settings.submit_patch){try{form.mceOldSubmit=form.submit;form.submit=TinyMCE_Engine.prototype.submitPatch}catch(e){}}}}mode=tinyMCE.settings.mode;switch(mode){case"exact":elements=tinyMCE.getParam('elements','',true,',');for(i=0;i<elements.length;i++){element=tinyMCE._getElementById(elements[i]);trigger=element?element.getAttribute(tinyMCE.settings.textarea_trigger):"";if(new RegExp('\\b'+deselector+'\\b').test(tinyMCE.getAttrib(element,"class")))continue;if(trigger=="false")continue;if((tinyMCE.settings.ask||tinyMCE.settings.convert_on_click)&&element){elementRefAr[elementRefAr.length]=element;continue}if(element)tinyMCE.addMCEControl(element,elements[i])}break;case"specific_textareas":case"textareas":elements=document.getElementsByTagName("textarea");for(i=0;i<elements.length;i++){elm=elements.item(i);trigger=elm.getAttribute(tinyMCE.settings.textarea_trigger);if(selector!==''&&!new RegExp('\\b'+selector+'\\b').test(tinyMCE.getAttrib(elm,"class")))continue;if(selector!=='')trigger=selector!==''?"true":"";if(new RegExp('\\b'+deselector+'\\b').test(tinyMCE.getAttrib(elm,"class")))continue;if((mode=="specific_textareas"&&trigger=="true")||(mode=="textareas"&&trigger!="false"))elementRefAr[elementRefAr.length]=elm}break}for(i=0;i<elementRefAr.length;i++){element=elementRefAr[i];elementId=element.name?element.name:element.id;if(tinyMCE.settings.ask||tinyMCE.settings.convert_on_click){if(tinyMCE.isGecko){settings=tinyMCE.settings;tinyMCE.addEvent(element,"focus",function(e){window.setTimeout(function(){TinyMCE_Engine.prototype.confirmAdd(e,settings)},10)});if(element.nodeName!="TEXTAREA"&&element.nodeName!="INPUT")tinyMCE.addEvent(element,"click",function(e){window.setTimeout(function(){TinyMCE_Engine.prototype.confirmAdd(e,settings)},10)});}else{settings=tinyMCE.settings;tinyMCE.addEvent(element,"focus",function(){TinyMCE_Engine.prototype.confirmAdd(null,settings)});tinyMCE.addEvent(element,"click",function(){TinyMCE_Engine.prototype.confirmAdd(null,settings)});}}else tinyMCE.addMCEControl(element,elementId)}if(tinyMCE.settings.auto_focus){window.setTimeout(function(){var inst=tinyMCE.getInstanceById(tinyMCE.settings.auto_focus);inst.selection.selectNode(inst.getBody(),true,true);inst.contentWindow.focus()},100)}tinyMCE.dispatchCallback(null,'oninit','onInit')}},isInstance:function(o){return o!=null&&typeof(o)=="object"&&o.isTinyMCE_Control},getParam:function(name,default_value,strip_whitespace,split_chr){var i,outArray,value=(typeof(this.settings[name])=="undefined")?default_value:this.settings[name];if(value=="true"||value=="false")return(value=="true");if(strip_whitespace)value=tinyMCE.regexpReplace(value,"[ \t\r\n]","");if(typeof(split_chr)!="undefined"&&split_chr!=null){value=value.split(split_chr);outArray=[];for(i=0;i<value.length;i++){if(value[i]&&value[i]!=='')outArray[outArray.length]=value[i]}value=outArray}return value},getLang:function(name,default_value,parse_entities,va){var v=(typeof(tinyMCELang[name])=="undefined")?default_value:tinyMCELang[name],n;if(parse_entities)v=tinyMCE.entityDecode(v);if(va){for(n in va)v=this.replaceVar(v,n,va[n])}return v},entityDecode:function(s){var e=document.createElement("div");e.innerHTML=s;return!e.firstChild?s:e.firstChild.nodeValue},addToLang:function(prefix,ar){var k;for(k in ar){if(typeof(ar[k])=='function')continue;tinyMCELang[(k.indexOf('lang_')==-1?'lang_':'')+(prefix!==''?(prefix+"_"):'')+k]=ar[k]}this.loadNextScript()},triggerNodeChange:function(focus,setup_content){var elm,inst,editorId,undoIndex=-1,undoLevels=-1,doc,anySelection=false,st;if(tinyMCE.selectedInstance){inst=tinyMCE.selectedInstance;elm=(typeof(setup_content)!="undefined"&&setup_content)?tinyMCE.selectedElement:inst.getFocusElement();editorId=inst.editorId;st=inst.selection.getSelectedText();if(tinyMCE.settings.auto_resize)inst.resizeToContent();if(setup_content&&tinyMCE.isGecko&&inst.isHidden())elm=inst.getBody();inst.switchSettings();if(tinyMCE.selectedElement)anySelection=(tinyMCE.selectedElement.nodeName.toLowerCase()=="img")||(st&&st.length>0);if(tinyMCE.settings.custom_undo_redo){undoIndex=inst.undoRedo.undoIndex;undoLevels=inst.undoRedo.undoLevels.length}tinyMCE.dispatchCallback(inst,'handle_node_change_callback','handleNodeChange',editorId,elm,undoIndex,undoLevels,inst.visualAid,anySelection,setup_content)}if(this.selectedInstance&&(typeof(focus)=="undefined"||focus))this.selectedInstance.contentWindow.focus()},_customCleanup:function(inst,type,content){var pl,po,i,customCleanup;customCleanup=tinyMCE.settings.cleanup_callback;if(customCleanup!='')content=tinyMCE.resolveDots(tinyMCE.settings.cleanup_callback,window)(type,content,inst);po=tinyMCE.themes[tinyMCE.settings.theme];if(po&&po.cleanup)content=po.cleanup(type,content,inst);pl=inst.plugins;for(i=0;i<pl.length;i++){po=tinyMCE.plugins[pl[i]];if(po&&po.cleanup)content=po.cleanup(type,content,inst)}return content},setContent:function(h){if(tinyMCE.selectedInstance){tinyMCE.selectedInstance.execCommand('mceSetContent',false,h);tinyMCE.selectedInstance.repaint()}},importThemeLanguagePack:function(name){if(typeof(name)=="undefined")name=tinyMCE.settings.theme;tinyMCE.loadScript(tinyMCE.baseURL+'/themes/'+name+'/langs/'+tinyMCE.settings.language+'.js')},importPluginLanguagePack:function(name){var b=tinyMCE.baseURL+'/plugins/'+name;if(this.plugins[name])b=this.plugins[name].baseURL;tinyMCE.loadScript(b+'/langs/'+tinyMCE.settings.language+'.js')},applyTemplate:function(h,ag){return h.replace(new RegExp('\\{\\$([a-z0-9_]+)\\}','gi'),function(m,s){if(s.indexOf('lang_')==0&&tinyMCELang[s])return tinyMCELang[s];if(ag&&ag[s])return ag[s];if(tinyMCE.settings[s])return tinyMCE.settings[s];if(m=='themeurl')return tinyMCE.themeURL;return m})},replaceVar:function(h,r,v){return h.replace(new RegExp('{\\\$'+r+'}','g'),v)},openWindow:function(template,args){var html,width,height,x,y,resizable,scrollbars,url,name,win,modal,features;args=!args?{}:args;args.mce_template_file=template.file;args.mce_width=template.width;args.mce_height=template.height;tinyMCE.windowArgs=args;html=template.html;if(!(width=parseInt(template.width)))width=320;if(!(height=parseInt(template.height)))height=200;if(tinyMCE.isIE)height+=40;else height+=20;x=parseInt(screen.width/ 2.0) - (width /2.0);y=parseInt(screen.height/ 2.0) - (height /2.0);resizable=(args&&args.resizable)?args.resizable:"no";scrollbars=(args&&args.scrollbars)?args.scrollbars:"no";if(template.file.charAt(0)!='/'&&template.file.indexOf('://')==-1)url=tinyMCE.baseURL+"/themes/"+tinyMCE.getParam("theme")+"/"+template.file;else url=template.file;for(name in args){if(typeof(args[name])=='function')continue;url=tinyMCE.replaceVar(url,name,escape(args[name]))}if(html){html=tinyMCE.replaceVar(html,"css",this.settings.popups_css);html=tinyMCE.applyTemplate(html,args);win=window.open("","mcePopup"+new Date().getTime(),"top="+y+",left="+x+",scrollbars="+scrollbars+",dialog=yes,minimizable="+resizable+",modal=yes,width="+width+",height="+height+",resizable="+resizable);if(win==null){alert(tinyMCELang.lang_popup_blocked);return}win.document.write(html);win.document.close();win.resizeTo(width,height);win.focus()}else{if((tinyMCE.isRealIE)&&resizable!='yes'&&tinyMCE.settings.dialog_type=="modal"){height+=10;features="resizable:"+resizable+";scroll:"+scrollbars+";status:yes;center:yes;help:no;dialogWidth:"+width+"px;dialogHeight:"+height+"px;";window.showModalDialog(url,window,features)}else{modal=(resizable=="yes")?"no":"yes";if(tinyMCE.isGecko&&tinyMCE.isMac)modal="no";if(template.close_previous!="no")try{tinyMCE.lastWindow.close()}catch(ex){}win=window.open(url,"mcePopup"+new Date().getTime(),"top="+y+",left="+x+",scrollbars="+scrollbars+",dialog="+modal+",minimizable="+resizable+",modal="+modal+",width="+width+",height="+height+",resizable="+resizable);if(win==null){alert(tinyMCELang.lang_popup_blocked);return}if(template.close_previous!="no")tinyMCE.lastWindow=win;try{win.resizeTo(width,height)}catch(e){}if(tinyMCE.isGecko){if(win.document.defaultView.statusbar.visible)win.resizeBy(0,tinyMCE.isMac?10:24)}win.focus()}}},closeWindow:function(win){win.close()},getVisualAidClass:function(class_name,state){var i,classNames,ar,className,aidClass=tinyMCE.settings.visual_table_class;if(typeof(state)=="undefined")state=tinyMCE.settings.visual;classNames=[];ar=class_name.split(' ');for(i=0;i<ar.length;i++){if(ar[i]==aidClass)ar[i]="";if(ar[i]!=='')classNames[classNames.length]=ar[i]}if(state)classNames[classNames.length]=aidClass;className="";for(i=0;i<classNames.length;i++){if(i>0)className+=" ";className+=classNames[i]}return className},handleVisualAid:function(el,deep,state,inst,skip_dispatch){var i,x,y,tableElement,anchorName,oldW,oldH,bo,cn;if(!el)return;if(!skip_dispatch)tinyMCE.dispatchCallback(inst,'handle_visual_aid_callback','handleVisualAid',el,deep,state,inst);tableElement=null;switch(el.nodeName){case"TABLE":oldW=el.style.width;oldH=el.style.height;bo=tinyMCE.getAttrib(el,"border");bo=bo==''||bo=="0"?true:false;tinyMCE.setAttrib(el,"class",tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el,"class"),state&&bo));el.style.width=oldW;el.style.height=oldH;for(y=0;y<el.rows.length;y++){for(x=0;x<el.rows[y].cells.length;x++){cn=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el.rows[y].cells[x],"class"),state&&bo);tinyMCE.setAttrib(el.rows[y].cells[x],"class",cn)}}break;case"A":anchorName=tinyMCE.getAttrib(el,"name");if(anchorName!==''&&state){el.title=anchorName;tinyMCE.addCSSClass(el,'mceItemAnchor')}else if(anchorName!==''&&!state)el.className='';break}if(deep&&el.hasChildNodes()){for(i=0;i<el.childNodes.length;i++)tinyMCE.handleVisualAid(el.childNodes[i],deep,state,inst,true)}},fixGeckoBaseHREFBug:function(m,e,h){var xsrc,xhref;if(tinyMCE.isGecko){if(m==1){h=h.replace(/\ssrc=/gi," mce_tsrc=");h=h.replace(/\shref=/gi," mce_thref=");return h}else{if(!new RegExp('(src|href)=','g').test(h))return h;tinyMCE.selectElements(e,'A,IMG,SELECT,AREA,IFRAME,BASE,INPUT,SCRIPT,EMBED,OBJECT,LINK',function(n){xsrc=tinyMCE.getAttrib(n,"mce_tsrc");xhref=tinyMCE.getAttrib(n,"mce_thref");if(xsrc!==''){try{n.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href,xsrc)}catch(e){}n.removeAttribute("mce_tsrc")}if(xhref!==''){try{n.href=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href,xhref)}catch(e){}n.removeAttribute("mce_thref")}return false});tinyMCE.selectNodes(e,function(n){if(n.nodeType==3||n.nodeType==8){n.nodeValue=n.nodeValue.replace(/\smce_tsrc=/gi," src=");n.nodeValue=n.nodeValue.replace(/\smce_thref=/gi," href=")}return false})}}return h},_setHTML:function(doc,html_content){var i,html,paras,node;html_content=tinyMCE.cleanupHTMLCode(html_content);try{tinyMCE.setInnerHTML(doc.body,html_content)}catch(e){if(this.isMSIE)doc.body.createTextRange().pasteHTML(html_content)}if(tinyMCE.isIE&&tinyMCE.settings.fix_content_duplication){paras=doc.getElementsByTagName("P");for(i=0;i<paras.length;i++){node=paras[i];while((node=node.parentNode)!=null){if(node.nodeName=="P")node.outerHTML=node.innerHTML}}html=doc.body.innerHTML;tinyMCE.setInnerHTML(doc.body,html)}tinyMCE.cleanupAnchors(doc);if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(doc)},getEditorId:function(form_element){var inst=this.getInstanceById(form_element);if(!inst)return null;return inst.editorId},getInstanceById:function(editor_id){var inst=this.instances[editor_id],n;if(!inst){for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;if(inst.formTargetElementId==editor_id)return inst}}else return inst;return null},queryInstanceCommandValue:function(editor_id,command){var inst=tinyMCE.getInstanceById(editor_id);if(inst)return inst.queryCommandValue(command);return false},queryInstanceCommandState:function(editor_id,command){var inst=tinyMCE.getInstanceById(editor_id);if(inst)return inst.queryCommandState(command);return null},setWindowArg:function(n,v){this.windowArgs[n]=v},getWindowArg:function(n,d){return(typeof(this.windowArgs[n])=="undefined")?d:this.windowArgs[n]},getCSSClasses:function(editor_id,doc){var i,c,x,rule,styles,rules,csses,selectorText,inst=tinyMCE.getInstanceById(editor_id);var cssClass,addClass,p;if(!inst)inst=tinyMCE.selectedInstance;if(!inst)return[];if(!doc)doc=inst.getDoc();if(inst&&inst.cssClasses.length>0)return inst.cssClasses;if(!doc)return;styles=doc.styleSheets;if(styles&&styles.length>0){for(x=0;x<styles.length;x++){csses=null;try{csses=tinyMCE.isIE?doc.styleSheets(x).rules:styles[x].cssRules}catch(e){}if(!csses)return[];for(i=0;i<csses.length;i++){selectorText=csses[i].selectorText;if(selectorText){rules=selectorText.split(',');for(c=0;c<rules.length;c++){rule=rules[c];while(rule.indexOf(' ')==0)rule=rule.substring(1);if(rule.indexOf(' ')!=-1||rule.indexOf(':')!=-1||rule.indexOf('mceItem')!=-1)continue;if(rule.indexOf(tinyMCE.settings.visual_table_class)!=-1||rule.indexOf('mceEditable')!=-1||rule.indexOf('mceNonEditable')!=-1)continue;if(rule.indexOf('.')!=-1){cssClass=rule.substring(rule.indexOf('.')+1);addClass=true;for(p=0;p<inst.cssClasses.length&&addClass;p++){if(inst.cssClasses[p]==cssClass)addClass=false}if(addClass)inst.cssClasses[inst.cssClasses.length]=cssClass}}}}}}return inst.cssClasses},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 s.replace(/^\s*|\s*$/g,"")},cleanupEventStr:function(s){s=""+s;s=s.replace('function anonymous()\n{\n','');s=s.replace('\n}','');s=s.replace(/^return true;/gi,'');return s},getControlHTML:function(c){var i,l,n,o,v,rtl=tinyMCE.getLang('lang_dir')=='rtl';l=tinyMCE.plugins;for(n in l){o=l[n];if(o.getControlHTML&&(v=o.getControlHTML(c))!==''){if(rtl)return'<span dir="rtl">'+tinyMCE.replaceVar(v,"pluginurl",o.baseURL)+'</span>';return tinyMCE.replaceVar(v,"pluginurl",o.baseURL)}}o=tinyMCE.themes[tinyMCE.settings.theme];if(o.getControlHTML&&(v=o.getControlHTML(c))!==''){if(rtl)return'<span dir="rtl">'+v+'</span>';return v}return''},evalFunc:function(f,idx,a,o){o=!o?window:o;f=typeof(f)=='function'?f:o[f];return f.apply(o,Array.prototype.slice.call(a,idx))},dispatchCallback:function(i,p,n){return this.callFunc(i,p,n,0,this.dispatchCallback.arguments)},executeCallback:function(i,p,n){return this.callFunc(i,p,n,1,this.executeCallback.arguments)},execCommandCallback:function(i,p,n){return this.callFunc(i,p,n,2,this.execCommandCallback.arguments)},callFunc:function(ins,p,n,m,a){var l,i,on,o,s,v;s=m==2;l=tinyMCE.getParam(p,'');if(l!==''&&(v=tinyMCE.evalFunc(l,3,a))==s&&m>0)return true;if(ins!=null){for(i=0,l=ins.plugins;i<l.length;i++){o=tinyMCE.plugins[l[i]];if(o[n]&&(v=tinyMCE.evalFunc(n,3,a,o))==s&&m>0)return true}}l=tinyMCE.themes;for(on in l){o=l[on];if(o[n]&&(v=tinyMCE.evalFunc(n,3,a,o))==s&&m>0)return true}return false},resolveDots:function(s,o){var i;if(typeof(s)=='string'){for(i=0,s=s.split('.');i<s.length;i++)o=o[s[i]]}else o=s;return o},xmlEncode:function(s){return s?(''+s).replace(this.xmlEncodeRe,function(c,b){switch(c){case'&':return'&amp;';case'"':return'&quot;';case'<':return'&lt;';case'>':return'&gt;'}return c}):s},add:function(c,m){var n;for(n in m){if(m.hasOwnProperty(n))c.prototype[n]=m[n]}},extend:function(p,np){var o={},n;o.parent=p;for(n in p){if(p.hasOwnProperty(n))o[n]=p[n]}for(n in np){if(np.hasOwnProperty(n))o[n]=np[n]}return o},hideMenus:function(){var e=tinyMCE.lastSelectedMenuBtn;if(tinyMCE.lastMenu){tinyMCE.lastMenu.hide();tinyMCE.lastMenu=null}if(e){tinyMCE.switchClass(e,tinyMCE.lastMenuBtnClass);tinyMCE.lastSelectedMenuBtn=null}}};var TinyMCE=TinyMCE_Engine;var tinyMCE=new TinyMCE_Engine();var tinyMCELang={};function TinyMCE_Control(settings){var t,i,tos,fu,p,x,fn,fu,pn,s=settings;this.undoRedoLevel=true;this.isTinyMCE_Control=true;this.enabled=true;this.settings=s;this.settings.theme=tinyMCE.getParam("theme","default");this.settings.width=tinyMCE.getParam("width",-1);this.settings.height=tinyMCE.getParam("height",-1);this.selection=new TinyMCE_Selection(this);this.undoRedo=new TinyMCE_UndoRedo(this);this.cleanup=new TinyMCE_Cleanup();this.shortcuts=[];this.hasMouseMoved=false;this.foreColor=this.backColor="#999999";this.data={};this.cssClasses=[];this.cleanup.init({valid_elements:s.valid_elements,extended_valid_elements:s.extended_valid_elements,valid_child_elements:s.valid_child_elements,entities:s.entities,entity_encoding:s.entity_encoding,debug:s.cleanup_debug,indent:s.apply_source_formatting,invalid_elements:s.invalid_elements,verify_html:s.verify_html,fix_content_duplication:s.fix_content_duplication,convert_fonts_to_spans:s.convert_fonts_to_spans});t=this.settings.theme;if(!tinyMCE.hasTheme(t)){fn=tinyMCE.callbacks;tos={};for(i=0;i<fn.length;i++){if((fu=window['TinyMCE_'+t+"_"+fn[i]]))tos[fn[i]]=fu}tinyMCE.addTheme(t,tos)}this.plugins=[];p=tinyMCE.getParam('plugins','',true,',');if(p.length>0){for(i=0;i<p.length;i++){pn=p[i];if(pn.charAt(0)=='-')pn=pn.substring(1);if(!tinyMCE.hasPlugin(pn)){fn=tinyMCE.callbacks;tos={};for(x=0;x<fn.length;x++){if((fu=window['TinyMCE_'+pn+"_"+fn[x]]))tos[fn[x]]=fu}tinyMCE.addPlugin(pn,tos)}this.plugins[this.plugins.length]=pn}}};TinyMCE_Control.prototype={selection:null,settings:null,cleanup:null,getData:function(na){var o=this.data[na];if(!o)o=this.data[na]={};return o},hasPlugin:function(n){var i;for(i=0;i<this.plugins.length;i++){if(this.plugins[i]==n)return true}return false},addPlugin:function(n,p){if(!this.hasPlugin(n)){tinyMCE.addPlugin(n,p);this.plugins[this.plugins.length]=n}},repaint:function(){var s,b,ex;if(tinyMCE.isRealIE)return;try{s=this.selection;b=s.getBookmark(true);this.getBody().style.display='none';this.getDoc().execCommand('selectall',false,null);this.getSel().collapseToStart();this.getBody().style.display='block';s.moveToBookmark(b)}catch(ex){}},switchSettings:function(){if(tinyMCE.configs.length>1&&tinyMCE.currentConfig!=this.settings.index){tinyMCE.settings=this.settings;tinyMCE.currentConfig=this.settings.index}},select:function(){var oldInst=tinyMCE.selectedInstance;if(oldInst!=this){if(oldInst)oldInst.execCommand('mceEndTyping');tinyMCE.dispatchCallback(this,'select_instance_callback','selectInstance',this,oldInst);tinyMCE.selectedInstance=this}},getBody:function(){return this.contentBody?this.contentBody:this.getDoc().body},getDoc:function(){return this.contentWindow.document},getWin:function(){return this.contentWindow},getContainerWin:function(){return this.containerWindow?this.containerWindow:window},getViewPort:function(){return tinyMCE.getViewPort(this.getWin())},getParentNode:function(n,f){return tinyMCE.getParentNode(n,f,this.getBody())},getParentElement:function(n,na,f){return tinyMCE.getParentElement(n,na,f,this.getBody())},getParentBlockElement:function(n){return tinyMCE.getParentBlockElement(n,this.getBody())},resizeToContent:function(){var d=this.getDoc(),b=d.body,de=d.documentElement;this.iframeElement.style.height=(tinyMCE.isRealIE)?b.scrollHeight:de.offsetHeight+'px'},addShortcut:function(m,k,d,cmd,ui,va){var n=typeof(k)=="number",ie=tinyMCE.isIE,c,sc,i,scl=this.shortcuts;if(!tinyMCE.getParam('custom_shortcuts'))return false;m=m.toLowerCase();k=ie&&!n?k.toUpperCase():k;c=n?null:k.charCodeAt(0);d=d&&d.indexOf('lang_')==0?tinyMCE.getLang(d):d;sc={alt:m.indexOf('alt')!=-1,ctrl:m.indexOf('ctrl')!=-1,shift:m.indexOf('shift')!=-1,charCode:c,keyCode:n?k:(ie?c:null),desc:d,cmd:cmd,ui:ui,val:va};for(i=0;i<scl.length;i++){if(sc.alt==scl[i].alt&&sc.ctrl==scl[i].ctrl&&sc.shift==scl[i].shift&&sc.charCode==scl[i].charCode&&sc.keyCode==scl[i].keyCode){return false}}scl[scl.length]=sc;return true},handleShortcut:function(e){var i,s,o;if(!e.altKey&&!e.ctrlKey)return false;s=this.shortcuts;for(i=0;i<s.length;i++){o=s[i];if(o.alt==e.altKey&&o.ctrl==e.ctrlKey&&(o.keyCode==e.keyCode||o.charCode==e.charCode)){if(o.cmd&&(e.type=="keydown"||(e.type=="keypress"&&!tinyMCE.isOpera)))tinyMCE.execCommand(o.cmd,o.ui,o.val);tinyMCE.cancelEvent(e);return true}}return false},autoResetDesignMode:function(){if(!tinyMCE.isIE&&this.isHidden()&&tinyMCE.getParam('auto_reset_designmode'))eval('try { this.getDoc().designMode = "On"; this.useCSS = false; } catch(e) {}')},isHidden:function(){var s;if(tinyMCE.isIE)return false;s=this.getSel();return(!s||!s.rangeCount||s.rangeCount==0)},isDirty:function(){return tinyMCE.trim(this.startContent)!=tinyMCE.trim(this.getBody().innerHTML)&&!this.isNotDirty},_mergeElements:function(scmd,pa,ch,override){var st,stc,className,n;if(scmd=="removeformat"){pa.className="";pa.style.cssText="";ch.className="";ch.style.cssText="";return}st=tinyMCE.parseStyle(tinyMCE.getAttrib(pa,"style"));stc=tinyMCE.parseStyle(tinyMCE.getAttrib(ch,"style"));className=tinyMCE.getAttrib(pa,"class");className=tinyMCE.getAttrib(ch,"class");if(override){for(n in st){if(typeof(st[n])=='function')continue;stc[n]=st[n]}}else{for(n in stc){if(typeof(stc[n])=='function')continue;st[n]=stc[n]}}tinyMCE.setAttrib(pa,"style",tinyMCE.serializeStyle(st));tinyMCE.setAttrib(pa,"class",tinyMCE.trim(className));ch.className="";ch.style.cssText="";ch.removeAttribute("class");ch.removeAttribute("style")},_fixRootBlocks:function(){var rb,b,ne,be,nx,bm;rb=tinyMCE.getParam('forced_root_block');if(!rb)return;b=this.getBody();ne=b.firstChild;while(ne){nx=ne.nextSibling;if((ne.nodeType==3&&ne.nodeValue.replace(/\s+/g,'')!='')||(ne.nodeType==1&&!tinyMCE.blockRegExp.test(ne.nodeName))){if(!bm)bm=this.selection.getBookmark();if(!be){be=this.getDoc().createElement(rb);be.appendChild(ne.cloneNode(true));b.replaceChild(be,ne)}else{be.appendChild(ne.cloneNode(true));b.removeChild(ne)}}else be=null;ne=nx}if(bm)this.selection.moveToBookmark(bm)},_fixTrailingNbsp:function(){var s=this.selection,e=s.getFocusElement(),bm,v;if(e&&tinyMCE.blockRegExp.test(e.nodeName)&&e.firstChild){v=e.firstChild.nodeValue;if(v&&v.length>1&&/(^\u00a0|\u00a0$)/.test(v)){e.firstChild.nodeValue=v.replace(/(^\u00a0|\u00a0$)/,'');s.selectNode(e.firstChild,true,false,false);}}},_setUseCSS:function(b){var d=this.getDoc();try{d.execCommand("useCSS",false,!b)}catch(ex){}try{d.execCommand("styleWithCSS",false,b)}catch(ex){}if(!tinyMCE.getParam("table_inline_editing"))try{d.execCommand('enableInlineTableEditing',false,"false")}catch(ex){}if(!tinyMCE.getParam("object_resizing"))try{d.execCommand('enableObjectResizing',false,"false")}catch(ex){}},execCommand:function(command,user_interface,value){var i,x,z,align,img,div,doc=this.getDoc(),win=this.getWin(),focusElm=this.getFocusElement();if(!new RegExp('mceStartTyping|mceEndTyping|mceBeginUndoLevel|mceEndUndoLevel|mceAddUndoLevel','gi').test(command))this.undoBookmark=null;if(!tinyMCE.isIE&&!this.useCSS){this._setUseCSS(false);this.useCSS=true}this.contentDocument=doc;if(!/mceStartTyping|mceEndTyping/.test(command)){if(tinyMCE.execCommandCallback(this,'execcommand_callback','execCommand',this.editorId,this.getBody(),command,user_interface,value))return}if(focusElm&&focusElm.nodeName=="IMG"){align=focusElm.getAttribute('align');img=command=="JustifyCenter"?focusElm.cloneNode(false):focusElm;switch(command){case"JustifyLeft":if(align=='left'){img.setAttribute('align','');img.removeAttribute('align')}else img.setAttribute('align','left');div=focusElm.parentNode;if(div&&div.nodeName=="DIV"&&div.childNodes.length==1&&div.parentNode)div.parentNode.replaceChild(img,div);this.selection.selectNode(img);this.repaint();tinyMCE.triggerNodeChange();return;case"JustifyCenter":img.setAttribute('align','');img.removeAttribute('align');div=tinyMCE.getParentElement(focusElm,"div");if(div&&div.style.textAlign=="center"){if(div.nodeName=="DIV"&&div.childNodes.length==1&&div.parentNode)div.parentNode.replaceChild(img,div)}else{div=this.getDoc().createElement("div");div.style.textAlign='center';div.appendChild(img);focusElm.parentNode.replaceChild(div,focusElm)}this.selection.selectNode(img);this.repaint();tinyMCE.triggerNodeChange();return;case"JustifyRight":if(align=='right'){img.setAttribute('align','');img.removeAttribute('align')}else img.setAttribute('align','right');div=focusElm.parentNode;if(div&&div.nodeName=="DIV"&&div.childNodes.length==1&&div.parentNode)div.parentNode.replaceChild(img,div);this.selection.selectNode(img);this.repaint();tinyMCE.triggerNodeChange();return}}if(tinyMCE.settings.force_br_newlines){var alignValue="";if(doc.selection.type!="Control"){switch(command){case"JustifyLeft":alignValue="left";break;case"JustifyCenter":alignValue="center";break;case"JustifyFull":alignValue="justify";break;case"JustifyRight":alignValue="right";break}if(alignValue!==''){var rng=doc.selection.createRange();if((divElm=tinyMCE.getParentElement(rng.parentElement(),"div"))!=null)divElm.setAttribute("align",alignValue);else if(rng.pasteHTML&&rng.htmlText.length>0)rng.pasteHTML('<div align="'+alignValue+'">'+rng.htmlText+"</div>");tinyMCE.triggerNodeChange();return}}}switch(command){case"mceRepaint":this.repaint();return true;case"JustifyLeft":case"JustifyCenter":case"JustifyFull":case"JustifyRight":var el=tinyMCE.getParentNode(focusElm,function(n){return tinyMCE.getAttrib(n,'align')});if(el){el.setAttribute('align','');el.removeAttribute('align')}else this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();return true;case"unlink":if(tinyMCE.isGecko&&this.getSel().isCollapsed){focusElm=tinyMCE.getParentElement(focusElm,'A');if(focusElm)this.selection.selectNode(focusElm,false)}this.getDoc().execCommand(command,user_interface,value);tinyMCE.isGecko&&this.getSel().collapseToEnd();tinyMCE.triggerNodeChange();return true;case"InsertUnorderedList":case"InsertOrderedList":this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();break;case"Strikethrough":this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();break;case"mceSelectNode":this.selection.selectNode(value);tinyMCE.triggerNodeChange();tinyMCE.selectedNode=value;break;case"FormatBlock":if(value==null||value==''){var elm=tinyMCE.getParentElement(this.getFocusElement(),"p,div,h1,h2,h3,h4,h5,h6,pre,address,blockquote,dt,dl,dd,samp");if(elm)this.execCommand("mceRemoveNode",false,elm)}else{if(!this.cleanup.isValid(value))return true;if(tinyMCE.isGecko&&new RegExp('<(div|blockquote|code|dt|dd|dl|samp)>','gi').test(value))value=value.replace(/[^a-z]/gi,'');if(tinyMCE.isIE&&new RegExp('blockquote|code|samp','gi').test(value)){var b=this.selection.getBookmark();this.getDoc().execCommand("FormatBlock",false,'<p>');tinyMCE.renameElement(tinyMCE.getParentBlockElement(this.getFocusElement()),value);this.selection.moveToBookmark(b)}else this.getDoc().execCommand("FormatBlock",false,value)}tinyMCE.triggerNodeChange();break;case"mceRemoveNode":if(!value)value=tinyMCE.getParentElement(this.getFocusElement());if(tinyMCE.isIE){value.outerHTML=value.innerHTML}else{var rng=value.ownerDocument.createRange();rng.setStartBefore(value);rng.setEndAfter(value);rng.deleteContents();rng.insertNode(rng.createContextualFragment(value.innerHTML))}tinyMCE.triggerNodeChange();break;case"mceSelectNodeDepth":var parentNode=this.getFocusElement();for(i=0;parentNode;i++){if(parentNode.nodeName.toLowerCase()=="body")break;if(parentNode.nodeName.toLowerCase()=="#text"){i--;parentNode=parentNode.parentNode;continue}if(i==value){this.selection.selectNode(parentNode,false);tinyMCE.triggerNodeChange();tinyMCE.selectedNode=parentNode;return}parentNode=parentNode.parentNode}break;case"mceSetStyleInfo":case"SetStyleInfo":var rng=this.getRng();var sel=this.getSel();var scmd=value.command;var sname=value.name;var svalue=value.value==null?'':value.value;var wrapper=value.wrapper?value.wrapper:"span";var parentElm=null;var invalidRe=new RegExp("^BODY|HTML$","g");var invalidParentsRe=tinyMCE.settings.merge_styles_invalid_parents!==''?new RegExp(tinyMCE.settings.merge_styles_invalid_parents,"gi"):null;if(tinyMCE.isIE){if(rng.item)parentElm=rng.item(0);else{var pelm=rng.parentElement();var prng=doc.selection.createRange();prng.moveToElementText(pelm);if(rng.htmlText==prng.htmlText||rng.boundingWidth==0){if(invalidParentsRe==null||!invalidParentsRe.test(pelm.nodeName))parentElm=pelm}}}else{var felm=this.getFocusElement();if(sel.isCollapsed||(new RegExp('td|tr|tbody|table|img','gi').test(felm.nodeName)&&sel.anchorNode==felm.parentNode))parentElm=felm}if(parentElm&&!invalidRe.test(parentElm.nodeName)){if(scmd=="setstyle")tinyMCE.setStyleAttrib(parentElm,sname,svalue);if(scmd=="setattrib")tinyMCE.setAttrib(parentElm,sname,svalue);if(scmd=="removeformat"){parentElm.style.cssText='';tinyMCE.setAttrib(parentElm,'class','')}var ch=tinyMCE.getNodeTree(parentElm,[],1);for(z=0;z<ch.length;z++){if(ch[z]==parentElm)continue;if(scmd=="setstyle")tinyMCE.setStyleAttrib(ch[z],sname,'');if(scmd=="setattrib")tinyMCE.setAttrib(ch[z],sname,'');if(scmd=="removeformat"){ch[z].style.cssText='';tinyMCE.setAttrib(ch[z],'class','')}}}else{this._setUseCSS(false);doc.execCommand("FontName",false,"#mce_temp_font#");var elementArray=tinyMCE.getElementsByAttributeValue(this.getBody(),"font","face","#mce_temp_font#");for(x=0;x<elementArray.length;x++){elm=elementArray[x];if(elm){var spanElm=doc.createElement(wrapper);if(scmd=="setstyle")tinyMCE.setStyleAttrib(spanElm,sname,svalue);if(scmd=="setattrib")tinyMCE.setAttrib(spanElm,sname,svalue);if(scmd=="removeformat"){spanElm.style.cssText='';tinyMCE.setAttrib(spanElm,'class','')}if(elm.hasChildNodes()){for(i=0;i<elm.childNodes.length;i++)spanElm.appendChild(elm.childNodes[i].cloneNode(true))}spanElm.setAttribute("mce_new","true");elm.parentNode.replaceChild(spanElm,elm);var ch=tinyMCE.getNodeTree(spanElm,[],1);for(z=0;z<ch.length;z++){if(ch[z]==spanElm)continue;if(scmd=="setstyle")tinyMCE.setStyleAttrib(ch[z],sname,'');if(scmd=="setattrib")tinyMCE.setAttrib(ch[z],sname,'');if(scmd=="removeformat"){ch[z].style.cssText='';tinyMCE.setAttrib(ch[z],'class','')}}}}}var nodes=doc.getElementsByTagName(wrapper);for(i=nodes.length-1;i>=0;i--){var elm=nodes[i];var isNew=tinyMCE.getAttrib(elm,"mce_new")=="true";elm.removeAttribute("mce_new");if(elm.childNodes&&elm.childNodes.length==1&&elm.childNodes[0].nodeType==1){this._mergeElements(scmd,elm,elm.childNodes[0],isNew);continue}if(elm.parentNode.childNodes.length==1&&!invalidRe.test(elm.nodeName)&&!invalidRe.test(elm.parentNode.nodeName)){if(invalidParentsRe==null||!invalidParentsRe.test(elm.parentNode.nodeName))this._mergeElements(scmd,elm.parentNode,elm,false)}}var nodes=doc.getElementsByTagName(wrapper);for(i=nodes.length-1;i>=0;i--){var elm=nodes[i],isEmpty=true;var tmp=doc.createElement("body");tmp.appendChild(elm.cloneNode(false));tmp.innerHTML=tmp.innerHTML.replace(new RegExp('style=""|class=""','gi'),'');if(new RegExp('<span>','gi').test(tmp.innerHTML)){for(x=0;x<elm.childNodes.length;x++){if(elm.parentNode!=null)elm.parentNode.insertBefore(elm.childNodes[x].cloneNode(true),elm)}elm.parentNode.removeChild(elm)}}if(scmd=="removeformat")tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid,this);tinyMCE.triggerNodeChange();break;case"FontName":if(value==null){var s=this.getSel();if(tinyMCE.isGecko&&s.isCollapsed){var f=tinyMCE.getParentElement(this.getFocusElement(),"font");if(f!=null)this.selection.selectNode(f,false)}this.getDoc().execCommand("RemoveFormat",false,null);if(f!=null&&tinyMCE.isGecko){var r=this.getRng().cloneRange();r.collapse(true);s.removeAllRanges();s.addRange(r)}}else this.getDoc().execCommand('FontName',false,value);if(tinyMCE.isGecko)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);return;case"FontSize":this.getDoc().execCommand('FontSize',false,value);if(tinyMCE.isGecko)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);return;case"forecolor":value=value==null?this.foreColor:value;value=tinyMCE.trim(value);value=value.charAt(0)!='#'?(isNaN('0x'+value)?value:'#'+value):value;this.foreColor=value;this.getDoc().execCommand('forecolor',false,value);break;case"HiliteColor":value=value==null?this.backColor:value;value=tinyMCE.trim(value);value=value.charAt(0)!='#'?(isNaN('0x'+value)?value:'#'+value):value;this.backColor=value;if(tinyMCE.isGecko||tinyMCE.isOpera){this._setUseCSS(true);this.getDoc().execCommand('hilitecolor',false,value);this._setUseCSS(false)}else this.getDoc().execCommand('BackColor',false,value);break;case"Cut":case"Copy":case"Paste":var cmdFailed=false;eval('try {this.getDoc().execCommand(command, user_interface, value);} catch (e) {cmdFailed = true;}');if(tinyMCE.isOpera&&cmdFailed)alert('Currently not supported by your browser, use keyboard shortcuts instead.');if(tinyMCE.isGecko&&cmdFailed){if(confirm(tinyMCE.entityDecode(tinyMCE.getLang('lang_clipboard_msg'))))window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html','mceExternal');return}else tinyMCE.triggerNodeChange();break;case"mceSetContent":if(!value)value="";value=tinyMCE.storeAwayURLs(value);value=tinyMCE._customCleanup(this,"insert_to_editor",value);if(this.getBody().nodeName=='BODY')tinyMCE._setHTML(doc,value);else this.getBody().innerHTML=value;tinyMCE.setInnerHTML(this.getBody(),tinyMCE._cleanupHTML(this,doc,this.settings,this.getBody(),false,false,false,true));tinyMCE.convertAllRelativeURLs(this.getBody());tinyMCE._removeInternal(this.getBody());if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(doc);tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid,this);tinyMCE._setEventsEnabled(this.getBody(),false);this._addBogusBR();return true;case"mceCleanup":var b=this.selection.getBookmark();tinyMCE._setHTML(this.contentDocument,this.getBody().innerHTML);tinyMCE.setInnerHTML(this.getBody(),tinyMCE._cleanupHTML(this,this.contentDocument,this.settings,this.getBody(),this.visualAid));tinyMCE.convertAllRelativeURLs(doc.body);if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(doc);tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid,this);tinyMCE._setEventsEnabled(this.getBody(),false);this._addBogusBR();this.repaint();this.selection.moveToBookmark(b);tinyMCE.triggerNodeChange();break;case"mceReplaceContent":if(!value)value='';this.getWin().focus();var selectedText="";if(tinyMCE.isIE){var rng=doc.selection.createRange();selectedText=rng.text}else selectedText=this.getSel().toString();if(selectedText.length>0){value=tinyMCE.replaceVar(value,"selection",selectedText);tinyMCE.execCommand('mceInsertContent',false,value)}this._addBogusBR();tinyMCE.triggerNodeChange();break;case"mceSetAttribute":if(typeof(value)=='object'){var targetElms=(typeof(value.targets)=="undefined")?"p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address":value.targets;var targetNode=tinyMCE.getParentElement(this.getFocusElement(),targetElms);if(targetNode){targetNode.setAttribute(value.name,value.value);tinyMCE.triggerNodeChange()}}break;case"mceSetCSSClass":this.execCommand("mceSetStyleInfo",false,{command:"setattrib",name:"class",value:value});break;case"mceInsertRawHTML":var key='tiny_mce_marker';this.execCommand('mceBeginUndoLevel');this.execCommand('mceInsertContent',false,key);var scrollX=this.getBody().scrollLeft+this.getDoc().documentElement.scrollLeft;var scrollY=this.getBody().scrollTop+this.getDoc().documentElement.scrollTop;var html=this.getBody().innerHTML;if((pos=html.indexOf(key))!=-1)tinyMCE.setInnerHTML(this.getBody(),html.substring(0,pos)+value+html.substring(pos+key.length));this.contentWindow.scrollTo(scrollX,scrollY);this.execCommand('mceEndUndoLevel');break;case"mceInsertContent":if(!value)value='';var insertHTMLFailed=false;if(tinyMCE.isGecko||tinyMCE.isOpera){try{if(value.indexOf('<')==-1&&!value.match(/(&#38;|&#160;|&#60;|&#62;)/g)){var r=this.getRng();var n=this.getDoc().createTextNode(tinyMCE.entityDecode(value));var s=this.getSel();var r2=r.cloneRange();s.removeAllRanges();r.deleteContents();r.insertNode(n);r2.selectNode(n);r2.collapse(false);s.removeAllRanges();s.addRange(r2)}else{value=tinyMCE.fixGeckoBaseHREFBug(1,this.getDoc(),value);this.getDoc().execCommand('inserthtml',false,value);tinyMCE.fixGeckoBaseHREFBug(2,this.getDoc(),value)}}catch(ex){insertHTMLFailed=true}if(!insertHTMLFailed){tinyMCE.triggerNodeChange();return}}if(!tinyMCE.isIE){var isHTML=value.indexOf('<')!=-1;var sel=this.getSel();var rng=this.getRng();if(isHTML){if(tinyMCE.isSafari){var tmpRng=this.getDoc().createRange();tmpRng.setStart(this.getBody(),0);tmpRng.setEnd(this.getBody(),0);value=tmpRng.createContextualFragment(value)}else value=rng.createContextualFragment(value)}else{value=doc.createTextNode(tinyMCE.entityDecode(value))}if(tinyMCE.isSafari&&!isHTML){this.execCommand('InsertText',false,value.nodeValue);tinyMCE.triggerNodeChange();return true}else if(tinyMCE.isSafari&&isHTML){rng.deleteContents();rng.insertNode(value);tinyMCE.triggerNodeChange();return true}rng.deleteContents();if(rng.startContainer.nodeType==3){var node=rng.startContainer.splitText(rng.startOffset);node.parentNode.insertBefore(value,node)}else rng.insertNode(value);if(!isHTML){sel.selectAllChildren(doc.body);sel.removeAllRanges();var rng=doc.createRange();rng.selectNode(value);rng.collapse(false);sel.addRange(rng)}else rng.collapse(false);tinyMCE.fixGeckoBaseHREFBug(2,this.getDoc(),value)}else{var rng=doc.selection.createRange(),tmpRng=null;var c=value.indexOf('<!--')!=-1;if(c)value=tinyMCE.uniqueTag+value;if(rng.item)rng.item(0).outerHTML=value;else rng.pasteHTML(value);if(c){var e=this.getDoc().getElementById('mceTMPElement');e.parentNode.removeChild(e)}}tinyMCE.execCommand("mceAddUndoLevel");tinyMCE.triggerNodeChange();break;case"mceStartTyping":if(tinyMCE.settings.custom_undo_redo&&this.undoRedo.typingUndoIndex==-1){this.undoRedo.typingUndoIndex=this.undoRedo.undoIndex;tinyMCE.typingUndoIndex=tinyMCE.undoIndex;this.execCommand('mceAddUndoLevel')}break;case"mceEndTyping":if(tinyMCE.settings.custom_undo_redo&&this.undoRedo.typingUndoIndex!=-1){this.execCommand('mceAddUndoLevel');this.undoRedo.typingUndoIndex=-1}tinyMCE.typingUndoIndex=-1;break;case"mceBeginUndoLevel":this.undoRedoLevel=false;break;case"mceEndUndoLevel":this.undoRedoLevel=true;this.execCommand('mceAddUndoLevel');break;case"mceAddUndoLevel":if(tinyMCE.settings.custom_undo_redo&&this.undoRedoLevel){if(this.undoRedo.add())tinyMCE.triggerNodeChange(false)}break;case"Undo":if(tinyMCE.settings.custom_undo_redo){tinyMCE.execCommand("mceEndTyping");this.undoRedo.undo();tinyMCE.triggerNodeChange()}else this.getDoc().execCommand(command,user_interface,value);break;case"Redo":if(tinyMCE.settings.custom_undo_redo){tinyMCE.execCommand("mceEndTyping");this.undoRedo.redo();tinyMCE.triggerNodeChange()}else this.getDoc().execCommand(command,user_interface,value);break;case"mceToggleVisualAid":this.visualAid=!this.visualAid;tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid,this);tinyMCE.triggerNodeChange();break;case"Indent":this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();if(tinyMCE.isIE){var n=tinyMCE.getParentElement(this.getFocusElement(),"blockquote");do{if(n&&n.nodeName=="BLOCKQUOTE"){n.removeAttribute("dir");n.removeAttribute("style")}}while(n!=null&&(n=n.parentNode)!=null)}break;case"RemoveFormat":case"removeformat":var text=this.selection.getSelectedText();if(tinyMCE.isOpera){this.getDoc().execCommand("RemoveFormat",false,null);return}if(tinyMCE.isIE){try{var rng=doc.selection.createRange();rng.execCommand("RemoveFormat",false,null)}catch(e){}this.execCommand("mceSetStyleInfo",false,{command:"removeformat"})}else{this.getDoc().execCommand(command,user_interface,value);this.execCommand("mceSetStyleInfo",false,{command:"removeformat"})}if(text.length==0)this.execCommand("mceSetCSSClass",false,"");tinyMCE.triggerNodeChange();break;default:this.getDoc().execCommand(command,user_interface,value);if(tinyMCE.isGecko)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);else tinyMCE.triggerNodeChange()}if(command!="mceAddUndoLevel"&&command!="Undo"&&command!="Redo"&&command!="mceStartTyping"&&command!="mceEndTyping")tinyMCE.execCommand("mceAddUndoLevel")},queryCommandValue:function(c){try{return this.getDoc().queryCommandValue(c)}catch(e){return null}},queryCommandState:function(c){return this.getDoc().queryCommandState(c)},_addBogusBR:function(){var b=this.getBody();if(tinyMCE.isGecko&&!b.hasChildNodes())b.innerHTML='<br _moz_editor_bogus_node="TRUE" />'},_onAdd:function(replace_element,form_element_name,target_document){var hc,th,tos,editorTemplate,targetDoc,deltaWidth,deltaHeight,html,rng,fragment;var dynamicIFrame,tElm,doc,parentElm;th=this.settings.theme;tos=tinyMCE.themes[th];targetDoc=target_document?target_document:document;this.targetDoc=targetDoc;tinyMCE.themeURL=tinyMCE.baseURL+"/themes/"+this.settings.theme;this.settings.themeurl=tinyMCE.themeURL;if(!replace_element){alert("Error: Could not find the target element.");return false}if(tos.getEditorTemplate)editorTemplate=tos.getEditorTemplate(this.settings,this.editorId);deltaWidth=editorTemplate.delta_width?editorTemplate.delta_width:0;deltaHeight=editorTemplate.delta_height?editorTemplate.delta_height:0;html='<span id="'+this.editorId+'_parent" class="mceEditorContainer">'+editorTemplate.html;html=tinyMCE.replaceVar(html,"editor_id",this.editorId);if(!this.settings.default_document)this.settings.default_document=tinyMCE.baseURL+"/blank.htm";this.settings.old_width=this.settings.width;this.settings.old_height=this.settings.height;if(this.settings.width==-1)this.settings.width=replace_element.offsetWidth;if(this.settings.height==-1)this.settings.height=replace_element.offsetHeight;if(this.settings.width==0)this.settings.width=replace_element.style.width;if(this.settings.height==0)this.settings.height=replace_element.style.height;if(this.settings.width==0)this.settings.width=320;if(this.settings.height==0)this.settings.height=240;this.settings.area_width=parseInt(this.settings.width);this.settings.area_height=parseInt(this.settings.height);this.settings.area_width+=deltaWidth;this.settings.area_height+=deltaHeight;this.settings.width_style=""+this.settings.width;this.settings.height_style=""+this.settings.height;if((""+this.settings.width).indexOf('%')!=-1)this.settings.area_width="100%";else this.settings.width_style+='px';if((""+this.settings.height).indexOf('%')!=-1)this.settings.area_height="100%";else this.settings.height_style+='px';if((""+replace_element.style.width).indexOf('%')!=-1){this.settings.width=replace_element.style.width;this.settings.area_width="100%";this.settings.width_style="100%"}if((""+replace_element.style.height).indexOf('%')!=-1){this.settings.height=replace_element.style.height;this.settings.area_height="100%";this.settings.height_style="100%"}html=tinyMCE.applyTemplate(html);this.settings.width=this.settings.old_width;this.settings.height=this.settings.old_height;this.visualAid=this.settings.visual;this.formTargetElementId=form_element_name;if(replace_element.nodeName=="TEXTAREA"||replace_element.nodeName=="INPUT")this.startContent=replace_element.value;else this.startContent=replace_element.innerHTML;if(replace_element.nodeName!="TEXTAREA"&&replace_element.nodeName!="INPUT"){this.oldTargetElement=replace_element;hc='<input type="hidden" id="'+form_element_name+'" name="'+form_element_name+'" />';this.oldTargetDisplay=tinyMCE.getStyle(this.oldTargetElement,'display','inline');this.oldTargetElement.style.display="none";html+='</span>';if(tinyMCE.isGecko)html=hc+html;else html+=hc;if(tinyMCE.isGecko){rng=replace_element.ownerDocument.createRange();rng.setStartBefore(replace_element);fragment=rng.createContextualFragment(html);tinyMCE.insertAfter(fragment,replace_element)}else replace_element.insertAdjacentHTML("beforeBegin",html)}else{html+='</span>';this.oldTargetElement=replace_element;this.oldTargetDisplay=tinyMCE.getStyle(this.oldTargetElement,'display','inline');this.oldTargetElement.style.display="none";if(tinyMCE.isGecko){rng=replace_element.ownerDocument.createRange();rng.setStartBefore(replace_element);fragment=rng.createContextualFragment(html);tinyMCE.insertAfter(fragment,replace_element)}else replace_element.insertAdjacentHTML("beforeBegin",html)}dynamicIFrame=false;tElm=targetDoc.getElementById(this.editorId);if(!tinyMCE.isIE){if(tElm&&(tElm.nodeName=="SPAN"||tElm.nodeName=="span")){tElm=tinyMCE._createIFrame(tElm,targetDoc);dynamicIFrame=true}this.targetElement=tElm;this.iframeElement=tElm;this.contentDocument=tElm.contentDocument;this.contentWindow=tElm.contentWindow;}else{if(tElm&&tElm.nodeName=="SPAN")tElm=tinyMCE._createIFrame(tElm,targetDoc,targetDoc.parentWindow);else tElm=targetDoc.frames[this.editorId];this.targetElement=tElm;this.iframeElement=targetDoc.getElementById(this.editorId);if(tinyMCE.isOpera){this.contentDocument=this.iframeElement.contentDocument;this.contentWindow=this.iframeElement.contentWindow;dynamicIFrame=true}else{this.contentDocument=tElm.window.document;this.contentWindow=tElm.window}this.getDoc().designMode="on"}doc=this.contentDocument;if(dynamicIFrame){html=tinyMCE.getParam('doctype')+'<html><head xmlns="http://www.w3.org/1999/xhtml"><base href="'+tinyMCE.settings.base_href+'" /><title>blank_page</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body class="mceContentBody"></body></html>';try{if(!this.isHidden())this.getDoc().designMode="on";doc.open();doc.write(html);doc.close()}catch(e){this.getDoc().location.href=tinyMCE.baseURL+"/blank.htm"}}if(tinyMCE.isIE)window.setTimeout("tinyMCE.addEventHandlers(tinyMCE.instances[\""+this.editorId+"\"]);",1);parentElm=this.targetDoc.getElementById(this.editorId+'_parent');this.formElement=tinyMCE.isGecko?parentElm.previousSibling:parentElm.nextSibling;tinyMCE.setupContent(this.editorId,true);return true},setBaseHREF:function(u){var h,b,d,nl;d=this.getDoc();nl=d.getElementsByTagName("base");b=nl.length>0?nl[0]:null;if(!b){nl=d.getElementsByTagName("head");h=nl.length>0?nl[0]:null;b=d.createElement("base");b.setAttribute('href',u);h.appendChild(b)}else{if(u==''||u==null)b.parentNode.removeChild(b);else b.setAttribute('href',u)}},getHTML:function(r){var h,d=this.getDoc(),b=this.getBody();if(r)return b.innerHTML;h=tinyMCE._cleanupHTML(this,d,this.settings,b,false,true,false,true);if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(d);return h},setHTML:function(h){this.execCommand('mceSetContent',false,h);this.repaint()},getFocusElement:function(){return this.selection.getFocusElement()},getSel:function(){return this.selection.getSel()},getRng:function(){return this.selection.getRng()},triggerSave:function(skip_cleanup,skip_callback){var e,nl=[],i,s,content,htm;if(!this.enabled)return;this.switchSettings();s=tinyMCE.settings;if(tinyMCE.isRealIE){e=this.iframeElement;do{if(e.style&&e.style.display=='none'){e.style.display='block';nl[nl.length]={elm:e,type:'style'}}if(e.style&&s.hidden_tab_class.length>0&&e.className.indexOf(s.hidden_tab_class)!=-1){e.className=s.display_tab_class;nl[nl.length]={elm:e,type:'class'}}}while((e=e.parentNode)!=null)}tinyMCE.settings.preformatted=false;if(typeof(skip_cleanup)=="undefined")skip_cleanup=false;if(typeof(skip_callback)=="undefined")skip_callback=false;tinyMCE._setHTML(this.getDoc(),this.getBody().innerHTML);if(this.settings.cleanup==false){tinyMCE.handleVisualAid(this.getBody(),true,false,this);tinyMCE._setEventsEnabled(this.getBody(),true)}tinyMCE._customCleanup(this,"submit_content_dom",this.contentWindow.document.body);htm=skip_cleanup?this.getBody().innerHTML:tinyMCE._cleanupHTML(this,this.getDoc(),this.settings,this.getBody(),tinyMCE.visualAid,true,true);htm=tinyMCE._customCleanup(this,"submit_content",htm);if(!skip_callback&&tinyMCE.settings.save_callback!=='')content=tinyMCE.resolveDots(tinyMCE.settings.save_callback,window)(this.formTargetElementId,htm,this.getBody());if((typeof(content)!="undefined")&&content!=null)htm=content;htm=tinyMCE.regexpReplace(htm,"&#40;","(","gi");htm=tinyMCE.regexpReplace(htm,"&#41;",")","gi");htm=tinyMCE.regexpReplace(htm,"&#59;",";","gi");htm=tinyMCE.regexpReplace(htm,"&#34;","&quot;","gi");htm=tinyMCE.regexpReplace(htm,"&#94;","^","gi");if(this.formElement)this.formElement.value=htm;if(tinyMCE.isSafari&&this.formElement)this.formElement.innerText=htm;for(i=0;i<nl.length;i++){if(nl[i].type=='style')nl[i].elm.style.display='none';else nl[i].elm.className=s.hidden_tab_class}}};tinyMCE.add(TinyMCE_Engine,{cleanupHTMLCode:function(s){s=s.replace(new RegExp('<p \\/>','gi'),'<p>&nbsp;</p>');s=s.replace(new RegExp('<p>\\s*<\\/p>','gi'),'<p>&nbsp;</p>');s=s.replace(new RegExp('<br>\\s*<\\/br>','gi'),'<br />');s=s.replace(new RegExp('<(h[1-6]|p|div|address|pre|form|table|li|ol|ul|td|b|font|em|strong|i|strike|u|span|a|ul|ol|li|blockquote)([a-z]*)([^\\\\|>]*)\\/>','gi'),'<$1$2$3></$1$2>');s=s.replace(new RegExp('\\s+></','gi'),'></');s=s.replace(new RegExp('<(img|br|hr)([^>]*)><\\/(img|br|hr)>','gi'),'<$1$2 />');if(tinyMCE.isIE)s=s.replace(new RegExp('<p><hr \\/><\\/p>','gi'),"<hr>");if(tinyMCE.isIE)s=s.replace(/<!(\s*)\/>/g,'');return s},parseStyle:function(str){var ar=[],st,i,re,pa;if(str==null)return ar;st=str.split(';');tinyMCE.clearArray(ar);for(i=0;i<st.length;i++){if(st[i]=='')continue;re=new RegExp('^\\s*([^:]*):\\s*(.*)\\s*$');pa=st[i].replace(re,'$1||$2').split('||');if(pa.length==2)ar[pa[0].toLowerCase()]=pa[1]}return ar},compressStyle:function(ar,pr,sf,res){var box=[],i,a;box[0]=ar[pr+'-top'+sf];box[1]=ar[pr+'-left'+sf];box[2]=ar[pr+'-right'+sf];box[3]=ar[pr+'-bottom'+sf];for(i=0;i<box.length;i++){if(box[i]==null)return;if(i&&box[i]!=box[i-1])return}ar[res]=box[0];ar[pr+'-top'+sf]=null;ar[pr+'-left'+sf]=null;ar[pr+'-right'+sf]=null;ar[pr+'-bottom'+sf]=null},serializeStyle:function(ar){var str="",key,val,m;tinyMCE.compressStyle(ar,"border","","border");tinyMCE.compressStyle(ar,"border","-width","border-width");tinyMCE.compressStyle(ar,"border","-color","border-color");tinyMCE.compressStyle(ar,"border","-style","border-style");tinyMCE.compressStyle(ar,"padding","","padding");tinyMCE.compressStyle(ar,"margin","","margin");for(key in ar){val=ar[key];if(typeof(val)=='function')continue;if(key.indexOf('mso-')==0)continue;if(val!=null&&val!==''){val=''+val;val=val.replace(new RegExp("url\\(\\'?([^\\']*)\\'?\\)",'gi'),"url('$1')");if(val.indexOf('url(')!=-1&&tinyMCE.getParam('convert_urls')){m=new RegExp("url\\('(.*?)'\\)").exec(val);if(m.length>1)val="url('"+eval(tinyMCE.getParam('urlconverter_callback')+"(m[1], null, true);")+"')"}if(tinyMCE.getParam("force_hex_style_colors"))val=tinyMCE.convertRGBToHex(val,true);val=val.replace(/\"/g,'\'');if(val!="url('')")str+=key.toLowerCase()+": "+val+"; "}}if(new RegExp('; $').test(str))str=str.substring(0,str.length-2);return str},convertRGBToHex:function(s,k){var re,rgb;if(s.toLowerCase().indexOf('rgb')!=-1){re=new RegExp("(.*?)rgb\\s*?\\(\\s*?([0-9]+).*?,\\s*?([0-9]+).*?,\\s*?([0-9]+).*?\\)(.*?)","gi");rgb=s.replace(re,"$1,$2,$3,$4,$5").split(',');if(rgb.length==5){r=parseInt(rgb[1]).toString(16);g=parseInt(rgb[2]).toString(16);b=parseInt(rgb[3]).toString(16);r=r.length==1?'0'+r:r;g=g.length==1?'0'+g:g;b=b.length==1?'0'+b:b;s="#"+r+g+b;if(k)s=rgb[0]+s+rgb[4]}}return s},convertHexToRGB:function(s){if(s.indexOf('#')!=-1){s=s.replace(new RegExp('[^0-9A-F]','gi'),'');return"rgb("+parseInt(s.substring(0,2),16)+","+parseInt(s.substring(2,4),16)+","+parseInt(s.substring(4,6),16)+")"}return s},convertSpansToFonts:function(doc){var s,i,size,fSize,x,fFace,fColor,sizes=tinyMCE.getParam('font_size_style_values').replace(/\s+/,'').split(',');s=tinyMCE.selectElements(doc,'span,font');for(i=0;i<s.length;i++){size=tinyMCE.trim(s[i].style.fontSize).toLowerCase();fSize=0;for(x=0;x<sizes.length;x++){if(sizes[x]==size){fSize=x+1;break}}if(fSize>0){tinyMCE.setAttrib(s[i],'size',fSize);s[i].style.fontSize=''}fFace=s[i].style.fontFamily;if(fFace!=null&&fFace!==''){tinyMCE.setAttrib(s[i],'face',fFace);s[i].style.fontFamily=''}fColor=s[i].style.color;if(fColor!=null&&fColor!==''){tinyMCE.setAttrib(s[i],'color',tinyMCE.convertRGBToHex(fColor));s[i].style.color=''}}},convertFontsToSpans:function(doc){var fsClasses,s,i,fSize,fFace,fColor,sizes=tinyMCE.getParam('font_size_style_values').replace(/\s+/,'').split(',');fsClasses=tinyMCE.getParam('font_size_classes');if(fsClasses!=='')fsClasses=fsClasses.replace(/\s+/,'').split(',');else fsClasses=null;s=tinyMCE.selectElements(doc,'span,font');for(i=0;i<s.length;i++){fSize=tinyMCE.getAttrib(s[i],'size');fFace=tinyMCE.getAttrib(s[i],'face');fColor=tinyMCE.getAttrib(s[i],'color');if(fSize!==''){fSize=parseInt(fSize);if(fSize>0&&fSize<8){if(fsClasses!=null)tinyMCE.setAttrib(s[i],'class',fsClasses[fSize-1]);else s[i].style.fontSize=sizes[fSize-1]}s[i].removeAttribute('size')}if(fFace!==''){s[i].style.fontFamily=fFace;s[i].removeAttribute('face')}if(fColor!==''){s[i].style.color=fColor;s[i].removeAttribute('color')}}},cleanupAnchors:function(doc){var i,cn,x,an=doc.getElementsByTagName("a");for(i=an.length-1;i>=0;i--){if(tinyMCE.getAttrib(an[i],"name")!==''&&tinyMCE.getAttrib(an[i],"href")==''){cn=an[i].childNodes;for(x=cn.length-1;x>=0;x--)tinyMCE.insertAfter(cn[x],an[i])}}},getContent:function(editor_id){if(typeof(editor_id)!="undefined")tinyMCE.getInstanceById(editor_id).select();if(tinyMCE.selectedInstance)return tinyMCE.selectedInstance.getHTML();return null},_fixListElements:function(d){var nl,x,a=['ol','ul'],i,n,p,r=new RegExp('^(OL|UL)$'),np;for(x=0;x<a.length;x++){nl=d.getElementsByTagName(a[x]);for(i=0;i<nl.length;i++){n=nl[i];p=n.parentNode;if(r.test(p.nodeName)){np=tinyMCE.prevNode(n,'LI');if(!np){np=d.createElement('li');np.innerHTML='&nbsp;';np.appendChild(n);p.insertBefore(np,p.firstChild)}else np.appendChild(n)}}}},_fixTables:function(d){var nl,i,n,p,np,x,t;nl=d.getElementsByTagName('table');for(i=0;i<nl.length;i++){n=nl[i];if((p=tinyMCE.getParentElement(n,'p,h1,h2,h3,h4,h5,h6'))!=null){np=p.cloneNode(false);np.removeAttribute('id');t=n;while((n=n.nextSibling))np.appendChild(n);tinyMCE.insertAfter(np,p);tinyMCE.insertAfter(t,p)}}},_cleanupHTML:function(inst,doc,config,elm,visual,on_save,on_submit,inn){var h,d,t1,t2,t3,t4,t5,c,s,nb;if(!tinyMCE.getParam('cleanup'))return elm.innerHTML;on_save=typeof(on_save)=='undefined'?false:on_save;c=inst.cleanup;s=inst.settings;d=c.settings.debug;if(d)t1=new Date().getTime();inst._fixRootBlocks();if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertFontsToSpans(doc);if(tinyMCE.getParam("fix_list_elements"))tinyMCE._fixListElements(doc);if(tinyMCE.getParam("fix_table_elements"))tinyMCE._fixTables(doc);tinyMCE._customCleanup(inst,on_save?"get_from_editor_dom":"insert_to_editor_dom",doc.body);if(d)t2=new Date().getTime();c.settings.on_save=on_save;c.idCount=0;c.serializationId++;c.serializedNodes=[];c.sourceIndex=-1;if(s.cleanup_serializer=="xml")h=c.serializeNodeAsXML(elm,inn);else h=c.serializeNodeAsHTML(elm,inn);if(d)t3=new Date().getTime();nb=tinyMCE.getParam('entity_encoding')=='numeric'?'&#160;':'&nbsp;';h=h.replace(/<\/?(body|head|html)[^>]*>/gi,'');h=h.replace(new RegExp(' (rowspan="1"|colspan="1")','g'),'');h=h.replace(/<p><hr \/><\/p>/g,'<hr />');h=h.replace(/<p>(&nbsp;|&#160;)<\/p><hr \/><p>(&nbsp;|&#160;)<\/p>/g,'<hr />');h=h.replace(/<td>\s*<br \/>\s*<\/td>/g,'<td>'+nb+'</td>');h=h.replace(/<p>\s*<br \/>\s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(/<br \/>$/,'');h=h.replace(/<br \/><\/p>/g,'</p>');h=h.replace(/<p>\s*(&nbsp;|&#160;)\s*<br \/>\s*(&nbsp;|&#160;)\s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(/<p>\s*(&nbsp;|&#160;)\s*<br \/>\s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(/<p>\s*<br \/>\s*&nbsp;\s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(new RegExp('<a>(.*?)<\\/a>','g'),'$1');h=h.replace(/<p([^>]*)>\s*<\/p>/g,'<p$1>'+nb+'</p>');if(/^\s*(<br \/>|<p>&nbsp;<\/p>|<p>&#160;<\/p>|<p><\/p>)\s*$/.test(h))h='';if(s.preformatted){h=h.replace(/^<pre>/,'');h=h.replace(/<\/pre>$/,'');h='<pre>'+h+'</pre>'}if(tinyMCE.isGecko){h=h.replace(/<br \/>\s*<\/li>/g,'</li>');h=h.replace(/&nbsp;\s*<\/(dd|dt)>/g,'</$1>');h=h.replace(/<o:p _moz-userdefined="" \/>/g,'');h=h.replace(/<td([^>]*)>\s*<br \/>\s*<\/td>/g,'<td$1>'+nb+'</td>')}if(s.force_br_newlines)h=h.replace(/<p>(&nbsp;|&#160;)<\/p>/g,'<br />');h=tinyMCE._customCleanup(inst,on_save?"get_from_editor":"insert_to_editor",h);if(on_save){h=h.replace(new RegExp(' ?(mceItem[a-zA-Z0-9]*|'+s.visual_table_class+')','g'),'');h=h.replace(new RegExp(' ?class=""','g'),'')}if(s.remove_linebreaks&&!c.settings.indent)h=h.replace(/\n|\r/g,' ');if(d)t4=new Date().getTime();if(on_save&&c.settings.indent)h=c.formatHTML(h);if(on_submit&&(s.encoding=="xml"||s.encoding=="html"))h=c.xmlEncode(h);if(d)t5=new Date().getTime();if(c.settings.debug)tinyMCE.debug("Cleanup in ms: Pre="+(t2-t1)+", Serialize: "+(t3-t2)+", Post: "+(t4-t3)+", Format: "+(t5-t4)+", Sum: "+(t5-t1)+".");return h}});function TinyMCE_Cleanup(){this.isIE=(navigator.appName=="Microsoft Internet Explorer");this.rules=tinyMCE.clearArray([]);this.settings={indent_elements:'head,table,tbody,thead,tfoot,form,tr,ul,ol,blockquote,object',newline_before_elements:'h1,h2,h3,h4,h5,h6,pre,address,div,ul,ol,li,meta,option,area,title,link,base,script,td',newline_after_elements:'br,hr,p,pre,address,div,ul,ol,meta,option,area,link,base,script',newline_before_after_elements:'html,head,body,table,thead,tbody,tfoot,tr,form,ul,ol,blockquote,p,object,param,hr,div',indent_char:'\t',indent_levels:1,entity_encoding:'raw',valid_elements:'*[*]',entities:'',url_converter:'',invalid_elements:'',verify_html:false};this.vElements=tinyMCE.clearArray([]);this.vElementsRe='';this.closeElementsRe=/^(IMG|BR|HR|LINK|META|BASE|INPUT|AREA)$/;this.codeElementsRe=/^(SCRIPT|STYLE)$/;this.serializationId=0;this.mceAttribs={href:'mce_href',src:'mce_src',type:'mce_type'}}TinyMCE_Cleanup.prototype={init:function(s){var n,a,i,ir,or,st;for(n in s)this.settings[n]=s[n];s=this.settings;this.inRe=this._arrayToRe(s.indent_elements.split(','),'','^<(',')[^>]*');this.ouRe=this._arrayToRe(s.indent_elements.split(','),'','^<\\/(',')[^>]*');this.nlBeforeRe=this._arrayToRe(s.newline_before_elements.split(','),'gi','<(',')([^>]*)>');this.nlAfterRe=this._arrayToRe(s.newline_after_elements.split(','),'gi','<(',')([^>]*)>');this.nlBeforeAfterRe=this._arrayToRe(s.newline_before_after_elements.split(','),'gi','<(\\/?)(',')([^>]*)>');this.serializedNodes=[];this.serializationId=0;if(s.invalid_elements!=='')this.iveRe=this._arrayToRe(s.invalid_elements.toUpperCase().split(','),'g','^(',')$');else this.iveRe=null;st='';for(i=0;i<s.indent_levels;i++)st+=s.indent_char;this.inStr=st;if(!s.verify_html){s.valid_elements='*[*]';s.extended_valid_elements=''}this.fillStr=s.entity_encoding=="named"?"&nbsp;":"&#160;";this.idCount=0;this.xmlEncodeRe=new RegExp('[\u007F-\uFFFF<>&"]','g')},addRuleStr:function(s){var r=this.parseRuleStr(s),n;for(n in r){if(r[n])this.rules[n]=r[n]}this.vElements=tinyMCE.clearArray([]);for(n in this.rules){if(this.rules[n])this.vElements[this.vElements.length]=this.rules[n].tag}this.vElementsRe=this._arrayToRe(this.vElements,'')},isValid:function(n){if(!this.rulesDone)this._setupRules();if(!n)return true;n=n.replace(/[^a-z0-9]+/gi,'').toUpperCase();return!tinyMCE.getParam('cleanup')||this.vElementsRe.test(n)},addChildRemoveRuleStr:function(s){var x,y,p,i,t,tn,ta,cl,r;if(!s)return;ta=s.split(',');for(x=0;x<ta.length;x++){s=ta[x];p=this.split(/\[|\]/,s);if(p==null||p.length<1)t=s.toUpperCase();else t=p[0].toUpperCase();tn=this.split('/',t);for(y=0;y<tn.length;y++){r="^(";cl=this.split(/\|/,p[1]);for(i=0;i<cl.length;i++){if(cl[i]=='%istrict')r+=tinyMCE.inlineStrict;else if(cl[i]=='%itrans')r+=tinyMCE.inlineTransitional;else if(cl[i]=='%istrict_na')r+=tinyMCE.inlineStrict.substring(2);else if(cl[i]=='%itrans_na')r+=tinyMCE.inlineTransitional.substring(2);else if(cl[i]=='%btrans')r+=tinyMCE.blockElms;else if(cl[i]=='%strict')r+=tinyMCE.blockStrict;else r+=(cl[i].charAt(0)!='#'?cl[i].toUpperCase():cl[i]);r+=(i!=cl.length-1?'|':'')}r+=')$';if(this.childRules==null)this.childRules=tinyMCE.clearArray([]);this.childRules[tn[y]]=new RegExp(r);if(p.length>1)this.childRules[tn[y]].wrapTag=p[2]}}},parseRuleStr:function(s){var ta,p,r,a,i,x,px,t,tn,y,av,or=tinyMCE.clearArray([]),dv;if(s==null||s.length==0)return or;ta=s.split(',');for(x=0;x<ta.length;x++){s=ta[x];if(s.length==0)continue;p=this.split(/\[|\]/,s);if(p==null||p.length<1)t=s.toUpperCase();else t=p[0].toUpperCase();tn=this.split('/',t);for(y=0;y<tn.length;y++){r={};r.tag=tn[y];r.forceAttribs=null;r.defaultAttribs=null;r.validAttribValues=null;px=r.tag.charAt(0);r.forceOpen=px=='+';r.removeEmpty=px=='-';r.fill=px=='#';r.tag=r.tag.replace(/\+|-|#/g,'');r.oTagName=tn[0].replace(/\+|-|#/g,'').toLowerCase();r.isWild=new RegExp('\\*|\\?|\\+','g').test(r.tag);r.validRe=new RegExp(this._wildcardToRe('^'+r.tag+'$'));if(p.length>1){r.vAttribsRe='^(';a=this.split(/\|/,p[1]);for(i=0;i<a.length;i++){t=a[i];if(t.charAt(0)=='!'){a[i]=t=t.substring(1);if(!r.reqAttribsRe)r.reqAttribsRe='\\s+('+t;else r.reqAttribsRe+='|'+t}av=new RegExp('(=|:|<)(.*?)$').exec(t);t=t.replace(new RegExp('(=|:|<).*?$'),'');if(av&&av.length>0){if(av[0].charAt(0)==':'){if(!r.forceAttribs)r.forceAttribs=tinyMCE.clearArray([]);r.forceAttribs[t.toLowerCase()]=av[0].substring(1)}else if(av[0].charAt(0)=='='){if(!r.defaultAttribs)r.defaultAttribs=tinyMCE.clearArray([]);dv=av[0].substring(1);r.defaultAttribs[t.toLowerCase()]=dv==''?"mce_empty":dv}else if(av[0].charAt(0)=='<'){if(!r.validAttribValues)r.validAttribValues=tinyMCE.clearArray([]);r.validAttribValues[t.toLowerCase()]=this._arrayToRe(this.split('?',av[0].substring(1)),'i')}}r.vAttribsRe+=''+t.toLowerCase()+(i!=a.length-1?'|':'');a[i]=t.toLowerCase()}if(r.reqAttribsRe)r.reqAttribsRe=new RegExp(r.reqAttribsRe+')=\"','g');r.vAttribsRe+=')$';r.vAttribsRe=this._wildcardToRe(r.vAttribsRe);r.vAttribsReIsWild=new RegExp('\\*|\\?|\\+','g').test(r.vAttribsRe);r.vAttribsRe=new RegExp(r.vAttribsRe);r.vAttribs=a.reverse();}else{r.vAttribsRe='';r.vAttribs=tinyMCE.clearArray([]);r.vAttribsReIsWild=false}or[r.tag]=r}}return or},serializeNodeAsXML:function(n){var s,b;if(!this.xmlDoc){if(this.isIE){try{this.xmlDoc=new ActiveXObject('MSXML2.DOMDocument')}catch(e){}if(!this.xmlDoc)try{this.xmlDoc=new ActiveXObject('Microsoft.XmlDom')}catch(e){}}else this.xmlDoc=document.implementation.createDocument('','',null);if(!this.xmlDoc)alert("Error XML Parser could not be found.")}if(this.xmlDoc.firstChild)this.xmlDoc.removeChild(this.xmlDoc.firstChild);b=this.xmlDoc.createElement("html");b=this.xmlDoc.appendChild(b);this._convertToXML(n,b);if(this.isIE)return this.xmlDoc.xml;else return new XMLSerializer().serializeToString(this.xmlDoc)},_convertToXML:function(n,xn){var xd,el,i,l,cn,at,no,hc=false;if(tinyMCE.isRealIE&&this._isDuplicate(n))return;xd=this.xmlDoc;switch(n.nodeType){case 1:hc=n.hasChildNodes();el=xd.createElement(n.nodeName.toLowerCase());at=n.attributes;for(i=at.length-1;i>-1;i--){no=at[i];if(no.specified&&no.nodeValue)el.setAttribute(no.nodeName.toLowerCase(),no.nodeValue)}if(!hc&&!this.closeElementsRe.test(n.nodeName))el.appendChild(xd.createTextNode(""));xn=xn.appendChild(el);break;case 3:xn.appendChild(xd.createTextNode(n.nodeValue));return;case 8:xn.appendChild(xd.createComment(n.nodeValue));return}if(hc){cn=n.childNodes;for(i=0,l=cn.length;i<l;i++)this._convertToXML(cn[i],xn)}},serializeNodeAsHTML:function(n,inn){var en,no,h='',i,l,t,st,r,cn,va=false,f=false,at,hc,cr,nn;if(!this.rulesDone)this._setupRules();if(tinyMCE.isRealIE&&this._isDuplicate(n))return'';if(n.parentNode&&this.childRules!=null){cr=this.childRules[n.parentNode.nodeName];if(typeof(cr)!="undefined"&&!cr.test(n.nodeName)){st=true;t=null}}switch(n.nodeType){case 1:hc=n.hasChildNodes();if(st)break;nn=n.nodeName;if(tinyMCE.isRealIE){if(n.nodeName.indexOf('/')!=-1)break;if(n.scopeName&&n.scopeName!='HTML')nn=n.scopeName.toUpperCase()+':'+nn.toUpperCase()}else if(tinyMCE.isOpera&&nn.indexOf(':')>0)nn=nn.toUpperCase();if(this.settings.convert_fonts_to_spans){if(this.settings.on_save&&nn=='FONT')nn='SPAN';if(!this.settings.on_save&&nn=='SPAN')nn='FONT'}if(this.vElementsRe.test(nn)&&(!this.iveRe||!this.iveRe.test(nn))&&!inn){va=true;r=this.rules[nn];if(!r){at=this.rules;for(no in at){if(at[no]&&at[no].validRe.test(nn)){r=at[no];break}}}en=r.isWild?nn.toLowerCase():r.oTagName;f=r.fill;if(r.removeEmpty&&!hc)return"";t='<'+en;if(r.vAttribsReIsWild){at=n.attributes;for(i=at.length-1;i>-1;i--){no=at[i];if(no.specified&&r.vAttribsRe.test(no.nodeName))t+=this._serializeAttribute(n,r,no.nodeName)}}else{for(i=r.vAttribs.length-1;i>-1;i--)t+=this._serializeAttribute(n,r,r.vAttribs[i])}if(!this.settings.on_save){at=this.mceAttribs;for(no in at){if(at[no])t+=this._serializeAttribute(n,r,at[no])}}if(r.reqAttribsRe&&!t.match(r.reqAttribsRe))t=null;if(t!=null&&this.closeElementsRe.test(nn))return t+' />';if(t!=null)h+=t+'>';if(this.isIE&&this.codeElementsRe.test(nn))h+=n.innerHTML}break;case 3:if(st)break;if(n.parentNode&&this.codeElementsRe.test(n.parentNode.nodeName))return this.isIE?'':n.nodeValue;return this.xmlEncode(n.nodeValue);case 8:if(st)break;return"<!--"+this._trimComment(n.nodeValue)+"-->"}if(hc){cn=n.childNodes;for(i=0,l=cn.length;i<l;i++)h+=this.serializeNodeAsHTML(cn[i])}if(f&&!hc)h+=this.fillStr;if(t!=null&&va)h+='</'+en+'>';return h},_serializeAttribute:function(n,r,an){var av='',t,os=this.settings.on_save;if(os&&(an.indexOf('mce_')==0||an.indexOf('_moz')==0))return'';if(os&&this.mceAttribs[an])av=this._getAttrib(n,this.mceAttribs[an]);if(av.length==0)av=this._getAttrib(n,an);if(av.length==0&&r.defaultAttribs&&(t=r.defaultAttribs[an])){av=t;if(av=="mce_empty")return" "+an+'=""'}if(r.forceAttribs&&(t=r.forceAttribs[an]))av=t;if(os&&av.length!=0&&/^(src|href|longdesc)$/.test(an))av=this._urlConverter(this,n,av);if(av.length!=0&&r.validAttribValues&&r.validAttribValues[an]&&!r.validAttribValues[an].test(av))return"";if(av.length!=0&&av=="{$uid}")av="uid_"+(this.idCount++);if(av.length!=0){if(an.indexOf('on')!=0)av=this.xmlEncode(av,1);return" "+an+"="+'"'+av+'"'}return""},formatHTML:function(h){var s=this.settings,p='',i=0,li=0,o='',l;h=h.replace(/<pre([^>]*)>(.*?)<\/pre>/gi,function(a,b,c){c=c.replace(/<br\s*\/>/gi,'\n');return'<pre'+b+'>'+c+'</pre>'});h=h.replace(/\r/g,'');h='\n'+h;h=h.replace(new RegExp('\\n\\s+','gi'),'\n');h=h.replace(this.nlBeforeRe,'\n<$1$2>');h=h.replace(this.nlAfterRe,'<$1$2>\n');h=h.replace(this.nlBeforeAfterRe,'\n<$1$2$3>\n');h+='\n';while((i=h.indexOf('\n',i+1))!=-1){if((l=h.substring(li+1,i)).length!=0){if(this.ouRe.test(l)&&p.length>=s.indent_levels)p=p.substring(s.indent_levels);o+=p+l+'\n';if(this.inRe.test(l))p+=this.inStr}li=i}return o},xmlEncode:function(s){var cl=this,re=this.xmlEncodeRe;if(!this.entitiesDone)this._setupEntities();switch(this.settings.entity_encoding){case"raw":return tinyMCE.xmlEncode(s);case"named":return s.replace(re,function(c){var b=cl.entities[c.charCodeAt(0)];return b?'&'+b+';':c});case"numeric":return s.replace(re,function(c){return'&#'+c.charCodeAt(0)+';'})}return s},split:function(re,s){var i,l,o=[],c=s.split(re);for(i=0,l=c.length;i<l;i++){if(c[i]!=='')o[i]=c[i]}return o},_trimComment:function(s){s=s.replace(new RegExp('\\smce_src=\"[^\"]*\"','gi'),"");s=s.replace(new RegExp('\\smce_href=\"[^\"]*\"','gi'),"");return s},_getAttrib:function(e,n,d){var v,ex,nn;if(typeof(d)=="undefined")d="";if(!e||e.nodeType!=1)return d;try{v=e.getAttribute(n,0)}catch(ex){v=e.getAttribute(n,2)}if(n=="class"&&!v)v=e.className;if(this.isIE){if(n=="http-equiv")v=e.httpEquiv;nn=e.nodeName;if(nn=="FORM"&&n=="enctype"&&v=="application/x-www-form-urlencoded")v="";if(nn=="INPUT"&&n=="size"&&v=="20")v="";if(nn=="INPUT"&&n=="maxlength"&&v=="2147483647")v="";if(n=="width"||n=="height")v=e.getAttribute(n,2)}if(n=='style'&&v){if(!tinyMCE.isOpera)v=e.style.cssText;v=tinyMCE.serializeStyle(tinyMCE.parseStyle(v))}if(this.settings.on_save&&n.indexOf('on')!=-1&&this.settings.on_save&&v&&v!=='')v=tinyMCE.cleanupEventStr(v);return(v&&v!=='')?''+v:d},_urlConverter:function(c,n,v){if(!c.settings.on_save)return tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href,v);else if(tinyMCE.getParam('convert_urls')){if(!this.urlConverter)this.urlConverter=eval(tinyMCE.settings.urlconverter_callback);return this.urlConverter(v,n,true)}return v},_arrayToRe:function(a,op,be,af){var i,r;op=typeof(op)=="undefined"?"gi":op;be=typeof(be)=="undefined"?"^(":be;af=typeof(af)=="undefined"?")$":af;r=be;for(i=0;i<a.length;i++)r+=this._wildcardToRe(a[i])+(i!=a.length-1?"|":"");r+=af;return new RegExp(r,op)},_wildcardToRe:function(s){s=s.replace(/\?/g,'(\\S?)');s=s.replace(/\+/g,'(\\S+)');s=s.replace(/\*/g,'(\\S*)');return s},_setupEntities:function(){var n,a,i,s=this.settings;if(s.entity_encoding=="named"){n=tinyMCE.clearArray([]);a=this.split(',',s.entities);for(i=0;i<a.length;i+=2)n[a[i]]=a[i+1];this.entities=n}this.entitiesDone=true},_setupRules:function(){var s=this.settings;this.addRuleStr(s.valid_elements);this.addRuleStr(s.extended_valid_elements);this.addChildRemoveRuleStr(s.valid_child_elements);this.rulesDone=true},_isDuplicate:function(n){var i,l,sn;if(!this.settings.fix_content_duplication)return false;if(tinyMCE.isRealIE&&n.nodeType==1){if(n.mce_serialized==this.serializationId)return true;n.setAttribute('mce_serialized',this.serializationId)}else{sn=this.serializedNodes;for(i=0,l=sn.length;i<l;i++){if(sn[i]==n)return true}sn.push(n)}return false}};tinyMCE.add(TinyMCE_Engine,{createTagHTML:function(tn,a,h){var o='',f=tinyMCE.xmlEncode,n;o='<'+tn;if(a){for(n in a){if(typeof(a[n])!='function'&&a[n]!=null)o+=' '+f(n)+'="'+f(''+a[n])+'"'}}o+=!h?' />':'>'+h+'</'+tn+'>';return o},createTag:function(d,tn,a,h){var o=d.createElement(tn),n;if(a){for(n in a){if(typeof(a[n])!='function'&&a[n]!=null)tinyMCE.setAttrib(o,n,a[n])}}if(h)o.innerHTML=h;return o},getElementByAttributeValue:function(n,e,a,v){return(n=this.getElementsByAttributeValue(n,e,a,v)).length==0?null:n[0]},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},isBlockElement:function(n){return n!=null&&n.nodeType==1&&this.blockRegExp.test(n.nodeName)},getParentBlockElement:function(n,r){return this.getParentNode(n,function(n){return tinyMCE.isBlockElement(n)},r);return null},insertAfter:function(n,r){if(r.nextSibling)r.parentNode.insertBefore(n,r.nextSibling);else r.parentNode.appendChild(n)},setInnerHTML:function(e,h){var i,nl,n;if(tinyMCE.isGecko){h=h.replace(/<embed([^>]*)>/gi,'<tmpembed$1>');h=h.replace(/<em([^>]*)>/gi,'<i$1>');h=h.replace(/<tmpembed([^>]*)>/gi,'<embed$1>');h=h.replace(/<strong([^>]*)>/gi,'<b$1>');h=h.replace(/<\/strong>/gi,'</b>');h=h.replace(/<\/em>/gi,'</i>')}if(tinyMCE.isRealIE){h=h.replace(/\s\/>/g,'>');h=h.replace(/<p([^>]*)>\u00A0?<\/p>/gi,'<p$1 mce_keep="true">&nbsp;</p>');h=h.replace(/<p([^>]*)>\s*&nbsp;\s*<\/p>/gi,'<p$1 mce_keep="true">&nbsp;</p>');h=h.replace(/<p([^>]*)>\s+<\/p>/gi,'<p$1 mce_keep="true">&nbsp;</p>');e.innerHTML=tinyMCE.uniqueTag+h;e.firstChild.removeNode(true);nl=e.getElementsByTagName("p");for(i=nl.length-1;i>=0;i--){n=nl[i];if(n.nodeName=='P'&&!n.hasChildNodes()&&!n.mce_keep)n.parentNode.removeChild(n)}}else{h=this.fixGeckoBaseHREFBug(1,e,h);e.innerHTML=h;this.fixGeckoBaseHREFBug(2,e,h)}},getOuterHTML:function(e){var d;if(tinyMCE.isIE)return e.outerHTML;d=e.ownerDocument.createElement("body");d.appendChild(e.cloneNode(true));return d.innerHTML},setOuterHTML:function(e,h,d){var d=typeof(d)=="undefined"?e.ownerDocument:d,i,nl,t;if(tinyMCE.isIE&&e.nodeType==1)e.outerHTML=h;else{t=d.createElement("body");t.innerHTML=h;for(i=0,nl=t.childNodes;i<nl.length;i++)e.parentNode.insertBefore(nl[i].cloneNode(true),e);e.parentNode.removeChild(e)}},_getElementById:function(id,d){var e,i,j,f;if(typeof(d)=="undefined")d=document;e=d.getElementById(id);if(!e){f=d.forms;for(i=0;i<f.length;i++){for(j=0;j<f[i].elements.length;j++){if(f[i].elements[j].name==id){e=f[i].elements[j];break}}}}return e},getNodeTree:function(n,na,t,nn){return this.selectNodes(n,function(n){return(!t||n.nodeType==t)&&(!nn||n.nodeName==nn)},na?na:[])},getParentElement:function(n,na,f,r){var re=na?new RegExp('^('+na.toUpperCase().replace(/,/g,'|')+')$'):0,v;if(f&&typeof(f)=='string')return this.getParentElement(n,na,function(no){return tinyMCE.getAttrib(no,f)!==''});return this.getParentNode(n,function(n){return((n.nodeType==1&&!re)||(re&&re.test(n.nodeName)))&&(!f||f(n))},r)},getParentNode:function(n,f,r){while(n){if(n==r)return null;if(f(n))return n;n=n.parentNode}return null},getAttrib:function(elm,name,dv){var v;if(typeof(dv)=="undefined")dv="";if(!elm||elm.nodeType!=1)return dv;try{v=elm.getAttribute(name,0)}catch(ex){v=elm.getAttribute(name,2)}if(name=="class"&&!v)v=elm.className;if(tinyMCE.isGecko){if(name=="src"&&elm.src!=null&&elm.src!=='')v=elm.src;if(name=="href"&&elm.href!=null&&elm.href!=='')v=elm.href}else if(tinyMCE.isIE){switch(name){case"http-equiv":v=elm.httpEquiv;break;case"width":case"height":v=elm.getAttribute(name,2);break}}if(name=="style"&&!tinyMCE.isOpera)v=elm.style.cssText;return(v&&v!=='')?v:dv},setAttrib:function(el,name,va,fix){if(typeof(va)=="number"&&va!=null)va=""+va;if(fix){if(va==null)va="";va=va.replace(/[^0-9%]/g,'')}if(name=="style")el.style.cssText=va;if(name=="class")el.className=va;if(va!=null&&va!==''&&va!=-1)el.setAttribute(name,va);else el.removeAttribute(name)},setStyleAttrib:function(e,n,v){e.style[n]=v;if(tinyMCE.isIE&&v==null||v==''){v=tinyMCE.serializeStyle(tinyMCE.parseStyle(e.style.cssText));e.style.cssText=v;e.setAttribute("style",v)}},switchClass:function(ei,c){var e;if(tinyMCE.switchClassCache[ei])e=tinyMCE.switchClassCache[ei];else e=tinyMCE.switchClassCache[ei]=document.getElementById(ei);if(e){if(tinyMCE.settings.button_tile_map&&e.className&&e.className.indexOf('mceTiledButton')==0)c='mceTiledButton '+c;e.className=c}},getAbsPosition:function(n,cn){var l=0,t=0;while(n&&n!=cn){l+=n.offsetLeft;t+=n.offsetTop;n=n.offsetParent}return{absLeft:l,absTop:t}},prevNode:function(e,n){var a=n.split(','),i;while((e=e.previousSibling)!=null){for(i=0;i<a.length;i++){if(e.nodeName==a[i])return e}}return null},nextNode:function(e,n){var a=n.split(','),i;while((e=e.nextSibling)!=null){for(i=0;i<a.length;i++){if(e.nodeName==a[i])return e}}return null},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},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},addCSSClass:function(e,c,b){var o=this.removeCSSClass(e,c);return e.className=b?c+(o!==''?(' '+o):''):(o!==''?(o+' '):'')+c},removeCSSClass:function(e,c){c=e.className.replace(new RegExp("(^|\\s+)"+c+"(\\s+|$)"),' ');return e.className=c!=' '?c:''},hasCSSClass:function(n,c){return new RegExp('\\b'+c+'\\b','g').test(n.className)},renameElement:function(e,n,d){var ne,i,ar;d=typeof(d)=="undefined"?tinyMCE.selectedInstance.getDoc():d;if(e){ne=d.createElement(n);ar=e.attributes;for(i=ar.length-1;i>-1;i--){if(ar[i].specified&&ar[i].nodeValue)ne.setAttribute(ar[i].nodeName.toLowerCase(),ar[i].nodeValue)}ar=e.childNodes;for(i=0;i<ar.length;i++)ne.appendChild(ar[i].cloneNode(true));e.parentNode.replaceChild(ne,e)}},getViewPort:function(w){var d=w.document,m=d.compatMode=='CSS1Compat',b=d.body,de=d.documentElement;return{left:w.pageXOffset||(m?de.scrollLeft:b.scrollLeft),top:w.pageYOffset||(m?de.scrollTop:b.scrollTop),width:w.innerWidth||(m?de.clientWidth:b.clientWidth),height:w.innerHeight||(m?de.clientHeight:b.clientHeight)}},getStyle:function(n,na,d){if(!n)return false;if(tinyMCE.isGecko&&n.ownerDocument.defaultView){try{return n.ownerDocument.defaultView.getComputedStyle(n,null).getPropertyValue(na)}catch(n){return null}}na=na.replace(/-(\D)/g,function(a,b){return b.toUpperCase()});if(n.currentStyle)return n.currentStyle[na];return false}});tinyMCE.add(TinyMCE_Engine,{parseURL:function(url_str){var urlParts=[],i,pos,lastPos,chr;if(url_str){pos=url_str.indexOf('://');if(pos!=-1){urlParts.protocol=url_str.substring(0,pos);lastPos=pos+3}for(i=lastPos;i<url_str.length;i++){chr=url_str.charAt(i);if(chr==':')break;if(chr=='/')break}pos=i;urlParts.host=url_str.substring(lastPos,pos);urlParts.port="";lastPos=pos;if(url_str.charAt(pos)==':'){pos=url_str.indexOf('/',lastPos);urlParts.port=url_str.substring(lastPos+1,pos)}lastPos=pos;pos=url_str.indexOf('?',lastPos);if(pos==-1)pos=url_str.indexOf('#',lastPos);if(pos==-1)pos=url_str.length;urlParts.path=url_str.substring(lastPos,pos);lastPos=pos;if(url_str.charAt(pos)=='?'){pos=url_str.indexOf('#');pos=(pos==-1)?url_str.length:pos;urlParts.query=url_str.substring(lastPos+1,pos)}lastPos=pos;if(url_str.charAt(pos)=='#'){pos=url_str.length;urlParts.anchor=url_str.substring(lastPos+1,pos)}}return urlParts},serializeURL:function(up){var o="";if(up.protocol)o+=up.protocol+"://";if(up.host)o+=up.host;if(up.port)o+=":"+up.port;if(up.path)o+=up.path;if(up.query)o+="?"+up.query;if(up.anchor)o+="#"+up.anchor;return o},convertAbsoluteURLToRelativeURL:function(base_url,url_to_relative){var baseURL=this.parseURL(base_url),targetURL=this.parseURL(url_to_relative);var i,strTok1,strTok2,breakPoint=0,outPath="",forceSlash=false;var fileName,pos;if(targetURL.path=='')targetURL.path="/";else forceSlash=true;base_url=baseURL.path.substring(0,baseURL.path.lastIndexOf('/'));strTok1=base_url.split('/');strTok2=targetURL.path.split('/');if(strTok1.length>=strTok2.length){for(i=0;i<strTok1.length;i++){if(i>=strTok2.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break}}}if(strTok1.length<strTok2.length){for(i=0;i<strTok2.length;i++){if(i>=strTok1.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break}}}if(breakPoint==1)return targetURL.path;for(i=0;i<(strTok1.length-(breakPoint-1));i++)outPath+="../";for(i=breakPoint-1;i<strTok2.length;i++){if(i!=(breakPoint-1))outPath+="/"+strTok2[i];else outPath+=strTok2[i]}targetURL.protocol=null;targetURL.host=null;targetURL.port=null;targetURL.path=outPath==''&&forceSlash?"/":outPath;fileName=baseURL.path;if((pos=fileName.lastIndexOf('/'))!=-1)fileName=fileName.substring(pos+1);if(fileName==targetURL.path&&targetURL.anchor!=='')targetURL.path="";if(targetURL.path==''&&!targetURL.anchor)targetURL.path=fileName!==''?fileName:"/";return this.serializeURL(targetURL)},convertRelativeToAbsoluteURL:function(base_url,relative_url){var baseURL=this.parseURL(base_url),baseURLParts,relURLParts,newRelURLParts,numBack,relURL=this.parseURL(relative_url),i;var len,absPath,start,end,newBaseURLParts;if(relative_url==''||relative_url.indexOf('://')!=-1||/^(mailto:|javascript:|#|\/)/.test(relative_url))return relative_url;baseURLParts=baseURL.path.split('/');relURLParts=relURL.path.split('/');newBaseURLParts=[];for(i=baseURLParts.length-1;i>=0;i--){if(baseURLParts[i].length==0)continue;newBaseURLParts[newBaseURLParts.length]=baseURLParts[i]}baseURLParts=newBaseURLParts.reverse();newRelURLParts=[];numBack=0;for(i=relURLParts.length-1;i>=0;i--){if(relURLParts[i].length==0||relURLParts[i]==".")continue;if(relURLParts[i]=='..'){numBack++;continue}if(numBack>0){numBack--;continue}newRelURLParts[newRelURLParts.length]=relURLParts[i]}relURLParts=newRelURLParts.reverse();len=baseURLParts.length-numBack;absPath=(len<=0?"":"/")+baseURLParts.slice(0,len).join('/')+"/"+relURLParts.join('/');start="";end="";relURL.protocol=baseURL.protocol;relURL.host=baseURL.host;relURL.port=baseURL.port;if(relURL.path.charAt(relURL.path.length-1)=="/")absPath+="/";relURL.path=absPath;return this.serializeURL(relURL)},convertURL:function(url,node,on_save){var dl=document.location,start,portPart,urlParts,baseUrlParts,tmpUrlParts,curl;var prot=dl.protocol,host=dl.hostname,port=dl.port;if(prot=="file:")return url;url=tinyMCE.regexpReplace(url,'(http|https):///','/');if(url.indexOf('mailto:')!=-1||url.indexOf('javascript:')!=-1||/^[ \t\r\n\+]*[#\?]/.test(url))return url;if(!tinyMCE.isIE&&!on_save&&url.indexOf("://")==-1&&url.charAt(0)!='/')return tinyMCE.settings.base_href+url;if(on_save&&tinyMCE.getParam('relative_urls')){curl=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href,url);if(curl.charAt(0)=='/')curl=tinyMCE.settings.document_base_prefix+curl;urlParts=tinyMCE.parseURL(curl);tmpUrlParts=tinyMCE.parseURL(tinyMCE.settings.document_base_url);if(urlParts.host==tmpUrlParts.host&&(urlParts.port==tmpUrlParts.port))return tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings.document_base_url,curl)}if(!tinyMCE.getParam('relative_urls')){urlParts=tinyMCE.parseURL(url);baseUrlParts=tinyMCE.parseURL(tinyMCE.settings.base_href);url=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href,url);if(urlParts.anchor&&urlParts.path==baseUrlParts.path)return"#"+urlParts.anchor}if(tinyMCE.getParam('remove_script_host')){start="";portPart="";if(port!=='')portPart=":"+port;start=prot+"//"+host+portPart+"/";if(url.indexOf(start)==0)url=url.substring(start.length-1)}return url},convertAllRelativeURLs:function(body){var i,elms,src,href,mhref,msrc;elms=body.getElementsByTagName("img");for(i=0;i<elms.length;i++){src=tinyMCE.getAttrib(elms[i],'src');msrc=tinyMCE.getAttrib(elms[i],'mce_src');if(msrc!=='')src=msrc;if(src!==''){src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href,src);elms[i].setAttribute("src",src)}}elms=body.getElementsByTagName("a");for(i=0;i<elms.length;i++){href=tinyMCE.getAttrib(elms[i],'href');mhref=tinyMCE.getAttrib(elms[i],'mce_href');if(mhref!=='')href=mhref;if(href&&href!==''){href=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href,href);elms[i].setAttribute("href",href)}}}});tinyMCE.add(TinyMCE_Engine,{clearArray:function(a){var n;for(n in a)a[n]=null;return a},explode:function(d,s){var ar=s.split(d),oar=[],i;for(i=0;i<ar.length;i++){if(ar[i]!=='')oar[oar.length]=ar[i]}return oar}});tinyMCE.add(TinyMCE_Engine,{_setEventsEnabled:function(node,state){var evs,x,y,elms,i,event;var events=['onfocus','onblur','onclick','ondblclick','onmousedown','onmouseup','onmouseover','onmousemove','onmouseout','onkeypress','onkeydown','onkeydown','onkeyup'];evs=tinyMCE.settings.event_elements.split(',');for(y=0;y<evs.length;y++){elms=node.getElementsByTagName(evs[y]);for(i=0;i<elms.length;i++){event="";for(x=0;x<events.length;x++){if((event=tinyMCE.getAttrib(elms[i],events[x]))!==''){event=tinyMCE.cleanupEventStr(""+event);if(!state)event="return true;"+event;else event=event.replace(/^return true;/gi,'');elms[i].removeAttribute(events[x]);elms[i].setAttribute(events[x],event)}}}}},_eventPatch:function(editor_id){var n,inst,win,e;if(typeof(tinyMCE)=="undefined")return true;try{if(tinyMCE.selectedInstance){win=tinyMCE.selectedInstance.getWin();if(win&&win.event){e=win.event;if(!e.target)e.target=e.srcElement;TinyMCE_Engine.prototype.handleEvent(e);return}}for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.select();win=inst.getWin();if(win&&win.event){e=win.event;if(!e.target)e.target=e.srcElement;TinyMCE_Engine.prototype.handleEvent(e);return}}}catch(ex){}},findEvent:function(e){var n,inst;if(e)return e;for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(tinyMCE.isInstance(inst)&&inst.getWin().event)return inst.getWin().event}return null},unloadHandler:function(){tinyMCE.triggerSave(true,true)},addEventHandlers:function(inst){this.setEventHandlers(inst,1)},setEventHandlers:function(inst,s){var doc=inst.getDoc(),ie,ot,i,f=s?tinyMCE.addEvent:tinyMCE.removeEvent;ie=['keypress','keyup','keydown','click','mouseup','mousedown','controlselect','dblclick'];ot=['keypress','keyup','keydown','click','mouseup','mousedown','focus','blur','dragdrop'];inst.switchSettings();if(tinyMCE.isIE){for(i=0;i<ie.length;i++)f(doc,ie[i],TinyMCE_Engine.prototype._eventPatch)}else{for(i=0;i<ot.length;i++)f(doc,ot[i],tinyMCE.handleEvent);try{doc.designMode="On"}catch(e){}}},onMouseMove:function(){var inst,lh;if(tinyMCE.lastHover){lh=tinyMCE.lastHover;if(lh.className.indexOf('mceMenu')!=-1)tinyMCE._menuButtonEvent('out',lh);else lh.className=lh.className;tinyMCE.lastHover=null}if(!tinyMCE.hasMouseMoved){inst=tinyMCE.selectedInstance;if(inst.isFocused){inst.undoBookmark=inst.selection.getBookmark();tinyMCE.hasMouseMoved=true}}},cancelEvent:function(e){if(!e)return false;if(tinyMCE.isIE){e.returnValue=false;e.cancelBubble=true}else{e.preventDefault();e.stopPropagation&&e.stopPropagation()}return false},addEvent:function(o,n,h){if(n!='unload'){function clean(){var ex;try{tinyMCE.removeEvent(o,n,h);tinyMCE.removeEvent(window,'unload',clean);o=n=h=null}catch(ex){}}tinyMCE.addEvent(window,'unload',clean)}if(o.attachEvent)o.attachEvent("on"+n,h);else o.addEventListener(n,h,false)},removeEvent:function(o,n,h){if(o.detachEvent)o.detachEvent("on"+n,h);else o.removeEventListener(n,h,false)},addSelectAccessibility:function(e,s,w){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;if(e.type=="blur"){if(elm.oldonchange){elm.onchange=elm.oldonchange;elm.oldonchange=null}return true}if(elm.nodeName=="SELECT"&&!elm.oldonchange){elm.oldonchange=elm.onchange;elm.onchange=null}if(e.keyCode==13||e.keyCode==32){elm.onchange=elm.oldonchange;elm.onchange();elm.oldonchange=null;tinyMCE.cancelEvent(e);return false}return true},_resetIframeHeight:function(){var ife;if(tinyMCE.isRealIE){ife=tinyMCE.selectedInstance.iframeElement;if(ife._oldHeight){ife.style.height=ife._oldHeight;ife.height=ife._oldHeight}}}});function TinyMCE_Selection(inst){this.instance=inst};TinyMCE_Selection.prototype={getSelectedHTML:function(){var inst=this.instance,e,r=this.getRng(),h;if(!r)return null;e=document.createElement("body");if(r.cloneContents)e.appendChild(r.cloneContents());else if(typeof(r.item)!='undefined'||typeof(r.htmlText)!='undefined')e.innerHTML=r.item?r.item(0).outerHTML:r.htmlText;else e.innerHTML=r.toString();h=tinyMCE._cleanupHTML(inst,inst.contentDocument,inst.settings,e,e,false,true,false);return h},getSelectedText:function(){var inst=this.instance,d,r,s,t;if(tinyMCE.isIE){d=inst.getDoc();if(d.selection.type=="Text"){r=d.selection.createRange();t=r.text}else t=''}else{s=this.getSel();if(s&&s.toString)t=s.toString();else t=''}return t},getBookmark:function(simple){var inst=this.instance,rng=this.getRng(),doc=inst.getDoc(),b=inst.getBody();var trng,sx,sy,xx=-999999999,vp=inst.getViewPort();var sp,le,s,e,nl,i,si,ei,w;sx=vp.left;sy=vp.top;if(simple)return{rng:rng,scrollX:sx,scrollY:sy};if(tinyMCE.isRealIE){if(rng.item){e=rng.item(0);nl=b.getElementsByTagName(e.nodeName);for(i=0;i<nl.length;i++){if(e==nl[i]){sp=i;break}}return{tag:e.nodeName,index:sp,scrollX:sx,scrollY:sy}}else{trng=doc.body.createTextRange();trng.moveToElementText(inst.getBody());trng.collapse(true);bp=Math.abs(trng.move('character',xx));trng=rng.duplicate();trng.collapse(true);sp=Math.abs(trng.move('character',xx));trng=rng.duplicate();trng.collapse(false);le=Math.abs(trng.move('character',xx))-sp;return{start:sp-bp,length:le,scrollX:sx,scrollY:sy}}}else{s=this.getSel();e=this.getFocusElement();if(!s)return null;if(e&&e.nodeName=='IMG'){return{start:-1,end:-1,index:sp,scrollX:sx,scrollY:sy}}if(s.anchorNode==s.focusNode&&s.anchorOffset==s.focusOffset){e=this._getPosText(b,s.anchorNode,s.focusNode);if(!e)return{scrollX:sx,scrollY:sy};return{start:e.start+s.anchorOffset,end:e.end+s.focusOffset,scrollX:sx,scrollY:sy}}else{e=this._getPosText(b,rng.startContainer,rng.endContainer);if(!e)return{scrollX:sx,scrollY:sy};return{start:e.start+rng.startOffset,end:e.end+rng.endOffset,scrollX:sx,scrollY:sy}}}return null},moveToBookmark:function(bookmark){var inst=this.instance,rng,nl,i,ex,b=inst.getBody(),sd;var doc=inst.getDoc(),win=inst.getWin(),sel=this.getSel();if(!bookmark)return false;if(tinyMCE.isSafari&&bookmark.rng){sel.setBaseAndExtent(bookmark.rng.startContainer,bookmark.rng.startOffset,bookmark.rng.endContainer,bookmark.rng.endOffset);return true}if(tinyMCE.isRealIE){if(bookmark.rng){try{bookmark.rng.select()}catch(ex){}return true}win.focus();if(bookmark.tag){rng=b.createControlRange();nl=b.getElementsByTagName(bookmark.tag);if(nl.length>bookmark.index){try{rng.addElement(nl[bookmark.index])}catch(ex){}}}else{try{if(bookmark.start<0)return true;rng=inst.getSel().createRange();rng.moveToElementText(inst.getBody());rng.collapse(true);rng.moveStart('character',bookmark.start);rng.moveEnd('character',bookmark.length)}catch(ex){return true}}rng.select();win.scrollTo(bookmark.scrollX,bookmark.scrollY);return true}if(tinyMCE.isGecko||tinyMCE.isOpera){if(!sel)return false;if(bookmark.rng){sel.removeAllRanges();sel.addRange(bookmark.rng)}if(bookmark.start!=-1&&bookmark.end!=-1){try{sd=this._getTextPos(b,bookmark.start,bookmark.end);rng=doc.createRange();rng.setStart(sd.startNode,sd.startOffset);rng.setEnd(sd.endNode,sd.endOffset);sel.removeAllRanges();sel.addRange(rng);if(!tinyMCE.isOpera)win.focus()}catch(ex){}}win.scrollTo(bookmark.scrollX,bookmark.scrollY);return true}return false},_getPosText:function(r,sn,en){var w=document.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false),n,p=0,d={};while((n=w.nextNode())!=null){if(n==sn)d.start=p;if(n==en){d.end=p;return d}p+=n.nodeValue?n.nodeValue.length:0}return null},_getTextPos:function(r,sp,ep){var w=document.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false),n,p=0,d={};while((n=w.nextNode())!=null){p+=n.nodeValue?n.nodeValue.length:0;if(p>=sp&&!d.startNode){d.startNode=n;d.startOffset=sp-(p-n.nodeValue.length)}if(p>=ep){d.endNode=n;d.endOffset=ep-(p-n.nodeValue.length);return d}}return null},selectNode:function(node,collapse,select_text_node,to_start){var inst=this.instance,sel,rng,nodes;if(!node)return;if(typeof(collapse)=="undefined")collapse=true;if(typeof(select_text_node)=="undefined")select_text_node=false;if(typeof(to_start)=="undefined")to_start=true;if(inst.settings.auto_resize)inst.resizeToContent();if(tinyMCE.isRealIE){rng=inst.getDoc().body.createTextRange();try{rng.moveToElementText(node);if(collapse)rng.collapse(to_start);rng.select()}catch(e){}}else{sel=this.getSel();if(!sel)return;if(tinyMCE.isSafari){sel.setBaseAndExtent(node,0,node,node.innerText.length);if(collapse){if(to_start)sel.collapseToStart();else sel.collapseToEnd()}this.scrollToNode(node);return}rng=inst.getDoc().createRange();if(select_text_node){nodes=tinyMCE.getNodeTree(node,[],3);if(nodes.length>0)rng.selectNodeContents(nodes[0]);else rng.selectNodeContents(node)}else rng.selectNode(node);if(collapse){if(!to_start&&node.nodeType==3){rng.setStart(node,node.nodeValue.length);rng.setEnd(node,node.nodeValue.length)}else rng.collapse(to_start)}sel.removeAllRanges();sel.addRange(rng)}this.scrollToNode(node);tinyMCE.selectedElement=null;if(node.nodeType==1)tinyMCE.selectedElement=node},scrollToNode:function(node){var inst=this.instance,w=inst.getWin(),vp=inst.getViewPort(),pos=tinyMCE.getAbsPosition(node),cvp,p,cwin;if(pos.absLeft<vp.left||pos.absLeft>vp.left+vp.width||pos.absTop<vp.top||pos.absTop>vp.top+(vp.height-25))w.scrollTo(pos.absLeft,pos.absTop-vp.height+25);if(inst.settings.auto_resize){cwin=inst.getContainerWin();cvp=tinyMCE.getViewPort(cwin);p=this.getAbsPosition(node);if(p.absLeft<cvp.left||p.absLeft>cvp.left+cvp.width||p.absTop<cvp.top||p.absTop>cvp.top+cvp.height)cwin.scrollTo(p.absLeft,p.absTop-cvp.height+25)}},getAbsPosition:function(n){var pos=tinyMCE.getAbsPosition(n),ipos=tinyMCE.getAbsPosition(this.instance.iframeElement);return{absLeft:ipos.absLeft+pos.absLeft,absTop:ipos.absTop+pos.absTop}},getSel:function(){var inst=this.instance;if(tinyMCE.isRealIE)return inst.getDoc().selection;return inst.contentWindow.getSelection()},getRng:function(){var s=this.getSel();if(s==null)return null;if(tinyMCE.isRealIE)return s.createRange();if(tinyMCE.isSafari&&!s.getRangeAt)return''+window.getSelection();if(s.rangeCount>0)return s.getRangeAt(0);return null},isCollapsed:function(){var r=this.getRng();if(r.item)return false;return r.boundingWidth==0||this.getSel().isCollapsed},collapse:function(b){var r=this.getRng(),s=this.getSel();if(r.select){r.collapse(b);r.select()}else{if(b)s.collapseToStart();else s.collapseToEnd()}},getFocusElement:function(){var inst=this.instance,doc,rng,sel,elm;if(tinyMCE.isRealIE){doc=inst.getDoc();rng=doc.selection.createRange();elm=rng.item?rng.item(0):rng.parentElement()}else{if(!tinyMCE.isSafari&&inst.isHidden())return inst.getBody();sel=this.getSel();rng=this.getRng();if(!sel||!rng)return null;elm=rng.commonAncestorContainer;if(!rng.collapsed){if(rng.startContainer==rng.endContainer){if(rng.startOffset-rng.endOffset<2){if(rng.startContainer.hasChildNodes())elm=rng.startContainer.childNodes[rng.startOffset]}}}elm=tinyMCE.getParentElement(elm);}return elm}};function TinyMCE_UndoRedo(inst){this.instance=inst;this.undoLevels=[];this.undoIndex=0;this.typingUndoIndex=-1;this.undoRedo=true};TinyMCE_UndoRedo.prototype={add:function(l){var b,customUndoLevels,newHTML,inst=this.instance,i,ul,ur;if(l){this.undoLevels[this.undoLevels.length]=l;return true}if(this.typingUndoIndex!=-1){this.undoIndex=this.typingUndoIndex;if(tinyMCE.typingUndoIndex!=-1)tinyMCE.undoIndex=tinyMCE.typingUndoIndex}newHTML=tinyMCE.trim(inst.getBody().innerHTML);if(this.undoLevels[this.undoIndex]&&newHTML!=this.undoLevels[this.undoIndex].content){inst.isNotDirty=false;tinyMCE.dispatchCallback(inst,'onchange_callback','onChange',inst);customUndoLevels=tinyMCE.settings.custom_undo_redo_levels;if(customUndoLevels!=-1&&this.undoLevels.length>customUndoLevels){for(i=0;i<this.undoLevels.length-1;i++)this.undoLevels[i]=this.undoLevels[i+1];this.undoLevels.length--;this.undoIndex--;}b=inst.undoBookmark;if(!b)b=inst.selection.getBookmark();this.undoIndex++;this.undoLevels[this.undoIndex]={content:newHTML,bookmark:b};ul=tinyMCE.undoLevels;for(i=tinyMCE.undoIndex+1;i<ul.length;i++){ur=ul[i].undoRedo;if(ur.undoIndex==ur.undoLevels.length-1)ur.undoIndex--;ur.undoLevels.length--}tinyMCE.undoLevels[tinyMCE.undoIndex++]=inst;tinyMCE.undoLevels.length=tinyMCE.undoIndex;this.undoLevels.length=this.undoIndex+1;return true}return false},undo:function(){var inst=this.instance;if(this.undoIndex>0){this.undoIndex--;tinyMCE.setInnerHTML(inst.getBody(),this.undoLevels[this.undoIndex].content);inst.repaint();if(inst.settings.custom_undo_redo_restore_selection)inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark)}},redo:function(){var inst=this.instance;tinyMCE.execCommand("mceEndTyping");if(this.undoIndex<(this.undoLevels.length-1)){this.undoIndex++;tinyMCE.setInnerHTML(inst.getBody(),this.undoLevels[this.undoIndex].content);inst.repaint();if(inst.settings.custom_undo_redo_restore_selection)inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark)}tinyMCE.triggerNodeChange()}};var TinyMCE_ForceParagraphs={_insertPara:function(inst,e){var doc=inst.getDoc(),sel=inst.getSel(),body=inst.getBody(),win=inst.contentWindow,rng=sel.getRangeAt(0);var rootElm=doc.documentElement,blockName="P",startNode,endNode,startBlock,endBlock;var rngBefore,rngAfter,direct,startNode,startOffset,endNode,endOffset,b=tinyMCE.isOpera?inst.selection.getBookmark():null;var paraBefore,paraAfter,startChop,endChop,contents,i;function isEmpty(para){var nodes;function isEmptyHTML(html){return html.replace(new RegExp('[ \t\r\n]+','g'),'').toLowerCase()==''}if(para.getElementsByTagName("img").length>0)return false;if(para.getElementsByTagName("table").length>0)return false;if(para.getElementsByTagName("hr").length>0)return false;nodes=tinyMCE.getNodeTree(para,[],3);for(i=0;i<nodes.length;i++){if(!isEmptyHTML(nodes[i].nodeValue))return false}return true}rngBefore=doc.createRange();rngBefore.setStart(sel.anchorNode,sel.anchorOffset);rngBefore.collapse(true);rngAfter=doc.createRange();rngAfter.setStart(sel.focusNode,sel.focusOffset);rngAfter.collapse(true);direct=rngBefore.compareBoundaryPoints(rngBefore.START_TO_END,rngAfter)<0;startNode=direct?sel.anchorNode:sel.focusNode;startOffset=direct?sel.anchorOffset:sel.focusOffset;endNode=direct?sel.focusNode:sel.anchorNode;endOffset=direct?sel.focusOffset:sel.anchorOffset;startNode=startNode.nodeName=="HTML"?doc.body:startNode;startNode=startNode.nodeName=="BODY"?startNode.firstChild:startNode;endNode=endNode.nodeName=="BODY"?endNode.firstChild:endNode;startBlock=inst.getParentBlockElement(startNode);endBlock=inst.getParentBlockElement(endNode);if(startBlock&&(startBlock.nodeName=='CAPTION'||/absolute|relative|static/gi.test(startBlock.style.position)))startBlock=null;if(endBlock&&(endBlock.nodeName=='CAPTION'||/absolute|relative|static/gi.test(endBlock.style.position)))endBlock=null;if(startBlock!=null){blockName=startBlock.nodeName;if(/(TD|TABLE|TH|CAPTION)/.test(blockName)||(blockName=="DIV"&&/left|right/gi.test(startBlock.style.cssFloat)))blockName="P"}if(tinyMCE.getParentElement(startBlock,"OL,UL",null,body)!=null)return false;if((startBlock!=null&&startBlock.nodeName=="TABLE")||(endBlock!=null&&endBlock.nodeName=="TABLE"))startBlock=endBlock=null;paraBefore=(startBlock!=null&&startBlock.nodeName==blockName)?startBlock.cloneNode(false):doc.createElement(blockName);paraAfter=(endBlock!=null&&endBlock.nodeName==blockName)?endBlock.cloneNode(false):doc.createElement(blockName);if(/^(H[1-6])$/.test(blockName))paraAfter=doc.createElement("p");startChop=startNode;endChop=endNode;node=startChop;do{if(node==body||node.nodeType==9||tinyMCE.isBlockElement(node))break;startChop=node}while((node=node.previousSibling?node.previousSibling:node.parentNode));node=endChop;do{if(node==body||node.nodeType==9||tinyMCE.isBlockElement(node))break;endChop=node}while((node=node.nextSibling?node.nextSibling:node.parentNode));if(startChop.nodeName=="TD")startChop=startChop.firstChild;if(endChop.nodeName=="TD")endChop=endChop.lastChild;if(startBlock==null){rng.deleteContents();if(!tinyMCE.isSafari)sel.removeAllRanges();if(startChop!=rootElm&&endChop!=rootElm){rngBefore=rng.cloneRange();if(startChop==body)rngBefore.setStart(startChop,0);else rngBefore.setStartBefore(startChop);paraBefore.appendChild(rngBefore.cloneContents());if(endChop.parentNode.nodeName==blockName)endChop=endChop.parentNode;rng.setEndAfter(endChop);if(endChop.nodeName!="#text"&&endChop.nodeName!="BODY")rngBefore.setEndAfter(endChop);contents=rng.cloneContents();if(contents.firstChild&&(contents.firstChild.nodeName==blockName||contents.firstChild.nodeName=="BODY"))paraAfter.innerHTML=contents.firstChild.innerHTML;else paraAfter.appendChild(contents);if(isEmpty(paraBefore))paraBefore.innerHTML="&nbsp;";if(isEmpty(paraAfter))paraAfter.innerHTML="&nbsp;";rng.deleteContents();rngAfter.deleteContents();rngBefore.deleteContents();if(tinyMCE.isOpera){paraBefore.normalize();rngBefore.insertNode(paraBefore);paraAfter.normalize();rngBefore.insertNode(paraAfter)}else{paraAfter.normalize();rngBefore.insertNode(paraAfter);paraBefore.normalize();rngBefore.insertNode(paraBefore)}}else{body.innerHTML="<"+blockName+">&nbsp;</"+blockName+"><"+blockName+">&nbsp;</"+blockName+">";paraAfter=body.childNodes[1]}inst.selection.moveToBookmark(b);inst.selection.selectNode(paraAfter,true,true);return true}if(startChop.nodeName==blockName)rngBefore.setStart(startChop,0);else rngBefore.setStartBefore(startChop);rngBefore.setEnd(startNode,startOffset);paraBefore.appendChild(rngBefore.cloneContents());rngAfter.setEndAfter(endChop);rngAfter.setStart(endNode,endOffset);contents=rngAfter.cloneContents();if(contents.firstChild&&contents.firstChild.nodeName==blockName){paraAfter.innerHTML=contents.firstChild.innerHTML}else paraAfter.appendChild(contents);if(isEmpty(paraBefore))paraBefore.innerHTML="&nbsp;";if(isEmpty(paraAfter))paraAfter.innerHTML="&nbsp;";rng=doc.createRange();if(!startChop.previousSibling&&startChop.parentNode.nodeName.toUpperCase()==blockName){rng.setStartBefore(startChop.parentNode)}else{if(rngBefore.startContainer.nodeName.toUpperCase()==blockName&&rngBefore.startOffset==0)rng.setStartBefore(rngBefore.startContainer);else rng.setStart(rngBefore.startContainer,rngBefore.startOffset)}if(!endChop.nextSibling&&endChop.parentNode.nodeName.toUpperCase()==blockName)rng.setEndAfter(endChop.parentNode);else rng.setEnd(rngAfter.endContainer,rngAfter.endOffset);rng.deleteContents();if(tinyMCE.isOpera){rng.insertNode(paraBefore);rng.insertNode(paraAfter)}else{rng.insertNode(paraAfter);rng.insertNode(paraBefore)}paraAfter.normalize();paraBefore.normalize();inst.selection.moveToBookmark(b);inst.selection.selectNode(paraAfter,true,true);return true},_handleBackSpace:function(inst){var r=inst.getRng(),sn=r.startContainer,nv,s=false;if(sn&&sn.nextSibling&&sn.nextSibling.nodeName=="BR"&&sn.parentNode.nodeName!="BODY"){nv=sn.nodeValue;if(nv!=null&&r.startOffset==nv.length)sn.nextSibling.parentNode.removeChild(sn.nextSibling)}if(inst.settings.auto_resize)inst.resizeToContent();return s}};function TinyMCE_Layer(id,bm){this.id=id;this.blockerElement=null;this.events=false;this.element=null;this.blockMode=typeof(bm)!='undefined'?bm:true;this.doc=document};TinyMCE_Layer.prototype={moveRelativeTo:function(re,p){var rep=this.getAbsPosition(re),e=this.getElement(),x,y;var w=parseInt(re.offsetWidth),h=parseInt(re.offsetHeight);var ew=parseInt(e.offsetWidth),eh=parseInt(e.offsetHeight);switch(p){case"tl":x=rep.absLeft;y=rep.absTop;break;case"tr":x=rep.absLeft+w;y=rep.absTop;break;case"bl":x=rep.absLeft;y=rep.absTop+h;break;case"br":x=rep.absLeft+w;y=rep.absTop+h;break;case"cc":x=rep.absLeft+(w/ 2) - (ew /2);y=rep.absTop+(h/ 2) - (eh /2);break}this.moveTo(x,y)},moveBy:function(x,y){var e=this.getElement();this.moveTo(parseInt(e.style.left)+x,parseInt(e.style.top)+y)},moveTo:function(x,y){var e=this.getElement();e.style.left=x+"px";e.style.top=y+"px";this.updateBlocker()},resizeBy:function(w,h){var e=this.getElement();this.resizeTo(parseInt(e.style.width)+w,parseInt(e.style.height)+h)},resizeTo:function(w,h){var e=this.getElement();if(w!=null)e.style.width=w+"px";if(h!=null)e.style.height=h+"px";this.updateBlocker()},show:function(){var el=this.getElement();if(el){el.style.display='block';this.updateBlocker()}},hide:function(){var el=this.getElement();if(el){el.style.display='none';this.updateBlocker()}},isVisible:function(){return this.getElement().style.display=='block'},getElement:function(){if(!this.element)this.element=this.doc.getElementById(this.id);return this.element},setBlockMode:function(s){this.blockMode=s},updateBlocker:function(){var e,b,x,y,w,h;b=this.getBlocker();if(b){if(this.blockMode){e=this.getElement();x=this.parseInt(e.style.left);y=this.parseInt(e.style.top);w=this.parseInt(e.offsetWidth);h=this.parseInt(e.offsetHeight);b.style.left=x+'px';b.style.top=y+'px';b.style.width=w+'px';b.style.height=h+'px';b.style.display=e.style.display}else b.style.display='none'}},getBlocker:function(){var d,b;if(!this.blockerElement&&this.blockMode){d=this.doc;b=d.getElementById(this.id+"_blocker");if(!b){b=d.createElement("iframe");b.setAttribute('id',this.id+"_blocker");b.style.cssText='display: none; position: absolute; left: 0; top: 0';b.src='javascript:false;';b.frameBorder='0';b.scrolling='no';d.body.appendChild(b)}this.blockerElement=b}return this.blockerElement},getAbsPosition:function(n){var p={absLeft:0,absTop:0};while(n){p.absLeft+=n.offsetLeft;p.absTop+=n.offsetTop;n=n.offsetParent}return p},create:function(n,c,p,h){var d=this.doc,e=d.createElement(n);e.setAttribute('id',this.id);if(c)e.className=c;if(!p)p=d.body;if(h)e.innerHTML=h;p.appendChild(e);return this.element=e},exists:function(){return this.doc.getElementById(this.id)!=null},parseInt:function(s){if(s==null||s=='')return 0;return parseInt(s)},remove:function(){var e=this.getElement(),b=this.getBlocker();if(e)e.parentNode.removeChild(e);if(b)b.parentNode.removeChild(b)}};function TinyMCE_Menu(){var id;if(typeof(tinyMCE.menuCounter)=="undefined")tinyMCE.menuCounter=0;id="mc_menu_"+tinyMCE.menuCounter++;TinyMCE_Layer.call(this,id,true);this.id=id;this.items=[];this.needsUpdate=true};TinyMCE_Menu.prototype=tinyMCE.extend(TinyMCE_Layer.prototype,{init:function(s){var n;this.settings={separator_class:'mceMenuSeparator',title_class:'mceMenuTitle',disabled_class:'mceMenuDisabled',menu_class:'mceMenu',drop_menu:true};for(n in s)this.settings[n]=s[n];this.create('div',this.settings.menu_class)},clear:function(){this.items=[]},addTitle:function(t){this.add({type:'title',text:t})},addDisabled:function(t){this.add({type:'disabled',text:t})},addSeparator:function(){this.add({type:'separator'})},addItem:function(t,js){this.add({text:t,js:js})},add:function(mi){this.items[this.items.length]=mi;this.needsUpdate=true},update:function(){var e=this.getElement(),h='',i,t,m=this.items,s=this.settings;if(this.settings.drop_menu)h+='<span class="mceMenuLine"></span>';h+='<table border="0" cellpadding="0" cellspacing="0">';for(i=0;i<m.length;i++){t=tinyMCE.xmlEncode(m[i].text);c=m[i].class_name?' class="'+m[i].class_name+'"':'';switch(m[i].type){case'separator':h+='<tr class="'+s.separator_class+'"><td>';break;case'title':h+='<tr class="'+s.title_class+'"><td><span'+c+'>'+t+'</span>';break;case'disabled':h+='<tr class="'+s.disabled_class+'"><td><span'+c+'>'+t+'</span>';break;default:h+='<tr><td><a href="'+tinyMCE.xmlEncode(m[i].js)+'" onmousedown="'+tinyMCE.xmlEncode(m[i].js)+';return tinyMCE.cancelEvent(event);" onclick="return tinyMCE.cancelEvent(event);" onmouseup="return tinyMCE.cancelEvent(event);"><span'+c+'>'+t+'</span></a>'}h+='</td></tr>'}h+='</table>';e.innerHTML=h;this.needsUpdate=false;this.updateBlocker()},show:function(){var nl,i;if(tinyMCE.lastMenu==this)return;if(this.needsUpdate)this.update();if(tinyMCE.lastMenu&&tinyMCE.lastMenu!=this)tinyMCE.lastMenu.hide();TinyMCE_Layer.prototype.show.call(this);if(!tinyMCE.isOpera){}tinyMCE.lastMenu=this}});tinyMCE.add(TinyMCE_Engine,{debug:function(){var m="",a,i,l=tinyMCE.log.length;for(i=0,a=this.debug.arguments;i<a.length;i++){m+=a[i];if(i<a.length-1)m+=', '}if(l<1000)tinyMCE.log[l]="[debug] "+m}});
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
+var tinymce={majorVersion:"3",minorVersion:"2.4.1",releaseDate:"2009-05-25",_init:function(){var o=this,k=document,l=window,j=navigator,b=j.userAgent,h,a,g,f,e,m;o.isOpera=l.opera&&opera.buildNumber;o.isWebKit=/WebKit/.test(b);o.isIE=!o.isWebKit&&!o.isOpera&&(/MSIE/gi).test(b)&&(/Explorer/gi).test(j.appName);o.isIE6=o.isIE&&/MSIE [56]/.test(b);o.isGecko=!o.isWebKit&&/Gecko/.test(b);o.isMac=b.indexOf("Mac")!=-1;o.isAir=/adobeair/i.test(b);if(l.tinyMCEPreInit){o.suffix=tinyMCEPreInit.suffix;o.baseURL=tinyMCEPreInit.base;o.query=tinyMCEPreInit.query;return}o.suffix="";a=k.getElementsByTagName("base");for(h=0;h<a.length;h++){if(m=a[h].href){if(/^https?:\/\/[^\/]+$/.test(m)){m+="/"}f=m?m.match(/.*\//)[0]:""}}function c(d){if(d.src&&/tiny_mce(|_dev|_src|_gzip|_jquery|_prototype).js/.test(d.src)){if(/_(src|dev)\.js/g.test(d.src)){o.suffix="_src"}if((e=d.src.indexOf("?"))!=-1){o.query=d.src.substring(e+1)}o.baseURL=d.src.substring(0,d.src.lastIndexOf("/"));if(f&&o.baseURL.indexOf("://")==-1){o.baseURL=f+o.baseURL}return o.baseURL}return null}a=k.getElementsByTagName("script");for(h=0;h<a.length;h++){if(c(a[h])){return}}g=k.getElementsByTagName("head")[0];if(g){a=g.getElementsByTagName("script");for(h=0;h<a.length;h++){if(c(a[h])){return}}}return},is:function(b,a){var c=typeof(b);if(!a){return c!="undefined"}if(a=="array"&&(b.hasOwnProperty&&b instanceof Array)){return true}return c==a},each:function(d,a,c){var e,b;if(!d){return 0}c=c||d;if(typeof(d.length)!="undefined"){for(e=0,b=d.length;e<b;e++){if(a.call(c,d[e],e,d)===false){return 0}}}else{for(e in d){if(d.hasOwnProperty(e)){if(a.call(c,d[e],e,d)===false){return 0}}}}return 1},map:function(b,c){var d=[];tinymce.each(b,function(a){d.push(c(a))});return d},grep:function(b,c){var d=[];tinymce.each(b,function(a){if(!c||c(a)){d.push(a)}});return d},inArray:function(c,d){var e,b;if(c){for(e=0,b=c.length;e<b;e++){if(c[e]===d){return e}}}return -1},extend:function(f,d){var c,b=arguments;for(c=1;c<b.length;c++){d=b[c];tinymce.each(d,function(a,e){if(typeof(a)!=="undefined"){f[e]=a}})}return f},trim:function(a){return(a?""+a:"").replace(/^\s*|\s*$/g,"")},create:function(j,a){var i=this,b,e,f,g,d,h=0;j=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(j);f=j[3].match(/(^|\.)(\w+)$/i)[2];e=i.createNS(j[3].replace(/\.\w+$/,""));if(e[f]){return}if(j[2]=="static"){e[f]=a;if(this.onCreate){this.onCreate(j[2],j[3],e[f])}return}if(!a[f]){a[f]=function(){};h=1}e[f]=a[f];i.extend(e[f].prototype,a);if(j[5]){b=i.resolve(j[5]).prototype;g=j[5].match(/\.(\w+)$/i)[1];d=e[f];if(h){e[f]=function(){return b[g].apply(this,arguments)}}else{e[f]=function(){this.parent=b[g];return d.apply(this,arguments)}}e[f].prototype[f]=e[f];i.each(b,function(c,k){e[f].prototype[k]=b[k]});i.each(a,function(c,k){if(b[k]){e[f].prototype[k]=function(){this.parent=b[k];return c.apply(this,arguments)}}else{if(k!=f){e[f].prototype[k]=c}}})}i.each(a["static"],function(c,k){e[f][k]=c});if(this.onCreate){this.onCreate(j[2],j[3],e[f].prototype)}},walk:function(c,b,d,a){a=a||this;if(c){if(d){c=c[d]}tinymce.each(c,function(f,e){if(b.call(a,f,e,d)===false){return false}tinymce.walk(f,b,d,a)})}},createNS:function(d,c){var b,a;c=c||window;d=d.split(".");for(b=0;b<d.length;b++){a=d[b];if(!c[a]){c[a]={}}c=c[a]}return c},resolve:function(d,c){var b,a;c=c||window;d=d.split(".");for(b=0,a=d.length;b<a;b++){c=c[d[b]];if(!c){break}}return c},addUnload:function(e,d){var c=this,a=window;e={func:e,scope:d||this};if(!c.unloads){function b(){var f=c.unloads,h,i;if(f){for(i in f){h=f[i];if(h&&h.func){h.func.call(h.scope,1)}}if(a.detachEvent){a.detachEvent("onbeforeunload",g);a.detachEvent("onunload",b)}else{if(a.removeEventListener){a.removeEventListener("unload",b,false)}}c.unloads=h=f=a=b=0;if(window.CollectGarbage){window.CollectGarbage()}}}function g(){var h=document;if(h.readyState=="interactive"){function f(){h.detachEvent("onstop",f);if(b){b()}h=0}if(h){h.attachEvent("onstop",f)}window.setTimeout(function(){if(h){h.detachEvent("onstop",f)}},0)}}if(a.attachEvent){a.attachEvent("onunload",b);a.attachEvent("onbeforeunload",g)}else{if(a.addEventListener){a.addEventListener("unload",b,false)}}c.unloads=[e]}else{c.unloads.push(e)}return e},removeUnload:function(c){var a=this.unloads,b=null;tinymce.each(a,function(e,d){if(e&&e.func==c){a.splice(d,1);b=c;return false}});return b},explode:function(a,b){return a?tinymce.map(a.split(b||","),tinymce.trim):a},_addVer:function(b){var a;if(!this.query){return b}a=(b.indexOf("?")==-1?"?":"&")+this.query;if(b.indexOf("#")==-1){return b+a}return b.replace("#",a+"#")}};window.tinymce=tinymce;tinymce._init();tinymce.create("tinymce.util.Dispatcher",{scope:null,listeners:null,Dispatcher:function(a){this.scope=a||this;this.listeners=[]},add:function(a,b){this.listeners.push({cb:a,scope:b||this.scope});return a},addToTop:function(a,b){this.listeners.unshift({cb:a,scope:b||this.scope});return a},remove:function(a){var b=this.listeners,c=null;tinymce.each(b,function(e,d){if(a==e.cb){c=a;b.splice(d,1);return false}});return c},dispatch:function(){var f,d=arguments,e,b=this.listeners,g;for(e=0;e<b.length;e++){g=b[e];f=g.cb.apply(g.scope,d);if(f===false){break}}return f}});(function(){var a=tinymce.each;tinymce.create("tinymce.util.URI",{URI:function(e,g){var f=this,h,d,c;g=f.settings=g||{};if(/^(mailto|tel|news|javascript|about):/i.test(e)||/^\s*#/.test(e)){f.source=e;return}if(e.indexOf("/")===0&&e.indexOf("//")!==0){e=(g.base_uri?g.base_uri.protocol||"http":"http")+"://mce_host"+e}if(e.indexOf(":/")===-1&&e.indexOf("//")!==0){e=(g.base_uri.protocol||"http")+"://mce_host"+f.toAbsPath(g.base_uri.path,e)}e=e.replace(/@@/g,"(mce_at)");e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e);a(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(b,j){var k=e[j];if(k){k=k.replace(/\(mce_at\)/g,"@@")}f[b]=k});if(c=g.base_uri){if(!f.protocol){f.protocol=c.protocol}if(!f.userInfo){f.userInfo=c.userInfo}if(!f.port&&f.host=="mce_host"){f.port=c.port}if(!f.host||f.host=="mce_host"){f.host=c.host}f.source=""}},setPath:function(c){var b=this;c=/^(.*?)\/?(\w+)?$/.exec(c);b.path=c[0];b.directory=c[1];b.file=c[2];b.source="";b.getURI()},toRelative:function(b){var c=this,d;if(b==="./"){return b}b=new tinymce.util.URI(b,{base_uri:c});if((b.host!="mce_host"&&c.host!=b.host&&b.host)||c.port!=b.port||c.protocol!=b.protocol){return b.getURI()}d=c.toRelPath(c.path,b.path);if(b.query){d+="?"+b.query}if(b.anchor){d+="#"+b.anchor}return d},toAbsolute:function(b,c){var b=new tinymce.util.URI(b,{base_uri:this});return b.getURI(this.host==b.host?c:0)},toRelPath:function(g,h){var c,f=0,d="",e,b;g=g.substring(0,g.lastIndexOf("/"));g=g.split("/");c=h.split("/");if(g.length>=c.length){for(e=0,b=g.length;e<b;e++){if(e>=c.length||g[e]!=c[e]){f=e+1;break}}}if(g.length<c.length){for(e=0,b=c.length;e<b;e++){if(e>=g.length||g[e]!=c[e]){f=e+1;break}}}if(f==1){return h}for(e=0,b=g.length-(f-1);e<b;e++){d+="../"}for(e=f-1,b=c.length;e<b;e++){if(e!=f-1){d+="/"+c[e]}else{d+=c[e]}}return d},toAbsPath:function(e,f){var c,b=0,g=[],d;d=/\/$/.test(f)?"/":"";e=e.split("/");f=f.split("/");a(e,function(h){if(h){g.push(h)}});e=g;for(c=f.length-1,g=[];c>=0;c--){if(f[c].length==0||f[c]=="."){continue}if(f[c]==".."){b++;continue}if(b>0){b--;continue}g.push(f[c])}c=e.length-b;if(c<=0){return"/"+g.reverse().join("/")+d}return"/"+e.slice(0,c).join("/")+"/"+g.reverse().join("/")+d},getURI:function(d){var c,b=this;if(!b.source||d){c="";if(!d){if(b.protocol){c+=b.protocol+"://"}if(b.userInfo){c+=b.userInfo+"@"}if(b.host){c+=b.host}if(b.port){c+=":"+b.port}}if(b.path){c+=b.path}if(b.query){c+="?"+b.query}if(b.anchor){c+="#"+b.anchor}b.source=c}return b.source}})})();(function(){var a=tinymce.each;tinymce.create("static tinymce.util.Cookie",{getHash:function(d){var b=this.get(d),c;if(b){a(b.split("&"),function(e){e=e.split("=");c=c||{};c[unescape(e[0])]=unescape(e[1])})}return c},setHash:function(j,b,g,f,i,c){var h="";a(b,function(e,d){h+=(!h?"":"&")+escape(d)+"="+escape(e)});this.set(j,h,g,f,i,c)},get:function(i){var h=document.cookie,g,f=i+"=",d;if(!h){return}d=h.indexOf("; "+f);if(d==-1){d=h.indexOf(f);if(d!=0){return null}}else{d+=2}g=h.indexOf(";",d);if(g==-1){g=h.length}return unescape(h.substring(d+f.length,g))},set:function(i,b,g,f,h,c){document.cookie=i+"="+escape(b)+((g)?"; expires="+g.toGMTString():"")+((f)?"; path="+escape(f):"")+((h)?"; domain="+h:"")+((c)?"; secure":"")},remove:function(e,b){var c=new Date();c.setTime(c.getTime()-1000);this.set(e,"",c,b,c)}})})();tinymce.create("static tinymce.util.JSON",{serialize:function(e){var c,a,d=tinymce.util.JSON.serialize,b;if(e==null){return"null"}b=typeof e;if(b=="string"){a="\bb\tt\nn\ff\rr\"\"''\\\\";return'"'+e.replace(/([\u0080-\uFFFF\x00-\x1f\"])/g,function(g,f){c=a.indexOf(f);if(c+1){return"\\"+a.charAt(c+1)}g=f.charCodeAt().toString(16);return"\\u"+"0000".substring(g.length)+g})+'"'}if(b=="object"){if(e.hasOwnProperty&&e instanceof Array){for(c=0,a="[";c<e.length;c++){a+=(c>0?",":"")+d(e[c])}return a+"]"}a="{";for(c in e){a+=typeof e[c]!="function"?(a.length>1?',"':'"')+c+'":'+d(e[c]):""}return a+"}"}return""+e},parse:function(s){try{return eval("("+s+")")}catch(ex){}}});tinymce.create("static tinymce.util.XHR",{send:function(g){var a,e,b=window,h=0;g.scope=g.scope||this;g.success_scope=g.success_scope||g.scope;g.error_scope=g.error_scope||g.scope;g.async=g.async===false?false:true;g.data=g.data||"";function d(i){a=0;try{a=new ActiveXObject(i)}catch(c){}return a}a=b.XMLHttpRequest?new XMLHttpRequest():d("Microsoft.XMLHTTP")||d("Msxml2.XMLHTTP");if(a){if(a.overrideMimeType){a.overrideMimeType(g.content_type)}a.open(g.type||(g.data?"POST":"GET"),g.url,g.async);if(g.content_type){a.setRequestHeader("Content-Type",g.content_type)}a.send(g.data);function f(){if(!g.async||a.readyState==4||h++>10000){if(g.success&&h<10000&&a.status==200){g.success.call(g.success_scope,""+a.responseText,a,g)}else{if(g.error){g.error.call(g.error_scope,h>10000?"TIMED_OUT":"GENERAL",a,g)}}a=null}else{b.setTimeout(f,10)}}if(!g.async){return f()}e=b.setTimeout(f,10)}}});(function(){var c=tinymce.extend,b=tinymce.util.JSON,a=tinymce.util.XHR;tinymce.create("tinymce.util.JSONRequest",{JSONRequest:function(d){this.settings=c({},d);this.count=0},send:function(f){var e=f.error,d=f.success;f=c(this.settings,f);f.success=function(h,g){h=b.parse(h);if(typeof(h)=="undefined"){h={error:"JSON Parse error."}}if(h.error){e.call(f.error_scope||f.scope,h.error,g)}else{d.call(f.success_scope||f.scope,h.result)}};f.error=function(h,g){e.call(f.error_scope||f.scope,h,g)};f.data=b.serialize({id:f.id||"c"+(this.count++),method:f.method,params:f.params});f.content_type="application/json";a.send(f)},"static":{sendRPC:function(d){return new tinymce.util.JSONRequest().send(d)}}})}());(function(c){var e=c.each,b=c.is;var d=c.isWebKit,a=c.isIE;c.create("tinymce.dom.DOMUtils",{doc:null,root:null,files:null,pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},DOMUtils:function(i,g){var f=this;f.doc=i;f.win=window;f.files={};f.cssFlicker=false;f.counter=0;f.boxModel=!c.isIE||i.compatMode=="CSS1Compat";f.stdMode=i.documentMode===8;f.settings=g=c.extend({keep_values:false,hex_colors:1,process_html:1},g);if(c.isIE6){try{i.execCommand("BackgroundImageCache",false,true)}catch(h){f.cssFlicker=true}}c.addUnload(f.destroy,f)},getRoot:function(){var f=this,g=f.settings;return(g&&f.get(g.root_element))||f.doc.body},getViewPort:function(g){var h,f;g=!g?this.win:g;h=g.document;f=this.boxModel?h.documentElement:h.body;return{x:g.pageXOffset||f.scrollLeft,y:g.pageYOffset||f.scrollTop,w:g.innerWidth||f.clientWidth,h:g.innerHeight||f.clientHeight}},getRect:function(i){var h,f=this,g;i=f.get(i);h=f.getPos(i);g=f.getSize(i);return{x:h.x,y:h.y,w:g.w,h:g.h}},getSize:function(j){var g=this,f,i;j=g.get(j);f=g.getStyle(j,"width");i=g.getStyle(j,"height");if(f.indexOf("px")===-1){f=0}if(i.indexOf("px")===-1){i=0}return{w:parseInt(f)||j.offsetWidth||j.clientWidth,h:parseInt(i)||j.offsetHeight||j.clientHeight}},is:function(g,f){return c.dom.Sizzle.matches(f,g.nodeType?[g]:g).length>0},getParent:function(i,h,g){return this.getParents(i,h,g,false)},getParents:function(p,k,i,m){var h=this,g,j=h.settings,l=[];p=h.get(p);m=m===undefined;if(j.strict_root){i=i||h.getRoot()}if(b(k,"string")){g=k;if(k==="*"){k=function(f){return f.nodeType==1}}else{k=function(f){return h.is(f,g)}}}while(p){if(p==i||!p.nodeType||p.nodeType===9){break}if(!k||k(p)){if(m){l.push(p)}else{return p}}p=p.parentNode}return m?l:null},get:function(f){var g;if(f&&this.doc&&typeof(f)=="string"){g=f;f=this.doc.getElementById(f);if(f&&f.id!==g){return this.doc.getElementsByName(g)[1]}}return f},select:function(h,g){var f=this;return c.dom.Sizzle(h,f.get(g)||f.get(f.settings.root_element)||f.doc,[])},add:function(j,l,f,i,k){var g=this;return this.run(j,function(n){var m,h;m=b(l,"string")?g.doc.createElement(l):l;g.setAttribs(m,f);if(i){if(i.nodeType){m.appendChild(i)}else{g.setHTML(m,i)}}return !k?n.appendChild(m):m})},create:function(i,f,g){return this.add(this.doc.createElement(i),i,f,g,1)},createHTML:function(m,f,j){var l="",i=this,g;l+="<"+m;for(g in f){if(f.hasOwnProperty(g)){l+=" "+g+'="'+i.encode(f[g])+'"'}}if(c.is(j)){return l+">"+j+"</"+m+">"}return l+" />"},remove:function(h,f){var g=this;return this.run(h,function(m){var l,k,j;l=m.parentNode;if(!l){return null}if(f){for(j=m.childNodes.length-1;j>=0;j--){g.insertAfter(m.childNodes[j],m)}}if(g.fixPsuedoLeaks){l=m.cloneNode(true);f="IELeakGarbageBin";k=g.get(f)||g.add(g.doc.body,"div",{id:f,style:"display:none"});k.appendChild(m);k.innerHTML="";return l}return l.removeChild(m)})},setStyle:function(i,f,g){var h=this;return h.run(i,function(l){var k,j;k=l.style;f=f.replace(/-(\D)/g,function(n,m){return m.toUpperCase()});if(h.pixelStyles.test(f)&&(c.is(g,"number")||/^[\-0-9\.]+$/.test(g))){g+="px"}switch(f){case"opacity":if(a){k.filter=g===""?"":"alpha(opacity="+(g*100)+")";if(!i.currentStyle||!i.currentStyle.hasLayout){k.display="inline-block"}}k[f]=k["-moz-opacity"]=k["-khtml-opacity"]=g||"";break;case"float":a?k.styleFloat=g:k.cssFloat=g;break;default:k[f]=g||""}if(h.settings.update_styles){h.setAttrib(l,"mce_style")}})},getStyle:function(i,f,h){i=this.get(i);if(!i){return false}if(this.doc.defaultView&&h){f=f.replace(/[A-Z]/g,function(j){return"-"+j});try{return this.doc.defaultView.getComputedStyle(i,null).getPropertyValue(f)}catch(g){return null}}f=f.replace(/-(\D)/g,function(k,j){return j.toUpperCase()});if(f=="float"){f=a?"styleFloat":"cssFloat"}if(i.currentStyle&&h){return i.currentStyle[f]}return i.style[f]},setStyles:function(i,j){var g=this,h=g.settings,f;f=h.update_styles;h.update_styles=0;e(j,function(k,l){g.setStyle(i,l,k)});h.update_styles=f;if(h.update_styles){g.setAttrib(i,h.cssText)}},setAttrib:function(h,i,f){var g=this;if(!h||!i){return}if(g.settings.strict){i=i.toLowerCase()}return this.run(h,function(k){var j=g.settings;switch(i){case"style":if(!b(f,"string")){e(f,function(l,m){g.setStyle(k,m,l)});return}if(j.keep_values){if(f&&!g._isRes(f)){k.setAttribute("mce_style",f,2)}else{k.removeAttribute("mce_style",2)}}k.style.cssText=f;break;case"class":k.className=f||"";break;case"src":case"href":if(j.keep_values){if(j.url_converter){f=j.url_converter.call(j.url_converter_scope||g,f,i,k)}g.setAttrib(k,"mce_"+i,f,2)}break;case"shape":k.setAttribute("mce_style",f);break}if(b(f)&&f!==null&&f.length!==0){k.setAttribute(i,""+f,2)}else{k.removeAttribute(i,2)}})},setAttribs:function(g,h){var f=this;return this.run(g,function(i){e(h,function(j,k){f.setAttrib(i,k,j)})})},getAttrib:function(i,j,h){var f,g=this;i=g.get(i);if(!i||i.nodeType!==1){return false}if(!b(h)){h=""}if(/^(src|href|style|coords|shape)$/.test(j)){f=i.getAttribute("mce_"+j);if(f){return f}}if(a&&g.props[j]){f=i[g.props[j]];f=f&&f.nodeValue?f.nodeValue:f}if(!f){f=i.getAttribute(j,2)}if(j==="style"){f=f||i.style.cssText;if(f){f=g.serializeStyle(g.parseStyle(f));if(g.settings.keep_values&&!g._isRes(f)){i.setAttribute("mce_style",f)}}}if(d&&j==="class"&&f){f=f.replace(/(apple|webkit)\-[a-z\-]+/gi,"")}if(a){switch(j){case"rowspan":case"colspan":if(f===1){f=""}break;case"size":if(f==="+0"||f===20||f===0){f=""}break;case"width":case"height":case"vspace":case"checked":case"disabled":case"readonly":if(f===0){f=""}break;case"hspace":if(f===-1){f=""}break;case"maxlength":case"tabindex":if(f===32768||f===2147483647||f==="32768"){f=""}break;case"multiple":case"compact":case"noshade":case"nowrap":if(f===65535){return j}return h;case"shape":f=f.toLowerCase();break;default:if(j.indexOf("on")===0&&f){f=(""+f).replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1")}}}return(f!==undefined&&f!==null&&f!=="")?""+f:h},getPos:function(m,i){var g=this,f=0,l=0,j,k=g.doc,h;m=g.get(m);i=i||k.body;if(m){if(a&&!g.stdMode){m=m.getBoundingClientRect();j=g.boxModel?k.documentElement:k.body;f=g.getStyle(g.select("html")[0],"borderWidth");f=(f=="medium"||g.boxModel&&!g.isIE6)&&2||f;m.top+=g.win.self!=g.win.top?2:0;return{x:m.left+j.scrollLeft-f,y:m.top+j.scrollTop-f}}h=m;while(h&&h!=i&&h.nodeType){f+=h.offsetLeft||0;l+=h.offsetTop||0;h=h.offsetParent}h=m.parentNode;while(h&&h!=i&&h.nodeType){f-=h.scrollLeft||0;l-=h.scrollTop||0;h=h.parentNode}}return{x:f,y:l}},parseStyle:function(h){var i=this,j=i.settings,k={};if(!h){return k}function f(w,q,v){var o,u,m,n;o=k[w+"-top"+q];if(!o){return}u=k[w+"-right"+q];if(o!=u){return}m=k[w+"-bottom"+q];if(u!=m){return}n=k[w+"-left"+q];if(m!=n){return}k[v]=n;delete k[w+"-top"+q];delete k[w+"-right"+q];delete k[w+"-bottom"+q];delete k[w+"-left"+q]}function g(n,m,l,p){var o;o=k[m];if(!o){return}o=k[l];if(!o){return}o=k[p];if(!o){return}k[n]=k[m]+" "+k[l]+" "+k[p];delete k[m];delete k[l];delete k[p]}h=h.replace(/&(#?[a-z0-9]+);/g,"&$1_MCE_SEMI_");e(h.split(";"),function(m){var l,n=[];if(m){m=m.replace(/_MCE_SEMI_/g,";");m=m.replace(/url\([^\)]+\)/g,function(o){n.push(o);return"url("+n.length+")"});m=m.split(":");l=c.trim(m[1]);l=l.replace(/url\(([^\)]+)\)/g,function(p,o){return n[parseInt(o)-1]});l=l.replace(/rgb\([^\)]+\)/g,function(o){return i.toHex(o)});if(j.url_converter){l=l.replace(/url\([\'\"]?([^\)\'\"]+)[\'\"]?\)/g,function(o,p){return"url("+j.url_converter.call(j.url_converter_scope||i,i.decode(p),"style",null)+")"})}k[c.trim(m[0]).toLowerCase()]=l}});f("border","","border");f("border","-width","border-width");f("border","-color","border-color");f("border","-style","border-style");f("padding","","padding");f("margin","","margin");g("border","border-width","border-style","border-color");if(a){if(k.border=="medium none"){k.border=""}}return k},serializeStyle:function(g){var f="";e(g,function(i,h){if(h&&i){if(c.isGecko&&h.indexOf("-moz-")===0){return}switch(h){case"color":case"background-color":i=i.toLowerCase();break}f+=(f?" ":"")+h+": "+i+";"}});return f},loadCSS:function(f){var h=this,i=h.doc,g;if(!f){f=""}g=h.select("head")[0];e(f.split(","),function(j){var k;if(h.files[j]){return}h.files[j]=true;k=h.create("link",{rel:"stylesheet",href:c._addVer(j)});if(a&&i.documentMode){k.onload=function(){i.recalc();k.onload=null}}g.appendChild(k)})},addClass:function(f,g){return this.run(f,function(h){var i;if(!g){return 0}if(this.hasClass(h,g)){return h.className}i=this.removeClass(h,g);return h.className=(i!=""?(i+" "):"")+g})},removeClass:function(h,i){var f=this,g;return f.run(h,function(k){var j;if(f.hasClass(k,i)){if(!g){g=new RegExp("(^|\\s+)"+i+"(\\s+|$)","g")}j=k.className.replace(g," ");return k.className=c.trim(j!=" "?j:"")}return k.className})},hasClass:function(g,f){g=this.get(g);if(!g||!f){return false}return(" "+g.className+" ").indexOf(" "+f+" ")!==-1},show:function(f){return this.setStyle(f,"display","block")},hide:function(f){return this.setStyle(f,"display","none")},isHidden:function(f){f=this.get(f);return !f||f.style.display=="none"||this.getStyle(f,"display")=="none"},uniqueId:function(f){return(!f?"mce_":f)+(this.counter++)},setHTML:function(i,g){var f=this;return this.run(i,function(m){var h,k,j,q,l,h;g=f.processHTML(g);if(a){function o(){try{m.innerHTML="<br />"+g;m.removeChild(m.firstChild)}catch(n){while(m.firstChild){m.firstChild.removeNode()}h=f.create("div");h.innerHTML="<br />"+g;e(h.childNodes,function(r,p){if(p){m.appendChild(r)}})}}if(f.settings.fix_ie_paragraphs){g=g.replace(/<p><\/p>|<p([^>]+)><\/p>|<p[^\/+]\/>/gi,'<p$1 mce_keep="true">&nbsp;</p>')}o();if(f.settings.fix_ie_paragraphs){j=m.getElementsByTagName("p");for(k=j.length-1,h=0;k>=0;k--){q=j[k];if(!q.hasChildNodes()){if(!q.mce_keep){h=1;break}q.removeAttribute("mce_keep")}}}if(h){g=g.replace(/<p ([^>]+)>|<p>/g,'<div $1 mce_tmp="1">');g=g.replace(/<\/p>/g,"</div>");o();if(f.settings.fix_ie_paragraphs){j=m.getElementsByTagName("DIV");for(k=j.length-1;k>=0;k--){q=j[k];if(q.mce_tmp){l=f.doc.createElement("p");q.cloneNode(false).outerHTML.replace(/([a-z0-9\-_]+)=/gi,function(p,n){var r;if(n!=="mce_tmp"){r=q.getAttribute(n);if(!r&&n==="class"){r=q.className}l.setAttribute(n,r)}});for(h=0;h<q.childNodes.length;h++){l.appendChild(q.childNodes[h].cloneNode(true))}q.swapNode(l)}}}}}else{m.innerHTML=g}return g})},processHTML:function(j){var g=this,i=g.settings;if(!i.process_html){return j}if(c.isGecko){j=j.replace(/<(\/?)strong>|<strong( [^>]+)>/gi,"<$1b$2>");j=j.replace(/<(\/?)em>|<em( [^>]+)>/gi,"<$1i$2>")}else{if(a){j=j.replace(/&apos;/g,"&#39;");j=j.replace(/\s+(disabled|checked|readonly|selected)\s*=\s*[\"\']?(false|0)[\"\']?/gi,"")}}j=j.replace(/<a( )([^>]+)\/>|<a\/>/gi,"<a$1$2></a>");if(i.keep_values){if(/<script|style/.test(j)){function f(h){h=h.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n");h=h.replace(/^[\r\n]*|[\r\n]*$/g,"");h=h.replace(/^\s*(\/\/\s*<!--|\/\/\s*<!\[CDATA\[|<!--|<!\[CDATA\[)[\r\n]*/g,"");h=h.replace(/\s*(\/\/\s*\]\]>|\/\/\s*-->|\]\]>|-->|\]\]-->)\s*$/g,"");return h}j=j.replace(/<script([^>]+|)>([\s\S]*?)<\/script>/g,function(h,l,k){if(!l){l=' type="text/javascript"'}l=l.replace(/(type|language)=\"?/,"$&mce-");l=l.replace(/src=\"([^\"]+)\"?/,function(m,n){if(i.url_converter){n=g.encode(i.url_converter.call(i.url_converter_scope||g,g.decode(n),"src","script"))}return'mce_src="'+n+'"'});if(c.trim(k)){k="<!--\n"+f(k)+"\n// -->"}return"<mce:script"+l+">"+k+"</mce:script>"});j=j.replace(/<style([^>]+|)>([\s\S]*?)<\/style>/g,function(h,l,k){if(k){k="<!--\n"+f(k)+"\n-->"}return"<mce:style"+l+">"+k+"</mce:style><style "+l+' mce_bogus="1">'+k+"</style>"})}j=j.replace(/<!\[CDATA\[([\s\S]+)\]\]>/g,"<!--[CDATA[$1]]-->");j=j.replace(/<([\w:]+) [^>]*(src|href|style|shape|coords)[^>]*>/gi,function(h,l){function k(o,n,q){var p=q;if(h.indexOf("mce_"+n)!=-1){return o}if(n=="style"){if(g._isRes(q)){return o}if(i.hex_colors){p=p.replace(/rgb\([^\)]+\)/g,function(m){return g.toHex(m)})}if(i.url_converter){p=p.replace(/url\([\'\"]?([^\)\'\"]+)\)/g,function(m,r){return"url("+g.encode(i.url_converter.call(i.url_converter_scope||g,g.decode(r),n,l))+")"})}}else{if(n!="coords"&&n!="shape"){if(i.url_converter){p=g.encode(i.url_converter.call(i.url_converter_scope||g,g.decode(q),n,l))}}}return" "+n+'="'+q+'" mce_'+n+'="'+p+'"'}h=h.replace(/ (src|href|style|coords|shape)=[\"]([^\"]+)[\"]/gi,k);h=h.replace(/ (src|href|style|coords|shape)=[\']([^\']+)[\']/gi,k);return h.replace(/ (src|href|style|coords|shape)=([^\s\"\'>]+)/gi,k)})}return j},getOuterHTML:function(f){var g;f=this.get(f);if(!f){return null}if(f.outerHTML!==undefined){return f.outerHTML}g=(f.ownerDocument||this.doc).createElement("body");g.appendChild(f.cloneNode(true));return g.innerHTML},setOuterHTML:function(i,g,j){var f=this;return this.run(i,function(h){var l,k;h=f.get(h);j=j||h.ownerDocument||f.doc;if(a&&h.nodeType==1){h.outerHTML=g}else{k=j.createElement("body");k.innerHTML=g;l=k.lastChild;while(l){f.insertAfter(l.cloneNode(true),h);l=l.previousSibling}f.remove(h)}})},decode:function(g){var h,i,f;if(/&[^;]+;/.test(g)){h=this.doc.createElement("div");h.innerHTML=g;i=h.firstChild;f="";if(i){do{f+=i.nodeValue}while(i.nextSibling)}return f||g}return g},encode:function(f){return f?(""+f).replace(/[<>&\"]/g,function(h,g){switch(h){case"&":return"&amp;";case'"':return"&quot;";case"<":return"&lt;";case">":return"&gt;"}return h}):f},insertAfter:function(h,g){var f=this;g=f.get(g);return this.run(h,function(k){var j,i;j=g.parentNode;i=g.nextSibling;if(i){j.insertBefore(k,i)}else{j.appendChild(k)}return k})},isBlock:function(f){if(f.nodeType&&f.nodeType!==1){return false}f=f.nodeName||f;return/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TR|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(f)},replace:function(i,h,f){var g=this;if(b(h,"array")){i=i.cloneNode(true)}return g.run(h,function(j){if(f){e(j.childNodes,function(k){i.appendChild(k.cloneNode(true))})}if(g.fixPsuedoLeaks&&j.nodeType===1){j.parentNode.insertBefore(i,j);g.remove(j);return i}return j.parentNode.replaceChild(i,j)})},findCommonAncestor:function(h,f){var i=h,g;while(i){g=f;while(g&&i!=g){g=g.parentNode}if(i==g){break}i=i.parentNode}if(!i&&h.ownerDocument){return h.ownerDocument.documentElement}return i},toHex:function(f){var h=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(f);function g(i){i=parseInt(i).toString(16);return i.length>1?i:"0"+i}if(h){f="#"+g(h[1])+g(h[2])+g(h[3]);return f}return f},getClasses:function(){var l=this,g=[],k,m={},n=l.settings.class_filter,j;if(l.classes){return l.classes}function o(f){e(f.imports,function(i){o(i)});e(f.cssRules||f.rules,function(i){switch(i.type||1){case 1:if(i.selectorText){e(i.selectorText.split(","),function(p){p=p.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(p)||!/\.[\w\-]+$/.test(p)){return}j=p;p=p.replace(/.*\.([a-z0-9_\-]+).*/i,"$1");if(n&&!(p=n(p,j))){return}if(!m[p]){g.push({"class":p});m[p]=1}})}break;case 3:o(i.styleSheet);break}})}try{e(l.doc.styleSheets,o)}catch(h){}if(g.length>0){l.classes=g}return g},run:function(j,i,h){var g=this,k;if(g.doc&&typeof(j)==="string"){j=g.get(j)}if(!j){return false}h=h||this;if(!j.nodeType&&(j.length||j.length===0)){k=[];e(j,function(l,f){if(l){if(typeof(l)=="string"){l=g.doc.getElementById(l)}k.push(i.call(h,l,f))}});return k}return i.call(h,j)},getAttribs:function(g){var f;g=this.get(g);if(!g){return[]}if(a){f=[];if(g.nodeName=="OBJECT"){return g.attributes}g.cloneNode(false).outerHTML.replace(/([a-z0-9\:\-_]+)=/gi,function(i,h){f.push({specified:1,nodeName:h})});return f}return g.attributes},destroy:function(g){var f=this;if(f.events){f.events.destroy()}f.win=f.doc=f.root=f.events=null;if(!g){c.removeUnload(f.destroy)}},createRng:function(){var f=this.doc;return f.createRange?f.createRange():new c.dom.Range(this)},split:function(l,k,o){var p=this,f=p.createRng(),m,j,n;function g(r,q){r=r[q];if(r&&r[q]&&r[q].nodeType==1&&i(r[q])){p.remove(r[q])}}function i(q){q=p.getOuterHTML(q);q=q.replace(/<(img|hr|table)/gi,"-");q=q.replace(/<[^>]+>/g,"");return q.replace(/[ \t\r\n]+|&nbsp;|&#160;/g,"")==""}function h(r){var q=0;while(r.previousSibling){q++;r=r.previousSibling}return q}if(l&&k){f.setStart(l.parentNode,h(l));f.setEnd(k.parentNode,h(k));m=f.extractContents();f=p.createRng();f.setStart(k.parentNode,h(k)+1);f.setEnd(l.parentNode,h(l)+1);j=f.extractContents();n=l.parentNode;g(m,"lastChild");if(!i(m)){n.insertBefore(m,l)}if(o){n.replaceChild(o,k)}else{n.insertBefore(k,l)}g(j,"firstChild");if(!i(j)){n.insertBefore(j,l)}p.remove(l);return o||k}},bind:function(j,f,i,h){var g=this;if(!g.events){g.events=new c.dom.EventUtils()}return g.events.add(j,f,i,h||this)},unbind:function(i,f,h){var g=this;if(!g.events){g.events=new c.dom.EventUtils()}return g.events.remove(i,f,h)},_isRes:function(f){return/^(top|left|bottom|right|width|height)/i.test(f)||/;\s*(top|left|bottom|right|width|height)/i.test(f)}});c.DOM=new c.dom.DOMUtils(document,{process_html:0})})(tinymce);(function(f){var h=0,c=1,e=2,d=tinymce.extend;function g(m,k){var j,l;if(m.parentNode!=k){return -1}for(l=k.firstChild,j=0;l!=m;l=l.nextSibling){j++}return j}function b(k){var j=0;while(k.previousSibling){j++;k=k.previousSibling}return j}function i(j,k){var l;if(j.nodeType==3){return j}if(k<0){return j}l=j.firstChild;while(l!=null&&k>0){--k;l=l.nextSibling}if(l!=null){return l}return j}function a(k){var j=k.doc;d(this,{dom:k,startContainer:j,startOffset:0,endContainer:j,endOffset:0,collapsed:true,commonAncestorContainer:j,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3})}d(a.prototype,{setStart:function(k,j){this._setEndPoint(true,k,j)},setEnd:function(k,j){this._setEndPoint(false,k,j)},setStartBefore:function(j){this.setStart(j.parentNode,b(j))},setStartAfter:function(j){this.setStart(j.parentNode,b(j)+1)},setEndBefore:function(j){this.setEnd(j.parentNode,b(j))},setEndAfter:function(j){this.setEnd(j.parentNode,b(j)+1)},collapse:function(k){var j=this;if(k){j.endContainer=j.startContainer;j.endOffset=j.startOffset}else{j.startContainer=j.endContainer;j.startOffset=j.endOffset}j.collapsed=true},selectNode:function(j){this.setStartBefore(j);this.setEndAfter(j)},selectNodeContents:function(j){this.setStart(j,0);this.setEnd(j,j.nodeType===1?j.childNodes.length:j.nodeValue.length)},compareBoundaryPoints:function(m,n){var l=this,p=l.startContainer,o=l.startOffset,k=l.endContainer,j=l.endOffset;if(m===0){return l._compareBoundaryPoints(p,o,p,o)}if(m===1){return l._compareBoundaryPoints(p,o,k,j)}if(m===2){return l._compareBoundaryPoints(k,j,k,j)}if(m===3){return l._compareBoundaryPoints(k,j,p,o)}},deleteContents:function(){this._traverse(e)},extractContents:function(){return this._traverse(h)},cloneContents:function(){return this._traverse(c)},insertNode:function(m){var j=this,l,k;if(m.nodeType===3||m.nodeType===4){l=j.startContainer.splitText(j.startOffset);j.startContainer.parentNode.insertBefore(m,l)}else{if(j.startContainer.childNodes.length>0){k=j.startContainer.childNodes[j.startOffset]}j.startContainer.insertBefore(m,k)}},surroundContents:function(l){var j=this,k=j.extractContents();j.insertNode(l);l.appendChild(k);j.selectNode(l)},cloneRange:function(){var j=this;return d(new a(j.dom),{startContainer:j.startContainer,startOffset:j.startOffset,endContainer:j.endContainer,endOffset:j.endOffset,collapsed:j.collapsed,commonAncestorContainer:j.commonAncestorContainer})},_isCollapsed:function(){return(this.startContainer==this.endContainer&&this.startOffset==this.endOffset)},_compareBoundaryPoints:function(m,p,k,o){var q,l,j,r,t,s;if(m==k){if(p==o){return 0}else{if(p<o){return -1}else{return 1}}}q=k;while(q&&q.parentNode!=m){q=q.parentNode}if(q){l=0;j=m.firstChild;while(j!=q&&l<p){l++;j=j.nextSibling}if(p<=l){return -1}else{return 1}}q=m;while(q&&q.parentNode!=k){q=q.parentNode}if(q){l=0;j=k.firstChild;while(j!=q&&l<o){l++;j=j.nextSibling}if(l<o){return -1}else{return 1}}r=this.dom.findCommonAncestor(m,k);t=m;while(t&&t.parentNode!=r){t=t.parentNode}if(!t){t=r}s=k;while(s&&s.parentNode!=r){s=s.parentNode}if(!s){s=r}if(t==s){return 0}j=r.firstChild;while(j){if(j==t){return -1}if(j==s){return 1}j=j.nextSibling}},_setEndPoint:function(k,q,p){var l=this,j,m;if(k){l.startContainer=q;l.startOffset=p}else{l.endContainer=q;l.endOffset=p}j=l.endContainer;while(j.parentNode){j=j.parentNode}m=l.startContainer;while(m.parentNode){m=m.parentNode}if(m!=j){l.collapse(k)}else{if(l._compareBoundaryPoints(l.startContainer,l.startOffset,l.endContainer,l.endOffset)>0){l.collapse(k)}}l.collapsed=l._isCollapsed();l.commonAncestorContainer=l.dom.findCommonAncestor(l.startContainer,l.endContainer)},_traverse:function(r){var s=this,q,m=0,v=0,k,o,l,n,j,u;if(s.startContainer==s.endContainer){return s._traverseSameContainer(r)}for(q=s.endContainer,k=q.parentNode;k!=null;q=k,k=k.parentNode){if(k==s.startContainer){return s._traverseCommonStartContainer(q,r)}++m}for(q=s.startContainer,k=q.parentNode;k!=null;q=k,k=k.parentNode){if(k==s.endContainer){return s._traverseCommonEndContainer(q,r)}++v}o=v-m;l=s.startContainer;while(o>0){l=l.parentNode;o--}n=s.endContainer;while(o<0){n=n.parentNode;o++}for(j=l.parentNode,u=n.parentNode;j!=u;j=j.parentNode,u=u.parentNode){l=j;n=u}return s._traverseCommonAncestors(l,n,r)},_traverseSameContainer:function(o){var r=this,q,u,j,k,l,p,m;if(o!=e){q=r.dom.doc.createDocumentFragment()}if(r.startOffset==r.endOffset){return q}if(r.startContainer.nodeType==3){u=r.startContainer.nodeValue;j=u.substring(r.startOffset,r.endOffset);if(o!=c){r.startContainer.deleteData(r.startOffset,r.endOffset-r.startOffset);r.collapse(true)}if(o==e){return null}q.appendChild(r.dom.doc.createTextNode(j));return q}k=i(r.startContainer,r.startOffset);l=r.endOffset-r.startOffset;while(l>0){p=k.nextSibling;m=r._traverseFullySelected(k,o);if(q){q.appendChild(m)}--l;k=p}if(o!=c){r.collapse(true)}return q},_traverseCommonStartContainer:function(j,p){var s=this,r,k,l,m,q,o;if(p!=e){r=s.dom.doc.createDocumentFragment()}k=s._traverseRightBoundary(j,p);if(r){r.appendChild(k)}l=g(j,s.startContainer);m=l-s.startOffset;if(m<=0){if(p!=c){s.setEndBefore(j);s.collapse(false)}return r}k=j.previousSibling;while(m>0){q=k.previousSibling;o=s._traverseFullySelected(k,p);if(r){r.insertBefore(o,r.firstChild)}--m;k=q}if(p!=c){s.setEndBefore(j);s.collapse(false)}return r},_traverseCommonEndContainer:function(m,p){var s=this,r,o,j,k,q,l;if(p!=e){r=s.dom.doc.createDocumentFragment()}j=s._traverseLeftBoundary(m,p);if(r){r.appendChild(j)}o=g(m,s.endContainer);++o;k=s.endOffset-o;j=m.nextSibling;while(k>0){q=j.nextSibling;l=s._traverseFullySelected(j,p);if(r){r.appendChild(l)}--k;j=q}if(p!=c){s.setStartAfter(m);s.collapse(true)}return r},_traverseCommonAncestors:function(p,j,s){var w=this,l,v,o,q,r,k,u,m;if(s!=e){v=w.dom.doc.createDocumentFragment()}l=w._traverseLeftBoundary(p,s);if(v){v.appendChild(l)}o=p.parentNode;q=g(p,o);r=g(j,o);++q;k=r-q;u=p.nextSibling;while(k>0){m=u.nextSibling;l=w._traverseFullySelected(u,s);if(v){v.appendChild(l)}u=m;--k}l=w._traverseRightBoundary(j,s);if(v){v.appendChild(l)}if(s!=c){w.setStartAfter(p);w.collapse(true)}return v},_traverseRightBoundary:function(p,q){var s=this,l=i(s.endContainer,s.endOffset-1),r,o,n,j,k;var m=l!=s.endContainer;if(l==p){return s._traverseNode(l,m,false,q)}r=l.parentNode;o=s._traverseNode(r,false,false,q);while(r!=null){while(l!=null){n=l.previousSibling;j=s._traverseNode(l,m,false,q);if(q!=e){o.insertBefore(j,o.firstChild)}m=true;l=n}if(r==p){return o}l=r.previousSibling;r=r.parentNode;k=s._traverseNode(r,false,false,q);if(q!=e){k.appendChild(o)}o=k}return null},_traverseLeftBoundary:function(p,q){var s=this,m=i(s.startContainer,s.startOffset);var n=m!=s.startContainer,r,o,l,j,k;if(m==p){return s._traverseNode(m,n,true,q)}r=m.parentNode;o=s._traverseNode(r,false,true,q);while(r!=null){while(m!=null){l=m.nextSibling;j=s._traverseNode(m,n,true,q);if(q!=e){o.appendChild(j)}n=true;m=l}if(r==p){return o}m=r.nextSibling;r=r.parentNode;k=s._traverseNode(r,false,true,q);if(q!=e){k.appendChild(o)}o=k}return null},_traverseNode:function(j,o,r,s){var u=this,m,l,p,k,q;if(o){return u._traverseFullySelected(j,s)}if(j.nodeType==3){m=j.nodeValue;if(r){k=u.startOffset;l=m.substring(k);p=m.substring(0,k)}else{k=u.endOffset;l=m.substring(0,k);p=m.substring(k)}if(s!=c){j.nodeValue=p}if(s==e){return null}q=j.cloneNode(false);q.nodeValue=l;return q}if(s==e){return null}return j.cloneNode(false)},_traverseFullySelected:function(l,k){var j=this;if(k!=e){return k==c?l.cloneNode(true):l}l.parentNode.removeChild(l);return null}});f.Range=a})(tinymce.dom);(function(){function a(e){var d=this,h="\uFEFF",b,g;function c(j,i){if(j&&i){if(j.item&&i.item&&j.item(0)===i.item(0)){return 1}if(j.isEqual&&i.isEqual&&i.isEqual(j)){return 1}}return 0}function f(){var m=e.dom,j=e.getRng(),s=m.createRng(),p,k,n,q,o,l;function i(v){var t=v.parentNode.childNodes,u;for(u=t.length-1;u>=0;u--){if(t[u]==v){return u}}return -1}function r(v){var t=j.duplicate(),B,y,u,w,x=0,z=0,A,C;t.collapse(v);B=t.parentElement();t.pasteHTML(h);u=B.childNodes;for(y=0;y<u.length;y++){w=u[y];if(y>0&&(w.nodeType!==3||u[y-1].nodeType!==3)){z++}if(w.nodeType===3){A=w.nodeValue.indexOf(h);if(A!==-1){x+=A;break}x+=w.nodeValue.length}else{x=0}}t.moveStart("character",-1);t.text="";return{index:z,offset:x,parent:B}}n=j.item?j.item(0):j.parentElement();if(n.ownerDocument!=m.doc){return s}if(j.item||!n.hasChildNodes()){s.setStart(n.parentNode,i(n));s.setEnd(s.startContainer,s.startOffset+1);return s}l=e.isCollapsed();p=r(true);k=r(false);p.parent.normalize();k.parent.normalize();q=p.parent.childNodes[Math.min(p.index,p.parent.childNodes.length-1)];if(q.nodeType!=3){s.setStart(p.parent,p.index)}else{s.setStart(p.parent.childNodes[p.index],p.offset)}o=k.parent.childNodes[Math.min(k.index,k.parent.childNodes.length-1)];if(o.nodeType!=3){if(!l){k.index++}s.setEnd(k.parent,k.index)}else{s.setEnd(k.parent.childNodes[k.index],k.offset)}if(!l){q=s.startContainer;if(q.nodeType==1){s.setStart(q,Math.min(s.startOffset,q.childNodes.length))}o=s.endContainer;if(o.nodeType==1){s.setEnd(o,Math.min(s.endOffset,o.childNodes.length))}}d.addRange(s);return s}this.addRange=function(j){var o,m=e.dom.doc.body,p,k,q,l,n,i;q=j.startContainer;l=j.startOffset;n=j.endContainer;i=j.endOffset;o=m.createTextRange();q=q.nodeType==1?q.childNodes[Math.min(l,q.childNodes.length-1)]:q;n=n.nodeType==1?n.childNodes[Math.min(l==i?i:i-1,n.childNodes.length-1)]:n;if(q==n&&q.nodeType==1){if(/^(IMG|TABLE)$/.test(q.nodeName)&&l!=i){o=m.createControlRange();o.addElement(q)}else{o=m.createTextRange();if(!q.hasChildNodes()&&q.canHaveHTML){q.innerHTML=h}o.moveToElementText(q);if(q.innerHTML==h){o.collapse(true);q.removeChild(q.firstChild)}}if(l==i){o.collapse(i<=j.endContainer.childNodes.length-1)}o.select();return}function r(t,v){var u,s,w;if(t.nodeType!=3){return -1}u=t.nodeValue;s=m.createTextRange();t.nodeValue=u.substring(0,v)+h+u.substring(v);s.moveToElementText(t.parentNode);s.findText(h);w=Math.abs(s.moveStart("character",-1048575));t.nodeValue=u;return w}if(j.collapsed){pos=r(q,l);o=m.createTextRange();o.move("character",pos);o.select();return}else{if(q==n&&q.nodeType==3){p=r(q,l);o.move("character",p);o.moveEnd("character",i-l);o.select();return}p=r(q,l);k=r(n,i);o=m.createTextRange();if(p==-1){o.moveToElementText(q);p=0}else{o.move("character",p)}tmpRng=m.createTextRange();if(k==-1){tmpRng.moveToElementText(n)}else{tmpRng.move("character",k)}o.setEndPoint("EndToEnd",tmpRng);o.select();return}};this.getRangeAt=function(){if(!b||!c(g,e.getRng())){b=f();g=e.getRng()}return b};this.destroy=function(){g=b=null}}tinymce.dom.TridentSelection=a})();(function(){var p=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,i=0,d=Object.prototype.toString,n=false;var b=function(D,t,A,v){A=A||[];var e=t=t||document;if(t.nodeType!==1&&t.nodeType!==9){return[]}if(!D||typeof D!=="string"){return A}var B=[],C,y,G,F,z,s,r=true,w=o(t);p.lastIndex=0;while((C=p.exec(D))!==null){B.push(C[1]);if(C[2]){s=RegExp.rightContext;break}}if(B.length>1&&j.exec(D)){if(B.length===2&&f.relative[B[0]]){y=g(B[0]+B[1],t)}else{y=f.relative[B[0]]?[t]:b(B.shift(),t);while(B.length){D=B.shift();if(f.relative[D]){D+=B.shift()}y=g(D,y)}}}else{if(!v&&B.length>1&&t.nodeType===9&&!w&&f.match.ID.test(B[0])&&!f.match.ID.test(B[B.length-1])){var H=b.find(B.shift(),t,w);t=H.expr?b.filter(H.expr,H.set)[0]:H.set[0]}if(t){var H=v?{expr:B.pop(),set:a(v)}:b.find(B.pop(),B.length===1&&(B[0]==="~"||B[0]==="+")&&t.parentNode?t.parentNode:t,w);y=H.expr?b.filter(H.expr,H.set):H.set;if(B.length>0){G=a(y)}else{r=false}while(B.length){var u=B.pop(),x=u;if(!f.relative[u]){u=""}else{x=B.pop()}if(x==null){x=t}f.relative[u](G,x,w)}}else{G=B=[]}}if(!G){G=y}if(!G){throw"Syntax error, unrecognized expression: "+(u||D)}if(d.call(G)==="[object Array]"){if(!r){A.push.apply(A,G)}else{if(t&&t.nodeType===1){for(var E=0;G[E]!=null;E++){if(G[E]&&(G[E]===true||G[E].nodeType===1&&h(t,G[E]))){A.push(y[E])}}}else{for(var E=0;G[E]!=null;E++){if(G[E]&&G[E].nodeType===1){A.push(y[E])}}}}}else{a(G,A)}if(s){b(s,e,A,v);b.uniqueSort(A)}return A};b.uniqueSort=function(r){if(c){n=false;r.sort(c);if(n){for(var e=1;e<r.length;e++){if(r[e]===r[e-1]){r.splice(e--,1)}}}}};b.matches=function(e,r){return b(e,null,null,r)};b.find=function(x,e,y){var w,u;if(!x){return[]}for(var t=0,s=f.order.length;t<s;t++){var v=f.order[t],u;if((u=f.match[v].exec(x))){var r=RegExp.leftContext;if(r.substr(r.length-1)!=="\\"){u[1]=(u[1]||"").replace(/\\/g,"");w=f.find[v](u,e,y);if(w!=null){x=x.replace(f.match[v],"");break}}}}if(!w){w=e.getElementsByTagName("*")}return{set:w,expr:x}};b.filter=function(A,z,D,t){var s=A,F=[],x=z,v,e,w=z&&z[0]&&o(z[0]);while(A&&z.length){for(var y in f.filter){if((v=f.match[y].exec(A))!=null){var r=f.filter[y],E,C;e=false;if(x==F){F=[]}if(f.preFilter[y]){v=f.preFilter[y](v,x,D,F,t,w);if(!v){e=E=true}else{if(v===true){continue}}}if(v){for(var u=0;(C=x[u])!=null;u++){if(C){E=r(C,v,u,x);var B=t^!!E;if(D&&E!=null){if(B){e=true}else{x[u]=false}}else{if(B){F.push(C);e=true}}}}}if(E!==undefined){if(!D){x=F}A=A.replace(f.match[y],"");if(!e){return[]}break}}}if(A==s){if(e==null){throw"Syntax error, unrecognized expression: "+A}else{break}}s=A}return x};var f=b.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")}},relative:{"+":function(x,e,w){var u=typeof e==="string",y=u&&!/\W/.test(e),v=u&&!y;if(y&&!w){e=e.toUpperCase()}for(var t=0,s=x.length,r;t<s;t++){if((r=x[t])){while((r=r.previousSibling)&&r.nodeType!==1){}x[t]=v||r&&r.nodeName===e?r||false:r===e}}if(v){b.filter(e,x,true)}},">":function(w,r,x){var u=typeof r==="string";if(u&&!/\W/.test(r)){r=x?r:r.toUpperCase();for(var s=0,e=w.length;s<e;s++){var v=w[s];if(v){var t=v.parentNode;w[s]=t.nodeName===r?t:false}}}else{for(var s=0,e=w.length;s<e;s++){var v=w[s];if(v){w[s]=u?v.parentNode:v.parentNode===r}}if(u){b.filter(r,w,true)}}},"":function(t,r,v){var s=i++,e=q;if(!r.match(/\W/)){var u=r=v?r:r.toUpperCase();e=m}e("parentNode",r,s,t,u,v)},"~":function(t,r,v){var s=i++,e=q;if(typeof r==="string"&&!r.match(/\W/)){var u=r=v?r:r.toUpperCase();e=m}e("previousSibling",r,s,t,u,v)}},find:{ID:function(r,s,t){if(typeof s.getElementById!=="undefined"&&!t){var e=s.getElementById(r[1]);return e?[e]:[]}},NAME:function(s,v,w){if(typeof v.getElementsByName!=="undefined"){var r=[],u=v.getElementsByName(s[1]);for(var t=0,e=u.length;t<e;t++){if(u[t].getAttribute("name")===s[1]){r.push(u[t])}}return r.length===0?null:r}},TAG:function(e,r){return r.getElementsByTagName(e[1])}},preFilter:{CLASS:function(t,r,s,e,w,x){t=" "+t[1].replace(/\\/g,"")+" ";if(x){return t}for(var u=0,v;(v=r[u])!=null;u++){if(v){if(w^(v.className&&(" "+v.className+" ").indexOf(t)>=0)){if(!s){e.push(v)}}else{if(s){r[u]=false}}}}return false},ID:function(e){return e[1].replace(/\\/g,"")},TAG:function(r,e){for(var s=0;e[s]===false;s++){}return e[s]&&o(e[s])?r[1]:r[1].toUpperCase()},CHILD:function(e){if(e[1]=="nth"){var r=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(e[2]=="even"&&"2n"||e[2]=="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(r[1]+(r[2]||1))-0;e[3]=r[3]-0}e[0]=i++;return e},ATTR:function(u,r,s,e,v,w){var t=u[1].replace(/\\/g,"");if(!w&&f.attrMap[t]){u[1]=f.attrMap[t]}if(u[2]==="~="){u[4]=" "+u[4]+" "}return u},PSEUDO:function(u,r,s,e,v){if(u[1]==="not"){if(u[3].match(p).length>1||/^\w/.test(u[3])){u[3]=b(u[3],null,null,r)}else{var t=b.filter(u[3],r,s,true^v);if(!s){e.push.apply(e,t)}return false}}else{if(f.match.POS.test(u[0])||f.match.CHILD.test(u[0])){return true}}return u},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){e.parentNode.selectedIndex;return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(s,r,e){return !!b(e[3],s).length},header:function(e){return/h\d/i.test(e.nodeName)},text:function(e){return"text"===e.type},radio:function(e){return"radio"===e.type},checkbox:function(e){return"checkbox"===e.type},file:function(e){return"file"===e.type},password:function(e){return"password"===e.type},submit:function(e){return"submit"===e.type},image:function(e){return"image"===e.type},reset:function(e){return"reset"===e.type},button:function(e){return"button"===e.type||e.nodeName.toUpperCase()==="BUTTON"},input:function(e){return/input|select|textarea|button/i.test(e.nodeName)}},setFilters:{first:function(r,e){return e===0},last:function(s,r,e,t){return r===t.length-1},even:function(r,e){return e%2===0},odd:function(r,e){return e%2===1},lt:function(s,r,e){return r<e[3]-0},gt:function(s,r,e){return r>e[3]-0},nth:function(s,r,e){return e[3]-0==r},eq:function(s,r,e){return e[3]-0==r}},filter:{PSEUDO:function(w,s,t,x){var r=s[1],u=f.filters[r];if(u){return u(w,t,s,x)}else{if(r==="contains"){return(w.textContent||w.innerText||"").indexOf(s[3])>=0}else{if(r==="not"){var v=s[3];for(var t=0,e=v.length;t<e;t++){if(v[t]===w){return false}}return true}}}},CHILD:function(e,t){var w=t[1],r=e;switch(w){case"only":case"first":while(r=r.previousSibling){if(r.nodeType===1){return false}}if(w=="first"){return true}r=e;case"last":while(r=r.nextSibling){if(r.nodeType===1){return false}}return true;case"nth":var s=t[2],z=t[3];if(s==1&&z==0){return true}var v=t[0],y=e.parentNode;if(y&&(y.sizcache!==v||!e.nodeIndex)){var u=0;for(r=y.firstChild;r;r=r.nextSibling){if(r.nodeType===1){r.nodeIndex=++u}}y.sizcache=v}var x=e.nodeIndex-z;if(s==0){return x==0}else{return(x%s==0&&x/s>=0)}}},ID:function(r,e){return r.nodeType===1&&r.getAttribute("id")===e},TAG:function(r,e){return(e==="*"&&r.nodeType===1)||r.nodeName===e},CLASS:function(r,e){return(" "+(r.className||r.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(v,t){var s=t[1],e=f.attrHandle[s]?f.attrHandle[s](v):v[s]!=null?v[s]:v.getAttribute(s),w=e+"",u=t[2],r=t[4];return e==null?u==="!=":u==="="?w===r:u==="*="?w.indexOf(r)>=0:u==="~="?(" "+w+" ").indexOf(r)>=0:!r?w&&e!==false:u==="!="?w!=r:u==="^="?w.indexOf(r)===0:u==="$="?w.substr(w.length-r.length)===r:u==="|="?w===r||w.substr(0,r.length+1)===r+"-":false},POS:function(u,r,s,v){var e=r[2],t=f.setFilters[e];if(t){return t(u,s,r,v)}}}};var j=f.match.POS;for(var l in f.match){f.match[l]=new RegExp(f.match[l].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var a=function(r,e){r=Array.prototype.slice.call(r);if(e){e.push.apply(e,r);return e}return r};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(k){a=function(u,t){var r=t||[];if(d.call(u)==="[object Array]"){Array.prototype.push.apply(r,u)}else{if(typeof u.length==="number"){for(var s=0,e=u.length;s<e;s++){r.push(u[s])}}else{for(var s=0;u[s];s++){r.push(u[s])}}}return r}}var c;if(document.documentElement.compareDocumentPosition){c=function(r,e){var s=r.compareDocumentPosition(e)&4?-1:r===e?0:1;if(s===0){n=true}return s}}else{if("sourceIndex" in document.documentElement){c=function(r,e){var s=r.sourceIndex-e.sourceIndex;if(s===0){n=true}return s}}else{if(document.createRange){c=function(t,r){var s=t.ownerDocument.createRange(),e=r.ownerDocument.createRange();s.setStart(t,0);s.setEnd(t,0);e.setStart(r,0);e.setEnd(r,0);var u=s.compareBoundaryPoints(Range.START_TO_END,e);if(u===0){n=true}return u}}}}(function(){var r=document.createElement("div"),s="script"+(new Date).getTime();r.innerHTML="<a name='"+s+"'/>";var e=document.documentElement;e.insertBefore(r,e.firstChild);if(!!document.getElementById(s)){f.find.ID=function(u,v,w){if(typeof v.getElementById!=="undefined"&&!w){var t=v.getElementById(u[1]);return t?t.id===u[1]||typeof t.getAttributeNode!=="undefined"&&t.getAttributeNode("id").nodeValue===u[1]?[t]:undefined:[]}};f.filter.ID=function(v,t){var u=typeof v.getAttributeNode!=="undefined"&&v.getAttributeNode("id");return v.nodeType===1&&u&&u.nodeValue===t}}e.removeChild(r)})();(function(){var e=document.createElement("div");e.appendChild(document.createComment(""));if(e.getElementsByTagName("*").length>0){f.find.TAG=function(r,v){var u=v.getElementsByTagName(r[1]);if(r[1]==="*"){var t=[];for(var s=0;u[s];s++){if(u[s].nodeType===1){t.push(u[s])}}u=t}return u}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){f.attrHandle.href=function(r){return r.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var e=b,s=document.createElement("div");s.innerHTML="<p class='TEST'></p>";if(s.querySelectorAll&&s.querySelectorAll(".TEST").length===0){return}b=function(w,v,t,u){v=v||document;if(!u&&v.nodeType===9&&!o(v)){try{return a(v.querySelectorAll(w),t)}catch(x){}}return e(w,v,t,u)};for(var r in e){b[r]=e[r]}})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var e=document.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}f.order.splice(1,0,"CLASS");f.find.CLASS=function(r,s,t){if(typeof s.getElementsByClassName!=="undefined"&&!t){return s.getElementsByClassName(r[1])}}})()}function m(r,w,v,A,x,z){var y=r=="previousSibling"&&!z;for(var t=0,s=A.length;t<s;t++){var e=A[t];if(e){if(y&&e.nodeType===1){e.sizcache=v;e.sizset=t}e=e[r];var u=false;while(e){if(e.sizcache===v){u=A[e.sizset];break}if(e.nodeType===1&&!z){e.sizcache=v;e.sizset=t}if(e.nodeName===w){u=e;break}e=e[r]}A[t]=u}}}function q(r,w,v,A,x,z){var y=r=="previousSibling"&&!z;for(var t=0,s=A.length;t<s;t++){var e=A[t];if(e){if(y&&e.nodeType===1){e.sizcache=v;e.sizset=t}e=e[r];var u=false;while(e){if(e.sizcache===v){u=A[e.sizset];break}if(e.nodeType===1){if(!z){e.sizcache=v;e.sizset=t}if(typeof w!=="string"){if(e===w){u=true;break}}else{if(b.filter(w,[e]).length>0){u=e;break}}}e=e[r]}A[t]=u}}}var h=document.compareDocumentPosition?function(r,e){return r.compareDocumentPosition(e)&16}:function(r,e){return r!==e&&(r.contains?r.contains(e):true)};var o=function(e){return e.nodeType===9&&e.documentElement.nodeName!=="HTML"||!!e.ownerDocument&&e.ownerDocument.documentElement.nodeName!=="HTML"};var g=function(e,x){var t=[],u="",v,s=x.nodeType?[x]:x;while((v=f.match.PSEUDO.exec(e))){u+=v[0];e=e.replace(f.match.PSEUDO,"")}e=f.relative[e]?e+"*":e;for(var w=0,r=s.length;w<r;w++){b(e,s[w],t)}return b.filter(u,t)};window.tinymce.dom.Sizzle=b})();(function(d){var f=d.each,c=d.DOM,b=d.isIE,e=d.isWebKit,a;d.create("tinymce.dom.EventUtils",{EventUtils:function(){this.inits=[];this.events=[]},add:function(m,p,l,j){var g,h=this,i=h.events,k;if(p instanceof Array){k=[];f(p,function(o){k.push(h.add(m,o,l,j))});return k}if(m&&m.hasOwnProperty&&m instanceof Array){k=[];f(m,function(n){n=c.get(n);k.push(h.add(n,p,l,j))});return k}m=c.get(m);if(!m){return}g=function(n){if(h.disabled){return}n=n||window.event;if(n&&b){if(!n.target){n.target=n.srcElement}if(!n.preventDefault){n.preventDefault=function(){n.returnValue=false}}if(!n.stopPropagation){n.stopPropagation=function(){n.cancelBubble=true}}}if(!j){return l(n)}return l.call(j,n)};if(p=="unload"){d.unloads.unshift({func:g});return g}if(p=="init"){if(h.domLoaded){g()}else{h.inits.push(g)}return g}i.push({obj:m,name:p,func:l,cfunc:g,scope:j});h._add(m,p,g);return l},remove:function(l,m,k){var h=this,g=h.events,i=false,j;if(l&&l.hasOwnProperty&&l instanceof Array){j=[];f(l,function(n){n=c.get(n);j.push(h.remove(n,m,k))});return j}l=c.get(l);f(g,function(o,n){if(o.obj==l&&o.name==m&&(!k||(o.func==k||o.cfunc==k))){g.splice(n,1);h._remove(l,m,o.cfunc);i=true;return false}});return i},clear:function(l){var j=this,g=j.events,h,k;if(l){l=c.get(l);for(h=g.length-1;h>=0;h--){k=g[h];if(k.obj===l){j._remove(k.obj,k.name,k.cfunc);k.obj=k.cfunc=null;g.splice(h,1)}}}},cancel:function(g){if(!g){return false}this.stop(g);return this.prevent(g)},stop:function(g){if(g.stopPropagation){g.stopPropagation()}else{g.cancelBubble=true}return false},prevent:function(g){if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}return false},destroy:function(){var g=this;f(g.events,function(j,h){g._remove(j.obj,j.name,j.cfunc);j.obj=j.cfunc=null});g.events=[];g=null},_add:function(h,i,g){if(h.attachEvent){h.attachEvent("on"+i,g)}else{if(h.addEventListener){h.addEventListener(i,g,false)}else{h["on"+i]=g}}},_remove:function(i,j,h){if(i){try{if(i.detachEvent){i.detachEvent("on"+j,h)}else{if(i.removeEventListener){i.removeEventListener(j,h,false)}else{i["on"+j]=null}}}catch(g){}}},_pageInit:function(h){var g=this;if(g.domLoaded){return}g.domLoaded=true;f(g.inits,function(i){i()});g.inits=[]},_wait:function(i){var g=this,h=i.document;if(i.tinyMCE_GZ&&tinyMCE_GZ.loaded){g.domLoaded=1;return}if(h.attachEvent){h.attachEvent("onreadystatechange",function(){if(h.readyState==="complete"){h.detachEvent("onreadystatechange",arguments.callee);g._pageInit(i)}});if(h.documentElement.doScroll&&i==i.top){(function(){if(g.domLoaded){return}try{h.documentElement.doScroll("left")}catch(j){setTimeout(arguments.callee,0);return}g._pageInit(i)})()}}else{if(h.addEventListener){g._add(i,"DOMContentLoaded",function(){g._pageInit(i)})}}g._add(i,"load",function(){g._pageInit(i)})}});a=d.dom.Event=new d.dom.EventUtils();a._wait(window);d.addUnload(function(){a.destroy()})})(tinymce);(function(a){var b=a.each;a.create("tinymce.dom.Element",{Element:function(g,e){var c=this,f,d;e=e||{};c.id=g;c.dom=f=e.dom||a.DOM;c.settings=e;if(!a.isIE){d=c.dom.get(c.id)}b(["getPos","getRect","getParent","add","setStyle","getStyle","setStyles","setAttrib","setAttribs","getAttrib","addClass","removeClass","hasClass","getOuterHTML","setOuterHTML","remove","show","hide","isHidden","setHTML","get"],function(h){c[h]=function(){var j=[g],k;for(k=0;k<arguments.length;k++){j.push(arguments[k])}j=f[h].apply(f,j);c.update(h);return j}})},on:function(e,d,c){return a.dom.Event.add(this.id,e,d,c)},getXY:function(){return{x:parseInt(this.getStyle("left")),y:parseInt(this.getStyle("top"))}},getSize:function(){var c=this.dom.get(this.id);return{w:parseInt(this.getStyle("width")||c.clientWidth),h:parseInt(this.getStyle("height")||c.clientHeight)}},moveTo:function(c,d){this.setStyles({left:c,top:d})},moveBy:function(c,e){var d=this.getXY();this.moveTo(d.x+c,d.y+e)},resizeTo:function(c,d){this.setStyles({width:c,height:d})},resizeBy:function(c,e){var d=this.getSize();this.resizeTo(d.w+c,d.h+e)},update:function(d){var e=this,c,f=e.dom;if(a.isIE6&&e.settings.blocker){d=d||"";if(d.indexOf("get")===0||d.indexOf("has")===0||d.indexOf("is")===0){return}if(d=="remove"){f.remove(e.blocker);return}if(!e.blocker){e.blocker=f.uniqueId();c=f.add(e.settings.container||f.getRoot(),"iframe",{id:e.blocker,style:"position:absolute;",frameBorder:0,src:'javascript:""'});f.setStyle(c,"opacity",0)}else{c=f.get(e.blocker)}f.setStyle(c,"left",e.getStyle("left",1));f.setStyle(c,"top",e.getStyle("top",1));f.setStyle(c,"width",e.getStyle("width",1));f.setStyle(c,"height",e.getStyle("height",1));f.setStyle(c,"display",e.getStyle("display",1));f.setStyle(c,"zIndex",parseInt(e.getStyle("zIndex",1)||0)-1)}}})})(tinymce);(function(c){function e(f){return f.replace(/[\n\r]+/g,"")}var b=c.is,a=c.isIE,d=c.each;c.create("tinymce.dom.Selection",{Selection:function(i,h,g){var f=this;f.dom=i;f.win=h;f.serializer=g;d(["onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent"],function(j){f[j]=new c.util.Dispatcher(f)});if(!f.win.getSelection){f.tridentSel=new c.dom.TridentSelection(f)}c.addUnload(f.destroy,f)},getContent:function(g){var f=this,h=f.getRng(),l=f.dom.create("body"),j=f.getSel(),i,k,m;g=g||{};i=k="";g.get=true;g.format=g.format||"html";f.onBeforeGetContent.dispatch(f,g);if(g.format=="text"){return f.isCollapsed()?"":(h.text||(j.toString?j.toString():""))}if(h.cloneContents){m=h.cloneContents();if(m){l.appendChild(m)}}else{if(b(h.item)||b(h.htmlText)){l.innerHTML=h.item?h.item(0).outerHTML:h.htmlText}else{l.innerHTML=h.toString()}}if(/^\s/.test(l.innerHTML)){i=" "}if(/\s+$/.test(l.innerHTML)){k=" "}g.getInner=true;g.content=f.isCollapsed()?"":i+f.serializer.serialize(l,g)+k;f.onGetContent.dispatch(f,g);return g.content},setContent:function(i,g){var f=this,j=f.getRng(),l,k=f.win.document;g=g||{format:"html"};g.set=true;i=g.content=f.dom.processHTML(i);f.onBeforeSetContent.dispatch(f,g);i=g.content;if(j.insertNode){i+='<span id="__caret">_</span>';j.deleteContents();j.insertNode(f.getRng().createContextualFragment(i));l=f.dom.get("__caret");j=k.createRange();j.setStartBefore(l);j.setEndAfter(l);f.setRng(j);f.dom.remove("__caret")}else{if(j.item){k.execCommand("Delete",false,null);j=f.getRng()}j.pasteHTML(i)}f.onSetContent.dispatch(f,g)},getStart:function(){var f=this,g=f.getRng(),h;if(a){if(g.item){return g.item(0)}g=g.duplicate();g.collapse(1);h=g.parentElement();if(h&&h.nodeName=="BODY"){return h.firstChild}return h}else{h=g.startContainer;if(h.nodeName=="BODY"){return h.firstChild}return f.dom.getParent(h,"*")}},getEnd:function(){var f=this,g=f.getRng(),h;if(a){if(g.item){return g.item(0)}g=g.duplicate();g.collapse(0);h=g.parentElement();if(h&&h.nodeName=="BODY"){return h.lastChild}return h}else{h=g.endContainer;if(h.nodeName=="BODY"){return h.lastChild}return f.dom.getParent(h,"*")}},getBookmark:function(x){var j=this,m=j.getRng(),f,n,l,u=j.dom.getViewPort(j.win),v,p,z,o,w=-16777215,k,h=j.dom.getRoot(),g=0,i=0,y;n=u.x;l=u.y;if(x=="simple"){return{rng:m,scrollX:n,scrollY:l}}if(a){if(m.item){v=m.item(0);d(j.dom.select(v.nodeName),function(s,r){if(v==s){p=r;return false}});return{tag:v.nodeName,index:p,scrollX:n,scrollY:l}}f=j.dom.doc.body.createTextRange();f.moveToElementText(h);f.collapse(true);z=Math.abs(f.move("character",w));f=m.duplicate();f.collapse(true);p=Math.abs(f.move("character",w));f=m.duplicate();f.collapse(false);o=Math.abs(f.move("character",w))-p;return{start:p-z,length:o,scrollX:n,scrollY:l}}v=j.getNode();k=j.getSel();if(!k){return null}if(v&&v.nodeName=="IMG"){return{scrollX:n,scrollY:l}}function q(A,D,t){var s=j.dom.doc.createTreeWalker(A,NodeFilter.SHOW_TEXT,null,false),E,B=0,C={};while((E=s.nextNode())!=null){if(E==D){C.start=B}if(E==t){C.end=B;return C}B+=e(E.nodeValue||"").length}return null}if(k.anchorNode==k.focusNode&&k.anchorOffset==k.focusOffset){v=q(h,k.anchorNode,k.focusNode);if(!v){return{scrollX:n,scrollY:l}}e(k.anchorNode.nodeValue||"").replace(/^\s+/,function(r){g=r.length});return{start:Math.max(v.start+k.anchorOffset-g,0),end:Math.max(v.end+k.focusOffset-g,0),scrollX:n,scrollY:l,beg:k.anchorOffset-g==0}}else{v=q(h,m.startContainer,m.endContainer);if(!v){return{scrollX:n,scrollY:l}}return{start:Math.max(v.start+m.startOffset-g,0),end:Math.max(v.end+m.endOffset-i,0),scrollX:n,scrollY:l,beg:m.startOffset-g==0}}},moveToBookmark:function(n){var o=this,g=o.getRng(),p=o.getSel(),j=o.dom.getRoot(),m,h,k;function i(q,t,D){var B=o.dom.doc.createTreeWalker(q,NodeFilter.SHOW_TEXT,null,false),x,s=0,A={},u,C,z,y;while((x=B.nextNode())!=null){z=y=0;k=x.nodeValue||"";h=e(k).length;s+=h;if(s>=t&&!A.startNode){u=t-(s-h);if(n.beg&&u>=h){continue}A.startNode=x;A.startOffset=u+y}if(s>=D){A.endNode=x;A.endOffset=D-(s-h)+y;return A}}return null}if(!n){return false}o.win.scrollTo(n.scrollX,n.scrollY);if(a){if(g=n.rng){try{g.select()}catch(l){}return true}o.win.focus();if(n.tag){g=j.createControlRange();d(o.dom.select(n.tag),function(r,q){if(q==n.index){g.addElement(r)}})}else{try{if(n.start<0){return true}g=p.createRange();g.moveToElementText(j);g.collapse(true);g.moveStart("character",n.start);g.moveEnd("character",n.length)}catch(f){return true}}try{g.select()}catch(l){}return true}if(!p){return false}if(n.rng){p.removeAllRanges();p.addRange(n.rng)}else{if(b(n.start)&&b(n.end)){try{m=i(j,n.start,n.end);if(m){g=o.dom.doc.createRange();g.setStart(m.startNode,m.startOffset);g.setEnd(m.endNode,m.endOffset);p.removeAllRanges();p.addRange(g)}if(!c.isOpera){o.win.focus()}}catch(l){}}}},select:function(g,l){var p=this,f=p.getRng(),q=p.getSel(),o,m,k,j=p.win.document;function h(u,t){var s,r;if(u){s=j.createTreeWalker(u,NodeFilter.SHOW_TEXT,null,false);while(u=s.nextNode()){r=u;if(c.trim(u.nodeValue).length!=0){if(t){return u}else{r=u}}}}return r}if(a){try{o=j.body;if(/^(IMG|TABLE)$/.test(g.nodeName)){f=o.createControlRange();f.addElement(g)}else{f=o.createTextRange();f.moveToElementText(g)}f.select()}catch(i){}}else{if(l){m=h(g,1)||p.dom.select("br:first",g)[0];k=h(g,0)||p.dom.select("br:last",g)[0];if(m&&k){f=j.createRange();if(m.nodeName=="BR"){f.setStartBefore(m)}else{f.setStart(m,0)}if(k.nodeName=="BR"){f.setEndBefore(k)}else{f.setEnd(k,k.nodeValue.length)}}else{f.selectNode(g)}}else{f.selectNode(g)}p.setRng(f)}return g},isCollapsed:function(){var f=this,h=f.getRng(),g=f.getSel();if(!h||h.item){return false}return !g||h.boundingWidth==0||h.collapsed},collapse:function(f){var g=this,h=g.getRng(),i;if(h.item){i=h.item(0);h=this.win.document.body.createTextRange();h.moveToElementText(i)}h.collapse(!!f);g.setRng(h)},getSel:function(){var g=this,f=this.win;return f.getSelection?f.getSelection():f.document.selection},getRng:function(j){var g=this,h,i;if(j&&g.tridentSel){return g.tridentSel.getRangeAt(0)}try{if(h=g.getSel()){i=h.rangeCount>0?h.getRangeAt(0):(h.createRange?h.createRange():g.win.document.createRange())}}catch(f){}if(!i){i=a?g.win.document.body.createTextRange():g.win.document.createRange()}return i},setRng:function(i){var h,g=this;if(!g.tridentSel){h=g.getSel();if(h){h.removeAllRanges();h.addRange(i)}}else{if(i.cloneRange){g.tridentSel.addRange(i);return}try{i.select()}catch(f){}}},setNode:function(g){var f=this;f.setContent(f.dom.getOuterHTML(g));return g},getNode:function(){var f=this,h=f.getRng(),g=f.getSel(),i;if(!a){if(!h){return f.dom.getRoot()}i=h.commonAncestorContainer;if(!h.collapsed){if(c.isWebKit&&g.anchorNode&&g.anchorNode.nodeType==1){return g.anchorNode.childNodes[g.anchorOffset]}if(h.startContainer==h.endContainer){if(h.startOffset-h.endOffset<2){if(h.startContainer.hasChildNodes()){i=h.startContainer.childNodes[h.startOffset]}}}}return f.dom.getParent(i,"*")}return h.item?h.item(0):h.parentElement()},getSelectedBlocks:function(g,f){var i=this,j=i.dom,m,h,l,k=[];m=j.getParent(g||i.getStart(),j.isBlock);h=j.getParent(f||i.getEnd(),j.isBlock);if(m){k.push(m)}if(m&&h&&m!=h){l=m;while((l=l.nextSibling)&&l!=h){if(j.isBlock(l)){k.push(l)}}}if(h&&m!=h){k.push(h)}return k},destroy:function(g){var f=this;f.win=null;if(f.tridentSel){f.tridentSel.destroy()}if(!g){c.removeUnload(f.destroy)}}})})(tinymce);(function(a){a.create("tinymce.dom.XMLWriter",{node:null,XMLWriter:function(c){function b(){var e=document.implementation;if(!e||!e.createDocument){try{return new ActiveXObject("MSXML2.DOMDocument")}catch(d){}try{return new ActiveXObject("Microsoft.XmlDom")}catch(d){}}else{return e.createDocument("","",null)}}this.doc=b();this.valid=a.isOpera||a.isWebKit;this.reset()},reset:function(){var b=this,c=b.doc;if(c.firstChild){c.removeChild(c.firstChild)}b.node=c.appendChild(c.createElement("html"))},writeStartElement:function(c){var b=this;b.node=b.node.appendChild(b.doc.createElement(c))},writeAttribute:function(c,b){if(this.valid){b=b.replace(/>/g,"%MCGT%")}this.node.setAttribute(c,b)},writeEndElement:function(){this.node=this.node.parentNode},writeFullEndElement:function(){var b=this,c=b.node;c.appendChild(b.doc.createTextNode(""));b.node=c.parentNode},writeText:function(b){if(this.valid){b=b.replace(/>/g,"%MCGT%")}this.node.appendChild(this.doc.createTextNode(b))},writeCDATA:function(b){this.node.appendChild(this.doc.createCDATASection(b))},writeComment:function(b){if(a.isIE){b=b.replace(/^\-|\-$/g," ")}this.node.appendChild(this.doc.createComment(b.replace(/\-\-/g," ")))},getContent:function(){var b;b=this.doc.xml||new XMLSerializer().serializeToString(this.doc);b=b.replace(/<\?[^?]+\?>|<html>|<\/html>|<html\/>|<!DOCTYPE[^>]+>/g,"");b=b.replace(/ ?\/>/g," />");if(this.valid){b=b.replace(/\%MCGT%/g,"&gt;")}return b}})})(tinymce);(function(a){a.create("tinymce.dom.StringWriter",{str:null,tags:null,count:0,settings:null,indent:null,StringWriter:function(b){this.settings=a.extend({indent_char:" ",indentation:0},b);this.reset()},reset:function(){this.indent="";this.str="";this.tags=[];this.count=0},writeStartElement:function(b){this._writeAttributesEnd();this.writeRaw("<"+b);this.tags.push(b);this.inAttr=true;this.count++;this.elementCount=this.count},writeAttribute:function(d,b){var c=this;c.writeRaw(" "+c.encode(d)+'="'+c.encode(b)+'"')},writeEndElement:function(){var b;if(this.tags.length>0){b=this.tags.pop();if(this._writeAttributesEnd(1)){this.writeRaw("</"+b+">")}if(this.settings.indentation>0){this.writeRaw("\n")}}},writeFullEndElement:function(){if(this.tags.length>0){this._writeAttributesEnd();this.writeRaw("</"+this.tags.pop()+">");if(this.settings.indentation>0){this.writeRaw("\n")}}},writeText:function(b){this._writeAttributesEnd();this.writeRaw(this.encode(b));this.count++},writeCDATA:function(b){this._writeAttributesEnd();this.writeRaw("<![CDATA["+b+"]]>");this.count++},writeComment:function(b){this._writeAttributesEnd();this.writeRaw("<!-- "+b+"-->");this.count++},writeRaw:function(b){this.str+=b},encode:function(b){return b.replace(/[<>&"]/g,function(c){switch(c){case"<":return"&lt;";case">":return"&gt;";case"&":return"&amp;";case'"':return"&quot;"}return c})},getContent:function(){return this.str},_writeAttributesEnd:function(b){if(!this.inAttr){return}this.inAttr=false;if(b&&this.elementCount==this.count){this.writeRaw(" />");return false}this.writeRaw(">");return true}})})(tinymce);(function(e){var g=e.extend,f=e.each,b=e.util.Dispatcher,d=e.isIE,a=e.isGecko;function c(h){return h.replace(/([?+*])/g,".$1")}e.create("tinymce.dom.Serializer",{Serializer:function(j){var i=this;i.key=0;i.onPreProcess=new b(i);i.onPostProcess=new b(i);try{i.writer=new e.dom.XMLWriter()}catch(h){i.writer=new e.dom.StringWriter()}i.settings=j=g({dom:e.DOM,valid_nodes:0,node_filter:0,attr_filter:0,invalid_attrs:/^(mce_|_moz_)/,closed:/^(br|hr|input|meta|img|link|param|area)$/,entity_encoding:"named",entities:"160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro",bool_attrs:/(checked|disabled|readonly|selected|nowrap)/,valid_elements:"*[*]",extended_valid_elements:0,valid_child_elements:0,invalid_elements:0,fix_table_elements:1,fix_list_elements:true,fix_content_duplication:true,convert_fonts_to_spans:false,font_size_classes:0,font_size_style_values:0,apply_source_formatting:0,indent_mode:"simple",indent_char:"\t",indent_levels:1,remove_linebreaks:1,remove_redundant_brs:1,element_format:"xhtml"},j);i.dom=j.dom;if(j.remove_redundant_brs){i.onPostProcess.add(function(k,l){l.content=l.content.replace(/(<br \/>\s*)+<\/(p|h[1-6]|div|li)>/gi,function(n,m,o){if(/^<br \/>\s*<\//.test(n)){return"</"+o+">"}return n})})}if(j.element_format=="html"){i.onPostProcess.add(function(k,l){l.content=l.content.replace(/<([^>]+) \/>/g,"<$1>")})}if(j.fix_list_elements){i.onPreProcess.add(function(v,s){var l,y,w=["ol","ul"],u,t,q,k=/^(OL|UL)$/,z;function m(r,x){var o=x.split(","),p;while((r=r.previousSibling)!=null){for(p=0;p<o.length;p++){if(r.nodeName==o[p]){return r}}}return null}for(y=0;y<w.length;y++){l=i.dom.select(w[y],s.node);for(u=0;u<l.length;u++){t=l[u];q=t.parentNode;if(k.test(q.nodeName)){z=m(t,"LI");if(!z){z=i.dom.create("li");z.innerHTML="&nbsp;";z.appendChild(t);q.insertBefore(z,q.firstChild)}else{z.appendChild(t)}}}}})}if(j.fix_table_elements){i.onPreProcess.add(function(k,l){f(i.dom.select("p table",l.node),function(m){i.dom.split(i.dom.getParent(m,"p"),m)})})}},setEntities:function(p){var n=this,j,m,h={},o="",k;if(n.entityLookup){return}j=p.split(",");for(m=0;m<j.length;m+=2){k=j[m];if(k==34||k==38||k==60||k==62){continue}h[String.fromCharCode(j[m])]=j[m+1];k=parseInt(j[m]).toString(16);o+="\\u"+"0000".substring(k.length)+k}if(!o){n.settings.entity_encoding="raw";return}n.entitiesRE=new RegExp("["+o+"]","g");n.entityLookup=h},setValidChildRules:function(h){this.childRules=null;this.addValidChildRules(h)},addValidChildRules:function(k){var j=this,l,h,i;if(!k){return}l="A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment";h="A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment";i="H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP";f(k.split(","),function(n){var o=n.split(/\[|\]/),m;n="";f(o[1].split("|"),function(p){if(n){n+="|"}switch(p){case"%itrans":p=h;break;case"%itrans_na":p=h.substring(2);break;case"%istrict":p=l;break;case"%istrict_na":p=l.substring(2);break;case"%btrans":p=i;break;case"%bstrict":p=i;break}n+=p});m=new RegExp("^("+n.toLowerCase()+")$","i");f(o[0].split("/"),function(p){j.childRules=j.childRules||{};j.childRules[p]=m})});k="";f(j.childRules,function(n,m){if(k){k+="|"}k+=m});j.parentElementsRE=new RegExp("^("+k.toLowerCase()+")$","i")},setRules:function(i){var h=this;h._setup();h.rules={};h.wildRules=[];h.validElements={};return h.addRules(i)},addRules:function(i){var h=this,j;if(!i){return}h._setup();f(i.split(","),function(m){var q=m.split(/\[|\]/),l=q[0].split("/"),r,k,o,n=[];if(j){k=e.extend([],j.attribs)}if(q.length>1){f(q[1].split("|"),function(u){var p={},t;k=k||[];u=u.replace(/::/g,"~");u=/^([!\-])?([\w*.?~_\-]+|)([=:<])?(.+)?$/.exec(u);u[2]=u[2].replace(/~/g,":");if(u[1]=="!"){r=r||[];r.push(u[2])}if(u[1]=="-"){for(t=0;t<k.length;t++){if(k[t].name==u[2]){k.splice(t,1);return}}}switch(u[3]){case"=":p.defaultVal=u[4]||"";break;case":":p.forcedVal=u[4];break;case"<":p.validVals=u[4].split("?");break}if(/[*.?]/.test(u[2])){o=o||[];p.nameRE=new RegExp("^"+c(u[2])+"$");o.push(p)}else{p.name=u[2];k.push(p)}n.push(u[2])})}f(l,function(v,u){var w=v.charAt(0),t=1,p={};if(j){if(j.noEmpty){p.noEmpty=j.noEmpty}if(j.fullEnd){p.fullEnd=j.fullEnd}if(j.padd){p.padd=j.padd}}switch(w){case"-":p.noEmpty=true;break;case"+":p.fullEnd=true;break;case"#":p.padd=true;break;default:t=0}l[u]=v=v.substring(t);h.validElements[v]=1;if(/[*.?]/.test(l[0])){p.nameRE=new RegExp("^"+c(l[0])+"$");h.wildRules=h.wildRules||{};h.wildRules.push(p)}else{p.name=l[0];if(l[0]=="@"){j=p}h.rules[v]=p}p.attribs=k;if(r){p.requiredAttribs=r}if(o){v="";f(n,function(s){if(v){v+="|"}v+="("+c(s)+")"});p.validAttribsRE=new RegExp("^"+v.toLowerCase()+"$");p.wildAttribs=o}})});i="";f(h.validElements,function(m,l){if(i){i+="|"}if(l!="@"){i+=l}});h.validElementsRE=new RegExp("^("+c(i.toLowerCase())+")$")},findRule:function(m){var j=this,l=j.rules,h,k;j._setup();k=l[m];if(k){return k}l=j.wildRules;for(h=0;h<l.length;h++){if(l[h].nameRE.test(m)){return l[h]}}return null},findAttribRule:function(h,l){var j,k=h.wildAttribs;for(j=0;j<k.length;j++){if(k[j].nameRE.test(l)){return k[j]}}return null},serialize:function(l,k){var j,i=this;i._setup();k=k||{};k.format=k.format||"html";i.processObj=k;l=l.cloneNode(true);i.key=""+(parseInt(i.key)+1);if(!k.no_events){k.node=l;i.onPreProcess.dispatch(i,k)}i.writer.reset();i._serializeNode(l,k.getInner);k.content=i.writer.getContent();if(!k.no_events){i.onPostProcess.dispatch(i,k)}i._postProcess(k);k.node=null;return e.trim(k.content)},_postProcess:function(n){var i=this,k=i.settings,j=n.content,m=[],l;if(n.format=="html"){l=i._protect({content:j,patterns:[{pattern:/(<script[^>]*>)(.*?)(<\/script>)/g},{pattern:/(<style[^>]*>)(.*?)(<\/style>)/g},{pattern:/(<pre[^>]*>)(.*?)(<\/pre>)/g,encode:1},{pattern:/(<!--\[CDATA\[)(.*?)(\]\]-->)/g}]});j=l.content;if(k.entity_encoding!=="raw"){j=i._encode(j)}if(!n.set){j=j.replace(/<p>\s+<\/p>|<p([^>]+)>\s+<\/p>/g,k.entity_encoding=="numeric"?"<p$1>&#160;</p>":"<p$1>&nbsp;</p>");if(k.remove_linebreaks){j=j.replace(/\r?\n|\r/g," ");j=j.replace(/(<[^>]+>)\s+/g,"$1 ");j=j.replace(/\s+(<\/[^>]+>)/g," $1");j=j.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object) ([^>]+)>\s+/g,"<$1 $2>");j=j.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>\s+/g,"<$1>");j=j.replace(/\s+<\/(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>/g,"</$1>")}if(k.apply_source_formatting&&k.indent_mode=="simple"){j=j.replace(/<(\/?)(ul|hr|table|meta|link|tbody|tr|object|body|head|html|map)(|[^>]+)>\s*/g,"\n<$1$2$3>\n");j=j.replace(/\s*<(p|h[1-6]|blockquote|div|title|style|pre|script|td|li|area)(|[^>]+)>/g,"\n<$1$2>");j=j.replace(/<\/(p|h[1-6]|blockquote|div|title|style|pre|script|td|li)>\s*/g,"</$1>\n");j=j.replace(/\n\n/g,"\n")}}j=i._unprotect(j,l);j=j.replace(/<!--\[CDATA\[([\s\S]+)\]\]-->/g,"<![CDATA[$1]]>");j=j.replace(/(type|language)=\"mce-/g,'$1="');if(k.entity_encoding=="raw"){j=j.replace(/<p>&nbsp;<\/p>|<p([^>]+)>&nbsp;<\/p>/g,"<p$1>\u00a0</p>")}}n.content=j},_serializeNode:function(D,o){var z=this,A=z.settings,x=z.writer,q,j,u,F,E,G,B,h,y,k,r,C,p,m;if(!A.node_filter||A.node_filter(D)){switch(D.nodeType){case 1:if(D.hasAttribute?D.hasAttribute("mce_bogus"):D.getAttribute("mce_bogus")){return}p=false;q=D.hasChildNodes();k=D.getAttribute("mce_name")||D.nodeName.toLowerCase();if(d){if(D.scopeName!=="HTML"&&D.scopeName!=="html"){k=D.scopeName+":"+k}}if(k.indexOf("mce:")===0){k=k.substring(4)}if(!z.validElementsRE||!z.validElementsRE.test(k)||(z.invalidElementsRE&&z.invalidElementsRE.test(k))||o){p=true;break}if(d){if(A.fix_content_duplication){if(D.mce_serialized==z.key){return}D.mce_serialized=z.key}if(k.charAt(0)=="/"){k=k.substring(1)}}else{if(a){if(D.nodeName==="BR"&&D.getAttribute("type")=="_moz"){return}}}if(z.childRules){if(z.parentElementsRE.test(z.elementName)){if(!z.childRules[z.elementName].test(k)){p=true;break}}z.elementName=k}r=z.findRule(k);k=r.name||k;m=A.closed.test(k);if((!q&&r.noEmpty)||(d&&!k)){p=true;break}if(r.requiredAttribs){G=r.requiredAttribs;for(F=G.length-1;F>=0;F--){if(this.dom.getAttrib(D,G[F])!==""){break}}if(F==-1){p=true;break}}x.writeStartElement(k);if(r.attribs){for(F=0,B=r.attribs,E=B.length;F<E;F++){G=B[F];y=z._getAttrib(D,G);if(y!==null){x.writeAttribute(G.name,y)}}}if(r.validAttribsRE){B=z.dom.getAttribs(D);for(F=B.length-1;F>-1;F--){h=B[F];if(h.specified){G=h.nodeName.toLowerCase();if(A.invalid_attrs.test(G)||!r.validAttribsRE.test(G)){continue}C=z.findAttribRule(r,G);y=z._getAttrib(D,C,G);if(y!==null){x.writeAttribute(G,y)}}}}if(k==="script"&&e.trim(D.innerHTML)){x.writeText("// ");x.writeCDATA(D.innerHTML.replace(/<!--|-->|<\[CDATA\[|\]\]>/g,""));q=false;break}if(r.padd){if(q&&(u=D.firstChild)&&u.nodeType===1&&D.childNodes.length===1){if(u.hasAttribute?u.hasAttribute("mce_bogus"):u.getAttribute("mce_bogus")){x.writeText("\u00a0")}}else{if(!q){x.writeText("\u00a0")}}}break;case 3:if(z.childRules&&z.parentElementsRE.test(z.elementName)){if(!z.childRules[z.elementName].test(D.nodeName)){return}}return x.writeText(D.nodeValue);case 4:return x.writeCDATA(D.nodeValue);case 8:return x.writeComment(D.nodeValue)}}else{if(D.nodeType==1){q=D.hasChildNodes()}}if(q&&!m){u=D.firstChild;while(u){z._serializeNode(u);z.elementName=k;u=u.nextSibling}}if(!p){if(!m){x.writeFullEndElement()}else{x.writeEndElement()}}},_protect:function(j){var i=this;j.items=j.items||[];function h(l){return l.replace(/[\r\n\\]/g,function(m){if(m==="\n"){return"\\n"}else{if(m==="\\"){return"\\\\"}}return"\\r"})}function k(l){return l.replace(/\\[\\rn]/g,function(m){if(m==="\\n"){return"\n"}else{if(m==="\\\\"){return"\\"}}return"\r"})}f(j.patterns,function(l){j.content=k(h(j.content).replace(l.pattern,function(n,o,m,p){m=k(m);if(l.encode){m=i._encode(m)}j.items.push(m);return o+"<!--mce:"+(j.items.length-1)+"-->"+p}))});return j},_unprotect:function(i,j){i=i.replace(/\<!--mce:([0-9]+)--\>/g,function(k,h){return j.items[parseInt(h)]});j.items=[];return i},_encode:function(m){var j=this,k=j.settings,i;if(k.entity_encoding!=="raw"){if(k.entity_encoding.indexOf("named")!=-1){j.setEntities(k.entities);i=j.entityLookup;m=m.replace(j.entitiesRE,function(h){var l;if(l=i[h]){h="&"+l+";"}return h})}if(k.entity_encoding.indexOf("numeric")!=-1){m=m.replace(/[\u007E-\uFFFF]/g,function(h){return"&#"+h.charCodeAt(0)+";"})}}return m},_setup:function(){var h=this,i=this.settings;if(h.done){return}h.done=1;h.setRules(i.valid_elements);h.addRules(i.extended_valid_elements);h.addValidChildRules(i.valid_child_elements);if(i.invalid_elements){h.invalidElementsRE=new RegExp("^("+c(i.invalid_elements.replace(/,/g,"|").toLowerCase())+")$")}if(i.attrib_value_filter){h.attribValueFilter=i.attribValueFilter}},_getAttrib:function(m,j,h){var l,k;h=h||j.name;if(j.forcedVal&&(k=j.forcedVal)){if(k==="{$uid}"){return this.dom.uniqueId()}return k}k=this.dom.getAttrib(m,h);if(this.settings.bool_attrs.test(h)&&k){k=(""+k).toLowerCase();if(k==="false"||k==="0"){return null}k=h}switch(h){case"rowspan":case"colspan":if(k=="1"){k=""}break}if(this.attribValueFilter){k=this.attribValueFilter(h,k,m)}if(j.validVals){for(l=j.validVals.length-1;l>=0;l--){if(k==j.validVals[l]){break}}if(l==-1){return null}}if(k===""&&typeof(j.defaultVal)!="undefined"){k=j.defaultVal;if(k==="{$uid}"){return this.dom.uniqueId()}return k}else{if(h=="class"&&this.processObj.get){k=k.replace(/\s?mceItem\w+\s?/g,"")}}if(k===""){return null}return k}})})(tinymce);(function(tinymce){var each=tinymce.each,Event=tinymce.dom.Event;tinymce.create("tinymce.dom.ScriptLoader",{ScriptLoader:function(s){this.settings=s||{};this.queue=[];this.lookup={}},isDone:function(u){return this.lookup[u]?this.lookup[u].state==2:0},markDone:function(u){this.lookup[u]={state:2,url:u}},add:function(u,cb,s,pr){var t=this,lo=t.lookup,o;if(o=lo[u]){if(cb&&o.state==2){cb.call(s||this)}return o}o={state:0,url:u,func:cb,scope:s||this};if(pr){t.queue.unshift(o)}else{t.queue.push(o)}lo[u]=o;return o},load:function(u,cb,s){var t=this,o;if(o=t.lookup[u]){if(cb&&o.state==2){cb.call(s||t)}return o}function loadScript(u){if(Event.domLoaded||t.settings.strict_mode){tinymce.util.XHR.send({url:tinymce._addVer(u),error:t.settings.error,async:false,success:function(co){t.eval(co)}})}else{document.write('<script type="text/javascript" src="'+tinymce._addVer(u)+'"><\/script>')}}if(!tinymce.is(u,"string")){each(u,function(u){loadScript(u)});if(cb){cb.call(s||t)}}else{loadScript(u);if(cb){cb.call(s||t)}}},loadQueue:function(cb,s){var t=this;if(!t.queueLoading){t.queueLoading=1;t.queueCallbacks=[];t.loadScripts(t.queue,function(){t.queueLoading=0;if(cb){cb.call(s||t)}each(t.queueCallbacks,function(o){o.func.call(o.scope)})})}else{if(cb){t.queueCallbacks.push({func:cb,scope:s||t})}}},eval:function(co){var w=window;if(!w.execScript){try{eval.call(w,co)}catch(ex){eval(co,w)}}else{w.execScript(co)}},loadScripts:function(sc,cb,s){var t=this,lo=t.lookup;function done(o){o.state=2;if(o.func){o.func.call(o.scope||t)}}function allDone(){var l;l=sc.length;each(sc,function(o){o=lo[o.url];if(o.state===2){done(o);l--}else{load(o)}});if(l===0&&cb){cb.call(s||t);cb=0}}function load(o){if(o.state>0){return}o.state=1;tinymce.dom.ScriptLoader.loadScript(o.url,function(){done(o);allDone()})}each(sc,function(o){var u=o.url;if(!lo[u]){lo[u]=o;t.queue.push(o)}else{o=lo[u]}if(o.state>0){return}if(!Event.domLoaded&&!t.settings.strict_mode){var ix,ol="";if(cb||o.func){o.state=1;ix=tinymce.dom.ScriptLoader._addOnLoad(function(){done(o);allDone()});if(tinymce.isIE){ol=' onreadystatechange="'}else{ol=' onload="'}ol+="tinymce.dom.ScriptLoader._onLoad(this,'"+u+"',"+ix+');"'}document.write('<script type="text/javascript" src="'+tinymce._addVer(u)+'"'+ol+"><\/script>");if(!o.func){done(o)}}else{load(o)}});allDone()},"static":{_addOnLoad:function(f){var t=this;t._funcs=t._funcs||[];t._funcs.push(f);return t._funcs.length-1},_onLoad:function(e,u,ix){if(!tinymce.isIE||e.readyState=="complete"){this._funcs[ix].call(this)}},loadScript:function(u,cb){var id=tinymce.DOM.uniqueId(),e;function done(){Event.clear(id);tinymce.DOM.remove(id);if(cb){cb.call(document,u);cb=0}}if(tinymce.isIE){tinymce.util.XHR.send({url:tinymce._addVer(u),async:false,success:function(co){window.execScript(co);done()}})}else{e=tinymce.DOM.create("script",{id:id,type:"text/javascript",src:tinymce._addVer(u)});Event.add(e,"load",done);(document.getElementsByTagName("head")[0]||document.body).appendChild(e)}}}});tinymce.ScriptLoader=new tinymce.dom.ScriptLoader()})(tinymce);(function(c){var b=c.DOM,a=c.is;c.create("tinymce.ui.Control",{Control:function(e,d){this.id=e;this.settings=d=d||{};this.rendered=false;this.onRender=new c.util.Dispatcher(this);this.classPrefix="";this.scope=d.scope||this;this.disabled=0;this.active=0},setDisabled:function(d){var f;if(d!=this.disabled){f=b.get(this.id);if(f&&this.settings.unavailable_prefix){if(d){this.prevTitle=f.title;f.title=this.settings.unavailable_prefix+": "+f.title}else{f.title=this.prevTitle}}this.setState("Disabled",d);this.setState("Enabled",!d);this.disabled=d}},isDisabled:function(){return this.disabled},setActive:function(d){if(d!=this.active){this.setState("Active",d);this.active=d}},isActive:function(){return this.active},setState:function(f,d){var e=b.get(this.id);f=this.classPrefix+f;if(d){b.addClass(e,f)}else{b.removeClass(e,f)}},isRendered:function(){return this.rendered},renderHTML:function(){},renderTo:function(d){b.setHTML(d,this.renderHTML())},postRender:function(){var e=this,d;if(a(e.disabled)){d=e.disabled;e.disabled=-1;e.setDisabled(d)}if(a(e.active)){d=e.active;e.active=-1;e.setActive(d)}},remove:function(){b.remove(this.id);this.destroy()},destroy:function(){c.dom.Event.clear(this.id)}})})(tinymce);tinymce.create("tinymce.ui.Container:tinymce.ui.Control",{Container:function(b,a){this.parent(b,a);this.controls=[];this.lookup={}},add:function(a){this.lookup[a.id]=a;this.controls.push(a);return a},get:function(a){return this.lookup[a]}});tinymce.create("tinymce.ui.Separator:tinymce.ui.Control",{Separator:function(b,a){this.parent(b,a);this.classPrefix="mceSeparator"},renderHTML:function(){return tinymce.DOM.createHTML("span",{"class":this.classPrefix})}});(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.MenuItem:tinymce.ui.Control",{MenuItem:function(g,f){this.parent(g,f);this.classPrefix="mceMenuItem"},setSelected:function(f){this.setState("Selected",f);this.selected=f},isSelected:function(){return this.selected},postRender:function(){var f=this;f.parent();if(c(f.selected)){f.setSelected(f.selected)}}})})(tinymce);(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.Menu:tinymce.ui.MenuItem",{Menu:function(h,g){var f=this;f.parent(h,g);f.items={};f.collapsed=false;f.menuCount=0;f.onAddItem=new d.util.Dispatcher(this)},expand:function(g){var f=this;if(g){a(f,function(h){if(h.expand){h.expand()}},"items",f)}f.collapsed=false},collapse:function(g){var f=this;if(g){a(f,function(h){if(h.collapse){h.collapse()}},"items",f)}f.collapsed=true},isCollapsed:function(){return this.collapsed},add:function(f){if(!f.settings){f=new d.ui.MenuItem(f.id||b.uniqueId(),f)}this.onAddItem.dispatch(this,f);return this.items[f.id]=f},addSeparator:function(){return this.add({separator:true})},addMenu:function(f){if(!f.collapse){f=this.createMenu(f)}this.menuCount++;return this.add(f)},hasMenus:function(){return this.menuCount!==0},remove:function(f){delete this.items[f.id]},removeAll:function(){var f=this;a(f,function(g){if(g.removeAll){g.removeAll()}else{g.remove()}g.destroy()},"items",f);f.items={}},createMenu:function(g){var f=new d.ui.Menu(g.id||b.uniqueId(),g);f.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return f}})})(tinymce);(function(e){var d=e.is,c=e.DOM,f=e.each,a=e.dom.Event,b=e.dom.Element;e.create("tinymce.ui.DropMenu:tinymce.ui.Menu",{DropMenu:function(h,g){g=g||{};g.container=g.container||c.doc.body;g.offset_x=g.offset_x||0;g.offset_y=g.offset_y||0;g.vp_offset_x=g.vp_offset_x||0;g.vp_offset_y=g.vp_offset_y||0;if(d(g.icons)&&!g.icons){g["class"]+=" mceNoIcons"}this.parent(h,g);this.onShowMenu=new e.util.Dispatcher(this);this.onHideMenu=new e.util.Dispatcher(this);this.classPrefix="mceMenu"},createMenu:function(j){var h=this,i=h.settings,g;j.container=j.container||i.container;j.parent=h;j.constrain=j.constrain||i.constrain;j["class"]=j["class"]||i["class"];j.vp_offset_x=j.vp_offset_x||i.vp_offset_x;j.vp_offset_y=j.vp_offset_y||i.vp_offset_y;g=new e.ui.DropMenu(j.id||c.uniqueId(),j);g.onAddItem.add(h.onAddItem.dispatch,h.onAddItem);return g},update:function(){var i=this,j=i.settings,g=c.get("menu_"+i.id+"_tbl"),l=c.get("menu_"+i.id+"_co"),h,k;h=j.max_width?Math.min(g.clientWidth,j.max_width):g.clientWidth;k=j.max_height?Math.min(g.clientHeight,j.max_height):g.clientHeight;if(!c.boxModel){i.element.setStyles({width:h+2,height:k+2})}else{i.element.setStyles({width:h,height:k})}if(j.max_width){c.setStyle(l,"width",h)}if(j.max_height){c.setStyle(l,"height",k);if(g.clientHeight<j.max_height){c.setStyle(l,"overflow","hidden")}}},showMenu:function(p,n,r){var z=this,A=z.settings,o,g=c.getViewPort(),u,l,v,q,i=2,k,j,m=z.classPrefix;z.collapse(1);if(z.isMenuVisible){return}if(!z.rendered){o=c.add(z.settings.container,z.renderNode());f(z.items,function(h){h.postRender()});z.element=new b("menu_"+z.id,{blocker:1,container:A.container})}else{o=c.get("menu_"+z.id)}if(!e.isOpera){c.setStyles(o,{left:-65535,top:-65535})}c.show(o);z.update();p+=A.offset_x||0;n+=A.offset_y||0;g.w-=4;g.h-=4;if(A.constrain){u=o.clientWidth-i;l=o.clientHeight-i;v=g.x+g.w;q=g.y+g.h;if((p+A.vp_offset_x+u)>v){p=r?r-u:Math.max(0,(v-A.vp_offset_x)-u)}if((n+A.vp_offset_y+l)>q){n=Math.max(0,(q-A.vp_offset_y)-l)}}c.setStyles(o,{left:p,top:n});z.element.update();z.isMenuVisible=1;z.mouseClickFunc=a.add(o,"click",function(s){var h;s=s.target;if(s&&(s=c.getParent(s,"tr"))&&!c.hasClass(s,m+"ItemSub")){h=z.items[s.id];if(h.isDisabled()){return}k=z;while(k){if(k.hideMenu){k.hideMenu()}k=k.settings.parent}if(h.settings.onclick){h.settings.onclick(s)}return a.cancel(s)}});if(z.hasMenus()){z.mouseOverFunc=a.add(o,"mouseover",function(w){var h,t,s;w=w.target;if(w&&(w=c.getParent(w,"tr"))){h=z.items[w.id];if(z.lastMenu){z.lastMenu.collapse(1)}if(h.isDisabled()){return}if(w&&c.hasClass(w,m+"ItemSub")){t=c.getRect(w);h.showMenu((t.x+t.w-i),t.y-i,t.x);z.lastMenu=h;c.addClass(c.get(h.id).firstChild,m+"ItemActive")}}})}z.onShowMenu.dispatch(z);if(A.keyboard_focus){a.add(o,"keydown",z._keyHandler,z);c.select("a","menu_"+z.id)[0].focus();z._focusIdx=0}},hideMenu:function(j){var g=this,i=c.get("menu_"+g.id),h;if(!g.isMenuVisible){return}a.remove(i,"mouseover",g.mouseOverFunc);a.remove(i,"click",g.mouseClickFunc);a.remove(i,"keydown",g._keyHandler);c.hide(i);g.isMenuVisible=0;if(!j){g.collapse(1)}if(g.element){g.element.hide()}if(h=c.get(g.id)){c.removeClass(h.firstChild,g.classPrefix+"ItemActive")}g.onHideMenu.dispatch(g)},add:function(i){var g=this,h;i=g.parent(i);if(g.isRendered&&(h=c.get("menu_"+g.id))){g._add(c.select("tbody",h)[0],i)}return i},collapse:function(g){this.parent(g);this.hideMenu(1)},remove:function(g){c.remove(g.id);this.destroy();return this.parent(g)},destroy:function(){var g=this,h=c.get("menu_"+g.id);a.remove(h,"mouseover",g.mouseOverFunc);a.remove(h,"click",g.mouseClickFunc);if(g.element){g.element.remove()}c.remove(h)},renderNode:function(){var i=this,j=i.settings,l,h,k,g;g=c.create("div",{id:"menu_"+i.id,"class":j["class"],style:"position:absolute;left:0;top:0;z-index:200000"});k=c.add(g,"div",{id:"menu_"+i.id+"_co","class":i.classPrefix+(j["class"]?" "+j["class"]:"")});i.element=new b("menu_"+i.id,{blocker:1,container:j.container});if(j.menu_line){c.add(k,"span",{"class":i.classPrefix+"Line"})}l=c.add(k,"table",{id:"menu_"+i.id+"_tbl",border:0,cellPadding:0,cellSpacing:0});h=c.add(l,"tbody");f(i.items,function(m){i._add(h,m)});i.rendered=true;return g},_keyHandler:function(j){var i=this,h=j.keyCode;function g(m){var k=i._focusIdx+m,l=c.select("a","menu_"+i.id)[k];if(l){i._focusIdx=k;l.focus()}}switch(h){case 38:g(-1);return;case 40:g(1);return;case 13:return;case 27:return this.hideMenu()}},_add:function(j,h){var i,q=h.settings,p,l,k,m=this.classPrefix,g;if(q.separator){l=c.add(j,"tr",{id:h.id,"class":m+"ItemSeparator"});c.add(l,"td",{"class":m+"ItemSeparator"});if(i=l.previousSibling){c.addClass(i,"mceLast")}return}i=l=c.add(j,"tr",{id:h.id,"class":m+"Item "+m+"ItemEnabled"});i=k=c.add(i,"td");i=p=c.add(i,"a",{href:"javascript:;",onclick:"return false;",onmousedown:"return false;"});c.addClass(k,q["class"]);g=c.add(i,"span",{"class":"mceIcon"+(q.icon?" mce_"+q.icon:"")});if(q.icon_src){c.add(g,"img",{src:q.icon_src})}i=c.add(i,q.element||"span",{"class":"mceText",title:h.settings.title},h.settings.title);if(h.settings.style){c.setAttrib(i,"style",h.settings.style)}if(j.childNodes.length==1){c.addClass(l,"mceFirst")}if((i=l.previousSibling)&&c.hasClass(i,m+"ItemSeparator")){c.addClass(l,"mceFirst")}if(h.collapse){c.addClass(l,m+"ItemSub")}if(i=l.previousSibling){c.removeClass(i,"mceLast")}c.addClass(l,"mceLast")}})})(tinymce);(function(b){var a=b.DOM;b.create("tinymce.ui.Button:tinymce.ui.Control",{Button:function(d,c){this.parent(d,c);this.classPrefix="mceButton"},renderHTML:function(){var f=this.classPrefix,e=this.settings,d,c;c=a.encode(e.label||"");d='<a id="'+this.id+'" href="javascript:;" class="'+f+" "+f+"Enabled "+e["class"]+(c?" "+f+"Labeled":"")+'" onmousedown="return false;" onclick="return false;" title="'+a.encode(e.title)+'">';if(e.image){d+='<img class="mceIcon" src="'+e.image+'" />'+c+"</a>"}else{d+='<span class="mceIcon '+e["class"]+'"></span>'+(c?'<span class="'+f+'Label">'+c+"</span>":"")+"</a>"}return d},postRender:function(){var c=this,d=c.settings;b.dom.Event.add(c.id,"click",function(f){if(!c.isDisabled()){return d.onclick.call(d.scope,f)}})}})})(tinymce);(function(d){var c=d.DOM,b=d.dom.Event,e=d.each,a=d.util.Dispatcher;d.create("tinymce.ui.ListBox:tinymce.ui.Control",{ListBox:function(h,g){var f=this;f.parent(h,g);f.items=[];f.onChange=new a(f);f.onPostRender=new a(f);f.onAdd=new a(f);f.onRenderMenu=new d.util.Dispatcher(this);f.classPrefix="mceListBox"},select:function(h){var g=this,j,i;if(h==undefined){return g.selectByIndex(-1)}if(h&&h.call){i=h}else{i=function(f){return f==h}}if(h!=g.selectedValue){e(g.items,function(k,f){if(i(k.value)){j=1;g.selectByIndex(f);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){var g=this,h,i;if(f!=g.selectedIndex){h=c.get(g.id+"_text");i=g.items[f];if(i){g.selectedValue=i.value;g.selectedIndex=f;c.setHTML(h,c.encode(i.title));c.removeClass(h,"mceTitle")}else{c.setHTML(h,c.encode(g.settings.title));c.addClass(h,"mceTitle");g.selectedValue=g.selectedIndex=null}h=0}},add:function(i,f,h){var g=this;h=h||{};h=d.extend(h,{title:i,value:f});g.items.push(h);g.onAdd.dispatch(g,h)},getLength:function(){return this.items.length},renderHTML:function(){var i="",f=this,g=f.settings,j=f.classPrefix;i='<table id="'+f.id+'" cellpadding="0" cellspacing="0" class="'+j+" "+j+"Enabled"+(g["class"]?(" "+g["class"]):"")+'"><tbody><tr>';i+="<td>"+c.createHTML("a",{id:f.id+"_text",href:"javascript:;","class":"mceText",onclick:"return false;",onmousedown:"return false;"},c.encode(f.settings.title))+"</td>";i+="<td>"+c.createHTML("a",{id:f.id+"_open",tabindex:-1,href:"javascript:;","class":"mceOpen",onclick:"return false;",onmousedown:"return false;"},"<span></span>")+"</td>";i+="</tr></tbody></table>";return i},showMenu:function(){var g=this,j,i,h=c.get(this.id),f;if(g.isDisabled()||g.items.length==0){return}if(g.menu&&g.menu.isMenuVisible){return g.hideMenu()}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}j=c.getPos(this.settings.menu_container);i=c.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.keyboard_focus=!d.isOpera;if(g.oldID){f.items[g.oldID].setSelected(0)}e(g.items,function(k){if(k.value===g.selectedValue){f.items[k.id].setSelected(1);g.oldID=k.id}});f.showMenu(0,h.clientHeight);b.add(c.doc,"mousedown",g.hideMenu,g);c.addClass(g.id,g.classPrefix+"Selected")},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&(g.target.id==f.id+"_text"||g.target.id==f.id+"_open")){return}if(!g||!c.getParent(g.target,".mceMenu")){c.removeClass(f.id,f.classPrefix+"Selected");b.remove(c.doc,"mousedown",f.hideMenu,f);if(f.menu){f.menu.hideMenu()}}},renderMenu:function(){var g=this,f;f=g.settings.control_manager.createDropMenu(g.id+"_menu",{menu_line:1,"class":g.classPrefix+"Menu mceNoIcons",max_width:150,max_height:150});f.onHideMenu.add(g.hideMenu,g);f.add({title:g.settings.title,"class":"mceMenuItemTitle",onclick:function(){if(g.settings.onselect("")!==false){g.select("")}}});e(g.items,function(h){h.id=c.uniqueId();h.onclick=function(){if(g.settings.onselect(h.value)!==false){g.select(h.value)}};f.add(h)});g.onRenderMenu.dispatch(g,f);g.menu=f},postRender:function(){var f=this,g=f.classPrefix;b.add(f.id,"click",f.showMenu,f);b.add(f.id+"_text","focus",function(h){if(!f._focused){f.keyDownHandler=b.add(f.id+"_text","keydown",function(l){var i=-1,j,k=l.keyCode;e(f.items,function(m,n){if(f.selectedValue==m.value){i=n}});if(k==38){j=f.items[i-1]}else{if(k==40){j=f.items[i+1]}else{if(k==13){j=f.selectedValue;f.selectedValue=null;f.settings.onselect(j);return b.cancel(l)}}}if(j){f.hideMenu();f.select(j.value)}})}f._focused=1});b.add(f.id+"_text","blur",function(){b.remove(f.id+"_text","keydown",f.keyDownHandler);f._focused=0});if(d.isIE6||!c.boxModel){b.add(f.id,"mouseover",function(){if(!c.hasClass(f.id,g+"Disabled")){c.addClass(f.id,g+"Hover")}});b.add(f.id,"mouseout",function(){if(!c.hasClass(f.id,g+"Disabled")){c.removeClass(f.id,g+"Hover")}})}f.onPostRender.dispatch(f,c.get(f.id))},destroy:function(){this.parent();b.clear(this.id+"_text")}})})(tinymce);(function(d){var c=d.DOM,b=d.dom.Event,e=d.each,a=d.util.Dispatcher;d.create("tinymce.ui.NativeListBox:tinymce.ui.ListBox",{NativeListBox:function(g,f){this.parent(g,f);this.classPrefix="mceNativeListBox"},setDisabled:function(f){c.get(this.id).disabled=f},isDisabled:function(){return c.get(this.id).disabled},select:function(h){var g=this,j,i;if(h==undefined){return g.selectByIndex(-1)}if(h&&h.call){i=h}else{i=function(f){return f==h}}if(h!=g.selectedValue){e(g.items,function(k,f){if(i(k.value)){j=1;g.selectByIndex(f);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){c.get(this.id).selectedIndex=f+1;this.selectedValue=this.items[f]?this.items[f].value:null},add:function(j,g,f){var i,h=this;f=f||{};f.value=g;if(h.isRendered()){c.add(c.get(this.id),"option",f,j)}i={title:j,value:g,attribs:f};h.items.push(i);h.onAdd.dispatch(h,i)},getLength:function(){return c.get(this.id).options.length-1},renderHTML:function(){var g,f=this;g=c.createHTML("option",{value:""},"-- "+f.settings.title+" --");e(f.items,function(h){g+=c.createHTML("option",{value:h.value},h.title)});g=c.createHTML("select",{id:f.id,"class":"mceNativeListBox"},g);return g},postRender:function(){var g=this,h;g.rendered=true;function f(j){var i=g.items[j.target.selectedIndex-1];if(i&&(i=i.value)){g.onChange.dispatch(g,i);if(g.settings.onselect){g.settings.onselect(i)}}}b.add(g.id,"change",f);b.add(g.id,"keydown",function(j){var i;b.remove(g.id,"change",h);i=b.add(g.id,"blur",function(){b.add(g.id,"change",f);b.remove(g.id,"blur",i)});if(j.keyCode==13||j.keyCode==32){f(j);return b.cancel(j)}});g.onPostRender.dispatch(g,c.get(g.id))}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.MenuButton:tinymce.ui.Button",{MenuButton:function(f,e){this.parent(f,e);this.onRenderMenu=new c.util.Dispatcher(this);e.menu_container=e.menu_container||b.doc.body},showMenu:function(){var g=this,j,i,h=b.get(g.id),f;if(g.isDisabled()){return}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}if(g.isMenuVisible){return g.hideMenu()}j=b.getPos(g.settings.menu_container);i=b.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.vp_offset_x=i.x;f.settings.vp_offset_y=i.y;f.settings.keyboard_focus=g._focused;f.showMenu(0,h.clientHeight);a.add(b.doc,"mousedown",g.hideMenu,g);g.setState("Selected",1);g.isMenuVisible=1},renderMenu:function(){var f=this,e;e=f.settings.control_manager.createDropMenu(f.id+"_menu",{menu_line:1,"class":this.classPrefix+"Menu",icons:f.settings.icons});e.onHideMenu.add(f.hideMenu,f);f.onRenderMenu.dispatch(f,e);f.menu=e},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&b.getParent(g.target,function(h){return h.id===f.id||h.id===f.id+"_open"})){return}if(!g||!b.getParent(g.target,".mceMenu")){f.setState("Selected",0);a.remove(b.doc,"mousedown",f.hideMenu,f);if(f.menu){f.menu.hideMenu()}}f.isMenuVisible=0},postRender:function(){var e=this,f=e.settings;a.add(e.id,"click",function(){if(!e.isDisabled()){if(f.onclick){f.onclick(e.value)}e.showMenu()}})}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.SplitButton:tinymce.ui.MenuButton",{SplitButton:function(f,e){this.parent(f,e);this.classPrefix="mceSplitButton"},renderHTML:function(){var i,f=this,g=f.settings,e;i="<tbody><tr>";if(g.image){e=b.createHTML("img ",{src:g.image,"class":"mceAction "+g["class"]})}else{e=b.createHTML("span",{"class":"mceAction "+g["class"]},"")}i+="<td>"+b.createHTML("a",{id:f.id+"_action",href:"javascript:;","class":"mceAction "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";e=b.createHTML("span",{"class":"mceOpen "+g["class"]});i+="<td>"+b.createHTML("a",{id:f.id+"_open",href:"javascript:;","class":"mceOpen "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";i+="</tr></tbody>";return b.createHTML("table",{id:f.id,"class":"mceSplitButton mceSplitButtonEnabled "+g["class"],cellpadding:"0",cellspacing:"0",onmousedown:"return false;",title:g.title},i)},postRender:function(){var e=this,f=e.settings;if(f.onclick){a.add(e.id+"_action","click",function(){if(!e.isDisabled()){f.onclick(e.value)}})}a.add(e.id+"_open","click",e.showMenu,e);a.add(e.id+"_open","focus",function(){e._focused=1});a.add(e.id+"_open","blur",function(){e._focused=0});if(c.isIE6||!b.boxModel){a.add(e.id,"mouseover",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.addClass(e.id,"mceSplitButtonHover")}});a.add(e.id,"mouseout",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.removeClass(e.id,"mceSplitButtonHover")}})}},destroy:function(){this.parent();a.clear(this.id+"_action");a.clear(this.id+"_open")}})})(tinymce);(function(d){var c=d.DOM,a=d.dom.Event,b=d.is,e=d.each;d.create("tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton",{ColorSplitButton:function(h,g){var f=this;f.parent(h,g);f.settings=g=d.extend({colors:"000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",grid_width:8,default_color:"#888888"},f.settings);f.onShowMenu=new d.util.Dispatcher(f);f.onHideMenu=new d.util.Dispatcher(f);f.value=g.default_color},showMenu:function(){var f=this,g,j,i,h;if(f.isDisabled()){return}if(!f.isMenuRendered){f.renderMenu();f.isMenuRendered=true}if(f.isMenuVisible){return f.hideMenu()}i=c.get(f.id);c.show(f.id+"_menu");c.addClass(i,"mceSplitButtonSelected");h=c.getPos(i);c.setStyles(f.id+"_menu",{left:h.x,top:h.y+i.clientHeight,zIndex:200000});i=0;a.add(c.doc,"mousedown",f.hideMenu,f);f.onShowMenu.dispatch(f);if(f._focused){f._keyHandler=a.add(f.id+"_menu","keydown",function(k){if(k.keyCode==27){f.hideMenu()}});c.select("a",f.id+"_menu")[0].focus()}f.isMenuVisible=1},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&c.getParent(g.target,function(h){return h.id===f.id+"_open"})){return}if(!g||!c.getParent(g.target,".mceSplitButtonMenu")){c.removeClass(f.id,"mceSplitButtonSelected");a.remove(c.doc,"mousedown",f.hideMenu,f);a.remove(f.id+"_menu","keydown",f._keyHandler);c.hide(f.id+"_menu")}f.onHideMenu.dispatch(f);f.isMenuVisible=0},renderMenu:function(){var k=this,f,j=0,l=k.settings,p,h,o,g;g=c.add(l.menu_container,"div",{id:k.id+"_menu","class":l.menu_class+" "+l["class"],style:"position:absolute;left:0;top:-1000px;"});f=c.add(g,"div",{"class":l["class"]+" mceSplitButtonMenu"});c.add(f,"span",{"class":"mceMenuLine"});p=c.add(f,"table",{"class":"mceColorSplitMenu"});h=c.add(p,"tbody");j=0;e(b(l.colors,"array")?l.colors:l.colors.split(","),function(i){i=i.replace(/^#/,"");if(!j--){o=c.add(h,"tr");j=l.grid_width-1}p=c.add(o,"td");p=c.add(p,"a",{href:"javascript:;",style:{backgroundColor:"#"+i},mce_color:"#"+i})});if(l.more_colors_func){p=c.add(h,"tr");p=c.add(p,"td",{colspan:l.grid_width,"class":"mceMoreColors"});p=c.add(p,"a",{id:k.id+"_more",href:"javascript:;",onclick:"return false;","class":"mceMoreColors"},l.more_colors_title);a.add(p,"click",function(i){l.more_colors_func.call(l.more_colors_scope||this);return a.cancel(i)})}c.addClass(f,"mceColorSplitMenu");a.add(k.id+"_menu","click",function(i){var m;i=i.target;if(i.nodeName=="A"&&(m=i.getAttribute("mce_color"))){k.setColor(m)}return a.cancel(i)});return g},setColor:function(g){var f=this;c.setStyle(f.id+"_preview","backgroundColor",g);f.value=g;f.hideMenu();f.settings.onselect(g)},postRender:function(){var f=this,g=f.id;f.parent();c.add(g+"_action","div",{id:g+"_preview","class":"mceColorPreview"});c.setStyle(f.id+"_preview","backgroundColor",f.value)},destroy:function(){this.parent();a.clear(this.id+"_menu");a.clear(this.id+"_more");c.remove(this.id+"_menu")}})})(tinymce);tinymce.create("tinymce.ui.Toolbar:tinymce.ui.Container",{renderHTML:function(){var l=this,e="",g,j,b=tinymce.DOM,m=l.settings,d,a,f,k;k=l.controls;for(d=0;d<k.length;d++){j=k[d];a=k[d-1];f=k[d+1];if(d===0){g="mceToolbarStart";if(j.Button){g+=" mceToolbarStartButton"}else{if(j.SplitButton){g+=" mceToolbarStartSplitButton"}else{if(j.ListBox){g+=" mceToolbarStartListBox"}}}e+=b.createHTML("td",{"class":g},b.createHTML("span",null,"<!-- IE -->"))}if(a&&j.ListBox){if(a.Button||a.SplitButton){e+=b.createHTML("td",{"class":"mceToolbarEnd"},b.createHTML("span",null,"<!-- IE -->"))}}if(b.stdMode){e+='<td style="position: relative">'+j.renderHTML()+"</td>"}else{e+="<td>"+j.renderHTML()+"</td>"}if(f&&j.ListBox){if(f.Button||f.SplitButton){e+=b.createHTML("td",{"class":"mceToolbarStart"},b.createHTML("span",null,"<!-- IE -->"))}}}g="mceToolbarEnd";if(j.Button){g+=" mceToolbarEndButton"}else{if(j.SplitButton){g+=" mceToolbarEndSplitButton"}else{if(j.ListBox){g+=" mceToolbarEndListBox"}}}e+=b.createHTML("td",{"class":g},b.createHTML("span",null,"<!-- IE -->"));return b.createHTML("table",{id:l.id,"class":"mceToolbar"+(m["class"]?" "+m["class"]:""),cellpadding:"0",cellspacing:"0",align:l.settings.align||""},"<tbody><tr>"+e+"</tr></tbody>")}});(function(b){var a=b.util.Dispatcher,c=b.each;b.create("tinymce.AddOnManager",{items:[],urls:{},lookup:{},onAdd:new a(this),get:function(d){return this.lookup[d]},requireLangPack:function(f){var d,e=b.EditorManager.settings;if(e&&e.language){d=this.urls[f]+"/langs/"+e.language+".js";if(!b.dom.Event.domLoaded&&!e.strict_mode){b.ScriptLoader.load(d)}else{b.ScriptLoader.add(d)}}},add:function(e,d){this.items.push(d);this.lookup[e]=d;this.onAdd.dispatch(this,e,d);return d},load:function(h,e,d,g){var f=this;if(f.urls[h]){return}if(e.indexOf("/")!=0&&e.indexOf("://")==-1){e=b.baseURL+"/"+e}f.urls[h]=e.substring(0,e.lastIndexOf("/"));b.ScriptLoader.add(e,d,g)}});b.PluginManager=new b.AddOnManager();b.ThemeManager=new b.AddOnManager()}(tinymce));(function(f){var g=f.each,h=f.extend,e=f.DOM,a=f.dom.Event,c=f.ThemeManager,b=f.PluginManager,d=f.explode;f.create("static tinymce.EditorManager",{editors:{},i18n:{},activeEditor:null,preInit:function(){var i=this,j=window.location;f.documentBaseURL=j.href.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(f.documentBaseURL)){f.documentBaseURL+="/"}f.baseURL=new f.util.URI(f.documentBaseURL).toAbsolute(f.baseURL);f.EditorManager.baseURI=new f.util.URI(f.baseURL);if(document.domain&&j.hostname!=document.domain){f.relaxedDomain=document.domain}i.onBeforeUnload=new f.util.Dispatcher(i);a.add(window,"beforeunload",function(k){i.onBeforeUnload.dispatch(i,k)})},init:function(q){var p=this,l,k=f.ScriptLoader,o,n,i=[],m;function j(u,v,r){var t=u[v];if(!t){return}if(f.is(t,"string")){r=t.replace(/\.\w+$/,"");r=r?f.resolve(r):0;t=f.resolve(t)}return t.apply(r||this,Array.prototype.slice.call(arguments,2))}q=h({theme:"simple",language:"en",strict_loading_mode:document.contentType=="application/xhtml+xml"},q);p.settings=q;if(!a.domLoaded&&!q.strict_loading_mode){if(q.language){k.add(f.baseURL+"/langs/"+q.language+".js")}if(q.theme&&q.theme.charAt(0)!="-"&&!c.urls[q.theme]){c.load(q.theme,"themes/"+q.theme+"/editor_template"+f.suffix+".js")}if(q.plugins){l=d(q.plugins);if(f.inArray(l,"compat2x")!=-1){b.load("compat2x","plugins/compat2x/editor_plugin"+f.suffix+".js")}g(l,function(r){if(r&&r.charAt(0)!="-"&&!b.urls[r]){if(!f.isWebKit&&r=="safari"){return}b.load(r,"plugins/"+r+"/editor_plugin"+f.suffix+".js")}})}k.loadQueue()}a.add(document,"init",function(){var r,t;j(q,"onpageload");if(q.browsers){r=false;g(d(q.browsers),function(u){switch(u){case"ie":case"msie":if(f.isIE){r=true}break;case"gecko":if(f.isGecko){r=true}break;case"safari":case"webkit":if(f.isWebKit){r=true}break;case"opera":if(f.isOpera){r=true}break}});if(!r){return}}switch(q.mode){case"exact":r=q.elements||"";if(r.length>0){g(d(r),function(u){if(e.get(u)){m=new f.Editor(u,q);i.push(m);m.render(1)}else{o=0;g(document.forms,function(v){g(v.elements,function(w){if(w.name===u){u="mce_editor_"+o;e.setAttrib(w,"id",u);m=new f.Editor(u,q);i.push(m);m.render(1)}})})}})}break;case"textareas":case"specific_textareas":function s(v,u){return u.constructor===RegExp?u.test(v.className):e.hasClass(v,u)}g(e.select("textarea"),function(u){if(q.editor_deselector&&s(u,q.editor_deselector)){return}if(!q.editor_selector||s(u,q.editor_selector)){n=e.get(u.name);if(!u.id&&!n){u.id=u.name}if(!u.id||p.get(u.id)){u.id=e.uniqueId()}m=new f.Editor(u.id,q);i.push(m);m.render(1)}});break}if(q.oninit){r=t=0;g(i,function(u){t++;if(!u.initialized){u.onInit.add(function(){r++;if(r==t){j(q,"oninit")}})}else{r++}if(r==t){j(q,"oninit")}})}})},get:function(i){return this.editors[i]},getInstanceById:function(i){return this.get(i)},add:function(i){this.editors[i.id]=i;this._setActive(i);return i},remove:function(j){var i=this;if(!i.editors[j.id]){return null}delete i.editors[j.id];if(i.activeEditor==j){g(i.editors,function(k){i._setActive(k);return false})}j.destroy();return j},execCommand:function(o,m,l){var n=this,k=n.get(l),i;switch(o){case"mceFocus":k.focus();return true;case"mceAddEditor":case"mceAddControl":if(!n.get(l)){new f.Editor(l,n.settings).render()}return true;case"mceAddFrameControl":i=l.window;i.tinyMCE=tinyMCE;i.tinymce=f;f.DOM.doc=i.document;f.DOM.win=i;k=new f.Editor(l.element_id,l);k.render();if(f.isIE){function j(){k.destroy();i.detachEvent("onunload",j);i=i.tinyMCE=i.tinymce=null}i.attachEvent("onunload",j)}l.page_window=null;return true;case"mceRemoveEditor":case"mceRemoveControl":if(k){k.remove()}return true;case"mceToggleEditor":if(!k){n.execCommand("mceAddControl",0,l);return true}if(k.isHidden()){k.show()}else{k.hide()}return true}if(n.activeEditor){return n.activeEditor.execCommand(o,m,l)}return false},execInstanceCommand:function(m,l,k,j){var i=this.get(m);if(i){return i.execCommand(l,k,j)}return false},triggerSave:function(){g(this.editors,function(i){i.save()})},addI18n:function(k,l){var i,j=this.i18n;if(!f.is(k,"string")){g(k,function(n,m){g(n,function(q,p){g(q,function(s,r){if(p==="common"){j[m+"."+r]=s}else{j[m+"."+p+"."+r]=s}})})})}else{g(l,function(n,m){j[k+"."+m]=n})}},_setActive:function(i){this.selectedInstance=this.activeEditor=i}});f.EditorManager.preInit()})(tinymce);var tinyMCE=window.tinyMCE=tinymce.EditorManager;(function(n){var o=n.DOM,k=n.dom.Event,f=n.extend,l=n.util.Dispatcher;var j=n.each,a=n.isGecko,b=n.isIE,e=n.isWebKit;var d=n.is,h=n.ThemeManager,c=n.PluginManager,i=n.EditorManager;var p=n.inArray,m=n.grep,g=n.explode;n.create("tinymce.Editor",{Editor:function(u,r){var q=this;q.id=q.editorId=u;q.execCommands={};q.queryStateCommands={};q.queryValueCommands={};q.plugins={};j(["onPreInit","onBeforeRenderUI","onPostRender","onInit","onRemove","onActivate","onDeactivate","onClick","onEvent","onMouseUp","onMouseDown","onDblClick","onKeyDown","onKeyUp","onKeyPress","onContextMenu","onSubmit","onReset","onPaste","onPreProcess","onPostProcess","onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent","onLoadContent","onSaveContent","onNodeChange","onChange","onBeforeExecCommand","onExecCommand","onUndo","onRedo","onVisualAid","onSetProgressState"],function(s){q[s]=new l(q)});q.settings=r=f({id:u,language:"en",docs_language:"en",theme:"simple",skin:"default",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:n.documentBaseURL,add_form_submit_trigger:1,submit_patch:1,add_unload_trigger:1,convert_urls:1,relative_urls:1,remove_script_host:1,table_inline_editing:0,object_resizing:1,cleanup:1,accessibility_focus:1,custom_shortcuts:1,custom_undo_redo_keyboard_shortcuts:1,custom_undo_redo_restore_selection:1,custom_undo_redo:1,doctype:'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">',visual_table_class:"mceItemTable",visual:1,inline_styles:true,convert_fonts_to_spans:true,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",apply_source_formatting:1,directionality:"ltr",forced_root_block:"p",valid_elements:"@[id|class|style|title|dir<ltr?rtl|lang|xml::lang|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],a[rel|rev|charset|hreflang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur],strong/b,em/i,strike,u,#p[align],-ol[type|compact],-ul[type|compact],-li,br,img[longdesc|usemap|src|border|alt=|title|hspace|vspace|width|height|align],-sub,-sup,-blockquote[cite],-table[border=0|cellspacing|cellpadding|width|frame|rules|height|align|summary|bgcolor|background|bordercolor],-tr[rowspan|width|height|align|valign|bgcolor|background|bordercolor],tbody,thead,tfoot,#td[colspan|rowspan|width|height|align|valign|bgcolor|background|bordercolor|scope],#th[colspan|rowspan|width|height|align|valign|scope],caption,-div,-span,-code,-pre,address,-h1,-h2,-h3,-h4,-h5,-h6,hr[size|noshade],-font[face|size|color],dd,dl,dt,cite,abbr,acronym,del[datetime|cite],ins[datetime|cite],object[classid|width|height|codebase|*],param[name|value],embed[type|width|height|src|*],script[src|type],map[name],area[shape|coords|href|alt|target],bdo,button,col[align|char|charoff|span|valign|width],colgroup[align|char|charoff|span|valign|width],dfn,fieldset,form[action|accept|accept-charset|enctype|method],input[accept|alt|checked|disabled|maxlength|name|readonly|size|src|type|value|tabindex|accesskey],kbd,label[for],legend,noscript,optgroup[label|disabled],option[disabled|label|selected|value],q[cite],samp,select[disabled|multiple|name|size],small,textarea[cols|rows|disabled|name|readonly],tt,var,big",hidden_input:1,padd_empty_editor:1,render_ui:1,init_theme:1,force_p_newlines:1,indentation:"30px",keep_styles:1,fix_table_elements:1,removeformat_selector:"span,b,strong,em,i,font,u,strike"},r);q.documentBaseURI=new n.util.URI(r.document_base_url||n.documentBaseURL,{base_uri:tinyMCE.baseURI});q.baseURI=i.baseURI;q.execCallback("setup",q)},render:function(u){var v=this,w=v.settings,x=v.id,q=n.ScriptLoader;if(!k.domLoaded){k.add(document,"init",function(){v.render()});return}if(!u){w.strict_loading_mode=1;tinyMCE.settings=w}if(!v.getElement()){return}if(w.strict_loading_mode){q.settings.strict_mode=w.strict_loading_mode;n.DOM.settings.strict=1}if(!/TEXTAREA|INPUT/i.test(v.getElement().nodeName)&&w.hidden_input&&o.getParent(x,"form")){o.insertAfter(o.create("input",{type:"hidden",name:x}),x)}if(n.WindowManager){v.windowManager=new n.WindowManager(v)}if(w.encoding=="xml"){v.onGetContent.add(function(s,t){if(t.save){t.content=o.encode(t.content)}})}if(w.add_form_submit_trigger){v.onSubmit.addToTop(function(){if(v.initialized){v.save();v.isNotDirty=1}})}if(w.add_unload_trigger){v._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(v.initialized&&!v.destroyed&&!v.isHidden()){v.save({format:"raw",no_events:true})}})}n.addUnload(v.destroy,v);if(w.submit_patch){v.onBeforeRenderUI.add(function(){var s=v.getElement().form;if(!s){return}if(s._mceOldSubmit){return}if(!s.submit.nodeType&&!s.submit.length){v.formElement=s;s._mceOldSubmit=s.submit;s.submit=function(){i.triggerSave();v.isNotDirty=1;return v.formElement._mceOldSubmit(v.formElement)}}s=null})}function r(){if(w.language){q.add(n.baseURL+"/langs/"+w.language+".js")}if(w.theme&&w.theme.charAt(0)!="-"&&!h.urls[w.theme]){h.load(w.theme,"themes/"+w.theme+"/editor_template"+n.suffix+".js")}j(g(w.plugins),function(s){if(s&&s.charAt(0)!="-"&&!c.urls[s]){if(!e&&s=="safari"){return}c.load(s,"plugins/"+s+"/editor_plugin"+n.suffix+".js")}});q.loadQueue(function(){if(!v.removed){v.init()}})}if(w.plugins.indexOf("compat2x")!=-1){c.load("compat2x","plugins/compat2x/editor_plugin"+n.suffix+".js");q.loadQueue(r)}else{r()}},init:function(){var v,F=this,G=F.settings,C,z,B=F.getElement(),r,q,D,y,A,E;i.add(F);if(G.theme){G.theme=G.theme.replace(/-/,"");r=h.get(G.theme);F.theme=new r();if(F.theme.init&&G.init_theme){F.theme.init(F,h.urls[G.theme]||n.documentBaseURL.replace(/\/$/,""))}}j(g(G.plugins.replace(/\-/g,"")),function(w){var H=c.get(w),t=c.urls[w]||n.documentBaseURL.replace(/\/$/,""),s;if(H){s=new H(F,t);F.plugins[w]=s;if(s.init){s.init(F,t)}}});if(G.popup_css!==false){if(G.popup_css){G.popup_css=F.documentBaseURI.toAbsolute(G.popup_css)}else{G.popup_css=F.baseURI.toAbsolute("themes/"+G.theme+"/skins/"+G.skin+"/dialog.css")}}if(G.popup_css_add){G.popup_css+=","+F.documentBaseURI.toAbsolute(G.popup_css_add)}F.controlManager=new n.ControlManager(F);F.undoManager=new n.UndoManager(F);F.undoManager.onAdd.add(function(t,s){if(!s.initial){return F.onChange.dispatch(F,s,t)}});F.undoManager.onUndo.add(function(t,s){return F.onUndo.dispatch(F,s,t)});F.undoManager.onRedo.add(function(t,s){return F.onRedo.dispatch(F,s,t)});if(G.custom_undo_redo){F.onExecCommand.add(function(t,w,u,H,s){if(w!="Undo"&&w!="Redo"&&w!="mceRepaint"&&(!s||!s.skip_undo)){F.undoManager.add()}})}F.onExecCommand.add(function(s,t){if(!/^(FontName|FontSize)$/.test(t)){F.nodeChanged()}});if(a){function x(s,t){if(!t||!t.initial){F.execCommand("mceRepaint")}}F.onUndo.add(x);F.onRedo.add(x);F.onSetContent.add(x)}F.onBeforeRenderUI.dispatch(F,F.controlManager);if(G.render_ui){C=G.width||B.style.width||B.offsetWidth;z=G.height||B.style.height||B.offsetHeight;F.orgDisplay=B.style.display;E=/^[0-9\.]+(|px)$/i;if(E.test(""+C)){C=Math.max(parseInt(C)+(r.deltaWidth||0),100)}if(E.test(""+z)){z=Math.max(parseInt(z)+(r.deltaHeight||0),100)}r=F.theme.renderUI({targetNode:B,width:C,height:z,deltaWidth:G.delta_width,deltaHeight:G.delta_height});F.editorContainer=r.editorContainer}o.setStyles(r.sizeContainer||r.editorContainer,{width:C,height:z});z=(r.iframeHeight||z)+(typeof(z)=="number"?(r.deltaHeight||0):"");if(z<100){z=100}F.iframeHTML=G.doctype+'<html><head xmlns="http://www.w3.org/1999/xhtml"><base href="'+F.documentBaseURI.getURI()+'" />';F.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';if(n.relaxedDomain){F.iframeHTML+='<script type="text/javascript">document.domain = "'+n.relaxedDomain+'";<\/script>'}y=G.body_id||"tinymce";if(y.indexOf("=")!=-1){y=F.getParam("body_id","","hash");y=y[F.id]||y}A=G.body_class||"";if(A.indexOf("=")!=-1){A=F.getParam("body_class","","hash");A=A[F.id]||""}F.iframeHTML+='</head><body id="'+y+'" class="mceContentBody '+A+'"></body></html>';if(n.relaxedDomain){if(b||(n.isOpera&&parseFloat(opera.version())>=9.5)){D='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+F.id+'");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()'}else{if(n.isOpera){D='javascript:(function(){document.open();document.domain="'+document.domain+'";document.close();ed.setupIframe();})()'}}}v=o.add(r.iframeContainer,"iframe",{id:F.id+"_ifr",src:D||'javascript:""',frameBorder:"0",style:{width:"100%",height:z}});F.contentAreaContainer=r.iframeContainer;o.get(r.editorContainer).style.display=F.orgDisplay;o.get(F.id).style.display="none";if(!b||!n.relaxedDomain){F.setupIframe()}B=v=r=null},setupIframe:function(){var z=this,A=z.settings,u=o.get(z.id),v=z.getDoc(),r,x;if(!b||!n.relaxedDomain){v.open();v.write(z.iframeHTML);v.close()}if(!b){try{if(!A.readonly){v.designMode="On"}}catch(w){}}if(b){x=z.getBody();o.hide(x);if(!A.readonly){x.contentEditable=true}o.show(x)}z.dom=new n.DOM.DOMUtils(z.getDoc(),{keep_values:true,url_converter:z.convertURL,url_converter_scope:z,hex_colors:A.force_hex_style_colors,class_filter:A.class_filter,update_styles:1,fix_ie_paragraphs:1});z.serializer=new n.dom.Serializer({entity_encoding:A.entity_encoding,entities:A.entities,valid_elements:A.verify_html===false?"*[*]":A.valid_elements,extended_valid_elements:A.extended_valid_elements,valid_child_elements:A.valid_child_elements,invalid_elements:A.invalid_elements,fix_table_elements:A.fix_table_elements,fix_list_elements:A.fix_list_elements,fix_content_duplication:A.fix_content_duplication,convert_fonts_to_spans:A.convert_fonts_to_spans,font_size_classes:A.font_size_classes,font_size_style_values:A.font_size_style_values,apply_source_formatting:A.apply_source_formatting,remove_linebreaks:A.remove_linebreaks,element_format:A.element_format,dom:z.dom});z.selection=new n.dom.Selection(z.dom,z.getWin(),z.serializer);z.forceBlocks=new n.ForceBlocks(z,{forced_root_block:A.forced_root_block});z.editorCommands=new n.EditorCommands(z);z.serializer.onPreProcess.add(function(s,t){return z.onPreProcess.dispatch(z,t,s)});z.serializer.onPostProcess.add(function(s,t){return z.onPostProcess.dispatch(z,t,s)});z.onPreInit.dispatch(z);if(!A.gecko_spellcheck){z.getBody().spellcheck=0}if(!A.readonly){z._addEvents()}z.controlManager.onPostRender.dispatch(z,z.controlManager);z.onPostRender.dispatch(z);if(A.directionality){z.getBody().dir=A.directionality}if(A.nowrap){z.getBody().style.whiteSpace="nowrap"}if(A.auto_resize){z.onNodeChange.add(z.resizeToContent,z)}if(A.custom_elements){function y(s,t){j(g(A.custom_elements),function(B){var C;if(B.indexOf("~")===0){B=B.substring(1);C="span"}else{C="div"}t.content=t.content.replace(new RegExp("<("+B+")([^>]*)>","g"),"<"+C+' mce_name="$1"$2>');t.content=t.content.replace(new RegExp("</("+B+")>","g"),"</"+C+">")})}z.onBeforeSetContent.add(y);z.onPostProcess.add(function(s,t){if(t.set){y(s,t)}})}if(A.handle_node_change_callback){z.onNodeChange.add(function(t,s,B){z.execCallback("handle_node_change_callback",z.id,B,-1,-1,true,z.selection.isCollapsed())})}if(A.save_callback){z.onSaveContent.add(function(s,B){var t=z.execCallback("save_callback",z.id,B.content,z.getBody());if(t){B.content=t}})}if(A.onchange_callback){z.onChange.add(function(t,s){z.execCallback("onchange_callback",z,s)})}if(A.convert_newlines_to_brs){z.onBeforeSetContent.add(function(s,t){if(t.initial){t.content=t.content.replace(/\r?\n/g,"<br />")}})}if(A.fix_nesting&&b){z.onBeforeSetContent.add(function(s,t){t.content=z._fixNesting(t.content)})}if(A.preformatted){z.onPostProcess.add(function(s,t){t.content=t.content.replace(/^\s*<pre.*?>/,"");t.content=t.content.replace(/<\/pre>\s*$/,"");if(t.set){t.content='<pre class="mceItemHidden">'+t.content+"</pre>"}})}if(A.verify_css_classes){z.serializer.attribValueFilter=function(D,B){var C,t;if(D=="class"){if(!z.classesRE){t=z.dom.getClasses();if(t.length>0){C="";j(t,function(s){C+=(C?"|":"")+s["class"]});z.classesRE=new RegExp("("+C+")","gi")}}return !z.classesRE||/(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(B)||z.classesRE.test(B)?B:""}return B}}if(A.convert_fonts_to_spans){z._convertFonts()}if(A.inline_styles){z._convertInlineElements()}if(A.cleanup_callback){z.onBeforeSetContent.add(function(s,t){t.content=z.execCallback("cleanup_callback","insert_to_editor",t.content,t)});z.onPreProcess.add(function(s,t){if(t.set){z.execCallback("cleanup_callback","insert_to_editor_dom",t.node,t)}if(t.get){z.execCallback("cleanup_callback","get_from_editor_dom",t.node,t)}});z.onPostProcess.add(function(s,t){if(t.set){t.content=z.execCallback("cleanup_callback","insert_to_editor",t.content,t)}if(t.get){t.content=z.execCallback("cleanup_callback","get_from_editor",t.content,t)}})}if(A.save_callback){z.onGetContent.add(function(s,t){if(t.save){t.content=z.execCallback("save_callback",z.id,t.content,z.getBody())}})}if(A.handle_event_callback){z.onEvent.add(function(s,t,B){if(z.execCallback("handle_event_callback",t,s,B)===false){k.cancel(t)}})}z.onSetContent.add(function(){z.addVisual(z.getBody())});if(A.padd_empty_editor){z.onPostProcess.add(function(s,t){t.content=t.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")})}if(a){function q(s,t){j(s.dom.select("a"),function(C){var B=C.parentNode;if(s.dom.isBlock(B)&&B.lastChild===C){s.dom.add(B,"br",{mce_bogus:1})}})}z.onExecCommand.add(function(s,t){if(t==="CreateLink"){q(s)}});z.onSetContent.add(z.selection.onSetContent.add(q));if(!A.readonly){try{v.designMode="Off";v.designMode="On"}catch(w){}}}setTimeout(function(){if(z.removed){return}z.load({initial:true,format:(A.cleanup_on_startup?"html":"raw")});z.startContent=z.getContent({format:"raw"});z.undoManager.add({initial:true});z.initialized=true;z.onInit.dispatch(z);z.execCallback("setupcontent_callback",z.id,z.getBody(),z.getDoc());z.execCallback("init_instance_callback",z);z.focus(true);z.nodeChanged({initial:1});if(A.content_css){n.each(g(A.content_css),function(s){z.dom.loadCSS(z.documentBaseURI.toAbsolute(s))})}if(A.auto_focus){setTimeout(function(){var s=i.get(A.auto_focus);s.selection.select(s.getBody(),1);s.selection.collapse(1);s.getWin().focus()},100)}},1);u=null},focus:function(r){var u,q=this,s=q.settings.content_editable;if(!r){if(!s&&(!b||q.selection.getNode().ownerDocument!=q.getDoc())){q.getWin().focus()}}if(i.activeEditor!=q){if((u=i.activeEditor)!=null){u.onDeactivate.dispatch(u,q)}q.onActivate.dispatch(q,u)}i._setActive(q)},execCallback:function(v){var q=this,u=q.settings[v],r;if(!u){return}if(q.callbackLookup&&(r=q.callbackLookup[v])){u=r.func;r=r.scope}if(d(u,"string")){r=u.replace(/\.\w+$/,"");r=r?n.resolve(r):0;u=n.resolve(u);q.callbackLookup=q.callbackLookup||{};q.callbackLookup[v]={func:u,scope:r}}return u.apply(r||q,Array.prototype.slice.call(arguments,1))},translate:function(q){var t=this.settings.language||"en",r=i.i18n;if(!q){return""}return r[t+"."+q]||q.replace(/{\#([^}]+)\}/g,function(u,s){return r[t+"."+s]||"{#"+s+"}"})},getLang:function(r,q){return i.i18n[(this.settings.language||"en")+"."+r]||(d(q)?q:"{#"+r+"}")},getParam:function(w,s,q){var t=n.trim,r=d(this.settings[w])?this.settings[w]:s,u;if(q==="hash"){u={};if(d(r,"string")){j(r.indexOf("=")>0?r.split(/[;,](?![^=;,]*(?:[;,]|$))/):r.split(","),function(x){x=x.split("=");if(x.length>1){u[t(x[0])]=t(x[1])}else{u[t(x[0])]=t(x)}})}else{u=r}return u}return r},nodeChanged:function(u){var q=this,r=q.selection,v=r.getNode()||q.getBody();if(q.initialized){q.onNodeChange.dispatch(q,u?u.controlManager||q.controlManager:q.controlManager,b&&v.ownerDocument!=q.getDoc()?q.getBody():v,r.isCollapsed(),u)}},addButton:function(u,r){var q=this;q.buttons=q.buttons||{};q.buttons[u]=r},addCommand:function(t,r,q){this.execCommands[t]={func:r,scope:q||this}},addQueryStateHandler:function(t,r,q){this.queryStateCommands[t]={func:r,scope:q||this}},addQueryValueHandler:function(t,r,q){this.queryValueCommands[t]={func:r,scope:q||this}},addShortcut:function(s,v,q,u){var r=this,w;if(!r.settings.custom_shortcuts){return false}r.shortcuts=r.shortcuts||{};if(d(q,"string")){w=q;q=function(){r.execCommand(w,false,null)}}if(d(q,"object")){w=q;q=function(){r.execCommand(w[0],w[1],w[2])}}j(g(s),function(t){var x={func:q,scope:u||this,desc:v,alt:false,ctrl:false,shift:false};j(g(t,"+"),function(y){switch(y){case"alt":case"ctrl":case"shift":x[y]=true;break;default:x.charCode=y.charCodeAt(0);x.keyCode=y.toUpperCase().charCodeAt(0)}});r.shortcuts[(x.ctrl?"ctrl":"")+","+(x.alt?"alt":"")+","+(x.shift?"shift":"")+","+x.keyCode]=x});return true},execCommand:function(x,w,z,q){var u=this,v=0,y,r;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(x)&&(!q||!q.skip_focus)){u.focus()}y={};u.onBeforeExecCommand.dispatch(u,x,w,z,y);if(y.terminate){return false}if(u.execCallback("execcommand_callback",u.id,u.selection.getNode(),x,w,z)){u.onExecCommand.dispatch(u,x,w,z,q);return true}if(y=u.execCommands[x]){r=y.func.call(y.scope,w,z);if(r!==true){u.onExecCommand.dispatch(u,x,w,z,q);return r}}j(u.plugins,function(s){if(s.execCommand&&s.execCommand(x,w,z)){u.onExecCommand.dispatch(u,x,w,z,q);v=1;return false}});if(v){return true}if(u.theme&&u.theme.execCommand&&u.theme.execCommand(x,w,z)){u.onExecCommand.dispatch(u,x,w,z,q);return true}if(n.GlobalCommands.execCommand(u,x,w,z)){u.onExecCommand.dispatch(u,x,w,z,q);return true}if(u.editorCommands.execCommand(x,w,z)){u.onExecCommand.dispatch(u,x,w,z,q);return true}u.getDoc().execCommand(x,w,z);u.onExecCommand.dispatch(u,x,w,z,q)},queryCommandState:function(w){var r=this,v,u;if(r._isHidden()){return}if(v=r.queryStateCommands[w]){u=v.func.call(v.scope);if(u!==true){return u}}v=r.editorCommands.queryCommandState(w);if(v!==-1){return v}try{return this.getDoc().queryCommandState(w)}catch(q){}},queryCommandValue:function(w){var r=this,v,u;if(r._isHidden()){return}if(v=r.queryValueCommands[w]){u=v.func.call(v.scope);if(u!==true){return u}}v=r.editorCommands.queryCommandValue(w);if(d(v)){return v}try{return this.getDoc().queryCommandValue(w)}catch(q){}},show:function(){var q=this;o.show(q.getContainer());o.hide(q.id);q.load()},hide:function(){var q=this,r=q.getDoc();if(b&&r){r.execCommand("SelectAll")}q.save();o.hide(q.getContainer());o.setStyle(q.id,"display",q.orgDisplay)},isHidden:function(){return !o.isHidden(this.id)},setProgressState:function(q,r,s){this.onSetProgressState.dispatch(this,q,r,s);return q},resizeToContent:function(){var q=this;o.setStyle(q.id+"_ifr","height",q.getBody().scrollHeight)},load:function(u){var q=this,s=q.getElement(),r;if(s){u=u||{};u.load=true;r=q.setContent(d(s.value)?s.value:s.innerHTML,u);u.element=s;if(!u.no_events){q.onLoadContent.dispatch(q,u)}u.element=s=null;return r}},save:function(v){var q=this,u=q.getElement(),r,s;if(!u||!q.initialized){return}v=v||{};v.save=true;if(!v.no_events){q.undoManager.typing=0;q.undoManager.add()}v.element=u;r=v.content=q.getContent(v);if(!v.no_events){q.onSaveContent.dispatch(q,v)}r=v.content;if(!/TEXTAREA|INPUT/i.test(u.nodeName)){u.innerHTML=r;if(s=o.getParent(q.id,"form")){j(s.elements,function(t){if(t.name==q.id){t.value=r;return false}})}}else{u.value=r}v.element=u=null;return r},setContent:function(r,s){var q=this;s=s||{};s.format=s.format||"html";s.set=true;s.content=r;if(!s.no_events){q.onBeforeSetContent.dispatch(q,s)}if(!n.isIE&&(r.length===0||/^\s+$/.test(r))){s.content=q.dom.setHTML(q.getBody(),'<br mce_bogus="1" />');s.format="raw"}s.content=q.dom.setHTML(q.getBody(),n.trim(s.content));if(s.format!="raw"&&q.settings.cleanup){s.getInner=true;s.content=q.dom.setHTML(q.getBody(),q.serializer.serialize(q.getBody(),s))}if(!s.no_events){q.onSetContent.dispatch(q,s)}return s.content},getContent:function(s){var q=this,r;s=s||{};s.format=s.format||"html";s.get=true;if(!s.no_events){q.onBeforeGetContent.dispatch(q,s)}if(s.format!="raw"&&q.settings.cleanup){s.getInner=true;r=q.serializer.serialize(q.getBody(),s)}else{r=q.getBody().innerHTML}r=r.replace(/^\s*|\s*$/g,"");s.content=r;if(!s.no_events){q.onGetContent.dispatch(q,s)}return s.content},isDirty:function(){var q=this;return n.trim(q.startContent)!=n.trim(q.getContent({format:"raw",no_events:1}))&&!q.isNotDirty},getContainer:function(){var q=this;if(!q.container){q.container=o.get(q.editorContainer||q.id+"_parent")}return q.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return o.get(this.settings.content_element||this.id)},getWin:function(){var q=this,r;if(!q.contentWindow){r=o.get(q.id+"_ifr");if(r){q.contentWindow=r.contentWindow}}return q.contentWindow},getDoc:function(){var r=this,q;if(!r.contentDocument){q=r.getWin();if(q){r.contentDocument=q.document}}return r.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(q,x,w){var r=this,v=r.settings;if(v.urlconverter_callback){return r.execCallback("urlconverter_callback",q,w,true,x)}if(!v.convert_urls||(w&&w.nodeName=="LINK")||q.indexOf("file:")===0){return q}if(v.relative_urls){return r.documentBaseURI.toRelative(q)}q=r.documentBaseURI.toAbsolute(q,v.remove_script_host);return q},addVisual:function(u){var q=this,r=q.settings;u=u||q.getBody();if(!d(q.hasVisual)){q.hasVisual=r.visual}j(q.dom.select("table,a",u),function(t){var s;switch(t.nodeName){case"TABLE":s=q.dom.getAttrib(t,"border");if(!s||s=="0"){if(q.hasVisual){q.dom.addClass(t,r.visual_table_class)}else{q.dom.removeClass(t,r.visual_table_class)}}return;case"A":s=q.dom.getAttrib(t,"name");if(s){if(q.hasVisual){q.dom.addClass(t,"mceItemAnchor")}else{q.dom.removeClass(t,"mceItemAnchor")}}return}});q.onVisualAid.dispatch(q,u,q.hasVisual)},remove:function(){var q=this,r=q.getContainer();q.removed=1;q.hide();q.execCallback("remove_instance_callback",q);q.onRemove.dispatch(q);q.onExecCommand.listeners=[];i.remove(q);o.remove(r)},destroy:function(r){var q=this;if(q.destroyed){return}if(!r){n.removeUnload(q.destroy);tinyMCE.onBeforeUnload.remove(q._beforeUnload);if(q.theme&&q.theme.destroy){q.theme.destroy()}q.controlManager.destroy();q.selection.destroy();q.dom.destroy();if(!q.settings.content_editable){k.clear(q.getWin());k.clear(q.getDoc())}k.clear(q.getBody());k.clear(q.formElement)}if(q.formElement){q.formElement.submit=q.formElement._mceOldSubmit;q.formElement._mceOldSubmit=null}q.contentAreaContainer=q.formElement=q.container=q.settings.content_element=q.bodyElement=q.contentDocument=q.contentWindow=null;if(q.selection){q.selection=q.selection.win=q.selection.dom=q.selection.dom.doc=null}q.destroyed=1},_addEvents:function(){var w=this,v,y=w.settings,x={mouseup:"onMouseUp",mousedown:"onMouseDown",click:"onClick",keyup:"onKeyUp",keydown:"onKeyDown",keypress:"onKeyPress",submit:"onSubmit",reset:"onReset",contextmenu:"onContextMenu",dblclick:"onDblClick",paste:"onPaste"};function u(t,A){var s=t.type;if(w.removed){return}if(w.onEvent.dispatch(w,t,A)!==false){w[x[t.fakeType||t.type]].dispatch(w,t,A)}}j(x,function(t,s){switch(s){case"contextmenu":if(n.isOpera){w.dom.bind(w.getBody(),"mousedown",function(A){if(A.ctrlKey){A.fakeType="contextmenu";u(A)}})}else{w.dom.bind(w.getBody(),s,u)}break;case"paste":w.dom.bind(w.getBody(),s,function(A){u(A)});break;case"submit":case"reset":w.dom.bind(w.getElement().form||o.getParent(w.id,"form"),s,u);break;default:w.dom.bind(y.content_editable?w.getBody():w.getDoc(),s,u)}});w.dom.bind(y.content_editable?w.getBody():(a?w.getDoc():w.getWin()),"focus",function(s){w.focus(true)});if(n.isGecko){w.dom.bind(w.getDoc(),"DOMNodeInserted",function(t){var s;t=t.target;if(t.nodeType===1&&t.nodeName==="IMG"&&(s=t.getAttribute("mce_src"))){t.src=w.documentBaseURI.toAbsolute(s)}})}if(a){function q(){var B=this,D=B.getDoc(),C=B.settings;if(a&&!C.readonly){if(B._isHidden()){try{if(!C.content_editable){D.designMode="On"}}catch(A){}}try{D.execCommand("styleWithCSS",0,false)}catch(A){if(!B._isHidden()){try{D.execCommand("useCSS",0,true)}catch(A){}}}if(!C.table_inline_editing){try{D.execCommand("enableInlineTableEditing",false,false)}catch(A){}}if(!C.object_resizing){try{D.execCommand("enableObjectResizing",false,false)}catch(A){}}}}w.onBeforeExecCommand.add(q);w.onMouseDown.add(q)}w.onMouseUp.add(w.nodeChanged);w.onClick.add(w.nodeChanged);w.onKeyUp.add(function(s,t){var A=t.keyCode;if((A>=33&&A<=36)||(A>=37&&A<=40)||A==13||A==45||A==46||A==8||(n.isMac&&(A==91||A==93))||t.ctrlKey){w.nodeChanged()}});w.onReset.add(function(){w.setContent(w.startContent,{format:"raw"})});if(y.custom_shortcuts){if(y.custom_undo_redo_keyboard_shortcuts){w.addShortcut("ctrl+z",w.getLang("undo_desc"),"Undo");w.addShortcut("ctrl+y",w.getLang("redo_desc"),"Redo")}if(a){w.addShortcut("ctrl+b",w.getLang("bold_desc"),"Bold");w.addShortcut("ctrl+i",w.getLang("italic_desc"),"Italic");w.addShortcut("ctrl+u",w.getLang("underline_desc"),"Underline")}for(v=1;v<=6;v++){w.addShortcut("ctrl+"+v,"",["FormatBlock",false,"<h"+v+">"])}w.addShortcut("ctrl+7","",["FormatBlock",false,"<p>"]);w.addShortcut("ctrl+8","",["FormatBlock",false,"<div>"]);w.addShortcut("ctrl+9","",["FormatBlock",false,"<address>"]);function z(t){var s=null;if(!t.altKey&&!t.ctrlKey&&!t.metaKey){return s}j(w.shortcuts,function(A){if(n.isMac&&A.ctrl!=t.metaKey){return}else{if(!n.isMac&&A.ctrl!=t.ctrlKey){return}}if(A.alt!=t.altKey){return}if(A.shift!=t.shiftKey){return}if(t.keyCode==A.keyCode||(t.charCode&&t.charCode==A.charCode)){s=A;return false}});return s}w.onKeyUp.add(function(s,t){var A=z(t);if(A){return k.cancel(t)}});w.onKeyPress.add(function(s,t){var A=z(t);if(A){return k.cancel(t)}});w.onKeyDown.add(function(s,t){var A=z(t);if(A){A.func.call(A.scope);return k.cancel(t)}})}if(n.isIE){w.dom.bind(w.getDoc(),"controlselect",function(A){var t=w.resizeInfo,s;A=A.target;if(A.nodeName!=="IMG"){return}if(t){w.dom.unbind(t.node,t.ev,t.cb)}if(!w.dom.hasClass(A,"mceItemNoResize")){ev="resizeend";s=w.dom.bind(A,ev,function(C){var B;C=C.target;if(B=w.dom.getStyle(C,"width")){w.dom.setAttrib(C,"width",B.replace(/[^0-9%]+/g,""));w.dom.setStyle(C,"width","")}if(B=w.dom.getStyle(C,"height")){w.dom.setAttrib(C,"height",B.replace(/[^0-9%]+/g,""));w.dom.setStyle(C,"height","")}})}else{ev="resizestart";s=w.dom.bind(A,"resizestart",k.cancel,k)}t=w.resizeInfo={node:A,ev:ev,cb:s}});w.onKeyDown.add(function(s,t){switch(t.keyCode){case 8:if(w.selection.getRng().item){w.selection.getRng().item(0).removeNode();return k.cancel(t)}}})}if(n.isOpera){w.onClick.add(function(s,t){k.prevent(t)})}if(y.custom_undo_redo){function r(){w.undoManager.typing=0;w.undoManager.add()}if(n.isIE){w.dom.bind(w.getWin(),"blur",function(s){var t;if(w.selection){t=w.selection.getNode();if(!w.removed&&t.ownerDocument&&t.ownerDocument!=w.getDoc()){r()}}})}else{w.dom.bind(w.getDoc(),"blur",function(){if(w.selection&&!w.removed){r()}})}w.onMouseDown.add(r);w.onKeyUp.add(function(s,t){if((t.keyCode>=33&&t.keyCode<=36)||(t.keyCode>=37&&t.keyCode<=40)||t.keyCode==13||t.keyCode==45||t.ctrlKey){w.undoManager.typing=0;w.undoManager.add()}});w.onKeyDown.add(function(s,t){if((t.keyCode>=33&&t.keyCode<=36)||(t.keyCode>=37&&t.keyCode<=40)||t.keyCode==13||t.keyCode==45){if(w.undoManager.typing){w.undoManager.add();w.undoManager.typing=0}return}if(!w.undoManager.typing){w.undoManager.add();w.undoManager.typing=1}})}},_convertInlineElements:function(){var z=this,B=z.settings,r=z.dom,y,w,u,A,q;function x(s,t){if(!B.inline_styles){return}if(t.get){j(z.dom.select("table,u,strike",t.node),function(v){switch(v.nodeName){case"TABLE":if(y=r.getAttrib(v,"height")){r.setStyle(v,"height",y);r.setAttrib(v,"height","")}break;case"U":case"STRIKE":v.style.textDecoration=v.nodeName=="U"?"underline":"line-through";r.setAttrib(v,"mce_style","");r.setAttrib(v,"mce_name","span");break}})}else{if(t.set){j(z.dom.select("table,span",t.node).reverse(),function(v){if(v.nodeName=="TABLE"){if(y=r.getStyle(v,"height")){r.setAttrib(v,"height",y.replace(/[^0-9%]+/g,""))}}else{if(v.style.textDecoration=="underline"){u="u"}else{if(v.style.textDecoration=="line-through"){u="strike"}else{u=""}}if(u){v.style.textDecoration="";r.setAttrib(v,"mce_style","");w=r.create(u,{style:r.getAttrib(v,"style")});r.replace(w,v,1)}}})}}}z.onPreProcess.add(x);if(!B.cleanup_on_startup){z.onSetContent.add(function(s,t){if(t.initial){x(z,{node:z.getBody(),set:1})}})}},_convertFonts:function(){var w=this,x=w.settings,z=w.dom,v,r,q,u;if(!x.inline_styles){return}v=[8,10,12,14,18,24,36];r=["xx-small","x-small","small","medium","large","x-large","xx-large"];if(q=x.font_size_style_values){q=g(q)}if(u=x.font_size_classes){u=g(u)}function y(B){var C,A,t,s;if(!x.inline_styles){return}t=w.dom.select("font",B);for(s=t.length-1;s>=0;s--){C=t[s];A=z.create("span",{style:z.getAttrib(C,"style"),"class":z.getAttrib(C,"class")});z.setStyles(A,{fontFamily:z.getAttrib(C,"face"),color:z.getAttrib(C,"color"),backgroundColor:C.style.backgroundColor});if(C.size){if(q){z.setStyle(A,"fontSize",q[parseInt(C.size)-1])}else{z.setAttrib(A,"class",u[parseInt(C.size)-1])}}z.setAttrib(A,"mce_style","");z.replace(A,C,1)}}w.onPreProcess.add(function(s,t){if(t.get){y(t.node)}});w.onSetContent.add(function(s,t){if(t.initial){y(t.node)}})},_isHidden:function(){var q;if(!a){return 0}q=this.selection.getSel();return(!q||!q.rangeCount||q.rangeCount==0)},_fixNesting:function(r){var t=[],q;r=r.replace(/<(\/)?([^\s>]+)[^>]*?>/g,function(u,s,w){var v;if(s==="/"){if(!t.length){return""}if(w!==t[t.length-1].tag){for(q=t.length-1;q>=0;q--){if(t[q].tag===w){t[q].close=1;break}}return""}else{t.pop();if(t.length&&t[t.length-1].close){u=u+"</"+t[t.length-1].tag+">";t.pop()}}}else{if(/^(br|hr|input|meta|img|link|param)$/i.test(w)){return u}if(/\/>$/.test(u)){return u}t.push({tag:w})}return u});for(q=t.length-1;q>=0;q--){r+="</"+t[q].tag+">"}return r}})})(tinymce);(function(d){var f=d.each,c=d.isIE,a=d.isGecko,b=d.isOpera,e=d.isWebKit;d.create("tinymce.EditorCommands",{EditorCommands:function(g){this.editor=g},execCommand:function(k,j,l){var h=this,g=h.editor,i;switch(k){case"mceResetDesignMode":case"mceBeginUndoLevel":return true;case"unlink":h.UnLink();return true;case"JustifyLeft":case"JustifyCenter":case"JustifyRight":case"JustifyFull":h.mceJustify(k,k.substring(7).toLowerCase());return true;default:i=this[k];if(i){i.call(this,j,l);return true}}return false},Indent:function(){var g=this.editor,l=g.dom,j=g.selection,k,h,i;h=g.settings.indentation;i=/[a-z%]+$/i.exec(h);h=parseInt(h);if(g.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){f(j.getSelectedBlocks(),function(m){l.setStyle(m,"paddingLeft",(parseInt(m.style.paddingLeft||0)+h)+i)});return}g.getDoc().execCommand("Indent",false,null);if(c){l.getParent(j.getNode(),function(m){if(m.nodeName=="BLOCKQUOTE"){m.dir=m.style.cssText=""}})}},Outdent:function(){var h=this.editor,m=h.dom,k=h.selection,l,g,i,j;i=h.settings.indentation;j=/[a-z%]+$/i.exec(i);i=parseInt(i);if(h.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){f(k.getSelectedBlocks(),function(n){g=Math.max(0,parseInt(n.style.paddingLeft||0)-i);m.setStyle(n,"paddingLeft",g?g+j:"")});return}h.getDoc().execCommand("Outdent",false,null)},mceSetContent:function(h,g){this.editor.setContent(g)},mceToggleVisualAid:function(){var g=this.editor;g.hasVisual=!g.hasVisual;g.addVisual()},mceReplaceContent:function(h,g){var i=this.editor.selection;i.setContent(g.replace(/\{\$selection\}/g,i.getContent({format:"text"})))},mceInsertLink:function(i,h){var g=this.editor,j=g.selection,k=g.dom.getParent(j.getNode(),"a");if(d.is(h,"string")){h={href:h}}function l(m){f(h,function(o,n){g.dom.setAttrib(m,n,o)})}if(!k){g.execCommand("CreateLink",false,"javascript:mctmp(0);");f(g.dom.select("a[href=javascript:mctmp(0);]"),function(m){l(m)})}else{if(h.href){l(k)}else{g.dom.remove(k,1)}}},UnLink:function(){var g=this.editor,h=g.selection;if(h.isCollapsed()){h.select(h.getNode())}g.getDoc().execCommand("unlink",false,null);h.collapse(0)},FontName:function(i,h){var j=this,g=j.editor,k=g.selection,l;if(!h){if(k.isCollapsed()){k.select(k.getNode())}}else{if(g.settings.convert_fonts_to_spans){j._applyInlineStyle("span",{style:{fontFamily:h}})}else{g.getDoc().execCommand("FontName",false,h)}}},FontSize:function(j,i){var h=this.editor,l=h.settings,k,g;if(l.convert_fonts_to_spans&&i>=1&&i<=7){g=d.explode(l.font_size_style_values);k=d.explode(l.font_size_classes);if(k){i=k[i-1]||i}else{i=g[i-1]||i}}if(i>=1&&i<=7){h.getDoc().execCommand("FontSize",false,i)}else{this._applyInlineStyle("span",{style:{fontSize:i}})}},queryCommandValue:function(h){var g=this["queryValue"+h];if(g){return g.call(this,h)}return false},queryCommandState:function(h){var g;switch(h){case"JustifyLeft":case"JustifyCenter":case"JustifyRight":case"JustifyFull":return this.queryStateJustify(h,h.substring(7).toLowerCase());default:if(g=this["queryState"+h]){return g.call(this,h)}}return -1},_queryState:function(h){try{return this.editor.getDoc().queryCommandState(h)}catch(g){}},_queryVal:function(h){try{return this.editor.getDoc().queryCommandValue(h)}catch(g){}},queryValueFontSize:function(){var h=this.editor,g=0,i;if(i=h.dom.getParent(h.selection.getNode(),"span")){g=i.style.fontSize}if(!g&&(b||e)){if(i=h.dom.getParent(h.selection.getNode(),"font")){g=i.size}return g}return g||this._queryVal("FontSize")},queryValueFontName:function(){var h=this.editor,g=0,i;if(i=h.dom.getParent(h.selection.getNode(),"font")){g=i.face}if(i=h.dom.getParent(h.selection.getNode(),"span")){g=i.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()}if(!g){g=this._queryVal("FontName")}return g},mceJustify:function(o,p){var k=this.editor,m=k.selection,g=m.getNode(),q=g.nodeName,h,j,i=k.dom,l;if(k.settings.inline_styles&&this.queryStateJustify(o,p)){l=1}h=i.getParent(g,k.dom.isBlock);if(q=="IMG"){if(p=="full"){return}if(l){if(p=="center"){i.setStyle(h||g.parentNode,"textAlign","")}i.setStyle(g,"float","");this.mceRepaint();return}if(p=="center"){if(h&&/^(TD|TH)$/.test(h.nodeName)){h=0}if(!h||h.childNodes.length>1){j=i.create("p");j.appendChild(g.cloneNode(false));if(h){i.insertAfter(j,h)}else{i.insertAfter(j,g)}i.remove(g);g=j.firstChild;h=j}i.setStyle(h,"textAlign",p);i.setStyle(g,"float","")}else{i.setStyle(g,"float",p);i.setStyle(h||g.parentNode,"textAlign","")}this.mceRepaint();return}if(k.settings.inline_styles&&k.settings.forced_root_block){if(l){p=""}f(m.getSelectedBlocks(i.getParent(m.getStart(),i.isBlock),i.getParent(m.getEnd(),i.isBlock)),function(n){i.setAttrib(n,"align","");i.setStyle(n,"textAlign",p=="full"?"justify":p)});return}else{if(!l){k.getDoc().execCommand(o,false,null)}}if(k.settings.inline_styles){if(l){i.getParent(k.selection.getNode(),function(r){if(r.style&&r.style.textAlign){i.setStyle(r,"textAlign","")}});return}f(i.select("*"),function(s){var r=s.align;if(r){if(r=="full"){r="justify"}i.setStyle(s,"textAlign",r);i.setAttrib(s,"align","")}})}},mceSetCSSClass:function(h,g){this.mceSetStyleInfo(0,{command:"setattrib",name:"class",value:g})},getSelectedElement:function(){var w=this,o=w.editor,n=o.dom,s=o.selection,h=s.getRng(),l,k,u,p,j,g,q,i,x,v;if(s.isCollapsed()||h.item){return s.getNode()}v=o.settings.merge_styles_invalid_parents;if(d.is(v,"string")){v=new RegExp(v,"i")}if(c){l=h.duplicate();l.collapse(true);u=l.parentElement();k=h.duplicate();k.collapse(false);p=k.parentElement();if(u!=p){l.move("character",1);u=l.parentElement()}if(u==p){l=h.duplicate();l.moveToElementText(u);if(l.compareEndPoints("StartToStart",h)==0&&l.compareEndPoints("EndToEnd",h)==0){return v&&v.test(u.nodeName)?null:u}}}else{function m(r){return n.getParent(r,"*")}u=h.startContainer;p=h.endContainer;j=h.startOffset;g=h.endOffset;if(!h.collapsed){if(u==p){if(j-g<2){if(u.hasChildNodes()){i=u.childNodes[j];return v&&v.test(i.nodeName)?null:i}}}}if(u.nodeType!=3||p.nodeType!=3){return null}if(j==0){i=m(u);if(i&&i.firstChild!=u){i=null}}if(j==u.nodeValue.length){q=u.nextSibling;if(q&&q.nodeType==1){i=u.nextSibling}}if(g==0){q=p.previousSibling;if(q&&q.nodeType==1){x=q}}if(g==p.nodeValue.length){x=m(p);if(x&&x.lastChild!=p){x=null}}if(i==x){return v&&i&&v.test(i.nodeName)?null:i}}return null},mceSetStyleInfo:function(n,m){var q=this,h=q.editor,j=h.getDoc(),g=h.dom,i,k,r=h.selection,p=m.wrapper||"span",k=r.getBookmark(),o;function l(t,s){if(t.nodeType==1){switch(m.command){case"setattrib":return g.setAttrib(t,m.name,m.value);case"setstyle":return g.setStyle(t,m.name,m.value);case"removeformat":return g.setAttrib(t,"class","")}}}o=h.settings.merge_styles_invalid_parents;if(d.is(o,"string")){o=new RegExp(o,"i")}if((i=q.getSelectedElement())&&!h.settings.force_span_wrappers){l(i,1)}else{j.execCommand("FontName",false,"__");f(g.select("span,font"),function(u){var s,t;if(g.getAttrib(u,"face")=="__"||u.style.fontFamily==="__"){s=g.create(p,{mce_new:"1"});l(s);f(u.childNodes,function(v){s.appendChild(v.cloneNode(true))});g.replace(s,u)}})}f(g.select(p).reverse(),function(t){var s=t.parentNode;if(!g.getAttrib(t,"mce_new")){s=g.getParent(t,"*[mce_new]");if(s){g.remove(t,1)}}});f(g.select(p).reverse(),function(t){var s=t.parentNode;if(!s||!g.getAttrib(t,"mce_new")){return}if(h.settings.force_span_wrappers&&s.nodeName!="SPAN"){return}if(s.nodeName==p.toUpperCase()&&s.childNodes.length==1){return g.remove(s,1)}if(t.nodeType==1&&(!o||!o.test(s.nodeName))&&s.childNodes.length==1){l(s);g.setAttrib(t,"class","")}});f(g.select(p).reverse(),function(s){if(g.getAttrib(s,"mce_new")||(g.getAttribs(s).length<=1&&s.className==="")){if(!g.getAttrib(s,"class")&&!g.getAttrib(s,"style")){return g.remove(s,1)}g.setAttrib(s,"mce_new","")}});r.moveToBookmark(k)},queryStateJustify:function(k,h){var g=this.editor,j=g.selection.getNode(),i=g.dom;if(j&&j.nodeName=="IMG"){if(i.getStyle(j,"float")==h){return 1}return j.parentNode.style.textAlign==h}j=i.getParent(g.selection.getStart(),function(l){return l.nodeType==1&&l.style.textAlign});if(h=="full"){h="justify"}if(g.settings.inline_styles){return(j&&j.style.textAlign==h)}return this._queryState(k)},ForeColor:function(i,h){var g=this.editor;if(g.settings.convert_fonts_to_spans){this._applyInlineStyle("span",{style:{color:h}});return}else{g.getDoc().execCommand("ForeColor",false,h)}},HiliteColor:function(i,k){var h=this,g=h.editor,j=g.getDoc();if(g.settings.convert_fonts_to_spans){this._applyInlineStyle("span",{style:{backgroundColor:k}});return}function l(n){if(!a){return}try{j.execCommand("styleWithCSS",0,n)}catch(m){j.execCommand("useCSS",0,!n)}}if(a||b){l(true);j.execCommand("hilitecolor",false,k);l(false)}else{j.execCommand("BackColor",false,k)}},FormatBlock:function(n,h){var o=this,l=o.editor,p=l.selection,j=l.dom,g,k,m;function i(q){return/^(P|DIV|H[1-6]|ADDRESS|BLOCKQUOTE|PRE)$/.test(q.nodeName)}g=j.getParent(p.getNode(),function(q){return i(q)});if(g){if((c&&i(g.parentNode))||g.nodeName=="DIV"){k=l.dom.create(h);f(j.getAttribs(g),function(q){j.setAttrib(k,q.nodeName,j.getAttrib(g,q.nodeName))});m=p.getBookmark();j.replace(k,g,1);p.moveToBookmark(m);l.nodeChanged();return}}h=l.settings.forced_root_block?(h||"<p>"):h;if(h.indexOf("<")==-1){h="<"+h+">"}if(d.isGecko){h=h.replace(/<(div|blockquote|code|dt|dd|dl|samp)>/gi,"$1")}l.getDoc().execCommand("FormatBlock",false,h)},mceCleanup:function(){var h=this.editor,i=h.selection,g=i.getBookmark();h.setContent(h.getContent());i.moveToBookmark(g)},mceRemoveNode:function(j,k){var h=this.editor,i=h.selection,g,l=k||i.getNode();if(l==h.getBody()){return}g=i.getBookmark();h.dom.remove(l,1);i.moveToBookmark(g);h.nodeChanged()},mceSelectNodeDepth:function(i,j){var g=this.editor,h=g.selection,k=0;g.dom.getParent(h.getNode(),function(l){if(l.nodeType==1&&k++==j){h.select(l);g.nodeChanged();return false}},g.getBody())},mceSelectNode:function(h,g){this.editor.selection.select(g)},mceInsertContent:function(g,h){this.editor.selection.setContent(h)},mceInsertRawHTML:function(h,i){var g=this.editor;g.selection.setContent("tiny_mce_marker");g.setContent(g.getContent().replace(/tiny_mce_marker/g,i))},mceRepaint:function(){var i,g,j=this.editor;if(d.isGecko){try{i=j.selection;g=i.getBookmark(true);if(i.getSel()){i.getSel().selectAllChildren(j.getBody())}i.collapse(true);i.moveToBookmark(g)}catch(h){}}},queryStateUnderline:function(){var g=this.editor,h=g.selection.getNode();if(h&&h.nodeName=="A"){return false}return this._queryState("Underline")},queryStateOutdent:function(){var g=this.editor,h;if(g.settings.inline_styles){if((h=g.dom.getParent(g.selection.getStart(),g.dom.isBlock))&&parseInt(h.style.paddingLeft)>0){return true}if((h=g.dom.getParent(g.selection.getEnd(),g.dom.isBlock))&&parseInt(h.style.paddingLeft)>0){return true}}return this.queryStateInsertUnorderedList()||this.queryStateInsertOrderedList()||(!g.settings.inline_styles&&!!g.dom.getParent(g.selection.getNode(),"BLOCKQUOTE"))},queryStateInsertUnorderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),"UL")},queryStateInsertOrderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),"OL")},queryStatemceBlockQuote:function(){return !!this.editor.dom.getParent(this.editor.selection.getStart(),function(g){return g.nodeName==="BLOCKQUOTE"})},_applyInlineStyle:function(o,j,m){var q=this,n=q.editor,l=n.dom,i,p={},k,r;o=o.toUpperCase();if(m&&m.check_classes&&j["class"]){m.check_classes.push(j["class"])}function h(){f(l.select(o).reverse(),function(t){var s=0;f(l.getAttribs(t),function(u){if(u.nodeName.substring(0,1)!="_"&&l.getAttrib(t,u.nodeName)!=""){s++}});if(s==0){l.remove(t,1)}})}function g(){var s;f(l.select("span,font"),function(t){if(t.style.fontFamily=="mceinline"||t.face=="mceinline"){if(!s){s=n.selection.getBookmark()}j._mce_new="1";l.replace(l.create(o,j),t,1)}});f(l.select(o+"[_mce_new]"),function(u){function t(v){if(v.nodeType==1){f(j.style,function(x,w){l.setStyle(v,w,"")});if(j["class"]&&v.className&&m){f(m.check_classes,function(w){if(l.hasClass(v,w)){l.removeClass(v,w)}})}}}f(l.select(o,u),t);if(u.parentNode&&u.parentNode.nodeType==1&&u.parentNode.childNodes.length==1){t(u.parentNode)}l.getParent(u.parentNode,function(v){if(v.nodeType==1){if(j.style){f(j.style,function(y,x){var w;if(!p[x]&&(w=l.getStyle(v,x))){if(w===y){l.setStyle(u,x,"")}p[x]=1}})}if(j["class"]&&v.className&&m){f(m.check_classes,function(w){if(l.hasClass(v,w)){l.removeClass(u,w)}})}}return false});u.removeAttribute("_mce_new")});h();n.selection.moveToBookmark(s);return !!s}n.focus();n.getDoc().execCommand("FontName",false,"mceinline");g();if(k=q._applyInlineStyle.keyhandler){n.onKeyUp.remove(k);n.onKeyPress.remove(k);n.onKeyDown.remove(k);n.onSetContent.remove(q._applyInlineStyle.chandler)}if(n.selection.isCollapsed()){if(!c){f(l.getParents(n.selection.getNode(),"span"),function(s){f(j.style,function(u,t){var w;if(w=l.getStyle(s,t)){if(w==u){l.setStyle(s,t,"");r=2;return false}r=1;return false}});if(r){return false}});if(r==2){i=n.selection.getBookmark();h();n.selection.moveToBookmark(i);window.setTimeout(function(){n.nodeChanged()},1);return}}q._pendingStyles=d.extend(q._pendingStyles||{},j.style);q._applyInlineStyle.chandler=n.onSetContent.add(function(){delete q._pendingStyles});q._applyInlineStyle.keyhandler=k=function(s){if(q._pendingStyles){j.style=q._pendingStyles;delete q._pendingStyles}if(g()){n.onKeyDown.remove(q._applyInlineStyle.keyhandler);n.onKeyPress.remove(q._applyInlineStyle.keyhandler)}if(s.type=="keyup"){n.onKeyUp.remove(q._applyInlineStyle.keyhandler)}};n.onKeyDown.add(k);n.onKeyPress.add(k);n.onKeyUp.add(k)}else{q._pendingStyles=0}}})})(tinymce);(function(a){a.create("tinymce.UndoManager",{index:0,data:null,typing:0,UndoManager:function(c){var d=this,b=a.util.Dispatcher;d.editor=c;d.data=[];d.onAdd=new b(this);d.onUndo=new b(this);d.onRedo=new b(this)},add:function(d){var g=this,f,e=g.editor,c,h=e.settings,j;d=d||{};d.content=d.content||e.getContent({format:"raw",no_events:1});d.content=d.content.replace(/^\s*|\s*$/g,"");j=g.data[g.index>0&&(g.index==0||g.index==g.data.length)?g.index-1:g.index];if(!d.initial&&j&&d.content==j.content){return null}if(h.custom_undo_redo_levels){if(g.data.length>h.custom_undo_redo_levels){for(f=0;f<g.data.length-1;f++){g.data[f]=g.data[f+1]}g.data.length--;g.index=g.data.length}}if(h.custom_undo_redo_restore_selection&&!d.initial){d.bookmark=c=d.bookmark||e.selection.getBookmark()}if(g.index<g.data.length){g.index++}if(g.data.length===0&&!d.initial){return null}g.data.length=g.index+1;g.data[g.index++]=d;if(d.initial){g.index=0}if(g.data.length==2&&g.data[0].initial){g.data[0].bookmark=c}g.onAdd.dispatch(g,d);e.isNotDirty=0;return d},undo:function(){var e=this,c=e.editor,b=b,d;if(e.typing){e.add();e.typing=0}if(e.index>0){if(e.index==e.data.length&&e.index>1){d=e.index;e.typing=0;if(!e.add()){e.index=d}--e.index}b=e.data[--e.index];c.setContent(b.content,{format:"raw"});c.selection.moveToBookmark(b.bookmark);e.onUndo.dispatch(e,b)}return b},redo:function(){var d=this,c=d.editor,b=null;if(d.index<d.data.length-1){b=d.data[++d.index];c.setContent(b.content,{format:"raw"});c.selection.moveToBookmark(b.bookmark);d.onRedo.dispatch(d,b)}return b},clear:function(){var b=this;b.data=[];b.index=0;b.typing=0;b.add({initial:true})},hasUndo:function(){return this.index!=0||this.typing},hasRedo:function(){return this.index<this.data.length-1}})})(tinymce);(function(e){var b,d,a,c,f,h;b=e.dom.Event;d=e.isIE;a=e.isGecko;c=e.isOpera;f=e.each;h=e.extend;function g(i){i=i.innerHTML;i=i.replace(/<(img|hr|table|input|select|textarea)[ \>]/gi,"-");i=i.replace(/<[^>]+>/g,"");return i.replace(/[ \t\r\n]+/g,"")==""}e.create("tinymce.ForceBlocks",{ForceBlocks:function(j){var k=this,l=j.settings,m;k.editor=j;k.dom=j.dom;m=(l.forced_root_block||"p").toLowerCase();l.element=m.toUpperCase();j.onPreInit.add(k.setup,k);k.reOpera=new RegExp("(\\u00a0|&#160;|&nbsp;)</"+m+">","gi");k.rePadd=new RegExp("<p( )([^>]+)><\\/p>|<p( )([^>]+)\\/>|<p( )([^>]+)>\\s+<\\/p>|<p><\\/p>|<p\\/>|<p>\\s+<\\/p>".replace(/p/g,m),"gi");k.reNbsp2BR1=new RegExp("<p( )([^>]+)>[\\s\\u00a0]+<\\/p>|<p>[\\s\\u00a0]+<\\/p>".replace(/p/g,m),"gi");k.reNbsp2BR2=new RegExp("<%p()([^>]+)>(&nbsp;|&#160;)<\\/%p>|<%p>(&nbsp;|&#160;)<\\/%p>".replace(/%p/g,m),"gi");k.reBR2Nbsp=new RegExp("<p( )([^>]+)>\\s*<br \\/>\\s*<\\/p>|<p>\\s*<br \\/>\\s*<\\/p>".replace(/p/g,m),"gi");function i(n,p){if(c){p.content=p.content.replace(k.reOpera,"</"+m+">")}p.content=p.content.replace(k.rePadd,"<"+m+"$1$2$3$4$5$6>\u00a0</"+m+">");if(!d&&!c&&p.set){p.content=p.content.replace(k.reNbsp2BR1,"<"+m+"$1$2><br /></"+m+">");p.content=p.content.replace(k.reNbsp2BR2,"<"+m+"$1$2><br /></"+m+">")}else{p.content=p.content.replace(k.reBR2Nbsp,"<"+m+"$1$2>\u00a0</"+m+">")}}j.onBeforeSetContent.add(i);j.onPostProcess.add(i);if(l.forced_root_block){j.onInit.add(k.forceRoots,k);j.onSetContent.add(k.forceRoots,k);j.onBeforeGetContent.add(k.forceRoots,k)}},setup:function(){var j=this,i=j.editor,k=i.settings;if(k.forced_root_block){i.onKeyUp.add(j.forceRoots,j);i.onPreProcess.add(j.forceRoots,j)}if(k.force_br_newlines){if(d){i.onKeyPress.add(function(m,p){var q,o=m.selection;if(p.keyCode==13&&o.getNode().nodeName!="LI"){o.setContent('<br id="__" /> ',{format:"raw"});q=m.dom.get("__");q.removeAttribute("id");o.select(q);o.collapse();return b.cancel(p)}})}return}if(!d&&k.force_p_newlines){i.onKeyPress.add(function(m,n){if(n.keyCode==13&&!n.shiftKey){if(!j.insertPara(n)){b.cancel(n)}}});if(a){i.onKeyDown.add(function(m,n){if((n.keyCode==8||n.keyCode==46)&&!n.shiftKey){j.backspaceDelete(n,n.keyCode==8)}})}}function l(n,m){var o=i.dom.create(m);f(n.attributes,function(p){if(p.specified&&p.nodeValue){o.setAttribute(p.nodeName.toLowerCase(),p.nodeValue)}});f(n.childNodes,function(p){o.appendChild(p.cloneNode(true))});n.parentNode.replaceChild(o,n);return o}i.onPreProcess.add(function(m,n){f(m.dom.select("p,h1,h2,h3,h4,h5,h6,div",n.node),function(o){if(g(o)){f(m.dom.select("span,em,strong,b,i",n.node),function(p){if(!p.hasChildNodes()){p.appendChild(m.getDoc().createTextNode("\u00a0"));return false}})}})});if(d){if(k.element!="P"){i.onKeyPress.add(function(m,n){j.lastElm=m.selection.getNode().nodeName});i.onKeyUp.add(function(o,q){var s,p=o.selection,r=p.getNode(),m=o.getBody();if(m.childNodes.length===1&&r.nodeName=="P"){r=l(r,k.element);p.select(r);p.collapse();o.nodeChanged()}else{if(q.keyCode==13&&!q.shiftKey&&j.lastElm!="P"){s=o.dom.getParent(r,"p");if(s){l(s,k.element);o.nodeChanged()}}}})}}},find:function(o,k,l){var j=this.editor,i=j.getDoc().createTreeWalker(o,4,null,false),m=-1;while(o=i.nextNode()){m++;if(k==0&&o==l){return m}if(k==1&&m==l){return o}}return -1},forceRoots:function(p,D){var u=this,p=u.editor,H=p.getBody(),E=p.getDoc(),K=p.selection,v=K.getSel(),w=K.getRng(),I=-2,o,B,j,k,F=-16777215;var G,l,J,A,x,m=H.childNodes,z,y,q;for(z=m.length-1;z>=0;z--){G=m[z];if(G.nodeType==3||(!u.dom.isBlock(G)&&G.nodeType!=8)){if(!l){if(G.nodeType!=3||/[^\s]/g.test(G.nodeValue)){if(I==-2&&w){if(!d){if(w.startContainer.nodeType==1&&(y=w.startContainer.childNodes[w.startOffset])&&y.nodeType==1){q=y.getAttribute("id");y.setAttribute("id","__mce")}else{if(p.dom.getParent(w.startContainer,function(i){return i===H})){B=w.startOffset;j=w.endOffset;I=u.find(H,0,w.startContainer);o=u.find(H,0,w.endContainer)}}}else{k=E.body.createTextRange();k.moveToElementText(H);k.collapse(1);J=k.move("character",F)*-1;k=w.duplicate();k.collapse(1);A=k.move("character",F)*-1;k=w.duplicate();k.collapse(0);x=(k.move("character",F)*-1)-A;I=A-J;o=x}}l=p.dom.create(p.settings.forced_root_block);l.appendChild(G.cloneNode(1));G.parentNode.replaceChild(l,G)}}else{if(l.hasChildNodes()){l.insertBefore(G,l.firstChild)}else{l.appendChild(G)}}}else{l=null}}if(I!=-2){if(!d){l=H.getElementsByTagName(p.settings.element)[0];w=E.createRange();if(I!=-1){w.setStart(u.find(H,1,I),B)}else{w.setStart(l,0)}if(o!=-1){w.setEnd(u.find(H,1,o),j)}else{w.setEnd(l,0)}if(v){v.removeAllRanges();v.addRange(w)}}else{try{w=v.createRange();w.moveToElementText(H);w.collapse(1);w.moveStart("character",I);w.moveEnd("character",o);w.select()}catch(C){}}}else{if(!d&&(y=p.dom.get("__mce"))){if(q){y.setAttribute("id",q)}else{y.removeAttribute("id")}w=E.createRange();w.setStartBefore(y);w.setEndBefore(y);K.setRng(w)}}},getParentBlock:function(j){var i=this.dom;return i.getParent(j,i.isBlock)},insertPara:function(M){var A=this,o=A.editor,I=o.dom,N=o.getDoc(),R=o.settings,B=o.selection.getSel(),C=B.getRangeAt(0),Q=N.body;var F,G,D,K,J,l,j,m,q,i,x,P,k,p,E,H=I.getViewPort(o.getWin()),w,z,v;F=N.createRange();F.setStart(B.anchorNode,B.anchorOffset);F.collapse(true);G=N.createRange();G.setStart(B.focusNode,B.focusOffset);G.collapse(true);D=F.compareBoundaryPoints(F.START_TO_END,G)<0;K=D?B.anchorNode:B.focusNode;J=D?B.anchorOffset:B.focusOffset;l=D?B.focusNode:B.anchorNode;j=D?B.focusOffset:B.anchorOffset;if(K===l&&/^(TD|TH)$/.test(K.nodeName)){if(K.firstChild.nodeName=="BR"){I.remove(K.firstChild)}if(K.childNodes.length==0){o.dom.add(K,R.element,null,"<br />");P=o.dom.add(K,R.element,null,"<br />")}else{E=K.innerHTML;K.innerHTML="";o.dom.add(K,R.element,null,E);P=o.dom.add(K,R.element,null,"<br />")}C=N.createRange();C.selectNodeContents(P);C.collapse(1);o.selection.setRng(C);return false}if(K==Q&&l==Q&&Q.firstChild&&o.dom.isBlock(Q.firstChild)){K=l=K.firstChild;J=j=0;F=N.createRange();F.setStart(K,0);G=N.createRange();G.setStart(l,0)}K=K.nodeName=="HTML"?N.body:K;K=K.nodeName=="BODY"?K.firstChild:K;l=l.nodeName=="HTML"?N.body:l;l=l.nodeName=="BODY"?l.firstChild:l;m=A.getParentBlock(K);q=A.getParentBlock(l);i=m?m.nodeName:R.element;if(A.dom.getParent(m,"ol,ul,pre")){return true}if(m&&(m.nodeName=="CAPTION"||/absolute|relative|fixed/gi.test(I.getStyle(m,"position",1)))){i=R.element;m=null}if(q&&(q.nodeName=="CAPTION"||/absolute|relative|fixed/gi.test(I.getStyle(m,"position",1)))){i=R.element;q=null}if(/(TD|TABLE|TH|CAPTION)/.test(i)||(m&&i=="DIV"&&/left|right/gi.test(I.getStyle(m,"float",1)))){i=R.element;m=q=null}x=(m&&m.nodeName==i)?m.cloneNode(0):o.dom.create(i);P=(q&&q.nodeName==i)?q.cloneNode(0):o.dom.create(i);P.removeAttribute("id");if(/^(H[1-6])$/.test(i)&&K.nodeValue&&J==K.nodeValue.length){P=o.dom.create(R.element)}E=k=K;do{if(E==Q||E.nodeType==9||A.dom.isBlock(E)||/(TD|TABLE|TH|CAPTION)/.test(E.nodeName)){break}k=E}while((E=E.previousSibling?E.previousSibling:E.parentNode));E=p=l;do{if(E==Q||E.nodeType==9||A.dom.isBlock(E)||/(TD|TABLE|TH|CAPTION)/.test(E.nodeName)){break}p=E}while((E=E.nextSibling?E.nextSibling:E.parentNode));if(k.nodeName==i){F.setStart(k,0)}else{F.setStartBefore(k)}F.setEnd(K,J);x.appendChild(F.cloneContents()||N.createTextNode(""));try{G.setEndAfter(p)}catch(L){}G.setStart(l,j);P.appendChild(G.cloneContents()||N.createTextNode(""));C=N.createRange();if(!k.previousSibling&&k.parentNode.nodeName==i){C.setStartBefore(k.parentNode)}else{if(F.startContainer.nodeName==i&&F.startOffset==0){C.setStartBefore(F.startContainer)}else{C.setStart(F.startContainer,F.startOffset)}}if(!p.nextSibling&&p.parentNode.nodeName==i){C.setEndAfter(p.parentNode)}else{C.setEnd(G.endContainer,G.endOffset)}C.deleteContents();if(c){o.getWin().scrollTo(0,H.y)}if(x.firstChild&&x.firstChild.nodeName==i){x.innerHTML=x.firstChild.innerHTML}if(P.firstChild&&P.firstChild.nodeName==i){P.innerHTML=P.firstChild.innerHTML}if(g(x)){x.innerHTML="<br />"}function O(y,s){var r=[],T,S,t;y.innerHTML="";if(R.keep_styles){S=s;do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(S.nodeName)){T=S.cloneNode(false);I.setAttrib(T,"id","");r.push(T)}}while(S=S.parentNode)}if(r.length>0){for(t=r.length-1,T=y;t>=0;t--){T=T.appendChild(r[t])}r[0].innerHTML=c?"&nbsp;":"<br />";return r[0]}else{y.innerHTML=c?"&nbsp;":"<br />"}}if(g(P)){v=O(P,l)}if(c&&parseFloat(opera.version())<9.5){C.insertNode(x);C.insertNode(P)}else{C.insertNode(P);C.insertNode(x)}P.normalize();x.normalize();function u(r){return N.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false).nextNode()||r}C=N.createRange();C.selectNodeContents(a?u(v||P):v||P);C.collapse(1);B.removeAllRanges();B.addRange(C);w=o.dom.getPos(P).y;z=P.clientHeight;if(w<H.y||w+z>H.y+H.h){o.getWin().scrollTo(0,w<H.y?w:w-H.h+25)}return false},backspaceDelete:function(l,u){var x=this,k=x.editor,p=k.getBody(),j,m=k.selection,i=m.getRng(),o=i.startContainer,j,q,s;if(o&&k.dom.isBlock(o)&&!/^(TD|TH)$/.test(o.nodeName)&&u){if(o.childNodes.length==0||(o.childNodes.length==1&&o.firstChild.nodeName=="BR")){j=o;while((j=j.previousSibling)&&!k.dom.isBlock(j)){}if(j){if(o!=p.firstChild){q=k.dom.doc.createTreeWalker(j,NodeFilter.SHOW_TEXT,null,false);while(s=q.nextNode()){j=s}i=k.getDoc().createRange();i.setStart(j,j.nodeValue?j.nodeValue.length:0);i.setEnd(j,j.nodeValue?j.nodeValue.length:0);m.setRng(i);k.dom.remove(o)}return b.cancel(l)}}}function v(n){var r;n=n.target;if(n&&n.parentNode&&n.nodeName=="BR"&&(j=x.getParentBlock(n))){r=n.previousSibling;b.remove(p,"DOMNodeInserted",v);if(r&&r.nodeType==3&&/\s+$/.test(r.nodeValue)){return}if(n.previousSibling||n.nextSibling){k.dom.remove(n)}}}b._add(p,"DOMNodeInserted",v);window.setTimeout(function(){b._remove(p,"DOMNodeInserted",v)},1)}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each,e=c.extend;c.create("tinymce.ControlManager",{ControlManager:function(f,j){var h=this,g;j=j||{};h.editor=f;h.controls={};h.onAdd=new c.util.Dispatcher(h);h.onPostRender=new c.util.Dispatcher(h);h.prefix=j.prefix||f.id+"_";h._cls={};h.onPostRender.add(function(){d(h.controls,function(i){i.postRender()})})},get:function(f){return this.controls[this.prefix+f]||this.controls[f]},setActive:function(h,f){var g=null;if(g=this.get(h)){g.setActive(f)}return g},setDisabled:function(h,f){var g=null;if(g=this.get(h)){g.setDisabled(f)}return g},add:function(g){var f=this;if(g){f.controls[g.id]=g;f.onAdd.dispatch(g,f)}return g},createControl:function(i){var h,g=this,f=g.editor;d(f.plugins,function(j){if(j.createControl){h=j.createControl(i,g);if(h){return false}}});switch(i){case"|":case"separator":return g.createSeparator()}if(!h&&f.buttons&&(h=f.buttons[i])){return g.createButton(i,h)}return g.add(h)},createDropMenu:function(f,n,h){var m=this,i=m.editor,j,g,k,l;n=e({"class":"mceDropDown",constrain:i.settings.constrain_menus},n);n["class"]=n["class"]+" "+i.getParam("skin")+"Skin";if(k=i.getParam("skin_variant")){n["class"]+=" "+i.getParam("skin")+"Skin"+k.substring(0,1).toUpperCase()+k.substring(1)}f=m.prefix+f;l=h||m._cls.dropmenu||c.ui.DropMenu;j=m.controls[f]=new l(f,n);j.onAddItem.add(function(r,q){var p=q.settings;p.title=i.getLang(p.title,p.title);if(!p.onclick){p.onclick=function(o){i.execCommand(p.cmd,p.ui||false,p.value)}}});i.onRemove.add(function(){j.destroy()});if(c.isIE){j.onShowMenu.add(function(){i.focus();g=i.selection.getBookmark(1)});j.onHideMenu.add(function(){if(g){i.selection.moveToBookmark(g);g=0}})}return m.add(j)},createListBox:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.scope=i.scope||g;if(!i.onselect){i.onselect=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}i=e({title:i.title,"class":"mce_"+m,scope:i.scope,control_manager:h},i);m=h.prefix+m;if(g.settings.use_native_selects){k=new c.ui.NativeListBox(m,i)}else{f=l||h._cls.listbox||c.ui.ListBox;k=new f(m,i)}h.controls[m]=k;if(c.isWebKit){k.onPostRender.add(function(p,o){a.add(o,"mousedown",function(){g.bookmark=g.selection.getBookmark("simple")});a.add(o,"focus",function(){g.selection.moveToBookmark(g.bookmark);g.bookmark=null})})}if(k.hideMenu){g.onMouseDown.add(k.hideMenu,k)}return h.add(k)},createButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.label=g.translate(i.label);i.scope=i.scope||g;if(!i.onclick&&!i.menu_button){i.onclick=function(){g.execCommand(i.cmd,i.ui||false,i.value)}}i=e({title:i.title,"class":"mce_"+m,unavailable_prefix:g.getLang("unavailable",""),scope:i.scope,control_manager:h},i);m=h.prefix+m;if(i.menu_button){f=l||h._cls.menubutton||c.ui.MenuButton;k=new f(m,i);g.onMouseDown.add(k.hideMenu,k)}else{f=h._cls.button||c.ui.Button;k=new f(m,i)}return h.add(k)},createMenuButton:function(h,f,g){f=f||{};f.menu_button=1;return this.createButton(h,f,g)},createSplitButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.scope=i.scope||g;if(!i.onclick){i.onclick=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}if(!i.onselect){i.onselect=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}i=e({title:i.title,"class":"mce_"+m,scope:i.scope,control_manager:h},i);m=h.prefix+m;f=l||h._cls.splitbutton||c.ui.SplitButton;k=h.add(new f(m,i));g.onMouseDown.add(k.hideMenu,k);return k},createColorSplitButton:function(f,n,h){var l=this,j=l.editor,i,k,m,g;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onclick){n.onclick=function(o){if(c.isIE){g=j.selection.getBookmark(1)}j.execCommand(n.cmd,n.ui||false,o||n.value)}}if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,menu_class:j.getParam("skin")+"Skin",scope:n.scope,more_colors_title:j.getLang("more_colors")},n);f=l.prefix+f;m=h||l._cls.colorsplitbutton||c.ui.ColorSplitButton;k=new m(f,n);j.onMouseDown.add(k.hideMenu,k);j.onRemove.add(function(){k.destroy()});if(c.isIE){k.onShowMenu.add(function(){j.focus();g=j.selection.getBookmark(1)});k.onHideMenu.add(function(){if(g){j.selection.moveToBookmark(g);g=0}})}return l.add(k)},createToolbar:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||g._cls.toolbar||c.ui.Toolbar;i=new f(k,h);if(g.get(k)){return null}return g.add(i)},createSeparator:function(g){var f=g||this._cls.separator||c.ui.Separator;return new f()},setControlType:function(g,f){return this._cls[g.toLowerCase()]=f},destroy:function(){d(this.controls,function(f){f.destroy()});this.controls=null}})})(tinymce);(function(d){var a=d.util.Dispatcher,e=d.each,c=d.isIE,b=d.isOpera;d.create("tinymce.WindowManager",{WindowManager:function(f){var g=this;g.editor=f;g.onOpen=new a(g);g.onClose=new a(g);g.params={};g.features={}},open:function(z,h){var v=this,k="",n,m,i=v.editor.settings.dialog_type=="modal",q,o,j,g=d.DOM.getViewPort(),r;z=z||{};h=h||{};o=b?g.w:screen.width;j=b?g.h:screen.height;z.name=z.name||"mc_"+new Date().getTime();z.width=parseInt(z.width||320);z.height=parseInt(z.height||240);z.resizable=true;z.left=z.left||parseInt(o/2)-(z.width/2);z.top=z.top||parseInt(j/2)-(z.height/2);h.inline=false;h.mce_width=z.width;h.mce_height=z.height;h.mce_auto_focus=z.auto_focus;if(i){if(c){z.center=true;z.help=false;z.dialogWidth=z.width+"px";z.dialogHeight=z.height+"px";z.scroll=z.scrollbars||false}}e(z,function(p,f){if(d.is(p,"boolean")){p=p?"yes":"no"}if(!/^(name|url)$/.test(f)){if(c&&i){k+=(k?";":"")+f+":"+p}else{k+=(k?",":"")+f+"="+p}}});v.features=z;v.params=h;v.onOpen.dispatch(v,z,h);r=z.url||z.file;r=d._addVer(r);try{if(c&&i){q=1;window.showModalDialog(r,window,k)}else{q=window.open(r,z.name,k)}}catch(l){}if(!q){alert(v.editor.getLang("popup_blocked"))}},close:function(f){f.close();this.onClose.dispatch(this)},createInstance:function(i,h,g,m,l,k){var j=d.resolve(i);return new j(h,g,m,l,k)},confirm:function(h,f,i,g){g=g||window;f.call(i||this,g.confirm(this._decode(this.editor.getLang(h,h))))},alert:function(h,f,j,g){var i=this;g=g||window;g.alert(i._decode(i.editor.getLang(h,h)));if(f){f.call(j||i)}},_decode:function(f){return d.DOM.decode(f).replace(/\\n/g,"\n")}})}(tinymce));(function(a){a.CommandManager=function(){var c={},b={},d={};function e(i,h,g,f){if(typeof(h)=="string"){h=[h]}a.each(h,function(j){i[j.toLowerCase()]={func:g,scope:f}})}a.extend(this,{add:function(h,g,f){e(c,h,g,f)},addQueryStateHandler:function(h,g,f){e(b,h,g,f)},addQueryValueHandler:function(h,g,f){e(d,h,g,f)},execCommand:function(g,j,i,h,f){if(j=c[j.toLowerCase()]){if(j.func.call(g||j.scope,i,h,f)!==false){return true}}},queryCommandValue:function(){if(cmd=d[cmd.toLowerCase()]){return cmd.func.call(scope||cmd.scope,ui,value,args)}},queryCommandState:function(){if(cmd=b[cmd.toLowerCase()]){return cmd.func.call(scope||cmd.scope,ui,value,args)}}})};a.GlobalCommands=new a.CommandManager()})(tinymce);(function(b){function a(i,d,h,m){var j,g,e,l,f;function k(p,o){do{if(p.parentNode==o){return p}p=p.parentNode}while(p)}function c(o){m(o);b.walk(o,m,"childNodes")}j=i.findCommonAncestor(d,h);e=k(d,j)||d;l=k(h,j)||h;for(g=d;g&&g!=e;g=g.parentNode){for(f=g.nextSibling;f;f=f.nextSibling){c(f)}}if(e!=l){for(g=e.nextSibling;g&&g!=l;g=g.nextSibling){c(g)}}else{c(e)}for(g=h;g&&g!=l;g=g.parentNode){for(f=g.previousSibling;f;f=f.previousSibling){c(f)}}}b.GlobalCommands.add("RemoveFormat",function(){var m=this,l=m.dom,u=m.selection,d=u.getRng(1),e=[],h,f,j,q,g,o,c,i;function k(s){var r;l.getParent(s,function(v){if(l.is(v,m.getParam("removeformat_selector"))){r=v}return l.isBlock(v)},m.getBody());return r}function p(r){if(l.is(r,m.getParam("removeformat_selector"))){e.push(r)}}function t(r){p(r);b.walk(r,p,"childNodes")}h=u.getBookmark();q=d.startContainer;o=d.endContainer;g=d.startOffset;c=d.endOffset;q=q.nodeType==1?q.childNodes[Math.min(g,q.childNodes.length-1)]:q;o=o.nodeType==1?o.childNodes[Math.min(g==c?c:c-1,o.childNodes.length-1)]:o;if(q==o){f=k(q);if(q.nodeType==3){if(f&&f.nodeType==1){i=q.splitText(g);i.splitText(c-g);l.split(f,i);u.moveToBookmark(h)}return}t(l.split(f,q)||q)}else{f=k(q);j=k(o);if(f){if(q.nodeType==3){if(g==q.nodeValue.length){q.nodeValue+="\uFEFF"}q=q.splitText(g)}}if(j){if(o.nodeType==3){o.splitText(c)}}if(f&&f==j){l.replace(l.create("span",{id:"__end"},o.cloneNode(true)),o)}if(f){f=l.split(f,q)}else{f=q}if(i=l.get("__end")){o=i;j=k(o)}if(j){j=l.split(j,o)}else{j=o}a(l,f,j,p);if(q.nodeValue=="\uFEFF"){q.nodeValue=""}t(o);t(q)}b.each(e,function(r){l.remove(r,1)});l.remove("__end",1);u.moveToBookmark(h)})})(tinymce);(function(a){a.GlobalCommands.add("mceBlockQuote",function(){var j=this,o=j.selection,f=j.dom,l,k,e,d,p,c,m,h,b;function g(i){return f.getParent(i,function(q){return q.nodeName==="BLOCKQUOTE"})}l=f.getParent(o.getStart(),f.isBlock);k=f.getParent(o.getEnd(),f.isBlock);if(p=g(l)){if(l!=k||l.childNodes.length>1||(l.childNodes.length==1&&l.firstChild.nodeName!="BR")){d=o.getBookmark()}if(g(k)){m=p.cloneNode(false);while(e=k.nextSibling){m.appendChild(e.parentNode.removeChild(e))}}if(m){f.insertAfter(m,p)}b=o.getSelectedBlocks(l,k);for(h=b.length-1;h>=0;h--){f.insertAfter(b[h],p)}if(/^\s*$/.test(p.innerHTML)){f.remove(p,1)}if(m&&/^\s*$/.test(m.innerHTML)){f.remove(m,1)}if(!d){if(!a.isIE){c=j.getDoc().createRange();c.setStart(l,0);c.setEnd(l,0);o.setRng(c)}else{o.select(l);o.collapse(0);if(f.getParent(o.getStart(),f.isBlock)!=l){c=o.getRng();c.move("character",-1);c.select()}}}else{j.selection.moveToBookmark(d)}return}if(a.isIE&&!l&&!k){j.getDoc().execCommand("Indent");e=g(o.getNode());e.style.margin=e.dir="";return}if(!l||!k){return}if(l!=k||l.childNodes.length>1||(l.childNodes.length==1&&l.firstChild.nodeName!="BR")){d=o.getBookmark()}a.each(o.getSelectedBlocks(g(o.getStart()),g(o.getEnd())),function(i){if(i.nodeName=="BLOCKQUOTE"&&!p){p=i;return}if(!p){p=f.create("blockquote");i.parentNode.insertBefore(p,i)}if(i.nodeName=="BLOCKQUOTE"&&p){e=i.firstChild;while(e){p.appendChild(e.cloneNode(true));e=e.nextSibling}f.remove(i);return}p.appendChild(f.remove(i))});if(!d){if(!a.isIE){c=j.getDoc().createRange();c.setStart(l,0);c.setEnd(l,0);o.setRng(c)}else{o.select(l);o.collapse(1)}}else{o.moveToBookmark(d)}})})(tinymce);(function(a){a.each(["Cut","Copy","Paste"],function(b){a.GlobalCommands.add(b,function(){var c=this,e=c.getDoc();try{e.execCommand(b,false,null);if(!e.queryCommandSupported(b)){throw"Error"}}catch(d){c.windowManager.alert(c.getLang("clipboard_no_support"))}})})})(tinymce);(function(a){a.GlobalCommands.add("InsertHorizontalRule",function(){if(a.isOpera){return this.getDoc().execCommand("InsertHorizontalRule",false,"")}this.selection.setContent("<hr />")})})(tinymce);(function(){var a=tinymce.GlobalCommands;a.add(["mceEndUndoLevel","mceAddUndoLevel"],function(){this.undoManager.add()});a.add("Undo",function(){var b=this;if(b.settings.custom_undo_redo){b.undoManager.undo();b.nodeChanged();return true}return false});a.add("Redo",function(){var b=this;if(b.settings.custom_undo_redo){b.undoManager.redo();b.nodeChanged();return true}return false})})();
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_popup.js 12/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_popup.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_popup.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_popup.js	2009-06-30 22:01:34.000000000 +0200
@@ -1,294 +1,5 @@
-// Some global instances, this will be filled later
-var tinyMCE = null, tinyMCELang = null;
 
-function TinyMCE_Popup() {
-};
+// Uncomment and change this document.domain value if you are loading the script cross subdomains
+// document.domain = 'moxiecode.com';
 
-TinyMCE_Popup.prototype = {
-	findWin : function(w) {
-		var c;
-
-		// Check parents
-		c = w;
-		while (c && (c = c.parent) != null) {
-			if (typeof(c.tinyMCE) != "undefined")
-				return c;
-		}
-
-		// Check openers
-		c = w;
-		while (c && (c = c.opener) != null) {
-			if (typeof(c.tinyMCE) != "undefined")
-				return c;
-		}
-
-		// Try top
-		if (typeof(top.tinyMCE) != "undefined")
-			return top;
-
-		return null;
-	},
-
-	init : function() {
-		var win = window.opener ? window.opener : window.dialogArguments, c;
-		var inst, re, title, divElm;
-
-		if (!win)
-			win = this.findWin(window);
-
-		if (!win) {
-			alert("tinyMCE object reference not found from popup.");
-			return;
-		}
-
-		window.opener = win;
-		this.windowOpener = win;
-		this.onLoadEval = "";
-
-		// Setup parent references
-		tinyMCE = win.tinyMCE;
-		tinyMCELang = win.tinyMCELang;
-
-		inst = tinyMCE.selectedInstance;
-		this.isWindow = tinyMCE.getWindowArg('mce_inside_iframe', false) == false;
-		this.storeSelection = (tinyMCE.isRealIE) && !this.isWindow && tinyMCE.getWindowArg('mce_store_selection', true);
-
-		if (this.isWindow)
-			window.focus();
-
-		// Store selection
-		if (this.storeSelection)
-			inst.selectionBookmark = inst.selection.getBookmark(true);
-
-		// Setup dir
-		if (tinyMCELang.lang_dir)
-			document.dir = tinyMCELang.lang_dir;
-
-		// Setup title
-		re = new RegExp('{|\\\$|}', 'g');
-		title = document.title.replace(re, "");
-		if (typeof(tinyMCELang[title]) != "undefined") {
-			divElm = document.createElement("div");
-			divElm.innerHTML = tinyMCELang[title];
-			document.title = divElm.innerHTML;
-
-			if (typeof(tinyMCE.setWindowTitle) != 'undefined')
-				tinyMCE.setWindowTitle(window, divElm.innerHTML);
-		}
-
-		// Output Popup CSS class
-		document.write('<link href="' + tinyMCE.getParam("popups_css") + '" rel="stylesheet" type="text/css">');
-
-		if (tinyMCE.getParam("popups_css_add")) {
-			c = tinyMCE.getParam("popups_css_add");
-
-			// Is relative
-			if (c.indexOf('://') == -1 && c.charAt(0) != '/')
-				c = tinyMCE.documentBasePath + "/" + c;
-
-			document.write('<link href="' + c + '" rel="stylesheet" type="text/css">');
-		}
-
-		tinyMCE.addEvent(window, "load", this.onLoad);
-	},
-
-	onLoad : function() {
-		var dir, i, elms, body = document.body;
-
-		if (tinyMCE.getWindowArg('mce_replacevariables', true))
-			body.innerHTML = tinyMCE.applyTemplate(body.innerHTML, tinyMCE.windowArgs);
-
-		dir = tinyMCE.selectedInstance.settings.directionality;
-		if (dir == "rtl" && document.forms && document.forms.length > 0) {
-			elms = document.forms[0].elements;
-			for (i=0; i<elms.length; i++) {
-				if ((elms[i].type == "text" || elms[i].type == "textarea") && elms[i].getAttribute("dir") != "ltr")
-					elms[i].dir = dir;
-			}
-		}
-
-		if (body.style.display == 'none')
-			body.style.display = 'block';
-
-		// Execute real onload (Opera fix)
-		if (tinyMCEPopup.onLoadEval !== '')
-			eval(tinyMCEPopup.onLoadEval);
-	},
-
-	executeOnLoad : function(str) {
-		if (tinyMCE.isOpera)
-			this.onLoadEval = str;
-		else
-			eval(str);
-	},
-
-	resizeToInnerSize : function() {
-		var i, doc, body, oldMargin, wrapper, iframe, nodes, dx, dy;
-
-		// Netscape 7.1 workaround
-		if (this.isWindow && tinyMCE.isNS71) {
-			window.resizeBy(0, 10);
-			return;
-		}
-
-		if (this.isWindow) {
-			doc = document;
-			body = doc.body;
-
-			if (body.style.display == 'none')
-				body.style.display = 'block';
-
-			// Remove margin
-			oldMargin = body.style.margin;
-			body.style.margin = '0';
-
-			// Create wrapper
-			wrapper = doc.createElement("div");
-			wrapper.id = 'mcBodyWrapper';
-			wrapper.style.display = 'none';
-			wrapper.style.margin = '0';
-
-			// Wrap body elements
-			nodes = doc.body.childNodes;
-			for (i=nodes.length-1; i>=0; i--) {
-				if (wrapper.hasChildNodes())
-					wrapper.insertBefore(nodes[i].cloneNode(true), wrapper.firstChild);
-				else
-					wrapper.appendChild(nodes[i].cloneNode(true));
-
-				nodes[i].parentNode.removeChild(nodes[i]);
-			}
-
-			// Add wrapper
-			doc.body.appendChild(wrapper);
-
-			// Create iframe
-			iframe = document.createElement("iframe");
-			iframe.id = "mcWinIframe";
-			iframe.src = document.location.href.toLowerCase().indexOf('https') == -1 ? "about:blank" : tinyMCE.settings.default_document;
-			iframe.width = "100%";
-			iframe.height = "100%";
-			iframe.style.margin = '0';
-
-			// Add iframe
-			doc.body.appendChild(iframe);
-
-			// Measure iframe
-			iframe = document.getElementById('mcWinIframe');
-			dx = tinyMCE.getWindowArg('mce_width') - iframe.clientWidth;
-			dy = tinyMCE.getWindowArg('mce_height') - iframe.clientHeight;
-
-			// Resize window
-			// tinyMCE.debug(tinyMCE.getWindowArg('mce_width') + "," + tinyMCE.getWindowArg('mce_height') + " - " + dx + "," + dy);
-			window.resizeBy(dx, dy);
-
-			// Hide iframe and show wrapper
-			body.style.margin = oldMargin;
-			iframe.style.display = 'none';
-			wrapper.style.display = 'block';
-		}
-	},
-
-	resizeToContent : function() {
-		var isMSIE = (navigator.appName == "Microsoft Internet Explorer");
-		var isOpera = (navigator.userAgent.indexOf("Opera") != -1);
-		var elm, width, height, x, y, dx, dy;
-
-		if (isOpera)
-			return;
-
-		if (isMSIE) {
-			try { window.resizeTo(10, 10); } catch (e) {}
-
-			elm = document.body;
-			width = elm.offsetWidth;
-			height = elm.offsetHeight;
-			dx = (elm.scrollWidth - width) + 4;
-			dy = elm.scrollHeight - height;
-
-			try { window.resizeBy(dx, dy); } catch (e) {}
-		} else {
-			window.scrollBy(1000, 1000);
-			if (window.scrollX > 0 || window.scrollY > 0) {
-				window.resizeBy(window.innerWidth * 2, window.innerHeight * 2);
-				window.sizeToContent();
-				window.scrollTo(0, 0);
-				x = parseInt(screen.width / 2.0) - (window.outerWidth / 2.0);
-				y = parseInt(screen.height / 2.0) - (window.outerHeight / 2.0);
-				window.moveTo(x, y);
-			}
-		}
-	},
-
-	getWindowArg : function(name, default_value) {
-		return tinyMCE.getWindowArg(name, default_value);
-	},
-
-	restoreSelection : function() {
-		var inst;
-
-		if (this.storeSelection) {
-			inst = tinyMCE.selectedInstance;
-
-			inst.getWin().focus();
-
-			if (inst.selectionBookmark)
-				inst.selection.moveToBookmark(inst.selectionBookmark);
-		}
-	},
-
-	execCommand : function(command, user_interface, value) {
-		var inst = tinyMCE.selectedInstance;
-
-		this.restoreSelection();
-		inst.execCommand(command, user_interface, value);
-
-		// Store selection
-		if (this.storeSelection)
-			inst.selectionBookmark = inst.selection.getBookmark(true);
-	},
-
-	close : function() {
-		tinyMCE.closeWindow(window);
-	},
-
-	pickColor : function(e, element_id) {
-		tinyMCE.selectedInstance.execCommand('mceColorPicker', true, {
-			element_id : element_id,
-			document : document,
-			window : window,
-			store_selection : false
-		});
-	},
-
-	openBrowser : function(element_id, type, option) {
-		var cb = tinyMCE.getParam(option, tinyMCE.getParam("file_browser_callback"));
-		var url = document.getElementById(element_id).value;
-
-		tinyMCE.setWindowArg("window", window);
-		tinyMCE.setWindowArg("document", document);
-
-		// Call to external callback
-		if (eval('typeof(tinyMCEPopup.windowOpener.' + cb + ')') == "undefined")
-			alert("Callback function: " + cb + " could not be found.");
-		else
-			eval("tinyMCEPopup.windowOpener." + cb + "(element_id, url, type, window);");
-	},
-
-	importClass : function(c) {
-		var n;
-
-		window[c] = function() {};
-
-		for (n in window.opener[c].prototype)
-			window[c].prototype[n] = window.opener[c].prototype[n];
-
-		window[c].constructor = window.opener[c].constructor;
-	}
-
-	};
-
-// Setup global instance
-var tinyMCEPopup = new TinyMCE_Popup();
-
-tinyMCEPopup.init();
+var tinymce=null,tinyMCEPopup,tinyMCE;tinyMCEPopup={init:function(){var b=this,a,c;a=b.getWin();tinymce=a.tinymce;tinyMCE=a.tinyMCE;b.editor=tinymce.EditorManager.activeEditor;b.params=b.editor.windowManager.params;b.features=b.editor.windowManager.features;b.dom=b.editor.windowManager.createInstance("tinymce.dom.DOMUtils",document);if(b.features.popup_css!==false){b.dom.loadCSS(b.features.popup_css||b.editor.settings.popup_css)}b.listeners=[];b.onInit={add:function(e,d){b.listeners.push({func:e,scope:d})}};b.isWindow=!b.getWindowArg("mce_inline");b.id=b.getWindowArg("mce_window_id");b.editor.windowManager.onOpen.dispatch(b.editor.windowManager,window)},getWin:function(){return window.dialogArguments||opener||parent||top},getWindowArg:function(c,b){var a=this.params[c];return tinymce.is(a)?a:b},getParam:function(b,a){return this.editor.getParam(b,a)},getLang:function(b,a){return this.editor.getLang(b,a)},execCommand:function(d,c,e,b){b=b||{};b.skip_focus=1;this.restoreSelection();return this.editor.execCommand(d,c,e,b)},resizeToInnerSize:function(){var e=this,g,a=document.body,c=e.dom.getViewPort(window),d,f;d=e.getWindowArg("mce_width")-c.w;f=e.getWindowArg("mce_height")-c.h;if(e.isWindow){window.resizeBy(d,f)}else{e.editor.windowManager.resizeBy(d,f,e.id)}},executeOnLoad:function(s){this.onInit.add(function(){eval(s)})},storeSelection:function(){this.editor.windowManager.bookmark=tinyMCEPopup.editor.selection.getBookmark("simple")},restoreSelection:function(){var a=tinyMCEPopup;if(!a.isWindow&&tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}},requireLangPack:function(){var b=this,a=b.getWindowArg("plugin_url")||b.getWindowArg("theme_url");if(a&&b.editor.settings.language&&b.features.translate_i18n!==false){a+="/langs/"+b.editor.settings.language+"_dlg.js";if(!tinymce.ScriptLoader.isDone(a)){document.write('<script type="text/javascript" src="'+tinymce._addVer(a)+'"><\/script>');tinymce.ScriptLoader.markDone(a)}}},pickColor:function(b,a){this.execCommand("mceColorPicker",true,{color:document.getElementById(a).value,func:function(e){document.getElementById(a).value=e;try{document.getElementById(a).onchange()}catch(d){}}})},openBrowser:function(a,c,b){tinyMCEPopup.restoreSelection();this.editor.execCallback("file_browser_callback",a,document.getElementById(a).value,c,window)},confirm:function(b,a,c){this.editor.windowManager.confirm(b,a,c,window)},alert:function(b,a,c){this.editor.windowManager.alert(b,a,c,window)},close:function(){var a=this;function b(){a.editor.windowManager.close(window);tinymce=tinyMCE=a.editor=a.params=a.dom=a.dom.doc=null}if(tinymce.isOpera){a.getWin().setTimeout(b,0)}else{b()}},_restoreSelection:function(){var a=window.event.srcElement;if(a.nodeName=="INPUT"&&(a.type=="submit"||a.type=="button")){tinyMCEPopup.restoreSelection()}},_onDOMLoaded:function(){var b=tinyMCEPopup,d=document.title,e,c,a;if(b.domLoaded){return}b.domLoaded=1;if(b.features.translate_i18n!==false){c=document.body.innerHTML;if(tinymce.isIE){c=c.replace(/ (value|title|alt)=([^"][^\s>]+)/gi,' $1="$2"')}document.dir=b.editor.getParam("directionality","");if((a=b.editor.translate(c))&&a!=c){document.body.innerHTML=a}if((a=b.editor.translate(d))&&a!=d){document.title=d=a}}document.body.style.display="";if(tinymce.isIE){document.attachEvent("onmouseup",tinyMCEPopup._restoreSelection);b.dom.add(b.dom.select("head")[0],"base",{target:"_self"})}b.restoreSelection();b.resizeToInnerSize();if(!b.isWindow){b.editor.windowManager.setTitle(window,d)}else{window.focus()}if(!tinymce.isIE&&!b.isWindow){tinymce.dom.Event._add(document,"focus",function(){b.editor.windowManager.focus(b.id)})}tinymce.each(b.dom.select("select"),function(f){f.onkeydown=tinyMCEPopup._accessHandler});tinymce.each(b.listeners,function(f){f.func.call(f.scope,b.editor)});if(b.getWindowArg("mce_auto_focus",true)){window.focus();tinymce.each(document.forms,function(g){tinymce.each(g.elements,function(f){if(b.dom.hasClass(f,"mceFocus")&&!f.disabled){f.focus();return false}})})}document.onkeyup=tinyMCEPopup._closeWinKeyHandler},_accessHandler:function(a){a=a||window.event;if(a.keyCode==13||a.keyCode==32){a=a.target||a.srcElement;if(a.onchange){a.onchange()}return tinymce.dom.Event.cancel(a)}},_closeWinKeyHandler:function(a){a=a||window.event;if(a.keyCode==27){tinyMCEPopup.close()}},_wait:function(){if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);tinyMCEPopup._onDOMLoaded()}});if(document.documentElement.doScroll&&window==window.top){(function(){if(tinyMCEPopup.domLoaded){return}try{document.documentElement.doScroll("left")}catch(a){setTimeout(arguments.callee,0);return}tinyMCEPopup._onDOMLoaded()})()}document.attachEvent("onload",tinyMCEPopup._onDOMLoaded)}else{if(document.addEventListener){window.addEventListener("DOMContentLoaded",tinyMCEPopup._onDOMLoaded,false);window.addEventListener("load",tinyMCEPopup._onDOMLoaded,false)}}}};tinyMCEPopup.init();tinyMCEPopup._wait();
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_src.js 12/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_src.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_src.js	2008-09-09 17:19:42.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_src.js	2009-06-30 22:01:34.000000000 +0200
@@ -1,7612 +1,13041 @@
-
-/* file:jscripts/tiny_mce/classes/TinyMCE_Engine.class.js */
-
-function TinyMCE_Engine() {
-	var ua;
-
-	this.majorVersion = "2";
-	this.minorVersion = "1.2";
-	this.releaseDate = "2007-08-21";
-
-	this.instances = [];
-	this.switchClassCache = [];
-	this.windowArgs = [];
-	this.loadedFiles = [];
-	this.pendingFiles = [];
-	this.loadingIndex = 0;
-	this.configs = [];
-	this.currentConfig = 0;
-	this.eventHandlers = [];
-	this.log = [];
-	this.undoLevels = [];
-	this.undoIndex = 0;
-	this.typingUndoIndex = -1;
-	this.settings = [];
-
-	// Browser check
-	ua = navigator.userAgent;
-	this.isMSIE = (navigator.appName == "Microsoft Internet Explorer");
-	this.isMSIE5 = this.isMSIE && (ua.indexOf('MSIE 5') != -1);
-	this.isMSIE5_0 = this.isMSIE && (ua.indexOf('MSIE 5.0') != -1);
-	this.isMSIE7 = this.isMSIE && (ua.indexOf('MSIE 7') != -1);
-	this.isGecko = ua.indexOf('Gecko') != -1; // Will also be true on Safari
-	this.isSafari = ua.indexOf('Safari') != -1;
-	this.isOpera = window['opera'] && opera.buildNumber ? true : false;
-	this.isMac = ua.indexOf('Mac') != -1;
-	this.isNS7 = ua.indexOf('Netscape/7') != -1;
-	this.isNS71 = ua.indexOf('Netscape/7.1') != -1;
-	this.dialogCounter = 0;
-	this.plugins = [];
-	this.themes = [];
-	this.menus = [];
-	this.loadedPlugins = [];
-	this.buttonMap = [];
-	this.isLoaded = false;
-
-	// Fake MSIE on Opera and if Opera fakes IE, Gecko or Safari cancel those
-	if (this.isOpera) {
-		this.isMSIE = true;
-		this.isGecko = false;
-		this.isSafari =  false;
-	}
-
-	this.isIE = this.isMSIE;
-	this.isRealIE = this.isMSIE && !this.isOpera;
-
-	// TinyMCE editor id instance counter
-	this.idCounter = 0;
-};
-
-TinyMCE_Engine.prototype = {
-	init : function(settings) {
-		var theme, nl, baseHREF = "", i, cssPath, entities, h, p, src, elements = [], head;
-
-		// IE 5.0x is no longer supported since 5.5, 6.0 and 7.0 now exists. We can't support old browsers forever, sorry.
-		if (this.isMSIE5_0)
-			return;
-
-		this.settings = settings;
-
-		// Check if valid browser has execcommand support
-		if (typeof(document.execCommand) == 'undefined')
-			return;
-
-		// Get script base path
-		if (!tinyMCE.baseURL) {
-			// Search through head
-			head = document.getElementsByTagName('head')[0];
-
-			if (head) {
-				for (i=0, nl = head.getElementsByTagName('script'); i<nl.length; i++)
-					elements.push(nl[i]);
-			}
-
-			// Search through rest of document
-			for (i=0, nl = document.getElementsByTagName('script'); i<nl.length; i++)
-				elements.push(nl[i]);
-
-			// If base element found, add that infront of baseURL
-			nl = document.getElementsByTagName('base');
-			for (i=0; i<nl.length; i++) {
-				if (nl[i].href)
-					baseHREF = nl[i].href;
-			}
-
-			for (i=0; i<elements.length; i++) {
-				if (elements[i].src && (elements[i].src.indexOf("tiny_mce.js") != -1 || elements[i].src.indexOf("tiny_mce_dev.js") != -1 || elements[i].src.indexOf("tiny_mce_src.js") != -1 || elements[i].src.indexOf("tiny_mce_gzip") != -1)) {
-					src = elements[i].src;
-
-					tinyMCE.srcMode = (src.indexOf('_src') != -1 || src.indexOf('_dev') != -1) ? '_src' : '';
-					tinyMCE.gzipMode = src.indexOf('_gzip') != -1;
-					src = src.substring(0, src.lastIndexOf('/'));
-
-					if (settings.exec_mode == "src" || settings.exec_mode == "normal")
-						tinyMCE.srcMode = settings.exec_mode == "src" ? '_src' : '';
-
-					// Force it absolute if page has a base href
-					if (baseHREF !== '' && src.indexOf('://') == -1)
-						tinyMCE.baseURL = baseHREF + src;
-					else
-						tinyMCE.baseURL = src;
-
-					break;
-				}
-			}
-		}
-
-		// Get document base path
-		this.documentBasePath = document.location.href;
-		if (this.documentBasePath.indexOf('?') != -1)
-			this.documentBasePath = this.documentBasePath.substring(0, this.documentBasePath.indexOf('?'));
-		this.documentURL = this.documentBasePath;
-		this.documentBasePath = this.documentBasePath.substring(0, this.documentBasePath.lastIndexOf('/'));
-
-		// If not HTTP absolute
-		if (tinyMCE.baseURL.indexOf('://') == -1 && tinyMCE.baseURL.charAt(0) != '/') {
-			// If site absolute
-			tinyMCE.baseURL = this.documentBasePath + "/" + tinyMCE.baseURL;
-		}
-
-		// Set default values on settings
-		this._def("mode", "none");
-		this._def("theme", "advanced");
-		this._def("plugins", "", true);
-		this._def("language", "en");
-		this._def("docs_language", this.settings.language);
-		this._def("elements", "");
-		this._def("textarea_trigger", "mce_editable");
-		this._def("editor_selector", "");
-		this._def("editor_deselector", "mceNoEditor");
-		this._def("valid_elements", "+a[id|style|rel|rev|charset|hreflang|dir|lang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],-strong/-b[class|style],-em/-i[class|style],-strike[class|style],-u[class|style],#p[id|style|dir|class|align],-ol[class|style],-ul[class|style],-li[class|style],br,img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border|alt=|title|hspace|vspace|width|height|align],-sub[style|class],-sup[style|class],-blockquote[dir|style],-table[border=0|cellspacing|cellpadding|width|height|class|align|summary|style|dir|id|lang|bgcolor|background|bordercolor],-tr[id|lang|dir|class|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor],tbody[id|class],thead[id|class],tfoot[id|class],#td[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor|scope],-th[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|scope],caption[id|lang|dir|class|style],-div[id|dir|class|align|style],-span[style|class|align],-pre[class|align|style],address[class|align|style],-h1[id|style|dir|class|align],-h2[id|style|dir|class|align],-h3[id|style|dir|class|align],-h4[id|style|dir|class|align],-h5[id|style|dir|class|align],-h6[id|style|dir|class|align],hr[class|style],-font[face|size|style|id|class|dir|color],dd[id|class|title|style|dir|lang],dl[id|class|title|style|dir|lang],dt[id|class|title|style|dir|lang],cite[title|id|class|style|dir|lang],abbr[title|id|class|style|dir|lang],acronym[title|id|class|style|dir|lang],del[title|id|class|style|dir|lang|datetime|cite],ins[title|id|class|style|dir|lang|datetime|cite]");
-		this._def("extended_valid_elements", "");
-		this._def("invalid_elements", "");
-		this._def("encoding", "");
-		this._def("urlconverter_callback", tinyMCE.getParam("urlconvertor_callback", "TinyMCE_Engine.prototype.convertURL"));
-		this._def("save_callback", "");
-		this._def("force_br_newlines", false);
-		this._def("force_p_newlines", true);
-		this._def("add_form_submit_trigger", true);
-		this._def("relative_urls", true);
-		this._def("remove_script_host", true);
-		this._def("focus_alert", true);
-		this._def("document_base_url", this.documentURL);
-		this._def("visual", true);
-		this._def("visual_table_class", "mceVisualAid");
-		this._def("setupcontent_callback", "");
-		this._def("fix_content_duplication", true);
-		this._def("custom_undo_redo", true);
-		this._def("custom_undo_redo_levels", -1);
-		this._def("custom_undo_redo_keyboard_shortcuts", true);
-		this._def("custom_undo_redo_restore_selection", true);
-		this._def("custom_undo_redo_global", false);
-		this._def("verify_html", true);
-		this._def("apply_source_formatting", false);
-		this._def("directionality", "ltr");
-		this._def("cleanup_on_startup", false);
-		this._def("inline_styles", false);
-		this._def("convert_newlines_to_brs", false);
-		this._def("auto_reset_designmode", true);
-		this._def("entities", "39,#39,160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,34,quot,38,amp,60,lt,62,gt,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro", true);
-		this._def("entity_encoding", "named");
-		this._def("cleanup_callback", "");
-		this._def("add_unload_trigger", true);
-		this._def("ask", false);
-		this._def("nowrap", false);
-		this._def("auto_resize", false);
-		this._def("auto_focus", false);
-		this._def("cleanup", true);
-		this._def("remove_linebreaks", true);
-		this._def("button_tile_map", false);
-		this._def("submit_patch", true);
-		this._def("browsers", "msie,safari,gecko,opera", true);
-		this._def("dialog_type", "window");
-		this._def("accessibility_warnings", true);
-		this._def("accessibility_focus", true);
-		this._def("merge_styles_invalid_parents", "");
-		this._def("force_hex_style_colors", true);
-		this._def("trim_span_elements", true);
-		this._def("convert_fonts_to_spans", false);
-		this._def("doctype", '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">');
-		this._def("font_size_classes", '');
-		this._def("font_size_style_values", 'xx-small,x-small,small,medium,large,x-large,xx-large', true);
-		this._def("event_elements", 'a,img', true);
-		this._def("convert_urls", true);
-		this._def("table_inline_editing", false);
-		this._def("object_resizing", true);
-		this._def("custom_shortcuts", true);
-		this._def("convert_on_click", false);
-		this._def("content_css", '');
-		this._def("fix_list_elements", true);
-		this._def("fix_table_elements", false);
-		this._def("strict_loading_mode", document.contentType == 'application/xhtml+xml');
-		this._def("hidden_tab_class", '');
-		this._def("display_tab_class", '');
-		this._def("gecko_spellcheck", false);
-		this._def("hide_selects_on_submit", true);
-		this._def("forced_root_block", false);
-		this._def("remove_trailing_nbsp", false);
-		this._def("save_on_tinymce_forms", false);
-
-		// Force strict loading mode to false on non Gecko browsers
-		if (this.isMSIE && !this.isOpera)
-			this.settings.strict_loading_mode = false;
-
-		// Browser check IE
-		if (this.isMSIE && this.settings.browsers.indexOf('msie') == -1)
-			return;
-
-		// Browser check Gecko
-		if (this.isGecko && this.settings.browsers.indexOf('gecko') == -1)
-			return;
-
-		// Browser check Safari
-		if (this.isSafari && this.settings.browsers.indexOf('safari') == -1)
-			return;
-
-		// Browser check Opera
-		if (this.isOpera && this.settings.browsers.indexOf('opera') == -1)
-			return;
-
-		// If not super absolute make it so
-		baseHREF = tinyMCE.settings.document_base_url;
-		h = document.location.href;
-		p = h.indexOf('://');
-		if (p > 0 && document.location.protocol != "file:") {
-			p = h.indexOf('/', p + 3);
-			h = h.substring(0, p);
-
-			if (baseHREF.indexOf('://') == -1)
-				baseHREF = h + baseHREF;
-
-			tinyMCE.settings.document_base_url = baseHREF;
-			tinyMCE.settings.document_base_prefix = h;
-		}
-
-		// Trim away query part
-		if (baseHREF.indexOf('?') != -1)
-			baseHREF = baseHREF.substring(0, baseHREF.indexOf('?'));
-
-		this.settings.base_href = baseHREF.substring(0, baseHREF.lastIndexOf('/')) + "/";
-
-		theme = this.settings.theme;
-		this.inlineStrict = 'A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment';
-		this.inlineTransitional = 'A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment';
-		this.blockElms = 'H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP';
-		this.blockRegExp = new RegExp("^(" + this.blockElms + ")$", "i");
-		this.posKeyCodes = [13,45,36,35,33,34,37,38,39,40];
-		this.uniqueURL = 'javascript:void(091039730);'; // Make unique URL non real URL
-		this.uniqueTag = '<div id="mceTMPElement" style="display: none">TMP</div>';
-		this.callbacks = ['onInit', 'getInfo', 'getEditorTemplate', 'setupContent', 'onChange', 'onPageLoad', 'handleNodeChange', 'initInstance', 'execCommand', 'getControlHTML', 'handleEvent', 'cleanup', 'removeInstance'];
-
-		// Theme url
-		this.settings.theme_href = tinyMCE.baseURL + "/themes/" + theme;
-
-		if (!tinyMCE.isIE || tinyMCE.isOpera)
-			this.settings.force_br_newlines = false;
-
-		if (tinyMCE.getParam("popups_css", false)) {
-			cssPath = tinyMCE.getParam("popups_css", "");
-
-			// Is relative
-			if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/')
-				this.settings.popups_css = this.documentBasePath + "/" + cssPath;
-			else
-				this.settings.popups_css = cssPath;
-		} else
-			this.settings.popups_css = tinyMCE.baseURL + "/themes/" + theme + "/css/editor_popup.css";
-
-		if (tinyMCE.getParam("editor_css", false)) {
-			cssPath = tinyMCE.getParam("editor_css", "");
-
-			// Is relative
-			if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/')
-				this.settings.editor_css = this.documentBasePath + "/" + cssPath;
-			else
-				this.settings.editor_css = cssPath;
-		} else {
-			if (this.settings.editor_css !== '')
-				this.settings.editor_css = tinyMCE.baseURL + "/themes/" + theme + "/css/editor_ui.css";
-		}
-
-		// Only do this once
-		if (this.configs.length == 0) {
-			if (typeof(TinyMCECompressed) == "undefined") {
-				tinyMCE.addEvent(window, "DOMContentLoaded", TinyMCE_Engine.prototype.onLoad);
-
-				if (tinyMCE.isRealIE) {
-					if (document.body)
-						tinyMCE.addEvent(document.body, "readystatechange", TinyMCE_Engine.prototype.onLoad);
-					else
-						tinyMCE.addEvent(document, "readystatechange", TinyMCE_Engine.prototype.onLoad);
-				}
-
-				tinyMCE.addEvent(window, "load", TinyMCE_Engine.prototype.onLoad);
-				tinyMCE._addUnloadEvents();
-			}
-		}
-
-		this.loadScript(tinyMCE.baseURL + '/themes/' + this.settings.theme + '/editor_template' + tinyMCE.srcMode + '.js');
-		this.loadScript(tinyMCE.baseURL + '/langs/' + this.settings.language +  '.js');
-		this.loadCSS(this.settings.editor_css);
-
-		// Add plugins
-		p = tinyMCE.getParam('plugins', '', true, ',');
-		if (p.length > 0) {
-			for (i=0; i<p.length; i++) {
-				if (p[i].charAt(0) != '-')
-					this.loadScript(tinyMCE.baseURL + '/plugins/' + p[i] + '/editor_plugin' + tinyMCE.srcMode + '.js');
-			}
-		}
-
-		// Setup entities
-		if (tinyMCE.getParam('entity_encoding') == 'named') {
-			settings.cleanup_entities = [];
-			entities = tinyMCE.getParam('entities', '', true, ',');
-			for (i=0; i<entities.length; i+=2)
-				settings.cleanup_entities['c' + entities[i]] = entities[i+1];
-		}
-
-		// Save away this config
-		settings.index = this.configs.length;
-		this.configs[this.configs.length] = settings;
-
-		// Start loading first one in chain
-		this.loadNextScript();
-
-		// Force flicker free CSS backgrounds in IE
-		if (this.isIE && !this.isOpera) {
-			try {
-				document.execCommand('BackgroundImageCache', false, true);
-			} catch (e) {
-				// Ignore
-			}
-		}
-
-		// Setup XML encoding regexps
-		this.xmlEncodeRe = new RegExp('[<>&"]', 'g');
-	},
-
-	_addUnloadEvents : function() {
-		var st = tinyMCE.settings.add_unload_trigger;
-
-		if (tinyMCE.isIE) {
-			if (st) {
-				tinyMCE.addEvent(window, "unload", TinyMCE_Engine.prototype.unloadHandler);
-				tinyMCE.addEvent(window.document, "beforeunload", TinyMCE_Engine.prototype.unloadHandler);
-			}
-		} else {
-			if (st)
-				tinyMCE.addEvent(window, "unload", function () {tinyMCE.triggerSave(true, true);});
-		}
-	},
-
-	_def : function(key, def_val, t) {
-		var v = tinyMCE.getParam(key, def_val);
-
-		v = t ? v.replace(/\s+/g, "") : v;
-
-		this.settings[key] = v;
-	},
-
-	hasPlugin : function(n) {
-		return typeof(this.plugins[n]) != "undefined" && this.plugins[n] != null;
-	},
-
-	addPlugin : function(n, p) {
-		var op = this.plugins[n];
-
-		// Use the previous plugin object base URL used when loading external plugins
-		p.baseURL = op ? op.baseURL : tinyMCE.baseURL + "/plugins/" + n;
-		this.plugins[n] = p;
-
-		this.loadNextScript();
-	},
-
-	setPluginBaseURL : function(n, u) {
-		var op = this.plugins[n];
-
-		if (op)
-			op.baseURL = u;
-		else
-			this.plugins[n] = {baseURL : u};
-	},
-
-	loadPlugin : function(n, u) {
-		u = u.indexOf('.js') != -1 ? u.substring(0, u.lastIndexOf('/')) : u;
-		u = u.charAt(u.length-1) == '/' ? u.substring(0, u.length-1) : u;
-		this.plugins[n] = {baseURL : u};
-		this.loadScript(u + "/editor_plugin" + (tinyMCE.srcMode ? '_src' : '') + ".js");
-	},
-
-	hasTheme : function(n) {
-		return typeof(this.themes[n]) != "undefined" && this.themes[n] != null;
-	},
-
-	addTheme : function(n, t) {
-		this.themes[n] = t;
-
-		this.loadNextScript();
-	},
-
-	addMenu : function(n, m) {
-		this.menus[n] = m;
-	},
-
-	hasMenu : function(n) {
-		return typeof(this.plugins[n]) != "undefined" && this.plugins[n] != null;
-	},
-
-	loadScript : function(url) {
-		var i;
-
-		for (i=0; i<this.loadedFiles.length; i++) {
-			if (this.loadedFiles[i] == url)
-				return;
-		}
-
-		if (tinyMCE.settings.strict_loading_mode)
-			this.pendingFiles[this.pendingFiles.length] = url;
-		else
-			document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></script>');
-
-		this.loadedFiles[this.loadedFiles.length] = url;
-	},
-
-	loadNextScript : function() {
-		var d = document, se;
-
-		if (!tinyMCE.settings.strict_loading_mode)
-			return;
-
-		if (this.loadingIndex < this.pendingFiles.length) {
-			se = d.createElementNS('http://www.w3.org/1999/xhtml', 'script');
-			se.setAttribute('language', 'javascript');
-			se.setAttribute('type', 'text/javascript');
-			se.setAttribute('src', this.pendingFiles[this.loadingIndex++]);
-
-			d.getElementsByTagName("head")[0].appendChild(se);
-		} else
-			this.loadingIndex = -1; // Done with loading
-	},
-
-	loadCSS : function(url) {
-		var ar = url.replace(/\s+/, '').split(',');
-		var lflen = 0, csslen = 0, skip = false;
-		var x = 0, i = 0, nl, le;
-
-		for (x = 0,csslen = ar.length; x<csslen; x++) {
-			if (ar[x] != null && ar[x] != 'null' && ar[x].length > 0) {
-				/* Make sure it doesn't exist. */
-				for (i=0, lflen=this.loadedFiles.length; i<lflen; i++) {
-					if (this.loadedFiles[i] == ar[x]) {
-						skip = true;
-						break;
-					}
-				}
-
-				if (!skip) {
-					if (tinyMCE.settings.strict_loading_mode) {
-						nl = document.getElementsByTagName("head");
-
-						le = document.createElement('link');
-						le.setAttribute('href', ar[x]);
-						le.setAttribute('rel', 'stylesheet');
-						le.setAttribute('type', 'text/css');
-
-						nl[0].appendChild(le);
-					} else
-						document.write('<link href="' + ar[x] + '" rel="stylesheet" type="text/css" />');
-
-					this.loadedFiles[this.loadedFiles.length] = ar[x];
-				}
-			}
-		}
-	},
-
-	importCSS : function(doc, css) {
-		var css_ary = css.replace(/\s+/, '').split(',');
-		var csslen, elm, headArr, x, css_file;
-
-		for (x = 0, csslen = css_ary.length; x<csslen; x++) {
-			css_file = css_ary[x];
-
-			if (css_file != null && css_file != 'null' && css_file.length > 0) {
-				// Is relative, make absolute
-				if (css_file.indexOf('://') == -1 && css_file.charAt(0) != '/')
-					css_file = this.documentBasePath + "/" + css_file;
-
-				if (typeof(doc.createStyleSheet) == "undefined") {
-					elm = doc.createElement("link");
-
-					elm.rel = "stylesheet";
-					elm.href = css_file;
-
-					if ((headArr = doc.getElementsByTagName("head")) != null && headArr.length > 0)
-						headArr[0].appendChild(elm);
-				} else
-					doc.createStyleSheet(css_file);
-			}
-		}
-	},
-
-	confirmAdd : function(e, settings) {
-		var elm = tinyMCE.isIE ? event.srcElement : e.target;
-		var elementId = elm.name ? elm.name : elm.id;
-
-		tinyMCE.settings = settings;
-
-		if (tinyMCE.settings.convert_on_click || (!elm.getAttribute('mce_noask') && confirm(tinyMCELang.lang_edit_confirm)))
-			tinyMCE.addMCEControl(elm, elementId);
-
-		elm.setAttribute('mce_noask', 'true');
-	},
-
-	updateContent : function(form_element_name) {
-		var formElement, n, inst, doc;
-
-		// Find MCE instance linked to given form element and copy it's value
-		formElement = document.getElementById(form_element_name);
-		for (n in tinyMCE.instances) {
-			inst = tinyMCE.instances[n];
-
-			if (!tinyMCE.isInstance(inst))
-				continue;
-
-			inst.switchSettings();
-
-			if (inst.formElement == formElement) {
-				doc = inst.getDoc();
-
-				tinyMCE._setHTML(doc, inst.formElement.value);
-
-				if (!tinyMCE.isIE)
-					doc.body.innerHTML = tinyMCE._cleanupHTML(inst, doc, this.settings, doc.body, inst.visualAid);
-			}
-		}
-	},
-
-	addMCEControl : function(replace_element, form_element_name, target_document) {
-		var id = "mce_editor_" + tinyMCE.idCounter++;
-		var inst = new TinyMCE_Control(tinyMCE.settings);
-
-		inst.editorId = id;
-		this.instances[id] = inst;
-
-		inst._onAdd(replace_element, form_element_name, target_document);
-	},
-
-	removeInstance : function(ti) {
-		var t = [], n, i;
-
-		// Remove from instances
-		for (n in tinyMCE.instances) {
-			i = tinyMCE.instances[n];
-
-			if (tinyMCE.isInstance(i) && ti != i)
-					t[n] = i;
-		}
-
-		tinyMCE.instances = t;
-
-		// Remove from global undo/redo
-		n = [];
-		t = tinyMCE.undoLevels;
-
-		for (i=0; i<t.length; i++) {
-			if (t[i] != ti)
-				n.push(t[i]);
-		}
-
-		tinyMCE.undoLevels = n;
-		tinyMCE.undoIndex = n.length;
-
-		// Dispatch remove instance call
-		tinyMCE.dispatchCallback(ti, 'remove_instance_callback', 'removeInstance', ti);
-
-		return ti;
-	},
-
-	removeMCEControl : function(editor_id) {
-		var inst = tinyMCE.getInstanceById(editor_id), h, re, ot, tn, n;
-
-		if (inst) {
-			inst.switchSettings();
-
-			editor_id = inst.editorId;
-			h = tinyMCE.getContent(editor_id);
-
-			this.removeInstance(inst);
-
-			tinyMCE.selectedElement = null;
-			tinyMCE.selectedInstance = null;
-
-			tinyMCE.selectedElement = null;
-			tinyMCE.selectedInstance = null;
-
-			// Try finding an instance
-			for (n in tinyMCE.instances) {
-				if (!tinyMCE.isInstance(tinyMCE.instances[n]))
-					continue;
-
-				tinyMCE.selectedInstance = tinyMCE.instances[n];
-				break;
-			}
-
-			// Remove element
-			re = document.getElementById(editor_id + "_parent");
-			ot = inst.oldTargetElement;
-			tn = ot.nodeName.toLowerCase();
-
-			if (tn == "textarea" || tn == "input") {
-				re.parentNode.removeChild(re);
-				ot.style.display = "inline";
-				ot.value = h;
-			} else {
-				ot.innerHTML = h;
-				ot.style.display = 'block';
-				re.parentNode.insertBefore(ot, re);
-				re.parentNode.removeChild(re);
-			}
-		}
-	},
-
-	triggerSave : function(skip_cleanup, skip_callback) {
-		var inst, n;
-
-		// Default to false
-		if (typeof(skip_cleanup) == "undefined")
-			skip_cleanup = false;
-
-		// Default to false
-		if (typeof(skip_callback) == "undefined")
-			skip_callback = false;
-
-		// Cleanup and set all form fields
-		for (n in tinyMCE.instances) {
-			inst = tinyMCE.instances[n];
-
-			if (!tinyMCE.isInstance(inst))
-				continue;
-
-			inst.triggerSave(skip_cleanup, skip_callback);
-		}
-	},
-
-	resetForm : function(form_index) {
-		var i, inst, n, formObj = document.forms[form_index];
-
-		for (n in tinyMCE.instances) {
-			inst = tinyMCE.instances[n];
-
-			if (!tinyMCE.isInstance(inst))
-				continue;
-
-			inst.switchSettings();
-
-			for (i=0; i<formObj.elements.length; i++) {
-				if (inst.formTargetElementId == formObj.elements[i].name)
-					inst.getBody().innerHTML = inst.startContent;
-			}
-		}
-	},
-
-	execInstanceCommand : function(editor_id, command, user_interface, value, focus) {
-		var inst = tinyMCE.getInstanceById(editor_id), r;
-
-		if (inst) {
-			r = inst.selection.getRng();
-
-			if (typeof(focus) == "undefined")
-				focus = true;
-
-			// IE bug lost focus on images in absolute divs Bug #1534575
-			if (focus && (!r || !r.item))
-				inst.contentWindow.focus();
-
-			// Reset design mode if lost
-			inst.autoResetDesignMode();
-
-			this.selectedElement = inst.getFocusElement();
-			inst.select();
-			tinyMCE.execCommand(command, user_interface, value);
-
-			// Cancel event so it doesn't call onbeforeonunlaod
-			if (tinyMCE.isIE && window.event != null)
-				tinyMCE.cancelEvent(window.event);
-		}
-	},
-
-	execCommand : function(command, user_interface, value) {
-		var inst = tinyMCE.selectedInstance, n, pe, te;
-
-		// Default input
-		user_interface = user_interface ? user_interface : false;
-		value = value ? value : null;
-
-		if (inst)
-			inst.switchSettings();
-
-		switch (command) {
-			case "Undo":
-				if (this.getParam('custom_undo_redo_global')) {
-					if (this.undoIndex > 0) {
-						tinyMCE.nextUndoRedoAction = 'Undo';
-						inst = this.undoLevels[--this.undoIndex];
-						inst.select();
-
-						if (!tinyMCE.nextUndoRedoInstanceId)
-							inst.execCommand('Undo');
-					}
-				} else
-					inst.execCommand('Undo');
-				return true;
-
-			case "Redo":
-				if (this.getParam('custom_undo_redo_global')) {
-					if (this.undoIndex <= this.undoLevels.length - 1) {
-						tinyMCE.nextUndoRedoAction = 'Redo';
-						inst = this.undoLevels[this.undoIndex++];
-						inst.select();
-
-						if (!tinyMCE.nextUndoRedoInstanceId)
-							inst.execCommand('Redo');
-					}
-				} else
-					inst.execCommand('Redo');
-
-				return true;
-
-			case 'mceFocus':
-				inst = tinyMCE.getInstanceById(value);
-
-				if (inst)
-					inst.getWin().focus();
-			return;
-
-			case "mceAddControl":
-			case "mceAddEditor":
-				tinyMCE.addMCEControl(tinyMCE._getElementById(value), value);
-				return;
-
-			case "mceAddFrameControl":
-				tinyMCE.addMCEControl(tinyMCE._getElementById(value.element, value.document), value.element, value.document);
-				return;
-
-			case "mceRemoveControl":
-			case "mceRemoveEditor":
-				tinyMCE.removeMCEControl(value);
-				return;
-
-			case "mceToggleEditor":
-				inst = tinyMCE.getInstanceById(value);
-
-				if (inst) {
-					pe = document.getElementById(inst.editorId + '_parent');
-					te = inst.oldTargetElement;
-
-					if (typeof(inst.enabled) == 'undefined')
-						inst.enabled = true;
-
-					inst.enabled = !inst.enabled;
-
-					if (!inst.enabled) {
-						pe.style.display = 'none';
-
-						if (te.nodeName == 'TEXTAREA' || te.nodeName == 'INPUT')
-							te.value = inst.getHTML();
-						else
-							te.innerHTML = inst.getHTML();
-
-						te.style.display = inst.oldTargetDisplay;
-						tinyMCE.dispatchCallback(inst, 'hide_instance_callback', 'hideInstance', inst);
-					} else {
-						pe.style.display = 'block';
-						te.style.display = 'none';
-
-						if (te.nodeName == 'TEXTAREA' || te.nodeName == 'INPUT')
-							inst.setHTML(te.value);
-						else
-							inst.setHTML(te.innerHTML);
-
-						inst.useCSS = false;
-						tinyMCE.dispatchCallback(inst, 'show_instance_callback', 'showInstance', inst);
-					}
-				} else
-					tinyMCE.addMCEControl(tinyMCE._getElementById(value), value);
-
-				return;
-
-			case "mceResetDesignMode":
-				// Resets the designmode state of the editors in Gecko
-				if (tinyMCE.isGecko) {
-					for (n in tinyMCE.instances) {
-						if (!tinyMCE.isInstance(tinyMCE.instances[n]))
-							continue;
-
-						try {
-							tinyMCE.instances[n].getDoc().designMode = "off";
-							tinyMCE.instances[n].getDoc().designMode = "on";
-							tinyMCE.instances[n].useCSS = false;
-						} catch (e) {
-							// Ignore any errors
-						}
-					}
-				}
-
-				return;
-		}
-
-		if (inst) {
-			inst.execCommand(command, user_interface, value);
-		} else if (tinyMCE.settings.focus_alert)
-			alert(tinyMCELang.lang_focus_alert);
-	},
-
-	_createIFrame : function(replace_element, doc, win) {
-		var iframe, id = replace_element.getAttribute("id");
-		var aw, ah;
-
-		if (typeof(doc) == "undefined")
-			doc = document;
-
-		if (typeof(win) == "undefined")
-			win = window;
-
-		iframe = doc.createElement("iframe");
-
-		aw = "" + tinyMCE.settings.area_width;
-		ah = "" + tinyMCE.settings.area_height;
-
-		if (aw.indexOf('%') == -1) {
-			aw = parseInt(aw);
-			aw = (isNaN(aw) || aw < 0) ? 300 : aw;
-			aw = aw + "px";
-		}
-
-		if (ah.indexOf('%') == -1) {
-			ah = parseInt(ah);
-			ah = (isNaN(ah) || ah < 0) ? 240 : ah;
-			ah = ah + "px";
-		}
-
-		iframe.setAttribute("id", id);
-		iframe.setAttribute("name", id);
-		iframe.setAttribute("class", "mceEditorIframe");
-		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", aw);
-		iframe.setAttribute("height", ah);
-		iframe.setAttribute("allowtransparency", "true");
-		iframe.className = 'mceEditorIframe';
-
-		if (tinyMCE.settings.auto_resize)
-			iframe.setAttribute("scrolling", "no");
-
-		// Must have a src element in MSIE HTTPs breaks aswell as absoute URLs
-		if (tinyMCE.isRealIE)
-			iframe.setAttribute("src", this.settings.default_document);
-
-		iframe.style.width = aw;
-		iframe.style.height = ah;
-
-		// Ugly hack for Gecko problem in strict mode
-		if (tinyMCE.settings.strict_loading_mode)
-			iframe.style.marginBottom = '-5px';
-
-		// MSIE 5.0 issue
-		if (tinyMCE.isRealIE)
-			replace_element.outerHTML = iframe.outerHTML;
-		else
-			replace_element.parentNode.replaceChild(iframe, replace_element);
-
-		if (tinyMCE.isRealIE)
-			return win.frames[id];
-		else
-			return iframe;
-	},
-
-	setupContent : function(editor_id) {
-		var inst = tinyMCE.instances[editor_id], i, doc = inst.getDoc(), head = doc.getElementsByTagName('head').item(0);
-		var content = inst.startContent, contentElement, body;
-
-		// HTML values get XML encoded in strict mode
-		if (tinyMCE.settings.strict_loading_mode) {
-			content = content.replace(/&lt;/g, '<');
-			content = content.replace(/&gt;/g, '>');
-			content = content.replace(/&quot;/g, '"');
-			content = content.replace(/&amp;/g, '&');
-		}
-
-		tinyMCE.selectedInstance = inst;
-		inst.switchSettings();
-
-		// Not loaded correctly hit it again, Mozilla bug #997860
-		if (!tinyMCE.isIE && tinyMCE.getParam("setupcontent_reload", false) && doc.title != "blank_page") {
-			// This part will remove the designMode status
-			// Failes first time in Firefox 1.5b2 on Mac
-			try {doc.location.href = tinyMCE.baseURL + "/blank.htm";} catch (ex) {}
-			window.setTimeout("tinyMCE.setupContent('" + editor_id + "');", 1000);
-			return;
-		}
-
-		// Wait for it to load
-		if (!head || !doc.body) {
-			window.setTimeout("tinyMCE.setupContent('" + editor_id + "');", 10);
-			return;
-		}
-
-		// Import theme specific content CSS the user specific
-		tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/themes/" + inst.settings.theme + "/css/editor_content.css");
-		tinyMCE.importCSS(inst.getDoc(), inst.settings.content_css);
-		tinyMCE.dispatchCallback(inst, 'init_instance_callback', 'initInstance', inst);
-
-		// Setup keyboard shortcuts
-		if (tinyMCE.getParam('custom_undo_redo_keyboard_shortcuts')) {
-			inst.addShortcut('ctrl', 'z', 'lang_undo_desc', 'Undo');
-			inst.addShortcut('ctrl', 'y', 'lang_redo_desc', 'Redo');
-		}
-
-		// BlockFormat shortcuts keys
-		for (i=1; i<=6; i++)
-			inst.addShortcut('ctrl', '' + i, '', 'FormatBlock', false, '<h' + i + '>');
-
-		inst.addShortcut('ctrl', '7', '', 'FormatBlock', false, '<p>');
-		inst.addShortcut('ctrl', '8', '', 'FormatBlock', false, '<div>');
-		inst.addShortcut('ctrl', '9', '', 'FormatBlock', false, '<address>');
-
-		// Add default shortcuts for gecko
-		if (tinyMCE.isGecko) {
-			inst.addShortcut('ctrl', 'b', 'lang_bold_desc', 'Bold');
-			inst.addShortcut('ctrl', 'i', 'lang_italic_desc', 'Italic');
-			inst.addShortcut('ctrl', 'u', 'lang_underline_desc', 'Underline');
-		}
-
-		// Setup span styles
-		if (tinyMCE.getParam("convert_fonts_to_spans"))
-			inst.getBody().setAttribute('id', 'mceSpanFonts');
-
-		if (tinyMCE.settings.nowrap)
-			doc.body.style.whiteSpace = "nowrap";
-
-		doc.body.dir = this.settings.directionality;
-		doc.editorId = editor_id;
-
-		// Add on document element in Mozilla
-		if (!tinyMCE.isIE)
-			doc.documentElement.editorId = editor_id;
-
-		inst.setBaseHREF(tinyMCE.settings.base_href);
-
-		// Replace new line characters to BRs
-		if (tinyMCE.settings.convert_newlines_to_brs) {
-			content = tinyMCE.regexpReplace(content, "\r\n", "<br />", "gi");
-			content = tinyMCE.regexpReplace(content, "\r", "<br />", "gi");
-			content = tinyMCE.regexpReplace(content, "\n", "<br />", "gi");
-		}
-
-		// Open closed anchors
-	//	content = content.replace(new RegExp('<a(.*?)/>', 'gi'), '<a$1></a>');
-
-		// Call custom cleanup code
-		content = tinyMCE.storeAwayURLs(content);
-		content = tinyMCE._customCleanup(inst, "insert_to_editor", content);
-
-		if (tinyMCE.isIE) {
-			// Ugly!!!
-			window.setInterval('try{tinyMCE.getCSSClasses(tinyMCE.instances["' + editor_id + '"].getDoc(), "' + editor_id + '");}catch(e){}', 500);
-
-			if (tinyMCE.settings.force_br_newlines)
-				doc.styleSheets[0].addRule("p", "margin: 0;");
-
-			body = inst.getBody();
-			body.editorId = editor_id;
-		}
-
-		content = tinyMCE.cleanupHTMLCode(content);
-
-		// Fix for bug #958637
-		if (!tinyMCE.isIE) {
-			contentElement = inst.getDoc().createElement("body");
-			doc = inst.getDoc();
-
-			contentElement.innerHTML = content;
-
-			if (tinyMCE.settings.cleanup_on_startup)
-				tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, doc, this.settings, contentElement));
-			else
-				tinyMCE.setInnerHTML(inst.getBody(), content);
-
-			tinyMCE.convertAllRelativeURLs(inst.getBody());
-		} else {
-			if (tinyMCE.settings.cleanup_on_startup) {
-				tinyMCE._setHTML(inst.getDoc(), content);
-
-				// Produces permission denied error in MSIE 5.5
-				try {
-					tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, inst.contentDocument, this.settings, inst.getBody()));
-				} catch(e) {
-					// Ignore
-				}
-			} else
-				tinyMCE._setHTML(inst.getDoc(), content);
-		}
-
-		// Fix for bug #957681
-		//inst.getDoc().designMode = inst.getDoc().designMode;
-
-		tinyMCE.handleVisualAid(inst.getBody(), true, tinyMCE.settings.visual, inst);
-		tinyMCE.dispatchCallback(inst, 'setupcontent_callback', 'setupContent', editor_id, inst.getBody(), inst.getDoc());
-
-		// Re-add design mode on mozilla
-		if (!tinyMCE.isIE)
-			tinyMCE.addEventHandlers(inst);
-
-		// Add blur handler
-		if (tinyMCE.isIE) {
-			tinyMCE.addEvent(inst.getBody(), "blur", TinyMCE_Engine.prototype._eventPatch);
-			tinyMCE.addEvent(inst.getBody(), "beforedeactivate", TinyMCE_Engine.prototype._eventPatch); // Bug #1439953
-
-			// Workaround for drag drop/copy paste base href bug
-			if (!tinyMCE.isOpera) {
-				tinyMCE.addEvent(doc.body, "mousemove", TinyMCE_Engine.prototype.onMouseMove);
-				tinyMCE.addEvent(doc.body, "beforepaste", TinyMCE_Engine.prototype._eventPatch);
-				tinyMCE.addEvent(doc.body, "drop", TinyMCE_Engine.prototype._eventPatch);
-			}
-		}
-
-		// Trigger node change, this call locks buttons for tables and so forth
-		inst.select();
-		tinyMCE.selectedElement = inst.contentWindow.document.body;
-
-		// Call custom DOM cleanup
-		tinyMCE._customCleanup(inst, "insert_to_editor_dom", inst.getBody());
-		tinyMCE._customCleanup(inst, "setup_content_dom", inst.getBody());
-		tinyMCE._setEventsEnabled(inst.getBody(), false);
-		tinyMCE.cleanupAnchors(inst.getDoc());
-
-		if (tinyMCE.getParam("convert_fonts_to_spans"))
-			tinyMCE.convertSpansToFonts(inst.getDoc());
-
-		inst.startContent = tinyMCE.trim(inst.getBody().innerHTML);
-		inst.undoRedo.add({ content : inst.startContent });
-
-		// Cleanup any mess left from storyAwayURLs
-		if (tinyMCE.isGecko) {
-			// Remove mce_src from textnodes and comments
-			tinyMCE.selectNodes(inst.getBody(), function(n) {
-				if (n.nodeType == 3 || n.nodeType == 8)
-					n.nodeValue = n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"', 'gi'), "");
-
-				return false;
-			});
-		}
-
-		// Remove Gecko spellchecking
-		if (tinyMCE.isGecko)
-			inst.getBody().spellcheck = tinyMCE.getParam("gecko_spellcheck");
-
-		// Cleanup any mess left from storyAwayURLs
-		tinyMCE._removeInternal(inst.getBody());
-
-		inst.select();
-		tinyMCE.triggerNodeChange(false, true);
-	},
-
-	storeAwayURLs : function(s) {
-		// Remove all mce_src, mce_href and replace them with new ones
-		// s = s.replace(new RegExp('mce_src\\s*=\\s*\"[^ >\"]*\"', 'gi'), '');
-		// s = s.replace(new RegExp('mce_href\\s*=\\s*\"[^ >\"]*\"', 'gi'), '');
-
-		if (!s.match(/(mce_src|mce_href)/gi, s)) {
-			s = s.replace(new RegExp('src\\s*=\\s*\"([^ >\"]*)\"', 'gi'), 'src="$1" mce_src="$1"');
-			s = s.replace(new RegExp('href\\s*=\\s*\"([^ >\"]*)\"', 'gi'), 'href="$1" mce_href="$1"');
-		}
-
-		return s;
-	},
-
-	_removeInternal : function(n) {
-		if (tinyMCE.isGecko) {
-			// Remove mce_src from textnodes and comments
-			tinyMCE.selectNodes(n, function(n) {
-				if (n.nodeType == 3 || n.nodeType == 8)
-					n.nodeValue = n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"', 'gi'), "");
-
-				return false;
-			});
-		}
-	},
-
-	removeTinyMCEFormElements : function(form_obj) {
-		var i, elementId;
-
-		// Skip form element removal
-		if (!tinyMCE.getParam('hide_selects_on_submit'))
-			return;
-
-		// Check if form is valid
-		if (typeof(form_obj) == "undefined" || form_obj == null)
-			return;
-
-		// If not a form, find the form
-		if (form_obj.nodeName != "FORM") {
-			if (form_obj.form)
-				form_obj = form_obj.form;
-			else
-				form_obj = tinyMCE.getParentElement(form_obj, "form");
-		}
-
-		// Still nothing
-		if (form_obj == null)
-			return;
-
-		// Disable all UI form elements that TinyMCE created
-		for (i=0; i<form_obj.elements.length; i++) {
-			elementId = form_obj.elements[i].name ? form_obj.elements[i].name : form_obj.elements[i].id;
-
-			if (elementId.indexOf('mce_editor_') == 0)
-				form_obj.elements[i].disabled = true;
-		}
-	},
-
-	handleEvent : function(e) {
-		var inst = tinyMCE.selectedInstance, i, elm, keys;
-
-		// Remove odd, error
-		if (typeof(tinyMCE) == "undefined")
-			return true;
-
-		//tinyMCE.debug(e.type + " " + e.target.nodeName + " " + (e.relatedTarget ? e.relatedTarget.nodeName : ""));
-
-		if (tinyMCE.executeCallback(tinyMCE.selectedInstance, 'handle_event_callback', 'handleEvent', e))
-			return false;
-
-		switch (e.type) {
-			case "beforedeactivate": // Was added due to bug #1439953
-			case "blur":
-				if (tinyMCE.selectedInstance)
-					tinyMCE.selectedInstance.execCommand('mceEndTyping');
-
-				tinyMCE.hideMenus();
-
-				return;
-
-			// Workaround for drag drop/copy paste base href bug
-			case "drop":
-			case "beforepaste":
-				if (tinyMCE.selectedInstance)
-					tinyMCE.selectedInstance.setBaseHREF(null);
-
-				// Fixes odd MSIE bug where drag/droping elements in a iframe with height 100% breaks
-				// This logic forces the width/height to be in pixels while the user is drag/dropping
-				if (tinyMCE.isRealIE) {
-					var ife = tinyMCE.selectedInstance.iframeElement;
-
-					/*if (ife.style.width.indexOf('%') != -1) {
-						ife._oldWidth = ife.width.height;
-						ife.style.width = ife.clientWidth;
-					}*/
-
-					if (ife.style.height.indexOf('%') != -1) {
-						ife._oldHeight = ife.style.height;
-						ife.style.height = ife.clientHeight;
-					}
-				}
-
-				window.setTimeout("tinyMCE.selectedInstance.setBaseHREF(tinyMCE.settings.base_href);tinyMCE._resetIframeHeight();", 1);
-				return;
-
-			case "submit":
-				tinyMCE.formSubmit(tinyMCE.isMSIE ? window.event.srcElement : e.target);
-				return;
-
-			case "reset":
-				var formObj = tinyMCE.isIE ? window.event.srcElement : e.target;
-
-				for (i=0; i<document.forms.length; i++) {
-					if (document.forms[i] == formObj)
-						window.setTimeout('tinyMCE.resetForm(' + i + ');', 10);
-				}
-
-				return;
-
-			case "keypress":
-				if (inst && inst.handleShortcut(e))
-					return false;
-
-				if (e.target.editorId) {
-					tinyMCE.instances[e.target.editorId].select();
-				} else {
-					if (e.target.ownerDocument.editorId)
-						tinyMCE.instances[e.target.ownerDocument.editorId].select();
-				}
-
-				if (tinyMCE.selectedInstance)
-					tinyMCE.selectedInstance.switchSettings();
-
-				// Insert P element
-				if ((tinyMCE.isGecko || tinyMCE.isOpera || tinyMCE.isSafari) && tinyMCE.settings.force_p_newlines && e.keyCode == 13 && !e.shiftKey) {
-					// Insert P element instead of BR
-					if (TinyMCE_ForceParagraphs._insertPara(tinyMCE.selectedInstance, e)) {
-						// Cancel event
-						tinyMCE.execCommand("mceAddUndoLevel");
-						return tinyMCE.cancelEvent(e);
-					}
-				}
-
-				// Handle backspace
-				if ((tinyMCE.isGecko && !tinyMCE.isSafari) && tinyMCE.settings.force_p_newlines && (e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) {
-					// Insert P element instead of BR
-					if (TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance, e.type)) {
-						// Cancel event
-						tinyMCE.execCommand("mceAddUndoLevel");
-						return tinyMCE.cancelEvent(e);
-					}
-				}
-
-				// Return key pressed
-				if (tinyMCE.isIE && tinyMCE.settings.force_br_newlines && e.keyCode == 13) {
-					if (e.target.editorId)
-						tinyMCE.instances[e.target.editorId].select();
-
-					if (tinyMCE.selectedInstance) {
-						var sel = tinyMCE.selectedInstance.getDoc().selection;
-						var rng = sel.createRange();
-
-						if (tinyMCE.getParentElement(rng.parentElement(), "li") != null)
-							return false;
-
-						// Cancel event
-						e.returnValue = false;
-						e.cancelBubble = true;
-
-						// Insert BR element
-						rng.pasteHTML("<br />");
-						rng.collapse(false);
-						rng.select();
-
-						tinyMCE.execCommand("mceAddUndoLevel");
-						tinyMCE.triggerNodeChange(false);
-						return false;
-					}
-				}
-
-				// Backspace or delete
-				if (e.keyCode == 8 || e.keyCode == 46) {
-					tinyMCE.selectedElement = e.target;
-					tinyMCE.linkElement = tinyMCE.getParentElement(e.target, "a");
-					tinyMCE.imgElement = tinyMCE.getParentElement(e.target, "img");
-					tinyMCE.triggerNodeChange(false);
-				}
-
-				return false;
-
-			case "keyup":
-			case "keydown":
-				tinyMCE.hideMenus();
-				tinyMCE.hasMouseMoved = false;
-
-				if (inst && inst.handleShortcut(e))
-					return false;
-
-				inst._fixRootBlocks();
-
-				if (inst.settings.remove_trailing_nbsp)
-					inst._fixTrailingNbsp();
-
-				if (e.target.editorId)
-					tinyMCE.instances[e.target.editorId].select();
-
-				if (tinyMCE.selectedInstance)
-					tinyMCE.selectedInstance.switchSettings();
-
-				inst = tinyMCE.selectedInstance;
-
-				// Handle backspace
-				if (tinyMCE.isGecko && tinyMCE.settings.force_p_newlines && (e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) {
-					// Insert P element instead of BR
-					if (TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance, e.type)) {
-						// Cancel event
-						tinyMCE.execCommand("mceAddUndoLevel");
-						e.preventDefault();
-						return false;
-					}
-				}
-
-				tinyMCE.selectedElement = null;
-				tinyMCE.selectedNode = null;
-				elm = tinyMCE.selectedInstance.getFocusElement();
-				tinyMCE.linkElement = tinyMCE.getParentElement(elm, "a");
-				tinyMCE.imgElement = tinyMCE.getParentElement(elm, "img");
-				tinyMCE.selectedElement = elm;
-
-				// Update visualaids on tabs
-				if (tinyMCE.isGecko && e.type == "keyup" && e.keyCode == 9)
-					tinyMCE.handleVisualAid(tinyMCE.selectedInstance.getBody(), true, tinyMCE.settings.visual, tinyMCE.selectedInstance);
-
-				// Fix empty elements on return/enter, check where enter occured
-				if (tinyMCE.isIE && e.type == "keydown" && e.keyCode == 13)
-					tinyMCE.enterKeyElement = tinyMCE.selectedInstance.getFocusElement();
-
-				// Fix empty elements on return/enter
-				if (tinyMCE.isIE && e.type == "keyup" && e.keyCode == 13) {
-					elm = tinyMCE.enterKeyElement;
-					if (elm) {
-						var re = new RegExp('^HR|IMG|BR$','g'); // Skip these
-						var dre = new RegExp('^H[1-6]$','g'); // Add double on these
-
-						if (!elm.hasChildNodes() && !re.test(elm.nodeName)) {
-							if (dre.test(elm.nodeName))
-								elm.innerHTML = "&nbsp;&nbsp;";
-							else
-								elm.innerHTML = "&nbsp;";
-						}
-					}
-				}
-
-				// Check if it's a position key
-				keys = tinyMCE.posKeyCodes;
-				var posKey = false;
-				for (i=0; i<keys.length; i++) {
-					if (keys[i] == e.keyCode) {
-						posKey = true;
-						break;
-					}
-				}
-
-				// MSIE custom key handling
-				if (tinyMCE.isIE && tinyMCE.settings.custom_undo_redo) {
-					keys = [8, 46]; // Backspace,Delete
-
-					for (i=0; i<keys.length; i++) {
-						if (keys[i] == e.keyCode) {
-							if (e.type == "keyup")
-								tinyMCE.triggerNodeChange(false);
-						}
-					}
-				}
-
-				// If Ctrl key
-				if (e.keyCode == 17)
-					return true;
-
-				// Handle Undo/Redo when typing content
-
-				if (tinyMCE.isGecko) {
-					// Start typing (not a position key or ctrl key, but ctrl+x and ctrl+p is ok)
-					if (!posKey && e.type == "keyup" && !e.ctrlKey || (e.ctrlKey && (e.keyCode == 86 || e.keyCode == 88)))
-						tinyMCE.execCommand("mceStartTyping");
-				} else {
-					// IE seems to be working better with this setting
-					if (!posKey && e.type == "keyup")
-						tinyMCE.execCommand("mceStartTyping");
-				}
-
-				// Store undo bookmark
-				if (e.type == "keydown" && (posKey || e.ctrlKey) && inst)
-					inst.undoBookmark = inst.selection.getBookmark();
-
-				// End typing (position key) or some Ctrl event
-				if (e.type == "keyup" && (posKey || e.ctrlKey))
-					tinyMCE.execCommand("mceEndTyping");
-
-				if (posKey && e.type == "keyup")
-					tinyMCE.triggerNodeChange(false);
-
-				if (tinyMCE.isIE && e.ctrlKey)
-					window.setTimeout('tinyMCE.triggerNodeChange(false);', 1);
-			break;
-
-			case "mousedown":
-			case "mouseup":
-			case "click":
-			case "dblclick":
-			case "focus":
-				tinyMCE.hideMenus();
-
-				if (tinyMCE.selectedInstance) {
-					tinyMCE.selectedInstance.switchSettings();
-					tinyMCE.selectedInstance.isFocused = true;
-				}
-
-				// Check instance event trigged on
-				var targetBody = tinyMCE.getParentElement(e.target, "html");
-				for (var instanceName in tinyMCE.instances) {
-					if (!tinyMCE.isInstance(tinyMCE.instances[instanceName]))
-						continue;
-
-					inst = tinyMCE.instances[instanceName];
-
-					// Reset design mode if lost (on everything just in case)
-					inst.autoResetDesignMode();
-
-					// Use HTML element since users might click outside of body element
-					if (inst.getBody().parentNode == targetBody) {
-						inst.select();
-						tinyMCE.selectedElement = e.target;
-						tinyMCE.linkElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "a");
-						tinyMCE.imgElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "img");
-						break;
-					}
-				}
-
-				// Add first bookmark location
-				if (!tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark && (e.type == "mouseup" || e.type == "dblclick"))
-					tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark = tinyMCE.selectedInstance.selection.getBookmark();
-
-				// Reset selected node
-				if (e.type != "focus")
-					tinyMCE.selectedNode = null;
-
-				tinyMCE.triggerNodeChange(false);
-				tinyMCE.execCommand("mceEndTyping");
-
-				if (e.type == "mouseup")
-					tinyMCE.execCommand("mceAddUndoLevel");
-
-				// Just in case
-				if (!tinyMCE.selectedInstance && e.target.editorId)
-					tinyMCE.instances[e.target.editorId].select();
-
-				return false;
-		}
-	},
-
-	getButtonHTML : function(id, lang, img, cmd, ui, val) {
-		var h = '', m, x, io = '';
-
-		cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + cmd + '\'';
-
-		if (typeof(ui) != "undefined" && ui != null)
-			cmd += ',' + ui;
-
-		if (typeof(val) != "undefined" && val != null)
-			cmd += ",'" + val + "'";
-
-		cmd += ');';
-
-		// Patch for IE7 bug with hover out not restoring correctly
-		if (tinyMCE.isRealIE)
-			io = 'onmouseover="tinyMCE.lastHover = this;"';
-
-		// Use tilemaps when enabled and found and never in MSIE since it loads the tile each time from cache if cahce is disabled
-		if (tinyMCE.getParam('button_tile_map') && (!tinyMCE.isIE || tinyMCE.isOpera) && (m = this.buttonMap[id]) != null && (tinyMCE.getParam("language") == "en" || img.indexOf('$lang') == -1)) {
-			// Tiled button
-			x = 0 - (m * 20) == 0 ? '0' : 0 - (m * 20);
-			h += '<a id="{$editor_id}_' + id + '" href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" ' + io + ' class="mceTiledButton mceButtonNormal" target="_self">';
-			h += '<img src="{$themeurl}/images/spacer.gif" style="background-position: ' + x + 'px 0" alt="{$'+lang+'}" title="{$' + lang + '}" />';
-			h += '</a>';
-		} else {
-			// Normal button
-			h += '<a id="{$editor_id}_' + id + '" href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" ' + io + ' class="mceButtonNormal" target="_self">';
-			h += '<img src="' + img + '" alt="{$'+lang+'}" title="{$' + lang + '}" />';
-			h += '</a>';
-		}
-
-		return h;
-	},
-
-	getMenuButtonHTML : function(id, lang, img, mcmd, cmd, ui, val) {
-		var h = '', m, x;
-
-		mcmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + mcmd + '\');';
-		cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + cmd + '\'';
-
-		if (typeof(ui) != "undefined" && ui != null)
-			cmd += ',' + ui;
-
-		if (typeof(val) != "undefined" && val != null)
-			cmd += ",'" + val + "'";
-
-		cmd += ');';
-
-		// Use tilemaps when enabled and found and never in MSIE since it loads the tile each time from cache if cahce is disabled
-		if (tinyMCE.getParam('button_tile_map') && (!tinyMCE.isIE || tinyMCE.isOpera) && (m = tinyMCE.buttonMap[id]) != null && (tinyMCE.getParam("language") == "en" || img.indexOf('$lang') == -1)) {
-			x = 0 - (m * 20) == 0 ? '0' : 0 - (m * 20);
-
-			if (tinyMCE.isRealIE)
-				h += '<span id="{$editor_id}_' + id + '" class="mceMenuButton" onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover = this;" onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">';
-			else
-				h += '<span id="{$editor_id}_' + id + '" class="mceMenuButton">';
-
-			h += '<a href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" class="mceTiledButton mceMenuButtonNormal" target="_self">';
-			h += '<img src="{$themeurl}/images/spacer.gif" style="width: 20px; height: 20px; background-position: ' + x + 'px 0" title="{$' + lang + '}" /></a>';
-			h += '<a href="javascript:' + mcmd + '" onclick="' + mcmd + 'return false;" onmousedown="return false;"><img src="{$themeurl}/images/button_menu.gif" title="{$' + lang + '}" class="mceMenuButton" />';
-			h += '</a></span>';
-		} else {
-			if (tinyMCE.isRealIE)
-				h += '<span id="{$editor_id}_' + id + '" dir="ltr" class="mceMenuButton" onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover = this;" onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">';
-			else
-				h += '<span id="{$editor_id}_' + id + '" dir="ltr" class="mceMenuButton">';
-
-			h += '<a href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" class="mceMenuButtonNormal" target="_self">';
-			h += '<img src="' + img + '" title="{$' + lang + '}" /></a>';
-			h += '<a href="javascript:' + mcmd + '" onclick="' + mcmd + 'return false;" onmousedown="return false;"><img src="{$themeurl}/images/button_menu.gif" title="{$' + lang + '}" class="mceMenuButton" />';
-			h += '</a></span>';
-		}
-
-		return h;
-	},
-
-	_menuButtonEvent : function(e, o) {
-		if (o.className == 'mceMenuButtonFocus')
-			return;
-
-		if (e == 'over')
-			o.className = o.className + ' mceMenuHover';
-		else
-			o.className = o.className.replace(/\s.*$/, '');
-	},
-
-	addButtonMap : function(m) {
-		var i, a = m.replace(/\s+/, '').split(',');
-
-		for (i=0; i<a.length; i++)
-			this.buttonMap[a[i]] = i;
-	},
-
-	formSubmit : function(f, p) {
-		var n, inst, found = false;
-
-		if (f.form)
-			f = f.form;
-
-		// Is it a form that has a TinyMCE instance
-		if (tinyMCE.getParam('save_on_tinymce_forms')) {
-			for (n in tinyMCE.instances) {
-				inst = tinyMCE.instances[n];
-
-				if (!tinyMCE.isInstance(inst))
-					continue;
-
-				if (inst.formElement) {
-					if (f == inst.formElement.form) {
-						found = true;
-						inst.isNotDirty = true;
-					}
-				}
-			}
-		} else
-			found  = true;
-
-		// Is valid
-		if (found) {
-			tinyMCE.removeTinyMCEFormElements(f);
-			tinyMCE.triggerSave();
-		}
-
-		// Is it patched
-		if (f.mceOldSubmit && p)
-			f.mceOldSubmit();
-	},
-
-	submitPatch : function() {
-		tinyMCE.formSubmit(this, true);
-	},
-
-	onLoad : function() {
-		var r, i, c, mode, trigger, elements, element, settings, elementId, elm;
-		var selector, deselector, elementRefAr, form;
-
-		// Wait for everything to be loaded first
-		if (tinyMCE.settings.strict_loading_mode && this.loadingIndex != -1) {
-			window.setTimeout('tinyMCE.onLoad();', 1);
-			return;
-		}
-
-		if (tinyMCE.isRealIE && window.event.type == "readystatechange" && document.readyState != "complete")
-			return true;
-
-		if (tinyMCE.isLoaded)
-			return true;
-
-		tinyMCE.isLoaded = true;
-
-		// IE produces JS error if TinyMCE is placed in a frame
-		// It seems to have something to do with the selection not beeing
-		// correctly initialized in IE so this hack solves the problem
-		if (tinyMCE.isRealIE && document.body && window.location.href != window.top.location.href) {
-			r = document.body.createTextRange();
-			r.collapse(true);
-			r.select();
-		}
-
-		tinyMCE.dispatchCallback(null, 'onpageload', 'onPageLoad');
-
-		for (c=0; c<tinyMCE.configs.length; c++) {
-			tinyMCE.settings = tinyMCE.configs[c];
-
-			selector = tinyMCE.getParam("editor_selector");
-			deselector = tinyMCE.getParam("editor_deselector");
-			elementRefAr = [];
-
-			// Add submit triggers
-			if (document.forms && tinyMCE.settings.add_form_submit_trigger && !tinyMCE.submitTriggers) {
-				for (i=0; i<document.forms.length; i++) {
-					form = document.forms[i];
-
-					tinyMCE.addEvent(form, "submit", TinyMCE_Engine.prototype.handleEvent);
-					tinyMCE.addEvent(form, "reset", TinyMCE_Engine.prototype.handleEvent);
-					tinyMCE.submitTriggers = true; // Do it only once
-
-					// Patch the form.submit function
-					if (tinyMCE.settings.submit_patch) {
-						try {
-							form.mceOldSubmit = form.submit;
-							form.submit = TinyMCE_Engine.prototype.submitPatch;
-						} catch (e) {
-							// Do nothing
-						}
-					}
-				}
-			}
-
-			// Add editor instances based on mode
-			mode = tinyMCE.settings.mode;
-			switch (mode) {
-				case "exact":
-					elements = tinyMCE.getParam('elements', '', true, ',');
-
-					for (i=0; i<elements.length; i++) {
-						element = tinyMCE._getElementById(elements[i]);
-						trigger = element ? element.getAttribute(tinyMCE.settings.textarea_trigger) : "";
-
-						if (new RegExp('\\b' + deselector + '\\b').test(tinyMCE.getAttrib(element, "class")))
-							continue;
-
-						if (trigger == "false")
-							continue;
-
-						if ((tinyMCE.settings.ask || tinyMCE.settings.convert_on_click) && element) {
-							elementRefAr[elementRefAr.length] = element;
-							continue;
-						}
-
-						if (element)
-							tinyMCE.addMCEControl(element, elements[i]);
-					}
-				break;
-
-				case "specific_textareas":
-				case "textareas":
-					elements = document.getElementsByTagName("textarea");
-
-					for (i=0; i<elements.length; i++) {
-						elm = elements.item(i);
-						trigger = elm.getAttribute(tinyMCE.settings.textarea_trigger);
-
-						if (selector !== '' && !new RegExp('\\b' + selector + '\\b').test(tinyMCE.getAttrib(elm, "class")))
-							continue;
-
-						if (selector !== '')
-							trigger = selector !== '' ? "true" : "";
-
-						if (new RegExp('\\b' + deselector + '\\b').test(tinyMCE.getAttrib(elm, "class")))
-							continue;
-
-						if ((mode == "specific_textareas" && trigger == "true") || (mode == "textareas" && trigger != "false"))
-							elementRefAr[elementRefAr.length] = elm;
-					}
-				break;
-			}
-
-			for (i=0; i<elementRefAr.length; i++) {
-				element = elementRefAr[i];
-				elementId = element.name ? element.name : element.id;
-
-				if (tinyMCE.settings.ask || tinyMCE.settings.convert_on_click) {
-					// Focus breaks in Mozilla
-					if (tinyMCE.isGecko) {
-						settings = tinyMCE.settings;
-
-						tinyMCE.addEvent(element, "focus", function (e) {window.setTimeout(function() {TinyMCE_Engine.prototype.confirmAdd(e, settings);}, 10);});
-
-						if (element.nodeName != "TEXTAREA" && element.nodeName != "INPUT")
-							tinyMCE.addEvent(element, "click", function (e) {window.setTimeout(function() {TinyMCE_Engine.prototype.confirmAdd(e, settings);}, 10);});
-						// tinyMCE.addEvent(element, "mouseover", function (e) {window.setTimeout(function() {TinyMCE_Engine.prototype.confirmAdd(e, settings);}, 10);});
-					} else {
-						settings = tinyMCE.settings;
-
-						tinyMCE.addEvent(element, "focus", function () { TinyMCE_Engine.prototype.confirmAdd(null, settings); });
-						tinyMCE.addEvent(element, "click", function () { TinyMCE_Engine.prototype.confirmAdd(null, settings); });
-						// tinyMCE.addEvent(element, "mouseenter", function () { TinyMCE_Engine.prototype.confirmAdd(null, settings); });
-					}
-				} else
-					tinyMCE.addMCEControl(element, elementId);
-			}
-
-			// Handle auto focus
-			if (tinyMCE.settings.auto_focus) {
-				window.setTimeout(function () {
-					var inst = tinyMCE.getInstanceById(tinyMCE.settings.auto_focus);
-					inst.selection.selectNode(inst.getBody(), true, true);
-					inst.contentWindow.focus();
-				}, 100);
-			}
-
-			tinyMCE.dispatchCallback(null, 'oninit', 'onInit');
-		}
-	},
-
-	isInstance : function(o) {
-		return o != null && typeof(o) == "object" && o.isTinyMCE_Control;
-	},
-
-	getParam : function(name, default_value, strip_whitespace, split_chr) {
-		var i, outArray, value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
-
-		// Fix bool values
-		if (value == "true" || value == "false")
-			return (value == "true");
-
-		if (strip_whitespace)
-			value = tinyMCE.regexpReplace(value, "[ \t\r\n]", "");
-
-		if (typeof(split_chr) != "undefined" && split_chr != null) {
-			value = value.split(split_chr);
-			outArray = [];
-
-			for (i=0; i<value.length; i++) {
-				if (value[i] && value[i] !== '')
-					outArray[outArray.length] = value[i];
-			}
-
-			value = outArray;
-		}
-
-		return value;
-	},
-
-	getLang : function(name, default_value, parse_entities, va) {
-		var v = (typeof(tinyMCELang[name]) == "undefined") ? default_value : tinyMCELang[name], n;
-
-		if (parse_entities)
-			v = tinyMCE.entityDecode(v);
-
-		if (va) {
-			for (n in va)
-				v = this.replaceVar(v, n, va[n]);
-		}
-
-		return v;
-	},
-
-	entityDecode : function(s) {
-		var e = document.createElement("div");
-
-		e.innerHTML = s;
-
-		return !e.firstChild ? s : e.firstChild.nodeValue;
-	},
-
-	addToLang : function(prefix, ar) {
-		var k;
-
-		for (k in ar) {
-			if (typeof(ar[k]) == 'function')
-				continue;
-
-			tinyMCELang[(k.indexOf('lang_') == -1 ? 'lang_' : '') + (prefix !== '' ? (prefix + "_") : '') + k] = ar[k];
-		}
-
-		this.loadNextScript();
-	},
-
-	triggerNodeChange : function(focus, setup_content) {
-		var elm, inst, editorId, undoIndex = -1, undoLevels = -1, doc, anySelection = false, st;
-
-		if (tinyMCE.selectedInstance) {
-			inst = tinyMCE.selectedInstance;
-			elm = (typeof(setup_content) != "undefined" && setup_content) ? tinyMCE.selectedElement : inst.getFocusElement();
-
-/*			if (elm == inst.lastTriggerEl)
-				return;
-
-			inst.lastTriggerEl = elm;*/
-
-			editorId = inst.editorId;
-			st = inst.selection.getSelectedText();
-
-			if (tinyMCE.settings.auto_resize)
-				inst.resizeToContent();
-
-			if (setup_content && tinyMCE.isGecko && inst.isHidden())
-				elm = inst.getBody();
-
-			inst.switchSettings();
-
-			if (tinyMCE.selectedElement)
-				anySelection = (tinyMCE.selectedElement.nodeName.toLowerCase() == "img") || (st && st.length > 0);
-
-			if (tinyMCE.settings.custom_undo_redo) {
-				undoIndex = inst.undoRedo.undoIndex;
-				undoLevels = inst.undoRedo.undoLevels.length;
-			}
-
-			tinyMCE.dispatchCallback(inst, 'handle_node_change_callback', 'handleNodeChange', editorId, elm, undoIndex, undoLevels, inst.visualAid, anySelection, setup_content);
-		}
-
-		if (this.selectedInstance && (typeof(focus) == "undefined" || focus))
-			this.selectedInstance.contentWindow.focus();
-	},
-
-	_customCleanup : function(inst, type, content) {
-		var pl, po, i, customCleanup;
-
-		// Call custom cleanup
-		customCleanup = tinyMCE.settings.cleanup_callback;
-		if (customCleanup != '')
-			content = tinyMCE.resolveDots(tinyMCE.settings.cleanup_callback, window)(type, content, inst);
-
-		// Trigger theme cleanup
-		po = tinyMCE.themes[tinyMCE.settings.theme];
-		if (po && po.cleanup)
-			content = po.cleanup(type, content, inst);
-
-		// Trigger plugin cleanups
-		pl = inst.plugins;
-		for (i=0; i<pl.length; i++) {
-			po = tinyMCE.plugins[pl[i]];
-
-			if (po && po.cleanup)
-				content = po.cleanup(type, content, inst);
-		}
-
-		return content;
-	},
-
-	setContent : function(h) {
-		if (tinyMCE.selectedInstance) {
-			tinyMCE.selectedInstance.execCommand('mceSetContent', false, h);
-			tinyMCE.selectedInstance.repaint();
-		}
-	},
-
-	importThemeLanguagePack : function(name) {
-		if (typeof(name) == "undefined")
-			name = tinyMCE.settings.theme;
-
-		tinyMCE.loadScript(tinyMCE.baseURL + '/themes/' + name + '/langs/' + tinyMCE.settings.language + '.js');
-	},
-
-	importPluginLanguagePack : function(name) {
-		var b = tinyMCE.baseURL + '/plugins/' + name;
-
-		if (this.plugins[name])
-			b = this.plugins[name].baseURL;
-
-		tinyMCE.loadScript(b + '/langs/' + tinyMCE.settings.language +  '.js');
-	},
-
-	applyTemplate : function(h, ag) {
-		return h.replace(new RegExp('\\{\\$([a-z0-9_]+)\\}', 'gi'), function(m, s) {
-			if (s.indexOf('lang_') == 0 && tinyMCELang[s])
-				return tinyMCELang[s];
-
-			if (ag && ag[s])
-				return ag[s];
-
-			if (tinyMCE.settings[s])
-				return tinyMCE.settings[s];
-
-			if (m == 'themeurl')
-				return tinyMCE.themeURL;
-
-			return m;
-		});
-	},
-
-	replaceVar : function(h, r, v) {
-		return h.replace(new RegExp('{\\\$' + r + '}', 'g'), v);
-	},
-
-	openWindow : function(template, args) {
-		var html, width, height, x, y, resizable, scrollbars, url, name, win, modal, features;
-
-		args = !args ? {} : args;
-
-		args.mce_template_file = template.file;
-		args.mce_width = template.width;
-		args.mce_height = template.height;
-		tinyMCE.windowArgs = args;
-
-		html = template.html;
-		if (!(width = parseInt(template.width)))
-			width = 320;
-
-		if (!(height = parseInt(template.height)))
-			height = 200;
-
-		// Add to height in M$ due to SP2 WHY DON'T YOU GUYS IMPLEMENT innerWidth of windows!!
-		if (tinyMCE.isIE)
-			height += 40;
-		else
-			height += 20;
-
-		x = parseInt(screen.width / 2.0) - (width / 2.0);
-		y = parseInt(screen.height / 2.0) - (height / 2.0);
-
-		resizable = (args && args.resizable) ? args.resizable : "no";
-		scrollbars = (args && args.scrollbars) ? args.scrollbars : "no";
-
-		if (template.file.charAt(0) != '/' && template.file.indexOf('://') == -1)
-			url = tinyMCE.baseURL + "/themes/" + tinyMCE.getParam("theme") + "/" + template.file;
-		else
-			url = template.file;
-
-		// Replace all args as variables in URL
-		for (name in args) {
-			if (typeof(args[name]) == 'function')
-				continue;
-
-			url = tinyMCE.replaceVar(url, name, escape(args[name]));
-		}
-
-		if (html) {
-			html = tinyMCE.replaceVar(html, "css", this.settings.popups_css);
-			html = tinyMCE.applyTemplate(html, args);
-
-			win = window.open("", "mcePopup" + new Date().getTime(), "top=" + y + ",left=" + x + ",scrollbars=" + scrollbars + ",dialog=yes,minimizable=" + resizable + ",modal=yes,width=" + width + ",height=" + height + ",resizable=" + resizable);
-			if (win == null) {
-				alert(tinyMCELang.lang_popup_blocked);
-				return;
-			}
-
-			win.document.write(html);
-			win.document.close();
-			win.resizeTo(width, height);
-			win.focus();
-		} else {
-			if ((tinyMCE.isRealIE) && resizable != 'yes' && tinyMCE.settings.dialog_type == "modal") {
-				height += 10;
-
-				features = "resizable:" + resizable + ";scroll:" + scrollbars + ";status:yes;center:yes;help:no;dialogWidth:" + width + "px;dialogHeight:" + height + "px;";
-
-				window.showModalDialog(url, window, features);
-			} else {
-				modal = (resizable == "yes") ? "no" : "yes";
-
-				if (tinyMCE.isGecko && tinyMCE.isMac)
-					modal = "no";
-
-				if (template.close_previous != "no")
-					try {tinyMCE.lastWindow.close();} catch (ex) {}
-
-				win = window.open(url, "mcePopup" + new Date().getTime(), "top=" + y + ",left=" + x + ",scrollbars=" + scrollbars + ",dialog=" + modal + ",minimizable=" + resizable + ",modal=" + modal + ",width=" + width + ",height=" + height + ",resizable=" + resizable);
-				if (win == null) {
-					alert(tinyMCELang.lang_popup_blocked);
-					return;
-				}
-
-				if (template.close_previous != "no")
-					tinyMCE.lastWindow = win;
-
-				try {
-					win.resizeTo(width, height);
-				} catch(e) {
-					// Ignore
-				}
-
-				// Make it bigger if statusbar is forced
-				if (tinyMCE.isGecko) {
-					if (win.document.defaultView.statusbar.visible)
-						win.resizeBy(0, tinyMCE.isMac ? 10 : 24);
-				}
-
-				win.focus();
-			}
-		}
-	},
-
-	closeWindow : function(win) {
-		win.close();
-	},
-
-	getVisualAidClass : function(class_name, state) {
-		var i, classNames, ar, className, aidClass = tinyMCE.settings.visual_table_class;
-
-		if (typeof(state) == "undefined")
-			state = tinyMCE.settings.visual;
-
-		// Split
-		classNames = [];
-		ar = class_name.split(' ');
-		for (i=0; i<ar.length; i++) {
-			if (ar[i] == aidClass)
-				ar[i] = "";
-
-			if (ar[i] !== '')
-				classNames[classNames.length] = ar[i];
-		}
-
-		if (state)
-			classNames[classNames.length] = aidClass;
-
-		// Glue
-		className = "";
-		for (i=0; i<classNames.length; i++) {
-			if (i > 0)
-				className += " ";
-
-			className += classNames[i];
-		}
-
-		return className;
-	},
-
-	handleVisualAid : function(el, deep, state, inst, skip_dispatch) {
-		var i, x, y, tableElement, anchorName, oldW, oldH, bo, cn;
-
-		if (!el)
-			return;
-
-		if (!skip_dispatch)
-			tinyMCE.dispatchCallback(inst, 'handle_visual_aid_callback', 'handleVisualAid', el, deep, state, inst);
-
-		tableElement = null;
-
-		switch (el.nodeName) {
-			case "TABLE":
-				oldW = el.style.width;
-				oldH = el.style.height;
-				bo = tinyMCE.getAttrib(el, "border");
-
-				bo = bo == '' || bo == "0" ? true : false;
-
-				tinyMCE.setAttrib(el, "class", tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el, "class"), state && bo));
-
-				el.style.width = oldW;
-				el.style.height = oldH;
-
-				for (y=0; y<el.rows.length; y++) {
-					for (x=0; x<el.rows[y].cells.length; x++) {
-						cn = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el.rows[y].cells[x], "class"), state && bo);
-						tinyMCE.setAttrib(el.rows[y].cells[x], "class", cn);
-					}
-				}
-
-				break;
-
-			case "A":
-				anchorName = tinyMCE.getAttrib(el, "name");
-
-				if (anchorName !== '' && state) {
-					el.title = anchorName;
-					tinyMCE.addCSSClass(el, 'mceItemAnchor');
-				} else if (anchorName !== '' && !state)
-					el.className = '';
-
-				break;
-		}
-
-		if (deep && el.hasChildNodes()) {
-			for (i=0; i<el.childNodes.length; i++)
-				tinyMCE.handleVisualAid(el.childNodes[i], deep, state, inst, true);
-		}
-	},
-
-	fixGeckoBaseHREFBug : function(m, e, h) {
-		var xsrc, xhref;
-
-		if (tinyMCE.isGecko) {
-			if (m == 1) {
-				h = h.replace(/\ssrc=/gi, " mce_tsrc=");
-				h = h.replace(/\shref=/gi, " mce_thref=");
-
-				return h;
-			} else {
-				// Why bother if there is no src or href broken
-				if (!new RegExp('(src|href)=', 'g').test(h))
-					return h;
-
-				// Restore src and href that gets messed up by Gecko
-				tinyMCE.selectElements(e, 'A,IMG,SELECT,AREA,IFRAME,BASE,INPUT,SCRIPT,EMBED,OBJECT,LINK', function (n) {
-					xsrc = tinyMCE.getAttrib(n, "mce_tsrc");
-					xhref = tinyMCE.getAttrib(n, "mce_thref");
-
-					if (xsrc !== '') {
-						try {
-							n.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, xsrc);
-						} catch (e) {
-							// Ignore, Firefox cast exception if local file wasn't found
-						}
-
-						n.removeAttribute("mce_tsrc");
-					}
-
-					if (xhref !== '') {
-						try {
-							n.href = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, xhref);
-						} catch (e) {
-							// Ignore, Firefox cast exception if local file wasn't found
-						}
-
-						n.removeAttribute("mce_thref");
-					}
-
-					return false;
-				});
-
-				// Restore text/comment nodes
-				tinyMCE.selectNodes(e, function(n) {
-					if (n.nodeType == 3 || n.nodeType == 8) {
-						n.nodeValue = n.nodeValue.replace(/\smce_tsrc=/gi, " src=");
-						n.nodeValue = n.nodeValue.replace(/\smce_thref=/gi, " href=");
-					}
-
-					return false;
-				});
-			}
-		}
-
-		return h;
-	},
-
-	_setHTML : function(doc, html_content) {
-		var i, html, paras, node;
-
-		// Force closed anchors open
-		//html_content = html_content.replace(new RegExp('<a(.*?)/>', 'gi'), '<a$1></a>');
-
-		html_content = tinyMCE.cleanupHTMLCode(html_content);
-
-		// Try innerHTML if it fails use pasteHTML in MSIE
-		try {
-			tinyMCE.setInnerHTML(doc.body, html_content);
-		} catch (e) {
-			if (this.isMSIE)
-				doc.body.createTextRange().pasteHTML(html_content);
-		}
-
-		// Content duplication bug fix
-		if (tinyMCE.isIE && tinyMCE.settings.fix_content_duplication) {
-			// Remove P elements in P elements
-			paras = doc.getElementsByTagName("P");
-			for (i=0; i<paras.length; i++) {
-				node = paras[i];
-
-				while ((node = node.parentNode) != null) {
-					if (node.nodeName == "P")
-						node.outerHTML = node.innerHTML;
-				}
-			}
-
-			// Content duplication bug fix (Seems to be word crap)
-			html = doc.body.innerHTML;
-
-			// Always set the htmlText output
-			tinyMCE.setInnerHTML(doc.body, html);
-		}
-
-		tinyMCE.cleanupAnchors(doc);
-
-		if (tinyMCE.getParam("convert_fonts_to_spans"))
-			tinyMCE.convertSpansToFonts(doc);
-	},
-
-	getEditorId : function(form_element) {
-		var inst = this.getInstanceById(form_element);
-
-		if (!inst)
-			return null;
-
-		return inst.editorId;
-	},
-
-	getInstanceById : function(editor_id) {
-		var inst = this.instances[editor_id], n;
-
-		if (!inst) {
-			for (n in tinyMCE.instances) {
-				inst = tinyMCE.instances[n];
-
-				if (!tinyMCE.isInstance(inst))
-					continue;
-
-				if (inst.formTargetElementId == editor_id)
-					return inst;
-			}
-		} else
-			return inst;
-
-		return null;
-	},
-
-	queryInstanceCommandValue : function(editor_id, command) {
-		var inst = tinyMCE.getInstanceById(editor_id);
-
-		if (inst)
-			return inst.queryCommandValue(command);
-
-		return false;
-	},
-
-	queryInstanceCommandState : function(editor_id, command) {
-		var inst = tinyMCE.getInstanceById(editor_id);
-
-		if (inst)
-			return inst.queryCommandState(command);
-
-		return null;
-	},
-
-	setWindowArg : function(n, v) {
-		this.windowArgs[n] = v;
-	},
-
-	getWindowArg : function(n, d) {
-		return (typeof(this.windowArgs[n]) == "undefined") ? d : this.windowArgs[n];
-	},
-
-	getCSSClasses : function(editor_id, doc) {
-		var i, c, x, rule, styles, rules, csses, selectorText, inst = tinyMCE.getInstanceById(editor_id);
-		var cssClass, addClass, p;
-
-		if (!inst)
-			inst = tinyMCE.selectedInstance;
-
-		if (!inst)
-			return [];
-
-		if (!doc)
-			doc = inst.getDoc();
-
-		// Is cached, use that
-		if (inst && inst.cssClasses.length > 0)
-			return inst.cssClasses;
-
-		if (!doc)
-			return;
-
-		styles = doc.styleSheets;
-
-		if (styles && styles.length > 0) {
-			for (x=0; x<styles.length; x++) {
-				csses = null;
-
-				try {
-					csses = tinyMCE.isIE ? doc.styleSheets(x).rules : styles[x].cssRules;
-				} catch(e) {
-					// Just ignore any errors I know this is ugly!!
-				}
-
-				if (!csses)
-					return [];
-
-				for (i=0; i<csses.length; i++) {
-					selectorText = csses[i].selectorText;
-
-					// Can be multiple rules per selector
-					if (selectorText) {
-						rules = selectorText.split(',');
-						for (c=0; c<rules.length; c++) {
-							rule = rules[c];
-
-							// Strip spaces between selectors
-							while (rule.indexOf(' ') == 0)
-								rule = rule.substring(1);
-
-							// Invalid rule
-							if (rule.indexOf(' ') != -1 || rule.indexOf(':') != -1 || rule.indexOf('mceItem') != -1)
-								continue;
-
-							if (rule.indexOf(tinyMCE.settings.visual_table_class) != -1 || rule.indexOf('mceEditable') != -1 || rule.indexOf('mceNonEditable') != -1)
-								continue;
-
-							// Is class rule
-							if (rule.indexOf('.') != -1) {
-								cssClass = rule.substring(rule.indexOf('.') + 1);
-								addClass = true;
-
-								for (p=0; p<inst.cssClasses.length && addClass; p++) {
-									if (inst.cssClasses[p] == cssClass)
-										addClass = false;
-								}
-
-								if (addClass)
-									inst.cssClasses[inst.cssClasses.length] = cssClass;
-							}
-						}
-					}
-				}
-			}
-		}
-
-		return inst.cssClasses;
-	},
-
-	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 s.replace(/^\s*|\s*$/g, "");
-	},
-
-	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;
-	},
-
-	getControlHTML : function(c) {
-		var i, l, n, o, v, rtl = tinyMCE.getLang('lang_dir') == 'rtl';
-
-		l = tinyMCE.plugins;
-		for (n in l) {
-			o = l[n];
-
-			if (o.getControlHTML && (v = o.getControlHTML(c)) !== '') {
-				if (rtl)
-					return '<span dir="rtl">' + tinyMCE.replaceVar(v, "pluginurl", o.baseURL) + '</span>';
-
-				return tinyMCE.replaceVar(v, "pluginurl", o.baseURL);
-			}
-		}
-
-		o = tinyMCE.themes[tinyMCE.settings.theme];
-		if (o.getControlHTML && (v = o.getControlHTML(c)) !== '') {
-			if (rtl)
-				return '<span dir="rtl">' + v + '</span>';
-
-			return v;
-		}
-
-		return '';
-	},
-
-	evalFunc : function(f, idx, a, o) {
-		o = !o ? window : o;
-		f = typeof(f) == 'function' ? f : o[f];
-
-		return f.apply(o, Array.prototype.slice.call(a, idx));
-	},
-
-	dispatchCallback : function(i, p, n) {
-		return this.callFunc(i, p, n, 0, this.dispatchCallback.arguments);
-	},
-
-	executeCallback : function(i, p, n) {
-		return this.callFunc(i, p, n, 1, this.executeCallback.arguments);
-	},
-
-	execCommandCallback : function(i, p, n) {
-		return this.callFunc(i, p, n, 2, this.execCommandCallback.arguments);
-	},
-
-	callFunc : function(ins, p, n, m, a) {
-		var l, i, on, o, s, v;
-
-		s = m == 2;
-
-		l = tinyMCE.getParam(p, '');
-
-		if (l !== '' && (v = tinyMCE.evalFunc(l, 3, a)) == s && m > 0)
-			return true;
-
-		if (ins != null) {
-			for (i=0, l = ins.plugins; i<l.length; i++) {
-				o = tinyMCE.plugins[l[i]];
-
-				if (o[n] && (v = tinyMCE.evalFunc(n, 3, a, o)) == s && m > 0)
-					return true;
-			}
-		}
-
-		l = tinyMCE.themes;
-		for (on in l) {
-			o = l[on];
-
-			if (o[n] && (v = tinyMCE.evalFunc(n, 3, a, o)) == s && m > 0)
-				return true;
-		}
-
-		return false;
-	},
-
-	resolveDots : function(s, o) {
-		var i;
-
-		if (typeof(s) == 'string') {
-			for (i=0, s=s.split('.'); i<s.length; i++)
-				o = o[s[i]];
-		} else
-			o = s;
-
-		return o;
-	},
-
-	xmlEncode : function(s) {
-		return s ? ('' + s).replace(this.xmlEncodeRe, function (c, b) {
-			switch (c) {
-				case '&':
-					return '&amp;';
-
-				case '"':
-					return '&quot;';
-
-				case '<':
-					return '&lt;';
-
-				case '>':
-					return '&gt;';
-			}
-
-			return c;
-		}) : s;
-	},
-
-	add : function(c, m) {
-		var n;
-
-		for (n in m) {
-			if (m.hasOwnProperty(n))
-				c.prototype[n] = m[n];
-		}
-	},
-
-	extend : function(p, np) {
-		var o = {}, n;
-
-		o.parent = p;
-
-		for (n in p) {
-			if (p.hasOwnProperty(n))
-				o[n] = p[n];
-		}
-
-		for (n in np) {
-			if (np.hasOwnProperty(n))
-				o[n] = np[n];
-		}
-
-		return o;
-	},
-
-	hideMenus : function() {
-		var e = tinyMCE.lastSelectedMenuBtn;
-
-		if (tinyMCE.lastMenu) {
-			tinyMCE.lastMenu.hide();
-			tinyMCE.lastMenu = null;
-		}
-
-		if (e) {
-			tinyMCE.switchClass(e, tinyMCE.lastMenuBtnClass);
-			tinyMCE.lastSelectedMenuBtn = null;
-		}
-	}
-
-	};
-
-// Global instances
-var TinyMCE = TinyMCE_Engine; // Compatiblity with gzip compressors
-var tinyMCE = new TinyMCE_Engine();
-var tinyMCELang = {};
-
-/* file:jscripts/tiny_mce/classes/TinyMCE_Control.class.js */
-
-function TinyMCE_Control(settings) {
-	var t, i, tos, fu, p, x, fn, fu, pn, s = settings;
-
-	this.undoRedoLevel = true;
-	this.isTinyMCE_Control = true;
-
-	// Default settings
-	this.enabled = true;
-	this.settings = s;
-	this.settings.theme = tinyMCE.getParam("theme", "default");
-	this.settings.width = tinyMCE.getParam("width", -1);
-	this.settings.height = tinyMCE.getParam("height", -1);
-	this.selection = new TinyMCE_Selection(this);
-	this.undoRedo = new TinyMCE_UndoRedo(this);
-	this.cleanup = new TinyMCE_Cleanup();
-	this.shortcuts = [];
-	this.hasMouseMoved = false;
-	this.foreColor = this.backColor = "#999999";
-	this.data = {};
-	this.cssClasses = [];
-
-	this.cleanup.init({
-		valid_elements : s.valid_elements,
-		extended_valid_elements : s.extended_valid_elements,
-		valid_child_elements : s.valid_child_elements,
-		entities : s.entities,
-		entity_encoding : s.entity_encoding,
-		debug : s.cleanup_debug,
-		indent : s.apply_source_formatting,
-		invalid_elements : s.invalid_elements,
-		verify_html : s.verify_html,
-		fix_content_duplication : s.fix_content_duplication,
-		convert_fonts_to_spans : s.convert_fonts_to_spans
-	});
-
-	// Wrap old theme
-	t = this.settings.theme;
-	if (!tinyMCE.hasTheme(t)) {
-		fn = tinyMCE.callbacks;
-		tos = {};
-
-		for (i=0; i<fn.length; i++) {
-			if ((fu = window['TinyMCE_' + t + "_" + fn[i]]))
-				tos[fn[i]] = fu;
-		}
-
-		tinyMCE.addTheme(t, tos);
-	}
-
-	// Wrap old plugins
-	this.plugins = [];
-	p = tinyMCE.getParam('plugins', '', true, ',');
-	if (p.length > 0) {
-		for (i=0; i<p.length; i++) {
-			pn = p[i];
-
-			if (pn.charAt(0) == '-')
-				pn = pn.substring(1);
-
-			if (!tinyMCE.hasPlugin(pn)) {
-				fn = tinyMCE.callbacks;
-				tos = {};
-
-				for (x=0; x<fn.length; x++) {
-					if ((fu = window['TinyMCE_' + pn + "_" + fn[x]]))
-						tos[fn[x]] = fu;
-				}
-
-				tinyMCE.addPlugin(pn, tos);
-			}
-
-			this.plugins[this.plugins.length] = pn;
-		}
-	}
-};
-
-TinyMCE_Control.prototype = {
-	selection : null,
-
-	settings : null,
-
-	cleanup : null,
-
-	getData : function(na) {
-		var o = this.data[na];
-
-		if (!o)
-			o = this.data[na] = {};
-
-		return o;
-	},
-
-	hasPlugin : function(n) {
-		var i;
-
-		for (i=0; i<this.plugins.length; i++) {
-			if (this.plugins[i] == n)
-				return true;
-		}
-
-		return false;
-	},
-
-	addPlugin : function(n, p) {
-		if (!this.hasPlugin(n)) {
-			tinyMCE.addPlugin(n, p);
-			this.plugins[this.plugins.length] = n;
-		}
-	},
-
-	repaint : function() {
-		var s, b, ex;
-
-		if (tinyMCE.isRealIE)
-			return;
-
-		try {
-			s = this.selection;
-			b = s.getBookmark(true);
-			this.getBody().style.display = 'none';
-			this.getDoc().execCommand('selectall', false, null);
-			this.getSel().collapseToStart();
-			this.getBody().style.display = 'block';
-			s.moveToBookmark(b);
-		} catch (ex) {
-			// Ignore
-		}
-	},
-
-	switchSettings : function() {
-		if (tinyMCE.configs.length > 1 && tinyMCE.currentConfig != this.settings.index) {
-			tinyMCE.settings = this.settings;
-			tinyMCE.currentConfig = this.settings.index;
-		}
-	},
-
-	select : function() {
-		var oldInst = tinyMCE.selectedInstance;
-
-		if (oldInst != this) {
-			if (oldInst)
-				oldInst.execCommand('mceEndTyping');
-
-			tinyMCE.dispatchCallback(this, 'select_instance_callback', 'selectInstance', this, oldInst);
-			tinyMCE.selectedInstance = this;
-		}
-	},
-
-	getBody : function() {
-		return this.contentBody ? this.contentBody : this.getDoc().body;
-	},
-
-	getDoc : function() {
-//		return this.contentDocument ? this.contentDocument : this.contentWindow.document; // Removed due to IE 5.5 ?
-		return this.contentWindow.document;
-	},
-
-	getWin : function() {
-		return this.contentWindow;
-	},
-
-	getContainerWin : function() {
-		return this.containerWindow ? this.containerWindow : window;
-	},
-
-	getViewPort : function() {
-		return tinyMCE.getViewPort(this.getWin());
-	},
-
-	getParentNode : function(n, f) {
-		return tinyMCE.getParentNode(n, f, this.getBody());
-	},
-
-	getParentElement : function(n, na, f) {
-		return tinyMCE.getParentElement(n, na, f, this.getBody());
-	},
-
-	getParentBlockElement : function(n) {
-		return tinyMCE.getParentBlockElement(n, this.getBody());
-	},
-
-	resizeToContent : function() {
-		var d = this.getDoc(), b = d.body, de = d.documentElement;
-
-		this.iframeElement.style.height = (tinyMCE.isRealIE) ? b.scrollHeight : de.offsetHeight + 'px';
-	},
-
-	addShortcut : function(m, k, d, cmd, ui, va) {
-		var n = typeof(k) == "number", ie = tinyMCE.isIE, c, sc, i, scl = this.shortcuts;
-
-		if (!tinyMCE.getParam('custom_shortcuts'))
-			return false;
-
-		m = m.toLowerCase();
-		k = ie && !n ? k.toUpperCase() : k;
-		c = n ? null : k.charCodeAt(0);
-		d = d && d.indexOf('lang_') == 0 ? tinyMCE.getLang(d) : d;
-
-		sc = {
-			alt : m.indexOf('alt') != -1,
-			ctrl : m.indexOf('ctrl') != -1,
-			shift : m.indexOf('shift') != -1,
-			charCode : c,
-			keyCode : n ? k : (ie ? c : null),
-			desc : d,
-			cmd : cmd,
-			ui : ui,
-			val : va
-		};
-
-		for (i=0; i<scl.length; i++) {
-			if (sc.alt == scl[i].alt && sc.ctrl == scl[i].ctrl && sc.shift == scl[i].shift
-				&& sc.charCode == scl[i].charCode && sc.keyCode == scl[i].keyCode) {
-				return false;
-			}
-		}
-
-		scl[scl.length] = sc;
-
-		return true;
-	},
-
-	handleShortcut : function(e) {
-		var i, s, o;
-
-		// Normal key press, then ignore it
-		if (!e.altKey && !e.ctrlKey)
-			return false;
-
-		s = this.shortcuts;
-
-		for (i=0; i<s.length; i++) {
-			o = s[i];
-
-			if (o.alt == e.altKey && o.ctrl == e.ctrlKey && (o.keyCode == e.keyCode || o.charCode == e.charCode)) {
-				if (o.cmd && (e.type == "keydown" || (e.type == "keypress" && !tinyMCE.isOpera)))
-					tinyMCE.execCommand(o.cmd, o.ui, o.val);
-
-				tinyMCE.cancelEvent(e);
-				return true;
-			}
-		}
-
-		return false;
-	},
-
-	autoResetDesignMode : function() {
-		// Add fix for tab/style.display none/block problems in Gecko
-		if (!tinyMCE.isIE && this.isHidden() && tinyMCE.getParam('auto_reset_designmode'))
-			eval('try { this.getDoc().designMode = "On"; this.useCSS = false; } catch(e) {}');
-	},
-
-	isHidden : function() {
-		var s;
-
-		if (tinyMCE.isIE)
-			return false;
-
-		s = this.getSel();
-
-		// Weird, wheres that cursor selection?
-		return (!s || !s.rangeCount || s.rangeCount == 0);
-	},
-
-	isDirty : function() {
-		// Is content modified and not in a submit procedure
-		return tinyMCE.trim(this.startContent) != tinyMCE.trim(this.getBody().innerHTML) && !this.isNotDirty;
-	},
-
-	_mergeElements : function(scmd, pa, ch, override) {
-		var st, stc, className, n;
-
-		if (scmd == "removeformat") {
-			pa.className = "";
-			pa.style.cssText = "";
-			ch.className = "";
-			ch.style.cssText = "";
-			return;
-		}
-
-		st = tinyMCE.parseStyle(tinyMCE.getAttrib(pa, "style"));
-		stc = tinyMCE.parseStyle(tinyMCE.getAttrib(ch, "style"));
-		className = tinyMCE.getAttrib(pa, "class");
-
-		// Removed class adding due to bug #1478272
-		className = tinyMCE.getAttrib(ch, "class");
-
-		if (override) {
-			for (n in st) {
-				if (typeof(st[n]) == 'function')
-					continue;
-
-				stc[n] = st[n];
-			}
-		} else {
-			for (n in stc) {
-				if (typeof(stc[n]) == 'function')
-					continue;
-
-				st[n] = stc[n];
-			}
-		}
-
-		tinyMCE.setAttrib(pa, "style", tinyMCE.serializeStyle(st));
-		tinyMCE.setAttrib(pa, "class", tinyMCE.trim(className));
-		ch.className = "";
-		ch.style.cssText = "";
-		ch.removeAttribute("class");
-		ch.removeAttribute("style");
-	},
-
-	_fixRootBlocks : function() {
-		var rb, b, ne, be, nx, bm;
-
-		rb = tinyMCE.getParam('forced_root_block');
-		if (!rb)
-			return;
-
-		b = this.getBody();
-		ne = b.firstChild;
-
-		while (ne) {
-			nx = ne.nextSibling;
-
-			// If text node or inline element wrap it in a block element
-			if ((ne.nodeType == 3 && ne.nodeValue.replace(/\s+/g, '') != '') || (ne.nodeType == 1 && !tinyMCE.blockRegExp.test(ne.nodeName))) {
-				if (!bm)
-					bm = this.selection.getBookmark();
-
-				if (!be) {
-					be = this.getDoc().createElement(rb);
-					be.appendChild(ne.cloneNode(true));
-					b.replaceChild(be, ne);
-				} else {
-					be.appendChild(ne.cloneNode(true));
-					b.removeChild(ne);
-				}
-			} else
-				be = null;
-
-			ne = nx;
-		}
-
-		if (bm)
-			this.selection.moveToBookmark(bm);
-	},
-
-	_fixTrailingNbsp : function() {
-		var s = this.selection, e = s.getFocusElement(), bm, v;
-
-		if (e && tinyMCE.blockRegExp.test(e.nodeName) && e.firstChild) {
-			v = e.firstChild.nodeValue;
-
-			if (v && v.length > 1 && /(^\u00a0|\u00a0$)/.test(v)) {
-				e.firstChild.nodeValue = v.replace(/(^\u00a0|\u00a0$)/, '');
-				s.selectNode(e.firstChild, true, false, false); // Select and collapse
-			}
-		}
-	},
-
-	_setUseCSS : function(b) {
-		var d = this.getDoc();
-
-		try {d.execCommand("useCSS", false, !b);} catch (ex) {}
-		try {d.execCommand("styleWithCSS", false, b);} catch (ex) {}
-
-		if (!tinyMCE.getParam("table_inline_editing"))
-			try {d.execCommand('enableInlineTableEditing', false, "false");} catch (ex) {}
-
-		if (!tinyMCE.getParam("object_resizing"))
-			try {d.execCommand('enableObjectResizing', false, "false");} catch (ex) {}
-	},
-
-	execCommand : function(command, user_interface, value) {
-		var i, x, z, align, img, div, doc = this.getDoc(), win = this.getWin(), focusElm = this.getFocusElement();
-
-		// Is not a undo specific command
-		if (!new RegExp('mceStartTyping|mceEndTyping|mceBeginUndoLevel|mceEndUndoLevel|mceAddUndoLevel', 'gi').test(command))
-			this.undoBookmark = null;
-
-		// Mozilla issue
-		if (!tinyMCE.isIE && !this.useCSS) {
-			this._setUseCSS(false);
-			this.useCSS = true;
-		}
-
-		//debug("command: " + command + ", user_interface: " + user_interface + ", value: " + value);
-		this.contentDocument = doc; // <-- Strange, unless this is applied Mozilla 1.3 breaks
-
-		// Don't dispatch key commands
-		if (!/mceStartTyping|mceEndTyping/.test(command)) {
-			if (tinyMCE.execCommandCallback(this, 'execcommand_callback', 'execCommand', this.editorId, this.getBody(), command, user_interface, value))
-				return;
-		}
-
-		// Fix align on images
-		if (focusElm && focusElm.nodeName == "IMG") {
-			align = focusElm.getAttribute('align');
-			img = command == "JustifyCenter" ? focusElm.cloneNode(false) : focusElm;
-
-			switch (command) {
-				case "JustifyLeft":
-					if (align == 'left') {
-						img.setAttribute('align', ''); // Needed for IE
-						img.removeAttribute('align');
-					} else
-						img.setAttribute('align', 'left');
-
-					// Remove the div
-					div = focusElm.parentNode;
-					if (div && div.nodeName == "DIV" && div.childNodes.length == 1 && div.parentNode)
-						div.parentNode.replaceChild(img, div);
-
-					this.selection.selectNode(img);
-					this.repaint();
-					tinyMCE.triggerNodeChange();
-					return;
-
-				case "JustifyCenter":
-					img.setAttribute('align', ''); // Needed for IE
-					img.removeAttribute('align');
-
-					// Is centered
-					div = tinyMCE.getParentElement(focusElm, "div");
-					if (div && div.style.textAlign == "center") {
-						// Remove div
-						if (div.nodeName == "DIV" && div.childNodes.length == 1 && div.parentNode)
-							div.parentNode.replaceChild(img, div);
-					} else {
-						// Add div
-						div = this.getDoc().createElement("div");
-						div.style.textAlign = 'center';
-						div.appendChild(img);
-						focusElm.parentNode.replaceChild(div, focusElm);
-					}
-
-					this.selection.selectNode(img);
-					this.repaint();
-					tinyMCE.triggerNodeChange();
-					return;
-
-				case "JustifyRight":
-					if (align == 'right') {
-						img.setAttribute('align', ''); // Needed for IE
-						img.removeAttribute('align');
-					} else
-						img.setAttribute('align', 'right');
-
-					// Remove the div
-					div = focusElm.parentNode;
-					if (div && div.nodeName == "DIV" && div.childNodes.length == 1 && div.parentNode)
-						div.parentNode.replaceChild(img, div);
-
-					this.selection.selectNode(img);
-					this.repaint();
-					tinyMCE.triggerNodeChange();
-					return;
-			}
-		}
-
-		if (tinyMCE.settings.force_br_newlines) {
-			var alignValue = "";
-
-			if (doc.selection.type != "Control") {
-				switch (command) {
-						case "JustifyLeft":
-							alignValue = "left";
-							break;
-
-						case "JustifyCenter":
-							alignValue = "center";
-							break;
-
-						case "JustifyFull":
-							alignValue = "justify";
-							break;
-
-						case "JustifyRight":
-							alignValue = "right";
-							break;
-				}
-
-				if (alignValue !== '') {
-					var rng = doc.selection.createRange();
-
-					if ((divElm = tinyMCE.getParentElement(rng.parentElement(), "div")) != null)
-						divElm.setAttribute("align", alignValue);
-					else if (rng.pasteHTML && rng.htmlText.length > 0)
-						rng.pasteHTML('<div align="' + alignValue + '">' + rng.htmlText + "</div>");
-
-					tinyMCE.triggerNodeChange();
-					return;
-				}
-			}
-		}
-
-		switch (command) {
-			case "mceRepaint":
-				this.repaint();
-				return true;
-
-			case "JustifyLeft":
-			case "JustifyCenter":
-			case "JustifyFull":
-			case "JustifyRight":
-				var el = tinyMCE.getParentNode(focusElm, function(n) {return tinyMCE.getAttrib(n, 'align');});
-
-				if (el) {
-					el.setAttribute('align', ''); // Needed for IE
-					el.removeAttribute('align');
-				} else
-					this.getDoc().execCommand(command, user_interface, value);
-
-				tinyMCE.triggerNodeChange();
-
-				return true;
-
-			case "unlink":
-				// Unlink if caret is inside link
-				if (tinyMCE.isGecko && this.getSel().isCollapsed) {
-					focusElm = tinyMCE.getParentElement(focusElm, 'A');
-
-					if (focusElm)
-						this.selection.selectNode(focusElm, false);
-				}
-
-				this.getDoc().execCommand(command, user_interface, value);
-
-				tinyMCE.isGecko && this.getSel().collapseToEnd();
-
-				tinyMCE.triggerNodeChange();
-
-				return true;
-
-			case "InsertUnorderedList":
-			case "InsertOrderedList":
-				this.getDoc().execCommand(command, user_interface, value);
-				tinyMCE.triggerNodeChange();
-				break;
-
-			case "Strikethrough":
-				this.getDoc().execCommand(command, user_interface, value);
-				tinyMCE.triggerNodeChange();
-				break;
-
-			case "mceSelectNode":
-				this.selection.selectNode(value);
-				tinyMCE.triggerNodeChange();
-				tinyMCE.selectedNode = value;
-				break;
-
-			case "FormatBlock":
-				if (value == null || value == '') {
-					var elm = tinyMCE.getParentElement(this.getFocusElement(), "p,div,h1,h2,h3,h4,h5,h6,pre,address,blockquote,dt,dl,dd,samp");
-
-					if (elm)
-						this.execCommand("mceRemoveNode", false, elm);
-				} else {
-					if (!this.cleanup.isValid(value))
-						return true;
-
-					if (tinyMCE.isGecko && new RegExp('<(div|blockquote|code|dt|dd|dl|samp)>', 'gi').test(value))
-						value = value.replace(/[^a-z]/gi, '');
-
-					if (tinyMCE.isIE && new RegExp('blockquote|code|samp', 'gi').test(value)) {
-						var b = this.selection.getBookmark();
-						this.getDoc().execCommand("FormatBlock", false, '<p>');
-						tinyMCE.renameElement(tinyMCE.getParentBlockElement(this.getFocusElement()), value);
-						this.selection.moveToBookmark(b);
-					} else
-						this.getDoc().execCommand("FormatBlock", false, value);
-				}
-
-				tinyMCE.triggerNodeChange();
-
-				break;
-
-			case "mceRemoveNode":
-				if (!value)
-					value = tinyMCE.getParentElement(this.getFocusElement());
-
-				if (tinyMCE.isIE) {
-					value.outerHTML = value.innerHTML;
-				} else {
-					var rng = value.ownerDocument.createRange();
-					rng.setStartBefore(value);
-					rng.setEndAfter(value);
-					rng.deleteContents();
-					rng.insertNode(rng.createContextualFragment(value.innerHTML));
-				}
-
-				tinyMCE.triggerNodeChange();
-
-				break;
-
-			case "mceSelectNodeDepth":
-				var parentNode = this.getFocusElement();
-				for (i=0; parentNode; i++) {
-					if (parentNode.nodeName.toLowerCase() == "body")
-						break;
-
-					if (parentNode.nodeName.toLowerCase() == "#text") {
-						i--;
-						parentNode = parentNode.parentNode;
-						continue;
-					}
-
-					if (i == value) {
-						this.selection.selectNode(parentNode, false);
-						tinyMCE.triggerNodeChange();
-						tinyMCE.selectedNode = parentNode;
-						return;
-					}
-
-					parentNode = parentNode.parentNode;
-				}
-
-				break;
-
-			case "mceSetStyleInfo":
-			case "SetStyleInfo":
-				var rng = this.getRng();
-				var sel = this.getSel();
-				var scmd = value.command;
-				var sname = value.name;
-				var svalue = value.value == null ? '' : value.value;
-				//var svalue = value['value'] == null ? '' : value['value'];
-				var wrapper = value.wrapper ? value.wrapper : "span";
-				var parentElm = null;
-				var invalidRe = new RegExp("^BODY|HTML$", "g");
-				var invalidParentsRe = tinyMCE.settings.merge_styles_invalid_parents !== '' ? new RegExp(tinyMCE.settings.merge_styles_invalid_parents, "gi") : null;
-
-				// Whole element selected check
-				if (tinyMCE.isIE) {
-					// Control range
-					if (rng.item)
-						parentElm = rng.item(0);
-					else {
-						var pelm = rng.parentElement();
-						var prng = doc.selection.createRange();
-						prng.moveToElementText(pelm);
-
-						if (rng.htmlText == prng.htmlText || rng.boundingWidth == 0) {
-							if (invalidParentsRe == null || !invalidParentsRe.test(pelm.nodeName))
-								parentElm = pelm;
-						}
-					}
-				} else {
-					var felm = this.getFocusElement();
-					if (sel.isCollapsed || (new RegExp('td|tr|tbody|table|img', 'gi').test(felm.nodeName) && sel.anchorNode == felm.parentNode))
-						parentElm = felm;
-				}
-
-				// Whole element selected
-				if (parentElm && !invalidRe.test(parentElm.nodeName)) {
-					if (scmd == "setstyle")
-						tinyMCE.setStyleAttrib(parentElm, sname, svalue);
-
-					if (scmd == "setattrib")
-						tinyMCE.setAttrib(parentElm, sname, svalue);
-
-					if (scmd == "removeformat") {
-						parentElm.style.cssText = '';
-						tinyMCE.setAttrib(parentElm, 'class', '');
-					}
-
-					// Remove style/attribs from all children
-					var ch = tinyMCE.getNodeTree(parentElm, [], 1);
-					for (z=0; z<ch.length; z++) {
-						if (ch[z] == parentElm)
-							continue;
-
-						if (scmd == "setstyle")
-							tinyMCE.setStyleAttrib(ch[z], sname, '');
-
-						if (scmd == "setattrib")
-							tinyMCE.setAttrib(ch[z], sname, '');
-
-						if (scmd == "removeformat") {
-							ch[z].style.cssText = '';
-							tinyMCE.setAttrib(ch[z], 'class', '');
-						}
-					}
-				} else {
-					this._setUseCSS(false); // Bug in FF when running in fullscreen
-					doc.execCommand("FontName", false, "#mce_temp_font#");
-					var elementArray = tinyMCE.getElementsByAttributeValue(this.getBody(), "font", "face", "#mce_temp_font#");
-
-					// Change them all
-					for (x=0; x<elementArray.length; x++) {
-						elm = elementArray[x];
-						if (elm) {
-							var spanElm = doc.createElement(wrapper);
-
-							if (scmd == "setstyle")
-								tinyMCE.setStyleAttrib(spanElm, sname, svalue);
-
-							if (scmd == "setattrib")
-								tinyMCE.setAttrib(spanElm, sname, svalue);
-
-							if (scmd == "removeformat") {
-								spanElm.style.cssText = '';
-								tinyMCE.setAttrib(spanElm, 'class', '');
-							}
-
-							if (elm.hasChildNodes()) {
-								for (i=0; i<elm.childNodes.length; i++)
-									spanElm.appendChild(elm.childNodes[i].cloneNode(true));
-							}
-
-							spanElm.setAttribute("mce_new", "true");
-							elm.parentNode.replaceChild(spanElm, elm);
-
-							// Remove style/attribs from all children
-							var ch = tinyMCE.getNodeTree(spanElm, [], 1);
-							for (z=0; z<ch.length; z++) {
-								if (ch[z] == spanElm)
-									continue;
-
-								if (scmd == "setstyle")
-									tinyMCE.setStyleAttrib(ch[z], sname, '');
-
-								if (scmd == "setattrib")
-									tinyMCE.setAttrib(ch[z], sname, '');
-
-								if (scmd == "removeformat") {
-									ch[z].style.cssText = '';
-									tinyMCE.setAttrib(ch[z], 'class', '');
-								}
-							}
-						}
-					}
-				}
-
-				// Cleaup wrappers
-				var nodes = doc.getElementsByTagName(wrapper);
-				for (i=nodes.length-1; i>=0; i--) {
-					var elm = nodes[i];
-					var isNew = tinyMCE.getAttrib(elm, "mce_new") == "true";
-
-					elm.removeAttribute("mce_new");
-
-					// Is only child a element
-					if (elm.childNodes && elm.childNodes.length == 1 && elm.childNodes[0].nodeType == 1) {
-						//tinyMCE.debug("merge1" + isNew);
-						this._mergeElements(scmd, elm, elm.childNodes[0], isNew);
-						continue;
-					}
-
-					// Is I the only child
-					if (elm.parentNode.childNodes.length == 1 && !invalidRe.test(elm.nodeName) && !invalidRe.test(elm.parentNode.nodeName)) {
-						//tinyMCE.debug("merge2" + isNew + "," + elm.nodeName + "," + elm.parentNode.nodeName);
-						if (invalidParentsRe == null || !invalidParentsRe.test(elm.parentNode.nodeName))
-							this._mergeElements(scmd, elm.parentNode, elm, false);
-					}
-				}
-
-				// Remove empty wrappers
-				var nodes = doc.getElementsByTagName(wrapper);
-				for (i=nodes.length-1; i>=0; i--) {
-					var elm = nodes[i], isEmpty = true;
-
-					// Check if it has any attribs
-					var tmp = doc.createElement("body");
-					tmp.appendChild(elm.cloneNode(false));
-
-					// Is empty span, remove it
-					tmp.innerHTML = tmp.innerHTML.replace(new RegExp('style=""|class=""', 'gi'), '');
-					//tinyMCE.debug(tmp.innerHTML);
-					if (new RegExp('<span>', 'gi').test(tmp.innerHTML)) {
-						for (x=0; x<elm.childNodes.length; x++) {
-							if (elm.parentNode != null)
-								elm.parentNode.insertBefore(elm.childNodes[x].cloneNode(true), elm);
-						}
-
-						elm.parentNode.removeChild(elm);
-					}
-				}
-
-				// Re add the visual aids
-				if (scmd == "removeformat")
-					tinyMCE.handleVisualAid(this.getBody(), true, this.visualAid, this);
-
-				tinyMCE.triggerNodeChange();
-
-				break;
-
-			case "FontName":
-				if (value == null) {
-					var s = this.getSel();
-
-					// Find font and select it
-					if (tinyMCE.isGecko && s.isCollapsed) {
-						var f = tinyMCE.getParentElement(this.getFocusElement(), "font");
-
-						if (f != null)
-							this.selection.selectNode(f, false);
-					}
-
-					// Remove format
-					this.getDoc().execCommand("RemoveFormat", false, null);
-
-					// Collapse range if font was found
-					if (f != null && tinyMCE.isGecko) {
-						var r = this.getRng().cloneRange();
-						r.collapse(true);
-						s.removeAllRanges();
-						s.addRange(r);
-					}
-				} else
-					this.getDoc().execCommand('FontName', false, value);
-
-				if (tinyMCE.isGecko)
-					window.setTimeout('tinyMCE.triggerNodeChange(false);', 1);
-
-				return;
-
-			case "FontSize":
-				this.getDoc().execCommand('FontSize', false, value);
-
-				if (tinyMCE.isGecko)
-					window.setTimeout('tinyMCE.triggerNodeChange(false);', 1);
-
-				return;
-
-			case "forecolor":
-				value = value == null ? this.foreColor : value;
-				value = tinyMCE.trim(value);
-				value = value.charAt(0) != '#' ? (isNaN('0x' + value) ? value : '#' + value) : value;
-
-				this.foreColor = value;
-				this.getDoc().execCommand('forecolor', false, value);
-				break;
-
-			case "HiliteColor":
-				value = value == null ? this.backColor : value;
-				value = tinyMCE.trim(value);
-				value = value.charAt(0) != '#' ? (isNaN('0x' + value) ? value : '#' + value) : value;
-				this.backColor = value;
-
-				if (tinyMCE.isGecko || tinyMCE.isOpera) {
-					this._setUseCSS(true);
-					this.getDoc().execCommand('hilitecolor', false, value);
-					this._setUseCSS(false);
-				} else
-					this.getDoc().execCommand('BackColor', false, value);
-				break;
-
-			case "Cut":
-			case "Copy":
-			case "Paste":
-				var cmdFailed = false;
-
-				// Try executing command
-				eval('try {this.getDoc().execCommand(command, user_interface, value);} catch (e) {cmdFailed = true;}');
-
-				if (tinyMCE.isOpera && cmdFailed)
-					alert('Currently not supported by your browser, use keyboard shortcuts instead.');
-
-				// Alert error in gecko if command failed
-				if (tinyMCE.isGecko && cmdFailed) {
-					// Confirm more info
-					if (confirm(tinyMCE.entityDecode(tinyMCE.getLang('lang_clipboard_msg'))))
-						window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html', 'mceExternal');
-
-					return;
-				} else
-					tinyMCE.triggerNodeChange();
-			break;
-
-			case "mceSetContent":
-				if (!value)
-					value = "";
-
-				// Call custom cleanup code
-				value = tinyMCE.storeAwayURLs(value);
-				value = tinyMCE._customCleanup(this, "insert_to_editor", value);
-
-				if (this.getBody().nodeName == 'BODY')
-					tinyMCE._setHTML(doc, value);
-				else
-					this.getBody().innerHTML = value;
-
-				tinyMCE.setInnerHTML(this.getBody(), tinyMCE._cleanupHTML(this, doc, this.settings, this.getBody(), false, false, false, true));
-				tinyMCE.convertAllRelativeURLs(this.getBody());
-
-				// Cleanup any mess left from storyAwayURLs
-				tinyMCE._removeInternal(this.getBody());
-
-				// When editing always use fonts internaly
-				if (tinyMCE.getParam("convert_fonts_to_spans"))
-					tinyMCE.convertSpansToFonts(doc);
-
-				tinyMCE.handleVisualAid(this.getBody(), true, this.visualAid, this);
-				tinyMCE._setEventsEnabled(this.getBody(), false);
-				this._addBogusBR();
-
-				return true;
-
-			case "mceCleanup":
-				var b = this.selection.getBookmark();
-				tinyMCE._setHTML(this.contentDocument, this.getBody().innerHTML);
-				tinyMCE.setInnerHTML(this.getBody(), tinyMCE._cleanupHTML(this, this.contentDocument, this.settings, this.getBody(), this.visualAid));
-				tinyMCE.convertAllRelativeURLs(doc.body);
-
-				// When editing always use fonts internaly
-				if (tinyMCE.getParam("convert_fonts_to_spans"))
-					tinyMCE.convertSpansToFonts(doc);
-
-				tinyMCE.handleVisualAid(this.getBody(), true, this.visualAid, this);
-				tinyMCE._setEventsEnabled(this.getBody(), false);
-				this._addBogusBR();
-				this.repaint();
-				this.selection.moveToBookmark(b);
-				tinyMCE.triggerNodeChange();
-			break;
-
-			case "mceReplaceContent":
-				// Force empty string
-				if (!value)
-					value = '';
-
-				this.getWin().focus();
-
-				var selectedText = "";
-
-				if (tinyMCE.isIE) {
-					var rng = doc.selection.createRange();
-					selectedText = rng.text;
-				} else
-					selectedText = this.getSel().toString();
-
-				if (selectedText.length > 0) {
-					value = tinyMCE.replaceVar(value, "selection", selectedText);
-					tinyMCE.execCommand('mceInsertContent', false, value);
-				}
-
-				this._addBogusBR();
-				tinyMCE.triggerNodeChange();
-			break;
-
-			case "mceSetAttribute":
-				if (typeof(value) == 'object') {
-					var targetElms = (typeof(value.targets) == "undefined") ? "p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address" : value.targets;
-					var targetNode = tinyMCE.getParentElement(this.getFocusElement(), targetElms);
-
-					if (targetNode) {
-						targetNode.setAttribute(value.name, value.value);
-						tinyMCE.triggerNodeChange();
-					}
-				}
-			break;
-
-			case "mceSetCSSClass":
-				this.execCommand("mceSetStyleInfo", false, {command : "setattrib", name : "class", value : value});
-			break;
-
-			case "mceInsertRawHTML":
-				var key = 'tiny_mce_marker';
-
-				this.execCommand('mceBeginUndoLevel');
-
-				// Insert marker key
-				this.execCommand('mceInsertContent', false, key);
-
-				// Store away scroll pos
-				var scrollX = this.getBody().scrollLeft + this.getDoc().documentElement.scrollLeft;
-				var scrollY = this.getBody().scrollTop + this.getDoc().documentElement.scrollTop;
-
-				// Find marker and replace with RAW HTML
-				var html = this.getBody().innerHTML;
-				if ((pos = html.indexOf(key)) != -1)
-					tinyMCE.setInnerHTML(this.getBody(), html.substring(0, pos) + value + html.substring(pos + key.length));
-
-				// Restore scoll pos
-				this.contentWindow.scrollTo(scrollX, scrollY);
-
-				this.execCommand('mceEndUndoLevel');
-
-				break;
-
-			case "mceInsertContent":
-				// Force empty string
-				if (!value)
-					value = '';
-
-				var insertHTMLFailed = false;
-
-				// Removed since it produced problems in IE
-				// this.getWin().focus();
-
-				if (tinyMCE.isGecko || tinyMCE.isOpera) {
-					try {
-						// Is plain text or HTML, &amp;, &nbsp; etc will be encoded wrong in FF
-						if (value.indexOf('<') == -1 && !value.match(/(&#38;|&#160;|&#60;|&#62;)/g)) {
-							var r = this.getRng();
-							var n = this.getDoc().createTextNode(tinyMCE.entityDecode(value));
-							var s = this.getSel();
-							var r2 = r.cloneRange();
-
-							// Insert text at cursor position
-							s.removeAllRanges();
-							r.deleteContents();
-							r.insertNode(n);
-
-							// Move the cursor to the end of text
-							r2.selectNode(n);
-							r2.collapse(false);
-							s.removeAllRanges();
-							s.addRange(r2);
-						} else {
-							value = tinyMCE.fixGeckoBaseHREFBug(1, this.getDoc(), value);
-							this.getDoc().execCommand('inserthtml', false, value);
-							tinyMCE.fixGeckoBaseHREFBug(2, this.getDoc(), value);
-						}
-					} catch (ex) {
-						insertHTMLFailed = true;
-					}
-
-					if (!insertHTMLFailed) {
-						tinyMCE.triggerNodeChange();
-						return;
-					}
-				}
-
-				if (!tinyMCE.isIE) {
-					var isHTML = value.indexOf('<') != -1;
-					var sel = this.getSel();
-					var rng = this.getRng();
-
-					if (isHTML) {
-						if (tinyMCE.isSafari) {
-							var tmpRng = this.getDoc().createRange();
-
-							tmpRng.setStart(this.getBody(), 0);
-							tmpRng.setEnd(this.getBody(), 0);
-
-							value = tmpRng.createContextualFragment(value);
-						} else
-							value = rng.createContextualFragment(value);
-					} else {
-						// Setup text node
-						value = doc.createTextNode(tinyMCE.entityDecode(value));
-					}
-
-					// Insert plain text in Safari
-					if (tinyMCE.isSafari && !isHTML) {
-						this.execCommand('InsertText', false, value.nodeValue);
-						tinyMCE.triggerNodeChange();
-						return true;
-					} else if (tinyMCE.isSafari && isHTML) {
-						rng.deleteContents();
-						rng.insertNode(value);
-						tinyMCE.triggerNodeChange();
-						return true;
-					}
-
-					rng.deleteContents();
-
-					// If target node is text do special treatment, (Mozilla 1.3 fix)
-					if (rng.startContainer.nodeType == 3) {
-						var node = rng.startContainer.splitText(rng.startOffset);
-						node.parentNode.insertBefore(value, node);
-					} else
-						rng.insertNode(value);
-
-					if (!isHTML) {
-						// Removes weird selection trails
-						sel.selectAllChildren(doc.body);
-						sel.removeAllRanges();
-
-						// Move cursor to end of content
-						var rng = doc.createRange();
-
-						rng.selectNode(value);
-						rng.collapse(false);
-
-						sel.addRange(rng);
-					} else
-						rng.collapse(false);
-
-					tinyMCE.fixGeckoBaseHREFBug(2, this.getDoc(), value);
-				} else {
-					var rng = doc.selection.createRange(), tmpRng = null;
-					var c = value.indexOf('<!--') != -1;
-
-					// Fix comment bug, add tag before comments
-					if (c)
-						value = tinyMCE.uniqueTag + value;
-
-					//	tmpRng = rng.duplicate(); // Store away range (Fixes Undo bookmark bug in IE)
-
-					if (rng.item)
-						rng.item(0).outerHTML = value;
-					else
-						rng.pasteHTML(value);
-
-					//if (tmpRng)
-					//	tmpRng.select(); // Restore range  (Fixes Undo bookmark bug in IE)
-
-					// Remove unique tag
-					if (c) {
-						var e = this.getDoc().getElementById('mceTMPElement');
-						e.parentNode.removeChild(e);
-					}
-				}
-
-				tinyMCE.execCommand("mceAddUndoLevel");
-				tinyMCE.triggerNodeChange();
-			break;
-
-			case "mceStartTyping":
-				if (tinyMCE.settings.custom_undo_redo && this.undoRedo.typingUndoIndex == -1) {
-					this.undoRedo.typingUndoIndex = this.undoRedo.undoIndex;
-					tinyMCE.typingUndoIndex = tinyMCE.undoIndex;
-					this.execCommand('mceAddUndoLevel');
-				}
-				break;
-
-			case "mceEndTyping":
-				if (tinyMCE.settings.custom_undo_redo && this.undoRedo.typingUndoIndex != -1) {
-					this.execCommand('mceAddUndoLevel');
-					this.undoRedo.typingUndoIndex = -1;
-				}
-
-				tinyMCE.typingUndoIndex = -1;
-				break;
-
-			case "mceBeginUndoLevel":
-				this.undoRedoLevel = false;
-				break;
-
-			case "mceEndUndoLevel":
-				this.undoRedoLevel = true;
-				this.execCommand('mceAddUndoLevel');
-				break;
-
-			case "mceAddUndoLevel":
-				if (tinyMCE.settings.custom_undo_redo && this.undoRedoLevel) {
-					if (this.undoRedo.add())
-						tinyMCE.triggerNodeChange(false);
-				}
-				break;
-
-			case "Undo":
-				if (tinyMCE.settings.custom_undo_redo) {
-					tinyMCE.execCommand("mceEndTyping");
-					this.undoRedo.undo();
-					tinyMCE.triggerNodeChange();
-				} else
-					this.getDoc().execCommand(command, user_interface, value);
-				break;
-
-			case "Redo":
-				if (tinyMCE.settings.custom_undo_redo) {
-					tinyMCE.execCommand("mceEndTyping");
-					this.undoRedo.redo();
-					tinyMCE.triggerNodeChange();
-				} else
-					this.getDoc().execCommand(command, user_interface, value);
-				break;
-
-			case "mceToggleVisualAid":
-				this.visualAid = !this.visualAid;
-				tinyMCE.handleVisualAid(this.getBody(), true, this.visualAid, this);
-				tinyMCE.triggerNodeChange();
-				break;
-
-			case "Indent":
-				this.getDoc().execCommand(command, user_interface, value);
-				tinyMCE.triggerNodeChange();
-
-				if (tinyMCE.isIE) {
-					var n = tinyMCE.getParentElement(this.getFocusElement(), "blockquote");
-					do {
-						if (n && n.nodeName == "BLOCKQUOTE") {
-							n.removeAttribute("dir");
-							n.removeAttribute("style");
-						}
-					} while (n != null && (n = n.parentNode) != null);
-				}
-				break;
-
-			case "RemoveFormat":
-			case "removeformat":
-				var text = this.selection.getSelectedText();
-
-				if (tinyMCE.isOpera) {
-					this.getDoc().execCommand("RemoveFormat", false, null);
-					return;
-				}
-
-				if (tinyMCE.isIE) {
-					try {
-						var rng = doc.selection.createRange();
-						rng.execCommand("RemoveFormat", false, null);
-					} catch (e) {
-						// Do nothing
-					}
-
-					this.execCommand("mceSetStyleInfo", false, {command : "removeformat"});
-				} else {
-					this.getDoc().execCommand(command, user_interface, value);
-
-					this.execCommand("mceSetStyleInfo", false, {command : "removeformat"});
-				}
-
-				// Remove class
-				if (text.length == 0)
-					this.execCommand("mceSetCSSClass", false, "");
-
-				tinyMCE.triggerNodeChange();
-				break;
-
-			default:
-				this.getDoc().execCommand(command, user_interface, value);
-
-				if (tinyMCE.isGecko)
-					window.setTimeout('tinyMCE.triggerNodeChange(false);', 1);
-				else
-					tinyMCE.triggerNodeChange();
-		}
-
-		// Add undo level after modification
-		if (command != "mceAddUndoLevel" && command != "Undo" && command != "Redo" && command != "mceStartTyping" && command != "mceEndTyping")
-			tinyMCE.execCommand("mceAddUndoLevel");
-	},
-
-	queryCommandValue : function(c) {
-		try {
-			return this.getDoc().queryCommandValue(c);
-		} catch (e) {
-			return null;
-		}
-	},
-
-	queryCommandState : function(c) {
-		return this.getDoc().queryCommandState(c);
-	},
-
-	_addBogusBR : function() {
-		var b = this.getBody();
-
-		if (tinyMCE.isGecko && !b.hasChildNodes())
-			b.innerHTML = '<br _moz_editor_bogus_node="TRUE" />';
-	},
-
-	_onAdd : function(replace_element, form_element_name, target_document) {
-		var hc, th, tos, editorTemplate, targetDoc, deltaWidth, deltaHeight, html, rng, fragment;
-		var dynamicIFrame, tElm, doc, parentElm;
-
-		th = this.settings.theme;
-		tos = tinyMCE.themes[th];
-
-		targetDoc = target_document ? target_document : document;
-
-		this.targetDoc = targetDoc;
-
-		tinyMCE.themeURL = tinyMCE.baseURL + "/themes/" + this.settings.theme;
-		this.settings.themeurl = tinyMCE.themeURL;
-
-		if (!replace_element) {
-			alert("Error: Could not find the target element.");
-			return false;
-		}
-
-		if (tos.getEditorTemplate)
-			editorTemplate = tos.getEditorTemplate(this.settings, this.editorId);
-
-		deltaWidth = editorTemplate.delta_width ? editorTemplate.delta_width : 0;
-		deltaHeight = editorTemplate.delta_height ? editorTemplate.delta_height : 0;
-		html = '<span id="' + this.editorId + '_parent" class="mceEditorContainer">' + editorTemplate.html;
-
-		html = tinyMCE.replaceVar(html, "editor_id", this.editorId);
-
-		if (!this.settings.default_document)
-			this.settings.default_document = tinyMCE.baseURL + "/blank.htm";
-
-		this.settings.old_width = this.settings.width;
-		this.settings.old_height = this.settings.height;
-
-		// Set default width, height
-		if (this.settings.width == -1)
-			this.settings.width = replace_element.offsetWidth;
-
-		if (this.settings.height == -1)
-			this.settings.height = replace_element.offsetHeight;
-
-		// Try the style width
-		if (this.settings.width == 0)
-			this.settings.width = replace_element.style.width;
-
-		// Try the style height
-		if (this.settings.height == 0)
-			this.settings.height = replace_element.style.height;
-
-		// If no width/height then default to 320x240, better than nothing
-		if (this.settings.width == 0)
-			this.settings.width = 320;
-
-		if (this.settings.height == 0)
-			this.settings.height = 240;
-
-		this.settings.area_width = parseInt(this.settings.width);
-		this.settings.area_height = parseInt(this.settings.height);
-		this.settings.area_width += deltaWidth;
-		this.settings.area_height += deltaHeight;
-		this.settings.width_style = "" + this.settings.width;
-		this.settings.height_style = "" + this.settings.height;
-
-		// Special % handling
-		if (("" + this.settings.width).indexOf('%') != -1)
-			this.settings.area_width = "100%";
-		else
-			this.settings.width_style += 'px';
-
-		if (("" + this.settings.height).indexOf('%') != -1)
-			this.settings.area_height = "100%";
-		else
-			this.settings.height_style += 'px';
-
-		if (("" + replace_element.style.width).indexOf('%') != -1) {
-			this.settings.width = replace_element.style.width;
-			this.settings.area_width = "100%";
-			this.settings.width_style = "100%";
-		}
-
-		if (("" + replace_element.style.height).indexOf('%') != -1) {
-			this.settings.height = replace_element.style.height;
-			this.settings.area_height = "100%";
-			this.settings.height_style = "100%";
-		}
-
-		html = tinyMCE.applyTemplate(html);
-
-		this.settings.width = this.settings.old_width;
-		this.settings.height = this.settings.old_height;
-
-		this.visualAid = this.settings.visual;
-		this.formTargetElementId = form_element_name;
-
-		// Get replace_element contents
-		if (replace_element.nodeName == "TEXTAREA" || replace_element.nodeName == "INPUT")
-			this.startContent = replace_element.value;
-		else
-			this.startContent = replace_element.innerHTML;
-
-		// If not text area or input
-		if (replace_element.nodeName != "TEXTAREA" && replace_element.nodeName != "INPUT") {
-			this.oldTargetElement = replace_element;
-
-			// Debug mode
-			hc = '<input type="hidden" id="' + form_element_name + '" name="' + form_element_name + '" />';
-			this.oldTargetDisplay = tinyMCE.getStyle(this.oldTargetElement, 'display', 'inline');
-			this.oldTargetElement.style.display = "none";
-
-			html += '</span>';
-
-			if (tinyMCE.isGecko)
-				html = hc + html;
-			else
-				html += hc;
-
-			// Output HTML and set editable
-			if (tinyMCE.isGecko) {
-				rng = replace_element.ownerDocument.createRange();
-				rng.setStartBefore(replace_element);
-
-				fragment = rng.createContextualFragment(html);
-				tinyMCE.insertAfter(fragment, replace_element);
-			} else
-				replace_element.insertAdjacentHTML("beforeBegin", html);
-		} else {
-			html += '</span>';
-
-			// Just hide the textarea element
-			this.oldTargetElement = replace_element;
-
-			this.oldTargetDisplay = tinyMCE.getStyle(this.oldTargetElement, 'display', 'inline');
-			this.oldTargetElement.style.display = "none";
-
-			// Output HTML and set editable
-			if (tinyMCE.isGecko) {
-				rng = replace_element.ownerDocument.createRange();
-				rng.setStartBefore(replace_element);
-
-				fragment = rng.createContextualFragment(html);
-				tinyMCE.insertAfter(fragment, replace_element);
-			} else
-				replace_element.insertAdjacentHTML("beforeBegin", html);
-		}
-
-		// Setup iframe
-		dynamicIFrame = false;
-		tElm = targetDoc.getElementById(this.editorId);
-
-		if (!tinyMCE.isIE) {
-			// Node case is preserved in XML strict mode
-			if (tElm && (tElm.nodeName == "SPAN" || tElm.nodeName == "span")) {
-				tElm = tinyMCE._createIFrame(tElm, targetDoc);
-				dynamicIFrame = true;
-			}
-
-			this.targetElement = tElm;
-			this.iframeElement = tElm;
-			this.contentDocument = tElm.contentDocument;
-			this.contentWindow = tElm.contentWindow;
-
-			//this.getDoc().designMode = "on";
-		} else {
-			if (tElm && tElm.nodeName == "SPAN")
-				tElm = tinyMCE._createIFrame(tElm, targetDoc, targetDoc.parentWindow);
-			else
-				tElm = targetDoc.frames[this.editorId];
-
-			this.targetElement = tElm;
-			this.iframeElement = targetDoc.getElementById(this.editorId);
-
-			if (tinyMCE.isOpera) {
-				this.contentDocument = this.iframeElement.contentDocument;
-				this.contentWindow = this.iframeElement.contentWindow;
-				dynamicIFrame = true;
-			} else {
-				this.contentDocument = tElm.window.document;
-				this.contentWindow = tElm.window;
-			}
-
-			this.getDoc().designMode = "on";
-		}
-
-		// Setup base HTML
-		doc = this.contentDocument;
-		if (dynamicIFrame) {
-			html = tinyMCE.getParam('doctype') + '<html><head xmlns="http://www.w3.org/1999/xhtml"><base href="' + tinyMCE.settings.base_href + '" /><title>blank_page</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body class="mceContentBody"></body></html>';
-
-			try {
-				if (!this.isHidden())
-					this.getDoc().designMode = "on";
-
-				doc.open();
-				doc.write(html);
-				doc.close();
-			} catch (e) {
-				// Failed Mozilla 1.3
-				this.getDoc().location.href = tinyMCE.baseURL + "/blank.htm";
-			}
-		}
-
-		// This timeout is needed in MSIE 5.5 for some odd reason
-		// it seems that the document.frames isn't initialized yet?
-		if (tinyMCE.isIE)
-			window.setTimeout("tinyMCE.addEventHandlers(tinyMCE.instances[\"" + this.editorId + "\"]);", 1);
-
-		// Setup element references
-		parentElm = this.targetDoc.getElementById(this.editorId + '_parent');
-		this.formElement = tinyMCE.isGecko ? parentElm.previousSibling : parentElm.nextSibling;
-
-		tinyMCE.setupContent(this.editorId, true);
-
-		return true;
-	},
-
-	setBaseHREF : function(u) {
-		var h, b, d, nl;
-
-		d = this.getDoc();
-		nl = d.getElementsByTagName("base");
-		b = nl.length > 0 ? nl[0] : null;
-
-		if (!b) {
-			nl = d.getElementsByTagName("head");
-			h = nl.length > 0 ? nl[0] : null;
-
-			b = d.createElement("base");
-			b.setAttribute('href', u);
-			h.appendChild(b);
-		} else {
-			if (u == '' || u == null)
-				b.parentNode.removeChild(b);
-			else
-				b.setAttribute('href', u);
-		}
-	},
-
-	getHTML : function(r) {
-		var h, d = this.getDoc(), b = this.getBody();
-
-		if (r)
-			return b.innerHTML;
-
-		h = tinyMCE._cleanupHTML(this, d, this.settings, b, false, true, false, true);
-
-		if (tinyMCE.getParam("convert_fonts_to_spans"))
-			tinyMCE.convertSpansToFonts(d);
-
-		return h;
-	},
-
-	setHTML : function(h) {
-		this.execCommand('mceSetContent', false, h);
-		this.repaint();
-	},
-
-	getFocusElement : function() {
-		return this.selection.getFocusElement();
-	},
-
-	getSel : function() {
-		return this.selection.getSel();
-	},
-
-	getRng : function() {
-		return this.selection.getRng();
-	},
-
-	triggerSave : function(skip_cleanup, skip_callback) {
-		var e, nl = [], i, s, content, htm;
-
-		if (!this.enabled)
-			return;
-
-		this.switchSettings();
-		s = tinyMCE.settings;
-
-		// Force hidden tabs visible while serializing
-		if (tinyMCE.isRealIE) {
-			e = this.iframeElement;
-
-			do {
-				if (e.style && e.style.display == 'none') {
-					e.style.display = 'block';
-					nl[nl.length] = {elm : e, type : 'style'};
-				}
-
-				if (e.style && s.hidden_tab_class.length > 0 && e.className.indexOf(s.hidden_tab_class) != -1) {
-					e.className = s.display_tab_class;
-					nl[nl.length] = {elm : e, type : 'class'};
-				}
-			} while ((e = e.parentNode) != null)
-		}
-
-		tinyMCE.settings.preformatted = false;
-
-		// Default to false
-		if (typeof(skip_cleanup) == "undefined")
-			skip_cleanup = false;
-
-		// Default to false
-		if (typeof(skip_callback) == "undefined")
-			skip_callback = false;
-
-		tinyMCE._setHTML(this.getDoc(), this.getBody().innerHTML);
-
-		// Remove visual aids when cleanup is disabled
-		if (this.settings.cleanup == false) {
-			tinyMCE.handleVisualAid(this.getBody(), true, false, this);
-			tinyMCE._setEventsEnabled(this.getBody(), true);
-		}
-
-		tinyMCE._customCleanup(this, "submit_content_dom", this.contentWindow.document.body);
-		htm = skip_cleanup ? this.getBody().innerHTML : tinyMCE._cleanupHTML(this, this.getDoc(), this.settings, this.getBody(), tinyMCE.visualAid, true, true);
-		htm = tinyMCE._customCleanup(this, "submit_content", htm);
-
-		if (!skip_callback && tinyMCE.settings.save_callback !== '')
-			content = tinyMCE.resolveDots(tinyMCE.settings.save_callback, window)(this.formTargetElementId,htm,this.getBody());
-
-		// Use callback content if available
-		if ((typeof(content) != "undefined") && content != null)
-			htm = content;
-
-		// Replace some weird entities (Bug: #1056343)
-		htm = tinyMCE.regexpReplace(htm, "&#40;", "(", "gi");
-		htm = tinyMCE.regexpReplace(htm, "&#41;", ")", "gi");
-		htm = tinyMCE.regexpReplace(htm, "&#59;", ";", "gi");
-		htm = tinyMCE.regexpReplace(htm, "&#34;", "&quot;", "gi");
-		htm = tinyMCE.regexpReplace(htm, "&#94;", "^", "gi");
-
-		if (this.formElement)
-			this.formElement.value = htm;
-
-		if (tinyMCE.isSafari && this.formElement)
-			this.formElement.innerText = htm;
-
-		// Hide them again (tabs in MSIE)
-		for (i=0; i<nl.length; i++) {
-			if (nl[i].type == 'style')
-				nl[i].elm.style.display = 'none';
-			else
-				nl[i].elm.className = s.hidden_tab_class;
-		}
-	}
-
-	};
-
-/* file:jscripts/tiny_mce/classes/TinyMCE_Cleanup.class.js */
-
-tinyMCE.add(TinyMCE_Engine, {
-	cleanupHTMLCode : function(s) {
-		s = s.replace(new RegExp('<p \\/>', 'gi'), '<p>&nbsp;</p>');
-		s = s.replace(new RegExp('<p>\\s*<\\/p>', 'gi'), '<p>&nbsp;</p>');
-
-		// Fix close BR elements
-		s = s.replace(new RegExp('<br>\\s*<\\/br>', 'gi'), '<br />');
-
-		// Open closed tags like <b/> to <b></b>
-		s = s.replace(new RegExp('<(h[1-6]|p|div|address|pre|form|table|li|ol|ul|td|b|font|em|strong|i|strike|u|span|a|ul|ol|li|blockquote)([a-z]*)([^\\\\|>]*)\\/>', 'gi'), '<$1$2$3></$1$2>');
-
-		// Remove trailing space <b > to <b>
-		s = s.replace(new RegExp('\\s+></', 'gi'), '></');
-
-		// Close tags <img></img> to <img/>
-		s = s.replace(new RegExp('<(img|br|hr)([^>]*)><\\/(img|br|hr)>', 'gi'), '<$1$2 />');
-
-		// Weird MSIE bug, <p><hr /></p> breaks runtime?
-		if (tinyMCE.isIE)
-			s = s.replace(new RegExp('<p><hr \\/><\\/p>', 'gi'), "<hr>");
-
-		// Weird tags will make IE error #bug: 1538495
-		if (tinyMCE.isIE)
-			s = s.replace(/<!(\s*)\/>/g, '');
-
-		// Convert relative anchors to absolute URLs ex: #something to file.htm#something
-		// Removed: Since local document anchors should never be forced absolute example edit.php?id=something
-		//if (tinyMCE.getParam('convert_urls'))
-		//	s = s.replace(new RegExp('(href=\"{0,1})(\\s*#)', 'gi'), '$1' + tinyMCE.settings.document_base_url + "#");
-
-		return s;
-	},
-
-	parseStyle : function(str) {
-		var ar = [], st, i, re, pa;
-
-		if (str == null)
-			return ar;
-
-		st = str.split(';');
-
-		tinyMCE.clearArray(ar);
-
-		for (i=0; i<st.length; i++) {
-			if (st[i] == '')
-				continue;
-
-			re = new RegExp('^\\s*([^:]*):\\s*(.*)\\s*$');
-			pa = st[i].replace(re, '$1||$2').split('||');
-	//tinyMCE.debug(str, pa[0] + "=" + pa[1], st[i].replace(re, '$1||$2'));
-			if (pa.length == 2)
-				ar[pa[0].toLowerCase()] = pa[1];
-		}
-
-		return ar;
-	},
-
-	compressStyle : function(ar, pr, sf, res) {
-		var box = [], i, a;
-
-		box[0] = ar[pr + '-top' + sf];
-		box[1] = ar[pr + '-left' + sf];
-		box[2] = ar[pr + '-right' + sf];
-		box[3] = ar[pr + '-bottom' + sf];
-
-		for (i=0; i<box.length; i++) {
-			if (box[i] == null)
-				return;
-
-			if (i && box[i] != box[i-1])
-				return;
-		}
-
-		// They are all the same
-		ar[res] = box[0];
-		ar[pr + '-top' + sf] = null;
-		ar[pr + '-left' + sf] = null;
-		ar[pr + '-right' + sf] = null;
-		ar[pr + '-bottom' + sf] = null;
-	},
-
-	serializeStyle : function(ar) {
-		var str = "", key, val, m;
-
-		// Compress box
-		tinyMCE.compressStyle(ar, "border", "", "border");
-		tinyMCE.compressStyle(ar, "border", "-width", "border-width");
-		tinyMCE.compressStyle(ar, "border", "-color", "border-color");
-		tinyMCE.compressStyle(ar, "border", "-style", "border-style");
-		tinyMCE.compressStyle(ar, "padding", "", "padding");
-		tinyMCE.compressStyle(ar, "margin", "", "margin");
-
-		for (key in ar) {
-			val = ar[key];
-
-			if (typeof(val) == 'function')
-				continue;
-
-			if (key.indexOf('mso-') == 0)
-				continue;
-
-			if (val != null && val !== '') {
-				val = '' + val; // Force string
-
-				// Fix style URL
-				val = val.replace(new RegExp("url\\(\\'?([^\\']*)\\'?\\)", 'gi'), "url('$1')");
-
-				// Convert URL
-				if (val.indexOf('url(') != -1 && tinyMCE.getParam('convert_urls')) {
-					m = new RegExp("url\\('(.*?)'\\)").exec(val);
-
-					if (m.length > 1)
-						val = "url('" + eval(tinyMCE.getParam('urlconverter_callback') + "(m[1], null, true);") + "')";
-				}
-
-				// Force HEX colors
-				if (tinyMCE.getParam("force_hex_style_colors"))
-					val = tinyMCE.convertRGBToHex(val, true);
-
-				val = val.replace(/\"/g, '\'');
-
-				if (val != "url('')")
-					str += key.toLowerCase() + ": " + val + "; ";
-			}
-		}
-
-		if (new RegExp('; $').test(str))
-			str = str.substring(0, str.length - 2);
-
-		return str;
-	},
-
-	convertRGBToHex : function(s, k) {
-		var re, rgb;
-
-		if (s.toLowerCase().indexOf('rgb') != -1) {
-			re = new RegExp("(.*?)rgb\\s*?\\(\\s*?([0-9]+).*?,\\s*?([0-9]+).*?,\\s*?([0-9]+).*?\\)(.*?)", "gi");
-			rgb = s.replace(re, "$1,$2,$3,$4,$5").split(',');
-
-			if (rgb.length == 5) {
-				r = parseInt(rgb[1]).toString(16);
-				g = parseInt(rgb[2]).toString(16);
-				b = parseInt(rgb[3]).toString(16);
-
-				r = r.length == 1 ? '0' + r : r;
-				g = g.length == 1 ? '0' + g : g;
-				b = b.length == 1 ? '0' + b : b;
-
-				s = "#" + r + g + b;
-
-				if (k)
-					s = rgb[0] + s + rgb[4];
-			}
-		}
-
-		return s;
-	},
-
-	convertHexToRGB : function(s) {
-		if (s.indexOf('#') != -1) {
-			s = s.replace(new RegExp('[^0-9A-F]', 'gi'), '');
-			return "rgb(" + parseInt(s.substring(0, 2), 16) + "," + parseInt(s.substring(2, 4), 16) + "," + parseInt(s.substring(4, 6), 16) + ")";
-		}
-
-		return s;
-	},
-
-	convertSpansToFonts : function(doc) {
-		var s, i, size, fSize, x, fFace, fColor, sizes = tinyMCE.getParam('font_size_style_values').replace(/\s+/, '').split(',');
-
-		s = tinyMCE.selectElements(doc, 'span,font');
-		for (i=0; i<s.length; i++) {
-			size = tinyMCE.trim(s[i].style.fontSize).toLowerCase();
-			fSize = 0;
-
-			for (x=0; x<sizes.length; x++) {
-				if (sizes[x] == size) {
-					fSize = x + 1;
-					break;
-				}
-			}
-
-			if (fSize > 0) {
-				tinyMCE.setAttrib(s[i], 'size', fSize);
-				s[i].style.fontSize = '';
-			}
-
-			fFace = s[i].style.fontFamily;
-			if (fFace != null && fFace !== '') {
-				tinyMCE.setAttrib(s[i], 'face', fFace);
-				s[i].style.fontFamily = '';
-			}
-
-			fColor = s[i].style.color;
-			if (fColor != null && fColor !== '') {
-				tinyMCE.setAttrib(s[i], 'color', tinyMCE.convertRGBToHex(fColor));
-				s[i].style.color = '';
-			}
-		}
-	},
-
-	convertFontsToSpans : function(doc) {
-		var fsClasses, s, i, fSize, fFace, fColor, sizes = tinyMCE.getParam('font_size_style_values').replace(/\s+/, '').split(',');
-
-		fsClasses = tinyMCE.getParam('font_size_classes');
-		if (fsClasses !== '')
-			fsClasses = fsClasses.replace(/\s+/, '').split(',');
-		else
-			fsClasses = null;
-
-		s = tinyMCE.selectElements(doc, 'span,font');
-		for (i=0; i<s.length; i++) {
-			fSize = tinyMCE.getAttrib(s[i], 'size');
-			fFace = tinyMCE.getAttrib(s[i], 'face');
-			fColor = tinyMCE.getAttrib(s[i], 'color');
-
-			if (fSize !== '') {
-				fSize = parseInt(fSize);
-
-				if (fSize > 0 && fSize < 8) {
-					if (fsClasses != null)
-						tinyMCE.setAttrib(s[i], 'class', fsClasses[fSize-1]);
-					else
-						s[i].style.fontSize = sizes[fSize-1];
-				}
-
-				s[i].removeAttribute('size');
-			}
-
-			if (fFace !== '') {
-				s[i].style.fontFamily = fFace;
-				s[i].removeAttribute('face');
-			}
-
-			if (fColor !== '') {
-				s[i].style.color = fColor;
-				s[i].removeAttribute('color');
-			}
-		}
-	},
-
-	cleanupAnchors : function(doc) {
-		var i, cn, x, an = doc.getElementsByTagName("a");
-
-		// Loops backwards due to bug #1467987
-		for (i=an.length-1; i>=0; i--) {
-			if (tinyMCE.getAttrib(an[i], "name") !== '' && tinyMCE.getAttrib(an[i], "href") == '') {
-				cn = an[i].childNodes;
-
-				for (x=cn.length-1; x>=0; x--)
-					tinyMCE.insertAfter(cn[x], an[i]);
-			}
-		}
-	},
-
-	getContent : function(editor_id) {
-		if (typeof(editor_id) != "undefined")
-			 tinyMCE.getInstanceById(editor_id).select();
-
-		if (tinyMCE.selectedInstance)
-			return tinyMCE.selectedInstance.getHTML();
-
-		return null;
-	},
-
-	_fixListElements : function(d) {
-		var nl, x, a = ['ol', 'ul'], i, n, p, r = new RegExp('^(OL|UL)$'), np;
-
-		for (x=0; x<a.length; x++) {
-			nl = d.getElementsByTagName(a[x]);
-
-			for (i=0; i<nl.length; i++) {
-				n = nl[i];
-				p = n.parentNode;
-
-				if (r.test(p.nodeName)) {
-					np = tinyMCE.prevNode(n, 'LI');
-
-					if (!np) {
-						np = d.createElement('li');
-						np.innerHTML = '&nbsp;';
-						np.appendChild(n);
-						p.insertBefore(np, p.firstChild);
-					} else
-						np.appendChild(n);
-				}
-			}
-		}
-	},
-
-	_fixTables : function(d) {
-		var nl, i, n, p, np, x, t;
-
-		nl = d.getElementsByTagName('table');
-		for (i=0; i<nl.length; i++) {
-			n = nl[i];
-
-			if ((p = tinyMCE.getParentElement(n, 'p,h1,h2,h3,h4,h5,h6')) != null) {
-				np = p.cloneNode(false);
-				np.removeAttribute('id');
-
-				t = n;
-
-				while ((n = n.nextSibling))
-					np.appendChild(n);
-
-				tinyMCE.insertAfter(np, p);
-				tinyMCE.insertAfter(t, p);
-			}
-		}
-	},
-
-	_cleanupHTML : function(inst, doc, config, elm, visual, on_save, on_submit, inn) {
-		var h, d, t1, t2, t3, t4, t5, c, s, nb;
-
-		if (!tinyMCE.getParam('cleanup'))
-			return elm.innerHTML;
-
-		on_save = typeof(on_save) == 'undefined' ? false : on_save;
-
-		c = inst.cleanup;
-		s = inst.settings;
-		d = c.settings.debug;
-
-		if (d)
-			t1 = new Date().getTime();
-
-		inst._fixRootBlocks();
-
-		if (tinyMCE.getParam("convert_fonts_to_spans"))
-			tinyMCE.convertFontsToSpans(doc);
-
-		if (tinyMCE.getParam("fix_list_elements"))
-			tinyMCE._fixListElements(doc);
-
-		if (tinyMCE.getParam("fix_table_elements"))
-			tinyMCE._fixTables(doc);
-
-		// Call custom cleanup code
-		tinyMCE._customCleanup(inst, on_save ? "get_from_editor_dom" : "insert_to_editor_dom", doc.body);
-
-		if (d)
-			t2 = new Date().getTime();
-
-		c.settings.on_save = on_save;
-
-		c.idCount = 0;
-		c.serializationId++; // Unique ID needed for the content duplication bug
-		c.serializedNodes = [];
-		c.sourceIndex = -1;
-
-		if (s.cleanup_serializer == "xml")
-			h = c.serializeNodeAsXML(elm, inn);
-		else
-			h = c.serializeNodeAsHTML(elm, inn);
-
-		if (d)
-			t3 = new Date().getTime();
-
-		// Post processing
-		nb = tinyMCE.getParam('entity_encoding') == 'numeric' ? '&#160;' : '&nbsp;';
-		h = h.replace(/<\/?(body|head|html)[^>]*>/gi, '');
-		h = h.replace(new RegExp(' (rowspan="1"|colspan="1")', 'g'), '');
-		h = h.replace(/<p><hr \/><\/p>/g, '<hr />');
-		h = h.replace(/<p>(&nbsp;|&#160;)<\/p><hr \/><p>(&nbsp;|&#160;)<\/p>/g, '<hr />');
-		h = h.replace(/<td>\s*<br \/>\s*<\/td>/g, '<td>' + nb + '</td>');
-		h = h.replace(/<p>\s*<br \/>\s*<\/p>/g, '<p>' + nb + '</p>');
-		h = h.replace(/<br \/>$/, ''); // Remove last BR for Gecko
-		h = h.replace(/<br \/><\/p>/g, '</p>'); // Remove last BR in P tags for Gecko
-		h = h.replace(/<p>\s*(&nbsp;|&#160;)\s*<br \/>\s*(&nbsp;|&#160;)\s*<\/p>/g, '<p>' + nb + '</p>');
-		h = h.replace(/<p>\s*(&nbsp;|&#160;)\s*<br \/>\s*<\/p>/g, '<p>' + nb + '</p>');
-		h = h.replace(/<p>\s*<br \/>\s*&nbsp;\s*<\/p>/g, '<p>' + nb + '</p>');
-		h = h.replace(new RegExp('<a>(.*?)<\\/a>', 'g'), '$1');
-		h = h.replace(/<p([^>]*)>\s*<\/p>/g, '<p$1>' + nb + '</p>');
-
-		// Clean body
-		if (/^\s*(<br \/>|<p>&nbsp;<\/p>|<p>&#160;<\/p>|<p><\/p>)\s*$/.test(h))
-			h = '';
-
-		// If preformatted
-		if (s.preformatted) {
-			h = h.replace(/^<pre>/, '');
-			h = h.replace(/<\/pre>$/, '');
-			h = '<pre>' + h + '</pre>';
-		}
-
-		// Gecko specific processing
-		if (tinyMCE.isGecko) {
-			// Makes no sence but FF generates it!!
-			h = h.replace(/<br \/>\s*<\/li>/g, '</li>');
-			h = h.replace(/&nbsp;\s*<\/(dd|dt)>/g, '</$1>');
-			h = h.replace(/<o:p _moz-userdefined="" \/>/g, '');
-			h = h.replace(/<td([^>]*)>\s*<br \/>\s*<\/td>/g, '<td$1>' + nb + '</td>');
-		}
-
-		if (s.force_br_newlines)
-			h = h.replace(/<p>(&nbsp;|&#160;)<\/p>/g, '<br />');
-
-		// Call custom cleanup code
-		h = tinyMCE._customCleanup(inst, on_save ? "get_from_editor" : "insert_to_editor", h);
-
-		// Remove internal classes
-		if (on_save) {
-			h = h.replace(new RegExp(' ?(mceItem[a-zA-Z0-9]*|' + s.visual_table_class + ')', 'g'), '');
-			h = h.replace(new RegExp(' ?class=""', 'g'), '');
-		}
-
-		if (s.remove_linebreaks && !c.settings.indent)
-			h = h.replace(/\n|\r/g, ' ');
-
-		if (d)
-			t4 = new Date().getTime();
-
-		if (on_save && c.settings.indent)
-			h = c.formatHTML(h);
-
-		// If encoding (not recommended option)
-		if (on_submit && (s.encoding == "xml" || s.encoding == "html"))
-			h = c.xmlEncode(h);
-
-		if (d)
-			t5 = new Date().getTime();
-
-		if (c.settings.debug)
-			tinyMCE.debug("Cleanup in ms: Pre=" + (t2-t1) + ", Serialize: " + (t3-t2) + ", Post: " + (t4-t3) + ", Format: " + (t5-t4) + ", Sum: " + (t5-t1) + ".");
-
-		return h;
-	}
-});
-
-function TinyMCE_Cleanup() {
-	this.isIE = (navigator.appName == "Microsoft Internet Explorer");
-	this.rules = tinyMCE.clearArray([]);
-
-	// Default config
-	this.settings = {
-		indent_elements : 'head,table,tbody,thead,tfoot,form,tr,ul,ol,blockquote,object',
-		newline_before_elements : 'h1,h2,h3,h4,h5,h6,pre,address,div,ul,ol,li,meta,option,area,title,link,base,script,td',
-		newline_after_elements : 'br,hr,p,pre,address,div,ul,ol,meta,option,area,link,base,script',
-		newline_before_after_elements : 'html,head,body,table,thead,tbody,tfoot,tr,form,ul,ol,blockquote,p,object,param,hr,div',
-		indent_char : '\t',
-		indent_levels : 1,
-		entity_encoding : 'raw',
-		valid_elements : '*[*]',
-		entities : '',
-		url_converter : '',
-		invalid_elements : '',
-		verify_html : false
-	};
-
-	this.vElements = tinyMCE.clearArray([]);
-	this.vElementsRe = '';
-	this.closeElementsRe = /^(IMG|BR|HR|LINK|META|BASE|INPUT|AREA)$/;
-	this.codeElementsRe = /^(SCRIPT|STYLE)$/;
-	this.serializationId = 0;
-	this.mceAttribs = {
-		href : 'mce_href',
-		src : 'mce_src',
-		type : 'mce_type'
-	};
-}
-
-TinyMCE_Cleanup.prototype = {
-	init : function(s) {
-		var n, a, i, ir, or, st;
-
-		for (n in s)
-			this.settings[n] = s[n];
-
-		// Setup code formating
-		s = this.settings;
-
-		// Setup regexps
-		this.inRe = this._arrayToRe(s.indent_elements.split(','), '', '^<(', ')[^>]*');
-		this.ouRe = this._arrayToRe(s.indent_elements.split(','), '', '^<\\/(', ')[^>]*');
-		this.nlBeforeRe = this._arrayToRe(s.newline_before_elements.split(','), 'gi', '<(',  ')([^>]*)>');
-		this.nlAfterRe = this._arrayToRe(s.newline_after_elements.split(','), 'gi', '<(',  ')([^>]*)>');
-		this.nlBeforeAfterRe = this._arrayToRe(s.newline_before_after_elements.split(','), 'gi', '<(\\/?)(', ')([^>]*)>');
-		this.serializedNodes = [];
-		this.serializationId = 0;
-
-		if (s.invalid_elements !== '')
-			this.iveRe = this._arrayToRe(s.invalid_elements.toUpperCase().split(','), 'g', '^(', ')$');
-		else
-			this.iveRe = null;
-
-		// Setup separator
-		st = '';
-		for (i=0; i<s.indent_levels; i++)
-			st += s.indent_char;
-
-		this.inStr = st;
-
-		// If verify_html if false force *[*]
-		if (!s.verify_html) {
-			s.valid_elements = '*[*]';
-			s.extended_valid_elements = '';
-		}
-
-		this.fillStr = s.entity_encoding == "named" ? "&nbsp;" : "&#160;";
-		this.idCount = 0;
-		this.xmlEncodeRe = new RegExp('[\u007F-\uFFFF<>&"]', 'g');
-	},
-
-	addRuleStr : function(s) {
-		var r = this.parseRuleStr(s), n;
-
-		for (n in r) {
-			if (r[n])
-				this.rules[n] = r[n];
-		}
-
-		this.vElements = tinyMCE.clearArray([]);
-
-		for (n in this.rules) {
-			if (this.rules[n])
-				this.vElements[this.vElements.length] = this.rules[n].tag;
-		}
-
-		this.vElementsRe = this._arrayToRe(this.vElements, '');
-	},
-
-	isValid : function(n) {
-		if (!this.rulesDone)
-			this._setupRules(); // Will initialize cleanup rules
-
-		// Empty is true since it removes formatting
-		if (!n)
-			return true;
-
-		// Clean the name up a bit
-		n = n.replace(/[^a-z0-9]+/gi, '').toUpperCase();
-
-		return !tinyMCE.getParam('cleanup') || this.vElementsRe.test(n);
-	},
-
-	addChildRemoveRuleStr : function(s) {
-		var x, y, p, i, t, tn, ta, cl, r;
-
-		if (!s)
-			return;
-
-		ta = s.split(',');
-		for (x=0; x<ta.length; x++) {
-			s = ta[x];
-
-			// Split tag/children
-			p = this.split(/\[|\]/, s);
-			if (p == null || p.length < 1)
-				t = s.toUpperCase();
-			else
-				t = p[0].toUpperCase();
-
-			// Handle all tag names
-			tn = this.split('/', t);
-			for (y=0; y<tn.length; y++) {
-				r = "^(";
-
-				// Build regex
-				cl = this.split(/\|/, p[1]);
-				for (i=0; i<cl.length; i++) {
-					if (cl[i] == '%istrict')
-						r += tinyMCE.inlineStrict;
-					else if (cl[i] == '%itrans')
-						r += tinyMCE.inlineTransitional;
-					else if (cl[i] == '%istrict_na')
-						r += tinyMCE.inlineStrict.substring(2);
-					else if (cl[i] == '%itrans_na')
-						r += tinyMCE.inlineTransitional.substring(2);
-					else if (cl[i] == '%btrans')
-						r += tinyMCE.blockElms;
-					else if (cl[i] == '%strict')
-						r += tinyMCE.blockStrict;
-					else
-						r += (cl[i].charAt(0) != '#' ? cl[i].toUpperCase() : cl[i]);
-
-					r += (i != cl.length - 1 ? '|' : '');
-				}
-
-				r += ')$';
-
-				if (this.childRules == null)
-					this.childRules = tinyMCE.clearArray([]);
-
-				this.childRules[tn[y]] = new RegExp(r);
-
-				if (p.length > 1)
-					this.childRules[tn[y]].wrapTag = p[2];
-			}
-		}
-	},
-
-	parseRuleStr : function(s) {
-		var ta, p, r, a, i, x, px, t, tn, y, av, or = tinyMCE.clearArray([]), dv;
-
-		if (s == null || s.length == 0)
-			return or;
-
-		ta = s.split(',');
-		for (x=0; x<ta.length; x++) {
-			s = ta[x];
-			if (s.length == 0)
-				continue;
-
-			// Split tag/attrs
-			p = this.split(/\[|\]/, s);
-			if (p == null || p.length < 1)
-				t = s.toUpperCase();
-			else
-				t = p[0].toUpperCase();
-
-			// Handle all tag names
-			tn = this.split('/', t);
-			for (y=0; y<tn.length; y++) {
-				r = {};
-
-				r.tag = tn[y];
-				r.forceAttribs = null;
-				r.defaultAttribs = null;
-				r.validAttribValues = null;
-
-				// Handle prefixes
-				px = r.tag.charAt(0);
-				r.forceOpen = px == '+';
-				r.removeEmpty = px == '-';
-				r.fill = px == '#';
-				r.tag = r.tag.replace(/\+|-|#/g, '');
-				r.oTagName = tn[0].replace(/\+|-|#/g, '').toLowerCase();
-				r.isWild = new RegExp('\\*|\\?|\\+', 'g').test(r.tag);
-				r.validRe = new RegExp(this._wildcardToRe('^' + r.tag + '$'));
-
-				// Setup valid attributes
-				if (p.length > 1) {
-					r.vAttribsRe = '^(';
-					a = this.split(/\|/, p[1]);
-
-					for (i=0; i<a.length; i++) {
-						t = a[i];
-
-						if (t.charAt(0) == '!') {
-							a[i] = t = t.substring(1);
-
-							if (!r.reqAttribsRe)
-								r.reqAttribsRe = '\\s+(' + t;
-							else
-								r.reqAttribsRe += '|' + t;
-						}
-
-						av = new RegExp('(=|:|<)(.*?)$').exec(t);
-						t = t.replace(new RegExp('(=|:|<).*?$'), '');
-						if (av && av.length > 0) {
-							if (av[0].charAt(0) == ':') {
-								if (!r.forceAttribs)
-									r.forceAttribs = tinyMCE.clearArray([]);
-
-								r.forceAttribs[t.toLowerCase()] = av[0].substring(1);
-							} else if (av[0].charAt(0) == '=') {
-								if (!r.defaultAttribs)
-									r.defaultAttribs = tinyMCE.clearArray([]);
-
-								dv = av[0].substring(1);
-
-								r.defaultAttribs[t.toLowerCase()] = dv == '' ? "mce_empty" : dv;
-							} else if (av[0].charAt(0) == '<') {
-								if (!r.validAttribValues)
-									r.validAttribValues = tinyMCE.clearArray([]);
-
-								r.validAttribValues[t.toLowerCase()] = this._arrayToRe(this.split('?', av[0].substring(1)), 'i');
-							}
-						}
-
-						r.vAttribsRe += '' + t.toLowerCase() + (i != a.length - 1 ? '|' : '');
-
-						a[i] = t.toLowerCase();
-					}
-
-					if (r.reqAttribsRe)
-						r.reqAttribsRe = new RegExp(r.reqAttribsRe + ')=\"', 'g');
-
-					r.vAttribsRe += ')$';
-					r.vAttribsRe = this._wildcardToRe(r.vAttribsRe);
-					r.vAttribsReIsWild = new RegExp('\\*|\\?|\\+', 'g').test(r.vAttribsRe);
-					r.vAttribsRe = new RegExp(r.vAttribsRe);
-					r.vAttribs = a.reverse();
-
-					//tinyMCE.debug(r.tag, r.oTagName, r.vAttribsRe, r.vAttribsReWC);
-				} else {
-					r.vAttribsRe = '';
-					r.vAttribs = tinyMCE.clearArray([]);
-					r.vAttribsReIsWild = false;
-				}
-
-				or[r.tag] = r;
-			}
-		}
-
-		return or;
-	},
-
-	serializeNodeAsXML : function(n) {
-		var s, b;
-
-		if (!this.xmlDoc) {
-			if (this.isIE) {
-				try {this.xmlDoc = new ActiveXObject('MSXML2.DOMDocument');} catch (e) {}
-
-				if (!this.xmlDoc)
-					try {this.xmlDoc = new ActiveXObject('Microsoft.XmlDom');} catch (e) {}
-			} else
-				this.xmlDoc = document.implementation.createDocument('', '', null);
-
-			if (!this.xmlDoc)
-				alert("Error XML Parser could not be found.");
-		}
-
-		if (this.xmlDoc.firstChild)
-			this.xmlDoc.removeChild(this.xmlDoc.firstChild);
-
-		b = this.xmlDoc.createElement("html");
-		b = this.xmlDoc.appendChild(b);
-
-		this._convertToXML(n, b);
-
-		if (this.isIE)
-			return this.xmlDoc.xml;
-		else
-			return new XMLSerializer().serializeToString(this.xmlDoc);
-	},
-
-	_convertToXML : function(n, xn) {
-		var xd, el, i, l, cn, at, no, hc = false;
-
-		if (tinyMCE.isRealIE && this._isDuplicate(n))
-			return;
-
-		xd = this.xmlDoc;
-
-		switch (n.nodeType) {
-			case 1: // Element
-				hc = n.hasChildNodes();
-
-				el = xd.createElement(n.nodeName.toLowerCase());
-
-				at = n.attributes;
-				for (i=at.length-1; i>-1; i--) {
-					no = at[i];
-
-					if (no.specified && no.nodeValue)
-						el.setAttribute(no.nodeName.toLowerCase(), no.nodeValue);
-				}
-
-				if (!hc && !this.closeElementsRe.test(n.nodeName))
-					el.appendChild(xd.createTextNode(""));
-
-				xn = xn.appendChild(el);
-				break;
-
-			case 3: // Text
-				xn.appendChild(xd.createTextNode(n.nodeValue));
-				return;
-
-			case 8: // Comment
-				xn.appendChild(xd.createComment(n.nodeValue));
-				return;
-		}
-
-		if (hc) {
-			cn = n.childNodes;
-
-			for (i=0, l=cn.length; i<l; i++)
-				this._convertToXML(cn[i], xn);
-		}
-	},
-
-	serializeNodeAsHTML : function(n, inn) {
-		var en, no, h = '', i, l, t, st, r, cn, va = false, f = false, at, hc, cr, nn;
-
-		if (!this.rulesDone)
-			this._setupRules(); // Will initialize cleanup rules
-
-		if (tinyMCE.isRealIE && this._isDuplicate(n))
-			return '';
-
-		// Skip non valid child elements
-		if (n.parentNode && this.childRules != null) {
-			cr = this.childRules[n.parentNode.nodeName];
-
-			if (typeof(cr) != "undefined" && !cr.test(n.nodeName)) {
-				st = true;
-				t = null;
-			}
-		}
-
-		switch (n.nodeType) {
-			case 1: // Element
-				hc = n.hasChildNodes();
-
-				if (st)
-					break;
-
-				nn = n.nodeName;
-
-				if (tinyMCE.isRealIE) {
-					// MSIE sometimes produces <//tag>
-					if (n.nodeName.indexOf('/') != -1)
-						break;
-
-					// MSIE has it's NS in a separate attrib
-					if (n.scopeName && n.scopeName != 'HTML')
-						nn = n.scopeName.toUpperCase() + ':' + nn.toUpperCase();
-				} else if (tinyMCE.isOpera && nn.indexOf(':') > 0)
-					nn = nn.toUpperCase();
-
-				// Convert fonts to spans
-				if (this.settings.convert_fonts_to_spans) {
-					// On get content FONT -> SPAN
-					if (this.settings.on_save && nn == 'FONT')
-						nn = 'SPAN';
-
-					// On insert content SPAN -> FONT
-					if (!this.settings.on_save && nn == 'SPAN')
-						nn = 'FONT';
-				}
-
-				if (this.vElementsRe.test(nn) && (!this.iveRe || !this.iveRe.test(nn)) && !inn) {
-					va = true;
-
-					r = this.rules[nn];
-					if (!r) {
-						at = this.rules;
-						for (no in at) {
-							if (at[no] && at[no].validRe.test(nn)) {
-								r = at[no];
-								break;
-							}
-						}
-					}
-
-					en = r.isWild ? nn.toLowerCase() : r.oTagName;
-					f = r.fill;
-
-					if (r.removeEmpty && !hc)
-						return "";
-
-					t = '<' + en;
-
-					if (r.vAttribsReIsWild) {
-						// Serialize wildcard attributes
-						at = n.attributes;
-						for (i=at.length-1; i>-1; i--) {
-							no = at[i];
-							if (no.specified && r.vAttribsRe.test(no.nodeName))
-								t += this._serializeAttribute(n, r, no.nodeName);
-						}
-					} else {
-						// Serialize specific attributes
-						for (i=r.vAttribs.length-1; i>-1; i--)
-							t += this._serializeAttribute(n, r, r.vAttribs[i]);
-					}
-
-					// Serialize mce_ atts
-					if (!this.settings.on_save) {
-						at = this.mceAttribs;
-
-						for (no in at) {
-							if (at[no])
-								t += this._serializeAttribute(n, r, at[no]);
-						}
-					}
-
-					// Check for required attribs
-					if (r.reqAttribsRe && !t.match(r.reqAttribsRe))
-						t = null;
-
-					// Close these
-					if (t != null && this.closeElementsRe.test(nn))
-						return t + ' />';
-
-					if (t != null)
-						h += t + '>';
-
-					if (this.isIE && this.codeElementsRe.test(nn))
-						h += n.innerHTML;
-				}
-			break;
-
-			case 3: // Text
-				if (st)
-					break;
-
-				if (n.parentNode && this.codeElementsRe.test(n.parentNode.nodeName))
-					return this.isIE ? '' : n.nodeValue;
-
-				return this.xmlEncode(n.nodeValue);
-
-			case 8: // Comment
-				if (st)
-					break;
-
-				return "<!--" + this._trimComment(n.nodeValue) + "-->";
-		}
-
-		if (hc) {
-			cn = n.childNodes;
-
-			for (i=0, l=cn.length; i<l; i++)
-				h += this.serializeNodeAsHTML(cn[i]);
-		}
-
-		// Fill empty nodes
-		if (f && !hc)
-			h += this.fillStr;
-
-		// End element
-		if (t != null && va)
-			h += '</' + en + '>';
-
-		return h;
-	},
-
-	_serializeAttribute : function(n, r, an) {
-		var av = '', t, os = this.settings.on_save;
-
-		if (os && (an.indexOf('mce_') == 0 || an.indexOf('_moz') == 0))
-			return '';
-
-		if (os && this.mceAttribs[an])
-			av = this._getAttrib(n, this.mceAttribs[an]);
-
-		if (av.length == 0)
-			av = this._getAttrib(n, an);
-
-		if (av.length == 0 && r.defaultAttribs && (t = r.defaultAttribs[an])) {
-			av = t;
-
-			if (av == "mce_empty")
-				return " " + an + '=""';
-		}
-
-		if (r.forceAttribs && (t = r.forceAttribs[an]))
-			av = t;
-
-		if (os && av.length != 0 && /^(src|href|longdesc)$/.test(an))
-			av = this._urlConverter(this, n, av);
-
-		if (av.length != 0 && r.validAttribValues && r.validAttribValues[an] && !r.validAttribValues[an].test(av))
-			return "";
-
-		if (av.length != 0 && av == "{$uid}")
-			av = "uid_" + (this.idCount++);
-
-		if (av.length != 0) {
-			if (an.indexOf('on') != 0)
-				av = this.xmlEncode(av, 1);
-
-			return " " + an + "=" + '"' + av + '"';
-		}
-
-		return "";
-	},
-
-	formatHTML : function(h) {
-		var s = this.settings, p = '', i = 0, li = 0, o = '', l;
-
-		// Replace BR in pre elements to \n
-		h = h.replace(/<pre([^>]*)>(.*?)<\/pre>/gi, function (a, b, c) {
-			c = c.replace(/<br\s*\/>/gi, '\n');
-			return '<pre' + b + '>' + c + '</pre>';
-		});
-
-		h = h.replace(/\r/g, ''); // Windows sux, isn't carriage return a thing of the past :)
-		h = '\n' + h;
-		h = h.replace(new RegExp('\\n\\s+', 'gi'), '\n'); // Remove previous formatting
-		h = h.replace(this.nlBeforeRe, '\n<$1$2>');
-		h = h.replace(this.nlAfterRe, '<$1$2>\n');
-		h = h.replace(this.nlBeforeAfterRe, '\n<$1$2$3>\n');
-		h += '\n';
-
-		//tinyMCE.debug(h);
-
-		while ((i = h.indexOf('\n', i + 1)) != -1) {
-			if ((l = h.substring(li + 1, i)).length != 0) {
-				if (this.ouRe.test(l) && p.length >= s.indent_levels)
-					p = p.substring(s.indent_levels);
-
-				o += p + l + '\n';
-
-				if (this.inRe.test(l))
-					p += this.inStr;
-			}
-
-			li = i;
-		}
-
-		//tinyMCE.debug(h);
-
-		return o;
-	},
-
-	xmlEncode : function(s) {
-		var cl = this, re = this.xmlEncodeRe;
-
-		if (!this.entitiesDone)
-			this._setupEntities(); // Will intialize lookup table
-
-		switch (this.settings.entity_encoding) {
-			case "raw":
-				return tinyMCE.xmlEncode(s);
-
-			case "named":
-				return s.replace(re, function (c) {
-					var b = cl.entities[c.charCodeAt(0)];
-
-					return b ? '&' + b + ';' : c;
-				});
-
-			case "numeric":
-				return s.replace(re, function (c) {
-					return '&#' + c.charCodeAt(0) + ';';
-				});
-		}
-
-		return s;
-	},
-
-	split : function(re, s) {
-		var i, l, o = [], c = s.split(re);
-
-		for (i=0, l=c.length; i<l; i++) {
-			if (c[i] !== '')
-				o[i] = c[i];
-		}
-
-		return o;
-	},
-
-	_trimComment : function(s) {
-		// Remove mce_src, mce_href
-		s = s.replace(new RegExp('\\smce_src=\"[^\"]*\"', 'gi'), "");
-		s = s.replace(new RegExp('\\smce_href=\"[^\"]*\"', 'gi'), "");
-
-		return s;
-	},
-
-	_getAttrib : function(e, n, d) {
-		var v, ex, nn;
-
-		if (typeof(d) == "undefined")
-			d = "";
-
-		if (!e || e.nodeType != 1)
-			return d;
-
-		try {
-			v = e.getAttribute(n, 0);
-		} catch (ex) {
-			// IE 7 may cast exception on invalid attributes
-			v = e.getAttribute(n, 2);
-		}
-
-		if (n == "class" && !v)
-			v = e.className;
-
-		if (this.isIE) {
-			if (n == "http-equiv")
-				v = e.httpEquiv;
-
-			nn = e.nodeName;
-
-			// Skip the default values that IE returns
-			if (nn == "FORM" && n == "enctype" && v == "application/x-www-form-urlencoded")
-				v = "";
-
-			if (nn == "INPUT" && n == "size" && v == "20")
-				v = "";
-
-			if (nn == "INPUT" && n == "maxlength" && v == "2147483647")
-				v = "";
-
-			// Images
-			if (n == "width" || n == "height")
-				v = e.getAttribute(n, 2);
-		}
-
-		if (n == 'style' && v) {
-			if (!tinyMCE.isOpera)
-				v = e.style.cssText;
-
-			v = tinyMCE.serializeStyle(tinyMCE.parseStyle(v));
-		}
-
-		if (this.settings.on_save && n.indexOf('on') != -1 && this.settings.on_save && v && v !== '')
-			v = tinyMCE.cleanupEventStr(v);
-
-		return (v && v !== '') ? '' + v : d;
-	},
-
-	_urlConverter : function(c, n, v) {
-		if (!c.settings.on_save)
-			return tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, v);
-		else if (tinyMCE.getParam('convert_urls')) {
-			if (!this.urlConverter)
-				this.urlConverter = eval(tinyMCE.settings.urlconverter_callback);
-
-			return this.urlConverter(v, n, true);
-		}
-
-		return v;
-	},
-
-	_arrayToRe : function(a, op, be, af) {
-		var i, r;
-
-		op = typeof(op) == "undefined" ? "gi" : op;
-		be = typeof(be) == "undefined" ? "^(" : be;
-		af = typeof(af) == "undefined" ? ")$" : af;
-
-		r = be;
-
-		for (i=0; i<a.length; i++)
-			r += this._wildcardToRe(a[i]) + (i != a.length-1 ? "|" : "");
-
-		r += af;
-
-		return new RegExp(r, op);
-	},
-
-	_wildcardToRe : function(s) {
-		s = s.replace(/\?/g, '(\\S?)');
-		s = s.replace(/\+/g, '(\\S+)');
-		s = s.replace(/\*/g, '(\\S*)');
-
-		return s;
-	},
-
-	_setupEntities : function() {
-		var n, a, i, s = this.settings;
-
-		// Setup entities
-		if (s.entity_encoding == "named") {
-			n = tinyMCE.clearArray([]);
-			a = this.split(',', s.entities);
-			for (i=0; i<a.length; i+=2)
-				n[a[i]] = a[i+1];
-
-			this.entities = n;
-		}
-
-		this.entitiesDone = true;
-	},
-
-	_setupRules : function() {
-		var s = this.settings;
-
-		// Setup default rule
-		this.addRuleStr(s.valid_elements);
-		this.addRuleStr(s.extended_valid_elements);
-		this.addChildRemoveRuleStr(s.valid_child_elements);
-
-		this.rulesDone = true;
-	},
-
-	_isDuplicate : function(n) {
-		var i, l, sn;
-
-		if (!this.settings.fix_content_duplication)
-			return false;
-
-		if (tinyMCE.isRealIE && n.nodeType == 1) {
-			// Mark elements
-			if (n.mce_serialized == this.serializationId)
-				return true;
-
-			n.setAttribute('mce_serialized', this.serializationId);
-		} else {
-			sn = this.serializedNodes;
-
-			// Search lookup table for text nodes  and comments
-			for (i=0, l = sn.length; i<l; i++) {
-				if (sn[i] == n)
-					return true;
-			}
-
-			sn.push(n);
-		}
-
-		return false;
-	}
-
-	};
-
-/* file:jscripts/tiny_mce/classes/TinyMCE_DOMUtils.class.js */
-
-tinyMCE.add(TinyMCE_Engine, {
-	createTagHTML : function(tn, a, h) {
-		var o = '', f = tinyMCE.xmlEncode, n;
-
-		o = '<' + tn;
-
-		if (a) {
-			for (n in a) {
-				if (typeof(a[n]) != 'function' && a[n] != null)
-					o += ' ' + f(n) + '="' + f('' + a[n]) + '"';
-			}
-		}
-
-		o += !h ? ' />' : '>' + h + '</' + tn + '>';
-
-		return o;
-	},
-
-	createTag : function(d, tn, a, h) {
-		var o = d.createElement(tn), n;
-
-		if (a) {
-			for (n in a) {
-				if (typeof(a[n]) != 'function' && a[n] != null)
-					tinyMCE.setAttrib(o, n, a[n]);
-			}
-		}
-
-		if (h)
-			o.innerHTML = h;
-
-		return o;
-	},
-
-	getElementByAttributeValue : function(n, e, a, v) {
-		return (n = this.getElementsByAttributeValue(n, e, a, v)).length == 0 ? null : n[0];
-	},
-
-	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;
-	},
-
-	isBlockElement : function(n) {
-		return n != null && n.nodeType == 1 && this.blockRegExp.test(n.nodeName);
-	},
-
-	getParentBlockElement : function(n, r) {
-		return this.getParentNode(n, function(n) {
-			return tinyMCE.isBlockElement(n);
-		}, r);
-
-		return null;
-	},
-
-	insertAfter : function(n, r){
-		if (r.nextSibling)
-			r.parentNode.insertBefore(n, r.nextSibling);
-		else
-			r.parentNode.appendChild(n);
-	},
-
-	setInnerHTML : function(e, h) {
-		var i, nl, n;
-
-		// Convert all strong/em to b/i in Gecko
-		if (tinyMCE.isGecko) {
-			h = h.replace(/<embed([^>]*)>/gi, '<tmpembed$1>');
-			h = h.replace(/<em([^>]*)>/gi, '<i$1>');
-			h = h.replace(/<tmpembed([^>]*)>/gi, '<embed$1>');
-			h = h.replace(/<strong([^>]*)>/gi, '<b$1>');
-			h = h.replace(/<\/strong>/gi, '</b>');
-			h = h.replace(/<\/em>/gi, '</i>');
-		}
-
-		if (tinyMCE.isRealIE) {
-			// Since MSIE handles invalid HTML better that valid XHTML we
-			// need to make some things invalid. <hr /> gets converted to <hr>.
-			h = h.replace(/\s\/>/g, '>');
-
-			// Since MSIE auto generated emtpy P tags some times we must tell it to keep the real ones
-			h = h.replace(/<p([^>]*)>\u00A0?<\/p>/gi, '<p$1 mce_keep="true">&nbsp;</p>'); // Keep empty paragraphs
-			h = h.replace(/<p([^>]*)>\s*&nbsp;\s*<\/p>/gi, '<p$1 mce_keep="true">&nbsp;</p>'); // Keep empty paragraphs
-			h = h.replace(/<p([^>]*)>\s+<\/p>/gi, '<p$1 mce_keep="true">&nbsp;</p>'); // Keep empty paragraphs
-
-			// Remove first comment
-			e.innerHTML = tinyMCE.uniqueTag + h;
-			e.firstChild.removeNode(true);
-
-			// Remove weird auto generated empty paragraphs unless it's supposed to be there
-			nl = e.getElementsByTagName("p");
-			for (i=nl.length-1; i>=0; i--) {
-				n = nl[i];
-
-				if (n.nodeName == 'P' && !n.hasChildNodes() && !n.mce_keep)
-					n.parentNode.removeChild(n);
-			}
-		} else {
-			h = this.fixGeckoBaseHREFBug(1, e, h);
-			e.innerHTML = h;
-			this.fixGeckoBaseHREFBug(2, e, h);
-		}
-	},
-
-	getOuterHTML : function(e) {
-		var d;
-
-		if (tinyMCE.isIE)
-			return e.outerHTML;
-
-		d = e.ownerDocument.createElement("body");
-		d.appendChild(e.cloneNode(true));
-
-		return d.innerHTML;
-	},
-
-	setOuterHTML : function(e, h, d) {
-		var d = typeof(d) == "undefined" ? e.ownerDocument : d, i, nl, t;
-
-		if (tinyMCE.isIE && e.nodeType == 1)
-			e.outerHTML = h;
-		else {
-			t = d.createElement("body");
-			t.innerHTML = h;
-
-			for (i=0, nl=t.childNodes; i<nl.length; i++)
-				e.parentNode.insertBefore(nl[i].cloneNode(true), e);
-
-			e.parentNode.removeChild(e);
-		}
-	},
-
-	_getElementById : function(id, d) {
-		var e, i, j, f;
-
-		if (typeof(d) == "undefined")
-			d = document;
-
-		e = d.getElementById(id);
-		if (!e) {
-			f = d.forms;
-
-			for (i=0; i<f.length; i++) {
-				for (j=0; j<f[i].elements.length; j++) {
-					if (f[i].elements[j].name == id) {
-						e = f[i].elements[j];
-						break;
-					}
-				}
-			}
-		}
-
-		return e;
-	},
-
-	getNodeTree : function(n, na, t, nn) {
-		return this.selectNodes(n, function(n) {
-			return (!t || n.nodeType == t) && (!nn || n.nodeName == nn);
-		}, na ? na : []);
-	},
-
-	getParentElement : function(n, na, f, r) {
-		var re = na ? new RegExp('^(' + na.toUpperCase().replace(/,/g, '|') + ')$') : 0, v;
-
-		// Compatiblity with old scripts where f param was a attribute string
-		if (f && typeof(f) == 'string')
-			return this.getParentElement(n, na, function(no) {return tinyMCE.getAttrib(no, f) !== '';});
-
-		return this.getParentNode(n, function(n) {
-			return ((n.nodeType == 1 && !re) || (re && re.test(n.nodeName))) && (!f || f(n));
-		}, r);
-	},
-
-	getParentNode : function(n, f, r) {
-		while (n) {
-			if (n == r)
-				return null;
-
-			if (f(n))
-				return n;
-
-			n = n.parentNode;
-		}
-
-		return null;
-	},
-
-	getAttrib : function(elm, name, dv) {
-		var v;
-
-		if (typeof(dv) == "undefined")
-			dv = "";
-
-		// Not a element
-		if (!elm || elm.nodeType != 1)
-			return dv;
-
-		try {
-			v = elm.getAttribute(name, 0);
-		} catch (ex) {
-			// IE 7 may cast exception on invalid attributes
-			v = elm.getAttribute(name, 2);
-		}
-
-		// Try className for class attrib
-		if (name == "class" && !v)
-			v = elm.className;
-
-		// Workaround for a issue with Firefox 1.5rc2+
-		if (tinyMCE.isGecko) {
-			if (name == "src" && elm.src != null && elm.src !== '')
-				v = elm.src;
-
-			// Workaround for a issue with Firefox 1.5rc2+
-			if (name == "href" && elm.href != null && elm.href !== '')
-				v = elm.href;
-		} else if (tinyMCE.isIE) {
-			switch (name) {
-				case "http-equiv":
-					v = elm.httpEquiv;
-					break;
-
-				case "width":
-				case "height":
-					v = elm.getAttribute(name, 2);
-					break;
-			}
-		}
-
-		if (name == "style" && !tinyMCE.isOpera)
-			v = elm.style.cssText;
-
-		return (v && v !== '') ? v : dv;
-	},
-
-	setAttrib : function(el, name, va, fix) {
-		if (typeof(va) == "number" && va != null)
-			va = "" + va;
-
-		if (fix) {
-			if (va == null)
-				va = "";
-
-			va = va.replace(/[^0-9%]/g, '');
-		}
-
-		if (name == "style")
-			el.style.cssText = va;
-
-		if (name == "class")
-			el.className = va;
-
-		if (va != null && va !== '' && va != -1)
-			el.setAttribute(name, va);
-		else
-			el.removeAttribute(name);
-	},
-
-	setStyleAttrib : function(e, n, v) {
-		e.style[n] = v;
-
-		// Style attrib deleted in IE
-		if (tinyMCE.isIE && v == null || v == '') {
-			v = tinyMCE.serializeStyle(tinyMCE.parseStyle(e.style.cssText));
-			e.style.cssText = v;
-			e.setAttribute("style", v);
-		}
-	},
-
-	switchClass : function(ei, c) {
-		var e;
-
-		if (tinyMCE.switchClassCache[ei])
-			e = tinyMCE.switchClassCache[ei];
-		else
-			e = tinyMCE.switchClassCache[ei] = document.getElementById(ei);
-
-		if (e) {
-			// Keep tile mode
-			if (tinyMCE.settings.button_tile_map && e.className && e.className.indexOf('mceTiledButton') == 0)
-				c = 'mceTiledButton ' + c;
-
-			e.className = c;
-		}
-	},
-
-	getAbsPosition : function(n, cn) {
-		var l = 0, t = 0;
-
-		while (n && n != cn) {
-			l += n.offsetLeft;
-			t += n.offsetTop;
-			n = n.offsetParent;
-		}
-
-		return {absLeft : l, absTop : t};
-	},
-
-	prevNode : function(e, n) {
-		var a = n.split(','), i;
-
-		while ((e = e.previousSibling) != null) {
-			for (i=0; i<a.length; i++) {
-				if (e.nodeName == a[i])
-					return e;
-			}
-		}
-
-		return null;
-	},
-
-	nextNode : function(e, n) {
-		var a = n.split(','), i;
-
-		while ((e = e.nextSibling) != null) {
-			for (i=0; i<a.length; i++) {
-				if (e.nodeName == a[i])
-					return e;
-			}
-		}
-
-		return null;
-	},
-
-	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;
-	},
-
-	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;
-	},
-
-	addCSSClass : function(e, c, b) {
-		var o = this.removeCSSClass(e, c);
-		return e.className = b ? c + (o !== '' ? (' ' + o) : '') : (o !== '' ? (o + ' ') : '') + c;
-	},
-
-	removeCSSClass : function(e, c) {
-		c = e.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' ');
-		return e.className = c != ' ' ? c : '';
-	},
-
-	hasCSSClass : function(n, c) {
-		return new RegExp('\\b' + c + '\\b', 'g').test(n.className);
-	},
-
-	renameElement : function(e, n, d) {
-		var ne, i, ar;
-
-		d = typeof(d) == "undefined" ? tinyMCE.selectedInstance.getDoc() : d;
-
-		if (e) {
-			ne = d.createElement(n);
-
-			ar = e.attributes;
-			for (i=ar.length-1; i>-1; i--) {
-				if (ar[i].specified && ar[i].nodeValue)
-					ne.setAttribute(ar[i].nodeName.toLowerCase(), ar[i].nodeValue);
-			}
-
-			ar = e.childNodes;
-			for (i=0; i<ar.length; i++)
-				ne.appendChild(ar[i].cloneNode(true));
-
-			e.parentNode.replaceChild(ne, e);
-		}
-	},
-
-	getViewPort : function(w) {
-		var d = w.document, m = d.compatMode == 'CSS1Compat', b = d.body, de = d.documentElement;
-
-		return {
-			left : w.pageXOffset || (m ? de.scrollLeft : b.scrollLeft),
-			top : w.pageYOffset || (m ? de.scrollTop : b.scrollTop),
-			width : w.innerWidth || (m ? de.clientWidth : b.clientWidth),
-			height : w.innerHeight || (m ? de.clientHeight : b.clientHeight)
-		};
-	},
-
-	getStyle : function(n, na, d) {
-		if (!n)
-			return false;
-
-		// Gecko
-		if (tinyMCE.isGecko && n.ownerDocument.defaultView) {
-			try {
-				return n.ownerDocument.defaultView.getComputedStyle(n, null).getPropertyValue(na);
-			} catch (n) {
-				// Old safari might fail
-				return null;
-			}
-		}
-
-		// Camelcase it, if needed
-		na = na.replace(/-(\D)/g, function(a, b){
-			return b.toUpperCase();
-		});
-
-		// IE & Opera
-		if (n.currentStyle)
-			return n.currentStyle[na];
-
-		return false;
-	}
-
-	});
-
-/* file:jscripts/tiny_mce/classes/TinyMCE_URL.class.js */
-
-tinyMCE.add(TinyMCE_Engine, {
-	parseURL : function(url_str) {
-		var urlParts = [], i, pos, lastPos, chr;
-
-		if (url_str) {
-			// Parse protocol part
-			pos = url_str.indexOf('://');
-			if (pos != -1) {
-				urlParts.protocol = url_str.substring(0, pos);
-				lastPos = pos + 3;
-			}
-
-			// Find port or path start
-			for (i=lastPos; i<url_str.length; i++) {
-				chr = url_str.charAt(i);
-
-				if (chr == ':')
-					break;
-
-				if (chr == '/')
-					break;
-			}
-			pos = i;
-
-			// Get host
-			urlParts.host = url_str.substring(lastPos, pos);
-
-			// Get port
-			urlParts.port = "";
-			lastPos = pos;
-			if (url_str.charAt(pos) == ':') {
-				pos = url_str.indexOf('/', lastPos);
-				urlParts.port = url_str.substring(lastPos+1, pos);
-			}
-
-			// Get path
-			lastPos = pos;
-			pos = url_str.indexOf('?', lastPos);
-
-			if (pos == -1)
-				pos = url_str.indexOf('#', lastPos);
-
-			if (pos == -1)
-				pos = url_str.length;
-
-			urlParts.path = url_str.substring(lastPos, pos);
-
-			// Get query
-			lastPos = pos;
-			if (url_str.charAt(pos) == '?') {
-				pos = url_str.indexOf('#');
-				pos = (pos == -1) ? url_str.length : pos;
-				urlParts.query = url_str.substring(lastPos+1, pos);
-			}
-
-			// Get anchor
-			lastPos = pos;
-			if (url_str.charAt(pos) == '#') {
-				pos = url_str.length;
-				urlParts.anchor = url_str.substring(lastPos+1, pos);
-			}
-		}
-
-		return urlParts;
-	},
-
-	serializeURL : function(up) {
-		var o = "";
-
-		if (up.protocol)
-			o += up.protocol + "://";
-
-		if (up.host)
-			o += up.host;
-
-		if (up.port)
-			o += ":" + up.port;
-
-		if (up.path)
-			o += up.path;
-
-		if (up.query)
-			o += "?" + up.query;
-
-		if (up.anchor)
-			o += "#" + up.anchor;
-
-		return o;
-	},
-
-	convertAbsoluteURLToRelativeURL : function(base_url, url_to_relative) {
-		var baseURL = this.parseURL(base_url), targetURL = this.parseURL(url_to_relative);
-		var i, strTok1, strTok2, breakPoint = 0, outPath = "", forceSlash = false;
-		var fileName, pos;
-
-		if (targetURL.path == '')
-			targetURL.path = "/";
-		else
-			forceSlash = true;
-
-		// Crop away last path part
-		base_url = baseURL.path.substring(0, baseURL.path.lastIndexOf('/'));
-		strTok1 = base_url.split('/');
-		strTok2 = targetURL.path.split('/');
-
-		if (strTok1.length >= strTok2.length) {
-			for (i=0; i<strTok1.length; i++) {
-				if (i >= strTok2.length || strTok1[i] != strTok2[i]) {
-					breakPoint = i + 1;
-					break;
-				}
-			}
-		}
-
-		if (strTok1.length < strTok2.length) {
-			for (i=0; i<strTok2.length; i++) {
-				if (i >= strTok1.length || strTok1[i] != strTok2[i]) {
-					breakPoint = i + 1;
-					break;
-				}
-			}
-		}
-
-		if (breakPoint == 1)
-			return targetURL.path;
-
-		for (i=0; i<(strTok1.length-(breakPoint-1)); i++)
-			outPath += "../";
-
-		for (i=breakPoint-1; i<strTok2.length; i++) {
-			if (i != (breakPoint-1))
-				outPath += "/" + strTok2[i];
-			else
-				outPath += strTok2[i];
-		}
-
-		targetURL.protocol = null;
-		targetURL.host = null;
-		targetURL.port = null;
-		targetURL.path = outPath == '' && forceSlash ? "/" : outPath;
-
-		// Remove document prefix from local anchors
-		fileName = baseURL.path;
-
-		if ((pos = fileName.lastIndexOf('/')) != -1)
-			fileName = fileName.substring(pos + 1);
-
-		// Is local anchor
-		if (fileName == targetURL.path && targetURL.anchor !== '')
-			targetURL.path = "";
-
-		// If empty and not local anchor force filename or slash
-		if (targetURL.path == '' && !targetURL.anchor)
-			targetURL.path = fileName !== '' ? fileName : "/";
-
-		return this.serializeURL(targetURL);
-	},
-
-	convertRelativeToAbsoluteURL : function(base_url, relative_url) {
-		var baseURL = this.parseURL(base_url), baseURLParts, relURLParts, newRelURLParts, numBack, relURL = this.parseURL(relative_url), i;
-		var len, absPath, start, end, newBaseURLParts;
-
-		if (relative_url == '' || relative_url.indexOf('://') != -1 || /^(mailto:|javascript:|#|\/)/.test(relative_url))
-			return relative_url;
-
-		// Split parts
-		baseURLParts = baseURL.path.split('/');
-		relURLParts = relURL.path.split('/');
-
-		// Remove empty chunks
-		newBaseURLParts = [];
-		for (i=baseURLParts.length-1; i>=0; i--) {
-			if (baseURLParts[i].length == 0)
-				continue;
-
-			newBaseURLParts[newBaseURLParts.length] = baseURLParts[i];
-		}
-		baseURLParts = newBaseURLParts.reverse();
-
-		// Merge relURLParts chunks
-		newRelURLParts = [];
-		numBack = 0;
-		for (i=relURLParts.length-1; i>=0; i--) {
-			if (relURLParts[i].length == 0 || relURLParts[i] == ".")
-				continue;
-
-			if (relURLParts[i] == '..') {
-				numBack++;
-				continue;
-			}
-
-			if (numBack > 0) {
-				numBack--;
-				continue;
-			}
-
-			newRelURLParts[newRelURLParts.length] = relURLParts[i];
-		}
-
-		relURLParts = newRelURLParts.reverse();
-
-		// Remove end from absolute path
-		len = baseURLParts.length-numBack;
-		absPath = (len <= 0 ? "" : "/") + baseURLParts.slice(0, len).join('/') + "/" + relURLParts.join('/');
-		start = "";
-		end = "";
-
-		// Build output URL
-		relURL.protocol = baseURL.protocol;
-		relURL.host = baseURL.host;
-		relURL.port = baseURL.port;
-
-		// Re-add trailing slash if it's removed
-		if (relURL.path.charAt(relURL.path.length-1) == "/")
-			absPath += "/";
-
-		relURL.path = absPath;
-
-		return this.serializeURL(relURL);
-	},
-
-	convertURL : function(url, node, on_save) {
-		var dl = document.location, start, portPart, urlParts, baseUrlParts, tmpUrlParts, curl;
-		var prot = dl.protocol, host = dl.hostname, port = dl.port;
-
-		// Pass through file protocol
-		if (prot == "file:")
-			return url;
-
-		// Something is wrong, remove weirdness
-		url = tinyMCE.regexpReplace(url, '(http|https):///', '/');
-
-		// Mailto link or anchor (Pass through)
-		if (url.indexOf('mailto:') != -1 || url.indexOf('javascript:') != -1 || /^[ \t\r\n\+]*[#\?]/.test(url))
-			return url;
-
-		// Fix relative/Mozilla
-		if (!tinyMCE.isIE && !on_save && url.indexOf("://") == -1 && url.charAt(0) != '/')
-			return tinyMCE.settings.base_href + url;
-
-		// Handle relative URLs
-		if (on_save && tinyMCE.getParam('relative_urls')) {
-			curl = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, url);
-			if (curl.charAt(0) == '/')
-				curl = tinyMCE.settings.document_base_prefix + curl;
-
-			urlParts = tinyMCE.parseURL(curl);
-			tmpUrlParts = tinyMCE.parseURL(tinyMCE.settings.document_base_url);
-
-			// Force relative
-			if (urlParts.host == tmpUrlParts.host && (urlParts.port == tmpUrlParts.port))
-				return tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings.document_base_url, curl);
-		}
-
-		// Handle absolute URLs
-		if (!tinyMCE.getParam('relative_urls')) {
-			urlParts = tinyMCE.parseURL(url);
-			baseUrlParts = tinyMCE.parseURL(tinyMCE.settings.base_href);
-
-			// Force absolute URLs from relative URLs
-			url = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, url);
-
-			// If anchor and path is the same page
-			if (urlParts.anchor && urlParts.path == baseUrlParts.path)
-				return "#" + urlParts.anchor;
-		}
-
-		// Remove current domain
-		if (tinyMCE.getParam('remove_script_host')) {
-			start = "";
-			portPart = "";
-
-			if (port !== '')
-				portPart = ":" + port;
-
-			start = prot + "//" + host + portPart + "/";
-
-			if (url.indexOf(start) == 0)
-				url = url.substring(start.length-1);
-		}
-
-		return url;
-	},
-
-	convertAllRelativeURLs : function(body) {
-		var i, elms, src, href, mhref, msrc;
-
-		// Convert all image URL:s to absolute URL
-		elms = body.getElementsByTagName("img");
-		for (i=0; i<elms.length; i++) {
-			src = tinyMCE.getAttrib(elms[i], 'src');
-
-			msrc = tinyMCE.getAttrib(elms[i], 'mce_src');
-			if (msrc !== '')
-				src = msrc;
-
-			if (src !== '') {
-				src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, src);
-				elms[i].setAttribute("src", src);
-			}
-		}
-
-		// Convert all link URL:s to absolute URL
-		elms = body.getElementsByTagName("a");
-		for (i=0; i<elms.length; i++) {
-			href = tinyMCE.getAttrib(elms[i], 'href');
-
-			mhref = tinyMCE.getAttrib(elms[i], 'mce_href');
-			if (mhref !== '')
-				href = mhref;
-
-			if (href && href !== '') {
-				href = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, href);
-				elms[i].setAttribute("href", href);
-			}
-		}
-	}
-
-	});
-
-/* file:jscripts/tiny_mce/classes/TinyMCE_Array.class.js */
-
-tinyMCE.add(TinyMCE_Engine, {
-	clearArray : function(a) {
-		var n;
-
-		for (n in a)
-			a[n] = null;
-
-		return a;
-	},
-
-	explode : function(d, s) {
-		var ar = s.split(d), oar = [], i;
-
-		for (i = 0; i<ar.length; i++) {
-			if (ar[i] !== '')
-				oar[oar.length] = ar[i];
-		}
-
-		return oar;
-	}
-});
-
-/* file:jscripts/tiny_mce/classes/TinyMCE_Event.class.js */
-
-tinyMCE.add(TinyMCE_Engine, {
-	_setEventsEnabled : function(node, state) {
-		var evs, x, y, elms, i, event;
-		var events = ['onfocus','onblur','onclick','ondblclick',
-					'onmousedown','onmouseup','onmouseover','onmousemove',
-					'onmouseout','onkeypress','onkeydown','onkeydown','onkeyup'];
-
-		evs = tinyMCE.settings.event_elements.split(',');
-		for (y=0; y<evs.length; y++){
-			elms = node.getElementsByTagName(evs[y]);
-			for (i=0; i<elms.length; i++) {
-				event = "";
-
-				for (x=0; x<events.length; x++) {
-					if ((event = tinyMCE.getAttrib(elms[i], events[x])) !== '') {
-						event = tinyMCE.cleanupEventStr("" + event);
-
-						if (!state)
-							event = "return true;" + event;
-						else
-							event = event.replace(/^return true;/gi, '');
-
-						elms[i].removeAttribute(events[x]);
-						elms[i].setAttribute(events[x], event);
-					}
-				}
-			}
-		}
-	},
-
-	_eventPatch : function(editor_id) {
-		var n, inst, win, e;
-
-		// Remove odd, error
-		if (typeof(tinyMCE) == "undefined")
-			return true;
-
-		try {
-			// Try selected instance first
-			if (tinyMCE.selectedInstance) {
-				win = tinyMCE.selectedInstance.getWin();
-
-				if (win && win.event) {
-					e = win.event;
-
-					if (!e.target)
-						e.target = e.srcElement;
-
-					TinyMCE_Engine.prototype.handleEvent(e);
-					return;
-				}
-			}
-
-			// Search for it
-			for (n in tinyMCE.instances) {
-				inst = tinyMCE.instances[n];
-
-				if (!tinyMCE.isInstance(inst))
-					continue;
-
-				inst.select();
-				win = inst.getWin();
-
-				if (win && win.event) {
-					e = win.event;
-
-					if (!e.target)
-						e.target = e.srcElement;
-
-					TinyMCE_Engine.prototype.handleEvent(e);
-					return;
-				}
-			}
-		} catch (ex) {
-			// Ignore error if iframe is pointing to external URL
-		}
-	},
-
-	findEvent : function(e) {
-		var n, inst;
-
-		if (e)
-			return e;
-
-		for (n in tinyMCE.instances) {
-			inst = tinyMCE.instances[n];
-
-			if (tinyMCE.isInstance(inst) && inst.getWin().event)
-				return inst.getWin().event;
-		}
-
-		return null;
-	},
-
-	unloadHandler : function() {
-		tinyMCE.triggerSave(true, true);
-	},
-
-	addEventHandlers : function(inst) {
-		this.setEventHandlers(inst, 1);
-	},
-
-	setEventHandlers : function(inst, s) {
-		var doc = inst.getDoc(), ie, ot, i, f = s ? tinyMCE.addEvent : tinyMCE.removeEvent;
-
-		ie = ['keypress', 'keyup', 'keydown', 'click', 'mouseup', 'mousedown', 'controlselect', 'dblclick'];
-		ot = ['keypress', 'keyup', 'keydown', 'click', 'mouseup', 'mousedown', 'focus', 'blur', 'dragdrop'];
-
-		inst.switchSettings();
-
-		if (tinyMCE.isIE) {
-			for (i=0; i<ie.length; i++)
-				f(doc, ie[i], TinyMCE_Engine.prototype._eventPatch);
-		} else {
-			for (i=0; i<ot.length; i++)
-				f(doc, ot[i], tinyMCE.handleEvent);
-
-			// Force designmode
-			try {
-				doc.designMode = "On";
-			} catch (e) {
-				// Ignore
-			}
-		}
-	},
-
-	onMouseMove : function() {
-		var inst, lh;
-
-		// Fix for IE7 bug where it's not restoring hover on anchors correctly
-		if (tinyMCE.lastHover) {
-			lh = tinyMCE.lastHover;
-
-			// Call out on menus and refresh class on normal buttons
-			if (lh.className.indexOf('mceMenu') != -1)
-				tinyMCE._menuButtonEvent('out', lh);
-			else
-				lh.className = lh.className;
-
-			tinyMCE.lastHover = null;
-		}
-
-		if (!tinyMCE.hasMouseMoved) {
-			inst = tinyMCE.selectedInstance;
-
-			// Workaround for bug #1437457 (Odd MSIE bug)
-			if (inst.isFocused) {
-				inst.undoBookmark = inst.selection.getBookmark();
-				tinyMCE.hasMouseMoved = true;
-			}
-		}
-
-	//	tinyMCE.cancelEvent(inst.getWin().event);
-	//	return false;
-	},
-
-	cancelEvent : function(e) {
-		if (!e)
-			return false;
-
-		if (tinyMCE.isIE) {
-			e.returnValue = false;
-			e.cancelBubble = true;
-		} else {
-			e.preventDefault();
-			e.stopPropagation && e.stopPropagation();
-		}
-
-		return false;
-	},
-
-	addEvent : function(o, n, h) {
-		// Add cleanup for all non unload events
-		if (n != 'unload') {
-			function clean() {
-				var ex;
-
-				try {
-					tinyMCE.removeEvent(o, n, h);
-					tinyMCE.removeEvent(window, 'unload', clean);
-					o = n = h = null;
-				} catch (ex) {
-					// IE may produce access denied exception on unload
-				}
-			}
-
-			// Add memory cleaner
-			tinyMCE.addEvent(window, 'unload', clean);
-		}
-
-		if (o.attachEvent)
-			o.attachEvent("on" + n, h);
-		else
-			o.addEventListener(n, h, false);
-	},
-
-	removeEvent : function(o, n, h) {
-		if (o.detachEvent)
-			o.detachEvent("on" + n, h);
-		else
-			o.removeEventListener(n, h, false);
-	},
-
-	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;
-	},
-
-	_resetIframeHeight : function() {
-		var ife;
-
-		if (tinyMCE.isRealIE) {
-			ife = tinyMCE.selectedInstance.iframeElement;
-
-	/*		if (ife._oldWidth) {
-				ife.style.width = ife._oldWidth;
-				ife.width = ife._oldWidth;
-			}*/
-
-			if (ife._oldHeight) {
-				ife.style.height = ife._oldHeight;
-				ife.height = ife._oldHeight;
-			}
-		}
-	}
-
-	});
-
-/* file:jscripts/tiny_mce/classes/TinyMCE_Selection.class.js */
-
-function TinyMCE_Selection(inst) {
-	this.instance = inst;
-};
-
-TinyMCE_Selection.prototype = {
-	getSelectedHTML : function() {
-		var inst = this.instance, e, r = this.getRng(), h;
-
-		if (!r)
-			return null;
-
-		e = document.createElement("body");
-
-		if (r.cloneContents)
-			e.appendChild(r.cloneContents());
-		else if (typeof(r.item) != 'undefined' || typeof(r.htmlText) != 'undefined')
-			e.innerHTML = r.item ? r.item(0).outerHTML : r.htmlText;
-		else
-			e.innerHTML = r.toString(); // Failed, use text for now
-
-		h = tinyMCE._cleanupHTML(inst, inst.contentDocument, inst.settings, e, e, false, true, false);
-
-		// When editing always use fonts internaly
-		//if (tinyMCE.getParam("convert_fonts_to_spans"))
-		//	tinyMCE.convertSpansToFonts(inst.getDoc());
-
-		return h;
-	},
-
-	getSelectedText : function() {
-		var inst = this.instance, d, r, s, t;
-
-		if (tinyMCE.isIE) {
-			d = inst.getDoc();
-
-			if (d.selection.type == "Text") {
-				r = d.selection.createRange();
-				t = r.text;
-			} else
-				t = '';
-		} else {
-			s = this.getSel();
-
-			if (s && s.toString)
-				t = s.toString();
-			else
-				t = '';
-		}
-
-		return t;
-	},
-
-	getBookmark : function(simple) {
-		var inst = this.instance, rng = this.getRng(), doc = inst.getDoc(), b = inst.getBody();
-		var trng, sx, sy, xx = -999999999, vp = inst.getViewPort();
-		var sp, le, s, e, nl, i, si, ei, w;
-
-		sx = vp.left;
-		sy = vp.top;
-
-		if (simple)
-			return {rng : rng, scrollX : sx, scrollY : sy};
-
-		if (tinyMCE.isRealIE) {
-			if (rng.item) {
-				e = rng.item(0);
-
-				nl = b.getElementsByTagName(e.nodeName);
-				for (i=0; i<nl.length; i++) {
-					if (e == nl[i]) {
-						sp = i;
-						break;
-					}
-				}
-
-				return {
-					tag : e.nodeName,
-					index : sp,
-					scrollX : sx,
-					scrollY : sy
-				};
-			} else {
-				trng = doc.body.createTextRange();
-				trng.moveToElementText(inst.getBody());
-				trng.collapse(true);
-				bp = Math.abs(trng.move('character', xx));
-
-				trng = rng.duplicate();
-				trng.collapse(true);
-				sp = Math.abs(trng.move('character', xx));
-
-				trng = rng.duplicate();
-				trng.collapse(false);
-				le = Math.abs(trng.move('character', xx)) - sp;
-
-				return {
-					start : sp - bp,
-					length : le,
-					scrollX : sx,
-					scrollY : sy
-				};
-			}
-		} else {
-			s = this.getSel();
-			e = this.getFocusElement();
-
-			if (!s)
-				return null;
-
-			if (e && e.nodeName == 'IMG') {
-				/*nl = b.getElementsByTagName('IMG');
-				for (i=0; i<nl.length; i++) {
-					if (e == nl[i]) {
-						sp = i;
-						break;
-					}
-				}*/
-
-				return {
-					start : -1,
-					end : -1,
-					index : sp,
-					scrollX : sx,
-					scrollY : sy
-				};
-			}
-
-			// Caret or selection
-			if (s.anchorNode == s.focusNode && s.anchorOffset == s.focusOffset) {
-				e = this._getPosText(b, s.anchorNode, s.focusNode);
-
-				if (!e)
-					return {scrollX : sx, scrollY : sy};
-
-				return {
-					start : e.start + s.anchorOffset,
-					end : e.end + s.focusOffset,
-					scrollX : sx,
-					scrollY : sy
-				};
-			} else {
-				e = this._getPosText(b, rng.startContainer, rng.endContainer);
-
-				if (!e)
-					return {scrollX : sx, scrollY : sy};
-
-				return {
-					start : e.start + rng.startOffset,
-					end : e.end + rng.endOffset,
-					scrollX : sx,
-					scrollY : sy
-				};
-			}
-		}
-
-		return null;
-	},
-
-	moveToBookmark : function(bookmark) {
-		var inst = this.instance, rng, nl, i, ex, b = inst.getBody(), sd;
-		var doc = inst.getDoc(), win = inst.getWin(), sel = this.getSel();
-
-		if (!bookmark)
-			return false;
-
-		if (tinyMCE.isSafari && bookmark.rng) {
-			sel.setBaseAndExtent(bookmark.rng.startContainer, bookmark.rng.startOffset, bookmark.rng.endContainer, bookmark.rng.endOffset);
-			return true;
-		}
-
-		if (tinyMCE.isRealIE) {
-			if (bookmark.rng) {
-				try {
-					bookmark.rng.select();
-				} catch (ex) {
-					// Ignore
-				}
-
-				return true;
-			}
-
-			win.focus();
-
-			if (bookmark.tag) {
-				rng = b.createControlRange();
-
-				nl = b.getElementsByTagName(bookmark.tag);
-
-				if (nl.length > bookmark.index) {
-					try {
-						rng.addElement(nl[bookmark.index]);
-					} catch (ex) {
-						// Might be thrown if the node no longer exists
-					}
-				}
-			} else {
-				// Try/catch needed since this operation breaks when TinyMCE is placed in hidden divs/tabs
-				try {
-					// Incorrect bookmark
-					if (bookmark.start < 0)
-						return true;
-
-					rng = inst.getSel().createRange();
-					rng.moveToElementText(inst.getBody());
-					rng.collapse(true);
-					rng.moveStart('character', bookmark.start);
-					rng.moveEnd('character', bookmark.length);
-				} catch (ex) {
-					return true;
-				}
-			}
-
-			rng.select();
-
-			win.scrollTo(bookmark.scrollX, bookmark.scrollY);
-			return true;
-		}
-
-		if (tinyMCE.isGecko || tinyMCE.isOpera) {
-			if (!sel)
-				return false;
-
-			if (bookmark.rng) {
-				sel.removeAllRanges();
-				sel.addRange(bookmark.rng);
-			}
-
-			if (bookmark.start != -1 && bookmark.end != -1) {
-				try {
-					sd = this._getTextPos(b, bookmark.start, bookmark.end);
-					rng = doc.createRange();
-					rng.setStart(sd.startNode, sd.startOffset);
-					rng.setEnd(sd.endNode, sd.endOffset);
-					sel.removeAllRanges();
-					sel.addRange(rng);
-
-					if (!tinyMCE.isOpera)
-						win.focus();
-				} catch (ex) {
-					// Ignore
-				}
-			}
-
-			/*
-			if (typeof(bookmark.index) != 'undefined') {
-				tinyMCE.selectElements(b, 'IMG', function (n) {
-					if (bookmark.index-- == 0) {
-						// Select image in Gecko here
-					}
-
-					return false;
-				});
-			}
-			*/
-
-			win.scrollTo(bookmark.scrollX, bookmark.scrollY);
-			return true;
-		}
-
-		return false;
-	},
-
-	_getPosText : function(r, sn, en) {
-		var w = document.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d = {};
-
-		while ((n = w.nextNode()) != null) {
-			if (n == sn)
-				d.start = p;
-
-			if (n == en) {
-				d.end = p;
-				return d;
-			}
-
-			p += n.nodeValue ? n.nodeValue.length : 0;
-		}
-
-		return null;
-	},
-
-	_getTextPos : function(r, sp, ep) {
-		var w = document.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d = {};
-
-		while ((n = w.nextNode()) != null) {
-			p += n.nodeValue ? n.nodeValue.length : 0;
-
-			if (p >= sp && !d.startNode) {
-				d.startNode = n;
-				d.startOffset = sp - (p - n.nodeValue.length);
-			}
-
-			if (p >= ep) {
-				d.endNode = n;
-				d.endOffset = ep - (p - n.nodeValue.length);
-
-				return d;
-			}
-		}
-
-		return null;
-	},
-
-	selectNode : function(node, collapse, select_text_node, to_start) {
-		var inst = this.instance, sel, rng, nodes;
-
-		if (!node)
-			return;
-
-		if (typeof(collapse) == "undefined")
-			collapse = true;
-
-		if (typeof(select_text_node) == "undefined")
-			select_text_node = false;
-
-		if (typeof(to_start) == "undefined")
-			to_start = true;
-
-		if (inst.settings.auto_resize)
-			inst.resizeToContent();
-
-		if (tinyMCE.isRealIE) {
-			rng = inst.getDoc().body.createTextRange();
-
-			try {
-				rng.moveToElementText(node);
-
-				if (collapse)
-					rng.collapse(to_start);
-
-				rng.select();
-			} catch (e) {
-				// Throws illigal agrument in MSIE some times
-			}
-		} else {
-			sel = this.getSel();
-
-			if (!sel)
-				return;
-
-			if (tinyMCE.isSafari) {
-				sel.setBaseAndExtent(node, 0, node, node.innerText.length);
-
-				if (collapse) {
-					if (to_start)
-						sel.collapseToStart();
-					else
-						sel.collapseToEnd();
-				}
-
-				this.scrollToNode(node);
-
-				return;
-			}
-
-			rng = inst.getDoc().createRange();
-
-			if (select_text_node) {
-				// Find first textnode in tree
-				nodes = tinyMCE.getNodeTree(node, [], 3);
-				if (nodes.length > 0)
-					rng.selectNodeContents(nodes[0]);
-				else
-					rng.selectNodeContents(node);
-			} else
-				rng.selectNode(node);
-
-			if (collapse) {
-				// Special treatment of textnode collapse
-				if (!to_start && node.nodeType == 3) {
-					rng.setStart(node, node.nodeValue.length);
-					rng.setEnd(node, node.nodeValue.length);
-				} else
-					rng.collapse(to_start);
-			}
-
-			sel.removeAllRanges();
-			sel.addRange(rng);
-		}
-
-		this.scrollToNode(node);
-
-		// Set selected element
-		tinyMCE.selectedElement = null;
-		if (node.nodeType == 1)
-			tinyMCE.selectedElement = node;
-	},
-
-	scrollToNode : function(node) {
-		var inst = this.instance, w = inst.getWin(), vp = inst.getViewPort(), pos = tinyMCE.getAbsPosition(node), cvp, p, cwin;
-
-		// Only scroll if out of visible area
-		if (pos.absLeft < vp.left || pos.absLeft > vp.left + vp.width || pos.absTop < vp.top || pos.absTop > vp.top + (vp.height-25))
-			w.scrollTo(pos.absLeft, pos.absTop - vp.height + 25);
-
-		// Scroll container window
-		if (inst.settings.auto_resize) {
-			cwin = inst.getContainerWin();
-			cvp = tinyMCE.getViewPort(cwin);
-			p = this.getAbsPosition(node);
-
-			if (p.absLeft < cvp.left || p.absLeft > cvp.left + cvp.width || p.absTop < cvp.top || p.absTop > cvp.top + cvp.height)
-				cwin.scrollTo(p.absLeft, p.absTop - cvp.height + 25);
-		}
-	},
-
-	getAbsPosition : function(n) {
-		var pos = tinyMCE.getAbsPosition(n), ipos = tinyMCE.getAbsPosition(this.instance.iframeElement);
-
-		return {
-			absLeft : ipos.absLeft + pos.absLeft,
-			absTop : ipos.absTop + pos.absTop
-		};
-	},
-
-	getSel : function() {
-		var inst = this.instance;
-
-		if (tinyMCE.isRealIE)
-			return inst.getDoc().selection;
-
-		return inst.contentWindow.getSelection();
-	},
-
-	getRng : function() {
-		var s = this.getSel();
-
-		if (s == null)
-			return null;
-
-		if (tinyMCE.isRealIE)
-			return s.createRange();
-
-		if (tinyMCE.isSafari && !s.getRangeAt)
-			return '' + window.getSelection();
-
-		if (s.rangeCount > 0)
-			return s.getRangeAt(0);
-
-		return null;
-	},
-
-	isCollapsed : function() {
-		var r = this.getRng();
-
-		if (r.item)
-			return false;
-
-		return r.boundingWidth == 0 || this.getSel().isCollapsed;
-	},
-
-	collapse : function(b) {
-		var r = this.getRng(), s = this.getSel();
-
-		if (r.select) {
-			r.collapse(b);
-			r.select();
-		} else {
-			if (b)
-				s.collapseToStart();
-			else
-				s.collapseToEnd();
-		}
-	},
-
-	getFocusElement : function() {
-		var inst = this.instance, doc, rng, sel, elm;
-
-		if (tinyMCE.isRealIE) {
-			doc = inst.getDoc();
-			rng = doc.selection.createRange();
-
-	//		if (rng.collapse)
-	//			rng.collapse(true);
-
-			elm = rng.item ? rng.item(0) : rng.parentElement();
-		} else {
-			if (!tinyMCE.isSafari && inst.isHidden())
-				return inst.getBody();
-
-			sel = this.getSel();
-			rng = this.getRng();
-
-			if (!sel || !rng)
-				return null;
-
-			elm = rng.commonAncestorContainer;
-			//elm = (sel && sel.anchorNode) ? sel.anchorNode : null;
-
-			// Handle selection a image or other control like element such as anchors
-			if (!rng.collapsed) {
-				// Is selection small
-				if (rng.startContainer == rng.endContainer) {
-					if (rng.startOffset - rng.endOffset < 2) {
-						if (rng.startContainer.hasChildNodes())
-							elm = rng.startContainer.childNodes[rng.startOffset];
-					}
-				}
-			}
-
-			// Get the element parent of the node
-			elm = tinyMCE.getParentElement(elm);
-
-			//if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "img")
-			//	elm = tinyMCE.selectedElement;
-		}
-
-		return elm;
-	}
-
-	};
-
-/* file:jscripts/tiny_mce/classes/TinyMCE_UndoRedo.class.js */
-
-function TinyMCE_UndoRedo(inst) {
-	this.instance = inst;
-	this.undoLevels = [];
-	this.undoIndex = 0;
-	this.typingUndoIndex = -1;
-	this.undoRedo = true;
-};
-
-TinyMCE_UndoRedo.prototype = {
-	add : function(l) {
-		var b, customUndoLevels, newHTML, inst = this.instance, i, ul, ur;
-
-		if (l) {
-			this.undoLevels[this.undoLevels.length] = l;
-			return true;
-		}
-
-		if (this.typingUndoIndex != -1) {
-			this.undoIndex = this.typingUndoIndex;
-
-			if (tinyMCE.typingUndoIndex != -1)
-				tinyMCE.undoIndex = tinyMCE.typingUndoIndex;
-		}
-
-		newHTML = tinyMCE.trim(inst.getBody().innerHTML);
-		if (this.undoLevels[this.undoIndex] && newHTML != this.undoLevels[this.undoIndex].content) {
-			//tinyMCE.debug(newHTML, this.undoLevels[this.undoIndex].content);
-
-			// Is dirty again
-			inst.isNotDirty = false;
-
-			tinyMCE.dispatchCallback(inst, 'onchange_callback', 'onChange', inst);
-
-			// Time to compress
-			customUndoLevels = tinyMCE.settings.custom_undo_redo_levels;
-			if (customUndoLevels != -1 && this.undoLevels.length > customUndoLevels) {
-				for (i=0; i<this.undoLevels.length-1; i++)
-					this.undoLevels[i] = this.undoLevels[i+1];
-
-				this.undoLevels.length--;
-				this.undoIndex--;
-
-				// Todo: Implement global undo/redo logic here
-			}
-
-			b = inst.undoBookmark;
-
-			if (!b)
-				b = inst.selection.getBookmark();
-
-			this.undoIndex++;
-			this.undoLevels[this.undoIndex] = {
-				content : newHTML,
-				bookmark : b
-			};
-
-			// Remove all above from global undo/redo
-			ul = tinyMCE.undoLevels;
-			for (i=tinyMCE.undoIndex + 1; i<ul.length; i++) {
-				ur = ul[i].undoRedo;
-
-				if (ur.undoIndex == ur.undoLevels.length -1)
-					ur.undoIndex--;
-
-				ur.undoLevels.length--;
-			}
-
-			// Add global undo level
-			tinyMCE.undoLevels[tinyMCE.undoIndex++] = inst;
-			tinyMCE.undoLevels.length = tinyMCE.undoIndex;
-
-			this.undoLevels.length = this.undoIndex + 1;
-
-			return true;
-		}
-
-		return false;
-	},
-
-	undo : function() {
-		var inst = this.instance;
-
-		// Do undo
-		if (this.undoIndex > 0) {
-			this.undoIndex--;
-
-			tinyMCE.setInnerHTML(inst.getBody(), this.undoLevels[this.undoIndex].content);
-			inst.repaint();
-
-			if (inst.settings.custom_undo_redo_restore_selection)
-				inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark);
-		}
-	},
-
-	redo : function() {
-		var inst = this.instance;
-
-		tinyMCE.execCommand("mceEndTyping");
-
-		if (this.undoIndex < (this.undoLevels.length-1)) {
-			this.undoIndex++;
-
-			tinyMCE.setInnerHTML(inst.getBody(), this.undoLevels[this.undoIndex].content);
-			inst.repaint();
-
-			if (inst.settings.custom_undo_redo_restore_selection)
-				inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark);
-		}
-
-		tinyMCE.triggerNodeChange();
-	}
-
-	};
-
-/* file:jscripts/tiny_mce/classes/TinyMCE_ForceParagraphs.class.js */
-
-var TinyMCE_ForceParagraphs = {
-	_insertPara : function(inst, e) {
-		var doc = inst.getDoc(), sel = inst.getSel(), body = inst.getBody(), win = inst.contentWindow, rng = sel.getRangeAt(0);
-		var rootElm = doc.documentElement, blockName = "P", startNode, endNode, startBlock, endBlock;
-		var rngBefore, rngAfter, direct, startNode, startOffset, endNode, endOffset, b = tinyMCE.isOpera ? inst.selection.getBookmark() : null;
-		var paraBefore, paraAfter, startChop, endChop, contents, i;
-
-		function isEmpty(para) {
-			var nodes;
-
-			function isEmptyHTML(html) {
-				return html.replace(new RegExp('[ \t\r\n]+', 'g'), '').toLowerCase() == '';
-			}
-
-			// Check for images
-			if (para.getElementsByTagName("img").length > 0)
-				return false;
-
-			// Check for tables
-			if (para.getElementsByTagName("table").length > 0)
-				return false;
-
-			// Check for HRs
-			if (para.getElementsByTagName("hr").length > 0)
-				return false;
-
-			// Check all textnodes
-			nodes = tinyMCE.getNodeTree(para, [], 3);
-			for (i=0; i<nodes.length; i++) {
-				if (!isEmptyHTML(nodes[i].nodeValue))
-					return false;
-			}
-
-			// No images, no tables, no hrs, no text content then it's empty
-			return true;
-		}
-
-	//	tinyMCE.debug(body.innerHTML);
-
-	//	debug(e.target, sel.anchorNode.nodeName, sel.focusNode.nodeName, rng.startContainer, rng.endContainer, rng.commonAncestorContainer, sel.anchorOffset, sel.focusOffset, rng.toString());
-
-		// Setup before range
-		rngBefore = doc.createRange();
-		rngBefore.setStart(sel.anchorNode, sel.anchorOffset);
-		rngBefore.collapse(true);
-
-		// Setup after range
-		rngAfter = doc.createRange();
-		rngAfter.setStart(sel.focusNode, sel.focusOffset);
-		rngAfter.collapse(true);
-
-		// Setup start/end points
-		direct = rngBefore.compareBoundaryPoints(rngBefore.START_TO_END, rngAfter) < 0;
-		startNode = direct ? sel.anchorNode : sel.focusNode;
-		startOffset = direct ? sel.anchorOffset : sel.focusOffset;
-		endNode = direct ? sel.focusNode : sel.anchorNode;
-		endOffset = direct ? sel.focusOffset : sel.anchorOffset;
-
-		startNode = startNode.nodeName == "HTML" ? doc.body : startNode; // Fix for Opera bug: https://bugs.opera.com/show_bug.cgi?id=273224&comments=yes
-		startNode = startNode.nodeName == "BODY" ? startNode.firstChild : startNode;
-		endNode = endNode.nodeName == "BODY" ? endNode.firstChild : endNode;
-
-		// Get block elements
-		startBlock = inst.getParentBlockElement(startNode);
-		endBlock = inst.getParentBlockElement(endNode);
-
-		// If absolute force paragraph generation within
-		if (startBlock && (startBlock.nodeName == 'CAPTION' || /absolute|relative|static/gi.test(startBlock.style.position)))
-			startBlock = null;
-
-		if (endBlock && (endBlock.nodeName == 'CAPTION' || /absolute|relative|static/gi.test(endBlock.style.position)))
-			endBlock = null;
-
-		// Use current block name
-		if (startBlock != null) {
-			blockName = startBlock.nodeName;
-
-			// Use P instead
-			if (/(TD|TABLE|TH|CAPTION)/.test(blockName) || (blockName == "DIV" && /left|right/gi.test(startBlock.style.cssFloat)))
-				blockName = "P";
-		}
-
-		// Within a list use normal behaviour
-		if (tinyMCE.getParentElement(startBlock, "OL,UL", null, body) != null)
-			return false;
-
-		// Within a table create new paragraphs
-		if ((startBlock != null && startBlock.nodeName == "TABLE") || (endBlock != null && endBlock.nodeName == "TABLE"))
-			startBlock = endBlock = null;
-
-		// Setup new paragraphs
-		paraBefore = (startBlock != null && startBlock.nodeName == blockName) ? startBlock.cloneNode(false) : doc.createElement(blockName);
-		paraAfter = (endBlock != null && endBlock.nodeName == blockName) ? endBlock.cloneNode(false) : doc.createElement(blockName);
-
-		// Is header, then force paragraph under
-		if (/^(H[1-6])$/.test(blockName))
-			paraAfter = doc.createElement("p");
-
-		// Setup chop nodes
-		startChop = startNode;
-		endChop = endNode;
-
-		// Get startChop node
-		node = startChop;
-		do {
-			if (node == body || node.nodeType == 9 || tinyMCE.isBlockElement(node))
-				break;
-
-			startChop = node;
-		} while ((node = node.previousSibling ? node.previousSibling : node.parentNode));
-
-		// Get endChop node
-		node = endChop;
-		do {
-			if (node == body || node.nodeType == 9 || tinyMCE.isBlockElement(node))
-				break;
-
-			endChop = node;
-		} while ((node = node.nextSibling ? node.nextSibling : node.parentNode));
-
-		// Fix when only a image is within the TD
-		if (startChop.nodeName == "TD")
-			startChop = startChop.firstChild;
-
-		if (endChop.nodeName == "TD")
-			endChop = endChop.lastChild;
-
-		// If not in a block element
-		if (startBlock == null) {
-			// Delete selection
-			rng.deleteContents();
-
-			if (!tinyMCE.isSafari)
-				sel.removeAllRanges();
-
-			if (startChop != rootElm && endChop != rootElm) {
-				// Insert paragraph before
-				rngBefore = rng.cloneRange();
-
-				if (startChop == body)
-					rngBefore.setStart(startChop, 0);
-				else
-					rngBefore.setStartBefore(startChop);
-
-				paraBefore.appendChild(rngBefore.cloneContents());
-
-				// Insert paragraph after
-				if (endChop.parentNode.nodeName == blockName)
-					endChop = endChop.parentNode;
-
-				// If not after image
-				//if (rng.startContainer.nodeName != "BODY" && rng.endContainer.nodeName != "BODY")
-					rng.setEndAfter(endChop);
-
-				if (endChop.nodeName != "#text" && endChop.nodeName != "BODY")
-					rngBefore.setEndAfter(endChop);
-
-				contents = rng.cloneContents();
-				if (contents.firstChild && (contents.firstChild.nodeName == blockName || contents.firstChild.nodeName == "BODY"))
-					paraAfter.innerHTML = contents.firstChild.innerHTML;
-				else
-					paraAfter.appendChild(contents);
-
-				// Check if it's a empty paragraph
-				if (isEmpty(paraBefore))
-					paraBefore.innerHTML = "&nbsp;";
-
-				// Check if it's a empty paragraph
-				if (isEmpty(paraAfter))
-					paraAfter.innerHTML = "&nbsp;";
-
-				// Delete old contents
-				rng.deleteContents();
-				rngAfter.deleteContents();
-				rngBefore.deleteContents();
-
-				// Insert new paragraphs
-				if (tinyMCE.isOpera) {
-					paraBefore.normalize();
-					rngBefore.insertNode(paraBefore);
-					paraAfter.normalize();
-					rngBefore.insertNode(paraAfter);
-				} else {
-					paraAfter.normalize();
-					rngBefore.insertNode(paraAfter);
-					paraBefore.normalize();
-					rngBefore.insertNode(paraBefore);
-				}
-
-				//tinyMCE.debug("1: ", paraBefore.innerHTML, paraAfter.innerHTML);
-			} else {
-				body.innerHTML = "<" + blockName + ">&nbsp;</" + blockName + "><" + blockName + ">&nbsp;</" + blockName + ">";
-				paraAfter = body.childNodes[1];
-			}
-
-			inst.selection.moveToBookmark(b);
-			inst.selection.selectNode(paraAfter, true, true);
-
-			return true;
-		}
-
-		// Place first part within new paragraph
-		if (startChop.nodeName == blockName)
-			rngBefore.setStart(startChop, 0);
-		else
-			rngBefore.setStartBefore(startChop);
-
-		rngBefore.setEnd(startNode, startOffset);
-		paraBefore.appendChild(rngBefore.cloneContents());
-
-		// Place secound part within new paragraph
-		rngAfter.setEndAfter(endChop);
-		rngAfter.setStart(endNode, endOffset);
-		contents = rngAfter.cloneContents();
-
-		if (contents.firstChild && contents.firstChild.nodeName == blockName) {
-	/*		var nodes = contents.firstChild.childNodes;
-			for (i=0; i<nodes.length; i++) {
-				//tinyMCE.debug(nodes[i].nodeName);
-				if (nodes[i].nodeName != "BODY")
-					paraAfter.appendChild(nodes[i]);
-			}
-	*/
-			paraAfter.innerHTML = contents.firstChild.innerHTML;
-		} else
-			paraAfter.appendChild(contents);
-
-		// Check if it's a empty paragraph
-		if (isEmpty(paraBefore))
-			paraBefore.innerHTML = "&nbsp;";
-
-		// Check if it's a empty paragraph
-		if (isEmpty(paraAfter))
-			paraAfter.innerHTML = "&nbsp;";
-
-		// Create a range around everything
-		rng = doc.createRange();
-
-		if (!startChop.previousSibling && startChop.parentNode.nodeName.toUpperCase() == blockName) {
-			rng.setStartBefore(startChop.parentNode);
-		} else {
-			if (rngBefore.startContainer.nodeName.toUpperCase() == blockName && rngBefore.startOffset == 0)
-				rng.setStartBefore(rngBefore.startContainer);
-			else
-				rng.setStart(rngBefore.startContainer, rngBefore.startOffset);
-		}
-
-		if (!endChop.nextSibling && endChop.parentNode.nodeName.toUpperCase() == blockName)
-			rng.setEndAfter(endChop.parentNode);
-		else
-			rng.setEnd(rngAfter.endContainer, rngAfter.endOffset);
-
-		// Delete all contents and insert new paragraphs
-		rng.deleteContents();
-
-		if (tinyMCE.isOpera) {
-			rng.insertNode(paraBefore);
-			rng.insertNode(paraAfter);
-		} else {
-			rng.insertNode(paraAfter);
-			rng.insertNode(paraBefore);
-		}
-
-		//tinyMCE.debug("2", paraBefore.innerHTML, paraAfter.innerHTML);
-
-		// Normalize
-		paraAfter.normalize();
-		paraBefore.normalize();
-
-		inst.selection.moveToBookmark(b);
-		inst.selection.selectNode(paraAfter, true, true);
-
-		return true;
-	},
-
-	_handleBackSpace : function(inst) {
-		var r = inst.getRng(), sn = r.startContainer, nv, s = false;
-
-		// Added body check for bug #1527787
-		if (sn && sn.nextSibling && sn.nextSibling.nodeName == "BR" && sn.parentNode.nodeName != "BODY") {
-			nv = sn.nodeValue;
-
-			// Handle if a backspace is pressed after a space character #bug 1466054 removed since fix for #1527787
-			/*if (nv != null && nv.length >= r.startOffset && nv.charAt(r.startOffset - 1) == ' ')
-				s = true;*/
-
-			// Only remove BRs if we are at the end of line #bug 1464152
-			if (nv != null && r.startOffset == nv.length)
-				sn.nextSibling.parentNode.removeChild(sn.nextSibling);
-		}
-
-		if (inst.settings.auto_resize)
-			inst.resizeToContent();
-
-		return s;
-	}
-
-	};
-
-/* file:jscripts/tiny_mce/classes/TinyMCE_Layer.class.js */
-
-function TinyMCE_Layer(id, bm) {
-	this.id = id;
-	this.blockerElement = null;
-	this.events = false;
-	this.element = null;
-	this.blockMode = typeof(bm) != 'undefined' ? bm : true;
-	this.doc = document;
-};
-
-TinyMCE_Layer.prototype = {
-	moveRelativeTo : function(re, p) {
-		var rep = this.getAbsPosition(re), e = this.getElement(), x, y;
-		var w = parseInt(re.offsetWidth), h = parseInt(re.offsetHeight);
-		var ew = parseInt(e.offsetWidth), eh = parseInt(e.offsetHeight);
-
-		switch (p) {
-			case "tl":
-				x = rep.absLeft;
-				y = rep.absTop;
-				break;
-
-			case "tr":
-				x = rep.absLeft + w;
-				y = rep.absTop;
-				break;
-
-			case "bl":
-				x = rep.absLeft;
-				y = rep.absTop + h;
-				break;
-
-			case "br":
-				x = rep.absLeft + w;
-				y = rep.absTop + h;
-				break;
-
-			case "cc":
-				x = rep.absLeft + (w / 2) - (ew / 2);
-				y = rep.absTop + (h / 2) - (eh / 2);
-				break;
-		}
-
-		this.moveTo(x, y);
-	},
-
-	moveBy : function(x, y) {
-		var e = this.getElement();
-		this.moveTo(parseInt(e.style.left) + x, parseInt(e.style.top) + y);
-	},
-
-	moveTo : function(x, y) {
-		var e = this.getElement();
-
-		e.style.left = x + "px";
-		e.style.top = y + "px";
-
-		this.updateBlocker();
-	},
-
-	resizeBy : function(w, h) {
-		var e = this.getElement();
-		this.resizeTo(parseInt(e.style.width) + w, parseInt(e.style.height) + h);
-	},
-
-	resizeTo : function(w, h) {
-		var e = this.getElement();
-
-		if (w != null)
-			e.style.width = w + "px";
-
-		if (h != null)
-			e.style.height = h + "px";
-
-		this.updateBlocker();
-	},
-
-	show : function() {
-		var el = this.getElement();
-
-		if (el) {
-			el.style.display = 'block';
-			this.updateBlocker();
-		}
-	},
-
-	hide : function() {
-		var el = this.getElement();
-
-		if (el) {
-			el.style.display = 'none';
-			this.updateBlocker();
-		}
-	},
-
-	isVisible : function() {
-		return this.getElement().style.display == 'block';
-	},
-
-	getElement : function() {
-		if (!this.element)
-			this.element = this.doc.getElementById(this.id);
-
-		return this.element;
-	},
-
-	setBlockMode : function(s) {
-		this.blockMode = s;
-	},
-
-	updateBlocker : function() {
-		var e, b, x, y, w, h;
-
-		b = this.getBlocker();
-		if (b) {
-			if (this.blockMode) {
-				e = this.getElement();
-				x = this.parseInt(e.style.left);
-				y = this.parseInt(e.style.top);
-				w = this.parseInt(e.offsetWidth);
-				h = this.parseInt(e.offsetHeight);
-
-				b.style.left = x + 'px';
-				b.style.top = y + 'px';
-				b.style.width = w + 'px';
-				b.style.height = h + 'px';
-				b.style.display = e.style.display;
-			} else
-				b.style.display = 'none';
-		}
-	},
-
-	getBlocker : function() {
-		var d, b;
-
-		if (!this.blockerElement && this.blockMode) {
-			d = this.doc;
-			b = d.getElementById(this.id + "_blocker");
-
-			if (!b) {
-				b = d.createElement("iframe");
-
-				b.setAttribute('id', this.id + "_blocker");
-				b.style.cssText = 'display: none; position: absolute; left: 0; top: 0';
-				b.src = 'javascript:false;';
-				b.frameBorder = '0';
-				b.scrolling = 'no';
-
-				d.body.appendChild(b);
-			}
-
-			this.blockerElement = b;
-		}
-
-		return this.blockerElement;
-	},
-
-	getAbsPosition : function(n) {
-		var p = {absLeft : 0, absTop : 0};
-
-		while (n) {
-			p.absLeft += n.offsetLeft;
-			p.absTop += n.offsetTop;
-			n = n.offsetParent;
-		}
-
-		return p;
-	},
-
-	create : function(n, c, p, h) {
-		var d = this.doc, e = d.createElement(n);
-
-		e.setAttribute('id', this.id);
-
-		if (c)
-			e.className = c;
-
-		if (!p)
-			p = d.body;
-
-		if (h)
-			e.innerHTML = h;
-
-		p.appendChild(e);
-
-		return this.element = e;
-	},
-
-	exists : function() {
-		return this.doc.getElementById(this.id) != null;
-	},
-
-	parseInt : function(s) {
-		if (s == null || s == '')
-			return 0;
-
-		return parseInt(s);
-	},
-
-	remove : function() {
-		var e = this.getElement(), b = this.getBlocker();
-
-		if (e)
-			e.parentNode.removeChild(e);
-
-		if (b)
-			b.parentNode.removeChild(b);
-	}
-
-	};
-
-/* file:jscripts/tiny_mce/classes/TinyMCE_Menu.class.js */
-
-function TinyMCE_Menu() {
-	var id;
-
-	if (typeof(tinyMCE.menuCounter) == "undefined")
-		tinyMCE.menuCounter = 0;
-
-	id = "mc_menu_" + tinyMCE.menuCounter++;
-
-	TinyMCE_Layer.call(this, id, true);
-
-	this.id = id;
-	this.items = [];
-	this.needsUpdate = true;
-};
-
-TinyMCE_Menu.prototype = tinyMCE.extend(TinyMCE_Layer.prototype, {
-	init : function(s) {
-		var n;
-
-		// Default params
-		this.settings = {
-			separator_class : 'mceMenuSeparator',
-			title_class : 'mceMenuTitle',
-			disabled_class : 'mceMenuDisabled',
-			menu_class : 'mceMenu',
-			drop_menu : true
-		};
-
-		for (n in s)
-			this.settings[n] = s[n];
-
-		this.create('div', this.settings.menu_class);
-	},
-
-	clear : function() {
-		this.items = [];
-	},
-
-	addTitle : function(t) {
-		this.add({type : 'title', text : t});
-	},
-
-	addDisabled : function(t) {
-		this.add({type : 'disabled', text : t});
-	},
-
-	addSeparator : function() {
-		this.add({type : 'separator'});
-	},
-
-	addItem : function(t, js) {
-		this.add({text : t, js : js});
-	},
-
-	add : function(mi) {
-		this.items[this.items.length] = mi;
-		this.needsUpdate = true;
-	},
-
-	update : function() {
-		var e = this.getElement(), h = '', i, t, m = this.items, s = this.settings;
-
-		if (this.settings.drop_menu)
-			h += '<span class="mceMenuLine"></span>';
-
-		h += '<table border="0" cellpadding="0" cellspacing="0">';
-
-		for (i=0; i<m.length; i++) {
-			t = tinyMCE.xmlEncode(m[i].text);
-			c = m[i].class_name ? ' class="' + m[i].class_name + '"' : '';
-
-			switch (m[i].type) {
-				case 'separator':
-					h += '<tr class="' + s.separator_class + '"><td>';
-					break;
-
-				case 'title':
-					h += '<tr class="' + s.title_class + '"><td><span' + c +'>' + t + '</span>';
-					break;
-
-				case 'disabled':
-					h += '<tr class="' + s.disabled_class + '"><td><span' + c +'>' + t + '</span>';
-					break;
-
-				default:
-					h += '<tr><td><a href="' + tinyMCE.xmlEncode(m[i].js) + '" onmousedown="' + tinyMCE.xmlEncode(m[i].js) + ';return tinyMCE.cancelEvent(event);" onclick="return tinyMCE.cancelEvent(event);" onmouseup="return tinyMCE.cancelEvent(event);"><span' + c +'>' + t + '</span></a>';
-			}
-
-			h += '</td></tr>';
-		}
-
-		h += '</table>';
-
-		e.innerHTML = h;
-
-		this.needsUpdate = false;
-		this.updateBlocker();
-	},
-
-	show : function() {
-		var nl, i;
-
-		if (tinyMCE.lastMenu == this)
-			return;
-
-		if (this.needsUpdate)
-			this.update();
-
-		if (tinyMCE.lastMenu && tinyMCE.lastMenu != this)
-			tinyMCE.lastMenu.hide();
-
-		TinyMCE_Layer.prototype.show.call(this);
-
-		if (!tinyMCE.isOpera) {
-			// Accessibility stuff
-/*			nl = this.getElement().getElementsByTagName("a");
-			if (nl.length > 0)
-				nl[0].focus();*/
-		}
-
-		tinyMCE.lastMenu = this;
-	}
-
-	});
-
-/* file:jscripts/tiny_mce/classes/TinyMCE_Debug.class.js */
-
-tinyMCE.add(TinyMCE_Engine, {
-	debug : function() {
-		var m = "", a, i, l = tinyMCE.log.length;
-
-		for (i=0, a = this.debug.arguments; i<a.length; i++) {
-			m += a[i];
-
-			if (i<a.length-1)
-				m += ', ';
-		}
-
-		if (l < 1000)
-			tinyMCE.log[l] = "[debug] " + m;
-	}
-
-	});
-
+var tinymce = {
+	majorVersion : '3',
+	minorVersion : '2.4.1',
+	releaseDate : '2009-05-25',
+
+	_init : function() {
+		var t = this, d = document, w = window, na = navigator, ua = na.userAgent, i, nl, n, base, p, v;
+
+		// Browser checks
+		t.isOpera = w.opera && opera.buildNumber;
+		t.isWebKit = /WebKit/.test(ua);
+		t.isIE = !t.isWebKit && !t.isOpera && (/MSIE/gi).test(ua) && (/Explorer/gi).test(na.appName);
+		t.isIE6 = t.isIE && /MSIE [56]/.test(ua);
+		t.isGecko = !t.isWebKit && /Gecko/.test(ua);
+		t.isMac = ua.indexOf('Mac') != -1;
+		t.isAir = /adobeair/i.test(ua);
+
+		// TinyMCE .NET webcontrol might be setting the values for TinyMCE
+		if (w.tinyMCEPreInit) {
+			t.suffix = tinyMCEPreInit.suffix;
+			t.baseURL = tinyMCEPreInit.base;
+			t.query = tinyMCEPreInit.query;
+			return;
+		}
+
+		// Get suffix and base
+		t.suffix = '';
+
+		// If base element found, add that infront of baseURL
+		nl = d.getElementsByTagName('base');
+		for (i=0; i<nl.length; i++) {
+			if (v = nl[i].href) {
+				// Host only value like http://site.com or http://site.com:8008
+				if (/^https?:\/\/[^\/]+$/.test(v))
+					v += '/';
+
+				base = v ? v.match(/.*\//)[0] : ''; // Get only directory
+			}
+		}
+
+		function getBase(n) {
+			if (n.src && /tiny_mce(|_dev|_src|_gzip|_jquery|_prototype).js/.test(n.src)) {
+				if (/_(src|dev)\.js/g.test(n.src))
+					t.suffix = '_src';
+
+				if ((p = n.src.indexOf('?')) != -1)
+					t.query = n.src.substring(p + 1);
+
+				t.baseURL = n.src.substring(0, n.src.lastIndexOf('/'));
+
+				// If path to script is relative and a base href was found add that one infront
+				if (base && t.baseURL.indexOf('://') == -1)
+					t.baseURL = base + t.baseURL;
+
+				return t.baseURL;
+			}
+
+			return null;
+		};
+
+		// Check document
+		nl = d.getElementsByTagName('script');
+		for (i=0; i<nl.length; i++) {
+			if (getBase(nl[i]))
+				return;
+		}
+
+		// Check head
+		n = d.getElementsByTagName('head')[0];
+		if (n) {
+			nl = n.getElementsByTagName('script');
+			for (i=0; i<nl.length; i++) {
+				if (getBase(nl[i]))
+					return;
+			}
+		}
+
+		return;
+	},
+
+	is : function(o, t) {
+		var n = typeof(o);
+
+		if (!t)
+			return n != 'undefined';
+
+		if (t == 'array' && (o.hasOwnProperty && o instanceof Array))
+			return true;
+
+		return n == t;
+	},
+
+
+	each : function(o, cb, s) {
+		var n, l;
+
+		if (!o)
+			return 0;
+
+		s = s || o;
+
+		if (typeof(o.length) != 'undefined') {
+			// Indexed arrays, needed for Safari
+			for (n=0, l = o.length; n<l; n++) {
+				if (cb.call(s, o[n], n, o) === false)
+					return 0;
+			}
+		} else {
+			// Hashtables
+			for (n in o) {
+				if (o.hasOwnProperty(n)) {
+					if (cb.call(s, o[n], n, o) === false)
+						return 0;
+				}
+			}
+		}
+
+		return 1;
+	},
+
+	map : function(a, f) {
+		var o = [];
+
+		tinymce.each(a, function(v) {
+			o.push(f(v));
+		});
+
+		return o;
+	},
+
+	grep : function(a, f) {
+		var o = [];
+
+		tinymce.each(a, function(v) {
+			if (!f || f(v))
+				o.push(v);
+		});
+
+		return o;
+	},
+
+	inArray : function(a, v) {
+		var i, l;
+
+		if (a) {
+			for (i = 0, l = a.length; i < l; i++) {
+				if (a[i] === v)
+					return i;
+			}
+		}
+
+		return -1;
+	},
+
+	extend : function(o, e) {
+		var i, a = arguments;
+
+		for (i=1; i<a.length; i++) {
+			e = a[i];
+
+			tinymce.each(e, function(v, n) {
+				if (typeof(v) !== 'undefined')
+					o[n] = v;
+			});
+		}
+
+		return o;
+	},
+
+	trim : function(s) {
+		return (s ? '' + s : '').replace(/^\s*|\s*$/g, '');
+	},
+
+
+	create : function(s, p) {
+		var t = this, sp, ns, cn, scn, c, de = 0;
+
+		// Parse : <prefix> <class>:<super class>
+		s = /^((static) )?([\w.]+)(:([\w.]+))?/.exec(s);
+		cn = s[3].match(/(^|\.)(\w+)$/i)[2]; // Class name
+
+		// Create namespace for new class
+		ns = t.createNS(s[3].replace(/\.\w+$/, ''));
+
+		// Class already exists
+		if (ns[cn])
+			return;
+
+		// Make pure static class
+		if (s[2] == 'static') {
+			ns[cn] = p;
+
+			if (this.onCreate)
+				this.onCreate(s[2], s[3], ns[cn]);
+
+			return;
+		}
+
+		// Create default constructor
+		if (!p[cn]) {
+			p[cn] = function() {};
+			de = 1;
+		}
+
+		// Add constructor and methods
+		ns[cn] = p[cn];
+		t.extend(ns[cn].prototype, p);
+
+		// Extend
+		if (s[5]) {
+			sp = t.resolve(s[5]).prototype;
+			scn = s[5].match(/\.(\w+)$/i)[1]; // Class name
+
+			// Extend constructor
+			c = ns[cn];
+			if (de) {
+				// Add passthrough constructor
+				ns[cn] = function() {
+					return sp[scn].apply(this, arguments);
+				};
+			} else {
+				// Add inherit constructor
+				ns[cn] = function() {
+					this.parent = sp[scn];
+					return c.apply(this, arguments);
+				};
+			}
+			ns[cn].prototype[cn] = ns[cn];
+
+			// Add super methods
+			t.each(sp, function(f, n) {
+				ns[cn].prototype[n] = sp[n];
+			});
+
+			// Add overridden methods
+			t.each(p, function(f, n) {
+				// Extend methods if needed
+				if (sp[n]) {
+					ns[cn].prototype[n] = function() {
+						this.parent = sp[n];
+						return f.apply(this, arguments);
+					};
+				} else {
+					if (n != cn)
+						ns[cn].prototype[n] = f;
+				}
+			});
+		}
+
+		// Add static methods
+		t.each(p['static'], function(f, n) {
+			ns[cn][n] = f;
+		});
+
+		if (this.onCreate)
+			this.onCreate(s[2], s[3], ns[cn].prototype);
+	},
+
+	walk : function(o, f, n, s) {
+		s = s || this;
+
+		if (o) {
+			if (n)
+				o = o[n];
+
+			tinymce.each(o, function(o, i) {
+				if (f.call(s, o, i, n) === false)
+					return false;
+
+				tinymce.walk(o, f, n, s);
+			});
+		}
+	},
+
+	createNS : function(n, o) {
+		var i, v;
+
+		o = o || window;
+
+		n = n.split('.');
+		for (i=0; i<n.length; i++) {
+			v = n[i];
+
+			if (!o[v])
+				o[v] = {};
+
+			o = o[v];
+		}
+
+		return o;
+	},
+
+	resolve : function(n, o) {
+		var i, l;
+
+		o = o || window;
+
+		n = n.split('.');
+		for (i=0, l = n.length; i<l; i++) {
+			o = o[n[i]];
+
+			if (!o)
+				break;
+		}
+
+		return o;
+	},
+
+	addUnload : function(f, s) {
+		var t = this, w = window;
+
+		f = {func : f, scope : s || this};
+
+		if (!t.unloads) {
+			function unload() {
+				var li = t.unloads, o, n;
+
+				if (li) {
+					// Call unload handlers
+					for (n in li) {
+						o = li[n];
+
+						if (o && o.func)
+							o.func.call(o.scope, 1); // Send in one arg to distinct unload and user destroy
+					}
+
+					// Detach unload function
+					if (w.detachEvent) {
+						w.detachEvent('onbeforeunload', fakeUnload);
+						w.detachEvent('onunload', unload);
+					} else if (w.removeEventListener)
+						w.removeEventListener('unload', unload, false);
+
+					// Destroy references
+					t.unloads = o = li = w = unload = 0;
+
+					// Run garbarge collector on IE
+					if (window.CollectGarbage)
+						window.CollectGarbage();
+				}
+			};
+
+			function fakeUnload() {
+				var d = document;
+
+				// Is there things still loading, then do some magic
+				if (d.readyState == 'interactive') {
+					function stop() {
+						// Prevent memory leak
+						d.detachEvent('onstop', stop);
+
+						// Call unload handler
+						if (unload)
+							unload();
+
+						d = 0;
+					};
+
+					// Fire unload when the currently loading page is stopped
+					if (d)
+						d.attachEvent('onstop', stop);
+
+					// Remove onstop listener after a while to prevent the unload function
+					// to execute if the user presses cancel in an onbeforeunload
+					// confirm dialog and then presses the browser stop button
+					window.setTimeout(function() {
+						if (d)
+							d.detachEvent('onstop', stop);
+					}, 0);
+				}
+			};
+
+			// Attach unload handler
+			if (w.attachEvent) {
+				w.attachEvent('onunload', unload);
+				w.attachEvent('onbeforeunload', fakeUnload);
+			} else if (w.addEventListener)
+				w.addEventListener('unload', unload, false);
+
+			// Setup initial unload handler array
+			t.unloads = [f];
+		} else
+			t.unloads.push(f);
+
+		return f;
+	},
+
+	removeUnload : function(f) {
+		var u = this.unloads, r = null;
+
+		tinymce.each(u, function(o, i) {
+			if (o && o.func == f) {
+				u.splice(i, 1);
+				r = f;
+				return false;
+			}
+		});
+
+		return r;
+	},
+
+	explode : function(s, d) {
+		return s ? tinymce.map(s.split(d || ','), tinymce.trim) : s;
+	},
+
+	_addVer : function(u) {
+		var v;
+
+		if (!this.query)
+			return u;
+
+		v = (u.indexOf('?') == -1 ? '?' : '&') + this.query;
+
+		if (u.indexOf('#') == -1)
+			return u + v;
+
+		return u.replace('#', v + '#');
+	}
+
+	};
+
+// Required for GZip AJAX loading
+window.tinymce = tinymce;
+
+// Initialize the API
+tinymce._init();
+tinymce.create('tinymce.util.Dispatcher', {
+	scope : null,
+	listeners : null,
+
+	Dispatcher : function(s) {
+		this.scope = s || this;
+		this.listeners = [];
+	},
+
+	add : function(cb, s) {
+		this.listeners.push({cb : cb, scope : s || this.scope});
+
+		return cb;
+	},
+
+	addToTop : function(cb, s) {
+		this.listeners.unshift({cb : cb, scope : s || this.scope});
+
+		return cb;
+	},
+
+	remove : function(cb) {
+		var l = this.listeners, o = null;
+
+		tinymce.each(l, function(c, i) {
+			if (cb == c.cb) {
+				o = cb;
+				l.splice(i, 1);
+				return false;
+			}
+		});
+
+		return o;
+	},
+
+	dispatch : function() {
+		var s, a = arguments, i, li = this.listeners, c;
+
+		// Needs to be a real loop since the listener count might change while looping
+		// And this is also more efficient
+		for (i = 0; i<li.length; i++) {
+			c = li[i];
+			s = c.cb.apply(c.scope, a);
+
+			if (s === false)
+				break;
+		}
+
+		return s;
+	}
+
+	});
+(function() {
+	var each = tinymce.each;
+
+	tinymce.create('tinymce.util.URI', {
+		URI : function(u, s) {
+			var t = this, o, a, b;
+
+			// Default settings
+			s = t.settings = s || {};
+
+			// Strange app protocol or local anchor
+			if (/^(mailto|tel|news|javascript|about):/i.test(u) || /^\s*#/.test(u)) {
+				t.source = u;
+				return;
+			}
+
+			// Absolute path with no host, fake host and protocol
+			if (u.indexOf('/') === 0 && u.indexOf('//') !== 0)
+				u = (s.base_uri ? s.base_uri.protocol || 'http' : 'http') + '://mce_host' + u;
+
+			// Relative path
+			if (u.indexOf(':/') === -1 && u.indexOf('//') !== 0)
+				u = (s.base_uri.protocol || 'http') + '://mce_host' + t.toAbsPath(s.base_uri.path, u);
+
+			// Parse URL (Credits goes to Steave, http://blog.stevenlevithan.com/archives/parseuri)
+			u = u.replace(/@@/g, '(mce_at)'); // Zope 3 workaround, they use @@something
+			u = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(u);
+			each(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"], function(v, i) {
+				var s = u[i];
+
+				// Zope 3 workaround, they use @@something
+				if (s)
+					s = s.replace(/\(mce_at\)/g, '@@');
+
+				t[v] = s;
+			});
+
+			if (b = s.base_uri) {
+				if (!t.protocol)
+					t.protocol = b.protocol;
+
+				if (!t.userInfo)
+					t.userInfo = b.userInfo;
+
+				if (!t.port && t.host == 'mce_host')
+					t.port = b.port;
+
+				if (!t.host || t.host == 'mce_host')
+					t.host = b.host;
+
+				t.source = '';
+			}
+
+			//t.path = t.path || '/';
+		},
+
+		setPath : function(p) {
+			var t = this;
+
+			p = /^(.*?)\/?(\w+)?$/.exec(p);
+
+			// Update path parts
+			t.path = p[0];
+			t.directory = p[1];
+			t.file = p[2];
+
+			// Rebuild source
+			t.source = '';
+			t.getURI();
+		},
+
+		toRelative : function(u) {
+			var t = this, o;
+
+			if (u === "./")
+				return u;
+
+			u = new tinymce.util.URI(u, {base_uri : t});
+
+			// Not on same domain/port or protocol
+			if ((u.host != 'mce_host' && t.host != u.host && u.host) || t.port != u.port || t.protocol != u.protocol)
+				return u.getURI();
+
+			o = t.toRelPath(t.path, u.path);
+
+			// Add query
+			if (u.query)
+				o += '?' + u.query;
+
+			// Add anchor
+			if (u.anchor)
+				o += '#' + u.anchor;
+
+			return o;
+		},
+	
+		toAbsolute : function(u, nh) {
+			var u = new tinymce.util.URI(u, {base_uri : this});
+
+			return u.getURI(this.host == u.host ? nh : 0);
+		},
+
+		toRelPath : function(base, path) {
+			var items, bp = 0, out = '', i, l;
+
+			// Split the paths
+			base = base.substring(0, base.lastIndexOf('/'));
+			base = base.split('/');
+			items = path.split('/');
+
+			if (base.length >= items.length) {
+				for (i = 0, l = base.length; i < l; i++) {
+					if (i >= items.length || base[i] != items[i]) {
+						bp = i + 1;
+						break;
+					}
+				}
+			}
+
+			if (base.length < items.length) {
+				for (i = 0, l = items.length; i < l; i++) {
+					if (i >= base.length || base[i] != items[i]) {
+						bp = i + 1;
+						break;
+					}
+				}
+			}
+
+			if (bp == 1)
+				return path;
+
+			for (i = 0, l = base.length - (bp - 1); i < l; i++)
+				out += "../";
+
+			for (i = bp - 1, l = items.length; i < l; i++) {
+				if (i != bp - 1)
+					out += "/" + items[i];
+				else
+					out += items[i];
+			}
+
+			return out;
+		},
+
+		toAbsPath : function(base, path) {
+			var i, nb = 0, o = [], tr;
+
+			// Split paths
+			tr = /\/$/.test(path) ? '/' : '';
+			base = base.split('/');
+			path = path.split('/');
+
+			// Remove empty chunks
+			each(base, function(k) {
+				if (k)
+					o.push(k);
+			});
+
+			base = o;
+
+			// Merge relURLParts chunks
+			for (i = path.length - 1, o = []; i >= 0; i--) {
+				// Ignore empty or .
+				if (path[i].length == 0 || path[i] == ".")
+					continue;
+
+				// Is parent
+				if (path[i] == '..') {
+					nb++;
+					continue;
+				}
+
+				// Move up
+				if (nb > 0) {
+					nb--;
+					continue;
+				}
+
+				o.push(path[i]);
+			}
+
+			i = base.length - nb;
+
+			// If /a/b/c or /
+			if (i <= 0)
+				return '/' + o.reverse().join('/') + tr;
+
+			return '/' + base.slice(0, i).join('/') + '/' + o.reverse().join('/') + tr;
+		},
+
+		getURI : function(nh) {
+			var s, t = this;
+
+			// Rebuild source
+			if (!t.source || nh) {
+				s = '';
+
+				if (!nh) {
+					if (t.protocol)
+						s += t.protocol + '://';
+
+					if (t.userInfo)
+						s += t.userInfo + '@';
+
+					if (t.host)
+						s += t.host;
+
+					if (t.port)
+						s += ':' + t.port;
+				}
+
+				if (t.path)
+					s += t.path;
+
+				if (t.query)
+					s += '?' + t.query;
+
+				if (t.anchor)
+					s += '#' + t.anchor;
+
+				t.source = s;
+			}
+
+			return t.source;
+		}
+
+		});
+})();
+(function() {
+	var each = tinymce.each;
+
+	tinymce.create('static tinymce.util.Cookie', {
+		getHash : function(n) {
+			var v = this.get(n), h;
+
+			if (v) {
+				each(v.split('&'), function(v) {
+					v = v.split('=');
+					h = h || {};
+					h[unescape(v[0])] = unescape(v[1]);
+				});
+			}
+
+			return h;
+		},
+
+		setHash : function(n, v, e, p, d, s) {
+			var o = '';
+
+			each(v, function(v, k) {
+				o += (!o ? '' : '&') + escape(k) + '=' + escape(v);
+			});
+
+			this.set(n, o, e, p, d, s);
+		},
+
+		get : function(n) {
+			var c = document.cookie, e, p = n + "=", b;
+
+			// Strict mode
+			if (!c)
+				return;
+
+			b = c.indexOf("; " + p);
+
+			if (b == -1) {
+				b = c.indexOf(p);
+
+				if (b != 0)
+					return null;
+			} else
+				b += 2;
+
+			e = c.indexOf(";", b);
+
+			if (e == -1)
+				e = c.length;
+
+			return unescape(c.substring(b + p.length, e));
+		},
+
+		set : function(n, v, e, p, d, s) {
+			document.cookie = n + "=" + escape(v) +
+				((e) ? "; expires=" + e.toGMTString() : "") +
+				((p) ? "; path=" + escape(p) : "") +
+				((d) ? "; domain=" + d : "") +
+				((s) ? "; secure" : "");
+		},
+
+		remove : function(n, p) {
+			var d = new Date();
+
+			d.setTime(d.getTime() - 1000);
+
+			this.set(n, '', d, p, d);
+		}
+
+		});
+})();
+tinymce.create('static tinymce.util.JSON', {
+	serialize : function(o) {
+		var i, v, s = tinymce.util.JSON.serialize, t;
+
+		if (o == null)
+			return 'null';
+
+		t = typeof o;
+
+		if (t == 'string') {
+			v = '\bb\tt\nn\ff\rr\""\'\'\\\\';
+
+			return '"' + o.replace(/([\u0080-\uFFFF\x00-\x1f\"])/g, function(a, b) {
+				i = v.indexOf(b);
+
+				if (i + 1)
+					return '\\' + v.charAt(i + 1);
+
+				a = b.charCodeAt().toString(16);
+
+				return '\\u' + '0000'.substring(a.length) + a;
+			}) + '"';
+		}
+
+		if (t == 'object') {
+			if (o.hasOwnProperty && o instanceof Array) {
+					for (i=0, v = '['; i<o.length; i++)
+						v += (i > 0 ? ',' : '') + s(o[i]);
+
+					return v + ']';
+				}
+
+				v = '{';
+
+				for (i in o)
+					v += typeof o[i] != 'function' ? (v.length > 1 ? ',"' : '"') + i + '":' + s(o[i]) : '';
+
+				return v + '}';
+		}
+
+		return '' + o;
+	},
+
+	parse : function(s) {
+		try {
+			return eval('(' + s + ')');
+		} catch (ex) {
+			// Ignore
+		}
+	}
+
+	});
+tinymce.create('static tinymce.util.XHR', {
+	send : function(o) {
+		var x, t, w = window, c = 0;
+
+		// Default settings
+		o.scope = o.scope || this;
+		o.success_scope = o.success_scope || o.scope;
+		o.error_scope = o.error_scope || o.scope;
+		o.async = o.async === false ? false : true;
+		o.data = o.data || '';
+
+		function get(s) {
+			x = 0;
+
+			try {
+				x = new ActiveXObject(s);
+			} catch (ex) {
+			}
+
+			return x;
+		};
+
+		x = w.XMLHttpRequest ? new XMLHttpRequest() : get('Microsoft.XMLHTTP') || get('Msxml2.XMLHTTP');
+
+		if (x) {
+			if (x.overrideMimeType)
+				x.overrideMimeType(o.content_type);
+
+			x.open(o.type || (o.data ? 'POST' : 'GET'), o.url, o.async);
+
+			if (o.content_type)
+				x.setRequestHeader('Content-Type', o.content_type);
+
+			x.send(o.data);
+
+			function ready() {
+				if (!o.async || x.readyState == 4 || c++ > 10000) {
+					if (o.success && c < 10000 && x.status == 200)
+						o.success.call(o.success_scope, '' + x.responseText, x, o);
+					else if (o.error)
+						o.error.call(o.error_scope, c > 10000 ? 'TIMED_OUT' : 'GENERAL', x, o);
+
+					x = null;
+				} else
+					w.setTimeout(ready, 10);
+			};
+
+			// Syncronous request
+			if (!o.async)
+				return ready();
+
+			// Wait for response, onReadyStateChange can not be used since it leaks memory in IE
+			t = w.setTimeout(ready, 10);
+		}
+
+		}
+});
+(function() {
+	var extend = tinymce.extend, JSON = tinymce.util.JSON, XHR = tinymce.util.XHR;
+
+	tinymce.create('tinymce.util.JSONRequest', {
+		JSONRequest : function(s) {
+			this.settings = extend({
+			}, s);
+			this.count = 0;
+		},
+
+		send : function(o) {
+			var ecb = o.error, scb = o.success;
+
+			o = extend(this.settings, o);
+
+			o.success = function(c, x) {
+				c = JSON.parse(c);
+
+				if (typeof(c) == 'undefined') {
+					c = {
+						error : 'JSON Parse error.'
+					};
+				}
+
+				if (c.error)
+					ecb.call(o.error_scope || o.scope, c.error, x);
+				else
+					scb.call(o.success_scope || o.scope, c.result);
+			};
+
+			o.error = function(ty, x) {
+				ecb.call(o.error_scope || o.scope, ty, x);
+			};
+
+			o.data = JSON.serialize({
+				id : o.id || 'c' + (this.count++),
+				method : o.method,
+				params : o.params
+			});
+
+			// JSON content type for Ruby on rails. Bug: #1883287
+			o.content_type = 'application/json';
+
+			XHR.send(o);
+		},
+
+		'static' : {
+			sendRPC : function(o) {
+				return new tinymce.util.JSONRequest().send(o);
+			}
+		}
+
+		});
+}());(function(tinymce) {
+	// Shorten names
+	var each = tinymce.each, is = tinymce.is;
+	var isWebKit = tinymce.isWebKit, isIE = tinymce.isIE;
+
+	tinymce.create('tinymce.dom.DOMUtils', {
+		doc : null,
+		root : null,
+		files : null,
+		pixelStyles : /^(top|left|bottom|right|width|height|borderWidth)$/,
+		props : {
+			"for" : "htmlFor",
+			"class" : "className",
+			className : "className",
+			checked : "checked",
+			disabled : "disabled",
+			maxlength : "maxLength",
+			readonly : "readOnly",
+			selected : "selected",
+			value : "value",
+			id : "id",
+			name : "name",
+			type : "type"
+		},
+
+		DOMUtils : function(d, s) {
+			var t = this;
+
+			t.doc = d;
+			t.win = window;
+			t.files = {};
+			t.cssFlicker = false;
+			t.counter = 0;
+			t.boxModel = !tinymce.isIE || d.compatMode == "CSS1Compat"; 
+			t.stdMode = d.documentMode === 8;
+
+			t.settings = s = tinymce.extend({
+				keep_values : false,
+				hex_colors : 1,
+				process_html : 1
+			}, s);
+
+			// Fix IE6SP2 flicker and check it failed for pre SP2
+			if (tinymce.isIE6) {
+				try {
+					d.execCommand('BackgroundImageCache', false, true);
+				} catch (e) {
+					t.cssFlicker = true;
+				}
+			}
+
+			tinymce.addUnload(t.destroy, t);
+		},
+
+		getRoot : function() {
+			var t = this, s = t.settings;
+
+			return (s && t.get(s.root_element)) || t.doc.body;
+		},
+
+		getViewPort : function(w) {
+			var d, b;
+
+			w = !w ? this.win : w;
+			d = w.document;
+			b = this.boxModel ? d.documentElement : d.body;
+
+			// Returns viewport size excluding scrollbars
+			return {
+				x : w.pageXOffset || b.scrollLeft,
+				y : w.pageYOffset || b.scrollTop,
+				w : w.innerWidth || b.clientWidth,
+				h : w.innerHeight || b.clientHeight
+			};
+		},
+
+		getRect : function(e) {
+			var p, t = this, sr;
+
+			e = t.get(e);
+			p = t.getPos(e);
+			sr = t.getSize(e);
+
+			return {
+				x : p.x,
+				y : p.y,
+				w : sr.w,
+				h : sr.h
+			};
+		},
+
+		getSize : function(e) {
+			var t = this, w, h;
+
+			e = t.get(e);
+			w = t.getStyle(e, 'width');
+			h = t.getStyle(e, 'height');
+
+			// Non pixel value, then force offset/clientWidth
+			if (w.indexOf('px') === -1)
+				w = 0;
+
+			// Non pixel value, then force offset/clientWidth
+			if (h.indexOf('px') === -1)
+				h = 0;
+
+			return {
+				w : parseInt(w) || e.offsetWidth || e.clientWidth,
+				h : parseInt(h) || e.offsetHeight || e.clientHeight
+			};
+		},
+
+		is : function(n, patt) {
+			return tinymce.dom.Sizzle.matches(patt, n.nodeType ? [n] : n).length > 0;
+		},
+
+		getParent : function(n, f, r) {
+			return this.getParents(n, f, r, false);
+		},
+
+		getParents : function(n, f, r, c) {
+			var t = this, na, se = t.settings, o = [];
+
+			n = t.get(n);
+			c = c === undefined;
+
+			if (se.strict_root)
+				r = r || t.getRoot();
+
+			// Wrap node name as func
+			if (is(f, 'string')) {
+				na = f;
+
+				if (f === '*') {
+					f = function(n) {return n.nodeType == 1;};
+				} else {
+					f = function(n) {
+						return t.is(n, na);
+					};
+				}
+			}
+
+			while (n) {
+				if (n == r || !n.nodeType || n.nodeType === 9)
+					break;
+
+				if (!f || f(n)) {
+					if (c)
+						o.push(n);
+					else
+						return n;
+				}
+
+				n = n.parentNode;
+			}
+
+			return c ? o : null;
+		},
+
+		get : function(e) {
+			var n;
+
+			if (e && this.doc && typeof(e) == 'string') {
+				n = e;
+				e = this.doc.getElementById(e);
+
+				// IE and Opera returns meta elements when they match the specified input ID, but getElementsByName seems to do the trick
+				if (e && e.id !== n)
+					return this.doc.getElementsByName(n)[1];
+			}
+
+			return e;
+		},
+
+
+		select : function(pa, s) {
+			var t = this;
+
+			return tinymce.dom.Sizzle(pa, t.get(s) || t.get(t.settings.root_element) || t.doc, []);
+		},
+
+
+		add : function(p, n, a, h, c) {
+			var t = this;
+
+			return this.run(p, function(p) {
+				var e, k;
+
+				e = is(n, 'string') ? t.doc.createElement(n) : n;
+				t.setAttribs(e, a);
+
+				if (h) {
+					if (h.nodeType)
+						e.appendChild(h);
+					else
+						t.setHTML(e, h);
+				}
+
+				return !c ? p.appendChild(e) : e;
+			});
+		},
+
+		create : function(n, a, h) {
+			return this.add(this.doc.createElement(n), n, a, h, 1);
+		},
+
+		createHTML : function(n, a, h) {
+			var o = '', t = this, k;
+
+			o += '<' + n;
+
+			for (k in a) {
+				if (a.hasOwnProperty(k))
+					o += ' ' + k + '="' + t.encode(a[k]) + '"';
+			}
+
+			if (tinymce.is(h))
+				return o + '>' + h + '</' + n + '>';
+
+			return o + ' />';
+		},
+
+		remove : function(n, k) {
+			var t = this;
+
+			return this.run(n, function(n) {
+				var p, g, i;
+
+				p = n.parentNode;
+
+				if (!p)
+					return null;
+
+				if (k) {
+					for (i = n.childNodes.length - 1; i >= 0; i--)
+						t.insertAfter(n.childNodes[i], n);
+
+					//each(n.childNodes, function(c) {
+					//	p.insertBefore(c.cloneNode(true), n);
+					//});
+				}
+
+				// Fix IE psuedo leak
+				if (t.fixPsuedoLeaks) {
+					p = n.cloneNode(true);
+					k = 'IELeakGarbageBin';
+					g = t.get(k) || t.add(t.doc.body, 'div', {id : k, style : 'display:none'});
+					g.appendChild(n);
+					g.innerHTML = '';
+
+					return p;
+				}
+
+				return p.removeChild(n);
+			});
+		},
+
+
+		setStyle : function(n, na, v) {
+			var t = this;
+
+			return t.run(n, function(e) {
+				var s, i;
+
+				s = e.style;
+
+				// Camelcase it, if needed
+				na = na.replace(/-(\D)/g, function(a, b){
+					return b.toUpperCase();
+				});
+
+				// Default px suffix on these
+				if (t.pixelStyles.test(na) && (tinymce.is(v, 'number') || /^[\-0-9\.]+$/.test(v)))
+					v += 'px';
+
+				switch (na) {
+					case 'opacity':
+						// IE specific opacity
+						if (isIE) {
+							s.filter = v === '' ? '' : "alpha(opacity=" + (v * 100) + ")";
+
+							if (!n.currentStyle || !n.currentStyle.hasLayout)
+								s.display = 'inline-block';
+						}
+
+						// Fix for older browsers
+						s[na] = s['-moz-opacity'] = s['-khtml-opacity'] = v || '';
+						break;
+
+					case 'float':
+						isIE ? s.styleFloat = v : s.cssFloat = v;
+						break;
+					
+					default:
+						s[na] = v || '';
+				}
+
+				// Force update of the style data
+				if (t.settings.update_styles)
+					t.setAttrib(e, 'mce_style');
+			});
+		},
+
+		getStyle : function(n, na, c) {
+			n = this.get(n);
+
+			if (!n)
+				return false;
+
+			// Gecko
+			if (this.doc.defaultView && c) {
+				// Remove camelcase
+				na = na.replace(/[A-Z]/g, function(a){
+					return '-' + a;
+				});
+
+				try {
+					return this.doc.defaultView.getComputedStyle(n, null).getPropertyValue(na);
+				} catch (ex) {
+					// Old safari might fail
+					return null;
+				}
+			}
+
+			// Camelcase it, if needed
+			na = na.replace(/-(\D)/g, function(a, b){
+				return b.toUpperCase();
+			});
+
+			if (na == 'float')
+				na = isIE ? 'styleFloat' : 'cssFloat';
+
+			// IE & Opera
+			if (n.currentStyle && c)
+				return n.currentStyle[na];
+
+			return n.style[na];
+		},
+
+		setStyles : function(e, o) {
+			var t = this, s = t.settings, ol;
+
+			ol = s.update_styles;
+			s.update_styles = 0;
+
+			each(o, function(v, n) {
+				t.setStyle(e, n, v);
+			});
+
+			// Update style info
+			s.update_styles = ol;
+			if (s.update_styles)
+				t.setAttrib(e, s.cssText);
+		},
+
+		setAttrib : function(e, n, v) {
+			var t = this;
+
+			// Whats the point
+			if (!e || !n)
+				return;
+
+			// Strict XML mode
+			if (t.settings.strict)
+				n = n.toLowerCase();
+
+			return this.run(e, function(e) {
+				var s = t.settings;
+
+				switch (n) {
+					case "style":
+						if (!is(v, 'string')) {
+							each(v, function(v, n) {
+								t.setStyle(e, n, v);
+							});
+
+							return;
+						}
+
+						// No mce_style for elements with these since they might get resized by the user
+						if (s.keep_values) {
+							if (v && !t._isRes(v))
+								e.setAttribute('mce_style', v, 2);
+							else
+								e.removeAttribute('mce_style', 2);
+						}
+
+						e.style.cssText = v;
+						break;
+
+					case "class":
+						e.className = v || ''; // Fix IE null bug
+						break;
+
+					case "src":
+					case "href":
+						if (s.keep_values) {
+							if (s.url_converter)
+								v = s.url_converter.call(s.url_converter_scope || t, v, n, e);
+
+							t.setAttrib(e, 'mce_' + n, v, 2);
+						}
+
+						break;
+					
+					case "shape":
+						e.setAttribute('mce_style', v);
+						break;
+				}
+
+				if (is(v) && v !== null && v.length !== 0)
+					e.setAttribute(n, '' + v, 2);
+				else
+					e.removeAttribute(n, 2);
+			});
+		},
+
+		setAttribs : function(e, o) {
+			var t = this;
+
+			return this.run(e, function(e) {
+				each(o, function(v, n) {
+					t.setAttrib(e, n, v);
+				});
+			});
+		},
+
+
+		getAttrib : function(e, n, dv) {
+			var v, t = this;
+
+			e = t.get(e);
+
+			if (!e || e.nodeType !== 1)
+				return false;
+
+			if (!is(dv))
+				dv = '';
+
+			// Try the mce variant for these
+			if (/^(src|href|style|coords|shape)$/.test(n)) {
+				v = e.getAttribute("mce_" + n);
+
+				if (v)
+					return v;
+			}
+
+			if (isIE && t.props[n]) {
+				v = e[t.props[n]];
+				v = v && v.nodeValue ? v.nodeValue : v;
+			}
+
+			if (!v)
+				v = e.getAttribute(n, 2);
+
+			if (n === 'style') {
+				v = v || e.style.cssText;
+
+				if (v) {
+					v = t.serializeStyle(t.parseStyle(v));
+
+					if (t.settings.keep_values && !t._isRes(v))
+						e.setAttribute('mce_style', v);
+				}
+			}
+
+			// Remove Apple and WebKit stuff
+			if (isWebKit && n === "class" && v)
+				v = v.replace(/(apple|webkit)\-[a-z\-]+/gi, '');
+
+			// Handle IE issues
+			if (isIE) {
+				switch (n) {
+					case 'rowspan':
+					case 'colspan':
+						// IE returns 1 as default value
+						if (v === 1)
+							v = '';
+
+						break;
+
+					case 'size':
+						// IE returns +0 as default value for size
+						if (v === '+0' || v === 20 || v === 0)
+							v = '';
+
+						break;
+
+					case 'width':
+					case 'height':
+					case 'vspace':
+					case 'checked':
+					case 'disabled':
+					case 'readonly':
+						if (v === 0)
+							v = '';
+
+						break;
+
+					case 'hspace':
+						// IE returns -1 as default value
+						if (v === -1)
+							v = '';
+
+						break;
+
+					case 'maxlength':
+					case 'tabindex':
+						// IE returns default value
+						if (v === 32768 || v === 2147483647 || v === '32768')
+							v = '';
+
+						break;
+
+					case 'multiple':
+					case 'compact':
+					case 'noshade':
+					case 'nowrap':
+						if (v === 65535)
+							return n;
+
+						return dv;
+
+					case 'shape':
+						v = v.toLowerCase();
+						break;
+
+					default:
+						// IE has odd anonymous function for event attributes
+						if (n.indexOf('on') === 0 && v)
+							v = ('' + v).replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/, '$1');
+				}
+			}
+
+			return (v !== undefined && v !== null && v !== '') ? '' + v : dv;
+		},
+
+		getPos : function(n, ro) {
+			var t = this, x = 0, y = 0, e, d = t.doc, r;
+
+			n = t.get(n);
+			ro = ro || d.body;
+
+			if (n) {
+				// Use getBoundingClientRect on IE, Opera has it but it's not perfect
+				if (isIE && !t.stdMode) {
+					n = n.getBoundingClientRect();
+					e = t.boxModel ? d.documentElement : d.body;
+					x = t.getStyle(t.select('html')[0], 'borderWidth'); // Remove border
+					x = (x == 'medium' || t.boxModel && !t.isIE6) && 2 || x;
+					n.top += t.win.self != t.win.top ? 2 : 0; // IE adds some strange extra cord if used in a frameset
+
+					return {x : n.left + e.scrollLeft - x, y : n.top + e.scrollTop - x};
+				}
+
+				r = n;
+				while (r && r != ro && r.nodeType) {
+					x += r.offsetLeft || 0;
+					y += r.offsetTop || 0;
+					r = r.offsetParent;
+				}
+
+				r = n.parentNode;
+				while (r && r != ro && r.nodeType) {
+					x -= r.scrollLeft || 0;
+					y -= r.scrollTop || 0;
+					r = r.parentNode;
+				}
+			}
+
+			return {x : x, y : y};
+		},
+
+		parseStyle : function(st) {
+			var t = this, s = t.settings, o = {};
+
+			if (!st)
+				return o;
+
+			function compress(p, s, ot) {
+				var t, r, b, l;
+
+				// Get values and check it it needs compressing
+				t = o[p + '-top' + s];
+				if (!t)
+					return;
+
+				r = o[p + '-right' + s];
+				if (t != r)
+					return;
+
+				b = o[p + '-bottom' + s];
+				if (r != b)
+					return;
+
+				l = o[p + '-left' + s];
+				if (b != l)
+					return;
+
+				// Compress
+				o[ot] = l;
+				delete o[p + '-top' + s];
+				delete o[p + '-right' + s];
+				delete o[p + '-bottom' + s];
+				delete o[p + '-left' + s];
+			};
+
+			function compress2(ta, a, b, c) {
+				var t;
+
+				t = o[a];
+				if (!t)
+					return;
+
+				t = o[b];
+				if (!t)
+					return;
+
+				t = o[c];
+				if (!t)
+					return;
+
+				// Compress
+				o[ta] = o[a] + ' ' + o[b] + ' ' + o[c];
+				delete o[a];
+				delete o[b];
+				delete o[c];
+			};
+
+			st = st.replace(/&(#?[a-z0-9]+);/g, '&$1_MCE_SEMI_'); // Protect entities
+
+			each(st.split(';'), function(v) {
+				var sv, ur = [];
+
+				if (v) {
+					v = v.replace(/_MCE_SEMI_/g, ';'); // Restore entities
+					v = v.replace(/url\([^\)]+\)/g, function(v) {ur.push(v);return 'url(' + ur.length + ')';});
+					v = v.split(':');
+					sv = tinymce.trim(v[1]);
+					sv = sv.replace(/url\(([^\)]+)\)/g, function(a, b) {return ur[parseInt(b) - 1];});
+
+					sv = sv.replace(/rgb\([^\)]+\)/g, function(v) {
+						return t.toHex(v);
+					});
+
+					if (s.url_converter) {
+						sv = sv.replace(/url\([\'\"]?([^\)\'\"]+)[\'\"]?\)/g, function(x, c) {
+							return 'url(' + s.url_converter.call(s.url_converter_scope || t, t.decode(c), 'style', null) + ')';
+						});
+					}
+
+					o[tinymce.trim(v[0]).toLowerCase()] = sv;
+				}
+			});
+
+			compress("border", "", "border");
+			compress("border", "-width", "border-width");
+			compress("border", "-color", "border-color");
+			compress("border", "-style", "border-style");
+			compress("padding", "", "padding");
+			compress("margin", "", "margin");
+			compress2('border', 'border-width', 'border-style', 'border-color');
+
+			if (isIE) {
+				// Remove pointless border
+				if (o.border == 'medium none')
+					o.border = '';
+			}
+
+			return o;
+		},
+
+		serializeStyle : function(o) {
+			var s = '';
+
+			each(o, function(v, k) {
+				if (k && v) {
+					if (tinymce.isGecko && k.indexOf('-moz-') === 0)
+						return;
+
+					switch (k) {
+						case 'color':
+						case 'background-color':
+							v = v.toLowerCase();
+							break;
+					}
+
+					s += (s ? ' ' : '') + k + ': ' + v + ';';
+				}
+			});
+
+			return s;
+		},
+
+		loadCSS : function(u) {
+			var t = this, d = t.doc, head;
+
+			if (!u)
+				u = '';
+
+			head = t.select('head')[0];
+
+			each(u.split(','), function(u) {
+				var link;
+
+				if (t.files[u])
+					return;
+
+				t.files[u] = true;
+				link = t.create('link', {rel : 'stylesheet', href : tinymce._addVer(u)});
+
+				// IE 8 has a bug where dynamically loading stylesheets would produce a 1 item remaining bug
+				// This fix seems to resolve that issue by realcing the document ones a stylesheet finishes loading
+				// It's ugly but it seems to work fine.
+				if (isIE && d.documentMode) {
+					link.onload = function() {
+						d.recalc();
+						link.onload = null;
+					};
+				}
+
+				head.appendChild(link);
+			});
+		},
+
+
+		addClass : function(e, c) {
+			return this.run(e, function(e) {
+				var o;
+
+				if (!c)
+					return 0;
+
+				if (this.hasClass(e, c))
+					return e.className;
+
+				o = this.removeClass(e, c);
+
+				return e.className = (o != '' ? (o + ' ') : '') + c;
+			});
+		},
+
+		removeClass : function(e, c) {
+			var t = this, re;
+
+			return t.run(e, function(e) {
+				var v;
+
+				if (t.hasClass(e, c)) {
+					if (!re)
+						re = new RegExp("(^|\\s+)" + c + "(\\s+|$)", "g");
+
+					v = e.className.replace(re, ' ');
+
+					return e.className = tinymce.trim(v != ' ' ? v : '');
+				}
+
+				return e.className;
+			});
+		},
+
+		hasClass : function(n, c) {
+			n = this.get(n);
+
+			if (!n || !c)
+				return false;
+
+			return (' ' + n.className + ' ').indexOf(' ' + c + ' ') !== -1;
+		},
+
+		show : function(e) {
+			return this.setStyle(e, 'display', 'block');
+		},
+
+		hide : function(e) {
+			return this.setStyle(e, 'display', 'none');
+		},
+
+		isHidden : function(e) {
+			e = this.get(e);
+
+			return !e || e.style.display == 'none' || this.getStyle(e, 'display') == 'none';
+		},
+
+
+		uniqueId : function(p) {
+			return (!p ? 'mce_' : p) + (this.counter++);
+		},
+
+		setHTML : function(e, h) {
+			var t = this;
+
+			return this.run(e, function(e) {
+				var x, i, nl, n, p, x;
+
+				h = t.processHTML(h);
+
+				if (isIE) {
+					function set() {
+						try {
+							// IE will remove comments from the beginning
+							// unless you padd the contents with something
+							e.innerHTML = '<br />' + h;
+							e.removeChild(e.firstChild);
+						} catch (ex) {
+							// IE sometimes produces an unknown runtime error on innerHTML if it's an block element within a block element for example a div inside a p
+							// This seems to fix this problem
+
+							// Remove all child nodes
+							while (e.firstChild)
+								e.firstChild.removeNode();
+
+							// Create new div with HTML contents and a BR infront to keep comments
+							x = t.create('div');
+							x.innerHTML = '<br />' + h;
+
+							// Add all children from div to target
+							each (x.childNodes, function(n, i) {
+								// Skip br element
+								if (i)
+									e.appendChild(n);
+							});
+						}
+					};
+
+					// IE has a serious bug when it comes to paragraphs it can produce an invalid
+					// DOM tree if contents like this <p><ul><li>Item 1</li></ul></p> is inserted
+					// It seems to be that IE doesn't like a root block element placed inside another root block element
+					if (t.settings.fix_ie_paragraphs)
+						h = h.replace(/<p><\/p>|<p([^>]+)><\/p>|<p[^\/+]\/>/gi, '<p$1 mce_keep="true">&nbsp;</p>');
+
+					set();
+
+					if (t.settings.fix_ie_paragraphs) {
+						// Check for odd paragraphs this is a sign of a broken DOM
+						nl = e.getElementsByTagName("p");
+						for (i = nl.length - 1, x = 0; i >= 0; i--) {
+							n = nl[i];
+
+							if (!n.hasChildNodes()) {
+								if (!n.mce_keep) {
+									x = 1; // Is broken
+									break;
+								}
+
+								n.removeAttribute('mce_keep');
+							}
+						}
+					}
+
+					// Time to fix the madness IE left us
+					if (x) {
+						// So if we replace the p elements with divs and mark them and then replace them back to paragraphs
+						// after we use innerHTML we can fix the DOM tree
+						h = h.replace(/<p ([^>]+)>|<p>/g, '<div $1 mce_tmp="1">');
+						h = h.replace(/<\/p>/g, '</div>');
+
+						// Set the new HTML with DIVs
+						set();
+
+						// Replace all DIV elements with he mce_tmp attibute back to paragraphs
+						// This is needed since IE has a annoying bug see above for details
+						// This is a slow process but it has to be done. :(
+						if (t.settings.fix_ie_paragraphs) {
+							nl = e.getElementsByTagName("DIV");
+							for (i = nl.length - 1; i >= 0; i--) {
+								n = nl[i];
+
+								// Is it a temp div
+								if (n.mce_tmp) {
+									// Create new paragraph
+									p = t.doc.createElement('p');
+
+									// Copy all attributes
+									n.cloneNode(false).outerHTML.replace(/([a-z0-9\-_]+)=/gi, function(a, b) {
+										var v;
+
+										if (b !== 'mce_tmp') {
+											v = n.getAttribute(b);
+
+											if (!v && b === 'class')
+												v = n.className;
+
+											p.setAttribute(b, v);
+										}
+									});
+
+									// Append all children to new paragraph
+									for (x = 0; x<n.childNodes.length; x++)
+										p.appendChild(n.childNodes[x].cloneNode(true));
+
+									// Replace div with new paragraph
+									n.swapNode(p);
+								}
+							}
+						}
+					}
+				} else
+					e.innerHTML = h;
+
+				return h;
+			});
+		},
+
+		processHTML : function(h) {
+			var t = this, s = t.settings;
+
+			if (!s.process_html)
+				return h;
+
+			// Convert strong and em to b and i in FF since it can't handle them
+			if (tinymce.isGecko) {
+				h = h.replace(/<(\/?)strong>|<strong( [^>]+)>/gi, '<$1b$2>');
+				h = h.replace(/<(\/?)em>|<em( [^>]+)>/gi, '<$1i$2>');
+			} else if (isIE) {
+				h = h.replace(/&apos;/g, '&#39;'); // IE can't handle apos
+				h = h.replace(/\s+(disabled|checked|readonly|selected)\s*=\s*[\"\']?(false|0)[\"\']?/gi, ''); // IE doesn't handle default values correct
+			}
+
+			// Fix some issues
+			h = h.replace(/<a( )([^>]+)\/>|<a\/>/gi, '<a$1$2></a>'); // Force open
+
+			// Store away src and href in mce_src and mce_href since browsers mess them up
+			if (s.keep_values) {
+				// Wrap scripts and styles in comments for serialization purposes
+				if (/<script|style/.test(h)) {
+					function trim(s) {
+						// Remove prefix and suffix code for element
+						s = s.replace(/(<!--\[CDATA\[|\]\]-->)/g, '\n');
+						s = s.replace(/^[\r\n]*|[\r\n]*$/g, '');
+						s = s.replace(/^\s*(\/\/\s*<!--|\/\/\s*<!\[CDATA\[|<!--|<!\[CDATA\[)[\r\n]*/g, '');
+						s = s.replace(/\s*(\/\/\s*\]\]>|\/\/\s*-->|\]\]>|-->|\]\]-->)\s*$/g, '');
+
+						return s;
+					};
+
+					// Wrap the script contents in CDATA and keep them from executing
+					h = h.replace(/<script([^>]+|)>([\s\S]*?)<\/script>/g, function(v, attribs, text) {
+						// Force type attribute
+						if (!attribs)
+							attribs = ' type="text/javascript"';
+
+						// Prefix script type/language attribute values with mce- to prevent it from executing
+						attribs = attribs.replace(/(type|language)=\"?/, '$&mce-');
+						attribs = attribs.replace(/src=\"([^\"]+)\"?/, function(a, url) {
+							if (s.url_converter)
+								url = t.encode(s.url_converter.call(s.url_converter_scope || t, t.decode(url), 'src', 'script'));
+
+							return 'mce_src="' + url + '"';
+						});
+
+						// Wrap text contents
+						if (tinymce.trim(text))
+							text = '<!--\n' + trim(text) + '\n// -->';
+
+						return '<mce:script' + attribs + '>' + text + '</mce:script>';
+					});
+
+					h = h.replace(/<style([^>]+|)>([\s\S]*?)<\/style>/g, function(v, attribs, text) {
+						// Wrap text contents
+						if (text)
+							text = '<!--\n' + trim(text) + '\n-->';
+
+						return '<mce:style' + attribs + '>' + text + '</mce:style><style ' + attribs + ' mce_bogus="1">' + text + '</style>';
+					});
+				}
+
+				h = h.replace(/<!\[CDATA\[([\s\S]+)\]\]>/g, '<!--[CDATA[$1]]-->');
+
+				// Process all tags with src, href or style
+				h = h.replace(/<([\w:]+) [^>]*(src|href|style|shape|coords)[^>]*>/gi, function(a, n) {
+					function handle(m, b, c) {
+						var u = c;
+
+						// Tag already got a mce_ version
+						if (a.indexOf('mce_' + b) != -1)
+							return m;
+
+						if (b == 'style') {
+							// No mce_style for elements with these since they might get resized by the user
+							if (t._isRes(c))
+								return m;
+
+							if (s.hex_colors) {
+								u = u.replace(/rgb\([^\)]+\)/g, function(v) {
+									return t.toHex(v);
+								});
+							}
+
+							if (s.url_converter) {
+								u = u.replace(/url\([\'\"]?([^\)\'\"]+)\)/g, function(x, c) {
+									return 'url(' + t.encode(s.url_converter.call(s.url_converter_scope || t, t.decode(c), b, n)) + ')';
+								});
+							}
+						} else if (b != 'coords' && b != 'shape') {
+							if (s.url_converter)
+								u = t.encode(s.url_converter.call(s.url_converter_scope || t, t.decode(c), b, n));
+						}
+
+						return ' ' + b + '="' + c + '" mce_' + b + '="' + u + '"';
+					};
+
+					a = a.replace(/ (src|href|style|coords|shape)=[\"]([^\"]+)[\"]/gi, handle); // W3C
+					a = a.replace(/ (src|href|style|coords|shape)=[\']([^\']+)[\']/gi, handle); // W3C
+
+					return a.replace(/ (src|href|style|coords|shape)=([^\s\"\'>]+)/gi, handle); // IE
+				});
+			}
+
+			return h;
+		},
+
+		getOuterHTML : function(e) {
+			var d;
+
+			e = this.get(e);
+
+			if (!e)
+				return null;
+
+			if (e.outerHTML !== undefined)
+				return e.outerHTML;
+
+			d = (e.ownerDocument || this.doc).createElement("body");
+			d.appendChild(e.cloneNode(true));
+
+			return d.innerHTML;
+		},
+
+		setOuterHTML : function(e, h, d) {
+			var t = this;
+
+			return this.run(e, function(e) {
+				var n, tp;
+
+				e = t.get(e);
+				d = d || e.ownerDocument || t.doc;
+
+				if (isIE && e.nodeType == 1)
+					e.outerHTML = h;
+				else {
+					tp = d.createElement("body");
+					tp.innerHTML = h;
+
+					n = tp.lastChild;
+					while (n) {
+						t.insertAfter(n.cloneNode(true), e);
+						n = n.previousSibling;
+					}
+
+					t.remove(e);
+				}
+			});
+		},
+
+		decode : function(s) {
+			var e, n, v;
+
+			// Look for entities to decode
+			if (/&[^;]+;/.test(s)) {
+				// Decode the entities using a div element not super efficient but less code
+				e = this.doc.createElement("div");
+				e.innerHTML = s;
+				n = e.firstChild;
+				v = '';
+
+				if (n) {
+					do {
+						v += n.nodeValue;
+					} while (n.nextSibling);
+				}
+
+				return v || s;
+			}
+
+			return s;
+		},
+
+		encode : function(s) {
+			return s ? ('' + s).replace(/[<>&\"]/g, function (c, b) {
+				switch (c) {
+					case '&':
+						return '&amp;';
+
+					case '"':
+						return '&quot;';
+
+					case '<':
+						return '&lt;';
+
+					case '>':
+						return '&gt;';
+				}
+
+				return c;
+			}) : s;
+		},
+
+
+		insertAfter : function(n, r) {
+			var t = this;
+
+			r = t.get(r);
+
+			return this.run(n, function(n) {
+				var p, ns;
+
+				p = r.parentNode;
+				ns = r.nextSibling;
+
+				if (ns)
+					p.insertBefore(n, ns);
+				else
+					p.appendChild(n);
+
+				return n;
+			});
+		},
+
+
+		isBlock : function(n) {
+			if (n.nodeType && n.nodeType !== 1)
+				return false;
+
+			n = n.nodeName || n;
+
+			return /^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TR|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(n);
+		},
+
+
+		replace : function(n, o, k) {
+			var t = this;
+
+			if (is(o, 'array'))
+				n = n.cloneNode(true);
+
+			return t.run(o, function(o) {
+				if (k) {
+					each(o.childNodes, function(c) {
+						n.appendChild(c.cloneNode(true));
+					});
+				}
+
+				// Fix IE psuedo leak for elements since replacing elements if fairly common
+				// Will break parentNode for some unknown reason
+				if (t.fixPsuedoLeaks && o.nodeType === 1) {
+					o.parentNode.insertBefore(n, o);
+					t.remove(o);
+					return n;
+				}
+
+				return o.parentNode.replaceChild(n, o);
+			});
+		},
+
+
+		findCommonAncestor : function(a, b) {
+			var ps = a, pe;
+
+			while (ps) {
+				pe = b;
+
+				while (pe && ps != pe)
+					pe = pe.parentNode;
+
+				if (ps == pe)
+					break;
+
+				ps = ps.parentNode;
+			}
+
+			if (!ps && a.ownerDocument)
+				return a.ownerDocument.documentElement;
+
+			return ps;
+		},
+
+		toHex : function(s) {
+			var c = /^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(s);
+
+			function hex(s) {
+				s = parseInt(s).toString(16);
+
+				return s.length > 1 ? s : '0' + s; // 0 -> 00
+			};
+
+			if (c) {
+				s = '#' + hex(c[1]) + hex(c[2]) + hex(c[3]);
+
+				return s;
+			}
+
+			return s;
+		},
+
+		getClasses : function() {
+			var t = this, cl = [], i, lo = {}, f = t.settings.class_filter, ov;
+
+			if (t.classes)
+				return t.classes;
+
+			function addClasses(s) {
+				// IE style imports
+				each(s.imports, function(r) {
+					addClasses(r);
+				});
+
+				each(s.cssRules || s.rules, function(r) {
+					// Real type or fake it on IE
+					switch (r.type || 1) {
+						// Rule
+						case 1:
+							if (r.selectorText) {
+								each(r.selectorText.split(','), function(v) {
+									v = v.replace(/^\s*|\s*$|^\s\./g, "");
+
+									// Is internal or it doesn't contain a class
+									if (/\.mce/.test(v) || !/\.[\w\-]+$/.test(v))
+										return;
+
+									// Remove everything but class name
+									ov = v;
+									v = v.replace(/.*\.([a-z0-9_\-]+).*/i, '$1');
+
+									// Filter classes
+									if (f && !(v = f(v, ov)))
+										return;
+
+									if (!lo[v]) {
+										cl.push({'class' : v});
+										lo[v] = 1;
+									}
+								});
+							}
+							break;
+
+						// Import
+						case 3:
+							addClasses(r.styleSheet);
+							break;
+					}
+				});
+			};
+
+			try {
+				each(t.doc.styleSheets, addClasses);
+			} catch (ex) {
+				// Ignore
+			}
+
+			if (cl.length > 0)
+				t.classes = cl;
+
+			return cl;
+		},
+
+		run : function(e, f, s) {
+			var t = this, o;
+
+			if (t.doc && typeof(e) === 'string')
+				e = t.get(e);
+
+			if (!e)
+				return false;
+
+			s = s || this;
+			if (!e.nodeType && (e.length || e.length === 0)) {
+				o = [];
+
+				each(e, function(e, i) {
+					if (e) {
+						if (typeof(e) == 'string')
+							e = t.doc.getElementById(e);
+
+						o.push(f.call(s, e, i));
+					}
+				});
+
+				return o;
+			}
+
+			return f.call(s, e);
+		},
+
+		getAttribs : function(n) {
+			var o;
+
+			n = this.get(n);
+
+			if (!n)
+				return [];
+
+			if (isIE) {
+				o = [];
+
+				// Object will throw exception in IE
+				if (n.nodeName == 'OBJECT')
+					return n.attributes;
+
+				// It's crazy that this is faster in IE but it's because it returns all attributes all the time
+				n.cloneNode(false).outerHTML.replace(/([a-z0-9\:\-_]+)=/gi, function(a, b) {
+					o.push({specified : 1, nodeName : b});
+				});
+
+				return o;
+			}
+
+			return n.attributes;
+		},
+
+		destroy : function(s) {
+			var t = this;
+
+			if (t.events)
+				t.events.destroy();
+
+			t.win = t.doc = t.root = t.events = null;
+
+			// Manual destroy then remove unload handler
+			if (!s)
+				tinymce.removeUnload(t.destroy);
+		},
+
+		createRng : function() {
+			var d = this.doc;
+
+			return d.createRange ? d.createRange() : new tinymce.dom.Range(this);
+		},
+
+		split : function(pe, e, re) {
+			var t = this, r = t.createRng(), bef, aft, pa;
+
+			// W3C valid browsers tend to leave empty nodes to the left/right side of the contents, this makes sence
+			// but we don't want that in our code since it serves no purpose
+			// For example if this is chopped:
+			//   <p>text 1<span><b>CHOP</b></span>text 2</p>
+			// would produce:
+			//   <p>text 1<span></span></p><b>CHOP</b><p><span></span>text 2</p>
+			// this function will then trim of empty edges and produce:
+			//   <p>text 1</p><b>CHOP</b><p>text 2</p>
+			function trimEdge(n, na) {
+				n = n[na];
+
+				if (n && n[na] && n[na].nodeType == 1 && isEmpty(n[na]))
+					t.remove(n[na]);
+			};
+
+			function isEmpty(n) {
+				n = t.getOuterHTML(n);
+				n = n.replace(/<(img|hr|table)/gi, '-'); // Keep these convert them to - chars
+				n = n.replace(/<[^>]+>/g, ''); // Remove all tags
+
+				return n.replace(/[ \t\r\n]+|&nbsp;|&#160;/g, '') == '';
+			};
+
+			// WebKit has a bug where the setStartBefore/setStartAfter/setEndBefore/setEndAfter methods produces an exception on DOM detached nodes
+			// So we then need to use the setStart/setEnd method with and that needs to have the node index.
+			function nodeIndex(n) {
+				var i = 0;
+
+				while (n.previousSibling) {
+					i++;
+					n = n.previousSibling;
+				}
+
+				return i;
+			};
+
+			if (pe && e) {
+/*
+				// WebKit might fix the bug: https://bugs.webkit.org/show_bug.cgi?id=25571
+				// So then this code can be reintroduced
+
+				// Get before chunk
+				r.setStartBefore(pe);
+				r.setEndBefore(e);
+				bef = r.extractContents();
+
+				// Get after chunk
+				r = t.createRng();
+				r.setStartAfter(e);
+				r.setEndAfter(pe);
+				aft = r.extractContents();
+*/
+
+				// Get before chunk
+				r.setStart(pe.parentNode, nodeIndex(pe));
+				r.setEnd(e.parentNode, nodeIndex(e));
+				bef = r.extractContents();
+
+				// Get after chunk
+				r = t.createRng();
+				r.setStart(e.parentNode, nodeIndex(e) + 1);
+				r.setEnd(pe.parentNode, nodeIndex(pe) + 1);
+				aft = r.extractContents();
+
+				// Insert chunks and remove parent
+				pa = pe.parentNode;
+
+				// Remove right side edge of the before contents
+				trimEdge(bef, 'lastChild');
+
+				if (!isEmpty(bef))
+					pa.insertBefore(bef, pe);
+
+				if (re)
+					pa.replaceChild(re, e);
+				else
+					pa.insertBefore(e, pe);
+
+				// Remove left site edge of the after contents
+				trimEdge(aft, 'firstChild');
+
+				if (!isEmpty(aft))
+					pa.insertBefore(aft, pe);
+
+				t.remove(pe);
+
+				return re || e;
+			}
+		},
+
+		bind : function(target, name, func, scope) {
+			var t = this;
+
+			if (!t.events)
+				t.events = new tinymce.dom.EventUtils();
+
+			return t.events.add(target, name, func, scope || this);
+		},
+
+		unbind : function(target, name, func) {
+			var t = this;
+
+			if (!t.events)
+				t.events = new tinymce.dom.EventUtils();
+
+			return t.events.remove(target, name, func);
+		},
+
+
+		_isRes : function(c) {
+			// Is live resizble element
+			return /^(top|left|bottom|right|width|height)/i.test(c) || /;\s*(top|left|bottom|right|width|height)/i.test(c);
+		}
+
+		/*
+		walk : function(n, f, s) {
+			var d = this.doc, w;
+
+			if (d.createTreeWalker) {
+				w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false);
+
+				while ((n = w.nextNode()) != null)
+					f.call(s || this, n);
+			} else
+				tinymce.walk(n, f, 'childNodes', s);
+		}
+		*/
+
+		/*
+		toRGB : function(s) {
+			var c = /^\s*?#([0-9A-F]{2})([0-9A-F]{1,2})([0-9A-F]{2})?\s*?$/.exec(s);
+
+			if (c) {
+				// #FFF -> #FFFFFF
+				if (!is(c[3]))
+					c[3] = c[2] = c[1];
+
+				return "rgb(" + parseInt(c[1], 16) + "," + parseInt(c[2], 16) + "," + parseInt(c[3], 16) + ")";
+			}
+
+			return s;
+		}
+		*/
+
+		});
+
+	// Setup page DOM
+	tinymce.DOM = new tinymce.dom.DOMUtils(document, {process_html : 0});
+})(tinymce);
+(function(ns) {
+	// Traverse constants
+	var EXTRACT = 0, CLONE = 1, DELETE = 2, extend = tinymce.extend;
+
+	function indexOf(child, parent) {
+		var i, node;
+
+		if (child.parentNode != parent)
+			return -1;
+
+		for (node = parent.firstChild, i = 0; node != child; node = node.nextSibling)
+			i++;
+
+		return i;
+	};
+
+	function nodeIndex(n) {
+		var i = 0;
+
+		while (n.previousSibling) {
+			i++;
+			n = n.previousSibling;
+		}
+
+		return i;
+	};
+
+	function getSelectedNode(container, offset) {
+		var child;
+
+		if (container.nodeType == 3 /* TEXT_NODE */)
+			return container;
+
+		if (offset < 0)
+			return container;
+
+		child = container.firstChild;
+		while (child != null && offset > 0) {
+			--offset;
+			child = child.nextSibling;
+		}
+
+		if (child != null)
+			return child;
+
+		return container;
+	};
+
+	// Range constructor
+	function Range(dom) {
+		var d = dom.doc;
+
+		extend(this, {
+			dom : dom,
+
+			// Inital states
+			startContainer : d,
+			startOffset : 0,
+			endContainer : d,
+			endOffset : 0,
+			collapsed : true,
+			commonAncestorContainer : d,
+
+			// Range constants
+			START_TO_START : 0,
+			START_TO_END : 1,
+			END_TO_END : 2,
+			END_TO_START : 3
+		});
+	};
+
+	// Add range methods
+	extend(Range.prototype, {
+		setStart : function(n, o) {
+			this._setEndPoint(true, n, o);
+		},
+
+		setEnd : function(n, o) {
+			this._setEndPoint(false, n, o);
+		},
+
+		setStartBefore : function(n) {
+			this.setStart(n.parentNode, nodeIndex(n));
+		},
+
+		setStartAfter : function(n) {
+			this.setStart(n.parentNode, nodeIndex(n) + 1);
+		},
+
+		setEndBefore : function(n) {
+			this.setEnd(n.parentNode, nodeIndex(n));
+		},
+
+		setEndAfter : function(n) {
+			this.setEnd(n.parentNode, nodeIndex(n) + 1);
+		},
+
+		collapse : function(ts) {
+			var t = this;
+
+			if (ts) {
+				t.endContainer = t.startContainer;
+				t.endOffset = t.startOffset;
+			} else {
+				t.startContainer = t.endContainer;
+				t.startOffset = t.endOffset;
+			}
+
+			t.collapsed = true;
+		},
+
+		selectNode : function(n) {
+			this.setStartBefore(n);
+			this.setEndAfter(n);
+		},
+
+		selectNodeContents : function(n) {
+			this.setStart(n, 0);
+			this.setEnd(n, n.nodeType === 1 ? n.childNodes.length : n.nodeValue.length);
+		},
+
+		compareBoundaryPoints : function(h, r) {
+			var t = this, sc = t.startContainer, so = t.startOffset, ec = t.endContainer, eo = t.endOffset;
+
+			// Check START_TO_START
+			if (h === 0)
+				return t._compareBoundaryPoints(sc, so, sc, so);
+
+			// Check START_TO_END
+			if (h === 1)
+				return t._compareBoundaryPoints(sc, so, ec, eo);
+
+			// Check END_TO_END
+			if (h === 2)
+				return t._compareBoundaryPoints(ec, eo, ec, eo);
+
+			// Check END_TO_START
+			if (h === 3)
+				return t._compareBoundaryPoints(ec, eo, sc, so);
+		},
+
+		deleteContents : function() {
+			this._traverse(DELETE);
+		},
+
+		extractContents : function() {
+			return this._traverse(EXTRACT);
+		},
+
+		cloneContents : function() {
+			return this._traverse(CLONE);
+		},
+
+		insertNode : function(n) {
+			var t = this, nn, o;
+
+			// Node is TEXT_NODE or CDATA
+			if (n.nodeType === 3 || n.nodeType === 4) {
+				nn = t.startContainer.splitText(t.startOffset);
+				t.startContainer.parentNode.insertBefore(n, nn);
+			} else {
+				// Insert element node
+				if (t.startContainer.childNodes.length > 0)
+					o = t.startContainer.childNodes[t.startOffset];
+
+				t.startContainer.insertBefore(n, o);
+			}
+		},
+
+		surroundContents : function(n) {
+			var t = this, f = t.extractContents();
+
+			t.insertNode(n);
+			n.appendChild(f);
+			t.selectNode(n);
+		},
+
+		cloneRange : function() {
+			var t = this;
+
+			return extend(new Range(t.dom), {
+				startContainer : t.startContainer,
+				startOffset : t.startOffset,
+				endContainer : t.endContainer,
+				endOffset : t.endOffset,
+				collapsed : t.collapsed,
+				commonAncestorContainer : t.commonAncestorContainer
+			});
+		},
+
+/*
+		detach : function() {
+			// Not implemented
+		},
+*/
+		// Internal methods
+
+		_isCollapsed : function() {
+			return (this.startContainer == this.endContainer && this.startOffset == this.endOffset);
+		},
+
+		_compareBoundaryPoints : function (containerA, offsetA, containerB, offsetB) {
+			var c, offsetC, n, cmnRoot, childA, childB;
+
+			// In the first case the boundary-points have the same container. A is before B 
+			// if its offset is less than the offset of B, A is equal to B if its offset is 
+			// equal to the offset of B, and A is after B if its offset is greater than the 
+			// offset of B.
+			if (containerA == containerB) {
+				if (offsetA == offsetB) {
+					return 0; // equal
+				} else if (offsetA < offsetB) {
+					return -1; // before
+				} else {
+					return 1; // after
+				}
+			}
+
+			// In the second case a child node C of the container of A is an ancestor 
+			// container of B. In this case, A is before B if the offset of A is less than or 
+			// equal to the index of the child node C and A is after B otherwise.
+			c = containerB;
+			while (c && c.parentNode != containerA) {
+				c = c.parentNode;
+			}
+			if (c) {
+				offsetC = 0;
+				n = containerA.firstChild;
+
+				while (n != c && offsetC < offsetA) {
+					offsetC++;
+					n = n.nextSibling;
+				}
+
+				if (offsetA <= offsetC) {
+					return -1; // before
+				} else {
+					return 1; // after
+				}
+			}
+
+			// In the third case a child node C of the container of B is an ancestor container 
+			// of A. In this case, A is before B if the index of the child node C is less than 
+			// the offset of B and A is after B otherwise.
+			c = containerA;
+			while (c && c.parentNode != containerB) {
+				c = c.parentNode;
+			}
+
+			if (c) {
+				offsetC = 0;
+				n = containerB.firstChild;
+
+				while (n != c && offsetC < offsetB) {
+					offsetC++;
+					n = n.nextSibling;
+				}
+
+				if (offsetC < offsetB) {
+					return -1; // before
+				} else {
+					return 1; // after
+				}
+			}
+
+			// In the fourth case, none of three other cases hold: the containers of A and B 
+			// are siblings or descendants of sibling nodes. In this case, A is before B if 
+			// the container of A is before the container of B in a pre-order traversal of the
+			// Ranges' context tree and A is after B otherwise.
+			cmnRoot = this.dom.findCommonAncestor(containerA, containerB);
+			childA = containerA;
+
+			while (childA && childA.parentNode != cmnRoot) {
+				childA = childA.parentNode;  
+			}
+
+			if (!childA) {
+				childA = cmnRoot;
+			}
+
+			childB = containerB;
+			while (childB && childB.parentNode != cmnRoot) {
+				childB = childB.parentNode;
+			}
+
+			if (!childB) {
+				childB = cmnRoot;
+			}
+
+			if (childA == childB) {
+				return 0; // equal
+			}
+
+			n = cmnRoot.firstChild;
+			while (n) {
+				if (n == childA) {
+					return -1; // before
+				}
+
+				if (n == childB) {
+					return 1; // after
+				}
+
+				n = n.nextSibling;
+			}
+		},
+
+		_setEndPoint : function(st, n, o) {
+			var t = this, ec, sc;
+
+			if (st) {
+				t.startContainer = n;
+				t.startOffset = o;
+			} else {
+				t.endContainer = n;
+				t.endOffset = o;
+			}
+
+			// If one boundary-point of a Range is set to have a root container 
+			// other than the current one for the Range, the Range is collapsed to 
+			// the new position. This enforces the restriction that both boundary-
+			// points of a Range must have the same root container.
+			ec = t.endContainer;
+			while (ec.parentNode)
+				ec = ec.parentNode;
+
+			sc = t.startContainer;
+			while (sc.parentNode)
+				sc = sc.parentNode;
+
+			if (sc != ec) {
+				t.collapse(st);
+			} else {
+				// The start position of a Range is guaranteed to never be after the 
+				// end position. To enforce this restriction, if the start is set to 
+				// be at a position after the end, the Range is collapsed to that 
+				// position.
+				if (t._compareBoundaryPoints(t.startContainer, t.startOffset, t.endContainer, t.endOffset) > 0)
+					t.collapse(st);
+			}
+
+			t.collapsed = t._isCollapsed();
+			t.commonAncestorContainer = t.dom.findCommonAncestor(t.startContainer, t.endContainer);
+		},
+
+		// This code is heavily "inspired" by the Apache Xerces implementation. I hope they don't mind. :)
+
+		_traverse : function(how) {
+			var t = this, c, endContainerDepth = 0, startContainerDepth = 0, p, depthDiff, startNode, endNode, sp, ep;
+
+			if (t.startContainer == t.endContainer)
+				return t._traverseSameContainer(how);
+
+			for (c = t.endContainer, p = c.parentNode; p != null; c = p, p = p.parentNode) {
+				if (p == t.startContainer)
+					return t._traverseCommonStartContainer(c, how);
+
+				++endContainerDepth;
+			}
+
+			for (c = t.startContainer, p = c.parentNode; p != null; c = p, p = p.parentNode) {
+				if (p == t.endContainer)
+					return t._traverseCommonEndContainer(c, how);
+
+				++startContainerDepth;
+			}
+
+			depthDiff = startContainerDepth - endContainerDepth;
+
+			startNode = t.startContainer;
+			while (depthDiff > 0) {
+				startNode = startNode.parentNode;
+				depthDiff--;
+			}
+
+			endNode = t.endContainer;
+			while (depthDiff < 0) {
+				endNode = endNode.parentNode;
+				depthDiff++;
+			}
+
+			// ascend the ancestor hierarchy until we have a common parent.
+			for (sp = startNode.parentNode, ep = endNode.parentNode; sp != ep; sp = sp.parentNode, ep = ep.parentNode) {
+				startNode = sp;
+				endNode = ep;
+			}
+
+			return t._traverseCommonAncestors(startNode, endNode, how);
+		},
+
+		_traverseSameContainer : function(how) {
+			var t = this, frag, s, sub, n, cnt, sibling, xferNode;
+
+			if (how != DELETE)
+				frag = t.dom.doc.createDocumentFragment();
+
+			// If selection is empty, just return the fragment
+			if (t.startOffset == t.endOffset)
+				return frag;
+
+			// Text node needs special case handling
+			if (t.startContainer.nodeType == 3 /* TEXT_NODE */) {
+				// get the substring
+				s = t.startContainer.nodeValue;
+				sub = s.substring(t.startOffset, t.endOffset);
+
+				// set the original text node to its new value
+				if (how != CLONE) {
+					t.startContainer.deleteData(t.startOffset, t.endOffset - t.startOffset);
+
+					// Nothing is partially selected, so collapse to start point
+					t.collapse(true);
+				}
+
+				if (how == DELETE)
+					return null;
+
+				frag.appendChild(t.dom.doc.createTextNode(sub));
+				return frag;
+			}
+
+			// Copy nodes between the start/end offsets.
+			n = getSelectedNode(t.startContainer, t.startOffset);
+			cnt = t.endOffset - t.startOffset;
+
+			while (cnt > 0) {
+				sibling = n.nextSibling;
+				xferNode = t._traverseFullySelected(n, how);
+
+				if (frag)
+					frag.appendChild( xferNode );
+
+				--cnt;
+				n = sibling;
+			}
+
+			// Nothing is partially selected, so collapse to start point
+			if (how != CLONE)
+				t.collapse(true);
+
+			return frag;
+		},
+
+		_traverseCommonStartContainer : function(endAncestor, how) {
+			var t = this, frag, n, endIdx, cnt, sibling, xferNode;
+
+			if (how != DELETE)
+				frag = t.dom.doc.createDocumentFragment();
+
+			n = t._traverseRightBoundary(endAncestor, how);
+
+			if (frag)
+				frag.appendChild(n);
+
+			endIdx = indexOf(endAncestor, t.startContainer);
+			cnt = endIdx - t.startOffset;
+
+			if (cnt <= 0) {
+				// Collapse to just before the endAncestor, which 
+				// is partially selected.
+				if (how != CLONE) {
+					t.setEndBefore(endAncestor);
+					t.collapse(false);
+				}
+
+				return frag;
+			}
+
+			n = endAncestor.previousSibling;
+			while (cnt > 0) {
+				sibling = n.previousSibling;
+				xferNode = t._traverseFullySelected(n, how);
+
+				if (frag)
+					frag.insertBefore(xferNode, frag.firstChild);
+
+				--cnt;
+				n = sibling;
+			}
+
+			// Collapse to just before the endAncestor, which 
+			// is partially selected.
+			if (how != CLONE) {
+				t.setEndBefore(endAncestor);
+				t.collapse(false);
+			}
+
+			return frag;
+		},
+
+		_traverseCommonEndContainer : function(startAncestor, how) {
+			var t = this, frag, startIdx, n, cnt, sibling, xferNode;
+
+			if (how != DELETE)
+				frag = t.dom.doc.createDocumentFragment();
+
+			n = t._traverseLeftBoundary(startAncestor, how);
+			if (frag)
+				frag.appendChild(n);
+
+			startIdx = indexOf(startAncestor, t.endContainer);
+			++startIdx;  // Because we already traversed it....
+
+			cnt = t.endOffset - startIdx;
+			n = startAncestor.nextSibling;
+			while (cnt > 0) {
+				sibling = n.nextSibling;
+				xferNode = t._traverseFullySelected(n, how);
+
+				if (frag)
+					frag.appendChild(xferNode);
+
+				--cnt;
+				n = sibling;
+			}
+
+			if (how != CLONE) {
+				t.setStartAfter(startAncestor);
+				t.collapse(true);
+			}
+
+			return frag;
+		},
+
+		_traverseCommonAncestors : function(startAncestor, endAncestor, how) {
+			var t = this, n, frag, commonParent, startOffset, endOffset, cnt, sibling, nextSibling;
+
+			if (how != DELETE)
+				frag = t.dom.doc.createDocumentFragment();
+
+			n = t._traverseLeftBoundary(startAncestor, how);
+			if (frag)
+				frag.appendChild(n);
+
+			commonParent = startAncestor.parentNode;
+			startOffset = indexOf(startAncestor, commonParent);
+			endOffset = indexOf(endAncestor, commonParent);
+			++startOffset;
+
+			cnt = endOffset - startOffset;
+			sibling = startAncestor.nextSibling;
+
+			while (cnt > 0) {
+				nextSibling = sibling.nextSibling;
+				n = t._traverseFullySelected(sibling, how);
+
+				if (frag)
+					frag.appendChild(n);
+
+				sibling = nextSibling;
+				--cnt;
+			}
+
+			n = t._traverseRightBoundary(endAncestor, how);
+
+			if (frag)
+				frag.appendChild(n);
+
+			if (how != CLONE) {
+				t.setStartAfter(startAncestor);
+				t.collapse(true);
+			}
+
+			return frag;
+		},
+
+		_traverseRightBoundary : function(root, how) {
+			var t = this, next = getSelectedNode(t.endContainer, t.endOffset - 1), parent, clonedParent, prevSibling, clonedChild, clonedGrandParent;
+			var isFullySelected = next != t.endContainer;
+
+			if (next == root)
+				return t._traverseNode(next, isFullySelected, false, how);
+
+			parent = next.parentNode;
+			clonedParent = t._traverseNode(parent, false, false, how);
+
+			while (parent != null) {
+				while (next != null) {
+					prevSibling = next.previousSibling;
+					clonedChild = t._traverseNode(next, isFullySelected, false, how);
+
+					if (how != DELETE)
+						clonedParent.insertBefore(clonedChild, clonedParent.firstChild);
+
+					isFullySelected = true;
+					next = prevSibling;
+				}
+
+				if (parent == root)
+					return clonedParent;
+
+				next = parent.previousSibling;
+				parent = parent.parentNode;
+
+				clonedGrandParent = t._traverseNode(parent, false, false, how);
+
+				if (how != DELETE)
+					clonedGrandParent.appendChild(clonedParent);
+
+				clonedParent = clonedGrandParent;
+			}
+
+			// should never occur
+			return null;
+		},
+
+		_traverseLeftBoundary : function(root, how) {
+			var t = this, next = getSelectedNode(t.startContainer, t.startOffset);
+			var isFullySelected = next != t.startContainer, parent, clonedParent, nextSibling, clonedChild, clonedGrandParent;
+
+			if (next == root)
+				return t._traverseNode(next, isFullySelected, true, how);
+
+			parent = next.parentNode;
+			clonedParent = t._traverseNode(parent, false, true, how);
+
+			while (parent != null) {
+				while (next != null) {
+					nextSibling = next.nextSibling;
+					clonedChild = t._traverseNode(next, isFullySelected, true, how);
+
+					if (how != DELETE)
+						clonedParent.appendChild(clonedChild);
+
+					isFullySelected = true;
+					next = nextSibling;
+				}
+
+				if (parent == root)
+					return clonedParent;
+
+				next = parent.nextSibling;
+				parent = parent.parentNode;
+
+				clonedGrandParent = t._traverseNode(parent, false, true, how);
+
+				if (how != DELETE)
+					clonedGrandParent.appendChild(clonedParent);
+
+				clonedParent = clonedGrandParent;
+			}
+
+			// should never occur
+			return null;
+		},
+
+		_traverseNode : function(n, isFullySelected, isLeft, how) {
+			var t = this, txtValue, newNodeValue, oldNodeValue, offset, newNode;
+
+			if (isFullySelected)
+				return t._traverseFullySelected(n, how);
+
+			if (n.nodeType == 3 /* TEXT_NODE */) {
+				txtValue = n.nodeValue;
+
+				if (isLeft) {
+					offset = t.startOffset;
+					newNodeValue = txtValue.substring(offset);
+					oldNodeValue = txtValue.substring(0, offset);
+				} else {
+					offset = t.endOffset;
+					newNodeValue = txtValue.substring(0, offset);
+					oldNodeValue = txtValue.substring(offset);
+				}
+
+				if (how != CLONE)
+					n.nodeValue = oldNodeValue;
+
+				if (how == DELETE)
+					return null;
+
+				newNode = n.cloneNode(false);
+				newNode.nodeValue = newNodeValue;
+
+				return newNode;
+			}
+
+			if (how == DELETE)
+				return null;
+
+			return n.cloneNode(false);
+		},
+
+		_traverseFullySelected : function(n, how) {
+			var t = this;
+
+			if (how != DELETE)
+				return how == CLONE ? n.cloneNode(true) : n;
+
+			n.parentNode.removeChild(n);
+			return null;
+		}
+	});
+
+	ns.Range = Range;
+})(tinymce.dom);
+(function() {
+	function Selection(selection) {
+		var t = this, invisibleChar = '\uFEFF', range, lastIERng;
+
+		function compareRanges(rng1, rng2) {
+			if (rng1 && rng2) {
+				// Both are control ranges and the selected element matches
+				if (rng1.item && rng2.item && rng1.item(0) === rng2.item(0))
+					return 1;
+
+				// Both are text ranges and the range matches
+				if (rng1.isEqual && rng2.isEqual && rng2.isEqual(rng1))
+					return 1;
+			}
+
+			return 0;
+		};
+
+		function getRange() {
+			var dom = selection.dom, ieRange = selection.getRng(), domRange = dom.createRng(), startPos, endPos, element, sc, ec, collapsed;
+
+			function findIndex(element) {
+				var nl = element.parentNode.childNodes, i;
+
+				for (i = nl.length - 1; i >= 0; i--) {
+					if (nl[i] == element)
+						return i;
+				}
+
+				return -1;
+			};
+
+			function findEndPoint(start) {
+				var rng = ieRange.duplicate(), parent, i, nl, n, offset = 0, index = 0, pos, tmpRng;
+
+				// Insert marker character
+				rng.collapse(start);
+				parent = rng.parentElement();
+				rng.pasteHTML(invisibleChar); // Needs to be a pasteHTML instead of .text = since IE has a bug with nodeValue
+
+				// Find marker character
+				nl = parent.childNodes;
+				for (i = 0; i < nl.length; i++) {
+					n = nl[i];
+
+					// Calculate node index excluding text node fragmentation
+					if (i > 0 && (n.nodeType !== 3 || nl[i - 1].nodeType !== 3))
+						index++;
+
+					// If text node then calculate offset
+					if (n.nodeType === 3) {
+						// Look for marker
+						pos = n.nodeValue.indexOf(invisibleChar);
+						if (pos !== -1) {
+							offset += pos;
+							break;
+						}
+
+						offset += n.nodeValue.length;
+					} else
+						offset = 0;
+				}
+
+				// Remove marker character
+				rng.moveStart('character', -1);
+				rng.text = '';
+
+				return {index : index, offset : offset, parent : parent};
+			};
+
+			// If selection is outside the current document just return an empty range
+			element = ieRange.item ? ieRange.item(0) : ieRange.parentElement();
+			if (element.ownerDocument != dom.doc)
+				return domRange;
+
+			// Handle control selection or text selection of a image
+			if (ieRange.item || !element.hasChildNodes()) {
+				domRange.setStart(element.parentNode, findIndex(element));
+				domRange.setEnd(domRange.startContainer, domRange.startOffset + 1);
+
+				return domRange;
+			}
+
+			// Check collapsed state
+			collapsed = selection.isCollapsed();
+
+			// Find start and end pos index and offset
+			startPos = findEndPoint(true);
+			endPos = findEndPoint(false);
+
+			// Normalize the elements to avoid fragmented dom
+			startPos.parent.normalize();
+			endPos.parent.normalize();
+
+			// Set start container and offset
+			sc = startPos.parent.childNodes[Math.min(startPos.index, startPos.parent.childNodes.length - 1)];
+
+			if (sc.nodeType != 3)
+				domRange.setStart(startPos.parent, startPos.index);
+			else
+				domRange.setStart(startPos.parent.childNodes[startPos.index], startPos.offset);
+
+			// Set end container and offset
+			ec = endPos.parent.childNodes[Math.min(endPos.index, endPos.parent.childNodes.length - 1)];
+
+			if (ec.nodeType != 3) {
+				if (!collapsed)
+					endPos.index++;
+
+				domRange.setEnd(endPos.parent, endPos.index);
+			} else
+				domRange.setEnd(endPos.parent.childNodes[endPos.index], endPos.offset);
+
+			// If not collapsed then make sure offsets are valid
+			if (!collapsed) {
+				sc = domRange.startContainer;
+				if (sc.nodeType == 1)
+					domRange.setStart(sc, Math.min(domRange.startOffset, sc.childNodes.length));
+
+				ec = domRange.endContainer;
+				if (ec.nodeType == 1)
+					domRange.setEnd(ec, Math.min(domRange.endOffset, ec.childNodes.length));
+			}
+
+			// Restore selection to new range
+			t.addRange(domRange);
+
+			return domRange;
+		};
+
+		this.addRange = function(rng) {
+			var ieRng, body = selection.dom.doc.body, startPos, endPos, sc, so, ec, eo;
+
+			// Setup some shorter versions
+			sc = rng.startContainer;
+			so = rng.startOffset;
+			ec = rng.endContainer;
+			eo = rng.endOffset;
+			ieRng = body.createTextRange();
+
+			// Find element
+			sc = sc.nodeType == 1 ? sc.childNodes[Math.min(so, sc.childNodes.length - 1)] : sc;
+			ec = ec.nodeType == 1 ? ec.childNodes[Math.min(so == eo ? eo : eo - 1, ec.childNodes.length - 1)] : ec;
+
+			// Single element selection
+			if (sc == ec && sc.nodeType == 1) {
+				// Make control selection for some elements
+				if (/^(IMG|TABLE)$/.test(sc.nodeName) && so != eo) {
+					ieRng = body.createControlRange();
+					ieRng.addElement(sc);
+				} else {
+					ieRng = body.createTextRange();
+
+					// Padd empty elements with invisible character
+					if (!sc.hasChildNodes() && sc.canHaveHTML)
+						sc.innerHTML = invisibleChar;
+
+					// Select element contents
+					ieRng.moveToElementText(sc);
+
+					// If it's only containing a padding remove it so the caret remains
+					if (sc.innerHTML == invisibleChar) {
+						ieRng.collapse(true);
+						sc.removeChild(sc.firstChild);
+					}
+				}
+
+				if (so == eo)
+					ieRng.collapse(eo <= rng.endContainer.childNodes.length - 1);
+
+				ieRng.select();
+
+				return;
+			}
+
+			function getCharPos(container, offset) {
+				var nodeVal, rng, pos;
+
+				if (container.nodeType != 3)
+					return -1;
+
+				nodeVal = container.nodeValue;
+				rng = body.createTextRange();
+
+				// Insert marker at offset position
+				container.nodeValue = nodeVal.substring(0, offset) + invisibleChar + nodeVal.substring(offset);
+
+				// Find char pos of marker and remove it
+				rng.moveToElementText(container.parentNode);
+				rng.findText(invisibleChar);
+				pos = Math.abs(rng.moveStart('character', -0xFFFFF));
+				container.nodeValue = nodeVal;
+
+				return pos;
+			};
+
+			// Collapsed range
+			if (rng.collapsed) {
+				pos = getCharPos(sc, so);
+
+				ieRng = body.createTextRange();
+				ieRng.move('character', pos);
+				ieRng.select();
+
+				return;
+			} else {
+				// If same text container
+				if (sc == ec && sc.nodeType == 3) {
+					startPos = getCharPos(sc, so);
+
+					ieRng.move('character', startPos);
+					ieRng.moveEnd('character', eo - so);
+					ieRng.select();
+
+					return;
+				}
+
+				// Get caret positions
+				startPos = getCharPos(sc, so);
+				endPos = getCharPos(ec, eo);
+				ieRng = body.createTextRange();
+
+				// Move start of range to start character position or start element
+				if (startPos == -1) {
+					ieRng.moveToElementText(sc);
+					startPos = 0;
+				} else
+					ieRng.move('character', startPos);
+
+				// Move end of range to end character position or end element
+				tmpRng = body.createTextRange();
+
+				if (endPos == -1)
+					tmpRng.moveToElementText(ec);
+				else
+					tmpRng.move('character', endPos);
+
+				ieRng.setEndPoint('EndToEnd', tmpRng);
+				ieRng.select();
+
+				return;
+			}
+		};
+
+		this.getRangeAt = function() {
+			// Setup new range if the cache is empty
+			if (!range || !compareRanges(lastIERng, selection.getRng())) {
+				range = getRange();
+
+				// Store away text range for next call
+				lastIERng = selection.getRng();
+			}
+
+			// Return cached range
+			return range;
+		};
+
+		this.destroy = function() {
+			// Destroy cached range and last IE range to avoid memory leaks
+			lastIERng = range = null;
+		};
+	};
+
+	// Expose the selection object
+	tinymce.dom.TridentSelection = Selection;
+})();
+
+/*
+ * Sizzle CSS Selector Engine - v1.0
+ *  Copyright 2009, The Dojo Foundation
+ *  Released under the MIT, BSD, and GPL Licenses.
+ *  More information: http://sizzlejs.com/
+ */
+(function(){
+
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,
+	done = 0,
+	toString = Object.prototype.toString,
+	hasDuplicate = false;
+
+var Sizzle = function(selector, context, results, seed) {
+	results = results || [];
+	var origContext = context = context || document;
+
+	if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
+		return [];
+	}
+	
+	if ( !selector || typeof selector !== "string" ) {
+		return results;
+	}
+
+	var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context);
+	
+	// Reset the position of the chunker regexp (start from head)
+	chunker.lastIndex = 0;
+	
+	while ( (m = chunker.exec(selector)) !== null ) {
+		parts.push( m[1] );
+		
+		if ( m[2] ) {
+			extra = RegExp.rightContext;
+			break;
+		}
+	}
+
+	if ( parts.length > 1 && origPOS.exec( selector ) ) {
+		if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
+			set = posProcess( parts[0] + parts[1], context );
+		} else {
+			set = Expr.relative[ parts[0] ] ?
+				[ context ] :
+				Sizzle( parts.shift(), context );
+
+			while ( parts.length ) {
+				selector = parts.shift();
+
+				if ( Expr.relative[ selector ] )
+					selector += parts.shift();
+
+				set = posProcess( selector, set );
+			}
+		}
+	} else {
+		// Take a shortcut and set the context if the root selector is an ID
+		// (but not if it'll be faster if the inner selector is an ID)
+		if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
+				Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
+			var ret = Sizzle.find( parts.shift(), context, contextXML );
+			context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
+		}
+
+		if ( context ) {
+			var ret = seed ?
+				{ expr: parts.pop(), set: makeArray(seed) } :
+				Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
+			set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
+
+			if ( parts.length > 0 ) {
+				checkSet = makeArray(set);
+			} else {
+				prune = false;
+			}
+
+			while ( parts.length ) {
+				var cur = parts.pop(), pop = cur;
+
+				if ( !Expr.relative[ cur ] ) {
+					cur = "";
+				} else {
+					pop = parts.pop();
+				}
+
+				if ( pop == null ) {
+					pop = context;
+				}
+
+				Expr.relative[ cur ]( checkSet, pop, contextXML );
+			}
+		} else {
+			checkSet = parts = [];
+		}
+	}
+
+	if ( !checkSet ) {
+		checkSet = set;
+	}
+
+	if ( !checkSet ) {
+		throw "Syntax error, unrecognized expression: " + (cur || selector);
+	}
+
+	if ( toString.call(checkSet) === "[object Array]" ) {
+		if ( !prune ) {
+			results.push.apply( results, checkSet );
+		} else if ( context && context.nodeType === 1 ) {
+			for ( var i = 0; checkSet[i] != null; i++ ) {
+				if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
+					results.push( set[i] );
+				}
+			}
+		} else {
+			for ( var i = 0; checkSet[i] != null; i++ ) {
+				if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
+					results.push( set[i] );
+				}
+			}
+		}
+	} else {
+		makeArray( checkSet, results );
+	}
+
+	if ( extra ) {
+		Sizzle( extra, origContext, results, seed );
+		Sizzle.uniqueSort( results );
+	}
+
+	return results;
+};
+
+Sizzle.uniqueSort = function(results){
+	if ( sortOrder ) {
+		hasDuplicate = false;
+		results.sort(sortOrder);
+
+		if ( hasDuplicate ) {
+			for ( var i = 1; i < results.length; i++ ) {
+				if ( results[i] === results[i-1] ) {
+					results.splice(i--, 1);
+				}
+			}
+		}
+	}
+};
+
+Sizzle.matches = function(expr, set){
+	return Sizzle(expr, null, null, set);
+};
+
+Sizzle.find = function(expr, context, isXML){
+	var set, match;
+
+	if ( !expr ) {
+		return [];
+	}
+
+	for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
+		var type = Expr.order[i], match;
+		
+		if ( (match = Expr.match[ type ].exec( expr )) ) {
+			var left = RegExp.leftContext;
+
+			if ( left.substr( left.length - 1 ) !== "\\" ) {
+				match[1] = (match[1] || "").replace(/\\/g, "");
+				set = Expr.find[ type ]( match, context, isXML );
+				if ( set != null ) {
+					expr = expr.replace( Expr.match[ type ], "" );
+					break;
+				}
+			}
+		}
+	}
+
+	if ( !set ) {
+		set = context.getElementsByTagName("*");
+	}
+
+	return {set: set, expr: expr};
+};
+
+Sizzle.filter = function(expr, set, inplace, not){
+	var old = expr, result = [], curLoop = set, match, anyFound,
+		isXMLFilter = set && set[0] && isXML(set[0]);
+
+	while ( expr && set.length ) {
+		for ( var type in Expr.filter ) {
+			if ( (match = Expr.match[ type ].exec( expr )) != null ) {
+				var filter = Expr.filter[ type ], found, item;
+				anyFound = false;
+
+				if ( curLoop == result ) {
+					result = [];
+				}
+
+				if ( Expr.preFilter[ type ] ) {
+					match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
+
+					if ( !match ) {
+						anyFound = found = true;
+					} else if ( match === true ) {
+						continue;
+					}
+				}
+
+				if ( match ) {
+					for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
+						if ( item ) {
+							found = filter( item, match, i, curLoop );
+							var pass = not ^ !!found;
+
+							if ( inplace && found != null ) {
+								if ( pass ) {
+									anyFound = true;
+								} else {
+									curLoop[i] = false;
+								}
+							} else if ( pass ) {
+								result.push( item );
+								anyFound = true;
+							}
+						}
+					}
+				}
+
+				if ( found !== undefined ) {
+					if ( !inplace ) {
+						curLoop = result;
+					}
+
+					expr = expr.replace( Expr.match[ type ], "" );
+
+					if ( !anyFound ) {
+						return [];
+					}
+
+					break;
+				}
+			}
+		}
+
+		// Improper expression
+		if ( expr == old ) {
+			if ( anyFound == null ) {
+				throw "Syntax error, unrecognized expression: " + expr;
+			} else {
+				break;
+			}
+		}
+
+		old = expr;
+	}
+
+	return curLoop;
+};
+
+var Expr = Sizzle.selectors = {
+	order: [ "ID", "NAME", "TAG" ],
+	match: {
+		ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
+		CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
+		NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,
+		ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
+		TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,
+		CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
+		POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
+		PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
+	},
+	attrMap: {
+		"class": "className",
+		"for": "htmlFor"
+	},
+	attrHandle: {
+		href: function(elem){
+			return elem.getAttribute("href");
+		}
+	},
+	relative: {
+		"+": function(checkSet, part, isXML){
+			var isPartStr = typeof part === "string",
+				isTag = isPartStr && !/\W/.test(part),
+				isPartStrNotTag = isPartStr && !isTag;
+
+			if ( isTag && !isXML ) {
+				part = part.toUpperCase();
+			}
+
+			for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
+				if ( (elem = checkSet[i]) ) {
+					while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
+
+					checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
+						elem || false :
+						elem === part;
+				}
+			}
+
+			if ( isPartStrNotTag ) {
+				Sizzle.filter( part, checkSet, true );
+			}
+		},
+		">": function(checkSet, part, isXML){
+			var isPartStr = typeof part === "string";
+
+			if ( isPartStr && !/\W/.test(part) ) {
+				part = isXML ? part : part.toUpperCase();
+
+				for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+					var elem = checkSet[i];
+					if ( elem ) {
+						var parent = elem.parentNode;
+						checkSet[i] = parent.nodeName === part ? parent : false;
+					}
+				}
+			} else {
+				for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+					var elem = checkSet[i];
+					if ( elem ) {
+						checkSet[i] = isPartStr ?
+							elem.parentNode :
+							elem.parentNode === part;
+					}
+				}
+
+				if ( isPartStr ) {
+					Sizzle.filter( part, checkSet, true );
+				}
+			}
+		},
+		"": function(checkSet, part, isXML){
+			var doneName = done++, checkFn = dirCheck;
+
+			if ( !part.match(/\W/) ) {
+				var nodeCheck = part = isXML ? part : part.toUpperCase();
+				checkFn = dirNodeCheck;
+			}
+
+			checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
+		},
+		"~": function(checkSet, part, isXML){
+			var doneName = done++, checkFn = dirCheck;
+
+			if ( typeof part === "string" && !part.match(/\W/) ) {
+				var nodeCheck = part = isXML ? part : part.toUpperCase();
+				checkFn = dirNodeCheck;
+			}
+
+			checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
+		}
+	},
+	find: {
+		ID: function(match, context, isXML){
+			if ( typeof context.getElementById !== "undefined" && !isXML ) {
+				var m = context.getElementById(match[1]);
+				return m ? [m] : [];
+			}
+		},
+		NAME: function(match, context, isXML){
+			if ( typeof context.getElementsByName !== "undefined" ) {
+				var ret = [], results = context.getElementsByName(match[1]);
+
+				for ( var i = 0, l = results.length; i < l; i++ ) {
+					if ( results[i].getAttribute("name") === match[1] ) {
+						ret.push( results[i] );
+					}
+				}
+
+				return ret.length === 0 ? null : ret;
+			}
+		},
+		TAG: function(match, context){
+			return context.getElementsByTagName(match[1]);
+		}
+	},
+	preFilter: {
+		CLASS: function(match, curLoop, inplace, result, not, isXML){
+			match = " " + match[1].replace(/\\/g, "") + " ";
+
+			if ( isXML ) {
+				return match;
+			}
+
+			for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
+				if ( elem ) {
+					if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
+						if ( !inplace )
+							result.push( elem );
+					} else if ( inplace ) {
+						curLoop[i] = false;
+					}
+				}
+			}
+
+			return false;
+		},
+		ID: function(match){
+			return match[1].replace(/\\/g, "");
+		},
+		TAG: function(match, curLoop){
+			for ( var i = 0; curLoop[i] === false; i++ ){}
+			return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
+		},
+		CHILD: function(match){
+			if ( match[1] == "nth" ) {
+				// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
+				var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
+					match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
+					!/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
+
+				// calculate the numbers (first)n+(last) including if they are negative
+				match[2] = (test[1] + (test[2] || 1)) - 0;
+				match[3] = test[3] - 0;
+			}
+
+			// TODO: Move to normal caching system
+			match[0] = done++;
+
+			return match;
+		},
+		ATTR: function(match, curLoop, inplace, result, not, isXML){
+			var name = match[1].replace(/\\/g, "");
+			
+			if ( !isXML && Expr.attrMap[name] ) {
+				match[1] = Expr.attrMap[name];
+			}
+
+			if ( match[2] === "~=" ) {
+				match[4] = " " + match[4] + " ";
+			}
+
+			return match;
+		},
+		PSEUDO: function(match, curLoop, inplace, result, not){
+			if ( match[1] === "not" ) {
+				// If we're dealing with a complex expression, or a simple one
+				if ( match[3].match(chunker).length > 1 || /^\w/.test(match[3]) ) {
+					match[3] = Sizzle(match[3], null, null, curLoop);
+				} else {
+					var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
+					if ( !inplace ) {
+						result.push.apply( result, ret );
+					}
+					return false;
+				}
+			} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
+				return true;
+			}
+			
+			return match;
+		},
+		POS: function(match){
+			match.unshift( true );
+			return match;
+		}
+	},
+	filters: {
+		enabled: function(elem){
+			return elem.disabled === false && elem.type !== "hidden";
+		},
+		disabled: function(elem){
+			return elem.disabled === true;
+		},
+		checked: function(elem){
+			return elem.checked === true;
+		},
+		selected: function(elem){
+			// Accessing this property makes selected-by-default
+			// options in Safari work properly
+			elem.parentNode.selectedIndex;
+			return elem.selected === true;
+		},
+		parent: function(elem){
+			return !!elem.firstChild;
+		},
+		empty: function(elem){
+			return !elem.firstChild;
+		},
+		has: function(elem, i, match){
+			return !!Sizzle( match[3], elem ).length;
+		},
+		header: function(elem){
+			return /h\d/i.test( elem.nodeName );
+		},
+		text: function(elem){
+			return "text" === elem.type;
+		},
+		radio: function(elem){
+			return "radio" === elem.type;
+		},
+		checkbox: function(elem){
+			return "checkbox" === elem.type;
+		},
+		file: function(elem){
+			return "file" === elem.type;
+		},
+		password: function(elem){
+			return "password" === elem.type;
+		},
+		submit: function(elem){
+			return "submit" === elem.type;
+		},
+		image: function(elem){
+			return "image" === elem.type;
+		},
+		reset: function(elem){
+			return "reset" === elem.type;
+		},
+		button: function(elem){
+			return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
+		},
+		input: function(elem){
+			return /input|select|textarea|button/i.test(elem.nodeName);
+		}
+	},
+	setFilters: {
+		first: function(elem, i){
+			return i === 0;
+		},
+		last: function(elem, i, match, array){
+			return i === array.length - 1;
+		},
+		even: function(elem, i){
+			return i % 2 === 0;
+		},
+		odd: function(elem, i){
+			return i % 2 === 1;
+		},
+		lt: function(elem, i, match){
+			return i < match[3] - 0;
+		},
+		gt: function(elem, i, match){
+			return i > match[3] - 0;
+		},
+		nth: function(elem, i, match){
+			return match[3] - 0 == i;
+		},
+		eq: function(elem, i, match){
+			return match[3] - 0 == i;
+		}
+	},
+	filter: {
+		PSEUDO: function(elem, match, i, array){
+			var name = match[1], filter = Expr.filters[ name ];
+
+			if ( filter ) {
+				return filter( elem, i, match, array );
+			} else if ( name === "contains" ) {
+				return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
+			} else if ( name === "not" ) {
+				var not = match[3];
+
+				for ( var i = 0, l = not.length; i < l; i++ ) {
+					if ( not[i] === elem ) {
+						return false;
+					}
+				}
+
+				return true;
+			}
+		},
+		CHILD: function(elem, match){
+			var type = match[1], node = elem;
+			switch (type) {
+				case 'only':
+				case 'first':
+					while (node = node.previousSibling)  {
+						if ( node.nodeType === 1 ) return false;
+					}
+					if ( type == 'first') return true;
+					node = elem;
+				case 'last':
+					while (node = node.nextSibling)  {
+						if ( node.nodeType === 1 ) return false;
+					}
+					return true;
+				case 'nth':
+					var first = match[2], last = match[3];
+
+					if ( first == 1 && last == 0 ) {
+						return true;
+					}
+					
+					var doneName = match[0],
+						parent = elem.parentNode;
+	
+					if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
+						var count = 0;
+						for ( node = parent.firstChild; node; node = node.nextSibling ) {
+							if ( node.nodeType === 1 ) {
+								node.nodeIndex = ++count;
+							}
+						} 
+						parent.sizcache = doneName;
+					}
+					
+					var diff = elem.nodeIndex - last;
+					if ( first == 0 ) {
+						return diff == 0;
+					} else {
+						return ( diff % first == 0 && diff / first >= 0 );
+					}
+			}
+		},
+		ID: function(elem, match){
+			return elem.nodeType === 1 && elem.getAttribute("id") === match;
+		},
+		TAG: function(elem, match){
+			return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
+		},
+		CLASS: function(elem, match){
+			return (" " + (elem.className || elem.getAttribute("class")) + " ")
+				.indexOf( match ) > -1;
+		},
+		ATTR: function(elem, match){
+			var name = match[1],
+				result = Expr.attrHandle[ name ] ?
+					Expr.attrHandle[ name ]( elem ) :
+					elem[ name ] != null ?
+						elem[ name ] :
+						elem.getAttribute( name ),
+				value = result + "",
+				type = match[2],
+				check = match[4];
+
+			return result == null ?
+				type === "!=" :
+				type === "=" ?
+				value === check :
+				type === "*=" ?
+				value.indexOf(check) >= 0 :
+				type === "~=" ?
+				(" " + value + " ").indexOf(check) >= 0 :
+				!check ?
+				value && result !== false :
+				type === "!=" ?
+				value != check :
+				type === "^=" ?
+				value.indexOf(check) === 0 :
+				type === "$=" ?
+				value.substr(value.length - check.length) === check :
+				type === "|=" ?
+				value === check || value.substr(0, check.length + 1) === check + "-" :
+				false;
+		},
+		POS: function(elem, match, i, array){
+			var name = match[2], filter = Expr.setFilters[ name ];
+
+			if ( filter ) {
+				return filter( elem, i, match, array );
+			}
+		}
+	}
+};
+
+var origPOS = Expr.match.POS;
+
+for ( var type in Expr.match ) {
+	Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
+}
+
+var makeArray = function(array, results) {
+	array = Array.prototype.slice.call( array );
+
+	if ( results ) {
+		results.push.apply( results, array );
+		return results;
+	}
+	
+	return array;
+};
+
+// Perform a simple check to determine if the browser is capable of
+// converting a NodeList to an array using builtin methods.
+try {
+	Array.prototype.slice.call( document.documentElement.childNodes );
+
+// Provide a fallback method if it does not work
+} catch(e){
+	makeArray = function(array, results) {
+		var ret = results || [];
+
+		if ( toString.call(array) === "[object Array]" ) {
+			Array.prototype.push.apply( ret, array );
+		} else {
+			if ( typeof array.length === "number" ) {
+				for ( var i = 0, l = array.length; i < l; i++ ) {
+					ret.push( array[i] );
+				}
+			} else {
+				for ( var i = 0; array[i]; i++ ) {
+					ret.push( array[i] );
+				}
+			}
+		}
+
+		return ret;
+	};
+}
+
+var sortOrder;
+
+if ( document.documentElement.compareDocumentPosition ) {
+	sortOrder = function( a, b ) {
+		var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
+		if ( ret === 0 ) {
+			hasDuplicate = true;
+		}
+		return ret;
+	};
+} else if ( "sourceIndex" in document.documentElement ) {
+	sortOrder = function( a, b ) {
+		var ret = a.sourceIndex - b.sourceIndex;
+		if ( ret === 0 ) {
+			hasDuplicate = true;
+		}
+		return ret;
+	};
+} else if ( document.createRange ) {
+	sortOrder = function( a, b ) {
+		var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
+		aRange.setStart(a, 0);
+		aRange.setEnd(a, 0);
+		bRange.setStart(b, 0);
+		bRange.setEnd(b, 0);
+		var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
+		if ( ret === 0 ) {
+			hasDuplicate = true;
+		}
+		return ret;
+	};
+}
+
+// Check to see if the browser returns elements by name when
+// querying by getElementById (and provide a workaround)
+(function(){
+	// We're going to inject a fake input element with a specified name
+	var form = document.createElement("div"),
+		id = "script" + (new Date).getTime();
+	form.innerHTML = "<a name='" + id + "'/>";
+
+	// Inject it into the root element, check its status, and remove it quickly
+	var root = document.documentElement;
+	root.insertBefore( form, root.firstChild );
+
+	// The workaround has to do additional checks after a getElementById
+	// Which slows things down for other browsers (hence the branching)
+	if ( !!document.getElementById( id ) ) {
+		Expr.find.ID = function(match, context, isXML){
+			if ( typeof context.getElementById !== "undefined" && !isXML ) {
+				var m = context.getElementById(match[1]);
+				return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
+			}
+		};
+
+		Expr.filter.ID = function(elem, match){
+			var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+			return elem.nodeType === 1 && node && node.nodeValue === match;
+		};
+	}
+
+	root.removeChild( form );
+})();
+
+(function(){
+	// Check to see if the browser returns only elements
+	// when doing getElementsByTagName("*")
+
+	// Create a fake element
+	var div = document.createElement("div");
+	div.appendChild( document.createComment("") );
+
+	// Make sure no comments are found
+	if ( div.getElementsByTagName("*").length > 0 ) {
+		Expr.find.TAG = function(match, context){
+			var results = context.getElementsByTagName(match[1]);
+
+			// Filter out possible comments
+			if ( match[1] === "*" ) {
+				var tmp = [];
+
+				for ( var i = 0; results[i]; i++ ) {
+					if ( results[i].nodeType === 1 ) {
+						tmp.push( results[i] );
+					}
+				}
+
+				results = tmp;
+			}
+
+			return results;
+		};
+	}
+
+	// Check to see if an attribute returns normalized href attributes
+	div.innerHTML = "<a href='#'></a>";
+	if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
+			div.firstChild.getAttribute("href") !== "#" ) {
+		Expr.attrHandle.href = function(elem){
+			return elem.getAttribute("href", 2);
+		};
+	}
+})();
+
+if ( document.querySelectorAll ) (function(){
+	var oldSizzle = Sizzle, div = document.createElement("div");
+	div.innerHTML = "<p class='TEST'></p>";
+
+	// Safari can't handle uppercase or unicode characters when
+	// in quirks mode.
+	if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
+		return;
+	}
+	
+	Sizzle = function(query, context, extra, seed){
+		context = context || document;
+
+		// Only use querySelectorAll on non-XML documents
+		// (ID selectors don't work in non-HTML documents)
+		if ( !seed && context.nodeType === 9 && !isXML(context) ) {
+			try {
+				return makeArray( context.querySelectorAll(query), extra );
+			} catch(e){}
+		}
+		
+		return oldSizzle(query, context, extra, seed);
+	};
+
+	for ( var prop in oldSizzle ) {
+		Sizzle[ prop ] = oldSizzle[ prop ];
+	}
+})();
+
+if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
+	var div = document.createElement("div");
+	div.innerHTML = "<div class='test e'></div><div class='test'></div>";
+
+	// Opera can't find a second classname (in 9.6)
+	if ( div.getElementsByClassName("e").length === 0 )
+		return;
+
+	// Safari caches class attributes, doesn't catch changes (in 3.2)
+	div.lastChild.className = "e";
+
+	if ( div.getElementsByClassName("e").length === 1 )
+		return;
+
+	Expr.order.splice(1, 0, "CLASS");
+	Expr.find.CLASS = function(match, context, isXML) {
+		if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
+			return context.getElementsByClassName(match[1]);
+		}
+	};
+})();
+
+function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+	var sibDir = dir == "previousSibling" && !isXML;
+	for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+		var elem = checkSet[i];
+		if ( elem ) {
+			if ( sibDir && elem.nodeType === 1 ){
+				elem.sizcache = doneName;
+				elem.sizset = i;
+			}
+			elem = elem[dir];
+			var match = false;
+
+			while ( elem ) {
+				if ( elem.sizcache === doneName ) {
+					match = checkSet[elem.sizset];
+					break;
+				}
+
+				if ( elem.nodeType === 1 && !isXML ){
+					elem.sizcache = doneName;
+					elem.sizset = i;
+				}
+
+				if ( elem.nodeName === cur ) {
+					match = elem;
+					break;
+				}
+
+				elem = elem[dir];
+			}
+
+			checkSet[i] = match;
+		}
+	}
+}
+
+function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+	var sibDir = dir == "previousSibling" && !isXML;
+	for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+		var elem = checkSet[i];
+		if ( elem ) {
+			if ( sibDir && elem.nodeType === 1 ) {
+				elem.sizcache = doneName;
+				elem.sizset = i;
+			}
+			elem = elem[dir];
+			var match = false;
+
+			while ( elem ) {
+				if ( elem.sizcache === doneName ) {
+					match = checkSet[elem.sizset];
+					break;
+				}
+
+				if ( elem.nodeType === 1 ) {
+					if ( !isXML ) {
+						elem.sizcache = doneName;
+						elem.sizset = i;
+					}
+					if ( typeof cur !== "string" ) {
+						if ( elem === cur ) {
+							match = true;
+							break;
+						}
+
+					} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
+						match = elem;
+						break;
+					}
+				}
+
+				elem = elem[dir];
+			}
+
+			checkSet[i] = match;
+		}
+	}
+}
+
+var contains = document.compareDocumentPosition ?  function(a, b){
+	return a.compareDocumentPosition(b) & 16;
+} : function(a, b){
+	return a !== b && (a.contains ? a.contains(b) : true);
+};
+
+var isXML = function(elem){
+	return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
+		!!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML";
+};
+
+var posProcess = function(selector, context){
+	var tmpSet = [], later = "", match,
+		root = context.nodeType ? [context] : context;
+
+	// Position selectors must be done after the filter
+	// And so must :not(positional) so we move all PSEUDOs to the end
+	while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
+		later += match[0];
+		selector = selector.replace( Expr.match.PSEUDO, "" );
+	}
+
+	selector = Expr.relative[selector] ? selector + "*" : selector;
+
+	for ( var i = 0, l = root.length; i < l; i++ ) {
+		Sizzle( selector, root[i], tmpSet );
+	}
+
+	return Sizzle.filter( later, tmpSet );
+};
+
+// EXPOSE
+
+window.tinymce.dom.Sizzle = Sizzle;
+
+})();
+
+(function(tinymce) {
+	// Shorten names
+	var each = tinymce.each, DOM = tinymce.DOM, isIE = tinymce.isIE, isWebKit = tinymce.isWebKit, Event;
+
+	tinymce.create('tinymce.dom.EventUtils', {
+		EventUtils : function() {
+			this.inits = [];
+			this.events = [];
+		},
+
+
+		add : function(o, n, f, s) {
+			var cb, t = this, el = t.events, r;
+
+			if (n instanceof Array) {
+				r = [];
+
+				each(n, function(n) {
+					r.push(t.add(o, n, f, s));
+				});
+
+				return r;
+			}
+
+			// Handle array
+			if (o && o.hasOwnProperty && o instanceof Array) {
+				r = [];
+
+				each(o, function(o) {
+					o = DOM.get(o);
+					r.push(t.add(o, n, f, s));
+				});
+
+				return r;
+			}
+
+			o = DOM.get(o);
+
+			if (!o)
+				return;
+
+			// Setup event callback
+			cb = function(e) {
+				// Is all events disabled
+				if (t.disabled)
+					return;
+
+				e = e || window.event;
+
+				// Patch in target, preventDefault and stopPropagation in IE it's W3C valid
+				if (e && isIE) {
+					if (!e.target)
+						e.target = e.srcElement;
+
+					if (!e.preventDefault) {
+						e.preventDefault = function() {
+							e.returnValue = false;
+						};
+					}
+
+					if (!e.stopPropagation) {
+						e.stopPropagation = function() {
+							e.cancelBubble = true;
+						};
+					}
+				}
+
+				if (!s)
+					return f(e);
+
+				return f.call(s, e);
+			};
+
+			if (n == 'unload') {
+				tinymce.unloads.unshift({func : cb});
+				return cb;
+			}
+
+			if (n == 'init') {
+				if (t.domLoaded)
+					cb();
+				else
+					t.inits.push(cb);
+
+				return cb;
+			}
+
+			// Store away listener reference
+			el.push({
+				obj : o,
+				name : n,
+				func : f,
+				cfunc : cb,
+				scope : s
+			});
+
+			t._add(o, n, cb);
+
+			return f;
+		},
+
+		remove : function(o, n, f) {
+			var t = this, a = t.events, s = false, r;
+
+			// Handle array
+			if (o && o.hasOwnProperty && o instanceof Array) {
+				r = [];
+
+				each(o, function(o) {
+					o = DOM.get(o);
+					r.push(t.remove(o, n, f));
+				});
+
+				return r;
+			}
+
+			o = DOM.get(o);
+
+			each(a, function(e, i) {
+				if (e.obj == o && e.name == n && (!f || (e.func == f || e.cfunc == f))) {
+					a.splice(i, 1);
+					t._remove(o, n, e.cfunc);
+					s = true;
+					return false;
+				}
+			});
+
+			return s;
+		},
+
+		clear : function(o) {
+			var t = this, a = t.events, i, e;
+
+			if (o) {
+				o = DOM.get(o);
+
+				for (i = a.length - 1; i >= 0; i--) {
+					e = a[i];
+
+					if (e.obj === o) {
+						t._remove(e.obj, e.name, e.cfunc);
+						e.obj = e.cfunc = null;
+						a.splice(i, 1);
+					}
+				}
+			}
+		},
+
+
+		cancel : function(e) {
+			if (!e)
+				return false;
+
+			this.stop(e);
+
+			return this.prevent(e);
+		},
+
+		stop : function(e) {
+			if (e.stopPropagation)
+				e.stopPropagation();
+			else
+				e.cancelBubble = true;
+
+			return false;
+		},
+
+		prevent : function(e) {
+			if (e.preventDefault)
+				e.preventDefault();
+			else
+				e.returnValue = false;
+
+			return false;
+		},
+
+		destroy : function() {
+			var t = this;
+
+			each(t.events, function(e, i) {
+				t._remove(e.obj, e.name, e.cfunc);
+				e.obj = e.cfunc = null;
+			});
+
+			t.events = [];
+			t = null;
+		},
+
+		_add : function(o, n, f) {
+			if (o.attachEvent)
+				o.attachEvent('on' + n, f);
+			else if (o.addEventListener)
+				o.addEventListener(n, f, false);
+			else
+				o['on' + n] = f;
+		},
+
+		_remove : function(o, n, f) {
+			if (o) {
+				try {
+					if (o.detachEvent)
+						o.detachEvent('on' + n, f);
+					else if (o.removeEventListener)
+						o.removeEventListener(n, f, false);
+					else
+						o['on' + n] = null;
+				} catch (ex) {
+					// Might fail with permission denined on IE so we just ignore that
+				}
+			}
+		},
+
+		_pageInit : function(win) {
+			var t = this;
+
+			// Keep it from running more than once
+			if (t.domLoaded)
+				return;
+
+			t.domLoaded = true;
+
+			each(t.inits, function(c) {
+				c();
+			});
+
+			t.inits = [];
+		},
+
+		_wait : function(win) {
+			var t = this, doc = win.document;
+
+			// No need since the document is already loaded
+			if (win.tinyMCE_GZ && tinyMCE_GZ.loaded) {
+				t.domLoaded = 1;
+				return;
+			}
+
+			// Use IE method
+			if (doc.attachEvent) {
+				doc.attachEvent("onreadystatechange", function() {
+					if (doc.readyState === "complete") {
+						doc.detachEvent("onreadystatechange", arguments.callee);
+						t._pageInit(win);
+					}
+				});
+
+				if (doc.documentElement.doScroll && win == win.top) {
+					(function() {
+						if (t.domLoaded)
+							return;
+
+						try {
+							// If IE is used, use the trick by Diego Perini
+							// http://javascript.nwbox.com/IEContentLoaded/
+							doc.documentElement.doScroll("left");
+						} catch (ex) {
+							setTimeout(arguments.callee, 0);
+							return;
+						}
+
+						t._pageInit(win);
+					})();
+				}
+			} else if (doc.addEventListener) {
+				t._add(win, 'DOMContentLoaded', function() {
+					t._pageInit(win);
+				});
+			}
+
+			t._add(win, 'load', function() {
+				t._pageInit(win);
+			});
+		}
+
+		});
+
+	// Shorten name and setup global instance
+	Event = tinymce.dom.Event = new tinymce.dom.EventUtils();
+
+	// Dispatch DOM content loaded event for IE and Safari
+	Event._wait(window);
+
+	tinymce.addUnload(function() {
+		Event.destroy();
+	});
+})(tinymce);
+(function(tinymce) {
+	var each = tinymce.each;
+
+	tinymce.create('tinymce.dom.Element', {
+		Element : function(id, s) {
+			var t = this, dom, el;
+
+			s = s || {};
+			t.id = id;
+			t.dom = dom = s.dom || tinymce.DOM;
+			t.settings = s;
+
+			// Only IE leaks DOM references, this is a lot faster
+			if (!tinymce.isIE)
+				el = t.dom.get(t.id);
+
+			each([
+				'getPos',
+				'getRect',
+				'getParent',
+				'add',
+				'setStyle',
+				'getStyle',
+				'setStyles',
+				'setAttrib',
+				'setAttribs',
+				'getAttrib',
+				'addClass',
+				'removeClass',
+				'hasClass',
+				'getOuterHTML',
+				'setOuterHTML',
+				'remove',
+				'show',
+				'hide',
+				'isHidden',
+				'setHTML',
+				'get'
+			], function(k) {
+				t[k] = function() {
+					var a = [id], i;
+
+					for (i = 0; i < arguments.length; i++)
+						a.push(arguments[i]);
+
+					a = dom[k].apply(dom, a);
+					t.update(k);
+
+					return a;
+				};
+			});
+		},
+
+		on : function(n, f, s) {
+			return tinymce.dom.Event.add(this.id, n, f, s);
+		},
+
+		getXY : function() {
+			return {
+				x : parseInt(this.getStyle('left')),
+				y : parseInt(this.getStyle('top'))
+			};
+		},
+
+		getSize : function() {
+			var n = this.dom.get(this.id);
+
+			return {
+				w : parseInt(this.getStyle('width') || n.clientWidth),
+				h : parseInt(this.getStyle('height') || n.clientHeight)
+			};
+		},
+
+		moveTo : function(x, y) {
+			this.setStyles({left : x, top : y});
+		},
+
+		moveBy : function(x, y) {
+			var p = this.getXY();
+
+			this.moveTo(p.x + x, p.y + y);
+		},
+
+		resizeTo : function(w, h) {
+			this.setStyles({width : w, height : h});
+		},
+
+		resizeBy : function(w, h) {
+			var s = this.getSize();
+
+			this.resizeTo(s.w + w, s.h + h);
+		},
+
+		update : function(k) {
+			var t = this, b, dom = t.dom;
+
+			if (tinymce.isIE6 && t.settings.blocker) {
+				k = k || '';
+
+				// Ignore getters
+				if (k.indexOf('get') === 0 || k.indexOf('has') === 0 || k.indexOf('is') === 0)
+					return;
+
+				// Remove blocker on remove
+				if (k == 'remove') {
+					dom.remove(t.blocker);
+					return;
+				}
+
+				if (!t.blocker) {
+					t.blocker = dom.uniqueId();
+					b = dom.add(t.settings.container || dom.getRoot(), 'iframe', {id : t.blocker, style : 'position:absolute;', frameBorder : 0, src : 'javascript:""'});
+					dom.setStyle(b, 'opacity', 0);
+				} else
+					b = dom.get(t.blocker);
+
+				dom.setStyle(b, 'left', t.getStyle('left', 1));
+				dom.setStyle(b, 'top', t.getStyle('top', 1));
+				dom.setStyle(b, 'width', t.getStyle('width', 1));
+				dom.setStyle(b, 'height', t.getStyle('height', 1));
+				dom.setStyle(b, 'display', t.getStyle('display', 1));
+				dom.setStyle(b, 'zIndex', parseInt(t.getStyle('zIndex', 1) || 0) - 1);
+			}
+		}
+
+		});
+})(tinymce);
+(function(tinymce) {
+	function trimNl(s) {
+		return s.replace(/[\n\r]+/g, '');
+	};
+
+	// Shorten names
+	var is = tinymce.is, isIE = tinymce.isIE, each = tinymce.each;
+
+	tinymce.create('tinymce.dom.Selection', {
+		Selection : function(dom, win, serializer) {
+			var t = this;
+
+			t.dom = dom;
+			t.win = win;
+			t.serializer = serializer;
+
+			// Add events
+			each([
+				'onBeforeSetContent',
+				'onBeforeGetContent',
+				'onSetContent',
+				'onGetContent'
+			], function(e) {
+				t[e] = new tinymce.util.Dispatcher(t);
+			});
+
+			// No W3C Range support
+			if (!t.win.getSelection)
+				t.tridentSel = new tinymce.dom.TridentSelection(t);
+
+			// Prevent leaks
+			tinymce.addUnload(t.destroy, t);
+		},
+
+		getContent : function(s) {
+			var t = this, r = t.getRng(), e = t.dom.create("body"), se = t.getSel(), wb, wa, n;
+
+			s = s || {};
+			wb = wa = '';
+			s.get = true;
+			s.format = s.format || 'html';
+			t.onBeforeGetContent.dispatch(t, s);
+
+			if (s.format == 'text')
+				return t.isCollapsed() ? '' : (r.text || (se.toString ? se.toString() : ''));
+
+			if (r.cloneContents) {
+				n = r.cloneContents();
+
+				if (n)
+					e.appendChild(n);
+			} else if (is(r.item) || is(r.htmlText))
+				e.innerHTML = r.item ? r.item(0).outerHTML : r.htmlText;
+			else
+				e.innerHTML = r.toString();
+
+			// Keep whitespace before and after
+			if (/^\s/.test(e.innerHTML))
+				wb = ' ';
+
+			if (/\s+$/.test(e.innerHTML))
+				wa = ' ';
+
+			s.getInner = true;
+
+			s.content = t.isCollapsed() ? '' : wb + t.serializer.serialize(e, s) + wa;
+			t.onGetContent.dispatch(t, s);
+
+			return s.content;
+		},
+
+		setContent : function(h, s) {
+			var t = this, r = t.getRng(), c, d = t.win.document;
+
+			s = s || {format : 'html'};
+			s.set = true;
+			h = s.content = t.dom.processHTML(h);
+
+			// Dispatch before set content event
+			t.onBeforeSetContent.dispatch(t, s);
+			h = s.content;
+
+			if (r.insertNode) {
+				// Make caret marker since insertNode places the caret in the beginning of text after insert
+				h += '<span id="__caret">_</span>';
+
+				// Delete and insert new node
+				r.deleteContents();
+				r.insertNode(t.getRng().createContextualFragment(h));
+
+				// Move to caret marker
+				c = t.dom.get('__caret');
+
+				// Make sure we wrap it compleatly, Opera fails with a simple select call
+				r = d.createRange();
+				r.setStartBefore(c);
+				r.setEndAfter(c);
+				t.setRng(r);
+
+				// Delete the marker, and hopefully the caret gets placed in the right location
+				// Removed this since it seems to remove &nbsp; in FF and simply deleting it
+				// doesn't seem to affect the caret position in any browser
+				//d.execCommand('Delete', false, null);
+
+				// Remove the caret position
+				t.dom.remove('__caret');
+			} else {
+				if (r.item) {
+					// Delete content and get caret text selection
+					d.execCommand('Delete', false, null);
+					r = t.getRng();
+				}
+
+				r.pasteHTML(h);
+			}
+
+			// Dispatch set content event
+			t.onSetContent.dispatch(t, s);
+		},
+
+		getStart : function() {
+			var t = this, r = t.getRng(), e;
+
+			if (isIE) {
+				if (r.item)
+					return r.item(0);
+
+				r = r.duplicate();
+				r.collapse(1);
+				e = r.parentElement();
+
+				if (e && e.nodeName == 'BODY')
+					return e.firstChild;
+
+				return e;
+			} else {
+				e = r.startContainer;
+
+				if (e.nodeName == 'BODY')
+					return e.firstChild;
+
+				return t.dom.getParent(e, '*');
+			}
+		},
+
+		getEnd : function() {
+			var t = this, r = t.getRng(), e;
+
+			if (isIE) {
+				if (r.item)
+					return r.item(0);
+
+				r = r.duplicate();
+				r.collapse(0);
+				e = r.parentElement();
+
+				if (e && e.nodeName == 'BODY')
+					return e.lastChild;
+
+				return e;
+			} else {
+				e = r.endContainer;
+
+				if (e.nodeName == 'BODY')
+					return e.lastChild;
+
+				return t.dom.getParent(e, '*');
+			}
+		},
+
+		getBookmark : function(si) {
+			var t = this, r = t.getRng(), tr, sx, sy, vp = t.dom.getViewPort(t.win), e, sp, bp, le, c = -0xFFFFFF, s, ro = t.dom.getRoot(), wb = 0, wa = 0, nv;
+			sx = vp.x;
+			sy = vp.y;
+
+			// Simple bookmark fast but not as persistent
+			if (si == 'simple')
+				return {rng : r, scrollX : sx, scrollY : sy};
+
+			// Handle IE
+			if (isIE) {
+				// Control selection
+				if (r.item) {
+					e = r.item(0);
+
+					each(t.dom.select(e.nodeName), function(n, i) {
+						if (e == n) {
+							sp = i;
+							return false;
+						}
+					});
+
+					return {
+						tag : e.nodeName,
+						index : sp,
+						scrollX : sx,
+						scrollY : sy
+					};
+				}
+
+				// Text selection
+				tr = t.dom.doc.body.createTextRange();
+				tr.moveToElementText(ro);
+				tr.collapse(true);
+				bp = Math.abs(tr.move('character', c));
+
+				tr = r.duplicate();
+				tr.collapse(true);
+				sp = Math.abs(tr.move('character', c));
+
+				tr = r.duplicate();
+				tr.collapse(false);
+				le = Math.abs(tr.move('character', c)) - sp;
+
+				return {
+					start : sp - bp,
+					length : le,
+					scrollX : sx,
+					scrollY : sy
+				};
+			}
+
+			// Handle W3C
+			e = t.getNode();
+			s = t.getSel();
+
+			if (!s)
+				return null;
+
+			// Image selection
+			if (e && e.nodeName == 'IMG') {
+				return {
+					scrollX : sx,
+					scrollY : sy
+				};
+			}
+
+			// Text selection
+
+			function getPos(r, sn, en) {
+				var w = t.dom.doc.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d = {};
+
+				while ((n = w.nextNode()) != null) {
+					if (n == sn)
+						d.start = p;
+
+					if (n == en) {
+						d.end = p;
+						return d;
+					}
+
+					p += trimNl(n.nodeValue || '').length;
+				}
+
+				return null;
+			};
+
+			// Caret or selection
+			if (s.anchorNode == s.focusNode && s.anchorOffset == s.focusOffset) {
+				e = getPos(ro, s.anchorNode, s.focusNode);
+
+				if (!e)
+					return {scrollX : sx, scrollY : sy};
+
+				// Count whitespace before
+				trimNl(s.anchorNode.nodeValue || '').replace(/^\s+/, function(a) {wb = a.length;});
+
+				return {
+					start : Math.max(e.start + s.anchorOffset - wb, 0),
+					end : Math.max(e.end + s.focusOffset - wb, 0),
+					scrollX : sx,
+					scrollY : sy,
+					beg : s.anchorOffset - wb == 0
+				};
+			} else {
+				e = getPos(ro, r.startContainer, r.endContainer);
+
+				// Count whitespace before start and end container
+				//(r.startContainer.nodeValue || '').replace(/^\s+/, function(a) {wb = a.length;});
+				//(r.endContainer.nodeValue || '').replace(/^\s+/, function(a) {wa = a.length;});
+
+				if (!e)
+					return {scrollX : sx, scrollY : sy};
+
+				return {
+					start : Math.max(e.start + r.startOffset - wb, 0),
+					end : Math.max(e.end + r.endOffset - wa, 0),
+					scrollX : sx,
+					scrollY : sy,
+					beg : r.startOffset - wb == 0
+				};
+			}
+		},
+
+		moveToBookmark : function(b) {
+			var t = this, r = t.getRng(), s = t.getSel(), ro = t.dom.getRoot(), sd, nvl, nv;
+
+			function getPos(r, sp, ep) {
+				var w = t.dom.doc.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d = {}, o, v, wa, wb;
+
+				while ((n = w.nextNode()) != null) {
+					wa = wb = 0;
+
+					nv = n.nodeValue || '';
+					//nv.replace(/^\s+[^\s]/, function(a) {wb = a.length - 1;});
+					//nv.replace(/[^\s]\s+$/, function(a) {wa = a.length - 1;});
+
+					nvl = trimNl(nv).length;
+					p += nvl;
+
+					if (p >= sp && !d.startNode) {
+						o = sp - (p - nvl);
+
+						// Fix for odd quirk in FF
+						if (b.beg && o >= nvl)
+							continue;
+
+						d.startNode = n;
+						d.startOffset = o + wb;
+					}
+
+					if (p >= ep) {
+						d.endNode = n;
+						d.endOffset = ep - (p - nvl) + wb;
+						return d;
+					}
+				}
+
+				return null;
+			};
+
+			if (!b)
+				return false;
+
+			t.win.scrollTo(b.scrollX, b.scrollY);
+
+			// Handle explorer
+			if (isIE) {
+				// Handle simple
+				if (r = b.rng) {
+					try {
+						r.select();
+					} catch (ex) {
+						// Ignore
+					}
+
+					return true;
+				}
+
+				t.win.focus();
+
+				// Handle control bookmark
+				if (b.tag) {
+					r = ro.createControlRange();
+
+					each(t.dom.select(b.tag), function(n, i) {
+						if (i == b.index)
+							r.addElement(n);
+					});
+				} else {
+					// Try/catch needed since this operation breaks when TinyMCE is placed in hidden divs/tabs
+					try {
+						// Incorrect bookmark
+						if (b.start < 0)
+							return true;
+
+						r = s.createRange();
+						r.moveToElementText(ro);
+						r.collapse(true);
+						r.moveStart('character', b.start);
+						r.moveEnd('character', b.length);
+					} catch (ex2) {
+						return true;
+					}
+				}
+
+				try {
+					r.select();
+				} catch (ex) {
+					// Needed for some odd IE bug #1843306
+				}
+
+				return true;
+			}
+
+			// Handle W3C
+			if (!s)
+				return false;
+
+			// Handle simple
+			if (b.rng) {
+				s.removeAllRanges();
+				s.addRange(b.rng);
+			} else {
+				if (is(b.start) && is(b.end)) {
+					try {
+						sd = getPos(ro, b.start, b.end);
+
+						if (sd) {
+							r = t.dom.doc.createRange();
+							r.setStart(sd.startNode, sd.startOffset);
+							r.setEnd(sd.endNode, sd.endOffset);
+							s.removeAllRanges();
+							s.addRange(r);
+						}
+
+						if (!tinymce.isOpera)
+							t.win.focus();
+					} catch (ex) {
+						// Ignore
+					}
+				}
+			}
+		},
+
+		select : function(n, c) {
+			var t = this, r = t.getRng(), s = t.getSel(), b, fn, ln, d = t.win.document;
+
+			function find(n, start) {
+				var walker, o;
+
+				if (n) {
+					walker = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false);
+
+					// Find first/last non empty text node
+					while (n = walker.nextNode()) {
+						o = n;
+
+						if (tinymce.trim(n.nodeValue).length != 0) {
+							if (start)
+								return n;
+							else
+								o = n;
+						}
+					}
+				}
+
+				return o;
+			};
+
+			if (isIE) {
+				try {
+					b = d.body;
+
+					if (/^(IMG|TABLE)$/.test(n.nodeName)) {
+						r = b.createControlRange();
+						r.addElement(n);
+					} else {
+						r = b.createTextRange();
+						r.moveToElementText(n);
+					}
+
+					r.select();
+				} catch (ex) {
+					// Throws illigal agrument in IE some times
+				}
+			} else {
+				if (c) {
+					fn = find(n, 1) || t.dom.select('br:first', n)[0];
+					ln = find(n, 0) || t.dom.select('br:last', n)[0];
+
+					if (fn && ln) {
+						r = d.createRange();
+
+						if (fn.nodeName == 'BR')
+							r.setStartBefore(fn);
+						else
+							r.setStart(fn, 0);
+
+						if (ln.nodeName == 'BR')
+							r.setEndBefore(ln);
+						else
+							r.setEnd(ln, ln.nodeValue.length);
+					} else
+						r.selectNode(n);
+				} else
+					r.selectNode(n);
+
+				t.setRng(r);
+			}
+
+			return n;
+		},
+
+		isCollapsed : function() {
+			var t = this, r = t.getRng(), s = t.getSel();
+
+			if (!r || r.item)
+				return false;
+
+			return !s || r.boundingWidth == 0 || r.collapsed;
+		},
+
+		collapse : function(b) {
+			var t = this, r = t.getRng(), n;
+
+			// Control range on IE
+			if (r.item) {
+				n = r.item(0);
+				r = this.win.document.body.createTextRange();
+				r.moveToElementText(n);
+			}
+
+			r.collapse(!!b);
+			t.setRng(r);
+		},
+
+		getSel : function() {
+			var t = this, w = this.win;
+
+			return w.getSelection ? w.getSelection() : w.document.selection;
+		},
+
+		getRng : function(w3c) {
+			var t = this, s, r;
+
+			// Found tridentSel object then we need to use that one
+			if (w3c && t.tridentSel)
+				return t.tridentSel.getRangeAt(0);
+
+			try {
+				if (s = t.getSel())
+					r = s.rangeCount > 0 ? s.getRangeAt(0) : (s.createRange ? s.createRange() : t.win.document.createRange());
+			} catch (ex) {
+				// IE throws unspecified error here if TinyMCE is placed in a frame/iframe
+			}
+
+			// No range found then create an empty one
+			// This can occur when the editor is placed in a hidden container element on Gecko
+			// Or on IE when there was an exception
+			if (!r)
+				r = isIE ? t.win.document.body.createTextRange() : t.win.document.createRange();
+
+			return r;
+		},
+
+		setRng : function(r) {
+			var s, t = this;
+
+			if (!t.tridentSel) {
+				s = t.getSel();
+
+				if (s) {
+					s.removeAllRanges();
+					s.addRange(r);
+				}
+			} else {
+				// Is W3C Range
+				if (r.cloneRange) {
+					t.tridentSel.addRange(r);
+					return;
+				}
+
+				// Is IE specific range
+				try {
+					r.select();
+				} catch (ex) {
+					// Needed for some odd IE bug #1843306
+				}
+			}
+		},
+
+		setNode : function(n) {
+			var t = this;
+
+			t.setContent(t.dom.getOuterHTML(n));
+
+			return n;
+		},
+
+		getNode : function() {
+			var t = this, r = t.getRng(), s = t.getSel(), e;
+
+			if (!isIE) {
+				// Range maybe lost after the editor is made visible again
+				if (!r)
+					return t.dom.getRoot();
+
+				e = r.commonAncestorContainer;
+
+				// Handle selection a image or other control like element such as anchors
+				if (!r.collapsed) {
+					// If the anchor node is a element instead of a text node then return this element
+					if (tinymce.isWebKit && s.anchorNode && s.anchorNode.nodeType == 1) 
+						return s.anchorNode.childNodes[s.anchorOffset]; 
+
+					if (r.startContainer == r.endContainer) {
+						if (r.startOffset - r.endOffset < 2) {
+							if (r.startContainer.hasChildNodes())
+								e = r.startContainer.childNodes[r.startOffset];
+						}
+					}
+				}
+
+				return t.dom.getParent(e, '*');
+			}
+
+			return r.item ? r.item(0) : r.parentElement();
+		},
+
+		getSelectedBlocks : function(st, en) {
+			var t = this, dom = t.dom, sb, eb, n, bl = [];
+
+			sb = dom.getParent(st || t.getStart(), dom.isBlock);
+			eb = dom.getParent(en || t.getEnd(), dom.isBlock);
+
+			if (sb)
+				bl.push(sb);
+
+			if (sb && eb && sb != eb) {
+				n = sb;
+
+				while ((n = n.nextSibling) && n != eb) {
+					if (dom.isBlock(n))
+						bl.push(n);
+				}
+			}
+
+			if (eb && sb != eb)
+				bl.push(eb);
+
+			return bl;
+		},
+
+		destroy : function(s) {
+			var t = this;
+
+			t.win = null;
+
+			if (t.tridentSel)
+				t.tridentSel.destroy();
+
+			// Manual destroy then remove unload handler
+			if (!s)
+				tinymce.removeUnload(t.destroy);
+		}
+
+		});
+})(tinymce);
+(function(tinymce) {
+	tinymce.create('tinymce.dom.XMLWriter', {
+		node : null,
+
+		XMLWriter : function(s) {
+			// Get XML document
+			function getXML() {
+				var i = document.implementation;
+
+				if (!i || !i.createDocument) {
+					// Try IE objects
+					try {return new ActiveXObject('MSXML2.DOMDocument');} catch (ex) {}
+					try {return new ActiveXObject('Microsoft.XmlDom');} catch (ex) {}
+				} else
+					return i.createDocument('', '', null);
+			};
+
+			this.doc = getXML();
+			
+			// Since Opera and WebKit doesn't escape > into &gt; we need to do it our self to normalize the output for all browsers
+			this.valid = tinymce.isOpera || tinymce.isWebKit;
+
+			this.reset();
+		},
+
+		reset : function() {
+			var t = this, d = t.doc;
+
+			if (d.firstChild)
+				d.removeChild(d.firstChild);
+
+			t.node = d.appendChild(d.createElement("html"));
+		},
+
+		writeStartElement : function(n) {
+			var t = this;
+
+			t.node = t.node.appendChild(t.doc.createElement(n));
+		},
+
+		writeAttribute : function(n, v) {
+			if (this.valid)
+				v = v.replace(/>/g, '%MCGT%');
+
+			this.node.setAttribute(n, v);
+		},
+
+		writeEndElement : function() {
+			this.node = this.node.parentNode;
+		},
+
+		writeFullEndElement : function() {
+			var t = this, n = t.node;
+
+			n.appendChild(t.doc.createTextNode(""));
+			t.node = n.parentNode;
+		},
+
+		writeText : function(v) {
+			if (this.valid)
+				v = v.replace(/>/g, '%MCGT%');
+
+			this.node.appendChild(this.doc.createTextNode(v));
+		},
+
+		writeCDATA : function(v) {
+			this.node.appendChild(this.doc.createCDATASection(v));
+		},
+
+		writeComment : function(v) {
+			// Fix for bug #2035694
+			if (tinymce.isIE)
+				v = v.replace(/^\-|\-$/g, ' ');
+
+			this.node.appendChild(this.doc.createComment(v.replace(/\-\-/g, ' ')));
+		},
+
+		getContent : function() {
+			var h;
+
+			h = this.doc.xml || new XMLSerializer().serializeToString(this.doc);
+			h = h.replace(/<\?[^?]+\?>|<html>|<\/html>|<html\/>|<!DOCTYPE[^>]+>/g, '');
+			h = h.replace(/ ?\/>/g, ' />');
+
+			if (this.valid)
+				h = h.replace(/\%MCGT%/g, '&gt;');
+
+			return h;
+		}
+
+		});
+})(tinymce);
+(function(tinymce) {
+	tinymce.create('tinymce.dom.StringWriter', {
+		str : null,
+		tags : null,
+		count : 0,
+		settings : null,
+		indent : null,
+
+		StringWriter : function(s) {
+			this.settings = tinymce.extend({
+				indent_char : ' ',
+				indentation : 0
+			}, s);
+
+			this.reset();
+		},
+
+		reset : function() {
+			this.indent = '';
+			this.str = "";
+			this.tags = [];
+			this.count = 0;
+		},
+
+		writeStartElement : function(n) {
+			this._writeAttributesEnd();
+			this.writeRaw('<' + n);
+			this.tags.push(n);
+			this.inAttr = true;
+			this.count++;
+			this.elementCount = this.count;
+		},
+
+		writeAttribute : function(n, v) {
+			var t = this;
+
+			t.writeRaw(" " + t.encode(n) + '="' + t.encode(v) + '"');
+		},
+
+		writeEndElement : function() {
+			var n;
+
+			if (this.tags.length > 0) {
+				n = this.tags.pop();
+
+				if (this._writeAttributesEnd(1))
+					this.writeRaw('</' + n + '>');
+
+				if (this.settings.indentation > 0)
+					this.writeRaw('\n');
+			}
+		},
+
+		writeFullEndElement : function() {
+			if (this.tags.length > 0) {
+				this._writeAttributesEnd();
+				this.writeRaw('</' + this.tags.pop() + '>');
+
+				if (this.settings.indentation > 0)
+					this.writeRaw('\n');
+			}
+		},
+
+		writeText : function(v) {
+			this._writeAttributesEnd();
+			this.writeRaw(this.encode(v));
+			this.count++;
+		},
+
+		writeCDATA : function(v) {
+			this._writeAttributesEnd();
+			this.writeRaw('<![CDATA[' + v + ']]>');
+			this.count++;
+		},
+
+		writeComment : function(v) {
+			this._writeAttributesEnd();
+			this.writeRaw('<!-- ' + v + '-->');
+			this.count++;
+		},
+
+		writeRaw : function(v) {
+			this.str += v;
+		},
+
+		encode : function(s) {
+			return s.replace(/[<>&"]/g, function(v) {
+				switch (v) {
+					case '<':
+						return '&lt;';
+
+					case '>':
+						return '&gt;';
+
+					case '&':
+						return '&amp;';
+
+					case '"':
+						return '&quot;';
+				}
+
+				return v;
+			});
+		},
+
+		getContent : function() {
+			return this.str;
+		},
+
+		_writeAttributesEnd : function(s) {
+			if (!this.inAttr)
+				return;
+
+			this.inAttr = false;
+
+			if (s && this.elementCount == this.count) {
+				this.writeRaw(' />');
+				return false;
+			}
+
+			this.writeRaw('>');
+
+			return true;
+		}
+
+		});
+})(tinymce);
+(function(tinymce) {
+	// Shorten names
+	var extend = tinymce.extend, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher, isIE = tinymce.isIE, isGecko = tinymce.isGecko;
+
+	function wildcardToRE(s) {
+		return s.replace(/([?+*])/g, '.$1');
+	};
+
+	tinymce.create('tinymce.dom.Serializer', {
+		Serializer : function(s) {
+			var t = this;
+
+			t.key = 0;
+			t.onPreProcess = new Dispatcher(t);
+			t.onPostProcess = new Dispatcher(t);
+
+			try {
+				t.writer = new tinymce.dom.XMLWriter();
+			} catch (ex) {
+				// IE might throw exception if ActiveX is disabled so we then switch to the slightly slower StringWriter
+				t.writer = new tinymce.dom.StringWriter();
+			}
+
+			// Default settings
+			t.settings = s = extend({
+				dom : tinymce.DOM,
+				valid_nodes : 0,
+				node_filter : 0,
+				attr_filter : 0,
+				invalid_attrs : /^(mce_|_moz_)/,
+				closed : /^(br|hr|input|meta|img|link|param|area)$/,
+				entity_encoding : 'named',
+				entities : '160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro',
+				bool_attrs : /(checked|disabled|readonly|selected|nowrap)/,
+				valid_elements : '*[*]',
+				extended_valid_elements : 0,
+				valid_child_elements : 0,
+				invalid_elements : 0,
+				fix_table_elements : 1,
+				fix_list_elements : true,
+				fix_content_duplication : true,
+				convert_fonts_to_spans : false,
+				font_size_classes : 0,
+				font_size_style_values : 0,
+				apply_source_formatting : 0,
+				indent_mode : 'simple',
+				indent_char : '\t',
+				indent_levels : 1,
+				remove_linebreaks : 1,
+				remove_redundant_brs : 1,
+				element_format : 'xhtml'
+			}, s);
+
+			t.dom = s.dom;
+
+			if (s.remove_redundant_brs) {
+				t.onPostProcess.add(function(se, o) {
+					// Remove single BR at end of block elements since they get rendered
+					o.content = o.content.replace(/(<br \/>\s*)+<\/(p|h[1-6]|div|li)>/gi, function(a, b, c) {
+						// Check if it's a single element
+						if (/^<br \/>\s*<\//.test(a))
+							return '</' + c + '>';
+
+						return a;
+					});
+				});
+			}
+
+			// Remove XHTML element endings i.e. produce crap :) XHTML is better
+			if (s.element_format == 'html') {
+				t.onPostProcess.add(function(se, o) {
+					o.content = o.content.replace(/<([^>]+) \/>/g, '<$1>');
+				});
+			}
+
+			if (s.fix_list_elements) {
+				t.onPreProcess.add(function(se, o) {
+					var nl, x, a = ['ol', 'ul'], i, n, p, r = /^(OL|UL)$/, np;
+
+					function prevNode(e, n) {
+						var a = n.split(','), i;
+
+						while ((e = e.previousSibling) != null) {
+							for (i=0; i<a.length; i++) {
+								if (e.nodeName == a[i])
+									return e;
+							}
+						}
+
+						return null;
+					};
+
+					for (x=0; x<a.length; x++) {
+						nl = t.dom.select(a[x], o.node);
+
+						for (i=0; i<nl.length; i++) {
+							n = nl[i];
+							p = n.parentNode;
+
+							if (r.test(p.nodeName)) {
+								np = prevNode(n, 'LI');
+
+								if (!np) {
+									np = t.dom.create('li');
+									np.innerHTML = '&nbsp;';
+									np.appendChild(n);
+									p.insertBefore(np, p.firstChild);
+								} else
+									np.appendChild(n);
+							}
+						}
+					}
+				});
+			}
+
+			if (s.fix_table_elements) {
+				t.onPreProcess.add(function(se, o) {
+					each(t.dom.select('p table', o.node), function(n) {
+						t.dom.split(t.dom.getParent(n, 'p'), n);
+					});
+				});
+			}
+		},
+
+		setEntities : function(s) {
+			var t = this, a, i, l = {}, re = '', v;
+
+			// No need to setup more than once
+			if (t.entityLookup)
+				return;
+
+			// Build regex and lookup array
+			a = s.split(',');
+			for (i = 0; i < a.length; i += 2) {
+				v = a[i];
+
+				// Don't add default &amp; &quot; etc.
+				if (v == 34 || v == 38 || v == 60 || v == 62)
+					continue;
+
+				l[String.fromCharCode(a[i])] = a[i + 1];
+
+				v = parseInt(a[i]).toString(16);
+				re += '\\u' + '0000'.substring(v.length) + v;
+			}
+
+			if (!re) {
+				t.settings.entity_encoding = 'raw';
+				return;
+			}
+
+			t.entitiesRE = new RegExp('[' + re + ']', 'g');
+			t.entityLookup = l;
+		},
+
+		setValidChildRules : function(s) {
+			this.childRules = null;
+			this.addValidChildRules(s);
+		},
+
+		addValidChildRules : function(s) {
+			var t = this, inst, intr, bloc;
+
+			if (!s)
+				return;
+
+			inst = 'A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment';
+			intr = 'A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment';
+			bloc = 'H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP';
+
+			each(s.split(','), function(s) {
+				var p = s.split(/\[|\]/), re;
+
+				s = '';
+				each(p[1].split('|'), function(v) {
+					if (s)
+						s += '|';
+
+					switch (v) {
+						case '%itrans':
+							v = intr;
+							break;
+
+						case '%itrans_na':
+							v = intr.substring(2);
+							break;
+
+						case '%istrict':
+							v = inst;
+							break;
+
+						case '%istrict_na':
+							v = inst.substring(2);
+							break;
+
+						case '%btrans':
+							v = bloc;
+							break;
+
+						case '%bstrict':
+							v = bloc;
+							break;
+					}
+
+					s += v;
+				});
+				re = new RegExp('^(' + s.toLowerCase() + ')$', 'i');
+
+				each(p[0].split('/'), function(s) {
+					t.childRules = t.childRules || {};
+					t.childRules[s] = re;
+				});
+			});
+
+			// Build regex
+			s = '';
+			each(t.childRules, function(v, k) {
+				if (s)
+					s += '|';
+
+				s += k;
+			});
+
+			t.parentElementsRE = new RegExp('^(' + s.toLowerCase() + ')$', 'i');
+
+			/*console.debug(t.parentElementsRE.toString());
+			each(t.childRules, function(v) {
+				console.debug(v.toString());
+			});*/
+		},
+
+		setRules : function(s) {
+			var t = this;
+
+			t._setup();
+			t.rules = {};
+			t.wildRules = [];
+			t.validElements = {};
+
+			return t.addRules(s);
+		},
+
+		addRules : function(s) {
+			var t = this, dr;
+
+			if (!s)
+				return;
+
+			t._setup();
+
+			each(s.split(','), function(s) {
+				var p = s.split(/\[|\]/), tn = p[0].split('/'), ra, at, wat, va = [];
+
+				// Extend with default rules
+				if (dr)
+					at = tinymce.extend([], dr.attribs);
+
+				// Parse attributes
+				if (p.length > 1) {
+					each(p[1].split('|'), function(s) {
+						var ar = {}, i;
+
+						at = at || [];
+
+						// Parse attribute rule
+						s = s.replace(/::/g, '~');
+						s = /^([!\-])?([\w*.?~_\-]+|)([=:<])?(.+)?$/.exec(s);
+						s[2] = s[2].replace(/~/g, ':');
+
+						// Add required attributes
+						if (s[1] == '!') {
+							ra = ra || [];
+							ra.push(s[2]);
+						}
+
+						// Remove inherited attributes
+						if (s[1] == '-') {
+							for (i = 0; i <at.length; i++) {
+								if (at[i].name == s[2]) {
+									at.splice(i, 1);
+									return;
+								}
+							}
+						}
+
+						switch (s[3]) {
+							// Add default attrib values
+							case '=':
+								ar.defaultVal = s[4] || '';
+								break;
+
+							// Add forced attrib values
+							case ':':
+								ar.forcedVal = s[4];
+								break;
+
+							// Add validation values
+							case '<':
+								ar.validVals = s[4].split('?');
+								break;
+						}
+
+						if (/[*.?]/.test(s[2])) {
+							wat = wat || [];
+							ar.nameRE = new RegExp('^' + wildcardToRE(s[2]) + '$');
+							wat.push(ar);
+						} else {
+							ar.name = s[2];
+							at.push(ar);
+						}
+
+						va.push(s[2]);
+					});
+				}
+
+				// Handle element names
+				each(tn, function(s, i) {
+					var pr = s.charAt(0), x = 1, ru = {};
+
+					// Extend with default rule data
+					if (dr) {
+						if (dr.noEmpty)
+							ru.noEmpty = dr.noEmpty;
+
+						if (dr.fullEnd)
+							ru.fullEnd = dr.fullEnd;
+
+						if (dr.padd)
+							ru.padd = dr.padd;
+					}
+
+					// Handle prefixes
+					switch (pr) {
+						case '-':
+							ru.noEmpty = true;
+							break;
+
+						case '+':
+							ru.fullEnd = true;
+							break;
+
+						case '#':
+							ru.padd = true;
+							break;
+
+						default:
+							x = 0;
+					}
+
+					tn[i] = s = s.substring(x);
+					t.validElements[s] = 1;
+
+					// Add element name or element regex
+					if (/[*.?]/.test(tn[0])) {
+						ru.nameRE = new RegExp('^' + wildcardToRE(tn[0]) + '$');
+						t.wildRules = t.wildRules || {};
+						t.wildRules.push(ru);
+					} else {
+						ru.name = tn[0];
+
+						// Store away default rule
+						if (tn[0] == '@')
+							dr = ru;
+
+						t.rules[s] = ru;
+					}
+
+					ru.attribs = at;
+
+					if (ra)
+						ru.requiredAttribs = ra;
+
+					if (wat) {
+						// Build valid attributes regexp
+						s = '';
+						each(va, function(v) {
+							if (s)
+								s += '|';
+
+							s += '(' + wildcardToRE(v) + ')';
+						});
+						ru.validAttribsRE = new RegExp('^' + s.toLowerCase() + '$');
+						ru.wildAttribs = wat;
+					}
+				});
+			});
+
+			// Build valid elements regexp
+			s = '';
+			each(t.validElements, function(v, k) {
+				if (s)
+					s += '|';
+
+				if (k != '@')
+					s += k;
+			});
+			t.validElementsRE = new RegExp('^(' + wildcardToRE(s.toLowerCase()) + ')$');
+
+			//console.debug(t.validElementsRE.toString());
+			//console.dir(t.rules);
+			//console.dir(t.wildRules);
+		},
+
+		findRule : function(n) {
+			var t = this, rl = t.rules, i, r;
+
+			t._setup();
+
+			// Exact match
+			r = rl[n];
+			if (r)
+				return r;
+
+			// Try wildcards
+			rl = t.wildRules;
+			for (i = 0; i < rl.length; i++) {
+				if (rl[i].nameRE.test(n))
+					return rl[i];
+			}
+
+			return null;
+		},
+
+		findAttribRule : function(ru, n) {
+			var i, wa = ru.wildAttribs;
+
+			for (i = 0; i < wa.length; i++) {
+				if (wa[i].nameRE.test(n))
+					return wa[i];
+			}
+
+			return null;
+		},
+
+		serialize : function(n, o) {
+			var h, t = this;
+
+			t._setup();
+			o = o || {};
+			o.format = o.format || 'html';
+			t.processObj = o;
+			n = n.cloneNode(true);
+			t.key = '' + (parseInt(t.key) + 1);
+
+			// Pre process
+			if (!o.no_events) {
+				o.node = n;
+				t.onPreProcess.dispatch(t, o);
+			}
+
+			// Serialize HTML DOM into a string
+			t.writer.reset();
+			t._serializeNode(n, o.getInner);
+
+			// Post process
+			o.content = t.writer.getContent();
+
+			if (!o.no_events)
+				t.onPostProcess.dispatch(t, o);
+
+			t._postProcess(o);
+			o.node = null;
+
+			return tinymce.trim(o.content);
+		},
+
+		// Internal functions
+
+		_postProcess : function(o) {
+			var t = this, s = t.settings, h = o.content, sc = [], p;
+
+			if (o.format == 'html') {
+				// Protect some elements
+				p = t._protect({
+					content : h,
+					patterns : [
+						{pattern : /(<script[^>]*>)(.*?)(<\/script>)/g},
+						{pattern : /(<style[^>]*>)(.*?)(<\/style>)/g},
+						{pattern : /(<pre[^>]*>)(.*?)(<\/pre>)/g, encode : 1},
+						{pattern : /(<!--\[CDATA\[)(.*?)(\]\]-->)/g}
+					]
+				});
+
+				h = p.content;
+
+				// Entity encode
+				if (s.entity_encoding !== 'raw')
+					h = t._encode(h);
+
+				// Use BR instead of &nbsp; padded P elements inside editor and use <p>&nbsp;</p> outside editor
+/*				if (o.set)
+					h = h.replace(/<p>\s+(&nbsp;|&#160;|\u00a0|<br \/>)\s+<\/p>/g, '<p><br /></p>');
+				else
+					h = h.replace(/<p>\s+(&nbsp;|&#160;|\u00a0|<br \/>)\s+<\/p>/g, '<p>$1</p>');*/
+
+				// Since Gecko and Safari keeps whitespace in the DOM we need to
+				// remove it inorder to match other browsers. But I think Gecko and Safari is right.
+				// This process is only done when getting contents out from the editor.
+				if (!o.set) {
+					// We need to replace paragraph whitespace with an nbsp before indentation to keep the \u00a0 char
+					h = h.replace(/<p>\s+<\/p>|<p([^>]+)>\s+<\/p>/g, s.entity_encoding == 'numeric' ? '<p$1>&#160;</p>' : '<p$1>&nbsp;</p>');
+
+					if (s.remove_linebreaks) {
+						h = h.replace(/\r?\n|\r/g, ' ');
+						h = h.replace(/(<[^>]+>)\s+/g, '$1 ');
+						h = h.replace(/\s+(<\/[^>]+>)/g, ' $1');
+						h = h.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object) ([^>]+)>\s+/g, '<$1 $2>'); // Trim block start
+						h = h.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>\s+/g, '<$1>'); // Trim block start
+						h = h.replace(/\s+<\/(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>/g, '</$1>'); // Trim block end
+					}
+
+					// Simple indentation
+					if (s.apply_source_formatting && s.indent_mode == 'simple') {
+						// Add line breaks before and after block elements
+						h = h.replace(/<(\/?)(ul|hr|table|meta|link|tbody|tr|object|body|head|html|map)(|[^>]+)>\s*/g, '\n<$1$2$3>\n');
+						h = h.replace(/\s*<(p|h[1-6]|blockquote|div|title|style|pre|script|td|li|area)(|[^>]+)>/g, '\n<$1$2>');
+						h = h.replace(/<\/(p|h[1-6]|blockquote|div|title|style|pre|script|td|li)>\s*/g, '</$1>\n');
+						h = h.replace(/\n\n/g, '\n');
+					}
+				}
+
+				h = t._unprotect(h, p);
+
+				// Restore CDATA sections
+				h = h.replace(/<!--\[CDATA\[([\s\S]+)\]\]-->/g, '<![CDATA[$1]]>');
+
+				// Restore scripts
+				h = h.replace(/(type|language)=\"mce-/g, '$1="');
+
+				// Restore the \u00a0 character if raw mode is enabled
+				if (s.entity_encoding == 'raw')
+					h = h.replace(/<p>&nbsp;<\/p>|<p([^>]+)>&nbsp;<\/p>/g, '<p$1>\u00a0</p>');
+			}
+
+			o.content = h;
+		},
+
+		_serializeNode : function(n, inn) {
+			var t = this, s = t.settings, w = t.writer, hc, el, cn, i, l, a, at, no, v, nn, ru, ar, iv, closed;
+
+			if (!s.node_filter || s.node_filter(n)) {
+				switch (n.nodeType) {
+					case 1: // Element
+						if (n.hasAttribute ? n.hasAttribute('mce_bogus') : n.getAttribute('mce_bogus'))
+							return;
+
+						iv = false;
+						hc = n.hasChildNodes();
+						nn = n.getAttribute('mce_name') || n.nodeName.toLowerCase();
+
+						// Add correct prefix on IE
+						if (isIE) {
+							if (n.scopeName !== 'HTML' && n.scopeName !== 'html')
+								nn = n.scopeName + ':' + nn;
+						}
+
+						// Remove mce prefix on IE needed for the abbr element
+						if (nn.indexOf('mce:') === 0)
+							nn = nn.substring(4);
+
+						// Check if valid
+						if (!t.validElementsRE || !t.validElementsRE.test(nn) || (t.invalidElementsRE && t.invalidElementsRE.test(nn)) || inn) {
+							iv = true;
+							break;
+						}
+
+						if (isIE) {
+							// Fix IE content duplication (DOM can have multiple copies of the same node)
+							if (s.fix_content_duplication) {
+								if (n.mce_serialized == t.key)
+									return;
+
+								n.mce_serialized = t.key;
+							}
+
+							// IE sometimes adds a / infront of the node name
+							if (nn.charAt(0) == '/')
+								nn = nn.substring(1);
+						} else if (isGecko) {
+							// Ignore br elements
+							if (n.nodeName === 'BR' && n.getAttribute('type') == '_moz')
+								return;
+						}
+
+						// Check if valid child
+						if (t.childRules) {
+							if (t.parentElementsRE.test(t.elementName)) {
+								if (!t.childRules[t.elementName].test(nn)) {
+									iv = true;
+									break;
+								}
+							}
+
+							t.elementName = nn;
+						}
+
+						ru = t.findRule(nn);
+						nn = ru.name || nn;
+						closed = s.closed.test(nn);
+
+						// Skip empty nodes or empty node name in IE
+						if ((!hc && ru.noEmpty) || (isIE && !nn)) {
+							iv = true;
+							break;
+						}
+
+						// Check required
+						if (ru.requiredAttribs) {
+							a = ru.requiredAttribs;
+
+							for (i = a.length - 1; i >= 0; i--) {
+								if (this.dom.getAttrib(n, a[i]) !== '')
+									break;
+							}
+
+							// None of the required was there
+							if (i == -1) {
+								iv = true;
+								break;
+							}
+						}
+
+						w.writeStartElement(nn);
+
+						// Add ordered attributes
+						if (ru.attribs) {
+							for (i=0, at = ru.attribs, l = at.length; i<l; i++) {
+								a = at[i];
+								v = t._getAttrib(n, a);
+
+								if (v !== null)
+									w.writeAttribute(a.name, v);
+							}
+						}
+
+						// Add wild attributes
+						if (ru.validAttribsRE) {
+							at = t.dom.getAttribs(n);
+							for (i=at.length-1; i>-1; i--) {
+								no = at[i];
+
+								if (no.specified) {
+									a = no.nodeName.toLowerCase();
+
+									if (s.invalid_attrs.test(a) || !ru.validAttribsRE.test(a))
+										continue;
+
+									ar = t.findAttribRule(ru, a);
+									v = t._getAttrib(n, ar, a);
+
+									if (v !== null)
+										w.writeAttribute(a, v);
+								}
+							}
+						}
+
+						// Write text from script
+						if (nn === 'script' && tinymce.trim(n.innerHTML)) {
+							w.writeText('// '); // Padd it with a comment so it will parse on older browsers
+							w.writeCDATA(n.innerHTML.replace(/<!--|-->|<\[CDATA\[|\]\]>/g, '')); // Remove comments and cdata stuctures
+							hc = false;
+							break;
+						}
+
+						// Padd empty nodes with a &nbsp;
+						if (ru.padd) {
+							// If it has only one bogus child, padd it anyway workaround for <td><br /></td> bug
+							if (hc && (cn = n.firstChild) && cn.nodeType === 1 && n.childNodes.length === 1) {
+								if (cn.hasAttribute ? cn.hasAttribute('mce_bogus') : cn.getAttribute('mce_bogus'))
+									w.writeText('\u00a0');
+							} else if (!hc)
+								w.writeText('\u00a0'); // No children then padd it
+						}
+
+						break;
+
+					case 3: // Text
+						// Check if valid child
+						if (t.childRules && t.parentElementsRE.test(t.elementName)) {
+							if (!t.childRules[t.elementName].test(n.nodeName))
+								return;
+						}
+
+						return w.writeText(n.nodeValue);
+
+					case 4: // CDATA
+						return w.writeCDATA(n.nodeValue);
+
+					case 8: // Comment
+						return w.writeComment(n.nodeValue);
+				}
+			} else if (n.nodeType == 1)
+				hc = n.hasChildNodes();
+
+			if (hc && !closed) {
+				cn = n.firstChild;
+
+				while (cn) {
+					t._serializeNode(cn);
+					t.elementName = nn;
+					cn = cn.nextSibling;
+				}
+			}
+
+			// Write element end
+			if (!iv) {
+				if (!closed)
+					w.writeFullEndElement();
+				else
+					w.writeEndElement();
+			}
+		},
+
+		_protect : function(o) {
+			var t = this;
+
+			o.items = o.items || [];
+
+			function enc(s) {
+				return s.replace(/[\r\n\\]/g, function(c) {
+					if (c === '\n')
+						return '\\n';
+					else if (c === '\\')
+						return '\\\\';
+
+					return '\\r';
+				});
+			};
+
+			function dec(s) {
+				return s.replace(/\\[\\rn]/g, function(c) {
+					if (c === '\\n')
+						return '\n';
+					else if (c === '\\\\')
+						return '\\';
+
+					return '\r';
+				});
+			};
+
+			each(o.patterns, function(p) {
+				o.content = dec(enc(o.content).replace(p.pattern, function(x, a, b, c) {
+					b = dec(b);
+
+					if (p.encode)
+						b = t._encode(b);
+
+					o.items.push(b);
+					return a + '<!--mce:' + (o.items.length - 1) + '-->' + c;
+				}));
+			});
+
+			return o;
+		},
+
+		_unprotect : function(h, o) {
+			h = h.replace(/\<!--mce:([0-9]+)--\>/g, function(a, b) {
+				return o.items[parseInt(b)];
+			});
+
+			o.items = [];
+
+			return h;
+		},
+
+		_encode : function(h) {
+			var t = this, s = t.settings, l;
+
+			// Entity encode
+			if (s.entity_encoding !== 'raw') {
+				if (s.entity_encoding.indexOf('named') != -1) {
+					t.setEntities(s.entities);
+					l = t.entityLookup;
+
+					h = h.replace(t.entitiesRE, function(a) {
+						var v;
+
+						if (v = l[a])
+							a = '&' + v + ';';
+
+						return a;
+					});
+				}
+
+				if (s.entity_encoding.indexOf('numeric') != -1) {
+					h = h.replace(/[\u007E-\uFFFF]/g, function(a) {
+						return '&#' + a.charCodeAt(0) + ';';
+					});
+				}
+			}
+
+			return h;
+		},
+
+		_setup : function() {
+			var t = this, s = this.settings;
+
+			if (t.done)
+				return;
+
+			t.done = 1;
+
+			t.setRules(s.valid_elements);
+			t.addRules(s.extended_valid_elements);
+			t.addValidChildRules(s.valid_child_elements);
+
+			if (s.invalid_elements)
+				t.invalidElementsRE = new RegExp('^(' + wildcardToRE(s.invalid_elements.replace(/,/g, '|').toLowerCase()) + ')$');
+
+			if (s.attrib_value_filter)
+				t.attribValueFilter = s.attribValueFilter;
+		},
+
+		_getAttrib : function(n, a, na) {
+			var i, v;
+
+			na = na || a.name;
+
+			if (a.forcedVal && (v = a.forcedVal)) {
+				if (v === '{$uid}')
+					return this.dom.uniqueId();
+
+				return v;
+			}
+
+			v = this.dom.getAttrib(n, na);
+
+			// Bool attr
+			if (this.settings.bool_attrs.test(na) && v) {
+				v = ('' + v).toLowerCase();
+
+				if (v === 'false' || v === '0')
+					return null;
+
+				v = na;
+			}
+
+			switch (na) {
+				case 'rowspan':
+				case 'colspan':
+					// Whats the point? Remove usless attribute value
+					if (v == '1')
+						v = '';
+
+					break;
+			}
+
+			if (this.attribValueFilter)
+				v = this.attribValueFilter(na, v, n);
+
+			if (a.validVals) {
+				for (i = a.validVals.length - 1; i >= 0; i--) {
+					if (v == a.validVals[i])
+						break;
+				}
+
+				if (i == -1)
+					return null;
+			}
+
+			if (v === '' && typeof(a.defaultVal) != 'undefined') {
+				v = a.defaultVal;
+
+				if (v === '{$uid}')
+					return this.dom.uniqueId();
+
+				return v;
+			} else {
+				// Remove internal mceItemXX classes when content is extracted from editor
+				if (na == 'class' && this.processObj.get)
+					v = v.replace(/\s?mceItem\w+\s?/g, '');
+			}
+
+			if (v === '')
+				return null;
+
+
+			return v;
+		}
+
+		});
+})(tinymce);
+(function(tinymce) {
+	var each = tinymce.each, Event = tinymce.dom.Event;
+
+	tinymce.create('tinymce.dom.ScriptLoader', {
+		ScriptLoader : function(s) {
+			this.settings = s || {};
+			this.queue = [];
+			this.lookup = {};
+		},
+
+		isDone : function(u) {
+			return this.lookup[u] ? this.lookup[u].state == 2 : 0;
+		},
+
+		markDone : function(u) {
+			this.lookup[u] = {state : 2, url : u};
+		},
+
+		add : function(u, cb, s, pr) {
+			var t = this, lo = t.lookup, o;
+
+			if (o = lo[u]) {
+				// Is loaded fire callback
+				if (cb && o.state == 2)
+					cb.call(s || this);
+
+				return o;
+			}
+
+			o = {state : 0, url : u, func : cb, scope : s || this};
+
+			if (pr)
+				t.queue.unshift(o);
+			else
+				t.queue.push(o);
+
+			lo[u] = o;
+
+			return o;
+		},
+
+		load : function(u, cb, s) {
+			var t = this, o;
+
+			if (o = t.lookup[u]) {
+				// Is loaded fire callback
+				if (cb && o.state == 2)
+					cb.call(s || t);
+
+				return o;
+			}
+
+			function loadScript(u) {
+				if (Event.domLoaded || t.settings.strict_mode) {
+					tinymce.util.XHR.send({
+						url : tinymce._addVer(u),
+						error : t.settings.error,
+						async : false,
+						success : function(co) {
+							t.eval(co);
+						}
+					});
+				} else
+					document.write('<script type="text/javascript" src="' + tinymce._addVer(u) + '"></script>');
+			};
+
+			if (!tinymce.is(u, 'string')) {
+				each(u, function(u) {
+					loadScript(u);
+				});
+
+				if (cb)
+					cb.call(s || t);
+			} else {
+				loadScript(u);
+
+				if (cb)
+					cb.call(s || t);
+			}
+		},
+
+		loadQueue : function(cb, s) {
+			var t = this;
+
+			if (!t.queueLoading) {
+				t.queueLoading = 1;
+				t.queueCallbacks = [];
+
+				t.loadScripts(t.queue, function() {
+					t.queueLoading = 0;
+
+					if (cb)
+						cb.call(s || t);
+
+					each(t.queueCallbacks, function(o) {
+						o.func.call(o.scope);
+					});
+				});
+			} else if (cb)
+				t.queueCallbacks.push({func : cb, scope : s || t});
+		},
+
+		eval : function(co) {
+			var w = window;
+
+			// Evaluate script
+			if (!w.execScript) {
+				try {
+					eval.call(w, co);
+				} catch (ex) {
+					eval(co, w); // Firefox 3.0a8
+				}
+			} else
+				w.execScript(co); // IE
+		},
+
+		loadScripts : function(sc, cb, s) {
+			var t = this, lo = t.lookup;
+
+			function done(o) {
+				o.state = 2; // Has been loaded
+
+				// Run callback
+				if (o.func)
+					o.func.call(o.scope || t);
+			};
+
+			function allDone() {
+				var l;
+
+				// Check if all files are loaded
+				l = sc.length;
+				each(sc, function(o) {
+					o = lo[o.url];
+
+					if (o.state === 2) {// It has finished loading
+						done(o);
+						l--;
+					} else
+						load(o);
+				});
+
+				// They are all loaded
+				if (l === 0 && cb) {
+					cb.call(s || t);
+					cb = 0;
+				}
+			};
+
+			function load(o) {
+				if (o.state > 0)
+					return;
+
+				o.state = 1; // Is loading
+
+				tinymce.dom.ScriptLoader.loadScript(o.url, function() {
+					done(o);
+					allDone();
+				});
+
+				/*
+				tinymce.util.XHR.send({
+					url : o.url,
+					error : t.settings.error,
+					success : function(co) {
+						t.eval(co);
+						done(o);
+						allDone();
+					}
+				});
+				*/
+			};
+
+			each(sc, function(o) {
+				var u = o.url;
+
+				// Add to queue if needed
+				if (!lo[u]) {
+					lo[u] = o;
+					t.queue.push(o);
+				} else
+					o = lo[u];
+
+				// Is already loading or has been loaded
+				if (o.state > 0)
+					return;
+
+				if (!Event.domLoaded && !t.settings.strict_mode) {
+					var ix, ol = '';
+
+					// Add onload events
+					if (cb || o.func) {
+						o.state = 1; // Is loading
+
+						ix = tinymce.dom.ScriptLoader._addOnLoad(function() {
+							done(o);
+							allDone();
+						});
+
+						if (tinymce.isIE)
+							ol = ' onreadystatechange="';
+						else
+							ol = ' onload="';
+
+						ol += 'tinymce.dom.ScriptLoader._onLoad(this,\'' + u + '\',' + ix + ');"';
+					}
+
+					document.write('<script type="text/javascript" src="' + tinymce._addVer(u) + '"' + ol + '></script>');
+
+					if (!o.func)
+						done(o);
+				} else
+					load(o);
+			});
+
+			allDone();
+		},
+
+		// Static methods
+		'static' : {
+			_addOnLoad : function(f) {
+				var t = this;
+
+				t._funcs = t._funcs || [];
+				t._funcs.push(f);
+
+				return t._funcs.length - 1;
+			},
+
+			_onLoad : function(e, u, ix) {
+				if (!tinymce.isIE || e.readyState == 'complete')
+					this._funcs[ix].call(this);
+			},
+
+			loadScript : function(u, cb) {
+				var id = tinymce.DOM.uniqueId(), e;
+
+				function done() {
+					Event.clear(id);
+					tinymce.DOM.remove(id);
+
+					if (cb) {
+						cb.call(document, u);
+						cb = 0;
+					}
+				};
+
+				if (tinymce.isIE) {
+/*					Event.add(e, 'readystatechange', function(e) {
+						if (e.target && e.target.readyState == 'complete')
+							done();
+					});*/
+
+					tinymce.util.XHR.send({
+						url : tinymce._addVer(u),
+						async : false,
+						success : function(co) {
+							window.execScript(co);
+							done();
+						}
+					});
+				} else {
+					e = tinymce.DOM.create('script', {id : id, type : 'text/javascript', src : tinymce._addVer(u)});
+					Event.add(e, 'load', done);
+
+					// Check for head or body
+					(document.getElementsByTagName('head')[0] || document.body).appendChild(e);
+				}
+			}
+		}
+
+		});
+
+	// Global script loader
+	tinymce.ScriptLoader = new tinymce.dom.ScriptLoader();
+})(tinymce);
+(function(tinymce) {
+	// Shorten class names
+	var DOM = tinymce.DOM, is = tinymce.is;
+
+	tinymce.create('tinymce.ui.Control', {
+		Control : function(id, s) {
+			this.id = id;
+			this.settings = s = s || {};
+			this.rendered = false;
+			this.onRender = new tinymce.util.Dispatcher(this);
+			this.classPrefix = '';
+			this.scope = s.scope || this;
+			this.disabled = 0;
+			this.active = 0;
+		},
+
+		setDisabled : function(s) {
+			var e;
+
+			if (s != this.disabled) {
+				e = DOM.get(this.id);
+
+				// Add accessibility title for unavailable actions
+				if (e && this.settings.unavailable_prefix) {
+					if (s) {
+						this.prevTitle = e.title;
+						e.title = this.settings.unavailable_prefix + ": " + e.title;
+					} else
+						e.title = this.prevTitle;
+				}
+
+				this.setState('Disabled', s);
+				this.setState('Enabled', !s);
+				this.disabled = s;
+			}
+		},
+
+		isDisabled : function() {
+			return this.disabled;
+		},
+
+		setActive : function(s) {
+			if (s != this.active) {
+				this.setState('Active', s);
+				this.active = s;
+			}
+		},
+
+		isActive : function() {
+			return this.active;
+		},
+
+		setState : function(c, s) {
+			var n = DOM.get(this.id);
+
+			c = this.classPrefix + c;
+
+			if (s)
+				DOM.addClass(n, c);
+			else
+				DOM.removeClass(n, c);
+		},
+
+		isRendered : function() {
+			return this.rendered;
+		},
+
+		renderHTML : function() {
+		},
+
+		renderTo : function(n) {
+			DOM.setHTML(n, this.renderHTML());
+		},
+
+		postRender : function() {
+			var t = this, b;
+
+			// Set pending states
+			if (is(t.disabled)) {
+				b = t.disabled;
+				t.disabled = -1;
+				t.setDisabled(b);
+			}
+
+			if (is(t.active)) {
+				b = t.active;
+				t.active = -1;
+				t.setActive(b);
+			}
+		},
+
+		remove : function() {
+			DOM.remove(this.id);
+			this.destroy();
+		},
+
+		destroy : function() {
+			tinymce.dom.Event.clear(this.id);
+		}
+
+		});
+})(tinymce);tinymce.create('tinymce.ui.Container:tinymce.ui.Control', {
+	Container : function(id, s) {
+		this.parent(id, s);
+		this.controls = [];
+		this.lookup = {};
+	},
+
+	add : function(c) {
+		this.lookup[c.id] = c;
+		this.controls.push(c);
+
+		return c;
+	},
+
+	get : function(n) {
+		return this.lookup[n];
+	}
+
+	});
+
+tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
+	Separator : function(id, s) {
+		this.parent(id, s);
+		this.classPrefix = 'mceSeparator';
+	},
+
+	renderHTML : function() {
+		return tinymce.DOM.createHTML('span', {'class' : this.classPrefix});
+	}
+
+	});
+(function(tinymce) {
+	var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, walk = tinymce.walk;
+
+	tinymce.create('tinymce.ui.MenuItem:tinymce.ui.Control', {
+		MenuItem : function(id, s) {
+			this.parent(id, s);
+			this.classPrefix = 'mceMenuItem';
+		},
+
+		setSelected : function(s) {
+			this.setState('Selected', s);
+			this.selected = s;
+		},
+
+		isSelected : function() {
+			return this.selected;
+		},
+
+		postRender : function() {
+			var t = this;
+			
+			t.parent();
+
+			// Set pending state
+			if (is(t.selected))
+				t.setSelected(t.selected);
+		}
+
+		});
+})(tinymce);
+(function(tinymce) {
+	var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, walk = tinymce.walk;
+
+	tinymce.create('tinymce.ui.Menu:tinymce.ui.MenuItem', {
+		Menu : function(id, s) {
+			var t = this;
+
+			t.parent(id, s);
+			t.items = {};
+			t.collapsed = false;
+			t.menuCount = 0;
+			t.onAddItem = new tinymce.util.Dispatcher(this);
+		},
+
+		expand : function(d) {
+			var t = this;
+
+			if (d) {
+				walk(t, function(o) {
+					if (o.expand)
+						o.expand();
+				}, 'items', t);
+			}
+
+			t.collapsed = false;
+		},
+
+		collapse : function(d) {
+			var t = this;
+
+			if (d) {
+				walk(t, function(o) {
+					if (o.collapse)
+						o.collapse();
+				}, 'items', t);
+			}
+
+			t.collapsed = true;
+		},
+
+		isCollapsed : function() {
+			return this.collapsed;
+		},
+
+		add : function(o) {
+			if (!o.settings)
+				o = new tinymce.ui.MenuItem(o.id || DOM.uniqueId(), o);
+
+			this.onAddItem.dispatch(this, o);
+
+			return this.items[o.id] = o;
+		},
+
+		addSeparator : function() {
+			return this.add({separator : true});
+		},
+
+		addMenu : function(o) {
+			if (!o.collapse)
+				o = this.createMenu(o);
+
+			this.menuCount++;
+
+			return this.add(o);
+		},
+
+		hasMenus : function() {
+			return this.menuCount !== 0;
+		},
+
+		remove : function(o) {
+			delete this.items[o.id];
+		},
+
+		removeAll : function() {
+			var t = this;
+
+			walk(t, function(o) {
+				if (o.removeAll)
+					o.removeAll();
+				else
+					o.remove();
+
+				o.destroy();
+			}, 'items', t);
+
+			t.items = {};
+		},
+
+		createMenu : function(o) {
+			var m = new tinymce.ui.Menu(o.id || DOM.uniqueId(), o);
+
+			m.onAddItem.add(this.onAddItem.dispatch, this.onAddItem);
+
+			return m;
+		}
+
+		});
+})(tinymce);(function(tinymce) {
+	var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, Event = tinymce.dom.Event, Element = tinymce.dom.Element;
+
+	tinymce.create('tinymce.ui.DropMenu:tinymce.ui.Menu', {
+		DropMenu : function(id, s) {
+			s = s || {};
+			s.container = s.container || DOM.doc.body;
+			s.offset_x = s.offset_x || 0;
+			s.offset_y = s.offset_y || 0;
+			s.vp_offset_x = s.vp_offset_x || 0;
+			s.vp_offset_y = s.vp_offset_y || 0;
+
+			if (is(s.icons) && !s.icons)
+				s['class'] += ' mceNoIcons';
+
+			this.parent(id, s);
+			this.onShowMenu = new tinymce.util.Dispatcher(this);
+			this.onHideMenu = new tinymce.util.Dispatcher(this);
+			this.classPrefix = 'mceMenu';
+		},
+
+		createMenu : function(s) {
+			var t = this, cs = t.settings, m;
+
+			s.container = s.container || cs.container;
+			s.parent = t;
+			s.constrain = s.constrain || cs.constrain;
+			s['class'] = s['class'] || cs['class'];
+			s.vp_offset_x = s.vp_offset_x || cs.vp_offset_x;
+			s.vp_offset_y = s.vp_offset_y || cs.vp_offset_y;
+			m = new tinymce.ui.DropMenu(s.id || DOM.uniqueId(), s);
+
+			m.onAddItem.add(t.onAddItem.dispatch, t.onAddItem);
+
+			return m;
+		},
+
+		update : function() {
+			var t = this, s = t.settings, tb = DOM.get('menu_' + t.id + '_tbl'), co = DOM.get('menu_' + t.id + '_co'), tw, th;
+
+			tw = s.max_width ? Math.min(tb.clientWidth, s.max_width) : tb.clientWidth;
+			th = s.max_height ? Math.min(tb.clientHeight, s.max_height) : tb.clientHeight;
+
+			if (!DOM.boxModel)
+				t.element.setStyles({width : tw + 2, height : th + 2});
+			else
+				t.element.setStyles({width : tw, height : th});
+
+			if (s.max_width)
+				DOM.setStyle(co, 'width', tw);
+
+			if (s.max_height) {
+				DOM.setStyle(co, 'height', th);
+
+				if (tb.clientHeight < s.max_height)
+					DOM.setStyle(co, 'overflow', 'hidden');
+			}
+		},
+
+		showMenu : function(x, y, px) {
+			var t = this, s = t.settings, co, vp = DOM.getViewPort(), w, h, mx, my, ot = 2, dm, tb, cp = t.classPrefix;
+
+			t.collapse(1);
+
+			if (t.isMenuVisible)
+				return;
+
+			if (!t.rendered) {
+				co = DOM.add(t.settings.container, t.renderNode());
+
+				each(t.items, function(o) {
+					o.postRender();
+				});
+
+				t.element = new Element('menu_' + t.id, {blocker : 1, container : s.container});
+			} else
+				co = DOM.get('menu_' + t.id);
+
+			// Move layer out of sight unless it's Opera since it scrolls to top of page due to an bug
+			if (!tinymce.isOpera)
+				DOM.setStyles(co, {left : -0xFFFF , top : -0xFFFF});
+
+			DOM.show(co);
+			t.update();
+
+			x += s.offset_x || 0;
+			y += s.offset_y || 0;
+			vp.w -= 4;
+			vp.h -= 4;
+
+			// Move inside viewport if not submenu
+			if (s.constrain) {
+				w = co.clientWidth - ot;
+				h = co.clientHeight - ot;
+				mx = vp.x + vp.w;
+				my = vp.y + vp.h;
+
+				if ((x + s.vp_offset_x + w) > mx)
+					x = px ? px - w : Math.max(0, (mx - s.vp_offset_x) - w);
+
+				if ((y + s.vp_offset_y + h) > my)
+					y = Math.max(0, (my - s.vp_offset_y) - h);
+			}
+
+			DOM.setStyles(co, {left : x , top : y});
+			t.element.update();
+
+			t.isMenuVisible = 1;
+			t.mouseClickFunc = Event.add(co, 'click', function(e) {
+				var m;
+
+				e = e.target;
+
+				if (e && (e = DOM.getParent(e, 'tr')) && !DOM.hasClass(e, cp + 'ItemSub')) {
+					m = t.items[e.id];
+
+					if (m.isDisabled())
+						return;
+
+					dm = t;
+
+					while (dm) {
+						if (dm.hideMenu)
+							dm.hideMenu();
+
+						dm = dm.settings.parent;
+					}
+
+					if (m.settings.onclick)
+						m.settings.onclick(e);
+
+					return Event.cancel(e); // Cancel to fix onbeforeunload problem
+				}
+			});
+
+			if (t.hasMenus()) {
+				t.mouseOverFunc = Event.add(co, 'mouseover', function(e) {
+					var m, r, mi;
+
+					e = e.target;
+					if (e && (e = DOM.getParent(e, 'tr'))) {
+						m = t.items[e.id];
+
+						if (t.lastMenu)
+							t.lastMenu.collapse(1);
+
+						if (m.isDisabled())
+							return;
+
+						if (e && DOM.hasClass(e, cp + 'ItemSub')) {
+							//p = DOM.getPos(s.container);
+							r = DOM.getRect(e);
+							m.showMenu((r.x + r.w - ot), r.y - ot, r.x);
+							t.lastMenu = m;
+							DOM.addClass(DOM.get(m.id).firstChild, cp + 'ItemActive');
+						}
+					}
+				});
+			}
+
+			t.onShowMenu.dispatch(t);
+
+			if (s.keyboard_focus) {
+				Event.add(co, 'keydown', t._keyHandler, t);
+				DOM.select('a', 'menu_' + t.id)[0].focus(); // Select first link
+				t._focusIdx = 0;
+			}
+		},
+
+		hideMenu : function(c) {
+			var t = this, co = DOM.get('menu_' + t.id), e;
+
+			if (!t.isMenuVisible)
+				return;
+
+			Event.remove(co, 'mouseover', t.mouseOverFunc);
+			Event.remove(co, 'click', t.mouseClickFunc);
+			Event.remove(co, 'keydown', t._keyHandler);
+			DOM.hide(co);
+			t.isMenuVisible = 0;
+
+			if (!c)
+				t.collapse(1);
+
+			if (t.element)
+				t.element.hide();
+
+			if (e = DOM.get(t.id))
+				DOM.removeClass(e.firstChild, t.classPrefix + 'ItemActive');
+
+			t.onHideMenu.dispatch(t);
+		},
+
+		add : function(o) {
+			var t = this, co;
+
+			o = t.parent(o);
+
+			if (t.isRendered && (co = DOM.get('menu_' + t.id)))
+				t._add(DOM.select('tbody', co)[0], o);
+
+			return o;
+		},
+
+		collapse : function(d) {
+			this.parent(d);
+			this.hideMenu(1);
+		},
+
+		remove : function(o) {
+			DOM.remove(o.id);
+			this.destroy();
+
+			return this.parent(o);
+		},
+
+		destroy : function() {
+			var t = this, co = DOM.get('menu_' + t.id);
+
+			Event.remove(co, 'mouseover', t.mouseOverFunc);
+			Event.remove(co, 'click', t.mouseClickFunc);
+
+			if (t.element)
+				t.element.remove();
+
+			DOM.remove(co);
+		},
+
+		renderNode : function() {
+			var t = this, s = t.settings, n, tb, co, w;
+
+			w = DOM.create('div', {id : 'menu_' + t.id, 'class' : s['class'], 'style' : 'position:absolute;left:0;top:0;z-index:200000'});
+			co = DOM.add(w, 'div', {id : 'menu_' + t.id + '_co', 'class' : t.classPrefix + (s['class'] ? ' ' + s['class'] : '')});
+			t.element = new Element('menu_' + t.id, {blocker : 1, container : s.container});
+
+			if (s.menu_line)
+				DOM.add(co, 'span', {'class' : t.classPrefix + 'Line'});
+
+//			n = DOM.add(co, 'div', {id : 'menu_' + t.id + '_co', 'class' : 'mceMenuContainer'});
+			n = DOM.add(co, 'table', {id : 'menu_' + t.id + '_tbl', border : 0, cellPadding : 0, cellSpacing : 0});
+			tb = DOM.add(n, 'tbody');
+
+			each(t.items, function(o) {
+				t._add(tb, o);
+			});
+
+			t.rendered = true;
+
+			return w;
+		},
+
+		// Internal functions
+
+		_keyHandler : function(e) {
+			var t = this, kc = e.keyCode;
+
+			function focus(d) {
+				var i = t._focusIdx + d, e = DOM.select('a', 'menu_' + t.id)[i];
+
+				if (e) {
+					t._focusIdx = i;
+					e.focus();
+				}
+			};
+
+			switch (kc) {
+				case 38:
+					focus(-1); // Select first link
+					return;
+
+				case 40:
+					focus(1);
+					return;
+
+				case 13:
+					return;
+
+				case 27:
+					return this.hideMenu();
+			}
+		},
+
+		_add : function(tb, o) {
+			var n, s = o.settings, a, ro, it, cp = this.classPrefix, ic;
+
+			if (s.separator) {
+				ro = DOM.add(tb, 'tr', {id : o.id, 'class' : cp + 'ItemSeparator'});
+				DOM.add(ro, 'td', {'class' : cp + 'ItemSeparator'});
+
+				if (n = ro.previousSibling)
+					DOM.addClass(n, 'mceLast');
+
+				return;
+			}
+
+			n = ro = DOM.add(tb, 'tr', {id : o.id, 'class' : cp + 'Item ' + cp + 'ItemEnabled'});
+			n = it = DOM.add(n, 'td');
+			n = a = DOM.add(n, 'a', {href : 'javascript:;', onclick : "return false;", onmousedown : 'return false;'});
+
+			DOM.addClass(it, s['class']);
+//			n = DOM.add(n, 'span', {'class' : 'item'});
+
+			ic = DOM.add(n, 'span', {'class' : 'mceIcon' + (s.icon ? ' mce_' + s.icon : '')});
+
+			if (s.icon_src)
+				DOM.add(ic, 'img', {src : s.icon_src});
+
+			n = DOM.add(n, s.element || 'span', {'class' : 'mceText', title : o.settings.title}, o.settings.title);
+
+			if (o.settings.style)
+				DOM.setAttrib(n, 'style', o.settings.style);
+
+			if (tb.childNodes.length == 1)
+				DOM.addClass(ro, 'mceFirst');
+
+			if ((n = ro.previousSibling) && DOM.hasClass(n, cp + 'ItemSeparator'))
+				DOM.addClass(ro, 'mceFirst');
+
+			if (o.collapse)
+				DOM.addClass(ro, cp + 'ItemSub');
+
+			if (n = ro.previousSibling)
+				DOM.removeClass(n, 'mceLast');
+
+			DOM.addClass(ro, 'mceLast');
+		}
+
+		});
+})(tinymce);(function(tinymce) {
+	var DOM = tinymce.DOM;
+
+	tinymce.create('tinymce.ui.Button:tinymce.ui.Control', {
+		Button : function(id, s) {
+			this.parent(id, s);
+			this.classPrefix = 'mceButton';
+		},
+
+		renderHTML : function() {
+			var cp = this.classPrefix, s = this.settings, h, l;
+
+			l = DOM.encode(s.label || '');
+			h = '<a id="' + this.id + '" href="javascript:;" class="' + cp + ' ' + cp + 'Enabled ' + s['class'] + (l ? ' ' + cp + 'Labeled' : '') +'" onmousedown="return false;" onclick="return false;" title="' + DOM.encode(s.title) + '">';
+
+			if (s.image)
+				h += '<img class="mceIcon" src="' + s.image + '" />' + l + '</a>';
+			else
+				h += '<span class="mceIcon ' + s['class'] + '"></span>' + (l ? '<span class="' + cp + 'Label">' + l + '</span>' : '') + '</a>';
+
+			return h;
+		},
+
+		postRender : function() {
+			var t = this, s = t.settings;
+
+			tinymce.dom.Event.add(t.id, 'click', function(e) {
+				if (!t.isDisabled())
+					return s.onclick.call(s.scope, e);
+			});
+		}
+
+		});
+})(tinymce);
+(function(tinymce) {
+	var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher;
+
+	tinymce.create('tinymce.ui.ListBox:tinymce.ui.Control', {
+		ListBox : function(id, s) {
+			var t = this;
+
+			t.parent(id, s);
+			t.items = [];
+			t.onChange = new Dispatcher(t);
+			t.onPostRender = new Dispatcher(t);
+			t.onAdd = new Dispatcher(t);
+			t.onRenderMenu = new tinymce.util.Dispatcher(this);
+			t.classPrefix = 'mceListBox';
+		},
+
+		select : function(va) {
+			var t = this, fv, f;
+
+			if (va == undefined)
+				return t.selectByIndex(-1);
+
+			// Is string or number make function selector
+			if (va && va.call)
+				f = va;
+			else {
+				f = function(v) {
+					return v == va;
+				};
+			}
+
+			// Do we need to do something?
+			if (va != t.selectedValue) {
+				// Find item
+				each(t.items, function(o, i) {
+					if (f(o.value)) {
+						fv = 1;
+						t.selectByIndex(i);
+						return false;
+					}
+				});
+
+				if (!fv)
+					t.selectByIndex(-1);
+			}
+		},
+
+		selectByIndex : function(idx) {
+			var t = this, e, o;
+
+			if (idx != t.selectedIndex) {
+				e = DOM.get(t.id + '_text');
+				o = t.items[idx];
+
+				if (o) {
+					t.selectedValue = o.value;
+					t.selectedIndex = idx;
+					DOM.setHTML(e, DOM.encode(o.title));
+					DOM.removeClass(e, 'mceTitle');
+				} else {
+					DOM.setHTML(e, DOM.encode(t.settings.title));
+					DOM.addClass(e, 'mceTitle');
+					t.selectedValue = t.selectedIndex = null;
+				}
+
+				e = 0;
+			}
+		},
+
+		add : function(n, v, o) {
+			var t = this;
+
+			o = o || {};
+			o = tinymce.extend(o, {
+				title : n,
+				value : v
+			});
+
+			t.items.push(o);
+			t.onAdd.dispatch(t, o);
+		},
+
+		getLength : function() {
+			return this.items.length;
+		},
+
+		renderHTML : function() {
+			var h = '', t = this, s = t.settings, cp = t.classPrefix;
+
+			h = '<table id="' + t.id + '" cellpadding="0" cellspacing="0" class="' + cp + ' ' + cp + 'Enabled' + (s['class'] ? (' ' + s['class']) : '') + '"><tbody><tr>';
+			h += '<td>' + DOM.createHTML('a', {id : t.id + '_text', href : 'javascript:;', 'class' : 'mceText', onclick : "return false;", onmousedown : 'return false;'}, DOM.encode(t.settings.title)) + '</td>';
+			h += '<td>' + DOM.createHTML('a', {id : t.id + '_open', tabindex : -1, href : 'javascript:;', 'class' : 'mceOpen', onclick : "return false;", onmousedown : 'return false;'}, '<span></span>') + '</td>';
+			h += '</tr></tbody></table>';
+
+			return h;
+		},
+
+		showMenu : function() {
+			var t = this, p1, p2, e = DOM.get(this.id), m;
+
+			if (t.isDisabled() || t.items.length == 0)
+				return;
+
+			if (t.menu && t.menu.isMenuVisible)
+				return t.hideMenu();
+
+			if (!t.isMenuRendered) {
+				t.renderMenu();
+				t.isMenuRendered = true;
+			}
+
+			p1 = DOM.getPos(this.settings.menu_container);
+			p2 = DOM.getPos(e);
+
+			m = t.menu;
+			m.settings.offset_x = p2.x;
+			m.settings.offset_y = p2.y;
+			m.settings.keyboard_focus = !tinymce.isOpera; // Opera is buggy when it comes to auto focus
+
+			// Select in menu
+			if (t.oldID)
+				m.items[t.oldID].setSelected(0);
+
+			each(t.items, function(o) {
+				if (o.value === t.selectedValue) {
+					m.items[o.id].setSelected(1);
+					t.oldID = o.id;
+				}
+			});
+
+			m.showMenu(0, e.clientHeight);
+
+			Event.add(DOM.doc, 'mousedown', t.hideMenu, t);
+			DOM.addClass(t.id, t.classPrefix + 'Selected');
+
+			//DOM.get(t.id + '_text').focus();
+		},
+
+		hideMenu : function(e) {
+			var t = this;
+
+			// Prevent double toogles by canceling the mouse click event to the button
+			if (e && e.type == "mousedown" && (e.target.id == t.id + '_text' || e.target.id == t.id + '_open'))
+				return;
+
+			if (!e || !DOM.getParent(e.target, '.mceMenu')) {
+				DOM.removeClass(t.id, t.classPrefix + 'Selected');
+				Event.remove(DOM.doc, 'mousedown', t.hideMenu, t);
+
+				if (t.menu)
+					t.menu.hideMenu();
+			}
+		},
+
+		renderMenu : function() {
+			var t = this, m;
+
+			m = t.settings.control_manager.createDropMenu(t.id + '_menu', {
+				menu_line : 1,
+				'class' : t.classPrefix + 'Menu mceNoIcons',
+				max_width : 150,
+				max_height : 150
+			});
+
+			m.onHideMenu.add(t.hideMenu, t);
+
+			m.add({
+				title : t.settings.title,
+				'class' : 'mceMenuItemTitle',
+				onclick : function() {
+					if (t.settings.onselect('') !== false)
+						t.select(''); // Must be runned after
+				}
+			});
+
+			each(t.items, function(o) {
+				o.id = DOM.uniqueId();
+				o.onclick = function() {
+					if (t.settings.onselect(o.value) !== false)
+						t.select(o.value); // Must be runned after
+				};
+
+				m.add(o);
+			});
+
+			t.onRenderMenu.dispatch(t, m);
+			t.menu = m;
+		},
+
+		postRender : function() {
+			var t = this, cp = t.classPrefix;
+
+			Event.add(t.id, 'click', t.showMenu, t);
+			Event.add(t.id + '_text', 'focus', function(e) {
+				if (!t._focused) {
+					t.keyDownHandler = Event.add(t.id + '_text', 'keydown', function(e) {
+						var idx = -1, v, kc = e.keyCode;
+
+						// Find current index
+						each(t.items, function(v, i) {
+							if (t.selectedValue == v.value)
+								idx = i;
+						});
+
+						// Move up/down
+						if (kc == 38)
+							v = t.items[idx - 1];
+						else if (kc == 40)
+							v = t.items[idx + 1];
+						else if (kc == 13) {
+							// Fake select on enter
+							v = t.selectedValue;
+							t.selectedValue = null; // Needs to be null to fake change
+							t.settings.onselect(v);
+							return Event.cancel(e);
+						}
+
+						if (v) {
+							t.hideMenu();
+							t.select(v.value);
+						}
+					});
+				}
+
+				t._focused = 1;
+			});
+			Event.add(t.id + '_text', 'blur', function() {Event.remove(t.id + '_text', 'keydown', t.keyDownHandler); t._focused = 0;});
+
+			// Old IE doesn't have hover on all elements
+			if (tinymce.isIE6 || !DOM.boxModel) {
+				Event.add(t.id, 'mouseover', function() {
+					if (!DOM.hasClass(t.id, cp + 'Disabled'))
+						DOM.addClass(t.id, cp + 'Hover');
+				});
+
+				Event.add(t.id, 'mouseout', function() {
+					if (!DOM.hasClass(t.id, cp + 'Disabled'))
+						DOM.removeClass(t.id, cp + 'Hover');
+				});
+			}
+
+			t.onPostRender.dispatch(t, DOM.get(t.id));
+		},
+
+		destroy : function() {
+			this.parent();
+
+			Event.clear(this.id + '_text');
+		}
+
+		});
+})(tinymce);(function(tinymce) {
+	var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher;
+
+	tinymce.create('tinymce.ui.NativeListBox:tinymce.ui.ListBox', {
+		NativeListBox : function(id, s) {
+			this.parent(id, s);
+			this.classPrefix = 'mceNativeListBox';
+		},
+
+		setDisabled : function(s) {
+			DOM.get(this.id).disabled = s;
+		},
+
+		isDisabled : function() {
+			return DOM.get(this.id).disabled;
+		},
+
+		select : function(va) {
+			var t = this, fv, f;
+
+			if (va == undefined)
+				return t.selectByIndex(-1);
+
+			// Is string or number make function selector
+			if (va && va.call)
+				f = va;
+			else {
+				f = function(v) {
+					return v == va;
+				};
+			}
+
+			// Do we need to do something?
+			if (va != t.selectedValue) {
+				// Find item
+				each(t.items, function(o, i) {
+					if (f(o.value)) {
+						fv = 1;
+						t.selectByIndex(i);
+						return false;
+					}
+				});
+
+				if (!fv)
+					t.selectByIndex(-1);
+			}
+		},
+
+		selectByIndex : function(idx) {
+			DOM.get(this.id).selectedIndex = idx + 1;
+			this.selectedValue = this.items[idx] ? this.items[idx].value : null;
+		},
+
+		add : function(n, v, a) {
+			var o, t = this;
+
+			a = a || {};
+			a.value = v;
+
+			if (t.isRendered())
+				DOM.add(DOM.get(this.id), 'option', a, n);
+
+			o = {
+				title : n,
+				value : v,
+				attribs : a
+			};
+
+			t.items.push(o);
+			t.onAdd.dispatch(t, o);
+		},
+
+		getLength : function() {
+			return DOM.get(this.id).options.length - 1;
+		},
+
+		renderHTML : function() {
+			var h, t = this;
+
+			h = DOM.createHTML('option', {value : ''}, '-- ' + t.settings.title + ' --');
+
+			each(t.items, function(it) {
+				h += DOM.createHTML('option', {value : it.value}, it.title);
+			});
+
+			h = DOM.createHTML('select', {id : t.id, 'class' : 'mceNativeListBox'}, h);
+
+			return h;
+		},
+
+		postRender : function() {
+			var t = this, ch;
+
+			t.rendered = true;
+
+			function onChange(e) {
+				var v = t.items[e.target.selectedIndex - 1];
+
+				if (v && (v = v.value)) {
+					t.onChange.dispatch(t, v);
+
+					if (t.settings.onselect)
+						t.settings.onselect(v);
+				}
+			};
+
+			Event.add(t.id, 'change', onChange);
+
+			// Accessibility keyhandler
+			Event.add(t.id, 'keydown', function(e) {
+				var bf;
+
+				Event.remove(t.id, 'change', ch);
+
+				bf = Event.add(t.id, 'blur', function() {
+					Event.add(t.id, 'change', onChange);
+					Event.remove(t.id, 'blur', bf);
+				});
+
+				if (e.keyCode == 13 || e.keyCode == 32) {
+					onChange(e);
+					return Event.cancel(e);
+				}
+			});
+
+			t.onPostRender.dispatch(t, DOM.get(t.id));
+		}
+
+		});
+})(tinymce);(function(tinymce) {
+	var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each;
+
+	tinymce.create('tinymce.ui.MenuButton:tinymce.ui.Button', {
+		MenuButton : function(id, s) {
+			this.parent(id, s);
+			this.onRenderMenu = new tinymce.util.Dispatcher(this);
+			s.menu_container = s.menu_container || DOM.doc.body;
+		},
+
+		showMenu : function() {
+			var t = this, p1, p2, e = DOM.get(t.id), m;
+
+			if (t.isDisabled())
+				return;
+
+			if (!t.isMenuRendered) {
+				t.renderMenu();
+				t.isMenuRendered = true;
+			}
+
+			if (t.isMenuVisible)
+				return t.hideMenu();
+
+			p1 = DOM.getPos(t.settings.menu_container);
+			p2 = DOM.getPos(e);
+
+			m = t.menu;
+			m.settings.offset_x = p2.x;
+			m.settings.offset_y = p2.y;
+			m.settings.vp_offset_x = p2.x;
+			m.settings.vp_offset_y = p2.y;
+			m.settings.keyboard_focus = t._focused;
+			m.showMenu(0, e.clientHeight);
+
+			Event.add(DOM.doc, 'mousedown', t.hideMenu, t);
+			t.setState('Selected', 1);
+
+			t.isMenuVisible = 1;
+		},
+
+		renderMenu : function() {
+			var t = this, m;
+
+			m = t.settings.control_manager.createDropMenu(t.id + '_menu', {
+				menu_line : 1,
+				'class' : this.classPrefix + 'Menu',
+				icons : t.settings.icons
+			});
+
+			m.onHideMenu.add(t.hideMenu, t);
+
+			t.onRenderMenu.dispatch(t, m);
+			t.menu = m;
+		},
+
+		hideMenu : function(e) {
+			var t = this;
+
+			// Prevent double toogles by canceling the mouse click event to the button
+			if (e && e.type == "mousedown" && DOM.getParent(e.target, function(e) {return e.id === t.id || e.id === t.id + '_open';}))
+				return;
+
+			if (!e || !DOM.getParent(e.target, '.mceMenu')) {
+				t.setState('Selected', 0);
+				Event.remove(DOM.doc, 'mousedown', t.hideMenu, t);
+				if (t.menu)
+					t.menu.hideMenu();
+			}
+
+			t.isMenuVisible = 0;
+		},
+
+		postRender : function() {
+			var t = this, s = t.settings;
+
+			Event.add(t.id, 'click', function() {
+				if (!t.isDisabled()) {
+					if (s.onclick)
+						s.onclick(t.value);
+
+					t.showMenu();
+				}
+			});
+		}
+
+		});
+})(tinymce);
+(function(tinymce) {
+	var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each;
+
+	tinymce.create('tinymce.ui.SplitButton:tinymce.ui.MenuButton', {
+		SplitButton : function(id, s) {
+			this.parent(id, s);
+			this.classPrefix = 'mceSplitButton';
+		},
+
+		renderHTML : function() {
+			var h, t = this, s = t.settings, h1;
+
+			h = '<tbody><tr>';
+
+			if (s.image)
+				h1 = DOM.createHTML('img ', {src : s.image, 'class' : 'mceAction ' + s['class']});
+			else
+				h1 = DOM.createHTML('span', {'class' : 'mceAction ' + s['class']}, '');
+
+			h += '<td>' + DOM.createHTML('a', {id : t.id + '_action', href : 'javascript:;', 'class' : 'mceAction ' + s['class'], onclick : "return false;", onmousedown : 'return false;', title : s.title}, h1) + '</td>';
+	
+			h1 = DOM.createHTML('span', {'class' : 'mceOpen ' + s['class']});
+			h += '<td>' + DOM.createHTML('a', {id : t.id + '_open', href : 'javascript:;', 'class' : 'mceOpen ' + s['class'], onclick : "return false;", onmousedown : 'return false;', title : s.title}, h1) + '</td>';
+
+			h += '</tr></tbody>';
+
+			return DOM.createHTML('table', {id : t.id, 'class' : 'mceSplitButton mceSplitButtonEnabled ' + s['class'], cellpadding : '0', cellspacing : '0', onmousedown : 'return false;', title : s.title}, h);
+		},
+
+		postRender : function() {
+			var t = this, s = t.settings;
+
+			if (s.onclick) {
+				Event.add(t.id + '_action', 'click', function() {
+					if (!t.isDisabled())
+						s.onclick(t.value);
+				});
+			}
+
+			Event.add(t.id + '_open', 'click', t.showMenu, t);
+			Event.add(t.id + '_open', 'focus', function() {t._focused = 1;});
+			Event.add(t.id + '_open', 'blur', function() {t._focused = 0;});
+
+			// Old IE doesn't have hover on all elements
+			if (tinymce.isIE6 || !DOM.boxModel) {
+				Event.add(t.id, 'mouseover', function() {
+					if (!DOM.hasClass(t.id, 'mceSplitButtonDisabled'))
+						DOM.addClass(t.id, 'mceSplitButtonHover');
+				});
+
+				Event.add(t.id, 'mouseout', function() {
+					if (!DOM.hasClass(t.id, 'mceSplitButtonDisabled'))
+						DOM.removeClass(t.id, 'mceSplitButtonHover');
+				});
+			}
+		},
+
+		destroy : function() {
+			this.parent();
+
+			Event.clear(this.id + '_action');
+			Event.clear(this.id + '_open');
+		}
+
+		});
+})(tinymce);
+(function(tinymce) {
+	var DOM = tinymce.DOM, Event = tinymce.dom.Event, is = tinymce.is, each = tinymce.each;
+
+	tinymce.create('tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton', {
+		ColorSplitButton : function(id, s) {
+			var t = this;
+
+			t.parent(id, s);
+
+			t.settings = s = tinymce.extend({
+				colors : '000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF',
+				grid_width : 8,
+				default_color : '#888888'
+			}, t.settings);
+
+			t.onShowMenu = new tinymce.util.Dispatcher(t);
+			t.onHideMenu = new tinymce.util.Dispatcher(t);
+
+			t.value = s.default_color;
+		},
+
+		showMenu : function() {
+			var t = this, r, p, e, p2;
+
+			if (t.isDisabled())
+				return;
+
+			if (!t.isMenuRendered) {
+				t.renderMenu();
+				t.isMenuRendered = true;
+			}
+
+			if (t.isMenuVisible)
+				return t.hideMenu();
+
+			e = DOM.get(t.id);
+			DOM.show(t.id + '_menu');
+			DOM.addClass(e, 'mceSplitButtonSelected');
+			p2 = DOM.getPos(e);
+			DOM.setStyles(t.id + '_menu', {
+				left : p2.x,
+				top : p2.y + e.clientHeight,
+				zIndex : 200000
+			});
+			e = 0;
+
+			Event.add(DOM.doc, 'mousedown', t.hideMenu, t);
+			t.onShowMenu.dispatch(t);
+
+			if (t._focused) {
+				t._keyHandler = Event.add(t.id + '_menu', 'keydown', function(e) {
+					if (e.keyCode == 27)
+						t.hideMenu();
+				});
+
+				DOM.select('a', t.id + '_menu')[0].focus(); // Select first link
+			}
+
+			t.isMenuVisible = 1;
+		},
+
+		hideMenu : function(e) {
+			var t = this;
+
+			// Prevent double toogles by canceling the mouse click event to the button
+			if (e && e.type == "mousedown" && DOM.getParent(e.target, function(e) {return e.id === t.id + '_open';}))
+				return;
+
+			if (!e || !DOM.getParent(e.target, '.mceSplitButtonMenu')) {
+				DOM.removeClass(t.id, 'mceSplitButtonSelected');
+				Event.remove(DOM.doc, 'mousedown', t.hideMenu, t);
+				Event.remove(t.id + '_menu', 'keydown', t._keyHandler);
+				DOM.hide(t.id + '_menu');
+			}
+
+			t.onHideMenu.dispatch(t);
+
+			t.isMenuVisible = 0;
+		},
+
+		renderMenu : function() {
+			var t = this, m, i = 0, s = t.settings, n, tb, tr, w;
+
+			w = DOM.add(s.menu_container, 'div', {id : t.id + '_menu', 'class' : s['menu_class'] + ' ' + s['class'], style : 'position:absolute;left:0;top:-1000px;'});
+			m = DOM.add(w, 'div', {'class' : s['class'] + ' mceSplitButtonMenu'});
+			DOM.add(m, 'span', {'class' : 'mceMenuLine'});
+
+			n = DOM.add(m, 'table', {'class' : 'mceColorSplitMenu'});
+			tb = DOM.add(n, 'tbody');
+
+			// Generate color grid
+			i = 0;
+			each(is(s.colors, 'array') ? s.colors : s.colors.split(','), function(c) {
+				c = c.replace(/^#/, '');
+
+				if (!i--) {
+					tr = DOM.add(tb, 'tr');
+					i = s.grid_width - 1;
+				}
+
+				n = DOM.add(tr, 'td');
+
+				n = DOM.add(n, 'a', {
+					href : 'javascript:;',
+					style : {
+						backgroundColor : '#' + c
+					},
+					mce_color : '#' + c
+				});
+			});
+
+			if (s.more_colors_func) {
+				n = DOM.add(tb, 'tr');
+				n = DOM.add(n, 'td', {colspan : s.grid_width, 'class' : 'mceMoreColors'});
+				n = DOM.add(n, 'a', {id : t.id + '_more', href : 'javascript:;', onclick : 'return false;', 'class' : 'mceMoreColors'}, s.more_colors_title);
+
+				Event.add(n, 'click', function(e) {
+					s.more_colors_func.call(s.more_colors_scope || this);
+					return Event.cancel(e); // Cancel to fix onbeforeunload problem
+				});
+			}
+
+			DOM.addClass(m, 'mceColorSplitMenu');
+
+			Event.add(t.id + '_menu', 'click', function(e) {
+				var c;
+
+				e = e.target;
+
+				if (e.nodeName == 'A' && (c = e.getAttribute('mce_color')))
+					t.setColor(c);
+
+				return Event.cancel(e); // Prevent IE auto save warning
+			});
+
+			return w;
+		},
+
+		setColor : function(c) {
+			var t = this;
+
+			DOM.setStyle(t.id + '_preview', 'backgroundColor', c);
+
+			t.value = c;
+			t.hideMenu();
+			t.settings.onselect(c);
+		},
+
+		postRender : function() {
+			var t = this, id = t.id;
+
+			t.parent();
+			DOM.add(id + '_action', 'div', {id : id + '_preview', 'class' : 'mceColorPreview'});
+			DOM.setStyle(t.id + '_preview', 'backgroundColor', t.value);
+		},
+
+		destroy : function() {
+			this.parent();
+
+			Event.clear(this.id + '_menu');
+			Event.clear(this.id + '_more');
+			DOM.remove(this.id + '_menu');
+		}
+
+		});
+})(tinymce);
+tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
+	renderHTML : function() {
+		var t = this, h = '', c, co, dom = tinymce.DOM, s = t.settings, i, pr, nx, cl;
+
+		cl = t.controls;
+		for (i=0; i<cl.length; i++) {
+			// Get current control, prev control, next control and if the control is a list box or not
+			co = cl[i];
+			pr = cl[i - 1];
+			nx = cl[i + 1];
+
+			// Add toolbar start
+			if (i === 0) {
+				c = 'mceToolbarStart';
+
+				if (co.Button)
+					c += ' mceToolbarStartButton';
+				else if (co.SplitButton)
+					c += ' mceToolbarStartSplitButton';
+				else if (co.ListBox)
+					c += ' mceToolbarStartListBox';
+
+				h += dom.createHTML('td', {'class' : c}, dom.createHTML('span', null, '<!-- IE -->'));
+			}
+
+			// Add toolbar end before list box and after the previous button
+			// This is to fix the o2k7 editor skins
+			if (pr && co.ListBox) {
+				if (pr.Button || pr.SplitButton)
+					h += dom.createHTML('td', {'class' : 'mceToolbarEnd'}, dom.createHTML('span', null, '<!-- IE -->'));
+			}
+
+			// Render control HTML
+
+			// IE 8 quick fix, needed to propertly generate a hit area for anchors
+			if (dom.stdMode)
+				h += '<td style="position: relative">' + co.renderHTML() + '</td>';
+			else
+				h += '<td>' + co.renderHTML() + '</td>';
+
+			// Add toolbar start after list box and before the next button
+			// This is to fix the o2k7 editor skins
+			if (nx && co.ListBox) {
+				if (nx.Button || nx.SplitButton)
+					h += dom.createHTML('td', {'class' : 'mceToolbarStart'}, dom.createHTML('span', null, '<!-- IE -->'));
+			}
+		}
+
+		c = 'mceToolbarEnd';
+
+		if (co.Button)
+			c += ' mceToolbarEndButton';
+		else if (co.SplitButton)
+			c += ' mceToolbarEndSplitButton';
+		else if (co.ListBox)
+			c += ' mceToolbarEndListBox';
+
+		h += dom.createHTML('td', {'class' : c}, dom.createHTML('span', null, '<!-- IE -->'));
+
+		return dom.createHTML('table', {id : t.id, 'class' : 'mceToolbar' + (s['class'] ? ' ' + s['class'] : ''), cellpadding : '0', cellspacing : '0', align : t.settings.align || ''}, '<tbody><tr>' + h + '</tr></tbody>');
+	}
+
+	});
+(function(tinymce) {
+	var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each;
+
+	tinymce.create('tinymce.AddOnManager', {
+		items : [],
+		urls : {},
+		lookup : {},
+		onAdd : new Dispatcher(this),
+
+		get : function(n) {
+			return this.lookup[n];
+		},
+
+		requireLangPack : function(n) {
+			var u, s = tinymce.EditorManager.settings;
+
+			if (s && s.language) {
+				u = this.urls[n] + '/langs/' + s.language + '.js';
+
+				if (!tinymce.dom.Event.domLoaded && !s.strict_mode)
+					tinymce.ScriptLoader.load(u);
+				else
+					tinymce.ScriptLoader.add(u);
+			}
+		},
+
+		add : function(id, o) {
+			this.items.push(o);
+			this.lookup[id] = o;
+			this.onAdd.dispatch(this, id, o);
+
+			return o;
+		},
+
+		load : function(n, u, cb, s) {
+			var t = this;
+
+			if (t.urls[n])
+				return;
+
+			if (u.indexOf('/') != 0 && u.indexOf('://') == -1)
+				u = tinymce.baseURL + '/' +  u;
+
+			t.urls[n] = u.substring(0, u.lastIndexOf('/'));
+			tinymce.ScriptLoader.add(u, cb, s);
+		}
+
+		});
+
+	// Create plugin and theme managers
+	tinymce.PluginManager = new tinymce.AddOnManager();
+	tinymce.ThemeManager = new tinymce.AddOnManager();
+}(tinymce));(function(tinymce) {
+	// Shorten names
+	var each = tinymce.each, extend = tinymce.extend, DOM = tinymce.DOM, Event = tinymce.dom.Event, ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager, explode = tinymce.explode;
+
+	tinymce.create('static tinymce.EditorManager', {
+		editors : {},
+		i18n : {},
+		activeEditor : null,
+
+		preInit : function() {
+			var t = this, lo = window.location;
+
+			// Setup some URLs where the editor API is located and where the document is
+			tinymce.documentBaseURL = lo.href.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, '');
+			if (!/[\/\\]$/.test(tinymce.documentBaseURL))
+				tinymce.documentBaseURL += '/';
+
+			tinymce.baseURL = new tinymce.util.URI(tinymce.documentBaseURL).toAbsolute(tinymce.baseURL);
+			tinymce.EditorManager.baseURI = new tinymce.util.URI(tinymce.baseURL);
+
+			// User specified a document.domain value
+			if (document.domain && lo.hostname != document.domain)
+				tinymce.relaxedDomain = document.domain;
+
+			// Add before unload listener
+			// This was required since IE was leaking memory if you added and removed beforeunload listeners
+			// with attachEvent/detatchEvent so this only adds one listener and instances can the attach to the onBeforeUnload event
+			t.onBeforeUnload = new tinymce.util.Dispatcher(t);
+
+			// Must be on window or IE will leak if the editor is placed in frame or iframe
+			Event.add(window, 'beforeunload', function(e) {
+				t.onBeforeUnload.dispatch(t, e);
+			});
+		},
+
+		init : function(s) {
+			var t = this, pl, sl = tinymce.ScriptLoader, c, e, el = [], ed;
+
+			function execCallback(se, n, s) {
+				var f = se[n];
+
+				if (!f)
+					return;
+
+				if (tinymce.is(f, 'string')) {
+					s = f.replace(/\.\w+$/, '');
+					s = s ? tinymce.resolve(s) : 0;
+					f = tinymce.resolve(f);
+				}
+
+				return f.apply(s || this, Array.prototype.slice.call(arguments, 2));
+			};
+
+			s = extend({
+				theme : "simple",
+				language : "en",
+				strict_loading_mode : document.contentType == 'application/xhtml+xml'
+			}, s);
+
+			t.settings = s;
+
+			// If page not loaded and strict mode isn't enabled then load them
+			if (!Event.domLoaded && !s.strict_loading_mode) {
+				// Load language
+				if (s.language)
+					sl.add(tinymce.baseURL + '/langs/' + s.language + '.js');
+
+				// Load theme
+				if (s.theme && s.theme.charAt(0) != '-' && !ThemeManager.urls[s.theme])
+					ThemeManager.load(s.theme, 'themes/' + s.theme + '/editor_template' + tinymce.suffix + '.js');
+
+				// Load plugins
+				if (s.plugins) {
+					pl = explode(s.plugins);
+
+					// Load compat2x first
+					if (tinymce.inArray(pl, 'compat2x') != -1)
+						PluginManager.load('compat2x', 'plugins/compat2x/editor_plugin' + tinymce.suffix + '.js');
+
+					// Load rest if plugins
+					each(pl, function(v) {
+						if (v && v.charAt(0) != '-' && !PluginManager.urls[v]) {
+							// Skip safari plugin for other browsers
+							if (!tinymce.isWebKit && v == 'safari')
+								return;
+
+							PluginManager.load(v, 'plugins/' + v + '/editor_plugin' + tinymce.suffix + '.js');
+						}
+					});
+				}
+
+				sl.loadQueue();
+			}
+
+			// Legacy call
+			Event.add(document, 'init', function() {
+				var l, co;
+
+				execCallback(s, 'onpageload');
+
+				// Verify that it's a valid browser
+				if (s.browsers) {
+					l = false;
+
+					each(explode(s.browsers), function(v) {
+						switch (v) {
+							case 'ie':
+							case 'msie':
+								if (tinymce.isIE)
+									l = true;
+								break;
+
+							case 'gecko':
+								if (tinymce.isGecko)
+									l = true;
+								break;
+
+							case 'safari':
+							case 'webkit':
+								if (tinymce.isWebKit)
+									l = true;
+								break;
+
+							case 'opera':
+								if (tinymce.isOpera)
+									l = true;
+
+								break;
+						}
+					});
+
+					// Not a valid one
+					if (!l)
+						return;
+				}
+
+				switch (s.mode) {
+					case "exact":
+						l = s.elements || '';
+
+						if(l.length > 0) {
+							each(explode(l), function(v) {
+								if (DOM.get(v)) {
+									ed = new tinymce.Editor(v, s);
+									el.push(ed);
+									ed.render(1);
+								} else {
+									c = 0;
+
+									each(document.forms, function(f) {
+										each(f.elements, function(e) {
+											if (e.name === v) {
+												v = 'mce_editor_' + c;
+												DOM.setAttrib(e, 'id', v);
+
+												ed = new tinymce.Editor(v, s);
+												el.push(ed);
+												ed.render(1);
+											}
+										});
+									});
+								}
+							});
+						}
+						break;
+
+					case "textareas":
+					case "specific_textareas":
+						function hasClass(n, c) {
+							return c.constructor === RegExp ? c.test(n.className) : DOM.hasClass(n, c);
+						};
+
+						each(DOM.select('textarea'), function(v) {
+							if (s.editor_deselector && hasClass(v, s.editor_deselector))
+								return;
+
+							if (!s.editor_selector || hasClass(v, s.editor_selector)) {
+								// Can we use the name
+								e = DOM.get(v.name);
+								if (!v.id && !e)
+									v.id = v.name;
+
+								// Generate unique name if missing or already exists
+								if (!v.id || t.get(v.id))
+									v.id = DOM.uniqueId();
+
+								ed = new tinymce.Editor(v.id, s);
+								el.push(ed);
+								ed.render(1);
+							}
+						});
+						break;
+				}
+
+				// Call onInit when all editors are initialized
+				if (s.oninit) {
+					l = co = 0;
+
+					each (el, function(ed) {
+						co++;
+
+						if (!ed.initialized) {
+							// Wait for it
+							ed.onInit.add(function() {
+								l++;
+
+								// All done
+								if (l == co)
+									execCallback(s, 'oninit');
+							});
+						} else
+							l++;
+
+						// All done
+						if (l == co)
+							execCallback(s, 'oninit');					
+					});
+				}
+			});
+		},
+
+		get : function(id) {
+			return this.editors[id];
+		},
+
+		getInstanceById : function(id) {
+			return this.get(id);
+		},
+
+		add : function(e) {
+			this.editors[e.id] = e;
+			this._setActive(e);
+
+			return e;
+		},
+
+		remove : function(e) {
+			var t = this;
+
+			// Not in the collection
+			if (!t.editors[e.id])
+				return null;
+
+			delete t.editors[e.id];
+
+			// Select another editor since the active one was removed
+			if (t.activeEditor == e) {
+				each(t.editors, function(e) {
+					t._setActive(e);
+					return false; // Break
+				});
+			}
+
+			e.destroy();
+
+			return e;
+		},
+
+		execCommand : function(c, u, v) {
+			var t = this, ed = t.get(v), w;
+
+			// Manager commands
+			switch (c) {
+				case "mceFocus":
+					ed.focus();
+					return true;
+
+				case "mceAddEditor":
+				case "mceAddControl":
+					if (!t.get(v))
+						new tinymce.Editor(v, t.settings).render();
+
+					return true;
+
+				case "mceAddFrameControl":
+					w = v.window;
+
+					// Add tinyMCE global instance and tinymce namespace to specified window
+					w.tinyMCE = tinyMCE;
+					w.tinymce = tinymce;
+
+					tinymce.DOM.doc = w.document;
+					tinymce.DOM.win = w;
+
+					ed = new tinymce.Editor(v.element_id, v);
+					ed.render();
+
+					// Fix IE memory leaks
+					if (tinymce.isIE) {
+						function clr() {
+							ed.destroy();
+							w.detachEvent('onunload', clr);
+							w = w.tinyMCE = w.tinymce = null; // IE leak
+						};
+
+						w.attachEvent('onunload', clr);
+					}
+
+					v.page_window = null;
+
+					return true;
+
+				case "mceRemoveEditor":
+				case "mceRemoveControl":
+					if (ed)
+						ed.remove();
+
+					return true;
+
+				case 'mceToggleEditor':
+					if (!ed) {
+						t.execCommand('mceAddControl', 0, v);
+						return true;
+					}
+
+					if (ed.isHidden())
+						ed.show();
+					else
+						ed.hide();
+
+					return true;
+			}
+
+			// Run command on active editor
+			if (t.activeEditor)
+				return t.activeEditor.execCommand(c, u, v);
+
+			return false;
+		},
+
+		execInstanceCommand : function(id, c, u, v) {
+			var ed = this.get(id);
+
+			if (ed)
+				return ed.execCommand(c, u, v);
+
+			return false;
+		},
+
+		triggerSave : function() {
+			each(this.editors, function(e) {
+				e.save();
+			});
+		},
+
+		addI18n : function(p, o) {
+			var lo, i18n = this.i18n;
+
+			if (!tinymce.is(p, 'string')) {
+				each(p, function(o, lc) {
+					each(o, function(o, g) {
+						each(o, function(o, k) {
+							if (g === 'common')
+								i18n[lc + '.' + k] = o;
+							else
+								i18n[lc + '.' + g + '.' + k] = o;
+						});
+					});
+				});
+			} else {
+				each(o, function(o, k) {
+					i18n[p + '.' + k] = o;
+				});
+			}
+		},
+
+		// Private methods
+
+		_setActive : function(e) {
+			this.selectedInstance = this.activeEditor = e;
+		}
+
+		});
+
+	tinymce.EditorManager.preInit();
+})(tinymce);
+
+// Short for editor manager window.tinyMCE is needed when TinyMCE gets loaded though a XHR call
+var tinyMCE = window.tinyMCE = tinymce.EditorManager;
+(function(tinymce) {
+	var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, Dispatcher = tinymce.util.Dispatcher;
+	var each = tinymce.each, isGecko = tinymce.isGecko, isIE = tinymce.isIE, isWebKit = tinymce.isWebKit;
+	var is = tinymce.is, ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager, EditorManager = tinymce.EditorManager;
+	var inArray = tinymce.inArray, grep = tinymce.grep, explode = tinymce.explode;
+
+	tinymce.create('tinymce.Editor', {
+		Editor : function(id, s) {
+			var t = this;
+
+			t.id = t.editorId = id;
+			t.execCommands = {};
+			t.queryStateCommands = {};
+			t.queryValueCommands = {};
+			t.plugins = {};
+
+			// Add events to the editor
+			each([
+				'onPreInit',
+				'onBeforeRenderUI',
+				'onPostRender',
+				'onInit',
+				'onRemove',
+				'onActivate',
+				'onDeactivate',
+				'onClick',
+				'onEvent',
+				'onMouseUp',
+				'onMouseDown',
+				'onDblClick',
+				'onKeyDown',
+				'onKeyUp',
+				'onKeyPress',
+				'onContextMenu',
+				'onSubmit',
+				'onReset',
+				'onPaste',
+				'onPreProcess',
+				'onPostProcess',
+				'onBeforeSetContent',
+				'onBeforeGetContent',
+				'onSetContent',
+				'onGetContent',
+				'onLoadContent',
+				'onSaveContent',
+				'onNodeChange',
+				'onChange',
+				'onBeforeExecCommand',
+				'onExecCommand',
+				'onUndo',
+				'onRedo',
+				'onVisualAid',
+				'onSetProgressState'
+			], function(e) {
+				t[e] = new Dispatcher(t);
+			});
+
+			// Default editor config
+			t.settings = s = extend({
+				id : id,
+				language : 'en',
+				docs_language : 'en',
+				theme : 'simple',
+				skin : 'default',
+				delta_width : 0,
+				delta_height : 0,
+				popup_css : '',
+				plugins : '',
+				document_base_url : tinymce.documentBaseURL,
+				add_form_submit_trigger : 1,
+				submit_patch : 1,
+				add_unload_trigger : 1,
+				convert_urls : 1,
+				relative_urls : 1,
+				remove_script_host : 1,
+				table_inline_editing : 0,
+				object_resizing : 1,
+				cleanup : 1,
+				accessibility_focus : 1,
+				custom_shortcuts : 1,
+				custom_undo_redo_keyboard_shortcuts : 1,
+				custom_undo_redo_restore_selection : 1,
+				custom_undo_redo : 1,
+				doctype : '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">',
+				visual_table_class : 'mceItemTable',
+				visual : 1,
+				inline_styles : true,
+				convert_fonts_to_spans : true,
+				font_size_style_values : 'xx-small,x-small,small,medium,large,x-large,xx-large',
+				apply_source_formatting : 1,
+				directionality : 'ltr',
+				forced_root_block : 'p',
+				valid_elements : '@[id|class|style|title|dir<ltr?rtl|lang|xml::lang|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],a[rel|rev|charset|hreflang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur],strong/b,em/i,strike,u,#p[align],-ol[type|compact],-ul[type|compact],-li,br,img[longdesc|usemap|src|border|alt=|title|hspace|vspace|width|height|align],-sub,-sup,-blockquote[cite],-table[border=0|cellspacing|cellpadding|width|frame|rules|height|align|summary|bgcolor|background|bordercolor],-tr[rowspan|width|height|align|valign|bgcolor|background|bordercolor],tbody,thead,tfoot,#td[colspan|rowspan|width|height|align|valign|bgcolor|background|bordercolor|scope],#th[colspan|rowspan|width|height|align|valign|scope],caption,-div,-span,-code,-pre,address,-h1,-h2,-h3,-h4,-h5,-h6,hr[size|noshade],-font[face|size|color],dd,dl,dt,cite,abbr,acronym,del[datetime|cite],ins[datetime|cite],object[classid|width|height|codebase|*],param[name|value],embed[type|width|height|src|*],script[src|type],map[name],area[shape|coords|href|alt|target],bdo,button,col[align|char|charoff|span|valign|width],colgroup[align|char|charoff|span|valign|width],dfn,fieldset,form[action|accept|accept-charset|enctype|method],input[accept|alt|checked|disabled|maxlength|name|readonly|size|src|type|value|tabindex|accesskey],kbd,label[for],legend,noscript,optgroup[label|disabled],option[disabled|label|selected|value],q[cite],samp,select[disabled|multiple|name|size],small,textarea[cols|rows|disabled|name|readonly],tt,var,big',
+				hidden_input : 1,
+				padd_empty_editor : 1,
+				render_ui : 1,
+				init_theme : 1,
+				force_p_newlines : 1,
+				indentation : '30px',
+				keep_styles : 1,
+				fix_table_elements : 1,
+				removeformat_selector : 'span,b,strong,em,i,font,u,strike'
+			}, s);
+
+			// Setup URIs
+			t.documentBaseURI = new tinymce.util.URI(s.document_base_url || tinymce.documentBaseURL, {
+				base_uri : tinyMCE.baseURI
+			});
+			t.baseURI = EditorManager.baseURI;
+
+			// Call setup
+			t.execCallback('setup', t);
+		},
+
+		render : function(nst) {
+			var t = this, s = t.settings, id = t.id, sl = tinymce.ScriptLoader;
+
+			// Page is not loaded yet, wait for it
+			if (!Event.domLoaded) {
+				Event.add(document, 'init', function() {
+					t.render();
+				});
+				return;
+			}
+
+			// Force strict loading mode if render us called by user and not internally
+			if (!nst) {
+				s.strict_loading_mode = 1;
+				tinyMCE.settings = s;
+			}
+
+			// Element not found, then skip initialization
+			if (!t.getElement())
+				return;
+
+			if (s.strict_loading_mode) {
+				sl.settings.strict_mode = s.strict_loading_mode;
+				tinymce.DOM.settings.strict = 1;
+			}
+
+			// Add hidden input for non input elements inside form elements
+			if (!/TEXTAREA|INPUT/i.test(t.getElement().nodeName) && s.hidden_input && DOM.getParent(id, 'form'))
+				DOM.insertAfter(DOM.create('input', {type : 'hidden', name : id}), id);
+
+			if (tinymce.WindowManager)
+				t.windowManager = new tinymce.WindowManager(t);
+
+			if (s.encoding == 'xml') {
+				t.onGetContent.add(function(ed, o) {
+					if (o.save)
+						o.content = DOM.encode(o.content);
+				});
+			}
+
+			if (s.add_form_submit_trigger) {
+				t.onSubmit.addToTop(function() {
+					if (t.initialized) {
+						t.save();
+						t.isNotDirty = 1;
+					}
+				});
+			}
+
+			if (s.add_unload_trigger) {
+				t._beforeUnload = tinyMCE.onBeforeUnload.add(function() {
+					if (t.initialized && !t.destroyed && !t.isHidden())
+						t.save({format : 'raw', no_events : true});
+				});
+			}
+
+			tinymce.addUnload(t.destroy, t);
+
+			if (s.submit_patch) {
+				t.onBeforeRenderUI.add(function() {
+					var n = t.getElement().form;
+
+					if (!n)
+						return;
+
+					// Already patched
+					if (n._mceOldSubmit)
+						return;
+
+					// Check page uses id="submit" or name="submit" for it's submit button
+					if (!n.submit.nodeType && !n.submit.length) {
+						t.formElement = n;
+						n._mceOldSubmit = n.submit;
+						n.submit = function() {
+							// Save all instances
+							EditorManager.triggerSave();
+							t.isNotDirty = 1;
+
+							return t.formElement._mceOldSubmit(t.formElement);
+						};
+					}
+
+					n = null;
+				});
+			}
+
+			// Load scripts
+			function loadScripts() {
+				if (s.language)
+					sl.add(tinymce.baseURL + '/langs/' + s.language + '.js');
+
+				if (s.theme && s.theme.charAt(0) != '-' && !ThemeManager.urls[s.theme])
+					ThemeManager.load(s.theme, 'themes/' + s.theme + '/editor_template' + tinymce.suffix + '.js');
+
+				each(explode(s.plugins), function(p) {
+					if (p && p.charAt(0) != '-' && !PluginManager.urls[p]) {
+						// Skip safari plugin for other browsers
+						if (!isWebKit && p == 'safari')
+							return;
+
+						PluginManager.load(p, 'plugins/' + p + '/editor_plugin' + tinymce.suffix + '.js');
+					}
+				});
+
+				// Init when que is loaded
+				sl.loadQueue(function() {
+					if (!t.removed)
+						t.init();
+				});
+			};
+
+			// Load compat2x first
+			if (s.plugins.indexOf('compat2x') != -1) {
+				PluginManager.load('compat2x', 'plugins/compat2x/editor_plugin' + tinymce.suffix + '.js');
+				sl.loadQueue(loadScripts);
+			} else
+				loadScripts();
+		},
+
+		init : function() {
+			var n, t = this, s = t.settings, w, h, e = t.getElement(), o, ti, u, bi, bc, re;
+
+			EditorManager.add(t);
+
+			// Create theme
+			if (s.theme) {
+				s.theme = s.theme.replace(/-/, '');
+				o = ThemeManager.get(s.theme);
+				t.theme = new o();
+
+				if (t.theme.init && s.init_theme)
+					t.theme.init(t, ThemeManager.urls[s.theme] || tinymce.documentBaseURL.replace(/\/$/, ''));
+			}
+
+			// Create all plugins
+			each(explode(s.plugins.replace(/\-/g, '')), function(p) {
+				var c = PluginManager.get(p), u = PluginManager.urls[p] || tinymce.documentBaseURL.replace(/\/$/, ''), po;
+
+				if (c) {
+					po = new c(t, u);
+
+					t.plugins[p] = po;
+
+					if (po.init)
+						po.init(t, u);
+				}
+			});
+
+			// Setup popup CSS path(s)
+			if (s.popup_css !== false) {
+				if (s.popup_css)
+					s.popup_css = t.documentBaseURI.toAbsolute(s.popup_css);
+				else
+					s.popup_css = t.baseURI.toAbsolute("themes/" + s.theme + "/skins/" + s.skin + "/dialog.css");
+			}
+
+			if (s.popup_css_add)
+				s.popup_css += ',' + t.documentBaseURI.toAbsolute(s.popup_css_add);
+
+			// Setup control factory
+			t.controlManager = new tinymce.ControlManager(t);
+			t.undoManager = new tinymce.UndoManager(t);
+
+			// Pass through
+			t.undoManager.onAdd.add(function(um, l) {
+				if (!l.initial)
+					return t.onChange.dispatch(t, l, um);
+			});
+
+			t.undoManager.onUndo.add(function(um, l) {
+				return t.onUndo.dispatch(t, l, um);
+			});
+
+			t.undoManager.onRedo.add(function(um, l) {
+				return t.onRedo.dispatch(t, l, um);
+			});
+
+			if (s.custom_undo_redo) {
+				t.onExecCommand.add(function(ed, cmd, ui, val, a) {
+					if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!a || !a.skip_undo))
+						t.undoManager.add();
+				});
+			}
+
+			t.onExecCommand.add(function(ed, c) {
+				// Don't refresh the select lists until caret move
+				if (!/^(FontName|FontSize)$/.test(c))
+					t.nodeChanged();
+			});
+
+			// Remove ghost selections on images and tables in Gecko
+			if (isGecko) {
+				function repaint(a, o) {
+					if (!o || !o.initial)
+						t.execCommand('mceRepaint');
+				};
+
+				t.onUndo.add(repaint);
+				t.onRedo.add(repaint);
+				t.onSetContent.add(repaint);
+			}
+
+			// Enables users to override the control factory
+			t.onBeforeRenderUI.dispatch(t, t.controlManager);
+
+			// Measure box
+			if (s.render_ui) {
+				w = s.width || e.style.width || e.offsetWidth;
+				h = s.height || e.style.height || e.offsetHeight;
+				t.orgDisplay = e.style.display;
+				re = /^[0-9\.]+(|px)$/i;
+
+				if (re.test('' + w))
+					w = Math.max(parseInt(w) + (o.deltaWidth || 0), 100);
+
+				if (re.test('' + h))
+					h = Math.max(parseInt(h) + (o.deltaHeight || 0), 100);
+
+				// Render UI
+				o = t.theme.renderUI({
+					targetNode : e,
+					width : w,
+					height : h,
+					deltaWidth : s.delta_width,
+					deltaHeight : s.delta_height
+				});
+
+				t.editorContainer = o.editorContainer;
+			}
+
+
+			// Resize editor
+			DOM.setStyles(o.sizeContainer || o.editorContainer, {
+				width : w,
+				height : h
+			});
+
+			h = (o.iframeHeight || h) + (typeof(h) == 'number' ? (o.deltaHeight || 0) : '');
+			if (h < 100)
+				h = 100;
+
+			t.iframeHTML = s.doctype + '<html><head xmlns="http://www.w3.org/1999/xhtml"><base href="' + t.documentBaseURI.getURI() + '" />';
+			t.iframeHTML += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
+
+			if (tinymce.relaxedDomain)
+				t.iframeHTML += '<script type="text/javascript">document.domain = "' + tinymce.relaxedDomain + '";</script>';
+
+			bi = s.body_id || 'tinymce';
+			if (bi.indexOf('=') != -1) {
+				bi = t.getParam('body_id', '', 'hash');
+				bi = bi[t.id] || bi;
+			}
+
+			bc = s.body_class || '';
+			if (bc.indexOf('=') != -1) {
+				bc = t.getParam('body_class', '', 'hash');
+				bc = bc[t.id] || '';
+			}
+
+			t.iframeHTML += '</head><body id="' + bi + '" class="mceContentBody ' + bc + '"></body></html>';
+
+			// Domain relaxing enabled, then set document domain
+			if (tinymce.relaxedDomain) {
+				// We need to write the contents here in IE since multiple writes messes up refresh button and back button
+				if (isIE || (tinymce.isOpera && parseFloat(opera.version()) >= 9.5))
+					u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";var ed = window.parent.tinyMCE.get("' + t.id + '");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()';
+				else if (tinymce.isOpera)
+					u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";document.close();ed.setupIframe();})()';					
+			}
+
+			// Create iframe
+			n = DOM.add(o.iframeContainer, 'iframe', {
+				id : t.id + "_ifr",
+				src : u || 'javascript:""', // Workaround for HTTPS warning in IE6/7
+				frameBorder : '0',
+				style : {
+					width : '100%',
+					height : h
+				}
+			});
+
+			t.contentAreaContainer = o.iframeContainer;
+			DOM.get(o.editorContainer).style.display = t.orgDisplay;
+			DOM.get(t.id).style.display = 'none';
+
+			if (!isIE || !tinymce.relaxedDomain)
+				t.setupIframe();
+
+			e = n = o = null; // Cleanup
+		},
+
+		setupIframe : function() {
+			var t = this, s = t.settings, e = DOM.get(t.id), d = t.getDoc(), h, b;
+
+			// Setup iframe body
+			if (!isIE || !tinymce.relaxedDomain) {
+				d.open();
+				d.write(t.iframeHTML);
+				d.close();
+			}
+
+			// Design mode needs to be added here Ctrl+A will fail otherwise
+			if (!isIE) {
+				try {
+					if (!s.readonly)
+						d.designMode = 'On';
+				} catch (ex) {
+					// Will fail on Gecko if the editor is placed in an hidden container element
+					// The design mode will be set ones the editor is focused
+				}
+			}
+
+			// IE needs to use contentEditable or it will display non secure items for HTTPS
+			if (isIE) {
+				// It will not steal focus if we hide it while setting contentEditable
+				b = t.getBody();
+				DOM.hide(b);
+
+				if (!s.readonly)
+					b.contentEditable = true;
+
+				DOM.show(b);
+			}
+
+			// Setup objects
+			t.dom = new tinymce.DOM.DOMUtils(t.getDoc(), {
+				keep_values : true,
+				url_converter : t.convertURL,
+				url_converter_scope : t,
+				hex_colors : s.force_hex_style_colors,
+				class_filter : s.class_filter,
+				update_styles : 1,
+				fix_ie_paragraphs : 1
+			});
+
+			t.serializer = new tinymce.dom.Serializer({
+				entity_encoding : s.entity_encoding,
+				entities : s.entities,
+				valid_elements : s.verify_html === false ? '*[*]' : s.valid_elements,
+				extended_valid_elements : s.extended_valid_elements,
+				valid_child_elements : s.valid_child_elements,
+				invalid_elements : s.invalid_elements,
+				fix_table_elements : s.fix_table_elements,
+				fix_list_elements : s.fix_list_elements,
+				fix_content_duplication : s.fix_content_duplication,
+				convert_fonts_to_spans : s.convert_fonts_to_spans,
+				font_size_classes  : s.font_size_classes,
+				font_size_style_values : s.font_size_style_values,
+				apply_source_formatting : s.apply_source_formatting,
+				remove_linebreaks : s.remove_linebreaks,
+				element_format : s.element_format,
+				dom : t.dom
+			});
+
+			t.selection = new tinymce.dom.Selection(t.dom, t.getWin(), t.serializer);
+			t.forceBlocks = new tinymce.ForceBlocks(t, {
+				forced_root_block : s.forced_root_block
+			});
+			t.editorCommands = new tinymce.EditorCommands(t);
+
+			// Pass through
+			t.serializer.onPreProcess.add(function(se, o) {
+				return t.onPreProcess.dispatch(t, o, se);
+			});
+
+			t.serializer.onPostProcess.add(function(se, o) {
+				return t.onPostProcess.dispatch(t, o, se);
+			});
+
+			t.onPreInit.dispatch(t);
+
+			if (!s.gecko_spellcheck)
+				t.getBody().spellcheck = 0;
+
+			if (!s.readonly)
+				t._addEvents();
+
+			t.controlManager.onPostRender.dispatch(t, t.controlManager);
+			t.onPostRender.dispatch(t);
+
+			if (s.directionality)
+				t.getBody().dir = s.directionality;
+
+			if (s.nowrap)
+				t.getBody().style.whiteSpace = "nowrap";
+
+			if (s.auto_resize)
+				t.onNodeChange.add(t.resizeToContent, t);
+
+			if (s.custom_elements) {
+				function handleCustom(ed, o) {
+					each(explode(s.custom_elements), function(v) {
+						var n;
+
+						if (v.indexOf('~') === 0) {
+							v = v.substring(1);
+							n = 'span';
+						} else
+							n = 'div';
+
+						o.content = o.content.replace(new RegExp('<(' + v + ')([^>]*)>', 'g'), '<' + n + ' mce_name="$1"$2>');
+						o.content = o.content.replace(new RegExp('</(' + v + ')>', 'g'), '</' + n + '>');
+					});
+				};
+
+				t.onBeforeSetContent.add(handleCustom);
+				t.onPostProcess.add(function(ed, o) {
+					if (o.set)
+						handleCustom(ed, o)
+				});
+			}
+
+			if (s.handle_node_change_callback) {
+				t.onNodeChange.add(function(ed, cm, n) {
+					t.execCallback('handle_node_change_callback', t.id, n, -1, -1, true, t.selection.isCollapsed());
+				});
+			}
+
+			if (s.save_callback) {
+				t.onSaveContent.add(function(ed, o) {
+					var h = t.execCallback('save_callback', t.id, o.content, t.getBody());
+
+					if (h)
+						o.content = h;
+				});
+			}
+
+			if (s.onchange_callback) {
+				t.onChange.add(function(ed, l) {
+					t.execCallback('onchange_callback', t, l);
+				});
+			}
+
+			if (s.convert_newlines_to_brs) {
+				t.onBeforeSetContent.add(function(ed, o) {
+					if (o.initial)
+						o.content = o.content.replace(/\r?\n/g, '<br />');
+				});
+			}
+
+			if (s.fix_nesting && isIE) {
+				t.onBeforeSetContent.add(function(ed, o) {
+					o.content = t._fixNesting(o.content);
+				});
+			}
+
+			if (s.preformatted) {
+				t.onPostProcess.add(function(ed, o) {
+					o.content = o.content.replace(/^\s*<pre.*?>/, '');
+					o.content = o.content.replace(/<\/pre>\s*$/, '');
+
+					if (o.set)
+						o.content = '<pre class="mceItemHidden">' + o.content + '</pre>';
+				});
+			}
+
+			if (s.verify_css_classes) {
+				t.serializer.attribValueFilter = function(n, v) {
+					var s, cl;
+
+					if (n == 'class') {
+						// Build regexp for classes
+						if (!t.classesRE) {
+							cl = t.dom.getClasses();
+
+							if (cl.length > 0) {
+								s = '';
+
+								each (cl, function(o) {
+									s += (s ? '|' : '') + o['class'];
+								});
+
+								t.classesRE = new RegExp('(' + s + ')', 'gi');
+							}
+						}
+
+						return !t.classesRE || /(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(v) || t.classesRE.test(v) ? v : '';
+					}
+
+					return v;
+				};
+			}
+
+			if (s.convert_fonts_to_spans)
+				t._convertFonts();
+
+			if (s.inline_styles)
+				t._convertInlineElements();
+
+			if (s.cleanup_callback) {
+				t.onBeforeSetContent.add(function(ed, o) {
+					o.content = t.execCallback('cleanup_callback', 'insert_to_editor', o.content, o);
+				});
+
+				t.onPreProcess.add(function(ed, o) {
+					if (o.set)
+						t.execCallback('cleanup_callback', 'insert_to_editor_dom', o.node, o);
+
+					if (o.get)
+						t.execCallback('cleanup_callback', 'get_from_editor_dom', o.node, o);
+				});
+
+				t.onPostProcess.add(function(ed, o) {
+					if (o.set)
+						o.content = t.execCallback('cleanup_callback', 'insert_to_editor', o.content, o);
+
+					if (o.get)						
+						o.content = t.execCallback('cleanup_callback', 'get_from_editor', o.content, o);
+				});
+			}
+
+			if (s.save_callback) {
+				t.onGetContent.add(function(ed, o) {
+					if (o.save)
+						o.content = t.execCallback('save_callback', t.id, o.content, t.getBody());
+				});
+			}
+
+			if (s.handle_event_callback) {
+				t.onEvent.add(function(ed, e, o) {
+					if (t.execCallback('handle_event_callback', e, ed, o) === false)
+						Event.cancel(e);
+				});
+			}
+
+			// Add visual aids when new contents is added
+			t.onSetContent.add(function() {
+				t.addVisual(t.getBody());
+			});
+
+			// Remove empty contents
+			if (s.padd_empty_editor) {
+				t.onPostProcess.add(function(ed, o) {
+					o.content = o.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/, '');
+				});
+			}
+
+			if (isGecko) {
+				// Fix gecko link bug, when a link is placed at the end of block elements there is
+				// no way to move the caret behind the link. This fix adds a bogus br element after the link
+				function fixLinks(ed, o) {
+					each(ed.dom.select('a'), function(n) {
+						var pn = n.parentNode;
+
+						if (ed.dom.isBlock(pn) && pn.lastChild === n)
+							ed.dom.add(pn, 'br', {'mce_bogus' : 1});
+					});
+				};
+
+				t.onExecCommand.add(function(ed, cmd) {
+					if (cmd === 'CreateLink')
+						fixLinks(ed);
+				});
+
+				t.onSetContent.add(t.selection.onSetContent.add(fixLinks));
+
+				if (!s.readonly) {
+					try {
+						// Design mode must be set here once again to fix a bug where
+						// Ctrl+A/Delete/Backspace didn't work if the editor was added using mceAddControl then removed then added again
+						d.designMode = 'Off';
+						d.designMode = 'On';
+					} catch (ex) {
+						// Will fail on Gecko if the editor is placed in an hidden container element
+						// The design mode will be set ones the editor is focused
+					}
+				}
+			}
+
+			// A small timeout was needed since firefox will remove. Bug: #1838304
+			setTimeout(function () {
+				if (t.removed)
+					return;
+
+				t.load({initial : true, format : (s.cleanup_on_startup ? 'html' : 'raw')});
+				t.startContent = t.getContent({format : 'raw'});
+				t.undoManager.add({initial : true});
+				t.initialized = true;
+
+				t.onInit.dispatch(t);
+				t.execCallback('setupcontent_callback', t.id, t.getBody(), t.getDoc());
+				t.execCallback('init_instance_callback', t);
+				t.focus(true);
+				t.nodeChanged({initial : 1});
+
+				// Load specified content CSS last
+				if (s.content_css) {
+					tinymce.each(explode(s.content_css), function(u) {
+						t.dom.loadCSS(t.documentBaseURI.toAbsolute(u));
+					});
+				}
+
+				// Handle auto focus
+				if (s.auto_focus) {
+					setTimeout(function () {
+						var ed = EditorManager.get(s.auto_focus);
+
+						ed.selection.select(ed.getBody(), 1);
+						ed.selection.collapse(1);
+						ed.getWin().focus();
+					}, 100);
+				}
+			}, 1);
+	
+			e = null;
+		},
+
+
+		focus : function(sf) {
+			var oed, t = this, ce = t.settings.content_editable;
+
+			if (!sf) {
+				// Is not content editable or the selection is outside the area in IE
+				// the IE statement is needed to avoid bluring if element selections inside layers since
+				// the layer is like it's own document in IE
+				if (!ce && (!isIE || t.selection.getNode().ownerDocument != t.getDoc()))
+					t.getWin().focus();
+
+			}
+
+			if (EditorManager.activeEditor != t) {
+				if ((oed = EditorManager.activeEditor) != null)
+					oed.onDeactivate.dispatch(oed, t);
+
+				t.onActivate.dispatch(t, oed);
+			}
+
+			EditorManager._setActive(t);
+		},
+
+		execCallback : function(n) {
+			var t = this, f = t.settings[n], s;
+
+			if (!f)
+				return;
+
+			// Look through lookup
+			if (t.callbackLookup && (s = t.callbackLookup[n])) {
+				f = s.func;
+				s = s.scope;
+			}
+
+			if (is(f, 'string')) {
+				s = f.replace(/\.\w+$/, '');
+				s = s ? tinymce.resolve(s) : 0;
+				f = tinymce.resolve(f);
+				t.callbackLookup = t.callbackLookup || {};
+				t.callbackLookup[n] = {func : f, scope : s};
+			}
+
+			return f.apply(s || t, Array.prototype.slice.call(arguments, 1));
+		},
+
+		translate : function(s) {
+			var c = this.settings.language || 'en', i18n = EditorManager.i18n;
+
+			if (!s)
+				return '';
+
+			return i18n[c + '.' + s] || s.replace(/{\#([^}]+)\}/g, function(a, b) {
+				return i18n[c + '.' + b] || '{#' + b + '}';
+			});
+		},
+
+		getLang : function(n, dv) {
+			return EditorManager.i18n[(this.settings.language || 'en') + '.' + n] || (is(dv) ? dv : '{#' + n + '}');
+		},
+
+		getParam : function(n, dv, ty) {
+			var tr = tinymce.trim, v = is(this.settings[n]) ? this.settings[n] : dv, o;
+
+			if (ty === 'hash') {
+				o = {};
+
+				if (is(v, 'string')) {
+					each(v.indexOf('=') > 0 ? v.split(/[;,](?![^=;,]*(?:[;,]|$))/) : v.split(','), function(v) {
+						v = v.split('=');
+
+						if (v.length > 1)
+							o[tr(v[0])] = tr(v[1]);
+						else
+							o[tr(v[0])] = tr(v);
+					});
+				} else
+					o = v;
+
+				return o;
+			}
+
+			return v;
+		},
+
+		nodeChanged : function(o) {
+			var t = this, s = t.selection, n = s.getNode() || t.getBody();
+
+			// Fix for bug #1896577 it seems that this can not be fired while the editor is loading
+			if (t.initialized) {
+				t.onNodeChange.dispatch(
+					t,
+					o ? o.controlManager || t.controlManager : t.controlManager,
+					isIE && n.ownerDocument != t.getDoc() ? t.getBody() : n, // Fix for IE initial state
+					s.isCollapsed(),
+					o
+				);
+			}
+		},
+
+		addButton : function(n, s) {
+			var t = this;
+
+			t.buttons = t.buttons || {};
+			t.buttons[n] = s;
+		},
+
+		addCommand : function(n, f, s) {
+			this.execCommands[n] = {func : f, scope : s || this};
+		},
+
+		addQueryStateHandler : function(n, f, s) {
+			this.queryStateCommands[n] = {func : f, scope : s || this};
+		},
+
+		addQueryValueHandler : function(n, f, s) {
+			this.queryValueCommands[n] = {func : f, scope : s || this};
+		},
+
+		addShortcut : function(pa, desc, cmd_func, sc) {
+			var t = this, c;
+
+			if (!t.settings.custom_shortcuts)
+				return false;
+
+			t.shortcuts = t.shortcuts || {};
+
+			if (is(cmd_func, 'string')) {
+				c = cmd_func;
+
+				cmd_func = function() {
+					t.execCommand(c, false, null);
+				};
+			}
+
+			if (is(cmd_func, 'object')) {
+				c = cmd_func;
+
+				cmd_func = function() {
+					t.execCommand(c[0], c[1], c[2]);
+				};
+			}
+
+			each(explode(pa), function(pa) {
+				var o = {
+					func : cmd_func,
+					scope : sc || this,
+					desc : desc,
+					alt : false,
+					ctrl : false,
+					shift : false
+				};
+
+				each(explode(pa, '+'), function(v) {
+					switch (v) {
+						case 'alt':
+						case 'ctrl':
+						case 'shift':
+							o[v] = true;
+							break;
+
+						default:
+							o.charCode = v.charCodeAt(0);
+							o.keyCode = v.toUpperCase().charCodeAt(0);
+					}
+				});
+
+				t.shortcuts[(o.ctrl ? 'ctrl' : '') + ',' + (o.alt ? 'alt' : '') + ',' + (o.shift ? 'shift' : '') + ',' + o.keyCode] = o;
+			});
+
+			return true;
+		},
+
+		execCommand : function(cmd, ui, val, a) {
+			var t = this, s = 0, o, st;
+
+			if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd) && (!a || !a.skip_focus))
+				t.focus();
+
+			o = {};
+			t.onBeforeExecCommand.dispatch(t, cmd, ui, val, o);
+			if (o.terminate)
+				return false;
+
+			// Command callback
+			if (t.execCallback('execcommand_callback', t.id, t.selection.getNode(), cmd, ui, val)) {
+				t.onExecCommand.dispatch(t, cmd, ui, val, a);
+				return true;
+			}
+
+			// Registred commands
+			if (o = t.execCommands[cmd]) {
+				st = o.func.call(o.scope, ui, val);
+
+				// Fall through on true
+				if (st !== true) {
+					t.onExecCommand.dispatch(t, cmd, ui, val, a);
+					return st;
+				}
+			}
+
+			// Plugin commands
+			each(t.plugins, function(p) {
+				if (p.execCommand && p.execCommand(cmd, ui, val)) {
+					t.onExecCommand.dispatch(t, cmd, ui, val, a);
+					s = 1;
+					return false;
+				}
+			});
+
+			if (s)
+				return true;
+
+			// Theme commands
+			if (t.theme && t.theme.execCommand && t.theme.execCommand(cmd, ui, val)) {
+				t.onExecCommand.dispatch(t, cmd, ui, val, a);
+				return true;
+			}
+
+			// Execute global commands
+			if (tinymce.GlobalCommands.execCommand(t, cmd, ui, val)) {
+				t.onExecCommand.dispatch(t, cmd, ui, val, a);
+				return true;
+			}
+
+			// Editor commands
+			if (t.editorCommands.execCommand(cmd, ui, val)) {
+				t.onExecCommand.dispatch(t, cmd, ui, val, a);
+				return true;
+			}
+
+			// Browser commands
+			t.getDoc().execCommand(cmd, ui, val);
+			t.onExecCommand.dispatch(t, cmd, ui, val, a);
+		},
+
+		queryCommandState : function(c) {
+			var t = this, o, s;
+
+			// Is hidden then return undefined
+			if (t._isHidden())
+				return;
+
+			// Registred commands
+			if (o = t.queryStateCommands[c]) {
+				s = o.func.call(o.scope);
+
+				// Fall though on true
+				if (s !== true)
+					return s;
+			}
+
+			// Registred commands
+			o = t.editorCommands.queryCommandState(c);
+			if (o !== -1)
+				return o;
+
+			// Browser commands
+			try {
+				return this.getDoc().queryCommandState(c);
+			} catch (ex) {
+				// Fails sometimes see bug: 1896577
+			}
+		},
+
+		queryCommandValue : function(c) {
+			var t = this, o, s;
+
+			// Is hidden then return undefined
+			if (t._isHidden())
+				return;
+
+			// Registred commands
+			if (o = t.queryValueCommands[c]) {
+				s = o.func.call(o.scope);
+
+				// Fall though on true
+				if (s !== true)
+					return s;
+			}
+
+			// Registred commands
+			o = t.editorCommands.queryCommandValue(c);
+			if (is(o))
+				return o;
+
+			// Browser commands
+			try {
+				return this.getDoc().queryCommandValue(c);
+			} catch (ex) {
+				// Fails sometimes see bug: 1896577
+			}
+		},
+
+		show : function() {
+			var t = this;
+
+			DOM.show(t.getContainer());
+			DOM.hide(t.id);
+			t.load();
+		},
+
+		hide : function() {
+			var t = this, d = t.getDoc();
+
+			// Fixed bug where IE has a blinking cursor left from the editor
+			if (isIE && d)
+				d.execCommand('SelectAll');
+
+			// We must save before we hide so Safari doesn't crash
+			t.save();
+			DOM.hide(t.getContainer());
+			DOM.setStyle(t.id, 'display', t.orgDisplay);
+		},
+
+		isHidden : function() {
+			return !DOM.isHidden(this.id);
+		},
+
+		setProgressState : function(b, ti, o) {
+			this.onSetProgressState.dispatch(this, b, ti, o);
+
+			return b;
+		},
+
+		resizeToContent : function() {
+			var t = this;
+
+			DOM.setStyle(t.id + "_ifr", 'height', t.getBody().scrollHeight);
+		},
+
+		load : function(o) {
+			var t = this, e = t.getElement(), h;
+
+			if (e) {
+				o = o || {};
+				o.load = true;
+
+				// Double encode existing entities in the value
+				h = t.setContent(is(e.value) ? e.value : e.innerHTML, o);
+				o.element = e;
+
+				if (!o.no_events)
+					t.onLoadContent.dispatch(t, o);
+
+				o.element = e = null;
+
+				return h;
+			}
+		},
+
+		save : function(o) {
+			var t = this, e = t.getElement(), h, f;
+
+			if (!e || !t.initialized)
+				return;
+
+			o = o || {};
+			o.save = true;
+
+			// Add undo level will trigger onchange event
+			if (!o.no_events) {
+				t.undoManager.typing = 0;
+				t.undoManager.add();
+			}
+
+			o.element = e;
+			h = o.content = t.getContent(o);
+
+			if (!o.no_events)
+				t.onSaveContent.dispatch(t, o);
+
+			h = o.content;
+
+			if (!/TEXTAREA|INPUT/i.test(e.nodeName)) {
+				e.innerHTML = h;
+
+				// Update hidden form element
+				if (f = DOM.getParent(t.id, 'form')) {
+					each(f.elements, function(e) {
+						if (e.name == t.id) {
+							e.value = h;
+							return false;
+						}
+					});
+				}
+			} else
+				e.value = h;
+
+			o.element = e = null;
+
+			return h;
+		},
+
+		setContent : function(h, o) {
+			var t = this;
+
+			o = o || {};
+			o.format = o.format || 'html';
+			o.set = true;
+			o.content = h;
+
+			if (!o.no_events)
+				t.onBeforeSetContent.dispatch(t, o);
+
+			// Padd empty content in Gecko and Safari. Commands will otherwise fail on the content
+			// It will also be impossible to place the caret in the editor unless there is a BR element present
+			if (!tinymce.isIE && (h.length === 0 || /^\s+$/.test(h))) {
+				o.content = t.dom.setHTML(t.getBody(), '<br mce_bogus="1" />');
+				o.format = 'raw';
+			}
+
+			o.content = t.dom.setHTML(t.getBody(), tinymce.trim(o.content));
+
+			if (o.format != 'raw' && t.settings.cleanup) {
+				o.getInner = true;
+				o.content = t.dom.setHTML(t.getBody(), t.serializer.serialize(t.getBody(), o));
+			}
+
+			if (!o.no_events)
+				t.onSetContent.dispatch(t, o);
+
+			return o.content;
+		},
+
+		getContent : function(o) {
+			var t = this, h;
+
+			o = o || {};
+			o.format = o.format || 'html';
+			o.get = true;
+
+			if (!o.no_events)
+				t.onBeforeGetContent.dispatch(t, o);
+
+			if (o.format != 'raw' && t.settings.cleanup) {
+				o.getInner = true;
+				h = t.serializer.serialize(t.getBody(), o);
+			} else
+				h = t.getBody().innerHTML;
+
+			h = h.replace(/^\s*|\s*$/g, '');
+			o.content = h;
+
+			if (!o.no_events)
+				t.onGetContent.dispatch(t, o);
+
+			return o.content;
+		},
+
+		isDirty : function() {
+			var t = this;
+
+			return tinymce.trim(t.startContent) != tinymce.trim(t.getContent({format : 'raw', no_events : 1})) && !t.isNotDirty;
+		},
+
+		getContainer : function() {
+			var t = this;
+
+			if (!t.container)
+				t.container = DOM.get(t.editorContainer || t.id + '_parent');
+
+			return t.container;
+		},
+
+		getContentAreaContainer : function() {
+			return this.contentAreaContainer;
+		},
+
+		getElement : function() {
+			return DOM.get(this.settings.content_element || this.id);
+		},
+
+		getWin : function() {
+			var t = this, e;
+
+			if (!t.contentWindow) {
+				e = DOM.get(t.id + "_ifr");
+
+				if (e)
+					t.contentWindow = e.contentWindow;
+			}
+
+			return t.contentWindow;
+		},
+
+		getDoc : function() {
+			var t = this, w;
+
+			if (!t.contentDocument) {
+				w = t.getWin();
+
+				if (w)
+					t.contentDocument = w.document;
+			}
+
+			return t.contentDocument;
+		},
+
+		getBody : function() {
+			return this.bodyElement || this.getDoc().body;
+		},
+
+		convertURL : function(u, n, e) {
+			var t = this, s = t.settings;
+
+			// Use callback instead
+			if (s.urlconverter_callback)
+				return t.execCallback('urlconverter_callback', u, e, true, n);
+
+			// Don't convert link href since thats the CSS files that gets loaded into the editor also skip local file URLs
+			if (!s.convert_urls || (e && e.nodeName == 'LINK') || u.indexOf('file:') === 0)
+				return u;
+
+			// Convert to relative
+			if (s.relative_urls)
+				return t.documentBaseURI.toRelative(u);
+
+			// Convert to absolute
+			u = t.documentBaseURI.toAbsolute(u, s.remove_script_host);
+
+			return u;
+		},
+
+		addVisual : function(e) {
+			var t = this, s = t.settings;
+
+			e = e || t.getBody();
+
+			if (!is(t.hasVisual))
+				t.hasVisual = s.visual;
+
+			each(t.dom.select('table,a', e), function(e) {
+				var v;
+
+				switch (e.nodeName) {
+					case 'TABLE':
+						v = t.dom.getAttrib(e, 'border');
+
+						if (!v || v == '0') {
+							if (t.hasVisual)
+								t.dom.addClass(e, s.visual_table_class);
+							else
+								t.dom.removeClass(e, s.visual_table_class);
+						}
+
+						return;
+
+					case 'A':
+						v = t.dom.getAttrib(e, 'name');
+
+						if (v) {
+							if (t.hasVisual)
+								t.dom.addClass(e, 'mceItemAnchor');
+							else
+								t.dom.removeClass(e, 'mceItemAnchor');
+						}
+
+						return;
+				}
+			});
+
+			t.onVisualAid.dispatch(t, e, t.hasVisual);
+		},
+
+		remove : function() {
+			var t = this, e = t.getContainer();
+
+			t.removed = 1; // Cancels post remove event execution
+			t.hide();
+
+			t.execCallback('remove_instance_callback', t);
+			t.onRemove.dispatch(t);
+
+			// Clear all execCommand listeners this is required to avoid errors if the editor was removed inside another command
+			t.onExecCommand.listeners = [];
+
+			EditorManager.remove(t);
+			DOM.remove(e);
+		},
+
+		destroy : function(s) {
+			var t = this;
+
+			// One time is enough
+			if (t.destroyed)
+				return;
+
+			if (!s) {
+				tinymce.removeUnload(t.destroy);
+				tinyMCE.onBeforeUnload.remove(t._beforeUnload);
+
+				// Manual destroy
+				if (t.theme && t.theme.destroy)
+					t.theme.destroy();
+
+				// Destroy controls, selection and dom
+				t.controlManager.destroy();
+				t.selection.destroy();
+				t.dom.destroy();
+
+				// Remove all events
+
+				// Don't clear the window or document if content editable
+				// is enabled since other instances might still be present
+				if (!t.settings.content_editable) {
+					Event.clear(t.getWin());
+					Event.clear(t.getDoc());
+				}
+
+				Event.clear(t.getBody());
+				Event.clear(t.formElement);
+			}
+
+			if (t.formElement) {
+				t.formElement.submit = t.formElement._mceOldSubmit;
+				t.formElement._mceOldSubmit = null;
+			}
+
+			t.contentAreaContainer = t.formElement = t.container = t.settings.content_element = t.bodyElement = t.contentDocument = t.contentWindow = null;
+
+			if (t.selection)
+				t.selection = t.selection.win = t.selection.dom = t.selection.dom.doc = null;
+
+			t.destroyed = 1;
+		},
+
+		// Internal functions
+
+		_addEvents : function() {
+			// 'focus', 'blur', 'dblclick', 'beforedeactivate', submit, reset
+			var t = this, i, s = t.settings, lo = {
+				mouseup : 'onMouseUp',
+				mousedown : 'onMouseDown',
+				click : 'onClick',
+				keyup : 'onKeyUp',
+				keydown : 'onKeyDown',
+				keypress : 'onKeyPress',
+				submit : 'onSubmit',
+				reset : 'onReset',
+				contextmenu : 'onContextMenu',
+				dblclick : 'onDblClick',
+				paste : 'onPaste' // Doesn't work in all browsers yet
+			};
+
+			function eventHandler(e, o) {
+				var ty = e.type;
+
+				// Don't fire events when it's removed
+				if (t.removed)
+					return;
+
+				// Generic event handler
+				if (t.onEvent.dispatch(t, e, o) !== false) {
+					// Specific event handler
+					t[lo[e.fakeType || e.type]].dispatch(t, e, o);
+				}
+			};
+
+			// Add DOM events
+			each(lo, function(v, k) {
+				switch (k) {
+					case 'contextmenu':
+						if (tinymce.isOpera) {
+							// Fake contextmenu on Opera
+							t.dom.bind(t.getBody(), 'mousedown', function(e) {
+								if (e.ctrlKey) {
+									e.fakeType = 'contextmenu';
+									eventHandler(e);
+								}
+							});
+						} else
+							t.dom.bind(t.getBody(), k, eventHandler);
+						break;
+
+					case 'paste':
+						t.dom.bind(t.getBody(), k, function(e) {
+							eventHandler(e);
+						});
+						break;
+
+					case 'submit':
+					case 'reset':
+						t.dom.bind(t.getElement().form || DOM.getParent(t.id, 'form'), k, eventHandler);
+						break;
+
+					default:
+						t.dom.bind(s.content_editable ? t.getBody() : t.getDoc(), k, eventHandler);
+				}
+			});
+
+			t.dom.bind(s.content_editable ? t.getBody() : (isGecko ? t.getDoc() : t.getWin()), 'focus', function(e) {
+				t.focus(true);
+			});
+
+
+			// Fixes bug where a specified document_base_uri could result in broken images
+			// This will also fix drag drop of images in Gecko
+			if (tinymce.isGecko) {
+				// Convert all images to absolute URLs
+/*				t.onSetContent.add(function(ed, o) {
+					each(ed.dom.select('img'), function(e) {
+						var v;
+
+						if (v = e.getAttribute('mce_src'))
+							e.src = t.documentBaseURI.toAbsolute(v);
+					})
+				});*/
+
+				t.dom.bind(t.getDoc(), 'DOMNodeInserted', function(e) {
+					var v;
+
+					e = e.target;
+
+					if (e.nodeType === 1 && e.nodeName === 'IMG' && (v = e.getAttribute('mce_src')))
+						e.src = t.documentBaseURI.toAbsolute(v);
+				});
+			}
+
+			// Set various midas options in Gecko
+			if (isGecko) {
+				function setOpts() {
+					var t = this, d = t.getDoc(), s = t.settings;
+
+					if (isGecko && !s.readonly) {
+						if (t._isHidden()) {
+							try {
+								if (!s.content_editable)
+									d.designMode = 'On';
+							} catch (ex) {
+								// Fails if it's hidden
+							}
+						}
+
+						try {
+							// Try new Gecko method
+							d.execCommand("styleWithCSS", 0, false);
+						} catch (ex) {
+							// Use old method
+							if (!t._isHidden())
+								try {d.execCommand("useCSS", 0, true);} catch (ex) {}
+						}
+
+						if (!s.table_inline_editing)
+							try {d.execCommand('enableInlineTableEditing', false, false);} catch (ex) {}
+
+						if (!s.object_resizing)
+							try {d.execCommand('enableObjectResizing', false, false);} catch (ex) {}
+					}
+				};
+
+				t.onBeforeExecCommand.add(setOpts);
+				t.onMouseDown.add(setOpts);
+			}
+
+			// Add node change handlers
+			t.onMouseUp.add(t.nodeChanged);
+			t.onClick.add(t.nodeChanged);
+			t.onKeyUp.add(function(ed, e) {
+				var c = e.keyCode;
+
+				if ((c >= 33 && c <= 36) || (c >= 37 && c <= 40) || c == 13 || c == 45 || c == 46 || c == 8 || (tinymce.isMac && (c == 91 || c == 93)) || e.ctrlKey)
+					t.nodeChanged();
+			});
+
+			// Add reset handler
+			t.onReset.add(function() {
+				t.setContent(t.startContent, {format : 'raw'});
+			});
+
+			// Add shortcuts
+			if (s.custom_shortcuts) {
+				if (s.custom_undo_redo_keyboard_shortcuts) {
+					t.addShortcut('ctrl+z', t.getLang('undo_desc'), 'Undo');
+					t.addShortcut('ctrl+y', t.getLang('redo_desc'), 'Redo');
+				}
+
+				// Add default shortcuts for gecko
+				if (isGecko) {
+					t.addShortcut('ctrl+b', t.getLang('bold_desc'), 'Bold');
+					t.addShortcut('ctrl+i', t.getLang('italic_desc'), 'Italic');
+					t.addShortcut('ctrl+u', t.getLang('underline_desc'), 'Underline');
+				}
+
+				// BlockFormat shortcuts keys
+				for (i=1; i<=6; i++)
+					t.addShortcut('ctrl+' + i, '', ['FormatBlock', false, '<h' + i + '>']);
+
+				t.addShortcut('ctrl+7', '', ['FormatBlock', false, '<p>']);
+				t.addShortcut('ctrl+8', '', ['FormatBlock', false, '<div>']);
+				t.addShortcut('ctrl+9', '', ['FormatBlock', false, '<address>']);
+
+				function find(e) {
+					var v = null;
+
+					if (!e.altKey && !e.ctrlKey && !e.metaKey)
+						return v;
+
+					each(t.shortcuts, function(o) {
+						if (tinymce.isMac && o.ctrl != e.metaKey)
+							return;
+						else if (!tinymce.isMac && o.ctrl != e.ctrlKey)
+							return;
+
+						if (o.alt != e.altKey)
+							return;
+
+						if (o.shift != e.shiftKey)
+							return;
+
+						if (e.keyCode == o.keyCode || (e.charCode && e.charCode == o.charCode)) {
+							v = o;
+							return false;
+						}
+					});
+
+					return v;
+				};
+
+				t.onKeyUp.add(function(ed, e) {
+					var o = find(e);
+
+					if (o)
+						return Event.cancel(e);
+				});
+
+				t.onKeyPress.add(function(ed, e) {
+					var o = find(e);
+
+					if (o)
+						return Event.cancel(e);
+				});
+
+				t.onKeyDown.add(function(ed, e) {
+					var o = find(e);
+
+					if (o) {
+						o.func.call(o.scope);
+						return Event.cancel(e);
+					}
+				});
+			}
+
+			if (tinymce.isIE) {
+				// Fix so resize will only update the width and height attributes not the styles of an image
+				// It will also block mceItemNoResize items
+				t.dom.bind(t.getDoc(), 'controlselect', function(e) {
+					var re = t.resizeInfo, cb;
+
+					e = e.target;
+
+					// Don't do this action for non image elements
+					if (e.nodeName !== 'IMG')
+						return;
+
+					if (re)
+						t.dom.unbind(re.node, re.ev, re.cb);
+
+					if (!t.dom.hasClass(e, 'mceItemNoResize')) {
+						ev = 'resizeend';
+						cb = t.dom.bind(e, ev, function(e) {
+							var v;
+
+							e = e.target;
+
+							if (v = t.dom.getStyle(e, 'width')) {
+								t.dom.setAttrib(e, 'width', v.replace(/[^0-9%]+/g, ''));
+								t.dom.setStyle(e, 'width', '');
+							}
+
+							if (v = t.dom.getStyle(e, 'height')) {
+								t.dom.setAttrib(e, 'height', v.replace(/[^0-9%]+/g, ''));
+								t.dom.setStyle(e, 'height', '');
+							}
+						});
+					} else {
+						ev = 'resizestart';
+						cb = t.dom.bind(e, 'resizestart', Event.cancel, Event);
+					}
+
+					re = t.resizeInfo = {
+						node : e,
+						ev : ev,
+						cb : cb
+					};
+				});
+
+				t.onKeyDown.add(function(ed, e) {
+					switch (e.keyCode) {
+						case 8:
+							// Fix IE control + backspace browser bug
+							if (t.selection.getRng().item) {
+								t.selection.getRng().item(0).removeNode();
+								return Event.cancel(e);
+							}
+					}
+				});
+
+				/*if (t.dom.boxModel) {
+					t.getBody().style.height = '100%';
+
+					Event.add(t.getWin(), 'resize', function(e) {
+						var docElm = t.getDoc().documentElement;
+
+						docElm.style.height = (docElm.offsetHeight - 10) + 'px';
+					});
+				}*/
+			}
+
+			if (tinymce.isOpera) {
+				t.onClick.add(function(ed, e) {
+					Event.prevent(e);
+				});
+			}
+
+			// Add custom undo/redo handlers
+			if (s.custom_undo_redo) {
+				function addUndo() {
+					t.undoManager.typing = 0;
+					t.undoManager.add();
+				};
+
+				// Add undo level on editor blur
+				if (tinymce.isIE) {
+					t.dom.bind(t.getWin(), 'blur', function(e) {
+						var n;
+
+						// Check added for fullscreen bug
+						if (t.selection) {
+							n = t.selection.getNode();
+
+							// Add undo level is selection was lost to another document
+							if (!t.removed && n.ownerDocument && n.ownerDocument != t.getDoc())
+								addUndo();
+						}
+					});
+				} else {
+					t.dom.bind(t.getDoc(), 'blur', function() {
+						if (t.selection && !t.removed)
+							addUndo();
+					});
+				}
+
+				t.onMouseDown.add(addUndo);
+
+				t.onKeyUp.add(function(ed, e) {
+					if ((e.keyCode >= 33 && e.keyCode <= 36) || (e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 13 || e.keyCode == 45 || e.ctrlKey) {
+						t.undoManager.typing = 0;
+						t.undoManager.add();
+					}
+				});
+
+				t.onKeyDown.add(function(ed, e) {
+					// Is caracter positon keys
+					if ((e.keyCode >= 33 && e.keyCode <= 36) || (e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 13 || e.keyCode == 45) {
+						if (t.undoManager.typing) {
+							t.undoManager.add();
+							t.undoManager.typing = 0;
+						}
+
+						return;
+					}
+
+					if (!t.undoManager.typing) {
+						t.undoManager.add();
+						t.undoManager.typing = 1;
+					}
+				});
+			}
+		},
+
+		_convertInlineElements : function() {
+			var t = this, s = t.settings, dom = t.dom, v, e, na, st, sp;
+
+			function convert(ed, o) {
+				if (!s.inline_styles)
+					return;
+
+				if (o.get) {
+					each(t.dom.select('table,u,strike', o.node), function(n) {
+						switch (n.nodeName) {
+							case 'TABLE':
+								if (v = dom.getAttrib(n, 'height')) {
+									dom.setStyle(n, 'height', v);
+									dom.setAttrib(n, 'height', '');
+								}
+								break;
+
+							case 'U':
+							case 'STRIKE':
+								//sp = dom.create('span', {style : dom.getAttrib(n, 'style')});
+								n.style.textDecoration = n.nodeName == 'U' ? 'underline' : 'line-through';
+								dom.setAttrib(n, 'mce_style', '');
+								dom.setAttrib(n, 'mce_name', 'span');
+								break;
+						}
+					});
+				} else if (o.set) {
+					each(t.dom.select('table,span', o.node).reverse(), function(n) {
+						if (n.nodeName == 'TABLE') {
+							if (v = dom.getStyle(n, 'height'))
+								dom.setAttrib(n, 'height', v.replace(/[^0-9%]+/g, ''));
+						} else {
+							// Convert spans to elements
+							if (n.style.textDecoration == 'underline')
+								na = 'u';
+							else if (n.style.textDecoration == 'line-through')
+								na = 'strike';
+							else
+								na = '';
+
+							if (na) {
+								n.style.textDecoration = '';
+								dom.setAttrib(n, 'mce_style', '');
+
+								e = dom.create(na, {
+									style : dom.getAttrib(n, 'style')
+								});
+
+								dom.replace(e, n, 1);
+							}
+						}
+					});
+				}
+			};
+
+			t.onPreProcess.add(convert);
+
+			if (!s.cleanup_on_startup) {
+				t.onSetContent.add(function(ed, o) {
+					if (o.initial)
+						convert(t, {node : t.getBody(), set : 1});
+				});
+			}
+		},
+
+		_convertFonts : function() {
+			var t = this, s = t.settings, dom = t.dom, fz, fzn, sl, cl;
+
+			// No need
+			if (!s.inline_styles)
+				return;
+
+			// Font pt values and font size names
+			fz = [8, 10, 12, 14, 18, 24, 36];
+			fzn = ['xx-small', 'x-small','small','medium','large','x-large', 'xx-large'];
+
+			if (sl = s.font_size_style_values)
+				sl = explode(sl);
+
+			if (cl = s.font_size_classes)
+				cl = explode(cl);
+
+			function process(no) {
+				var n, sp, nl, x;
+
+				// Keep unit tests happy
+				if (!s.inline_styles)
+					return;
+
+				nl = t.dom.select('font', no);
+				for (x = nl.length - 1; x >= 0; x--) {
+					n = nl[x];
+
+					sp = dom.create('span', {
+						style : dom.getAttrib(n, 'style'),
+						'class' : dom.getAttrib(n, 'class')
+					});
+
+					dom.setStyles(sp, {
+						fontFamily : dom.getAttrib(n, 'face'),
+						color : dom.getAttrib(n, 'color'),
+						backgroundColor : n.style.backgroundColor
+					});
+
+					if (n.size) {
+						if (sl)
+							dom.setStyle(sp, 'fontSize', sl[parseInt(n.size) - 1]);
+						else
+							dom.setAttrib(sp, 'class', cl[parseInt(n.size) - 1]);
+					}
+
+					dom.setAttrib(sp, 'mce_style', '');
+					dom.replace(sp, n, 1);
+				}
+			};
+
+			// Run on cleanup
+			t.onPreProcess.add(function(ed, o) {
+				if (o.get)
+					process(o.node);
+			});
+
+			t.onSetContent.add(function(ed, o) {
+				if (o.initial)
+					process(o.node);
+			});
+		},
+
+		_isHidden : function() {
+			var s;
+
+			if (!isGecko)
+				return 0;
+
+			// Weird, wheres that cursor selection?
+			s = this.selection.getSel();
+			return (!s || !s.rangeCount || s.rangeCount == 0);
+		},
+
+		// Fix for bug #1867292
+		_fixNesting : function(s) {
+			var d = [], i;
+
+			s = s.replace(/<(\/)?([^\s>]+)[^>]*?>/g, function(a, b, c) {
+				var e;
+
+				// Handle end element
+				if (b === '/') {
+					if (!d.length)
+						return '';
+
+					if (c !== d[d.length - 1].tag) {
+						for (i=d.length - 1; i>=0; i--) {
+							if (d[i].tag === c) {
+								d[i].close = 1;
+								break;
+							}
+						}
+
+						return '';
+					} else {
+						d.pop();
+
+						if (d.length && d[d.length - 1].close) {
+							a = a + '</' + d[d.length - 1].tag + '>';
+							d.pop();
+						}
+					}
+				} else {
+					// Ignore these
+					if (/^(br|hr|input|meta|img|link|param)$/i.test(c))
+						return a;
+
+					// Ignore closed ones
+					if (/\/>$/.test(a))
+						return a;
+
+					d.push({tag : c}); // Push start element
+				}
+
+				return a;
+			});
+
+			// End all open tags
+			for (i=d.length - 1; i>=0; i--)
+				s += '</' + d[i].tag + '>';
+
+			return s;
+		}
+
+		});
+})(tinymce);
+(function(tinymce) {
+	var each = tinymce.each, isIE = tinymce.isIE, isGecko = tinymce.isGecko, isOpera = tinymce.isOpera, isWebKit = tinymce.isWebKit;
+
+	tinymce.create('tinymce.EditorCommands', {
+		EditorCommands : function(ed) {
+			this.editor = ed;
+		},
+
+		execCommand : function(cmd, ui, val) {
+			var t = this, ed = t.editor, f;
+
+			switch (cmd) {
+				// Ignore these
+				case 'mceResetDesignMode':
+				case 'mceBeginUndoLevel':
+					return true;
+
+				// Ignore these
+				case 'unlink':
+					t.UnLink();
+					return true;
+
+				// Bundle these together
+				case 'JustifyLeft':
+				case 'JustifyCenter':
+				case 'JustifyRight':
+				case 'JustifyFull':
+					t.mceJustify(cmd, cmd.substring(7).toLowerCase());
+					return true;
+
+				default:
+					f = this[cmd];
+
+					if (f) {
+						f.call(this, ui, val);
+						return true;
+					}
+			}
+
+			return false;
+		},
+
+		Indent : function() {
+			var ed = this.editor, d = ed.dom, s = ed.selection, e, iv, iu;
+
+			// Setup indent level
+			iv = ed.settings.indentation;
+			iu = /[a-z%]+$/i.exec(iv);
+			iv = parseInt(iv);
+
+			if (ed.settings.inline_styles && (!this.queryStateInsertUnorderedList() && !this.queryStateInsertOrderedList())) {
+				each(s.getSelectedBlocks(), function(e) {
+					d.setStyle(e, 'paddingLeft', (parseInt(e.style.paddingLeft || 0) + iv) + iu);
+				});
+
+				return;
+			}
+
+			ed.getDoc().execCommand('Indent', false, null);
+
+			if (isIE) {
+				d.getParent(s.getNode(), function(n) {
+					if (n.nodeName == 'BLOCKQUOTE') {
+						n.dir = n.style.cssText = '';
+					}
+				});
+			}
+		},
+
+		Outdent : function() {
+			var ed = this.editor, d = ed.dom, s = ed.selection, e, v, iv, iu;
+
+			// Setup indent level
+			iv = ed.settings.indentation;
+			iu = /[a-z%]+$/i.exec(iv);
+			iv = parseInt(iv);
+
+			if (ed.settings.inline_styles && (!this.queryStateInsertUnorderedList() && !this.queryStateInsertOrderedList())) {
+				each(s.getSelectedBlocks(), function(e) {
+					v = Math.max(0, parseInt(e.style.paddingLeft || 0) - iv);
+					d.setStyle(e, 'paddingLeft', v ? v + iu : '');
+				});
+
+				return;
+			}
+
+			ed.getDoc().execCommand('Outdent', false, null);
+		},
+
+/*
+		mceSetAttribute : function(u, v) {
+			var ed = this.editor, d = ed.dom, e;
+
+			if (e = d.getParent(ed.selection.getNode(), d.isBlock))
+				d.setAttrib(e, v.name, v.value);
+		},
+*/
+		mceSetContent : function(u, v) {
+			this.editor.setContent(v);
+		},
+
+		mceToggleVisualAid : function() {
+			var ed = this.editor;
+
+			ed.hasVisual = !ed.hasVisual;
+			ed.addVisual();
+		},
+
+		mceReplaceContent : function(u, v) {
+			var s = this.editor.selection;
+
+			s.setContent(v.replace(/\{\$selection\}/g, s.getContent({format : 'text'})));
+		},
+
+		mceInsertLink : function(u, v) {
+			var ed = this.editor, s = ed.selection, e = ed.dom.getParent(s.getNode(), 'a');
+
+			if (tinymce.is(v, 'string'))
+				v = {href : v};
+
+			function set(e) {
+				each(v, function(v, k) {
+					ed.dom.setAttrib(e, k, v);
+				});
+			};
+
+			if (!e) {
+				ed.execCommand('CreateLink', false, 'javascript:mctmp(0);');
+				each(ed.dom.select('a[href=javascript:mctmp(0);]'), function(e) {
+					set(e);
+				});
+			} else {
+				if (v.href)
+					set(e);
+				else
+					ed.dom.remove(e, 1);
+			}
+		},
+
+		UnLink : function() {
+			var ed = this.editor, s = ed.selection;
+
+			if (s.isCollapsed())
+				s.select(s.getNode());
+
+			ed.getDoc().execCommand('unlink', false, null);
+			s.collapse(0);
+		},
+
+		FontName : function(u, v) {
+			var t = this, ed = t.editor, s = ed.selection, e;
+
+			if (!v) {
+				if (s.isCollapsed())
+					s.select(s.getNode());
+			} else {
+				if (ed.settings.convert_fonts_to_spans)
+					t._applyInlineStyle('span', {style : {fontFamily : v}});
+				else
+					ed.getDoc().execCommand('FontName', false, v);
+			}
+		},
+
+		FontSize : function(u, v) {
+			var ed = this.editor, s = ed.settings, fc, fs;
+
+			// Use style options instead
+			if (s.convert_fonts_to_spans && v >= 1 && v <= 7) {
+				fs = tinymce.explode(s.font_size_style_values);
+				fc = tinymce.explode(s.font_size_classes);
+
+				if (fc)
+					v = fc[v - 1] || v;
+				else
+					v = fs[v - 1] || v;
+			}
+
+			if (v >= 1 && v <= 7)
+				ed.getDoc().execCommand('FontSize', false, v);
+			else
+				this._applyInlineStyle('span', {style : {fontSize : v}});
+		},
+
+		queryCommandValue : function(c) {
+			var f = this['queryValue' + c];
+
+			if (f)
+				return f.call(this, c);
+
+			return false;
+		},
+
+		queryCommandState : function(cmd) {
+			var f;
+
+			switch (cmd) {
+				// Bundle these together
+				case 'JustifyLeft':
+				case 'JustifyCenter':
+				case 'JustifyRight':
+				case 'JustifyFull':
+					return this.queryStateJustify(cmd, cmd.substring(7).toLowerCase());
+
+				default:
+					if (f = this['queryState' + cmd])
+						return f.call(this, cmd);
+			}
+
+			return -1;
+		},
+
+		_queryState : function(c) {
+			try {
+				return this.editor.getDoc().queryCommandState(c);
+			} catch (ex) {
+				// Ignore exception
+			}
+		},
+
+		_queryVal : function(c) {
+			try {
+				return this.editor.getDoc().queryCommandValue(c);
+			} catch (ex) {
+				// Ignore exception
+			}
+		},
+
+		queryValueFontSize : function() {
+			var ed = this.editor, v = 0, p;
+
+			if (p = ed.dom.getParent(ed.selection.getNode(), 'span'))
+				v = p.style.fontSize;
+
+			if (!v && (isOpera || isWebKit)) {
+				if (p = ed.dom.getParent(ed.selection.getNode(), 'font'))
+					v = p.size;
+
+				return v;
+			}
+
+			return v || this._queryVal('FontSize');
+		},
+
+		queryValueFontName : function() {
+			var ed = this.editor, v = 0, p;
+
+			if (p = ed.dom.getParent(ed.selection.getNode(), 'font'))
+				v = p.face;
+
+			if (p = ed.dom.getParent(ed.selection.getNode(), 'span'))
+				v = p.style.fontFamily.replace(/, /g, ',').replace(/[\'\"]/g, '').toLowerCase();
+
+			if (!v)
+				v = this._queryVal('FontName');
+
+			return v;
+		},
+
+		mceJustify : function(c, v) {
+			var ed = this.editor, se = ed.selection, n = se.getNode(), nn = n.nodeName, bl, nb, dom = ed.dom, rm;
+
+			if (ed.settings.inline_styles && this.queryStateJustify(c, v))
+				rm = 1;
+
+			bl = dom.getParent(n, ed.dom.isBlock);
+
+			if (nn == 'IMG') {
+				if (v == 'full')
+					return;
+
+				if (rm) {
+					if (v == 'center')
+						dom.setStyle(bl || n.parentNode, 'textAlign', '');
+
+					dom.setStyle(n, 'float', '');
+					this.mceRepaint();
+					return;
+				}
+
+				if (v == 'center') {
+					// Do not change table elements
+					if (bl && /^(TD|TH)$/.test(bl.nodeName))
+						bl = 0;
+
+					if (!bl || bl.childNodes.length > 1) {
+						nb = dom.create('p');
+						nb.appendChild(n.cloneNode(false));
+
+						if (bl)
+							dom.insertAfter(nb, bl);
+						else
+							dom.insertAfter(nb, n);
+
+						dom.remove(n);
+						n = nb.firstChild;
+						bl = nb;
+					}
+
+					dom.setStyle(bl, 'textAlign', v);
+					dom.setStyle(n, 'float', '');
+				} else {
+					dom.setStyle(n, 'float', v);
+					dom.setStyle(bl || n.parentNode, 'textAlign', '');
+				}
+
+				this.mceRepaint();
+				return;
+			}
+
+			// Handle the alignment outselfs, less quirks in all browsers
+			if (ed.settings.inline_styles && ed.settings.forced_root_block) {
+				if (rm)
+					v = '';
+
+				each(se.getSelectedBlocks(dom.getParent(se.getStart(), dom.isBlock), dom.getParent(se.getEnd(), dom.isBlock)), function(e) {
+					dom.setAttrib(e, 'align', '');
+					dom.setStyle(e, 'textAlign', v == 'full' ? 'justify' : v);
+				});
+
+				return;
+			} else if (!rm)
+				ed.getDoc().execCommand(c, false, null);
+
+			if (ed.settings.inline_styles) {
+				if (rm) {
+					dom.getParent(ed.selection.getNode(), function(n) {
+						if (n.style && n.style.textAlign)
+							dom.setStyle(n, 'textAlign', '');
+					});
+
+					return;
+				}
+
+				each(dom.select('*'), function(n) {
+					var v = n.align;
+
+					if (v) {
+						if (v == 'full')
+							v = 'justify';
+
+						dom.setStyle(n, 'textAlign', v);
+						dom.setAttrib(n, 'align', '');
+					}
+				});
+			}
+		},
+
+		mceSetCSSClass : function(u, v) {
+			this.mceSetStyleInfo(0, {command : 'setattrib', name : 'class', value : v});
+		},
+
+		getSelectedElement : function() {
+			var t = this, ed = t.editor, dom = ed.dom, se = ed.selection, r = se.getRng(), r1, r2, sc, ec, so, eo, e, sp, ep, re;
+
+			if (se.isCollapsed() || r.item)
+				return se.getNode();
+
+			// Setup regexp
+			re = ed.settings.merge_styles_invalid_parents;
+			if (tinymce.is(re, 'string'))
+				re = new RegExp(re, 'i');
+
+			if (isIE) {
+				r1 = r.duplicate();
+				r1.collapse(true);
+				sc = r1.parentElement();
+
+				r2 = r.duplicate();
+				r2.collapse(false);
+				ec = r2.parentElement();
+
+				if (sc != ec) {
+					r1.move('character', 1);
+					sc = r1.parentElement();
+				}
+
+				if (sc == ec) {
+					r1 = r.duplicate();
+					r1.moveToElementText(sc);
+
+					if (r1.compareEndPoints('StartToStart', r) == 0 && r1.compareEndPoints('EndToEnd', r) == 0)
+						return re && re.test(sc.nodeName) ? null : sc;
+				}
+			} else {
+				function getParent(n) {
+					return dom.getParent(n, '*');
+				};
+
+				sc = r.startContainer;
+				ec = r.endContainer;
+				so = r.startOffset;
+				eo = r.endOffset;
+
+				if (!r.collapsed) {
+					if (sc == ec) {
+						if (so - eo < 2) {
+							if (sc.hasChildNodes()) {
+								sp = sc.childNodes[so];
+								return re && re.test(sp.nodeName) ? null : sp;
+							}
+						}
+					}
+				}
+
+				if (sc.nodeType != 3 || ec.nodeType != 3)
+					return null;
+
+				if (so == 0) {
+					sp = getParent(sc);
+
+					if (sp && sp.firstChild != sc)
+						sp = null;
+				}
+
+				if (so == sc.nodeValue.length) {
+					e = sc.nextSibling;
+
+					if (e && e.nodeType == 1)
+						sp = sc.nextSibling;
+				}
+
+				if (eo == 0) {
+					e = ec.previousSibling;
+
+					if (e && e.nodeType == 1)
+						ep = e;
+				}
+
+				if (eo == ec.nodeValue.length) {
+					ep = getParent(ec);
+
+					if (ep && ep.lastChild != ec)
+						ep = null;
+				}
+
+				// Same element
+				if (sp == ep)
+					return re && sp && re.test(sp.nodeName) ? null : sp;
+			}
+
+			return null;
+		},
+
+		mceSetStyleInfo : function(u, v) {
+			var t = this, ed = t.editor, d = ed.getDoc(), dom = ed.dom, e, b, s = ed.selection, nn = v.wrapper || 'span', b = s.getBookmark(), re;
+
+			function set(n, e) {
+				if (n.nodeType == 1) {
+					switch (v.command) {
+						case 'setattrib':
+							return dom.setAttrib(n, v.name, v.value);
+
+						case 'setstyle':
+							return dom.setStyle(n, v.name, v.value);
+
+						case 'removeformat':
+							return dom.setAttrib(n, 'class', '');
+					}
+				}
+			};
+
+			// Setup regexp
+			re = ed.settings.merge_styles_invalid_parents;
+			if (tinymce.is(re, 'string'))
+				re = new RegExp(re, 'i');
+
+			// Set style info on selected element
+			if ((e = t.getSelectedElement()) && !ed.settings.force_span_wrappers)
+				set(e, 1);
+			else {
+				// Generate wrappers and set styles on them
+				d.execCommand('FontName', false, '__');
+				each(dom.select('span,font'), function(n) {
+					var sp, e;
+
+					if (dom.getAttrib(n, 'face') == '__' || n.style.fontFamily === '__') {
+						sp = dom.create(nn, {mce_new : '1'});
+
+						set(sp);
+
+						each (n.childNodes, function(n) {
+							sp.appendChild(n.cloneNode(true));
+						});
+
+						dom.replace(sp, n);
+					}
+				});
+			}
+
+			// Remove wrappers inside new ones
+			each(dom.select(nn).reverse(), function(n) {
+				var p = n.parentNode;
+
+				// Check if it's an old span in a new wrapper
+				if (!dom.getAttrib(n, 'mce_new')) {
+					// Find new wrapper
+					p = dom.getParent(n, '*[mce_new]');
+
+					if (p)
+						dom.remove(n, 1);
+				}
+			});
+
+			// Merge wrappers with parent wrappers
+			each(dom.select(nn).reverse(), function(n) {
+				var p = n.parentNode;
+
+				if (!p || !dom.getAttrib(n, 'mce_new'))
+					return;
+
+				if (ed.settings.force_span_wrappers && p.nodeName != 'SPAN')
+					return;
+
+				// Has parent of the same type and only child
+				if (p.nodeName == nn.toUpperCase() && p.childNodes.length == 1)
+					return dom.remove(p, 1);
+
+				// Has parent that is more suitable to have the class and only child
+				if (n.nodeType == 1 && (!re || !re.test(p.nodeName)) && p.childNodes.length == 1) {
+					set(p); // Set style info on parent instead
+					dom.setAttrib(n, 'class', '');
+				}
+			});
+
+			// Remove empty wrappers
+			each(dom.select(nn).reverse(), function(n) {
+				if (dom.getAttrib(n, 'mce_new') || (dom.getAttribs(n).length <= 1 && n.className === '')) {
+					if (!dom.getAttrib(n, 'class') && !dom.getAttrib(n, 'style'))
+						return dom.remove(n, 1);
+
+					dom.setAttrib(n, 'mce_new', ''); // Remove mce_new marker
+				}
+			});
+
+			s.moveToBookmark(b);
+		},
+
+		queryStateJustify : function(c, v) {
+			var ed = this.editor, n = ed.selection.getNode(), dom = ed.dom;
+
+			if (n && n.nodeName == 'IMG') {
+				if (dom.getStyle(n, 'float') == v)
+					return 1;
+
+				return n.parentNode.style.textAlign == v;
+			}
+
+			n = dom.getParent(ed.selection.getStart(), function(n) {
+				return n.nodeType == 1 && n.style.textAlign;
+			});
+
+			if (v == 'full')
+				v = 'justify';
+
+			if (ed.settings.inline_styles)
+				return (n && n.style.textAlign == v);
+
+			return this._queryState(c);
+		},
+
+		ForeColor : function(ui, v) {
+			var ed = this.editor;
+
+			if (ed.settings.convert_fonts_to_spans) {
+				this._applyInlineStyle('span', {style : {color : v}});
+				return;
+			} else
+				ed.getDoc().execCommand('ForeColor', false, v);
+		},
+
+		HiliteColor : function(ui, val) {
+			var t = this, ed = t.editor, d = ed.getDoc();
+
+			if (ed.settings.convert_fonts_to_spans) {
+				this._applyInlineStyle('span', {style : {backgroundColor : val}});
+				return;
+			}
+
+			function set(s) {
+				if (!isGecko)
+					return;
+
+				try {
+					// Try new Gecko method
+					d.execCommand("styleWithCSS", 0, s);
+				} catch (ex) {
+					// Use old
+					d.execCommand("useCSS", 0, !s);
+				}
+			};
+
+			if (isGecko || isOpera) {
+				set(true);
+				d.execCommand('hilitecolor', false, val);
+				set(false);
+			} else
+				d.execCommand('BackColor', false, val);
+		},
+
+		FormatBlock : function(ui, val) {
+			var t = this, ed = t.editor, s = ed.selection, dom = ed.dom, bl, nb, b;
+
+			function isBlock(n) {
+				return /^(P|DIV|H[1-6]|ADDRESS|BLOCKQUOTE|PRE)$/.test(n.nodeName);
+			};
+
+			bl = dom.getParent(s.getNode(), function(n) {
+				return isBlock(n);
+			});
+
+			// IE has an issue where it removes the parent div if you change format on the paragrah in <div><p>Content</p></div>
+			// FF and Opera doesn't change parent DIV elements if you switch format
+			if (bl) {
+				if ((isIE && isBlock(bl.parentNode)) || bl.nodeName == 'DIV') {
+					// Rename block element
+					nb = ed.dom.create(val);
+
+					each(dom.getAttribs(bl), function(v) {
+						dom.setAttrib(nb, v.nodeName, dom.getAttrib(bl, v.nodeName));
+					});
+
+					b = s.getBookmark();
+					dom.replace(nb, bl, 1);
+					s.moveToBookmark(b);
+					ed.nodeChanged();
+					return;
+				}
+			}
+
+			val = ed.settings.forced_root_block ? (val || '<p>') : val;
+
+			if (val.indexOf('<') == -1)
+				val = '<' + val + '>';
+
+			if (tinymce.isGecko)
+				val = val.replace(/<(div|blockquote|code|dt|dd|dl|samp)>/gi, '$1');
+
+			ed.getDoc().execCommand('FormatBlock', false, val);
+		},
+
+		mceCleanup : function() {
+			var ed = this.editor, s = ed.selection, b = s.getBookmark();
+			ed.setContent(ed.getContent());
+			s.moveToBookmark(b);
+		},
+
+		mceRemoveNode : function(ui, val) {
+			var ed = this.editor, s = ed.selection, b, n = val || s.getNode();
+
+			// Make sure that the body node isn't removed
+			if (n == ed.getBody())
+				return;
+
+			b = s.getBookmark();
+			ed.dom.remove(n, 1);
+			s.moveToBookmark(b);
+			ed.nodeChanged();
+		},
+
+		mceSelectNodeDepth : function(ui, val) {
+			var ed = this.editor, s = ed.selection, c = 0;
+
+			ed.dom.getParent(s.getNode(), function(n) {
+				if (n.nodeType == 1 && c++ == val) {
+					s.select(n);
+					ed.nodeChanged();
+					return false;
+				}
+			}, ed.getBody());
+		},
+
+		mceSelectNode : function(u, v) {
+			this.editor.selection.select(v);
+		},
+
+		mceInsertContent : function(ui, val) {
+			this.editor.selection.setContent(val);
+		},
+
+		mceInsertRawHTML : function(ui, val) {
+			var ed = this.editor;
+
+			ed.selection.setContent('tiny_mce_marker');
+			ed.setContent(ed.getContent().replace(/tiny_mce_marker/g, val));
+		},
+
+		mceRepaint : function() {
+			var s, b, e = this.editor;
+
+			if (tinymce.isGecko) {
+				try {
+					s = e.selection;
+					b = s.getBookmark(true);
+
+					if (s.getSel())
+						s.getSel().selectAllChildren(e.getBody());
+
+					s.collapse(true);
+					s.moveToBookmark(b);
+				} catch (ex) {
+					// Ignore
+				}
+			}
+		},
+
+		queryStateUnderline : function() {
+			var ed = this.editor, n = ed.selection.getNode();
+
+			if (n && n.nodeName == 'A')
+				return false;
+
+			return this._queryState('Underline');
+		},
+
+		queryStateOutdent : function() {
+			var ed = this.editor, n;
+
+			if (ed.settings.inline_styles) {
+				if ((n = ed.dom.getParent(ed.selection.getStart(), ed.dom.isBlock)) && parseInt(n.style.paddingLeft) > 0)
+					return true;
+
+				if ((n = ed.dom.getParent(ed.selection.getEnd(), ed.dom.isBlock)) && parseInt(n.style.paddingLeft) > 0)
+					return true;
+			}
+
+			return this.queryStateInsertUnorderedList() || this.queryStateInsertOrderedList() || (!ed.settings.inline_styles && !!ed.dom.getParent(ed.selection.getNode(), 'BLOCKQUOTE'));
+		},
+
+		queryStateInsertUnorderedList : function() {
+			return this.editor.dom.getParent(this.editor.selection.getNode(), 'UL');
+		},
+
+		queryStateInsertOrderedList : function() {
+			return this.editor.dom.getParent(this.editor.selection.getNode(), 'OL');
+		},
+
+		queryStatemceBlockQuote : function() {
+			return !!this.editor.dom.getParent(this.editor.selection.getStart(), function(n) {return n.nodeName === 'BLOCKQUOTE';});
+		},
+
+		_applyInlineStyle : function(na, at, op) {
+			var t = this, ed = t.editor, dom = ed.dom, bm, lo = {}, kh, found;
+
+			na = na.toUpperCase();
+
+			if (op && op.check_classes && at['class'])
+				op.check_classes.push(at['class']);
+
+			function removeEmpty() {
+				each(dom.select(na).reverse(), function(n) {
+					var c = 0;
+
+					// Check if there is any attributes
+					each(dom.getAttribs(n), function(an) {
+						if (an.nodeName.substring(0, 1) != '_' && dom.getAttrib(n, an.nodeName) != '') {
+							//console.log(dom.getOuterHTML(n), dom.getAttrib(n, an.nodeName));
+							c++;
+						}
+					});
+
+					// No attributes then remove the element and keep the children
+					if (c == 0)
+						dom.remove(n, 1);
+				});
+			};
+
+			function replaceFonts() {
+				var bm;
+
+				each(dom.select('span,font'), function(n) {
+					if (n.style.fontFamily == 'mceinline' || n.face == 'mceinline') {
+						if (!bm)
+							bm = ed.selection.getBookmark();
+
+						at._mce_new = '1';
+						dom.replace(dom.create(na, at), n, 1);
+					}
+				});
+
+				// Remove redundant elements
+				each(dom.select(na + '[_mce_new]'), function(n) {
+					function removeStyle(n) {
+						if (n.nodeType == 1) {
+							each(at.style, function(v, k) {
+								dom.setStyle(n, k, '');
+							});
+
+							// Remove spans with the same class or marked classes
+							if (at['class'] && n.className && op) {
+								each(op.check_classes, function(c) {
+									if (dom.hasClass(n, c))
+										dom.removeClass(n, c);
+								});
+							}
+						}
+					};
+
+					// Remove specified style information from child elements
+					each(dom.select(na, n), removeStyle);
+
+					// Remove the specified style information on parent if current node is only child (IE)
+					if (n.parentNode && n.parentNode.nodeType == 1 && n.parentNode.childNodes.length == 1)
+						removeStyle(n.parentNode);
+
+					// Remove the child elements style info if a parent already has it
+					dom.getParent(n.parentNode, function(pn) {
+						if (pn.nodeType == 1) {
+							if (at.style) {
+								each(at.style, function(v, k) {
+									var sv;
+
+									if (!lo[k] && (sv = dom.getStyle(pn, k))) {
+										if (sv === v)
+											dom.setStyle(n, k, '');
+
+										lo[k] = 1;
+									}
+								});
+							}
+
+							// Remove spans with the same class or marked classes
+							if (at['class'] && pn.className && op) {
+								each(op.check_classes, function(c) {
+									if (dom.hasClass(pn, c))
+										dom.removeClass(n, c);
+								});
+							}
+						}
+
+						return false;
+					});
+
+					n.removeAttribute('_mce_new');
+				});
+
+				removeEmpty();
+				ed.selection.moveToBookmark(bm);
+
+				return !!bm;
+			};
+
+			// Create inline elements
+			ed.focus();
+			ed.getDoc().execCommand('FontName', false, 'mceinline');
+			replaceFonts();
+
+			if (kh = t._applyInlineStyle.keyhandler) {
+				ed.onKeyUp.remove(kh);
+				ed.onKeyPress.remove(kh);
+				ed.onKeyDown.remove(kh);
+				ed.onSetContent.remove(t._applyInlineStyle.chandler);
+			}
+
+			if (ed.selection.isCollapsed()) {
+				// IE will format the current word so this code can't be executed on that browser
+				if (!isIE) {
+					each(dom.getParents(ed.selection.getNode(), 'span'), function(n) {
+						each(at.style, function(v, k) {
+							var kv;
+
+							if (kv = dom.getStyle(n, k)) {
+								if (kv == v) {
+									dom.setStyle(n, k, '');
+									found = 2;
+									return false;
+								}
+
+								found = 1;
+								return false;
+							}
+						});
+
+						if (found)
+							return false;
+					});
+
+					if (found == 2) {
+						bm = ed.selection.getBookmark();
+
+						removeEmpty();
+
+						ed.selection.moveToBookmark(bm);
+
+						// Node change needs to be detached since the onselect event
+						// for the select box will run the onclick handler after onselect call. Todo: Add a nicer fix!
+						window.setTimeout(function() {
+							ed.nodeChanged();
+						}, 1);
+
+						return;
+					}
+				}
+
+				// Start collecting styles
+				t._pendingStyles = tinymce.extend(t._pendingStyles || {}, at.style);
+
+				t._applyInlineStyle.chandler = ed.onSetContent.add(function() {
+					delete t._pendingStyles;
+				});
+
+				t._applyInlineStyle.keyhandler = kh = function(e) {
+					// Use pending styles
+					if (t._pendingStyles) {
+						at.style = t._pendingStyles;
+						delete t._pendingStyles;
+					}
+
+					if (replaceFonts()) {
+						ed.onKeyDown.remove(t._applyInlineStyle.keyhandler);
+						ed.onKeyPress.remove(t._applyInlineStyle.keyhandler);
+					}
+
+					if (e.type == 'keyup')
+						ed.onKeyUp.remove(t._applyInlineStyle.keyhandler);
+				};
+
+				ed.onKeyDown.add(kh);
+				ed.onKeyPress.add(kh);
+				ed.onKeyUp.add(kh);
+			} else
+				t._pendingStyles = 0;
+		}
+	});
+})(tinymce);(function(tinymce) {
+	tinymce.create('tinymce.UndoManager', {
+		index : 0,
+		data : null,
+		typing : 0,
+
+		UndoManager : function(ed) {
+			var t = this, Dispatcher = tinymce.util.Dispatcher;
+
+			t.editor = ed;
+			t.data = [];
+			t.onAdd = new Dispatcher(this);
+			t.onUndo = new Dispatcher(this);
+			t.onRedo = new Dispatcher(this);
+		},
+
+		add : function(l) {
+			var t = this, i, ed = t.editor, b, s = ed.settings, la;
+
+			l = l || {};
+			l.content = l.content || ed.getContent({format : 'raw', no_events : 1});
+
+			// Add undo level if needed
+			l.content = l.content.replace(/^\s*|\s*$/g, '');
+			la = t.data[t.index > 0 && (t.index == 0 || t.index == t.data.length) ? t.index - 1 : t.index];
+			if (!l.initial && la && l.content == la.content)
+				return null;
+
+			// Time to compress
+			if (s.custom_undo_redo_levels) {
+				if (t.data.length > s.custom_undo_redo_levels) {
+					for (i = 0; i < t.data.length - 1; i++)
+						t.data[i] = t.data[i + 1];
+
+					t.data.length--;
+					t.index = t.data.length;
+				}
+			}
+
+			if (s.custom_undo_redo_restore_selection && !l.initial)
+				l.bookmark = b = l.bookmark || ed.selection.getBookmark();
+
+			if (t.index < t.data.length)
+				t.index++;
+
+			// Only initial marked undo levels should be allowed as first item
+			// This to workaround a bug with Firefox and the blur event
+			if (t.data.length === 0 && !l.initial)
+				return null;
+
+			// Add level
+			t.data.length = t.index + 1;
+			t.data[t.index++] = l;
+
+			if (l.initial)
+				t.index = 0;
+
+			// Set initial bookmark use first real undo level
+			if (t.data.length == 2 && t.data[0].initial)
+				t.data[0].bookmark = b;
+
+			t.onAdd.dispatch(t, l);
+			ed.isNotDirty = 0;
+
+			//console.dir(t.data);
+
+			return l;
+		},
+
+		undo : function() {
+			var t = this, ed = t.editor, l = l, i;
+
+			if (t.typing) {
+				t.add();
+				t.typing = 0;
+			}
+
+			if (t.index > 0) {
+				// If undo on last index then take snapshot
+				if (t.index == t.data.length && t.index > 1) {
+					i = t.index;
+					t.typing = 0;
+
+					if (!t.add())
+						t.index = i;
+
+					--t.index;
+				}
+
+				l = t.data[--t.index];
+				ed.setContent(l.content, {format : 'raw'});
+				ed.selection.moveToBookmark(l.bookmark);
+
+				t.onUndo.dispatch(t, l);
+			}
+
+			return l;
+		},
+
+		redo : function() {
+			var t = this, ed = t.editor, l = null;
+
+			if (t.index < t.data.length - 1) {
+				l = t.data[++t.index];
+				ed.setContent(l.content, {format : 'raw'});
+				ed.selection.moveToBookmark(l.bookmark);
+
+				t.onRedo.dispatch(t, l);
+			}
+
+			return l;
+		},
+
+		clear : function() {
+			var t = this;
+
+			t.data = [];
+			t.index = 0;
+			t.typing = 0;
+			t.add({initial : true});
+		},
+
+		hasUndo : function() {
+			return this.index != 0 || this.typing;
+		},
+
+		hasRedo : function() {
+			return this.index < this.data.length - 1;
+		}
+
+		});
+})(tinymce);
+(function(tinymce) {
+	// Shorten names
+	var Event, isIE, isGecko, isOpera, each, extend;
+
+	Event = tinymce.dom.Event;
+	isIE = tinymce.isIE;
+	isGecko = tinymce.isGecko;
+	isOpera = tinymce.isOpera;
+	each = tinymce.each;
+	extend = tinymce.extend;
+
+	function isEmpty(n) {
+		n = n.innerHTML;
+
+		n = n.replace(/<(img|hr|table|input|select|textarea)[ \>]/gi, '-'); // Keep these convert them to - chars
+		n = n.replace(/<[^>]+>/g, ''); // Remove all tags
+
+		return n.replace(/[ \t\r\n]+/g, '') == '';
+	};
+
+	tinymce.create('tinymce.ForceBlocks', {
+		ForceBlocks : function(ed) {
+			var t = this, s = ed.settings, elm;
+
+			t.editor = ed;
+			t.dom = ed.dom;
+			elm = (s.forced_root_block || 'p').toLowerCase();
+			s.element = elm.toUpperCase();
+
+			ed.onPreInit.add(t.setup, t);
+
+			t.reOpera = new RegExp('(\\u00a0|&#160;|&nbsp;)<\/' + elm + '>', 'gi');
+			t.rePadd = new RegExp('<p( )([^>]+)><\\\/p>|<p( )([^>]+)\\\/>|<p( )([^>]+)>\\s+<\\\/p>|<p><\\\/p>|<p\\\/>|<p>\\s+<\\\/p>'.replace(/p/g, elm), 'gi');
+			t.reNbsp2BR1 = new RegExp('<p( )([^>]+)>[\\s\\u00a0]+<\\\/p>|<p>[\\s\\u00a0]+<\\\/p>'.replace(/p/g, elm), 'gi');
+			t.reNbsp2BR2 = new RegExp('<%p()([^>]+)>(&nbsp;|&#160;)<\\\/%p>|<%p>(&nbsp;|&#160;)<\\\/%p>'.replace(/%p/g, elm), 'gi');
+			t.reBR2Nbsp = new RegExp('<p( )([^>]+)>\\s*<br \\\/>\\s*<\\\/p>|<p>\\s*<br \\\/>\\s*<\\\/p>'.replace(/p/g, elm), 'gi');
+
+			function padd(ed, o) {
+				if (isOpera)
+					o.content = o.content.replace(t.reOpera, '</' + elm + '>');
+
+				o.content = o.content.replace(t.rePadd, '<' + elm + '$1$2$3$4$5$6>\u00a0</' + elm + '>');
+
+				if (!isIE && !isOpera && o.set) {
+					// Use &nbsp; instead of BR in padded paragraphs
+					o.content = o.content.replace(t.reNbsp2BR1, '<' + elm + '$1$2><br /></' + elm + '>');
+					o.content = o.content.replace(t.reNbsp2BR2, '<' + elm + '$1$2><br /></' + elm + '>');
+				} else
+					o.content = o.content.replace(t.reBR2Nbsp, '<' + elm + '$1$2>\u00a0</' + elm + '>');
+			};
+
+			ed.onBeforeSetContent.add(padd);
+			ed.onPostProcess.add(padd);
+
+			if (s.forced_root_block) {
+				ed.onInit.add(t.forceRoots, t);
+				ed.onSetContent.add(t.forceRoots, t);
+				ed.onBeforeGetContent.add(t.forceRoots, t);
+			}
+		},
+
+		setup : function() {
+			var t = this, ed = t.editor, s = ed.settings;
+
+			// Force root blocks when typing and when getting output
+			if (s.forced_root_block) {
+				ed.onKeyUp.add(t.forceRoots, t);
+				ed.onPreProcess.add(t.forceRoots, t);
+			}
+
+			if (s.force_br_newlines) {
+				// Force IE to produce BRs on enter
+				if (isIE) {
+					ed.onKeyPress.add(function(ed, e) {
+						var n, s = ed.selection;
+
+						if (e.keyCode == 13 && s.getNode().nodeName != 'LI') {
+							s.setContent('<br id="__" /> ', {format : 'raw'});
+							n = ed.dom.get('__');
+							n.removeAttribute('id');
+							s.select(n);
+							s.collapse();
+							return Event.cancel(e);
+						}
+					});
+				}
+
+				return;
+			}
+
+			if (!isIE && s.force_p_newlines) {
+/*				ed.onPreProcess.add(function(ed, o) {
+					each(ed.dom.select('br', o.node), function(n) {
+						var p = n.parentNode;
+
+						// Replace <p><br /></p> with <p>&nbsp;</p>
+						if (p && p.nodeName == 'p' && (p.childNodes.length == 1 || p.lastChild == n)) {
+							p.replaceChild(ed.getDoc().createTextNode('\u00a0'), n);
+						}
+					});
+				});*/
+
+				ed.onKeyPress.add(function(ed, e) {
+					if (e.keyCode == 13 && !e.shiftKey) {
+						if (!t.insertPara(e))
+							Event.cancel(e);
+					}
+				});
+
+				if (isGecko) {
+					ed.onKeyDown.add(function(ed, e) {
+						if ((e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey)
+							t.backspaceDelete(e, e.keyCode == 8);
+					});
+				}
+			}
+
+			function ren(rn, na) {
+				var ne = ed.dom.create(na);
+
+				each(rn.attributes, function(a) {
+					if (a.specified && a.nodeValue)
+						ne.setAttribute(a.nodeName.toLowerCase(), a.nodeValue);
+				});
+
+				each(rn.childNodes, function(n) {
+					ne.appendChild(n.cloneNode(true));
+				});
+
+				rn.parentNode.replaceChild(ne, rn);
+
+				return ne;
+			};
+
+			// Padd empty inline elements within block elements
+			// For example: <p><strong><em></em></strong></p> becomes <p><strong><em>&nbsp;</em></strong></p>
+			ed.onPreProcess.add(function(ed, o) {
+				each(ed.dom.select('p,h1,h2,h3,h4,h5,h6,div', o.node), function(p) {
+					if (isEmpty(p)) {
+						each(ed.dom.select('span,em,strong,b,i', o.node), function(n) {
+							if (!n.hasChildNodes()) {
+								n.appendChild(ed.getDoc().createTextNode('\u00a0'));
+								return false; // Break the loop one padding is enough
+							}
+						});
+					}
+				});
+			});
+
+			// IE specific fixes
+			if (isIE) {
+				// Replaces IE:s auto generated paragraphs with the specified element name
+				if (s.element != 'P') {
+					ed.onKeyPress.add(function(ed, e) {
+						t.lastElm = ed.selection.getNode().nodeName;
+					});
+
+					ed.onKeyUp.add(function(ed, e) {
+						var bl, sel = ed.selection, n = sel.getNode(), b = ed.getBody();
+
+						if (b.childNodes.length === 1 && n.nodeName == 'P') {
+							n = ren(n, s.element);
+							sel.select(n);
+							sel.collapse();
+							ed.nodeChanged();
+						} else if (e.keyCode == 13 && !e.shiftKey && t.lastElm != 'P') {
+							bl = ed.dom.getParent(n, 'p');
+
+							if (bl) {
+								ren(bl, s.element);
+								ed.nodeChanged();
+							}
+						}
+					});
+				}
+			}
+		},
+
+		find : function(n, t, s) {
+			var ed = this.editor, w = ed.getDoc().createTreeWalker(n, 4, null, false), c = -1;
+
+			while (n = w.nextNode()) {
+				c++;
+
+				// Index by node
+				if (t == 0 && n == s)
+					return c;
+
+				// Node by index
+				if (t == 1 && c == s)
+					return n;
+			}
+
+			return -1;
+		},
+
+		forceRoots : function(ed, e) {
+			var t = this, ed = t.editor, b = ed.getBody(), d = ed.getDoc(), se = ed.selection, s = se.getSel(), r = se.getRng(), si = -2, ei, so, eo, tr, c = -0xFFFFFF;
+			var nx, bl, bp, sp, le, nl = b.childNodes, i, n, eid;
+
+			// Fix for bug #1863847
+			//if (e && e.keyCode == 13)
+			//	return true;
+
+			// Wrap non blocks into blocks
+			for (i = nl.length - 1; i >= 0; i--) {
+				nx = nl[i];
+
+				// Is text or non block element
+				if (nx.nodeType == 3 || (!t.dom.isBlock(nx) && nx.nodeType != 8)) {
+					if (!bl) {
+						// Create new block but ignore whitespace
+						if (nx.nodeType != 3 || /[^\s]/g.test(nx.nodeValue)) {
+							// Store selection
+							if (si == -2 && r) {
+								if (!isIE) {
+									// If selection is element then mark it
+									if (r.startContainer.nodeType == 1 && (n = r.startContainer.childNodes[r.startOffset]) && n.nodeType == 1) {
+										// Save the id of the selected element
+										eid = n.getAttribute("id");
+										n.setAttribute("id", "__mce");
+									} else {
+										// If element is inside body, might not be the case in contentEdiable mode
+										if (ed.dom.getParent(r.startContainer, function(e) {return e === b;})) {
+											so = r.startOffset;
+											eo = r.endOffset;
+											si = t.find(b, 0, r.startContainer);
+											ei = t.find(b, 0, r.endContainer);
+										}
+									}
+								} else {
+									tr = d.body.createTextRange();
+									tr.moveToElementText(b);
+									tr.collapse(1);
+									bp = tr.move('character', c) * -1;
+
+									tr = r.duplicate();
+									tr.collapse(1);
+									sp = tr.move('character', c) * -1;
+
+									tr = r.duplicate();
+									tr.collapse(0);
+									le = (tr.move('character', c) * -1) - sp;
+
+									si = sp - bp;
+									ei = le;
+								}
+							}
+
+							bl = ed.dom.create(ed.settings.forced_root_block);
+							bl.appendChild(nx.cloneNode(1));
+							nx.parentNode.replaceChild(bl, nx);
+						}
+					} else {
+						if (bl.hasChildNodes())
+							bl.insertBefore(nx, bl.firstChild);
+						else
+							bl.appendChild(nx);
+					}
+				} else
+					bl = null; // Time to create new block
+			}
+
+			// Restore selection
+			if (si != -2) {
+				if (!isIE) {
+					bl = b.getElementsByTagName(ed.settings.element)[0];
+					r = d.createRange();
+
+					// Select last location or generated block
+					if (si != -1)
+						r.setStart(t.find(b, 1, si), so);
+					else
+						r.setStart(bl, 0);
+
+					// Select last location or generated block
+					if (ei != -1)
+						r.setEnd(t.find(b, 1, ei), eo);
+					else
+						r.setEnd(bl, 0);
+
+					if (s) {
+						s.removeAllRanges();
+						s.addRange(r);
+					}
+				} else {
+					try {
+						r = s.createRange();
+						r.moveToElementText(b);
+						r.collapse(1);
+						r.moveStart('character', si);
+						r.moveEnd('character', ei);
+						r.select();
+					} catch (ex) {
+						// Ignore
+					}
+				}
+			} else if (!isIE && (n = ed.dom.get('__mce'))) {
+				// Restore the id of the selected element
+				if (eid)
+					n.setAttribute('id', eid);
+				else
+					n.removeAttribute('id');
+
+				// Move caret before selected element
+				r = d.createRange();
+				r.setStartBefore(n);
+				r.setEndBefore(n);
+				se.setRng(r);
+			}
+		},
+
+		getParentBlock : function(n) {
+			var d = this.dom;
+
+			return d.getParent(n, d.isBlock);
+		},
+
+		insertPara : function(e) {
+			var t = this, ed = t.editor, dom = ed.dom, d = ed.getDoc(), se = ed.settings, s = ed.selection.getSel(), r = s.getRangeAt(0), b = d.body;
+			var rb, ra, dir, sn, so, en, eo, sb, eb, bn, bef, aft, sc, ec, n, vp = dom.getViewPort(ed.getWin()), y, ch, car;
+
+			// If root blocks are forced then use Operas default behavior since it's really good
+// Removed due to bug: #1853816
+//			if (se.forced_root_block && isOpera)
+//				return true;
+
+			// Setup before range
+			rb = d.createRange();
+
+			// If is before the first block element and in body, then move it into first block element
+			rb.setStart(s.anchorNode, s.anchorOffset);
+			rb.collapse(true);
+
+			// Setup after range
+			ra = d.createRange();
+
+			// If is before the first block element and in body, then move it into first block element
+			ra.setStart(s.focusNode, s.focusOffset);
+			ra.collapse(true);
+
+			// Setup start/end points
+			dir = rb.compareBoundaryPoints(rb.START_TO_END, ra) < 0;
+			sn = dir ? s.anchorNode : s.focusNode;
+			so = dir ? s.anchorOffset : s.focusOffset;
+			en = dir ? s.focusNode : s.anchorNode;
+			eo = dir ? s.focusOffset : s.anchorOffset;
+
+			// If selection is in empty table cell
+			if (sn === en && /^(TD|TH)$/.test(sn.nodeName)) {
+				if (sn.firstChild.nodeName == 'BR')
+					dom.remove(sn.firstChild); // Remove BR
+
+				// Create two new block elements
+				if (sn.childNodes.length == 0) {
+					ed.dom.add(sn, se.element, null, '<br />');
+					aft = ed.dom.add(sn, se.element, null, '<br />');
+				} else {
+					n = sn.innerHTML;
+					sn.innerHTML = '';
+					ed.dom.add(sn, se.element, null, n);
+					aft = ed.dom.add(sn, se.element, null, '<br />');
+				}
+
+				// Move caret into the last one
+				r = d.createRange();
+				r.selectNodeContents(aft);
+				r.collapse(1);
+				ed.selection.setRng(r);
+
+				return false;
+			}
+
+			// If the caret is in an invalid location in FF we need to move it into the first block
+			if (sn == b && en == b && b.firstChild && ed.dom.isBlock(b.firstChild)) {
+				sn = en = sn.firstChild;
+				so = eo = 0;
+				rb = d.createRange();
+				rb.setStart(sn, 0);
+				ra = d.createRange();
+				ra.setStart(en, 0);
+			}
+
+			// Never use body as start or end node
+			sn = sn.nodeName == "HTML" ? d.body : sn; // Fix for Opera bug: https://bugs.opera.com/show_bug.cgi?id=273224&comments=yes
+			sn = sn.nodeName == "BODY" ? sn.firstChild : sn;
+			en = en.nodeName == "HTML" ? d.body : en; // Fix for Opera bug: https://bugs.opera.com/show_bug.cgi?id=273224&comments=yes
+			en = en.nodeName == "BODY" ? en.firstChild : en;
+
+			// Get start and end blocks
+			sb = t.getParentBlock(sn);
+			eb = t.getParentBlock(en);
+			bn = sb ? sb.nodeName : se.element; // Get block name to create
+
+			// Return inside list use default browser behavior
+			if (t.dom.getParent(sb, 'ol,ul,pre'))
+				return true;
+
+			// If caption or absolute layers then always generate new blocks within
+			if (sb && (sb.nodeName == 'CAPTION' || /absolute|relative|fixed/gi.test(dom.getStyle(sb, 'position', 1)))) {
+				bn = se.element;
+				sb = null;
+			}
+
+			// If caption or absolute layers then always generate new blocks within
+			if (eb && (eb.nodeName == 'CAPTION' || /absolute|relative|fixed/gi.test(dom.getStyle(sb, 'position', 1)))) {
+				bn = se.element;
+				eb = null;
+			}
+
+			// Use P instead
+			if (/(TD|TABLE|TH|CAPTION)/.test(bn) || (sb && bn == "DIV" && /left|right/gi.test(dom.getStyle(sb, 'float', 1)))) {
+				bn = se.element;
+				sb = eb = null;
+			}
+
+			// Setup new before and after blocks
+			bef = (sb && sb.nodeName == bn) ? sb.cloneNode(0) : ed.dom.create(bn);
+			aft = (eb && eb.nodeName == bn) ? eb.cloneNode(0) : ed.dom.create(bn);
+
+			// Remove id from after clone
+			aft.removeAttribute('id');
+
+			// Is header and cursor is at the end, then force paragraph under
+			if (/^(H[1-6])$/.test(bn) && sn.nodeValue && so == sn.nodeValue.length)
+				aft = ed.dom.create(se.element);
+
+			// Find start chop node
+			n = sc = sn;
+			do {
+				if (n == b || n.nodeType == 9 || t.dom.isBlock(n) || /(TD|TABLE|TH|CAPTION)/.test(n.nodeName))
+					break;
+
+				sc = n;
+			} while ((n = n.previousSibling ? n.previousSibling : n.parentNode));
+
+			// Find end chop node
+			n = ec = en;
+			do {
+				if (n == b || n.nodeType == 9 || t.dom.isBlock(n) || /(TD|TABLE|TH|CAPTION)/.test(n.nodeName))
+					break;
+
+				ec = n;
+			} while ((n = n.nextSibling ? n.nextSibling : n.parentNode));
+
+			// Place first chop part into before block element
+			if (sc.nodeName == bn)
+				rb.setStart(sc, 0);
+			else
+				rb.setStartBefore(sc);
+
+			rb.setEnd(sn, so);
+			bef.appendChild(rb.cloneContents() || d.createTextNode('')); // Empty text node needed for Safari
+
+			// Place secnd chop part within new block element
+			try {
+				ra.setEndAfter(ec);
+			} catch(ex) {
+				//console.debug(s.focusNode, s.focusOffset);
+			}
+
+			ra.setStart(en, eo);
+			aft.appendChild(ra.cloneContents() || d.createTextNode('')); // Empty text node needed for Safari
+
+			// Create range around everything
+			r = d.createRange();
+			if (!sc.previousSibling && sc.parentNode.nodeName == bn) {
+				r.setStartBefore(sc.parentNode);
+			} else {
+				if (rb.startContainer.nodeName == bn && rb.startOffset == 0)
+					r.setStartBefore(rb.startContainer);
+				else
+					r.setStart(rb.startContainer, rb.startOffset);
+			}
+
+			if (!ec.nextSibling && ec.parentNode.nodeName == bn)
+				r.setEndAfter(ec.parentNode);
+			else
+				r.setEnd(ra.endContainer, ra.endOffset);
+
+			// Delete and replace it with new block elements
+			r.deleteContents();
+
+			if (isOpera)
+				ed.getWin().scrollTo(0, vp.y);
+
+			// Never wrap blocks in blocks
+			if (bef.firstChild && bef.firstChild.nodeName == bn)
+				bef.innerHTML = bef.firstChild.innerHTML;
+
+			if (aft.firstChild && aft.firstChild.nodeName == bn)
+				aft.innerHTML = aft.firstChild.innerHTML;
+
+			// Padd empty blocks
+			if (isEmpty(bef))
+				bef.innerHTML = '<br />';
+
+			function appendStyles(e, en) {
+				var nl = [], nn, n, i;
+
+				e.innerHTML = '';
+
+				// Make clones of style elements
+				if (se.keep_styles) {
+					n = en;
+					do {
+						// We only want style specific elements
+						if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(n.nodeName)) {
+							nn = n.cloneNode(false);
+							dom.setAttrib(nn, 'id', ''); // Remove ID since it needs to be unique
+							nl.push(nn);
+						}
+					} while (n = n.parentNode);
+				}
+
+				// Append style elements to aft
+				if (nl.length > 0) {
+					for (i = nl.length - 1, nn = e; i >= 0; i--)
+						nn = nn.appendChild(nl[i]);
+
+					// Padd most inner style element
+					nl[0].innerHTML = isOpera ? '&nbsp;' : '<br />'; // Extra space for Opera so that the caret can move there
+					return nl[0]; // Move caret to most inner element
+				} else
+					e.innerHTML = isOpera ? '&nbsp;' : '<br />'; // Extra space for Opera so that the caret can move there
+			};
+
+			// Fill empty afterblook with current style
+			if (isEmpty(aft))
+				car = appendStyles(aft, en);
+
+			// Opera needs this one backwards for older versions
+			if (isOpera && parseFloat(opera.version()) < 9.5) {
+				r.insertNode(bef);
+				r.insertNode(aft);
+			} else {
+				r.insertNode(aft);
+				r.insertNode(bef);
+			}
+
+			// Normalize
+			aft.normalize();
+			bef.normalize();
+
+			function first(n) {
+				return d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false).nextNode() || n;
+			};
+
+			// Move cursor and scroll into view
+			r = d.createRange();
+			r.selectNodeContents(isGecko ? first(car || aft) : car || aft);
+			r.collapse(1);
+			s.removeAllRanges();
+			s.addRange(r);
+
+			// scrollIntoView seems to scroll the parent window in most browsers now including FF 3.0b4 so it's time to stop using it and do it our selfs
+			y = ed.dom.getPos(aft).y;
+			ch = aft.clientHeight;
+
+			// Is element within viewport
+			if (y < vp.y || y + ch > vp.y + vp.h) {
+				ed.getWin().scrollTo(0, y < vp.y ? y : y - vp.h + 25); // Needs to be hardcoded to roughly one line of text if a huge text block is broken into two blocks
+				//console.debug('SCROLL!', 'vp.y: ' + vp.y, 'y' + y, 'vp.h' + vp.h, 'clientHeight' + aft.clientHeight, 'yyy: ' + (y < vp.y ? y : y - vp.h + aft.clientHeight));
+			}
+
+			return false;
+		},
+
+		backspaceDelete : function(e, bs) {
+			var t = this, ed = t.editor, b = ed.getBody(), n, se = ed.selection, r = se.getRng(), sc = r.startContainer, n, w, tn;
+
+			// The caret sometimes gets stuck in Gecko if you delete empty paragraphs
+			// This workaround removes the element by hand and moves the caret to the previous element
+			if (sc && ed.dom.isBlock(sc) && !/^(TD|TH)$/.test(sc.nodeName) && bs) {
+				if (sc.childNodes.length == 0 || (sc.childNodes.length == 1 && sc.firstChild.nodeName == 'BR')) {
+					// Find previous block element
+					n = sc;
+					while ((n = n.previousSibling) && !ed.dom.isBlock(n)) ;
+
+					if (n) {
+						if (sc != b.firstChild) {
+							// Find last text node
+							w = ed.dom.doc.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false);
+							while (tn = w.nextNode())
+								n = tn;
+
+							// Place caret at the end of last text node
+							r = ed.getDoc().createRange();
+							r.setStart(n, n.nodeValue ? n.nodeValue.length : 0);
+							r.setEnd(n, n.nodeValue ? n.nodeValue.length : 0);
+							se.setRng(r);
+
+							// Remove the target container
+							ed.dom.remove(sc);
+						}
+
+						return Event.cancel(e);
+					}
+				}
+			}
+
+			// Gecko generates BR elements here and there, we don't like those so lets remove them
+			function handler(e) {
+				var pr;
+
+				e = e.target;
+
+				// A new BR was created in a block element, remove it
+				if (e && e.parentNode && e.nodeName == 'BR' && (n = t.getParentBlock(e))) {
+					pr = e.previousSibling;
+
+					Event.remove(b, 'DOMNodeInserted', handler);
+
+					// Is there whitespace at the end of the node before then we might need the pesky BR
+					// to place the caret at a correct location see bug: #2013943
+					if (pr && pr.nodeType == 3 && /\s+$/.test(pr.nodeValue))
+						return;
+
+					// Only remove BR elements that got inserted in the middle of the text
+					if (e.previousSibling || e.nextSibling)
+						ed.dom.remove(e);
+				}
+			};
+
+			// Listen for new nodes
+			Event._add(b, 'DOMNodeInserted', handler);
+
+			// Remove listener
+			window.setTimeout(function() {
+				Event._remove(b, 'DOMNodeInserted', handler);
+			}, 1);
+		}
+	});
+})(tinymce);
+(function(tinymce) {
+	// Shorten names
+	var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, extend = tinymce.extend;
+
+	tinymce.create('tinymce.ControlManager', {
+		ControlManager : function(ed, s) {
+			var t = this, i;
+
+			s = s || {};
+			t.editor = ed;
+			t.controls = {};
+			t.onAdd = new tinymce.util.Dispatcher(t);
+			t.onPostRender = new tinymce.util.Dispatcher(t);
+			t.prefix = s.prefix || ed.id + '_';
+			t._cls = {};
+
+			t.onPostRender.add(function() {
+				each(t.controls, function(c) {
+					c.postRender();
+				});
+			});
+		},
+
+		get : function(id) {
+			return this.controls[this.prefix + id] || this.controls[id];
+		},
+
+		setActive : function(id, s) {
+			var c = null;
+
+			if (c = this.get(id))
+				c.setActive(s);
+
+			return c;
+		},
+
+		setDisabled : function(id, s) {
+			var c = null;
+
+			if (c = this.get(id))
+				c.setDisabled(s);
+
+			return c;
+		},
+
+		add : function(c) {
+			var t = this;
+
+			if (c) {
+				t.controls[c.id] = c;
+				t.onAdd.dispatch(c, t);
+			}
+
+			return c;
+		},
+
+		createControl : function(n) {
+			var c, t = this, ed = t.editor;
+
+			each(ed.plugins, function(p) {
+				if (p.createControl) {
+					c = p.createControl(n, t);
+
+					if (c)
+						return false;
+				}
+			});
+
+			switch (n) {
+				case "|":
+				case "separator":
+					return t.createSeparator();
+			}
+
+			if (!c && ed.buttons && (c = ed.buttons[n]))
+				return t.createButton(n, c);
+
+			return t.add(c);
+		},
+
+		createDropMenu : function(id, s, cc) {
+			var t = this, ed = t.editor, c, bm, v, cls;
+
+			s = extend({
+				'class' : 'mceDropDown',
+				constrain : ed.settings.constrain_menus
+			}, s);
+
+			s['class'] = s['class'] + ' ' + ed.getParam('skin') + 'Skin';
+			if (v = ed.getParam('skin_variant'))
+				s['class'] += ' ' + ed.getParam('skin') + 'Skin' + v.substring(0, 1).toUpperCase() + v.substring(1);
+
+			id = t.prefix + id;
+			cls = cc || t._cls.dropmenu || tinymce.ui.DropMenu;
+			c = t.controls[id] = new cls(id, s);
+			c.onAddItem.add(function(c, o) {
+				var s = o.settings;
+
+				s.title = ed.getLang(s.title, s.title);
+
+				if (!s.onclick) {
+					s.onclick = function(v) {
+						ed.execCommand(s.cmd, s.ui || false, s.value);
+					};
+				}
+			});
+
+			ed.onRemove.add(function() {
+				c.destroy();
+			});
+
+			// Fix for bug #1897785, #1898007
+			if (tinymce.isIE) {
+				c.onShowMenu.add(function() {
+					// IE 8 needs focus in order to store away a range with the current collapsed caret location
+					ed.focus();
+
+					bm = ed.selection.getBookmark(1);
+				});
+
+				c.onHideMenu.add(function() {
+					if (bm) {
+						ed.selection.moveToBookmark(bm);
+						bm = 0;
+					}
+				});
+			}
+
+			return t.add(c);
+		},
+
+		createListBox : function(id, s, cc) {
+			var t = this, ed = t.editor, cmd, c, cls;
+
+			if (t.get(id))
+				return null;
+
+			s.title = ed.translate(s.title);
+			s.scope = s.scope || ed;
+
+			if (!s.onselect) {
+				s.onselect = function(v) {
+					ed.execCommand(s.cmd, s.ui || false, v || s.value);
+				};
+			}
+
+			s = extend({
+				title : s.title,
+				'class' : 'mce_' + id,
+				scope : s.scope,
+				control_manager : t
+			}, s);
+
+			id = t.prefix + id;
+
+			if (ed.settings.use_native_selects)
+				c = new tinymce.ui.NativeListBox(id, s);
+			else {
+				cls = cc || t._cls.listbox || tinymce.ui.ListBox;
+				c = new cls(id, s);
+			}
+
+			t.controls[id] = c;
+
+			// Fix focus problem in Safari
+			if (tinymce.isWebKit) {
+				c.onPostRender.add(function(c, n) {
+					// Store bookmark on mousedown
+					Event.add(n, 'mousedown', function() {
+						ed.bookmark = ed.selection.getBookmark('simple');
+					});
+
+					// Restore on focus, since it might be lost
+					Event.add(n, 'focus', function() {
+						ed.selection.moveToBookmark(ed.bookmark);
+						ed.bookmark = null;
+					});
+				});
+			}
+
+			if (c.hideMenu)
+				ed.onMouseDown.add(c.hideMenu, c);
+
+			return t.add(c);
+		},
+
+		createButton : function(id, s, cc) {
+			var t = this, ed = t.editor, o, c, cls;
+
+			if (t.get(id))
+				return null;
+
+			s.title = ed.translate(s.title);
+			s.label = ed.translate(s.label);
+			s.scope = s.scope || ed;
+
+			if (!s.onclick && !s.menu_button) {
+				s.onclick = function() {
+					ed.execCommand(s.cmd, s.ui || false, s.value);
+				};
+			}
+
+			s = extend({
+				title : s.title,
+				'class' : 'mce_' + id,
+				unavailable_prefix : ed.getLang('unavailable', ''),
+				scope : s.scope,
+				control_manager : t
+			}, s);
+
+			id = t.prefix + id;
+
+			if (s.menu_button) {
+				cls = cc || t._cls.menubutton || tinymce.ui.MenuButton;
+				c = new cls(id, s);
+				ed.onMouseDown.add(c.hideMenu, c);
+			} else {
+				cls = t._cls.button || tinymce.ui.Button;
+				c = new cls(id, s);
+			}
+
+			return t.add(c);
+		},
+
+		createMenuButton : function(id, s, cc) {
+			s = s || {};
+			s.menu_button = 1;
+
+			return this.createButton(id, s, cc);
+		},
+
+		createSplitButton : function(id, s, cc) {
+			var t = this, ed = t.editor, cmd, c, cls;
+
+			if (t.get(id))
+				return null;
+
+			s.title = ed.translate(s.title);
+			s.scope = s.scope || ed;
+
+			if (!s.onclick) {
+				s.onclick = function(v) {
+					ed.execCommand(s.cmd, s.ui || false, v || s.value);
+				};
+			}
+
+			if (!s.onselect) {
+				s.onselect = function(v) {
+					ed.execCommand(s.cmd, s.ui || false, v || s.value);
+				};
+			}
+
+			s = extend({
+				title : s.title,
+				'class' : 'mce_' + id,
+				scope : s.scope,
+				control_manager : t
+			}, s);
+
+			id = t.prefix + id;
+			cls = cc || t._cls.splitbutton || tinymce.ui.SplitButton;
+			c = t.add(new cls(id, s));
+			ed.onMouseDown.add(c.hideMenu, c);
+
+			return c;
+		},
+
+		createColorSplitButton : function(id, s, cc) {
+			var t = this, ed = t.editor, cmd, c, cls, bm;
+
+			if (t.get(id))
+				return null;
+
+			s.title = ed.translate(s.title);
+			s.scope = s.scope || ed;
+
+			if (!s.onclick) {
+				s.onclick = function(v) {
+					if (tinymce.isIE)
+						bm = ed.selection.getBookmark(1);
+
+					ed.execCommand(s.cmd, s.ui || false, v || s.value);
+				};
+			}
+
+			if (!s.onselect) {
+				s.onselect = function(v) {
+					ed.execCommand(s.cmd, s.ui || false, v || s.value);
+				};
+			}
+
+			s = extend({
+				title : s.title,
+				'class' : 'mce_' + id,
+				'menu_class' : ed.getParam('skin') + 'Skin',
+				scope : s.scope,
+				more_colors_title : ed.getLang('more_colors')
+			}, s);
+
+			id = t.prefix + id;
+			cls = cc || t._cls.colorsplitbutton || tinymce.ui.ColorSplitButton;
+			c = new cls(id, s);
+			ed.onMouseDown.add(c.hideMenu, c);
+
+			// Remove the menu element when the editor is removed
+			ed.onRemove.add(function() {
+				c.destroy();
+			});
+
+			// Fix for bug #1897785, #1898007
+			if (tinymce.isIE) {
+				c.onShowMenu.add(function() {
+					// IE 8 needs focus in order to store away a range with the current collapsed caret location
+					ed.focus();
+					bm = ed.selection.getBookmark(1);
+				});
+
+				c.onHideMenu.add(function() {
+					if (bm) {
+						ed.selection.moveToBookmark(bm);
+						bm = 0;
+					}
+				});
+			}
+
+			return t.add(c);
+		},
+
+		createToolbar : function(id, s, cc) {
+			var c, t = this, cls;
+
+			id = t.prefix + id;
+			cls = cc || t._cls.toolbar || tinymce.ui.Toolbar;
+			c = new cls(id, s);
+
+			if (t.get(id))
+				return null;
+
+			return t.add(c);
+		},
+
+		createSeparator : function(cc) {
+			var cls = cc || this._cls.separator || tinymce.ui.Separator;
+
+			return new cls();
+		},
+
+		setControlType : function(n, c) {
+			return this._cls[n.toLowerCase()] = c;
+		},
+
+		destroy : function() {
+			each(this.controls, function(c) {
+				c.destroy();
+			});
+
+			this.controls = null;
+		}
+
+		});
+})(tinymce);
+(function(tinymce) {
+	var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each, isIE = tinymce.isIE, isOpera = tinymce.isOpera;
+
+	tinymce.create('tinymce.WindowManager', {
+		WindowManager : function(ed) {
+			var t = this;
+
+			t.editor = ed;
+			t.onOpen = new Dispatcher(t);
+			t.onClose = new Dispatcher(t);
+			t.params = {};
+			t.features = {};
+		},
+
+		open : function(s, p) {
+			var t = this, f = '', x, y, mo = t.editor.settings.dialog_type == 'modal', w, sw, sh, vp = tinymce.DOM.getViewPort(), u;
+
+			// Default some options
+			s = s || {};
+			p = p || {};
+			sw = isOpera ? vp.w : screen.width; // Opera uses windows inside the Opera window
+			sh = isOpera ? vp.h : screen.height;
+			s.name = s.name || 'mc_' + new Date().getTime();
+			s.width = parseInt(s.width || 320);
+			s.height = parseInt(s.height || 240);
+			s.resizable = true;
+			s.left = s.left || parseInt(sw / 2.0) - (s.width / 2.0);
+			s.top = s.top || parseInt(sh / 2.0) - (s.height / 2.0);
+			p.inline = false;
+			p.mce_width = s.width;
+			p.mce_height = s.height;
+			p.mce_auto_focus = s.auto_focus;
+
+			if (mo) {
+				if (isIE) {
+					s.center = true;
+					s.help = false;
+					s.dialogWidth = s.width + 'px';
+					s.dialogHeight = s.height + 'px';
+					s.scroll = s.scrollbars || false;
+				}
+			}
+
+			// Build features string
+			each(s, function(v, k) {
+				if (tinymce.is(v, 'boolean'))
+					v = v ? 'yes' : 'no';
+
+				if (!/^(name|url)$/.test(k)) {
+					if (isIE && mo)
+						f += (f ? ';' : '') + k + ':' + v;
+					else
+						f += (f ? ',' : '') + k + '=' + v;
+				}
+			});
+
+			t.features = s;
+			t.params = p;
+			t.onOpen.dispatch(t, s, p);
+
+			u = s.url || s.file;
+			u = tinymce._addVer(u);
+
+			try {
+				if (isIE && mo) {
+					w = 1;
+					window.showModalDialog(u, window, f);
+				} else
+					w = window.open(u, s.name, f);
+			} catch (ex) {
+				// Ignore
+			}
+
+			if (!w)
+				alert(t.editor.getLang('popup_blocked'));
+		},
+
+		close : function(w) {
+			w.close();
+			this.onClose.dispatch(this);
+		},
+
+		createInstance : function(cl, a, b, c, d, e) {
+			var f = tinymce.resolve(cl);
+
+			return new f(a, b, c, d, e);
+		},
+
+		confirm : function(t, cb, s, w) {
+			w = w || window;
+
+			cb.call(s || this, w.confirm(this._decode(this.editor.getLang(t, t))));
+		},
+
+		alert : function(tx, cb, s, w) {
+			var t = this;
+
+			w = w || window;
+			w.alert(t._decode(t.editor.getLang(tx, tx)));
+
+			if (cb)
+				cb.call(s || t);
+		},
+
+		// Internal functions
+
+		_decode : function(s) {
+			return tinymce.DOM.decode(s).replace(/\\n/g, '\n');
+		}
+
+		});
+}(tinymce));(function(tinymce) {
+	tinymce.CommandManager = function() {
+		var execCommands = {}, queryStateCommands = {}, queryValueCommands = {};
+
+		function add(collection, cmd, func, scope) {
+			if (typeof(cmd) == 'string')
+				cmd = [cmd];
+
+			tinymce.each(cmd, function(cmd) {
+				collection[cmd.toLowerCase()] = {func : func, scope : scope};
+			});
+		};
+
+		tinymce.extend(this, {
+			add : function(cmd, func, scope) {
+				add(execCommands, cmd, func, scope);
+			},
+
+			addQueryStateHandler : function(cmd, func, scope) {
+				add(queryStateCommands, cmd, func, scope);
+			},
+
+			addQueryValueHandler : function(cmd, func, scope) {
+				add(queryValueCommands, cmd, func, scope);
+			},
+
+			execCommand : function(scope, cmd, ui, value, args) {
+				if (cmd = execCommands[cmd.toLowerCase()]) {
+					if (cmd.func.call(scope || cmd.scope, ui, value, args) !== false)
+						return true;
+				}
+			},
+
+			queryCommandValue : function() {
+				if (cmd = queryValueCommands[cmd.toLowerCase()])
+					return cmd.func.call(scope || cmd.scope, ui, value, args);
+			},
+
+			queryCommandState : function() {
+				if (cmd = queryStateCommands[cmd.toLowerCase()])
+					return cmd.func.call(scope || cmd.scope, ui, value, args);
+			}
+		});
+	};
+
+	tinymce.GlobalCommands = new tinymce.CommandManager();
+})(tinymce);(function(tinymce) {
+	function processRange(dom, start, end, callback) {
+		var ancestor, n, startPoint, endPoint, sib;
+
+		function findEndPoint(n, c) {
+			do {
+				if (n.parentNode == c)
+					return n;
+
+				n = n.parentNode;
+			} while(n);
+		};
+
+		function process(n) {
+			callback(n);
+			tinymce.walk(n, callback, 'childNodes');
+		};
+
+		// Find common ancestor and end points
+		ancestor = dom.findCommonAncestor(start, end);
+		startPoint = findEndPoint(start, ancestor) || start;
+		endPoint = findEndPoint(end, ancestor) || end;
+
+		// Process left leaf
+		for (n = start; n && n != startPoint; n = n.parentNode) {
+			for (sib = n.nextSibling; sib; sib = sib.nextSibling)
+				process(sib);
+		}
+
+		// Process middle from start to end point
+		if (startPoint != endPoint) {
+			for (n = startPoint.nextSibling; n && n != endPoint; n = n.nextSibling)
+				process(n);
+		} else
+			process(startPoint);
+
+		// Process right leaf
+		for (n = end; n && n != endPoint; n = n.parentNode) {
+			for (sib = n.previousSibling; sib; sib = sib.previousSibling)
+				process(sib);
+		}
+	};
+
+	tinymce.GlobalCommands.add('RemoveFormat', function() {
+		var ed = this, dom = ed.dom, s = ed.selection, r = s.getRng(1), nodes = [], bm, start, end, sc, so, ec, eo, n;
+
+		function findFormatRoot(n) {
+			var sp;
+
+			dom.getParent(n, function(n) {
+				if (dom.is(n, ed.getParam('removeformat_selector')))
+					sp = n;
+
+				return dom.isBlock(n);
+			}, ed.getBody());
+
+			return sp;
+		};
+
+		function collect(n) {
+			if (dom.is(n, ed.getParam('removeformat_selector')))
+				nodes.push(n);
+		};
+
+		function walk(n) {
+			collect(n);
+			tinymce.walk(n, collect, 'childNodes');
+		};
+
+		bm = s.getBookmark();
+		sc = r.startContainer;
+		ec = r.endContainer;
+		so = r.startOffset;
+		eo = r.endOffset;
+		sc = sc.nodeType == 1 ? sc.childNodes[Math.min(so, sc.childNodes.length - 1)] : sc;
+		ec = ec.nodeType == 1 ? ec.childNodes[Math.min(so == eo ? eo : eo - 1, ec.childNodes.length - 1)] : ec;
+
+		// Same container
+		if (sc == ec) { // TEXT_NODE
+			start = findFormatRoot(sc);
+
+			// Handle single text node
+			if (sc.nodeType == 3) {
+				if (start && start.nodeType == 1) { // ELEMENT
+					n = sc.splitText(so);
+					n.splitText(eo - so);
+					dom.split(start, n);
+
+					s.moveToBookmark(bm);
+				}
+
+				return;
+			}
+
+			// Handle single element
+			walk(dom.split(start, sc) || sc);
+		} else {
+			// Find start/end format root
+			start = findFormatRoot(sc);
+			end = findFormatRoot(ec);
+
+			// Split start text node
+			if (start) {
+				if (sc.nodeType == 3) { // TEXT
+					// Since IE doesn't support white space nodes in the DOM we need to
+					// add this invisible character so that the splitText function can split the contents
+					if (so == sc.nodeValue.length)
+						sc.nodeValue += '\uFEFF'; // Yet another pesky IE fix
+
+					sc = sc.splitText(so);
+				}
+			}
+
+			// Split end text node
+			if (end) {
+				if (ec.nodeType == 3) // TEXT
+					ec.splitText(eo);
+			}
+
+			// If the start and end format root is the same then we need to wrap
+			// the end node in a span since the split calls might change the reference
+			// Example: <p><b><em>x[yz<span>---</span>12]3</em></b></p>
+			if (start && start == end)
+				dom.replace(dom.create('span', {id : '__end'}, ec.cloneNode(true)), ec);
+
+			// Split all start containers down to the format root
+			if (start)
+				start = dom.split(start, sc);
+			else
+				start = sc;
+
+			// If there is a span wrapper use that one instead
+			if (n = dom.get('__end')) {
+				ec = n;
+				end = findFormatRoot(ec);
+			}
+
+			// Split all end containers down to the format root
+			if (end)
+				end = dom.split(end, ec);
+			else
+				end = ec;
+
+			// Collect nodes in between
+			processRange(dom, start, end, collect);
+
+			// Remove invisible character for IE workaround if we find it
+			if (sc.nodeValue == '\uFEFF')
+				sc.nodeValue = '';
+
+			// Process start/end container elements
+			walk(ec);
+			walk(sc);
+		}
+
+		// Remove all collected nodes
+		tinymce.each(nodes, function(n) {
+			dom.remove(n, 1);
+		});
+
+		// Remove leftover wrapper
+		dom.remove('__end', 1);
+
+		s.moveToBookmark(bm);
+	});
+})(tinymce);
+(function(tinymce) {
+	tinymce.GlobalCommands.add('mceBlockQuote', function() {
+		var ed = this, s = ed.selection, dom = ed.dom, sb, eb, n, bm, bq, r, bq2, i, nl;
+
+		function getBQ(e) {
+			return dom.getParent(e, function(n) {return n.nodeName === 'BLOCKQUOTE';});
+		};
+
+		// Get start/end block
+		sb = dom.getParent(s.getStart(), dom.isBlock);
+		eb = dom.getParent(s.getEnd(), dom.isBlock);
+
+		// Remove blockquote(s)
+		if (bq = getBQ(sb)) {
+			if (sb != eb || sb.childNodes.length > 1 || (sb.childNodes.length == 1 && sb.firstChild.nodeName != 'BR'))
+				bm = s.getBookmark();
+
+			// Move all elements after the end block into new bq
+			if (getBQ(eb)) {
+				bq2 = bq.cloneNode(false);
+
+				while (n = eb.nextSibling)
+					bq2.appendChild(n.parentNode.removeChild(n));
+			}
+
+			// Add new bq after
+			if (bq2)
+				dom.insertAfter(bq2, bq);
+
+			// Move all selected blocks after the current bq
+			nl = s.getSelectedBlocks(sb, eb);
+			for (i = nl.length - 1; i >= 0; i--) {
+				dom.insertAfter(nl[i], bq);
+			}
+
+			// Empty bq, then remove it
+			if (/^\s*$/.test(bq.innerHTML))
+				dom.remove(bq, 1); // Keep children so boomark restoration works correctly
+
+			// Empty bq, then remote it
+			if (bq2 && /^\s*$/.test(bq2.innerHTML))
+				dom.remove(bq2, 1); // Keep children so boomark restoration works correctly
+
+			if (!bm) {
+				// Move caret inside empty block element
+				if (!tinymce.isIE) {
+					r = ed.getDoc().createRange();
+					r.setStart(sb, 0);
+					r.setEnd(sb, 0);
+					s.setRng(r);
+				} else {
+					s.select(sb);
+					s.collapse(0);
+
+					// IE misses the empty block some times element so we must move back the caret
+					if (dom.getParent(s.getStart(), dom.isBlock) != sb) {
+						r = s.getRng();
+						r.move('character', -1);
+						r.select();
+					}
+				}
+			} else
+				ed.selection.moveToBookmark(bm);
+
+			return;
+		}
+
+		// Since IE can start with a totally empty document we need to add the first bq and paragraph
+		if (tinymce.isIE && !sb && !eb) {
+			ed.getDoc().execCommand('Indent');
+			n = getBQ(s.getNode());
+			n.style.margin = n.dir = ''; // IE adds margin and dir to bq
+			return;
+		}
+
+		if (!sb || !eb)
+			return;
+
+		// If empty paragraph node then do not use bookmark
+		if (sb != eb || sb.childNodes.length > 1 || (sb.childNodes.length == 1 && sb.firstChild.nodeName != 'BR'))
+			bm = s.getBookmark();
+
+		// Move selected block elements into a bq
+		tinymce.each(s.getSelectedBlocks(getBQ(s.getStart()), getBQ(s.getEnd())), function(e) {
+			// Found existing BQ add to this one
+			if (e.nodeName == 'BLOCKQUOTE' && !bq) {
+				bq = e;
+				return;
+			}
+
+			// No BQ found, create one
+			if (!bq) {
+				bq = dom.create('blockquote');
+				e.parentNode.insertBefore(bq, e);
+			}
+
+			// Add children from existing BQ
+			if (e.nodeName == 'BLOCKQUOTE' && bq) {
+				n = e.firstChild;
+
+				while (n) {
+					bq.appendChild(n.cloneNode(true));
+					n = n.nextSibling;
+				}
+
+				dom.remove(e);
+				return;
+			}
+
+			// Add non BQ element to BQ
+			bq.appendChild(dom.remove(e));
+		});
+
+		if (!bm) {
+			// Move caret inside empty block element
+			if (!tinymce.isIE) {
+				r = ed.getDoc().createRange();
+				r.setStart(sb, 0);
+				r.setEnd(sb, 0);
+				s.setRng(r);
+			} else {
+				s.select(sb);
+				s.collapse(1);
+			}
+		} else
+			s.moveToBookmark(bm);
+	});
+})(tinymce);
+(function(tinymce) {
+	tinymce.each(['Cut', 'Copy', 'Paste'], function(cmd) {
+		tinymce.GlobalCommands.add(cmd, function() {
+			var ed = this, doc = ed.getDoc();
+
+			try {
+				doc.execCommand(cmd, false, null);
+
+				// On WebKit the command will just be ignored if it's not enabled
+				if (!doc.queryCommandSupported(cmd))
+					throw 'Error';
+			} catch (ex) {
+				ed.windowManager.alert(ed.getLang('clipboard_no_support'));
+			}
+		});
+	});
+})(tinymce);
+(function(tinymce) {
+	tinymce.GlobalCommands.add('InsertHorizontalRule', function() {
+		if (tinymce.isOpera)
+			return this.getDoc().execCommand('InsertHorizontalRule', false, '');
+
+		this.selection.setContent('<hr />');
+	});
+})(tinymce);
+(function() {
+	var cmds = tinymce.GlobalCommands;
+
+	cmds.add(['mceEndUndoLevel', 'mceAddUndoLevel'], function() {
+		this.undoManager.add();
+	});
+
+	cmds.add('Undo', function() {
+		var ed = this;
+
+		if (ed.settings.custom_undo_redo) {
+			ed.undoManager.undo();
+			ed.nodeChanged();
+			return true;
+		}
+
+		return false; // Run browser command
+	});
+
+	cmds.add('Redo', function() {
+		var ed = this;
+
+		if (ed.settings.custom_undo_redo) {
+			ed.undoManager.redo();
+			ed.nodeChanged();
+			return true;
+		}
+
+		return false; // Run browser command
+	});
+})();
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/utils/editable_selects.js 12/plugins/editors/tinymce/jscripts/tiny_mce/utils/editable_selects.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/utils/editable_selects.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/utils/editable_selects.js	2009-06-30 22:01:34.000000000 +0200
@@ -1,61 +1,69 @@
-/**
- * $Id: editable_selects.js 162 2007-01-03 16:16:52Z spocke $
- *
- * Makes select boxes editable.
- *
- * @author Moxiecode
- * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-var TinyMCE_EditableSelects = {
-	editSelectElm : null,
-
-	init : function() {
-		var nl = document.getElementsByTagName("select"), i, d = document, o;
-
-		for (i=0; i<nl.length; i++) {
-			if (nl[i].className.indexOf('mceEditableSelect') != -1) {
-				o = new Option('(value)', '__mce_add_custom__');
-
-				o.className = 'mceAddSelectValue';
-
-				nl[i].options[nl[i].options.length] = o;
-				nl[i].setAttribute('onchange', 'TinyMCE_EditableSelects.onChangeEditableSelect(this);');
-			}
-		}
-	},
-
-	onChangeEditableSelect : function(se) {
-		var d = document, ne;
-
-		if (se.options[se.selectedIndex].value == '__mce_add_custom__') {
-			ne = d.createElement("input");
-			ne.id = se.id + "_custom";
-			ne.name = se.name + "_custom";
-			ne.type = "text";
-
-			ne.style.width = se.clientWidth;
-			se.parentNode.insertBefore(ne, se);
-			se.style.display = 'none';
-			ne.focus();
-			ne.onblur = TinyMCE_EditableSelects.onBlurEditableSelectInput;
-			TinyMCE_EditableSelects.editSelectElm = se;
-		}
-	},
-
-	onBlurEditableSelectInput : function() {
-		var se = TinyMCE_EditableSelects.editSelectElm;
-
-		if (se) {
-			if (se.previousSibling.value != '') {
-				addSelectValue(document.forms[0], se.id, se.previousSibling.value, se.previousSibling.value);
-				selectByValue(document.forms[0], se.id, se.previousSibling.value);
-			} else
-				selectByValue(document.forms[0], se.id, '');
-
-			se.style.display = 'inline';
-			se.parentNode.removeChild(se.previousSibling);
-			TinyMCE_EditableSelects.editSelectElm = null;
-		}
-	}
-};
+/**
+ * $Id: editable_selects.js 867 2008-06-09 20:33:40Z spocke $
+ *
+ * Makes select boxes editable.
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+var TinyMCE_EditableSelects = {
+	editSelectElm : null,
+
+	init : function() {
+		var nl = document.getElementsByTagName("select"), i, d = document, o;
+
+		for (i=0; i<nl.length; i++) {
+			if (nl[i].className.indexOf('mceEditableSelect') != -1) {
+				o = new Option('(value)', '__mce_add_custom__');
+
+				o.className = 'mceAddSelectValue';
+
+				nl[i].options[nl[i].options.length] = o;
+				nl[i].onchange = TinyMCE_EditableSelects.onChangeEditableSelect;
+			}
+		}
+	},
+
+	onChangeEditableSelect : function(e) {
+		var d = document, ne, se = window.event ? window.event.srcElement : e.target;
+
+		if (se.options[se.selectedIndex].value == '__mce_add_custom__') {
+			ne = d.createElement("input");
+			ne.id = se.id + "_custom";
+			ne.name = se.name + "_custom";
+			ne.type = "text";
+
+			ne.style.width = se.offsetWidth + 'px';
+			se.parentNode.insertBefore(ne, se);
+			se.style.display = 'none';
+			ne.focus();
+			ne.onblur = TinyMCE_EditableSelects.onBlurEditableSelectInput;
+			ne.onkeydown = TinyMCE_EditableSelects.onKeyDown;
+			TinyMCE_EditableSelects.editSelectElm = se;
+		}
+	},
+
+	onBlurEditableSelectInput : function() {
+		var se = TinyMCE_EditableSelects.editSelectElm;
+
+		if (se) {
+			if (se.previousSibling.value != '') {
+				addSelectValue(document.forms[0], se.id, se.previousSibling.value, se.previousSibling.value);
+				selectByValue(document.forms[0], se.id, se.previousSibling.value);
+			} else
+				selectByValue(document.forms[0], se.id, '');
+
+			se.style.display = 'inline';
+			se.parentNode.removeChild(se.previousSibling);
+			TinyMCE_EditableSelects.editSelectElm = null;
+		}
+	},
+
+	onKeyDown : function(e) {
+		e = e || window.event;
+
+		if (e.keyCode == 13)
+			TinyMCE_EditableSelects.onBlurEditableSelectInput();
+	}
+};
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/utils/form_utils.js 12/plugins/editors/tinymce/jscripts/tiny_mce/utils/form_utils.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/utils/form_utils.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/utils/form_utils.js	2009-06-30 22:01:34.000000000 +0200
@@ -1,210 +1,199 @@
-/**
- * $Id: form_utils.js 162 2007-01-03 16:16:52Z spocke $
- *
- * Various form utilitiy functions.
- *
- * @author Moxiecode
- * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-var themeBaseURL = tinyMCE.baseURL + '/themes/' + tinyMCE.getParam("theme");
-
-function getColorPickerHTML(id, target_form_element) {
-	var h = "";
-
-	h += '<a id="' + id + '_link" href="javascript:void(0);" onkeydown="pickColor(event,\'' + target_form_element +'\');" onmousedown="pickColor(event,\'' + target_form_element +'\');return false;">';
-	h += '<img id="' + id + '" src="' + themeBaseURL + '/images/color.gif"';
-	h += ' onmouseover="this.className=\'mceButtonOver\'"';
-	h += ' onmouseout="this.className=\'mceButtonNormal\'"';
-	h += ' onmousedown="this.className=\'mceButtonDown\'"';
-	h += ' width="20" height="16" border="0" title="' + tinyMCE.getLang('lang_browse') + '"';
-	h += ' class="mceButtonNormal" alt="' + tinyMCE.getLang('lang_browse') + '" /></a>';
-
-	return h;
-}
-
-function pickColor(e, target_form_element) {
-	if ((e.keyCode == 32 || e.keyCode == 13) || e.type == "mousedown")
-		tinyMCEPopup.pickColor(e, target_form_element);
-}
-
-function updateColor(img_id, form_element_id) {
-	document.getElementById(img_id).style.backgroundColor = document.forms[0].elements[form_element_id].value;
-}
-
-function setBrowserDisabled(id, state) {
-	var img = document.getElementById(id);
-	var lnk = document.getElementById(id + "_link");
-
-	if (lnk) {
-		if (state) {
-			lnk.setAttribute("realhref", lnk.getAttribute("href"));
-			lnk.removeAttribute("href");
-			tinyMCE.switchClass(img, 'mceButtonDisabled', true);
-		} else {
-			lnk.setAttribute("href", lnk.getAttribute("realhref"));
-			tinyMCE.switchClass(img, 'mceButtonNormal', false);
-		}
-	}
-}
-
-function getBrowserHTML(id, target_form_element, type, prefix) {
-	var option = prefix + "_" + type + "_browser_callback";
-	var cb = tinyMCE.getParam(option, tinyMCE.getParam("file_browser_callback"));
-	if (cb == null)
-		return "";
-
-	var html = "";
-
-	html += '<a id="' + id + '_link" href="javascript:openBrower(\'' + id + '\',\'' + target_form_element + '\', \'' + type + '\',\'' + option + '\');" onmousedown="return false;">';
-	html += '<img id="' + id + '" src="' + themeBaseURL + '/images/browse.gif"';
-	html += ' onmouseover="this.className=\'mceButtonOver\';"';
-	html += ' onmouseout="this.className=\'mceButtonNormal\';"';
-	html += ' onmousedown="this.className=\'mceButtonDown\';"';
-	html += ' width="20" height="18" border="0" title="' + tinyMCE.getLang('lang_browse') + '"';
-	html += ' class="mceButtonNormal" alt="' + tinyMCE.getLang('lang_browse') + '" /></a>';
-
-	return html;
-}
-
-function openBrower(img_id, target_form_element, type, option) {
-	var img = document.getElementById(img_id);
-
-	if (img.className != "mceButtonDisabled")
-		tinyMCEPopup.openBrowser(target_form_element, type, option);
-}
-
-function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
-	if (!form_obj || !form_obj.elements[field_name])
-		return;
-
-	var sel = form_obj.elements[field_name];
-
-	var found = false;
-	for (var i=0; i<sel.options.length; i++) {
-		var option = sel.options[i];
-
-		if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {
-			option.selected = true;
-			found = true;
-		} else
-			option.selected = false;
-	}
-
-	if (!found && add_custom && value != '') {
-		var option = new Option(value, value);
-		option.selected = true;
-		sel.options[sel.options.length] = option;
-		sel.selectedIndex = sel.options.length - 1;
-	}
-
-	return found;
-}
-
-function getSelectValue(form_obj, field_name) {
-	var elm = form_obj.elements[field_name];
-
-	if (elm == null || elm.options == null)
-		return "";
-
-	return elm.options[elm.selectedIndex].value;
-}
-
-function addSelectValue(form_obj, field_name, name, value) {
-	var s = form_obj.elements[field_name];
-	var o = new Option(name, value);
-	s.options[s.options.length] = o;
-}
-
-function addClassesToList(list_id, specific_option) {
-	// Setup class droplist
-	var styleSelectElm = document.getElementById(list_id);
-	var styles = tinyMCE.getParam('theme_advanced_styles', false);
-	styles = tinyMCE.getParam(specific_option, styles);
-
-	if (styles) {
-		var stylesAr = styles.split(';');
-
-		for (var i=0; i<stylesAr.length; i++) {
-			if (stylesAr != "") {
-				var key, value;
-
-				key = stylesAr[i].split('=')[0];
-				value = stylesAr[i].split('=')[1];
-
-				styleSelectElm.options[styleSelectElm.length] = new Option(key, value);
-			}
-		}
-	} else {
-		// Use auto impored classes
-		var csses = tinyMCE.getCSSClasses(tinyMCE.getWindowArg('editor_id'));
-		for (var i=0; i<csses.length; i++)
-			styleSelectElm.options[styleSelectElm.length] = new Option(csses[i], csses[i]);
-	}
-}
-
-function isVisible(element_id) {
-	var elm = document.getElementById(element_id);
-
-	return elm && elm.style.display != "none";
-}
-
-function convertRGBToHex(col) {
-	var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
-
-	var rgb = col.replace(re, "$1,$2,$3").split(',');
-	if (rgb.length == 3) {
-		r = parseInt(rgb[0]).toString(16);
-		g = parseInt(rgb[1]).toString(16);
-		b = parseInt(rgb[2]).toString(16);
-
-		r = r.length == 1 ? '0' + r : r;
-		g = g.length == 1 ? '0' + g : g;
-		b = b.length == 1 ? '0' + b : b;
-
-		return "#" + r + g + b;
-	}
-
-	return col;
-}
-
-function convertHexToRGB(col) {
-	if (col.indexOf('#') != -1) {
-		col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
-
-		r = parseInt(col.substring(0, 2), 16);
-		g = parseInt(col.substring(2, 4), 16);
-		b = parseInt(col.substring(4, 6), 16);
-
-		return "rgb(" + r + "," + g + "," + b + ")";
-	}
-
-	return col;
-}
-
-function trimSize(size) {
-	return size.replace(new RegExp('[^0-9%]', 'gi'), '');
-}
-
-function getCSSSize(size) {
-	size = trimSize(size);
-
-	if (size == "")
-		return "";
-
-	return size.indexOf('%') != -1 ? size : size + "px";
-}
-
-function getStyle(elm, attrib, style) {
-	var val = tinyMCE.getAttrib(elm, attrib);
-
-	if (val != '')
-		return '' + val;
-
-	if (typeof(style) == 'undefined')
-		style = attrib;
-
-	val = eval('elm.style.' + style);
-
-	return val == null ? '' : '' + val;
-}
+/**
+ * $Id: form_utils.js 996 2009-02-06 17:32:20Z spocke $
+ *
+ * Various form utilitiy functions.
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+var themeBaseURL = tinyMCEPopup.editor.baseURI.toAbsolute('themes/' + tinyMCEPopup.getParam("theme"));
+
+function getColorPickerHTML(id, target_form_element) {
+	var h = "";
+
+	h += '<a id="' + id + '_link" href="javascript:;" onclick="tinyMCEPopup.pickColor(event,\'' + target_form_element +'\');" onmousedown="return false;" class="pickcolor">';
+	h += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '">&nbsp;</span></a>';
+
+	return h;
+}
+
+function updateColor(img_id, form_element_id) {
+	document.getElementById(img_id).style.backgroundColor = document.forms[0].elements[form_element_id].value;
+}
+
+function setBrowserDisabled(id, state) {
+	var img = document.getElementById(id);
+	var lnk = document.getElementById(id + "_link");
+
+	if (lnk) {
+		if (state) {
+			lnk.setAttribute("realhref", lnk.getAttribute("href"));
+			lnk.removeAttribute("href");
+			tinyMCEPopup.dom.addClass(img, 'disabled');
+		} else {
+			if (lnk.getAttribute("realhref"))
+				lnk.setAttribute("href", lnk.getAttribute("realhref"));
+
+			tinyMCEPopup.dom.removeClass(img, 'disabled');
+		}
+	}
+}
+
+function getBrowserHTML(id, target_form_element, type, prefix) {
+	var option = prefix + "_" + type + "_browser_callback", cb, html;
+
+	cb = tinyMCEPopup.getParam(option, tinyMCEPopup.getParam("file_browser_callback"));
+
+	if (!cb)
+		return "";
+
+	html = "";
+	html += '<a id="' + id + '_link" href="javascript:openBrowser(\'' + id + '\',\'' + target_form_element + '\', \'' + type + '\',\'' + option + '\');" onmousedown="return false;" class="browse">';
+	html += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '">&nbsp;</span></a>';
+
+	return html;
+}
+
+function openBrowser(img_id, target_form_element, type, option) {
+	var img = document.getElementById(img_id);
+
+	if (img.className != "mceButtonDisabled")
+		tinyMCEPopup.openBrowser(target_form_element, type, option);
+}
+
+function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
+	if (!form_obj || !form_obj.elements[field_name])
+		return;
+
+	var sel = form_obj.elements[field_name];
+
+	var found = false;
+	for (var i=0; i<sel.options.length; i++) {
+		var option = sel.options[i];
+
+		if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {
+			option.selected = true;
+			found = true;
+		} else
+			option.selected = false;
+	}
+
+	if (!found && add_custom && value != '') {
+		var option = new Option(value, value);
+		option.selected = true;
+		sel.options[sel.options.length] = option;
+		sel.selectedIndex = sel.options.length - 1;
+	}
+
+	return found;
+}
+
+function getSelectValue(form_obj, field_name) {
+	var elm = form_obj.elements[field_name];
+
+	if (elm == null || elm.options == null)
+		return "";
+
+	return elm.options[elm.selectedIndex].value;
+}
+
+function addSelectValue(form_obj, field_name, name, value) {
+	var s = form_obj.elements[field_name];
+	var o = new Option(name, value);
+	s.options[s.options.length] = o;
+}
+
+function addClassesToList(list_id, specific_option) {
+	// Setup class droplist
+	var styleSelectElm = document.getElementById(list_id);
+	var styles = tinyMCEPopup.getParam('theme_advanced_styles', false);
+	styles = tinyMCEPopup.getParam(specific_option, styles);
+
+	if (styles) {
+		var stylesAr = styles.split(';');
+
+		for (var i=0; i<stylesAr.length; i++) {
+			if (stylesAr != "") {
+				var key, value;
+
+				key = stylesAr[i].split('=')[0];
+				value = stylesAr[i].split('=')[1];
+
+				styleSelectElm.options[styleSelectElm.length] = new Option(key, value);
+			}
+		}
+	} else {
+		tinymce.each(tinyMCEPopup.editor.dom.getClasses(), function(o) {
+			styleSelectElm.options[styleSelectElm.length] = new Option(o.title || o['class'], o['class']);
+		});
+	}
+}
+
+function isVisible(element_id) {
+	var elm = document.getElementById(element_id);
+
+	return elm && elm.style.display != "none";
+}
+
+function convertRGBToHex(col) {
+	var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
+
+	var rgb = col.replace(re, "$1,$2,$3").split(',');
+	if (rgb.length == 3) {
+		r = parseInt(rgb[0]).toString(16);
+		g = parseInt(rgb[1]).toString(16);
+		b = parseInt(rgb[2]).toString(16);
+
+		r = r.length == 1 ? '0' + r : r;
+		g = g.length == 1 ? '0' + g : g;
+		b = b.length == 1 ? '0' + b : b;
+
+		return "#" + r + g + b;
+	}
+
+	return col;
+}
+
+function convertHexToRGB(col) {
+	if (col.indexOf('#') != -1) {
+		col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
+
+		r = parseInt(col.substring(0, 2), 16);
+		g = parseInt(col.substring(2, 4), 16);
+		b = parseInt(col.substring(4, 6), 16);
+
+		return "rgb(" + r + "," + g + "," + b + ")";
+	}
+
+	return col;
+}
+
+function trimSize(size) {
+	return size.replace(/([0-9\.]+)px|(%|in|cm|mm|em|ex|pt|pc)/, '$1$2');
+}
+
+function getCSSSize(size) {
+	size = trimSize(size);
+
+	if (size == "")
+		return "";
+
+	// Add px
+	if (/^[0-9]+$/.test(size))
+		size += 'px';
+
+	return size;
+}
+
+function getStyle(elm, attrib, style) {
+	var val = tinyMCEPopup.dom.getAttrib(elm, attrib);
+
+	if (val != '')
+		return '' + val;
+
+	if (typeof(style) == 'undefined')
+		style = attrib;
+
+	return tinyMCEPopup.dom.getStyle(elm, style);
+}
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/utils/mctabs.js 12/plugins/editors/tinymce/jscripts/tiny_mce/utils/mctabs.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/utils/mctabs.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/utils/mctabs.js	2009-06-30 22:01:34.000000000 +0200
@@ -1,74 +1,76 @@
-/**
- * $Id: mctabs.js 162 2007-01-03 16:16:52Z spocke $
- *
- * Moxiecode DHTML Tabs script.
- *
- * @author Moxiecode
- * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-function MCTabs() {
-	this.settings = new Array();
-};
-
-MCTabs.prototype.init = function(settings) {
-	this.settings = settings;
-};
-
-MCTabs.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;
-};
-
-MCTabs.prototype.displayTab = function(tab_id, panel_id) {
-	var panelElm = document.getElementById(panel_id);
-	var panelContainerElm = panelElm ? panelElm.parentNode : null;
-	var tabElm = document.getElementById(tab_id);
-	var tabContainerElm = tabElm ? tabElm.parentNode : null;
-	var selectionClass = this.getParam('selection_class', 'current');
-
-	if (tabElm && tabContainerElm) {
-		var nodes = tabContainerElm.childNodes;
-
-		// Hide all other tabs
-		for (var i=0; i<nodes.length; i++) {
-			if (nodes[i].nodeName == "LI")
-				nodes[i].className = '';
-		}
-
-		// Show selected tab
-		tabElm.className = 'current';
-	}
-
-	if (panelElm && panelContainerElm) {
-		var nodes = panelContainerElm.childNodes;
-
-		// Hide all other panels
-		for (var i=0; i<nodes.length; i++) {
-			if (nodes[i].nodeName == "DIV")
-				nodes[i].className = 'panel';
-		}
-
-		// Show selected panel
-		panelElm.className = 'current';
-	}
-};
-
-MCTabs.prototype.getAnchor = function() {
-	var pos, url = document.location.href;
-
-	if ((pos = url.lastIndexOf('#')) != -1)
-		return url.substring(pos + 1);
-
-	return "";
-};
-
-// Global instance
-var mcTabs = new MCTabs();
+/**
+ * $Id: mctabs.js 758 2008-03-30 13:53:29Z spocke $
+ *
+ * Moxiecode DHTML Tabs script.
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+function MCTabs() {
+	this.settings = [];
+};
+
+MCTabs.prototype.init = function(settings) {
+	this.settings = settings;
+};
+
+MCTabs.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;
+};
+
+MCTabs.prototype.displayTab = function(tab_id, panel_id) {
+	var panelElm, panelContainerElm, tabElm, tabContainerElm, selectionClass, nodes, i;
+
+	panelElm= document.getElementById(panel_id);
+	panelContainerElm = panelElm ? panelElm.parentNode : null;
+	tabElm = document.getElementById(tab_id);
+	tabContainerElm = tabElm ? tabElm.parentNode : null;
+	selectionClass = this.getParam('selection_class', 'current');
+
+	if (tabElm && tabContainerElm) {
+		nodes = tabContainerElm.childNodes;
+
+		// Hide all other tabs
+		for (i = 0; i < nodes.length; i++) {
+			if (nodes[i].nodeName == "LI")
+				nodes[i].className = '';
+		}
+
+		// Show selected tab
+		tabElm.className = 'current';
+	}
+
+	if (panelElm && panelContainerElm) {
+		nodes = panelContainerElm.childNodes;
+
+		// Hide all other panels
+		for (i = 0; i < nodes.length; i++) {
+			if (nodes[i].nodeName == "DIV")
+				nodes[i].className = 'panel';
+		}
+
+		// Show selected panel
+		panelElm.className = 'current';
+	}
+};
+
+MCTabs.prototype.getAnchor = function() {
+	var pos, url = document.location.href;
+
+	if ((pos = url.lastIndexOf('#')) != -1)
+		return url.substring(pos + 1);
+
+	return "";
+};
+
+// Global instance
+var mcTabs = new MCTabs();
diff -aruN --binary 11/plugins/editors/tinymce/jscripts/tiny_mce/utils/validate.js 12/plugins/editors/tinymce/jscripts/tiny_mce/utils/validate.js
--- 11/plugins/editors/tinymce/jscripts/tiny_mce/utils/validate.js	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/tinymce/jscripts/tiny_mce/utils/validate.js	2009-06-30 22:01:34.000000000 +0200
@@ -1,219 +1,219 @@
-/**
- * $Id: validate.js 162 2007-01-03 16:16:52Z spocke $
- *
- * Various form validation methods.
- *
- * @author Moxiecode
- * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
- */
-
-/**
-	// String validation:
-
-	if (!Validator.isEmail('myemail'))
-		alert('Invalid email.');
-
-	// Form validation:
-
-	var f = document.forms['myform'];
-
-	if (!Validator.isEmail(f.myemail))
-		alert('Invalid email.');
-*/
-
-var Validator = {
-	isEmail : function(s) {
-		return this.test(s, '^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$');
-	},
-
-	isAbsUrl : function(s) {
-		return this.test(s, '^(news|telnet|nttp|file|http|ftp|https)://[-A-Za-z0-9\\.]+\\/?.*$');
-	},
-
-	isSize : function(s) {
-		return this.test(s, '^[0-9]+(px|%)?$');
-	},
-
-	isId : function(s) {
-		return this.test(s, '^[A-Za-z_]([A-Za-z0-9_])*$');
-	},
-
-	isEmpty : function(s) {
-		var nl, i;
-
-		if (s.nodeName == 'SELECT' && s.selectedIndex < 1)
-			return true;
-
-		if (s.type == 'checkbox' && !s.checked)
-			return true;
-
-		if (s.type == 'radio') {
-			for (i=0, nl = s.form.elements; i<nl.length; i++) {
-				if (nl[i].type == "radio" && nl[i].name == s.name && nl[i].checked)
-					return false;
-			}
-
-			return true;
-		}
-
-		return new RegExp('^\\s*$').test(s.nodeType == 1 ? s.value : s);
-	},
-
-	isNumber : function(s, d) {
-		return !isNaN(s.nodeType == 1 ? s.value : s) && (!d || !this.test(s, '^-?[0-9]*\\.[0-9]*$'));
-	},
-
-	test : function(s, p) {
-		s = s.nodeType == 1 ? s.value : s;
-
-		return s == '' || new RegExp(p).test(s);
-	}
-};
-
-var AutoValidator = {
-	settings : {
-		id_cls : 'id',
-		int_cls : 'int',
-		url_cls : 'url',
-		number_cls : 'number',
-		email_cls : 'email',
-		size_cls : 'size',
-		required_cls : 'required',
-		invalid_cls : 'invalid',
-		min_cls : 'min',
-		max_cls : 'max'
-	},
-
-	init : function(s) {
-		var n;
-
-		for (n in s)
-			this.settings[n] = s[n];
-	},
-
-	validate : function(f) {
-		var i, nl, s = this.settings, c = 0;
-
-		nl = this.tags(f, 'label');
-		for (i=0; i<nl.length; i++)
-			this.removeClass(nl[i], s.invalid_cls);
-
-		c += this.validateElms(f, 'input');
-		c += this.validateElms(f, 'select');
-		c += this.validateElms(f, 'textarea');
-
-		return c == 3;
-	},
-
-	invalidate : function(n) {
-		this.mark(n.form, n);
-	},
-
-	reset : function(e) {
-		var t = new Array('label', 'input', 'select', 'textarea');
-		var i, j, nl, s = this.settings;
-
-		if (e == null)
-			return;
-
-		for (i=0; i<t.length; i++) {
-			nl = this.tags(e.form ? e.form : e, t[i]);
-			for (j=0; j<nl.length; j++)
-				this.removeClass(nl[j], s.invalid_cls);
-		}
-	},
-
-	validateElms : function(f, e) {
-		var nl, i, n, s = this.settings, st = true, va = Validator, v;
-
-		nl = this.tags(f, e);
-		for (i=0; i<nl.length; i++) {
-			n = nl[i];
-
-			this.removeClass(n, s.invalid_cls);
-
-			if (this.hasClass(n, s.required_cls) && va.isEmpty(n))
-				st = this.mark(f, n);
-
-			if (this.hasClass(n, s.number_cls) && !va.isNumber(n))
-				st = this.mark(f, n);
-
-			if (this.hasClass(n, s.int_cls) && !va.isNumber(n, true))
-				st = this.mark(f, n);
-
-			if (this.hasClass(n, s.url_cls) && !va.isAbsUrl(n))
-				st = this.mark(f, n);
-
-			if (this.hasClass(n, s.email_cls) && !va.isEmail(n))
-				st = this.mark(f, n);
-
-			if (this.hasClass(n, s.size_cls) && !va.isSize(n))
-				st = this.mark(f, n);
-
-			if (this.hasClass(n, s.id_cls) && !va.isId(n))
-				st = this.mark(f, n);
-
-			if (this.hasClass(n, s.min_cls, true)) {
-				v = this.getNum(n, s.min_cls);
-
-				if (isNaN(v) || parseInt(n.value) < parseInt(v))
-					st = this.mark(f, n);
-			}
-
-			if (this.hasClass(n, s.max_cls, true)) {
-				v = this.getNum(n, s.max_cls);
-
-				if (isNaN(v) || parseInt(n.value) > parseInt(v))
-					st = this.mark(f, n);
-			}
-		}
-
-		return st;
-	},
-
-	hasClass : function(n, c, d) {
-		return new RegExp('\\b' + c + (d ? '[0-9]+' : '') + '\\b', 'g').test(n.className);
-	},
-
-	getNum : function(n, c) {
-		c = n.className.match(new RegExp('\\b' + c + '([0-9]+)\\b', 'g'))[0];
-		c = c.replace(/[^0-9]/g, '');
-
-		return c;
-	},
-
-	addClass : function(n, c, b) {
-		var o = this.removeClass(n, c);
-		n.className = b ? c + (o != '' ? (' ' + o) : '') : (o != '' ? (o + ' ') : '') + c;
-	},
-
-	removeClass : function(n, c) {
-		c = n.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' ');
-		return n.className = c != ' ' ? c : '';
-	},
-
-	tags : function(f, s) {
-		return f.getElementsByTagName(s);
-	},
-
-	mark : function(f, n) {
-		var s = this.settings;
-
-		this.addClass(n, s.invalid_cls);
-		this.markLabels(f, n, s.invalid_cls);
-
-		return false;
-	},
-
-	markLabels : function(f, n, ic) {
-		var nl, i;
-
-		nl = this.tags(f, "label");
-		for (i=0; i<nl.length; i++) {
-			if (nl[i].getAttribute("for") == n.id || nl[i].htmlFor == n.id)
-				this.addClass(nl[i], ic);
-		}
-
-		return null;
-	}
-};
+/**
+ * $Id: validate.js 758 2008-03-30 13:53:29Z spocke $
+ *
+ * Various form validation methods.
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+/**
+	// String validation:
+
+	if (!Validator.isEmail('myemail'))
+		alert('Invalid email.');
+
+	// Form validation:
+
+	var f = document.forms['myform'];
+
+	if (!Validator.isEmail(f.myemail))
+		alert('Invalid email.');
+*/
+
+var Validator = {
+	isEmail : function(s) {
+		return this.test(s, '^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$');
+	},
+
+	isAbsUrl : function(s) {
+		return this.test(s, '^(news|telnet|nttp|file|http|ftp|https)://[-A-Za-z0-9\\.]+\\/?.*$');
+	},
+
+	isSize : function(s) {
+		return this.test(s, '^[0-9]+(%|in|cm|mm|em|ex|pt|pc|px)?$');
+	},
+
+	isId : function(s) {
+		return this.test(s, '^[A-Za-z_]([A-Za-z0-9_])*$');
+	},
+
+	isEmpty : function(s) {
+		var nl, i;
+
+		if (s.nodeName == 'SELECT' && s.selectedIndex < 1)
+			return true;
+
+		if (s.type == 'checkbox' && !s.checked)
+			return true;
+
+		if (s.type == 'radio') {
+			for (i=0, nl = s.form.elements; i<nl.length; i++) {
+				if (nl[i].type == "radio" && nl[i].name == s.name && nl[i].checked)
+					return false;
+			}
+
+			return true;
+		}
+
+		return new RegExp('^\\s*$').test(s.nodeType == 1 ? s.value : s);
+	},
+
+	isNumber : function(s, d) {
+		return !isNaN(s.nodeType == 1 ? s.value : s) && (!d || !this.test(s, '^-?[0-9]*\\.[0-9]*$'));
+	},
+
+	test : function(s, p) {
+		s = s.nodeType == 1 ? s.value : s;
+
+		return s == '' || new RegExp(p).test(s);
+	}
+};
+
+var AutoValidator = {
+	settings : {
+		id_cls : 'id',
+		int_cls : 'int',
+		url_cls : 'url',
+		number_cls : 'number',
+		email_cls : 'email',
+		size_cls : 'size',
+		required_cls : 'required',
+		invalid_cls : 'invalid',
+		min_cls : 'min',
+		max_cls : 'max'
+	},
+
+	init : function(s) {
+		var n;
+
+		for (n in s)
+			this.settings[n] = s[n];
+	},
+
+	validate : function(f) {
+		var i, nl, s = this.settings, c = 0;
+
+		nl = this.tags(f, 'label');
+		for (i=0; i<nl.length; i++)
+			this.removeClass(nl[i], s.invalid_cls);
+
+		c += this.validateElms(f, 'input');
+		c += this.validateElms(f, 'select');
+		c += this.validateElms(f, 'textarea');
+
+		return c == 3;
+	},
+
+	invalidate : function(n) {
+		this.mark(n.form, n);
+	},
+
+	reset : function(e) {
+		var t = ['label', 'input', 'select', 'textarea'];
+		var i, j, nl, s = this.settings;
+
+		if (e == null)
+			return;
+
+		for (i=0; i<t.length; i++) {
+			nl = this.tags(e.form ? e.form : e, t[i]);
+			for (j=0; j<nl.length; j++)
+				this.removeClass(nl[j], s.invalid_cls);
+		}
+	},
+
+	validateElms : function(f, e) {
+		var nl, i, n, s = this.settings, st = true, va = Validator, v;
+
+		nl = this.tags(f, e);
+		for (i=0; i<nl.length; i++) {
+			n = nl[i];
+
+			this.removeClass(n, s.invalid_cls);
+
+			if (this.hasClass(n, s.required_cls) && va.isEmpty(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.number_cls) && !va.isNumber(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.int_cls) && !va.isNumber(n, true))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.url_cls) && !va.isAbsUrl(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.email_cls) && !va.isEmail(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.size_cls) && !va.isSize(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.id_cls) && !va.isId(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.min_cls, true)) {
+				v = this.getNum(n, s.min_cls);
+
+				if (isNaN(v) || parseInt(n.value) < parseInt(v))
+					st = this.mark(f, n);
+			}
+
+			if (this.hasClass(n, s.max_cls, true)) {
+				v = this.getNum(n, s.max_cls);
+
+				if (isNaN(v) || parseInt(n.value) > parseInt(v))
+					st = this.mark(f, n);
+			}
+		}
+
+		return st;
+	},
+
+	hasClass : function(n, c, d) {
+		return new RegExp('\\b' + c + (d ? '[0-9]+' : '') + '\\b', 'g').test(n.className);
+	},
+
+	getNum : function(n, c) {
+		c = n.className.match(new RegExp('\\b' + c + '([0-9]+)\\b', 'g'))[0];
+		c = c.replace(/[^0-9]/g, '');
+
+		return c;
+	},
+
+	addClass : function(n, c, b) {
+		var o = this.removeClass(n, c);
+		n.className = b ? c + (o != '' ? (' ' + o) : '') : (o != '' ? (o + ' ') : '') + c;
+	},
+
+	removeClass : function(n, c) {
+		c = n.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' ');
+		return n.className = c != ' ' ? c : '';
+	},
+
+	tags : function(f, s) {
+		return f.getElementsByTagName(s);
+	},
+
+	mark : function(f, n) {
+		var s = this.settings;
+
+		this.addClass(n, s.invalid_cls);
+		this.markLabels(f, n, s.invalid_cls);
+
+		return false;
+	},
+
+	markLabels : function(f, n, ic) {
+		var nl, i;
+
+		nl = this.tags(f, "label");
+		for (i=0; i<nl.length; i++) {
+			if (nl[i].getAttribute("for") == n.id || nl[i].htmlFor == n.id)
+				this.addClass(nl[i], ic);
+		}
+
+		return null;
+	}
+};
diff -aruN --binary 11/plugins/editors/tinymce.php 12/plugins/editors/tinymce.php
--- 11/plugins/editors/tinymce.php	2008-09-09 17:19:42.000000000 +0200
+++ 12/plugins/editors/tinymce.php	2009-06-30 22:01:34.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version		$Id: tinymce.php 10709 2008-08-21 09:58:52Z eddieajau $
+ * @version		$Id: tinymce.php 12354 2009-06-24 14:38:24Z ian $
  * @package		Joomla
  * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
  * @license		GNU/GPL, see LICENSE.php
@@ -50,287 +50,497 @@
 	 */
 	function onInit()
 	{
-		global $mainframe;
-		$db			=& JFactory::getDBO();
+		$mainframe = &JFactory::getApplication();
+
 		$language	=& JFactory::getLanguage();
 
-		$theme = $this->params->get( 'theme', 'advanced' );
-		// handling for former default option
-		if ($theme == 'default' ) {
-			$theme = 'advanced';
+		$mode = $this->params->get('mode','advanced');
+		$theme = array('simple' => 'simple','advanced' => 'advanced','extended' => 'advanced');
+		$skin = $this->params->get( 'skin', '0' );
+		switch ($skin)
+		{
+			case '3':
+				$skin = "skin : \"o2k7\", skin_variant : \"black\",";
+				break;
+			case '2':
+				$skin = "skin : \"o2k7\", skin_variant : \"silver\",";
+				break;
+			case '1':
+				$skin = "skin : \"o2k7\",";
+				break;
+			case '0':
+			default:
+				$skin = "skin : \"default\",";
 		}
+		$compressed			= $this->params->def( 'compressed', 0 );
 
-		$toolbar 			= $this->params->def( 'toolbar', 'top' );
-		$html_height		= $this->params->def( 'html_height', '550' );
-		$html_width			= $this->params->def( 'html_width', '750' );
-		$content_css		= $this->params->def( 'content_css', 1 );
-		$content_css_custom	= $this->params->def( 'content_css_custom', '' );
-		$invalid_elements	= $this->params->def( 'invalid_elements', 'script,applet,iframe' );
-		$newlines			= $this->params->def( 'newlines', 0 );
 		$cleanup_startup	= $this->params->def( 'cleanup_startup', 0 );
 		$cleanup_save		= $this->params->def( 'cleanup_save', 2 );
-		$compressed			= $this->params->def( 'compressed', 0 );
-		$langPrefix			= $this->params->def( 'lang_code', 'en' );
+		$entity_encoding	= $this->params->def( 'entity_encoding', 'raw' );
+		if ( $cleanup_startup ) {
+			$cleanup_startup = 'true';
+		} else {
+			$cleanup_startup = 'false';
+		}
+		switch ( $cleanup_save ) {
+			case '0': /* Never clean up on save */
+				$cleanup = 'false';
+				break;
+			case '1': /* Clean up front end edits only */
+				if ($mainframe->isadmin())
+					$cleanup = 'false';
+				else
+					$cleanup = 'true';
+				break;
+			default:  /* Always clean up on save */
+				$cleanup = 'true';
+				break;
+		}
+
 		$langMode			= $this->params->def( 'lang_mode', 0 );
-		$relative_urls		= $this->params->def( 'relative_urls', 		0 );
-		$clear_entities		= $this->params->def( 'clear_entities', 0 );
+		$langPrefix			= $this->params->def( 'lang_code', 'en' );
+		if ($langMode) {
+			$langPrefix = substr( $language->getTag(), 0, strpos( $language->getTag(), '-' ) );
+		}
+		if ($language->isRTL()) {
+			$text_direction = 'rtl';
+		} else {
+			$text_direction = 'ltr';
+		}
+
+		$content_css		= $this->params->def( 'content_css', 1 );
+		$content_css_custom	= $this->params->def( 'content_css_custom', '' );
+		// loading of css file for `styles` dropdown
+		if ( $content_css_custom ) {
+			$content_css = 'content_css : "'. $content_css_custom .'", ';
+		}
+		else {
+			/*
+			 * Lets get the default template for the site application
+			 */
+			$db =& JFactory::getDBO();
+			$query = 'SELECT template'
+			. ' FROM #__templates_menu'
+			. ' WHERE client_id = 0'
+			. ' AND menuid = 0'
+			;
+			$db->setQuery( $query );
+			$template = $db->loadResult();
+
+			if($content_css)
+			{
+				$file_path = JPATH_SITE .'/templates/'. $template .'/css/';
+			        // Try for site css
+			        $file_name = "template";
+
+			        if ($language->isRTL()) {
+					$file_name .= "_rtl.css";
+				} else {
+					$file_name .= ".css";
+				}
+
+				if ( file_exists( $file_path .DS. $file_name ) ) {
+					$content_css = 'content_css : "' . JURI::root() .'templates/'. $template . '/css/'.$file_name.', ' . JURI::root() .'templates/system/css/editor.css"';
+				} else {
+					$content_css = 'content_css : "' . JURI::root() .'templates/system/css/editor.css"';
+				}
+			} else {
+				$content_css = '';
+			}
+		}
+
+		$relative_urls		= $this->params->def( 'relative_urls', '1' );
+		if ( $relative_urls ) { // relative
+			$relative_urls = "true";
+		} else { // absolute
+			$relative_urls = "false";
+		}
+
+		$newlines = $this->params->def( 'newlines', 0 );
+		if ( $newlines ) { // br
+			$forcenewline = "force_br_newlines : \"true\", force_p_newlines : \"false\", forced_root_block : '',";
+		} else { // p
+			$forcenewline = "force_br_newlines : \"false\", force_p_newlines : \"true\", forced_root_block : 'p',";
+		}
+		$invalid_elements	= $this->params->def( 'invalid_elements', 'script,applet,iframe' );
 		$extended_elements	= $this->params->def( 'extended_elements', '' );
 
+
+		// theme_advanced_* settings
+		$toolbar = $this->params->def( 'toolbar', 'top' );
+		$toolbar_align	= $this->params->def( 'toolbar_align', 'left' );
+		$html_height = $this->params->def( 'html_height', '550' );
+		$html_width = $this->params->def( 'html_width', '750' );
+		$element_path = '';
+		if ($this->params->get('element_path', 1)) {
+			$element_path = "theme_advanced_statusbar_location : \"bottom\", theme_advanced_path : true";
+		} else {
+			$element_path = "theme_advanced_statusbar_location : \"none\", theme_advanced_path : false";
+		}
+
+		$buttons1_add_before = $buttons1_add = array();
+		$buttons2_add_before = $buttons2_add = array();
+		$buttons3_add_before = $buttons3_add = array();
+		$buttons4 = array();
 		$plugins 	= array();
-		$buttons2	= array();
-		$buttons3	= array();
-		$elements	= explode( ',', $extended_elements );
+		if( $extended_elements != "" ) $elements = explode( ',', $extended_elements );
+
+		//Initial values for buttons
+		array_push($buttons2_add_before,'cut','copy','paste');
+		array_push($buttons2_add,'|');
+
+		// Plugins
+
+		// fonts
+		$fonts =  $this->params->def( 'fonts', 1 );
+		if ( $fonts ) {
+			$buttons1_add[]	= 'fontselect,fontsizeselect';
+		}
+
+		// paste
+		$paste =  $this->params->def( 'paste', 1 );
+		if ( $paste ) {
+			$plugins[]	= 'paste';
+			$buttons2_add_before[]	= 'pastetext,pasteword,selectall';
+		}
 
 		// search & replace
 		$searchreplace 		=  $this->params->def( 'searchreplace', 1 );
 		if ( $searchreplace ) {
 			$plugins[]	= 'searchreplace';
-			$buttons2[]	= 'search,replace';
+			$buttons2_add_before[]	= '|,search,replace,|';
 		}
 
-		$plugins[]	= 'insertdatetime';
-
-		// insert date
+		// insert date and/or time plugin
 		$insertdate			= $this->params->def( 'insertdate', 1 );
 		$format_date		= $this->params->def( 'format_date', '%Y-%m-%d' );
-		if ( $insertdate ) {
-			$buttons2[]	= 'insertdate';
-		}
-
-		// insert time
 		$inserttime			= $this->params->def( 'inserttime', 1 );
 		$format_time		= $this->params->def( 'format_time', '%H:%M:%S' );
-		if ( $inserttime ) {
-			$buttons2[]	= 'inserttime';
+		if ( $insertdate or $inserttime ) {
+			$plugins[]	= 'insertdatetime';
+			if ( $insertdate ) {
+				$buttons2_add[]	= 'insertdate';
+			}
+			if ( $inserttime ) {
+				$buttons2_add[]	= 'inserttime';
+			}
+		}
+
+		// colors
+		$colors =  $this->params->def( 'colors', 1 );
+		if ( $colors ) {
+			$buttons2_add[]	= 'forecolor,backcolor';
+		}
+
+		// table
+		$table = $this->params->def( 'table', 1 );
+		if ( $table ) {
+			$plugins[]	= 'table';
+			$buttons3_add_before[]	= 'tablecontrols';
 		}
 
 		// emotions
-		$smilies 			=  $this->params->def( 'smilies', 0 );
+		$smilies = $this->params->def( 'smilies', 1 );
 		if ( $smilies ) {
 			$plugins[]	= 'emotions';
-			$buttons2[]	= 'emotions';
+			$buttons3_add[]	= 'emotions';
 		}
 
-		//media plugin
-		$plugins[] = 'media';
-		$buttons2[] = 'media';
+		//media plugin 
+		$media = $this->params->def( 'media', 1 );
+		if ( $media ) {
+			$plugins[] = 'media';
+			$buttons3_add[] = 'media';
+		}
 
 		// horizontal line
-		$hr 				=  $this->params->def( 'hr', 1 );
+		$hr = $this->params->def( 'hr', 1 );
 		if ( $hr ) {
 			$plugins[]	= 'advhr';
 			$elements[] = 'hr[id|title|alt|class|width|size|noshade]';
-			$buttons3[]	= 'advhr';
+			$buttons3_add[]	= 'advhr';
 		} else {
 			$elements[] = 'hr[id|class|title|alt]';
 		}
 
-		// table
-		$table			=  $this->params->def( 'table', 1 );
-		if ( $table ) {
-			$plugins[]	= 'table';
-			$buttons3[]	= 'tablecontrols';
-		}
-		// fullscreen
-		$fullscreen			=  $this->params->def( 'fullscreen', 1 );
-		if ( $fullscreen ) {
-			$plugins[]	= 'fullscreen';
-			$buttons3[]	= 'fullscreen';
-		}
-
 		// rtl/ltr buttons
-		$directionality		=  $this->params->def( 'directionality', 1 );
+		$directionality	= $this->params->def( 'directionality', 1 );
 		if ( $directionality ) {
 			$plugins[] = 'directionality';
-			$buttons2[] = 'ltr,rtl';
+			$buttons3_add[] = 'ltr,rtl';
 		}
 
-		// autosave
-		$autosave			= $this->params->def( 'autosave', 0 );
-		if ( $autosave ) {
-			$plugins[]	= 'autosave';
+		// fullscreen
+		$fullscreen	= $this->params->def( 'fullscreen', 1 );
+		if ( $fullscreen ) {
+			$plugins[]	= 'fullscreen';
+			$buttons3_add[]	= 'fullscreen';
 		}
 
 		// layer
-		$layer			= $this->params->def( 'layer', 1 );
+		$layer = $this->params->def( 'layer', 1 );
 		if ( $layer ) {
 			$plugins[]	= 'layer';
-			$buttons2[]	= 'insertlayer';
-			$buttons2[]	= 'moveforward';
-			$buttons2[]	= 'movebackward';
-			$buttons2[]	= 'absolute';
+			$buttons4[]	= 'insertlayer';
+			$buttons4[]	= 'moveforward';
+			$buttons4[]	= 'movebackward';
+			$buttons4[]	= 'absolute';
 		}
 
 		// style
 		$style			= $this->params->def( 'style', 1 );
 		if ( $style ) {
 			$plugins[]	= 'style';
-			$buttons3[]	= 'styleprops';
+			$buttons4[]	= 'styleprops';
 		}
 
 		// XHTMLxtras
-		$xhtmlxtras			= $this->params->def( 'xhtmlxtras', 0 );
+		$xhtmlxtras			= $this->params->def( 'xhtmlxtras', 1 );
 		if ( $xhtmlxtras ) {
 			$plugins[]	= 'xhtmlxtras';
-			$buttons3[]	= 'cite';
-			$buttons3[]	= 'abbr';
-			$buttons3[]	= 'acronym';
-			$buttons3[]	= 'ins';
-			$buttons3[]	= 'del';
-			$buttons3[]	= 'attribs';
+			$buttons4[]	= 'cite,abbr,acronym,ins,del,attribs';
+		}
+
+		// visualchars
+		$visualchars = $this->params->def( 'visualchars', 1 );
+		if ( $template ) {
+			$plugins[]	= 'visualchars';
+			$buttons4[]	= 'visualchars';
+		}
+
+		// visualchars
+		$nonbreaking = $this->params->def( 'nonbreaking', 1 );
+		if ( $template ) {
+			$plugins[]	= 'nonbreaking';
+			$buttons4[]	= 'nonbreaking';
 		}
 
 		// template
-		$template			= $this->params->def( 'template', 0 );
+		$template = $this->params->def( 'template', 1 );
 		if ( $template ) {
 			$plugins[]	= 'template';
-			$buttons3[]	= 'template';
+			$buttons4[]	= 'template';
 		}
 
-		// text color
-		$buttons2[] = 'forecolor';
-
-		if ($language->isRTL()) {
-			$text_direction = 'rtl';
+		// tinybrowser
+		$tinybrowser	= $this->params->def( 'tinybrowser', 1 );
+		if ( $tinybrowser ) {
+			$file_browser_callback	= "file_browser_callback : \"tinyBrowser\",";
 		} else {
-			$text_direction = 'ltr';
+			$file_browser_callback	= "";
 		}
 
-		$entities = '';
-		if ($clear_entities) {
-			$entities = 'entities : "160,nbsp,38,amp,34,quot,162,cent,8364,euro,163,pound,165,yen,169,copy,174,reg,8482,trade,8240,permil,60,lt,62,gt,8804,le,8805,ge,176,deg,8722,minus",';
+		// advimage
+		$advimage = $this->params->def( 'advimage', 1 );
+		if ( $advimage ) {
+			$plugins[]	= 'advimage';
+			$elements[]	= 'img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name]';
 		}
 
-		$element_path = '';
-		if($this->params->get('element_path', 0)) {
-			$element_path = "theme_advanced_statusbar_location : \"bottom\", theme_advanced_path : true,";
+		// advlink
+		$advlink 	= $this->params->def( 'advlink', 1 );
+		if ( $advlink ) {
+			$plugins[]	= 'advlink';
+			$elements[]	= 'a[class|name|href|target|title|onclick|rel]';
 		}
 
-		if ( $langMode ) {
-			$langPrefix = substr( $language->getTag(), 0, strpos( $language->getTag(), '-' ) );
-		}
-		// loading of css file for `styles` dropdown
-		if ( $content_css_custom ) {
-			$content_css = 'content_css : "'. $content_css_custom .'", ';
+		// autosave
+		$autosave			= $this->params->def( 'autosave', 1 );
+		if ( $autosave ) {
+			$plugins[]	= 'autosave';
 		}
-		else
-		{
-			/*
-			 * Lets get the default template for the site application
-			 */
-			$query = 'SELECT template'
-			. ' FROM #__templates_menu'
-			. ' WHERE client_id = 0'
-			. ' AND menuid = 0'
-			;
-			$db->setQuery( $query );
-			$template = $db->loadResult();
 
-			if($content_css)
-			{
-				$file_path = JPATH_SITE .'/templates/'. $template .'/css/';
-				if ( !file_exists( $file_path .DS. 'editor.css' ) ) {
-					$template = 'system';
-				}
-
-				$content_css = 'content_css : "' . JURI::root() .'templates/'. $template . '/css/editor.css",';
-			} else {
-				$content_css = '';
-			}
+		// context menu
+		$contextmenu	= $this->params->def( 'contextmenu', 1 );
+		if ( $contextmenu ) {
+			$plugins[]	= 'contextmenu';
 		}
 
-		if ( $cleanup_startup ) {
-			$cleanup_startup = 'true';
+		// inline popups
+		$inlinepopups			= $this->params->def( 'inlinepopups', 1 );
+		if ( $inlinepopups ) {
+			$plugins[]	= 'inlinepopups';
+			$dialog_type = "dialog_type : \"modal\",";
 		} else {
-			$cleanup_startup = 'false';
+			$dialog_type = "";
 		}
 
-		switch ( $cleanup_save ) {
-		case '0': /* Never clean up on save */
-			$cleanup = 'false';
-			break;
-		case '1': /* Clean up front end edits only */
-			if ($mainframe->isadmin())
-				$cleanup = 'false';
-			else
-				$cleanup = 'true';
-			break;
-		default:  /* Always clean up on save */
-			$cleanup = 'true';
+		// Safari compatibility
+		$safari			= $this->params->def( 'safari', 0 );
+		if ( $safari ) {
+			$plugins[]	= 'safari';
 		}
 
-		if ( $newlines ) {
-			$br_newlines	= 'true';
-			$p_newlines		= 'false';
-		} else {
-			$br_newlines	= 'false';
-			$p_newlines		= 'true';
+		$custom_plugin = $this->params->def( 'custom_plugin', '' );
+		if ($custom_plugin != "") {
+			$plugins[] = $custom_plugin;
 		}
 
-		// Tiny Compressed mode
-		if ( $compressed ) {
-			$load = "\t<script type=\"text/javascript\" src=\"".JURI::root()."plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_gzip.php\"></script>\n";
-		} else {
-			$load = "\t<script type=\"text/javascript\" src=\"".JURI::root()."plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce.js\"></script>\n";
+		$custom_button = $this->params->def( 'custom_button', '' );
+		if ($custom_button != "") {
+			$buttons4[] = $custom_button;
 		}
 
-		$buttons2 	= implode( ',', $buttons2 );
-		$buttons3 	= implode( ',', $buttons3 );
-		$plugins 	= implode( ',', $plugins );
+		// Prepare config variables
+		$buttons1_add_before 	= implode( ',', $buttons1_add_before );
+		$buttons2_add_before 	= implode( ',', $buttons2_add_before );
+		$buttons3_add_before 	= implode( ',', $buttons3_add_before );
+		$buttons1_add 	= implode( ',', $buttons1_add );
+		$buttons2_add 	= implode( ',', $buttons2_add );
+		$buttons3_add 	= implode( ',', $buttons3_add );
+		$buttons4 	= implode( ',', $buttons4 );
+		$plugins		= implode( ',', $plugins );
 		$elements 	= implode( ',', $elements );
 
-		$return = $load .
-			"\t<script type=\"text/javascript\">
-			tinyMCE.init({
-			theme : \"$theme\",
-			language : \"". $langPrefix . "\",
-			mode : \"textareas\",
-			gecko_spellcheck : \"true\",
-			editor_selector : \"mce_editable\",
-			document_base_url : \"". JURI::root() ."\",
-			entities : \"60,lt,62,gt\",
-			relative_urls : $relative_urls,
-			remove_script_host : false,
-			save_callback : \"TinyMCE_Save\",
-			invalid_elements : \"$invalid_elements\",
-			extended_valid_elements : \"a[class|name|href|target|title|onclick|rel],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],$elements\",
-			theme_advanced_toolbar_location : \"$toolbar\",
-			theme_advanced_source_editor_height : \"$html_height\",
-			theme_advanced_source_editor_width : \"$html_width\",
-			directionality: \"$text_direction\",
-			force_br_newlines : \"$br_newlines\",
-			force_p_newlines : \"$p_newlines\",
-			$content_css
-			debug : false,
-			cleanup : $cleanup,
-			cleanup_on_startup : $cleanup_startup,
-			safari_warning : false,
-			plugins : \"advlink, advimage, $plugins\",
-			theme_advanced_buttons1_add : \"fontselect\",
-			theme_advanced_buttons2_add : \"$buttons2\",
-			theme_advanced_buttons3_add : \"$buttons3\",
-			theme_advanced_disable : \"help\",
-			plugin_insertdate_dateFormat : \"$format_date\",
-			plugin_insertdate_timeFormat : \"$format_time\",
-			$entities
-			$element_path
-			fullscreen_settings : {
-				theme_advanced_path_location : \"top\"
+		switch($mode) {
+		case 'simple': /* Simple mode*/
+			if ($compressed) {
+				$load = "\t<script type=\"text/javascript\" src=\"".JURI::root()."plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_gzip.js\"></script>\n";
+				$load .= "\t<script type=\"text/javascript\">
+					tinyMCE_GZ.init({
+					themes : \"$theme[$mode]\",
+					languages : \"". $langPrefix . "\"
+				});
+				</script>";
+			} else {
+				$load = "\t<script type=\"text/javascript\" src=\"".JURI::root()."plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce.js\"></script>\n";
 			}
-		});
-		function TinyMCE_Save(editor_id, content, node)
-		{
-			base_url = tinyMCE.settings['document_base_url'];
-			var vHTML = content;
-			if (true == true){
-				vHTML = tinyMCE.regexpReplace(vHTML, 'href\s*=\s*\"?'+base_url+'', 'href=\"', 'gi');
-				vHTML = tinyMCE.regexpReplace(vHTML, 'src\s*=\s*\"?'+base_url+'', 'src=\"', 'gi');
-				vHTML = tinyMCE.regexpReplace(vHTML, 'mce_real_src\s*=\s*\"?', '', 'gi');
-				vHTML = tinyMCE.regexpReplace(vHTML, 'mce_real_href\s*=\s*\"?', '', 'gi');
+			$return = $load .
+				"\t<script type=\"text/javascript\">
+				tinyMCE.init({
+				// General
+				directionality: \"$text_direction\",
+				editor_selector : \"mce_editable\",
+				language : \"". $langPrefix . "\",
+				mode : \"specific_textareas\",
+				$skin
+				theme : \"$theme[$mode]\",
+				// Cleanup/Output
+				cleanup : $cleanup,
+				cleanup_on_startup : $cleanup_startup,
+				entity_encoding : \"$entity_encoding\",
+				$forcenewline
+				// URL
+				relative_urls : $relative_urls,
+				remove_script_host : false,
+				document_base_url : \"". JURI::root() ."\",
+				// Layout
+				$content_css
+				});
+				</script>";
+		  break;
+
+		case 'advanced': /* Advanced mode*/
+		  if ($compressed) {
+			$load = "\t<script type=\"text/javascript\" src=\"".JURI::root()."plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_gzip.js\"></script>\n";
+			$load .= "\t<script type=\"text/javascript\">
+	      tinyMCE_GZ.init({
+				themes : \"$theme[$mode]\",
+				languages : \"". $langPrefix . "\"
+				});
+				</script>";
+		} else {
+				$load = "\t<script type=\"text/javascript\" src=\"".JURI::root()."plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce.js\"></script>\n";
 			}
-			return vHTML;
+			$return = $load .
+				"\t<script type=\"text/javascript\">
+				tinyMCE.init({
+				// General
+				directionality: \"$text_direction\",
+				editor_selector : \"mce_editable\",
+				language : \"". $langPrefix . "\",
+				mode : \"specific_textareas\",
+				$skin
+				theme : \"$theme[$mode]\",
+				// Cleanup/Output
+				cleanup : $cleanup,
+				cleanup_on_startup : $cleanup_startup,
+				entity_encoding : \"$entity_encoding\",
+				extended_valid_elements : \"$elements\",
+				$forcenewline
+				invalid_elements : \"$invalid_elements\",
+				// URL
+				relative_urls : $relative_urls,
+				remove_script_host : false,
+				document_base_url : \"". JURI::root() ."\",
+				// Layout
+				$content_css,
+				// Advanced theme
+				theme_advanced_toolbar_location : \"$toolbar\",
+				theme_advanced_toolbar_align : \"$toolbar_align\",
+				theme_advanced_source_editor_height : \"$html_height\",
+				theme_advanced_source_editor_width : \"$html_width\",
+				$element_path
+				});
+				</script>";
+		  break;
+
+		case 'extended': /* Extended mode*/
+		  if ($compressed) {
+		    $load = "\t<script type=\"text/javascript\" src=\"".JURI::root()."plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_gzip.js\"></script>\n";
+				$load .= "\t<script type=\"text/javascript\">
+	      tinyMCE_GZ.init({
+				themes : \"$theme[$mode]\",
+				plugins : \"$plugins\",
+				languages : \"". $langPrefix . "\"
+				});
+				</script>";
+			} else {
+				$load = "\t<script type=\"text/javascript\" src=\"".JURI::root()."plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce.js\"></script>\n";
+			}
+			$return = $load .
+				"\t<script type=\"text/javascript\">
+				tinyMCE.init({
+				// General
+				$dialog_type
+				directionality: \"$text_direction\",
+				editor_selector : \"mce_editable\",
+				language : \"". $langPrefix . "\",
+				mode : \"specific_textareas\",
+				plugins : \"$plugins\",
+				$skin
+				theme : \"$theme[$mode]\",
+				// Callbacks
+				$file_browser_callback
+				// Cleanup/Output
+				cleanup : $cleanup,
+				cleanup_on_startup : $cleanup_startup,
+				entity_encoding : \"$entity_encoding\",
+				extended_valid_elements : \"$elements\",
+				$forcenewline
+				invalid_elements : \"$invalid_elements\",
+				// URL
+				relative_urls : $relative_urls,
+				remove_script_host : false,
+				document_base_url : \"". JURI::root() ."\",
+				// Layout
+				$content_css,
+				// Advanced theme
+				theme_advanced_toolbar_location : \"$toolbar\",
+				theme_advanced_toolbar_align : \"$toolbar_align\",
+				theme_advanced_source_editor_height : \"$html_height\",
+				theme_advanced_source_editor_width : \"$html_width\",
+				$element_path,
+				theme_advanced_buttons1_add_before : \"$buttons1_add_before\",
+				theme_advanced_buttons2_add_before : \"$buttons2_add_before\",
+				theme_advanced_buttons3_add_before : \"$buttons3_add_before\",
+				theme_advanced_buttons1_add : \"$buttons1_add\",
+				theme_advanced_buttons2_add : \"$buttons2_add\",
+				theme_advanced_buttons3_add : \"$buttons3_add\",
+				theme_advanced_buttons4 : \"$buttons4\",
+				plugin_insertdate_dateFormat : \"$format_date\",
+				plugin_insertdate_timeFormat : \"$format_time\",
+				fullscreen_settings : {
+				theme_advanced_path_location : \"top\"
+				}
+				});
+				</script>";
+				if ( $tinybrowser ) {
+					$return .="\t<script type=\"text/javascript\" src=\"".JURI::root()."plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/tb_tinymce.js.php\"></script>\n";
+					setcookie('tinybrowser_lang', $langPrefix, 0, "/");
+				}
+		  break;
 		}
-	</script>";
 
 		return $return;
 	}
@@ -341,7 +551,7 @@
 	 * @param string 	The name of the editor
 	 */
 	function onGetContent( $editor ) {
-		return "tinyMCE.getContent();";
+		return "tinyMCE.activeEditor.getContent();";
 	}
 
 	/**
@@ -350,7 +560,7 @@
 	 * @param string 	The name of the editor
 	 */
 	function onSetContent( $editor, $html ) {
-		return "tinyMCE.setContent(".$html.");";
+		return "tinyMCE.activeEditor.setContent(".$html.");";
 	}
 
 	/**
@@ -383,8 +593,9 @@
 			$height .= 'px';
 		}
 
-		$buttons = $this->_displayButtons($name, $buttons);
-		$editor  = "<textarea id=\"$name\" name=\"$name\" cols=\"$col\" rows=\"$row\" style=\"width:{$width}; height:{$height};\" class=\"mce_editable=\">$content</textarea>\n" . $buttons;
+		$editor  = "<textarea id=\"$name\" name=\"$name\" cols=\"$col\" rows=\"$row\" style=\"width:{$width}; height:{$height};\" class=\"mce_editable\">$content</textarea>\n" .
+		$this->_displayButtons($name, $buttons) .
+		$this->_toogleButton($name);
 
 		return $editor;
 	}
@@ -443,4 +654,13 @@
 
 		return $return;
 	}
-}
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
+
+	function _toogleButton($name)
+	{
+		$return  = '';
+		$return .= "\n<div style=\"margin-top:-5px\">\n";
+		$return .= "<div class=\"button2-left\"><div class=\"blank\"><a href=\"#\" onclick=\"javascript:tinyMCE.execCommand('mceToggleEditor', false, '$name');return false;\" title=\"".JText::_('Toggle editor')."\">".JText::_('Toggle editor')."</a></div></div>";
+		$return .= "</div>\n";
+		return $return;
+	}
+}
diff -aruN --binary 11/plugins/editors/tinymce.xml 12/plugins/editors/tinymce.xml
--- 11/plugins/editors/tinymce.xml	2008-02-09 00:38:30.000000000 +0100
+++ 12/plugins/editors/tinymce.xml	2009-06-30 22:01:34.000000000 +0200
@@ -1,99 +1,136 @@
-<?xml version="1.0" ?>
-<install version="1.5" type="plugin" group="editors">
-	<name>Editor - TinyMCE 2.1</name>
-	<version>2.1.2</version>
-	<creationDate>2005</creationDate>
+<?xml version="1.0" encoding="utf-8"?>
+<install version="1.5" type="plugin" group="editors" method="upgrade">
+	<name>Editor - TinyMCE 3</name>
+	<version>3.2.4.1</version>
+	<creationDate>2005-2009</creationDate>
 	<author>Moxiecode Systems AB</author>
 	<authorEmail>N/A</authorEmail>
 	<authorUrl>tinymce.moxiecode.com/</authorUrl>
 	<copyright>Moxiecode Systems AB</copyright>
 	<license>LGPL</license>
 	<description>DESCTINYMCE</description>
+  <files>
+    <filename plugin="tinymce3">tinymce3.php</filename>
+    <folder>tinymce3</folder>
+  </files>
+	<languages>
+		<language tag="en-GB">en-GB.plg_editors_tinymce3.ini</language>
+	</languages>
 	<params>
-		<param name="theme" type="list" default="advanced" label="Functionality" description="Select functionality">
+		<param name="mode" type="list" default="advanced" label="Functionality" description="Select functionality">
 			<option value="simple">Simple</option>
 			<option value="advanced">Advanced</option>
+			<option value="extended">Extended</option>
 		</param>
- 		<param name="@spacer" type="spacer" default="" label="" description="" />
- 		<param name="cleanup_startup" type="radio" default="0" label="Code Cleanup on startup" description="Cleans code on editor load">
- 			<option value="0">Off</option>
- 			<option value="1">On</option>
- 		</param>
-        <param name="cleanup_save" type="radio" default="2" label="Code Cleanup on Save" description="Code Cleanup upon saving article">
-            <option value="0">Never</option>
-            <option value="1">Front Only</option>
-            <option value="2">Always</option>
-        </param>
- 		<param name="cleanup_entities" type="radio" default="1" label="Do not clean entities" description="PARAMENTITIECLEANUP">
- 			<option value="0">Yes</option>
- 			<option value="1">No</option>
- 		</param>
- 		<param name="autosave" type="radio" default="1" label="Save Warning" description="Save warning - gives warning if you cancel without saving changes">
+		<param name="skin" type="list" default="0" label="Skin" description="Select skin">
+			<option value="0">Default</option>
+			<option value="1">Office2007 Blue</option>
+			<option value="2">Office2007 Silver</option>
+			<option value="3">Office2007 Black</option>
+		</param>
+ 		<param name="compressed" type="radio" default="0" label="Compressed Version" description="PARAMCOMPRESSEDVERSION">
  			<option value="0">Off</option>
  			<option value="1">On</option>
  		</param>
- 		<param name="compressed" type="radio" default="0" label="Compressed Version" description="PARAMCOMPRESSEDVERSION">
+ 		<param name="@spacer" type="spacer" default="" label="" description="" />
+ 		<param name="cleanup_startup" type="radio" default="0" label="Code Cleanup on startup" description="Cleans code on editor load">
  			<option value="0">Off</option>
  			<option value="1">On</option>
  		</param>
+    <param name="cleanup_save" type="radio" default="2" label="Code Cleanup on Save" description="Code Cleanup upon saving article">
+      <option value="0">Never</option>
+      <option value="1">Front Only</option>
+      <option value="2">Always</option>
+    </param>
+    <param name="entity_encoding" type="list" default="raw" label="Entity Encoding" description="Controls how entities get processed by editor">
+      <option value="named">named</option>
+      <option value="numeric">numeric</option>
+      <option value="raw">raw</option>
+    </param>
  		<param name="@spacer" type="spacer" default="" label="" description="" />
-  		<param name="relative_urls" type="list" default="0" label="Urls" description="URL behaviour">
- 			<option value="0">Absolute</option>
- 			<option value="1">Relative</option>
+  		<param name="lang_mode" type="radio" default="0" label="Automatic Language Selection" description="DESCLANGMODE">
+ 			<option value="0">No</option>
+ 			<option value="1">Yes</option>
  		</param>
+ 		<param name="lang_code" type="text" default="en" size="2" label="Language Code" description="DESCLANGCODE"/>
  		<param name="text_direction" type="list" default="ltr" label="Text Direction" description="Ability to change text direction">
  			<option value="ltr">Left to Right</option>
  			<option value="rtl">Right to Left</option>
  		</param>
-  		<param name="lang_mode" type="radio" default="0" label="Automatic Language Selection" description="DESCLANGMODE">
+ 		<param name="@spacer" type="spacer" default="" label="" description="" />
+  	<param name="content_css" type="radio" default="1" label="Template CSS classes" description="PARAMTEMPLATECSS">
  			<option value="0">No</option>
  			<option value="1">Yes</option>
  		</param>
- 		<param name="lang_code" type="text" default="en" label="Language Code" description="DESCLANGCODE"/>
+ 		<param name="content_css_custom" type="text" size="30" default="" label="Custom CSS Classes" description="PARAMCUSTOMCSS"/>
  		<param name="@spacer" type="spacer" default="" label="" description="" />
- 		<param name="invalid_elements" type="text" default="applet" label="Prohibited Elements" description="Elements that will be cleaned from the text"/>
-  		<param name="content_css" type="radio" default="1" label="Template CSS classes" description="PARAMTEMPLATECSS">
- 			<option value="0">No</option>
- 			<option value="1">Yes</option>
+  	<param name="relative_urls" type="list" default="1" label="Urls" description="URL behaviour">
+ 			<option value="0">Absolute</option>
+ 			<option value="1">Relative</option>
  		</param>
-  		<param name="content_css_custom" type="text" default="" label="Custom CSS Classes" description="PARAMCUSTOMCSS"/>
  		<param name="newlines" type="list" default="0" label="Newlines" description="Newlines will be made into the selected option">
  			<option value="1">BR Elements</option>
  			<option value="0">P Elements</option>
  		</param>
-  		<param name="extended_elements" type="textarea" rows="3" cols="30" default="" label="Extended Valid Elements" description="PARAMEXTVALIDELEMENTS"/>
+ 		<param name="invalid_elements" type="textarea" rows="2" cols="30" default="script,applet,iframe" label="Prohibited Elements" description="Elements that will be cleaned from the text"/>
+  	<param name="extended_elements" type="textarea" rows="2" cols="30" default="" label="Extended Valid Elements" description="PARAMEXTVALIDELEMENTS"/>
    	</params>
    	<params group="advanced">
  		<param name="toolbar" type="list" default="top" label="Toolbar" description="Position of the toolbar">
  			<option value="top">Top</option>
  			<option value="bottom">Bottom</option>
  		</param>
- 		<param name="@spacer" type="spacer" default="" label="" description="" />
- 		<param name="hr" type="radio" default="1" label="Horizontal Rule" description="Show/Hide the Horizontal Rule button">
+ 		<param name="toolbar_align" type="list" default="left" label="Toolbar align" description="Alignment of the toolbar">
+ 			<option value="left">Left</option>
+ 			<option value="center">Center</option>
+ 			<option value="right">Right</option>
+ 		</param>
+ 		<param name="html_height" type="text" default="550" label="HTML Height" description="PARAMHTMLHEIGHT"/>
+ 		<param name="html_width" type="text" default="750" label="HTML Width" description="PARAMHTMLWIDTH"/>
+ 		<param name="element_path" type="radio" default="1" label="Element Path" description="PARAMELEMENTPATH">
+ 			<option value="0">Off</option>
+ 			<option value="1">On</option>
+ 		</param>
+ 		<param name="@spacer" type="spacer" default="Params Extended Mode" label="" description="" />
+ 		<param name="fonts" type="radio" default="1" label="Fonts" description="PARAMFONTS">
  			<option value="0">Hide</option>
  			<option value="1">Show</option>
  		</param>
- 		<param name="smilies" type="radio" default="1" label="Smilies" description="PARAMSMILIES">
+ 		<param name="paste" type="radio" default="1" label="Paste" description="PARAMPASTE">
  			<option value="0">Hide</option>
  			<option value="1">Show</option>
  		</param>
- 		<param name="table" type="radio" default="1" label="Table" description="PARAMTABLE">
+ 		<param name="searchreplace" type="radio" default="1" label="Search-Replace" description="PARAMSEARCHREPLACE">
  			<option value="0">Hide</option>
  			<option value="1">Show</option>
  		</param>
- 		<param name="style" type="radio" default="1" label="Style" description="PARAMSTYLE">
+ 		<param name="insertdate" type="radio" default="1" label="Insert Date" description="PARAMINSERTDATE">
  			<option value="0">Hide</option>
  			<option value="1">Show</option>
  		</param>
- 		<param name="layer" type="radio" default="1" label="Layer" description="PARAMLAYER">
+  	<param name="format_date" type="text" default="%Y-%m-%d" label="Date format" description="Format of inserted Date. Only works in Advanced mode"/>
+		<param name="inserttime" type="radio" default="1" label="Insert Time" description="PARAMINSERTTIME">
+ 			<option value="0">Hide</option>
+ 			<option value="1">Show</option>
+ 		</param>
+  	<param name="format_time" type="text" default="%H:%M:%S" label="Time format" description="Format of inserted Time. Only works in Advanced mode"/>
+ 		<param name="colors" type="radio" default="1" label="Colors" description="PARAMCOLORS">
+ 			<option value="0">Hide</option>
+ 			<option value="1">Show</option>
+ 		</param>
+ 		<param name="table" type="radio" default="1" label="Table" description="PARAMTABLE">
+ 			<option value="0">Hide</option>
+ 			<option value="1">Show</option>
+ 		</param>
+ 		<param name="smilies" type="radio" default="1" label="Smilies" description="PARAMSMILIES">
  			<option value="0">Hide</option>
  			<option value="1">Show</option>
  		</param>
- 		<param name="xhtmlxtras" type="radio" default="0" label="XHTMLxtras" description="PARAMXHTMLXTRAS">
+ 		<param name="media" type="radio" default="1" label="Media" description="PARAMMEDIA">
  			<option value="0">Hide</option>
  			<option value="1">Show</option>
  		</param>
- 		<param name="template" type="radio" default="0" label="Template" description="PARAMTEMPLATE">
+ 		<param name="hr" type="radio" default="1" label="Horizontal Rule" description="Show/Hide the Horizontal Rule button">
  			<option value="0">Hide</option>
  			<option value="1">Show</option>
  		</param>
@@ -101,30 +138,65 @@
  			<option value="0">Hide</option>
  			<option value="1">Show</option>
  		</param>
- 		<param name="@spacer" type="spacer" default="" label="" description="" />
  		<param name="fullscreen" type="radio" default="1" label="Fullscreen" description="PARAMFULLSCREEN">
  			<option value="0">Hide</option>
  			<option value="1">Show</option>
  		</param>
- 		<param name="html_height" type="text" default="550" label="HTML Height" description="PARAMHTMLHEIGHT"/>
- 		<param name="html_width" type="text" default="750" label="HTML Width" description="PARAMHTMLWIDTH"/>
- 		<param name="preview" type="radio" default="1" label="Preview" description="PARAMPREVIEW">
+ 		<param name="style" type="radio" default="1" label="Style" description="PARAMSTYLE">
  			<option value="0">Hide</option>
  			<option value="1">Show</option>
  		</param>
- 		<param name="element_path" type="radio" default="0" label="Element Path" description="PARAMELEMENTPATH">
- 			<option value="0">Off</option>
- 			<option value="1">On</option>
+ 		<param name="layer" type="radio" default="1" label="Layer" description="PARAMLAYER">
+ 			<option value="0">Hide</option>
+ 			<option value="1">Show</option>
  		</param>
- 		<param name="insertdate" type="radio" default="1" label="Insert Date" description="PARAMINSERTDATE">
+ 		<param name="xhtmlxtras" type="radio" default="1" label="XHTMLxtras" description="PARAMXHTMLXTRAS">
  			<option value="0">Hide</option>
  			<option value="1">Show</option>
  		</param>
-  		<param name="format_date" type="text" default="%Y-%m-%d" label="Date format" description="Format of inserted Date. Only works in Advanced mode"/>
-		<param name="inserttime" type="radio" default="1" label="Insert Time" description="PARAMINSERTTIME">
+ 		<param name="visualchars" type="radio" default="1" label="Visualchars" description="Possibility to see invisible characters">
+ 			<option value="0">Hide</option>
+ 			<option value="1">Show</option>
+ 		</param>
+ 		<param name="nonbreaking" type="radio" default="1" label="Nonbreaking" description="Insert nonbreaking space entities">
  			<option value="0">Hide</option>
  			<option value="1">Show</option>
  		</param>
-  		<param name="format_time" type="text" default="%H:%M:%S" label="Time format" description="Format of inserted Time. Only works in Advanced mode"/>
+ 		<param name="template" type="radio" default="1" label="Template" description="PARAMTEMPLATE">
+ 			<option value="0">Hide</option>
+ 			<option value="1">Show</option>
+ 		</param>
+ 		<param name="@spacer" type="spacer" default="" label="" description="" />
+ 		<param name="tinybrowser" type="radio" default="1" label="Tinybrowser" description="Turn on/off Tinybrowser for images/links">
+ 			<option value="0">Off</option>
+ 			<option value="1">On</option>
+ 		</param>
+ 		<param name="advimage" type="radio" default="1" label="Advanced image" description="Turn on/off a more advanced image dialog">
+ 			<option value="0">Off</option>
+ 			<option value="1">On</option>
+ 		</param>
+ 		<param name="advlink" type="radio" default="1" label="Advanced link" description="Turn on/off a more advanced link dialog">
+ 			<option value="0">Off</option>
+ 			<option value="1">On</option>
+ 		</param>
+ 		<param name="autosave" type="radio" default="1" label="Save Warning" description="Save warning - gives warning if you cancel without saving changes">
+ 			<option value="0">Off</option>
+ 			<option value="1">On</option>
+ 		</param>
+ 		<param name="contextmenu" type="radio" default="1" label="Context menu" description="Turn on/off Context menu">
+ 			<option value="0">Off</option>
+ 			<option value="1">On</option>
+ 		</param>
+ 		<param name="inlinepopups" type="radio" default="1" label="Inline popups" description="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.">
+ 			<option value="0">Off</option>
+ 			<option value="1">On</option>
+ 		</param>
+ 		<param name="safari" type="radio" default="0" label="Safari compatibility" description="Turn on/off Safari compatibility plugin">
+ 			<option value="0">Off</option>
+ 			<option value="1">On</option>
+ 		</param>
+ 		<param name="@spacer" type="spacer" default="" label="" description="" />
+ 		<param name="custom_plugin" type="text" default="" label="Custom plugin" description="Add custom plugin(s)"/>
+ 		<param name="custom_button" type="text" default="" label="Custom button" description="Add custom button(s)"/>
    	</params>
-</install>
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
+</install>
diff -aruN --binary 11/plugins/editors/xstandard/attachmentlibrary.php 12/plugins/editors/xstandard/attachmentlibrary.php
--- 11/plugins/editors/xstandard/attachmentlibrary.php	2009-01-10 04:58:08.000000000 +0100
+++ 12/plugins/editors/xstandard/attachmentlibrary.php	2009-06-30 22:01:34.000000000 +0200
@@ -42,6 +42,9 @@
 ** - Documentation: http://xstandard.com/xstandard-lite-for-partner-cms/
 ****************************************************************************************/
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 $base_path = "../../../";
 require_once( $base_path . 'configuration.php' );
 
diff -aruN --binary 11/plugins/editors/xstandard/directory.php 12/plugins/editors/xstandard/directory.php
--- 11/plugins/editors/xstandard/directory.php	2008-07-07 00:42:46.000000000 +0200
+++ 12/plugins/editors/xstandard/directory.php	2009-06-30 22:01:34.000000000 +0200
@@ -42,6 +42,9 @@
 ** - Documentation: http://xstandard.com/xstandard-lite-for-partner-cms/
 ****************************************************************************************/
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 function xs_xhtml_escape($text) {
 	return str_replace(array("&", "<", ">", "\""), array("&amp;", "&lt;", "&gt;", "&quot;"), $text);
 }
diff -aruN --binary 11/plugins/editors/xstandard/imagelibrary.php 12/plugins/editors/xstandard/imagelibrary.php
--- 11/plugins/editors/xstandard/imagelibrary.php	2009-01-10 04:58:08.000000000 +0100
+++ 12/plugins/editors/xstandard/imagelibrary.php	2009-06-30 22:01:34.000000000 +0200
@@ -42,6 +42,9 @@
 ** - Documentation: http://xstandard.com/xstandard-lite-for-partner-cms/
 ****************************************************************************************/
 
+// Do not allow direct access
+defined( '_JEXEC' ) or die( 'Restricted access' );
+
 $base_path = "../../../";
 require_once( $base_path . 'configuration.php' );
 
diff -aruN --binary 11/plugins/system/legacy/html.php 12/plugins/system/legacy/html.php
--- 11/plugins/system/legacy/html.php	2008-07-07 00:39:46.000000000 +0200
+++ 12/plugins/system/legacy/html.php	2009-06-30 22:01:34.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
-* @version		$Id: html.php 10381 2008-06-01 03:35:53Z pasamio $
+* @version		$Id: html.php 12389 2009-07-01 00:34:45Z ian $
 * @package		Joomla.Legacy
 * @subpackage	1.5
 * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
@@ -243,7 +243,7 @@
 				<?php
 				if ( $_SERVER['HTTP_REFERER'] != "") {
 					echo '<noscript>';
-					echo '<a href="'. $_SERVER['HTTP_REFERER'] .'"><span class="small">'. JText::_( 'BACK' ) .'</span></a>';
+					echo '<a href="'. str_replace(array('"', '<', '>', "'"), '', $_SERVER['HTTP_REFERER']) .'"><span class="small">'. JText::_( 'BACK' ) .'</span></a>';
 					echo '</noscript>';
 				}
 				?>
@@ -343,4 +343,4 @@
 	{
 		echo JHTML::_('behavior.keepalive');
 	}
-}
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
+}
diff -aruN --binary 11/plugins/system/legacy/patfactory.php 12/plugins/system/legacy/patfactory.php
--- 11/plugins/system/legacy/patfactory.php	2008-07-07 00:39:46.000000000 +0200
+++ 12/plugins/system/legacy/patfactory.php	2009-06-30 22:01:34.000000000 +0200
@@ -1,6 +1,6 @@
 <?php
 /**
-* @version		$Id: patfactory.php 10381 2008-06-01 03:35:53Z pasamio $
+* @version		$Id: patfactory.php 12389 2009-07-01 00:34:45Z ian $
 * @package		Joomla.Legacy
 * @subpackage	1.5
 * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
@@ -47,7 +47,7 @@
 		}
 
 		// TODO: Do the protocol better
-		$tmpl->addVar( 'form', 'formAction', basename($_SERVER['PHP_SELF']) );
+		$tmpl->addVar( 'form', 'formAction', basename(str_replace(array('"', '<', '>', "'"), '', $_SERVER["PHP_SELF"])) );
 		$tmpl->addVar( 'form', 'formName', 'adminForm' );
 
 		$tmpl->setRoot( dirname( __FILE__ ) . '/tmpl');
@@ -58,4 +58,4 @@
 		}
 		return $tmpl;
 	}
-}
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
+}
diff -aruN --binary 11/templates/beez/html/com_contact/contact/default_address.php 12/templates/beez/html/com_contact/contact/default_address.php
--- 11/templates/beez/html/com_contact/contact/default_address.php	2009-06-02 23:51:36.000000000 +0200
+++ 12/templates/beez/html/com_contact/contact/default_address.php	2009-06-30 22:01:34.000000000 +0200
@@ -1,90 +1,95 @@
-<?php // @version $Id: default_address.php 11917 2009-05-29 19:37:05Z ian $
+<?php // @version $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)) : ?>
 <div class="contact_address">
-	<address>
+  <!--open contact_address div -->
+<?php
 
-	<?php if ( $this->contact->params->get('address_check') > 0) : ?>
-	        <?php if (( $this->contact->params->get('contact_icons') ==0) || (                 $this->contact->params->get('contact_icons') ==1)): ?>
-	<span class="marker"><?php echo $this->contact->params->get('marker_address'); ?></span>
-	<br />
-	<?php endif; ?>
-	<?php endif; ?>
-
-	<?php if ($this->contact->address && $this->contact->params->get('show_street_address')) : ?>
-	<?php echo nl2br($this->escape($this->contact->address)); ?><br />
-	<?php endif; ?>
-
-	<?php if ($this->contact->suburb && $this->contact->params->get('show_suburb')) : ?>
-	<?php echo $this->escape($this->contact->suburb); ?><br />
-	<?php endif; ?>
-
-	<?php if ($this->contact->state && $this->contact->params->get('show_state')) : ?>
-	<?php echo $this->escape($this->contact->state); ?><br />
-	<?php endif; ?>
-
-	<?php if ($this->contact->country && $this->contact->params->get('show_country')) : ?>
-	<?php echo $this->escape($this->contact->country); ?><br />
-	<?php endif; ?>
-
-	<?php if ($this->contact->postcode && $this->contact->params->get('show_postcode')) : ?>
-	<?php echo $this->escape($this->contact->postcode); ?><br />
-	<?php endif; ?>
+$show_address = (($this->contact->params->get('address_check') > 0) &&
+		($this->contact->address || $this->contact->suburb || $this->contact->state || $this->contact->country || $this->contact->postcode)) ||
+		(($this->contact->email_to && $this->contact->params->get('show_email')) || $this->contact->telephone || $this->contact->fax );
+
+if ($show_address):
+	echo '<address>';
+endif;
+
+if (($this->contact->params->get('address_check') > 0) && ($this->contact->address || $this->contact->suburb || $this->contact->state || $this->contact->country || $this->contact->postcode)) :
+	if ( $this->contact->params->get('address_check') > 0) :
+		if (( $this->contact->params->get('contact_icons') ==0) || ($this->contact->params->get('contact_icons') ==1)):
+			echo '<span class="marker">'.$this->contact->params->get('marker_address').'</span> <br />';
+		endif;
+	endif;
+
+	if ($this->contact->address && $this->contact->params->get('show_street_address')) :
+		echo nl2br($this->escape($this->contact->address)).'<br />';
+	endif;
+
+	if ($this->contact->suburb && $this->contact->params->get('show_suburb')) :
+		echo $this->escape($this->contact->suburb).'<br />';
+	endif;
+
+	if ($this->contact->state && $this->contact->params->get('show_state')) :
+		echo $this->escape($this->contact->state).'<br />';
+	endif;
+
+	if ($this->contact->country && $this->contact->params->get('show_country')) :
+		echo $this->escape($this->contact->country).'<br />';
+	endif;
+
+	if ($this->contact->postcode && $this->contact->params->get('show_postcode')) :
+		echo $this->escape($this->contact->postcode).'<br />';
+	endif;
+
+endif;
+
+if (($this->contact->email_to && $this->contact->params->get('show_email')) || $this->contact->telephone || $this->contact->fax ) :
+	if ($this->contact->email_to && $this->contact->params->get('show_email')) :
+		if (( $this->contact->params->get('contact_icons') ==0) || ( $this->contact->params->get('contact_icons') ==1)):
+			echo '<span class="marker">'.$this->contact->params->get('marker_email').'</span>';
+		endif;
+
+		echo $this->contact->email_to.'<br />';
+	endif;
+
+	if ($this->contact->telephone && $this->contact->params->get('show_telephone')) :
+		if (( $this->contact->params->get('contact_icons') ==0) || ( $this->contact->params->get('contact_icons') ==1)):
+			echo '<span class="marker">'.$this->contact->params->get('marker_telephone').'</span>';
+		endif;
+		echo nl2br($this->escape($this->contact->telephone)).'<br />';
+	endif;
+
+	if ($this->contact->fax && $this->contact->params->get('show_fax')) :
+		if (( $this->contact->params->get('contact_icons') ==0) || ( $this->contact->params->get('contact_icons') ==1)):
+			echo '<span class="marker">'.$this->contact->params->get('marker_fax').'</span>';
+		endif;
+		echo nl2br($this->escape($this->contact->fax)).'<br />';
+	endif;
+
+	if ( $this->contact->mobile && $this->contact->params->get( 'show_mobile' ) ) :
+		if (( $this->contact->params->get('contact_icons') ==0) || ( $this->contact->params->get('contact_icons') ==1)):
+			echo '<span class="marker">'.$this->contact->params->get( 'marker_mobile' ).'</span>';
+		endif;
+		echo nl2br($this->escape($this->contact->mobile)).'<br />';
+	endif;
+
+	if ($this->contact->webpage && $this->contact->params->get('show_webpage')) :
+		echo '<a href="'.$this->escape($this->contact->webpage).'" target="_blank"> '.$this->escape($this->contact->webpage).'</a><br />';
+		echo '</address>';
+	endif;
+endif;
+
+if ($show_address):
+	echo '</address>';
+endif; ?>
 
-
-
-<?php endif; ?>
-
-<?php if (($this->contact->email_to && $this->contact->params->get('show_email')) || $this->contact->telephone || $this->contact->fax ) : ?>
-
-	<?php if ($this->contact->email_to && $this->contact->params->get('show_email')) : ?>
-	    <?php if (( $this->contact->params->get('contact_icons') ==0) || ( $this->contact->params->get('contact_icons') ==1)): ?>
-	<span class="marker"><?php echo $this->contact->params->get('marker_email'); ?></span>
-	<?php endif; ?>
-	<?php echo $this->contact->email_to; ?><br />
-	<?php endif; ?>
-
-
-	<?php if ($this->contact->telephone && $this->contact->params->get('show_telephone')) : ?>
-
-
-    <?php if (( $this->contact->params->get('contact_icons') ==0) || ( $this->contact->params->get('contact_icons') ==1)): ?>
-	<span class="marker"><?php echo $this->contact->params->get('marker_telephone'); ?></span>
-	<?php endif; ?>
-	<?php echo nl2br($this->escape($this->contact->telephone)); ?><br />
-
-	<?php endif; ?>
-
-
-	<?php if ($this->contact->fax && $this->contact->params->get('show_fax')) : ?>
-
-        <?php if (( $this->contact->params->get('contact_icons') ==0) || ( $this->contact->params->get('contact_icons') ==1)): ?>
-	<span class="marker"><?php echo $this->contact->params->get('marker_fax'); ?></span>
-	<?php endif; ?>
-	<?php echo nl2br($this->escape($this->contact->fax)); ?><br />
-	<?php endif; ?>
-
-	<?php if ( $this->contact->mobile && $this->contact->params->get( 'show_mobile' ) ) :?>
-	 <?php if (( $this->contact->params->get('contact_icons') ==0) || ( $this->contact->params->get('contact_icons') ==1)): ?>
-	<span class="marker"><?php echo $this->contact->params->get( 'marker_mobile' ); ?></span>
-	<?php endif; ?>
-	<?php echo nl2br($this->escape($this->contact->mobile)); ?><br />
-	<?php endif; ?>
-
-	<?php if ($this->contact->webpage && $this->contact->params->get('show_webpage')) : ?>
-	<a href="<?php echo $this->escape($this->contact->webpage); ?>" target="_blank">
-	<?php echo $this->escape($this->contact->webpage); ?></a><br />
-	<?php endif; ?>
-
-<?php endif; ?>
- </address></div>
+</div>
+<!--close contact_address div -->
 <?php if ($this->contact->misc && $this->contact->params->get('show_misc')) : ?>
 <p>
-<?php if (( $this->contact->params->get('contact_icons') ==0) || ( $this->contact->params->get('contact_icons') ==1)): ?>
-<span class="marker"><?php echo $this->contact->params->get('marker_misc'); ?></span>
-<?php echo $this->escape($this->contact->misc); ?>
-<?php endif; ?>
+  <?php if (( $this->contact->params->get('contact_icons') ==0) || ( $this->contact->params->get('contact_icons') ==1)): ?>
+  <span class="marker"><?php echo $this->contact->params->get('marker_misc'); ?></span> <?php echo nl2br($this->contact->misc); ?>
+  <?php endif; ?>
 </p>
 <?php endif; ?>
+
diff -aruN --binary 11/templates/beez/html/com_content/article/form.php 12/templates/beez/html/com_content/article/form.php
--- 11/templates/beez/html/com_content/article/form.php	2009-06-02 23:51:36.000000000 +0200
+++ 12/templates/beez/html/com_content/article/form.php	2009-06-30 22:01:34.000000000 +0200
@@ -1,5 +1,17 @@
-<?php // @version: $Id: form.php 11917 2009-05-29 19:37:05Z ian $
+<?php // @version: $Id: form.php 12389 2009-07-01 00:34:45Z ian $
 defined('_JEXEC') or die('Restricted access');
+$config =& JFactory::getConfig();
+$publish_up =& JFactory::getDate($this->article->publish_up);
+$publish_up->setOffset($config->getValue('config.offset'));
+$publish_up = $publish_up->toFormat();
+
+if (! isset($this->article->publish_down) || $this->article->publish_down == 'Never') {
+	$publish_down = JText::_('Never');
+} else {
+	$publish_down =& JFactory::getDate($this->article->publish_down);
+	$publish_down->setOffset($config->getValue('config.offset'));
+	$publish_down = $publish_down->toFormat();
+}
 ?>
 <script language="javascript" type="text/javascript">
 <!--
@@ -131,14 +143,14 @@
 		<label for="publish_up">
 			<?php echo JText::_( 'Start Publishing' ); ?>:
 		</label>
-        <?php echo JHTML::_('calendar', $this->article->publish_up, 'publish_up', 'publish_up', '%Y-%m-%d %H:%M:%S', array('class'=>'inputbox', 'size'=>'25',  'maxlength'=>'19')); ?>
+        <?php echo JHTML::_('calendar', $publish_up, 'publish_up', 'publish_up', '%Y-%m-%d %H:%M:%S', array('class'=>'inputbox', 'size'=>'25',  'maxlength'=>'19')); ?>
 	</div>
 	<div class="wrap">&nbsp;</div>
 	<div>
 		<label for="publish_down">
 			<?php echo JText::_( 'Finish Publishing' ); ?>:
 		</label>
-        <?php echo JHTML::_('calendar', $this->article->publish_down, 'publish_down', 'publish_down', '%Y-%m-%d %H:%M:%S', array('class'=>'inputbox', 'size'=>'25',  'maxlength'=>'19')); ?>
+        <?php echo JHTML::_('calendar', $publish_down, 'publish_down', 'publish_down', '%Y-%m-%d %H:%M:%S', array('class'=>'inputbox', 'size'=>'25',  'maxlength'=>'19')); ?>
 	</div>
 	<div class="wrap">&nbsp;</div>
 	<div>
@@ -183,7 +195,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']); ?>" />
 	<input type="hidden" name="task" value="" />
 	<?php echo JHTML::_( 'form.token' ); ?>
 </form>
diff -aruN --binary 11/templates/beez/html/com_poll/poll/default_graph.php 12/templates/beez/html/com_poll/poll/default_graph.php
--- 11/templates/beez/html/com_poll/poll/default_graph.php	2009-06-02 23:51:36.000000000 +0200
+++ 12/templates/beez/html/com_poll/poll/default_graph.php	2009-06-30 22:01:34.000000000 +0200
@@ -1,4 +1,4 @@
-<?php // @version $Id: default_graph.php 11917 2009-05-29 19:37:05Z ian $
+<?php // @version $Id: default_graph.php 12230 2009-06-21 02:07:34Z ian $
 defined('_JEXEC') or die('Restricted access');
 ?>
 
@@ -15,7 +15,7 @@
 	<?php echo $this->escape($this->poll->title); ?>
 </h3>
 
-<table class="pollstableborder">
+<table class="pollstableborder"><?php JPlugin::loadLanguage( 'tpl_beez' ); ?>
 	<tr>
 		<th id="itema" class="td_1"><?php echo JText::_( 'Hits' ); ?></th>
 		<th id="itemb" class="td_2"><?php echo JText::_( 'Percent' ); ?></th>
diff -aruN --binary 11/templates/beez/html/com_user/login/default_login.php 12/templates/beez/html/com_user/login/default_login.php
--- 11/templates/beez/html/com_user/login/default_login.php	2009-06-02 23:51:36.000000000 +0200
+++ 12/templates/beez/html/com_user/login/default_login.php	2009-06-30 22:01:34.000000000 +0200
@@ -1,8 +1,8 @@
-<?php // @version $Id: default_login.php 11796 2009-05-06 02:03:15Z ian $
+<?php // @version $Id: default_login.php 12352 2009-06-24 13:52:57Z ian $
 defined( '_JEXEC' ) or die( 'Restricted access' );
 ?>
 <form action="<?php echo JRoute::_( 'index.php', true, $this->params->get('usesecure')); ?>" method="post" name="login" id="login" class="login_form<?php echo $this->params->get( 'pageclass_sfx' ); ?>">
-	<?php if ( $this->params->get( 'page_title' ) ) : ?>
+	<?php if ( $this->params->get( 'show_login_title' ) ) : ?>
 	<h1 class="componentheading<?php echo $this->params->get( 'pageclass_sfx' ); ?>">
 		<?php echo $this->params->get( 'header_login' ); ?>
 	</h1>
@@ -39,7 +39,7 @@
 	</fieldset>
 	<p>
 		<a href="<?php echo JRoute::_( 'index.php?option=com_user&view=reset#content' ); ?>">
-			<?php echo JText::_('Lost Password?'); ?></a>
+			<?php JPlugin::loadLanguage( 'tpl_beez' ); echo JText::_('Lost Password?'); ?></a>
 		<?php if ( $this->params->get( 'registration' ) ) : ?>
 		<?php echo JText::_('No account yet?'); ?>
 		<a href="<?php echo JRoute::_( 'index.php?option=com_user&view=register#content' ); ?>">
diff -aruN --binary 11/templates/beez/html/com_user/login/default_logout.php 12/templates/beez/html/com_user/login/default_logout.php
--- 11/templates/beez/html/com_user/login/default_logout.php	2009-06-02 23:51:36.000000000 +0200
+++ 12/templates/beez/html/com_user/login/default_logout.php	2009-06-30 22:01:34.000000000 +0200
@@ -1,9 +1,9 @@
-<?php // @version $Id: default_logout.php 11917 2009-05-29 19:37:05Z ian $
+<?php // @version $Id: default_logout.php 12352 2009-06-24 13:52:57Z ian $
 defined( '_JEXEC' ) or die( 'Restricted access' );
 ?>
 
 <form action="<?php echo JRoute::_( 'index.php' ); ?>" method="post" name="login" id="login" class="logout_form<?php echo $this->escape($this->params->get( 'pageclass_sfx' )); ?>">
-	<?php if ( $this->params->get( 'page_title' ) ) : ?>
+	<?php if ( $this->params->get( 'show_logout_title' ) ) : ?>
 	<h1 class="componentheading<?php echo $this->escape($this->params->get( 'pageclass_sfx' )); ?>">
 		<?php echo $this->params->get( 'header_logout' ); ?>
 	</h1>
diff -aruN --binary 11/templates/beez/html/com_user/login/default.php 12/templates/beez/html/com_user/login/default.php
--- 11/templates/beez/html/com_user/login/default.php	2009-06-02 23:51:36.000000000 +0200
+++ 12/templates/beez/html/com_user/login/default.php	2009-06-30 22:01:34.000000000 +0200
@@ -1,10 +1,10 @@
-<?php // @version $Id: default.php 11917 2009-05-29 19:37:05Z ian $
+<?php // @version $Id: default.php 12352 2009-06-24 13:52:57Z ian $
 defined( '_JEXEC' ) or die( 'Restricted access' );
  ?>
 <?php if($this->params->get('show_page_title',1)) : ?>
 <h2 class="componentheading<?php echo $this->escape($this->params->get('pageclass_sfx')) ?>">
-	<?php echo $this->escape($this->params->get('page_title')) ?>
+	<?php echo $this->params->get('page_title') ?>
 </h2>
 <?php endif; ?>
 
-<?php echo $this->loadTemplate( $this->type );
+<?php echo $this->loadTemplate( $this->type ); ?>
diff -aruN --binary 11/templates/beez/html/com_weblinks/weblinks/form.php 12/templates/beez/html/com_weblinks/weblinks/form.php
--- 11/templates/beez/html/com_weblinks/weblinks/form.php	2008-07-07 00:40:12.000000000 +0200
+++ 12/templates/beez/html/com_weblinks/weblinks/form.php	1970-01-01 01:00:00.000000000 +0100
@@ -1,95 +0,0 @@
-<?php // @version $Id: form.php 10498 2008-07-04 00:05:36Z ian $
-defined('_JEXEC') or die('Restricted access');
-?>
-<?php if($this->params->get('show_page_title',1)) : ?>
-<h2 class="componentheading<?php echo $this->params->get('pageclass_sfx') ?>">
-	<?php echo $this->escape($this->params->get('page_title')) ?>
-</h2>
-<?php endif; ?>
-<script type="text/javascript">
-function submitbutton(pressbutton)
-{
-	var form = document.adminForm;
-	if (pressbutton == 'cancel') {
-		submitform( pressbutton );
-		return;
-	}
-
-	// do field validation
-	if (document.getElementById('jformtitle').value == ""){
-		alert( "<?php echo JText::_( 'Weblink item must have a title', true ); ?>" );
-	} else if (document.getElementById('jformcatid').value < 1) {
-		alert( "<?php echo JText::_( 'You must select a category.', true ); ?>" );
-	} else if (document.getElementById('jformurl').value == ""){
-		alert( "<?php echo JText::_( 'You must have a url.', true ); ?>" );
-	} else {
-		submitform( pressbutton );
-	}
-}
-</script>
-
-<form action="<?php JRoute::_('index.php') ?>" method="post" name="adminForm" id="adminForm">
-<div class="componentheading">
-	<?php echo JText::_( 'Submit A Web Link' );?>
-</div>
-<table cellpadding="4" cellspacing="1" border="10" width="100%">
-<tr>
-	<td width="10%">
-		<label for="jformtitle">
-			<?php echo JText::_( 'Name' ); ?>:
-		</label>
-	</td>
-	<td width="80%">
-		<input class="inputbox" type="text" id="jformtitle" name="jform[title]" size="50" maxlength="250" value="<?php echo $this->escape($this->weblink->title);?>" />
-	</td>
-</tr>
-<tr>
-	<td valign="top">
-		<label for="jformcatid">
-			<?php echo JText::_( 'Category' ); ?>:
-		</label>
-	</td>
-	<td>
-		<?php echo $this->lists['catid']; ?>
-	</td>
-</tr>
-<tr>
-	<td valign="top">
-		<label for="jformurl">
-			<?php echo JText::_( 'URL' ); ?>:
-		</label>
-	</td>
-	<td>
-		<input class="inputbox" type="text" id="jformurl" name="jform[url]" value="<?php echo $this->weblink->url; ?>" size="50" maxlength="250" />
-	</td>
-</tr>
-<tr>
-	<td valign="top">
-		<label for="jformdescription">
-			<?php echo JText::_( 'Description' ); ?>:
-		</label>
-	</td>
-	<td>
-		<textarea class="inputbox" cols="30" rows="6" id="jformdescription" name="jform[description]" style="width:300px"><?php echo htmlspecialchars( $this->weblink->description, ENT_QUOTES );?></textarea>
-	</td>
-</tr>
-</table>
-
-<div>
-	<button type="button" onclick="submitbutton('save')">
-		<?php echo JText::_('Save') ?>
-	</button>
-	<button type="button" onclick="submitbutton('cancel')" />
-		<?php echo JText::_('Cancel') ?>
-	</button>
-</div>
-
-	<input type="hidden" name="jform[id]" value="<?php echo $this->weblink->id; ?>" />
-	<input type="hidden" name="jform[ordering]" value="<?php echo $this->weblink->ordering; ?>" />
-	<input type="hidden" name="jform[approved]" value="<?php echo $this->weblink->approved; ?>" />
-	<input type="hidden" name="option" value="<?php echo $option;?>" />
-	<input type="hidden" name="controller" value="weblink" />
-	<input type="hidden" name="task" value="" />
-	<input type="hidden" name="Returnid" value="<?php echo $this->returnid; ?>" />
-	<?php echo JHTML::_( 'form.token' ); ?>
-</form>
diff -aruN --binary 11/templates/beez/html/com_weblinks/weblinks/index.html 12/templates/beez/html/com_weblinks/weblinks/index.html
--- 11/templates/beez/html/com_weblinks/weblinks/index.html	2008-07-07 00:40:12.000000000 +0200
+++ 12/templates/beez/html/com_weblinks/weblinks/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/templates/beez/html/mod_newsflash/_item.php 12/templates/beez/html/mod_newsflash/_item.php
--- 11/templates/beez/html/mod_newsflash/_item.php	2008-11-11 02:30:12.000000000 +0100
+++ 12/templates/beez/html/mod_newsflash/_item.php	2009-06-30 22:01:34.000000000 +0200
@@ -1,4 +1,4 @@
-<?php // @version $Id: _item.php 11215 2008-10-26 02:25:51Z ian $
+<?php // @version $Id: _item.php 12349 2009-06-24 13:37:19Z ian $
 defined('_JEXEC') or die('Restricted access');
 ?>
 
@@ -21,9 +21,9 @@
 echo JFilterOutput::ampReplace($item->text);
 
 $itemparams=new JParameter($item->attribs);
-$readmoretxt=$itemparams->get('readmore',JText::_('Read more'));
+$readmoretxt=$itemparams->get('readmore',JText::_('Read more text'));
 if (isset($item->linkOn) && $item->readmore && $params->get('readmore')) : ?>
 <a href="<?php echo $item->linkOn; ?>" class="readon">
-	<?php echo $readmoretxt; ?></a>
+	<?php echo $readmoretxt.' ' . $item->title; ?></a>
 <?php endif; ?>
 <span class="article_separator">&nbsp;</span>
diff -aruN --binary 11/templates/ja_purity/css/template.css 12/templates/ja_purity/css/template.css
--- 11/templates/ja_purity/css/template.css	2008-11-11 14:43:16.000000000 +0100
+++ 12/templates/ja_purity/css/template.css	2009-05-29 14:53:30.000000000 +0200
@@ -8,7 +8,7 @@
 body {
 	color: #000000;
 	background: #FFFFFF;
-	font-family: Tahoma, Arial, Helvetica, sans-serif;
+	font-family: Arial, Helvetica, sans-serif;
 	line-height: 150%;
 }
 
@@ -954,7 +954,7 @@
 }
 
 h1.logo a {
-	width: 350px;
+	width: 208px;
 	display: block;
 	background: url(../images/logo.png) no-repeat;
 	height: 80px;
diff -aruN --binary 11/templates/ja_purity/html/com_content/article/default.php 12/templates/ja_purity/html/com_content/article/default.php
--- 11/templates/ja_purity/html/com_content/article/default.php	2009-06-02 23:51:36.000000000 +0200
+++ 12/templates/ja_purity/html/com_content/article/default.php	2009-06-30 22:01:34.000000000 +0200
@@ -125,7 +125,7 @@
 
 <?php if ( intval($this->article->modified) !=0 && $this->params->get('show_modify_date')) : ?>
 	<span class="modifydate">
-		<?php JText::sprintf('LAST_UPDATED2', $this->escape(JHTML::_('date', $this->article->modified, JText::_('DATE_FORMAT_LC2')))); ?>
+		<?php echo JText::sprintf('LAST_UPDATED2', $this->escape(JHTML::_('date', $this->article->modified, JText::_('DATE_FORMAT_LC2')))); ?>
 	</span>
 <?php endif; ?>
 
diff -aruN --binary 11/templates/ja_purity/html/com_content/frontpage/default_item.php 12/templates/ja_purity/html/com_content/frontpage/default_item.php
--- 11/templates/ja_purity/html/com_content/frontpage/default_item.php	2009-06-02 23:51:36.000000000 +0200
+++ 12/templates/ja_purity/html/com_content/frontpage/default_item.php	2009-06-30 22:01:34.000000000 +0200
@@ -69,7 +69,7 @@
 			<?php echo '<a href="'.JRoute::_(ContentHelperRoute::getCategoryRoute($this->item->catslug, $this->item->sectionid)).'">'; ?>
 		<?php endif; ?>
 		<?php echo $this->escape($this->item->category); ?>
-		<?php if ($this->item->params->get('link_section')) : ?>
+		<?php if ($this->item->params->get('link_category')) : ?>
 			<?php echo '</a>'; ?>
 		<?php endif; ?>
 	</span>
@@ -102,7 +102,8 @@
 <?php if ($this->item->params->get('show_url') && $this->item->urls) : ?>
 	<span class="article-url">
 		<a href="http://<?php echo $this->escape($this->item->urls) ; ?>" target="_blank">
-			<?php echo $this->escape($this->item->urls); ?></a>
+			<?php echo $this->escape($this->item->urls); ?>
+		</a>
 	</span>
 <?php endif; ?>
 </div>
diff -aruN --binary 11/templates/ja_purity/images/emailbutton.png 12/templates/ja_purity/images/emailbutton.png
--- 11/templates/ja_purity/images/emailbutton.png	2008-09-09 17:23:14.000000000 +0200
+++ 12/templates/ja_purity/images/emailbutton.png	1970-01-01 01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-‰PNG
-
-
IHDR(–ÝãtEXtSoftwareAdobe ImageReadyqÉe<PLTEùüÿúüÿùûýõùü`}ªíóøPŒÈêóþ÷úüÀÛü–µãçñþùûÿàêùãìùáíýäïþÔæýN‰ÄóöûQ‹ÇÞè÷<s¼ÝêþE€ÃØéýœ¿íPŒÉüýÿ^Š·äìõ—¶ãìòø©ÅêOƒÅ§ÅìQ…ÅÂÚø¢¿éøúý\ˆºøûý>mµÖçýõùÿ ¿éÐáøŠ®âñ÷ûìôø…ªâJ„Äæîù=p¾ÞìýQŒÈ¼ÐìûüÿÛêýÚéýÙäñ\ŒÉÖäùÍàøÛëþÒãù ·ÜW‰Çe�ÌíôþQˆÀìñ÷|�Óp–Ð¹Ïì·×üLˆÄØèýÆßüßìþöùü²ÌñÄÛøÞëþåíù[ˆ¶Óåýó÷ûP�ÈÞéù÷ùü¤Ãì½Õôîóø×èýc�Ì�°ãa�ËžÁðY‹ÈC}ÂP}Å‡¨ÜLr¯Ýç÷V„¶˜¶ãðõûîõþñõüMˆÄêïø‹©×³ËêT‡ÆöúÿßëþH‚Ã«ÆíP‰Äãëó‰ªÜFvÂfŽÌ÷úÿ^�ÊÜêý�³Ö[†ÉÎÚër™Ñ½Óô–´ã?y¿S‡ÃûýÿÜèùòöû³ÊëÜëþÐáùñ÷þ°Êë•¼ð±ÍñÉÞ÷ôøûÿÿÿ”””•••–––———˜˜˜™™™ššš›››œœœ���žžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ¾Å{”tRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿE9QšIDATxÚb˜ŒÐ¸õMñ‰µ¶ÉÎEJm,�-9ÖufüÜ¼F6æžL"{�öý~C6†j¦0.^vWž�$oV6†¦¸²J>F“4NN 7•I²K9+CT>ZÕ�5‚¡JÓQO;FW­Y°/HAšÁ”ÙÂ¿$Ø¡[ÜÊ¾°B„�EK,E¢ÔØ'O¨Ü-“…¿#Q¹Q�GI-–XGIEND®B`‚
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/templates/ja_purity/images/emailButton.png 12/templates/ja_purity/images/emailButton.png
--- 11/templates/ja_purity/images/emailButton.png	1970-01-01 01:00:00.000000000 +0100
+++ 12/templates/ja_purity/images/emailButton.png	2009-05-29 14:53:28.000000000 +0200
@@ -0,0 +1,3 @@
+‰PNG
+
+
IHDR(–ÝãtEXtSoftwareAdobe ImageReadyqÉe<PLTEùüÿúüÿùûýõùü`}ªíóøPŒÈêóþ÷úüÀÛü–µãçñþùûÿàêùãìùáíýäïþÔæýN‰ÄóöûQ‹ÇÞè÷<s¼ÝêþE€ÃØéýœ¿íPŒÉüýÿ^Š·äìõ—¶ãìòø©ÅêOƒÅ§ÅìQ…ÅÂÚø¢¿éøúý\ˆºøûý>mµÖçýõùÿ ¿éÐáøŠ®âñ÷ûìôø…ªâJ„Äæîù=p¾ÞìýQŒÈ¼ÐìûüÿÛêýÚéýÙäñ\ŒÉÖäùÍàøÛëþÒãù ·ÜW‰Çe�ÌíôþQˆÀìñ÷|�Óp–Ð¹Ïì·×üLˆÄØèýÆßüßìþöùü²ÌñÄÛøÞëþåíù[ˆ¶Óåýó÷ûP�ÈÞéù÷ùü¤Ãì½Õôîóø×èýc�Ì�°ãa�ËžÁðY‹ÈC}ÂP}Å‡¨ÜLr¯Ýç÷V„¶˜¶ãðõûîõþñõüMˆÄêïø‹©×³ËêT‡ÆöúÿßëþH‚Ã«ÆíP‰Äãëó‰ªÜFvÂfŽÌ÷úÿ^�ÊÜêý�³Ö[†ÉÎÚër™Ñ½Óô–´ã?y¿S‡ÃûýÿÜèùòöû³ÊëÜëþÐáùñ÷þ°Êë•¼ð±ÍñÉÞ÷ôøûÿÿÿ”””•••–––———˜˜˜™™™ššš›››œœœ���žžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ¾Å{”tRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿE9QšIDATxÚb˜ŒÐ¸õMñ‰µ¶ÉÎEJm,�-9ÖufüÜ¼F6æžL"{�öý~C6†j¦0.^vWž�$oV6†¦¸²J>F“4NN 7•I²K9+CT>ZÕ�5‚¡JÓQO;FW­Y°/HAšÁ”ÙÂ¿$Ø¡[ÜÊ¾°B„�EK,E¢ÔØ'O¨Ü-“…¿#Q¹Q�GI-–XGIEND®B`‚
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/templates/ja_purity/images/logo.png 12/templates/ja_purity/images/logo.png
--- 11/templates/ja_purity/images/logo.png	2008-07-09 03:02:30.000000000 +0200
+++ 12/templates/ja_purity/images/logo.png	2009-05-29 14:53:28.000000000 +0200
@@ -1,32 +1,41 @@
 ‰PNG
 
-
IHDR^PfˆíìgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<PLTEgªâŠ(ÊÊÆí¶du&%...443ªÖ‰X©Õ…)Y.+(((íd°4m±íxkíXM\¬&Ûííí™†¤ÈêÅ†;íã²™š”í¶©êíÔ<?6í*&íÍŠ|°Þ“$$³""%%%í›9AE8ío^í¦—s·Gj�8$9IíÑµíê¾9:5|š8:<6VŠ4…Ã454vS*í¤Gez8T•#íªSL¦LW6343784U¡qµ¥k)�»äíÞÏíˆy–d*ˆ\+000:=3Fz!9X%681·u(Kˆ J’ÌQ]6™ÌvHhdx6ÜíÈìK>íÕ–‹Œ…8&&¹Ü›Óë»Å{'@h"±±¬í¼pFN5ce]Z]SÆ  ‚£9×ÖÔV§7K'pŠ8“ÈnYšÒÆä«Ú\m7XC({™8JMBnpië’*Zi8as9jleAY–—‘MteJ*{»R?B8äâáTœÍwº>4),1<rtl895¾¾ºCo#>B4CZ'EI;ðïîašBF8bw6í<7ë„ÀZ8:2:=5ãê™+‰Ãbpsi>b$í6-íÆ>A7Ub8=?7w’9�¼YÔ ~€x—˜’í‘(>B6%.3^p6Vd5Q}ˆ«:.D4í•0�³:TVO-8$í“*íííh}9£¤ž#~¼;>4í@ŽÇí<@4tO(ì‰.%$/*%@01íŸA‡ª9í°]çí“)f¶n²ã�+ìŽ%í‘*]¬l³<PA0¥¦ í}›9ë'''æq¸'+$6<1ííÞ(,/\°0?C5.+)í53232/“»:6749;6222564;>6tvm<?39<3í"!í!rslMQF@E3í—*|~v€‚zWg5Wd9rtjÂÝíC:0+++..'d£Õ½à¤0;¥Ò‚?K5e»}5›œ!!¥""íçë-‚Á~X.¯×Ž#À<B2$')Éé²hN0ýûû333‡L|/IDATxÚìœ{xU–À›Ðé‰´QišG¤RLC€tcHBƒD$!((Ã«�†é0v9*”¥k,l‚A��á¡qqÀˆŠ‘±»ÒegœÕ¬;¸;8ó‰³î&sÎ½·:Õ��§²ôù>>ªnÝ:]õ»§Ï=çÞÓ14ÅäCAooLbxcxcxcÃÃÃ“ÞÞ^�:�¦…³§do\h¿Ö]ØñË‘“'g\};Æ°mxYf¦3{ÜÐ©—õ—ýþ5àfff®y òøöís�Þp0±-xZ¼sÊÉ‡¶ìÛ·åƒËÉSZâ‹pãGv3|ÈÛßœ£Ø:^ ŸÝë¡{ïG¹÷»„lGKtããßî6¦ßð~(Ã·wû¿ÆÖðRºýü;*?_;nR‹t?Ê(Û~ß­TîõÀ—1Ž­áh

ÙO.b2uhAv“óý÷man÷÷�?þqÃãÝÊ»ÏÕäè‰«1Ž×Æ‹6ÙÐÐsJA¯µš$'Œž2zôè)7½ß-œ0ù§?ýïŒŒGÊŽŽ¡r|Tå#1Ž­áãíi™’��Ü‹JrABÂÚË—¿»üôÉÑ³$ªørÂ
sa>û ß­GOT–•¢RYV99Šb;•.yÈkêêÊ¢êÚÔÖ^¼
=kj¯^
-
-’‡>½è…^£’Pìø-ûöõ;>¨¼¼¼²²²ì
"ð_yF”2Ùˆ˜ì]ðÂ&¦ÊÞôƒ~Ñ†úA´±c„õx-–ì„p)(›|òdò¸IŠÍý`ßð1‡••½U"�D†fðÒ>ˆ¯ó¯m·ÛüD—?š®.ü ªÍïóÛlz–8~þ°¶â�”E
-
-’“Çnyhî-·ô+?†å†·£<¦Ã¥ð¼â‚×îô+ûº¡ý‡ü 6V.‡Ï¯*:~¡mÄûÞ”„¨2vÓÕCÝ‡¿¯üPe¹ê�xN›�›¹ª´tÕrW&í|g›CU¥«ö:ü¦òƒˆ6×’’’UÐæÈ	kë ïµX^�îÈnÝûõ»µüD4º¿�†„‹kY¥tú­M~WU5.�¢K÷AŽ®Àëp,õz9G^‡«ÄëU\~S§ðóµ¼b¿£§L) tOt¿ï¾í•H÷Í&ß ‡ÛmBS]äsú]òÖ¥�k“Oñ¼Ÿò‘ºLÚõ»¯ð*ú¯	 à9_§ð2óµ¼·0xÜ¤—ÞƒÓ±›ž8~ë­s	ÝÉÿöðãW»ip˜ðpf]S4¼N^6!›tNX“]ÖÖ|Ôdó)Ôz)R]ú;�}€âU]~{X´ÖÔÒ¹=ÚeêüAëe}àU¯Š/Òþ-$k#|-èŒ6n!œÔÔ¼´ðà‰1Û·wãDå[Ÿeüé²¦ŒÅgfÖÕE5Oð;kÂ©×‡âgñ‰¦tMv‹®h£ŸùÙU›ƒ¯¢xU—N\Ä€7‹â57ãÕÔ5”MÙéOÙ0Ïm>»ÉéÂ0$¨Âäç€WæÁû¶¶qÍ�ò�Mè&÷ÚØ³'„Â5–«e£æÎ=^DÉ8Ò“A³Þ‘ñÑŒñ:=Uõõ²ÊA<åw¸8…<8¾QhÂt8\.üƒVÎ…‘¹ŽWýÞOÀ@1Fs)
-¯)³ñÊÃK‚+	Öüt8`<È©é@CðªÍdÓ]ö“áÅÇðÙt*|\`º×+©Š‹êh`CÈR
q¿Ùh½cŸ|ra¤É=k&–�êÞ}Ð}ë³	=þÉH‡`Íï„¨ÆKf{³ àEª,�Èfˆ®È+ûBšÀ!¸UUTÍ²m*gäˆ‡û]b/€PD3½S…k~¿#/
®È`ˆ…˜ØH²¡¤WyE¸Š£åâÈuŽô¦x}:…¼ð*<mðÛ:‚—-;Ô°Übì¾°W!>šøÆ¨ãÇGitÏ'É<Ì¬wBTºïÌþ Ë�\ÖC> ˆ›ó©™ÇWôq!Mœ‹Û»ªzûÇmiÌŸ3F�ÖmxÑ¬¸8
/»xùÅ9p¥qKÜï>5+øòaxéØå¤¥¥åˆ
-~!^UÕt8O	-—"âÙ£nø\$#iÎ™ŽçxÕÁ‘oO³
-ŽãEÀk¤ç¨G{"`ýn3ß�èxÇÞ;užN,;:fÔÑJð@wqâ€‰F4ß‘Ìz[XJÇù€Nm*¼Ý‹[5‰[|\hërrxqk›y1ŸÍ1ó¼ÊðÊ¼"ÎËÞØ¸aòÅ‹¡+ÿè/ÊžGEHGR½§7?OÎSÓÁfþ¹cäÌ;í¿÷´{E‡²Ô»LYÔ©P« “ûå
-ªÃ
Ÿ©#x›2inñ,Á{ÿÿfƒõN,4êè J€ùk°ÝÄó¶m{ÝØÓòÛ4ßÛb¬Êâ%Y•ç5ê$NFsm'@ñÆiM[‚G0g‰æz†WT—­Óß¹AU¸¼>X
›>xì2›©Þ¼<ï±’’Â
-oE:øŸt¯÷Ø°éÓó€¯YaÖZá­(,Áó4
ÏRoª
-æ¬S!›o¡Ö)OåÚÊBVÊ	^9ŒýÉ¾µÿÕ0ñ�òAƒÊ©ÛML°mÆ¶§Œ–	Œî›o·«²xI�$Š*?n›ÿyÞÚô‰ =£a
§vq�d–^I•W±nÿ|p�¡‘ƒ	\õ1ï1w}VàRž·b³TŸ
-67Ý,éÞ<ÉcÞ¼KUbVXt®€ä¼…—D>@ÎeðžÇ®SáÞ!§a'w–È*ôzmO(�·ÆòÞh\g8yËý½6­éVYÎœìá+‰(¶öÙú7ãÁ_ÓÖÉ¾ñ²·vÌ' þ½¶¨hù¶Kª´7¬Éj¥x7ÔÖÍdî¡¶hE-ÈA¼æ*¢tt£fÜ_åÅp¼\.¤ «ªÒ„€÷´.Fì6B.¤(ªUéx&¹çâ€à|…,ƒ±Ÿ„’ì”u	m<$Ân7^™��zËCNz˜%j,³¾!|·õé3ã5ãšÏÈÒÎÕ¦ÖðZ­„×· ì .a� ÉáMn†÷µÂŽ"Â-ßmŠJ)^I
-â
‹¾hµºéÀô—ï+z¼�cÁûOøUÅ™Tœöz—H<xU>Pá-àj.ó•Zåõ¾,ìré2^³�¤”…xw„¨ x7ƒ
-‡¢"}•ë0Þømá¡ á'÷§ñÍøšg
$|·ö<ã]ãH´ß7Ùšñº…RjÅ²Y."”`oÒðº%Y: 9™yk3^•fÇW¸kóƒxKYÔfkÆ»D¯¬8—”ì’Ñ9ÒAøìy¼Ã¥œŒxñZ…4i9ˆÇø@(^�
-ô toÛócCØ.%	»ÈºdAÂå‡.S¾
$›8Œ|O%ÎÜ»ò-{sM]ëx­”¥$òl†£�hbx­fQ­§÷Iª*‡ã•y§Ó“Ut­ç42¼¼‚|¯½�,*
-¤¼xåI<Ìö>…#˜�‰R}/\…	ÑÓŒWÊÒ©PHä@:ùâU:†7è¨{(H˜úÝÔ7­¹!`ÄNø&žŸÑ{<ð=øæÕº¦6àe;¯hñ•Uˆl¢$…fW
-ÜÔ¼`Nªpç÷gÁû�1é„1‹sÌïÏI*Æ¬ŠŠ¼d±bàsø’“0[eKñÊ¯‚x©*§6O³
-�{e:B�ÅKÍ×2ûßß§//úðÙ/?Ž×òåÃWN¡ýößwð»Æ·3Û‚·–á‚XRcYÙ¤á
ÑðBZ¡¨’õ�º¨
ñ’ N6¶<ëtÂüîÍ[!£ó$ÞÒLñ¢Ûx[yÕý2Æµ¯ÒŒW xÍœG§‚âUºoÙ/Ž;ß'=�ülf¦¶ñýÎ+§. ß¾C¿f¬kêÞhÄÛˆWáå_²Ðm‹ö
¨"qˆÀ3¼&¿ÃéÜ…™Ãž!dixm.ˆŸƒlZ}ÓŒ=-â•EÞTÏÑUxƒëfÓ)ÏR¾kŸ^›¼‘mÓ[¾ßmx‚Úïà!7÷>eü‘ñB›™Åmqó‚:ø,„-iïŒ|N¡“ê–åªP¼„44Ü¼]µ-â5C$Ñ¬‚¦]„—¬;¬LJú×¯'Q¾C_Š|{ÏÝIÕÀ÷�ÄóÀ÷æ;Æÿ­Ç�‹WRÍŸRË-µup¼‡$ƒ\/.Ç¹œžÏ1ÅÚ,Ô‡áubB–+E×ÂëÓ«�»ïÎâ¤f¾½†žLÞh¼gwCs’á‰ÛÁ~Ï%ö¾ãîñŽü¨¾b5íæÏ·6ãu)˜çâT¶Ycgë‘ç	b®U†w	¤— ímŽ"��KsA‚Ð¥Î¡abÔø&$ôê•œ°1>þìîê;ïÄèÎŸ;×÷îu3ŒmÇaB}^]S›ð
-Ò2r0Ï*Á!rqÎWââJE
/„OD
-‡)lníiŒ ¬ð»ª0¥xÞ»G€O†ˆí¾—sèUh�ºfj#ÆKøn¤›BÉÉ		³v'­_'µß¿@tö›Ä!ûnx¤u¼shšqìºN E4µ¯À²«¤ÇëÉª—Áà^ºÚ‹½>Ÿ•‹ÙÁiï÷r8EÕVx‡	"„[jà‘¯èUX»
-/q±)IL¦±�Üvû—ÝÕ¯þ}=i6¬¬ùËà{þŽ}3z´ŠwÍ!’ emÂ›Ümµ^
¯ Ôj�„¶dÝÞåÃeXÜ6¶t˜BÞIÞÖëÝL³6±Ð»=®Œù­9·E¼‚4,U¯¢ñB€0�Ññ=]œ¤tÏ|û³¿WSºÿ.ûýkŸ}ã�­®9ìx‘®!¸­nz$Hæ?„5µï<69ºÝÏhxQ¿�ao¡·sÈ{/1¼+ÈšƒZµÇ[ˆñ‚™›(ï‚#wt¼æP]„—%Å«Þ•˜_<[Àèî¿çÛ$�®Åb„ìíÂkùCnouÅìõ—þøÉLªþNVáMVö­D^…æº%A¦3áº™ìF2
-lÇŸâ-¡É¯J@0ñB‚‹§�´­(:
s•,Š²”§á57ãeI1Fb:Z'ð/¸^Ùñ5\Ò©ÙMéRÈ¦ål¤»úÌ=î¯¦ÐIÚÑãðýkß›¯´ŠWÊš£_oœÓŠ'¬Ibßz	r$m_ÚåÚ‚d])–Í�æiZaŽÄëøŸ
-ïžÉ,K¸ÀkE¼Þ—A	žî±€t7G‚³B’µí˜Ž{ì><°ðÊr×{Í—ô*)ØÉ…«í¢«Ãx1§Ðð~MÖqjf#Ý¿º‡Ð=3�fuÔz{·n½0MlÖï0”ªŠËå
-m‚<Š’Ä�5�Ç)´—]i‰Ê{öj›Hëˆ[™£‚—¬9@ìå}>-
ÜÌ5/Ï›§˜³eåV@Ø›–v[+^Fr†!9Ä«ârzªÙìÙÕ¬"]ª*¡�°z.ó�YïµX4ß»ºkRkjv®>óÕm’¦j%žfÍ˜»%¾Ö§w«¾Wyçæ Í­›‰Û�ð*!M`³¿ Ç0å°òp¥mÅÉŠ 8ÎÉöÚâ.7œ�Mô¶Eƒæëüœí¦-M—q·âôæTrz,>Ê™C7Í
-Ý¸Qa.¡E9�êù½Þé<ü–ò
-§S¡ŠëD‹x–r�Ú­øžá­6¤¾gG¬¿í®¯HÓ™'z!KÂÆ×Ñz/lÝz{�6Šùú`äÌ6/_ò‡yU"Ö=Ø|!M
-–8=Fó>;r8Niäíb}�gÞÌU«öJf
-Ö˜Ø
t#3§ß™^RR²$WÁ
À[”…ç9¸ùîrø�ÿ×j«Îôœ\Îéç°òFåc;–Z ‰â UÀ=N»ÉE;ùíûÛµ±S¼²Ø`00÷0mgÃÙ”¯ÞuÓmg°©úˆñÂ‚³>še|Š,¬_8÷«_½;°G4¼.õ€†÷¾q»[äEZ'ªU‘›°ÜÀÅqœV†Àqø
-6­|8pa�¹àyR·À±Bvƒ]_ð7p0²Y‡™
W!µºÀHïÆ™›Ð\O?íEU8‚5AZ';J‰
¡9ÅÙÕ†W{ìUÆ·ºxÄÃ=7}qÛzl8“‚÷©¸ù^è3¸ÏùÅ="Ëd}œ\¤m�a]†ú¤>ƒ<>gH“)øÜ¬ÈÉoÓ5²Ú(v•UÏ+¨´‚Å3º*Œ\1”ÒJlH	‹?DQa×•FÑÒ§æ^Á¦`'SGêhÔ´¤¯¾¸ñÆ/¾bx÷ßuÓ7~ñXÒ½3Åx*Q/¿Ù:äî»ï¾yk_ô
3_id•u6ZŸ�/bÓjèÃšìÁ¢ûÈ*>SøUíu#‹ýšÂjÌH�†R´xÅ¦éÒkˆ,"Œ¨KÓýx£Ý¿ã0„¸†Ãþ›î¹i?³ßo{lÿ�ä¸:ÅøNÝsÆéÛ·ï�¾ÂSã`ÑmsÑh”çêèONÚtÓM#ÕTŒTCª3Ûò¹]ò‹CÈZÙî¤ý¹‡EÍž0žºj¼Û÷Ò{ë;Æê#óÍ+‹í*1C©ëôýbNMqõúoQ~¶>)T_&Ñ‚^ÎÏ 2àÂ7‘UÈoþ<Þa»žx±R«šº ´ºsxé.[1¸X"at‹S¾‡hlA8ßDÎ%Œø‰‚iþòåË÷b½Ûõz1íIì¹9é>ßõÇ‹	[qR4)^½“$p³n_œUFþ|ÉÁ‘šÎëKŸÄä„0«k~õÖé_�Å:¢¸¸xÄî•OÐB_È…g¯\°`Á7Wž
-Á{%ò­0°io­ñÃ·Ë~SØy¼«Cð®´œÝ¹ólCîÃÓÙb©9|xÖa‹%ÄOœ�Œ|ék]o¸Úo8®ßc„âý³Ao¼àÜL¸'™,éå›¨{×�ìÿ	û]ÛJ½ñ60¸™¤Ð-8è%Ól»‹�Ä0¶/VïY¦iök˜öQ|<�‹i€üò‚ˆVä» GÌNÛ˜aÎŸGáâÝ)ÌlëÈ¯'`ÍŠ	_‹qàâ×_jÁíGZ®…ŠIHZA–ÏkjÐåÆ3´uº%Š8žu„®Ð1>>F·ÍI1�½(Ý¨¿ù©£+?
Á~ñÑûÅ$bI'S›½ˆÇmáú7�ÚÐ1&a’ÚìumhúŽ™1Ûm#^öÇõ2Ù|v�[týbtÛŽW›¼B&´kcÛŽ7&1¼1¼1‰á�á�á�Iïu”0PpQ§T@DIEND®B`‚
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
+
IHDRÏP¾±!ÉtEXtSoftwareAdobe ImageReadyqÉe<&?IDATxÚì]	xTÕõ?o›É$“�@ÂD@eSÜª(QªâZÜý×})jµÚ
+nµÕÖºÕÚZAÅ
QÈ&È	KB ™,³Ï¼÷?çÍyÌË0“LÂÄåë;ßw¿Ì›¼÷îv~g»çÞ4M‹,²¨õ$ZC`‘Ex,²È�EYà±È"<Yd‘‹,²Àc‘Ex,²È�EYà±È"‹,ðXd‘‹,²Àc‘Ex,²È�EYÔz.y½Ÿþ!¤'Ê¢ò»¾†Žè�ÑYò†Ü°­ruµË[½À.§ÍÆ[¶ô2Ÿ0, Á}µvI·!BþÇÀÙqªÐeh�ÓÜÕšV¶f„Iy·Õ½
+ùA(èâ¥óP<ÈÖ,[Ô.$3pfdt~öÂ!7Ëý;�Y´h*”×—tX´éÅk¿«øú$ÖD¼µ2ÅõB8¸Xè7~˜pÂt²Š°^üVZùúQÚŠWjµe×"€þÞº×âK;ŠK±ZÔŽàÑ@ëm“ÒæŽéu®,l(ÿy/²»T‘Òà”žç@�§rpYÝŽß!€f¥´v5ô{!¯û0±÷H€Ú€ê­†BÁ–0àtÐVýç	Øg„]­x/@~<µ3x4õÒ{V†Ë[Õî:ãš%¸"¦Aº’IW Ðæªjx7~¶	‚1$@2ö‚Q
S;"ž–ìÅÒ	¿ž²pAÄÔM¼/�`ÏÈÔ<®ßàå
É+
„n#¬Ùµ¨}Á#
+Ò
þZØ|p8”,ˆ=Ó@ªÜ»A$›"Úæg:rQ�Áp ±1P÷}Põ)‚ø©1.h‚Þ *Ó!³p˜�Ó­ vƒ†ý{µÆJVfWþA
�@sÝ‚ZoñÖŠŽgdµ|à‚Èî
+BÏS¬Ùµ¨Ý}žâÉ*Ï]ËÄjô‡>A�wÑl;ÞasBnZpÚ³!¬ÂÀjwÅEåõ;o
„½�á=¯D™8Ü5Íl¡ïÄéÂðKí�ÓÍ2´¼ª¶�V¾¶ 0À[Z(Zí^IŽ�†fÖFéÉ�oñ»A<ñZ|"ßš]‹Ú<k�éŠ‰3ƒª/KŠ:_zƒ�°·vìÑ¶ bus.×Qˆ`êÜ÷�·üe¯æ‡vÜ•š“ó„“¯*†ÏÐÍ2õÝ[*6F4ƒˆ¦š¤D}
Mº`8NÅ‡�\Fpl±7!/@á †ýÊšY‹~ðÌÇ2�Ýôæå:2»lrÂý!T4ìD�d‡*‡&vLÙþº8æê|¡÷É mxÔ/ÿJæ€’†OÙãkŒæ«~;)¿
+MBñôß¢ÖÉK¦ï6 h_¤fR­I™…¥’œX¡Ë¡¹=ç`Ë|°ËJ,(ý¡–XÜÄöŒ™	ïaYÞ–šL¢ ƒ_Qh{Õ�.ù‰áAÇËÚ	Só…=AÛ¸Ôå/ ù…¼©8@hK5Ÿ`ùg‹w} t
+B·“}ï@,ßsYÄ`²è‡¥é¦9xð'Ðž3±Ü�åN,'ñwŸb�ås,=±Ü†…˜ìF9aù É
+TF`ÄRÂ¢€°üV—ü‡“ƒŽÇ´!g	¹�AÛ¼ÔÕó"~™h¬¬°x[Ñ™/°�
n¹U!Ž=§µZ7“¥_–ÅÇ?
+Ùyü�ì×þØdö[ü÷kÅ}¬¿Á‚þ=¼oØ`d²LÁòëˆk¶f^Ä2¯úí´ÏDÖÜP§¼02�öôÕEpæƒVº
+Ô-Ÿê­´Â�Ê©^Pà&t�±Ä'@ìlœK°\�å,H"³Ah~1ýÏjÍ@™M´°ÅÇ?
+©	>ÿÔè�lÚ“ô',÷`yÍœ»BÿD†c9Á	¹_ÕÂOáåoHÓ¨h}õ
+ŠeTaÂ¯xá¨@ÚŸ ç�BHÏmßzP÷}áMZ§‘aO`Ÿz�ÔÖÚŠÐ'Aù¢¡oXËæb~¦&Õ¸9ù)ƒ8êz”c™;ZÔô5ÿÝÎw¦‹™D¶ç"\Œš#Ý–�³z¶W­y^ÈÓ¸¼Þ'ø%PTí4Åç¡¨_>Ø� UlõÀöˆkCþPšPæ^¼µîÓÀd„Äz9[P�')à(ºI[ð®ÅX.‹iƒ„¥Òà¡lgGŠÇ[SlÑJrô°ýû`DádÑ<¬ÐwùU½'y‘ùuœ*‰o	¹Ýr•VUjmY$¼Œ¶œ`v{6„~SÿyàÿY‹&\ßP=\S÷I ,wAé$€ª´ËÑºÈ…ØÖ`„Eµ™b“¿È™/?ìhaè‘Ûzä›áWƒýº„EÔ8ˆ7A;SÅw´Œ¹*j¢ð¡½ b‰„‹8Š°Ã³&x]ÝÇþ[‘§ÇJY64×lW¢ö¦ÔÒ|ÛÂ:À�†&h×ÁVƒÇÂŽE?²æ!¢ØöhÝ~$(=´	Îp…èLË{Äæœ•¦¥�D¼,ÅaÓCÐþ*TQîÃžèãTz7ïGSm6>>JgjU¥À	!Ù75XÕè¹Ô_áí— ÔNMàÈ—·ÆßìY
+ÿA¨–¾@[)"Ñ:��Ýz,Õ©IQ]�ê…¥[FØÒƒÅÅ¶÷ž$�í^Ü^¢RŽ uåþt`Ë#Ä}Ù‘r¨…÷p(×1£çËØGp·ÃP]ÅX:rŸdS´Œ"b%<.ñÆ³˜ç¬Þð]R	žÏØa×³ª7ì_ã‹§ÀÔ�×Œ{wÃóóVØ‹N
+¤é{fhmE�¨q&‚¥"T«M®[§GŒ@AõAk`ïQ€à’gøw»\Þmò®´~²ªùµXí÷_,;’î×‘­£¶i$D"“™Ñš[…%­Iéá1\ÈŸ[CEYoø–!Y[H¤W½<V”ÑKûž>n†Ùi[Çþ|=DB±õ‰Cõ›8ÂôœÉYnÏ…‰ˆa&ŽG»x>ÿ†å«£œƒcyLhlŽáqJDØ-�šÇãcX:Ë¹ýòœ¦<KÙY€¾x
ðþ¦—`Úàë¡®ßEg?½ý
ÿ]uÂ¬¡~å/hÅ™Å}–sÑ,Ûˆrp6�’9¯¢fjAPã€”íÇÀàÝ,ÝP»°úÅ¼_fÜ�V,?®úš,ì?™„´;á¸@}‹9•'•DQÇG4æ
+ŒÕp3!¥Nd0¨:q‡å~,ïc¹;�$4S&ßO”ÂM\ÁáåvP]9,�s¹Ë:,�by+Îû%Óç?š´�1w¤-™'èÝ�Y£P¹ËC<7$¹_†ÈJ¼Aµ<î˜ç‹¹Ð*ýŸx|­œƒîX~Ç`5¯‘¶­ä6{¸^‡i\†s¹"k˜7³¶âŒGÊÀC!ëÙÆØä4ØR¹–l{†u5Ý&^0–zn­ƒÛGlsÂ‚–Î“K)>«#‘6�¡®�È¢èõäßh¾ øK*Ar:Á9ª?¸×ìººvaÅ3¹çfÜaï#ÿ5�ÄZ/¹�£�Fz�ñì¹‘ŒìÔ�Á}Í< 3æMˆ¬4¯a†óƒ±N�¸SXÂOåkZE'ó”V®eJŒ‚È2Á ¾±d\Ì»œ�ãçÉOcæ§´‘‰ÌXY²RêÈKl=ÔÅ0›¨ÀRø¯Ü'×!²&ê�åbˆ¬ýÑõ‰ÁÿnãKÜÆ:†Èï'Ðü’µšp?7•y,úk­¢˜qù�Û^ÎÀñ3ŒEWG
+¿Òâ?m•>›Ûý.�ƒ)XW’†^˜	¢Ž-[D1„^½pš†õPÎ^×vhÔC¿ü! J¶Á„÷º‡„—º¥"lÉÅXV
+(ýe�
+êF(a-ü�M
uÔaDXAó!\ï[çàÜÂ.ßI�_UîU:*ïÚŠ¤NÈ¡¹WK»Y!ä¡ópÏ{öh|�Î,­�¥îóY,ÙL¹ƒ'„&æa6QÞaó¥�@51¦Ÿˆü„÷hylÖÐ„ž�Dø6¦g0Hºðõ§¸'¤UÌ”æ…ÜKyZõ^Æ\Â Ì`SŒ@¼€ÛEt9û=†6»�Ü–Þ!Óÿ|,—²é9šµá –ê*Kò[Ø<rÇ<ïçç?e†ÃÚøÖR†5‚›h-kiƒ¦ñf›,¢KÄ«Yë˜ÇEã9q³OGá'ó{N0iòMÿ3“y�çdu³šgÍqñýpM|$;ý@zfúÁ{BaÈ’M×@þ�Šó‡‚/Ïsþ3Úzñ2Q›ÔQ«t8K*¸Ó2`O§^ ¨šÞÌ° Þ0Ôµ·±ÈëºÓ')7¸¿Ý
+™“O‚¬)c¡~±rµkáöWµ33G‰¡¡ÅŸH
AêØìç ÆIk—¬š«°Ì21é4Cki73,�éqþî	öÖñukÃyƒÍ¶P+ëò3£|Í>J7fØ‡Øl‰%êÏcI¾{�ÇW&S‡uÿÜŠç¯aMac!ôç´OÅTßEÐúL7›ÝëØ’JKi´í¿[®Ly’3­Ú3jÀ‹�çfì»3N´»vÈE™ÅàË,>ï±$MÐ`j�zYòC…Ö–½$126I¹òÄC%U¯~ûÒÜ"_ÝíÅÁJ4|¶r¦žy—Ÿ®ùŸÌ¬]°gúÕ-
�ævCÚi'‚=«sªAb
qŸé»ÛÛ3Íasç—<y�±£ª²IÓ�ï#)7³
À1iÅ+Ù¬‘™QŸeÇÝL­=T…Ú¶�ü`¾^ÐÊçWq`c k¿Î-ø€×š4ÎZö¹Ž&…j1›á�§t�'ŽÉF¥Ÿ,ùÞtûòþjÓ,_U}ŸÙŠñó$Q�Š†]PZ»œrt²w™¬€°@Ö GÖ4Õ4°©a.¡K2ƒÞWåöž3sÄUeeŽÜûa?9R,«„º÷¾@_(¹×Í€ôI£gBÀ÷p³&É=Q©S»lt³¹ÓÃ¤Öÿ–¢wÿÑ$iÇsx˜Ì‡)1�’@
+ê"Íó%Î`Mz„ÇØÁReº>Ð†vÛ
ž„®DLìISXýhèOGš><|\Ml!U—#Iðú³f¯Üz¹äjìú¸"ù@2¸|á mÏmà�³& ',À’‰èï¸?¿Œþ’�‰¦ÞªÜ^O"€j*íYsÒi}È®€¿¤j__Z(¹wÞÊ coÓ|þãš_×A_jÐ ö
+I�Yïò¥è½ëLáw;›%™ìÌÌ¼*…ýøÄô¹8þ¼·…Wš€©µ¤%ˆüÅRBŒz¾MÑ˜øÛ 1“ƒ³s±ë@�œ¾Þ|m°¦¡×QŒŒ›ˆjÀ¬�:ß4ñB´‘îTÂ‹D!LÊgš$o¤ÙmvQŽT�×æôxTUîÈyNÑTÓìàß^
+‡þü§9÷Ünl¶»!‘ãC{Øí ôïŸŠ¾k1ëÀN­9üšJ­¶ßtmg{Þ`"_
+�
+93¨=Rý…Ž},9M¾‰R»ÈúY{ƒç¬Ø¶$ ÁSðëÍ{'?#
+êÃÑ!¤z!ö ©„`8½~kÙø™Š$¼V”•!9m
+¨áðá±r¢ZÑ¡ï�O÷�x¯=|F‡#
|ë6Aí£Ï€møp°�>å|ÍçëwÄ�ûôÑïKqßC¦¨›A¹)f¶Â)2Eëì‹m[)ÇôÙ?/ò˜ÌÊ´ƒ¿®½Á3:®!*îò3ËÃae¶ hÏ›ù‚´‘ªI‹Wl»xa•kèÓ:fØ³Ñ¯iðú<MÂéA_å:4íîe'Dgx?ý|ß¬Ûˆá-ì<>8Î8P;¥¢ï¦ÏÆaŽæ½L'@êv—žc¢Q·žÃËx§p^'˜>—þÌÀSÑ½^¤��K10›#s4ÎÖZðÐÃÇÆ«TÃKê<…àrwASÎw=;Áà¨Êü¯·\º Æ5ò‰1½3Ó³6ØíjoÍ¹èÊ©*“AW�¯Ú
+š PG>6….À³ð}’“²ziø„A*,„ŒéÓS5�—š>ï2�Ç0¯È6LÕI"·™&ƒv"rm“HÞo 5é­§rPÂ0_ù™�‡4ò"Óõ-
Y-Mjáÿ…|ˆË×­�ñW^5}wOØÛÊN�?Éw·Mö¼
+š¸ô›-Tíñìýs³:9)#ÁõþúE:À-Û6(Ž‚¢üÝe«aÒÁMà•lMm_Ô&áÝ{@­u!¾Ä#˜Hózu­#uíšŠA$ivžéúC“¯ð”é{2-Çe]×AdÑÓð}~gcÒàÆ¶ªgîQÖEŽöK&_ê?ÐúÜºŸýÝdbQÐÑ†˜‰Ÿî‚–×¶H˜?ÈeuK/•ãD$¾7E;¢�ç’äeÿ¡Aph}w(ÊÛyÎ½Wì«î;³Á=òÏ—
/LwÈ¼·y/Tº½  &	G2­·Ÿ·ÝÔþ
¾q¨ÆTo×¿ÇB¦Êé‡{‡@S ¸mÙˆÛ�jòwâ�£•¶=iÖ™ž£¨ÚâÀa­CÎë,‰^`S+YêÅÏ™5­!}nº&-÷kfr…µO¾ïûVÔeg€Î1™£´>r;ü<‰2²¯äy"kˆz)Eç~H¼}?®·‘q(â´$î—¹�Û�4xìÁ°:K	¿
�#þ	ýÕ¢|ßÌ€�ûOà¤²”¹·ŽëiOWdxiåvØƒæš]’t€ø%eÓcßúÃ
»>»EáÑ (•R–j#rÆ)î>ÀäT�ZS¾eËP>«s´Ph� Ë7ìTüÁÍ›ãI”…ÌpÄlºÝìKmbû9ÄN'ùSxRŒ…"Z{˜<Z�¹ŒûN1%­²SÀR–JžŽ:™M”r3Íä¸{Yò=ç™|?%[’¹z.DòÕÈ¤£tJq‰·®bc
J)%”ƒfŽß¿Ã¯~¾´€ÇâÌÐ”ap6÷íB’lº’uaŽ.­bÿ3^¨œPç1Ox–ó¸6´žîþPø½:8Ç÷ë”	U
~ø®Ì¥s¦µ h¿Ç»6IüvÐ®ø‹OéÓaìå'ö_ ûzì¨n€494Ë¶Ü·uÑïg•|qo½â„à!	°ŒæQGh7MÕƒk@�òóÇwî.+¿H°Û(é±ëÖé¾�i¼ÉŽí'\[Å`pòà˜‰œõË˜53û—ü—Lªb–|÷³N’©‘ý
+gk›Â˜õÖ@ß¶BËu‘Écf¡RËÒÖÅõÙYw5!ÚÌòÙ8æ÷ÑúSíñ¼ÐÂÿ—òØßÁŒœÅšüRˆîÛ1Æ…x9›Ç¿oÌ{H°>Ê÷¯HPmuiº>›á{Í�'3Vß×§pø¬±Ç@ÇL;:úaøxS¼²bøBaÝwÑ9AÕ„>ég�9¨3å¤C×l'¬,­�®Ü	•�>8jÄ$ûþ±ïßzðº]_<€þ¸SÅm­ß  ²güÒ'�×ýµºÞX8Ê½|õÛ‚"Ÿ*(Š7TRž÷ß‡ô)SÌê}&k•þ\G76]rbB¶†Yº‰Í¤—“�Ì‹¹œÊZk×Ó¢I–±D¹�%×|ˆsQ¢ Â
¬á§²6:žûÒÜ©õ;¸Žìh{“ðo�v‘THÑóBïÜÅZŸòÁL=˜…y¢}U—µ<×ŸòÜŸÜÌ|Ë€Ì3	×
ÍJƒôæ]“Ÿaaú�/ �t°dÚXºc?¬-¯Ô6‡P‘ÑÓ	Š'·?²DçX‹‘´VQ.�½å½‡nÙñÉƒ
JZO5‰qÖAp×2'œj£;&Ô4´VêzûSÕ6Ü!Hâ\AÌÍ…‚Å‹õÈ[3!èî<¸Y&MÒ`2éÚJ¤òzrÉc_PæÉr³ó_Ê@HU8�4jgöÑÒ!znž±[sg’þÞˆæ‹í„¦é6ÉÐ@Óxnj¥ÿ—èùB“:h
+Ý';.E<Öònžç]ü®ØLˆL“yKkKÌÿ‹Y`…YC5›†$8oš÷‰C–'çg59n—T^ï†*tþÅ˜�fÄÔÆYnæÿDyk¿†ƒç.ùêÉ	’¦>Nö÷q(å¦ ì=:‚¦ªF�Tx·•ƒê|Ž×´v¡QP!cÚ4È}úi°È¢“hwÌ2Ó¾?èBW‚¶}
+,ªÑQÕ#€cðuœs­"œnT´PyXvˆšàf¤°e….B°ºBVÁ¥ÖBª^°ÂžlëûÄŒÝtË˜1l#Rû<zÅöÿA¬†úz8tèôèÙó'Åß®Z	½‹û@~~ëoÝn7|·~=ôîÝ
+‹Šþ'À#ÙGN»
+Á Ûyšªé¿Ïc”8¸QclSòh1‰²f£¦i(ð7Âô}«@Ò´
š ¼Ãª3‹ÍÑdFU³Êm¢iÀè Q5c{5™AÏëÏÑµÇ£GæÒÏ=7%Û¯·mÝ
+ï¿÷.lÞ´	úsÈrû�‡@ yãßÿ‚¯–/‡ššCÐ©S'HOO}ú	!É±ñûýðÎ‚·áóÏ>ƒ={vCß~ýÀáHn“¡×ë…]»vÁB|~õêo¡´´²²²i­î¨úUUY	?ið™7Í§…¹Û’¸·–6�mÇz¶-Û…~Q†�õûaá7Ïê[Ôèä7ÃZHbû¶‘�´drÈ^…ÈžŽÃfr8t\²ä=šŸ„ªˆi_PPpäÄ#—|ø!lØð�.,ˆáˆqN Ü9Ä­Ínƒ¼¼|,yGÅÄ$‘wîÜõ¨qHëÔÕÕ�‚>�ÏçƒÌÌL˜úËQâ§dBËÊÊ`#ögwi)œ2z2¤y-ˆfð[óæéLŸ––†neòPót,è¨ÿ0`tI°0][[o¾ño8pàZ-’.tB¡�Þg»Ý½zõ†ñ§�¦ˆ#cDZ\p—–”ÀŠÿ…d·nÝ`ü©§Awœãd­zïîÝ¥úøÒô.únô˜±qÛÑØØ ÷£[·îm1õwÐrb"E;š]tk<‰ˆ$onI¸Ad3Y“ECò}òÐïIŸ6-!h¾Zþ%lÝñ	]q2h:tèÙÙÙðÎ;`2™™Æ˜H}òÃa]5ÒdCÑäÑàÓdðFp¹j!''WgÕðÓp’2³²P1z`Ù_ cÖë’™ø}T¤h¨]¯�®Ï<ëlvBä”cª¿%o
jWbHšôœÜ]nð(ƒþº\.p:3¡sçÎz»>X¼¶oÛAü,J"Ølv½¯ñùãŽ^Ÿi(Âû©>lÛüùó`ïž=z?Ç×±~*Ô/bÂã‡ƒÓ&LÐï!Íäóú 
+êÚ“4„-N®!�6õñ¡¾
6Lÿ¾çeãÆ
(LvÂÄ‰“ g¯hÐ’æjþ¼7õ1¡wRŸH{‘Ií¡¾|rüaS‘ÀNs§à8Ñ˜-[ö…@j7}OZ•úAÂóü¦êc
+†À‘îÐÿ·|Ù2¨¨¨€¾}ûÁ„‰q.DìS•>nJ9”ú{#D-qûJŽƒ×¦<{šžÄK×³ÉÖT¢£Ï½ùfÈ¸çž&R~ûöíðý†
º¤'Æ5&–ÙøÉHbV2KHò›9‘æ g�N§®à@“´¦‰¥wH8i‘ÌñˆÔ#)Mfy¹Î úÄ*Í§fcÐ}'ž8Ôv;ÕÕÕ8¹>ýüª‡üò3+*öëm¦¶SèÝ¹¤±nzÆ`£=áPè° 0€J‚CÄ¿ÄDðæÌTzõ?77W1(½G_ÄçZ?êÝ7räHN5””ìÒÛ®Ÿw�ß“¦?å”Ñúwo!�©.ó;iü
á¤¿ÿ7`à@=áxß¾½z[Èt·a¿Ih…ðybzc®�±0ž¥÷Óû¨nÃ´Õ¿Ç±t¢@ßy”$PÅúf€ÇX$ú-DvSZˆVÙ_ÇòHbKÀ~¥…ÇË!ºÃ�B¿«9àwË°Œ¬;ãØå•P€ÌP__‡æÊFØ¿¿\—z²¬4«æ[ û
æ3@qXã˜™…ÿßZ¿É`RúKuP‰‚€êŽTÆï5fŠÈÿ œ¹Þ#›Í¤0ƒ]?9É“‡è£mB+ýLzŽ€N“æÅnê³!àOfœô±À1¦w™�Ò\ÛÌcÏl4æ“æ×ðû›�¶™>SräGYù'ãÐÃë"í�âáá€Ã\^?!/‘¶l‡›¦<š"‹òr¡æ£%@	?ÔQ²q[’òÑ_ë¢jt¬yïb·KÐDÚ<+èýŠÖó›á-2œY·²„‘%©íÇ{QÝd¾%ê³Ù"hË8%fó}ñž1ÏgK@Œ�MÛMO‡ü¡è$ñ³zœ*´G—ž>Ð¿xäî{Zzd€5`Ñÿ
+�Ï>2eP‚/e^¸Úò¢Gy8±@ý9�§ç�&Mšjr(©­ôæ<ºDýZ!`R9vÉˆÌ¶ìeik›ÅÕßR;ÚûX~J§êjrGÒ“lW«Ú'ÿl€ƒ@©CÀ||úéÐ€Ž�LöÐI=]£;›…”H¹‡?Ó_J¥¤ÃcYë.bÏt:&–Ö¨v²ßWÉávz¦˜¯�¨N|Ÿñû®3!’ªs€Ÿ%[ã¾w¿Ÿl™µÉŒ=Ñæx®‡ÌX:s›Ñ@d�l›¼_@äûAAõväåÚ¿B#>ÈõËßÏ�¦ç�³ÜÄKß²MKñØÑÒÉ¢ÆšÞRˆ&º’dÿ/·‡N,ý·—2Ò)Ï�öå<ÇA'jm» °b˜Ý„ØÍzÔÚ>PÀLOïò˜‘]÷DôjŠƒßæB™æ”†CGX�ä¶_Íý¿‚ûFsó{ˆ$ö’oM¹o”ï8‹ù„Ú¼àgJ5šj¡©Fjp€ý&šH:‚é)žÚêpH(Žü$D�”­a£=$wñçY|ï¼æ4ŸßEùZt˜í¿éMñÄy
OŠÀ“B÷Q¦ðm<awq½7™žíÎï'›a#›ž¯r›gòÒ‚±l`œ;ýƒs6›Ý§ò;®€èYÑ�H&:1Ítˆf^S[)ñ•Nä¼ŽÛøƒ„NRêÍË
+´÷hHÌ²Á¾&¦§|0ZÐ~�ûü5zÇ4îc€ÙÉïÔ¸oæqÅ $°ü›…ÔÍ¾'¬Ó9Jû÷ƒêÁß
`!¶ŠûJàèÏcýî)<ÄpÀêLž“ùýï@3‡•È?àD4N›€cDóHò©åt^4eå^ÈÐØ 2Ìà(#MÒz~æÖ,ç2˜^âïËX‹É,ÍÚÃÏ×ôŽKY¬ci¶œ'šµ‰5ÓÃ=Kájfã´—1S�ÁãFˆnÖº�™¯€Û]Äàðç³˜‰ˆ¡iÍŒö$�ÃãÒÈï¨à>La0aF5–*Y»]Ñ£†
2Î§ÞË€;›?Rû#Žœ:¸ýs!úsí+X¼ãw¿ÑMopûv˜–MHÃ�ãq0vâÞÊ}+çö’PÜÊ~ôzpÙb8†…$E–iÏ�†º„ûA ù’øuîŸ´ÏC>Mu‡|øpò$¨ËÊjpÍû{?”‘Í’-Ÿ™¬3›E¯ów±'­d*6¹‘ë°45×›ÁÌò&k#KÂÉu1€~M3£sãÔOKipä/Š7ðw9Ìð…üÞBÖ°ÄD!húë�1v}5k�ž¼4pl»
+¢›ÈÌÏ:!zàŸÂm�Í¸®‰ù¿Ñw2iŸ�3_æ°[ìI¡.bšnT3ß%™|5‘Ç%
¢;E‹Ø´%�¶ÅÔŸ ºmþ•–ðñ“�CmN|0y2Ôææ6˜ÑŸKÔ¯©ü]�¥Žq¬í@¶‰ç±y³Ÿ¥òß™yÈ�XÌ&†bŠÞÌa)z2DÓÚ;³9fÉ8É¤ÑÇðóž·y¢Æ±D¶q}/ð„w‰a„°	aþ>„Í¢¥l~Ükº÷¶ß_dF¦ý+cé9ˆ}2GÃÇZ¤Qi³ÙÝ,Fcñš>ÓAYÀûb²x,Ì°nã(ˆnNìÁIe	_cï^qœs1<rÌµÂ@ÞMÓÊÈ—êk�¤Ox¾^âñYÍÈ`!æg!7Z8Ûú'k¶	šë‡†zÔ8v¿¿¹[	0ß°d¾˜M"7Û±x²¾`¤„M6#`ð(K¾XÕ°#ìex“¥ãql+ïägžcÇ¿'›~¶�/äzrX{•°yôOÄÓ,ÝþÂL^Ç ¾>¦O«Yò‘‰¹™?—A²›}§3ð2Øqq?ßå6
esÐÅõh&É^cË¯d!p<÷å?,‘çpý­|Ÿ¹ŸûÿÖnnnG=3j)�é«ì›
eðdíû'3x¬æqCÓ-î
1×n~n™š4ÚjÓ3†	]ÇcO‡{ç~”p_âvZv
·¯‚y§Ù£ªÌGMmÌ08Rª*xx{Êyà£4	5ñO©Ü{ÿo³x@Ã,	YÊeò :Ì¨%1&‰ÄÚGnÉîÃšlcŒ?“Í¶s¹Éœ3&u·aŸÉœGþŒ_?~î;Hü[1�8äº‹ÛìdpL5i¥M1Ïò3¥,D®Ç0/S{µ˜>gAøMþb–ôûL÷ÚyÌª zT—�ÇÙèK>k–2hº©L`a‚ø¿xî€èÏœmPM×ÆÆ·€)`aøŽéÌðélq[ð=¦vuå1ÚÆü!ñxÔ›‚5Æœ7»Îó“-þÞÈaÿ%ÞgÃòšlöx»'ÃÌÀñ(ÑI-ub6KCCª¯�s¼í¼É,D„¦‡\„XË†â€Æ 1ÌªÆ˜„š)PÛ§Ø…dOL?ÍÁ�Ø{Cqüœš>hsÛ›½qÚÐÜÿ7Ç¹×ã“š©šžŒŽá›½­àO
,²È¢6XHÖXd‘‹,²Àc‘Ex,²È�EYd�Ç"‹,ðXd‘‹,²Àc‘Ex,²È"<YÔ^ôÿFB±`>Äz™IEND®B`‚
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/templates/ja_purity/images/printbutton.png 12/templates/ja_purity/images/printbutton.png
--- 11/templates/ja_purity/images/printbutton.png	2008-09-09 17:23:14.000000000 +0200
+++ 12/templates/ja_purity/images/printbutton.png	1970-01-01 01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-‰PNG
-
-
IHDR(–ÝãtEXtSoftwareAdobe ImageReadyqÉe<PLTE}}}òòòËËË¹¹¹¿¿¿µµµ½ÀÅùùù×××»»»üüüaaae—Ê���zzznnnìò÷ßßßñõùd—ÉÍãûÂÜøe˜Êíóø———èèèJ…ÄÍãüÕçýìòøÓæüØØØ¡¡¡×çþ•••M‰ÅÆÆÆÍæü‡‡‡CCCÊáúÌáû»Öõ„„„ðôøN‹Çö÷ù¹ÎèÎÎÎÃÃÃÔÔÔ„¶âÄÝù×èþÇàú¨ª­uuuOŒÆU‘ÊHƒÄØèþëñùíôúQ�ÈÈàúøûýi•ÛáêôÑäü}²âÓÓÓ�¯Ýöøú„¨ÕL‰ÅBBB***îôøtttŽŽŽb–ÈÒæüÒÒÒÌÌÌ???æí÷Þèòßéôa•ÇÃÝùïôùyyy~~~mmmðôùÈàùR�ÈéðøkkkKKK›››«««íôùª¬¯PŒÈÏãüMˆÅa”ÇÄÄÄd—Êƒƒƒpppb•Èqqq–––J…Çéïõúûý£££###ïôú|ª×§§§���H€Ã½Úöìñù%%%,,,$$$ÍÍÍûûûOŒÈ×æòU�ËšššÝÝÝÓåýXXXÓçýRRRµÔóÏäü¼¼¼ÿÿÿ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœ���žžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ‰#�r‘tRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2ùa›¼IDATxÚb˜0aBeF‹U›²;�5�Èð—mu}å
-I‹Ä‹:ªzB¹qrÝ"Z½Ro@ÜsjQŠ2�š¢µÖÜ{&0Ü�u&ÍÆ´ÓÅ,²ø°ßY†é—^0@Á‹#±Úþ|‚€cþ2Äüüyÿ4,þù“›�ïúõûÁÀÿúõ†ü­[yy£ù¹{Ôù·n­gHZ¾5�
¶Î.gXÈ×¥Wg›ê–Ý˜<
ä*1ž\aá #¤wYÜ­5;IEND®B`‚
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/templates/ja_purity/images/printButton.png 12/templates/ja_purity/images/printButton.png
--- 11/templates/ja_purity/images/printButton.png	1970-01-01 01:00:00.000000000 +0100
+++ 12/templates/ja_purity/images/printButton.png	2009-05-29 14:53:28.000000000 +0200
@@ -0,0 +1,4 @@
+‰PNG
+
+
IHDR(–ÝãtEXtSoftwareAdobe ImageReadyqÉe<PLTE}}}òòòËËË¹¹¹¿¿¿µµµ½ÀÅùùù×××»»»üüüaaae—Ê���zzznnnìò÷ßßßñõùd—ÉÍãûÂÜøe˜Êíóø———èèèJ…ÄÍãüÕçýìòøÓæüØØØ¡¡¡×çþ•••M‰ÅÆÆÆÍæü‡‡‡CCCÊáúÌáû»Öõ„„„ðôøN‹Çö÷ù¹ÎèÎÎÎÃÃÃÔÔÔ„¶âÄÝù×èþÇàú¨ª­uuuOŒÆU‘ÊHƒÄØèþëñùíôúQ�ÈÈàúøûýi•ÛáêôÑäü}²âÓÓÓ�¯Ýöøú„¨ÕL‰ÅBBB***îôøtttŽŽŽb–ÈÒæüÒÒÒÌÌÌ???æí÷Þèòßéôa•ÇÃÝùïôùyyy~~~mmmðôùÈàùR�ÈéðøkkkKKK›››«««íôùª¬¯PŒÈÏãüMˆÅa”ÇÄÄÄd—Êƒƒƒpppb•Èqqq–––J…Çéïõúûý£££###ïôú|ª×§§§���H€Ã½Úöìñù%%%,,,$$$ÍÍÍûûûOŒÈ×æòU�ËšššÝÝÝÓåýXXXÓçýRRRµÔóÏäü¼¼¼ÿÿÿ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœ���žžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ‰#�r‘tRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2ùa›¼IDATxÚb˜0aBeF‹U›²;�5�Èð—mu}å
+I‹Ä‹:ªzB¹qrÝ"Z½Ro@ÜsjQŠ2�š¢µÖÜ{&0Ü�u&ÍÆ´ÓÅ,²ø°ßY†é—^0@Á‹#±Úþ|‚€cþ2Äüüyÿ4,þù“›�ïúõûÁÀÿúõ†ü­[yy£ù¹{Ôù·n­gHZ¾5�
¶Î.gXÈ×¥Wg›ê–Ý˜<
ä*1ž\aá #¤wYÜ­5;IEND®B`‚
\ No hay ningÃºn carÃ¡cter de nueva lÃ­nea al final del fichero
diff -aruN --binary 11/templates/system/css/system.css 12/templates/system/css/system.css
--- 11/templates/system/css/system.css	2009-03-28 02:44:04.000000000 +0100
+++ 12/templates/system/css/system.css	2009-06-30 22:01:34.000000000 +0200
@@ -1,6 +1,6 @@
 /* OpenID icon style */
 input.system-openid, input.com-system-openid {
-   background: url(http://openid.net/login-bg.gif) no-repeat;
+   background: url(http://openid.net/images/login-bg.gif) no-repeat;
    background-color: #fff;
    background-position: 0 50%;
    color: #000;
