Index: /FCKeditor/branches/versions/2.4.x/_dev/browserbugs/firefox/unlink.html
===================================================================
--- /FCKeditor/branches/versions/2.4.x/_dev/browserbugs/firefox/unlink.html	(revision 361)
+++ /FCKeditor/branches/versions/2.4.x/_dev/browserbugs/firefox/unlink.html	(revision 361)
@@ -0,0 +1,46 @@
+<!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>unlink execCommand bug</title>
+	<script type="text/javascript">
+
+window.onload = function()
+{
+	// Enable editing when the page.
+	document.designMode = 'on' ;
+
+	// Remove the links
+	var links = document.getElementsByTagName( 'a' );
+	for(var i = links.length-1 ; i >= 0 ; i--)
+	{
+		var link = links[i] ;
+		selectNode( link ) ;
+		document.execCommand( 'unlink', false, null ) ;
+	}
+
+	window.getSelection().removeAllRanges() ;
+	alert( document.getElementById( 'test' ).innerHTML );
+}
+
+function selectNode( element )
+{
+	var oRange = document.createRange() ;
+	oRange.selectNode( element ) ;
+
+	var oSel = window.getSelection() ;
+	oSel.removeAllRanges() ;
+	oSel.addRange( oRange ) ;
+}
+	</script>
+</head>
+<body>
+	<p id="test">
+		<a href="#" class="myClass">This link as a class</a>, <a href="#">the second one doesn't</a>
+	</p>
+	<p>
+		Description:<br>
+		After removing both links with execCommand("unlink", false, null) the first one will turn into a span. <br>
+		The script will show the innerHTML of the first paragraph after execution of the calls
+	</p>
+</body>
+</html>
Index: /FCKeditor/branches/versions/2.4.x/_dev/browserbugs/opera/embed/embed.html
===================================================================
--- /FCKeditor/branches/versions/2.4.x/_dev/browserbugs/opera/embed/embed.html	(revision 361)
+++ /FCKeditor/branches/versions/2.4.x/_dev/browserbugs/opera/embed/embed.html	(revision 361)
@@ -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>
+	<title>Bugs - Opera - Embed (loop parameter)</title>
+	<script type="text/javascript">
+
+window.onload = function()
+{
+	alert( document.body.innerHTML );
+}
+
+	</script>
+</head>
+<body>
+	<embed width="200" height="100" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" src="flash.swf" play="true" loop="true" menu="true"></embed>
+</body>
+</html>
Index: /FCKeditor/branches/versions/2.4.x/_dev/build_release.bat
===================================================================
--- /FCKeditor/branches/versions/2.4.x/_dev/build_release.bat	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/_dev/build_release.bat	(revision 361)
@@ -26,5 +26,5 @@
 
 :: Update this variable for each new release.
-SET RELEASER_VERSION=2.4.2
+SET RELEASER_VERSION=2.4.3 Beta
 
 CLS
@@ -39,5 +39,5 @@
 IF (%RELEASER_PATH%)==() SET RELEASER_PATH=../../fckeditor.release/
 
-php releaser/fckreleaser.php ../ "%FCK_RELEASER_PATH%" "%RELEASER_VERSION%"
+php releaser/fckreleaser.php ../ "%RELEASER_PATH%" "%RELEASER_VERSION%"
 
 :End
Index: /FCKeditor/branches/versions/2.4.x/_dev/releaser/fckreleaser.php
===================================================================
--- /FCKeditor/branches/versions/2.4.x/_dev/releaser/fckreleaser.php	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/_dev/releaser/fckreleaser.php	(revision 361)
@@ -1,3 +1,3 @@
-#!/usr/bin/php -q
+﻿#!/usr/bin/php -q
 <?php
 /*
@@ -768,5 +768,5 @@
 
 			// Each file terminates with a CRLF, even if compressed.
-			$outputData .= "\n" ;
+			$outputData .= "\r\n" ;
 		}
 
Index: /FCKeditor/branches/versions/2.4.x/_whatsnew.html
===================================================================
--- /FCKeditor/branches/versions/2.4.x/_whatsnew.html	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/_whatsnew.html	(revision 361)
@@ -30,4 +30,133 @@
 </head>
 <body>
+	<h3>
+		Version 2.4.3</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>It is now possible to set the default target when creating links, with the new "<strong>DefaultLinkTarget</strong>"
+			setting. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/436">#436</a>] The new
+			"<strong>FirefoxSpellChecker</strong>" setting is available, to enable/disable the
+			Firefox built-in spellchecker while typing. Even if word suggestions will not appear
+			in the FCKeditor context menu, this feature is useful to quickly identify misspelled
+			words.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/311">#311</a>] The new
+			"<strong>BrowserContextMenuOnCtrl</strong>" setting is being introduced, to enable/disable
+			the ability of displaying the default browser's context menu when right-clicking
+			with the CTRL key pressed.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/300">#300</a>] The fck_internal.css
+			file was not validating with the W3C CSS Validation Service.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/336">#336</a>] Ordered
+			list didn't keep the Type attribute properly (it was converted to lowercase when
+			the properties dialog was opened again).</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/318">#318</a>] Multiple
+			linked images are merged in a single link in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/350">#350</a>] The &lt;marquee&gt;
+			element will no longer append unwanted &lt;p&gt;&amp;nbsp;&lt;/p&gt; to the code.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/351">#351</a>] The content
+			was being lost for images or comments only HTML inserted directly in the editor
+			source or loaded in the editor.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/388">#388</a>] Creating
+			links in lines separated by &lt;br&gt; in IE can lead to a merge of the links.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/325">#325</a>] Calling
+			the GetXHTML can distort visually the rendering in Firefox.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/391">#391</a>] When ToolbarLocation=Out,
+			a "Security Warning" alert was being shown in IE if under https. Thanks to reister.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/360">#360</a>] Form "name"
+			was being set to "[object]" if it contained an element with id="name".</li>
+		<li>Fixed a type that was breaking the ColdFusion SpellerPages integration file when
+			no spelling errors were found.</li>
+		<li>The ColdFusion SpellerPages integration was not working it Aspell was installed
+			in a directory with spaces in the name.</li>
+		<li>Added option to SpellerPages to ignore "alt" attributes.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/451">#451</a>] Classes
+			for images in IE didn't take effect immediately.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/430">#430</a>] Links with
+			a class did generate a span in Firefox when removing them.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/274">#274</a>] The PHP
+			quick upload still tried to use the uppercased types instead of the lowercased ones.
+		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/416">#416</a>] The PHP
+			quick upload didn't check for the existence of the folder before saving.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/467">#467</a>] If InsertHtml
+			was called in IE with a comment (or any protected source at the beginning) it was
+			lost.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1518766&group_id=75348&atid=543653">SF
+			BUG-1518766</a>] Mozilla 1.7.13 wasn't recognized properly as an old Gecko engine.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/324">#324</a>] Improperly
+			nested tags could lead to a crash in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/455">#455</a>] Files and
+			folders with non-ANSI names were returned with a double UTF-8 encoding in the PHP
+			File Manager.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/273">#273</a>] The extensions
+			"sh", "shtml", "shtm" and "phtm" have been added to the list of denied extensions
+			on upload.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/453">#453</a>] No more
+			errors when hitting del inside an empty table cell.</li>
+		<li>The perl connector cgi file has been changed to Unix line endings.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/202">#202</a>] Regression:
+			The HR tag will not anymore break the contents loaded in the editor. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/508">#508</a>] The HR
+			command had a typo.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/505">#505</a>] Regression:
+			IE crashed if a table caption was deleted.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/82">#82</a>] [<a target="_blank"
+			href="http://dev.fckeditor.net/ticket/359">#359</a>] &lt;object&gt; and &lt;embed&gt;
+			tags are not anymore lost in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/493">#493</a>] If the
+			containing form had a button named "submit" the "Save" command didn't work in Firefox.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/414">#414</a>] If tracing
+			was globally enabled in Asp.Net 2.0 then the Asp.Net connector did fail.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/520">#520</a>] The "Select
+			Field" properties dialog was not correctly handling select options with &amp;, &lt;
+			and &gt;.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/258">#258</a>] The Asp
+			integration didn't pass boolean values in English, using instead the locale of the
+			server and failing.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/487">#487</a>] If an image
+			with dimensions set as styles was opened with the image manager and then the dialog
+			was canceled the dimensions in the style were lost.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/220">#220</a>] The creation
+			of links or anchors in a selection that results on more than a single link created
+			will not anymore leave temporary links in the source. All links will be defined
+			as expected.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/220">#182</a>] [<a
+			target="_blank" href="http://dev.fckeditor.net/ticket/220">#261</a>] [<a target="_blank"
+				href="http://dev.fckeditor.net/ticket/220">#511</a>] Special characters, like
+			percent signs or accented chars, and spaces are now correctly returned by the File
+			Browser.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/281">#281</a>] Custom
+			toolbar buttons now render correctly in all skins.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/527">#527</a>] If the
+			configuration for a toolbar isn't fully valid, try to keep on parsing it.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/187">#187</a>] [<a
+			target="_blank" href="http://dev.fckeditor.net/ticket/435">#435</a>] [<a target="_blank"
+				href="https://sourceforge.net/tracker/?func=detail&aid=1612978&group_id=75348&atid=543653">SF
+				BUG-1612978</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1163511&group_id=75348&atid=543653">SF
+					BUG-1163511</a>] Updated the configuration options in the ColdFusion integration
+			files.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1726781&group_id=75348&atid=543655">SF
+			Patch-1726781</a>] Updated the upload class for asp to handle large files and other
+			data in the forms. Thanks to NetRube.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/225">#225</a>] With ColdFusion,
+			the target directory is now being automatically created if needed when "quick uploading".
+			Thanks to sirmeili.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/295">#295</a>] [<a
+			target="_blank" href="http://dev.fckeditor.net/ticket/510">#510</a>] Corrected some
+			path resolution issues with the File Browser connector for ColdFusion.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/239">#239</a>] The &lt;xml&gt;
+			tag will not anymore cause troubles.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1721787&group_id=75348&atid=543653">SF
+			BUG-1721787</a>] If the editor is run from a virtual dir, the PHP connector will
+			detect that and avoid generating a wrong folder.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/431">#431</a>] PHP: The
+			File Browser now displays an error message when it is not able to create the configured
+			target directory for files (instead of sending broken XML responses).</li>
+	</ul>
 	<h3>
 		Version 2.4.2</h3>
Index: /FCKeditor/branches/versions/2.4.x/editor/_source/classes/fckcontextmenu.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/_source/classes/fckcontextmenu.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/_source/classes/fckcontextmenu.js	(revision 361)
@@ -24,5 +24,7 @@
 var FCKContextMenu = function( parentWindow, langDir )
 {
-	var oPanel = this._Panel = new FCKPanel( parentWindow, true ) ;
+	this.CtrlDisable = false ;
+
+	var oPanel = this._Panel = new FCKPanel( parentWindow ) ;
 	oPanel.AppendStyleSheet( FCKConfig.SkinPath + 'fck_editor.css' ) ;
 	oPanel.IsContextMenu = true ;
@@ -88,4 +90,7 @@
 		if ( el._FCKContextMenu )
 		{
+			if ( el._FCKContextMenu.CtrlDisable && ( e.ctrlKey || e.metaKey ) )
+				return true ;
+
 			FCKTools.CancelEvent( e ) ;
 			FCKContextMenu_AttachedElement_OnContextMenu( e, el._FCKContextMenu, el ) ;
@@ -101,4 +106,7 @@
 //	if ( iButton != 2 )
 //		return ;
+
+	if ( fckContextMenu.CtrlDisable && ( ev.ctrlKey || ev.metaKey ) )
+		return true ;
 
 	var eTarget = el || this ;
Index: /FCKeditor/branches/versions/2.4.x/editor/_source/classes/fckenterkey.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/_source/classes/fckenterkey.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/_source/classes/fckenterkey.js	(revision 361)
@@ -177,5 +177,5 @@
 
 	// We could be in a nested LI.
-	if ( !previous && currentBlock.nodeName.IEquals( 'LI' ) && currentBlock.parentNode.parentNode.nodeName.IEquals( 'LI' ) )
+	if ( !previous && currentBlock && currentBlock.nodeName.IEquals( 'LI' ) && currentBlock.parentNode.parentNode.nodeName.IEquals( 'LI' ) )
 	{
 		this._OutdentWithSelection( currentBlock, range ) ;
@@ -267,5 +267,5 @@
 
 	// There is just one special case for collapsed selections at the end of a block.
-	if ( oRange.CheckIsCollapsed() && oRange.CheckEndOfBlock( FCKBrowserInfo.IsGecko ) )
+	if ( oRange.CheckIsCollapsed() && oRange.CheckEndOfBlock( FCKBrowserInfo.IsGeckoLike ) )
 	{
 		var oCurrentBlock = oRange.StartBlock ;
Index: /FCKeditor/branches/versions/2.4.x/editor/_source/classes/fckicon.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/_source/classes/fckicon.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/_source/classes/fckicon.js	(revision 361)
@@ -80,15 +80,20 @@
 	else					// It is using a single icon image.
 	{
-		// This is not working well with IE. See notes bellow.
-		// <img class="TB_Button_Image" src="smiley.gif">
-//		eIcon = document.createElement( 'IMG' ) ;
-//		eIcon.src = this.Path ? this.Path : FCK_SPACER_PATH ;
+		if ( FCKBrowserInfo.IsIE )
+		{
+			// IE makes the button 1px higher if using the <img> directly, so we
+			// are changing to the <div> system to clip the image correctly.
+			eIcon = document.createElement( 'DIV' ) ;
 
-		// IE makes the button 1px higher if using the <img> directly, so we
-		// are changing to the <div> system to clip the image correctly.
-		eIcon = document.createElement( 'DIV' ) ;
-
-		eIconImage = eIcon.appendChild( document.createElement( 'IMG' ) ) ;
-		eIconImage.src = this.Path ? this.Path : FCK_SPACER_PATH ;
+			eIconImage = eIcon.appendChild( document.createElement( 'IMG' ) ) ;
+			eIconImage.src = this.Path ? this.Path : FCK_SPACER_PATH ;
+		}
+		else
+		{
+			// This is not working well with IE. See notes above.
+			// <img class="TB_Button_Image" src="smiley.gif">
+			eIcon = document.createElement( 'IMG' ) ;
+			eIcon.src = this.Path ? this.Path : FCK_SPACER_PATH ;
+		}
 	}
 
Index: /FCKeditor/branches/versions/2.4.x/editor/_source/classes/fckpanel.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/_source/classes/fckpanel.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/_source/classes/fckpanel.js	(revision 361)
@@ -254,5 +254,5 @@
 	var oWindow = this._Popup ? FCKTools.GetDocumentWindow( this.Document ) : this._Window ;
 
-	var oChildPanel = new FCKPanel( oWindow, true ) ;
+	var oChildPanel = new FCKPanel( oWindow ) ;
 	oChildPanel.ParentPanel = this ;
 
Index: /FCKeditor/branches/versions/2.4.x/editor/_source/classes/fckspecialcombo.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/_source/classes/fckspecialcombo.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/_source/classes/fckspecialcombo.js	(revision 361)
@@ -37,5 +37,5 @@
 	this.Items = new Object() ;
 
-	this._Panel = new FCKPanel( parentWindow || window, true ) ;
+	this._Panel = new FCKPanel( parentWindow || window ) ;
 	this._Panel.AppendStyleSheet( FCKConfig.SkinPath + 'fck_editor.css' ) ;
 	this._PanelBox = this._Panel.MainNode.appendChild( this._Panel.Document.createElement( 'DIV' ) ) ;
Index: /FCKeditor/branches/versions/2.4.x/editor/_source/commandclasses/fck_othercommands.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/_source/commandclasses/fck_othercommands.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/_source/commandclasses/fck_othercommands.js	(revision 361)
@@ -169,5 +169,10 @@
 
 	// Submit the form.
-	oForm.submit() ;
+	// If there's a button named "submit" then the form.submit() function is masked and
+	// can't be called in Mozilla, so we call the click() method of that button.
+	if ( typeof( oForm.submit ) == 'function' )
+		oForm.submit() ;
+	else
+		oForm.submit.click() ;
 }
 
@@ -299,12 +304,12 @@
 	{
 		var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;
+		// The unlink command can generate a span in Firefox, so let's do it our way. See #430
 		if ( oLink )
-			FCK.Selection.SelectNode( oLink ) ;
-	}
-
+			FCKTools.RemoveOuterTags( oLink ) ;
+
+		return ;
+	}
+	
 	FCK.ExecuteNamedCommand( this.Name ) ;
-
-	if ( FCKBrowserInfo.IsGecko )
-		FCK.Selection.Collapse( true ) ;
 }
 
Index: /FCKeditor/branches/versions/2.4.x/editor/_source/commandclasses/fcktextcolorcommand.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/_source/commandclasses/fcktextcolorcommand.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/_source/commandclasses/fcktextcolorcommand.js	(revision 361)
@@ -39,5 +39,5 @@
 		oWindow = window.parent ;
 
-	this._Panel = new FCKPanel( oWindow, true ) ;
+	this._Panel = new FCKPanel( oWindow ) ;
 	this._Panel.AppendStyleSheet( FCKConfig.SkinPath + 'fck_editor.css' ) ;
 	this._Panel.MainNode.className = 'FCK_Panel' ;
Index: /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fck.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fck.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fck.js	(revision 361)
@@ -32,4 +32,9 @@
 	HasFocus	: false,
 
+	AttachToOnSelectionChange : function( functionPointer )
+	{
+		this.Events.AttachEvent( 'OnSelectionChange', functionPointer ) ;
+	},
+
 	GetLinkedFieldValue : function()
 	{
@@ -88,5 +93,5 @@
 
 		this.EditingArea = new FCKEditingArea( document.getElementById( 'xEditingArea' ) ) ;
-		this.EditingArea.FFSpellChecker = false ;
+		this.EditingArea.FFSpellChecker = FCKConfig.FirefoxSpellChecker ;
 
 		// Final setup of the lists lib.
@@ -294,5 +299,5 @@
 		// IE doesn't support <abbr> and it breaks it. Let's protect it.
 		if ( FCKBrowserInfo.IsIE )
-			sTags += sTags.length > 0 ? '|ABBR' : 'ABBR' ;
+			sTags += sTags.length > 0 ? '|ABBR|XML' : 'ABBR|XML' ;
 		
 		var oRegex ;
@@ -317,5 +322,5 @@
 			sTags += '|HR' ;
 
-		oRegex = new RegExp( '<((' + sTags + ')(?=\s|>)[\s\S]*?)/?>', 'gi' ) ;
+		oRegex = new RegExp( '<((' + sTags + ')(?=\\s|>|/)[\\s\\S]*?)/?>', 'gi' ) ;
 		html = html.replace( oRegex, '<FCK:$1 />' ) ;
 
@@ -762,5 +767,5 @@
 		var i = 0 ;
 		while ( i < this.Elements.length )
-			this.Elements[ i++ ] == null ;
+			this.Elements[ i++ ] = null ;
 		this.Elements.length = 0 ;
 	}
Index: /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fck_contextmenu.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fck_contextmenu.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fck_contextmenu.js	(revision 361)
@@ -35,4 +35,5 @@
 {
 	var oInnerContextMenu = FCK.ContextMenu._InnerContextMenu = new FCKContextMenu( FCKBrowserInfo.IsIE ? window : window.parent, FCKLang.Dir ) ;
+	oInnerContextMenu.CtrlDisable	= FCKConfig.BrowserContextMenuOnCtrl ;
 	oInnerContextMenu.OnBeforeOpen	= FCK_ContextMenu_OnBeforeOpen ;
 	oInnerContextMenu.OnItemClick	= FCK_ContextMenu_OnItemClick ;
Index: /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fck_gecko.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fck_gecko.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fck_gecko.js	(revision 361)
@@ -123,9 +123,4 @@
 			FCK.ExecuteNamedCommand( commandName, commandParameter ) ;
 	}
-}
-
-FCK.AttachToOnSelectionChange = function( functionPointer )
-{
-	this.Events.AttachEvent( 'OnSelectionChange', functionPointer ) ;
 }
 
@@ -231,4 +226,7 @@
 FCK.CreateLink = function( url )
 {
+	// Creates the array that will be returned. It contains one or more created links (see #220).
+	var aCreatedLinks = new Array() ;
+
 	FCK.ExecuteNamedCommand( 'Unlink' ) ;
 
@@ -241,14 +239,16 @@
 		FCK.ExecuteNamedCommand( 'CreateLink', sTempUrl ) ;
 
-		// Retrieve the just created link using XPath.
-		var oLink = this.EditorDocument.evaluate("//a[@href='" + sTempUrl + "']", this.EditorDocument.body, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue ;
-
-		if ( oLink )
+		// Retrieve the just created links using XPath.
+		var oLinksInteractor = this.EditorDocument.evaluate("//a[@href='" + sTempUrl + "']", this.EditorDocument.body, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null) ;
+
+		// Add all links to the returning array.
+		for ( var i = 0 ; i < oLinksInteractor.snapshotLength ; i++ )
 		{
+			var oLink = oLinksInteractor.snapshotItem( i ) ;
 			oLink.href = url ;
-			return oLink ;
+			aCreatedLinks.push( oLink ) ;
 		}
 	}
 
-	return null ;
-}
+	return aCreatedLinks ;
+}
Index: /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fck_ie.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fck_ie.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fck_ie.js	(revision 361)
@@ -164,6 +164,13 @@
 		oSel.clear() ;
 
+	// Using the following trick, any comment in the begining of the HTML will
+	// be preserved.
+	html = '<span id="__fakeFCKRemove__">&nbsp;</span>' + html ;
+
 	// Insert the HTML.
 	oSel.createRange().pasteHTML( html ) ;
+
+	// Remove the fake node
+	FCK.EditorDocument.getElementById('__fakeFCKRemove__').removeNode( true ) ;
 
 	FCKDocumentProcessor.Process( FCK.EditorDocument ) ;
@@ -345,11 +352,9 @@
 }
 
-FCK.AttachToOnSelectionChange = function( functionPointer )
-{
-	this.Events.AttachEvent( 'OnSelectionChange', functionPointer ) ;
-}
-
 FCK.CreateLink = function( url )
 {
+	// Creates the array that will be returned. It contains one or more created links (see #220).
+	var aCreatedLinks = new Array() ;
+
 	// Remove any existing link in the selection.
 	FCK.ExecuteNamedCommand( 'Unlink' ) ;
@@ -357,4 +362,23 @@
 	if ( url.length > 0 )
 	{
+		// If there are several images, and you try to link each one, all the images get inside the link:
+		// <img><img> -> <a><img></a><img> -> <a><img><img></a> due to the call to 'CreateLink' (bug in IE)
+		if (FCKSelection.GetType() == 'Control')
+		{
+			// Create a link
+			var oLink = this.EditorDocument.createElement( 'A' ) ;
+			oLink.href = url ;
+
+			// Get the selected object
+			var oControl = FCKSelection.GetSelectedElement() ;
+			// Put the link just before the object
+			oControl.parentNode.insertBefore(oLink, oControl) ;
+			// Move the object inside the link
+			oControl.parentNode.removeChild( oControl ) ;
+			oLink.appendChild( oControl ) ;
+			
+			return [ oLink ] ;
+		}
+
 		// Generate a temporary name for the link.
 		var sTempUrl = 'javascript:void(0);/*' + ( new Date().getTime() ) + '*/' ;
