changeset 6113:a0ec7f89be84

upgrade FCKEditor to 2.6.11
author Thomas Waldmann <tw AT waldmann-edv DOT de>
date Tue, 20 Sep 2016 05:46:18 +0200
parents 4716268c34e3
children be908a22d44a
files MoinMoin/web/static/htdocs/applets/FCKeditor/_whatsnew.html MoinMoin/web/static/htdocs/applets/FCKeditor/_whatsnew_history.html MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/fckeditorapi.js MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_about.html MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/asp/class_upload.asp MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/asp/config.asp MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/asp/connector.asp MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/asp/upload.asp MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/aspx/config.ascx MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/cfm/cf5_connector.cfm MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/cfm/cf5_upload.cfm MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/cfm/cf_connector.cfm MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/cfm/cf_upload.cfm MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/cfm/config.cfm MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/lasso/config.lasso MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/basexml.pl MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/commands.pl MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/config.pl MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/connector.cgi MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/io.pl MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/upload.cgi MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/upload_fck.pl MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/util.pl MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/php/config.php MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/php/connector.php MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/php/upload.php MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/py/config.py MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/py/connector.py MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/py/upload.py MoinMoin/web/static/htdocs/applets/FCKeditor/editor/js/fckeditorcode_gecko.js MoinMoin/web/static/htdocs/applets/FCKeditor/editor/js/fckeditorcode_ie.js MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor.afp MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor.asp MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor.js MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor.lasso MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor.pl MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor.py MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor_php4.php MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor_php5.php MoinMoin/web/static/htdocs/applets/FCKeditor/fckutils.cfm
diffstat 42 files changed, 1566 insertions(+), 1465 deletions(-) [+]
line wrap: on
line diff
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/_whatsnew.html	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/_whatsnew.html	Tue Sep 20 05:46:18 2016 +0200
@@ -33,11 +33,14 @@
 	<h1>
 		FCKeditor ChangeLog - What's New?</h1>
 	<h3>
-		Version 2.6.8</h3>
+		Version 2.6.11</h3>
 	<p>
 		Fixed Bugs:</p>
 	<ul>
-		<li><strong>Security release, upgrade is highly recommended </strong>(fixed XSS issue).</li>
+		<li><strong>Security release, upgrade is highly recommended </strong>.<ul>
+			<li>XSS vulnerability in SpellerPages spell checker - reported by Robin Bailey (<a href="http://dionach.com/">Dionach Ltd</a>)</li>
+		</ul>
+		</li>
 	</ul>
 	<p>
 		<a href="_whatsnew_history.html">See previous versions history</a></p>
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/_whatsnew_history.html	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/_whatsnew_history.html	Tue Sep 20 05:46:18 2016 +0200
@@ -33,6 +33,36 @@
 	<h1>
 		FCKeditor ChangeLog - What's New?</h1>
 	<h3>
+		Version 2.6.10</h3>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>Minor security release:<ul>
+			<li>Values displayed in the "About" dialog window were not properly escaped - reported by David Sopas.</li>
+		</ul>
+		</li>
+		</li>
+	</ul>
+	<h3>
+		Version 2.6.9</h3>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li><strong>Security release, upgrade is highly recommended </strong>.<ul>
+			<li>(ASP) File Upload Protection Bypass - reported by Soroush Dalili (@irsdl), Mostafa Azizi</li>
+			<li>XSS vulnerability in built-in file manager - reported by Soroush Dalili (<a href="http://SecProject.com">SecProject.com</a>)</li>
+			</ul>
+		</li>
+		<li><a href="http://dev.ckeditor.com/ticket/9716">#9716</a> Fix FCKeditor browser detection to work with Firefox 17 and IE 10</li>
+	</ul>
+	<h3>
+		Version 2.6.8</h3>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li><strong>Security release, upgrade is highly recommended </strong>(fixed XSS issue).</li>
+	</ul>
+	<h3>
 		Version 2.6.7</h3>
 	<p>
 		Fixed Bugs:</p>
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/fckeditorapi.js	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/fckeditorapi.js	Tue Sep 20 05:46:18 2016 +0200
@@ -40,8 +40,8 @@
 		// objects that aren't really FCKeditor instances.
 		var sScript =
 			'window.FCKeditorAPI = {' +
-				'Version : "2.6.8",' +
-				'VersionBuild : "25427",' +
+				'Version : "2.6.11",' +
+				'VersionBuild : "25429",' +
 				'Instances : window.FCKeditorAPI && window.FCKeditorAPI.Instances || {},' +
 
 				'GetInstance : function( name )' +
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_about.html	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_about.html	Tue Sep 20 05:46:18 2016 +0200
@@ -1,4 +1,4 @@
-<!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
  * Copyright (C) 2003-2010 Frederico Caldeira Knabben
@@ -31,6 +31,7 @@
 
 var oEditor = window.parent.InnerDialogLoaded() ;
 var FCKLang	= oEditor.FCKLang ;
+var FCKTools = oEditor.FCKTools ;
 
 window.parent.AddTab( 'About', FCKLang.DlgAboutAboutTab ) ;
 window.parent.AddTab( 'License', FCKLang.DlgAboutLicenseTab ) ;
@@ -78,8 +79,8 @@
 								border-left: #000000 1px solid; border-bottom: #000000 1px solid">
 								<span fcklang="DlgAboutVersion">version</span>
 								<br />
-								<b>2.6.8</b><br />
-								Build 25427</td>
+								<b>2.6.11</b><br />
+								Build 25429</td>
 						</tr>
 					</table>
 				</td>
@@ -139,9 +140,9 @@
 				<td>
 					<script type="text/javascript">
 <!--
-document.write( '<b>User Agent<\/b><br />' + window.navigator.userAgent + '<br /><br />' ) ;
-document.write( '<b>Browser<\/b><br />' + window.navigator.appName + ' ' + window.navigator.appVersion + '<br /><br />' ) ;
-document.write( '<b>Platform<\/b><br />' + window.navigator.platform + '<br /><br />' ) ;
+document.write( '<b>User Agent<\/b><br />' + FCKTools.HTMLEncode( window.navigator.userAgent ) + '<br /><br />' ) ;
+document.write( '<b>Browser<\/b><br />' + FCKTools.HTMLEncode( window.navigator.appName ) + ' ' + FCKTools.HTMLEncode( window.navigator.appVersion ) + '<br /><br />' ) ;
+document.write( '<b>Platform<\/b><br />' + FCKTools.HTMLEncode( window.navigator.platform ) + '<br /><br />' ) ;
 
 var sUserLang = '?' ;
 
@@ -150,7 +151,7 @@
 else if ( window.navigator.userLanguage )
 	sUserLang = window.navigator.userLanguage ;
 
-document.write( '<b>Language<\/b><br />' + sUserLang ) ;
+document.write( '<b>Language<\/b><br />' + FCKTools.HTMLEncode( sUserLang ) ) ;
 //-->
 					</script>
 				</td>
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm	Tue Sep 20 05:46:18 2016 +0200
@@ -18,7 +18,11 @@
 <cfset spellercss   = "../spellerStyle.css">
 <cfset word_win_src = "../wordWindow.js">
 
-<cfset form.checktext = form["textinputs[]"]>
+<cfif StructKeyExists(form, 'textinputs[]')>
+	<cfset form.checktext = form["textinputs[]"]>
+<cfelse>
+	<cfabort>
+</cfif>
 
 <!--- make no difference between URL and FORM scopes --->
 <cfparam name="url.checktext"  default="">
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php	Tue Sep 20 05:46:18 2016 +0200
@@ -13,7 +13,10 @@
 
 $spellercss		= '../spellerStyle.css';						// by FredCK
 $word_win_src	= '../wordWindow.js';							// by FredCK
-
+# ignore invalid data
+if (empty($_POST['textinputs']) || !is_array($_POST['textinputs'])) {
+  die();
+}
 $textinputs		= $_POST['textinputs']; # array
 $input_separator = "A";
 