@@ -375,9 +399,20 @@
 				oLink.href = url ;
 				oLink.innerHTML = sInnerHtml ;		// Restore the innerHTML.
-				return oLink ;
+
+				// If the last child is a <br> move it outside the link or it will be too easy to select this link again #338
+				if (oLink.lastChild.nodeName == 'BR' )
+				{
+					// We move the br as a sibling after the link:
+					var oBR = oLink.lastChild ;
+					oLink.removeChild( oBR ) ;
+					// There's no insertAfter, so we insert before the next sibling
+					oLink.parentNode.insertBefore( oBR, oLink.nextSibling  );
+				}
+
+				aCreatedLinks.push( oLink ) ;
 			}
 		}
 	}
 
-	return null ;
-}
+	return aCreatedLinks ;
+}
Index: /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckbrowserinfo.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckbrowserinfo.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckbrowserinfo.js	(revision 361)
@@ -42,5 +42,15 @@
 	{
 		var geckoVersion = s.match( /gecko\/(\d+)/ )[1] ;
-		browserInfo.IsGecko10 = geckoVersion < 20051111 ;	// Actually "10" refers to Gecko versions before Firefox 1.5, where Gecko 20051111 has been released.
+
+		// Actually "10" refers to Gecko versions before Firefox 1.5, when
+		// Gecko 1.8 (build 20051111) has been released.
+
+		// Some browser (like Mozilla 1.7.13) may have a Gecko build greater
+		// than 20051111, so we must also check for the revision number not to
+		// be 1.7 (we are assuming that rv < 1.7 will not have build > 20051111).
+
+		// TODO: Future versions may consider the rv number only, but it is
+		// still to check that all Gecko based browser present the rv number.
+		browserInfo.IsGecko10 = ( ( geckoVersion < 20051111 ) || ( /rv:1\.7/.test(s) ) ) ;
 	}
 	else
Index: /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckconfig.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckconfig.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckconfig.js	(revision 361)
@@ -163,5 +163,8 @@
 
 	// <noscript> tags (get lost in IE and messed up in FF).
-	/<noscript[\s\S]*?<\/noscript>/gi
+	/<noscript[\s\S]*?<\/noscript>/gi,
+	
+	// Protect <object> tags. See #359.
+	/<object[\s\S]+?<\/object>/gi
 ] ;
 
Index: /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckdocumentprocessor.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckdocumentprocessor.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckdocumentprocessor.js	(revision 361)
@@ -65,5 +65,5 @@
 			{
 				//if the anchor has some content then we just add a temporary class
-				if ( oLink.innerHTML != '' )
+				if ( oLink.innerHTML !== '' )
 				{
 					if ( FCKBrowserInfo.IsIE )
@@ -173,11 +173,11 @@
 }
 
-FCKFlashProcessor.RefreshView = function( placholderImage, originalEmbed )
-{
-	if ( originalEmbed.width > 0 )
-		placholderImage.style.width = FCKTools.ConvertHtmlSizeToStyle( originalEmbed.width ) ;
-
-	if ( originalEmbed.height > 0 )
-		placholderImage.style.height = FCKTools.ConvertHtmlSizeToStyle( originalEmbed.height ) ;
+FCKFlashProcessor.RefreshView = function( placeHolderImage, originalEmbed )
+{
+	if ( originalEmbed.getAttribute( 'width' ) > 0 )
+		placeHolderImage.style.width = FCKTools.ConvertHtmlSizeToStyle( originalEmbed.getAttribute( 'width' ) ) ;
+
+	if ( originalEmbed.getAttribute( 'height' ) > 0 )
+		placeHolderImage.style.height = FCKTools.ConvertHtmlSizeToStyle( originalEmbed.getAttribute( 'height' ) ) ;
 }
 
Index: /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckdomtools.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckdomtools.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckdomtools.js	(revision 361)
@@ -78,5 +78,6 @@
 					if ( eChildNode.nodeName.toUpperCase() == 'BR' && ( ignoreEndBRs || eChildNode.getAttribute( 'type', 2 ) == '_moz' ) )
 					{
-						node.removeChild( eChildNode ) ;
+						// Use "eChildNode.parentNode" instead of "node" to avoid IE bug (#324).
+						eChildNode.parentNode.removeChild( eChildNode ) ;
 						continue ;
 					}
Index: /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fcklistslib.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fcklistslib.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fcklistslib.js	(revision 361)
@@ -29,5 +29,5 @@
 {
 	// We are not handling <ins> and <del> as block elements, for now.
-	BlockElements : { address:1,blockquote:1,center:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,noscript:1,ol:1,p:1,pre:1,script:1,table:1,ul:1 },
+	BlockElements : { address:1,blockquote:1,center:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,marquee:1,noscript:1,ol:1,p:1,pre:1,script:1,table:1,ul:1 },
 
 	// Block elements that may be filled with &nbsp; if empty.
Index: /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckregexlib.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckregexlib.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckregexlib.js	(revision 361)
@@ -60,7 +60,7 @@
 
 // Empty elements may be <p></p> or even a simple opening <p> (see #211).
-EmptyParagraph	: /^<([^ >]+)[^>]*>\s*(<\/\1>)?$/ ,
+EmptyParagraph	: /^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/ ,
 
-EmptyOutParagraph : /^<([^ >]+)[^>]*>(?:\s*|&nbsp;)(<\/\1>)?$/ ,
+EmptyOutParagraph : /^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*|&nbsp;)(<\/\1>)?$/ ,
 
 TagBody			: /></ ,
@@ -78,6 +78,6 @@
 // them. We have to do all in one, otherwhise we will have problems with URLs
 // like "thumbnail.php?src=someimage.jpg" (SF-BUG 1554141).
-ProtectUrlsImg	: /<img(?=\s).*?\ssrc=((?:("|').*?\2)|(?:[^"'][^ >]+))/gi ,
-ProtectUrlsA	: /<a(?=\s).*?\shref=((?:("|').*?\2)|(?:[^"'][^ >]+))/gi ,
+ProtectUrlsImg	: /<img(?=\s).*?\ssrc=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi ,
+ProtectUrlsA	: /<a(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi ,
 
 Html4DocType	: /HTML 4\.0 Transitional/i ,
Index: /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckselection_ie.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckselection_ie.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckselection_ie.js	(revision 361)
@@ -26,5 +26,5 @@
 {
 	return FCK.EditorDocument.selection.type ;
-}
+} ;
 
 // Retrieves the selected element (if any), just in the case that a single
@@ -39,5 +39,6 @@
 			return FCK.EditorDocument.selection.createRange().item(0) ;
 	}
-}
+	return null ;
+} ;
 
 FCKSelection.GetParentElement = function()
@@ -52,5 +53,5 @@
 			return FCK.EditorDocument.selection.createRange().parentElement() ;
 	}
-}
+} ;
 
 FCKSelection.SelectNode = function( node )
@@ -73,5 +74,5 @@
 
 	oRange.select() ;
-}
+} ;
 
 FCKSelection.Collapse = function( toStart )
@@ -84,5 +85,5 @@
 		oRange.select() ;
 	}
-}
+} ;
 
 // The "nodeTagName" parameter must be Upper Case.
@@ -108,5 +109,5 @@
 
 	return false ;
-}
+} ;
 
 // The "nodeTagName" parameter must be UPPER CASE.
@@ -140,5 +141,5 @@
 
 	return oNode ;
-}
+} ;
 
 FCKSelection.Delete = function()
@@ -154,5 +155,5 @@
 
 	return oSel ;
-}
+} ;
 
 
Index: /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fcktoolbarset.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fcktoolbarset.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fcktoolbarset.js	(revision 361)
@@ -71,4 +71,5 @@
 			// Create the IFRAME that will hold the toolbar inside the target element.
 			var eToolbarIFrame = FCKTools.GetElementDocument( eToolbarTarget ).createElement( 'iframe' ) ;
+			eToolbarIFrame.src = 'javascript:void(0)' ;
 			eToolbarIFrame.frameBorder = 0 ;
 			eToolbarIFrame.width = '100%' ;
@@ -239,4 +240,9 @@
 	{
 		var oToolbarItems = ToolbarSet[x] ;
+
+		// If the configuration for the toolbar is missing some element or has any extra comma
+		// this item won't be valid, so skip it and keep on processing.
+		if ( !oToolbarItems ) 
+			continue ;
 
 		var oToolbar ;
Index: /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckxhtml.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckxhtml.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckxhtml.js	(revision 361)
@@ -124,22 +124,19 @@
 FCKXHtml._AppendChildNodes = function( xmlNode, htmlNode, isBlockElement )
 {
+	var oNode = htmlNode.firstChild ;
+
+	while ( oNode )
+	{
+		this._AppendNode( xmlNode, oNode ) ;
+		oNode = oNode.nextSibling ;
+	}
+
 	// Trim block elements. This is also needed to avoid Firefox leaving extra
 	// BRs at the end of them.
 	if ( isBlockElement )
-		FCKDomTools.TrimNode( htmlNode, true ) ;
-
-	var iCount = 0 ;
-
-	var oNode = htmlNode.firstChild ;
-
-	while ( oNode )
-	{
-		if ( this._AppendNode( xmlNode, oNode ) )
-			iCount++ ;
-
-		oNode = oNode.nextSibling ;
-	}
-
-	if ( iCount == 0 )
+		FCKDomTools.TrimNode( xmlNode, true ) ;
+
+	// If the resulting node is empty.
+	if ( xmlNode.childNodes.length == 0 )
 	{
 		if ( isBlockElement && FCKConfig.FillEmptyBlocks )
Index: /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckxhtml_ie.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckxhtml_ie.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/_source/internals/fckxhtml_ie.js	(revision 361)
@@ -164,6 +164,10 @@
 		FCKXHtml._AppendAttribute( node, 'accept-charset', htmlNode.acceptCharset ) ;
 
-	if ( htmlNode.name )
-		FCKXHtml._AppendAttribute( node, 'name', htmlNode.name ) ;
+	// IE has a bug and htmlNode.attributes['name'].specified=false if there is
+	// no element with id="name" inside the form (#360 and SF-BUG-1155726).
+	var nameAtt = htmlNode.attributes['name'] ;
+
+	if ( nameAtt && nameAtt.value.length > 0 )
+		FCKXHtml._AppendAttribute( node, 'name', nameAtt.value ) ;
 
 	node = FCKXHtml._AppendChildNodes( node, htmlNode ) ;
Index: /FCKeditor/branches/versions/2.4.x/editor/css/fck_internal.css
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/css/fck_internal.css	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/css/fck_internal.css	(revision 361)
@@ -43,5 +43,5 @@
 .FCK__Flash
 {
-	border: darkgray 1px solid;
+	border: #a9a9a9 1px solid;
 	background-position: center center;
 	background-image: url(images/fck_flashlogo.gif);
@@ -67,5 +67,5 @@
 {
 	border: 1px dotted #00F;
-	background-position: 1 center;
+	background-position: 1px center;
 	background-image: url(images/fck_anchor.gif);
 	background-repeat: no-repeat;
Index: /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_anchor.html
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_anchor.html	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_anchor.html	(revision 361)
@@ -111,37 +111,46 @@
 
 	// Create a new anchor preserving the current selection
-	oAnchor = oEditor.FCK.CreateLink( '#' ) ;
-	if ( !oAnchor )
+	var aNewAnchors = oEditor.FCK.CreateLink( '#' ) ;
+
+	if ( aNewAnchors.length == 0 )
 	{
 		// Nothing was selected, so now just create a normal A
-		oAnchor = oEditor.FCK.CreateElement( 'a' ) ;
+		aNewAnchors.push( oEditor.FCK.CreateElement( 'a' ) ) ;
 	}
 	else
 	{
 		// Remove the fake href
-		oAnchor.removeAttribute( 'href' ) ;
-	}
-	// Set the name
-	oAnchor.name = sNewName ;
-
-	// IE does require special processing to show the Anchor's image
-	// Opera doesn't allow to select empty anchors
-	if ( FCKBrowserInfo.IsIE || FCKBrowserInfo.IsOpera )
-	{
-		if ( oAnchor.innerHTML != '' )
+		for ( var i = 0 ; i < aNewAnchors.length ; i++ )
+			aNewAnchors[i].removeAttribute( 'href' ) ;
+	}
+
+	// More than one anchors may have been created, so interact through all of them (see #220).
+	for ( var i = 0 ; i < aNewAnchors.length ; i++ )
+	{
+		oAnchor = aNewAnchors[i] ;
+
+		// Set the name
+		oAnchor.name = sNewName ;
+
+		// IE does require special processing to show the Anchor's image
+		// Opera doesn't allow to select empty anchors
+		if ( FCKBrowserInfo.IsIE || FCKBrowserInfo.IsOpera )
 		{
-			if ( FCKBrowserInfo.IsIE )
-				oAnchor.className += ' FCK__AnchorC' ;
+			if ( oAnchor.innerHTML != '' )
+			{
+				if ( FCKBrowserInfo.IsIE )
+					oAnchor.className += ' FCK__AnchorC' ;
+			}
+			else
+			{
+				// Create a fake image for both IE and Opera
+				var oImg = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Anchor', oAnchor.cloneNode(true) ) ;
+				oImg.setAttribute( '_fckanchor', 'true', 0 ) ;
+
+				oAnchor.parentNode.insertBefore( oImg, oAnchor ) ;
+				oAnchor.parentNode.removeChild( oAnchor ) ;
+			}
+
 		}
-		else
-		{
-			// Create a fake image for both IE and Opera
-			var oImg = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Anchor', oAnchor.cloneNode(true) ) ;
-			oImg.setAttribute( '_fckanchor', 'true', 0 ) ;
-
-			oAnchor.parentNode.insertBefore( oImg, oAnchor ) ;
-			oAnchor.parentNode.removeChild( oAnchor ) ;
-		}
-
 	}
 
Index: /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_flash/fck_flash.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_flash/fck_flash.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_flash/fck_flash.js	(revision 361)
@@ -82,6 +82,4 @@
 {
 	if ( ! oEmbed ) return ;
-
-	var sUrl = GetAttribute( oEmbed, 'src', '' ) ;
 
 	GetE('txtUrl').value    = GetAttribute( oEmbed, 'src', '' ) ;
@@ -106,5 +104,5 @@
 	{
 		GetE('txtAttClasses').value = oEmbed.getAttribute('class',2) || '' ;
-		GetE('txtAttStyle').value = oEmbed.getAttribute('style',2) ;
+		GetE('txtAttStyle').value = oEmbed.getAttribute('style',2) || '' ;
 	}
 
@@ -151,5 +149,5 @@
 	SetAttribute( e, 'pluginspage'	, 'http://www.macromedia.com/go/getflashplayer' ) ;
 
-	e.src = GetE('txtUrl').value ;
+	SetAttribute( e, 'src', GetE('txtUrl').value ) ;
 	SetAttribute( e, "width" , GetE('txtWidth').value ) ;
 	SetAttribute( e, "height", GetE('txtHeight').value ) ;
@@ -203,8 +201,8 @@
 		var e		= oDoc.createElement( 'EMBED' ) ;
 
-		e.src		= GetE('txtUrl').value ;
-		e.type		= 'application/x-shockwave-flash' ;
-		e.width		= '100%' ;
-		e.height	= '100%' ;
+		SetAttribute( e, 'src', GetE('txtUrl').value ) ;
+		SetAttribute( e, 'type', 'application/x-shockwave-flash' ) ;
+		SetAttribute( e, 'width', '100%' ) ;
+		SetAttribute( e, 'height', '100%' ) ;
 
 		ePreview.appendChild( e ) ;
Index: /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_image/fck_image.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_image/fck_image.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_image/fck_image.js	(revision 361)
@@ -144,4 +144,5 @@
 			iWidth = aMatchW[1] ;
 			oImage.style.width = '' ;
+			SetAttribute( oImage, 'width' , iWidth ) ;
 		}
 	}
@@ -154,4 +155,5 @@
 			iHeight = aMatchH[1] ;
 			oImage.style.height = '' ;
+			SetAttribute( oImage, 'height', iHeight ) ;
 		}
 	}
@@ -169,5 +171,5 @@
 	if ( oEditor.FCKBrowserInfo.IsIE )
 	{
-		GetE('txtAttClasses').value = oImage.getAttribute('className') || '' ;
+		GetE('txtAttClasses').value = oImage.className || '' ;
 		GetE('txtAttStyle').value = oImage.style.cssText ;
 	}
@@ -249,5 +251,5 @@
 				oEditor.FCKSelection.SelectNode( oImage ) ;
 
-			oLink = oEditor.FCK.CreateLink( sLnkUrl ) ;
+			oLink = oEditor.FCK.CreateLink( sLnkUrl )[0] ;
 
 			if ( !bHasImage )
@@ -285,11 +287,16 @@
 	SetAttribute( e, 'lang'		, GetE('txtAttLangCode').value ) ;
 	SetAttribute( e, 'title'	, GetE('txtAttTitle').value ) ;
-	SetAttribute( e, 'class'	, GetE('txtAttClasses').value ) ;
 	SetAttribute( e, 'longDesc'	, GetE('txtLongDesc').value ) ;
 
 	if ( oEditor.FCKBrowserInfo.IsIE )
+	{
+		e.className = GetE('txtAttClasses').value ;
 		e.style.cssText = GetE('txtAttStyle').value ;
-	else
+	}
+	else
+	{
+		SetAttribute( e, 'class'	, GetE('txtAttClasses').value ) ;
 		SetAttribute( e, 'style', GetE('txtAttStyle').value ) ;
+	}
 }
 
Index: /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_link/fck_link.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_link/fck_link.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_link/fck_link.js	(revision 361)
@@ -152,4 +152,7 @@
 		GetE('frmUpload').action = FCKConfig.LinkUploadURL ;
 
+	// Set the default target (from configuration).
+	SetDefaultTarget() ;
+
 	// Activate the "OK" button.
 	window.parent.SetOkButton( true ) ;
@@ -500,14 +503,11 @@
 	}
 
-	// No link selected, so try to create one.
-	if ( !oLink )
-		oLink = oEditor.FCK.CreateLink( sUri ) ;
-
-	if ( oLink )
-		sInnerHtml = oLink.innerHTML ;		// Save the innerHTML (IE changes it if it is like an URL).
-	else
-	{
-		// If no selection, use the uri as the link text (by dom, 2006-05-26)
-
+	// If no link is selected, create a new one (it may result in more than one link creation - #220).
+	var aLinks = oLink ? [ oLink ] : oEditor.FCK.CreateLink( sUri ) ;
+
+	// If no selection, no links are created, so use the uri as the link text (by dom, 2006-05-26)
+	var aHasSelection = ( aLinks.length > 0 ) ;
+	if ( !aHasSelection )
+	{
 		sInnerHtml = sUri;
 
@@ -535,63 +535,74 @@
 
 		// Create a new (empty) anchor.
-		oLink = oEditor.FCK.CreateElement( 'a' ) ;
+		aLinks = [ oEditor.FCK.CreateElement( 'a' ) ] ;
 	}
 
 	oEditor.FCKUndo.SaveUndoStep() ;
 
-	oLink.href = sUri ;
-	SetAttribute( oLink, '_fcksavedurl', sUri ) ;
-
-	// Accesible popups
-	if( GetE('cmbTarget').value == 'popup' )
-	{
-		SetAttribute( oLink, 'onclick_fckprotectedatt', " onclick=\"" + BuildOnClickPopup() + "\"") ;
-	}
-	else
-	{
-		// Check if the previous onclick was for a popup:
-		// In that case remove the onclick handler.
-		var onclick = oLink.getAttribute( 'onclick_fckprotectedatt' ) ;
-		if( oRegex.OnClickPopup.test( onclick ) )
-			SetAttribute( oLink, 'onclick_fckprotectedatt', '' ) ;
-	}
-
-	oLink.innerHTML = sInnerHtml ;		// Set (or restore) the innerHTML
-
-	// Target
-	if( GetE('cmbTarget').value != 'popup' )
-		SetAttribute( oLink, 'target', GetE('txtTargetFrame').value ) ;
-	else
-		SetAttribute( oLink, 'target', null ) ;
-
-	// Advances Attributes
-	SetAttribute( oLink, 'id'		, GetE('txtAttId').value ) ;
-	SetAttribute( oLink, 'name'		, GetE('txtAttName').value ) ;
-	SetAttribute( oLink, 'dir'		, GetE('cmbAttLangDir').value ) ;
-	SetAttribute( oLink, 'lang'		, GetE('txtAttLangCode').value ) ;
-	SetAttribute( oLink, 'accesskey', GetE('txtAttAccessKey').value ) ;
-	SetAttribute( oLink, 'tabindex'	, ( GetE('txtAttTabIndex').value > 0 ? GetE('txtAttTabIndex').value : null ) ) ;
-	SetAttribute( oLink, 'title'	, GetE('txtAttTitle').value ) ;
-	SetAttribute( oLink, 'type'		, GetE('txtAttContentType').value ) ;
-	SetAttribute( oLink, 'charset'	, GetE('txtAttCharSet').value ) ;
-
-	if ( oEditor.FCKBrowserInfo.IsIE )
-	{
-		var sClass = GetE('txtAttClasses').value ;
-		// If it's also an anchor add an internal class
-		if ( GetE('txtAttName').value.length != 0 )
-			sClass += ' FCK__AnchorC' ;
-		SetAttribute( oLink, 'className', sClass ) ;
-
-		oLink.style.cssText = GetE('txtAttStyle').value ;
-	}
-	else
-	{
-		SetAttribute( oLink, 'class', GetE('txtAttClasses').value ) ;
-		SetAttribute( oLink, 'style', GetE('txtAttStyle').value ) ;
-	}
-
-	// Select the link.
-	oEditor.FCKSelection.SelectNode(oLink);
+	for ( var i = 0 ; i < aLinks.length ; i++ )
+	{
+		oLink = aLinks[i] ;
+
+		if ( aHasSelection )
+			sInnerHtml = oLink.innerHTML ;		// Save the innerHTML (IE changes it if it is like an URL).
+
+		oLink.href = sUri ;
+		SetAttribute( oLink, '_fcksavedurl', sUri ) ;
+
+		// Accesible popups
+		if( GetE('cmbTarget').value == 'popup' )
+		{
+			SetAttribute( oLink, 'onclick_fckprotectedatt', " onclick=\"" + BuildOnClickPopup() + "\"") ;
+		}
+		else
+		{
+			// Check if the previous onclick was for a popup:
+			// In that case remove the onclick handler.
+			var onclick = oLink.getAttribute( 'onclick_fckprotectedatt' ) ;
+			if( oRegex.OnClickPopup.test( onclick ) )
+				SetAttribute( oLink, 'onclick_fckprotectedatt', '' ) ;
+		}
+
+		oLink.innerHTML = sInnerHtml ;		// Set (or restore) the innerHTML
+
+		// Target
+		if( GetE('cmbTarget').value != 'popup' )
+			SetAttribute( oLink, 'target', GetE('txtTargetFrame').value ) ;
+		else
+			SetAttribute( oLink, 'target', null ) ;
+
+		// Let's set the "id" only for the first link to avoid duplication.
+		if ( i == 0 )
+			SetAttribute( oLink, 'id', GetE('txtAttId').value ) ;
+
+		// Advances Attributes
+		SetAttribute( oLink, 'name'		, GetE('txtAttName').value ) ;
+		SetAttribute( oLink, 'dir'		, GetE('cmbAttLangDir').value ) ;
+		SetAttribute( oLink, 'lang'		, GetE('txtAttLangCode').value ) ;
+		SetAttribute( oLink, 'accesskey', GetE('txtAttAccessKey').value ) ;
+		SetAttribute( oLink, 'tabindex'	, ( GetE('txtAttTabIndex').value > 0 ? GetE('txtAttTabIndex').value : null ) ) ;
+		SetAttribute( oLink, 'title'	, GetE('txtAttTitle').value ) ;
+		SetAttribute( oLink, 'type'		, GetE('txtAttContentType').value ) ;
+		SetAttribute( oLink, 'charset'	, GetE('txtAttCharSet').value ) ;
+
+		if ( oEditor.FCKBrowserInfo.IsIE )
+		{
+			var sClass = GetE('txtAttClasses').value ;
+			// If it's also an anchor add an internal class
+			if ( GetE('txtAttName').value.length != 0 )
+				sClass += ' FCK__AnchorC' ;
+			SetAttribute( oLink, 'className', sClass ) ;
+
+			oLink.style.cssText = GetE('txtAttStyle').value ;
+		}
+		else
+		{
+			SetAttribute( oLink, 'class', GetE('txtAttClasses').value ) ;
+			SetAttribute( oLink, 'style', GetE('txtAttStyle').value ) ;
+		}
+	}
+
+	// Select the (first) link.
+	oEditor.FCKSelection.SelectNode( aLinks[0] );
 
 	return true ;
@@ -663,2 +674,25 @@
 	return true ;
 }