@@ -22,9 +25,11 @@
 # value of the text control submitted for spell-checking
 function print_textinputs_var() {
 	global $textinputs;
-	foreach( $textinputs as $key=>$val ) {
+	for( $i = 0; $i < count( $textinputs ); $i++ ) {
+		if (!isset($textinputs[$i]))
+			break;
 		# $val = str_replace( "'", "%27", $val );
-		echo "textinputs[$key] = decodeURIComponent(\"" . htmlspecialchars($val, ENT_QUOTES) . "\");\n";
+		echo "textinputs[$i] = decodeURIComponent(\"" . htmlspecialchars($textinputs[$i], ENT_QUOTES) . "\");\n";
 	}
 }
 
@@ -81,6 +86,9 @@
 	# open temp file, add the submitted text.
 	if( $fh = fopen( $tempfile, 'w' )) {
 		for( $i = 0; $i < count( $textinputs ); $i++ ) {
+			# ignore invalid data
+			if (!isset($textinputs[$i]))
+				break;
 			$text = urldecode( $textinputs[$i] );
 
 			// Strip all tags for the text. (by FredCK - #339 / #681)
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/asp/class_upload.asp	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/asp/class_upload.asp	Tue Sep 20 05:46:18 2016 +0200
@@ -280,10 +280,10 @@
 		oRE.Global		= True
 
 		If sDenied = "" Then
-			oRE.Pattern	= sAllowed
+			oRE.Pattern	= "^(" & sAllowed & ")$"
 			IsAllowed	= (sAllowed = "") Or oRE.Test(sExt)
 		Else
-			oRE.Pattern	= sDenied
+			oRE.Pattern	= "^(" & sDenied & ")$"
 			IsAllowed	= Not oRE.Test(sExt)
 		End If
 
@@ -299,7 +299,7 @@
 		Set oRE = New RegExp
 		oRE.IgnoreCase	= True
 		oRE.Global		= True
-		oRE.Pattern		= sHtmlExtensions
+		oRE.Pattern		= "^(" & sHtmlExtensions & ")$"
 
 		IsHtmlExtension = oRE.Test(sExt)
 
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/asp/config.asp	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/asp/config.asp	Tue Sep 20 05:46:18 2016 +0200
@@ -88,6 +88,8 @@
 '		Attention: The above 'QuickUploadPath' must point to the same directory.
 '		Attention: It must end with a slash: '/'
 '
+'	WARNING: It is recommended to remove swf extension from the list of allowed extensions.
+'	SWF files can be used to perform XSS attack.
 
 Dim ConfigAllowedExtensions, ConfigDeniedExtensions, ConfigFileTypesPath, ConfigFileTypesAbsolutePath, ConfigQuickUploadPath, ConfigQuickUploadAbsolutePath
 Set ConfigAllowedExtensions	= CreateObject( "Scripting.Dictionary" )
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/asp/connector.asp	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/asp/connector.asp	Tue Sep 20 05:46:18 2016 +0200
@@ -52,7 +52,7 @@
 
 	' Check if it is an allowed command
 	if ( Not IsAllowedCommand( sCommand ) ) then
-		SendError 1, "The """ & sCommand & """ command isn't allowed"
+		SendError 1, "The requested command isn't allowed"
 	end if
 
 	' Check if it is an allowed resource type.
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/asp/upload.asp	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/asp/upload.asp	Tue Sep 20 05:46:18 2016 +0200
@@ -52,12 +52,12 @@
 
 	' Is Upload enabled?
 	if ( Not IsAllowedCommand( sCommand ) ) then
-		SendUploadResults "1", "", "", "The """ & sCommand & """ command isn't allowed"
+		SendUploadResults "1", "", "", "The requested command isn't allowed"
 	end if
 
 	' Check if it is an allowed resource type.
 	if ( Not IsAllowedType( sResourceType ) ) Then
-		SendUploadResults "1", "", "", "The " & sResourceType & " resource type isn't allowed"
+		SendUploadResults "1", "", "", "The requested resource type isn't allowed"
 	end if
 
 	FileUpload sResourceType, sCurrentFolder, sCommand
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/aspx/config.ascx	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/aspx/config.ascx	Tue Sep 20 05:46:18 2016 +0200
@@ -66,6 +66,9 @@
 		// following extensions only.
 		HtmlExtensions = new string[] { "html", "htm", "xml", "xsd", "txt", "js" };
 
+		// WARNING: It is recommended to remove swf extension from the list of allowed extensions.
+		// SWF files can be used to perform XSS attack.
+
 		TypeConfig[ "File" ].AllowedExtensions			= new string[] { "7z", "aiff", "asf", "avi", "bmp", "csv", "doc", "fla", "flv", "gif", "gz", "gzip", "jpeg", "jpg", "mid", "mov", "mp3", "mp4", "mpc", "mpeg", "mpg", "ods", "odt", "pdf", "png", "ppt", "pxd", "qt", "ram", "rar", "rm", "rmi", "rmvb", "rtf", "sdc", "sitd", "swf", "sxc", "sxw", "tar", "tgz", "tif", "tiff", "txt", "vsd", "wav", "wma", "wmv", "xls", "xml", "zip" };
 		TypeConfig[ "File" ].DeniedExtensions			= new string[] { };
 		TypeConfig[ "File" ].FilesPath					= "%UserFilesPath%file/";
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/cfm/cf5_connector.cfm	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/cfm/cf5_connector.cfm	Tue Sep 20 05:46:18 2016 +0200
@@ -1,4 +1,4 @@
-<cfsetting enablecfoutputonly="yes" showdebugoutput="no">
+<cfsetting enablecfoutputonly="yes" showdebugoutput="no">
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
  * Copyright (C) 2003-2010 Frederico Caldeira Knabben
@@ -124,7 +124,7 @@
 <cfelseif isDefined("Config.ConfigAllowedCommands") and not ListFind(Config.ConfigAllowedCommands, url.command)>
 
 	<cfset invalidName = true>
-	<cfset xmlContent = '<Error number="1" text="The &quot;' & HTMLEditFormat(url.command) & '&quot; command isn''t allowed" />'>
+	<cfset xmlContent = '<Error number="1" text="The requested command isn''t allowed" />'>
 
 <cfelseif isDefined("Config.ConfigAllowedTypes") and not ListFind(Config.ConfigAllowedTypes, url.type)>
 
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/cfm/cf5_upload.cfm	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/cfm/cf5_upload.cfm	Tue Sep 20 05:46:18 2016 +0200
@@ -76,12 +76,12 @@
 </cfif>
 
 <cfif isDefined("Config.ConfigAllowedCommands") and not ListFind(Config.ConfigAllowedCommands, url.command)>
-	<cfset SendUploadResults(1, "", "", "The """ & url.command & """ command isn't allowed")>
+	<cfset SendUploadResults(1, "", "", "The requested command isn't allowed")>
 	<cfabort>
 </cfif>
 
 <cfif isDefined("Config.ConfigAllowedTypes") and not ListFind(Config.ConfigAllowedTypes, url.type)>
-	<cfset SendUploadResults(1, "", "", "The """ & url.type &  """ type isn't allowed")>
+	<cfset SendUploadResults(1, "", "", "The requested type isn't allowed")>
 	<cfabort>
 </cfif>
 
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/cfm/cf_connector.cfm	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/cfm/cf_connector.cfm	Tue Sep 20 05:46:18 2016 +0200
@@ -1,4 +1,4 @@
-<cfsetting enablecfoutputonly="yes" showdebugoutput="no">
+<cfsetting enablecfoutputonly="yes" showdebugoutput="no">
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
  * Copyright (C) 2003-2010 Frederico Caldeira Knabben
@@ -58,7 +58,7 @@
 
 	<!--- Check if it is an allowed command --->
 	<cfif not IsAllowedCommand( sCommand ) >
-		<cfset SendError( 1, "The """ & sCommand & """ command isn't allowed" ) >
+		<cfset SendError( 1, "The requested command isn't allowed" ) >
 	</cfif>
 
 	<!--- Check if it is an allowed type. --->
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/cfm/cf_upload.cfm	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/cfm/cf_upload.cfm	Tue Sep 20 05:46:18 2016 +0200
@@ -1,4 +1,4 @@
-<cfsetting enablecfoutputonly="yes" showdebugoutput="no">
+<cfsetting enablecfoutputonly="yes" showdebugoutput="no">
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
  * Copyright (C) 2003-2010 Frederico Caldeira Knabben
@@ -60,7 +60,7 @@
 
 <!--- Is enabled the upload? --->
 <cfif not IsAllowedCommand( sCommand )>
-	<cfset SendUploadResults( "1", "", "", "The """ & sCommand & """ command isn't allowed" )>
+	<cfset SendUploadResults( "1", "", "", "The requested command isn't allowed" )>
 </cfif>
 
 <!--- Check if it is an allowed type. --->
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/cfm/config.cfm	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/cfm/config.cfm	Tue Sep 20 05:46:18 2016 +0200
@@ -112,6 +112,9 @@
 //		Examples: 'C:\\MySite\\userfiles\\' or '/root/mysite/userfiles/'.
 //		Attention: The above 'QuickUploadPath' must point to the same directory.
 //		Attention: It must end with a slash: '/'
+// 
+// WARNING: It is recommended to remove swf extension from the list of allowed extensions.
+// SWF files can be used to perform XSS attack.
 
 	Config.AllowedExtensions 				= StructNew() ;
 	Config.DeniedExtensions 				= StructNew() ;
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/lasso/config.lasso	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/lasso/config.lasso	Tue Sep 20 05:46:18 2016 +0200
@@ -39,6 +39,9 @@
     to server root).
 
     Set which file extensions are allowed and/or denied for each file type.
+
+    WARNING: It is recommended to remove swf extension from the list of allowed extensions.
+    SWF files can be used to perform XSS attack.
     */
 	var('config') = map(
 		'Enabled' = false,
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/basexml.pl	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/basexml.pl	Tue Sep 20 05:46:18 2016 +0200
@@ -1,68 +1,68 @@
-#####
-#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2010 Frederico Caldeira Knabben
-#
-#  == BEGIN LICENSE ==
-#
-#  Licensed under the terms of any of the following licenses at your
-#  choice:
-#
-#   - GNU General Public License Version 2 or later (the "GPL")
-#     http://www.gnu.org/licenses/gpl.html
-#
-#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
-#     http://www.gnu.org/licenses/lgpl.html
-#
-#   - Mozilla Public License Version 1.1 or later (the "MPL")
-#     http://www.mozilla.org/MPL/MPL-1.1.html
-#
-#  == END LICENSE ==
-#
-#  This is the File Manager Connector for Perl.
-#####
-
-sub CreateXmlHeader
-{
-	local($command,$resourceType,$currentFolder) = @_;
-
-	# Create the XML document header.
-	print '<?xml version="1.0" encoding="utf-8" ?>';
-
-	# Create the main "Connector" node.
-	print '<Connector command="' . $command . '" resourceType="' . $resourceType . '">';
-
-	# Add the current folder node.
-	print '<CurrentFolder path="' . ConvertToXmlAttribute($currentFolder) . '" url="' . ConvertToXmlAttribute(GetUrlFromPath($resourceType,$currentFolder)) . '" />';
-}
-
-sub CreateXmlFooter
-{
-	print '</Connector>';
-}
-
-sub SendError
-{
-	local( $number, $text ) = @_;
-
-	print << "_HTML_HEAD_";
-Content-Type:text/xml; charset=utf-8
-Pragma: no-cache
-Cache-Control: no-cache
-Expires: Thu, 01 Dec 1994 16:00:00 GMT
-
-_HTML_HEAD_
-
-	# Create the XML document header
-	print '<?xml version="1.0" encoding="utf-8" ?>' ;
-
-	if ($text) {
-		print '<Connector><Error number="' . $number . '" text="' . &specialchar_cnv( $text ) . '" /></Connector>' ;
-	}
-	else {
-		print '<Connector><Error number="' . $number . '" /></Connector>' ;
-	}
-
-	exit ;
-}
-
-1;
+#####
+#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
+#  Copyright (C) 2003-2010 Frederico Caldeira Knabben
+#
+#  == BEGIN LICENSE ==
+#
+#  Licensed under the terms of any of the following licenses at your
+#  choice:
+#
+#   - GNU General Public License Version 2 or later (the "GPL")
+#     http://www.gnu.org/licenses/gpl.html
+#
+#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+#     http://www.gnu.org/licenses/lgpl.html
+#
+#   - Mozilla Public License Version 1.1 or later (the "MPL")
+#     http://www.mozilla.org/MPL/MPL-1.1.html
+#
+#  == END LICENSE ==
+#
+#  This is the File Manager Connector for Perl.
+#####
+
+sub CreateXmlHeader
+{
+	local($command,$resourceType,$currentFolder) = @_;
+
+	# Create the XML document header.
+	print '<?xml version="1.0" encoding="utf-8" ?>';
+
+	# Create the main "Connector" node.
+	print '<Connector command="' . $command . '" resourceType="' . $resourceType . '">';
+
+	# Add the current folder node.
+	print '<CurrentFolder path="' . ConvertToXmlAttribute($currentFolder) . '" url="' . ConvertToXmlAttribute(GetUrlFromPath($resourceType,$currentFolder)) . '" />';
+}
+
+sub CreateXmlFooter
+{
+	print '</Connector>';
+}
+
+sub SendError
+{
+	local( $number, $text ) = @_;
+
+	print << "_HTML_HEAD_";
+Content-Type:text/xml; charset=utf-8
+Pragma: no-cache
+Cache-Control: no-cache
+Expires: Thu, 01 Dec 1994 16:00:00 GMT
+
+_HTML_HEAD_
+
+	# Create the XML document header
+	print '<?xml version="1.0" encoding="utf-8" ?>' ;
+
+	if ($text) {
+		print '<Connector><Error number="' . $number . '" text="' . &specialchar_cnv( $text ) . '" /></Connector>' ;
+	}
+	else {
+		print '<Connector><Error number="' . $number . '" /></Connector>' ;
+	}
+
+	exit ;
+}
+
+1;
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/commands.pl	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/commands.pl	Tue Sep 20 05:46:18 2016 +0200
@@ -1,200 +1,200 @@
-#####
-#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2010 Frederico Caldeira Knabben
-#
-#  == BEGIN LICENSE ==
-#
-#  Licensed under the terms of any of the following licenses at your
-#  choice:
-#
-#   - GNU General Public License Version 2 or later (the "GPL")
-#     http://www.gnu.org/licenses/gpl.html
-#
-#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
-#     http://www.gnu.org/licenses/lgpl.html
-#
-#   - Mozilla Public License Version 1.1 or later (the "MPL")
-#     http://www.mozilla.org/MPL/MPL-1.1.html
-#
-#  == END LICENSE ==
-#
-#  This is the File Manager Connector for Perl.
-#####
-
-sub GetFolders
-{
-
-	local($resourceType, $currentFolder) = @_;
-
-	# Map the virtual path to the local server path.
-	$sServerDir = &ServerMapFolder($resourceType, $currentFolder);
-	print "<Folders>";			# Open the "Folders" node.
-
-	opendir(DIR,"$sServerDir");
-	@files = grep(!/^\.\.?$/,readdir(DIR));
-	closedir(DIR);
-
-	foreach $sFile (@files) {
-		if($sFile != '.' && $sFile != '..' && (-d "$sServerDir$sFile")) {
-			$cnv_filename = &ConvertToXmlAttribute($sFile);
-			print '<Folder name="' . $cnv_filename . '" />';
-		}
-	}
-	print "</Folders>";			# Close the "Folders" node.
-}
-
-sub GetFoldersAndFiles
-{
-
-	local($resourceType, $currentFolder) = @_;
-	# Map the virtual path to the local server path.
-	$sServerDir = &ServerMapFolder($resourceType,$currentFolder);
-
-	# Initialize the output buffers for "Folders" and "Files".
-	$sFolders	= '<Folders>';
-	$sFiles		= '<Files>';
-
-	opendir(DIR,"$sServerDir");
-	@files = grep(!/^\.\.?$/,readdir(DIR));
-	closedir(DIR);
-
-	foreach $sFile (@files) {
-		if($sFile ne '.' && $sFile ne '..') {
-			if(-d "$sServerDir$sFile") {
-				$cnv_filename = &ConvertToXmlAttribute($sFile);
-				$sFolders .= '<Folder name="' . $cnv_filename . '" />' ;
-			} else {
-				($iFileSize,$refdate,$filedate,$fileperm) = (stat("$sServerDir$sFile"))[7,8,9,2];
-				if($iFileSize > 0) {
-					$iFileSize = int($iFileSize / 1024);
-					if($iFileSize < 1) {
-						$iFileSize = 1;
-					}
-				}
-				$cnv_filename = &ConvertToXmlAttribute($sFile);
-				$sFiles	.= '<File name="' . $cnv_filename . '" size="' . $iFileSize . '" />' ;
-			}
-		}
-	}
-	print $sFolders ;
-	print '</Folders>';			# Close the "Folders" node.
-	print $sFiles ;
-	print '</Files>';			# Close the "Files" node.
-}
-
-sub CreateFolder
-{
-
-	local($resourceType, $currentFolder) = @_;
-	$sErrorNumber	= '0' ;
-	$sErrorMsg		= '' ;
-
-	if($FORM{'NewFolderName'} ne "") {
-		$sNewFolderName = $FORM{'NewFolderName'};
-		$sNewFolderName =~ s/\.|\\|\/|\||\:|\;|\?|\*|\"|<|>|[[:cntrl:]]/_/g;
-		# Map the virtual path to the local server path of the current folder.
-		$sServerDir = &ServerMapFolder($resourceType, $currentFolder);
-		if(-w $sServerDir) {
-			$sServerDir .= $sNewFolderName;
-			$sErrorMsg = &CreateServerFolder($sServerDir);
-			if($sErrorMsg == 0) {
-				$sErrorNumber = '0';
-			} elsif($sErrorMsg eq 'Invalid argument' || $sErrorMsg eq 'No such file or directory') {
-				$sErrorNumber = '102';		#// Path too long.
-			} else {
-				$sErrorNumber = '110';
-			}
-		} else {
-			$sErrorNumber = '103';
-		}
-	} else {
-		$sErrorNumber = '102' ;
-	}
-	# Create the "Error" node.
-	$cnv_errmsg = &ConvertToXmlAttribute($sErrorMsg);
-	print '<Error number="' . $sErrorNumber . '" />';
-}
-
-sub FileUpload
-{
-eval("use File::Copy;");
-
-	local($resourceType, $currentFolder) = @_;
-	$allowedExtensions = $allowedExtensions{$resourceType};
-
-	$sErrorNumber = '0' ;
-	$sFileName = '' ;
-	if($new_fname) {
-		# Map the virtual path to the local server path.
-		$sServerDir = &ServerMapFolder($resourceType,$currentFolder);
-
-		# Get the uploaded file name.
-		$sFileName = $new_fname;
-		$sFileName =~ s/\\|\/|\||\:|\;|\?|\*|\"|<|>|[[:cntrl:]]/_/g;
-		$sFileName =~ s/\.(?![^.]*$)/_/g;
-
-		$ext = '';
-		if($sFileName =~ /([^\\\/]*)\.(.*)$/) {
-			$ext  = $2;
-		}
-
-		$allowedRegex = qr/^($allowedExtensions)$/i;
-		if (!($ext =~ $allowedRegex)) {
-			SendUploadResults('202', '', '', '');
-		}
-
-		$sOriginalFileName = $sFileName;
-
-		$iCounter = 0;
-		while(1) {
-			$sFilePath = $sServerDir . $sFileName;
-			if(-e $sFilePath) {
-				$iCounter++ ;
-				($path,$BaseName,$ext) = &RemoveExtension($sOriginalFileName);
-				$sFileName = $BaseName . '(' . $iCounter . ').' . $ext;
-				$sErrorNumber = '201';
-			} else {
-				copy("$img_dir/$new_fname","$sFilePath");
-				if (defined $CHMOD_ON_UPLOAD) {
-					if ($CHMOD_ON_UPLOAD) {
-						umask(000);
-						chmod($CHMOD_ON_UPLOAD,$sFilePath);
-					}
-				}
-				else {
-					umask(000);
-					chmod(0777,$sFilePath);
-				}
-				unlink("$img_dir/$new_fname");
-				last;
-			}
-		}
-	} else {
-		$sErrorNumber = '202' ;
-	}
-	$sFileName	=~ s/"/\\"/g;
-
-	SendUploadResults($sErrorNumber, $GLOBALS{'UserFilesPath'}.$resourceType.$currentFolder.$sFileName, $sFileName, '');
-}
-
-sub SendUploadResults
-{
-
-	local($sErrorNumber, $sFileUrl, $sFileName, $customMsg) = @_;
-
-	# Minified version of the document.domain automatic fix script (#1919).
-	# The original script can be found at _dev/domain_fix_template.js
-	# Note: in Perl replace \ with \\ and $ with \$
-	print <<EOF;
-Content-type: text/html
-
-<script type="text/javascript">
-(function(){var d=document.domain;while (true){try{var A=window.parent.document.domain;break;}catch(e) {};d=d.replace(/.*?(?:\\.|\$)/,'');if (d.length==0) break;try{document.domain=d;}catch (e){break;}}})();
-
-EOF
-	print 'window.parent.OnUploadCompleted(' . $sErrorNumber . ',"' . JS_cnv($sFileUrl) . '","' . JS_cnv($sFileName) . '","' . JS_cnv($customMsg) . '") ;';
-	print '</script>';
-	exit ;
-}
-
-1;
+#####
+#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
+#  Copyright (C) 2003-2010 Frederico Caldeira Knabben
+#
+#  == BEGIN LICENSE ==
+#
+#  Licensed under the terms of any of the following licenses at your
+#  choice:
+#
+#   - GNU General Public License Version 2 or later (the "GPL")
+#     http://www.gnu.org/licenses/gpl.html
+#
+#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+#     http://www.gnu.org/licenses/lgpl.html
+#
+#   - Mozilla Public License Version 1.1 or later (the "MPL")
+#     http://www.mozilla.org/MPL/MPL-1.1.html
+#
+#  == END LICENSE ==
+#
+#  This is the File Manager Connector for Perl.
+#####
+
+sub GetFolders
+{
+
+	local($resourceType, $currentFolder) = @_;
+
+	# Map the virtual path to the local server path.
+	$sServerDir = &ServerMapFolder($resourceType, $currentFolder);
+	print "<Folders>";			# Open the "Folders" node.
+
+	opendir(DIR,"$sServerDir");
+	@files = grep(!/^\.\.?$/,readdir(DIR));
+	closedir(DIR);
+
+	foreach $sFile (@files) {
+		if($sFile != '.' && $sFile != '..' && (-d "$sServerDir$sFile")) {
+			$cnv_filename = &ConvertToXmlAttribute($sFile);
+			print '<Folder name="' . $cnv_filename . '" />';
+		}
+	}
+	print "</Folders>";			# Close the "Folders" node.
+}
+
+sub GetFoldersAndFiles
+{
+
+	local($resourceType, $currentFolder) = @_;
+	# Map the virtual path to the local server path.
+	$sServerDir = &ServerMapFolder($resourceType,$currentFolder);
+
+	# Initialize the output buffers for "Folders" and "Files".
+	$sFolders	= '<Folders>';
+	$sFiles		= '<Files>';
+
+	opendir(DIR,"$sServerDir");
+	@files = grep(!/^\.\.?$/,readdir(DIR));
+	closedir(DIR);
+
+	foreach $sFile (@files) {
+		if($sFile ne '.' && $sFile ne '..') {
+			if(-d "$sServerDir$sFile") {
+				$cnv_filename = &ConvertToXmlAttribute($sFile);
+				$sFolders .= '<Folder name="' . $cnv_filename . '" />' ;
+			} else {
+				($iFileSize,$refdate,$filedate,$fileperm) = (stat("$sServerDir$sFile"))[7,8,9,2];
+				if($iFileSize > 0) {
+					$iFileSize = int($iFileSize / 1024);
+					if($iFileSize < 1) {
+						$iFileSize = 1;
+					}
+				}
+				$cnv_filename = &ConvertToXmlAttribute($sFile);
+				$sFiles	.= '<File name="' . $cnv_filename . '" size="' . $iFileSize . '" />' ;
+			}
+		}
+	}
+	print $sFolders ;
+	print '</Folders>';			# Close the "Folders" node.
+	print $sFiles ;
+	print '</Files>';			# Close the "Files" node.
+}
+
+sub CreateFolder
+{
+
+	local($resourceType, $currentFolder) = @_;
+	$sErrorNumber	= '0' ;
+	$sErrorMsg		= '' ;
+
+	if($FORM{'NewFolderName'} ne "") {
+		$sNewFolderName = $FORM{'NewFolderName'};
+		$sNewFolderName =~ s/\.|\\|\/|\||\:|\;|\?|\*|\"|<|>|[[:cntrl:]]/_/g;
+		# Map the virtual path to the local server path of the current folder.
+		$sServerDir = &ServerMapFolder($resourceType, $currentFolder);
+		if(-w $sServerDir) {
+			$sServerDir .= $sNewFolderName;
+			$sErrorMsg = &CreateServerFolder($sServerDir);
+			if($sErrorMsg == 0) {
+				$sErrorNumber = '0';
+			} elsif($sErrorMsg eq 'Invalid argument' || $sErrorMsg eq 'No such file or directory') {
+				$sErrorNumber = '102';		#// Path too long.
+			} else {
+				$sErrorNumber = '110';
+			}
+		} else {
+			$sErrorNumber = '103';
+		}
+	} else {
+		$sErrorNumber = '102' ;
+	}
+	# Create the "Error" node.
+	$cnv_errmsg = &ConvertToXmlAttribute($sErrorMsg);
+	print '<Error number="' . $sErrorNumber . '" />';
+}
+
+sub FileUpload
+{
+eval("use File::Copy;");
+
+	local($resourceType, $currentFolder) = @_;
+	$allowedExtensions = $allowedExtensions{$resourceType};
+
+	$sErrorNumber = '0' ;
+	$sFileName = '' ;
+	if($new_fname) {
+		# Map the virtual path to the local server path.
+		$sServerDir = &ServerMapFolder($resourceType,$currentFolder);
+
+		# Get the uploaded file name.
+		$sFileName = $new_fname;
+		$sFileName =~ s/\\|\/|\||\:|\;|\?|\*|\"|<|>|[[:cntrl:]]/_/g;
+		$sFileName =~ s/\.(?![^.]*$)/_/g;
+
+		$ext = '';
+		if($sFileName =~ /([^\\\/]*)\.(.*)$/) {
+			$ext  = $2;
+		}
+
+		$allowedRegex = qr/^($allowedExtensions)$/i;
+		if (!($ext =~ $allowedRegex)) {
+			SendUploadResults('202', '', '', '');
+		}
+
+		$sOriginalFileName = $sFileName;
+
+		$iCounter = 0;
+		while(1) {
+			$sFilePath = $sServerDir . $sFileName;
+			if(-e $sFilePath) {
+				$iCounter++ ;
+				($path,$BaseName,$ext) = &RemoveExtension($sOriginalFileName);
+				$sFileName = $BaseName . '(' . $iCounter . ').' . $ext;
+				$sErrorNumber = '201';
+			} else {
+				copy("$img_dir/$new_fname","$sFilePath");
+				if (defined $CHMOD_ON_UPLOAD) {
+					if ($CHMOD_ON_UPLOAD) {
+						umask(000);
+						chmod($CHMOD_ON_UPLOAD,$sFilePath);
+					}
+				}
+				else {
+					umask(000);
+					chmod(0777,$sFilePath);
+				}
+				unlink("$img_dir/$new_fname");
+				last;
+			}
+		}
+	} else {
+		$sErrorNumber = '202' ;
+	}
+	$sFileName	=~ s/"/\\"/g;
+
+	SendUploadResults($sErrorNumber, $GLOBALS{'UserFilesPath'}.$resourceType.$currentFolder.$sFileName, $sFileName, '');
+}
+
+sub SendUploadResults
+{
+
+	local($sErrorNumber, $sFileUrl, $sFileName, $customMsg) = @_;
+
+	# Minified version of the document.domain automatic fix script (#1919).
+	# The original script can be found at _dev/domain_fix_template.js
+	# Note: in Perl replace \ with \\ and $ with \$
+	print <<EOF;
+Content-type: text/html
+
+<script type="text/javascript">
+(function(){var d=document.domain;while (true){try{var A=window.parent.document.domain;break;}catch(e) {};d=d.replace(/.*?(?:\\.|\$)/,'');if (d.length==0) break;try{document.domain=d;}catch (e){break;}}})();
+
+EOF
+	print 'window.parent.OnUploadCompleted(' . $sErrorNumber . ',"' . JS_cnv($sFileUrl) . '","' . JS_cnv($sFileName) . '","' . JS_cnv($customMsg) . '") ;';
+	print '</script>';
+	exit ;
+}
+
+1;
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/config.pl	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/config.pl	Tue Sep 20 05:46:18 2016 +0200
@@ -1,39 +1,42 @@
-#####
-#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2010 Frederico Caldeira Knabben
-#
-#  == BEGIN LICENSE ==
-#
-#  Licensed under the terms of any of the following licenses at your
-#  choice:
-#
-#   - GNU General Public License Version 2 or later (the "GPL")
-#     http://www.gnu.org/licenses/gpl.html
-#
-#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
-#     http://www.gnu.org/licenses/lgpl.html
-#
-#   - Mozilla Public License Version 1.1 or later (the "MPL")
-#     http://www.mozilla.org/MPL/MPL-1.1.html
-#
-#  == END LICENSE ==
-#
-#  This is the File Manager Connector for Perl.
-#####
-
-##
-# SECURITY: REMOVE/COMMENT THE FOLLOWING LINE TO ENABLE THIS CONNECTOR.
-##
-&SendError( 1, 'This connector is disabled. Please check the "editor/filemanager/connectors/perl/config.cgi" file' ) ;
-
-$GLOBALS{'UserFilesPath'} = '/userfiles/';
-
-# Map the "UserFiles" path to a local directory.
-$rootpath = &GetRootPath();
-$GLOBALS{'UserFilesDirectory'} = $rootpath . $GLOBALS{'UserFilesPath'};
-
-%allowedExtensions =  ("File", "7z|aiff|asf|avi|bmp|csv|doc|fla|flv|gif|gz|gzip|jpeg|jpg|mid|mov|mp3|mp4|mpc|mpeg|mpg|ods|odt|pdf|png|ppt|pxd|qt|ram|rar|rm|rmi|rmvb|rtf|sdc|sitd|swf|sxc|sxw|tar|tgz|tif|tiff|txt|vsd|wav|wma|wmv|xls|xml|zip",
-"Image", "bmp|gif|jpeg|jpg|png",
-"Flash", "swf|flv",
-"Media", "aiff|asf|avi|bmp|fla|flv|gif|jpeg|jpg|mid|mov|mp3|mp4|mpc|mpeg|mpg|png|qt|ram|rm|rmi|rmvb|swf|tif|tiff|wav|wma|wmv"
-);
+#####
+#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
+#  Copyright (C) 2003-2010 Frederico Caldeira Knabben
+#
+#  == BEGIN LICENSE ==
+#
+#  Licensed under the terms of any of the following licenses at your
+#  choice:
+#
+#   - GNU General Public License Version 2 or later (the "GPL")
+#     http://www.gnu.org/licenses/gpl.html
+#
+#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+#     http://www.gnu.org/licenses/lgpl.html
+#
+#   - Mozilla Public License Version 1.1 or later (the "MPL")
+#     http://www.mozilla.org/MPL/MPL-1.1.html
+#
+#  == END LICENSE ==
+#
+#  This is the File Manager Connector for Perl.
+#####
+
+##
+# SECURITY: REMOVE/COMMENT THE FOLLOWING LINE TO ENABLE THIS CONNECTOR.
+##
+&SendError( 1, 'This connector is disabled. Please check the "editor/filemanager/connectors/perl/config.cgi" file' ) ;
+
+$GLOBALS{'UserFilesPath'} = '/userfiles/';
+
+# Map the "UserFiles" path to a local directory.
+$rootpath = &GetRootPath();
+$GLOBALS{'UserFilesDirectory'} = $rootpath . $GLOBALS{'UserFilesPath'};
+
+# WARNING: It is recommended to remove swf extension from the list of allowed extensions.
+# SWF files can be used to perform XSS attack.
+
+%allowedExtensions =  ("File", "7z|aiff|asf|avi|bmp|csv|doc|fla|flv|gif|gz|gzip|jpeg|jpg|mid|mov|mp3|mp4|mpc|mpeg|mpg|ods|odt|pdf|png|ppt|pxd|qt|ram|rar|rm|rmi|rmvb|rtf|sdc|sitd|swf|sxc|sxw|tar|tgz|tif|tiff|txt|vsd|wav|wma|wmv|xls|xml|zip",
+"Image", "bmp|gif|jpeg|jpg|png",
+"Flash", "swf|flv",
+"Media", "aiff|asf|avi|bmp|fla|flv|gif|jpeg|jpg|mid|mov|mp3|mp4|mpc|mpeg|mpg|png|qt|ram|rm|rmi|rmvb|swf|tif|tiff|wav|wma|wmv"
+);
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/connector.cgi	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/connector.cgi	Tue Sep 20 05:46:18 2016 +0200
@@ -1,129 +1,129 @@
-#!/usr/bin/env perl
-
-#####
-#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2010 Frederico Caldeira Knabben
-#
-#  == BEGIN LICENSE ==
-#
-#  Licensed under the terms of any of the following licenses at your
-#  choice:
-#
-#   - GNU General Public License Version 2 or later (the "GPL")
-#     http://www.gnu.org/licenses/gpl.html
-#
-#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
-#     http://www.gnu.org/licenses/lgpl.html
-#
-#   - Mozilla Public License Version 1.1 or later (the "MPL")
-#     http://www.mozilla.org/MPL/MPL-1.1.html
-#
-#  == END LICENSE ==
-#
-#  This is the File Manager Connector for Perl.
-#####
-
-##
-# ATTENTION: To enable this connector, look for the "SECURITY" comment in config.pl.
-##
-
-## START: Hack for Windows (Not important to understand the editor code... Perl specific).
-if(Windows_check()) {
-	chdir(GetScriptPath($0));
-}
-
-sub Windows_check
-{
-	# IIS,PWS(NT/95)
-	$www_server_os = $^O;
-	# Win98 & NT(SP4)
-	if($www_server_os eq "") { $www_server_os= $ENV{'OS'}; }
-	# AnHTTPd/Omni/IIS
-	if($ENV{'SERVER_SOFTWARE'} =~ /AnWeb|Omni|IIS\//i) { $www_server_os= 'win'; }
-	# Win Apache
-	if($ENV{'WINDIR'} ne "") { $www_server_os= 'win'; }
-	if($www_server_os=~ /win/i) { return(1); }
-	return(0);
-}
-
-sub GetScriptPath {
-	local($path) = @_;
-	if($path =~ /[\:\/\\]/) { $path =~ s/(.*?)[\/\\][^\/\\]+$/$1/; } else { $path = '.'; }
-	$path;
-}
-## END: Hack for IIS
-
-require 'util.pl';
-require 'io.pl';
-require 'basexml.pl';
-require 'commands.pl';
-require 'upload_fck.pl';
-require 'config.pl';
-
-&read_input();
-&DoResponse();
-
-sub DoResponse
-{
-
-	if($FORM{'Command'} eq "" || $FORM{'Type'} eq "" || $FORM{'CurrentFolder'} eq "") {
-		return ;
-	}
-	# Get the main request informaiton.
-	$sCommand		= &specialchar_cnv($FORM{'Command'});
-	$sResourceType	= &specialchar_cnv($FORM{'Type'});
-	$sCurrentFolder	= $FORM{'CurrentFolder'};
-
-	if ( !($sCommand =~ /^(FileUpload|GetFolders|GetFoldersAndFiles|CreateFolder)$/) ) {
-		SendError( 1, "Command not allowed" ) ;
-	}
-
-	if ( !($sResourceType =~ /^(File|Image|Flash|Media)$/) ) {
-		SendError( 1, "Invalid type specified" ) ;
-	}
-
-	# Check the current folder syntax (must begin and start with a slash).
-	if(!($sCurrentFolder =~ /\/$/)) {
-		$sCurrentFolder .= '/';
-	}
-	if(!($sCurrentFolder =~ /^\//)) {
-		$sCurrentFolder = '/' . $sCurrentFolder;
-	}
-
-	# Check for invalid folder paths (..)
-	if ( $sCurrentFolder =~ /(?:\.\.|\\)/ ) {
-		SendError( 102, "" ) ;
-	}
-	if ( $sCurrentFolder =~ /(\/\.)|[[:cntrl:]]|(\/\/)|(\\\\)|([\:\*\?\"\<\>\|])/ ) {
-		SendError( 102, "" ) ;
-	}
-
-	# File Upload doesn't have to Return XML, so it must be intercepted before anything.
-	if($sCommand eq 'FileUpload') {
-		FileUpload($sResourceType,$sCurrentFolder);
-		return ;
-	}
-
-	print << "_HTML_HEAD_";
-Content-Type:text/xml; charset=utf-8
-Pragma: no-cache
-Cache-Control: no-cache
-Expires: Thu, 01 Dec 1994 16:00:00 GMT
-
-_HTML_HEAD_
-
-	&CreateXmlHeader($sCommand,$sResourceType,$sCurrentFolder);
-
-	# Execute the required command.
-	if($sCommand eq 'GetFolders') {
-		&GetFolders($sResourceType,$sCurrentFolder);
-	} elsif($sCommand eq 'GetFoldersAndFiles') {
-		&GetFoldersAndFiles($sResourceType,$sCurrentFolder);
-	} elsif($sCommand eq 'CreateFolder') {
-		&CreateFolder($sResourceType,$sCurrentFolder);
-	}
-
-	&CreateXmlFooter();
-
-	exit ;
-}
+#!/usr/bin/env perl
+
+#####
+#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
+#  Copyright (C) 2003-2010 Frederico Caldeira Knabben
+#
+#  == BEGIN LICENSE ==
+#
+#  Licensed under the terms of any of the following licenses at your
+#  choice:
+#
+#   - GNU General Public License Version 2 or later (the "GPL")
+#     http://www.gnu.org/licenses/gpl.html
+#
+#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+#     http://www.gnu.org/licenses/lgpl.html
+#
+#   - Mozilla Public License Version 1.1 or later (the "MPL")
+#     http://www.mozilla.org/MPL/MPL-1.1.html
+#
+#  == END LICENSE ==
+#
+#  This is the File Manager Connector for Perl.
+#####
+
+##
+# ATTENTION: To enable this connector, look for the "SECURITY" comment in config.pl.
+##
+
+## START: Hack for Windows (Not important to understand the editor code... Perl specific).
+if(Windows_check()) {
+	chdir(GetScriptPath($0));
+}
+
+sub Windows_check
+{
+	# IIS,PWS(NT/95)
+	$www_server_os = $^O;
+	# Win98 & NT(SP4)
+	if($www_server_os eq "") { $www_server_os= $ENV{'OS'}; }
+	# AnHTTPd/Omni/IIS
+	if($ENV{'SERVER_SOFTWARE'} =~ /AnWeb|Omni|IIS\//i) { $www_server_os= 'win'; }
+	# Win Apache
+	if($ENV{'WINDIR'} ne "") { $www_server_os= 'win'; }
+	if($www_server_os=~ /win/i) { return(1); }
+	return(0);
+}
+
+sub GetScriptPath {
+	local($path) = @_;
+	if($path =~ /[\:\/\\]/) { $path =~ s/(.*?)[\/\\][^\/\\]+$/$1/; } else { $path = '.'; }
+	$path;
+}
+## END: Hack for IIS
+
+require 'util.pl';
+require 'io.pl';
+require 'basexml.pl';
+require 'commands.pl';
+require 'upload_fck.pl';
+require 'config.pl';
+
+&read_input();
+&DoResponse();
+
+sub DoResponse
+{
+
+	if($FORM{'Command'} eq "" || $FORM{'Type'} eq "" || $FORM{'CurrentFolder'} eq "") {
+		return ;
+	}
+	# Get the main request informaiton.
+	$sCommand		= &specialchar_cnv($FORM{'Command'});
+	$sResourceType	= &specialchar_cnv($FORM{'Type'});
+	$sCurrentFolder	= $FORM{'CurrentFolder'};
+
+	if ( !($sCommand =~ /^(FileUpload|GetFolders|GetFoldersAndFiles|CreateFolder)$/) ) {
+		SendError( 1, "Command not allowed" ) ;
+	}
+
+	if ( !($sResourceType =~ /^(File|Image|Flash|Media)$/) ) {
+		SendError( 1, "Invalid type specified" ) ;
+	}
+
+	# Check the current folder syntax (must begin and start with a slash).
+	if(!($sCurrentFolder =~ /\/$/)) {
+		$sCurrentFolder .= '/';
+	}
+	if(!($sCurrentFolder =~ /^\//)) {
+		$sCurrentFolder = '/' . $sCurrentFolder;
+	}
+
+	# Check for invalid folder paths (..)
+	if ( $sCurrentFolder =~ /(?:\.\.|\\)/ ) {
+		SendError( 102, "" ) ;
+	}
+	if ( $sCurrentFolder =~ /(\/\.)|[[:cntrl:]]|(\/\/)|(\\\\)|([\:\*\?\"\<\>\|])/ ) {
+		SendError( 102, "" ) ;
+	}
+
+	# File Upload doesn't have to Return XML, so it must be intercepted before anything.
+	if($sCommand eq 'FileUpload') {
+		FileUpload($sResourceType,$sCurrentFolder);
+		return ;
+	}
+
+	print << "_HTML_HEAD_";
+Content-Type:text/xml; charset=utf-8
+Pragma: no-cache
+Cache-Control: no-cache
+Expires: Thu, 01 Dec 1994 16:00:00 GMT
+
+_HTML_HEAD_
+
+	&CreateXmlHeader($sCommand,$sResourceType,$sCurrentFolder);
+
+	# Execute the required command.
+	if($sCommand eq 'GetFolders') {
+		&GetFolders($sResourceType,$sCurrentFolder);
+	} elsif($sCommand eq 'GetFoldersAndFiles') {
+		&GetFoldersAndFiles($sResourceType,$sCurrentFolder);
+	} elsif($sCommand eq 'CreateFolder') {
+		&CreateFolder($sResourceType,$sCurrentFolder);
+	}
+
+	&CreateXmlFooter();
+
+	exit ;
+}
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/io.pl	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/io.pl	Tue Sep 20 05:46:18 2016 +0200
@@ -1,141 +1,141 @@
-#####
-#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2010 Frederico Caldeira Knabben
-#
-#  == BEGIN LICENSE ==
-#
-#  Licensed under the terms of any of the following licenses at your
-#  choice:
-#
-#   - GNU General Public License Version 2 or later (the "GPL")
-#     http://www.gnu.org/licenses/gpl.html
-#
-#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
-#     http://www.gnu.org/licenses/lgpl.html
-#
-#   - Mozilla Public License Version 1.1 or later (the "MPL")
-#     http://www.mozilla.org/MPL/MPL-1.1.html
-#
-#  == END LICENSE ==
-#
-#  This is the File Manager Connector for Perl.
-#####
-
-sub GetUrlFromPath
-{
-	local($resourceType, $folderPath) = @_;
-
-	if($resourceType eq '') {
-		$rmpath = &RemoveFromEnd($GLOBALS{'UserFilesPath'},'/');
-		return("$rmpath$folderPath");
-	} else {
-		return("$GLOBALS{'UserFilesPath'}$resourceType$folderPath");
-	}
-}
-
-sub RemoveExtension
-{
-	local($fileName) = @_;
-	local($path, $base, $ext);
-	if($fileName !~ /\./) {
-		$fileName .= '.';
-	}
-	if($fileName =~ /([^\\\/]*)\.(.*)$/) {
-		$base = $1;
-		$ext  = $2;
-		if($fileName =~ /(.*)$base\.$ext$/) {
-			$path = $1;
-		}
-	}
-	return($path,$base,$ext);
-
-}
-
-sub ServerMapFolder
-{
-	local($resourceType,$folderPath) = @_;
-
-	# Get the resource type directory.
-	$sResourceTypePath = $GLOBALS{'UserFilesDirectory'} . $resourceType . '/';
-
-	# Ensure that the directory exists.
-	&CreateServerFolder($sResourceTypePath);
-
-	# Return the resource type directory combined with the required path.
-	$rmpath = &RemoveFromStart($folderPath,'/');
-	return("$sResourceTypePath$rmpath");
-}
-
-sub GetParentFolder
-{
-	local($folderPath) = @_;
-
-	$folderPath =~ s/[\/][^\/]+[\/]?$//g;
-	return $folderPath;
-}
-
-sub CreateServerFolder
-{
-	local($folderPath) = @_;
-
-	$sParent = &GetParentFolder($folderPath);
-	# Check if the parent exists, or create it.
-	if(!(-e $sParent)) {
-		$sErrorMsg = &CreateServerFolder($sParent);
-		if($sErrorMsg == 1) {
-			return(1);
-		}
-	}
-	if(!(-e $folderPath)) {
-		if (defined $CHMOD_ON_FOLDER_CREATE && !$CHMOD_ON_FOLDER_CREATE) {
-			mkdir("$folderPath");
-		}
-		else {
-			umask(000);
-			if (defined $CHMOD_ON_FOLDER_CREATE) {
-				mkdir("$folderPath",$CHMOD_ON_FOLDER_CREATE);
-			}
-			else {
-				mkdir("$folderPath",0777);
-			}
-		}
-
-		return(0);
-	} else {
-		return(1);
-	}
-}
-
-sub GetRootPath
-{
-#use Cwd;
-
-#	my $dir = getcwd;
-#	print $dir;
-#	$dir  =~ s/$ENV{'DOCUMENT_ROOT'}//g;
-#	print $dir;
-#	return($dir);
-
-#	$wk = $0;
-#	$wk =~ s/\/connector\.cgi//g;
-#	if($wk) {
-#		$current_dir = $wk;
-#	} else {
-#		$current_dir = `pwd`;
-#	}
-#	return($current_dir);
-use Cwd;
-
-	if($ENV{'DOCUMENT_ROOT'}) {
-		$dir = $ENV{'DOCUMENT_ROOT'};
-	} else {
-		my $dir = getcwd;
-		$workdir =~ s/\/connector\.cgi//g;
-		$dir  =~ s/$workdir//g;
-	}
-	return($dir);
-
-
-
-}
-1;
+#####
+#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
+#  Copyright (C) 2003-2010 Frederico Caldeira Knabben
+#
+#  == BEGIN LICENSE ==
+#
+#  Licensed under the terms of any of the following licenses at your
+#  choice:
+#
+#   - GNU General Public License Version 2 or later (the "GPL")
+#     http://www.gnu.org/licenses/gpl.html
+#
+#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+#     http://www.gnu.org/licenses/lgpl.html
+#
+#   - Mozilla Public License Version 1.1 or later (the "MPL")
+#     http://www.mozilla.org/MPL/MPL-1.1.html
+#
+#  == END LICENSE ==
+#
+#  This is the File Manager Connector for Perl.
+#####
+
+sub GetUrlFromPath
+{
+	local($resourceType, $folderPath) = @_;
+
+	if($resourceType eq '') {
+		$rmpath = &RemoveFromEnd($GLOBALS{'UserFilesPath'},'/');
+		return("$rmpath$folderPath");
+	} else {
+		return("$GLOBALS{'UserFilesPath'}$resourceType$folderPath");
+	}
+}
+
+sub RemoveExtension
+{
+	local($fileName) = @_;
+	local($path, $base, $ext);
+	if($fileName !~ /\./) {
+		$fileName .= '.';
+	}
+	if($fileName =~ /([^\\\/]*)\.(.*)$/) {
+		$base = $1;
+		$ext  = $2;
+		if($fileName =~ /(.*)$base\.$ext$/) {
+			$path = $1;
+		}
+	}
+	return($path,$base,$ext);
+
+}
+
+sub ServerMapFolder
+{
+	local($resourceType,$folderPath) = @_;
+
+	# Get the resource type directory.
+	$sResourceTypePath = $GLOBALS{'UserFilesDirectory'} . $resourceType . '/';
+
+	# Ensure that the directory exists.
+	&CreateServerFolder($sResourceTypePath);
+
+	# Return the resource type directory combined with the required path.
+	$rmpath = &RemoveFromStart($folderPath,'/');
+	return("$sResourceTypePath$rmpath");
+}
+
+sub GetParentFolder
+{
+	local($folderPath) = @_;
+
+	$folderPath =~ s/[\/][^\/]+[\/]?$//g;
+	return $folderPath;
+}
+
+sub CreateServerFolder
+{
+	local($folderPath) = @_;
+
+	$sParent = &GetParentFolder($folderPath);
+	# Check if the parent exists, or create it.
+	if(!(-e $sParent)) {
+		$sErrorMsg = &CreateServerFolder($sParent);
+		if($sErrorMsg == 1) {
+			return(1);
+		}
+	}
+	if(!(-e $folderPath)) {
+		if (defined $CHMOD_ON_FOLDER_CREATE && !$CHMOD_ON_FOLDER_CREATE) {
+			mkdir("$folderPath");
+		}
+		else {
+			umask(000);
+			if (defined $CHMOD_ON_FOLDER_CREATE) {
+				mkdir("$folderPath",$CHMOD_ON_FOLDER_CREATE);
+			}
+			else {
+				mkdir("$folderPath",0777);
+			}
+		}
+
+		return(0);
+	} else {
+		return(1);
+	}
+}
+
+sub GetRootPath
+{
+#use Cwd;
+
+#	my $dir = getcwd;
+#	print $dir;
+#	$dir  =~ s/$ENV{'DOCUMENT_ROOT'}//g;
+#	print $dir;
+#	return($dir);
+
+#	$wk = $0;
+#	$wk =~ s/\/connector\.cgi//g;
+#	if($wk) {
+#		$current_dir = $wk;
+#	} else {
+#		$current_dir = `pwd`;
+#	}
+#	return($current_dir);
+use Cwd;
+
+	if($ENV{'DOCUMENT_ROOT'}) {
+		$dir = $ENV{'DOCUMENT_ROOT'};
+	} else {
+		my $dir = getcwd;
+		$workdir =~ s/\/connector\.cgi//g;
+		$dir  =~ s/$workdir//g;
+	}
+	return($dir);
+
+
+
+}
+1;
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/upload.cgi	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/upload.cgi	Tue Sep 20 05:46:18 2016 +0200
@@ -1,87 +1,87 @@
-#!/usr/bin/env perl
-
-#####
-#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2010 Frederico Caldeira Knabben
-#
-#  == BEGIN LICENSE ==
-#
-#  Licensed under the terms of any of the following licenses at your
-#  choice:
-#
-#   - GNU General Public License Version 2 or later (the "GPL")
-#     http://www.gnu.org/licenses/gpl.html
-#
-#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
-#     http://www.gnu.org/licenses/lgpl.html
-#
-#   - Mozilla Public License Version 1.1 or later (the "MPL")
-#     http://www.mozilla.org/MPL/MPL-1.1.html
-#
-#  == END LICENSE ==
-#
-#  This is the File Manager Connector for Perl.
-#####
-
-##
-# ATTENTION: To enable this connector, look for the "SECURITY" comment in config.pl.
-##
-
-## START: Hack for Windows (Not important to understand the editor code... Perl specific).
-if(Windows_check()) {
-	chdir(GetScriptPath($0));
-}
-
-sub Windows_check
-{
-	# IIS,PWS(NT/95)
-	$www_server_os = $^O;
-	# Win98 & NT(SP4)
-	if($www_server_os eq "") { $www_server_os= $ENV{'OS'}; }
-	# AnHTTPd/Omni/IIS
-	if($ENV{'SERVER_SOFTWARE'} =~ /AnWeb|Omni|IIS\//i) { $www_server_os= 'win'; }
-	# Win Apache
-	if($ENV{'WINDIR'} ne "") { $www_server_os= 'win'; }
-	if($www_server_os=~ /win/i) { return(1); }
-	return(0);
-}
-
-sub GetScriptPath {
-	local($path) = @_;
-	if($path =~ /[\:\/\\]/) { $path =~ s/(.*?)[\/\\][^\/\\]+$/$1/; } else { $path = '.'; }
-	$path;
-}
-## END: Hack for IIS
-
-require 'util.pl';
-require 'io.pl';
-require 'basexml.pl';
-require 'commands.pl';
-require 'upload_fck.pl';
-require 'config.pl';
-
-&read_input();
-&DoResponse();
-
-sub DoResponse
-{
-	# Get the main request information.
-	$sCommand		= 'FileUpload';
-	$sResourceType	= &specialchar_cnv($FORM{'Type'});
-	$sCurrentFolder	= "/";
-
-	if ($sResourceType eq '') {
-		$sResourceType = 'File' ;
-	}
-
-	if ( !($sResourceType =~ /^(File|Image|Flash|Media)$/) ) {
-		SendError( 1, "Invalid type specified" ) ;
-	}
-
-	# File Upload doesn't have to Return XML, so it must be intercepted before anything.
-	if($sCommand eq 'FileUpload') {
-		FileUpload($sResourceType,$sCurrentFolder);
-		return ;
-	}
-
-}
+#!/usr/bin/env perl
+
+#####
+#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
+#  Copyright (C) 2003-2010 Frederico Caldeira Knabben
+#
+#  == BEGIN LICENSE ==
+#
+#  Licensed under the terms of any of the following licenses at your
+#  choice:
+#
+#   - GNU General Public License Version 2 or later (the "GPL")
+#     http://www.gnu.org/licenses/gpl.html
+#
+#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+#     http://www.gnu.org/licenses/lgpl.html
+#
+#   - Mozilla Public License Version 1.1 or later (the "MPL")
+#     http://www.mozilla.org/MPL/MPL-1.1.html
+#
+#  == END LICENSE ==
+#
+#  This is the File Manager Connector for Perl.
+#####
+
+##
+# ATTENTION: To enable this connector, look for the "SECURITY" comment in config.pl.
+##
+
+## START: Hack for Windows (Not important to understand the editor code... Perl specific).
+if(Windows_check()) {
+	chdir(GetScriptPath($0));
+}
+
+sub Windows_check
+{
+	# IIS,PWS(NT/95)
+	$www_server_os = $^O;
+	# Win98 & NT(SP4)
+	if($www_server_os eq "") { $www_server_os= $ENV{'OS'}; }
+	# AnHTTPd/Omni/IIS
+	if($ENV{'SERVER_SOFTWARE'} =~ /AnWeb|Omni|IIS\//i) { $www_server_os= 'win'; }
+	# Win Apache
+	if($ENV{'WINDIR'} ne "") { $www_server_os= 'win'; }
+	if($www_server_os=~ /win/i) { return(1); }
+	return(0);
+}
+
+sub GetScriptPath {
+	local($path) = @_;
+	if($path =~ /[\:\/\\]/) { $path =~ s/(.*?)[\/\\][^\/\\]+$/$1/; } else { $path = '.'; }
+	$path;
+}
+## END: Hack for IIS
+
+require 'util.pl';
+require 'io.pl';
+require 'basexml.pl';
+require 'commands.pl';
+require 'upload_fck.pl';
+require 'config.pl';
+
+&read_input();
+&DoResponse();
+
+sub DoResponse
+{
+	# Get the main request information.
+	$sCommand		= 'FileUpload';
+	$sResourceType	= &specialchar_cnv($FORM{'Type'});
+	$sCurrentFolder	= "/";
+
+	if ($sResourceType eq '') {
+		$sResourceType = 'File' ;
+	}
+
+	if ( !($sResourceType =~ /^(File|Image|Flash|Media)$/) ) {
+		SendError( 1, "Invalid type specified" ) ;
+	}
+
+	# File Upload doesn't have to Return XML, so it must be intercepted before anything.
+	if($sCommand eq 'FileUpload') {
+		FileUpload($sResourceType,$sCurrentFolder);
+		return ;
+	}
+
+}
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/upload_fck.pl	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/upload_fck.pl	Tue Sep 20 05:46:18 2016 +0200
@@ -1,686 +1,686 @@
-#####
-#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2010 Frederico Caldeira Knabben
-#
-#  == BEGIN LICENSE ==
-#
-#  Licensed under the terms of any of the following licenses at your
-#  choice:
-#
-#   - GNU General Public License Version 2 or later (the "GPL")
-#     http://www.gnu.org/licenses/gpl.html
-#
-#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
-#     http://www.gnu.org/licenses/lgpl.html
-#
-#   - Mozilla Public License Version 1.1 or later (the "MPL")
-#     http://www.mozilla.org/MPL/MPL-1.1.html
-#
-#  == END LICENSE ==
-#
-#  This is the File Manager Connector for Perl.
-#####
-
-# image data save dir
-$img_dir	= './temp/';
-
-
-# File size max(unit KB)
-$MAX_CONTENT_SIZE =  30000;
-
-# After file is uploaded, sometimes it is required to change its permissions
-# so that it was possible to access it at the later time.
-# If possible, it is recommended to set more restrictive permissions, like 0755.
-# Set to 0 to disable this feature.
-$CHMOD_ON_UPLOAD = 0777;
-
-# See comments above.
-# Used when creating folders that does not exist.
-$CHMOD_ON_FOLDER_CREATE = 0755;
-
-# Filelock (1=use,0=not use)
-$PM{'flock'}		= '1';
-
-
-# upload Content-Type list
-my %UPLOAD_CONTENT_TYPE_LIST = (
-	'image/(x-)?png'						=>	'png',	# PNG image
-	'image/p?jpe?g'							=>	'jpg',	# JPEG image
-	'image/gif'								=>	'gif',	# GIF image
-	'image/x-xbitmap'						=>	'xbm',	# XBM image
-
-	'image/(x-(MS-)?)?bmp'					=>	'bmp',	# Windows BMP image
-	'image/pict'							=>	'pict',	# Macintosh PICT image
-	'image/tiff'							=>	'tif',	# TIFF image
-	'application/pdf'						=>	'pdf',	# PDF image
-	'application/x-shockwave-flash'			=>	'swf',	# Shockwave Flash
-
-	'video/(x-)?msvideo'					=>	'avi',	# Microsoft Video
-	'video/quicktime'						=>	'mov',	# QuickTime Video
-	'video/mpeg'							=>	'mpeg',	# MPEG Video
-	'video/x-mpeg2'							=>	'mpv2', # MPEG2 Video
-
-	'audio/(x-)?midi?'						=>	'mid',	# MIDI Audio
-	'audio/(x-)?wav'						=>	'wav',	# WAV Audio
-	'audio/basic'							=>	'au',	# ULAW Audio
-	'audio/mpeg'							=>	'mpga',	# MPEG Audio
-
-	'application/(x-)?zip(-compressed)?'	=>	'zip',	# ZIP Compress
-
-	'text/html'								=>	'html', # HTML
-	'text/plain'							=>	'txt',	# TEXT
-	'(?:application|text)/(?:rtf|richtext)'	=>	'rtf',	# RichText
-
-	'application/msword'					=>	'doc',	# Microsoft Word
-	'application/vnd.ms-excel'				=>	'xls',	# Microsoft Excel
-
-	''
-);
-
-# Upload is permitted.
-# A regular expression is possible.
-my %UPLOAD_EXT_LIST = (
-	'png'					=>	'PNG image',
-	'p?jpe?g|jpe|jfif|pjp'	=>	'JPEG image',
-	'gif'					=>	'GIF image',
-	'xbm'					=>	'XBM image',
-
-	'bmp|dib|rle'			=>	'Windows BMP image',
-	'pi?ct'					=>	'Macintosh PICT image',
-	'tiff?'					=>	'TIFF image',
-	'pdf'					=>	'PDF image',
-	'swf'					=>	'Shockwave Flash',
-
-	'avi'					=>	'Microsoft Video',
-	'moo?v|qt'				=>	'QuickTime Video',
-	'm(p(e?gv?|e|v)|1v)'	=>	'MPEG Video',
-	'mp(v2|2v)'				=>	'MPEG2 Video',
-
-	'midi?|kar|smf|rmi|mff'	=>	'MIDI Audio',
-	'wav'					=>	'WAVE Audio',
-	'au|snd'				=>	'ULAW Audio',
-	'mp(e?ga|2|a|3)|abs'	=>	'MPEG Audio',
-
-	'zip'					=>	'ZIP Compress',
-	'lzh'					=>	'LZH Compress',
-	'cab'					=>	'CAB Compress',
-
-	'd?html?'				=>	'HTML',
-	'rtf|rtx'				=>	'RichText',
-	'txt|text'				=>	'Text',
-
-	''
-);
-
-
-# sjis or euc
-my $CHARCODE = 'sjis';
-
-$TRANS_2BYTE_CODE = 0;
-
-##############################################################################
-# Summary
-#
-# Form Read input
-#
-# Parameters
-# Returns
-# Memo
-##############################################################################
-sub read_input
-{
-eval("use File::Copy;");
-eval("use File::Path;");
-
-	my ($FORM) = @_;
-
-	if (defined $CHMOD_ON_FOLDER_CREATE && !$CHMOD_ON_FOLDER_CREATE) {
-		mkdir("$img_dir");
-	}
-	else {
-		umask(000);
-		if (defined $CHMOD_ON_FOLDER_CREATE) {
-			mkdir("$img_dir",$CHMOD_ON_FOLDER_CREATE);
-		}
-		else {
-			mkdir("$img_dir",0777);
-		}
-	}
-
-	undef $img_data_exists;
-	undef @NEWFNAMES;
-	undef @NEWFNAME_DATA;
-
-	if($ENV{'CONTENT_LENGTH'} > 10000000 || $ENV{'CONTENT_LENGTH'} > $MAX_CONTENT_SIZE * 1024) {
-		&upload_error(
-			'Size Error',
-			sprintf(
-				"Transmitting size is too large.MAX <strong>%d KB</strong> Now Size <strong>%d KB</strong>(<strong>%d bytes</strong> Over)",
-				$MAX_CONTENT_SIZE,
-				int($ENV{'CONTENT_LENGTH'} / 1024),
-				$ENV{'CONTENT_LENGTH'} - $MAX_CONTENT_SIZE * 1024
-			)
-		);
-	}
-
-	my $Buffer;
-	if($ENV{'CONTENT_TYPE'} =~ /multipart\/form-data/) {
-		# METHOD POST only
-		return	unless($ENV{'CONTENT_LENGTH'});
-
-		binmode(STDIN);
-		# STDIN A pause character is detected.'(MacIE3.0 boundary of $ENV{'CONTENT_TYPE'} cannot be trusted.)
-		my $Boundary = <STDIN>;
-		$Boundary =~ s/\x0D\x0A//;
-		$Boundary = quotemeta($Boundary);
-		while(<STDIN>) {
-			if(/^\s*Content-Disposition:/i) {
-				my($name,$ContentType,$FileName);
-				# form data get
-				if(/\bname="([^"]+)"/i || /\bname=([^\s:;]+)/i) {
-					$name = $1;
-					$name	=~ tr/+/ /;
-					$name	=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
-					&Encode(\$name);
-				}
-				if(/\bfilename="([^"]*)"/i || /\bfilename=([^\s:;]*)/i) {
-					$FileName = $1 || 'unknown';
-				}
-				# head read
-				while(<STDIN>) {
-					last	if(! /\w/);
-					if(/^\s*Content-Type:\s*"([^"]+)"/i || /^\s*Content-Type:\s*([^\s:;]+)/i) {
-						$ContentType = $1;
-					}
-				}
-				# body read
-				$value = "";
-				while(<STDIN>) {
-					last	if(/^$Boundary/o);
-					$value .= $_;
-				};
-				$lastline = $_;
-				$value =~s /\x0D\x0A$//;
-				if($value ne '') {
-					if($FileName || $ContentType) {
-						$img_data_exists = 1;
-						(
-							$FileName,		#
-							$Ext,			#
-							$Length,		#
-							$ImageWidth,	#
-							$ImageHeight,	#
-							$ContentName	#
-						) = &CheckContentType(\$value,$FileName,$ContentType);
-
-						$FORM{$name}	= $FileName;
-						$new_fname		= $FileName;
-						push(@NEWFNAME_DATA,"$FileName\t$Ext\t$Length\t$ImageWidth\t$ImageHeight\t$ContentName");
-
-						# Multi-upload correspondence
-						push(@NEWFNAMES,$new_fname);
-						open(OUT,">$img_dir/$new_fname");
-						binmode(OUT);
-						eval "flock(OUT,2);" if($PM{'flock'} == 1);
-						print OUT $value;
-						eval "flock(OUT,8);" if($PM{'flock'} == 1);
-						close(OUT);
-
-					} elsif($name) {
-						$value	=~ tr/+/ /;
-						$value	=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
-						&Encode(\$value,'trans');
-						$FORM{$name} .= "\0"			if(defined($FORM{$name}));
-						$FORM{$name} .= $value;
-					}
-				}
-			};
-			last if($lastline =~ /^$Boundary\-\-/o);
-		}
-	} elsif($ENV{'CONTENT_LENGTH'}) {
-		read(STDIN,$Buffer,$ENV{'CONTENT_LENGTH'});
-	}
-	foreach(split(/&/,$Buffer),split(/&/,$ENV{'QUERY_STRING'})) {
-		my($name, $value) = split(/=/);
-		$name	=~ tr/+/ /;
-		$name	=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
-		$value	=~ tr/+/ /;
-		$value	=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
-
-		&Encode(\$name);
-		&Encode(\$value,'trans');
-		$FORM{$name} .= "\0"			if(defined($FORM{$name}));
-		$FORM{$name} .= $value;
-
-	}
-
-}
-
-##############################################################################
-# Summary
-#
-#	CheckContentType
-#
-# Parameters
-# Returns
-# Memo
-##############################################################################
-sub CheckContentType
-{
-
-	my($DATA,$FileName,$ContentType) = @_;
-	my($Ext,$ImageWidth,$ImageHeight,$ContentName,$Infomation);
-	my $DataLength = length($$DATA);
-
-	# An unknown file type
-
-	$_ = $ContentType;
-	my $UnknownType = (
-		!$_
-		|| /^application\/(x-)?macbinary$/i
-		|| /^application\/applefile$/i
-		|| /^application\/octet-stream$/i
-		|| /^text\/plane$/i
-		|| /^x-unknown-content-type/i
-	);
-
-	# MacBinary(Mac Unnecessary data are deleted.)
-	if($UnknownType || $ENV{'HTTP_USER_AGENT'} =~ /Macintosh|Mac_/) {
-		if($DataLength > 128 && !unpack("C",substr($$DATA,0,1)) && !unpack("C",substr($$DATA,74,1)) && !unpack("C",substr($$DATA,82,1)) ) {
-			my $MacBinary_ForkLength = unpack("N", substr($$DATA, 83, 4));		# ForkLength Get
-			my $MacBinary_FileName = quotemeta(substr($$DATA, 2, unpack("C",substr($$DATA, 1, 1))));
-			if($MacBinary_FileName && $MacBinary_ForkLength && $DataLength >= $MacBinary_ForkLength + 128
-					&& ($FileName =~ /$MacBinary_FileName/i || substr($$DATA,102,4) eq 'mBIN')) {	# DATA TOP 128byte MacBinary!!
-				$$DATA				= substr($$DATA,128,$MacBinary_ForkLength);
-				my $ResourceLength	= $DataLength - $MacBinary_ForkLength - 128;
-				$DataLength			= $MacBinary_ForkLength;
-			}
-		}
-	}
-
-	# A file name is changed into EUC.
-#	&jcode::convert(\$FileName,'euc',$FormCodeDefault);
-#	&jcode::h2z_euc(\$FileName);
-	$FileName =~ s/^.*\\//;					# Windows, Mac
-	$FileName =~ s/^.*\///;					# UNIX
-	$FileName =~ s/&/&amp;/g;
-	$FileName =~ s/"/&quot;/g;
-	$FileName =~ s/</&lt;/g;
-	$FileName =~ s/>/&gt;/g;
-#
-#	if($CHARCODE ne 'euc') {
-#		&jcode::convert(\$FileName,$CHARCODE,'euc');
-#	}
-
-	# An extension is extracted and it changes into a small letter.
-	my $FileExt;
-	if($FileName =~ /\.(\w+)$/) {
-		$FileExt = $1;
-		$FileExt =~ tr/A-Z/a-z/;
-	}
-
-	# Executable file detection (ban on upload)
-	if($$DATA =~ /^MZ/) {
-		$Ext = 'exe';
-	}
-	# text
-	if(!$Ext && ($UnknownType || $ContentType =~ /^text\//i || $ContentType =~ /^application\/(?:rtf|richtext)$/i || $ContentType =~ /^image\/x-xbitmap$/i)
-				&& ! $$DATA =~ /[\000-\006\177\377]/) {
-#		$$DATA =~ s/\x0D\x0A/\n/g;
-#		$$DATA =~ tr/\x0D\x0A/\n\n/;
-#
-#		if(
-#			$$DATA =~ /<\s*SCRIPT(?:.|\n)*?>/i
-#				|| $$DATA =~ /<\s*(?:.|\n)*?\bONLOAD\s*=(?:.|\n)*?>/i
-#				|| $$DATA =~ /<\s*(?:.|\n)*?\bONCLICK\s*=(?:.|\n)*?>/i
-#				) {
-#			$Infomation = '(JavaScript contains)';
-#		}
-#		if($$DATA =~ /<\s*TABLE(?:.|\n)*?>/i
-#				|| $$DATA =~ /<\s*BLINK(?:.|\n)*?>/i
-#				|| $$DATA =~ /<\s*MARQUEE(?:.|\n)*?>/i
-#				|| $$DATA =~ /<\s*OBJECT(?:.|\n)*?>/i
-#				|| $$DATA =~ /<\s*EMBED(?:.|\n)*?>/i
-#				|| $$DATA =~ /<\s*FRAME(?:.|\n)*?>/i
-#				|| $$DATA =~ /<\s*APPLET(?:.|\n)*?>/i
-#				|| $$DATA =~ /<\s*FORM(?:.|\n)*?>/i
-#				|| $$DATA =~ /<\s*(?:.|\n)*?\bSRC\s*=(?:.|\n)*?>/i
-#				|| $$DATA =~ /<\s*(?:.|\n)*?\bDYNSRC\s*=(?:.|\n)*?>/i
-#				) {
-#			$Infomation = '(the HTML tag which is not safe is included)';
-#		}
-
-		if($FileExt =~ /^txt$/i || $FileExt =~ /^cgi$/i || $FileExt =~ /^pl$/i) {								# Text File
-			$Ext = 'txt';
-		} elsif($ContentType =~ /^text\/html$/i || $FileExt =~ /html?/i || $$DATA =~ /<\s*HTML(?:.|\n)*?>/i) {	# HTML File
-			$Ext = 'html';
-		} elsif($ContentType =~ /^image\/x-xbitmap$/i || $FileExt =~ /^xbm$/i) {								# XBM(x-BitMap) Image
-			my $XbmName = $1;
-			my ($XbmWidth, $XbmHeight);
-			if($$DATA =~ /\#define\s*$XbmName\_width\s*(\d+)/i) {
-				$XbmWidth = $1;
-			}
-			if($$DATA =~ /\#define\s*$XbmName\_height\s*(\d+)/i) {
-				$XbmHeight = $1;
-			}
-			if($XbmWidth && $XbmHeight) {
-				$Ext = 'xbm';
-				$ImageWidth		= $XbmWidth;
-				$ImageHeight	= $XbmHeight;
-			}
-		} else {		#
-			$Ext = 'txt';
-		}
-	}
-
-	# image
-	if(!$Ext && ($UnknownType || $ContentType =~ /^image\//i)) {
-		# PNG
-		if($$DATA =~ /^\x89PNG\x0D\x0A\x1A\x0A/) {
-			if(substr($$DATA, 12, 4) eq 'IHDR') {
-				$Ext = 'png';
-				($ImageWidth, $ImageHeight) = unpack("N2", substr($$DATA, 16, 8));
-			}
-		} elsif($$DATA =~ /^GIF8(?:9|7)a/) {															# GIF89a(modified), GIF89a, GIF87a
-			$Ext = 'gif';
-			($ImageWidth, $ImageHeight) = unpack("v2", substr($$DATA, 6, 4));
-		} elsif($$DATA =~ /^II\x2a\x00\x08\x00\x00\x00/ || $$DATA =~ /^MM\x00\x2a\x00\x00\x00\x08/) {	# TIFF
-			$Ext = 'tif';
-		} elsif($$DATA =~ /^BM/) {																		# BMP
-			$Ext = 'bmp';
-		} elsif($$DATA =~ /^\xFF\xD8\xFF/ || $$DATA =~ /JFIF/) {										# JPEG
-			my $HeaderPoint = index($$DATA, "\xFF\xD8\xFF", 0);
-			my $Point = $HeaderPoint + 2;
-			while($Point < $DataLength) {
-				my($Maker, $MakerType, $MakerLength) = unpack("C2n",substr($$DATA,$Point,4));
-				if($Maker != 0xFF || $MakerType == 0xd9 || $MakerType == 0xda) {
-					last;
-				} elsif($MakerType >= 0xC0 && $MakerType <= 0xC3) {
-					$Ext = 'jpg';
-					($ImageHeight, $ImageWidth) = unpack("n2", substr($$DATA, $Point + 5, 4));
-					if($HeaderPoint > 0) {
-						$$DATA = substr($$DATA, $HeaderPoint);
-						$DataLength = length($$DATA);
-					}
-					last;
-				} else {
-					$Point += $MakerLength + 2;
-				}
-			}
-		}
-	}
-
-	# audio
-	if(!$Ext && ($UnknownType || $ContentType =~ /^audio\//i)) {
-		# MIDI Audio
-		if($$DATA =~ /^MThd/) {
-			$Ext = 'mid';
-		} elsif($$DATA =~ /^\x2esnd/) {		# ULAW Audio
-			$Ext = 'au';
-		} elsif($$DATA =~ /^RIFF/ || $$DATA =~ /^ID3/ && $$DATA =~ /RIFF/) {
-			my $HeaderPoint = index($$DATA, "RIFF", 0);
-			$_ = substr($$DATA, $HeaderPoint + 8, 8);
-			if(/^WAVEfmt $/) {
-				# WAVE
-				if(unpack("V",substr($$DATA, $HeaderPoint + 16, 4)) == 16) {
-					$Ext = 'wav';
-				} else {					# RIFF WAVE MP3
-					$Ext = 'mp3';
-				}
-			} elsif(/^RMIDdata$/) {			# RIFF MIDI
-				$Ext = 'rmi';
-			} elsif(/^RMP3data$/) {			# RIFF MP3
-				$Ext = 'rmp';
-			}
-			if($ContentType =~ /^audio\//i) {
-				$Infomation .= '(RIFF '. substr($$DATA, $HeaderPoint + 8, 4). ')';
-			}
-		}
-	}
-
-	# a binary file
-	unless ($Ext) {
-		# PDF image
-		if($$DATA =~ /^\%PDF/) {
-			# Picture size is not measured.
-			$Ext = 'pdf';
-		} elsif($$DATA =~ /^FWS/) {		# Shockwave Flash
-			$Ext = 'swf';
-		} elsif($$DATA =~ /^RIFF/ || $$DATA =~ /^ID3/ && $$DATA =~ /RIFF/) {
-			my $HeaderPoint = index($$DATA, "RIFF", 0);
-			$_ = substr($$DATA,$HeaderPoint + 8, 8);
-			# AVI
-			if(/^AVI LIST$/) {
-				$Ext = 'avi';
-			}
-			if($ContentType =~ /^video\//i) {
-				$Infomation .= '(RIFF '. substr($$DATA, $HeaderPoint + 8, 4). ')';
-			}
-		} elsif($$DATA =~ /^PK/) {			# ZIP Compress File
-			$Ext = 'zip';
-		} elsif($$DATA =~ /^MSCF/) {		# CAB Compress File
-			$Ext = 'cab';
-		} elsif($$DATA =~ /^Rar\!/) {		# RAR Compress File
-			$Ext = 'rar';
-		} elsif(substr($$DATA, 2, 5) =~ /^\-lh(\d+|d)\-$/) {		# LHA Compress File
-			$Infomation .= "(lh$1)";
-			$Ext = 'lzh';
-		} elsif(substr($$DATA, 325, 25) eq "Apple Video Media Handler" || substr($$DATA, 325, 30) eq "Apple \x83\x72\x83\x66\x83\x49\x81\x45\x83\x81\x83\x66\x83\x42\x83\x41\x83\x6E\x83\x93\x83\x68\x83\x89") {
-			# QuickTime
-			$Ext = 'mov';
-		}
-	}
-
-	# Header analysis failure
-	unless ($Ext) {
-		# It will be followed if it applies for the MIME type from the browser.
-		foreach (keys %UPLOAD_CONTENT_TYPE_LIST) {
-			next unless ($_);
-			if($ContentType =~ /^$_$/i) {
-				$Ext = $UPLOAD_CONTENT_TYPE_LIST{$_};
-				$ContentName = &CheckContentExt($Ext);
-				if(
-					grep {$_ eq $Ext;} (
-						'png',
-						'gif',
-						'jpg',
-						'xbm',
-						'tif',
-						'bmp',
-						'pdf',
-						'swf',
-						'mov',
-						'zip',
-						'cab',
-						'lzh',
-						'rar',
-						'mid',
-						'rmi',
-						'au',
-						'wav',
-						'avi',
-						'exe'
-					)
-				) {
-					$Infomation .= ' / Header analysis failure';
-				}
-				if($Ext ne $FileExt && &CheckContentExt($FileExt) eq $ContentName) {
-					$Ext = $FileExt;
-				}
-				last;
-			}
-		}
-		# a MIME type is unknown--It judges from an extension.
-		unless ($Ext) {
-			$ContentName = &CheckContentExt($FileExt);
-			if($ContentName) {
-				$Ext = $FileExt;
-				$Infomation .= ' /	MIME type is unknown('. $ContentType. ')';
-				last;
-			}
-		}
-	}
-
-#	$ContentName = &CheckContentExt($Ext)	unless($ContentName);
-#	if($Ext && $ContentName) {
-#		$ContentName .=  $Infomation;
-#	} else {
-#		&upload_error(
-#			'Extension Error',
-#			"$FileName A not corresponding extension ($Ext)<BR>The extension which can be responded ". join(',', sort values(%UPLOAD_EXT_LIST))
-#		);
-#	}
-
-#	# SSI Tag Deletion
-#	if($Ext =~ /.?html?/ && $$DATA =~ /<\!/) {
-#		foreach (
-#			'config',
-#			'echo',
-#			'exec',
-#			'flastmod',
-#			'fsize',
-#			'include'
-#		) {
-#			$$DATA =~ s/\#\s*$_/\&\#35\;$_/ig
-#		}
-#	}
-
-	return (
-		$FileName,
-		$Ext,
-		int($DataLength / 1024 + 1),
-		$ImageWidth,
-		$ImageHeight,
-		$ContentName
-	);
-}
-
-##############################################################################
-# Summary
-#
-# Extension discernment
-#
-# Parameters
-# Returns
-# Memo
-##############################################################################
-
-sub CheckContentExt
-{
-
-	my($Ext) = @_;
-	my $ContentName;
-	foreach (keys %UPLOAD_EXT_LIST) {
-		next	unless ($_);
-		if($_ && $Ext =~ /^$_$/) {
-			$ContentName = $UPLOAD_EXT_LIST{$_};
-			last;
-		}
-	}
-	return $ContentName;
-
-}
-
-##############################################################################
-# Summary
-#
-# Form decode
-#
-# Parameters
-# Returns
-# Memo
-##############################################################################
-sub Encode
-{
-
-	my($value,$Trans) = @_;
-
-#	my $FormCode = &jcode::getcode($value) || $FormCodeDefault;
-#	$FormCodeDefault ||= $FormCode;
-#
-#	if($Trans && $TRANS_2BYTE_CODE) {
-#		if($FormCode ne 'euc') {
-#			&jcode::convert($value, 'euc', $FormCode);
-#		}
-#		&jcode::tr(
-#			$value,
-#			"\xA3\xB0-\xA3\xB9\xA3\xC1-\xA3\xDA\xA3\xE1-\xA3\xFA",
-#			'0-9A-Za-z'
-#		);
-#		if($CHARCODE ne 'euc') {
-#			&jcode::convert($value,$CHARCODE,'euc');
-#		}
-#	} else {
-#		if($CHARCODE ne $FormCode) {
-#			&jcode::convert($value,$CHARCODE,$FormCode);
-#		}
-#	}
-#	if($CHARCODE eq 'euc') {
-#		&jcode::h2z_euc($value);
-#	} elsif($CHARCODE eq 'sjis') {
-#		&jcode::h2z_sjis($value);
-#	}
-
-}
-
-##############################################################################
-# Summary
-#
-# Error Msg
-#
-# Parameters
-# Returns
-# Memo
-##############################################################################
-
-sub upload_error
-{
-
-	local($error_message)	= $_[0];
-	local($error_message2)	= $_[1];
-
-	print "Content-type: text/html\n\n";
-	print<<EOF;
-<HTML>
-<HEAD>
-<TITLE>Error Message</TITLE></HEAD>
-<BODY>
-<table border="1" cellspacing="10" cellpadding="10">
-	<TR bgcolor="#0000B0">
-	<TD bgcolor="#0000B0" NOWRAP><font size="-1" color="white"><B>Error Message</B></font></TD>
-	</TR>
-</table>
-<UL>
-<H4> $error_message </H4>
-$error_message2 <BR>
-</UL>
-</BODY>
-</HTML>
-EOF
-	&rm_tmp_uploaded_files; 		# Image Temporary deletion
-	exit;
-}
-
-##############################################################################
-# Summary
-#
-# Image Temporary deletion
-#
-# Parameters
-# Returns
-# Memo
-##############################################################################
-
-sub rm_tmp_uploaded_files
-{
-	if($img_data_exists == 1){
-		sleep 1;
-		foreach $fname_list(@NEWFNAMES) {
-			if(-e "$img_dir/$fname_list") {
-				unlink("$img_dir/$fname_list");
-			}
-		}
-	}
-
-}
-1;
+#####
+#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
+#  Copyright (C) 2003-2010 Frederico Caldeira Knabben
+#
+#  == BEGIN LICENSE ==
+#
+#  Licensed under the terms of any of the following licenses at your
+#  choice:
+#
+#   - GNU General Public License Version 2 or later (the "GPL")
+#     http://www.gnu.org/licenses/gpl.html
+#
+#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+#     http://www.gnu.org/licenses/lgpl.html
+#
+#   - Mozilla Public License Version 1.1 or later (the "MPL")
+#     http://www.mozilla.org/MPL/MPL-1.1.html
+#
+#  == END LICENSE ==
+#
+#  This is the File Manager Connector for Perl.
+#####
+
+# image data save dir
+$img_dir	= './temp/';
+
+
+# File size max(unit KB)
+$MAX_CONTENT_SIZE =  30000;
+
+# After file is uploaded, sometimes it is required to change its permissions
+# so that it was possible to access it at the later time.
+# If possible, it is recommended to set more restrictive permissions, like 0755.
+# Set to 0 to disable this feature.
+$CHMOD_ON_UPLOAD = 0777;
+
+# See comments above.
+# Used when creating folders that does not exist.
+$CHMOD_ON_FOLDER_CREATE = 0755;
+
+# Filelock (1=use,0=not use)
+$PM{'flock'}		= '1';
+
+
+# upload Content-Type list
+my %UPLOAD_CONTENT_TYPE_LIST = (
+	'image/(x-)?png'						=>	'png',	# PNG image
+	'image/p?jpe?g'							=>	'jpg',	# JPEG image
+	'image/gif'								=>	'gif',	# GIF image
+	'image/x-xbitmap'						=>	'xbm',	# XBM image
+
+	'image/(x-(MS-)?)?bmp'					=>	'bmp',	# Windows BMP image
+	'image/pict'							=>	'pict',	# Macintosh PICT image
+	'image/tiff'							=>	'tif',	# TIFF image
+	'application/pdf'						=>	'pdf',	# PDF image
+	'application/x-shockwave-flash'			=>	'swf',	# Shockwave Flash
+
+	'video/(x-)?msvideo'					=>	'avi',	# Microsoft Video
+	'video/quicktime'						=>	'mov',	# QuickTime Video
+	'video/mpeg'							=>	'mpeg',	# MPEG Video
+	'video/x-mpeg2'							=>	'mpv2', # MPEG2 Video
+
+	'audio/(x-)?midi?'						=>	'mid',	# MIDI Audio
+	'audio/(x-)?wav'						=>	'wav',	# WAV Audio
+	'audio/basic'							=>	'au',	# ULAW Audio
+	'audio/mpeg'							=>	'mpga',	# MPEG Audio
+
+	'application/(x-)?zip(-compressed)?'	=>	'zip',	# ZIP Compress
+
+	'text/html'								=>	'html', # HTML
+	'text/plain'							=>	'txt',	# TEXT
+	'(?:application|text)/(?:rtf|richtext)'	=>	'rtf',	# RichText
+
+	'application/msword'					=>	'doc',	# Microsoft Word
+	'application/vnd.ms-excel'				=>	'xls',	# Microsoft Excel
+
+	''
+);
+
+# Upload is permitted.
+# A regular expression is possible.
+my %UPLOAD_EXT_LIST = (
+	'png'					=>	'PNG image',
+	'p?jpe?g|jpe|jfif|pjp'	=>	'JPEG image',
+	'gif'					=>	'GIF image',
+	'xbm'					=>	'XBM image',
+
+	'bmp|dib|rle'			=>	'Windows BMP image',
+	'pi?ct'					=>	'Macintosh PICT image',
+	'tiff?'					=>	'TIFF image',
+	'pdf'					=>	'PDF image',
+	'swf'					=>	'Shockwave Flash',
+
+	'avi'					=>	'Microsoft Video',
+	'moo?v|qt'				=>	'QuickTime Video',
+	'm(p(e?gv?|e|v)|1v)'	=>	'MPEG Video',
+	'mp(v2|2v)'				=>	'MPEG2 Video',
+
+	'midi?|kar|smf|rmi|mff'	=>	'MIDI Audio',
+	'wav'					=>	'WAVE Audio',
+	'au|snd'				=>	'ULAW Audio',
+	'mp(e?ga|2|a|3)|abs'	=>	'MPEG Audio',
+
+	'zip'					=>	'ZIP Compress',
+	'lzh'					=>	'LZH Compress',
+	'cab'					=>	'CAB Compress',
+
+	'd?html?'				=>	'HTML',
+	'rtf|rtx'				=>	'RichText',
+	'txt|text'				=>	'Text',
+
+	''
+);
+
+
+# sjis or euc
+my $CHARCODE = 'sjis';
+
+$TRANS_2BYTE_CODE = 0;
+
+##############################################################################
+# Summary
+#
+# Form Read input
+#
+# Parameters
+# Returns
+# Memo
+##############################################################################
+sub read_input
+{
+eval("use File::Copy;");
+eval("use File::Path;");
+
+	my ($FORM) = @_;
+
+	if (defined $CHMOD_ON_FOLDER_CREATE && !$CHMOD_ON_FOLDER_CREATE) {
+		mkdir("$img_dir");
+	}
+	else {
+		umask(000);
+		if (defined $CHMOD_ON_FOLDER_CREATE) {
+			mkdir("$img_dir",$CHMOD_ON_FOLDER_CREATE);
+		}
+		else {
+			mkdir("$img_dir",0777);
+		}
+	}
+
+	undef $img_data_exists;
+	undef @NEWFNAMES;
+	undef @NEWFNAME_DATA;
+
+	if($ENV{'CONTENT_LENGTH'} > 10000000 || $ENV{'CONTENT_LENGTH'} > $MAX_CONTENT_SIZE * 1024) {
+		&upload_error(
+			'Size Error',
+			sprintf(
+				"Transmitting size is too large.MAX <strong>%d KB</strong> Now Size <strong>%d KB</strong>(<strong>%d bytes</strong> Over)",
+				$MAX_CONTENT_SIZE,
+				int($ENV{'CONTENT_LENGTH'} / 1024),
+				$ENV{'CONTENT_LENGTH'} - $MAX_CONTENT_SIZE * 1024
+			)
+		);
+	}
+
+	my $Buffer;
+	if($ENV{'CONTENT_TYPE'} =~ /multipart\/form-data/) {
+		# METHOD POST only
+		return	unless($ENV{'CONTENT_LENGTH'});
+
+		binmode(STDIN);
+		# STDIN A pause character is detected.'(MacIE3.0 boundary of $ENV{'CONTENT_TYPE'} cannot be trusted.)
+		my $Boundary = <STDIN>;
+		$Boundary =~ s/\x0D\x0A//;
+		$Boundary = quotemeta($Boundary);
+		while(<STDIN>) {
+			if(/^\s*Content-Disposition:/i) {
+				my($name,$ContentType,$FileName);
+				# form data get
+				if(/\bname="([^"]+)"/i || /\bname=([^\s:;]+)/i) {
+					$name = $1;
+					$name	=~ tr/+/ /;
+					$name	=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
+					&Encode(\$name);
+				}
+				if(/\bfilename="([^"]*)"/i || /\bfilename=([^\s:;]*)/i) {
+					$FileName = $1 || 'unknown';
+				}
+				# head read
+				while(<STDIN>) {
+					last	if(! /\w/);
+					if(/^\s*Content-Type:\s*"([^"]+)"/i || /^\s*Content-Type:\s*([^\s:;]+)/i) {
+						$ContentType = $1;
+					}
+				}
+				# body read
+				$value = "";
+				while(<STDIN>) {
+					last	if(/^$Boundary/o);
+					$value .= $_;
+				};
+				$lastline = $_;
+				$value =~s /\x0D\x0A$//;
+				if($value ne '') {
+					if($FileName || $ContentType) {
+						$img_data_exists = 1;
+						(
+							$FileName,		#
+							$Ext,			#
+							$Length,		#
+							$ImageWidth,	#
+							$ImageHeight,	#
+							$ContentName	#
+						) = &CheckContentType(\$value,$FileName,$ContentType);
+
+						$FORM{$name}	= $FileName;
+						$new_fname		= $FileName;
+						push(@NEWFNAME_DATA,"$FileName\t$Ext\t$Length\t$ImageWidth\t$ImageHeight\t$ContentName");
+
+						# Multi-upload correspondence
+						push(@NEWFNAMES,$new_fname);
+						open(OUT,">$img_dir/$new_fname");
+						binmode(OUT);
+						eval "flock(OUT,2);" if($PM{'flock'} == 1);
+						print OUT $value;
+						eval "flock(OUT,8);" if($PM{'flock'} == 1);
+						close(OUT);
+
+					} elsif($name) {
+						$value	=~ tr/+/ /;
+						$value	=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
+						&Encode(\$value,'trans');
+						$FORM{$name} .= "\0"			if(defined($FORM{$name}));
+						$FORM{$name} .= $value;
+					}
+				}
+			};
+			last if($lastline =~ /^$Boundary\-\-/o);
+		}
+	} elsif($ENV{'CONTENT_LENGTH'}) {
+		read(STDIN,$Buffer,$ENV{'CONTENT_LENGTH'});
+	}
+	foreach(split(/&/,$Buffer),split(/&/,$ENV{'QUERY_STRING'})) {
+		my($name, $value) = split(/=/);
+		$name	=~ tr/+/ /;
+		$name	=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
+		$value	=~ tr/+/ /;
+		$value	=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
+
+		&Encode(\$name);
+		&Encode(\$value,'trans');
+		$FORM{$name} .= "\0"			if(defined($FORM{$name}));
+		$FORM{$name} .= $value;
+
+	}
+
+}
+
+##############################################################################
+# Summary
+#
+#	CheckContentType
+#
+# Parameters
+# Returns
+# Memo
+##############################################################################
+sub CheckContentType
+{
+
+	my($DATA,$FileName,$ContentType) = @_;
+	my($Ext,$ImageWidth,$ImageHeight,$ContentName,$Infomation);
+	my $DataLength = length($$DATA);
+
+	# An unknown file type
+
+	$_ = $ContentType;
+	my $UnknownType = (
+		!$_
+		|| /^application\/(x-)?macbinary$/i
+		|| /^application\/applefile$/i
+		|| /^application\/octet-stream$/i
+		|| /^text\/plane$/i
+		|| /^x-unknown-content-type/i
+	);
+
+	# MacBinary(Mac Unnecessary data are deleted.)
+	if($UnknownType || $ENV{'HTTP_USER_AGENT'} =~ /Macintosh|Mac_/) {
+		if($DataLength > 128 && !unpack("C",substr($$DATA,0,1)) && !unpack("C",substr($$DATA,74,1)) && !unpack("C",substr($$DATA,82,1)) ) {
+			my $MacBinary_ForkLength = unpack("N", substr($$DATA, 83, 4));		# ForkLength Get
+			my $MacBinary_FileName = quotemeta(substr($$DATA, 2, unpack("C",substr($$DATA, 1, 1))));
+			if($MacBinary_FileName && $MacBinary_ForkLength && $DataLength >= $MacBinary_ForkLength + 128
+					&& ($FileName =~ /$MacBinary_FileName/i || substr($$DATA,102,4) eq 'mBIN')) {	# DATA TOP 128byte MacBinary!!
+				$$DATA				= substr($$DATA,128,$MacBinary_ForkLength);
+				my $ResourceLength	= $DataLength - $MacBinary_ForkLength - 128;
+				$DataLength			= $MacBinary_ForkLength;
+			}
+		}
+	}
+
+	# A file name is changed into EUC.
+#	&jcode::convert(\$FileName,'euc',$FormCodeDefault);
+#	&jcode::h2z_euc(\$FileName);
+	$FileName =~ s/^.*\\//;					# Windows, Mac
+	$FileName =~ s/^.*\///;					# UNIX
+	$FileName =~ s/&/&amp;/g;
+	$FileName =~ s/"/&quot;/g;
+	$FileName =~ s/</&lt;/g;
+	$FileName =~ s/>/&gt;/g;
+#
+#	if($CHARCODE ne 'euc') {
+#		&jcode::convert(\$FileName,$CHARCODE,'euc');
+#	}
+
+	# An extension is extracted and it changes into a small letter.
+	my $FileExt;
+	if($FileName =~ /\.(\w+)$/) {
+		$FileExt = $1;
+		$FileExt =~ tr/A-Z/a-z/;
+	}
+
+	# Executable file detection (ban on upload)
+	if($$DATA =~ /^MZ/) {
+		$Ext = 'exe';
+	}
+	# text
+	if(!$Ext && ($UnknownType || $ContentType =~ /^text\//i || $ContentType =~ /^application\/(?:rtf|richtext)$/i || $ContentType =~ /^image\/x-xbitmap$/i)
+				&& ! $$DATA =~ /[\000-\006\177\377]/) {
+#		$$DATA =~ s/\x0D\x0A/\n/g;
+#		$$DATA =~ tr/\x0D\x0A/\n\n/;
+#
+#		if(
+#			$$DATA =~ /<\s*SCRIPT(?:.|\n)*?>/i
+#				|| $$DATA =~ /<\s*(?:.|\n)*?\bONLOAD\s*=(?:.|\n)*?>/i
+#				|| $$DATA =~ /<\s*(?:.|\n)*?\bONCLICK\s*=(?:.|\n)*?>/i
+#				) {
+#			$Infomation = '(JavaScript contains)';
+#		}
+#		if($$DATA =~ /<\s*TABLE(?:.|\n)*?>/i
+#				|| $$DATA =~ /<\s*BLINK(?:.|\n)*?>/i
+#				|| $$DATA =~ /<\s*MARQUEE(?:.|\n)*?>/i
+#				|| $$DATA =~ /<\s*OBJECT(?:.|\n)*?>/i
+#				|| $$DATA =~ /<\s*EMBED(?:.|\n)*?>/i
+#				|| $$DATA =~ /<\s*FRAME(?:.|\n)*?>/i
+#				|| $$DATA =~ /<\s*APPLET(?:.|\n)*?>/i
+#				|| $$DATA =~ /<\s*FORM(?:.|\n)*?>/i
+#				|| $$DATA =~ /<\s*(?:.|\n)*?\bSRC\s*=(?:.|\n)*?>/i
+#				|| $$DATA =~ /<\s*(?:.|\n)*?\bDYNSRC\s*=(?:.|\n)*?>/i
+#				) {
+#			$Infomation = '(the HTML tag which is not safe is included)';
+#		}
+
+		if($FileExt =~ /^txt$/i || $FileExt =~ /^cgi$/i || $FileExt =~ /^pl$/i) {								# Text File
+			$Ext = 'txt';
+		} elsif($ContentType =~ /^text\/html$/i || $FileExt =~ /html?/i || $$DATA =~ /<\s*HTML(?:.|\n)*?>/i) {	# HTML File
+			$Ext = 'html';
+		} elsif($ContentType =~ /^image\/x-xbitmap$/i || $FileExt =~ /^xbm$/i) {								# XBM(x-BitMap) Image
+			my $XbmName = $1;
+			my ($XbmWidth, $XbmHeight);
+			if($$DATA =~ /\#define\s*$XbmName\_width\s*(\d+)/i) {
+				$XbmWidth = $1;
+			}
+			if($$DATA =~ /\#define\s*$XbmName\_height\s*(\d+)/i) {
+				$XbmHeight = $1;
+			}
+			if($XbmWidth && $XbmHeight) {
+				$Ext = 'xbm';
+				$ImageWidth		= $XbmWidth;
+				$ImageHeight	= $XbmHeight;
+			}
+		} else {		#
+			$Ext = 'txt';
+		}
+	}
+
+	# image
+	if(!$Ext && ($UnknownType || $ContentType =~ /^image\//i)) {
+		# PNG
+		if($$DATA =~ /^\x89PNG\x0D\x0A\x1A\x0A/) {
+			if(substr($$DATA, 12, 4) eq 'IHDR') {
+				$Ext = 'png';
+				($ImageWidth, $ImageHeight) = unpack("N2", substr($$DATA, 16, 8));
+			}
+		} elsif($$DATA =~ /^GIF8(?:9|7)a/) {															# GIF89a(modified), GIF89a, GIF87a
+			$Ext = 'gif';
+			($ImageWidth, $ImageHeight) = unpack("v2", substr($$DATA, 6, 4));
+		} elsif($$DATA =~ /^II\x2a\x00\x08\x00\x00\x00/ || $$DATA =~ /^MM\x00\x2a\x00\x00\x00\x08/) {	# TIFF
+			$Ext = 'tif';
+		} elsif($$DATA =~ /^BM/) {																		# BMP
+			$Ext = 'bmp';
+		} elsif($$DATA =~ /^\xFF\xD8\xFF/ || $$DATA =~ /JFIF/) {										# JPEG
+			my $HeaderPoint = index($$DATA, "\xFF\xD8\xFF", 0);
+			my $Point = $HeaderPoint + 2;
+			while($Point < $DataLength) {
+				my($Maker, $MakerType, $MakerLength) = unpack("C2n",substr($$DATA,$Point,4));
+				if($Maker != 0xFF || $MakerType == 0xd9 || $MakerType == 0xda) {
+					last;
+				} elsif($MakerType >= 0xC0 && $MakerType <= 0xC3) {
+					$Ext = 'jpg';
+					($ImageHeight, $ImageWidth) = unpack("n2", substr($$DATA, $Point + 5, 4));
+					if($HeaderPoint > 0) {
+						$$DATA = substr($$DATA, $HeaderPoint);
+						$DataLength = length($$DATA);
+					}
+					last;
+				} else {
+					$Point += $MakerLength + 2;
+				}
+			}
+		}
+	}
+
+	# audio
+	if(!$Ext && ($UnknownType || $ContentType =~ /^audio\//i)) {
+		# MIDI Audio
+		if($$DATA =~ /^MThd/) {
+			$Ext = 'mid';
+		} elsif($$DATA =~ /^\x2esnd/) {		# ULAW Audio
+			$Ext = 'au';
+		} elsif($$DATA =~ /^RIFF/ || $$DATA =~ /^ID3/ && $$DATA =~ /RIFF/) {
+			my $HeaderPoint = index($$DATA, "RIFF", 0);
+			$_ = substr($$DATA, $HeaderPoint + 8, 8);
+			if(/^WAVEfmt $/) {
+				# WAVE
+				if(unpack("V",substr($$DATA, $HeaderPoint + 16, 4)) == 16) {
+					$Ext = 'wav';
+				} else {					# RIFF WAVE MP3
+					$Ext = 'mp3';
+				}
+			} elsif(/^RMIDdata$/) {			# RIFF MIDI
+				$Ext = 'rmi';
+			} elsif(/^RMP3data$/) {			# RIFF MP3
+				$Ext = 'rmp';
+			}
+			if($ContentType =~ /^audio\//i) {
+				$Infomation .= '(RIFF '. substr($$DATA, $HeaderPoint + 8, 4). ')';
+			}
+		}
+	}
+
+	# a binary file
+	unless ($Ext) {
+		# PDF image
+		if($$DATA =~ /^\%PDF/) {
+			# Picture size is not measured.
+			$Ext = 'pdf';
+		} elsif($$DATA =~ /^FWS/) {		# Shockwave Flash
+			$Ext = 'swf';
+		} elsif($$DATA =~ /^RIFF/ || $$DATA =~ /^ID3/ && $$DATA =~ /RIFF/) {
+			my $HeaderPoint = index($$DATA, "RIFF", 0);
+			$_ = substr($$DATA,$HeaderPoint + 8, 8);
+			# AVI
+			if(/^AVI LIST$/) {
+				$Ext = 'avi';
+			}
+			if($ContentType =~ /^video\//i) {
+				$Infomation .= '(RIFF '. substr($$DATA, $HeaderPoint + 8, 4). ')';
+			}
+		} elsif($$DATA =~ /^PK/) {			# ZIP Compress File
+			$Ext = 'zip';
+		} elsif($$DATA =~ /^MSCF/) {		# CAB Compress File
+			$Ext = 'cab';
+		} elsif($$DATA =~ /^Rar\!/) {		# RAR Compress File
+			$Ext = 'rar';
+		} elsif(substr($$DATA, 2, 5) =~ /^\-lh(\d+|d)\-$/) {		# LHA Compress File
+			$Infomation .= "(lh$1)";
+			$Ext = 'lzh';
+		} elsif(substr($$DATA, 325, 25) eq "Apple Video Media Handler" || substr($$DATA, 325, 30) eq "Apple \x83\x72\x83\x66\x83\x49\x81\x45\x83\x81\x83\x66\x83\x42\x83\x41\x83\x6E\x83\x93\x83\x68\x83\x89") {
+			# QuickTime
+			$Ext = 'mov';
+		}
+	}
+
+	# Header analysis failure
+	unless ($Ext) {
+		# It will be followed if it applies for the MIME type from the browser.
+		foreach (keys %UPLOAD_CONTENT_TYPE_LIST) {
+			next unless ($_);
+			if($ContentType =~ /^$_$/i) {
+				$Ext = $UPLOAD_CONTENT_TYPE_LIST{$_};
+				$ContentName = &CheckContentExt($Ext);
+				if(
+					grep {$_ eq $Ext;} (
+						'png',
+						'gif',
+						'jpg',
+						'xbm',
+						'tif',
+						'bmp',
+						'pdf',
+						'swf',
+						'mov',
+						'zip',
+						'cab',
+						'lzh',
+						'rar',
+						'mid',
+						'rmi',
+						'au',
+						'wav',
+						'avi',
+						'exe'
+					)
+				) {
+					$Infomation .= ' / Header analysis failure';
+				}
+				if($Ext ne $FileExt && &CheckContentExt($FileExt) eq $ContentName) {
+					$Ext = $FileExt;
+				}
+				last;
+			}
+		}
+		# a MIME type is unknown--It judges from an extension.
+		unless ($Ext) {
+			$ContentName = &CheckContentExt($FileExt);
+			if($ContentName) {
+				$Ext = $FileExt;
+				$Infomation .= ' /	MIME type is unknown('. $ContentType. ')';
+				last;
+			}
+		}
+	}
+
+#	$ContentName = &CheckContentExt($Ext)	unless($ContentName);
+#	if($Ext && $ContentName) {
+#		$ContentName .=  $Infomation;
+#	} else {
+#		&upload_error(
+#			'Extension Error',
+#			"$FileName A not corresponding extension ($Ext)<BR>The extension which can be responded ". join(',', sort values(%UPLOAD_EXT_LIST))
+#		);
+#	}
+
+#	# SSI Tag Deletion
+#	if($Ext =~ /.?html?/ && $$DATA =~ /<\!/) {
+#		foreach (
+#			'config',
+#			'echo',
+#			'exec',
+#			'flastmod',
+#			'fsize',
+#			'include'
+#		) {
+#			$$DATA =~ s/\#\s*$_/\&\#35\;$_/ig
+#		}
+#	}
+
+	return (
+		$FileName,
+		$Ext,
+		int($DataLength / 1024 + 1),
+		$ImageWidth,
+		$ImageHeight,
+		$ContentName
+	);
+}
+
+##############################################################################
+# Summary
+#
+# Extension discernment
+#
+# Parameters
+# Returns
+# Memo
+##############################################################################
+
+sub CheckContentExt
+{
+
+	my($Ext) = @_;
+	my $ContentName;
+	foreach (keys %UPLOAD_EXT_LIST) {
+		next	unless ($_);
+		if($_ && $Ext =~ /^$_$/) {
+			$ContentName = $UPLOAD_EXT_LIST{$_};
+			last;
+		}
+	}
+	return $ContentName;
+
+}
+
+##############################################################################
+# Summary
+#
+# Form decode
+#
+# Parameters
+# Returns
+# Memo
+##############################################################################
+sub Encode
+{
+
+	my($value,$Trans) = @_;
+
+#	my $FormCode = &jcode::getcode($value) || $FormCodeDefault;
+#	$FormCodeDefault ||= $FormCode;
+#
+#	if($Trans && $TRANS_2BYTE_CODE) {
+#		if($FormCode ne 'euc') {
+#			&jcode::convert($value, 'euc', $FormCode);
+#		}
+#		&jcode::tr(
+#			$value,
+#			"\xA3\xB0-\xA3\xB9\xA3\xC1-\xA3\xDA\xA3\xE1-\xA3\xFA",
+#			'0-9A-Za-z'
+#		);
+#		if($CHARCODE ne 'euc') {
+#			&jcode::convert($value,$CHARCODE,'euc');
+#		}
+#	} else {
+#		if($CHARCODE ne $FormCode) {
+#			&jcode::convert($value,$CHARCODE,$FormCode);
+#		}
+#	}
+#	if($CHARCODE eq 'euc') {
+#		&jcode::h2z_euc($value);
+#	} elsif($CHARCODE eq 'sjis') {
+#		&jcode::h2z_sjis($value);
+#	}
+
+}
+
+##############################################################################
+# Summary
+#
+# Error Msg
+#
+# Parameters
+# Returns
+# Memo
+##############################################################################
+
+sub upload_error
+{
+
+	local($error_message)	= $_[0];
+	local($error_message2)	= $_[1];
+
+	print "Content-type: text/html\n\n";
+	print<<EOF;
+<HTML>
+<HEAD>
+<TITLE>Error Message</TITLE></HEAD>
+<BODY>
+<table border="1" cellspacing="10" cellpadding="10">
+	<TR bgcolor="#0000B0">
+	<TD bgcolor="#0000B0" NOWRAP><font size="-1" color="white"><B>Error Message</B></font></TD>
+	</TR>
+</table>
+<UL>
+<H4> $error_message </H4>
+$error_message2 <BR>
+</UL>
+</BODY>
+</HTML>
+EOF
+	&rm_tmp_uploaded_files; 		# Image Temporary deletion
+	exit;
+}
+
+##############################################################################
+# Summary
+#
+# Image Temporary deletion
+#
+# Parameters
+# Returns
+# Memo
+##############################################################################
+
+sub rm_tmp_uploaded_files
+{
+	if($img_data_exists == 1){
+		sleep 1;
+		foreach $fname_list(@NEWFNAMES) {
+			if(-e "$img_dir/$fname_list") {
+				unlink("$img_dir/$fname_list");
+			}
+		}
+	}
+
+}
+1;
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/util.pl	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/util.pl	Tue Sep 20 05:46:18 2016 +0200
@@ -1,66 +1,66 @@
-#####
-#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2010 Frederico Caldeira Knabben
-#
-#  == BEGIN LICENSE ==
-#
-#  Licensed under the terms of any of the following licenses at your
-#  choice:
-#
-#   - GNU General Public License Version 2 or later (the "GPL")
-#     http://www.gnu.org/licenses/gpl.html
-#
-#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
-#     http://www.gnu.org/licenses/lgpl.html
-#
-#   - Mozilla Public License Version 1.1 or later (the "MPL")
-#     http://www.mozilla.org/MPL/MPL-1.1.html
-#
-#  == END LICENSE ==
-#
-#  This is the File Manager Connector for Perl.
-#####
-
-sub RemoveFromStart
-{
-	local($sourceString, $charToRemove) = @_;
-	$sPattern = '^' . $charToRemove . '+' ;
-	$sourceString =~ s/^$charToRemove+//g;
-	return $sourceString;
-}
-
-sub RemoveFromEnd
-{
-	local($sourceString, $charToRemove) = @_;
-	$sPattern = $charToRemove . '+$' ;
-	$sourceString =~ s/$charToRemove+$//g;
-	return $sourceString;
-}
-
-sub ConvertToXmlAttribute
-{
-	local($value) = @_;
-	return(&specialchar_cnv($value));
-}
-
-sub specialchar_cnv
-{
-	local($ch) = @_;
-
-	$ch =~ s/&/&amp;/g;		# &
-	$ch =~ s/\"/&quot;/g;	#"
-	$ch =~ s/\'/&#39;/g;	# '
-	$ch =~ s/</&lt;/g;		# <
-	$ch =~ s/>/&gt;/g;		# >
-	return($ch);
-}
-
-sub JS_cnv
-{
-	local($ch) = @_;
-
-	$ch =~ s/\"/\\\"/g;	#"
-	return($ch);
-}
-
-1;
+#####
+#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
+#  Copyright (C) 2003-2010 Frederico Caldeira Knabben
+#
+#  == BEGIN LICENSE ==
+#
+#  Licensed under the terms of any of the following licenses at your
+#  choice:
+#
+#   - GNU General Public License Version 2 or later (the "GPL")
+#     http://www.gnu.org/licenses/gpl.html
+#
+#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+#     http://www.gnu.org/licenses/lgpl.html
+#
+#   - Mozilla Public License Version 1.1 or later (the "MPL")
+#     http://www.mozilla.org/MPL/MPL-1.1.html
+#
+#  == END LICENSE ==
+#
+#  This is the File Manager Connector for Perl.
+#####
+
+sub RemoveFromStart
+{
+	local($sourceString, $charToRemove) = @_;
+	$sPattern = '^' . $charToRemove . '+' ;
+	$sourceString =~ s/^$charToRemove+//g;
+	return $sourceString;
+}
+
+sub RemoveFromEnd
+{
+	local($sourceString, $charToRemove) = @_;
+	$sPattern = $charToRemove . '+$' ;
+	$sourceString =~ s/$charToRemove+$//g;
+	return $sourceString;
+}
+
+sub ConvertToXmlAttribute
+{
+	local($value) = @_;
+	return(&specialchar_cnv($value));
+}
+
+sub specialchar_cnv
+{
+	local($ch) = @_;
+
+	$ch =~ s/&/&amp;/g;		# &
+	$ch =~ s/\"/&quot;/g;	#"
+	$ch =~ s/\'/&#39;/g;	# '
+	$ch =~ s/</&lt;/g;		# <
+	$ch =~ s/>/&gt;/g;		# >
+	return($ch);
+}
+
+sub JS_cnv
+{
+	local($ch) = @_;
+
+	$ch =~ s/\"/\\\"/g;	#"
+	return($ch);
+}
+
+1;
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/php/config.php	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/php/config.php	Tue Sep 20 05:46:18 2016 +0200
@@ -119,6 +119,9 @@
 
 */
 
+// WARNING: It is recommended to remove swf extension from the list of allowed extensions.
+// SWF files can be used to perform XSS attack.
+
 $Config['AllowedExtensions']['File']	= array('7z', 'aiff', 'asf', 'avi', 'bmp', 'csv', 'doc', 'fla', 'flv', 'gif', 'gz', 'gzip', 'jpeg', 'jpg', 'mid', 'mov', 'mp3', 'mp4', 'mpc', 'mpeg', 'mpg', 'ods', 'odt', 'pdf', 'png', 'ppt', 'pxd', 'qt', 'ram', 'rar', 'rm', 'rmi', 'rmvb', 'rtf', 'sdc', 'sitd', 'swf', 'sxc', 'sxw', 'tar', 'tgz', 'tif', 'tiff', 'txt', 'vsd', 'wav', 'wma', 'wmv', 'xls', 'xml', 'zip') ;
 $Config['DeniedExtensions']['File']		= array() ;
 $Config['FileTypesPath']['File']		= $Config['UserFilesPath'] . 'file/' ;
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/php/connector.php	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/php/connector.php	Tue Sep 20 05:46:18 2016 +0200
@@ -51,7 +51,7 @@
 
 	// Check if it is an allowed command
 	if ( ! IsAllowedCommand( $sCommand ) )
-		SendError( 1, 'The "' . $sCommand . '" command isn\'t allowed' ) ;
+		SendError( 1, 'The requested command isn\'t allowed' ) ;
 
 	// Check if it is an allowed type.
 	if ( !IsAllowedType( $sResourceType ) )
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/php/upload.php	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/php/upload.php	Tue Sep 20 05:46:18 2016 +0200
@@ -47,7 +47,7 @@
 
 // Is enabled the upload?
 if ( ! IsAllowedCommand( $sCommand ) )
-	SendUploadResults( '1', '', '', 'The ""' . $sCommand . '"" command isn\'t allowed' ) ;
+	SendUploadResults( '1', '', '', 'The requested command isn\'t allowed' ) ;
 
 // Check if it is an allowed type.
 if ( !IsAllowedType( $sType ) )
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/py/config.py	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/py/config.py	Tue Sep 20 05:46:18 2016 +0200
@@ -117,6 +117,9 @@
 #		Attention: The above 'QuickUploadPath' must point to the same directory.
 #		Attention: It must end with a slash: '/'
 
+# WARNING: It is recommended to remove swf extension from the list of allowed extensions.
+# SWF files can be used to perform XSS attack.
+
 AllowedExtensions['File'] 		= ['7z','aiff','asf','avi','bmp','csv','doc','fla','flv','gif','gz','gzip','jpeg','jpg','mid','mov','mp3','mp4','mpc','mpeg','mpg','ods','odt','pdf','png','ppt','pxd','qt','ram','rar','rm','rmi','rmvb','rtf','sdc','sitd','swf','sxc','sxw','tar','tgz','tif','tiff','txt','vsd','wav','wma','wmv','xls','xml','zip']
 DeniedExtensions['File'] 		= []
 FileTypesPath['File'] 			= UserFilesPath + 'file/'
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/py/connector.py	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/py/connector.py	Tue Sep 20 05:46:18 2016 +0200
@@ -63,7 +63,7 @@
 
 		# Check if it is an allowed command
 		if ( not command in Config.ConfigAllowedCommands ):
-			return self.sendError( 1, 'The %s command isn\'t allowed' % command )
+			return self.sendError( 1, 'The requested command isn\'t allowed' )
 
 		if ( not resourceType in Config.ConfigAllowedTypes  ):
 			return self.sendError( 1, 'Invalid type specified' )
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/py/upload.py	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/py/upload.py	Tue Sep 20 05:46:18 2016 +0200
@@ -48,7 +48,7 @@
 
 		# Check if it is an allowed command
 		if ( not command in Config.ConfigAllowedCommands ):
-			return self.sendUploadResults( 1, '', '', 'The %s command isn\'t allowed' % command )
+			return self.sendUploadResults( 1, '', '', 'The requested command isn\'t allowed' )
 
 		if ( not resourceType in Config.ConfigAllowedTypes  ):
 			return self.sendUploadResults( 1, '', '', 'Invalid type specified' )
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/js/fckeditorcode_gecko.js	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/js/fckeditorcode_gecko.js	Tue Sep 20 05:46:18 2016 +0200
@@ -35,7 +35,7 @@
 var FCKDomTools={MoveChildren:function(A,B,C){if (A==B) return;var D;if (C){while ((D=A.lastChild)) B.insertBefore(A.removeChild(D),B.firstChild);}else{while ((D=A.firstChild)) B.appendChild(A.removeChild(D));}},MoveNode:function(A,B,C){if (C) B.insertBefore(FCKDomTools.RemoveNode(A),B.firstChild);else B.appendChild(FCKDomTools.RemoveNode(A));},TrimNode:function(A){this.LTrimNode(A);this.RTrimNode(A);},LTrimNode:function(A){var B;while ((B=A.firstChild)){if (B.nodeType==3){var C=B.nodeValue.LTrim();var D=B.nodeValue.length;if (C.length==0){A.removeChild(B);continue;}else if (C.length<D){B.splitText(D-C.length);A.removeChild(A.firstChild);}};break;}},RTrimNode:function(A){var B;while ((B=A.lastChild)){if (B.nodeType==3){var C=B.nodeValue.RTrim();var D=B.nodeValue.length;if (C.length==0){B.parentNode.removeChild(B);continue;}else if (C.length<D){B.splitText(C.length);A.lastChild.parentNode.removeChild(A.lastChild);}};break;};if (!FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsOpera){B=A.lastChild;if (B&&B.nodeType==1&&B.nodeName.toLowerCase()=='br'){B.parentNode.removeChild(B);}}},RemoveNode:function(A,B){if (B){var C;while ((C=A.firstChild)) A.parentNode.insertBefore(A.removeChild(C),A);};return A.parentNode.removeChild(A);},GetFirstChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.firstChild;while(C){if (C.nodeType==1&&C.tagName.Equals.apply(C.tagName,B)) return C;C=C.nextSibling;};return null;},GetLastChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.lastChild;while(C){if (C.nodeType==1&&(!B||C.tagName.Equals(B))) return C;C=C.previousSibling;};return null;},GetPreviousSourceElement:function(A,B,C,D){if (!A) return null;if (C&&A.nodeType==1&&A.nodeName.IEquals(C)) return null;if (A.previousSibling) A=A.previousSibling;else return this.GetPreviousSourceElement(A.parentNode,B,C,D);while (A){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (!D||!A.nodeName.IEquals(D)) return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;if (A.lastChild) A=A.lastChild;else return this.GetPreviousSourceElement(A,B,C,D);};return null;},GetNextSourceElement:function(A,B,C,D,E){while((A=this.GetNextSourceNode(A,E))){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (D&&A.nodeName.IEquals(D)) return this.GetNextSourceElement(A,B,C,D);return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;};return null;},GetNextSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.firstChild) E=A.firstChild;else{if (D&&A==D) return null;E=A.nextSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetNextSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetNextSourceNode(E,false,C,D);return E;},GetPreviousSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.lastChild) E=A.lastChild;else{if (D&&A==D) return null;E=A.previousSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetPreviousSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetPreviousSourceNode(E,false,C,D);return E;},InsertAfterNode:function(A,B){return A.parentNode.insertBefore(B,A.nextSibling);},GetParents:function(A){var B=[];while (A){B.unshift(A);A=A.parentNode;};return B;},GetCommonParents:function(A,B){var C=this.GetParents(A);var D=this.GetParents(B);var E=[];for (var i=0;i<C.length;i++){if (C[i]==D[i]) E.push(C[i]);};return E;},GetCommonParentNode:function(A,B,C){var D={};if (!C.pop) C=[C];while (C.length>0) D[C.pop().toLowerCase()]=1;var E=this.GetCommonParents(A,B);var F=null;while ((F=E.pop())){if (D[F.nodeName.toLowerCase()]) return F;};return null;},GetIndexOf:function(A){var B=A.parentNode?A.parentNode.firstChild:null;var C=-1;while (B){C++;if (B==A) return C;B=B.nextSibling;};return-1;},PaddingNode:null,EnforcePaddingNode:function(A,B){try{if (!A||!A.body) return;}catch (e){return;};this.CheckAndRemovePaddingNode(A,B,true);try{if (A.body.lastChild&&(A.body.lastChild.nodeType!=1||A.body.lastChild.tagName.toLowerCase()==B.toLowerCase())) return;}catch (e){return;};var C=A.createElement(B);if (FCKBrowserInfo.IsGecko&&FCKListsLib.NonEmptyBlockElements[B]) FCKTools.AppendBogusBr(C);this.PaddingNode=C;if (A.body.childNodes.length==1&&A.body.firstChild.nodeType==1&&A.body.firstChild.tagName.toLowerCase()=='br'&&(A.body.firstChild.getAttribute('_moz_dirty')!=null||A.body.firstChild.getAttribute('type')=='_moz')) A.body.replaceChild(C,A.body.firstChild);else A.body.appendChild(C);},CheckAndRemovePaddingNode:function(A,B,C){var D=this.PaddingNode;if (!D) return;try{if (D.parentNode!=A.body||D.tagName.toLowerCase()!=B||(D.childNodes.length>1)||(D.firstChild&&D.firstChild.nodeValue!='\xa0'&&String(D.firstChild.tagName).toLowerCase()!='br')){this.PaddingNode=null;return;}}catch (e){this.PaddingNode=null;return;};if (!C){if (D.parentNode.childNodes.length>1) D.parentNode.removeChild(D);this.PaddingNode=null;}},HasAttribute:function(A,B){if (A.hasAttribute) return A.hasAttribute(B);else{var C=A.attributes[B];return (C!=undefined&&C.specified);}},HasAttributes:function(A){var B=A.attributes;for (var i=0;i<B.length;i++){if (FCKBrowserInfo.IsIE){var C=B[i].nodeName;if (C.StartsWith('_fck')){continue;};if (C=='class'){if (A.className.length>0) return true;continue;}};if (B[i].specified) return true;};return false;},RemoveAttribute:function(A,B){if (FCKBrowserInfo.IsIE&&B.toLowerCase()=='class') B='className';return A.removeAttribute(B,0);},RemoveAttributes:function (A,B){for (var i=0;i<B.length;i++) this.RemoveAttribute(A,B[i]);},GetAttributeValue:function(A,B){var C=B;if (typeof B=='string') B=A.attributes[B];else C=B.nodeName;if (B&&B.specified){if (C=='style') return A.style.cssText;else if (C=='class'||C.indexOf('on')==0) return B.nodeValue;else{return A.getAttribute(C,2);}};return null;},Contains:function(A,B){if (A.contains&&B.nodeType==1) return A.contains(B);while ((B=B.parentNode)){if (B==A) return true;};return false;},BreakParent:function(A,B,C){var D=C||new FCKDomRange(FCKTools.GetElementWindow(A));D.SetStart(A,4);D.SetEnd(B,4);var E=D.ExtractContents();D.InsertNode(A.parentNode.removeChild(A));E.InsertAfterNode(A);D.Release(!!C);},GetNodeAddress:function(A,B){var C=[];while (A&&A!=FCKTools.GetElementDocument(A).documentElement){var D=A.parentNode;var E=-1;for(var i=0;i<D.childNodes.length;i++){var F=D.childNodes[i];if (B===true&&F.nodeType==3&&F.previousSibling&&F.previousSibling.nodeType==3) continue;E++;if (D.childNodes[i]==A) break;};C.unshift(E);A=A.parentNode;};return C;},GetNodeFromAddress:function(A,B,C){var D=A.documentElement;for (var i=0;i<B.length;i++){var E=B[i];if (!C){D=D.childNodes[E];continue;};var F=-1;for (var j=0;j<D.childNodes.length;j++){var G=D.childNodes[j];if (C===true&&G.nodeType==3&&G.previousSibling&&G.previousSibling.nodeType==3) continue;F++;if (F==E){D=G;break;}}};return D;},CloneElement:function(A){A=A.cloneNode(false);A.removeAttribute('id',false);return A;},ClearElementJSProperty:function(A,B){if (FCKBrowserInfo.IsIE) A.removeAttribute(B);else delete A[B];},SetElementMarker:function (A,B,C,D){var E=String(parseInt(Math.random()*0xffffffff,10));B._FCKMarkerId=E;B[C]=D;if (!A[E]) A[E]={ 'element':B,'markers':{} };A[E]['markers'][C]=D;},ClearElementMarkers:function(A,B,C){var D=B._FCKMarkerId;if (!D) return;this.ClearElementJSProperty(B,'_FCKMarkerId');for (var j in A[D]['markers']) this.ClearElementJSProperty(B,j);if (C) delete A[D];},ClearAllMarkers:function(A){for (var i in A) this.ClearElementMarkers(A,A[i]['element'],true);},ListToArray:function(A,B,C,D,E){if (!A.nodeName.IEquals(['ul','ol'])) return [];if (!D) D=0;if (!C) C=[];for (var i=0;i<A.childNodes.length;i++){var F=A.childNodes[i];if (!F.nodeName.IEquals('li')) continue;var G={ 'parent':A,'indent':D,'contents':[] };if (!E){G.grandparent=A.parentNode;if (G.grandparent&&G.grandparent.nodeName.IEquals('li')) G.grandparent=G.grandparent.parentNode;}else G.grandparent=E;if (B) this.SetElementMarker(B,F,'_FCK_ListArray_Index',C.length);C.push(G);for (var j=0;j<F.childNodes.length;j++){var H=F.childNodes[j];if (H.nodeName.IEquals(['ul','ol'])) this.ListToArray(H,B,C,D+1,G.grandparent);else G.contents.push(H);}};return C;},ArrayToList:function(A,B,C){if (C==undefined) C=0;if (!A||A.length<C+1) return null;var D=FCKTools.GetElementDocument(A[C].parent);var E=D.createDocumentFragment();var F=null;var G=C;var H=Math.max(A[C].indent,0);var I=null;while (true){var J=A[G];if (J.indent==H){if (!F||A[G].parent.nodeName!=F.nodeName){F=A[G].parent.cloneNode(false);E.appendChild(F);};I=D.createElement('li');F.appendChild(I);for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));G++;}else if (J.indent==Math.max(H,0)+1){var K=this.ArrayToList(A,null,G);I.appendChild(K.listNode);G=K.nextIndex;}else if (J.indent==-1&&C==0&&J.grandparent){var I;if (J.grandparent.nodeName.IEquals(['ul','ol'])) I=D.createElement('li');else{if (FCKConfig.EnterMode.IEquals(['div','p'])&&!J.grandparent.nodeName.IEquals('td')) I=D.createElement(FCKConfig.EnterMode);else I=D.createDocumentFragment();};for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));if (I.nodeType==11){if (I.lastChild&&I.lastChild.getAttribute&&I.lastChild.getAttribute('type')=='_moz') I.removeChild(I.lastChild);I.appendChild(D.createElement('br'));};if (I.nodeName.IEquals(FCKConfig.EnterMode)&&I.firstChild){this.TrimNode(I);if (FCKListsLib.BlockBoundaries[I.firstChild.nodeName.toLowerCase()]){var M=D.createDocumentFragment();while (I.firstChild) M.appendChild(I.removeChild(I.firstChild));I=M;}};if (FCKBrowserInfo.IsGeckoLike&&I.nodeName.IEquals(['div','p'])) FCKTools.AppendBogusBr(I);E.appendChild(I);F=null;G++;}else return null;if (A.length<=G||Math.max(A[G].indent,0)<H){break;}};if (B){var N=E.firstChild;while (N){if (N.nodeType==1) this.ClearElementMarkers(B,N);N=this.GetNextSourceNode(N);}};return { 'listNode':E,'nextIndex':G };},GetNextSibling:function(A,B){A=A.nextSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.nextSibling;return A;},GetPreviousSibling:function(A,B){A=A.previousSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.previousSibling;return A;},CheckIsEmptyElement:function(A,B){var C=A.firstChild;var D;while (C){if (C.nodeType==1){if (D||!FCKListsLib.InlineNonEmptyElements[C.nodeName.toLowerCase()]) return false;if (!B||B(C)===true) D=C;}else if (C.nodeType==3&&C.nodeValue.length>0) return false;C=C.nextSibling;};return D?this.CheckIsEmptyElement(D,B):true;},SetElementStyles:function(A,B){var C=A.style;for (var D in B) C[D]=B[D];},SetOpacity:function(A,B){if (FCKBrowserInfo.IsIE){B=Math.round(B*100);A.style.filter=(B>100?'':'progid:DXImageTransform.Microsoft.Alpha(opacity='+B+')');}else A.style.opacity=B;},GetCurrentElementStyle:function(A,B){if (FCKBrowserInfo.IsIE) return A.currentStyle[B];else return A.ownerDocument.defaultView.getComputedStyle(A,'').getPropertyValue(B);},GetPositionedAncestor:function(A){var B=A;while (B!=FCKTools.GetElementDocument(B).documentElement){if (this.GetCurrentElementStyle(B,'position')!='static') return B;if (B==FCKTools.GetElementDocument(B).documentElement&&currentWindow!=w) B=currentWindow.frameElement;else B=B.parentNode;};return null;},ScrollIntoView:function(A,B){var C=FCKTools.GetElementWindow(A);var D=FCKTools.GetViewPaneSize(C).Height;var E=D*-1;if (B===false){E+=A.offsetHeight||0;E+=parseInt(this.GetCurrentElementStyle(A,'marginBottom')||0,10)||0;};var F=FCKTools.GetDocumentPosition(C,A);E+=F.y;var G=FCKTools.GetScrollPosition(C).Y;if (E>0&&(E>G||E<G-D)) C.scrollTo(0,E);},CheckIsEditable:function(A){var B=A.nodeName.toLowerCase();var C=FCK.DTD[B]||FCK.DTD.span;return (C['#']&&!FCKListsLib.NonEditableElements[B]);},GetSelectedDivContainers:function(){var A=[];var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.GetTouchedStartNode();var D=B.GetTouchedEndNode();var E=C;if (C==D){while (D.nodeType==1&&D.lastChild) D=D.lastChild;D=FCKDomTools.GetNextSourceNode(D);}while (E&&E!=D){if (E.nodeType!=3||!/^[ \t\n]*$/.test(E.nodeValue)){var F=new FCKElementPath(E);var G=F.BlockLimit;if (G&&G.nodeName.IEquals('div')&&A.IndexOf(G)==-1) A.push(G);};E=FCKDomTools.GetNextSourceNode(E);};return A;}};
 var FCKTools={};FCKTools.CreateBogusBR=function(A){var B=A.createElement('br');B.setAttribute('type','_moz');return B;};FCKTools.FixCssUrls=function(A,B){if (!A||A.length==0) return B;return B.replace(/url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g,function(match,opener,path,closer){if (/^\/|^\w?:/.test(path)) return match;else return 'url('+opener+A+path+closer+')';});};FCKTools._GetUrlFixedCss=function(A,B){var C=A.match(/^([^|]+)\|([\s\S]*)/);if (C) return FCKTools.FixCssUrls(C[1],C[2]);else return A;};FCKTools.AppendStyleSheet=function(A,B){if (!B) return [];if (typeof(B)=='string'){if (/[\\\/\.][^{}]*$/.test(B)){return this.AppendStyleSheet(A,B.split(','));}else return [this.AppendStyleString(A,FCKTools._GetUrlFixedCss(B))];}else{var C=[];for (var i=0;i<B.length;i++) C.push(this._AppendStyleSheet(A,B[i]));return C;}};FCKTools.GetStyleHtml=(function(){var A=function(styleDef,markTemp){if (styleDef.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<style type="text/css"'+B+'>'+styleDef+'</style>';};var C=function(cssFileUrl,markTemp){if (cssFileUrl.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<link href="'+cssFileUrl+'" type="text/css" rel="stylesheet" '+B+'/>';};return function(cssFileOrArrayOrDef,markTemp){if (!cssFileOrArrayOrDef) return '';if (typeof(cssFileOrArrayOrDef)=='string'){if (/[\\\/\.][^{}]*$/.test(cssFileOrArrayOrDef)){return this.GetStyleHtml(cssFileOrArrayOrDef.split(','),markTemp);}else return A(this._GetUrlFixedCss(cssFileOrArrayOrDef),markTemp);}else{var E='';for (var i=0;i<cssFileOrArrayOrDef.length;i++) E+=C(cssFileOrArrayOrDef[i],markTemp);return E;}}})();FCKTools.GetElementDocument=function (A){return A.ownerDocument||A.document;};FCKTools.GetElementWindow=function(A){return this.GetDocumentWindow(this.GetElementDocument(A));};FCKTools.GetDocumentWindow=function(A){if (FCKBrowserInfo.IsSafari&&!A.parentWindow) this.FixDocumentParentWindow(window.top);return A.parentWindow||A.defaultView;};FCKTools.FixDocumentParentWindow=function(A){if (A.document) A.document.parentWindow=A;for (var i=0;i<A.frames.length;i++) FCKTools.FixDocumentParentWindow(A.frames[i]);};FCKTools.HTMLEncode=function(A){if (!A) return '';A=A.replace(/&/g,'&amp;');A=A.replace(/</g,'&lt;');A=A.replace(/>/g,'&gt;');return A;};FCKTools.HTMLDecode=function(A){if (!A) return '';A=A.replace(/&gt;/g,'>');A=A.replace(/&lt;/g,'<');A=A.replace(/&amp;/g,'&');return A;};FCKTools._ProcessLineBreaksForPMode=function(A,B,C,D,E){var F=0;var G="<p>";var H="</p>";var I="<br />";if (C){G="<li>";H="</li>";F=1;}while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='p'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};var n=B.charAt(i+1);if (n=='\r'){i++;n=B.charAt(i+1);};if (n=='\n'){i++;if (F) E.push(H);E.push(G);F=1;}else E.push(I);}};FCKTools._ProcessLineBreaksForDivMode=function(A,B,C,D,E){var F=0;var G="<div>";var H="</div>";if (C){G="<li>";H="</li>";F=1;}while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='div'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F){if (E[E.length-1]==G){E.push("&nbsp;");};E.push(H);};E.push(G);F=1;};if (F) E.push(H);};FCKTools._ProcessLineBreaksForBrMode=function(A,B,C,D,E){var F=0;var G="<br />";var H="";if (C){G="<li>";H="</li>";F=1;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F&&H.length) E.push (H);E.push(G);F=1;}};FCKTools.ProcessLineBreaks=function(A,B,C){var D=B.EnterMode.toLowerCase();var E=[];var F=0;var G=new A.FCKDomRange(A.FCK.EditorWindow);G.MoveToSelection();var H=G._Range.startContainer;while (H&&H.nodeType!=1) H=H.parentNode;if (H&&H.tagName.toLowerCase()=='li') F=1;if (D=='p') this._ProcessLineBreaksForPMode(A,C,F,H,E);else if (D=='div') this._ProcessLineBreaksForDivMode(A,C,F,H,E);else if (D=='br') this._ProcessLineBreaksForBrMode(A,C,F,H,E);return E.join("");};FCKTools.AddSelectOption=function(A,B,C){var D=FCKTools.GetElementDocument(A).createElement("OPTION");D.text=B;D.value=C;A.options.add(D);return D;};FCKTools.RunFunction=function(A,B,C,D){if (A) this.SetTimeout(A,0,B,C,D);};FCKTools.SetTimeout=function(A,B,C,D,E){return (E||window).setTimeout(function(){if (D) A.apply(C,[].concat(D));else A.apply(C);},B);};FCKTools.SetInterval=function(A,B,C,D,E){return (E||window).setInterval(function(){A.apply(C,D||[]);},B);};FCKTools.ConvertStyleSizeToHtml=function(A){return A.EndsWith('%')?A:parseInt(A,10);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.EndsWith('%')?A:(A+'px');};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.CreateEventListener=function(A,B){var f=function(){var C=[];for (var i=0;i<arguments.length;i++) C.push(arguments[i]);A.apply(this,C.concat(B));};return f;};FCKTools.IsStrictMode=function(A){return ('CSS1Compat'==(A.compatMode||(FCKBrowserInfo.IsSafari?'CSS1Compat':null)));};FCKTools.ArgumentsToArray=function(A,B,C){B=B||0;C=C||A.length;var D=[];for (var i=B;i<B+C&&i<A.length;i++) D.push(A[i]);return D;};FCKTools.CloneObject=function(A){var B=function() {};B.prototype=A;return new B;};FCKTools.AppendBogusBr=function(A){if (!A) return;var B=this.GetLastItem(A.getElementsByTagName('br'));if (!B||(B.getAttribute('type',2)!='_moz'&&B.getAttribute('_moz_dirty')==null)){var C=this.GetElementDocument(A);if (FCKBrowserInfo.IsOpera) A.appendChild(C.createTextNode(''));else A.appendChild(this.CreateBogusBR(C));}};FCKTools.GetLastItem=function(A){if (A.length>0) return A[A.length-1];return null;};FCKTools.GetDocumentPosition=function(w,A){var x=0;var y=0;var B=A;var C=null;var D=FCKTools.GetElementWindow(B);while (B&&!(D==w&&(B==w.document.body||B==w.document.documentElement))){x+=B.offsetLeft-B.scrollLeft;y+=B.offsetTop-B.scrollTop;if (!FCKBrowserInfo.IsOpera){var E=C;while (E&&E!=B){x-=E.scrollLeft;y-=E.scrollTop;E=E.parentNode;}};C=B;if (B.offsetParent) B=B.offsetParent;else{if (D!=w){B=D.frameElement;C=null;if (B) D=B.contentWindow.parent;}else B=null;}};if (FCKDomTools.GetCurrentElementStyle(w.document.body,'position')!='static'||(FCKBrowserInfo.IsIE&&FCKDomTools.GetPositionedAncestor(A)==null)){x+=w.document.body.offsetLeft;y+=w.document.body.offsetTop;};return { "x":x,"y":y };};FCKTools.GetWindowPosition=function(w,A){var B=this.GetDocumentPosition(w,A);var C=FCKTools.GetScrollPosition(w);B.x-=C.X;B.y-=C.Y;return B;};FCKTools.ProtectFormStyles=function(A){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return [];var B=[];var C=['style','className'];for (var i=0;i<C.length;i++){var D=C[i];if (A.elements.namedItem(D)){var E=A.elements.namedItem(D);B.push([E,E.nextSibling]);A.removeChild(E);}};return B;};FCKTools.RestoreFormStyles=function(A,B){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return;if (B.length>0){for (var i=B.length-1;i>=0;i--){var C=B[i][0];var D=B[i][1];if (D) A.insertBefore(C,D);else A.appendChild(C);}}};FCKTools.GetNextNode=function(A,B){if (A.firstChild) return A.firstChild;else if (A.nextSibling) return A.nextSibling;else{var C=A.parentNode;while (C){if (C==B) return null;if (C.nextSibling) return C.nextSibling;else C=C.parentNode;}};return null;};FCKTools.GetNextTextNode=function(A,B,C){node=this.GetNextNode(A,B);if (C&&node&&C(node)) return null;while (node&&node.nodeType!=3){node=this.GetNextNode(node,B);if (C&&node&&C(node)) return null;};return node;};FCKTools.Merge=function(){var A=arguments;var o=A[0];for (var i=1;i<A.length;i++){var B=A[i];for (var p in B) o[p]=B[p];};return o;};FCKTools.IsArray=function(A){return (A instanceof Array);};FCKTools.AppendLengthProperty=function(A,B){var C=0;for (var n in A) C++;return A[B||'length']=C;};FCKTools.NormalizeCssText=function(A){var B=document.createElement('span');B.style.cssText=A;return B.style.cssText;};FCKTools.Bind=function(A,B){return function(){ return B.apply(A,arguments);};};FCKTools.GetVoidUrl=function(){if (FCK_IS_CUSTOM_DOMAIN) return "javascript: void( function(){document.open();document.write('<html><head><title></title></head><body></body></html>');document.domain = '"+FCK_RUNTIME_DOMAIN+"';document.close();}() ) ;";if (FCKBrowserInfo.IsIE){if (FCKBrowserInfo.IsIE7||!FCKBrowserInfo.IsIE6) return "";else return "javascript: '';";};return "javascript: void(0);";};FCKTools.ResetStyles=function(A){A.style.cssText='margin:0;padding:0;border:0;background-color:transparent;background-image:none;';};
 FCKTools.CancelEvent=function(e){if (e) e.preventDefault();};FCKTools.DisableSelection=function(A){if (FCKBrowserInfo.IsGecko) A.style.MozUserSelect='none';else if (FCKBrowserInfo.IsSafari) A.style.KhtmlUserSelect='none';else A.style.userSelect='none';};FCKTools._AppendStyleSheet=function(A,B){var e=A.createElement('LINK');e.rel='stylesheet';e.type='text/css';e.href=B;A.getElementsByTagName("HEAD")[0].appendChild(e);return e;};FCKTools.AppendStyleString=function(A,B){if (!B) return null;var e=A.createElement("STYLE");e.appendChild(A.createTextNode(B));A.getElementsByTagName("HEAD")[0].appendChild(e);return e;};FCKTools.ClearElementAttributes=function(A){for (var i=0;i<A.attributes.length;i++){A.removeAttribute(A.attributes[i].name,0);}};FCKTools.GetAllChildrenIds=function(A){var B=[];var C=function(parent){for (var i=0;i<parent.childNodes.length;i++){var D=parent.childNodes[i].id;if (D&&D.length>0) B[B.length]=D;C(parent.childNodes[i]);}};C(A);return B;};FCKTools.RemoveOuterTags=function(e){var A=e.ownerDocument.createDocumentFragment();for (var i=0;i<e.childNodes.length;i++) A.appendChild(e.childNodes[i].cloneNode(true));e.parentNode.replaceChild(A,e);};FCKTools.CreateXmlObject=function(A){switch (A){case 'XmlHttp':return new XMLHttpRequest();case 'DOMDocument':var B=(new DOMParser()).parseFromString('<tmp></tmp>','text/xml');FCKDomTools.RemoveNode(B.firstChild);return B;};return null;};FCKTools.GetScrollPosition=function(A){return { X:A.pageXOffset,Y:A.pageYOffset };};FCKTools.AddEventListener=function(A,B,C){A.addEventListener(B,C,false);};FCKTools.RemoveEventListener=function(A,B,C){A.removeEventListener(B,C,false);};FCKTools.AddEventListenerEx=function(A,B,C,D){A.addEventListener(B,function(e){C.apply(A,[e].concat(D||[]));},false);};FCKTools.GetViewPaneSize=function(A){return { Width:A.innerWidth,Height:A.innerHeight };};FCKTools.SaveStyles=function(A){var B=FCKTools.ProtectFormStyles(A);var C={};if (A.className.length>0){C.Class=A.className;A.className='';};var D=A.getAttribute('style');if (D&&D.length>0){C.Inline=D;A.setAttribute('style','',0);};FCKTools.RestoreFormStyles(A,B);return C;};FCKTools.RestoreStyles=function(A,B){var C=FCKTools.ProtectFormStyles(A);A.className=B.Class||'';if (B.Inline) A.setAttribute('style',B.Inline,0);else A.removeAttribute('style',0);FCKTools.RestoreFormStyles(A,C);};FCKTools.RegisterDollarFunction=function(A){A.$=function(id){return A.document.getElementById(id);};};FCKTools.AppendElement=function(A,B){return A.appendChild(A.ownerDocument.createElement(B));};FCKTools.GetElementPosition=function(A,B){var c={ X:0,Y:0 };var C=B||window;var D=FCKTools.GetElementWindow(A);var E=null;while (A){var F=D.getComputedStyle(A,'').position;if (F&&F!='static'&&A.style.zIndex!=FCKConfig.FloatingPanelsZIndex) break;c.X+=A.offsetLeft-A.scrollLeft;c.Y+=A.offsetTop-A.scrollTop;if (!FCKBrowserInfo.IsOpera){var G=E;while (G&&G!=A){c.X-=G.scrollLeft;c.Y-=G.scrollTop;G=G.parentNode;}};E=A;if (A.offsetParent) A=A.offsetParent;else{if (D!=C){A=D.frameElement;E=null;if (A) D=FCKTools.GetElementWindow(A);}else{c.X+=A.scrollLeft;c.Y+=A.scrollTop;break;}}};return c;};
-var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='window.FCKeditorAPI = {Version : "2.6.8",VersionBuild : "25427",Instances : window.FCKeditorAPI && window.FCKeditorAPI.Instances || {},GetInstance : function( name ){return this.Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.Instances ){var oEditor = FCKeditorAPI.Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue	: window.FCKeditorAPI && window.FCKeditorAPI._FunctionQueue || {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if(FCKBrowserInfo.IsAIR){FCKAdobeAIR.FCKeditorAPI_Evaluate(A,B);}else if (FCKBrowserInfo.IsSafari){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;FCKeditorAPI.__Instances=FCKeditorAPI.Instances;};FCKeditorAPI.Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat&&!window.FCKUnloadFlag) return;delete FCKeditorAPI.Instances[FCK.Name];};function FCKeditorAPI_ConfirmCleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat) window.FCKUnloadFlag=true;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);FCKTools.AddEventListener(window,'beforeunload',FCKeditorAPI_ConfirmCleanup);
+var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='window.FCKeditorAPI = {Version : "2.6.11",VersionBuild : "25429",Instances : window.FCKeditorAPI && window.FCKeditorAPI.Instances || {},GetInstance : function( name ){return this.Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.Instances ){var oEditor = FCKeditorAPI.Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue	: window.FCKeditorAPI && window.FCKeditorAPI._FunctionQueue || {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if(FCKBrowserInfo.IsAIR){FCKAdobeAIR.FCKeditorAPI_Evaluate(A,B);}else if (FCKBrowserInfo.IsSafari){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;FCKeditorAPI.__Instances=FCKeditorAPI.Instances;};FCKeditorAPI.Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat&&!window.FCKUnloadFlag) return;delete FCKeditorAPI.Instances[FCK.Name];};function FCKeditorAPI_ConfirmCleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat) window.FCKUnloadFlag=true;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);FCKTools.AddEventListener(window,'beforeunload',FCKeditorAPI_ConfirmCleanup);
 var FCKImagePreloader=function(){this._Images=[];};FCKImagePreloader.prototype={AddImages:function(A){if (typeof(A)=='string') A=A.split(';');this._Images=this._Images.concat(A);},Start:function(){var A=this._Images;this._PreloadCount=A.length;for (var i=0;i<A.length;i++){var B=document.createElement('img');FCKTools.AddEventListenerEx(B,'load',_FCKImagePreloader_OnImage,this);FCKTools.AddEventListenerEx(B,'error',_FCKImagePreloader_OnImage,this);B.src=A[i];_FCKImagePreloader_ImageCache.push(B);}}};var _FCKImagePreloader_ImageCache=[];function _FCKImagePreloader_OnImage(A,B){if ((--B._PreloadCount)==0&&B.OnComplete) B.OnComplete();};
 var FCKRegexLib={AposEntity:/&apos;/gi,ObjectElements:/^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i,NamedCommands:/^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i,BeforeBody:/(^[\s\S]*\<body[^\>]*\>)/i,AfterBody:/(\<\/body\>[\s\S]*$)/i,ToReplace:/___fcktoreplace:([\w]+)/ig,MetaHttpEquiv:/http-equiv\s*=\s*["']?([^"' ]+)/i,HasBaseTag:/<base /i,HasBodyTag:/<body[\s|>]/i,HtmlOpener:/<html\s?[^>]*>/i,HeadOpener:/<head\s?[^>]*>/i,HeadCloser:/<\/head\s*>/i,FCK_Class:/\s*FCK__[^ ]*(?=\s+|$)/,ElementName:/(^[a-z_:][\w.\-:]*\w$)|(^[a-z_]$)/,ForceSimpleAmpersand:/___FCKAmp___/g,SpaceNoClose:/\/>/g,EmptyParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/,EmptyOutParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*|&nbsp;|&#160;)(<\/\1>)?$/,TagBody:/></,GeckoEntitiesMarker:/#\?-\:/g,ProtectUrlsImg:/<img(?=\s).*?\ssrc=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsA:/<a(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsArea:/<area(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,Html4DocType:/HTML 4\.0 Transitional/i,DocTypeTag:/<!DOCTYPE[^>]*>/i,HtmlDocType:/DTD HTML/,TagsWithEvent:/<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g,EventAttributes:/\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,ProtectedEvents:/\s\w+_fckprotectedatt="([^"]+)"/g,StyleProperties:/\S+\s*:/g,InvalidSelfCloseTags:/(<(?!base|meta|link|hr|br|param|img|area|input)([a-zA-Z0-9:]+)[^>]*)\/>/gi,StyleVariableAttName:/#\(\s*("|')(.+?)\1[^\)]*\s*\)/g,RegExp:/^\/(.*)\/([gim]*)$/,HtmlTag:/<[^\s<>](?:"[^"]*"|'[^']*'|[^<])*>/};
 var FCKListsLib={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 },NonEmptyBlockElements:{ p:1,div:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,address:1,pre:1,ol:1,ul:1,li:1,td:1,th:1 },InlineChildReqElements:{ abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },InlineNonEmptyElements:{ a:1,abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },EmptyElements:{ base:1,col:1,meta:1,link:1,hr:1,br:1,param:1,img:1,area:1,input:1 },PathBlockElements:{ address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,de:1 },PathBlockLimitElements:{ body:1,div:1,td:1,th:1,caption:1,form:1 },StyleBlockElements:{ address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1 },StyleObjectElements:{ img:1,hr:1,li:1,table:1,tr:1,td:1,embed:1,object:1,ol:1,ul:1 },NonEditableElements:{ button:1,option:1,script:1,iframe:1,textarea:1,object:1,embed:1,map:1,applet:1 },BlockBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1 },ListBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1,br:1 }};
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/js/fckeditorcode_ie.js	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/js/fckeditorcode_ie.js	Tue Sep 20 05:46:18 2016 +0200
@@ -36,7 +36,7 @@
 var FCKDomTools={MoveChildren:function(A,B,C){if (A==B) return;var D;if (C){while ((D=A.lastChild)) B.insertBefore(A.removeChild(D),B.firstChild);}else{while ((D=A.firstChild)) B.appendChild(A.removeChild(D));}},MoveNode:function(A,B,C){if (C) B.insertBefore(FCKDomTools.RemoveNode(A),B.firstChild);else B.appendChild(FCKDomTools.RemoveNode(A));},TrimNode:function(A){this.LTrimNode(A);this.RTrimNode(A);},LTrimNode:function(A){var B;while ((B=A.firstChild)){if (B.nodeType==3){var C=B.nodeValue.LTrim();var D=B.nodeValue.length;if (C.length==0){A.removeChild(B);continue;}else if (C.length<D){B.splitText(D-C.length);A.removeChild(A.firstChild);}};break;}},RTrimNode:function(A){var B;while ((B=A.lastChild)){if (B.nodeType==3){var C=B.nodeValue.RTrim();var D=B.nodeValue.length;if (C.length==0){B.parentNode.removeChild(B);continue;}else if (C.length<D){B.splitText(C.length);A.lastChild.parentNode.removeChild(A.lastChild);}};break;};if (!FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsOpera){B=A.lastChild;if (B&&B.nodeType==1&&B.nodeName.toLowerCase()=='br'){B.parentNode.removeChild(B);}}},RemoveNode:function(A,B){if (B){var C;while ((C=A.firstChild)) A.parentNode.insertBefore(A.removeChild(C),A);};return A.parentNode.removeChild(A);},GetFirstChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.firstChild;while(C){if (C.nodeType==1&&C.tagName.Equals.apply(C.tagName,B)) return C;C=C.nextSibling;};return null;},GetLastChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.lastChild;while(C){if (C.nodeType==1&&(!B||C.tagName.Equals(B))) return C;C=C.previousSibling;};return null;},GetPreviousSourceElement:function(A,B,C,D){if (!A) return null;if (C&&A.nodeType==1&&A.nodeName.IEquals(C)) return null;if (A.previousSibling) A=A.previousSibling;else return this.GetPreviousSourceElement(A.parentNode,B,C,D);while (A){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (!D||!A.nodeName.IEquals(D)) return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;if (A.lastChild) A=A.lastChild;else return this.GetPreviousSourceElement(A,B,C,D);};return null;},GetNextSourceElement:function(A,B,C,D,E){while((A=this.GetNextSourceNode(A,E))){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (D&&A.nodeName.IEquals(D)) return this.GetNextSourceElement(A,B,C,D);return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;};return null;},GetNextSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.firstChild) E=A.firstChild;else{if (D&&A==D) return null;E=A.nextSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetNextSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetNextSourceNode(E,false,C,D);return E;},GetPreviousSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.lastChild) E=A.lastChild;else{if (D&&A==D) return null;E=A.previousSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetPreviousSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetPreviousSourceNode(E,false,C,D);return E;},InsertAfterNode:function(A,B){return A.parentNode.insertBefore(B,A.nextSibling);},GetParents:function(A){var B=[];while (A){B.unshift(A);A=A.parentNode;};return B;},GetCommonParents:function(A,B){var C=this.GetParents(A);var D=this.GetParents(B);var E=[];for (var i=0;i<C.length;i++){if (C[i]==D[i]) E.push(C[i]);};return E;},GetCommonParentNode:function(A,B,C){var D={};if (!C.pop) C=[C];while (C.length>0) D[C.pop().toLowerCase()]=1;var E=this.GetCommonParents(A,B);var F=null;while ((F=E.pop())){if (D[F.nodeName.toLowerCase()]) return F;};return null;},GetIndexOf:function(A){var B=A.parentNode?A.parentNode.firstChild:null;var C=-1;while (B){C++;if (B==A) return C;B=B.nextSibling;};return-1;},PaddingNode:null,EnforcePaddingNode:function(A,B){try{if (!A||!A.body) return;}catch (e){return;};this.CheckAndRemovePaddingNode(A,B,true);try{if (A.body.lastChild&&(A.body.lastChild.nodeType!=1||A.body.lastChild.tagName.toLowerCase()==B.toLowerCase())) return;}catch (e){return;};var C=A.createElement(B);if (FCKBrowserInfo.IsGecko&&FCKListsLib.NonEmptyBlockElements[B]) FCKTools.AppendBogusBr(C);this.PaddingNode=C;if (A.body.childNodes.length==1&&A.body.firstChild.nodeType==1&&A.body.firstChild.tagName.toLowerCase()=='br'&&(A.body.firstChild.getAttribute('_moz_dirty')!=null||A.body.firstChild.getAttribute('type')=='_moz')) A.body.replaceChild(C,A.body.firstChild);else A.body.appendChild(C);},CheckAndRemovePaddingNode:function(A,B,C){var D=this.PaddingNode;if (!D) return;try{if (D.parentNode!=A.body||D.tagName.toLowerCase()!=B||(D.childNodes.length>1)||(D.firstChild&&D.firstChild.nodeValue!='\xa0'&&String(D.firstChild.tagName).toLowerCase()!='br')){this.PaddingNode=null;return;}}catch (e){this.PaddingNode=null;return;};if (!C){if (D.parentNode.childNodes.length>1) D.parentNode.removeChild(D);this.PaddingNode=null;}},HasAttribute:function(A,B){if (A.hasAttribute) return A.hasAttribute(B);else{var C=A.attributes[B];return (C!=undefined&&C.specified);}},HasAttributes:function(A){var B=A.attributes;for (var i=0;i<B.length;i++){if (FCKBrowserInfo.IsIE){var C=B[i].nodeName;if (C.StartsWith('_fck')){continue;};if (C=='class'){if (A.className.length>0) return true;continue;}};if (B[i].specified) return true;};return false;},RemoveAttribute:function(A,B){if (FCKBrowserInfo.IsIE&&B.toLowerCase()=='class') B='className';return A.removeAttribute(B,0);},RemoveAttributes:function (A,B){for (var i=0;i<B.length;i++) this.RemoveAttribute(A,B[i]);},GetAttributeValue:function(A,B){var C=B;if (typeof B=='string') B=A.attributes[B];else C=B.nodeName;if (B&&B.specified){if (C=='style') return A.style.cssText;else if (C=='class'||C.indexOf('on')==0) return B.nodeValue;else{return A.getAttribute(C,2);}};return null;},Contains:function(A,B){if (A.contains&&B.nodeType==1) return A.contains(B);while ((B=B.parentNode)){if (B==A) return true;};return false;},BreakParent:function(A,B,C){var D=C||new FCKDomRange(FCKTools.GetElementWindow(A));D.SetStart(A,4);D.SetEnd(B,4);var E=D.ExtractContents();D.InsertNode(A.parentNode.removeChild(A));E.InsertAfterNode(A);D.Release(!!C);},GetNodeAddress:function(A,B){var C=[];while (A&&A!=FCKTools.GetElementDocument(A).documentElement){var D=A.parentNode;var E=-1;for(var i=0;i<D.childNodes.length;i++){var F=D.childNodes[i];if (B===true&&F.nodeType==3&&F.previousSibling&&F.previousSibling.nodeType==3) continue;E++;if (D.childNodes[i]==A) break;};C.unshift(E);A=A.parentNode;};return C;},GetNodeFromAddress:function(A,B,C){var D=A.documentElement;for (var i=0;i<B.length;i++){var E=B[i];if (!C){D=D.childNodes[E];continue;};var F=-1;for (var j=0;j<D.childNodes.length;j++){var G=D.childNodes[j];if (C===true&&G.nodeType==3&&G.previousSibling&&G.previousSibling.nodeType==3) continue;F++;if (F==E){D=G;break;}}};return D;},CloneElement:function(A){A=A.cloneNode(false);A.removeAttribute('id',false);return A;},ClearElementJSProperty:function(A,B){if (FCKBrowserInfo.IsIE) A.removeAttribute(B);else delete A[B];},SetElementMarker:function (A,B,C,D){var E=String(parseInt(Math.random()*0xffffffff,10));B._FCKMarkerId=E;B[C]=D;if (!A[E]) A[E]={ 'element':B,'markers':{} };A[E]['markers'][C]=D;},ClearElementMarkers:function(A,B,C){var D=B._FCKMarkerId;if (!D) return;this.ClearElementJSProperty(B,'_FCKMarkerId');for (var j in A[D]['markers']) this.ClearElementJSProperty(B,j);if (C) delete A[D];},ClearAllMarkers:function(A){for (var i in A) this.ClearElementMarkers(A,A[i]['element'],true);},ListToArray:function(A,B,C,D,E){if (!A.nodeName.IEquals(['ul','ol'])) return [];if (!D) D=0;if (!C) C=[];for (var i=0;i<A.childNodes.length;i++){var F=A.childNodes[i];if (!F.nodeName.IEquals('li')) continue;var G={ 'parent':A,'indent':D,'contents':[] };if (!E){G.grandparent=A.parentNode;if (G.grandparent&&G.grandparent.nodeName.IEquals('li')) G.grandparent=G.grandparent.parentNode;}else G.grandparent=E;if (B) this.SetElementMarker(B,F,'_FCK_ListArray_Index',C.length);C.push(G);for (var j=0;j<F.childNodes.length;j++){var H=F.childNodes[j];if (H.nodeName.IEquals(['ul','ol'])) this.ListToArray(H,B,C,D+1,G.grandparent);else G.contents.push(H);}};return C;},ArrayToList:function(A,B,C){if (C==undefined) C=0;if (!A||A.length<C+1) return null;var D=FCKTools.GetElementDocument(A[C].parent);var E=D.createDocumentFragment();var F=null;var G=C;var H=Math.max(A[C].indent,0);var I=null;while (true){var J=A[G];if (J.indent==H){if (!F||A[G].parent.nodeName!=F.nodeName){F=A[G].parent.cloneNode(false);E.appendChild(F);};I=D.createElement('li');F.appendChild(I);for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));G++;}else if (J.indent==Math.max(H,0)+1){var K=this.ArrayToList(A,null,G);I.appendChild(K.listNode);G=K.nextIndex;}else if (J.indent==-1&&C==0&&J.grandparent){var I;if (J.grandparent.nodeName.IEquals(['ul','ol'])) I=D.createElement('li');else{if (FCKConfig.EnterMode.IEquals(['div','p'])&&!J.grandparent.nodeName.IEquals('td')) I=D.createElement(FCKConfig.EnterMode);else I=D.createDocumentFragment();};for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));if (I.nodeType==11){if (I.lastChild&&I.lastChild.getAttribute&&I.lastChild.getAttribute('type')=='_moz') I.removeChild(I.lastChild);I.appendChild(D.createElement('br'));};if (I.nodeName.IEquals(FCKConfig.EnterMode)&&I.firstChild){this.TrimNode(I);if (FCKListsLib.BlockBoundaries[I.firstChild.nodeName.toLowerCase()]){var M=D.createDocumentFragment();while (I.firstChild) M.appendChild(I.removeChild(I.firstChild));I=M;}};if (FCKBrowserInfo.IsGeckoLike&&I.nodeName.IEquals(['div','p'])) FCKTools.AppendBogusBr(I);E.appendChild(I);F=null;G++;}else return null;if (A.length<=G||Math.max(A[G].indent,0)<H){break;}};if (B){var N=E.firstChild;while (N){if (N.nodeType==1) this.ClearElementMarkers(B,N);N=this.GetNextSourceNode(N);}};return { 'listNode':E,'nextIndex':G };},GetNextSibling:function(A,B){A=A.nextSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.nextSibling;return A;},GetPreviousSibling:function(A,B){A=A.previousSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.previousSibling;return A;},CheckIsEmptyElement:function(A,B){var C=A.firstChild;var D;while (C){if (C.nodeType==1){if (D||!FCKListsLib.InlineNonEmptyElements[C.nodeName.toLowerCase()]) return false;if (!B||B(C)===true) D=C;}else if (C.nodeType==3&&C.nodeValue.length>0) return false;C=C.nextSibling;};return D?this.CheckIsEmptyElement(D,B):true;},SetElementStyles:function(A,B){var C=A.style;for (var D in B) C[D]=B[D];},SetOpacity:function(A,B){if (FCKBrowserInfo.IsIE){B=Math.round(B*100);A.style.filter=(B>100?'':'progid:DXImageTransform.Microsoft.Alpha(opacity='+B+')');}else A.style.opacity=B;},GetCurrentElementStyle:function(A,B){if (FCKBrowserInfo.IsIE) return A.currentStyle[B];else return A.ownerDocument.defaultView.getComputedStyle(A,'').getPropertyValue(B);},GetPositionedAncestor:function(A){var B=A;while (B!=FCKTools.GetElementDocument(B).documentElement){if (this.GetCurrentElementStyle(B,'position')!='static') return B;if (B==FCKTools.GetElementDocument(B).documentElement&&currentWindow!=w) B=currentWindow.frameElement;else B=B.parentNode;};return null;},ScrollIntoView:function(A,B){var C=FCKTools.GetElementWindow(A);var D=FCKTools.GetViewPaneSize(C).Height;var E=D*-1;if (B===false){E+=A.offsetHeight||0;E+=parseInt(this.GetCurrentElementStyle(A,'marginBottom')||0,10)||0;};var F=FCKTools.GetDocumentPosition(C,A);E+=F.y;var G=FCKTools.GetScrollPosition(C).Y;if (E>0&&(E>G||E<G-D)) C.scrollTo(0,E);},CheckIsEditable:function(A){var B=A.nodeName.toLowerCase();var C=FCK.DTD[B]||FCK.DTD.span;return (C['#']&&!FCKListsLib.NonEditableElements[B]);},GetSelectedDivContainers:function(){var A=[];var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.GetTouchedStartNode();var D=B.GetTouchedEndNode();var E=C;if (C==D){while (D.nodeType==1&&D.lastChild) D=D.lastChild;D=FCKDomTools.GetNextSourceNode(D);}while (E&&E!=D){if (E.nodeType!=3||!/^[ \t\n]*$/.test(E.nodeValue)){var F=new FCKElementPath(E);var G=F.BlockLimit;if (G&&G.nodeName.IEquals('div')&&A.IndexOf(G)==-1) A.push(G);};E=FCKDomTools.GetNextSourceNode(E);};return A;}};
 var FCKTools={};FCKTools.CreateBogusBR=function(A){var B=A.createElement('br');B.setAttribute('type','_moz');return B;};FCKTools.FixCssUrls=function(A,B){if (!A||A.length==0) return B;return B.replace(/url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g,function(match,opener,path,closer){if (/^\/|^\w?:/.test(path)) return match;else return 'url('+opener+A+path+closer+')';});};FCKTools._GetUrlFixedCss=function(A,B){var C=A.match(/^([^|]+)\|([\s\S]*)/);if (C) return FCKTools.FixCssUrls(C[1],C[2]);else return A;};FCKTools.AppendStyleSheet=function(A,B){if (!B) return [];if (typeof(B)=='string'){if (/[\\\/\.][^{}]*$/.test(B)){return this.AppendStyleSheet(A,B.split(','));}else return [this.AppendStyleString(A,FCKTools._GetUrlFixedCss(B))];}else{var C=[];for (var i=0;i<B.length;i++) C.push(this._AppendStyleSheet(A,B[i]));return C;}};FCKTools.GetStyleHtml=(function(){var A=function(styleDef,markTemp){if (styleDef.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<style type="text/css"'+B+'>'+styleDef+'</style>';};var C=function(cssFileUrl,markTemp){if (cssFileUrl.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<link href="'+cssFileUrl+'" type="text/css" rel="stylesheet" '+B+'/>';};return function(cssFileOrArrayOrDef,markTemp){if (!cssFileOrArrayOrDef) return '';if (typeof(cssFileOrArrayOrDef)=='string'){if (/[\\\/\.][^{}]*$/.test(cssFileOrArrayOrDef)){return this.GetStyleHtml(cssFileOrArrayOrDef.split(','),markTemp);}else return A(this._GetUrlFixedCss(cssFileOrArrayOrDef),markTemp);}else{var E='';for (var i=0;i<cssFileOrArrayOrDef.length;i++) E+=C(cssFileOrArrayOrDef[i],markTemp);return E;}}})();FCKTools.GetElementDocument=function (A){return A.ownerDocument||A.document;};FCKTools.GetElementWindow=function(A){return this.GetDocumentWindow(this.GetElementDocument(A));};FCKTools.GetDocumentWindow=function(A){if (FCKBrowserInfo.IsSafari&&!A.parentWindow) this.FixDocumentParentWindow(window.top);return A.parentWindow||A.defaultView;};FCKTools.FixDocumentParentWindow=function(A){if (A.document) A.document.parentWindow=A;for (var i=0;i<A.frames.length;i++) FCKTools.FixDocumentParentWindow(A.frames[i]);};FCKTools.HTMLEncode=function(A){if (!A) return '';A=A.replace(/&/g,'&amp;');A=A.replace(/</g,'&lt;');A=A.replace(/>/g,'&gt;');return A;};FCKTools.HTMLDecode=function(A){if (!A) return '';A=A.replace(/&gt;/g,'>');A=A.replace(/&lt;/g,'<');A=A.replace(/&amp;/g,'&');return A;};FCKTools._ProcessLineBreaksForPMode=function(A,B,C,D,E){var F=0;var G="<p>";var H="</p>";var I="<br />";if (C){G="<li>";H="</li>";F=1;}while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='p'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};var n=B.charAt(i+1);if (n=='\r'){i++;n=B.charAt(i+1);};if (n=='\n'){i++;if (F) E.push(H);E.push(G);F=1;}else E.push(I);}};FCKTools._ProcessLineBreaksForDivMode=function(A,B,C,D,E){var F=0;var G="<div>";var H="</div>";if (C){G="<li>";H="</li>";F=1;}while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='div'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F){if (E[E.length-1]==G){E.push("&nbsp;");};E.push(H);};E.push(G);F=1;};if (F) E.push(H);};FCKTools._ProcessLineBreaksForBrMode=function(A,B,C,D,E){var F=0;var G="<br />";var H="";if (C){G="<li>";H="</li>";F=1;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F&&H.length) E.push (H);E.push(G);F=1;}};FCKTools.ProcessLineBreaks=function(A,B,C){var D=B.EnterMode.toLowerCase();var E=[];var F=0;var G=new A.FCKDomRange(A.FCK.EditorWindow);G.MoveToSelection();var H=G._Range.startContainer;while (H&&H.nodeType!=1) H=H.parentNode;if (H&&H.tagName.toLowerCase()=='li') F=1;if (D=='p') this._ProcessLineBreaksForPMode(A,C,F,H,E);else if (D=='div') this._ProcessLineBreaksForDivMode(A,C,F,H,E);else if (D=='br') this._ProcessLineBreaksForBrMode(A,C,F,H,E);return E.join("");};FCKTools.AddSelectOption=function(A,B,C){var D=FCKTools.GetElementDocument(A).createElement("OPTION");D.text=B;D.value=C;A.options.add(D);return D;};FCKTools.RunFunction=function(A,B,C,D){if (A) this.SetTimeout(A,0,B,C,D);};FCKTools.SetTimeout=function(A,B,C,D,E){return (E||window).setTimeout(function(){if (D) A.apply(C,[].concat(D));else A.apply(C);},B);};FCKTools.SetInterval=function(A,B,C,D,E){return (E||window).setInterval(function(){A.apply(C,D||[]);},B);};FCKTools.ConvertStyleSizeToHtml=function(A){return A.EndsWith('%')?A:parseInt(A,10);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.EndsWith('%')?A:(A+'px');};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.CreateEventListener=function(A,B){var f=function(){var C=[];for (var i=0;i<arguments.length;i++) C.push(arguments[i]);A.apply(this,C.concat(B));};return f;};FCKTools.IsStrictMode=function(A){return ('CSS1Compat'==(A.compatMode||(FCKBrowserInfo.IsSafari?'CSS1Compat':null)));};FCKTools.ArgumentsToArray=function(A,B,C){B=B||0;C=C||A.length;var D=[];for (var i=B;i<B+C&&i<A.length;i++) D.push(A[i]);return D;};FCKTools.CloneObject=function(A){var B=function() {};B.prototype=A;return new B;};FCKTools.AppendBogusBr=function(A){if (!A) return;var B=this.GetLastItem(A.getElementsByTagName('br'));if (!B||(B.getAttribute('type',2)!='_moz'&&B.getAttribute('_moz_dirty')==null)){var C=this.GetElementDocument(A);if (FCKBrowserInfo.IsOpera) A.appendChild(C.createTextNode(''));else A.appendChild(this.CreateBogusBR(C));}};FCKTools.GetLastItem=function(A){if (A.length>0) return A[A.length-1];return null;};FCKTools.GetDocumentPosition=function(w,A){var x=0;var y=0;var B=A;var C=null;var D=FCKTools.GetElementWindow(B);while (B&&!(D==w&&(B==w.document.body||B==w.document.documentElement))){x+=B.offsetLeft-B.scrollLeft;y+=B.offsetTop-B.scrollTop;if (!FCKBrowserInfo.IsOpera){var E=C;while (E&&E!=B){x-=E.scrollLeft;y-=E.scrollTop;E=E.parentNode;}};C=B;if (B.offsetParent) B=B.offsetParent;else{if (D!=w){B=D.frameElement;C=null;if (B) D=B.contentWindow.parent;}else B=null;}};if (FCKDomTools.GetCurrentElementStyle(w.document.body,'position')!='static'||(FCKBrowserInfo.IsIE&&FCKDomTools.GetPositionedAncestor(A)==null)){x+=w.document.body.offsetLeft;y+=w.document.body.offsetTop;};return { "x":x,"y":y };};FCKTools.GetWindowPosition=function(w,A){var B=this.GetDocumentPosition(w,A);var C=FCKTools.GetScrollPosition(w);B.x-=C.X;B.y-=C.Y;return B;};FCKTools.ProtectFormStyles=function(A){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return [];var B=[];var C=['style','className'];for (var i=0;i<C.length;i++){var D=C[i];if (A.elements.namedItem(D)){var E=A.elements.namedItem(D);B.push([E,E.nextSibling]);A.removeChild(E);}};return B;};FCKTools.RestoreFormStyles=function(A,B){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return;if (B.length>0){for (var i=B.length-1;i>=0;i--){var C=B[i][0];var D=B[i][1];if (D) A.insertBefore(C,D);else A.appendChild(C);}}};FCKTools.GetNextNode=function(A,B){if (A.firstChild) return A.firstChild;else if (A.nextSibling) return A.nextSibling;else{var C=A.parentNode;while (C){if (C==B) return null;if (C.nextSibling) return C.nextSibling;else C=C.parentNode;}};return null;};FCKTools.GetNextTextNode=function(A,B,C){node=this.GetNextNode(A,B);if (C&&node&&C(node)) return null;while (node&&node.nodeType!=3){node=this.GetNextNode(node,B);if (C&&node&&C(node)) return null;};return node;};FCKTools.Merge=function(){var A=arguments;var o=A[0];for (var i=1;i<A.length;i++){var B=A[i];for (var p in B) o[p]=B[p];};return o;};FCKTools.IsArray=function(A){return (A instanceof Array);};FCKTools.AppendLengthProperty=function(A,B){var C=0;for (var n in A) C++;return A[B||'length']=C;};FCKTools.NormalizeCssText=function(A){var B=document.createElement('span');B.style.cssText=A;return B.style.cssText;};FCKTools.Bind=function(A,B){return function(){ return B.apply(A,arguments);};};FCKTools.GetVoidUrl=function(){if (FCK_IS_CUSTOM_DOMAIN) return "javascript: void( function(){document.open();document.write('<html><head><title></title></head><body></body></html>');document.domain = '"+FCK_RUNTIME_DOMAIN+"';document.close();}() ) ;";if (FCKBrowserInfo.IsIE){if (FCKBrowserInfo.IsIE7||!FCKBrowserInfo.IsIE6) return "";else return "javascript: '';";};return "javascript: void(0);";};FCKTools.ResetStyles=function(A){A.style.cssText='margin:0;padding:0;border:0;background-color:transparent;background-image:none;';};
 FCKTools.CancelEvent=function(e){return false;};FCKTools._AppendStyleSheet=function(A,B){return A.createStyleSheet(B).owningElement;};FCKTools.AppendStyleString=function(A,B){if (!B) return null;var s=A.createStyleSheet("");s.cssText=B;return s;};FCKTools.ClearElementAttributes=function(A){A.clearAttributes();};FCKTools.GetAllChildrenIds=function(A){var B=[];for (var i=0;i<A.all.length;i++){var C=A.all[i].id;if (C&&C.length>0) B[B.length]=C;};return B;};FCKTools.RemoveOuterTags=function(e){e.insertAdjacentHTML('beforeBegin',e.innerHTML);e.parentNode.removeChild(e);};FCKTools.CreateXmlObject=function(A){var B;switch (A){case 'XmlHttp':if (document.location.protocol!='file:') try { return new XMLHttpRequest();} catch (e) {};B=['MSXML2.XmlHttp','Microsoft.XmlHttp'];break;case 'DOMDocument':B=['MSXML2.DOMDocument','Microsoft.XmlDom'];break;};for (var i=0;i<2;i++){try { return new ActiveXObject(B[i]);}catch (e){}};if (FCKLang.NoActiveX){alert(FCKLang.NoActiveX);FCKLang.NoActiveX=null;};return null;};FCKTools.DisableSelection=function(A){A.unselectable='on';var e,i=0;while ((e=A.all[i++])){switch (e.tagName){case 'IFRAME':case 'TEXTAREA':case 'INPUT':case 'SELECT':break;default:e.unselectable='on';}}};FCKTools.GetScrollPosition=function(A){var B=A.document;var C={ X:B.documentElement.scrollLeft,Y:B.documentElement.scrollTop };if (C.X>0||C.Y>0) return C;return { X:B.body.scrollLeft,Y:B.body.scrollTop };};FCKTools.AddEventListener=function(A,B,C){A.attachEvent('on'+B,C);};FCKTools.RemoveEventListener=function(A,B,C){A.detachEvent('on'+B,C);};FCKTools.AddEventListenerEx=function(A,B,C,D){var o={};o.Source=A;o.Params=D||[];o.Listener=function(ev){return C.apply(o.Source,[ev].concat(o.Params));};if (FCK.IECleanup) FCK.IECleanup.AddItem(null,function() { o.Source=null;o.Params=null;});A.attachEvent('on'+B,o.Listener);A=null;D=null;};FCKTools.GetViewPaneSize=function(A){var B;var C=A.document.documentElement;if (C&&C.clientWidth) B=C;else B=A.document.body;if (B) return { Width:B.clientWidth,Height:B.clientHeight };else return { Width:0,Height:0 };};FCKTools.SaveStyles=function(A){var B=FCKTools.ProtectFormStyles(A);var C={};if (A.className.length>0){C.Class=A.className;A.className='';};var D=A.style.cssText;if (D.length>0){C.Inline=D;A.style.cssText='';};FCKTools.RestoreFormStyles(A,B);return C;};FCKTools.RestoreStyles=function(A,B){var C=FCKTools.ProtectFormStyles(A);A.className=B.Class||'';A.style.cssText=B.Inline||'';FCKTools.RestoreFormStyles(A,C);};FCKTools.RegisterDollarFunction=function(A){A.$=A.document.getElementById;};FCKTools.AppendElement=function(A,B){return A.appendChild(this.GetElementDocument(A).createElement(B));};FCKTools.ToLowerCase=function(A){return A.toLowerCase();};
-var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='window.FCKeditorAPI = {Version : "2.6.8",VersionBuild : "25427",Instances : window.FCKeditorAPI && window.FCKeditorAPI.Instances || {},GetInstance : function( name ){return this.Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.Instances ){var oEditor = FCKeditorAPI.Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue	: window.FCKeditorAPI && window.FCKeditorAPI._FunctionQueue || {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if(FCKBrowserInfo.IsAIR){FCKAdobeAIR.FCKeditorAPI_Evaluate(A,B);}else if (FCKBrowserInfo.IsSafari){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;FCKeditorAPI.__Instances=FCKeditorAPI.Instances;};FCKeditorAPI.Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat&&!window.FCKUnloadFlag) return;delete FCKeditorAPI.Instances[FCK.Name];};function FCKeditorAPI_ConfirmCleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat) window.FCKUnloadFlag=true;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);FCKTools.AddEventListener(window,'beforeunload',FCKeditorAPI_ConfirmCleanup);
+var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='window.FCKeditorAPI = {Version : "2.6.11",VersionBuild : "25429",Instances : window.FCKeditorAPI && window.FCKeditorAPI.Instances || {},GetInstance : function( name ){return this.Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.Instances ){var oEditor = FCKeditorAPI.Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue	: window.FCKeditorAPI && window.FCKeditorAPI._FunctionQueue || {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if(FCKBrowserInfo.IsAIR){FCKAdobeAIR.FCKeditorAPI_Evaluate(A,B);}else if (FCKBrowserInfo.IsSafari){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;FCKeditorAPI.__Instances=FCKeditorAPI.Instances;};FCKeditorAPI.Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat&&!window.FCKUnloadFlag) return;delete FCKeditorAPI.Instances[FCK.Name];};function FCKeditorAPI_ConfirmCleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat) window.FCKUnloadFlag=true;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);FCKTools.AddEventListener(window,'beforeunload',FCKeditorAPI_ConfirmCleanup);
 var FCKImagePreloader=function(){this._Images=[];};FCKImagePreloader.prototype={AddImages:function(A){if (typeof(A)=='string') A=A.split(';');this._Images=this._Images.concat(A);},Start:function(){var A=this._Images;this._PreloadCount=A.length;for (var i=0;i<A.length;i++){var B=document.createElement('img');FCKTools.AddEventListenerEx(B,'load',_FCKImagePreloader_OnImage,this);FCKTools.AddEventListenerEx(B,'error',_FCKImagePreloader_OnImage,this);B.src=A[i];_FCKImagePreloader_ImageCache.push(B);}}};var _FCKImagePreloader_ImageCache=[];function _FCKImagePreloader_OnImage(A,B){if ((--B._PreloadCount)==0&&B.OnComplete) B.OnComplete();};
 var FCKRegexLib={AposEntity:/&apos;/gi,ObjectElements:/^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i,NamedCommands:/^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i,BeforeBody:/(^[\s\S]*\<body[^\>]*\>)/i,AfterBody:/(\<\/body\>[\s\S]*$)/i,ToReplace:/___fcktoreplace:([\w]+)/ig,MetaHttpEquiv:/http-equiv\s*=\s*["']?([^"' ]+)/i,HasBaseTag:/<base /i,HasBodyTag:/<body[\s|>]/i,HtmlOpener:/<html\s?[^>]*>/i,HeadOpener:/<head\s?[^>]*>/i,HeadCloser:/<\/head\s*>/i,FCK_Class:/\s*FCK__[^ ]*(?=\s+|$)/,ElementName:/(^[a-z_:][\w.\-:]*\w$)|(^[a-z_]$)/,ForceSimpleAmpersand:/___FCKAmp___/g,SpaceNoClose:/\/>/g,EmptyParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/,EmptyOutParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*|&nbsp;|&#160;)(<\/\1>)?$/,TagBody:/></,GeckoEntitiesMarker:/#\?-\:/g,ProtectUrlsImg:/<img(?=\s).*?\ssrc=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsA:/<a(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsArea:/<area(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,Html4DocType:/HTML 4\.0 Transitional/i,DocTypeTag:/<!DOCTYPE[^>]*>/i,HtmlDocType:/DTD HTML/,TagsWithEvent:/<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g,EventAttributes:/\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,ProtectedEvents:/\s\w+_fckprotectedatt="([^"]+)"/g,StyleProperties:/\S+\s*:/g,InvalidSelfCloseTags:/(<(?!base|meta|link|hr|br|param|img|area|input)([a-zA-Z0-9:]+)[^>]*)\/>/gi,StyleVariableAttName:/#\(\s*("|')(.+?)\1[^\)]*\s*\)/g,RegExp:/^\/(.*)\/([gim]*)$/,HtmlTag:/<[^\s<>](?:"[^"]*"|'[^']*'|[^<])*>/};
 var FCKListsLib={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 },NonEmptyBlockElements:{ p:1,div:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,address:1,pre:1,ol:1,ul:1,li:1,td:1,th:1 },InlineChildReqElements:{ abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },InlineNonEmptyElements:{ a:1,abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },EmptyElements:{ base:1,col:1,meta:1,link:1,hr:1,br:1,param:1,img:1,area:1,input:1 },PathBlockElements:{ address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,de:1 },PathBlockLimitElements:{ body:1,div:1,td:1,th:1,caption:1,form:1 },StyleBlockElements:{ address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1 },StyleObjectElements:{ img:1,hr:1,li:1,table:1,tr:1,td:1,embed:1,object:1,ol:1,ul:1 },NonEditableElements:{ button:1,option:1,script:1,iframe:1,textarea:1,object:1,embed:1,map:1,applet:1 },BlockBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1 },ListBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1,br:1 }};
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor.afp	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor.afp	Tue Sep 20 05:46:18 2016 +0200
@@ -114,8 +114,13 @@
 			llRetval= iVersion > 5.5
 		ELSE
 			IF AT("gecko/",sAgent)>0
-				iVersion=VAL(SUBSTR(sAgent,AT("gecko/",sAgent)+6,8))
-				llRetval =iVersion > 20030210
+				iVersion=VAL(SUBSTR(sAgent,AT("gecko/",sAgent)+6,4))
+				IF ( 2000 > iVersion )
+					llRetval=.T.
+				ELSE
+					iVersion=VAL(SUBSTR(sAgent,AT("gecko/",sAgent)+6,8))
+					llRetval =iVersion > 20030210
+				ENDIF
 			ENDIF
 		ELSE
 			IF AT("opera/",sAgent)>0
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor.asp	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor.asp	Tue Sep 20 05:46:18 2016 +0200
@@ -200,8 +200,16 @@
 		iVersion = CInt( FCKeditor_ToNumericFormat( Mid(sAgent, InStr(sAgent, "MSIE") + 5, 3) ) )
 		FCKeditor_IsCompatibleBrowser = ( iVersion >= 5.5 )
 	ElseIf InStr(sAgent, "Gecko/") > 0 Then
-		iVersion = CLng( Mid( sAgent, InStr( sAgent, "Gecko/" ) + 6, 8 ) )
-		FCKeditor_IsCompatibleBrowser = ( iVersion >= 20030210 )
+		Set re = new RegExp
+		re.IgnoreCase = true
+		re.global = false
+		re.Pattern = "Gecko/\d+\.\d+"
+		If re.Test(sAgent) Then
+			FCKeditor_IsCompatibleBrowser = True
+		Else
+			iVersion = CLng( Mid( sAgent, InStr( sAgent, "Gecko/" ) + 6, 8 ) )
+			FCKeditor_IsCompatibleBrowser = ( iVersion >= 20030210 )
+		End If
 	ElseIf InStr(sAgent, "Opera/") > 0 Then
 		iVersion = CSng( FCKeditor_ToNumericFormat( Mid( sAgent, InStr( sAgent, "Opera/" ) + 6, 4 ) ) )
 		FCKeditor_IsCompatibleBrowser = ( iVersion >= 9.5 )
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor.js	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor.js	Tue Sep 20 05:46:18 2016 +0200
@@ -1,4 +1,4 @@
-/*
+/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
  * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
@@ -59,8 +59,8 @@
  */
 FCKeditor.MinWidth = 750 ;
 
-FCKeditor.prototype.Version			= '2.6.8' ;
-FCKeditor.prototype.VersionBuild	= '25427' ;
+FCKeditor.prototype.Version			= '2.6.11' ;
+FCKeditor.prototype.VersionBuild	= '25429' ;
 
 FCKeditor.prototype.Create = function()
 {
@@ -304,13 +304,19 @@
 	// Internet Explorer 5.5+
 	if ( /*@cc_on!@*/false && sAgent.indexOf("mac") == -1 )
 	{
-		var sBrowserVersion = navigator.appVersion.match(/MSIE (.\..)/)[1] ;
+		var sBrowserVersion = navigator.appVersion.match(/MSIE ([\d.]+)/)[1] ;
 		return ( sBrowserVersion >= 5.5 ) ;
 	}
 
-	// Gecko (Opera 9 tries to behave like Gecko at this point).
-	if ( navigator.product == "Gecko" && navigator.productSub >= 20030210 && !( typeof(opera) == 'object' && opera.postError ) )
-		return true ;
+	if ( navigator.product == "Gecko" )
+	{
+		// introduced in Firefox 17.0
+		if ( sAgent.match(/gecko\/(\d+\.\d+)/i) )
+			return true ;
+		// Gecko (Opera 9 tries to behave like Gecko at this point).
+		if ( navigator.productSub >= 20030210 && !( typeof(opera) == 'object' && opera.postError ) )
+			return true ;
+	}
 
 	// Opera 9.50+
 	if ( window.opera && window.opera.version && parseFloat( window.opera.version() ) >= 9.5 )
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor.lasso	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor.lasso	Tue Sep 20 05:46:18 2016 +0200
@@ -82,7 +82,7 @@
 				#result = client_browser->Substring(client_browser->Find("MSIE")+5,3)>=5.5;
 			/if;
 			if (client_browser->Find("Gecko/"));
-				#result = client_browser->Substring(client_browser->Find("Gecko/")+6,8)>=20030210;
+				#result = ((2000>client_browser->Substring(client_browser->Find("Gecko/")+6,4)) || (client_browser->Substring(client_browser->Find("Gecko/")+6,8)>=20030210));
 			/if;
 			if (client_browser->Find("Opera/"));
 				#result = client_browser->Substring(client_browser->Find("Opera/")+6,4)>=9.5;
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor.pl	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor.pl	Tue Sep 20 05:46:18 2016 +0200
@@ -103,6 +103,8 @@
 	if(($sAgent =~ /MSIE/i) && !($sAgent =~ /mac/i) && !($sAgent =~ /Opera/i)) {
 		$iVersion = substr($sAgent,index($sAgent,'MSIE') + 5,3);
 		return($iVersion >= 5.5) ;
+	} elsif($sAgent =~ /Gecko\/\d+\.\d+/i) {
+		return true;
 	} elsif($sAgent =~ /Gecko\//i) {
 		$iVersion = substr($sAgent,index($sAgent,'Gecko/') + 6,8);
 		return($iVersion >= 20030210) ;
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor.py	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor.py	Tue Sep 20 05:46:18 2016 +0200
@@ -119,6 +119,8 @@
 				return True
 			return False
 		elif (sAgent.find("Gecko/") >= 0):
+			if (re.search(r'Gecko\/\d+\.\d+', sAgent)):
+				return True
 			i = sAgent.find("Gecko/")
 			iVersion = int(sAgent[i+6:i+6+8])
 			if (iVersion >= 20030210):
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor_php4.php	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor_php4.php	Tue Sep 20 05:46:18 2016 +0200
@@ -54,6 +54,9 @@
 	}
 	else if ( strpos($sAgent, 'Gecko/') !== false )
 	{
+		// Firefox 17+
+		if (preg_match("|Gecko/\d+\.\d+|", $sAgent))
+			return true;
 		$iVersion = (int)substr($sAgent, strpos($sAgent, 'Gecko/') + 6, 8) ;
 		return ($iVersion >= 20030210) ;
 	}
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor_php5.php	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/fckeditor_php5.php	Tue Sep 20 05:46:18 2016 +0200
@@ -54,6 +54,9 @@
 	}
 	else if ( strpos($sAgent, 'Gecko/') !== false )
 	{
+		// Firefox 17+
+		if (preg_match("|Gecko/\d+\.\d+|", $sAgent))
+			return true;
 		$iVersion = (int)substr($sAgent, strpos($sAgent, 'Gecko/') + 6, 8) ;
 		return ($iVersion >= 20030210) ;
 	}
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/fckutils.cfm	Wed Sep 07 04:31:59 2016 +0200
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/fckutils.cfm	Tue Sep 20 05:46:18 2016 +0200
@@ -31,7 +31,7 @@
 	if( find( "msie", sAgent ) and not find( "mac", sAgent ) and not find( "opera", sAgent ) )
 	{
 		// try to extract IE version
-		stResult = reFind( "msie ([5-9]\.[0-9])", sAgent, 1, true );
+		stResult = reFind( "msie ([0-9]+\.[0-9]+)", sAgent, 1, true );
 		if( arrayLen( stResult.pos ) eq 2 )
 		{
 			// get IE Version
@@ -40,7 +40,7 @@
 				isCompatibleBrowser = true;
 		}
 	}
-	// check for Gecko ( >= 20030210+ )
+	// check for Gecko ( >= 20030210+ OR >= 17.0 )
 	else if( find( "gecko/", sAgent ) )
 	{
 		// try to extract Gecko version date
@@ -52,6 +52,12 @@
 			if( sBrowserVersion GTE 20030210 )
 				isCompatibleBrowser = true;
 		}
+		stResult = reFind( "gecko/([0-9]+\.[0-9]+)", sAgent, 1, true );
+		if( arrayLen( stResult.pos ) eq 2 )
+		{
+			if ( mid( sAgent, stResult.pos[2], stResult.len[2] ) gte 17.0)
+				isCompatibleBrowser = true;
+		}
 	}
 	else if( find( "opera/", sAgent ) )
 	{