+
+function SetDefaultTarget()
+{
+	var target = FCKConfig.DefaultLinkTarget + '' ;
+	
+	if ( oLink || target.length == 0 )
+		return ;
+
+	switch ( target )
+	{
+		case '_blank' :
+		case '_self' :
+		case '_parent' :
+		case '_top' :
+			GetE('cmbTarget').value = target ;
+			break ;
+		default :
+			GetE('cmbTarget').value = 'frame' ;
+			break ;
+	}
+	
+	GetE('txtTargetFrame').value = target ;
+}
Index: /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_listprop.html
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_listprop.html	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_listprop.html	(revision 361)
@@ -61,5 +61,5 @@
 	{
 		if ( oActiveEl.getAttribute('type') )
-			oActiveSel.value = oActiveEl.getAttribute('type').toLowerCase() ;
+			oActiveSel.value = oActiveEl.getAttribute('type') ;
 	}
 
Index: /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_paste.html
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_paste.html	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_paste.html	(revision 361)
@@ -203,6 +203,6 @@
 
 		// Word likes to insert extra <font> tags, when using MSIE. (Wierd).
-		html = html.replace( /<(H\d)><FONT[^>]*>(.*?)<\/FONT><\/\1>/gi, '<$1>$2</$1>' );
-		html = html.replace( /<(H\d)><EM>(.*?)<\/EM><\/\1>/gi, '<$1>$2</$1>' );
+		html = html.replace( /<(H\d)><FONT[^>]*>(.*?)<\/FONT><\/\1>/gi, '<$1>$2<\/$1>' );
+		html = html.replace( /<(H\d)><EM>(.*?)<\/EM><\/\1>/gi, '<$1>$2<\/$1>' );
 	}
 	else
Index: /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_select.html
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_select.html	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_select.html	(revision 361)
@@ -59,5 +59,5 @@
 		for ( var i = 0 ; i < oActiveEl.options.length ; i++ )
 		{
-			var sText	= oActiveEl.options[i].innerHTML ;
+			var sText	= HTMLDecode( oActiveEl.options[i].innerHTML ) ;
 			var sValue	= oActiveEl.options[i].value ;
 
Index: /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_select/fck_select.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_select/fck_select.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_select/fck_select.js	(revision 361)
@@ -62,8 +62,8 @@
 	var oTxtValue	= document.getElementById( "txtValue" ) ;
 
-	oListText.options[ iIndex ].innerHTML	= oTxtText.value ;
+	oListText.options[ iIndex ].innerHTML	= HTMLEncode( oTxtText.value ) ;
 	oListText.options[ iIndex ].value		= oTxtText.value ;
 
-	oListValue.options[ iIndex ].innerHTML	= oTxtValue.value ;
+	oListValue.options[ iIndex ].innerHTML	= HTMLEncode( oTxtValue.value ) ;
 	oListValue.options[ iIndex ].value		= oTxtValue.value ;
 
@@ -116,5 +116,5 @@
 
 	var oOption = combo.options[ iActualIndex ] ;
-	var sText	= oOption.innerHTML ;
+	var sText	= HTMLDecode( oOption.innerHTML ) ;
 	var sValue	= oOption.value ;
 
@@ -163,7 +163,32 @@
 		combo.options.add( oOption ) ;
 
-	oOption.innerHTML = optionText.length > 0 ? optionText : '&nbsp;' ;
+	oOption.innerHTML = optionText.length > 0 ? HTMLEncode( optionText ) : '&nbsp;' ;
 	oOption.value     = optionValue ;
 
 	return oOption ;
 }
+
+function HTMLEncode( text )
+{
+	if ( !text )
+		return '' ;
+
+	text = text.replace( /&/g, '&amp;' ) ;
+	text = text.replace( /</g, '&lt;' ) ;
+	text = text.replace( />/g, '&gt;' ) ;
+
+	return text ;
+}
+
+
+function HTMLDecode( text )
+{
+	if ( !text )
+		return '' ;
+
+	text = text.replace( /&gt;/g, '>' ) ;
+	text = text.replace( /&lt;/g, '<' ) ;
+	text = text.replace( /&amp;/g, '&' ) ;
+
+	return text ;
+}
Index: /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm	(revision 361)
@@ -13,11 +13,11 @@
 The following variables values must reflect your installation needs.
 --->
-<cfset apsell_dir	= "c:\aspell\bin">
+<cfset apsell_dir	= "C:\Program Files\Aspell\bin">
 
 <cfset lang			= "en_US">
-<cfset aspell_opts	= "-a --lang=#lang# --encoding=utf-8 -H">
+<cfset aspell_opts	= "-a --lang=#lang# --encoding=utf-8 -H --rem-sgml-check=alt">
 
 <!--- Be sure the temporary folder exists --->
-<cfset tempFolder	= "c:\aspell\temp">
+<cfset tempFolder	= "C:\Windows\Temp">
 <cfset tempfile		= "spell_#randrange(1,10000)#">
 
@@ -71,5 +71,5 @@
 
 <cfsavecontent variable="food">
-<cfexecute name="C:\WINDOWS\SYSTEM32\cmd.exe" arguments="/c type #tempFolder#\#tempfile#.txt | #apsell_dir#\aspell #aspell_opts#" timeout="100"></cfexecute>
+<cfexecute name="C:\WINDOWS\SYSTEM32\cmd.exe" arguments='/c type #tempFolder#\#tempfile#.txt | "#apsell_dir#\aspell" #aspell_opts#' timeout="100"></cfexecute>
 </cfsavecontent>
 
@@ -125,5 +125,5 @@
 
 <cfif texts.words IS "">
-  <cfset texts.abort = "alert('Spell check complete.\n\nNo misspellings found.');#chrlf#top.window.close();">
+  <cfset texts.abort = "alert('Spell check complete.\n\nNo misspellings found.');#crlf#top.window.close();">
 </cfif>
 
Index: /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php	(revision 361)
@@ -8,5 +8,5 @@
 
 $lang			= 'en_US';
-$aspell_opts	= "-a --lang=$lang --encoding=utf-8 -H";		// by FredCK
+$aspell_opts	= "-a --lang=$lang --encoding=utf-8 -H --rem-sgml-check=alt";		// by FredCK
 
 $tempfiledir	= "./";
Index: /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl	(revision 361)
@@ -13,5 +13,5 @@
 my $lang = 'en_US';
 # my $aspell_opts = "-a --lang=$lang --encoding=utf-8";			# by FredCK
-my $aspell_opts = "-a --lang=$lang --encoding=utf-8 -H";		# by FredCK
+my $aspell_opts = "-a --lang=$lang --encoding=utf-8 -H --rem-sgml-check=alt";		# by FredCK
 my $input_separator = "A";
 
Index: /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_table.html
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_table.html	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/dialog/fck_table.html	(revision 361)
@@ -1,3 +1,3 @@
-﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
@@ -131,5 +131,10 @@
 	}
 	else if ( bExists && eCaption )
-		eCaption.parentNode.removeChild( eCaption ) ;
+	{
+		if ( oEditor.FCKBrowserInfo.IsIE )
+			eCaption.innerHTML = '' ;	// TODO: It causes an IE internal error if using removeChild or table.deleteCaption().
+		else
+			eCaption.parentNode.removeChild( eCaption ) ;
+	}
 
 	if (! bExists)
Index: /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/asp/class_upload.asp
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/asp/class_upload.asp	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/asp/class_upload.asp	(revision 361)
@@ -25,8 +25,8 @@
 '**********************************************
 ' File:		NetRube_Upload.asp
-' Version:	NetRube Upload Class Version 2.1 Build 20050228
+' Version:	NetRube Upload Class Version 2.3 Build 20070528
 ' Author:	NetRube
 ' Email:	NetRube@126.com
-' Date:		02/28/2005
+' Date:		05/28/2007
 ' Comments:	The code for the Upload.
 '			This can free usage, but please
@@ -36,8 +36,8 @@
 '**********************************************
 ' 文件名:	NetRube_Upload.asp
-' 版本:		NetRube Upload Class Version 2.1 Build 20050228
+' 版本:		NetRube Upload Class Version 2.3 Build 20070528
 ' 作者:		NetRube(网络乡巴佬)
 ' 电子邮件:	NetRube@126.com
-' 日期:		2005年02月28日
+' 日期:		2007年05月28日
 ' 声明:		文件上传类
 '			本上传类可以自由使用，但请保留此版权声明信息
@@ -51,14 +51,14 @@
 	Private oSourceData
 	Private nMaxSize, nErr, sAllowed, sDenied
-
+	
 	Private Sub Class_Initialize
 		nErr		= 0
 		nMaxSize	= 1048576
-
+		
 		Set File			= Server.CreateObject("Scripting.Dictionary")
 		File.CompareMode	= 1
 		Set Form			= Server.CreateObject("Scripting.Dictionary")
 		Form.CompareMode	= 1
-
+		
 		Set oSourceData		= Server.CreateObject("ADODB.Stream")
 		oSourceData.Type	= 1
@@ -66,5 +66,5 @@
 		oSourceData.Open
 	End Sub
-
+	
 	Private Sub Class_Terminate
 		Form.RemoveAll
@@ -72,11 +72,11 @@
 		File.RemoveAll
 		Set File = Nothing
-
+		
 		oSourceData.Close
 		Set oSourceData = Nothing
 	End Sub
-
+	
 	Public Property Get Version
-		Version = "NetRube Upload Class Version 1.0 Build 20041218"
+		Version = "NetRube Upload Class Version 2.3 Build 20070528"
 	End Property
 
@@ -84,13 +84,13 @@
 		ErrNum	= nErr
 	End Property
-
+	
 	Public Property Let MaxSize(nSize)
 		nMaxSize	= nSize
 	End Property
-
+	
 	Public Property Let Allowed(sExt)
 		sAllowed	= sExt
 	End Property
-
+	
 	Public Property Let Denied(sExt)
 		sDenied	= sExt
@@ -104,5 +104,5 @@
 			Exit Sub
 		End If
-
+		
 		Dim nTotalSize
 		nTotalSize	= Request.TotalBytes
@@ -115,10 +115,33 @@
 			Exit Sub
 		End If
-
-		oSourceData.Write Request.BinaryRead(nTotalSize)
+		
+		'Thankful long(yrl031715@163.com)
+		'Fix upload large file.
+		'**********************************************
+		' 修正作者：long
+		' 联系邮件: yrl031715@163.com
+		' 修正时间：2007年5月6日
+		' 修正说明：由于iis6的Content-Length 头信息中包含的请求长度超过了 AspMaxRequestEntityAllowed 的值（默认200K）, IIS 将返回一个 403 错误信息.
+		'          直接导致在iis6下调试FCKeditor上传功能时，一旦文件超过200K,上传文件时文件管理器失去响应，受此影响，文件的快速上传功能也存在在缺陷。
+		'          在参考 宝玉 的 Asp无组件上传带进度条 演示程序后作出如下修改，以修正在iis6下的错误。
+
+		Dim nTotalBytes, nPartBytes, ReadBytes
+		ReadBytes = 0
+		nTotalBytes = Request.TotalBytes
+		'循环分块读取
+		Do While ReadBytes < nTotalBytes
+			'分块读取
+			nPartBytes = 64 * 1024 '分成每块64k
+			If nPartBytes + ReadBytes > nTotalBytes Then 
+				nPartBytes = nTotalBytes - ReadBytes
+			End If
+			oSourceData.Write Request.BinaryRead(nPartBytes)
+			ReadBytes = ReadBytes + nPartBytes
+		Loop
+		'**********************************************
 		oSourceData.Position = 0
-
+		
 		Dim oTotalData, oFormStream, sFormHeader, sFormName, bCrLf, nBoundLen, nFormStart, nFormEnd, nPosStart, nPosEnd, sBoundary
-
+		
 		oTotalData	= oSourceData.Read
 		bCrLf		= ChrB(13) & ChrB(10)
@@ -126,10 +149,10 @@
 		nBoundLen	= LenB(sBoundary) + 2
 		nFormStart	= nBoundLen
-
+		
 		Set oFormStream = Server.CreateObject("ADODB.Stream")
-
+		
 		Do While (nFormStart + 2) < nTotalSize
 			nFormEnd	= InStrB(nFormStart, oTotalData, bCrLf & bCrLf) + 3
-
+			
 			With oFormStream
 				.Type	= 1
@@ -144,10 +167,10 @@
 				.Close
 			End With
-
+			
 			nFormStart	= InStrB(nFormEnd, oTotalData, sBoundary) - 1
 			nPosStart	= InStr(22, sFormHeader, " name=", 1) + 7
 			nPosEnd		= InStr(nPosStart, sFormHeader, """")
 			sFormName	= Mid(sFormHeader, nPosStart, nPosEnd - nPosStart)
-
+			
 			If InStr(45, sFormHeader, " filename=", 1) > 0 Then
 				Set File(sFormName)			= New NetRube_FileInfo
@@ -168,5 +191,5 @@
 					.Mode	= 3
 					.Open
-					oSourceData.Position = nPosEnd
+					oSourceData.Position = nFormEnd
 					oSourceData.CopyTo oFormStream, nFormStart - nFormEnd - 2
 					.Position	= 0
@@ -177,8 +200,8 @@
 				End With
 			End If
-
+			
 			nFormStart	= nFormStart + nBoundLen
 		Loop
-
+		
 		oTotalData = ""
 		Set oFormStream = Nothing
@@ -190,10 +213,10 @@
 			Exit Sub
 		End If
-
+		
 		If Not IsAllowed(File(sItem).Ext) Then
 			nErr = 4
 			Exit Sub
 		End If
-
+		
 		Dim oFileStream
 		Set oFileStream = Server.CreateObject("ADODB.Stream")
@@ -210,5 +233,5 @@
 		Set oFileStream = Nothing
 	End Sub
-
+	
 	Private Function IsAllowed(sExt)
 		Dim oRE
@@ -216,5 +239,5 @@
 		oRE.IgnoreCase	= True
 		oRE.Global		= True
-
+		
 		If sDenied = "" Then
 			oRE.Pattern	= sAllowed
@@ -224,5 +247,5 @@
 			IsAllowed	= Not oRE.Test(sExt)
 		End If
-
+		
 		Set oRE	= Nothing
 	End Function
@@ -232,3 +255,3 @@
 	Dim FormName, ClientPath, Path, Name, Ext, Content, Size, MIME, Start
 End Class
-%>
+%>
Index: /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/asp/config.asp
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/asp/config.asp	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/asp/config.asp	(revision 361)
@@ -36,5 +36,5 @@
 
 ConfigAllowedExtensions.Add	"File", ""
-ConfigDeniedExtensions.Add	"File", "html|htm|php|php2|php3|php4|php5|phtml|pwml|inc|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|com|dll|vbs|js|reg|cgi|htaccess|asis"
+ConfigDeniedExtensions.Add	"File", "html|htm|php|php2|php3|php4|php5|phtml|pwml|inc|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|com|dll|vbs|js|reg|cgi|htaccess|asis|sh|shtml|shtm|phtm"
 
 ConfigAllowedExtensions.Add	"Image", "jpg|gif|jpeg|png|bmp"
Index: /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/aspx/connector.aspx
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/aspx/connector.aspx	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/aspx/connector.aspx	(revision 361)
@@ -1,3 +1,3 @@
-<%@ Page language="c#" Inherits="FredCK.FCKeditorV2.FileBrowserConnector" AutoEventWireup="false" %>
+<%@ Page language="c#" Trace="false" Inherits="FredCK.FCKeditorV2.FileBrowserConnector" AutoEventWireup="false" %>
 <%--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
Index: /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/cfm/config.cfm
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/cfm/config.cfm	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/cfm/config.cfm	(revision 361)
@@ -35,5 +35,5 @@
 	// config.allowedExtensions["File"] = "doc,rtf,pdf,ppt,pps,xls,csv,vnd,zip";
 	config.allowedExtensions["File"] = "";
-	config.deniedExtensions["File"] = "html,htm,php,php2,php3,php4,php5,phtml,pwml,inc,asp,aspx,ascx,jsp,cfm,cfc,pl,bat,exe,com,dll,vbs,js,reg,cgi,htaccess,asis";
+	config.deniedExtensions["File"] = "html,htm,php,php2,php3,php4,php5,phtml,pwml,inc,asp,aspx,ascx,jsp,cfm,cfc,pl,bat,exe,com,dll,vbs,js,reg,cgi,htaccess,asis,sh,shtml,shtm,phtm";
 
 	config.allowedExtensions["Image"] = "png,gif,jpg,jpeg,bmp";
Index: /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/cfm/connector.cfm
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/cfm/connector.cfm	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/cfm/connector.cfm	(revision 361)
@@ -48,4 +48,8 @@
 	lDeniedExtensions = config.deniedExtensions[url.type];
 
+	if ( userFilesPath eq "" ) {
+		userFilesPath = "/userfiles/";
+	}
+
 	// make sure the user files path is correctly formatted
 	userFilesPath = replace(userFilesPath, "\", "/", "ALL");
@@ -75,6 +79,10 @@
 	if ( len(config.serverPath) ) {
 		serverPath = config.serverPath;
+	
+		if ( right(serverPath,1) neq fs ) {
+			serverPath = serverPath & fs;
+		}
 	} else {
-		serverPath = replaceNoCase(getBaseTemplatePath(),replace(cgi.script_name,"/",fs,"all"),"");
+		serverPath = replaceNoCase(getBaseTemplatePath(),replace(cgi.script_name,"/",fs,"all"),"") & replace(userFilesPath,"/",fs,"all");
 	}
 
@@ -361,3 +369,3 @@
 <cfheader name="Cache-Control" value="no-cache, no-store, must-revalidate">
 <cfcontent reset="true" type="text/xml; charset=UTF-8">
-<cfoutput>#xmlHeader##xmlContent##xmlFooter#</cfoutput>	
+<cfoutput>#xmlHeader##xmlContent##xmlFooter#</cfoutput>
Index: /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/lasso/config.lasso
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/lasso/config.lasso	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/lasso/config.lasso	(revision 361)
@@ -42,5 +42,5 @@
     */
 	var('config') = map(
-	    'Enabled' = true,
+	    'Enabled' = false,
 		'UserFilesPath' = '/userfiles/',
 		'Subdirectories' = map(
@@ -57,5 +57,5 @@
 		),
 		'DeniedExtensions' = map(
-			'File' = array('html','htm','php','php2','php3','php4','php5','phtml','pwml','inc','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','com','dll','vbs','js','reg','cgi','lasso','lassoapp','htaccess','asis'),
+			'File' = array('html','htm','php','php2','php3','php4','php5','phtml','pwml','inc','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','com','dll','vbs','js','reg','cgi','lasso','lassoapp','htaccess','asis','sh','shtml','shtm','phtm'),
 			'Image' = array(),
 			'Flash' = array(),
Index: /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/perl/connector.cgi
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/perl/connector.cgi	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/perl/connector.cgi	(revision 361)
Index: /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/php/basexml.php
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/php/basexml.php	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/php/basexml.php	(revision 361)
@@ -40,5 +40,5 @@
 
 	// Set the response format.
-	header( 'Content-Type:text/xml; charset=utf-8' ) ;
+	header( 'Content-Type: text/xml; charset=utf-8' ) ;
 }
 
@@ -55,4 +55,6 @@
 	// Add the current folder node.
 	echo '<CurrentFolder path="' . ConvertToXmlAttribute( $currentFolder ) . '" url="' . ConvertToXmlAttribute( GetUrlFromPath( $resourceType, $currentFolder ) ) . '" />' ;
+
+	$GLOBALS['HeaderSent'] = true ;
 }
 
@@ -69,7 +71,16 @@
 	echo '<?xml version="1.0" encoding="utf-8" ?>' ;
 
-	echo '<Connector><Error number="' . $number . '" text="' . htmlspecialchars( $text ) . '" /></Connector>' ;
+	echo '<Connector>' ;
+	
+	SendErrorNode(  $number, $text ) ;
+	
+	echo '</Connector>' ;
 
 	exit ;
 }
+
+function SendErrorNode(  $number, $text )
+{
+	echo '<Error number="' . $number . '" text="' . htmlspecialchars( $text ) . '" />' ;
+}
 ?>
Index: /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/php/config.php
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/php/config.php	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/php/config.php	(revision 361)
@@ -47,5 +47,5 @@
 
 $Config['AllowedExtensions']['File']	= array() ;
-$Config['DeniedExtensions']['File']		= array('html','htm','php','php2','php3','php4','php5','phtml','pwml','inc','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','com','dll','vbs','js','reg','cgi','htaccess','asis') ;
+$Config['DeniedExtensions']['File']		= array('html','htm','php','php2','php3','php4','php5','phtml','pwml','inc','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','com','dll','vbs','js','reg','cgi','htaccess','asis','sh','shtml','shtm','phtm') ;
 
 $Config['AllowedExtensions']['Image']	= array('jpg','gif','jpeg','png') ;
Index: /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/php/io.php
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/php/io.php	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/php/io.php	(revision 361)
@@ -42,5 +42,18 @@
 
 	// Ensure that the directory exists.
-	CreateServerFolder( $sResourceTypePath ) ;
+	$sErrorMsg = CreateServerFolder( $sResourceTypePath ) ;
+	if ( $sErrorMsg != '' )
+	{
+		if ( isset( $GLOBALS['HeaderSent'] ) && $GLOBALS['HeaderSent'] )
+		{ 
+			SendErrorNode( 1, "Error creating folder \"{$sResourceTypePath}\" ({$sErrorMsg})" ) ;
+			CreateXmlFooter() ;
+			exit ;
+		}
+		else
+		{
+			SendError( 1, "Error creating folder \"{$sResourceTypePath}\" ({$sErrorMsg})" ) ;
+		}
+	}
 
 	// Return the resource type directory combined with the required path.
@@ -97,5 +110,16 @@
 	$sSelfPath = substr( $sSelfPath, 0, strrpos( $sSelfPath, '/' ) ) ;
 
-	return substr( $sRealPath, 0, strlen( $sRealPath ) - strlen( $sSelfPath ) ) ;
+	// Get the slash according to the filesystem
+	$slash = ( strpos( $sRealPath, '/' ) === false ) ? '\\' : '/' ;
+	$sSelfPath = str_replace( '/', $slash, $sSelfPath ) ;
+	
+	$position = strpos( $sRealPath, $sSelfPath ) ;
+
+	// This can check only that this script isn't run from a virtual dir
+	// But it avoids problems the problems that arise if it isn't checked
+	if ( $position === false || $position <> strlen( $sRealPath ) - strlen( $sSelfPath ) )
+		SendError( 1, 'Sorry, can\'t map "UserFilesPath" to a physical path. You must set the "UserFilesAbsolutePath" value in "editor/filemanager/browser/default/connectors/php/config.php".' ) ;
+
+	return substr( $sRealPath, 0, $position ) ;
 }
 ?>
Index: /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/php/util.php
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/php/util.php	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/php/util.php	(revision 361)
@@ -37,5 +37,5 @@
 function ConvertToXmlAttribute( $value )
 {
-	return utf8_encode( htmlspecialchars( $value ) ) ;
+	return htmlspecialchars( $value ) ;
 }
 ?>
Index: /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/py/connector.py
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/py/connector.py	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/connectors/py/connector.py	(revision 361)
@@ -178,8 +178,8 @@
 				}
 		self.deniedExtensions = {
-				"File": [ "html","htm","php","php2","php3","php4","php5","phtml","pwml","inc","asp","aspx","ascx","jsp","cfm","cfc","pl","bat","exe","com","dll","vbs","js","reg","cgi","htaccess","asis" ],
-				"Image": [ "html","htm","php","php2","php3","php4","php5","phtml","pwml","inc","asp","aspx","ascx","jsp","cfm","cfc","pl","bat","exe","com","dll","vbs","js","reg","cgi","htaccess","asis" ],
-				"Flash": [ "html","htm","php","php2","php3","php4","php5","phtml","pwml","inc","asp","aspx","ascx","jsp","cfm","cfc","pl","bat","exe","com","dll","vbs","js","reg","cgi","htaccess","asis" ],
-				"Media": [ "html","htm","php","php2","php3","php4","php5","phtml","pwml","inc","asp","aspx","ascx","jsp","cfm","cfc","pl","bat","exe","com","dll","vbs","js","reg","cgi","htaccess","asis" ]
+				"File": [ "html","htm","php","php2","php3","php4","php5","phtml","pwml","inc","asp","aspx","ascx","jsp","cfm","cfc","pl","bat","exe","com","dll","vbs","js","reg","cgi","htaccess","asis","sh","shtml","shtm","phtm" ],
+				"Image": [ "html","htm","php","php2","php3","php4","php5","phtml","pwml","inc","asp","aspx","ascx","jsp","cfm","cfc","pl","bat","exe","com","dll","vbs","js","reg","cgi","htaccess","asis","sh","shtml","shtm","phtm" ],
+				"Flash": [ "html","htm","php","php2","php3","php4","php5","phtml","pwml","inc","asp","aspx","ascx","jsp","cfm","cfc","pl","bat","exe","com","dll","vbs","js","reg","cgi","htaccess","asis","sh","shtml","shtm","phtm" ],
+				"Media": [ "html","htm","php","php2","php3","php4","php5","phtml","pwml","inc","asp","aspx","ascx","jsp","cfm","cfc","pl","bat","exe","com","dll","vbs","js","reg","cgi","htaccess","asis","sh","shtml","shtm","phtm" ]
 				}
 
Index: /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/frmresourceslist.html
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/frmresourceslist.html	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/frmresourceslist.html	(revision 361)
@@ -81,5 +81,5 @@
 function OpenFile( fileUrl )
 {
-	window.top.opener.SetUrl( fileUrl ) ;
+	window.top.opener.SetUrl( encodeURI( fileUrl ) ) ;
 	window.top.close() ;
 	window.top.opener.focus() ;
@@ -108,5 +108,5 @@
 	if ( oFolderNode == null )
 	{
-		alert( 'The server didn\'t reply with a proper XML file\r\nCheck your configuration.' ) ;
+		alert( 'The server didn\'t reply with a proper XML data. Please check your configuration.' ) ;
 		return ;
 	}
Index: /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/js/fckxml.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/js/fckxml.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/filemanager/browser/default/js/fckxml.js	(revision 361)
@@ -62,16 +62,15 @@
 			if ( oXmlHttp.readyState == 4 )
 			{
-				if ( oXmlHttp.responseXML == null || oXmlHttp.responseXML.firstChild == null)
+				if ( ( oXmlHttp.status != 200 && oXmlHttp.status != 304 ) || oXmlHttp.responseXML == null || oXmlHttp.responseXML.firstChild == null )
 				{
-					alert( 'The server didn\'t send back a proper XML response.\r\n\r\n' +
-							'Requested URL: ' + urlToCall + '\r\n' +
-							'Response text:\r\n' + oXmlHttp.responseText ) ;
+					alert( 'The server didn\'t send back a proper XML response. Please contact your system administrator.\n\n' +
+							'XML request error: ' + oXmlHttp.statusText + ' (' + oXmlHttp.status + ')\n\n' +
+							'Requested URL:\n' + urlToCall + '\n\n' +
+							'Response text:\n' + oXmlHttp.responseText ) ;
 					return ;
 				}
+
 				oFCKXml.DOMDocument = oXmlHttp.responseXML ;
-				if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 )
-					asyncFunctionPointer( oFCKXml ) ;
-				else
-					alert( 'XML request error: ' + oXmlHttp.statusText + ' (' + oXmlHttp.status + ')' ) ;
+				asyncFunctionPointer( oFCKXml ) ;
 			}
 		}
Index: /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/asp/class_upload.asp
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/asp/class_upload.asp	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/asp/class_upload.asp	(revision 361)
@@ -25,8 +25,8 @@
 '**********************************************
 ' File:		NetRube_Upload.asp
-' Version:	NetRube Upload Class Version 2.1 Build 20050228
+' Version:	NetRube Upload Class Version 2.3 Build 20070528
 ' Author:	NetRube
 ' Email:	NetRube@126.com
-' Date:		02/28/2005
+' Date:		05/28/2007
 ' Comments:	The code for the Upload.
 '			This can free usage, but please
@@ -36,8 +36,8 @@
 '**********************************************
 ' 文件名:	NetRube_Upload.asp
-' 版本:		NetRube Upload Class Version 2.1 Build 20050228
+' 版本:		NetRube Upload Class Version 2.3 Build 20070528
 ' 作者:		NetRube(网络乡巴佬)
 ' 电子邮件:	NetRube@126.com
-' 日期:		2005年02月28日
+' 日期:		2007年05月28日
 ' 声明:		文件上传类
 '			本上传类可以自由使用，但请保留此版权声明信息
@@ -51,14 +51,14 @@
 	Private oSourceData
 	Private nMaxSize, nErr, sAllowed, sDenied
-
+	
 	Private Sub Class_Initialize
 		nErr		= 0
 		nMaxSize	= 1048576
-
+		
 		Set File			= Server.CreateObject("Scripting.Dictionary")
 		File.CompareMode	= 1
 		Set Form			= Server.CreateObject("Scripting.Dictionary")
 		Form.CompareMode	= 1
-
+		
 		Set oSourceData		= Server.CreateObject("ADODB.Stream")
 		oSourceData.Type	= 1
@@ -66,5 +66,5 @@
 		oSourceData.Open
 	End Sub
-
+	
 	Private Sub Class_Terminate
 		Form.RemoveAll
@@ -72,11 +72,11 @@
 		File.RemoveAll
 		Set File = Nothing
-
+		
 		oSourceData.Close
 		Set oSourceData = Nothing
 	End Sub
-
+	
 	Public Property Get Version
-		Version = "NetRube Upload Class Version 1.0 Build 20041218"
+		Version = "NetRube Upload Class Version 2.3 Build 20070528"
 	End Property
 
@@ -84,13 +84,13 @@
 		ErrNum	= nErr
 	End Property
-
+	
 	Public Property Let MaxSize(nSize)
 		nMaxSize	= nSize
 	End Property
-
+	
 	Public Property Let Allowed(sExt)
 		sAllowed	= sExt
 	End Property
-
+	
 	Public Property Let Denied(sExt)
 		sDenied	= sExt
@@ -104,5 +104,5 @@
 			Exit Sub
 		End If
-
+		
 		Dim nTotalSize
 		nTotalSize	= Request.TotalBytes
@@ -115,10 +115,33 @@
 			Exit Sub
 		End If
-
-		oSourceData.Write Request.BinaryRead(nTotalSize)
+		
+		'Thankful long(yrl031715@163.com)
+		'Fix upload large file.
+		'**********************************************
+		' 修正作者：long
+		' 联系邮件: yrl031715@163.com
+		' 修正时间：2007年5月6日
+		' 修正说明：由于iis6的Content-Length 头信息中包含的请求长度超过了 AspMaxRequestEntityAllowed 的值（默认200K）, IIS 将返回一个 403 错误信息.
+		'          直接导致在iis6下调试FCKeditor上传功能时，一旦文件超过200K,上传文件时文件管理器失去响应，受此影响，文件的快速上传功能也存在在缺陷。
+		'          在参考 宝玉 的 Asp无组件上传带进度条 演示程序后作出如下修改，以修正在iis6下的错误。
+
+		Dim nTotalBytes, nPartBytes, ReadBytes
+		ReadBytes = 0
+		nTotalBytes = Request.TotalBytes
+		'循环分块读取
+		Do While ReadBytes < nTotalBytes
+			'分块读取
+			nPartBytes = 64 * 1024 '分成每块64k
+			If nPartBytes + ReadBytes > nTotalBytes Then 
+				nPartBytes = nTotalBytes - ReadBytes
+			End If
+			oSourceData.Write Request.BinaryRead(nPartBytes)
+			ReadBytes = ReadBytes + nPartBytes
+		Loop
+		'**********************************************
 		oSourceData.Position = 0
-
+		
 		Dim oTotalData, oFormStream, sFormHeader, sFormName, bCrLf, nBoundLen, nFormStart, nFormEnd, nPosStart, nPosEnd, sBoundary
-
+		
 		oTotalData	= oSourceData.Read
 		bCrLf		= ChrB(13) & ChrB(10)
@@ -126,10 +149,10 @@
 		nBoundLen	= LenB(sBoundary) + 2
 		nFormStart	= nBoundLen
-
+		
 		Set oFormStream = Server.CreateObject("ADODB.Stream")
-
+		
 		Do While (nFormStart + 2) < nTotalSize
 			nFormEnd	= InStrB(nFormStart, oTotalData, bCrLf & bCrLf) + 3
-
+			
 			With oFormStream
 				.Type	= 1
@@ -144,10 +167,10 @@
 				.Close
 			End With
-
+			
 			nFormStart	= InStrB(nFormEnd, oTotalData, sBoundary) - 1
 			nPosStart	= InStr(22, sFormHeader, " name=", 1) + 7
 			nPosEnd		= InStr(nPosStart, sFormHeader, """")
 			sFormName	= Mid(sFormHeader, nPosStart, nPosEnd - nPosStart)
-
+			
 			If InStr(45, sFormHeader, " filename=", 1) > 0 Then
 				Set File(sFormName)			= New NetRube_FileInfo
@@ -168,5 +191,5 @@
 					.Mode	= 3
 					.Open
-					oSourceData.Position = nPosEnd
+					oSourceData.Position = nFormEnd
 					oSourceData.CopyTo oFormStream, nFormStart - nFormEnd - 2
 					.Position	= 0
@@ -177,8 +200,8 @@
 				End With
 			End If
-
+			
 			nFormStart	= nFormStart + nBoundLen
 		Loop
-
+		
 		oTotalData = ""
 		Set oFormStream = Nothing
@@ -190,10 +213,10 @@
 			Exit Sub
 		End If
-
+		
 		If Not IsAllowed(File(sItem).Ext) Then
 			nErr = 4
 			Exit Sub
 		End If
-
+		
 		Dim oFileStream
 		Set oFileStream = Server.CreateObject("ADODB.Stream")
@@ -210,5 +233,5 @@
 		Set oFileStream = Nothing
 	End Sub
-
+	
 	Private Function IsAllowed(sExt)
 		Dim oRE
@@ -216,5 +239,5 @@
 		oRE.IgnoreCase	= True
 		oRE.Global		= True
-
+		
 		If sDenied = "" Then
 			oRE.Pattern	= sAllowed
@@ -224,5 +247,5 @@
 			IsAllowed	= Not oRE.Test(sExt)
 		End If
-
+		
 		Set oRE	= Nothing
 	End Function
@@ -232,3 +255,3 @@
 	Dim FormName, ClientPath, Path, Name, Ext, Content, Size, MIME, Start
 End Class
-%>
+%>
Index: /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/asp/config.asp
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/asp/config.asp	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/asp/config.asp	(revision 361)
@@ -42,5 +42,5 @@
 
 ConfigAllowedExtensions.Add	"File", ""
-ConfigDeniedExtensions.Add	"File", "html|htm|php|php2|php3|php4|php5|phtml|pwml|inc|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|com|dll|vbs|js|reg|cgi|htaccess|asis"
+ConfigDeniedExtensions.Add	"File", "html|htm|php|php2|php3|php4|php5|phtml|pwml|inc|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|com|dll|vbs|js|reg|cgi|htaccess|asis|sh|shtml|shtm|phtm"
 
 ConfigAllowedExtensions.Add	"Image", "jpg|gif|jpeg|png|bmp"
Index: /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/aspx/upload.aspx
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/aspx/upload.aspx	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/aspx/upload.aspx	(revision 361)
@@ -1,3 +1,3 @@
-<%@ Page language="c#" Inherits="FredCK.FCKeditorV2.Uploader" AutoEventWireup="false" %>
+<%@ Page language="c#" Trace="false" Inherits="FredCK.FCKeditorV2.Uploader" AutoEventWireup="false" %>
 <%--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
Index: /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/cfm/config.cfm
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/cfm/config.cfm	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/cfm/config.cfm	(revision 361)
@@ -37,5 +37,5 @@
 
 	config.allowedExtensions["File"] = "";
-	config.deniedExtensions["File"] = "html,htm,php,php2,php3,php4,php5,phtml,pwml,inc,asp,aspx,ascx,jsp,cfm,cfc,pl,bat,exe,com,dll,vbs,js,reg,cgi,htaccess,asis";
+	config.deniedExtensions["File"] = "html,htm,php,php2,php3,php4,php5,phtml,pwml,inc,asp,aspx,ascx,jsp,cfm,cfc,pl,bat,exe,com,dll,vbs,js,reg,cgi,htaccess,asis,sh,shtml,shtm,phtm";
 
 	config.allowedExtensions["Image"] = "png,gif,jpg,jpeg,bmp";
@@ -61,10 +61,6 @@
 </cfif>
 
-<!--- look for config struct in request, application and server scopes --->
-<cfif isDefined("request.FCKeditor") and isStruct(request.FCKeditor)>
-
-	<cfset variables.FCKeditor = request.FCKeditor>
-
-<cfelseif isDefined("application.FCKeditor") and isStruct(application.FCKeditor)>
+<!--- look for config struct in application and server scopes --->
+<cfif isDefined("application.FCKeditor") and isStruct(application.FCKeditor)>
 
 	<cflock scope="application" type="readonly" timeout="5">
Index: /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/cfm/upload.cfm
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/cfm/upload.cfm	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/cfm/upload.cfm	(revision 361)
@@ -89,4 +89,8 @@
 		<cfset currentFolderPath = userFilesServerPath & url.type & fs>
 
+		<cfif not directoryExists(currentFolderPath)>
+			<cfdirectory action="create" directory="#currentFolderPath#"/>
+		</cfif>
+
 		<!--- TODO: upload to a temp directory and move file if extension is allowed --->
 
Index: /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/lasso/config.lasso
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/lasso/config.lasso	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/lasso/config.lasso	(revision 361)
@@ -57,5 +57,5 @@
 		),
 		'DeniedExtensions' = map(
-			'File' = array('html','htm','php','php2','php3','php4','php5','phtml','pwml','inc','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','com','dll','vbs','js','reg','cgi','lasso','lassoapp','htaccess','asis'),
+			'File' = array('html','htm','php','php2','php3','php4','php5','phtml','pwml','inc','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','com','dll','vbs','js','reg','cgi','lasso','lassoapp','htaccess','asis','sh','shtml','shtm','phtm'),
 			'Image' = array(),
 			'Flash' = array(),
Index: /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/php/config.php
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/php/config.php	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/php/config.php	(revision 361)
@@ -46,5 +46,5 @@
 
 $Config['AllowedExtensions']['File']	= array() ;
-$Config['DeniedExtensions']['File']		= array('html','htm','php','php2','php3','php4','php5','phtml','pwml','inc','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','com','dll','vbs','js','reg','cgi','htaccess','asis') ;
+$Config['DeniedExtensions']['File']		= array('html','htm','php','php2','php3','php4','php5','phtml','pwml','inc','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','com','dll','vbs','js','reg','cgi','htaccess','asis','sh','shtml','shtm','phtm') ;
 
 $Config['AllowedExtensions']['Image']	= array('jpg','gif','jpeg','png') ;
Index: /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/php/upload.php
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/php/upload.php	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/filemanager/upload/php/upload.php	(revision 361)
@@ -87,5 +87,11 @@
 
 if ( $Config['UseFileType'] )
-	$sServerDir .= $sType . '/' ;
+	$sServerDir .= strtolower($sType) . '/' ;
+
+//check for the directory before uploading the file
+if(!is_dir($sServerDir))
+{
+    mkdir($sServerDir);
+} 
 
 while ( true )
@@ -113,5 +119,5 @@
 
 		if ( $Config['UseFileType'] )
-			$sFileUrl = $Config["UserFilesPath"] . $sType . '/' . $sFileName ;
+			$sFileUrl = $Config["UserFilesPath"] . strtolower($sType) . '/' . $sFileName ;
 		else
 			$sFileUrl = $Config["UserFilesPath"] . $sFileName ;
Index: /FCKeditor/branches/versions/2.4.x/editor/lang/_translationstatus.txt
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/lang/_translationstatus.txt	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/lang/_translationstatus.txt	(revision 361)
@@ -27,5 +27,5 @@
 bn.js      Found: 386   Missing: 16
 bs.js      Found: 230   Missing: 172
-ca.js      Found: 401   Missing: 1
+ca.js      Found: 402   Missing: 0
 cs.js      Found: 386   Missing: 16
 da.js      Found: 386   Missing: 16
@@ -37,7 +37,7 @@
 eo.js      Found: 350   Missing: 52
 es.js      Found: 386   Missing: 16
-et.js      Found: 386   Missing: 16
+et.js      Found: 402   Missing: 0
 eu.js      Found: 386   Missing: 16
-fa.js      Found: 401   Missing: 1
+fa.js      Found: 402   Missing: 0
 fi.js      Found: 386   Missing: 16
 fo.js      Found: 401   Missing: 1
@@ -68,8 +68,8 @@
 sr-latn.js Found: 373   Missing: 29
 sr.js      Found: 373   Missing: 29
-sv.js      Found: 381   Missing: 21
+sv.js      Found: 401   Missing: 1
 th.js      Found: 398   Missing: 4
 tr.js      Found: 401   Missing: 1
-uk.js      Found: 401   Missing: 1
+uk.js      Found: 402   Missing: 0
 vi.js      Found: 401   Missing: 1
 zh-cn.js   Found: 401   Missing: 1
Index: /FCKeditor/branches/versions/2.4.x/editor/lang/ca.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/lang/ca.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/lang/ca.js	(revision 361)
@@ -223,5 +223,5 @@
 DlgLnkTypeURL		: "URL",
 DlgLnkTypeAnchor	: "Àncora en aquesta pàgina",
-DlgLnkTypeEMail		: "E-Mail",
+DlgLnkTypeEMail		: "Correu electrònic",
 DlgLnkProto			: "Protocol",
 DlgLnkProtoOther	: "<altra>",
@@ -230,6 +230,6 @@
 DlgLnkAnchorByName	: "Per nom d'àncora",
 DlgLnkAnchorById	: "Per Id d'element",
-DlgLnkNoAnchors		: "<No hi ha àncores disponibles en aquest document>",		//REVIEW : Change < and > with ( and )
-DlgLnkEMail			: "Adreça d'E-Mail",
+DlgLnkNoAnchors		: "(No hi ha àncores disponibles en aquest document)",		//REVIEW : Change < and > with ( and )
+DlgLnkEMail			: "Adreça de correu electrònic",
 DlgLnkEMailSubject	: "Assumpte del missatge",
 DlgLnkEMailBody		: "Cos del missatge",
@@ -261,5 +261,5 @@
 
 DlnLnkMsgNoUrl		: "Si us plau, escrigui l'enllaç URL",
-DlnLnkMsgNoEMail	: "Si us plau, escrigui l'adreça e-mail",
+DlnLnkMsgNoEMail	: "Si us plau, escrigui l'adreça correu electrònic",
 DlnLnkMsgNoAnchor	: "Si us plau, escrigui l'àncora",
 DlnLnkMsgInvPopName	: "El nom de la finestra emergent ha de començar amb una lletra i no pot tenir espais",
@@ -281,5 +281,5 @@
 DlgTableRows		: "Files",
 DlgTableColumns		: "Columnes",
-DlgTableBorder		: "Tamany vora",
+DlgTableBorder		: "Mida vora",
 DlgTableAlign		: "Alineació",
 DlgTableAlignNotSet	: "<No Definit>",
@@ -332,8 +332,8 @@
 DlgReplaceFindLbl		: "Cerca:",
 DlgReplaceReplaceLbl	: "Remplaça amb:",
-DlgReplaceCaseChk		: "Sensible a majúscules",
+DlgReplaceCaseChk		: "Distingeix majúscules/minúscules",
 DlgReplaceReplaceBtn	: "Reemplaça",
-DlgReplaceReplAllBtn	: "Reemplaça'ls tots",
-DlgReplaceWordChk		: "Cerca paraula completa",
+DlgReplaceReplAllBtn	: "Reemplaça-ho tot",
+DlgReplaceWordChk		: "Només paraules completes",
 
 // Paste Operations / Dialog
@@ -341,9 +341,9 @@
 PasteErrorCopy	: "La seguretat del vostre navegador no permet executar automàticament les operacions de copiar. Si us plau, utilitzeu el teclat (Ctrl+C).",
 
-PasteAsText		: "Enganxa com a text sense format",
+PasteAsText		: "Enganxa com a text no formatat",
 PasteFromWord	: "Enganxa com a Word",
 
 DlgPasteMsg2	: "Si us plau, enganxeu dins del següent camp utilitzant el teclat (<STRONG>Ctrl+V</STRONG>) i premeu <STRONG>OK</STRONG>.",
-DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteSec		: "A causa de la configuració de seguretat del vostre navegador, l'editor no pot accedir al porta-retalls directament. Enganxeu-ho un altre cop en aquesta finestra.",
 DlgPasteIgnoreFont		: "Ignora definicions de font",
 DlgPasteRemoveStyles	: "Elimina definicions d'estil",
@@ -399,5 +399,5 @@
 DlgSelectName		: "Nom",
 DlgSelectValue		: "Valor",
-DlgSelectSize		: "Tamany",
+DlgSelectSize		: "Mida",
 DlgSelectLines		: "Línies",
 DlgSelectChkMulti	: "Permet múltiples seleccions",
@@ -451,8 +451,8 @@
 
 DlgDocPageTitle		: "Títol de la pàgina",
-DlgDocLangDir		: "Direcció llenguatge",
+DlgDocLangDir		: "Direcció idioma",
 DlgDocLangDirLTR	: "Esquerra a dreta (LTR)",
 DlgDocLangDirRTL	: "Dreta a esquerra (RTL)",
-DlgDocLangCode		: "Codi de llenguatge",
+DlgDocLangCode		: "Codi d'idioma",
 DlgDocCharSet		: "Codificació de conjunt de caràcters",
 DlgDocCharSetCE		: "Centreeuropeu",
@@ -468,5 +468,5 @@
 
 DlgDocDocType		: "Capçalera de tipus de document",
-DlgDocDocTypeOther	: "Altra Capçalera de tipus de document",
+DlgDocDocTypeOther	: "Un altra capçalera de tipus de document",
 DlgDocIncXHTML		: "Incloure declaracions XHTML",
 DlgDocBgColor		: "Color de fons",
Index: /FCKeditor/branches/versions/2.4.x/editor/lang/et.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/lang/et.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/lang/et.js	(revision 361)
@@ -135,5 +135,5 @@
 FormProp			: "Vormi omadused",
 
-FontFormats			: "Tavaline;Vormindatud;Aadress;Pealkiri 1;Pealkiri 2;Pealkiri 3;Pealkiri 4;Pealkiri 5;Pealkiri 6",		//REVIEW : Check _getfontformat.html
+FontFormats			: "Tavaline;Vormindatud;Aadress;Pealkiri 1;Pealkiri 2;Pealkiri 3;Pealkiri 4;Pealkiri 5;Pealkiri 6;Tavaline (DIV)",		//REVIEW : Check _getfontformat.html
 
 // Alerts and Messages
@@ -146,5 +146,5 @@
 NotImplemented		: "Käsku ei täidetud",
 UnknownToolbarSet	: "Tööriistariba \"%1\" ei eksisteeri",
-NoActiveX			: "Sinu interneti sirvija turvalisuse seaded võivad limiteerida mõningaid tekstirdaktori kasutus võimalusi. Sa peaksid võimaldama valiku \"Run ActiveX controls and plug-ins\" oma sirvija seadetes. Muidu võid sa täheldada vigu tekstiredaktori töös ja märgata puuduvaid funktsioone.",
+NoActiveX			: "Sinu veebisirvija turvalisuse seaded võivad limiteerida mõningaid tekstirdaktori kasutus võimalusi. Sa peaksid võimaldama valiku \"Run ActiveX controls and plug-ins\" oma sirvija seadetes. Muidu võid sa täheldada vigu tekstiredaktori töös ja märgata puuduvaid funktsioone.",
 BrowseServerBlocked : "Ressursside sirvija avamine ebaõnnestus. Võimalda pop-up akende avanemine.",
 DialogBlocked		: "Ei olenud võimalik avada dialoogi akent. Võimalda pop-up akende avanemine.",
@@ -230,5 +230,5 @@
 DlgLnkAnchorByName	: "Ankru nime järgi",
 DlgLnkAnchorById	: "Elemendi id järgi",
-DlgLnkNoAnchors		: "<Selles dokumendis ei ole ankruid>",		//REVIEW : Change < and > with ( and )
+DlgLnkNoAnchors		: "(Selles dokumendis ei ole ankruid)",		//REVIEW : Change < and > with ( and )
 DlgLnkEMail			: "E-posti aadress",
 DlgLnkEMailSubject	: "Sõnumi teema",
@@ -263,5 +263,5 @@
 DlnLnkMsgNoEMail	: "Palun kirjuta E-Posti aadress",
 DlnLnkMsgNoAnchor	: "Palun vali ankur",
-DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+DlnLnkMsgInvPopName	: "Hüpikakna nimi peab algama alfabeetilise tähega ja ei tohi sisaldada tühikuid",
 
 // Color Dialog
@@ -338,6 +338,6 @@
 
 // Paste Operations / Dialog
-PasteErrorCut	: "Sinu interneti sirvija turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl+X).",
-PasteErrorCopy	: "Sinu interneti sirvija turvaseaded ei luba redaktoril automaatselt kopeerida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl+C).",
+PasteErrorCut	: "Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl+X).",
+PasteErrorCopy	: "Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt kopeerida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl+C).",
 
 PasteAsText		: "Kleebi tavalise tekstina",
@@ -345,5 +345,5 @@
 
 DlgPasteMsg2	: "Palun kleebi järgnevasse kasti kasutades klaviatuuri klahvikombinatsiooni (<STRONG>Ctrl+V</STRONG>) ja vajuta seejärel <STRONG>OK</STRONG>.",
-DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteSec		: "Sinu veebisirvija turvaseadete tõttu, ei oma redaktor otsest ligipääsu lõikelaua andmetele. Sa pead kleepima need uuesti siia aknasse.",
 DlgPasteIgnoreFont		: "Ignoreeri kirja definitsioone",
 DlgPasteRemoveStyles	: "Eemalda stiilide definitsioonid",
@@ -382,7 +382,7 @@
 DlgButtonText		: "Tekst (väärtus)",
 DlgButtonType		: "Tüüp",
-DlgButtonTypeBtn	: "Button",	//MISSING
-DlgButtonTypeSbm	: "Submit",	//MISSING
-DlgButtonTypeRst	: "Reset",	//MISSING
+DlgButtonTypeBtn	: "Nupp",
+DlgButtonTypeSbm	: "Saada",
+DlgButtonTypeRst	: "Lähtesta",
 
 // Checkbox and Radio Button Dialogs
@@ -433,5 +433,5 @@
 BulletedListProp	: "Täpitud loetelu omadused",
 NumberedListProp	: "Nummerdatud loetelu omadused",
-DlgLstStart			: "Start",	//MISSING
+DlgLstStart			: "Alusta",
 DlgLstType			: "Tüüp",
 DlgLstTypeCircle	: "Ring",
@@ -456,13 +456,13 @@
 DlgDocLangCode		: "Keele kood",
 DlgDocCharSet		: "Märgistiku kodeering",
-DlgDocCharSetCE		: "Central European",	//MISSING
-DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
-DlgDocCharSetCR		: "Cyrillic",	//MISSING
-DlgDocCharSetGR		: "Greek",	//MISSING
-DlgDocCharSetJP		: "Japanese",	//MISSING
-DlgDocCharSetKR		: "Korean",	//MISSING
-DlgDocCharSetTR		: "Turkish",	//MISSING
-DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
-DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetCE		: "Kesk-Euroopa",
+DlgDocCharSetCT		: "Hiina traditsiooniline (Big5)",
+DlgDocCharSetCR		: "Kirillisa",
+DlgDocCharSetGR		: "Kreeka",
+DlgDocCharSetJP		: "Jaapani",
+DlgDocCharSetKR		: "Korea",
+DlgDocCharSetTR		: "Türgi",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Lääne-Euroopa",
 DlgDocCharSetOther	: "Ülejäänud märgistike kodeeringud",
 
@@ -494,9 +494,9 @@
 DlgTemplatesLoading	: "Laen šabloonide nimekirja. Palun oota...",
 DlgTemplatesNoTpl	: "(Ühtegi šablooni ei ole defineeritud)",
-DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+DlgTemplatesReplace	: "Asenda tegelik sisu",
 
 // About Dialog
 DlgAboutAboutTab	: "Teave",
-DlgAboutBrowserInfoTab	: "Interneti sirvija info",
+DlgAboutBrowserInfoTab	: "Veebisirvija info",
 DlgAboutLicenseTab	: "Litsents",
 DlgAboutVersion		: "versioon",
Index: /FCKeditor/branches/versions/2.4.x/editor/lang/fa.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/lang/fa.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/lang/fa.js	(revision 361)
@@ -140,5 +140,5 @@
 ProcessingXHTML		: "پردازش XHTML. لطفا صبر کنید...",
 Done				: "انجام شد",
-PasteWordConfirm	: "کپی شده است. آیا می‌خواهید قبل از چسباندن آن را پاک‌سازی کنید؟ Word متنی که می‌خواهید بچسبانید به نظر می‌رسد از",
+PasteWordConfirm	: "متنی که می‌خواهید بچسبانید به نظر می‌رسد از Word کپی شده است. آیا می‌خواهید قبل از چسباندن آن را پاک‌سازی کنید؟",
 NotCompatiblePaste	: "این فرمان برای مرورگر Internet Explorer از نگارش 5.5 یا بالاتر در دسترس است. آیا می‌خواهید بدون پاک‌سازی، متن را بچسبانید؟",
 UnknownToolbarItem	: "فقرهٴ نوارابزار ناشناخته \"%1\"",
@@ -230,5 +230,5 @@
 DlgLnkAnchorByName	: "با نام لنگر",
 DlgLnkAnchorById	: "با شناسهٴ المان",
-DlgLnkNoAnchors		: "<در این سند لنگری دردسترس نیست>",		//REVIEW : Change < and > with ( and )
+DlgLnkNoAnchors		: "(در این سند لنگری دردسترس نیست)",		//REVIEW : Change < and > with ( and )
 DlgLnkEMail			: "نشانی پست الکترونیکی",
 DlgLnkEMailSubject	: "موضوع پیام",
@@ -247,5 +247,5 @@
 DlgLnkPopWinName	: "نام پنجرهٴ پاپاپ",
 DlgLnkPopWinFeat	: "ویژگیهای پنجرهٴ پاپاپ",
-DlgLnkPopResize		: "قابل تغیر اندازه",
+DlgLnkPopResize		: "قابل تغییر اندازه",
 DlgLnkPopLocation	: "نوار موقعیت",
 DlgLnkPopMenu		: "نوار منو",
@@ -345,5 +345,5 @@
 
 DlgPasteMsg2	: "لطفا متن را با کلیدهای (<STRONG>Ctrl+V</STRONG>) در این جعبهٴ متنی بچسبانید و <STRONG>پذیرش</STRONG> را بزنید.",
-DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteSec		: "به خاطر تنظیمات امنیتی مرورگر شما، ویرایشگر نمی‌تواند دسترسی مستقیم به داده‌های clipboard داشته باشد. شما باید دوباره آنرا در این پنجره بچسبانید.",
 DlgPasteIgnoreFont		: "چشم‌پوشی از تعاریف نوع قلم",
 DlgPasteRemoveStyles	: "چشم‌پوشی از تعاریف سبک (style)",
@@ -363,6 +363,6 @@
 
 // Speller Pages Dialog
-DlgSpellNotInDic		: "در واژه‌نامه موجود نیست",
-DlgSpellChangeTo		: "تغیر به",
+DlgSpellNotInDic		: "در واژه‌نامه یافت نشد",
+DlgSpellChangeTo		: "تغییر به",
 DlgSpellBtnIgnore		: "چشم‌پوشی",
 DlgSpellBtnIgnoreAll	: "چشم‌پوشی همه",
@@ -373,7 +373,7 @@
 DlgSpellProgress		: "بررسی املا در حال انجام...",
 DlgSpellNoMispell		: "بررسی املا انجام شد. هیچ غلط‌املائی یافت نشد",
-DlgSpellNoChanges		: "بررسی املا انجام شد. هیچ واژه‌ای تغیر نیافت",
-DlgSpellOneChange		: "بررسی املا انجام شد. یک واژه تغیر یافت",
-DlgSpellManyChanges		: "بررسی املا انجام شد. %1 واژه تغیر یافت",
+DlgSpellNoChanges		: "بررسی املا انجام شد. هیچ واژه‌ای تغییر نیافت",
+DlgSpellOneChange		: "بررسی املا انجام شد. یک واژه تغییر یافت",
+DlgSpellManyChanges		: "بررسی املا انجام شد. %1 واژه تغییر یافت",
 
 IeSpellDownload			: "بررسی‌کنندهٴ املا نصب نشده است. آیا می‌خواهید آن را هم‌اکنون دریافت کنید؟",
@@ -393,5 +393,5 @@
 // Form Dialog
 DlgFormName		: "نام",
-DlgFormAction	: "اقدام",
+DlgFormAction	: "رویداد",
 DlgFormMethod	: "متد",
 
@@ -402,13 +402,13 @@
 DlgSelectLines		: "خطوط",
 DlgSelectChkMulti	: "گزینش چندگانه فراهم باشد",
-DlgSelectOpAvail	: "گزینه‌های موجود",
+DlgSelectOpAvail	: "گزینه‌های دردسترس",
 DlgSelectOpText		: "متن",
 DlgSelectOpValue	: "مقدار",
-DlgSelectBtnAdd		: "اضافه",
+DlgSelectBtnAdd		: "افزودن",
 DlgSelectBtnModify	: "ویرایش",
 DlgSelectBtnUp		: "بالا",
 DlgSelectBtnDown	: "پائین",
 DlgSelectBtnSetValue : "تنظیم به عنوان مقدار ِبرگزیده",
-DlgSelectBtnDelete	: "حذف",
+DlgSelectBtnDelete	: "پاک‌کردن",
 
 // Textarea Dialog
Index: /FCKeditor/branches/versions/2.4.x/editor/lang/nb.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/lang/nb.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/lang/nb.js	(revision 361)
@@ -40,5 +40,5 @@
 PasteWord			: "Lim inn fra Word",
 Print				: "Skriv ut",
-SelectAll			: "Velg alle",
+SelectAll			: "Merk alt",
 RemoveFormat		: "Fjern format",
 InsertLinkLbl		: "Lenke",
Index: /FCKeditor/branches/versions/2.4.x/editor/lang/no.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/lang/no.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/lang/no.js	(revision 361)
@@ -40,5 +40,5 @@
 PasteWord			: "Lim inn fra Word",
 Print				: "Skriv ut",
-SelectAll			: "Velg alle",
+SelectAll			: "Merk alt",
 RemoveFormat		: "Fjern format",
 InsertLinkLbl		: "Lenke",
Index: /FCKeditor/branches/versions/2.4.x/editor/lang/sv.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/lang/sv.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/lang/sv.js	(revision 361)
@@ -103,11 +103,11 @@
 ImageButton		: "Bildknapp",
 
-FitWindow		: "Maximize the editor size",	//MISSING
+FitWindow		: "Anpassa till fönstrets storlek",
 
 // Context Menu
 EditLink			: "Redigera länk",
-CellCM				: "Cell",	//MISSING
-RowCM				: "Row",	//MISSING
-ColumnCM			: "Column",	//MISSING
+CellCM				: "Cell",
+RowCM				: "Rad",
+ColumnCM			: "Kolumn",
 InsertRow			: "Infoga rad",
 DeleteRows			: "Radera rad",
@@ -135,5 +135,5 @@
 FormProp			: "Egenskaper för formulär",
 
-FontFormats			: "Normal;Formaterad;Adress;Rubrik 1;Rubrik 2;Rubrik 3;Rubrik 4;Rubrik 5;Rubrik 6",		//REVIEW : Check _getfontformat.html
+FontFormats			: "Normal;Formaterad;Adress;Rubrik 1;Rubrik 2;Rubrik 3;Rubrik 4;Rubrik 5;Rubrik 6;Normal (DIV)",		//REVIEW : Check _getfontformat.html
 
 // Alerts and Messages
@@ -230,5 +230,5 @@
 DlgLnkAnchorByName	: "efter ankarnamn",
 DlgLnkAnchorById	: "efter objektid",
-DlgLnkNoAnchors		: "<Inga ankare kunde hittas>",		//REVIEW : Change < and > with ( and )
+DlgLnkNoAnchors		: "(Inga ankare kunde hittas)",		//REVIEW : Change < and > with ( and )
 DlgLnkEMail			: "E-postadress",
 DlgLnkEMailSubject	: "Ämne",
@@ -263,5 +263,5 @@
 DlnLnkMsgNoEMail	: "Var god ange E-postadress",
 DlnLnkMsgNoAnchor	: "Var god ange ett ankare",
-DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+DlnLnkMsgInvPopName	: "Popup-rutans namn måste börja med en alfabetisk bokstav och får inte innehålla mellanslag",
 
 // Color Dialog
@@ -345,5 +345,5 @@
 
 DlgPasteMsg2	: "Var god och klistra in Er text i rutan nedan genom att använda (<STRONG>Ctrl+V</STRONG>) klicka sen på <STRONG>OK</STRONG>.",
-DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteSec		: "På grund av din webläsares säkerhetsinställningar kan verktyget inte få åtkomst till urklippsdatan. Var god och använd detta fönster istället.",
 DlgPasteIgnoreFont		: "Ignorera typsnittsdefinitioner",
 DlgPasteRemoveStyles	: "Radera Stildefinitioner",
@@ -382,7 +382,7 @@
 DlgButtonText		: "Text (Värde)",
 DlgButtonType		: "Typ",
-DlgButtonTypeBtn	: "Button",	//MISSING
-DlgButtonTypeSbm	: "Submit",	//MISSING
-DlgButtonTypeRst	: "Reset",	//MISSING
+DlgButtonTypeBtn	: "Knapp",
+DlgButtonTypeSbm	: "Skicka",
+DlgButtonTypeRst	: "Återställ",
 
 // Checkbox and Radio Button Dialogs
@@ -456,13 +456,13 @@
 DlgDocLangCode		: "Språkkod",
 DlgDocCharSet		: "Teckenuppsättningar",
-DlgDocCharSetCE		: "Central European",	//MISSING
-DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
-DlgDocCharSetCR		: "Cyrillic",	//MISSING
-DlgDocCharSetGR		: "Greek",	//MISSING
-DlgDocCharSetJP		: "Japanese",	//MISSING
-DlgDocCharSetKR		: "Korean",	//MISSING
-DlgDocCharSetTR		: "Turkish",	//MISSING
-DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
-DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetCE		: "Central Europa",
+DlgDocCharSetCT		: "Traditionell Kinesisk (Big5)",
+DlgDocCharSetCR		: "Kyrillisk",
+DlgDocCharSetGR		: "Grekiska",
+DlgDocCharSetJP		: "Japanska",
+DlgDocCharSetKR		: "Koreanska",
+DlgDocCharSetTR		: "Turkiska",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Väst Europa",
 DlgDocCharSetOther	: "Övriga teckenuppsättningar",
 
@@ -494,10 +494,10 @@
 DlgTemplatesLoading	: "Laddar mallar. Var god vänta...",
 DlgTemplatesNoTpl	: "(Ingen mall är vald)",
-DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+DlgTemplatesReplace	: "Ersätt aktuellt innehåll",
 
 // About Dialog
 DlgAboutAboutTab	: "Om",
 DlgAboutBrowserInfoTab	: "Webläsare",
-DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutLicenseTab	: "Licens",
 DlgAboutVersion		: "version",
 DlgAboutInfo		: "För mer information se"
Index: /FCKeditor/branches/versions/2.4.x/editor/lang/uk.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/lang/uk.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/lang/uk.js	(revision 361)
@@ -135,5 +135,5 @@
 FormProp			: "Властивості форми",
 
-FontFormats			: "Нормальний;Форматований;Адреса;Заголовок 1;Заголовок 2;Заголовок 3;Заголовок 4;Заголовок 5;Заголовок 6",		//REVIEW : Check _getfontformat.html
+FontFormats			: "Нормальний;Форматований;Адреса;Заголовок 1;Заголовок 2;Заголовок 3;Заголовок 4;Заголовок 5;Заголовок 6;Нормальний (DIV)",		//REVIEW : Check _getfontformat.html
 
 // Alerts and Messages
@@ -345,5 +345,5 @@
 
 DlgPasteMsg2	: "Будь-ласка, вставте з буфера обміну в цю область, користуючись комбінацією клавіш (<STRONG>Ctrl+V</STRONG>) та натисніть <STRONG>OK</STRONG>.",
-DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteSec		: "Редактор не може отримати прямий доступ до буферу обміну у зв'язку з налаштуваннями вашого браузера. Вам потрібно вставити інформацію повторно в це вікно.",
 DlgPasteIgnoreFont		: "Ігнорувати налаштування шрифтів",
 DlgPasteRemoveStyles	: "Видалити налаштування стилів",
Index: /FCKeditor/branches/versions/2.4.x/editor/plugins/placeholder/lang/fr.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/editor/plugins/placeholder/lang/fr.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/editor/plugins/placeholder/lang/fr.js	(revision 361)
@@ -19,9 +19,9 @@
  * == END LICENSE ==
  *
- * Placholder Italian language file.
+ * Placeholder French language file.
  */
-FCKLang.PlaceholderBtn			= 'Insérer/Modifier Substitut' ;
-FCKLang.PlaceholderDlgTitle		= 'Propriétés de Substitut' ;
-FCKLang.PlaceholderDlgName		= 'Nom de Substitut' ;
-FCKLang.PlaceholderErrNoName	= 'Veuillez saisir le nom de Substitut' ;
-FCKLang.PlaceholderErrNameInUse	= 'Ce nom est déjà utilisé' ;
+FCKLang.PlaceholderBtn			= "Insérer/Modifier l'Espace réservé" ;
+FCKLang.PlaceholderDlgTitle		= "Propriétés de l'Espace réservé" ;
+FCKLang.PlaceholderDlgName		= "Nom de l'Espace réservé" ;
+FCKLang.PlaceholderErrNoName	= "Veuillez saisir le nom de l'Espace réservé" ;
+FCKLang.PlaceholderErrNameInUse	= "Ce nom est déjà utilisé" ;
Index: /FCKeditor/branches/versions/2.4.x/fckconfig.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/fckconfig.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/fckconfig.js	(revision 361)
@@ -137,4 +137,5 @@
 
 FCKConfig.ContextMenu = ['Generic','Link','Anchor','Image','Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField','ImageButton','Button','BulletedList','NumberedList','Table','Form'] ;
+FCKConfig.BrowserContextMenuOnCtrl = false ;
 
 FCKConfig.FontColors = '000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,808080,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' ;
@@ -150,4 +151,5 @@
 FCKConfig.IeSpellDownloadUrl	= 'http://www.iespell.com/download.php' ;
 FCKConfig.SpellerPagesServerScript = 'server-scripts/spellchecker.php' ;	// Available extension: .php .cfm .pl
+FCKConfig.FirefoxSpellChecker	= false ;
 
 FCKConfig.MaxUndoLevels = 15 ;
@@ -169,4 +171,6 @@
 FCKConfig.BodyId = '' ;
 FCKConfig.BodyClass = '' ;
+
+FCKConfig.DefaultLinkTarget = '' ;
 
 // The option switches between trying to keep the html structure or do the changes so the content looks like it was in Word
@@ -211,5 +215,5 @@
 FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/upload/' + _QuickUploadLanguage + '/upload.' + _QuickUploadLanguage ;
 FCKConfig.LinkUploadAllowedExtensions	= "" ;			// empty for all
-FCKConfig.LinkUploadDeniedExtensions	= ".(html|htm|php|php2|php3|php4|php5|phtml|pwml|inc|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|com|dll|vbs|js|reg|cgi|htaccess|asis)$" ;	// empty for no one
+FCKConfig.LinkUploadDeniedExtensions	= ".(html|htm|php|php2|php3|php4|php5|phtml|pwml|inc|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|com|dll|vbs|js|reg|cgi|htaccess|asis|sh|shtml|shtm|phtm)$" ;	// empty for no one
 
 FCKConfig.ImageUpload = true ;
Index: /FCKeditor/branches/versions/2.4.x/fckeditor.asp
===================================================================
--- /FCKeditor/branches/versions/2.4.x/fckeditor.asp	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/fckeditor.asp	(revision 361)
@@ -188,7 +188,18 @@
 
 	Private Function EncodeConfig( valueToEncode )
-		EncodeConfig = Replace( valueToEncode, "&", "%26" )
-		EncodeConfig = Replace( EncodeConfig , "=", "%3D" )
-		EncodeConfig = Replace( EncodeConfig , """", "%22" )
+		' The locale of the asp server makes the conversion of a boolean to string different to "true" or "false"
+		' so we must do it manually
+    If vartype(valueToEncode) = vbBoolean then 
+			If valueToEncode=True Then
+				EncodeConfig="True"
+			Else
+				EncodeConfig="False"
+			End If 
+		Else
+			EncodeConfig = Replace( valueToEncode, "&", "%26" )
+			EncodeConfig = Replace( EncodeConfig , "=", "%3D" )
+			EncodeConfig = Replace( EncodeConfig , """", "%22" )
+		End if                           
+
 	End Function
 
Index: /FCKeditor/branches/versions/2.4.x/fckeditor.cfc
===================================================================
--- /FCKeditor/branches/versions/2.4.x/fckeditor.cfc	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/fckeditor.cfc	(revision 361)
@@ -195,10 +195,24 @@
 	 * changed 20041206 hk@lwd.de (improvements are welcome!)
 	 */
-	lConfigKeys = lConfigKeys & "CustomConfigurationsPath,EditorAreaCSS,DocType,BaseHref,FullPage,Debug,SkinPath,PluginsPath,AutoDetectLanguage,DefaultLanguage,ContentLangDirection,EnableXHTML,EnableSourceXHTML,ProcessHTMLEntities,IncludeLatinEntities,IncludeGreekEntities";
-	lConfigKeys = lConfigKeys & ",FillEmptyBlocks,FormatSource,FormatOutput,FormatIndentator,GeckoUseSPAN,StartupFocus,ForcePasteAsPlainText,ForceSimpleAmpersand,TabSpaces,ShowBorders,UseBROnCarriageReturn";
-	lConfigKeys = lConfigKeys & ",ToolbarStartExpanded,ToolbarCanCollapse,ToolbarSets,ContextMenu,FontColors,FontNames,FontSizes,FontFormats,StylesXmlPath,SpellChecker,IeSpellDownloadUrl,MaxUndoLevels";
-	lConfigKeys = lConfigKeys & ",LinkBrowser,LinkBrowserURL,LinkBrowserWindowWidth,LinkBrowserWindowHeight";
-	lConfigKeys = lConfigKeys & ",LinkUpload,LinkUploadURL,LinkUploadWindowWidth,LinkUploadWindowHeight,LinkUploadAllowedExtensions,LinkUploadDeniedExtensions";
-	lConfigKeys = lConfigKeys & ",ImageBrowser,ImageBrowserURL,ImageBrowserWindowWidth,ImageBrowserWindowHeight,SmileyPath,SmileyImages,SmileyColumns,SmileyWindowWidth,SmileyWindowHeight";
+	lConfigKeys = lConfigKeys & "DisableEnterKeyHandler,CustomConfigurationsPath,EditorAreaCSS,ToolbarComboPreviewCSS,DocType";
+	lConfigKeys = lConfigKeys & ",BaseHref,FullPage,Debug,AllowQueryStringDebug,SkinPath";
+	lConfigKeys = lConfigKeys & ",PreloadImages,PluginsPath,AutoDetectLanguage,DefaultLanguage,ContentLangDirection";
+	lConfigKeys = lConfigKeys & ",ProcessHTMLEntities,IncludeLatinEntities,IncludeGreekEntities,ProcessNumericEntities,AdditionalNumericEntities";
+	lConfigKeys = lConfigKeys & ",FillEmptyBlocks,FormatSource,FormatOutput,FormatIndentator,ForceStrongEm";
+	lConfigKeys = lConfigKeys & ",GeckoUseSPAN,StartupFocus,ForcePasteAsPlainText,AutoDetectPasteFromWord,ForceSimpleAmpersand";
+	lConfigKeys = lConfigKeys & ",TabSpaces,ShowBorders,SourcePopup,ToolbarStartExpanded,ToolbarCanCollapse";
+	lConfigKeys = lConfigKeys & ",IgnoreEmptyParagraphValue,PreserveSessionOnFileBrowser,FloatingPanelsZIndex,TemplateReplaceAll,TemplateReplaceCheckbox";
+	lConfigKeys = lConfigKeys & ",ToolbarLocation,ToolbarSets,EnterMode,ShiftEnterMode,Keystrokes";
+	lConfigKeys = lConfigKeys & ",ContextMenu,BrowserContextMenuOnCtrl,FontColors,FontNames,FontSizes";
+	lConfigKeys = lConfigKeys & ",FontFormats,StylesXmlPath,TemplatesXmlPath,SpellChecker,IeSpellDownloadUrl";
+	lConfigKeys = lConfigKeys & ",SpellerPagesServerScript,FirefoxSpellChecker,MaxUndoLevels,DisableObjectResizing,DisableFFTableHandles";
+	lConfigKeys = lConfigKeys & ",LinkDlgHideTarget	,LinkDlgHideAdvanced,ImageDlgHideLink	,ImageDlgHideAdvanced,FlashDlgHideAdvanced";
+	lConfigKeys = lConfigKeys & ",ProtectedTags,BodyId,BodyClass,DefaultLinkTarget,CleanWordKeepsStructure";
+	lConfigKeys = lConfigKeys & ",LinkBrowser,LinkBrowserURL,LinkBrowserWindowWidth,LinkBrowserWindowHeight,ImageBrowser";
+	lConfigKeys = lConfigKeys & ",ImageBrowserURL,ImageBrowserWindowWidth,ImageBrowserWindowHeight,FlashBrowser,FlashBrowserURL";
+	lConfigKeys = lConfigKeys & ",FlashBrowserWindowWidth ,FlashBrowserWindowHeight,LinkUpload,LinkUploadURL,LinkUploadWindowWidth";
+	lConfigKeys = lConfigKeys & ",LinkUploadWindowHeight,LinkUploadAllowedExtensions,LinkUploadDeniedExtensions,ImageUpload,ImageUploadURL";
+	lConfigKeys = lConfigKeys & ",ImageUploadAllowedExtensions,ImageUploadDeniedExtensions,FlashUpload,FlashUploadURL,FlashUploadAllowedExtensions";
+	lConfigKeys = lConfigKeys & ",FlashUploadDeniedExtensions,SmileyPath,SmileyImages,SmileyColumns,SmileyWindowWidth,SmileyWindowHeight";
 
 	for( key in this.config )
Index: /FCKeditor/branches/versions/2.4.x/fckeditor.cfm
===================================================================
--- /FCKeditor/branches/versions/2.4.x/fckeditor.cfm	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/fckeditor.cfm	(revision 361)
@@ -118,10 +118,24 @@
 		 */
 		lConfigKeys = "";
-		lConfigKeys = lConfigKeys & "CustomConfigurationsPath,EditorAreaCSS,DocType,BaseHref,FullPage,Debug,SkinPath,PluginsPath,AutoDetectLanguage,DefaultLanguage,ContentLangDirection,EnableXHTML,EnableSourceXHTML,ProcessHTMLEntities,IncludeLatinEntities,IncludeGreekEntities";
-		lConfigKeys = lConfigKeys & ",FillEmptyBlocks,FormatSource,FormatOutput,FormatIndentator,GeckoUseSPAN,StartupFocus,ForcePasteAsPlainText,ForceSimpleAmpersand,TabSpaces,ShowBorders,UseBROnCarriageReturn";
-		lConfigKeys = lConfigKeys & ",ToolbarStartExpanded,ToolbarCanCollapse,ToolbarSets,ContextMenu,FontColors,FontNames,FontSizes,FontFormats,StylesXmlPath,SpellChecker,IeSpellDownloadUrl,MaxUndoLevels";
-		lConfigKeys = lConfigKeys & ",LinkBrowser,LinkBrowserURL,LinkBrowserWindowWidth,LinkBrowserWindowHeight";
-		lConfigKeys = lConfigKeys & ",LinkUpload,LinkUploadURL,LinkUploadWindowWidth,LinkUploadWindowHeight,LinkUploadAllowedExtensions,LinkUploadDeniedExtensions";
-		lConfigKeys = lConfigKeys & ",ImageBrowser,ImageBrowserURL,ImageBrowserWindowWidth,ImageBrowserWindowHeight,SmileyPath,SmileyImages,SmileyColumns,SmileyWindowWidth,SmileyWindowHeight";
+		lConfigKeys = lConfigKeys & "DisableEnterKeyHandler,CustomConfigurationsPath,EditorAreaCSS,ToolbarComboPreviewCSS,DocType";
+		lConfigKeys = lConfigKeys & ",BaseHref,FullPage,Debug,AllowQueryStringDebug,SkinPath";
+		lConfigKeys = lConfigKeys & ",PreloadImages,PluginsPath,AutoDetectLanguage,DefaultLanguage,ContentLangDirection";
+		lConfigKeys = lConfigKeys & ",ProcessHTMLEntities,IncludeLatinEntities,IncludeGreekEntities,ProcessNumericEntities,AdditionalNumericEntities";
+		lConfigKeys = lConfigKeys & ",FillEmptyBlocks,FormatSource,FormatOutput,FormatIndentator,ForceStrongEm";
+		lConfigKeys = lConfigKeys & ",GeckoUseSPAN,StartupFocus,ForcePasteAsPlainText,AutoDetectPasteFromWord,ForceSimpleAmpersand";
+		lConfigKeys = lConfigKeys & ",TabSpaces,ShowBorders,SourcePopup,ToolbarStartExpanded,ToolbarCanCollapse";
+		lConfigKeys = lConfigKeys & ",IgnoreEmptyParagraphValue,PreserveSessionOnFileBrowser,FloatingPanelsZIndex,TemplateReplaceAll,TemplateReplaceCheckbox";
+		lConfigKeys = lConfigKeys & ",ToolbarLocation,ToolbarSets,EnterMode,ShiftEnterMode,Keystrokes";
+		lConfigKeys = lConfigKeys & ",ContextMenu,BrowserContextMenuOnCtrl,FontColors,FontNames,FontSizes";
+		lConfigKeys = lConfigKeys & ",FontFormats,StylesXmlPath,TemplatesXmlPath,SpellChecker,IeSpellDownloadUrl";
+		lConfigKeys = lConfigKeys & ",SpellerPagesServerScript,FirefoxSpellChecker,MaxUndoLevels,DisableObjectResizing,DisableFFTableHandles";
+		lConfigKeys = lConfigKeys & ",LinkDlgHideTarget	,LinkDlgHideAdvanced,ImageDlgHideLink	,ImageDlgHideAdvanced,FlashDlgHideAdvanced";
+		lConfigKeys = lConfigKeys & ",ProtectedTags,BodyId,BodyClass,DefaultLinkTarget,CleanWordKeepsStructure";
+		lConfigKeys = lConfigKeys & ",LinkBrowser,LinkBrowserURL,LinkBrowserWindowWidth,LinkBrowserWindowHeight,ImageBrowser";
+		lConfigKeys = lConfigKeys & ",ImageBrowserURL,ImageBrowserWindowWidth,ImageBrowserWindowHeight,FlashBrowser,FlashBrowserURL";
+		lConfigKeys = lConfigKeys & ",FlashBrowserWindowWidth ,FlashBrowserWindowHeight,LinkUpload,LinkUploadURL,LinkUploadWindowWidth";
+		lConfigKeys = lConfigKeys & ",LinkUploadWindowHeight,LinkUploadAllowedExtensions,LinkUploadDeniedExtensions,ImageUpload,ImageUploadURL";
+		lConfigKeys = lConfigKeys & ",ImageUploadAllowedExtensions,ImageUploadDeniedExtensions,FlashUpload,FlashUploadURL,FlashUploadAllowedExtensions";
+		lConfigKeys = lConfigKeys & ",FlashUploadDeniedExtensions,SmileyPath,SmileyImages,SmileyColumns,SmileyWindowWidth,SmileyWindowHeight";
 
 		sConfig = "";
Index: /FCKeditor/branches/versions/2.4.x/fckeditor.js
===================================================================
--- /FCKeditor/branches/versions/2.4.x/fckeditor.js	(revision 360)
+++ /FCKeditor/branches/versions/2.4.x/fckeditor.js	(revision 361)
@@ -206,5 +206,5 @@
 
 	// Opera
-	if ( enableOpera && navigator.appName == 'Opera' && parseInt( navigator.appVersion, 10 ) >= 9 )
+	if ( enableOpera && sAgent.indexOf( 'opera' ) == 0 && parseInt( navigator.appVersion, 10 ) >= 9 )
 			return true ;
 
