[Fusionforge-commits] r10060 - in trunk: . src/plugins/fckeditor/www src/plugins/fckeditor/www/_samples/_plugins/findreplace src/plugins/fckeditor/www/_samples/afp src/plugins/fckeditor/www/editor src/plugins/fckeditor/www/editor/_source/internals src/plugins/fckeditor/www/editor/css src/plugins/fckeditor/www/editor/css/behaviors src/plugins/fckeditor/www/editor/dialog src/plugins/fckeditor/www/editor/dialog/common src/plugins/fckeditor/www/editor/dialog/fck_about src/plugins/fckeditor/www/editor/dialog/fck_docprops src/plugins/fckeditor/www/editor/dialog/fck_flash src/plugins/fckeditor/www/editor/dialog/fck_image src/plugins/fckeditor/www/editor/dialog/fck_link src/plugins/fckeditor/www/editor/dialog/fck_select src/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages src/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/server-scripts src/plugins/fckeditor/www/editor/dialog/fck_universalkey src/plugins/fckeditor/www/editor/filemanager/browser/default src/plugins/fckeditor/www/editor/filemanager/browser/default/connectors src/plugins/fckeditor/www/editor/filemanager/browser/default/js src/plugins/fckeditor/www/editor/filemanager/upload src/plugins/fckeditor/www/editor/filemanager/upload/asp src/plugins/fckeditor/www/editor/lang src/plugins/fckeditor/www/editor/plugins/placeholder src/plugins/fckeditor/www/editor/plugins/placeholder/lang src/plugins/fckeditor/www/editor/plugins/simplecommands src/plugins/fckeditor/www/editor/plugins/tablecommands src/plugins/fckeditor/www/editor/skins/default src/plugins/fckeditor/www/editor/skins/office2003 src/plugins/fckeditor/www/editor/skins/silver src/www src/www/soap

Christian Bayle cbayle at libremir.placard.fr.eu.org
Thu Jun 17 11:34:42 CEST 2010


Author: cbayle
Date: 2010-06-17 11:34:41 +0200 (Thu, 17 Jun 2010)
New Revision: 10060

Added:
   trunk/src/
Removed:
   trunk/gforge/
Modified:
   trunk/src/plugins/fckeditor/www/_documentation.html
   trunk/src/plugins/fckeditor/www/_samples/_plugins/findreplace/find.html
   trunk/src/plugins/fckeditor/www/_samples/_plugins/findreplace/replace.html
   trunk/src/plugins/fckeditor/www/_samples/afp/fck.afpa.code
   trunk/src/plugins/fckeditor/www/_whatsnew.html
   trunk/src/plugins/fckeditor/www/editor/_source/internals/fckundo_gecko.js
   trunk/src/plugins/fckeditor/www/editor/css/behaviors/disablehandles.htc
   trunk/src/plugins/fckeditor/www/editor/css/behaviors/hiddenfield.htc
   trunk/src/plugins/fckeditor/www/editor/css/behaviors/showtableborders.htc
   trunk/src/plugins/fckeditor/www/editor/css/fck_internal.css
   trunk/src/plugins/fckeditor/www/editor/css/fck_showtableborders_gecko.css
   trunk/src/plugins/fckeditor/www/editor/dialog/common/fck_dialog_common.css
   trunk/src/plugins/fckeditor/www/editor/dialog/common/fck_dialog_common.js
   trunk/src/plugins/fckeditor/www/editor/dialog/common/fcknumericfield.htc
   trunk/src/plugins/fckeditor/www/editor/dialog/common/moz-bindings.xml
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_about.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_about/lgpl.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_anchor.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_button.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_checkbox.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_colorselector.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_docprops.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_docprops/fck_document_preview.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_find.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_flash.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_flash/fck_flash.js
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_form.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_hiddenfield.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_image.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_image/fck_image.js
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_link.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_link/fck_link.js
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_listprop.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_paste.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_radiobutton.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_replace.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_select.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_select/fck_select.js
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_smiley.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_source.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_specialchar.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/controls.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_table.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_tablecell.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_template.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_textarea.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_textfield.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_universalkey.html
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_universalkey/data.js
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_universalkey/diacritic.js
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_universalkey/dialogue.js
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_universalkey/fck_universalkey.css
   trunk/src/plugins/fckeditor/www/editor/dialog/fck_universalkey/multihexa.js
   trunk/src/plugins/fckeditor/www/editor/fckblank.html
   trunk/src/plugins/fckeditor/www/editor/fckdebug.html
   trunk/src/plugins/fckeditor/www/editor/fckdialog.html
   trunk/src/plugins/fckeditor/www/editor/fckeditor.html
   trunk/src/plugins/fckeditor/www/editor/fckeditor.original.html
   trunk/src/plugins/fckeditor/www/editor/filemanager/browser/default/browser.css
   trunk/src/plugins/fckeditor/www/editor/filemanager/browser/default/browser.html
   trunk/src/plugins/fckeditor/www/editor/filemanager/browser/default/connectors/test.html
   trunk/src/plugins/fckeditor/www/editor/filemanager/browser/default/frmactualfolder.html
   trunk/src/plugins/fckeditor/www/editor/filemanager/browser/default/frmcreatefolder.html
   trunk/src/plugins/fckeditor/www/editor/filemanager/browser/default/frmfolders.html
   trunk/src/plugins/fckeditor/www/editor/filemanager/browser/default/frmresourceslist.html
   trunk/src/plugins/fckeditor/www/editor/filemanager/browser/default/frmresourcetype.html
   trunk/src/plugins/fckeditor/www/editor/filemanager/browser/default/frmupload.html
   trunk/src/plugins/fckeditor/www/editor/filemanager/browser/default/js/common.js
   trunk/src/plugins/fckeditor/www/editor/filemanager/browser/default/js/fckxml.js
   trunk/src/plugins/fckeditor/www/editor/filemanager/upload/asp/io.asp
   trunk/src/plugins/fckeditor/www/editor/filemanager/upload/test.html
   trunk/src/plugins/fckeditor/www/editor/lang/_translationstatus.txt
   trunk/src/plugins/fckeditor/www/editor/lang/ar.js
   trunk/src/plugins/fckeditor/www/editor/lang/bg.js
   trunk/src/plugins/fckeditor/www/editor/lang/bs.js
   trunk/src/plugins/fckeditor/www/editor/lang/ca.js
   trunk/src/plugins/fckeditor/www/editor/lang/cs.js
   trunk/src/plugins/fckeditor/www/editor/lang/da.js
   trunk/src/plugins/fckeditor/www/editor/lang/de.js
   trunk/src/plugins/fckeditor/www/editor/lang/el.js
   trunk/src/plugins/fckeditor/www/editor/lang/en-au.js
   trunk/src/plugins/fckeditor/www/editor/lang/en-ca.js
   trunk/src/plugins/fckeditor/www/editor/lang/en-uk.js
   trunk/src/plugins/fckeditor/www/editor/lang/en.js
   trunk/src/plugins/fckeditor/www/editor/lang/eo.js
   trunk/src/plugins/fckeditor/www/editor/lang/es.js
   trunk/src/plugins/fckeditor/www/editor/lang/et.js
   trunk/src/plugins/fckeditor/www/editor/lang/eu.js
   trunk/src/plugins/fckeditor/www/editor/lang/fa.js
   trunk/src/plugins/fckeditor/www/editor/lang/fi.js
   trunk/src/plugins/fckeditor/www/editor/lang/fo.js
   trunk/src/plugins/fckeditor/www/editor/lang/fr.js
   trunk/src/plugins/fckeditor/www/editor/lang/gl.js
   trunk/src/plugins/fckeditor/www/editor/lang/he.js
   trunk/src/plugins/fckeditor/www/editor/lang/hr.js
   trunk/src/plugins/fckeditor/www/editor/lang/hu.js
   trunk/src/plugins/fckeditor/www/editor/lang/it.js
   trunk/src/plugins/fckeditor/www/editor/lang/ja.js
   trunk/src/plugins/fckeditor/www/editor/lang/ko.js
   trunk/src/plugins/fckeditor/www/editor/lang/lt.js
   trunk/src/plugins/fckeditor/www/editor/lang/mn.js
   trunk/src/plugins/fckeditor/www/editor/lang/ms.js
   trunk/src/plugins/fckeditor/www/editor/lang/nb.js
   trunk/src/plugins/fckeditor/www/editor/lang/nl.js
   trunk/src/plugins/fckeditor/www/editor/lang/no.js
   trunk/src/plugins/fckeditor/www/editor/lang/pl.js
   trunk/src/plugins/fckeditor/www/editor/lang/pt-br.js
   trunk/src/plugins/fckeditor/www/editor/lang/pt.js
   trunk/src/plugins/fckeditor/www/editor/lang/ro.js
   trunk/src/plugins/fckeditor/www/editor/lang/ru.js
   trunk/src/plugins/fckeditor/www/editor/lang/sk.js
   trunk/src/plugins/fckeditor/www/editor/lang/sl.js
   trunk/src/plugins/fckeditor/www/editor/lang/sr-latn.js
   trunk/src/plugins/fckeditor/www/editor/lang/sr.js
   trunk/src/plugins/fckeditor/www/editor/lang/sv.js
   trunk/src/plugins/fckeditor/www/editor/lang/th.js
   trunk/src/plugins/fckeditor/www/editor/lang/tr.js
   trunk/src/plugins/fckeditor/www/editor/lang/uk.js
   trunk/src/plugins/fckeditor/www/editor/lang/vi.js
   trunk/src/plugins/fckeditor/www/editor/lang/zh-cn.js
   trunk/src/plugins/fckeditor/www/editor/lang/zh.js
   trunk/src/plugins/fckeditor/www/editor/plugins/placeholder/fck_placeholder.html
   trunk/src/plugins/fckeditor/www/editor/plugins/placeholder/fckplugin.js
   trunk/src/plugins/fckeditor/www/editor/plugins/placeholder/lang/de.js
   trunk/src/plugins/fckeditor/www/editor/plugins/placeholder/lang/en.js
   trunk/src/plugins/fckeditor/www/editor/plugins/placeholder/lang/fr.js
   trunk/src/plugins/fckeditor/www/editor/plugins/placeholder/lang/it.js
   trunk/src/plugins/fckeditor/www/editor/plugins/simplecommands/fckplugin.js
   trunk/src/plugins/fckeditor/www/editor/plugins/tablecommands/fckplugin.js
   trunk/src/plugins/fckeditor/www/editor/skins/default/fck_dialog.css
   trunk/src/plugins/fckeditor/www/editor/skins/default/fck_editor.css
   trunk/src/plugins/fckeditor/www/editor/skins/office2003/fck_dialog.css
   trunk/src/plugins/fckeditor/www/editor/skins/office2003/fck_editor.css
   trunk/src/plugins/fckeditor/www/editor/skins/silver/fck_dialog.css
   trunk/src/plugins/fckeditor/www/editor/skins/silver/fck_editor.css
   trunk/src/plugins/fckeditor/www/fckconfig.js
   trunk/src/plugins/fckeditor/www/fckeditor.afp
   trunk/src/plugins/fckeditor/www/fckeditor.asp
   trunk/src/plugins/fckeditor/www/fckeditor.cfc
   trunk/src/plugins/fckeditor/www/fckeditor.cfm
   trunk/src/plugins/fckeditor/www/fckeditor.js
   trunk/src/plugins/fckeditor/www/fckeditor.lasso
   trunk/src/plugins/fckeditor/www/fckstyles.xml
   trunk/src/plugins/fckeditor/www/fcktemplates.xml
   trunk/src/plugins/fckeditor/www/htaccess.txt
   trunk/src/plugins/fckeditor/www/license.txt
   trunk/src/www/favicon.ico
   trunk/src/www/soap/nusoap.php
Log:
Rename gforge dir as src


Modified: trunk/src/plugins/fckeditor/www/_documentation.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/_documentation.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/_documentation.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,38 +1,38 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>FCKeditor - Documentation</title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<style type="text/css">
-		body { font-family: arial, verdana, sans-serif }
-		p { margin-left: 20px }
-	</style>
-</head>
-<body>
-	<h1>
-		FCKeditor Documentation</h1>
-	<p>
-		You can find the official documentation for FCKeditor online, at <a href="http://docs.fckeditor.net/">
-			http://docs.fckeditor.net/</a>.</p>
-</body>
-</html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>FCKeditor - Documentation</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<style type="text/css">
+		body { font-family: arial, verdana, sans-serif }
+		p { margin-left: 20px }
+	</style>
+</head>
+<body>
+	<h1>
+		FCKeditor Documentation</h1>
+	<p>
+		You can find the official documentation for FCKeditor online, at <a href="http://docs.fckeditor.net/">
+			http://docs.fckeditor.net/</a>.</p>
+</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/_samples/_plugins/findreplace/find.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/_samples/_plugins/findreplace/find.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/_samples/_plugins/findreplace/find.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,172 +1,172 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 sample "Find" plugin window.
--->
-<html>
-	<head>
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-		<meta content="noindex, nofollow" name="robots">
-		<script type="text/javascript">
-
-var oEditor = window.parent.InnerDialogLoaded() ;
-
-function OnLoad()
-{
-	// Whole word is available on IE only.
-	if ( oEditor.FCKBrowserInfo.IsIE )
-		document.getElementById('divWord').style.display = '' ;
-
-	// First of all, translate the dialog box texts.
-	oEditor.FCKLanguageManager.TranslatePage( document ) ;
-
-	window.parent.SetAutoSize( true ) ;
-}
-
-function btnStat(frm)
-{
-	document.getElementById('btnFind').disabled =
-		( document.getElementById('txtFind').value.length == 0 ) ;
-}
-
-function ReplaceTextNodes( parentNode, regex, replaceValue, replaceAll )
-{
-	for ( var i = 0 ; i < parentNode.childNodes.length ; i++ )
-	{
-		var oNode = parentNode.childNodes[i] ;
-		if ( oNode.nodeType == 3 )
-		{
-			var sReplaced = oNode.nodeValue.replace( regex, replaceValue ) ;
-			if ( oNode.nodeValue != sReplaced )
-			{
-				oNode.nodeValue = sReplaced ;
-				if ( ! replaceAll )
-					return true ;
-			}
-		}
-		else
-		{
-			if ( ReplaceTextNodes( oNode, regex, replaceValue ) )
-				return true ;
-		}
-	}
-	return false ;
-}
-
-function GetRegexExpr()
-{
-	if ( document.getElementById('chkWord').checked )
-		var sExpr = '\\b' + document.getElementById('txtFind').value + '\\b' ;
-	else
-		var sExpr = document.getElementById('txtFind').value ;
-
-	return sExpr ;
-}
-
-function GetCase()
-{
-	return ( document.getElementById('chkCase').checked ? '' : 'i' ) ;
-}
-
-function Ok()
-{
-	if ( document.getElementById('txtFind').value.length == 0 )
-		return ;
-
-	if ( oEditor.FCKBrowserInfo.IsIE )
-		FindIE() ;
-	else
-		FindGecko() ;
-}
-
-var oRange = null ;
-
-function FindIE()
-{
-	if ( oRange == null )
-		oRange = oEditor.FCK.EditorDocument.body.createTextRange() ;
-
-	var iFlags = 0 ;
-
-	if ( chkCase.checked )
-		iFlags = iFlags | 4 ;
-
-	if ( chkWord.checked )
-		iFlags = iFlags | 2 ;
-
-	var bFound = oRange.findText( document.getElementById('txtFind').value, 1, iFlags ) ;
-
-	if ( bFound )
-	{
-		oRange.scrollIntoView() ;
-		oRange.select() ;
-		oRange.collapse(false) ;
-		oLastRangeFound = oRange ;
-	}
-	else
-	{
-		oRange = null ;
-		alert( oEditor.FCKLang.DlgFindNotFoundMsg ) ;
-	}
-}
-
-function FindGecko()
-{
-	var bCase = document.getElementById('chkCase').checked ;
-	var bWord = document.getElementById('chkWord').checked ;
-
-	// window.find( searchString, caseSensitive, backwards, wrapAround, wholeWord, searchInFrames, showDialog ) ;
-	oEditor.FCK.EditorWindow.find( document.getElementById('txtFind').value, bCase, false, false, bWord, false, false ) ;
-
-}
-		</script>
-	</head>
-	<body onload="OnLoad()" scroll="no" style="OVERFLOW: hidden">
-		<div align="center">
-			This is my Plugin!
-		</div>
-		<table cellSpacing="3" cellPadding="2" width="100%" border="0">
-			<tr>
-				<td nowrap>
-					<label for="txtFind" fckLang="DlgMyReplaceFindLbl">Find what:</label>&nbsp;
-				</td>
-				<td width="100%">
-					<input id="txtFind" onkeyup="btnStat(this.form)" style="WIDTH: 100%" tabIndex="1" type="text">
-				</td>
-				<td>
-					<input id="btnFind" style="WIDTH: 100%; PADDING-RIGHT: 5px; PADDING-LEFT: 5px" disabled
-						onclick="Ok();" type="button" value="Find" fckLang="DlgMyFindFindBtn">
-				</td>
-			</tr>
-			<tr>
-				<td valign="bottom" colSpan="3">
-					&nbsp;<input id="chkCase" tabIndex="3" type="checkbox"><label for="chkCase" fckLang="DlgMyReplaceCaseChk">Match
-						case</label>
-					<br>
-					<div id="divWord" style="DISPLAY: none">
-						&nbsp;<input id="chkWord" tabIndex="4" type="checkbox"><label for="chkWord" fckLang="DlgMyReplaceWordChk">Match
-							whole word</label>
-					</div>
-				</td>
-			</tr>
-		</table>
-	</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 sample "Find" plugin window.
+-->
+<html>
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+function OnLoad()
+{
+	// Whole word is available on IE only.
+	if ( oEditor.FCKBrowserInfo.IsIE )
+		document.getElementById('divWord').style.display = '' ;
+
+	// First of all, translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage( document ) ;
+
+	window.parent.SetAutoSize( true ) ;
+}
+
+function btnStat(frm)
+{
+	document.getElementById('btnFind').disabled =
+		( document.getElementById('txtFind').value.length == 0 ) ;
+}
+
+function ReplaceTextNodes( parentNode, regex, replaceValue, replaceAll )
+{
+	for ( var i = 0 ; i < parentNode.childNodes.length ; i++ )
+	{
+		var oNode = parentNode.childNodes[i] ;
+		if ( oNode.nodeType == 3 )
+		{
+			var sReplaced = oNode.nodeValue.replace( regex, replaceValue ) ;
+			if ( oNode.nodeValue != sReplaced )
+			{
+				oNode.nodeValue = sReplaced ;
+				if ( ! replaceAll )
+					return true ;
+			}
+		}
+		else
+		{
+			if ( ReplaceTextNodes( oNode, regex, replaceValue ) )
+				return true ;
+		}
+	}
+	return false ;
+}
+
+function GetRegexExpr()
+{
+	if ( document.getElementById('chkWord').checked )
+		var sExpr = '\\b' + document.getElementById('txtFind').value + '\\b' ;
+	else
+		var sExpr = document.getElementById('txtFind').value ;
+
+	return sExpr ;
+}
+
+function GetCase()
+{
+	return ( document.getElementById('chkCase').checked ? '' : 'i' ) ;
+}
+
+function Ok()
+{
+	if ( document.getElementById('txtFind').value.length == 0 )
+		return ;
+
+	if ( oEditor.FCKBrowserInfo.IsIE )
+		FindIE() ;
+	else
+		FindGecko() ;
+}
+
+var oRange = null ;
+
+function FindIE()
+{
+	if ( oRange == null )
+		oRange = oEditor.FCK.EditorDocument.body.createTextRange() ;
+
+	var iFlags = 0 ;
+
+	if ( chkCase.checked )
+		iFlags = iFlags | 4 ;
+
+	if ( chkWord.checked )
+		iFlags = iFlags | 2 ;
+
+	var bFound = oRange.findText( document.getElementById('txtFind').value, 1, iFlags ) ;
+
+	if ( bFound )
+	{
+		oRange.scrollIntoView() ;
+		oRange.select() ;
+		oRange.collapse(false) ;
+		oLastRangeFound = oRange ;
+	}
+	else
+	{
+		oRange = null ;
+		alert( oEditor.FCKLang.DlgFindNotFoundMsg ) ;
+	}
+}
+
+function FindGecko()
+{
+	var bCase = document.getElementById('chkCase').checked ;
+	var bWord = document.getElementById('chkWord').checked ;
+
+	// window.find( searchString, caseSensitive, backwards, wrapAround, wholeWord, searchInFrames, showDialog ) ;
+	oEditor.FCK.EditorWindow.find( document.getElementById('txtFind').value, bCase, false, false, bWord, false, false ) ;
+
+}
+		</script>
+	</head>
+	<body onload="OnLoad()" scroll="no" style="OVERFLOW: hidden">
+		<div align="center">
+			This is my Plugin!
+		</div>
+		<table cellSpacing="3" cellPadding="2" width="100%" border="0">
+			<tr>
+				<td nowrap>
+					<label for="txtFind" fckLang="DlgMyReplaceFindLbl">Find what:</label>&nbsp;
+				</td>
+				<td width="100%">
+					<input id="txtFind" onkeyup="btnStat(this.form)" style="WIDTH: 100%" tabIndex="1" type="text">
+				</td>
+				<td>
+					<input id="btnFind" style="WIDTH: 100%; PADDING-RIGHT: 5px; PADDING-LEFT: 5px" disabled
+						onclick="Ok();" type="button" value="Find" fckLang="DlgMyFindFindBtn">
+				</td>
+			</tr>
+			<tr>
+				<td valign="bottom" colSpan="3">
+					&nbsp;<input id="chkCase" tabIndex="3" type="checkbox"><label for="chkCase" fckLang="DlgMyReplaceCaseChk">Match
+						case</label>
+					<br>
+					<div id="divWord" style="DISPLAY: none">
+						&nbsp;<input id="chkWord" tabIndex="4" type="checkbox"><label for="chkWord" fckLang="DlgMyReplaceWordChk">Match
+							whole word</label>
+					</div>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/_samples/_plugins/findreplace/replace.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/_samples/_plugins/findreplace/replace.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/_samples/_plugins/findreplace/replace.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,135 +1,135 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 sample "Replace" plugin window.
--->
-<html>
-	<head>
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-		<meta content="noindex, nofollow" name="robots">
-		<script type="text/javascript">
-
-var oEditor = window.parent.InnerDialogLoaded() ;
-
-function OnLoad()
-{
-	// First of all, translate the dialog box texts
-	oEditor.FCKLanguageManager.TranslatePage( document ) ;
-
-	window.parent.SetAutoSize( true ) ;
-}
-
-function btnStat(frm)
-{
-	document.getElementById('btnReplace').disabled =
-		document.getElementById('btnReplaceAll').disabled =
-			( document.getElementById('txtFind').value.length == 0 ) ;
-}
-
-function ReplaceTextNodes( parentNode, regex, replaceValue, replaceAll, hasFound )
-{
-	for ( var i = 0 ; i < parentNode.childNodes.length ; i++ )
-	{
-		var oNode = parentNode.childNodes[i] ;
-		if ( oNode.nodeType == 3 )
-		{
-			var sReplaced = oNode.nodeValue.replace( regex, replaceValue ) ;
-			if ( oNode.nodeValue != sReplaced )
-			{
-				oNode.nodeValue = sReplaced ;
-				if ( ! replaceAll )
-					return true ;
-				hasFound = true ;
-			}
-		}
-
-		hasFound = ReplaceTextNodes( oNode, regex, replaceValue, replaceAll, hasFound ) ;
-		if ( ! replaceAll && hasFound )
-			return true ;
-	}
-
-	return hasFound ;
-}
-
-function GetRegexExpr()
-{
-	if ( document.getElementById('chkWord').checked )
-		var sExpr = '\\b' + document.getElementById('txtFind').value + '\\b' ;
-	else
-		var sExpr = document.getElementById('txtFind').value ;
-
-	return sExpr ;
-}
-
-function GetCase()
-{
-	return ( document.getElementById('chkCase').checked ? '' : 'i' ) ;
-}
-
-function Replace()
-{
-	var oRegex = new RegExp( GetRegexExpr(), GetCase() ) ;
-	ReplaceTextNodes( oEditor.FCK.EditorDocument.body, oRegex, document.getElementById('txtReplace').value, false ) ;
-}
-
-function ReplaceAll()
-{
-	var oRegex = new RegExp( GetRegexExpr(), GetCase() + 'g' ) ;
-	ReplaceTextNodes( oEditor.FCK.EditorDocument.body, oRegex, document.getElementById('txtReplace').value, true ) ;
-	window.parent.Cancel() ;
-}
-		</script>
-	</head>
-	<body onload="OnLoad()" scroll="no" style="OVERFLOW: hidden">
-		<div align="center">
-			This is my Plugin!
-		</div>
-		<table cellSpacing="3" cellPadding="2" width="100%" border="0">
-			<tr>
-				<td noWrap><label for="txtFind" fckLang="DlgMyReplaceFindLbl">Find what:</label>
-				</td>
-				<td width="100%"><input id="txtFind" onkeyup="btnStat(this.form)" style="WIDTH: 100%" tabIndex="1" type="text">
-				</td>
-				<td><input id="btnReplace" style="WIDTH: 100%" disabled onclick="Replace();" type="button"
-						value="Replace" fckLang="DlgMyReplaceReplaceBtn">
-				</td>
-			</tr>
-			<tr>
-				<td vAlign="top" nowrap><label for="txtReplace" fckLang="DlgMyReplaceReplaceLbl">Replace
-						with:</label>
-				</td>
-				<td vAlign="top"><input id="txtReplace" style="WIDTH: 100%" tabIndex="2" type="text">
-				</td>
-				<td><input id="btnReplaceAll" disabled onclick="ReplaceAll()" type="button" value="Replace All"
-						fckLang="DlgMyReplaceReplAllBtn">
-				</td>
-			</tr>
-			<tr>
-				<td vAlign="bottom" colSpan="3">&nbsp;<input id="chkCase" tabIndex="3" type="checkbox"><label for="chkCase" fckLang="DlgMyReplaceCaseChk">Match
-						case</label>
-					<br>
-					&nbsp;<input id="chkWord" tabIndex="4" type="checkbox"><label for="chkWord" fckLang="DlgMyReplaceWordChk">Match
-						whole word</label>
-				</td>
-			</tr>
-		</table>
-	</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 sample "Replace" plugin window.
+-->
+<html>
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+function OnLoad()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage( document ) ;
+
+	window.parent.SetAutoSize( true ) ;
+}
+
+function btnStat(frm)
+{
+	document.getElementById('btnReplace').disabled =
+		document.getElementById('btnReplaceAll').disabled =
+			( document.getElementById('txtFind').value.length == 0 ) ;
+}
+
+function ReplaceTextNodes( parentNode, regex, replaceValue, replaceAll, hasFound )
+{
+	for ( var i = 0 ; i < parentNode.childNodes.length ; i++ )
+	{
+		var oNode = parentNode.childNodes[i] ;
+		if ( oNode.nodeType == 3 )
+		{
+			var sReplaced = oNode.nodeValue.replace( regex, replaceValue ) ;
+			if ( oNode.nodeValue != sReplaced )
+			{
+				oNode.nodeValue = sReplaced ;
+				if ( ! replaceAll )
+					return true ;
+				hasFound = true ;
+			}
+		}
+
+		hasFound = ReplaceTextNodes( oNode, regex, replaceValue, replaceAll, hasFound ) ;
+		if ( ! replaceAll && hasFound )
+			return true ;
+	}
+
+	return hasFound ;
+}
+
+function GetRegexExpr()
+{
+	if ( document.getElementById('chkWord').checked )
+		var sExpr = '\\b' + document.getElementById('txtFind').value + '\\b' ;
+	else
+		var sExpr = document.getElementById('txtFind').value ;
+
+	return sExpr ;
+}
+
+function GetCase()
+{
+	return ( document.getElementById('chkCase').checked ? '' : 'i' ) ;
+}
+
+function Replace()
+{
+	var oRegex = new RegExp( GetRegexExpr(), GetCase() ) ;
+	ReplaceTextNodes( oEditor.FCK.EditorDocument.body, oRegex, document.getElementById('txtReplace').value, false ) ;
+}
+
+function ReplaceAll()
+{
+	var oRegex = new RegExp( GetRegexExpr(), GetCase() + 'g' ) ;
+	ReplaceTextNodes( oEditor.FCK.EditorDocument.body, oRegex, document.getElementById('txtReplace').value, true ) ;
+	window.parent.Cancel() ;
+}
+		</script>
+	</head>
+	<body onload="OnLoad()" scroll="no" style="OVERFLOW: hidden">
+		<div align="center">
+			This is my Plugin!
+		</div>
+		<table cellSpacing="3" cellPadding="2" width="100%" border="0">
+			<tr>
+				<td noWrap><label for="txtFind" fckLang="DlgMyReplaceFindLbl">Find what:</label>
+				</td>
+				<td width="100%"><input id="txtFind" onkeyup="btnStat(this.form)" style="WIDTH: 100%" tabIndex="1" type="text">
+				</td>
+				<td><input id="btnReplace" style="WIDTH: 100%" disabled onclick="Replace();" type="button"
+						value="Replace" fckLang="DlgMyReplaceReplaceBtn">
+				</td>
+			</tr>
+			<tr>
+				<td vAlign="top" nowrap><label for="txtReplace" fckLang="DlgMyReplaceReplaceLbl">Replace
+						with:</label>
+				</td>
+				<td vAlign="top"><input id="txtReplace" style="WIDTH: 100%" tabIndex="2" type="text">
+				</td>
+				<td><input id="btnReplaceAll" disabled onclick="ReplaceAll()" type="button" value="Replace All"
+						fckLang="DlgMyReplaceReplAllBtn">
+				</td>
+			</tr>
+			<tr>
+				<td vAlign="bottom" colSpan="3">&nbsp;<input id="chkCase" tabIndex="3" type="checkbox"><label for="chkCase" fckLang="DlgMyReplaceCaseChk">Match
+						case</label>
+					<br>
+					&nbsp;<input id="chkWord" tabIndex="4" type="checkbox"><label for="chkWord" fckLang="DlgMyReplaceWordChk">Match
+						whole word</label>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/_samples/afp/fck.afpa.code
===================================================================
--- trunk/gforge/plugins/fckeditor/www/_samples/afp/fck.afpa.code	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/_samples/afp/fck.afpa.code	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,165 +1,165 @@
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 class definition file for the sample pages.
- *
-
- DEFINE CLASS fckeditor AS custom
-	cInstanceName =""
-	BasePath =""
-	cWIDTH =""
-	cHEIGHT =""
-	ToolbarSet =""
-	cValue=""
-	DIMENSION aConfig(10,2)
-
-&& -----------------------------------------------------------------------
-	FUNCTION fckeditor( tcInstanceName )
-		LOCAL lnLoop,lnLoop2
-		THIS.cInstanceName	= tcInstanceName
-		THIS.BasePath	= '../../../FCKeditor/'
-		THIS.cWIDTH		= '100%'
-		THIS.cHEIGHT	= '200'
-		THIS.ToolbarSet	= 'Default'
-		THIS.cValue		= ''
-		FOR lnLoop=1 TO 10
-			FOR lnLoop2=1 TO 2
-				THIS.aConfig(lnLoop,lnLoop2)	= ""
-			NEXT
-		NEXT
-		RETURN
-	ENDFUNC
-
-
-&& -----------------------------------------------------------------------
-	FUNCTION CREATE()
-		RETURN(THIS.CreateHtml())
-	ENDFUNC
-
-&& -----------------------------------------------------------------------
-	FUNCTION CreateHtml()
-		LOCAL html
-		LOCAL lcLink
-
-		HtmlValue = THIS.cValue		&& HTMLSPECIALCHARS()
-
-		html = [<div>]
-		IF THIS.IsCompatible()
-			lcLink = THIS.BasePath+[editor/fckeditor.html?InstanceName=]+THIS.cInstanceName
-
-			IF ( !THIS.ToolbarSet == '' )
-				lcLink = lcLink + [&Toolbar=]+THIS.ToolbarSet
-			ENDIF
-
-&& Render the LINKED HIDDEN FIELD.
-			html = html + [<input type="hidden" id="]+THIS.cInstanceName +[" name="]+THIS.cInstanceName +[" value="]+HtmlValue+[">]
-
-&& Render the configurations HIDDEN FIELD.
-			html = html + [<input type="hidden" id="]+THIS.cInstanceName +[___Config" value="]+THIS.GetConfigFieldString() + [">] +CHR(13)+CHR(10)
-
-&& Render the EDITOR IFRAME.
-			html = html + [<iframe id="]+THIS.cInstanceName +[___Frame" src="]+lcLink+[" width="]+THIS.cWIDTH+[" height="]+THIS.cHEIGHT+[" frameborder="no" scrolling="no"></iframe>]
-		ELSE
-			IF ( AT("%", THIS.cWIDTH)=0 )
-				WidthCSS = THIS.cWIDTH + 'px'
-			ELSE
-				WidthCSS = THIS.cWIDTH
-			ENDIF
-
-			IF ( AT("%",THIS.cHEIGHT)=0  )
-				HeightCSS = THIS.cHEIGHT + 'px'
-			ELSE
-				HeightCSS = THIS.cHEIGHT
-			ENDIF
-
-			html = html + [<textarea name="]+THIS.cInstanceName +[" rows="4" cols="40" style="width: ]+WidthCSS+[ height: ]+HeightCSS+[" wrap="virtual">]+HtmlValue+[</textarea>]
-		ENDIF
-
-		html = html + [</div>]
-
-		RETURN (html)
-	ENDFUNC
-
-
-&& -----------------------------------------------------------------------
-	FUNCTION IsCompatible()
-		LOCAL llRetval
-		LOCAL sAgent
-
-		llRetval=.F.
-
-		sAgent= LOWER(Request.ServerVariables("HTTP_USER_AGENT"))
-
-		IF AT("msie",sAgent) >0 .AND. AT("mac",sAgent)=0 .AND. AT("opera",sAgent)=0
-			iVersion=VAL(SUBSTR(sAgent,AT("msie",sAgent)+5,3))
-			llRetval= iVersion > 5.5
-		ELSE
-			IF AT("gecko",sAgent)>0
-				iVersion=VAL(SUBSTR(sAgent,AT("gecko/",sAgent)+6,8))
-				llRetval =iVersion > 20030210
-			ENDIF
-		ENDIF
-		RETURN (llRetval)
-	ENDFUNC
-
-&& -----------------------------------------------------------------------
-	FUNCTION GetConfigFieldString()
-		LOCAL sParams
-		LOCAL bFirst
-		LOCAL sKey
-		sParams = ""
-		bFirst = .T.
-		FOR lnLoop=1 TO 10 && ALEN(this.aconfig)
-			IF !EMPTY(THIS.aConfig(lnLoop,1))
-				IF bFirst = .F.
-					sParams = sParams + "&"
-				ELSE
-					bFirst = .F.
-				ENDIF
-				sParams = sParams +THIS.aConfig(lnLoop,1)+[=]+THIS.aConfig(lnLoop,2)
-			ELSE
-				EXIT
-			ENDIF
-		NEXT
-		RETURN(sParams)
-	ENDFUNC
-&& -----------------------------------------------------------------------
-&& This function removes unwanted characters in URL parameters mostly entered by hackers
-
-	FUNCTION StripAttacks
-		LPARAMETERS tcString
-		IF !EMPTY(tcString)
-			tcString=STRTRAN(tcString,"&","")
-			tcString=STRTRAN(tcString,"?","")
-			tcString=STRTRAN(tcString,";","")
-			tcString=STRTRAN(tcString,"!","")
-			tcString=STRTRAN(tcString,"<%","")
-			tcString=STRTRAN(tcString,"%>","")
-			tcString=STRTRAN(tcString,"<","")
-			tcString=STRTRAN(tcString,">","")
-			tcString=STRTRAN(tcString,"..","")
-			tcString=STRTRAN(tcString,"/","")
-			tcString=STRTRAN(tcString,"\","")
-			tcString=STRTRAN(tcString,":","")
-		ELSE
-			tcString=""
-		ENDIF
-		RETURN (tcString)
-
-ENDDEFINE
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 class definition file for the sample pages.
+ *
+
+ DEFINE CLASS fckeditor AS custom
+	cInstanceName =""
+	BasePath =""
+	cWIDTH =""
+	cHEIGHT =""
+	ToolbarSet =""
+	cValue=""
+	DIMENSION aConfig(10,2)
+
+&& -----------------------------------------------------------------------
+	FUNCTION fckeditor( tcInstanceName )
+		LOCAL lnLoop,lnLoop2
+		THIS.cInstanceName	= tcInstanceName
+		THIS.BasePath	= '../../../FCKeditor/'
+		THIS.cWIDTH		= '100%'
+		THIS.cHEIGHT	= '200'
+		THIS.ToolbarSet	= 'Default'
+		THIS.cValue		= ''
+		FOR lnLoop=1 TO 10
+			FOR lnLoop2=1 TO 2
+				THIS.aConfig(lnLoop,lnLoop2)	= ""
+			NEXT
+		NEXT
+		RETURN
+	ENDFUNC
+
+
+&& -----------------------------------------------------------------------
+	FUNCTION CREATE()
+		RETURN(THIS.CreateHtml())
+	ENDFUNC
+
+&& -----------------------------------------------------------------------
+	FUNCTION CreateHtml()
+		LOCAL html
+		LOCAL lcLink
+
+		HtmlValue = THIS.cValue		&& HTMLSPECIALCHARS()
+
+		html = [<div>]
+		IF THIS.IsCompatible()
+			lcLink = THIS.BasePath+[editor/fckeditor.html?InstanceName=]+THIS.cInstanceName
+
+			IF ( !THIS.ToolbarSet == '' )
+				lcLink = lcLink + [&Toolbar=]+THIS.ToolbarSet
+			ENDIF
+
+&& Render the LINKED HIDDEN FIELD.
+			html = html + [<input type="hidden" id="]+THIS.cInstanceName +[" name="]+THIS.cInstanceName +[" value="]+HtmlValue+[">]
+
+&& Render the configurations HIDDEN FIELD.
+			html = html + [<input type="hidden" id="]+THIS.cInstanceName +[___Config" value="]+THIS.GetConfigFieldString() + [">] +CHR(13)+CHR(10)
+
+&& Render the EDITOR IFRAME.
+			html = html + [<iframe id="]+THIS.cInstanceName +[___Frame" src="]+lcLink+[" width="]+THIS.cWIDTH+[" height="]+THIS.cHEIGHT+[" frameborder="no" scrolling="no"></iframe>]
+		ELSE
+			IF ( AT("%", THIS.cWIDTH)=0 )
+				WidthCSS = THIS.cWIDTH + 'px'
+			ELSE
+				WidthCSS = THIS.cWIDTH
+			ENDIF
+
+			IF ( AT("%",THIS.cHEIGHT)=0  )
+				HeightCSS = THIS.cHEIGHT + 'px'
+			ELSE
+				HeightCSS = THIS.cHEIGHT
+			ENDIF
+
+			html = html + [<textarea name="]+THIS.cInstanceName +[" rows="4" cols="40" style="width: ]+WidthCSS+[ height: ]+HeightCSS+[" wrap="virtual">]+HtmlValue+[</textarea>]
+		ENDIF
+
+		html = html + [</div>]
+
+		RETURN (html)
+	ENDFUNC
+
+
+&& -----------------------------------------------------------------------
+	FUNCTION IsCompatible()
+		LOCAL llRetval
+		LOCAL sAgent
+
+		llRetval=.F.
+
+		sAgent= LOWER(Request.ServerVariables("HTTP_USER_AGENT"))
+
+		IF AT("msie",sAgent) >0 .AND. AT("mac",sAgent)=0 .AND. AT("opera",sAgent)=0
+			iVersion=VAL(SUBSTR(sAgent,AT("msie",sAgent)+5,3))
+			llRetval= iVersion > 5.5
+		ELSE
+			IF AT("gecko",sAgent)>0
+				iVersion=VAL(SUBSTR(sAgent,AT("gecko/",sAgent)+6,8))
+				llRetval =iVersion > 20030210
+			ENDIF
+		ENDIF
+		RETURN (llRetval)
+	ENDFUNC
+
+&& -----------------------------------------------------------------------
+	FUNCTION GetConfigFieldString()
+		LOCAL sParams
+		LOCAL bFirst
+		LOCAL sKey
+		sParams = ""
+		bFirst = .T.
+		FOR lnLoop=1 TO 10 && ALEN(this.aconfig)
+			IF !EMPTY(THIS.aConfig(lnLoop,1))
+				IF bFirst = .F.
+					sParams = sParams + "&"
+				ELSE
+					bFirst = .F.
+				ENDIF
+				sParams = sParams +THIS.aConfig(lnLoop,1)+[=]+THIS.aConfig(lnLoop,2)
+			ELSE
+				EXIT
+			ENDIF
+		NEXT
+		RETURN(sParams)
+	ENDFUNC
+&& -----------------------------------------------------------------------
+&& This function removes unwanted characters in URL parameters mostly entered by hackers
+
+	FUNCTION StripAttacks
+		LPARAMETERS tcString
+		IF !EMPTY(tcString)
+			tcString=STRTRAN(tcString,"&","")
+			tcString=STRTRAN(tcString,"?","")
+			tcString=STRTRAN(tcString,";","")
+			tcString=STRTRAN(tcString,"!","")
+			tcString=STRTRAN(tcString,"<%","")
+			tcString=STRTRAN(tcString,"%>","")
+			tcString=STRTRAN(tcString,"<","")
+			tcString=STRTRAN(tcString,">","")
+			tcString=STRTRAN(tcString,"..","")
+			tcString=STRTRAN(tcString,"/","")
+			tcString=STRTRAN(tcString,"\","")
+			tcString=STRTRAN(tcString,":","")
+		ELSE
+			tcString=""
+		ENDIF
+		RETURN (tcString)
+
+ENDDEFINE

Modified: trunk/src/plugins/fckeditor/www/_whatsnew.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/_whatsnew.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/_whatsnew.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,167 +1,167 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>FCKeditor ChangeLog - What's New?</title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<style type="text/css">
-		body { font-family: arial, verdana, sans-serif }
-		p { margin-left: 20px }
-		h1 { border-bottom: solid 1px gray; padding-bottom: 20px }
-	</style>
-</head>
-<body>
-	<h1>
-		FCKeditor ChangeLog - What's New?</h1>
-	<h3>
-		Version 2.6.3</h3>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2412">#2412</a>] FCK.InsertHtml()
-			is now properly removing selected contents after content insertion in Firefox.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2420">#2420</a>] Spelling
-			mistake corrections made by the spell checking dialog are now undoable. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2411">#2411</a>] Insert
-			anchor was not working for non-empty selections.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2426">#2426</a>] It was
-			impossible to switch between editor areas with a single click.</li>
-		<li>Language file updates for the following languages:
-			<ul>
-				<li>Canadian French</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2402">#2402</a>] Catalan
-				</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2400">#2400</a>] Chinese
-					(Simplified and Traditional)</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2401">#2401</a>] Croatian</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2422">#2422</a>] Czech</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2417">#2417</a>] Dutch</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2428">#2428</a>] French</li>
-				<li>German</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2427">#2427</a>] Hebrew</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2410">#2410</a>] Hindi</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2405">#2405</a>] Japanese</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2409">#2409</a>] Norwegian
-					and Norwegian Bokmål</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2429">#2429</a>] Spanish</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2406">#2406</a>] Vietnamese</li>
-			</ul>
-		</li>
-	</ul>
-	<p>
-		This version has been sponsored by <a href="http://www.dataillusion.com/fs/">Data Illusion
-			survey software solutions</a>.</p>
-	<h3>
-		Version 2.6.3 Beta</h3>
-	<p>
-		New Features and Improvements:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/439">#439</a>] Added a
-			new <strong>context menu option for opening links</strong> in the editor.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2220">#2220</a>] <strong>
-			Email links</strong> from the Link dialog <strong>are now encoded</strong> by default
-			to prevent being harvested by spammers. (Kudos to asuter for proposing the patch)
-		</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2234">#2234</a>] Added
-			the ability to create, modify and remove <strong>DIV containers</strong>. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2247">#2247</a>] The <strong>
-			SHIFT+SPACE</strong> keystroke will now <strong>produce a &amp;nbsp;</strong> character.
-		</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2252">#2252</a>] It's
-			now possible to enable the browsers default menu using the configuration file (FCKConfig.BrowserContextMenu
-			option). </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2032">#2032</a>] Added
-			HTML samples for legacy HTML and Flash HTML. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/234">#234</a>] Introduced
-			the "PreventSubmitHandler" setting, which makes it possible to instruct the editor
-			to not handle the hidden field update on form submit events.</li>
-	</ul>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2319">#2319</a>] On Opera
-			and Firefox 3, the entire page was scrolling on SHIFT+ENTER, or when EnterMode='br'.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2321">#2321</a>] On Firefox
-			3, the entire page was scrolling when inserting block elements with the FCK.InsertElement
-			function, used by the Table and Horizontal Rule buttons.. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/692">#692</a>] Added some
-			hints in editor/css/fck_editorarea.css on how to handle style items that would break
-			the style combo. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2263">#2263</a>] Fixed
-			a JavaScript error in IE which occurs when there are placeholder elements in the
-			document and the user has pressed the Source button.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2314">#2314</a>] Corrected
-			mixed up Chinese translations for the blockquote command.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2323">#2323</a>] Fixed
-			the issue where the show blocks command loses the current selection from the view
-			area when editing a long document.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2322">#2322</a>] Fixed
-			the issue where the fit window command loses the current selection and scroll position
-			in the editing area.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1917">#1917</a>] Fixed
-			the issue where the merge down command for tables cells does not work in IE for
-			more than two cells.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2320">#2320</a>] Fixed
-			the issue where the Find/Replace dialog scrolls the entire page.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1645">#1645</a>] Added
-			warning message about Firefox 3's strict origin policy.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2272">#2272</a>] Improved
-			the garbage filter in Paste from Word dialog.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2327">#2327</a>] Fixed
-			invalid HTML in the Paste dialog.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1907">#1907</a>] Fixed
-			sporadic "FCKeditorAPI is not defined" errors in Firefox 3.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2356">#2356</a>] Fixed
-			access denied error in IE7 when FCKeditor is launched from local filesystem.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1150">#1150</a>] Fixed
-			the type="_moz" attribute that sometimes appear in &lt;br&gt; tags in non-IE browsers.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1229">#1229</a>] Converting
-			multiple contiguous paragraphs to Formatted will now be merged into a single &lt;PRE&gt;
-			block.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2363">#2363</a>] There
-			were some sporadic "Permission Denied" errors with IE on some situations.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2135">#2135</a>] Fixed
-			a data loss bug in IE when there are @import statements in the editor's CSS files,
-			and IE's cache is set to "Check for newer versions on every visit".</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2376">#2376</a>] FCK.InsertHtml()
-			will now insert to the last selected position after the user has selected things
-			outside of FCKeditor, in IE.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2368">#2368</a>] Fixed
-			broken protect source logic for comments in IE.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2387">#2387</a>] Fixed
-			JavaScript error with list commands when the editable document is selected with
-			Ctrl-A.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2390">#2390</a>] Fixed
-			the issue where indent styles in JavaScript-generated &lt;p&gt; blocks are erased
-			in IE.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2394">#2394</a>] Fixed
-			JavaScript error with the "split vertically" command in IE when attempting to split
-			cells in the last row of a table.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2316">#2316</a>] The sample
-			posted data page has now the table fixed at 100% width. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2396">#2396</a>] SpellerPages
-			was causing a "Permission Denied" error in some situations. </li>
-	</ul>
-	<p>
-		<a href="_whatsnew_history.html">See previous versions history</a></p>
-</body>
-</html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>FCKeditor ChangeLog - What's New?</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<style type="text/css">
+		body { font-family: arial, verdana, sans-serif }
+		p { margin-left: 20px }
+		h1 { border-bottom: solid 1px gray; padding-bottom: 20px }
+	</style>
+</head>
+<body>
+	<h1>
+		FCKeditor ChangeLog - What's New?</h1>
+	<h3>
+		Version 2.6.3</h3>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2412">#2412</a>] FCK.InsertHtml()
+			is now properly removing selected contents after content insertion in Firefox.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2420">#2420</a>] Spelling
+			mistake corrections made by the spell checking dialog are now undoable. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2411">#2411</a>] Insert
+			anchor was not working for non-empty selections.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2426">#2426</a>] It was
+			impossible to switch between editor areas with a single click.</li>
+		<li>Language file updates for the following languages:
+			<ul>
+				<li>Canadian French</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2402">#2402</a>] Catalan
+				</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2400">#2400</a>] Chinese
+					(Simplified and Traditional)</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2401">#2401</a>] Croatian</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2422">#2422</a>] Czech</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2417">#2417</a>] Dutch</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2428">#2428</a>] French</li>
+				<li>German</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2427">#2427</a>] Hebrew</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2410">#2410</a>] Hindi</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2405">#2405</a>] Japanese</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2409">#2409</a>] Norwegian
+					and Norwegian Bokmål</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2429">#2429</a>] Spanish</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2406">#2406</a>] Vietnamese</li>
+			</ul>
+		</li>
+	</ul>
+	<p>
+		This version has been sponsored by <a href="http://www.dataillusion.com/fs/">Data Illusion
+			survey software solutions</a>.</p>
+	<h3>
+		Version 2.6.3 Beta</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/439">#439</a>] Added a
+			new <strong>context menu option for opening links</strong> in the editor.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2220">#2220</a>] <strong>
+			Email links</strong> from the Link dialog <strong>are now encoded</strong> by default
+			to prevent being harvested by spammers. (Kudos to asuter for proposing the patch)
+		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2234">#2234</a>] Added
+			the ability to create, modify and remove <strong>DIV containers</strong>. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2247">#2247</a>] The <strong>
+			SHIFT+SPACE</strong> keystroke will now <strong>produce a &amp;nbsp;</strong> character.
+		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2252">#2252</a>] It's
+			now possible to enable the browsers default menu using the configuration file (FCKConfig.BrowserContextMenu
+			option). </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2032">#2032</a>] Added
+			HTML samples for legacy HTML and Flash HTML. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/234">#234</a>] Introduced
+			the "PreventSubmitHandler" setting, which makes it possible to instruct the editor
+			to not handle the hidden field update on form submit events.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2319">#2319</a>] On Opera
+			and Firefox 3, the entire page was scrolling on SHIFT+ENTER, or when EnterMode='br'.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2321">#2321</a>] On Firefox
+			3, the entire page was scrolling when inserting block elements with the FCK.InsertElement
+			function, used by the Table and Horizontal Rule buttons.. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/692">#692</a>] Added some
+			hints in editor/css/fck_editorarea.css on how to handle style items that would break
+			the style combo. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2263">#2263</a>] Fixed
+			a JavaScript error in IE which occurs when there are placeholder elements in the
+			document and the user has pressed the Source button.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2314">#2314</a>] Corrected
+			mixed up Chinese translations for the blockquote command.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2323">#2323</a>] Fixed
+			the issue where the show blocks command loses the current selection from the view
+			area when editing a long document.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2322">#2322</a>] Fixed
+			the issue where the fit window command loses the current selection and scroll position
+			in the editing area.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1917">#1917</a>] Fixed
+			the issue where the merge down command for tables cells does not work in IE for
+			more than two cells.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2320">#2320</a>] Fixed
+			the issue where the Find/Replace dialog scrolls the entire page.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1645">#1645</a>] Added
+			warning message about Firefox 3's strict origin policy.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2272">#2272</a>] Improved
+			the garbage filter in Paste from Word dialog.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2327">#2327</a>] Fixed
+			invalid HTML in the Paste dialog.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1907">#1907</a>] Fixed
+			sporadic "FCKeditorAPI is not defined" errors in Firefox 3.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2356">#2356</a>] Fixed
+			access denied error in IE7 when FCKeditor is launched from local filesystem.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1150">#1150</a>] Fixed
+			the type="_moz" attribute that sometimes appear in &lt;br&gt; tags in non-IE browsers.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1229">#1229</a>] Converting
+			multiple contiguous paragraphs to Formatted will now be merged into a single &lt;PRE&gt;
+			block.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2363">#2363</a>] There
+			were some sporadic "Permission Denied" errors with IE on some situations.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2135">#2135</a>] Fixed
+			a data loss bug in IE when there are @import statements in the editor's CSS files,
+			and IE's cache is set to "Check for newer versions on every visit".</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2376">#2376</a>] FCK.InsertHtml()
+			will now insert to the last selected position after the user has selected things
+			outside of FCKeditor, in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2368">#2368</a>] Fixed
+			broken protect source logic for comments in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2387">#2387</a>] Fixed
+			JavaScript error with list commands when the editable document is selected with
+			Ctrl-A.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2390">#2390</a>] Fixed
+			the issue where indent styles in JavaScript-generated &lt;p&gt; blocks are erased
+			in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2394">#2394</a>] Fixed
+			JavaScript error with the "split vertically" command in IE when attempting to split
+			cells in the last row of a table.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2316">#2316</a>] The sample
+			posted data page has now the table fixed at 100% width. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2396">#2396</a>] SpellerPages
+			was causing a "Permission Denied" error in some situations. </li>
+	</ul>
+	<p>
+		<a href="_whatsnew_history.html">See previous versions history</a></p>
+</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/_source/internals/fckundo_gecko.js
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/_source/internals/fckundo_gecko.js	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/_source/internals/fckundo_gecko.js	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,23 +1,23 @@
-/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2006 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: fckundo_gecko.js
- * 	Fake implementation to ignore calls on Gecko.
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck at fckeditor.net)
- */
-
-var FCKUndo = new Object() ;
-
-FCKUndo.SaveUndoStep = function()
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckundo_gecko.js
+ * 	Fake implementation to ignore calls on Gecko.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck at fckeditor.net)
+ */
+
+var FCKUndo = new Object() ;
+
+FCKUndo.SaveUndoStep = function()
 {}
\ No newline at end of file

Modified: trunk/src/plugins/fckeditor/www/editor/css/behaviors/disablehandles.htc
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/css/behaviors/disablehandles.htc	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/css/behaviors/disablehandles.htc	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,15 +1,15 @@
-<public:component lightweight="true">
-
-<script language="javascript">
-
-function CancelEvent()
-{
-	return false ;
-}
-
-this.onresizestart = CancelEvent ;
-this.onbeforeeditfocus = CancelEvent ;
-
-</script>
-
-</public:component>
+<public:component lightweight="true">
+
+<script language="javascript">
+
+function CancelEvent()
+{
+	return false ;
+}
+
+this.onresizestart = CancelEvent ;
+this.onbeforeeditfocus = CancelEvent ;
+
+</script>
+
+</public:component>

Modified: trunk/src/plugins/fckeditor/www/editor/css/behaviors/hiddenfield.htc
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/css/behaviors/hiddenfield.htc	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/css/behaviors/hiddenfield.htc	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,30 +1,30 @@
-<public:component lightweight="true">
-
-<public:attach event="oncontentready" onevent="ShowField()" />
-<public:attach event="ondoubleclick" onevent="EditField()" />
-
-<script language="javascript">
-
-var bIsHiddenField = this.type == 'hidden' ;
-
-function ShowField()
-{
-	if ( bIsHiddenField ) 
-	{
-		this.runtimeStyle.width				= '20px' ;
-		this.runtimeStyle.height			= '20px' ;
-		this.runtimeStyle.border			= '1px dotted #FF0000' ;
-		this.runtimeStyle.backgroundImage	= 'url(css/behaviors/hiddenfield.gif)' ;
-		this.runtimeStyle.fontSize			= '99px' ;
-	}
-}
-
-function EditField()
-{
-	if ( bIsHiddenField ) 
-		alert( this.outerHTML ) ;
-}
-
-</script>
-
-</public:component>
+<public:component lightweight="true">
+
+<public:attach event="oncontentready" onevent="ShowField()" />
+<public:attach event="ondoubleclick" onevent="EditField()" />
+
+<script language="javascript">
+
+var bIsHiddenField = this.type == 'hidden' ;
+
+function ShowField()
+{
+	if ( bIsHiddenField ) 
+	{
+		this.runtimeStyle.width				= '20px' ;
+		this.runtimeStyle.height			= '20px' ;
+		this.runtimeStyle.border			= '1px dotted #FF0000' ;
+		this.runtimeStyle.backgroundImage	= 'url(css/behaviors/hiddenfield.gif)' ;
+		this.runtimeStyle.fontSize			= '99px' ;
+	}
+}
+
+function EditField()
+{
+	if ( bIsHiddenField ) 
+		alert( this.outerHTML ) ;
+}
+
+</script>
+
+</public:component>

Modified: trunk/src/plugins/fckeditor/www/editor/css/behaviors/showtableborders.htc
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/css/behaviors/showtableborders.htc	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/css/behaviors/showtableborders.htc	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,36 +1,36 @@
-<public:component lightweight="true">
-
-<public:attach event="oncontentready" onevent="ShowBorders()" />
-<public:attach event="onpropertychange" onevent="OnPropertyChange()" />
-
-<script language="javascript">
-
-var oClassRegex = /\s*FCK__ShowTableBorders/ ;
-
-function ShowBorders()
-{
-	if ( this.border == 0 )
-	{
-		if ( !oClassRegex.test( this.className ) )
-			this.className += ' FCK__ShowTableBorders' ;
-	}
-	else
-	{
-		if ( oClassRegex.test( this.className ) )
-		{
-			this.className = this.className.replace( oClassRegex, '' ) ;
-			if ( this.className.length == 0 )
-				this.removeAttribute( 'className', 0 ) ;
-		}
-	}
-}
-
-function OnPropertyChange()
-{
-	if ( event.propertyName == 'border' || event.propertyName == 'className' )
-		ShowBorders.call(this) ;
-}
-
-</script>
-
-</public:component>
+<public:component lightweight="true">
+
+<public:attach event="oncontentready" onevent="ShowBorders()" />
+<public:attach event="onpropertychange" onevent="OnPropertyChange()" />
+
+<script language="javascript">
+
+var oClassRegex = /\s*FCK__ShowTableBorders/ ;
+
+function ShowBorders()
+{
+	if ( this.border == 0 )
+	{
+		if ( !oClassRegex.test( this.className ) )
+			this.className += ' FCK__ShowTableBorders' ;
+	}
+	else
+	{
+		if ( oClassRegex.test( this.className ) )
+		{
+			this.className = this.className.replace( oClassRegex, '' ) ;
+			if ( this.className.length == 0 )
+				this.removeAttribute( 'className', 0 ) ;
+		}
+	}
+}
+
+function OnPropertyChange()
+{
+	if ( event.propertyName == 'border' || event.propertyName == 'className' )
+		ShowBorders.call(this) ;
+}
+
+</script>
+
+</public:component>

Modified: trunk/src/plugins/fckeditor/www/editor/css/fck_internal.css
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/css/fck_internal.css	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/css/fck_internal.css	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,199 +1,199 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 CSS Style Sheet defines rules used by the editor for its internal use.
- */
-
-/* #########
- *  WARNING
- * #########
- * When changing this file, the minified version of it must be updated in the
- * fckeditor.html file (see FCK_InternalCSS).
- */
-
-/* Fix to allow putting the caret at the end of the content in Firefox if
-   clicking below the content. */
-html
-{
-	min-height: 100%;
-}
-
-table.FCK__ShowTableBorders, table.FCK__ShowTableBorders td, table.FCK__ShowTableBorders th
-{
-	border: #d3d3d3 1px solid;
-}
-
-form
-{
-	border: 1px dotted #FF0000;
-	padding: 2px;
-}
-
-.FCK__Flash
-{
-	border: #a9a9a9 1px solid;
-	background-position: center center;
-	background-image: url(images/fck_flashlogo.gif);
-	background-repeat: no-repeat;
-	width: 80px;
-	height: 80px;
-}
-
-.FCK__UnknownObject
-{
-	border: #a9a9a9 1px solid;
-	background-position: center center;
-	background-image: url(images/fck_plugin.gif);
-	background-repeat: no-repeat;
-	width: 80px;
-	height: 80px;
-}
-
-/* Empty anchors images */
-.FCK__Anchor
-{
-	border: 1px dotted #00F;
-	background-position: center center;
-	background-image: url(images/fck_anchor.gif);
-	background-repeat: no-repeat;
-	width: 16px;
-	height: 15px;
-	vertical-align: middle;
-}
-
-/* Anchors with content */
-.FCK__AnchorC
-{
-	border: 1px dotted #00F;
-	background-position: 1px center;
-	background-image: url(images/fck_anchor.gif);
-	background-repeat: no-repeat;
-	padding-left: 18px;
-}
-
-/* Any anchor for non-IE, if we combine it with the previous rule IE ignores all. */
-a[name]
-{
-	border: 1px dotted #00F;
-	background-position: 0 center;
-	background-image: url(images/fck_anchor.gif);
-	background-repeat: no-repeat;
-	padding-left: 18px;
-}
-
-.FCK__PageBreak
-{
-	background-position: center center;
-	background-image: url(images/fck_pagebreak.gif);
-	background-repeat: no-repeat;
-	clear: both;
-	display: block;
-	float: none;
-	width: 100%;
-	border-top: #999999 1px dotted;
-	border-bottom: #999999 1px dotted;
-	border-right: 0px;
-	border-left: 0px;
-	height: 5px;
-}
-
-/* Hidden fields */
-.FCK__InputHidden
-{
-	width: 19px;
-	height: 18px;
-	background-image: url(images/fck_hiddenfield.gif);
-	background-repeat: no-repeat;
-	vertical-align: text-bottom;
-	background-position: center center;
-}
-
-.FCK__ShowBlocks p,
-.FCK__ShowBlocks div,
-.FCK__ShowBlocks pre,
-.FCK__ShowBlocks address,
-.FCK__ShowBlocks blockquote,
-.FCK__ShowBlocks h1,
-.FCK__ShowBlocks h2,
-.FCK__ShowBlocks h3,
-.FCK__ShowBlocks h4,
-.FCK__ShowBlocks h5,
-.FCK__ShowBlocks h6
-{
-	background-repeat: no-repeat;
-	border: 1px dotted gray;
-	padding-top: 8px;
-	padding-left: 8px;
-}
-
-.FCK__ShowBlocks p
-{
-	background-image: url(images/block_p.png);
-}
-
-.FCK__ShowBlocks div
-{
-	background-image: url(images/block_div.png);
-}
-
-.FCK__ShowBlocks pre
-{
-	background-image: url(images/block_pre.png);
-}
-
-.FCK__ShowBlocks address
-{
-	background-image: url(images/block_address.png);
-}
-
-.FCK__ShowBlocks blockquote
-{
-	background-image: url(images/block_blockquote.png);
-}
-
-.FCK__ShowBlocks h1
-{
-	background-image: url(images/block_h1.png);
-}
-
-.FCK__ShowBlocks h2
-{
-	background-image: url(images/block_h2.png);
-}
-
-.FCK__ShowBlocks h3
-{
-	background-image: url(images/block_h3.png);
-}
-
-.FCK__ShowBlocks h4
-{
-	background-image: url(images/block_h4.png);
-}
-
-.FCK__ShowBlocks h5
-{
-	background-image: url(images/block_h5.png);
-}
-
-.FCK__ShowBlocks h6
-{
-	background-image: url(images/block_h6.png);
-}
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 CSS Style Sheet defines rules used by the editor for its internal use.
+ */
+
+/* #########
+ *  WARNING
+ * #########
+ * When changing this file, the minified version of it must be updated in the
+ * fckeditor.html file (see FCK_InternalCSS).
+ */
+
+/* Fix to allow putting the caret at the end of the content in Firefox if
+   clicking below the content. */
+html
+{
+	min-height: 100%;
+}
+
+table.FCK__ShowTableBorders, table.FCK__ShowTableBorders td, table.FCK__ShowTableBorders th
+{
+	border: #d3d3d3 1px solid;
+}
+
+form
+{
+	border: 1px dotted #FF0000;
+	padding: 2px;
+}
+
+.FCK__Flash
+{
+	border: #a9a9a9 1px solid;
+	background-position: center center;
+	background-image: url(images/fck_flashlogo.gif);
+	background-repeat: no-repeat;
+	width: 80px;
+	height: 80px;
+}
+
+.FCK__UnknownObject
+{
+	border: #a9a9a9 1px solid;
+	background-position: center center;
+	background-image: url(images/fck_plugin.gif);
+	background-repeat: no-repeat;
+	width: 80px;
+	height: 80px;
+}
+
+/* Empty anchors images */
+.FCK__Anchor
+{
+	border: 1px dotted #00F;
+	background-position: center center;
+	background-image: url(images/fck_anchor.gif);
+	background-repeat: no-repeat;
+	width: 16px;
+	height: 15px;
+	vertical-align: middle;
+}
+
+/* Anchors with content */
+.FCK__AnchorC
+{
+	border: 1px dotted #00F;
+	background-position: 1px center;
+	background-image: url(images/fck_anchor.gif);
+	background-repeat: no-repeat;
+	padding-left: 18px;
+}
+
+/* Any anchor for non-IE, if we combine it with the previous rule IE ignores all. */
+a[name]
+{
+	border: 1px dotted #00F;
+	background-position: 0 center;
+	background-image: url(images/fck_anchor.gif);
+	background-repeat: no-repeat;
+	padding-left: 18px;
+}
+
+.FCK__PageBreak
+{
+	background-position: center center;
+	background-image: url(images/fck_pagebreak.gif);
+	background-repeat: no-repeat;
+	clear: both;
+	display: block;
+	float: none;
+	width: 100%;
+	border-top: #999999 1px dotted;
+	border-bottom: #999999 1px dotted;
+	border-right: 0px;
+	border-left: 0px;
+	height: 5px;
+}
+
+/* Hidden fields */
+.FCK__InputHidden
+{
+	width: 19px;
+	height: 18px;
+	background-image: url(images/fck_hiddenfield.gif);
+	background-repeat: no-repeat;
+	vertical-align: text-bottom;
+	background-position: center center;
+}
+
+.FCK__ShowBlocks p,
+.FCK__ShowBlocks div,
+.FCK__ShowBlocks pre,
+.FCK__ShowBlocks address,
+.FCK__ShowBlocks blockquote,
+.FCK__ShowBlocks h1,
+.FCK__ShowBlocks h2,
+.FCK__ShowBlocks h3,
+.FCK__ShowBlocks h4,
+.FCK__ShowBlocks h5,
+.FCK__ShowBlocks h6
+{
+	background-repeat: no-repeat;
+	border: 1px dotted gray;
+	padding-top: 8px;
+	padding-left: 8px;
+}
+
+.FCK__ShowBlocks p
+{
+	background-image: url(images/block_p.png);
+}
+
+.FCK__ShowBlocks div
+{
+	background-image: url(images/block_div.png);
+}
+
+.FCK__ShowBlocks pre
+{
+	background-image: url(images/block_pre.png);
+}
+
+.FCK__ShowBlocks address
+{
+	background-image: url(images/block_address.png);
+}
+
+.FCK__ShowBlocks blockquote
+{
+	background-image: url(images/block_blockquote.png);
+}
+
+.FCK__ShowBlocks h1
+{
+	background-image: url(images/block_h1.png);
+}
+
+.FCK__ShowBlocks h2
+{
+	background-image: url(images/block_h2.png);
+}
+
+.FCK__ShowBlocks h3
+{
+	background-image: url(images/block_h3.png);
+}
+
+.FCK__ShowBlocks h4
+{
+	background-image: url(images/block_h4.png);
+}
+
+.FCK__ShowBlocks h5
+{
+	background-image: url(images/block_h5.png);
+}
+
+.FCK__ShowBlocks h6
+{
+	background-image: url(images/block_h6.png);
+}

Modified: trunk/src/plugins/fckeditor/www/editor/css/fck_showtableborders_gecko.css
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/css/fck_showtableborders_gecko.css	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/css/fck_showtableborders_gecko.css	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,49 +1,49 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 CSS Style Sheet defines the rules to show table borders on Gecko.
- */
-
-/* #########
- *  WARNING
- * #########
- * When changing this file, the minified version of it must be updated in the
- * fckeditor.html file (see FCK_ShowTableBordersCSS).
- */
-
-/* For tables with the "border" attribute set to "0" */
-table[border="0"],
-table[border="0"] > tr > td, table[border="0"] > tr > th,
-table[border="0"] > tbody > tr > td, table[border="0"] > tbody > tr > th,
-table[border="0"] > thead > tr > td, table[border="0"] > thead > tr > th,
-table[border="0"] > tfoot > tr > td, table[border="0"] > tfoot > tr > th
-{
-	border: #d3d3d3 1px dotted ;
-}
-
-/* For tables with no "border" attribute set */
-table:not([border]),
-table:not([border]) > tr > td, table:not([border]) > tr > th,
-table:not([border]) > tbody > tr > td, table:not([border]) > tbody > tr > th,
-table:not([border]) > thead > tr > td, table:not([border]) > thead > tr > th,
-table:not([border]) > tfoot > tr > td, table:not([border]) > tfoot > tr > th
-{
-	border: #d3d3d3 1px dotted ;
-}
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 CSS Style Sheet defines the rules to show table borders on Gecko.
+ */
+
+/* #########
+ *  WARNING
+ * #########
+ * When changing this file, the minified version of it must be updated in the
+ * fckeditor.html file (see FCK_ShowTableBordersCSS).
+ */
+
+/* For tables with the "border" attribute set to "0" */
+table[border="0"],
+table[border="0"] > tr > td, table[border="0"] > tr > th,
+table[border="0"] > tbody > tr > td, table[border="0"] > tbody > tr > th,
+table[border="0"] > thead > tr > td, table[border="0"] > thead > tr > th,
+table[border="0"] > tfoot > tr > td, table[border="0"] > tfoot > tr > th
+{
+	border: #d3d3d3 1px dotted ;
+}
+
+/* For tables with no "border" attribute set */
+table:not([border]),
+table:not([border]) > tr > td, table:not([border]) > tr > th,
+table:not([border]) > tbody > tr > td, table:not([border]) > tbody > tr > th,
+table:not([border]) > thead > tr > td, table:not([border]) > thead > tr > th,
+table:not([border]) > tfoot > tr > td, table:not([border]) > tfoot > tr > th
+{
+	border: #d3d3d3 1px dotted ;
+}

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/common/fck_dialog_common.css
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/common/fck_dialog_common.css	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/common/fck_dialog_common.css	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,85 +1,85 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 CSS file used for interface details in some dialog
- * windows.
- */
-
-/* #########
- *  WARNING
- * #########
- * When changing this file, the minified version of it must be updated in the
- * fck_dialog_common.js file (see GetCommonDialogCss).
- */
-
-.ImagePreviewArea
-{
-	border: #000000 1px solid;
-	overflow: auto;
-	width: 100%;
-	height: 170px;
-	background-color: #ffffff;
-}
-
-.FlashPreviewArea
-{
-	border: #000000 1px solid;
-	padding: 5px;
-	overflow: auto;
-	width: 100%;
-	height: 170px;
-	background-color: #ffffff;
-}
-
-.BtnReset
-{
-	float: left;
-	background-position: center center;
-	background-image: url(images/reset.gif);
-	width: 16px;
-	height: 16px;
-	background-repeat: no-repeat;
-	border: 1px none;
-	font-size: 1px ;
-}
-
-.BtnLocked, .BtnUnlocked
-{
-	float: left;
-	background-position: center center;
-	background-image: url(images/locked.gif);
-	width: 16px;
-	height: 16px;
-	background-repeat: no-repeat;
-	border: none 1px;
-	font-size: 1px ;
-}
-
-.BtnUnlocked
-{
-	background-image: url(images/unlocked.gif);
-}
-
-.BtnOver
-{
-	border: outset 1px;
-	cursor: pointer;
-	cursor: hand;
-}
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 CSS file used for interface details in some dialog
+ * windows.
+ */
+
+/* #########
+ *  WARNING
+ * #########
+ * When changing this file, the minified version of it must be updated in the
+ * fck_dialog_common.js file (see GetCommonDialogCss).
+ */
+
+.ImagePreviewArea
+{
+	border: #000000 1px solid;
+	overflow: auto;
+	width: 100%;
+	height: 170px;
+	background-color: #ffffff;
+}
+
+.FlashPreviewArea
+{
+	border: #000000 1px solid;
+	padding: 5px;
+	overflow: auto;
+	width: 100%;
+	height: 170px;
+	background-color: #ffffff;
+}
+
+.BtnReset
+{
+	float: left;
+	background-position: center center;
+	background-image: url(images/reset.gif);
+	width: 16px;
+	height: 16px;
+	background-repeat: no-repeat;
+	border: 1px none;
+	font-size: 1px ;
+}
+
+.BtnLocked, .BtnUnlocked
+{
+	float: left;
+	background-position: center center;
+	background-image: url(images/locked.gif);
+	width: 16px;
+	height: 16px;
+	background-repeat: no-repeat;
+	border: none 1px;
+	font-size: 1px ;
+}
+
+.BtnUnlocked
+{
+	background-image: url(images/unlocked.gif);
+}
+
+.BtnOver
+{
+	border: outset 1px;
+	cursor: pointer;
+	cursor: hand;
+}

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/common/fck_dialog_common.js
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/common/fck_dialog_common.js	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/common/fck_dialog_common.js	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,311 +1,311 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Useful functions used by almost all dialog window pages.
- * Dialogs should link to this file as the very first script on the page.
- */
-
-// Automatically detect the correct document.domain (#123).
-(function()
-{
-	var d = document.domain ;
-
-	while ( true )
-	{
-		// Test if we can access a parent property.
-		try
-		{
-			var test = window.parent.document.domain ;
-			break ;
-		}
-		catch( e ) {}
-
-		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
-		d = d.replace( /.*?(?:\.|$)/, '' ) ;
-
-		if ( d.length == 0 )
-			break ;		// It was not able to detect the domain.
-
-		try
-		{
-			document.domain = d ;
-		}
-		catch (e)
-		{
-			break ;
-		}
-	}
-})() ;
-
-// Attention: FCKConfig must be available in the page.
-function GetCommonDialogCss( prefix )
-{
-	// CSS minified by http://iceyboard.no-ip.org/projects/css_compressor (see _dev/css_compression.txt).
-	return FCKConfig.BasePath + 'dialog/common/' + '|.ImagePreviewArea{border:#000 1px solid;overflow:auto;width:100%;height:170px;background-color:#fff}.FlashPreviewArea{border:#000 1px solid;padding:5px;overflow:auto;width:100%;height:170px;background-color:#fff}.BtnReset{float:left;background-position:center center;background-image:url(images/reset.gif);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.BtnLocked,.BtnUnlocked{float:left;background-position:center center;background-image:url(images/locked.gif);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.BtnUnlocked{background-image:url(images/unlocked.gif)}.BtnOver{border:outset 1px;cursor:pointer;cursor:hand}' ;
-}
-
-// Gets a element by its Id. Used for shorter coding.
-function GetE( elementId )
-{
-	return document.getElementById( elementId )  ;
-}
-
-function ShowE( element, isVisible )
-{
-	if ( typeof( element ) == 'string' )
-		element = GetE( element ) ;
-	element.style.display = isVisible ? '' : 'none' ;
-}
-
-function SetAttribute( element, attName, attValue )
-{
-	if ( attValue == null || attValue.length == 0 )
-		element.removeAttribute( attName, 0 ) ;			// 0 : Case Insensitive
-	else
-		element.setAttribute( attName, attValue, 0 ) ;	// 0 : Case Insensitive
-}
-
-function GetAttribute( element, attName, valueIfNull )
-{
-	var oAtt = element.attributes[attName] ;
-
-	if ( oAtt == null || !oAtt.specified )
-		return valueIfNull ? valueIfNull : '' ;
-
-	var oValue = element.getAttribute( attName, 2 ) ;
-
-	if ( oValue == null )
-		oValue = oAtt.nodeValue ;
-
-	return ( oValue == null ? valueIfNull : oValue ) ;
-}
-
-function SelectField( elementId )
-{
-	var element = GetE( elementId ) ;
-	element.focus() ;
-
-	// element.select may not be available for some fields (like <select>).
-	if ( element.select )
-		element.select() ;
-}
-
-// Functions used by text fields to accept numbers only.
-var IsDigit = ( function()
-	{
-		var KeyIdentifierMap =
-		{
-			End			: 35,
-			Home		: 36,
-			Left		: 37,
-			Right		: 39,
-			'U+00007F'	: 46		// Delete
-		} ;
-
-		return function ( e )
-			{
-				if ( !e )
-					e = event ;
-
-				var iCode = ( e.keyCode || e.charCode ) ;
-
-				if ( !iCode && e.keyIdentifier && ( e.keyIdentifier in KeyIdentifierMap ) )
-						iCode = KeyIdentifierMap[ e.keyIdentifier ] ;
-
-				return (
-						( iCode >= 48 && iCode <= 57 )		// Numbers
-						|| (iCode >= 35 && iCode <= 40)		// Arrows, Home, End
-						|| iCode == 8						// Backspace
-						|| iCode == 46						// Delete
-						|| iCode == 9						// Tab
-				) ;
-			}
-	} )() ;
-
-String.prototype.Trim = function()
-{
-	return this.replace( /(^\s*)|(\s*$)/g, '' ) ;
-}
-
-String.prototype.StartsWith = function( value )
-{
-	return ( this.substr( 0, value.length ) == value ) ;
-}
-
-String.prototype.Remove = function( start, length )
-{
-	var s = '' ;
-
-	if ( start > 0 )
-		s = this.substring( 0, start ) ;
-
-	if ( start + length < this.length )
-		s += this.substring( start + length , this.length ) ;
-
-	return s ;
-}
-
-String.prototype.ReplaceAll = function( searchArray, replaceArray )
-{
-	var replaced = this ;
-
-	for ( var i = 0 ; i < searchArray.length ; i++ )
-	{
-		replaced = replaced.replace( searchArray[i], replaceArray[i] ) ;
-	}
-
-	return replaced ;
-}
-
-function OpenFileBrowser( url, width, height )
-{
-	// oEditor must be defined.
-
-	var iLeft = ( oEditor.FCKConfig.ScreenWidth  - width ) / 2 ;
-	var iTop  = ( oEditor.FCKConfig.ScreenHeight - height ) / 2 ;
-
-	var sOptions = "toolbar=no,status=no,resizable=yes,dependent=yes,scrollbars=yes" ;
-	sOptions += ",width=" + width ;
-	sOptions += ",height=" + height ;
-	sOptions += ",left=" + iLeft ;
-	sOptions += ",top=" + iTop ;
-
-	window.open( url, 'FCKBrowseWindow', sOptions ) ;
-}
-
-/**
- Utility function to create/update an element with a name attribute in IE, so it behaves properly when moved around
- It also allows to change the name or other special attributes in an existing node
-	oEditor : instance of FCKeditor where the element will be created
-	oOriginal : current element being edited or null if it has to be created
-	nodeName : string with the name of the element to create
-	oAttributes : Hash object with the attributes that must be set at creation time in IE
-								Those attributes will be set also after the element has been
-								created for any other browser to avoid redudant code
-*/
-function CreateNamedElement( oEditor, oOriginal, nodeName, oAttributes )
-{
-	var oNewNode ;
-
-	// IE doesn't allow easily to change properties of an existing object,
-	// so remove the old and force the creation of a new one.
-	var oldNode = null ;
-	if ( oOriginal && oEditor.FCKBrowserInfo.IsIE )
-	{
-		// Force the creation only if some of the special attributes have changed:
-		var bChanged = false;
-		for( var attName in oAttributes )
-			bChanged |= ( oOriginal.getAttribute( attName, 2) != oAttributes[attName] ) ;
-
-		if ( bChanged )
-		{
-			oldNode = oOriginal ;
-			oOriginal = null ;
-		}
-	}
-
-	// If the node existed (and it's not IE), then we just have to update its attributes
-	if ( oOriginal )
-	{
-		oNewNode = oOriginal ;
-	}
-	else
-	{
-		// #676, IE doesn't play nice with the name or type attribute
-		if ( oEditor.FCKBrowserInfo.IsIE )
-		{
-			var sbHTML = [] ;
-			sbHTML.push( '<' + nodeName ) ;
-			for( var prop in oAttributes )
-			{
-				sbHTML.push( ' ' + prop + '="' + oAttributes[prop] + '"' ) ;
-			}
-			sbHTML.push( '>' ) ;
-			if ( !oEditor.FCKListsLib.EmptyElements[nodeName.toLowerCase()] )
-				sbHTML.push( '</' + nodeName + '>' ) ;
-
-			oNewNode = oEditor.FCK.EditorDocument.createElement( sbHTML.join('') ) ;
-			// Check if we are just changing the properties of an existing node: copy its properties
-			if ( oldNode )
-			{
-				CopyAttributes( oldNode, oNewNode, oAttributes ) ;
-				oEditor.FCKDomTools.MoveChildren( oldNode, oNewNode ) ;
-				oldNode.parentNode.removeChild( oldNode ) ;
-				oldNode = null ;
-
-				if ( oEditor.FCK.Selection.SelectionData )
-				{
-					// Trick to refresh the selection object and avoid error in
-					// fckdialog.html Selection.EnsureSelection
-					var oSel = oEditor.FCK.EditorDocument.selection ;
-					oEditor.FCK.Selection.SelectionData = oSel.createRange() ; // Now oSel.type will be 'None' reflecting the real situation
-				}
-			}
-			oNewNode = oEditor.FCK.InsertElement( oNewNode ) ;
-
-			// FCK.Selection.SelectionData is broken by now since we've
-			// deleted the previously selected element. So we need to reassign it.
-			if ( oEditor.FCK.Selection.SelectionData )
-			{
-				var range = oEditor.FCK.EditorDocument.body.createControlRange() ;
-				range.add( oNewNode ) ;
-				oEditor.FCK.Selection.SelectionData = range ;
-			}
-		}
-		else
-		{
-			oNewNode = oEditor.FCK.InsertElement( nodeName ) ;
-		}
-	}
-
-	// Set the basic attributes
-	for( var attName in oAttributes )
-		oNewNode.setAttribute( attName, oAttributes[attName], 0 ) ;	// 0 : Case Insensitive
-
-	return oNewNode ;
-}
-
-// Copy all the attributes from one node to the other, kinda like a clone
-// But oSkipAttributes is an object with the attributes that must NOT be copied
-function CopyAttributes( oSource, oDest, oSkipAttributes )
-{
-	var aAttributes = oSource.attributes ;
-
-	for ( var n = 0 ; n < aAttributes.length ; n++ )
-	{
-		var oAttribute = aAttributes[n] ;
-
-		if ( oAttribute.specified )
-		{
-			var sAttName = oAttribute.nodeName ;
-			// We can set the type only once, so do it with the proper value, not copying it.
-			if ( sAttName in oSkipAttributes )
-				continue ;
-
-			var sAttValue = oSource.getAttribute( sAttName, 2 ) ;
-			if ( sAttValue == null )
-				sAttValue = oAttribute.nodeValue ;
-
-			oDest.setAttribute( sAttName, sAttValue, 0 ) ;	// 0 : Case Insensitive
-		}
-	}
-	// The style:
-	oDest.style.cssText = oSource.style.cssText ;
-}
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Useful functions used by almost all dialog window pages.
+ * Dialogs should link to this file as the very first script on the page.
+ */
+
+// Automatically detect the correct document.domain (#123).
+(function()
+{
+	var d = document.domain ;
+
+	while ( true )
+	{
+		// Test if we can access a parent property.
+		try
+		{
+			var test = window.parent.document.domain ;
+			break ;
+		}
+		catch( e ) {}
+
+		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
+		d = d.replace( /.*?(?:\.|$)/, '' ) ;
+
+		if ( d.length == 0 )
+			break ;		// It was not able to detect the domain.
+
+		try
+		{
+			document.domain = d ;
+		}
+		catch (e)
+		{
+			break ;
+		}
+	}
+})() ;
+
+// Attention: FCKConfig must be available in the page.
+function GetCommonDialogCss( prefix )
+{
+	// CSS minified by http://iceyboard.no-ip.org/projects/css_compressor (see _dev/css_compression.txt).
+	return FCKConfig.BasePath + 'dialog/common/' + '|.ImagePreviewArea{border:#000 1px solid;overflow:auto;width:100%;height:170px;background-color:#fff}.FlashPreviewArea{border:#000 1px solid;padding:5px;overflow:auto;width:100%;height:170px;background-color:#fff}.BtnReset{float:left;background-position:center center;background-image:url(images/reset.gif);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.BtnLocked,.BtnUnlocked{float:left;background-position:center center;background-image:url(images/locked.gif);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.BtnUnlocked{background-image:url(images/unlocked.gif)}.BtnOver{border:outset 1px;cursor:pointer;cursor:hand}' ;
+}
+
+// Gets a element by its Id. Used for shorter coding.
+function GetE( elementId )
+{
+	return document.getElementById( elementId )  ;
+}
+
+function ShowE( element, isVisible )
+{
+	if ( typeof( element ) == 'string' )
+		element = GetE( element ) ;
+	element.style.display = isVisible ? '' : 'none' ;
+}
+
+function SetAttribute( element, attName, attValue )
+{
+	if ( attValue == null || attValue.length == 0 )
+		element.removeAttribute( attName, 0 ) ;			// 0 : Case Insensitive
+	else
+		element.setAttribute( attName, attValue, 0 ) ;	// 0 : Case Insensitive
+}
+
+function GetAttribute( element, attName, valueIfNull )
+{
+	var oAtt = element.attributes[attName] ;
+
+	if ( oAtt == null || !oAtt.specified )
+		return valueIfNull ? valueIfNull : '' ;
+
+	var oValue = element.getAttribute( attName, 2 ) ;
+
+	if ( oValue == null )
+		oValue = oAtt.nodeValue ;
+
+	return ( oValue == null ? valueIfNull : oValue ) ;
+}
+
+function SelectField( elementId )
+{
+	var element = GetE( elementId ) ;
+	element.focus() ;
+
+	// element.select may not be available for some fields (like <select>).
+	if ( element.select )
+		element.select() ;
+}
+
+// Functions used by text fields to accept numbers only.
+var IsDigit = ( function()
+	{
+		var KeyIdentifierMap =
+		{
+			End			: 35,
+			Home		: 36,
+			Left		: 37,
+			Right		: 39,
+			'U+00007F'	: 46		// Delete
+		} ;
+
+		return function ( e )
+			{
+				if ( !e )
+					e = event ;
+
+				var iCode = ( e.keyCode || e.charCode ) ;
+
+				if ( !iCode && e.keyIdentifier && ( e.keyIdentifier in KeyIdentifierMap ) )
+						iCode = KeyIdentifierMap[ e.keyIdentifier ] ;
+
+				return (
+						( iCode >= 48 && iCode <= 57 )		// Numbers
+						|| (iCode >= 35 && iCode <= 40)		// Arrows, Home, End
+						|| iCode == 8						// Backspace
+						|| iCode == 46						// Delete
+						|| iCode == 9						// Tab
+				) ;
+			}
+	} )() ;
+
+String.prototype.Trim = function()
+{
+	return this.replace( /(^\s*)|(\s*$)/g, '' ) ;
+}
+
+String.prototype.StartsWith = function( value )
+{
+	return ( this.substr( 0, value.length ) == value ) ;
+}
+
+String.prototype.Remove = function( start, length )
+{
+	var s = '' ;
+
+	if ( start > 0 )
+		s = this.substring( 0, start ) ;
+
+	if ( start + length < this.length )
+		s += this.substring( start + length , this.length ) ;
+
+	return s ;
+}
+
+String.prototype.ReplaceAll = function( searchArray, replaceArray )
+{
+	var replaced = this ;
+
+	for ( var i = 0 ; i < searchArray.length ; i++ )
+	{
+		replaced = replaced.replace( searchArray[i], replaceArray[i] ) ;
+	}
+
+	return replaced ;
+}
+
+function OpenFileBrowser( url, width, height )
+{
+	// oEditor must be defined.
+
+	var iLeft = ( oEditor.FCKConfig.ScreenWidth  - width ) / 2 ;
+	var iTop  = ( oEditor.FCKConfig.ScreenHeight - height ) / 2 ;
+
+	var sOptions = "toolbar=no,status=no,resizable=yes,dependent=yes,scrollbars=yes" ;
+	sOptions += ",width=" + width ;
+	sOptions += ",height=" + height ;
+	sOptions += ",left=" + iLeft ;
+	sOptions += ",top=" + iTop ;
+
+	window.open( url, 'FCKBrowseWindow', sOptions ) ;
+}
+
+/**
+ Utility function to create/update an element with a name attribute in IE, so it behaves properly when moved around
+ It also allows to change the name or other special attributes in an existing node
+	oEditor : instance of FCKeditor where the element will be created
+	oOriginal : current element being edited or null if it has to be created
+	nodeName : string with the name of the element to create
+	oAttributes : Hash object with the attributes that must be set at creation time in IE
+								Those attributes will be set also after the element has been
+								created for any other browser to avoid redudant code
+*/
+function CreateNamedElement( oEditor, oOriginal, nodeName, oAttributes )
+{
+	var oNewNode ;
+
+	// IE doesn't allow easily to change properties of an existing object,
+	// so remove the old and force the creation of a new one.
+	var oldNode = null ;
+	if ( oOriginal && oEditor.FCKBrowserInfo.IsIE )
+	{
+		// Force the creation only if some of the special attributes have changed:
+		var bChanged = false;
+		for( var attName in oAttributes )
+			bChanged |= ( oOriginal.getAttribute( attName, 2) != oAttributes[attName] ) ;
+
+		if ( bChanged )
+		{
+			oldNode = oOriginal ;
+			oOriginal = null ;
+		}
+	}
+
+	// If the node existed (and it's not IE), then we just have to update its attributes
+	if ( oOriginal )
+	{
+		oNewNode = oOriginal ;
+	}
+	else
+	{
+		// #676, IE doesn't play nice with the name or type attribute
+		if ( oEditor.FCKBrowserInfo.IsIE )
+		{
+			var sbHTML = [] ;
+			sbHTML.push( '<' + nodeName ) ;
+			for( var prop in oAttributes )
+			{
+				sbHTML.push( ' ' + prop + '="' + oAttributes[prop] + '"' ) ;
+			}
+			sbHTML.push( '>' ) ;
+			if ( !oEditor.FCKListsLib.EmptyElements[nodeName.toLowerCase()] )
+				sbHTML.push( '</' + nodeName + '>' ) ;
+
+			oNewNode = oEditor.FCK.EditorDocument.createElement( sbHTML.join('') ) ;
+			// Check if we are just changing the properties of an existing node: copy its properties
+			if ( oldNode )
+			{
+				CopyAttributes( oldNode, oNewNode, oAttributes ) ;
+				oEditor.FCKDomTools.MoveChildren( oldNode, oNewNode ) ;
+				oldNode.parentNode.removeChild( oldNode ) ;
+				oldNode = null ;
+
+				if ( oEditor.FCK.Selection.SelectionData )
+				{
+					// Trick to refresh the selection object and avoid error in
+					// fckdialog.html Selection.EnsureSelection
+					var oSel = oEditor.FCK.EditorDocument.selection ;
+					oEditor.FCK.Selection.SelectionData = oSel.createRange() ; // Now oSel.type will be 'None' reflecting the real situation
+				}
+			}
+			oNewNode = oEditor.FCK.InsertElement( oNewNode ) ;
+
+			// FCK.Selection.SelectionData is broken by now since we've
+			// deleted the previously selected element. So we need to reassign it.
+			if ( oEditor.FCK.Selection.SelectionData )
+			{
+				var range = oEditor.FCK.EditorDocument.body.createControlRange() ;
+				range.add( oNewNode ) ;
+				oEditor.FCK.Selection.SelectionData = range ;
+			}
+		}
+		else
+		{
+			oNewNode = oEditor.FCK.InsertElement( nodeName ) ;
+		}
+	}
+
+	// Set the basic attributes
+	for( var attName in oAttributes )
+		oNewNode.setAttribute( attName, oAttributes[attName], 0 ) ;	// 0 : Case Insensitive
+
+	return oNewNode ;
+}
+
+// Copy all the attributes from one node to the other, kinda like a clone
+// But oSkipAttributes is an object with the attributes that must NOT be copied
+function CopyAttributes( oSource, oDest, oSkipAttributes )
+{
+	var aAttributes = oSource.attributes ;
+
+	for ( var n = 0 ; n < aAttributes.length ; n++ )
+	{
+		var oAttribute = aAttributes[n] ;
+
+		if ( oAttribute.specified )
+		{
+			var sAttName = oAttribute.nodeName ;
+			// We can set the type only once, so do it with the proper value, not copying it.
+			if ( sAttName in oSkipAttributes )
+				continue ;
+
+			var sAttValue = oSource.getAttribute( sAttName, 2 ) ;
+			if ( sAttValue == null )
+				sAttValue = oAttribute.nodeValue ;
+
+			oDest.setAttribute( sAttName, sAttValue, 0 ) ;	// 0 : Case Insensitive
+		}
+	}
+	// The style:
+	oDest.style.cssText = oSource.style.cssText ;
+}

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/common/fcknumericfield.htc
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/common/fcknumericfield.htc	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/common/fcknumericfield.htc	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,24 +1,24 @@
-<public:component lightweight="true">
-
-<script language="javascript">
-
-function CheckIsDigit()
-{
-	var iCode = event.keyCode ;
-
-	event.returnValue =
-		(
-			( iCode >= 48 && iCode <= 57 )		// Numbers
-			|| (iCode >= 37 && iCode <= 40)		// Arrows
-			|| iCode == 8						// Backspace
-			|| iCode == 46						// Delete
-		) ;
-
-	return event.returnValue ;
-}
-
-this.onkeypress = CheckIsDigit ;
-
-</script>
-
-</public:component>
+<public:component lightweight="true">
+
+<script language="javascript">
+
+function CheckIsDigit()
+{
+	var iCode = event.keyCode ;
+
+	event.returnValue =
+		(
+			( iCode >= 48 && iCode <= 57 )		// Numbers
+			|| (iCode >= 37 && iCode <= 40)		// Arrows
+			|| iCode == 8						// Backspace
+			|| iCode == 46						// Delete
+		) ;
+
+	return event.returnValue ;
+}
+
+this.onkeypress = CheckIsDigit ;
+
+</script>
+
+</public:component>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/common/moz-bindings.xml
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/common/moz-bindings.xml	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/common/moz-bindings.xml	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,30 +1,30 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<bindings xmlns="http://www.mozilla.org/xbl">
-	<binding id="numericfield">
-		<implementation>
-			<constructor>
-				this.keypress = CheckIsDigit ;
-			</constructor>
-			<method name="CheckIsDigit">
-				<body>
-					<![CDATA[
-					var iCode = keyCode ;
-
-					var bAccepted =
-						(
-							( iCode >= 48 && iCode <= 57 )		// Numbers
-							|| (iCode >= 37 && iCode <= 40)		// Arrows
-							|| iCode == 8											// Backspace
-							|| iCode == 46										// Delete
-						) ;
-
-					return bAccepted ;
-					]]>
-				</body>
-			</method>
-		</implementation>
-		<events>
-			<event type="keypress" value="CheckIsDigit()" />
-		</events>
-	</binding>
+<?xml version="1.0" encoding="utf-8" ?>
+<bindings xmlns="http://www.mozilla.org/xbl">
+	<binding id="numericfield">
+		<implementation>
+			<constructor>
+				this.keypress = CheckIsDigit ;
+			</constructor>
+			<method name="CheckIsDigit">
+				<body>
+					<![CDATA[
+					var iCode = keyCode ;
+
+					var bAccepted =
+						(
+							( iCode >= 48 && iCode <= 57 )		// Numbers
+							|| (iCode >= 37 && iCode <= 40)		// Arrows
+							|| iCode == 8											// Backspace
+							|| iCode == 46										// Delete
+						) ;
+
+					return bAccepted ;
+					]]>
+				</body>
+			</method>
+		</implementation>
+		<events>
+			<event type="keypress" value="CheckIsDigit()" />
+		</events>
+	</binding>
 </bindings>
\ No newline at end of file

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_about/lgpl.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_about/lgpl.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_about/lgpl.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,434 +1,434 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-	<head>
-		<title>GNU Lesser General Public License</title>
-		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
-		<STYLE>
-			BODY { FONT-SIZE: 12px }
-		</STYLE>
-	</head>
-	<body>
-		<H3>GNU Lesser General Public License</H3>
-		<TT>
-			<P>Version 2.1, February 1999</P>
-			<BLOCKQUOTE>
-				<P>Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 
-					330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute 
-					verbatim copies of this license document, but changing it is not allowed.</P>
-				<P>[This is the first released version of the Lesser GPL. It also counts as the 
-					successor of the GNU Library Public License, version 2, hence the version 
-					number 2.1.]</P>
-			</BLOCKQUOTE>
-			<H4>Preamble</H4>
-			<P>The licenses for most software are designed to take away your freedom to share 
-				and change it. By contrast, the GNU General Public Licenses are intended to 
-				guarantee your freedom to share and change free software--to make sure the 
-				software is free for all its users.
-			</P>
-			<P>This license, the Lesser General Public License, applies to some specially 
-				designated software packages--typically libraries--of the Free Software 
-				Foundation and other authors who decide to use it. You can use it too, but we 
-				suggest you first think carefully about whether this license or the ordinary 
-				General Public License is the better strategy to use in any particular case, 
-				based on the explanations below.
-			</P>
-			<P>When we speak of free software, we are referring to freedom of use, not price. 
-				Our General Public Licenses are designed to make sure that you have the freedom 
-				to distribute copies of free software (and charge for this service if you 
-				wish); that you receive source code or can get it if you want it; that you can 
-				change the software and use pieces of it in new free programs; and that you are 
-				informed that you can do these things.</P>
-			<P>To protect your rights, we need to make restrictions that forbid distributors to 
-				deny you these rights or to ask you to surrender these rights. These 
-				restrictions translate to certain responsibilities for you if you distribute 
-				copies of the library or if you modify it.
-			</P>
-			<P>For example, if you distribute copies of the library, whether gratis or for a 
-				fee, you must give the recipients all the rights that we gave you. You must 
-				make sure that they, too, receive or can get the source code. If you link other 
-				code with the library, you must provide complete object files to the 
-				recipients, so that they can relink them with the library after making changes 
-				to the library and recompiling it. And you must show them these terms so they 
-				know their rights.
-			</P>
-			<P>We protect your rights with a two-step method: (1) we copyright the library, and 
-				(2) we offer you this license, which gives you legal permission to copy, 
-				distribute and/or modify the library.
-			</P>
-			<P>To protect each distributor, we want to make it very clear that there is no 
-				warranty for the free library. Also, if the library is modified by someone else 
-				and passed on, the recipients should know that what they have is not the 
-				original version, so that the original author's reputation will not be affected 
-				by problems that might be introduced by others.
-			</P>
-			<P>Finally, software patents pose a constant threat to the existence of any free 
-				program. We wish to make sure that a company cannot effectively restrict the 
-				users of a free program by obtaining a restrictive license from a patent 
-				holder. Therefore, we insist that any patent license obtained for a version of 
-				the library must be consistent with the full freedom of use specified in this 
-				license.
-			</P>
-			<P>Most GNU software, including some libraries, is covered by the ordinary GNU 
-				General Public License. This license, the GNU Lesser General Public License, 
-				applies to certain designated libraries, and is quite different from the 
-				ordinary General Public License. We use this license for certain libraries in 
-				order to permit linking those libraries into non-free programs.
-			</P>
-			<P>When a program is linked with a library, whether statically or using a shared 
-				library, the combination of the two is legally speaking a combined work, a 
-				derivative of the original library. The ordinary General Public License 
-				therefore permits such linking only if the entire combination fits its criteria 
-				of freedom. The Lesser General Public License permits more lax criteria for 
-				linking other code with the library.
-			</P>
-			<P>We call this license the "Lesser" General Public License because it does Less to 
-				protect the user's freedom than the ordinary General Public License. It also 
-				provides other free software developers Less of an advantage over competing 
-				non-free programs. These disadvantages are the reason we use the ordinary 
-				General Public License for many libraries. However, the Lesser license provides 
-				advantages in certain special circumstances.
-			</P>
-			<P>For example, on rare occasions, there may be a special need to encourage the 
-				widest possible use of a certain library, so that it becomes a de-facto 
-				standard. To achieve this, non-free programs must be allowed to use the 
-				library. A more frequent case is that a free library does the same job as 
-				widely used non-free libraries. In this case, there is little to gain by 
-				limiting the free library to free software only, so we use the Lesser General 
-				Public License.
-			</P>
-			<P>In other cases, permission to use a particular library in non-free programs 
-				enables a greater number of people to use a large body of free software. For 
-				example, permission to use the GNU C Library in non-free programs enables many 
-				more people to use the whole GNU operating system, as well as its variant, the 
-				GNU/Linux operating system.
-			</P>
-			<P>Although the Lesser General Public License is Less protective of the users' 
-				freedom, it does ensure that the user of a program that is linked with the 
-				Library has the freedom and the wherewithal to run that program using a 
-				modified version of the Library.
-			</P>
-			<P>The precise terms and conditions for copying, distribution and modification 
-				follow. Pay close attention to the difference between a "work based on the 
-				library" and a "work that uses the library". The former contains code derived 
-				from the library, whereas the latter must be combined with the library in order 
-				to run.
-			</P>
-			<H4>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</H4>
-			<P><STRONG>0.</STRONG> This License Agreement applies to any software library or 
-				other program which contains a notice placed by the copyright holder or other 
-				authorized party saying it may be distributed under the terms of this Lesser 
-				General Public License (also called "this License"). Each licensee is addressed 
-				as "you".</P>
-			<P>A "library" means a collection of software functions and/or data prepared so as 
-				to be conveniently linked with application programs (which use some of those 
-				functions and data) to form executables.
-			</P>
-			<P>The "Library", below, refers to any such software library or work which has been 
-				distributed under these terms. A "work based on the Library" means either the 
-				Library or any derivative work under copyright law: that is to say, a work 
-				containing the Library or a portion of it, either verbatim or with 
-				modifications and/or translated straightforwardly into another language. 
-				(Hereinafter, translation is included without limitation in the term 
-				"modification".)
-			</P>
-			<P>"Source code" for a work means the preferred form of the work for making 
-				modifications to it. For a library, complete source code means all the source 
-				code for all modules it contains, plus any associated interface definition 
-				files, plus the scripts used to control compilation and installation of the 
-				library.</P>
-			<P>Activities other than copying, distribution and modification are not covered by 
-				this License; they are outside its scope. The act of running a program using 
-				the Library is not restricted, and output from such a program is covered only 
-				if its contents constitute a work based on the Library (independent of the use 
-				of the Library in a tool for writing it). Whether that is true depends on what 
-				the Library does and what the program that uses the Library does.
-			</P>
-			<P><STRONG>1.</STRONG> You may copy and distribute verbatim copies of the Library's 
-				complete source code as you receive it, in any medium, provided that you 
-				conspicuously and appropriately publish on each copy an appropriate copyright 
-				notice and disclaimer of warranty; keep intact all the notices that refer to 
-				this License and to the absence of any warranty; and distribute a copy of this 
-				License along with the Library.
-			</P>
-			<P>You may charge a fee for the physical act of transferring a copy, and you may at 
-				your option offer warranty protection in exchange for a fee.
-			</P>
-			<P><STRONG>2.</STRONG> You may modify your copy or copies of the Library or any 
-				portion of it, thus forming a work based on the Library, and copy and 
-				distribute such modifications or work under the terms of Section 1 above, 
-				provided that you also meet all of these conditions:
-			</P>
-			<BLOCKQUOTE>
-				<P>a) The modified work must itself be a software library.
-				</P>
-				<P>b) You must cause the files modified to carry prominent notices stating that you 
-					changed the files and the date of any change.</P>
-				<P>c) You must cause the whole of the work to be licensed at no charge to all third 
-					parties under the terms of this License.
-				</P>
-				<P>d) If a facility in the modified Library refers to a function or a table of data 
-					to be supplied by an application program that uses the facility, other than as 
-					an argument passed when the facility is invoked, then you must make a good 
-					faith effort to ensure that, in the event an application does not supply such 
-					function or table, the facility still operates, and performs whatever part of 
-					its purpose remains meaningful.
-				</P>
-				<P>(For example, a function in a library to compute square roots has a purpose that 
-					is entirely well-defined independent of the application. Therefore, Subsection 
-					2d requires that any application-supplied function or table used by this 
-					function must be optional: if the application does not supply it, the square 
-					root function must still compute square roots.)
-				</P>
-				<P>These requirements apply to the modified work as a whole. If identifiable 
-					sections of that work are not derived from the Library, and can be reasonably 
-					considered independent and separate works in themselves, then this License, and 
-					its terms, do not apply to those sections when you distribute them as separate 
-					works. But when you distribute the same sections as part of a whole which is a 
-					work based on the Library, the distribution of the whole must be on the terms 
-					of this License, whose permissions for other licensees extend to the entire 
-					whole, and thus to each and every part regardless of who wrote it.
-				</P>
-				<P>Thus, it is not the intent of this section to claim rights or contest your 
-					rights to work written entirely by you; rather, the intent is to exercise the 
-					right to control the distribution of derivative or collective works based on 
-					the Library.
-				</P>
-				<P>In addition, mere aggregation of another work not based on the Library with the 
-					Library (or with a work based on the Library) on a volume of a storage or 
-					distribution medium does not bring the other work under the scope of this 
-					License.
-				</P>
-			</BLOCKQUOTE>
-			<P><STRONG>3.</STRONG> You may opt to apply the terms of the ordinary GNU General 
-				Public License instead of this License to a given copy of the Library. To do 
-				this, you must alter all the notices that refer to this License, so that they 
-				refer to the ordinary GNU General Public License, version 2, instead of to this 
-				License. (If a newer version than version 2 of the ordinary GNU General Public 
-				License has appeared, then you can specify that version instead if you wish.) 
-				Do not make any other change in these notices.
-			</P>
-			<P>Once this change is made in a given copy, it is irreversible for that copy, so 
-				the ordinary GNU General Public License applies to all subsequent copies and 
-				derivative works made from that copy.
-			</P>
-			<P>This option is useful when you wish to copy part of the code of the Library into 
-				a program that is not a library.
-			</P>
-			<P><STRONG>4.</STRONG> You may copy and distribute the Library (or a portion or 
-				derivative of it, under Section 2) in object code or executable form under the 
-				terms of Sections 1 and 2 above provided that you accompany it with the 
-				complete corresponding machine-readable source code, which must be distributed 
-				under the terms of Sections 1 and 2 above on a medium customarily used for 
-				software interchange.
-			</P>
-			<P>If distribution of object code is made by offering access to copy from a 
-				designated place, then offering equivalent access to copy the source code from 
-				the same place satisfies the requirement to distribute the source code, even 
-				though third parties are not compelled to copy the source along with the object 
-				code.</P>
-			<P><STRONG>5.</STRONG> A program that contains no derivative of any portion of the 
-				Library, but is designed to work with the Library by being compiled or linked 
-				with it, is called a "work that uses the Library". Such a work, in isolation, 
-				is not a derivative work of the Library, and therefore falls outside the scope 
-				of this License.
-			</P>
-			<P>However, linking a "work that uses the Library" with the Library creates an 
-				executable that is a derivative of the Library (because it contains portions of 
-				the Library), rather than a "work that uses the library". The executable is 
-				therefore covered by this License. Section 6 states terms for distribution of 
-				such executables.
-			</P>
-			<P>When a "work that uses the Library" uses material from a header file that is 
-				part of the Library, the object code for the work may be a derivative work of 
-				the Library even though the source code is not. Whether this is true is 
-				especially significant if the work can be linked without the Library, or if the 
-				work is itself a library. The threshold for this to be true is not precisely 
-				defined by law.
-			</P>
-			<P>If such an object file uses only numerical parameters, data structure layouts 
-				and accessors, and small macros and small inline functions (ten lines or less 
-				in length), then the use of the object file is unrestricted, regardless of 
-				whether it is legally a derivative work. (Executables containing this object 
-				code plus portions of the Library will still fall under Section 6.)
-			</P>
-			<P>Otherwise, if the work is a derivative of the Library, you may distribute the 
-				object code for the work under the terms of Section 6. Any executables 
-				containing that work also fall under Section 6, whether or not they are linked 
-				directly with the Library itself.
-			</P>
-			<P><STRONG>6.</STRONG> As an exception to the Sections above, you may also combine 
-				or link a "work that uses the Library" with the Library to produce a work 
-				containing portions of the Library, and distribute that work under terms of 
-				your choice, provided that the terms permit modification of the work for the 
-				customer's own use and reverse engineering for debugging such modifications.
-			</P>
-			<P>You must give prominent notice with each copy of the work that the Library is 
-				used in it and that the Library and its use are covered by this License. You 
-				must supply a copy of this License. If the work during execution displays 
-				copyright notices, you must include the copyright notice for the Library among 
-				them, as well as a reference directing the user to the copy of this License. 
-				Also, you must do one of these things:
-			</P>
-			<BLOCKQUOTE>
-				<P>a) Accompany the work with the complete corresponding machine-readable source 
-					code for the Library including whatever changes were used in the work (which 
-					must be distributed under Sections 1 and 2 above); and, if the work is an 
-					executable linked with the Library, with the complete machine-readable "work 
-					that uses the Library", as object code and/or source code, so that the user can 
-					modify the Library and then relink to produce a modified executable containing 
-					the modified Library. (It is understood that the user who changes the contents 
-					of definitions files in the Library will not necessarily be able to recompile 
-					the application to use the modified definitions.)
-				</P>
-				<P>b) Use a suitable shared library mechanism for linking with the Library. A 
-					suitable mechanism is one that (1) uses at run time a copy of the library 
-					already present on the user's computer system, rather than copying library 
-					functions into the executable, and (2) will operate properly with a modified 
-					version of the library, if the user installs one, as long as the modified 
-					version is interface-compatible with the version that the work was made with.
-				</P>
-				<P>c) Accompany the work with a written offer, valid for at least three years, to 
-					give the same user the materials specified in Subsection 6a, above, for a 
-					charge no more than the cost of performing this distribution.
-				</P>
-				<P>d) If distribution of the work is made by offering access to copy from a 
-					designated place, offer equivalent access to copy the above specified materials 
-					from the same place.
-				</P>
-				<P>e) Verify that the user has already received a copy of these materials or that 
-					you have already sent this user a copy.</P>
-			</BLOCKQUOTE>
-			<P>For an executable, the required form of the "work that uses the Library" must 
-				include any data and utility programs needed for reproducing the executable 
-				from it. However, as a special exception, the materials to be distributed need 
-				not include anything that is normally distributed (in either source or binary 
-				form) with the major components (compiler, kernel, and so on) of the operating 
-				system on which the executable runs, unless that component itself accompanies 
-				the executable.
-			</P>
-			<P>It may happen that this requirement contradicts the license restrictions of 
-				other proprietary libraries that do not normally accompany the operating 
-				system. Such a contradiction means you cannot use both them and the Library 
-				together in an executable that you distribute.
-			</P>
-			<P><STRONG>7.</STRONG> You may place library facilities that are a work based on 
-				the Library side-by-side in a single library together with other library 
-				facilities not covered by this License, and distribute such a combined library, 
-				provided that the separate distribution of the work based on the Library and of 
-				the other library facilities is otherwise permitted, and provided that you do 
-				these two things:
-			</P>
-			<BLOCKQUOTE>
-				<P>a) Accompany the combined library with a copy of the same work based on the 
-					Library, uncombined with any other library facilities. This must be distributed 
-					under the terms of the Sections above.
-				</P>
-				<P>b) Give prominent notice with the combined library of the fact that part of it 
-					is a work based on the Library, and explaining where to find the accompanying 
-					uncombined form of the same work.</P>
-			</BLOCKQUOTE>
-			<P><STRONG>8.</STRONG> You may not copy, modify, sublicense, link with, or 
-				distribute the Library except as expressly provided under this License. Any 
-				attempt otherwise to copy, modify, sublicense, link with, or distribute the 
-				Library is void, and will automatically terminate your rights under this 
-				License. However, parties who have received copies, or rights, from you under 
-				this License will not have their licenses terminated so long as such parties 
-				remain in full compliance.
-			</P>
-			<P><STRONG>9.</STRONG> You are not required to accept this License, since you have 
-				not signed it. However, nothing else grants you permission to modify or 
-				distribute the Library or its derivative works. These actions are prohibited by 
-				law if you do not accept this License. Therefore, by modifying or distributing 
-				the Library (or any work based on the Library), you indicate your acceptance of 
-				this License to do so, and all its terms and conditions for copying, 
-				distributing or modifying the Library or works based on it.
-			</P>
-			<P><STRONG>10.</STRONG> Each time you redistribute the Library (or any work based 
-				on the Library), the recipient automatically receives a license from the 
-				original licensor to copy, distribute, link with or modify the Library subject 
-				to these terms and conditions. You may not impose any further restrictions on 
-				the recipients' exercise of the rights granted herein. You are not responsible 
-				for enforcing compliance by third parties with this License.
-			</P>
-			<P><STRONG>11.</STRONG> If, as a consequence of a court judgment or allegation of 
-				patent infringement or for any other reason (not limited to patent issues), 
-				conditions are imposed on you (whether by court order, agreement or otherwise) 
-				that contradict the conditions of this License, they do not excuse you from the 
-				conditions of this License. If you cannot distribute so as to satisfy 
-				simultaneously your obligations under this License and any other pertinent 
-				obligations, then as a consequence you may not distribute the Library at all. 
-				For example, if a patent license would not permit royalty-free redistribution 
-				of the Library by all those who receive copies directly or indirectly through 
-				you, then the only way you could satisfy both it and this License would be to 
-				refrain entirely from distribution of the Library.
-			</P>
-			<P>If any portion of this section is held invalid or unenforceable under any 
-				particular circumstance, the balance of the section is intended to apply, and 
-				the section as a whole is intended to apply in other circumstances.
-			</P>
-			<P>It is not the purpose of this section to induce you to infringe any patents or 
-				other property right claims or to contest validity of any such claims; this 
-				section has the sole purpose of protecting the integrity of the free software 
-				distribution system which is implemented by public license practices. Many 
-				people have made generous contributions to the wide range of software 
-				distributed through that system in reliance on consistent application of that 
-				system; it is up to the author/donor to decide if he or she is willing to 
-				distribute software through any other system and a licensee cannot impose that 
-				choice.
-			</P>
-			<P>This section is intended to make thoroughly clear what is believed to be a 
-				consequence of the rest of this License.
-			</P>
-			<P><STRONG>12.</STRONG> If the distribution and/or use of the Library is restricted 
-				in certain countries either by patents or by copyrighted interfaces, the 
-				original copyright holder who places the Library under this License may add an 
-				explicit geographical distribution limitation excluding those countries, so 
-				that distribution is permitted only in or among countries not thus excluded. In 
-				such case, this License incorporates the limitation as if written in the body 
-				of this License.
-			</P>
-			<P><STRONG>13.</STRONG> The Free Software Foundation may publish revised and/or new 
-				versions of the Lesser General Public License from time to time. Such new 
-				versions will be similar in spirit to the present version, but may differ in 
-				detail to address new problems or concerns.</P>
-			<P>Each version is given a distinguishing version number. If the Library specifies 
-				a version number of this License which applies to it and "any later version", 
-				you have the option of following the terms and conditions either of that 
-				version or of any later version published by the Free Software Foundation. If 
-				the Library does not specify a license version number, you may choose any 
-				version ever published by the Free Software Foundation.
-			</P>
-			<P><STRONG>14.</STRONG> If you wish to incorporate parts of the Library into other 
-				free programs whose distribution conditions are incompatible with these, write 
-				to the author to ask for permission. For software which is copyrighted by the 
-				Free Software Foundation, write to the Free Software Foundation; we sometimes 
-				make exceptions for this. Our decision will be guided by the two goals of 
-				preserving the free status of all derivatives of our free software and of 
-				promoting the sharing and reuse of software generally.
-			</P>
-			<P>NO WARRANTY
-			</P>
-			<P><STRONG>15. </STRONG>BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO 
-				WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT 
-				WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 
-				PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR 
-				IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
-				MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE 
-				QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE 
-				DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR 
-				CORRECTION.
-			</P>
-			<P><STRONG>16.</STRONG> IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO 
-				IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 
-				REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 
-				INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT 
-				OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS 
-				OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 
-				PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN 
-				IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 
-				DAMAGES.
-			</P>
-			<H4><STRONG>END OF TERMS AND CONDITIONS</STRONG></H4>
-		</TT>
-	</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<title>GNU Lesser General Public License</title>
+		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
+		<STYLE>
+			BODY { FONT-SIZE: 12px }
+		</STYLE>
+	</head>
+	<body>
+		<H3>GNU Lesser General Public License</H3>
+		<TT>
+			<P>Version 2.1, February 1999</P>
+			<BLOCKQUOTE>
+				<P>Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 
+					330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute 
+					verbatim copies of this license document, but changing it is not allowed.</P>
+				<P>[This is the first released version of the Lesser GPL. It also counts as the 
+					successor of the GNU Library Public License, version 2, hence the version 
+					number 2.1.]</P>
+			</BLOCKQUOTE>
+			<H4>Preamble</H4>
+			<P>The licenses for most software are designed to take away your freedom to share 
+				and change it. By contrast, the GNU General Public Licenses are intended to 
+				guarantee your freedom to share and change free software--to make sure the 
+				software is free for all its users.
+			</P>
+			<P>This license, the Lesser General Public License, applies to some specially 
+				designated software packages--typically libraries--of the Free Software 
+				Foundation and other authors who decide to use it. You can use it too, but we 
+				suggest you first think carefully about whether this license or the ordinary 
+				General Public License is the better strategy to use in any particular case, 
+				based on the explanations below.
+			</P>
+			<P>When we speak of free software, we are referring to freedom of use, not price. 
+				Our General Public Licenses are designed to make sure that you have the freedom 
+				to distribute copies of free software (and charge for this service if you 
+				wish); that you receive source code or can get it if you want it; that you can 
+				change the software and use pieces of it in new free programs; and that you are 
+				informed that you can do these things.</P>
+			<P>To protect your rights, we need to make restrictions that forbid distributors to 
+				deny you these rights or to ask you to surrender these rights. These 
+				restrictions translate to certain responsibilities for you if you distribute 
+				copies of the library or if you modify it.
+			</P>
+			<P>For example, if you distribute copies of the library, whether gratis or for a 
+				fee, you must give the recipients all the rights that we gave you. You must 
+				make sure that they, too, receive or can get the source code. If you link other 
+				code with the library, you must provide complete object files to the 
+				recipients, so that they can relink them with the library after making changes 
+				to the library and recompiling it. And you must show them these terms so they 
+				know their rights.
+			</P>
+			<P>We protect your rights with a two-step method: (1) we copyright the library, and 
+				(2) we offer you this license, which gives you legal permission to copy, 
+				distribute and/or modify the library.
+			</P>
+			<P>To protect each distributor, we want to make it very clear that there is no 
+				warranty for the free library. Also, if the library is modified by someone else 
+				and passed on, the recipients should know that what they have is not the 
+				original version, so that the original author's reputation will not be affected 
+				by problems that might be introduced by others.
+			</P>
+			<P>Finally, software patents pose a constant threat to the existence of any free 
+				program. We wish to make sure that a company cannot effectively restrict the 
+				users of a free program by obtaining a restrictive license from a patent 
+				holder. Therefore, we insist that any patent license obtained for a version of 
+				the library must be consistent with the full freedom of use specified in this 
+				license.
+			</P>
+			<P>Most GNU software, including some libraries, is covered by the ordinary GNU 
+				General Public License. This license, the GNU Lesser General Public License, 
+				applies to certain designated libraries, and is quite different from the 
+				ordinary General Public License. We use this license for certain libraries in 
+				order to permit linking those libraries into non-free programs.
+			</P>
+			<P>When a program is linked with a library, whether statically or using a shared 
+				library, the combination of the two is legally speaking a combined work, a 
+				derivative of the original library. The ordinary General Public License 
+				therefore permits such linking only if the entire combination fits its criteria 
+				of freedom. The Lesser General Public License permits more lax criteria for 
+				linking other code with the library.
+			</P>
+			<P>We call this license the "Lesser" General Public License because it does Less to 
+				protect the user's freedom than the ordinary General Public License. It also 
+				provides other free software developers Less of an advantage over competing 
+				non-free programs. These disadvantages are the reason we use the ordinary 
+				General Public License for many libraries. However, the Lesser license provides 
+				advantages in certain special circumstances.
+			</P>
+			<P>For example, on rare occasions, there may be a special need to encourage the 
+				widest possible use of a certain library, so that it becomes a de-facto 
+				standard. To achieve this, non-free programs must be allowed to use the 
+				library. A more frequent case is that a free library does the same job as 
+				widely used non-free libraries. In this case, there is little to gain by 
+				limiting the free library to free software only, so we use the Lesser General 
+				Public License.
+			</P>
+			<P>In other cases, permission to use a particular library in non-free programs 
+				enables a greater number of people to use a large body of free software. For 
+				example, permission to use the GNU C Library in non-free programs enables many 
+				more people to use the whole GNU operating system, as well as its variant, the 
+				GNU/Linux operating system.
+			</P>
+			<P>Although the Lesser General Public License is Less protective of the users' 
+				freedom, it does ensure that the user of a program that is linked with the 
+				Library has the freedom and the wherewithal to run that program using a 
+				modified version of the Library.
+			</P>
+			<P>The precise terms and conditions for copying, distribution and modification 
+				follow. Pay close attention to the difference between a "work based on the 
+				library" and a "work that uses the library". The former contains code derived 
+				from the library, whereas the latter must be combined with the library in order 
+				to run.
+			</P>
+			<H4>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</H4>
+			<P><STRONG>0.</STRONG> This License Agreement applies to any software library or 
+				other program which contains a notice placed by the copyright holder or other 
+				authorized party saying it may be distributed under the terms of this Lesser 
+				General Public License (also called "this License"). Each licensee is addressed 
+				as "you".</P>
+			<P>A "library" means a collection of software functions and/or data prepared so as 
+				to be conveniently linked with application programs (which use some of those 
+				functions and data) to form executables.
+			</P>
+			<P>The "Library", below, refers to any such software library or work which has been 
+				distributed under these terms. A "work based on the Library" means either the 
+				Library or any derivative work under copyright law: that is to say, a work 
+				containing the Library or a portion of it, either verbatim or with 
+				modifications and/or translated straightforwardly into another language. 
+				(Hereinafter, translation is included without limitation in the term 
+				"modification".)
+			</P>
+			<P>"Source code" for a work means the preferred form of the work for making 
+				modifications to it. For a library, complete source code means all the source 
+				code for all modules it contains, plus any associated interface definition 
+				files, plus the scripts used to control compilation and installation of the 
+				library.</P>
+			<P>Activities other than copying, distribution and modification are not covered by 
+				this License; they are outside its scope. The act of running a program using 
+				the Library is not restricted, and output from such a program is covered only 
+				if its contents constitute a work based on the Library (independent of the use 
+				of the Library in a tool for writing it). Whether that is true depends on what 
+				the Library does and what the program that uses the Library does.
+			</P>
+			<P><STRONG>1.</STRONG> You may copy and distribute verbatim copies of the Library's 
+				complete source code as you receive it, in any medium, provided that you 
+				conspicuously and appropriately publish on each copy an appropriate copyright 
+				notice and disclaimer of warranty; keep intact all the notices that refer to 
+				this License and to the absence of any warranty; and distribute a copy of this 
+				License along with the Library.
+			</P>
+			<P>You may charge a fee for the physical act of transferring a copy, and you may at 
+				your option offer warranty protection in exchange for a fee.
+			</P>
+			<P><STRONG>2.</STRONG> You may modify your copy or copies of the Library or any 
+				portion of it, thus forming a work based on the Library, and copy and 
+				distribute such modifications or work under the terms of Section 1 above, 
+				provided that you also meet all of these conditions:
+			</P>
+			<BLOCKQUOTE>
+				<P>a) The modified work must itself be a software library.
+				</P>
+				<P>b) You must cause the files modified to carry prominent notices stating that you 
+					changed the files and the date of any change.</P>
+				<P>c) You must cause the whole of the work to be licensed at no charge to all third 
+					parties under the terms of this License.
+				</P>
+				<P>d) If a facility in the modified Library refers to a function or a table of data 
+					to be supplied by an application program that uses the facility, other than as 
+					an argument passed when the facility is invoked, then you must make a good 
+					faith effort to ensure that, in the event an application does not supply such 
+					function or table, the facility still operates, and performs whatever part of 
+					its purpose remains meaningful.
+				</P>
+				<P>(For example, a function in a library to compute square roots has a purpose that 
+					is entirely well-defined independent of the application. Therefore, Subsection 
+					2d requires that any application-supplied function or table used by this 
+					function must be optional: if the application does not supply it, the square 
+					root function must still compute square roots.)
+				</P>
+				<P>These requirements apply to the modified work as a whole. If identifiable 
+					sections of that work are not derived from the Library, and can be reasonably 
+					considered independent and separate works in themselves, then this License, and 
+					its terms, do not apply to those sections when you distribute them as separate 
+					works. But when you distribute the same sections as part of a whole which is a 
+					work based on the Library, the distribution of the whole must be on the terms 
+					of this License, whose permissions for other licensees extend to the entire 
+					whole, and thus to each and every part regardless of who wrote it.
+				</P>
+				<P>Thus, it is not the intent of this section to claim rights or contest your 
+					rights to work written entirely by you; rather, the intent is to exercise the 
+					right to control the distribution of derivative or collective works based on 
+					the Library.
+				</P>
+				<P>In addition, mere aggregation of another work not based on the Library with the 
+					Library (or with a work based on the Library) on a volume of a storage or 
+					distribution medium does not bring the other work under the scope of this 
+					License.
+				</P>
+			</BLOCKQUOTE>
+			<P><STRONG>3.</STRONG> You may opt to apply the terms of the ordinary GNU General 
+				Public License instead of this License to a given copy of the Library. To do 
+				this, you must alter all the notices that refer to this License, so that they 
+				refer to the ordinary GNU General Public License, version 2, instead of to this 
+				License. (If a newer version than version 2 of the ordinary GNU General Public 
+				License has appeared, then you can specify that version instead if you wish.) 
+				Do not make any other change in these notices.
+			</P>
+			<P>Once this change is made in a given copy, it is irreversible for that copy, so 
+				the ordinary GNU General Public License applies to all subsequent copies and 
+				derivative works made from that copy.
+			</P>
+			<P>This option is useful when you wish to copy part of the code of the Library into 
+				a program that is not a library.
+			</P>
+			<P><STRONG>4.</STRONG> You may copy and distribute the Library (or a portion or 
+				derivative of it, under Section 2) in object code or executable form under the 
+				terms of Sections 1 and 2 above provided that you accompany it with the 
+				complete corresponding machine-readable source code, which must be distributed 
+				under the terms of Sections 1 and 2 above on a medium customarily used for 
+				software interchange.
+			</P>
+			<P>If distribution of object code is made by offering access to copy from a 
+				designated place, then offering equivalent access to copy the source code from 
+				the same place satisfies the requirement to distribute the source code, even 
+				though third parties are not compelled to copy the source along with the object 
+				code.</P>
+			<P><STRONG>5.</STRONG> A program that contains no derivative of any portion of the 
+				Library, but is designed to work with the Library by being compiled or linked 
+				with it, is called a "work that uses the Library". Such a work, in isolation, 
+				is not a derivative work of the Library, and therefore falls outside the scope 
+				of this License.
+			</P>
+			<P>However, linking a "work that uses the Library" with the Library creates an 
+				executable that is a derivative of the Library (because it contains portions of 
+				the Library), rather than a "work that uses the library". The executable is 
+				therefore covered by this License. Section 6 states terms for distribution of 
+				such executables.
+			</P>
+			<P>When a "work that uses the Library" uses material from a header file that is 
+				part of the Library, the object code for the work may be a derivative work of 
+				the Library even though the source code is not. Whether this is true is 
+				especially significant if the work can be linked without the Library, or if the 
+				work is itself a library. The threshold for this to be true is not precisely 
+				defined by law.
+			</P>
+			<P>If such an object file uses only numerical parameters, data structure layouts 
+				and accessors, and small macros and small inline functions (ten lines or less 
+				in length), then the use of the object file is unrestricted, regardless of 
+				whether it is legally a derivative work. (Executables containing this object 
+				code plus portions of the Library will still fall under Section 6.)
+			</P>
+			<P>Otherwise, if the work is a derivative of the Library, you may distribute the 
+				object code for the work under the terms of Section 6. Any executables 
+				containing that work also fall under Section 6, whether or not they are linked 
+				directly with the Library itself.
+			</P>
+			<P><STRONG>6.</STRONG> As an exception to the Sections above, you may also combine 
+				or link a "work that uses the Library" with the Library to produce a work 
+				containing portions of the Library, and distribute that work under terms of 
+				your choice, provided that the terms permit modification of the work for the 
+				customer's own use and reverse engineering for debugging such modifications.
+			</P>
+			<P>You must give prominent notice with each copy of the work that the Library is 
+				used in it and that the Library and its use are covered by this License. You 
+				must supply a copy of this License. If the work during execution displays 
+				copyright notices, you must include the copyright notice for the Library among 
+				them, as well as a reference directing the user to the copy of this License. 
+				Also, you must do one of these things:
+			</P>
+			<BLOCKQUOTE>
+				<P>a) Accompany the work with the complete corresponding machine-readable source 
+					code for the Library including whatever changes were used in the work (which 
+					must be distributed under Sections 1 and 2 above); and, if the work is an 
+					executable linked with the Library, with the complete machine-readable "work 
+					that uses the Library", as object code and/or source code, so that the user can 
+					modify the Library and then relink to produce a modified executable containing 
+					the modified Library. (It is understood that the user who changes the contents 
+					of definitions files in the Library will not necessarily be able to recompile 
+					the application to use the modified definitions.)
+				</P>
+				<P>b) Use a suitable shared library mechanism for linking with the Library. A 
+					suitable mechanism is one that (1) uses at run time a copy of the library 
+					already present on the user's computer system, rather than copying library 
+					functions into the executable, and (2) will operate properly with a modified 
+					version of the library, if the user installs one, as long as the modified 
+					version is interface-compatible with the version that the work was made with.
+				</P>
+				<P>c) Accompany the work with a written offer, valid for at least three years, to 
+					give the same user the materials specified in Subsection 6a, above, for a 
+					charge no more than the cost of performing this distribution.
+				</P>
+				<P>d) If distribution of the work is made by offering access to copy from a 
+					designated place, offer equivalent access to copy the above specified materials 
+					from the same place.
+				</P>
+				<P>e) Verify that the user has already received a copy of these materials or that 
+					you have already sent this user a copy.</P>
+			</BLOCKQUOTE>
+			<P>For an executable, the required form of the "work that uses the Library" must 
+				include any data and utility programs needed for reproducing the executable 
+				from it. However, as a special exception, the materials to be distributed need 
+				not include anything that is normally distributed (in either source or binary 
+				form) with the major components (compiler, kernel, and so on) of the operating 
+				system on which the executable runs, unless that component itself accompanies 
+				the executable.
+			</P>
+			<P>It may happen that this requirement contradicts the license restrictions of 
+				other proprietary libraries that do not normally accompany the operating 
+				system. Such a contradiction means you cannot use both them and the Library 
+				together in an executable that you distribute.
+			</P>
+			<P><STRONG>7.</STRONG> You may place library facilities that are a work based on 
+				the Library side-by-side in a single library together with other library 
+				facilities not covered by this License, and distribute such a combined library, 
+				provided that the separate distribution of the work based on the Library and of 
+				the other library facilities is otherwise permitted, and provided that you do 
+				these two things:
+			</P>
+			<BLOCKQUOTE>
+				<P>a) Accompany the combined library with a copy of the same work based on the 
+					Library, uncombined with any other library facilities. This must be distributed 
+					under the terms of the Sections above.
+				</P>
+				<P>b) Give prominent notice with the combined library of the fact that part of it 
+					is a work based on the Library, and explaining where to find the accompanying 
+					uncombined form of the same work.</P>
+			</BLOCKQUOTE>
+			<P><STRONG>8.</STRONG> You may not copy, modify, sublicense, link with, or 
+				distribute the Library except as expressly provided under this License. Any 
+				attempt otherwise to copy, modify, sublicense, link with, or distribute the 
+				Library is void, and will automatically terminate your rights under this 
+				License. However, parties who have received copies, or rights, from you under 
+				this License will not have their licenses terminated so long as such parties 
+				remain in full compliance.
+			</P>
+			<P><STRONG>9.</STRONG> You are not required to accept this License, since you have 
+				not signed it. However, nothing else grants you permission to modify or 
+				distribute the Library or its derivative works. These actions are prohibited by 
+				law if you do not accept this License. Therefore, by modifying or distributing 
+				the Library (or any work based on the Library), you indicate your acceptance of 
+				this License to do so, and all its terms and conditions for copying, 
+				distributing or modifying the Library or works based on it.
+			</P>
+			<P><STRONG>10.</STRONG> Each time you redistribute the Library (or any work based 
+				on the Library), the recipient automatically receives a license from the 
+				original licensor to copy, distribute, link with or modify the Library subject 
+				to these terms and conditions. You may not impose any further restrictions on 
+				the recipients' exercise of the rights granted herein. You are not responsible 
+				for enforcing compliance by third parties with this License.
+			</P>
+			<P><STRONG>11.</STRONG> If, as a consequence of a court judgment or allegation of 
+				patent infringement or for any other reason (not limited to patent issues), 
+				conditions are imposed on you (whether by court order, agreement or otherwise) 
+				that contradict the conditions of this License, they do not excuse you from the 
+				conditions of this License. If you cannot distribute so as to satisfy 
+				simultaneously your obligations under this License and any other pertinent 
+				obligations, then as a consequence you may not distribute the Library at all. 
+				For example, if a patent license would not permit royalty-free redistribution 
+				of the Library by all those who receive copies directly or indirectly through 
+				you, then the only way you could satisfy both it and this License would be to 
+				refrain entirely from distribution of the Library.
+			</P>
+			<P>If any portion of this section is held invalid or unenforceable under any 
+				particular circumstance, the balance of the section is intended to apply, and 
+				the section as a whole is intended to apply in other circumstances.
+			</P>
+			<P>It is not the purpose of this section to induce you to infringe any patents or 
+				other property right claims or to contest validity of any such claims; this 
+				section has the sole purpose of protecting the integrity of the free software 
+				distribution system which is implemented by public license practices. Many 
+				people have made generous contributions to the wide range of software 
+				distributed through that system in reliance on consistent application of that 
+				system; it is up to the author/donor to decide if he or she is willing to 
+				distribute software through any other system and a licensee cannot impose that 
+				choice.
+			</P>
+			<P>This section is intended to make thoroughly clear what is believed to be a 
+				consequence of the rest of this License.
+			</P>
+			<P><STRONG>12.</STRONG> If the distribution and/or use of the Library is restricted 
+				in certain countries either by patents or by copyrighted interfaces, the 
+				original copyright holder who places the Library under this License may add an 
+				explicit geographical distribution limitation excluding those countries, so 
+				that distribution is permitted only in or among countries not thus excluded. In 
+				such case, this License incorporates the limitation as if written in the body 
+				of this License.
+			</P>
+			<P><STRONG>13.</STRONG> The Free Software Foundation may publish revised and/or new 
+				versions of the Lesser General Public License from time to time. Such new 
+				versions will be similar in spirit to the present version, but may differ in 
+				detail to address new problems or concerns.</P>
+			<P>Each version is given a distinguishing version number. If the Library specifies 
+				a version number of this License which applies to it and "any later version", 
+				you have the option of following the terms and conditions either of that 
+				version or of any later version published by the Free Software Foundation. If 
+				the Library does not specify a license version number, you may choose any 
+				version ever published by the Free Software Foundation.
+			</P>
+			<P><STRONG>14.</STRONG> If you wish to incorporate parts of the Library into other 
+				free programs whose distribution conditions are incompatible with these, write 
+				to the author to ask for permission. For software which is copyrighted by the 
+				Free Software Foundation, write to the Free Software Foundation; we sometimes 
+				make exceptions for this. Our decision will be guided by the two goals of 
+				preserving the free status of all derivatives of our free software and of 
+				promoting the sharing and reuse of software generally.
+			</P>
+			<P>NO WARRANTY
+			</P>
+			<P><STRONG>15. </STRONG>BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO 
+				WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT 
+				WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 
+				PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR 
+				IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+				MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE 
+				QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE 
+				DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR 
+				CORRECTION.
+			</P>
+			<P><STRONG>16.</STRONG> IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO 
+				IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 
+				REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 
+				INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT 
+				OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS 
+				OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 
+				PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN 
+				IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 
+				DAMAGES.
+			</P>
+			<H4><STRONG>END OF TERMS AND CONDITIONS</STRONG></H4>
+		</TT>
+	</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_about.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_about.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_about.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,161 +1,161 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * "About" dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title></title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<meta name="robots" content="noindex, nofollow" />
-	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-	<script type="text/javascript">
-
-var oEditor = window.parent.InnerDialogLoaded() ;
-var FCKLang	= oEditor.FCKLang ;
-
-window.parent.AddTab( 'About', FCKLang.DlgAboutAboutTab ) ;
-window.parent.AddTab( 'License', FCKLang.DlgAboutLicenseTab ) ;
-window.parent.AddTab( 'BrowserInfo', FCKLang.DlgAboutBrowserInfoTab ) ;
-
-// Function called when a dialog tag is selected.
-function OnDialogTabChange( tabCode )
-{
-	ShowE('divAbout', ( tabCode == 'About' ) ) ;
-	ShowE('divLicense', ( tabCode == 'License' ) ) ;
-	ShowE('divInfo'	, ( tabCode == 'BrowserInfo' ) ) ;
-}
-
-function SendEMail()
-{
-	var eMail = 'mailto:' ;
-	eMail += 'fredck' ;
-	eMail += '@' ;
-	eMail += 'fckeditor' ;
-	eMail += '.' ;
-	eMail += 'net' ;
-
-	window.location = eMail ;
-}
-
-window.onload = function()
-{
-	// Translate the dialog box texts.
-	oEditor.FCKLanguageManager.TranslatePage(document) ;
-
-	window.parent.SetAutoSize( true ) ;
-}
-
-	</script>
-</head>
-<body style="overflow: hidden">
-	<div id="divAbout">
-		<table cellpadding="0" cellspacing="0" border="0" width="100%" style="height: 100%">
-			<tr>
-				<td colspan="2">
-					<img alt="" src="fck_about/logo_fckeditor.gif" width="236" height="41" align="left" />
-					<table width="80" border="0" cellspacing="0" cellpadding="5" bgcolor="#ffffff" align="right">
-						<tr>
-							<td align="center" nowrap="nowrap" style="border-right: #000000 1px solid; border-top: #000000 1px solid;
-								border-left: #000000 1px solid; border-bottom: #000000 1px solid">
-								<span fcklang="DlgAboutVersion">version</span>
-								<br />
-								<b>2.6.3</b><br />
-								Build 19836</td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-			<tr style="height: 100%">
-				<td align="center" valign="middle">
-					<span style="font-size: 14px" dir="ltr">
-						<b><a href="http://www.fckeditor.net/?about" target="_blank" title="Visit the FCKeditor web site">
-							Support <b>Open Source</b> Software</a></b> </span>
-					<div style="padding-top:15px">
-						<img alt="" src="fck_about/logo_fredck.gif" width="87" height="36" />
-					</div>
-				</td>
-				<td align="center" nowrap="nowrap" valign="middle">
-					<div>
-						<div style="margin-bottom:5px" dir="ltr">Selected Sponsor</div>
-						<a href="http://www.spellchecker.net/fckeditor/" target="_blank"><img alt="Selected Sponsor" border="0" src="fck_about/sponsors/spellchecker_net.gif" width="75" height="75" /></a>
-					</div>
-				</td>
-			</tr>
-			<tr>
-				<td width="100%" nowrap="nowrap">
-					<span fcklang="DlgAboutInfo">For further information go to</span> <a href="http://www.fckeditor.net/?About"
-						target="_blank">http://www.fckeditor.net/</a>.
-					<br />
-					Copyright &copy; 2003-2008 <a href="#" onclick="SendEMail();">Frederico Caldeira Knabben</a>
-				</td>
-				<td align="center">
-					<a href="http://www.fckeditor.net/sponsors/apply" target="_blank">Become a Sponsor</a>
-				</td>
-			</tr>
-		</table>
-	</div>
-	<div id="divLicense" style="display: none">
-			<p>
-				Licensed under the terms of any of the following licenses at your
-				choice:
-			</p>
-			<ul>
-				<li style="margin-bottom:15px">
-					<b>GNU General Public License</b> Version 2 or later (the "GPL")<br />
-					<a href="http://www.gnu.org/licenses/gpl.html" target="_blank">http://www.gnu.org/licenses/gpl.html</a>
-				</li>
-				<li style="margin-bottom:15px">
-					<b>GNU Lesser General Public License</b> Version 2.1 or later (the "LGPL")<br />
-					<a href="http://www.gnu.org/licenses/lgpl.html" target="_blank">http://www.gnu.org/licenses/lgpl.html</a>
-				</li>
-				<li>
-					<b>Mozilla Public License</b> Version 1.1 or later (the "MPL")<br />
-					<a href="http://www.mozilla.org/MPL/MPL-1.1.html" target="_blank">http://www.mozilla.org/MPL/MPL-1.1.html</a>
-			   </li>
-			</ul>
-	</div>
-	<div id="divInfo" style="display: none" dir="ltr">
-		<table align="center" width="80%" border="0">
-			<tr>
-				<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 />' ) ;
-
-var sUserLang = '?' ;
-
-if ( window.navigator.language )
-	sUserLang = window.navigator.language.toLowerCase() ;
-else if ( window.navigator.userLanguage )
-	sUserLang = window.navigator.userLanguage.toLowerCase() ;
-
-document.write( '<b>User Language<\/b><br />' + sUserLang ) ;
-//-->
-					</script>
-				</td>
-			</tr>
-		</table>
-	</div>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * "About" dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+var FCKLang	= oEditor.FCKLang ;
+
+window.parent.AddTab( 'About', FCKLang.DlgAboutAboutTab ) ;
+window.parent.AddTab( 'License', FCKLang.DlgAboutLicenseTab ) ;
+window.parent.AddTab( 'BrowserInfo', FCKLang.DlgAboutBrowserInfoTab ) ;
+
+// Function called when a dialog tag is selected.
+function OnDialogTabChange( tabCode )
+{
+	ShowE('divAbout', ( tabCode == 'About' ) ) ;
+	ShowE('divLicense', ( tabCode == 'License' ) ) ;
+	ShowE('divInfo'	, ( tabCode == 'BrowserInfo' ) ) ;
+}
+
+function SendEMail()
+{
+	var eMail = 'mailto:' ;
+	eMail += 'fredck' ;
+	eMail += '@' ;
+	eMail += 'fckeditor' ;
+	eMail += '.' ;
+	eMail += 'net' ;
+
+	window.location = eMail ;
+}
+
+window.onload = function()
+{
+	// Translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	window.parent.SetAutoSize( true ) ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<div id="divAbout">
+		<table cellpadding="0" cellspacing="0" border="0" width="100%" style="height: 100%">
+			<tr>
+				<td colspan="2">
+					<img alt="" src="fck_about/logo_fckeditor.gif" width="236" height="41" align="left" />
+					<table width="80" border="0" cellspacing="0" cellpadding="5" bgcolor="#ffffff" align="right">
+						<tr>
+							<td align="center" nowrap="nowrap" style="border-right: #000000 1px solid; border-top: #000000 1px solid;
+								border-left: #000000 1px solid; border-bottom: #000000 1px solid">
+								<span fcklang="DlgAboutVersion">version</span>
+								<br />
+								<b>2.6.3</b><br />
+								Build 19836</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr style="height: 100%">
+				<td align="center" valign="middle">
+					<span style="font-size: 14px" dir="ltr">
+						<b><a href="http://www.fckeditor.net/?about" target="_blank" title="Visit the FCKeditor web site">
+							Support <b>Open Source</b> Software</a></b> </span>
+					<div style="padding-top:15px">
+						<img alt="" src="fck_about/logo_fredck.gif" width="87" height="36" />
+					</div>
+				</td>
+				<td align="center" nowrap="nowrap" valign="middle">
+					<div>
+						<div style="margin-bottom:5px" dir="ltr">Selected Sponsor</div>
+						<a href="http://www.spellchecker.net/fckeditor/" target="_blank"><img alt="Selected Sponsor" border="0" src="fck_about/sponsors/spellchecker_net.gif" width="75" height="75" /></a>
+					</div>
+				</td>
+			</tr>
+			<tr>
+				<td width="100%" nowrap="nowrap">
+					<span fcklang="DlgAboutInfo">For further information go to</span> <a href="http://www.fckeditor.net/?About"
+						target="_blank">http://www.fckeditor.net/</a>.
+					<br />
+					Copyright &copy; 2003-2008 <a href="#" onclick="SendEMail();">Frederico Caldeira Knabben</a>
+				</td>
+				<td align="center">
+					<a href="http://www.fckeditor.net/sponsors/apply" target="_blank">Become a Sponsor</a>
+				</td>
+			</tr>
+		</table>
+	</div>
+	<div id="divLicense" style="display: none">
+			<p>
+				Licensed under the terms of any of the following licenses at your
+				choice:
+			</p>
+			<ul>
+				<li style="margin-bottom:15px">
+					<b>GNU General Public License</b> Version 2 or later (the "GPL")<br />
+					<a href="http://www.gnu.org/licenses/gpl.html" target="_blank">http://www.gnu.org/licenses/gpl.html</a>
+				</li>
+				<li style="margin-bottom:15px">
+					<b>GNU Lesser General Public License</b> Version 2.1 or later (the "LGPL")<br />
+					<a href="http://www.gnu.org/licenses/lgpl.html" target="_blank">http://www.gnu.org/licenses/lgpl.html</a>
+				</li>
+				<li>
+					<b>Mozilla Public License</b> Version 1.1 or later (the "MPL")<br />
+					<a href="http://www.mozilla.org/MPL/MPL-1.1.html" target="_blank">http://www.mozilla.org/MPL/MPL-1.1.html</a>
+			   </li>
+			</ul>
+	</div>
+	<div id="divInfo" style="display: none" dir="ltr">
+		<table align="center" width="80%" border="0">
+			<tr>
+				<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 />' ) ;
+
+var sUserLang = '?' ;
+
+if ( window.navigator.language )
+	sUserLang = window.navigator.language.toLowerCase() ;
+else if ( window.navigator.userLanguage )
+	sUserLang = window.navigator.userLanguage.toLowerCase() ;
+
+document.write( '<b>User Language<\/b><br />' + sUserLang ) ;
+//-->
+					</script>
+				</td>
+			</tr>
+		</table>
+	</div>
+</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_anchor.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_anchor.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_anchor.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,220 +1,220 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Anchor dialog window.
--->
-<html>
-	<head>
-		<title>Anchor Properties</title>
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-		<meta content="noindex, nofollow" name="robots">
-		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-		<script type="text/javascript">
-
-var dialog			= window.parent ;
-var oEditor			= dialog.InnerDialogLoaded() ;
-
-var FCK				= oEditor.FCK ;
-var FCKBrowserInfo	= oEditor.FCKBrowserInfo ;
-var FCKTools		= oEditor.FCKTools ;
-var FCKRegexLib		= oEditor.FCKRegexLib ;
-
-var oDOM			= FCK.EditorDocument ;
-
-var oFakeImage = dialog.Selection.GetSelectedElement() ;
-
-var oAnchor ;
-
-if ( oFakeImage )
-{
-	if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckanchor') )
-		oAnchor = FCK.GetRealElement( oFakeImage ) ;
-	else
-		oFakeImage = null ;
-}
-
-//Search for a real anchor
-if ( !oFakeImage )
-{
-	oAnchor = FCK.Selection.MoveToAncestorNode( 'A' ) ;
-	if ( oAnchor )
-		FCK.Selection.SelectNode( oAnchor ) ;
-}
-
-window.onload = function()
-{
-	// First of all, translate the dialog box texts
-	oEditor.FCKLanguageManager.TranslatePage(document) ;
-
-	if ( oAnchor )
-		GetE('txtName').value = oAnchor.name ;
-	else
-		oAnchor = null ;
-
-	window.parent.SetOkButton( true ) ;
-	window.parent.SetAutoSize( true ) ;
-
-	SelectField( 'txtName' ) ;
-}
-
-function Ok()
-{
-	var sNewName = GetE('txtName').value ;
-
-	// Remove any illegal character in a name attribute:
-	// A name should start with a letter, but the validator passes anyway.
-	sNewName = sNewName.replace( /[^\w-_\.:]/g, '_' ) ;
-
-	if ( sNewName.length == 0 )
-	{
-		// Remove the anchor if the user leaves the name blank
-		if ( oAnchor )
-		{
-			// Removes the current anchor from the document using the new command
-			FCK.Commands.GetCommand( 'AnchorDelete' ).Execute() ;
-			return true ;
-		}
-
-		alert( oEditor.FCKLang.DlgAnchorErrorName ) ;
-		return false ;
-	}
-
-	oEditor.FCKUndo.SaveUndoStep() ;
-
-	if ( oAnchor )	// Modifying an existent anchor.
-	{
-		ReadjustLinksToAnchor( oAnchor.name, sNewName );
-
-		// Buggy explorer, bad bad browser. http://alt-tag.com/blog/archives/2006/02/ie-dom-bugs/
-		// Instead of just replacing the .name for the existing anchor (in order to preserve the content), we must remove the .name
-		// and assign .name, although it won't appear until it's specially processed in fckxhtml.js
-
-		// We remove the previous name
-		oAnchor.removeAttribute( 'name' ) ;
-		// Now we set it, but later we must process it specially
-		oAnchor.name = sNewName ;
-
-		return true ;
-	}
-
-	// Create a new anchor preserving the current selection
-	var aNewAnchors = oEditor.FCK.CreateLink( '#' ) ;
-
-	if ( aNewAnchors.length == 0 )
-			aNewAnchors.push( oEditor.FCK.InsertElement( 'a' ) ) ;
-	else
-	{
-		// Remove the fake href
-		for ( var i = 0 ; i < aNewAnchors.length ; i++ )
-			aNewAnchors[i].removeAttribute( 'href' ) ;
-	}
-
-	// More than one anchors may have been created, so interact through all of them (see #220).
-	for ( var i = 0 ; i < aNewAnchors.length ; i++ )
-	{
-		oAnchor = aNewAnchors[i] ;
-
-		// Set the name
-		if ( FCKBrowserInfo.IsIE )
-		{
-			// Setting anchor names directly in IE will trash the HTML code stored
-			// in FCKTempBin after undos. See #2263.
-			var replaceAnchor = oEditor.FCK.EditorDocument.createElement( '<a name="' +
-					FCKTools.HTMLEncode( sNewName ).replace( '"', '&quot;' ) + '">' ) ;
-			oEditor.FCKDomTools.MoveChildren( oAnchor, replaceAnchor ) ;
-			oAnchor.parentNode.replaceChild( replaceAnchor, oAnchor ) ;
-			oAnchor = replaceAnchor ;
-		}
-		else
-			oAnchor.name = sNewName ;
-
-		// IE does require special processing to show the Anchor's image
-		// Opera doesn't allow to select empty anchors
-		if ( FCKBrowserInfo.IsIE || FCKBrowserInfo.IsOpera )
-		{
-			if ( oAnchor.innerHTML != '' )
-			{
-				if ( FCKBrowserInfo.IsIE )
-					oAnchor.className += ' FCK__AnchorC' ;
-			}
-			else
-			{
-				// Create a fake image for both IE and Opera
-				var oImg = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Anchor', oAnchor.cloneNode(true) ) ;
-				oImg.setAttribute( '_fckanchor', 'true', 0 ) ;
-
-				oAnchor.parentNode.insertBefore( oImg, oAnchor ) ;
-				oAnchor.parentNode.removeChild( oAnchor ) ;
-			}
-
-		}
-	}
-
-	return true ;
-}
-
-// Checks all the links in the current page pointing to the current name and changes them to the new name
-function ReadjustLinksToAnchor( sCurrent, sNew )
-{
-	var oDoc = FCK.EditorDocument ;
-
-	var aLinks = oDoc.getElementsByTagName( 'A' ) ;
-
-	var sReference = '#' + sCurrent ;
-	// The url of the document, so we check absolute and partial references.
-	var sFullReference = oDoc.location.href.replace( /(#.*$)/, '') ;
-	sFullReference += sReference ;
-
-	var oLink ;
-	var i = aLinks.length - 1 ;
-	while ( i >= 0 && ( oLink = aLinks[i--] ) )
-	{
-		var sHRef = oLink.getAttribute( '_fcksavedurl' ) ;
-		if ( sHRef == null )
-			sHRef = oLink.getAttribute( 'href' , 2 ) || '' ;
-
-		if ( sHRef == sReference || sHRef == sFullReference )
-		{
-			oLink.href = '#' + sNew ;
-			SetAttribute( oLink, '_fcksavedurl', '#' + sNew ) ;
-		}
-	}
-}
-
-		</script>
-	</head>
-	<body style="overflow: hidden">
-		<table height="100%" width="100%">
-			<tr>
-				<td align="center">
-					<table border="0" cellpadding="0" cellspacing="0" width="80%">
-						<tr>
-							<td>
-								<span fckLang="DlgAnchorName">Anchor Name</span><BR>
-								<input id="txtName" style="WIDTH: 100%" type="text">
-							</td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-		</table>
-	</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Anchor dialog window.
+-->
+<html>
+	<head>
+		<title>Anchor Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script type="text/javascript">
+
+var dialog			= window.parent ;
+var oEditor			= dialog.InnerDialogLoaded() ;
+
+var FCK				= oEditor.FCK ;
+var FCKBrowserInfo	= oEditor.FCKBrowserInfo ;
+var FCKTools		= oEditor.FCKTools ;
+var FCKRegexLib		= oEditor.FCKRegexLib ;
+
+var oDOM			= FCK.EditorDocument ;
+
+var oFakeImage = dialog.Selection.GetSelectedElement() ;
+
+var oAnchor ;
+
+if ( oFakeImage )
+{
+	if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckanchor') )
+		oAnchor = FCK.GetRealElement( oFakeImage ) ;
+	else
+		oFakeImage = null ;
+}
+
+//Search for a real anchor
+if ( !oFakeImage )
+{
+	oAnchor = FCK.Selection.MoveToAncestorNode( 'A' ) ;
+	if ( oAnchor )
+		FCK.Selection.SelectNode( oAnchor ) ;
+}
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oAnchor )
+		GetE('txtName').value = oAnchor.name ;
+	else
+		oAnchor = null ;
+
+	window.parent.SetOkButton( true ) ;
+	window.parent.SetAutoSize( true ) ;
+
+	SelectField( 'txtName' ) ;
+}
+
+function Ok()
+{
+	var sNewName = GetE('txtName').value ;
+
+	// Remove any illegal character in a name attribute:
+	// A name should start with a letter, but the validator passes anyway.
+	sNewName = sNewName.replace( /[^\w-_\.:]/g, '_' ) ;
+
+	if ( sNewName.length == 0 )
+	{
+		// Remove the anchor if the user leaves the name blank
+		if ( oAnchor )
+		{
+			// Removes the current anchor from the document using the new command
+			FCK.Commands.GetCommand( 'AnchorDelete' ).Execute() ;
+			return true ;
+		}
+
+		alert( oEditor.FCKLang.DlgAnchorErrorName ) ;
+		return false ;
+	}
+
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	if ( oAnchor )	// Modifying an existent anchor.
+	{
+		ReadjustLinksToAnchor( oAnchor.name, sNewName );
+
+		// Buggy explorer, bad bad browser. http://alt-tag.com/blog/archives/2006/02/ie-dom-bugs/
+		// Instead of just replacing the .name for the existing anchor (in order to preserve the content), we must remove the .name
+		// and assign .name, although it won't appear until it's specially processed in fckxhtml.js
+
+		// We remove the previous name
+		oAnchor.removeAttribute( 'name' ) ;
+		// Now we set it, but later we must process it specially
+		oAnchor.name = sNewName ;
+
+		return true ;
+	}
+
+	// Create a new anchor preserving the current selection
+	var aNewAnchors = oEditor.FCK.CreateLink( '#' ) ;
+
+	if ( aNewAnchors.length == 0 )
+			aNewAnchors.push( oEditor.FCK.InsertElement( 'a' ) ) ;
+	else
+	{
+		// Remove the fake href
+		for ( var i = 0 ; i < aNewAnchors.length ; i++ )
+			aNewAnchors[i].removeAttribute( 'href' ) ;
+	}
+
+	// More than one anchors may have been created, so interact through all of them (see #220).
+	for ( var i = 0 ; i < aNewAnchors.length ; i++ )
+	{
+		oAnchor = aNewAnchors[i] ;
+
+		// Set the name
+		if ( FCKBrowserInfo.IsIE )
+		{
+			// Setting anchor names directly in IE will trash the HTML code stored
+			// in FCKTempBin after undos. See #2263.
+			var replaceAnchor = oEditor.FCK.EditorDocument.createElement( '<a name="' +
+					FCKTools.HTMLEncode( sNewName ).replace( '"', '&quot;' ) + '">' ) ;
+			oEditor.FCKDomTools.MoveChildren( oAnchor, replaceAnchor ) ;
+			oAnchor.parentNode.replaceChild( replaceAnchor, oAnchor ) ;
+			oAnchor = replaceAnchor ;
+		}
+		else
+			oAnchor.name = sNewName ;
+
+		// IE does require special processing to show the Anchor's image
+		// Opera doesn't allow to select empty anchors
+		if ( FCKBrowserInfo.IsIE || FCKBrowserInfo.IsOpera )
+		{
+			if ( oAnchor.innerHTML != '' )
+			{
+				if ( FCKBrowserInfo.IsIE )
+					oAnchor.className += ' FCK__AnchorC' ;
+			}
+			else
+			{
+				// Create a fake image for both IE and Opera
+				var oImg = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Anchor', oAnchor.cloneNode(true) ) ;
+				oImg.setAttribute( '_fckanchor', 'true', 0 ) ;
+
+				oAnchor.parentNode.insertBefore( oImg, oAnchor ) ;
+				oAnchor.parentNode.removeChild( oAnchor ) ;
+			}
+
+		}
+	}
+
+	return true ;
+}
+
+// Checks all the links in the current page pointing to the current name and changes them to the new name
+function ReadjustLinksToAnchor( sCurrent, sNew )
+{
+	var oDoc = FCK.EditorDocument ;
+
+	var aLinks = oDoc.getElementsByTagName( 'A' ) ;
+
+	var sReference = '#' + sCurrent ;
+	// The url of the document, so we check absolute and partial references.
+	var sFullReference = oDoc.location.href.replace( /(#.*$)/, '') ;
+	sFullReference += sReference ;
+
+	var oLink ;
+	var i = aLinks.length - 1 ;
+	while ( i >= 0 && ( oLink = aLinks[i--] ) )
+	{
+		var sHRef = oLink.getAttribute( '_fcksavedurl' ) ;
+		if ( sHRef == null )
+			sHRef = oLink.getAttribute( 'href' , 2 ) || '' ;
+
+		if ( sHRef == sReference || sHRef == sFullReference )
+		{
+			oLink.href = '#' + sNew ;
+			SetAttribute( oLink, '_fcksavedurl', '#' + sNew ) ;
+		}
+	}
+}
+
+		</script>
+	</head>
+	<body style="overflow: hidden">
+		<table height="100%" width="100%">
+			<tr>
+				<td align="center">
+					<table border="0" cellpadding="0" cellspacing="0" width="80%">
+						<tr>
+							<td>
+								<span fckLang="DlgAnchorName">Anchor Name</span><BR>
+								<input id="txtName" style="WIDTH: 100%" type="text">
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_button.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_button.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_button.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,104 +1,104 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Button dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>Button Properties</title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<meta content="noindex, nofollow" name="robots" />
-	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-	<script type="text/javascript">
-
-var dialog	= window.parent ;
-var oEditor	= dialog.InnerDialogLoaded() ;
-
-// Gets the document DOM
-var oDOM = oEditor.FCK.EditorDocument ;
-
-var oActiveEl = dialog.Selection.GetSelectedElement() ;
-
-window.onload = function()
-{
-	// First of all, translate the dialog box texts
-	oEditor.FCKLanguageManager.TranslatePage(document) ;
-
-	if ( oActiveEl && oActiveEl.tagName.toUpperCase() == "INPUT" && ( oActiveEl.type == "button" || oActiveEl.type == "submit" || oActiveEl.type == "reset" ) )
-	{
-		GetE('txtName').value	= oActiveEl.name ;
-		GetE('txtValue').value	= oActiveEl.value ;
-		GetE('txtType').value	= oActiveEl.type ;
-	}
-	else
-		oActiveEl = null ;
-
-	dialog.SetOkButton( true ) ;
-	dialog.SetAutoSize( true ) ;
-	SelectField( 'txtName' ) ;
-}
-
-function Ok()
-{
-	oEditor.FCKUndo.SaveUndoStep() ;
-
-	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: GetE('txtType').value } ) ;
-
-	SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
-
-	return true ;
-}
-
-	</script>
-</head>
-<body style="overflow: hidden">
-	<table width="100%" style="height: 100%">
-		<tr>
-			<td align="center">
-				<table border="0" cellpadding="0" cellspacing="0" width="80%">
-					<tr>
-						<td colspan="">
-							<span fcklang="DlgCheckboxName">Name</span><br />
-							<input type="text" size="20" id="txtName" style="width: 100%" />
-						</td>
-					</tr>
-					<tr>
-						<td>
-							<span fcklang="DlgButtonText">Text (Value)</span><br />
-							<input type="text" id="txtValue" style="width: 100%" />
-						</td>
-					</tr>
-					<tr>
-						<td>
-							<span fcklang="DlgButtonType">Type</span><br />
-							<select id="txtType">
-								<option fcklang="DlgButtonTypeBtn" value="button" selected="selected">Button</option>
-								<option fcklang="DlgButtonTypeSbm" value="submit">Submit</option>
-								<option fcklang="DlgButtonTypeRst" value="reset">Reset</option>
-							</select>
-						</td>
-					</tr>
-				</table>
-			</td>
-		</tr>
-	</table>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Button dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Button Properties</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor	= dialog.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oActiveEl = dialog.Selection.GetSelectedElement() ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oActiveEl && oActiveEl.tagName.toUpperCase() == "INPUT" && ( oActiveEl.type == "button" || oActiveEl.type == "submit" || oActiveEl.type == "reset" ) )
+	{
+		GetE('txtName').value	= oActiveEl.name ;
+		GetE('txtValue').value	= oActiveEl.value ;
+		GetE('txtType').value	= oActiveEl.type ;
+	}
+	else
+		oActiveEl = null ;
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
+}
+
+function Ok()
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: GetE('txtType').value } ) ;
+
+	SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
+
+	return true ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table width="100%" style="height: 100%">
+		<tr>
+			<td align="center">
+				<table border="0" cellpadding="0" cellspacing="0" width="80%">
+					<tr>
+						<td colspan="">
+							<span fcklang="DlgCheckboxName">Name</span><br />
+							<input type="text" size="20" id="txtName" style="width: 100%" />
+						</td>
+					</tr>
+					<tr>
+						<td>
+							<span fcklang="DlgButtonText">Text (Value)</span><br />
+							<input type="text" id="txtValue" style="width: 100%" />
+						</td>
+					</tr>
+					<tr>
+						<td>
+							<span fcklang="DlgButtonType">Type</span><br />
+							<select id="txtType">
+								<option fcklang="DlgButtonTypeBtn" value="button" selected="selected">Button</option>
+								<option fcklang="DlgButtonTypeSbm" value="submit">Submit</option>
+								<option fcklang="DlgButtonTypeRst" value="reset">Reset</option>
+							</select>
+						</td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_checkbox.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_checkbox.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_checkbox.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,104 +1,104 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Checkbox dialog window.
--->
-<html>
-	<head>
-		<title>Checkbox Properties</title>
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-		<meta content="noindex, nofollow" name="robots">
-		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-		<script type="text/javascript">
-
-var dialog	= window.parent ;
-var oEditor	= dialog.InnerDialogLoaded() ;
-
-// Gets the document DOM
-var oDOM = oEditor.FCK.EditorDocument ;
-
-var oActiveEl = dialog.Selection.GetSelectedElement() ;
-
-window.onload = function()
-{
-	// First of all, translate the dialog box texts
-	oEditor.FCKLanguageManager.TranslatePage(document) ;
-
-	if ( oActiveEl && oActiveEl.tagName == 'INPUT' && oActiveEl.type == 'checkbox' )
-	{
-		GetE('txtName').value		= oActiveEl.name ;
-		GetE('txtValue').value		= oEditor.FCKBrowserInfo.IsIE ? oActiveEl.value : GetAttribute( oActiveEl, 'value' ) ;
-		GetE('txtSelected').checked	= oActiveEl.checked ;
-	}
-	else
-		oActiveEl = null ;
-
-	dialog.SetOkButton( true ) ;
-	dialog.SetAutoSize( true ) ;
-	SelectField( 'txtName' ) ;
-}
-
-function Ok()
-{
-	oEditor.FCKUndo.SaveUndoStep() ;
-
-	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: 'checkbox' } ) ;
-
-	if ( oEditor.FCKBrowserInfo.IsIE )
-		oActiveEl.value = GetE('txtValue').value ;
-	else
-		SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
-
-	var bIsChecked = GetE('txtSelected').checked ;
-	SetAttribute( oActiveEl, 'checked', bIsChecked ? 'checked' : null ) ;	// For Firefox
-	oActiveEl.checked = bIsChecked ;
-
-	return true ;
-}
-
-		</script>
-	</head>
-	<body style="OVERFLOW: hidden" scroll="no">
-		<table height="100%" width="100%">
-			<tr>
-				<td align="center">
-					<table border="0" cellpadding="0" cellspacing="0" width="80%">
-						<tr>
-							<td>
-								<span fckLang="DlgCheckboxName">Name</span><br>
-								<input type="text" size="20" id="txtName" style="WIDTH: 100%">
-							</td>
-						</tr>
-						<tr>
-							<td>
-								<span fckLang="DlgCheckboxValue">Value</span><br>
-								<input type="text" size="20" id="txtValue" style="WIDTH: 100%">
-							</td>
-						</tr>
-						<tr>
-							<td><input type="checkbox" id="txtSelected"><label for="txtSelected" fckLang="DlgCheckboxSelected">Checked</label></td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-		</table>
-	</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Checkbox dialog window.
+-->
+<html>
+	<head>
+		<title>Checkbox Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor	= dialog.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oActiveEl = dialog.Selection.GetSelectedElement() ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oActiveEl && oActiveEl.tagName == 'INPUT' && oActiveEl.type == 'checkbox' )
+	{
+		GetE('txtName').value		= oActiveEl.name ;
+		GetE('txtValue').value		= oEditor.FCKBrowserInfo.IsIE ? oActiveEl.value : GetAttribute( oActiveEl, 'value' ) ;
+		GetE('txtSelected').checked	= oActiveEl.checked ;
+	}
+	else
+		oActiveEl = null ;
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
+}
+
+function Ok()
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: 'checkbox' } ) ;
+
+	if ( oEditor.FCKBrowserInfo.IsIE )
+		oActiveEl.value = GetE('txtValue').value ;
+	else
+		SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
+
+	var bIsChecked = GetE('txtSelected').checked ;
+	SetAttribute( oActiveEl, 'checked', bIsChecked ? 'checked' : null ) ;	// For Firefox
+	oActiveEl.checked = bIsChecked ;
+
+	return true ;
+}
+
+		</script>
+	</head>
+	<body style="OVERFLOW: hidden" scroll="no">
+		<table height="100%" width="100%">
+			<tr>
+				<td align="center">
+					<table border="0" cellpadding="0" cellspacing="0" width="80%">
+						<tr>
+							<td>
+								<span fckLang="DlgCheckboxName">Name</span><br>
+								<input type="text" size="20" id="txtName" style="WIDTH: 100%">
+							</td>
+						</tr>
+						<tr>
+							<td>
+								<span fckLang="DlgCheckboxValue">Value</span><br>
+								<input type="text" size="20" id="txtValue" style="WIDTH: 100%">
+							</td>
+						</tr>
+						<tr>
+							<td><input type="checkbox" id="txtSelected"><label for="txtSelected" fckLang="DlgCheckboxSelected">Checked</label></td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_colorselector.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_colorselector.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_colorselector.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,172 +1,172 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Color Selection dialog window.
--->
-<html>
-	<head>
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-		<meta name="robots" content="noindex, nofollow" />
-		<style TYPE="text/css">
-			#ColorTable		{ cursor: pointer ; cursor: hand ; }
-			#hicolor		{ height: 74px ; width: 74px ; border-width: 1px ; border-style: solid ; }
-			#hicolortext	{ width: 75px ; text-align: right ; margin-bottom: 7px ; }
-			#selhicolor		{ height: 20px ; width: 74px ; border-width: 1px ; border-style: solid ; }
-			#selcolor		{ width: 75px ; height: 20px ; margin-top: 0px ; margin-bottom: 7px ; }
-			#btnClear		{ width: 75px ; height: 22px ; margin-bottom: 6px ; }
-			.ColorCell		{ height: 15px ; width: 15px ; }
-		</style>
-		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-		<script type="text/javascript">
-
-var oEditor = window.parent.InnerDialogLoaded() ;
-
-function OnLoad()
-{
-	// First of all, translate the dialog box texts
-	oEditor.FCKLanguageManager.TranslatePage(document) ;
-
-	CreateColorTable() ;
-
-	window.parent.SetOkButton( true ) ;
-	window.parent.SetAutoSize( true ) ;
-}
-
-function CreateColorTable()
-{
-	// Get the target table.
-	var oTable = document.getElementById('ColorTable') ;
-
-	// Create the base colors array.
-	var aColors = ['00','33','66','99','cc','ff'] ;
-
-	// This function combines two ranges of three values from the color array into a row.
-	function AppendColorRow( rangeA, rangeB )
-	{
-		for ( var i = rangeA ; i < rangeA + 3 ; i++ )
-		{
-			var oRow = oTable.insertRow(-1) ;
-
-			for ( var j = rangeB ; j < rangeB + 3 ; j++ )
-			{
-				for ( var n = 0 ; n < 6 ; n++ )
-				{
-					AppendColorCell( oRow, '#' + aColors[j] + aColors[n] + aColors[i] ) ;
-				}
-			}
-		}
-	}
-
-	// This function create a single color cell in the color table.
-	function AppendColorCell( targetRow, color )
-	{
-		var oCell = targetRow.insertCell(-1) ;
-		oCell.className = 'ColorCell' ;
-		oCell.bgColor = color ;
-
-		oCell.onmouseover = function()
-		{
-			document.getElementById('hicolor').style.backgroundColor = this.bgColor ;
-			document.getElementById('hicolortext').innerHTML = this.bgColor ;
-		}
-
-		oCell.onclick = function()
-		{
-			document.getElementById('selhicolor').style.backgroundColor = this.bgColor ;
-			document.getElementById('selcolor').value = this.bgColor ;
-		}
-	}
-
-	AppendColorRow( 0, 0 ) ;
-	AppendColorRow( 3, 0 ) ;
-	AppendColorRow( 0, 3 ) ;
-	AppendColorRow( 3, 3 ) ;
-
-	// Create the last row.
-	var oRow = oTable.insertRow(-1) ;
-
-	// Create the gray scale colors cells.
-	for ( var n = 0 ; n < 6 ; n++ )
-	{
-		AppendColorCell( oRow, '#' + aColors[n] + aColors[n] + aColors[n] ) ;
-	}
-
-	// Fill the row with black cells.
-	for ( var i = 0 ; i < 12 ; i++ )
-	{
-		AppendColorCell( oRow, '#000000' ) ;
-	}
-}
-
-function Clear()
-{
-	document.getElementById('selhicolor').style.backgroundColor = '' ;
-	document.getElementById('selcolor').value = '' ;
-}
-
-function ClearActual()
-{
-	document.getElementById('hicolor').style.backgroundColor = '' ;
-	document.getElementById('hicolortext').innerHTML = '&nbsp;' ;
-}
-
-function UpdateColor()
-{
-	try		  { document.getElementById('selhicolor').style.backgroundColor = document.getElementById('selcolor').value ; }
-	catch (e) { Clear() ; }
-}
-
-function Ok()
-{
-	if ( typeof(window.parent.Args().CustomValue) == 'function' )
-		window.parent.Args().CustomValue( document.getElementById('selcolor').value ) ;
-
-	return true ;
-}
-		</script>
-	</head>
-	<body onload="OnLoad()" scroll="no" style="OVERFLOW: hidden">
-		<table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">
-			<tr>
-				<td align="center" valign="middle">
-					<table border="0" cellspacing="5" cellpadding="0" width="100%">
-						<tr>
-							<td valign="top" align="center" nowrap width="100%">
-								<table id="ColorTable" border="0" cellspacing="0" cellpadding="0" width="270" onmouseout="ClearActual();">
-								</table>
-							</td>
-							<td valign="top" align="left" nowrap>
-								<span fckLang="DlgColorHighlight">Highlight</span>
-								<div id="hicolor"></div>
-								<div id="hicolortext">&nbsp;</div>
-								<span fckLang="DlgColorSelected">Selected</span>
-								<div id="selhicolor"></div>
-								<input id="selcolor" type="text" maxlength="20" onchange="UpdateColor();">
-								<br>
-								<input id="btnClear" type="button" fckLang="DlgColorBtnClear" value="Clear" onclick="Clear();" />
-							</td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-		</table>
-	</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Color Selection dialog window.
+-->
+<html>
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+		<meta name="robots" content="noindex, nofollow" />
+		<style TYPE="text/css">
+			#ColorTable		{ cursor: pointer ; cursor: hand ; }
+			#hicolor		{ height: 74px ; width: 74px ; border-width: 1px ; border-style: solid ; }
+			#hicolortext	{ width: 75px ; text-align: right ; margin-bottom: 7px ; }
+			#selhicolor		{ height: 20px ; width: 74px ; border-width: 1px ; border-style: solid ; }
+			#selcolor		{ width: 75px ; height: 20px ; margin-top: 0px ; margin-bottom: 7px ; }
+			#btnClear		{ width: 75px ; height: 22px ; margin-bottom: 6px ; }
+			.ColorCell		{ height: 15px ; width: 15px ; }
+		</style>
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+function OnLoad()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	CreateColorTable() ;
+
+	window.parent.SetOkButton( true ) ;
+	window.parent.SetAutoSize( true ) ;
+}
+
+function CreateColorTable()
+{
+	// Get the target table.
+	var oTable = document.getElementById('ColorTable') ;
+
+	// Create the base colors array.
+	var aColors = ['00','33','66','99','cc','ff'] ;
+
+	// This function combines two ranges of three values from the color array into a row.
+	function AppendColorRow( rangeA, rangeB )
+	{
+		for ( var i = rangeA ; i < rangeA + 3 ; i++ )
+		{
+			var oRow = oTable.insertRow(-1) ;
+
+			for ( var j = rangeB ; j < rangeB + 3 ; j++ )
+			{
+				for ( var n = 0 ; n < 6 ; n++ )
+				{
+					AppendColorCell( oRow, '#' + aColors[j] + aColors[n] + aColors[i] ) ;
+				}
+			}
+		}
+	}
+
+	// This function create a single color cell in the color table.
+	function AppendColorCell( targetRow, color )
+	{
+		var oCell = targetRow.insertCell(-1) ;
+		oCell.className = 'ColorCell' ;
+		oCell.bgColor = color ;
+
+		oCell.onmouseover = function()
+		{
+			document.getElementById('hicolor').style.backgroundColor = this.bgColor ;
+			document.getElementById('hicolortext').innerHTML = this.bgColor ;
+		}
+
+		oCell.onclick = function()
+		{
+			document.getElementById('selhicolor').style.backgroundColor = this.bgColor ;
+			document.getElementById('selcolor').value = this.bgColor ;
+		}
+	}
+
+	AppendColorRow( 0, 0 ) ;
+	AppendColorRow( 3, 0 ) ;
+	AppendColorRow( 0, 3 ) ;
+	AppendColorRow( 3, 3 ) ;
+
+	// Create the last row.
+	var oRow = oTable.insertRow(-1) ;
+
+	// Create the gray scale colors cells.
+	for ( var n = 0 ; n < 6 ; n++ )
+	{
+		AppendColorCell( oRow, '#' + aColors[n] + aColors[n] + aColors[n] ) ;
+	}
+
+	// Fill the row with black cells.
+	for ( var i = 0 ; i < 12 ; i++ )
+	{
+		AppendColorCell( oRow, '#000000' ) ;
+	}
+}
+
+function Clear()
+{
+	document.getElementById('selhicolor').style.backgroundColor = '' ;
+	document.getElementById('selcolor').value = '' ;
+}
+
+function ClearActual()
+{
+	document.getElementById('hicolor').style.backgroundColor = '' ;
+	document.getElementById('hicolortext').innerHTML = '&nbsp;' ;
+}
+
+function UpdateColor()
+{
+	try		  { document.getElementById('selhicolor').style.backgroundColor = document.getElementById('selcolor').value ; }
+	catch (e) { Clear() ; }
+}
+
+function Ok()
+{
+	if ( typeof(window.parent.Args().CustomValue) == 'function' )
+		window.parent.Args().CustomValue( document.getElementById('selcolor').value ) ;
+
+	return true ;
+}
+		</script>
+	</head>
+	<body onload="OnLoad()" scroll="no" style="OVERFLOW: hidden">
+		<table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">
+			<tr>
+				<td align="center" valign="middle">
+					<table border="0" cellspacing="5" cellpadding="0" width="100%">
+						<tr>
+							<td valign="top" align="center" nowrap width="100%">
+								<table id="ColorTable" border="0" cellspacing="0" cellpadding="0" width="270" onmouseout="ClearActual();">
+								</table>
+							</td>
+							<td valign="top" align="left" nowrap>
+								<span fckLang="DlgColorHighlight">Highlight</span>
+								<div id="hicolor"></div>
+								<div id="hicolortext">&nbsp;</div>
+								<span fckLang="DlgColorSelected">Selected</span>
+								<div id="selhicolor"></div>
+								<input id="selcolor" type="text" maxlength="20" onchange="UpdateColor();">
+								<br>
+								<input id="btnClear" type="button" fckLang="DlgColorBtnClear" value="Clear" onclick="Clear();" />
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_docprops/fck_document_preview.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_docprops/fck_document_preview.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_docprops/fck_document_preview.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,113 +1,113 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Preview shown in the "Document Properties" dialog window.
--->
-<html>
-	<head>
-		<title>Document Properties - Preview</title>
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-		<meta name="robots" content="noindex, nofollow">
-		<script language="javascript">
-
-var eBase = parent.FCK.EditorDocument.getElementsByTagName( 'BASE' ) ;
-if ( eBase.length > 0 && eBase[0].href.length > 0 )
-{
-	document.write( '<base href="' + eBase[0].href + '">' ) ;
-}
-
-window.onload = function()
-{
-	if ( typeof( parent.OnPreviewLoad ) == 'function' )
-		parent.OnPreviewLoad( window, document.body ) ;
-}
-
-function SetBaseHRef( baseHref )
-{
-	var eBase = document.createElement( 'BASE' ) ;
-	eBase.href = baseHref ;
-
-	var eHead = document.getElementsByTagName( 'HEAD' )[0] ;
-	eHead.appendChild( eBase ) ;
-}
-
-function SetLinkColor( color )
-{
-	if ( color && color.length > 0 )
-		document.getElementById('eLink').style.color = color ;
-	else
-		document.getElementById('eLink').style.color = window.document.linkColor ;
-}
-
-function SetVisitedColor( color )
-{
-	if ( color && color.length > 0 )
-		document.getElementById('eVisited').style.color = color ;
-	else
-		document.getElementById('eVisited').style.color = window.document.vlinkColor ;
-}
-
-function SetActiveColor( color )
-{
-	if ( color && color.length > 0 )
-		document.getElementById('eActive').style.color = color ;
-	else
-		document.getElementById('eActive').style.color = window.document.alinkColor ;
-}
-		</script>
-	</head>
-	<body>
-		<table width="100%" height="100%" cellpadding="0" cellspacing="0" border="0">
-			<tr>
-				<td align="center" valign="middle">
-					Normal Text
-				</td>
-				<td id="eLink" align="center" valign="middle">
-					<u>Link Text</u>
-				</td>
-			</tr>
-			<tr>
-				<td id="eVisited" valign="middle" align="center">
-					<u>Visited Link</u>
-				</td>
-				<td id="eActive" valign="middle" align="center">
-					<u>Active Link</u>
-				</td>
-			</tr>
-		</table>
-		<br>
-		<br>
-		<br>
-		<br>
-		<br>
-		<br>
-		<br>
-		<br>
-		<br>
-		<br>
-		<br>
-		<br>
-		<br>
-		<br>
-		<br>
-		<br>
-	</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Preview shown in the "Document Properties" dialog window.
+-->
+<html>
+	<head>
+		<title>Document Properties - Preview</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<script language="javascript">
+
+var eBase = parent.FCK.EditorDocument.getElementsByTagName( 'BASE' ) ;
+if ( eBase.length > 0 && eBase[0].href.length > 0 )
+{
+	document.write( '<base href="' + eBase[0].href + '">' ) ;
+}
+
+window.onload = function()
+{
+	if ( typeof( parent.OnPreviewLoad ) == 'function' )
+		parent.OnPreviewLoad( window, document.body ) ;
+}
+
+function SetBaseHRef( baseHref )
+{
+	var eBase = document.createElement( 'BASE' ) ;
+	eBase.href = baseHref ;
+
+	var eHead = document.getElementsByTagName( 'HEAD' )[0] ;
+	eHead.appendChild( eBase ) ;
+}
+
+function SetLinkColor( color )
+{
+	if ( color && color.length > 0 )
+		document.getElementById('eLink').style.color = color ;
+	else
+		document.getElementById('eLink').style.color = window.document.linkColor ;
+}
+
+function SetVisitedColor( color )
+{
+	if ( color && color.length > 0 )
+		document.getElementById('eVisited').style.color = color ;
+	else
+		document.getElementById('eVisited').style.color = window.document.vlinkColor ;
+}
+
+function SetActiveColor( color )
+{
+	if ( color && color.length > 0 )
+		document.getElementById('eActive').style.color = color ;
+	else
+		document.getElementById('eActive').style.color = window.document.alinkColor ;
+}
+		</script>
+	</head>
+	<body>
+		<table width="100%" height="100%" cellpadding="0" cellspacing="0" border="0">
+			<tr>
+				<td align="center" valign="middle">
+					Normal Text
+				</td>
+				<td id="eLink" align="center" valign="middle">
+					<u>Link Text</u>
+				</td>
+			</tr>
+			<tr>
+				<td id="eVisited" valign="middle" align="center">
+					<u>Visited Link</u>
+				</td>
+				<td id="eActive" valign="middle" align="center">
+					<u>Active Link</u>
+				</td>
+			</tr>
+		</table>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+	</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_docprops.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_docprops.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_docprops.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,600 +1,600 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Link dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title></title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<meta content="noindex, nofollow" name="robots" />
-	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-	<script type="text/javascript">
-
-var oEditor		= window.parent.InnerDialogLoaded() ;
-var FCK			= oEditor.FCK ;
-var FCKLang		= oEditor.FCKLang ;
-var FCKConfig	= oEditor.FCKConfig ;
-
-//#### Dialog Tabs
-
-// Set the dialog tabs.
-window.parent.AddTab( 'General'		, FCKLang.DlgDocGeneralTab ) ;
-window.parent.AddTab( 'Background'	, FCKLang.DlgDocBackTab ) ;
-window.parent.AddTab( 'Colors'		, FCKLang.DlgDocColorsTab ) ;
-window.parent.AddTab( 'Meta'		, FCKLang.DlgDocMetaTab ) ;
-
-// Function called when a dialog tag is selected.
-function OnDialogTabChange( tabCode )
-{
-	ShowE( 'divGeneral'		, ( tabCode == 'General' ) ) ;
-	ShowE( 'divBackground'	, ( tabCode == 'Background' ) ) ;
-	ShowE( 'divColors'		, ( tabCode == 'Colors' ) ) ;
-	ShowE( 'divMeta'		, ( tabCode == 'Meta' ) ) ;
-
-	ShowE( 'ePreview'		, ( tabCode == 'Background' || tabCode == 'Colors' ) ) ;
-}
-
-//#### Get Base elements from the document: BEGIN
-
-// The HTML element of the document.
-var oHTML = FCK.EditorDocument.getElementsByTagName('html')[0] ;
-
-// The HEAD element of the document.
-var oHead = oHTML.getElementsByTagName('head')[0] ;
-
-var oBody = FCK.EditorDocument.body ;
-
-// This object contains all META tags defined in the document.
-var oMetaTags = new Object() ;
-
-// Get all META tags defined in the document.
-AppendMetaCollection( oMetaTags, oHead.getElementsByTagName('meta') ) ;
-AppendMetaCollection( oMetaTags, oHead.getElementsByTagName('fck:meta') ) ;
-
-function AppendMetaCollection( targetObject, metaCollection )
-{
-	// Loop throw all METAs and put it in the HashTable.
-	for ( var i = 0 ; i < metaCollection.length ; i++ )
-	{
-		// Try to get the "name" attribute.
-		var sName = GetAttribute( metaCollection[i], 'name', GetAttribute( metaCollection[i], '___fcktoreplace:name', '' ) ) ;
-
-		// If no "name", try with the "http-equiv" attribute.
-		if ( sName.length == 0 )
-		{
-			if ( oEditor.FCKBrowserInfo.IsIE )
-			{
-				// Get the http-equiv value from the outerHTML.
-				var oHttpEquivMatch = metaCollection[i].outerHTML.match( oEditor.FCKRegexLib.MetaHttpEquiv ) ;
-				if ( oHttpEquivMatch )
-					sName = oHttpEquivMatch[1] ;
-			}
-			else
-				sName = GetAttribute( metaCollection[i], 'http-equiv', '' ) ;
-		}
-
-		if ( sName.length > 0 )
-			targetObject[ sName.toLowerCase() ] = metaCollection[i] ;
-	}
-}
-
-//#### END
-
-// Set a META tag in the document.
-function SetMetadata( name, content, isHttp )
-{
-	if ( content.length == 0 )
-	{
-		RemoveMetadata( name ) ;
-		return ;
-	}
-
-	var oMeta = oMetaTags[ name.toLowerCase() ] ;
-
-	if ( !oMeta )
-	{
-		oMeta = oHead.appendChild( FCK.EditorDocument.createElement('META') ) ;
-
-		if ( isHttp )
-			SetAttribute( oMeta, 'http-equiv', name ) ;
-		else
-		{
-			// On IE, it is not possible to set the "name" attribute of the META tag.
-			// So a temporary attribute is used and it is replaced when getting the
-			// editor's HTML/XHTML value. This is sad, I know :(
-			if ( oEditor.FCKBrowserInfo.IsIE )
-				SetAttribute( oMeta, '___fcktoreplace:name', name ) ;
-			else
-				SetAttribute( oMeta, 'name', name ) ;
-		}
-
-		oMetaTags[ name.toLowerCase() ] = oMeta ;
-	}
-
-	SetAttribute( oMeta, 'content', content ) ;
-//	oMeta.content = content ;
-}
-
-function RemoveMetadata( name )
-{
-	var oMeta = oMetaTags[ name.toLowerCase() ] ;
-
-	if ( oMeta && oMeta != null )
-	{
-		oMeta.parentNode.removeChild( oMeta ) ;
-		oMetaTags[ name.toLowerCase() ] = null ;
-	}
-}
-
-function GetMetadata( name )
-{
-	var oMeta = oMetaTags[ name.toLowerCase() ] ;
-
-	if ( oMeta && oMeta != null )
-		return oMeta.getAttribute( 'content', 2 ) ;
-	else
-		return '' ;
-}
-
-window.onload = function ()
-{
-	// Show/Hide the "Browse Server" button.
-	GetE('tdBrowse').style.display = oEditor.FCKConfig.ImageBrowser ? "" : "none";
-
-	// First of all, translate the dialog box texts
-	oEditor.FCKLanguageManager.TranslatePage( document ) ;
-
-	FillFields() ;
-
-	UpdatePreview() ;
-
-	// Show the "Ok" button.
-	window.parent.SetOkButton( true ) ;
-
-	window.parent.SetAutoSize( true ) ;
-}
-
-function FillFields()
-{
-	// ### General Info
-	GetE('txtPageTitle').value = FCK.EditorDocument.title ;
-
-	GetE('selDirection').value	= GetAttribute( oHTML, 'dir', '' ) ;
-	GetE('txtLang').value		= GetAttribute( oHTML, 'xml:lang', GetAttribute( oHTML, 'lang', '' ) ) ;	// "xml:lang" takes precedence to "lang".
-
-	// Character Set Encoding.
-//	if ( oEditor.FCKBrowserInfo.IsIE )
-//		var sCharSet = FCK.EditorDocument.charset ;
-//	else
-		var sCharSet = GetMetadata( 'Content-Type' ) ;
-
-	if ( sCharSet != null && sCharSet.length > 0 )
-	{
-//		if ( !oEditor.FCKBrowserInfo.IsIE )
-			sCharSet = sCharSet.match( /[^=]*$/ ) ;
-
-		GetE('selCharSet').value = sCharSet ;
-
-		if ( GetE('selCharSet').selectedIndex == -1 )
-		{
-			GetE('selCharSet').value = '...' ;
-			GetE('txtCustomCharSet').value = sCharSet ;
-
-			CheckOther( GetE('selCharSet'), 'txtCustomCharSet' ) ;
-		}
-	}
-
-	// Document Type.
-	if ( FCK.DocTypeDeclaration && FCK.DocTypeDeclaration.length > 0 )
-	{
-		GetE('selDocType').value = FCK.DocTypeDeclaration ;
-
-		if ( GetE('selDocType').selectedIndex == -1 )
-		{
-			GetE('selDocType').value = '...' ;
-			GetE('txtDocType').value = FCK.DocTypeDeclaration ;
-
-			CheckOther( GetE('selDocType'), 'txtDocType' ) ;
-		}
-	}
-
-	// Document Type.
-	GetE('chkIncXHTMLDecl').checked = ( FCK.XmlDeclaration && FCK.XmlDeclaration.length > 0 ) ;
-
-	// ### Background
-	GetE('txtBackColor').value = GetAttribute( oBody, 'bgColor'		, '' ) ;
-	GetE('txtBackImage').value = GetAttribute( oBody, 'background'	, '' ) ;
-	GetE('chkBackNoScroll').checked = ( GetAttribute( oBody, 'bgProperties', '' ).toLowerCase() == 'fixed' ) ;
-
-	// ### Colors
-	GetE('txtColorText').value		= GetAttribute( oBody, 'text'	, '' ) ;
-	GetE('txtColorLink').value		= GetAttribute( oBody, 'link'	, '' ) ;
-	GetE('txtColorVisited').value	= GetAttribute( oBody, 'vLink'	, '' ) ;
-	GetE('txtColorActive').value	= GetAttribute( oBody, 'aLink'	, '' ) ;
-
-	// ### Margins
-	GetE('txtMarginTop').value		= GetAttribute( oBody, 'topMargin'		, '' ) ;
-	GetE('txtMarginLeft').value		= GetAttribute( oBody, 'leftMargin'		, '' ) ;
-	GetE('txtMarginRight').value	= GetAttribute( oBody, 'rightMargin'	, '' ) ;
-	GetE('txtMarginBottom').value	= GetAttribute( oBody, 'bottomMargin'	, '' ) ;
-
-	// ### Meta Data
-	GetE('txtMetaKeywords').value		= GetMetadata( 'keywords' ) ;
-	GetE('txtMetaDescription').value	= GetMetadata( 'description' ) ;
-	GetE('txtMetaAuthor').value			= GetMetadata( 'author' ) ;
-	GetE('txtMetaCopyright').value		= GetMetadata( 'copyright' ) ;
-}
-
-// Called when the "Ok" button is clicked.
-function Ok()
-{
-	// ### General Info
-	FCK.EditorDocument.title = GetE('txtPageTitle').value ;
-
-	var oHTML = FCK.EditorDocument.getElementsByTagName('html')[0] ;
-
-	SetAttribute( oHTML, 'dir'		, GetE('selDirection').value ) ;
-	SetAttribute( oHTML, 'lang'		, GetE('txtLang').value ) ;
-	SetAttribute( oHTML, 'xml:lang'	, GetE('txtLang').value ) ;
-
-	// Character Set Enconding.
-	var sCharSet = GetE('selCharSet').value ;
-	if ( sCharSet == '...' )
-		sCharSet = GetE('txtCustomCharSet').value ;
-
-	if ( sCharSet.length > 0 )
-			sCharSet = 'text/html; charset=' + sCharSet ;
-
-//	if ( oEditor.FCKBrowserInfo.IsIE )
-//		FCK.EditorDocument.charset = sCharSet ;
-//	else
-		SetMetadata( 'Content-Type', sCharSet, true ) ;
-
-	// Document Type
-	var sDocType = GetE('selDocType').value ;
-	if ( sDocType == '...' )
-		sDocType = GetE('txtDocType').value ;
-
-	FCK.DocTypeDeclaration = sDocType ;
-
-	// XHTML Declarations.
-	if ( GetE('chkIncXHTMLDecl').checked )
-	{
-		if ( sCharSet.length == 0 )
-			sCharSet = 'utf-8' ;
-
-		FCK.XmlDeclaration = '<' + '?xml version="1.0" encoding="' + sCharSet + '"?>' ;
-
-		SetAttribute( oHTML, 'xmlns', 'http://www.w3.org/1999/xhtml' ) ;
-	}
-	else
-	{
-		FCK.XmlDeclaration = null ;
-		oHTML.removeAttribute( 'xmlns', 0 ) ;
-	}
-
-	// ### Background
-	SetAttribute( oBody, 'bgcolor'		, GetE('txtBackColor').value ) ;
-	SetAttribute( oBody, 'background'	, GetE('txtBackImage').value ) ;
-	SetAttribute( oBody, 'bgproperties'	, GetE('chkBackNoScroll').checked ? 'fixed' : '' ) ;
-
-	// ### Colors
-	SetAttribute( oBody, 'text'	, GetE('txtColorText').value ) ;
-	SetAttribute( oBody, 'link'	, GetE('txtColorLink').value ) ;
-	SetAttribute( oBody, 'vlink', GetE('txtColorVisited').value ) ;
-	SetAttribute( oBody, 'alink', GetE('txtColorActive').value ) ;
-
-	// ### Margins
-	SetAttribute( oBody, 'topmargin'	, GetE('txtMarginTop').value ) ;
-	SetAttribute( oBody, 'leftmargin'	, GetE('txtMarginLeft').value ) ;
-	SetAttribute( oBody, 'rightmargin'	, GetE('txtMarginRight').value ) ;
-	SetAttribute( oBody, 'bottommargin'	, GetE('txtMarginBottom').value ) ;
-
-	// ### Meta data
-	SetMetadata( 'keywords'		, GetE('txtMetaKeywords').value ) ;
-	SetMetadata( 'description'	, GetE('txtMetaDescription').value ) ;
-	SetMetadata( 'author'		, GetE('txtMetaAuthor').value ) ;
-	SetMetadata( 'copyright'	, GetE('txtMetaCopyright').value ) ;
-
-	return true ;
-}
-
-var bPreviewIsLoaded = false ;
-var oPreviewWindow ;
-var oPreviewBody ;
-
-// Called by the Preview page when loaded.
-function OnPreviewLoad( previewWindow, previewBody )
-{
-	oPreviewWindow	= previewWindow ;
-	oPreviewBody	= previewBody ;
-
-	bPreviewIsLoaded = true ;
-	UpdatePreview() ;
-}
-
-function UpdatePreview()
-{
-	if ( !bPreviewIsLoaded )
-		return ;
-
-	// ### Background
-	SetAttribute( oPreviewBody, 'bgcolor'		, GetE('txtBackColor').value ) ;
-	SetAttribute( oPreviewBody, 'background'	, GetE('txtBackImage').value ) ;
-	SetAttribute( oPreviewBody, 'bgproperties'	, GetE('chkBackNoScroll').checked ? 'fixed' : '' ) ;
-
-	// ### Colors
-	SetAttribute( oPreviewBody, 'text', GetE('txtColorText').value ) ;
-
-	oPreviewWindow.SetLinkColor( GetE('txtColorLink').value ) ;
-	oPreviewWindow.SetVisitedColor( GetE('txtColorVisited').value ) ;
-	oPreviewWindow.SetActiveColor( GetE('txtColorActive').value ) ;
-}
-
-function CheckOther( combo, txtField )
-{
-	var bNotOther = ( combo.value != '...' ) ;
-
-	GetE(txtField).style.backgroundColor = ( bNotOther ? '#cccccc' : '' ) ;
-	GetE(txtField).disabled = bNotOther ;
-}
-
-function SetColor( inputId, color )
-{
-	GetE( inputId ).value = color + '' ;
-	UpdatePreview() ;
-}
-
-function SelectBackColor( color )		{ SetColor('txtBackColor', color ) ; }
-function SelectColorText( color )		{ SetColor('txtColorText', color ) ; }
-function SelectColorLink( color )		{ SetColor('txtColorLink', color ) ; }
-function SelectColorVisited( color )	{ SetColor('txtColorVisited', color ) ; }
-function SelectColorActive( color )		{ SetColor('txtColorActive', color ) ; }
-
-function SelectColor( wich )
-{
-	switch ( wich )
-	{
-		case 'Back'			: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectBackColor, window ) ; return ;
-		case 'ColorText'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorText, window ) ; return ;
-		case 'ColorLink'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorLink, window ) ; return ;
-		case 'ColorVisited'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorVisited, window ) ; return ;
-		case 'ColorActive'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorActive, window ) ; return ;
-	}
-}
-
-function BrowseServerBack()
-{
-	OpenFileBrowser( FCKConfig.ImageBrowserURL, FCKConfig.ImageBrowserWindowWidth, FCKConfig.ImageBrowserWindowHeight ) ;
-}
-
-function SetUrl( url )
-{
-	GetE('txtBackImage').value = url ;
-	UpdatePreview() ;
-}
-
-	</script>
-</head>
-<body style="overflow: hidden">
-	<table cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 100%">
-		<tr>
-			<td valign="top" style="height: 100%">
-				<div id="divGeneral">
-					<span fcklang="DlgDocPageTitle">Page Title</span><br />
-					<input id="txtPageTitle" style="width: 100%" type="text" />
-					<br />
-					<table cellspacing="0" cellpadding="0" border="0">
-						<tr>
-							<td>
-								<span fcklang="DlgDocLangDir">Language Direction</span><br />
-								<select id="selDirection">
-									<option value="" selected="selected"></option>
-									<option value="ltr" fcklang="DlgDocLangDirLTR">Left to Right (LTR)</option>
-									<option value="rtl" fcklang="DlgDocLangDirRTL">Right to Left (RTL)</option>
-								</select>
-							</td>
-							<td>
-								&nbsp;&nbsp;&nbsp;</td>
-							<td>
-								<span fcklang="DlgDocLangCode">Language Code</span><br />
-								<input id="txtLang" type="text" />
-							</td>
-						</tr>
-					</table>
-					<br />
-					<table cellspacing="0" cellpadding="0" width="100%" border="0">
-						<tr>
-							<td style="white-space: nowrap">
-								<span fcklang="DlgDocCharSet">Character Set Encoding</span><br />
-								<select id="selCharSet" onchange="CheckOther( this, 'txtCustomCharSet' );">
-									<option value="" selected="selected"></option>
-									<option value="us-ascii">ASCII</option>
-									<option fcklang="DlgDocCharSetCE" value="iso-8859-2">Central European</option>
-									<option fcklang="DlgDocCharSetCT" value="big5">Chinese Traditional (Big5)</option>
-									<option fcklang="DlgDocCharSetCR" value="iso-8859-5">Cyrillic</option>
-									<option fcklang="DlgDocCharSetGR" value="iso-8859-7">Greek</option>
-									<option fcklang="DlgDocCharSetJP" value="iso-2022-jp">Japanese</option>
-									<option fcklang="DlgDocCharSetKR" value="iso-2022-kr">Korean</option>
-									<option fcklang="DlgDocCharSetTR" value="iso-8859-9">Turkish</option>
-									<option fcklang="DlgDocCharSetUN" value="utf-8">Unicode (UTF-8)</option>
-									<option fcklang="DlgDocCharSetWE" value="iso-8859-1">Western European</option>
-									<option fcklang="DlgOpOther" value="...">&lt;Other&gt;</option>
-								</select>
-							</td>
-							<td>
-								&nbsp;&nbsp;&nbsp;</td>
-							<td width="100%">
-								<span fcklang="DlgDocCharSetOther">Other Character Set Encoding</span><br />
-								<input id="txtCustomCharSet" style="width: 100%; background-color: #cccccc" disabled="disabled"
-									type="text" />
-							</td>
-						</tr>
-						<tr>
-							<td colspan="3">
-								&nbsp;</td>
-						</tr>
-						<tr>
-							<td nowrap="nowrap">
-								<span fcklang="DlgDocDocType">Document Type Heading</span><br />
-								<select id="selDocType" name="selDocType" onchange="CheckOther( this, 'txtDocType' );">
-									<option value="" selected="selected"></option>
-									<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'>HTML
-										4.01 Transitional</option>
-									<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">'>
-										HTML 4.01 Strict</option>
-									<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">'>
-										HTML 4.01 Frameset</option>
-									<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'>
-										XHTML 1.0 Transitional</option>
-									<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'>
-										XHTML 1.0 Strict</option>
-									<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">'>
-										XHTML 1.0 Frameset</option>
-									<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'>
-										XHTML 1.1</option>
-									<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">'>HTML 3.2</option>
-									<option value='<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">'>HTML 2.0</option>
-									<option value="..." fcklang="DlgOpOther">&lt;Other&gt;</option>
-								</select>
-							</td>
-							<td>
-							</td>
-							<td width="100%">
-								<span fcklang="DlgDocDocTypeOther">Other Document Type Heading</span><br />
-								<input id="txtDocType" style="width: 100%; background-color: #cccccc" disabled="disabled"
-									type="text" />
-							</td>
-						</tr>
-					</table>
-					<br />
-					<input id="chkIncXHTMLDecl" type="checkbox" />
-					<label for="chkIncXHTMLDecl" fcklang="DlgDocIncXHTML">
-						Include XHTML Declarations</label>
-				</div>
-				<div id="divBackground" style="display: none">
-					<span fcklang="DlgDocBgColor">Background Color</span><br />
-					<input id="txtBackColor" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" />&nbsp;<input
-						id="btnSelBackColor" onclick="SelectColor( 'Back' )" type="button" value="Select..."
-						fcklang="DlgCellBtnSelect" /><br />
-					<br />
-					<span fcklang="DlgDocBgImage">Background Image URL</span><br />
-					<table cellspacing="0" cellpadding="0" width="100%" border="0">
-						<tr>
-							<td width="100%">
-								<input id="txtBackImage" style="width: 100%" type="text" onchange="UpdatePreview();"
-									onkeyup="UpdatePreview();" /></td>
-							<td id="tdBrowse" nowrap="nowrap">
-								&nbsp;<input id="btnBrowse" onclick="BrowseServerBack();" type="button" fcklang="DlgBtnBrowseServer"
-									value="Browse Server" /></td>
-						</tr>
-					</table>
-					<input id="chkBackNoScroll" type="checkbox" onclick="UpdatePreview();" />
-					<label for="chkBackNoScroll" fcklang="DlgDocBgNoScroll">
-						Nonscrolling Background</label>
-				</div>
-				<div id="divColors" style="display: none">
-					<table cellspacing="0" cellpadding="0" width="100%" border="0">
-						<tr>
-							<td>
-								<span fcklang="DlgDocCText">Text</span><br />
-								<input id="txtColorText" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
-									onclick="SelectColor( 'ColorText' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
-								<br />
-								<span fcklang="DlgDocCLink">Link</span><br />
-								<input id="txtColorLink" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
-									onclick="SelectColor( 'ColorLink' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
-								<br />
-								<span fcklang="DlgDocCVisited">Visited Link</span><br />
-								<input id="txtColorVisited" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
-									onclick="SelectColor( 'ColorVisited' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
-								<br />
-								<span fcklang="DlgDocCActive">Active Link</span><br />
-								<input id="txtColorActive" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
-									onclick="SelectColor( 'ColorActive' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
-							</td>
-							<td valign="middle" align="center">
-								<table cellspacing="2" cellpadding="0" border="0">
-									<tr>
-										<td>
-											<span fcklang="DlgDocMargins">Page Margins</span></td>
-									</tr>
-									<tr>
-										<td style="border: #000000 1px solid; padding: 5px">
-											<table cellpadding="0" cellspacing="0" border="0" dir="ltr">
-												<tr>
-													<td align="center" colspan="3">
-														<span fcklang="DlgDocMaTop">Top</span><br />
-														<input id="txtMarginTop" type="text" size="3" />
-													</td>
-												</tr>
-												<tr>
-													<td align="left">
-														<span fcklang="DlgDocMaLeft">Left</span><br />
-														<input id="txtMarginLeft" type="text" size="3" />
-													</td>
-													<td>
-														&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-													<td align="right">
-														<span fcklang="DlgDocMaRight">Right</span><br />
-														<input id="txtMarginRight" type="text" size="3" />
-													</td>
-												</tr>
-												<tr>
-													<td align="center" colspan="3">
-														<span fcklang="DlgDocMaBottom">Bottom</span><br />
-														<input id="txtMarginBottom" type="text" size="3" />
-													</td>
-												</tr>
-											</table>
-										</td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-					</table>
-				</div>
-				<div id="divMeta" style="display: none">
-					<span fcklang="DlgDocMeIndex">Document Indexing Keywords (comma separated)</span><br />
-					<textarea id="txtMetaKeywords" style="width: 100%" rows="2" cols="20"></textarea>
-					<br />
-					<span fcklang="DlgDocMeDescr">Document Description</span><br />
-					<textarea id="txtMetaDescription" style="width: 100%" rows="4" cols="20"></textarea>
-					<br />
-					<span fcklang="DlgDocMeAuthor">Author</span><br />
-					<input id="txtMetaAuthor" style="width: 100%" type="text" /><br />
-					<br />
-					<span fcklang="DlgDocMeCopy">Copyright</span><br />
-					<input id="txtMetaCopyright" type="text" style="width: 100%" />
-				</div>
-			</td>
-		</tr>
-		<tr id="ePreview" style="display: none">
-			<td>
-				<span fcklang="DlgDocPreview">Preview</span><br />
-				<iframe id="frmPreview" src="fck_docprops/fck_document_preview.html" width="100%"
-					height="100"></iframe>
-			</td>
-		</tr>
-	</table>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Link dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var oEditor		= window.parent.InnerDialogLoaded() ;
+var FCK			= oEditor.FCK ;
+var FCKLang		= oEditor.FCKLang ;
+var FCKConfig	= oEditor.FCKConfig ;
+
+//#### Dialog Tabs
+
+// Set the dialog tabs.
+window.parent.AddTab( 'General'		, FCKLang.DlgDocGeneralTab ) ;
+window.parent.AddTab( 'Background'	, FCKLang.DlgDocBackTab ) ;
+window.parent.AddTab( 'Colors'		, FCKLang.DlgDocColorsTab ) ;
+window.parent.AddTab( 'Meta'		, FCKLang.DlgDocMetaTab ) ;
+
+// Function called when a dialog tag is selected.
+function OnDialogTabChange( tabCode )
+{
+	ShowE( 'divGeneral'		, ( tabCode == 'General' ) ) ;
+	ShowE( 'divBackground'	, ( tabCode == 'Background' ) ) ;
+	ShowE( 'divColors'		, ( tabCode == 'Colors' ) ) ;
+	ShowE( 'divMeta'		, ( tabCode == 'Meta' ) ) ;
+
+	ShowE( 'ePreview'		, ( tabCode == 'Background' || tabCode == 'Colors' ) ) ;
+}
+
+//#### Get Base elements from the document: BEGIN
+
+// The HTML element of the document.
+var oHTML = FCK.EditorDocument.getElementsByTagName('html')[0] ;
+
+// The HEAD element of the document.
+var oHead = oHTML.getElementsByTagName('head')[0] ;
+
+var oBody = FCK.EditorDocument.body ;
+
+// This object contains all META tags defined in the document.
+var oMetaTags = new Object() ;
+
+// Get all META tags defined in the document.
+AppendMetaCollection( oMetaTags, oHead.getElementsByTagName('meta') ) ;
+AppendMetaCollection( oMetaTags, oHead.getElementsByTagName('fck:meta') ) ;
+
+function AppendMetaCollection( targetObject, metaCollection )
+{
+	// Loop throw all METAs and put it in the HashTable.
+	for ( var i = 0 ; i < metaCollection.length ; i++ )
+	{
+		// Try to get the "name" attribute.
+		var sName = GetAttribute( metaCollection[i], 'name', GetAttribute( metaCollection[i], '___fcktoreplace:name', '' ) ) ;
+
+		// If no "name", try with the "http-equiv" attribute.
+		if ( sName.length == 0 )
+		{
+			if ( oEditor.FCKBrowserInfo.IsIE )
+			{
+				// Get the http-equiv value from the outerHTML.
+				var oHttpEquivMatch = metaCollection[i].outerHTML.match( oEditor.FCKRegexLib.MetaHttpEquiv ) ;
+				if ( oHttpEquivMatch )
+					sName = oHttpEquivMatch[1] ;
+			}
+			else
+				sName = GetAttribute( metaCollection[i], 'http-equiv', '' ) ;
+		}
+
+		if ( sName.length > 0 )
+			targetObject[ sName.toLowerCase() ] = metaCollection[i] ;
+	}
+}
+
+//#### END
+
+// Set a META tag in the document.
+function SetMetadata( name, content, isHttp )
+{
+	if ( content.length == 0 )
+	{
+		RemoveMetadata( name ) ;
+		return ;
+	}
+
+	var oMeta = oMetaTags[ name.toLowerCase() ] ;
+
+	if ( !oMeta )
+	{
+		oMeta = oHead.appendChild( FCK.EditorDocument.createElement('META') ) ;
+
+		if ( isHttp )
+			SetAttribute( oMeta, 'http-equiv', name ) ;
+		else
+		{
+			// On IE, it is not possible to set the "name" attribute of the META tag.
+			// So a temporary attribute is used and it is replaced when getting the
+			// editor's HTML/XHTML value. This is sad, I know :(
+			if ( oEditor.FCKBrowserInfo.IsIE )
+				SetAttribute( oMeta, '___fcktoreplace:name', name ) ;
+			else
+				SetAttribute( oMeta, 'name', name ) ;
+		}
+
+		oMetaTags[ name.toLowerCase() ] = oMeta ;
+	}
+
+	SetAttribute( oMeta, 'content', content ) ;
+//	oMeta.content = content ;
+}
+
+function RemoveMetadata( name )
+{
+	var oMeta = oMetaTags[ name.toLowerCase() ] ;
+
+	if ( oMeta && oMeta != null )
+	{
+		oMeta.parentNode.removeChild( oMeta ) ;
+		oMetaTags[ name.toLowerCase() ] = null ;
+	}
+}
+
+function GetMetadata( name )
+{
+	var oMeta = oMetaTags[ name.toLowerCase() ] ;
+
+	if ( oMeta && oMeta != null )
+		return oMeta.getAttribute( 'content', 2 ) ;
+	else
+		return '' ;
+}
+
+window.onload = function ()
+{
+	// Show/Hide the "Browse Server" button.
+	GetE('tdBrowse').style.display = oEditor.FCKConfig.ImageBrowser ? "" : "none";
+
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage( document ) ;
+
+	FillFields() ;
+
+	UpdatePreview() ;
+
+	// Show the "Ok" button.
+	window.parent.SetOkButton( true ) ;
+
+	window.parent.SetAutoSize( true ) ;
+}
+
+function FillFields()
+{
+	// ### General Info
+	GetE('txtPageTitle').value = FCK.EditorDocument.title ;
+
+	GetE('selDirection').value	= GetAttribute( oHTML, 'dir', '' ) ;
+	GetE('txtLang').value		= GetAttribute( oHTML, 'xml:lang', GetAttribute( oHTML, 'lang', '' ) ) ;	// "xml:lang" takes precedence to "lang".
+
+	// Character Set Encoding.
+//	if ( oEditor.FCKBrowserInfo.IsIE )
+//		var sCharSet = FCK.EditorDocument.charset ;
+//	else
+		var sCharSet = GetMetadata( 'Content-Type' ) ;
+
+	if ( sCharSet != null && sCharSet.length > 0 )
+	{
+//		if ( !oEditor.FCKBrowserInfo.IsIE )
+			sCharSet = sCharSet.match( /[^=]*$/ ) ;
+
+		GetE('selCharSet').value = sCharSet ;
+
+		if ( GetE('selCharSet').selectedIndex == -1 )
+		{
+			GetE('selCharSet').value = '...' ;
+			GetE('txtCustomCharSet').value = sCharSet ;
+
+			CheckOther( GetE('selCharSet'), 'txtCustomCharSet' ) ;
+		}
+	}
+
+	// Document Type.
+	if ( FCK.DocTypeDeclaration && FCK.DocTypeDeclaration.length > 0 )
+	{
+		GetE('selDocType').value = FCK.DocTypeDeclaration ;
+
+		if ( GetE('selDocType').selectedIndex == -1 )
+		{
+			GetE('selDocType').value = '...' ;
+			GetE('txtDocType').value = FCK.DocTypeDeclaration ;
+
+			CheckOther( GetE('selDocType'), 'txtDocType' ) ;
+		}
+	}
+
+	// Document Type.
+	GetE('chkIncXHTMLDecl').checked = ( FCK.XmlDeclaration && FCK.XmlDeclaration.length > 0 ) ;
+
+	// ### Background
+	GetE('txtBackColor').value = GetAttribute( oBody, 'bgColor'		, '' ) ;
+	GetE('txtBackImage').value = GetAttribute( oBody, 'background'	, '' ) ;
+	GetE('chkBackNoScroll').checked = ( GetAttribute( oBody, 'bgProperties', '' ).toLowerCase() == 'fixed' ) ;
+
+	// ### Colors
+	GetE('txtColorText').value		= GetAttribute( oBody, 'text'	, '' ) ;
+	GetE('txtColorLink').value		= GetAttribute( oBody, 'link'	, '' ) ;
+	GetE('txtColorVisited').value	= GetAttribute( oBody, 'vLink'	, '' ) ;
+	GetE('txtColorActive').value	= GetAttribute( oBody, 'aLink'	, '' ) ;
+
+	// ### Margins
+	GetE('txtMarginTop').value		= GetAttribute( oBody, 'topMargin'		, '' ) ;
+	GetE('txtMarginLeft').value		= GetAttribute( oBody, 'leftMargin'		, '' ) ;
+	GetE('txtMarginRight').value	= GetAttribute( oBody, 'rightMargin'	, '' ) ;
+	GetE('txtMarginBottom').value	= GetAttribute( oBody, 'bottomMargin'	, '' ) ;
+
+	// ### Meta Data
+	GetE('txtMetaKeywords').value		= GetMetadata( 'keywords' ) ;
+	GetE('txtMetaDescription').value	= GetMetadata( 'description' ) ;
+	GetE('txtMetaAuthor').value			= GetMetadata( 'author' ) ;
+	GetE('txtMetaCopyright').value		= GetMetadata( 'copyright' ) ;
+}
+
+// Called when the "Ok" button is clicked.
+function Ok()
+{
+	// ### General Info
+	FCK.EditorDocument.title = GetE('txtPageTitle').value ;
+
+	var oHTML = FCK.EditorDocument.getElementsByTagName('html')[0] ;
+
+	SetAttribute( oHTML, 'dir'		, GetE('selDirection').value ) ;
+	SetAttribute( oHTML, 'lang'		, GetE('txtLang').value ) ;
+	SetAttribute( oHTML, 'xml:lang'	, GetE('txtLang').value ) ;
+
+	// Character Set Enconding.
+	var sCharSet = GetE('selCharSet').value ;
+	if ( sCharSet == '...' )
+		sCharSet = GetE('txtCustomCharSet').value ;
+
+	if ( sCharSet.length > 0 )
+			sCharSet = 'text/html; charset=' + sCharSet ;
+
+//	if ( oEditor.FCKBrowserInfo.IsIE )
+//		FCK.EditorDocument.charset = sCharSet ;
+//	else
+		SetMetadata( 'Content-Type', sCharSet, true ) ;
+
+	// Document Type
+	var sDocType = GetE('selDocType').value ;
+	if ( sDocType == '...' )
+		sDocType = GetE('txtDocType').value ;
+
+	FCK.DocTypeDeclaration = sDocType ;
+
+	// XHTML Declarations.
+	if ( GetE('chkIncXHTMLDecl').checked )
+	{
+		if ( sCharSet.length == 0 )
+			sCharSet = 'utf-8' ;
+
+		FCK.XmlDeclaration = '<' + '?xml version="1.0" encoding="' + sCharSet + '"?>' ;
+
+		SetAttribute( oHTML, 'xmlns', 'http://www.w3.org/1999/xhtml' ) ;
+	}
+	else
+	{
+		FCK.XmlDeclaration = null ;
+		oHTML.removeAttribute( 'xmlns', 0 ) ;
+	}
+
+	// ### Background
+	SetAttribute( oBody, 'bgcolor'		, GetE('txtBackColor').value ) ;
+	SetAttribute( oBody, 'background'	, GetE('txtBackImage').value ) ;
+	SetAttribute( oBody, 'bgproperties'	, GetE('chkBackNoScroll').checked ? 'fixed' : '' ) ;
+
+	// ### Colors
+	SetAttribute( oBody, 'text'	, GetE('txtColorText').value ) ;
+	SetAttribute( oBody, 'link'	, GetE('txtColorLink').value ) ;
+	SetAttribute( oBody, 'vlink', GetE('txtColorVisited').value ) ;
+	SetAttribute( oBody, 'alink', GetE('txtColorActive').value ) ;
+
+	// ### Margins
+	SetAttribute( oBody, 'topmargin'	, GetE('txtMarginTop').value ) ;
+	SetAttribute( oBody, 'leftmargin'	, GetE('txtMarginLeft').value ) ;
+	SetAttribute( oBody, 'rightmargin'	, GetE('txtMarginRight').value ) ;
+	SetAttribute( oBody, 'bottommargin'	, GetE('txtMarginBottom').value ) ;
+
+	// ### Meta data
+	SetMetadata( 'keywords'		, GetE('txtMetaKeywords').value ) ;
+	SetMetadata( 'description'	, GetE('txtMetaDescription').value ) ;
+	SetMetadata( 'author'		, GetE('txtMetaAuthor').value ) ;
+	SetMetadata( 'copyright'	, GetE('txtMetaCopyright').value ) ;
+
+	return true ;
+}
+
+var bPreviewIsLoaded = false ;
+var oPreviewWindow ;
+var oPreviewBody ;
+
+// Called by the Preview page when loaded.
+function OnPreviewLoad( previewWindow, previewBody )
+{
+	oPreviewWindow	= previewWindow ;
+	oPreviewBody	= previewBody ;
+
+	bPreviewIsLoaded = true ;
+	UpdatePreview() ;
+}
+
+function UpdatePreview()
+{
+	if ( !bPreviewIsLoaded )
+		return ;
+
+	// ### Background
+	SetAttribute( oPreviewBody, 'bgcolor'		, GetE('txtBackColor').value ) ;
+	SetAttribute( oPreviewBody, 'background'	, GetE('txtBackImage').value ) ;
+	SetAttribute( oPreviewBody, 'bgproperties'	, GetE('chkBackNoScroll').checked ? 'fixed' : '' ) ;
+
+	// ### Colors
+	SetAttribute( oPreviewBody, 'text', GetE('txtColorText').value ) ;
+
+	oPreviewWindow.SetLinkColor( GetE('txtColorLink').value ) ;
+	oPreviewWindow.SetVisitedColor( GetE('txtColorVisited').value ) ;
+	oPreviewWindow.SetActiveColor( GetE('txtColorActive').value ) ;
+}
+
+function CheckOther( combo, txtField )
+{
+	var bNotOther = ( combo.value != '...' ) ;
+
+	GetE(txtField).style.backgroundColor = ( bNotOther ? '#cccccc' : '' ) ;
+	GetE(txtField).disabled = bNotOther ;
+}
+
+function SetColor( inputId, color )
+{
+	GetE( inputId ).value = color + '' ;
+	UpdatePreview() ;
+}
+
+function SelectBackColor( color )		{ SetColor('txtBackColor', color ) ; }
+function SelectColorText( color )		{ SetColor('txtColorText', color ) ; }
+function SelectColorLink( color )		{ SetColor('txtColorLink', color ) ; }
+function SelectColorVisited( color )	{ SetColor('txtColorVisited', color ) ; }
+function SelectColorActive( color )		{ SetColor('txtColorActive', color ) ; }
+
+function SelectColor( wich )
+{
+	switch ( wich )
+	{
+		case 'Back'			: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectBackColor, window ) ; return ;
+		case 'ColorText'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorText, window ) ; return ;
+		case 'ColorLink'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorLink, window ) ; return ;
+		case 'ColorVisited'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorVisited, window ) ; return ;
+		case 'ColorActive'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorActive, window ) ; return ;
+	}
+}
+
+function BrowseServerBack()
+{
+	OpenFileBrowser( FCKConfig.ImageBrowserURL, FCKConfig.ImageBrowserWindowWidth, FCKConfig.ImageBrowserWindowHeight ) ;
+}
+
+function SetUrl( url )
+{
+	GetE('txtBackImage').value = url ;
+	UpdatePreview() ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 100%">
+		<tr>
+			<td valign="top" style="height: 100%">
+				<div id="divGeneral">
+					<span fcklang="DlgDocPageTitle">Page Title</span><br />
+					<input id="txtPageTitle" style="width: 100%" type="text" />
+					<br />
+					<table cellspacing="0" cellpadding="0" border="0">
+						<tr>
+							<td>
+								<span fcklang="DlgDocLangDir">Language Direction</span><br />
+								<select id="selDirection">
+									<option value="" selected="selected"></option>
+									<option value="ltr" fcklang="DlgDocLangDirLTR">Left to Right (LTR)</option>
+									<option value="rtl" fcklang="DlgDocLangDirRTL">Right to Left (RTL)</option>
+								</select>
+							</td>
+							<td>
+								&nbsp;&nbsp;&nbsp;</td>
+							<td>
+								<span fcklang="DlgDocLangCode">Language Code</span><br />
+								<input id="txtLang" type="text" />
+							</td>
+						</tr>
+					</table>
+					<br />
+					<table cellspacing="0" cellpadding="0" width="100%" border="0">
+						<tr>
+							<td style="white-space: nowrap">
+								<span fcklang="DlgDocCharSet">Character Set Encoding</span><br />
+								<select id="selCharSet" onchange="CheckOther( this, 'txtCustomCharSet' );">
+									<option value="" selected="selected"></option>
+									<option value="us-ascii">ASCII</option>
+									<option fcklang="DlgDocCharSetCE" value="iso-8859-2">Central European</option>
+									<option fcklang="DlgDocCharSetCT" value="big5">Chinese Traditional (Big5)</option>
+									<option fcklang="DlgDocCharSetCR" value="iso-8859-5">Cyrillic</option>
+									<option fcklang="DlgDocCharSetGR" value="iso-8859-7">Greek</option>
+									<option fcklang="DlgDocCharSetJP" value="iso-2022-jp">Japanese</option>
+									<option fcklang="DlgDocCharSetKR" value="iso-2022-kr">Korean</option>
+									<option fcklang="DlgDocCharSetTR" value="iso-8859-9">Turkish</option>
+									<option fcklang="DlgDocCharSetUN" value="utf-8">Unicode (UTF-8)</option>
+									<option fcklang="DlgDocCharSetWE" value="iso-8859-1">Western European</option>
+									<option fcklang="DlgOpOther" value="...">&lt;Other&gt;</option>
+								</select>
+							</td>
+							<td>
+								&nbsp;&nbsp;&nbsp;</td>
+							<td width="100%">
+								<span fcklang="DlgDocCharSetOther">Other Character Set Encoding</span><br />
+								<input id="txtCustomCharSet" style="width: 100%; background-color: #cccccc" disabled="disabled"
+									type="text" />
+							</td>
+						</tr>
+						<tr>
+							<td colspan="3">
+								&nbsp;</td>
+						</tr>
+						<tr>
+							<td nowrap="nowrap">
+								<span fcklang="DlgDocDocType">Document Type Heading</span><br />
+								<select id="selDocType" name="selDocType" onchange="CheckOther( this, 'txtDocType' );">
+									<option value="" selected="selected"></option>
+									<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'>HTML
+										4.01 Transitional</option>
+									<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">'>
+										HTML 4.01 Strict</option>
+									<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">'>
+										HTML 4.01 Frameset</option>
+									<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'>
+										XHTML 1.0 Transitional</option>
+									<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'>
+										XHTML 1.0 Strict</option>
+									<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">'>
+										XHTML 1.0 Frameset</option>
+									<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'>
+										XHTML 1.1</option>
+									<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">'>HTML 3.2</option>
+									<option value='<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">'>HTML 2.0</option>
+									<option value="..." fcklang="DlgOpOther">&lt;Other&gt;</option>
+								</select>
+							</td>
+							<td>
+							</td>
+							<td width="100%">
+								<span fcklang="DlgDocDocTypeOther">Other Document Type Heading</span><br />
+								<input id="txtDocType" style="width: 100%; background-color: #cccccc" disabled="disabled"
+									type="text" />
+							</td>
+						</tr>
+					</table>
+					<br />
+					<input id="chkIncXHTMLDecl" type="checkbox" />
+					<label for="chkIncXHTMLDecl" fcklang="DlgDocIncXHTML">
+						Include XHTML Declarations</label>
+				</div>
+				<div id="divBackground" style="display: none">
+					<span fcklang="DlgDocBgColor">Background Color</span><br />
+					<input id="txtBackColor" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" />&nbsp;<input
+						id="btnSelBackColor" onclick="SelectColor( 'Back' )" type="button" value="Select..."
+						fcklang="DlgCellBtnSelect" /><br />
+					<br />
+					<span fcklang="DlgDocBgImage">Background Image URL</span><br />
+					<table cellspacing="0" cellpadding="0" width="100%" border="0">
+						<tr>
+							<td width="100%">
+								<input id="txtBackImage" style="width: 100%" type="text" onchange="UpdatePreview();"
+									onkeyup="UpdatePreview();" /></td>
+							<td id="tdBrowse" nowrap="nowrap">
+								&nbsp;<input id="btnBrowse" onclick="BrowseServerBack();" type="button" fcklang="DlgBtnBrowseServer"
+									value="Browse Server" /></td>
+						</tr>
+					</table>
+					<input id="chkBackNoScroll" type="checkbox" onclick="UpdatePreview();" />
+					<label for="chkBackNoScroll" fcklang="DlgDocBgNoScroll">
+						Nonscrolling Background</label>
+				</div>
+				<div id="divColors" style="display: none">
+					<table cellspacing="0" cellpadding="0" width="100%" border="0">
+						<tr>
+							<td>
+								<span fcklang="DlgDocCText">Text</span><br />
+								<input id="txtColorText" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
+									onclick="SelectColor( 'ColorText' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
+								<br />
+								<span fcklang="DlgDocCLink">Link</span><br />
+								<input id="txtColorLink" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
+									onclick="SelectColor( 'ColorLink' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
+								<br />
+								<span fcklang="DlgDocCVisited">Visited Link</span><br />
+								<input id="txtColorVisited" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
+									onclick="SelectColor( 'ColorVisited' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
+								<br />
+								<span fcklang="DlgDocCActive">Active Link</span><br />
+								<input id="txtColorActive" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
+									onclick="SelectColor( 'ColorActive' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
+							</td>
+							<td valign="middle" align="center">
+								<table cellspacing="2" cellpadding="0" border="0">
+									<tr>
+										<td>
+											<span fcklang="DlgDocMargins">Page Margins</span></td>
+									</tr>
+									<tr>
+										<td style="border: #000000 1px solid; padding: 5px">
+											<table cellpadding="0" cellspacing="0" border="0" dir="ltr">
+												<tr>
+													<td align="center" colspan="3">
+														<span fcklang="DlgDocMaTop">Top</span><br />
+														<input id="txtMarginTop" type="text" size="3" />
+													</td>
+												</tr>
+												<tr>
+													<td align="left">
+														<span fcklang="DlgDocMaLeft">Left</span><br />
+														<input id="txtMarginLeft" type="text" size="3" />
+													</td>
+													<td>
+														&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+													<td align="right">
+														<span fcklang="DlgDocMaRight">Right</span><br />
+														<input id="txtMarginRight" type="text" size="3" />
+													</td>
+												</tr>
+												<tr>
+													<td align="center" colspan="3">
+														<span fcklang="DlgDocMaBottom">Bottom</span><br />
+														<input id="txtMarginBottom" type="text" size="3" />
+													</td>
+												</tr>
+											</table>
+										</td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+					</table>
+				</div>
+				<div id="divMeta" style="display: none">
+					<span fcklang="DlgDocMeIndex">Document Indexing Keywords (comma separated)</span><br />
+					<textarea id="txtMetaKeywords" style="width: 100%" rows="2" cols="20"></textarea>
+					<br />
+					<span fcklang="DlgDocMeDescr">Document Description</span><br />
+					<textarea id="txtMetaDescription" style="width: 100%" rows="4" cols="20"></textarea>
+					<br />
+					<span fcklang="DlgDocMeAuthor">Author</span><br />
+					<input id="txtMetaAuthor" style="width: 100%" type="text" /><br />
+					<br />
+					<span fcklang="DlgDocMeCopy">Copyright</span><br />
+					<input id="txtMetaCopyright" type="text" style="width: 100%" />
+				</div>
+			</td>
+		</tr>
+		<tr id="ePreview" style="display: none">
+			<td>
+				<span fcklang="DlgDocPreview">Preview</span><br />
+				<iframe id="frmPreview" src="fck_docprops/fck_document_preview.html" width="100%"
+					height="100"></iframe>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_find.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_find.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_find.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,177 +1,177 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2006 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: fck_find.html
- * 	"Find" dialog window.
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck at fckeditor.net)
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title></title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<meta content="noindex, nofollow" name="robots" />
-	<script type="text/javascript">
-
-var oEditor = window.parent.InnerDialogLoaded() ;
-
-function OnLoad()
-{
-	// Whole word is available on IE only.
-	if ( oEditor.FCKBrowserInfo.IsIE )
-		document.getElementById('divWord').style.display = '' ;
-
-	// First of all, translate the dialog box texts.
-	oEditor.FCKLanguageManager.TranslatePage( document ) ;
-
-	window.parent.SetAutoSize( true ) ;
-}
-
-function btnStat(frm)
-{
-	document.getElementById('btnFind').disabled =
-		( document.getElementById('txtFind').value.length == 0 ) ;
-}
-
-function ReplaceTextNodes( parentNode, regex, replaceValue, replaceAll )
-{
-	for ( var i = 0 ; i < parentNode.childNodes.length ; i++ )
-	{
-		var oNode = parentNode.childNodes[i] ;
-		if ( oNode.nodeType == 3 )
-		{
-			var sReplaced = oNode.nodeValue.replace( regex, replaceValue ) ;
-			if ( oNode.nodeValue != sReplaced )
-			{
-				oNode.nodeValue = sReplaced ;
-				if ( ! replaceAll )
-					return true ;
-			}
-		}
-		else
-		{
-			if ( ReplaceTextNodes( oNode, regex, replaceValue ) )
-				return true ;
-		}
-	}
-	return false ;
-}
-
-function GetRegexExpr()
-{
-	if ( document.getElementById('chkWord').checked )
-		var sExpr = '\\b' + document.getElementById('txtFind').value + '\\b' ;
-	else
-		var sExpr = document.getElementById('txtFind').value ;
-
-	return sExpr ;
-}
-
-function GetCase()
-{
-	return ( document.getElementById('chkCase').checked ? '' : 'i' ) ;
-}
-
-function Ok()
-{
-	if ( document.getElementById('txtFind').value.length == 0 )
-		return ;
-
-	if ( oEditor.FCKBrowserInfo.IsIE )
-		FindIE() ;
-	else
-		FindGecko() ;
-}
-
-var oRange ;
-
-if ( oEditor.FCKBrowserInfo.IsIE )
-	oRange = oEditor.FCK.EditorDocument.body.createTextRange() ;
-
-function FindIE()
-{
-	var iFlags = 0 ;
-
-	if ( chkCase.checked )
-		iFlags = iFlags | 4 ;
-
-	if ( chkWord.checked )
-		iFlags = iFlags | 2 ;
-
-	var bFound = oRange.findText( document.getElementById('txtFind').value, 1, iFlags ) ;
-
-	if ( bFound )
-	{
-		oRange.scrollIntoView() ;
-		oRange.select() ;
-		oRange.collapse(false) ;
-		oLastRangeFound = oRange ;
-	}
-	else
-	{
-		oRange = oEditor.FCK.EditorDocument.body.createTextRange() ;
-		alert( oEditor.FCKLang.DlgFindNotFoundMsg ) ;
-	}
-}
-
-function FindGecko()
-{
-	var bCase = document.getElementById('chkCase').checked ;
-	var bWord = document.getElementById('chkWord').checked ;
-
-	// window.find( searchString, caseSensitive, backwards, wrapAround, wholeWord, searchInFrames, showDialog ) ;
-	oEditor.FCK.EditorWindow.find( document.getElementById('txtFind').value, bCase, false, false, bWord, false, false ) ;
-
-}
-
-function FindGecko()
-{
-	var bCase = document.getElementById('chkCase').checked ;
-	var bWord = document.getElementById('chkWord').checked ;
-
-	// window.find( searchString, caseSensitive, backwards, wrapAround, wholeWord, searchInFrames, showDialog ) ;
-	if ( !oEditor.FCK.EditorWindow.find( document.getElementById('txtFind').value, bCase, false, false, bWord, false, false ) )
-		alert( oEditor.FCKLang.DlgFindNotFoundMsg ) ;
-}
-	</script>
-</head>
-<body onload="OnLoad()" scroll="no" style="overflow: hidden">
-	<table cellspacing="3" cellpadding="2" width="100%" border="0">
-		<tr>
-			<td nowrap="nowrap">
-				<label for="txtFind" fcklang="DlgReplaceFindLbl">
-					Find what:</label>&nbsp;
-			</td>
-			<td width="100%">
-				<input id="txtFind" style="width: 100%" tabindex="1" type="text" />
-			</td>
-			<td>
-				<input id="btnFind" style="padding-right: 5px; padding-left: 5px" onclick="Ok();"
-					type="button" value="Find" fcklang="DlgFindFindBtn" />
-			</td>
-		</tr>
-		<tr>
-			<td valign="bottom" colspan="3">
-				&nbsp;<input id="chkCase" tabindex="3" type="checkbox" /><label for="chkCase" fcklang="DlgReplaceCaseChk">Match
-					case</label>
-				<br />
-				<div id="divWord" style="display: none">
-					&nbsp;<input id="chkWord" tabindex="4" type="checkbox" /><label for="chkWord" fcklang="DlgReplaceWordChk">Match
-					whole word</label>
-				</div>
-			</td>
-		</tr>
-	</table>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_find.html
+ * 	"Find" dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck at fckeditor.net)
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+function OnLoad()
+{
+	// Whole word is available on IE only.
+	if ( oEditor.FCKBrowserInfo.IsIE )
+		document.getElementById('divWord').style.display = '' ;
+
+	// First of all, translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage( document ) ;
+
+	window.parent.SetAutoSize( true ) ;
+}
+
+function btnStat(frm)
+{
+	document.getElementById('btnFind').disabled =
+		( document.getElementById('txtFind').value.length == 0 ) ;
+}
+
+function ReplaceTextNodes( parentNode, regex, replaceValue, replaceAll )
+{
+	for ( var i = 0 ; i < parentNode.childNodes.length ; i++ )
+	{
+		var oNode = parentNode.childNodes[i] ;
+		if ( oNode.nodeType == 3 )
+		{
+			var sReplaced = oNode.nodeValue.replace( regex, replaceValue ) ;
+			if ( oNode.nodeValue != sReplaced )
+			{
+				oNode.nodeValue = sReplaced ;
+				if ( ! replaceAll )
+					return true ;
+			}
+		}
+		else
+		{
+			if ( ReplaceTextNodes( oNode, regex, replaceValue ) )
+				return true ;
+		}
+	}
+	return false ;
+}
+
+function GetRegexExpr()
+{
+	if ( document.getElementById('chkWord').checked )
+		var sExpr = '\\b' + document.getElementById('txtFind').value + '\\b' ;
+	else
+		var sExpr = document.getElementById('txtFind').value ;
+
+	return sExpr ;
+}
+
+function GetCase()
+{
+	return ( document.getElementById('chkCase').checked ? '' : 'i' ) ;
+}
+
+function Ok()
+{
+	if ( document.getElementById('txtFind').value.length == 0 )
+		return ;
+
+	if ( oEditor.FCKBrowserInfo.IsIE )
+		FindIE() ;
+	else
+		FindGecko() ;
+}
+
+var oRange ;
+
+if ( oEditor.FCKBrowserInfo.IsIE )
+	oRange = oEditor.FCK.EditorDocument.body.createTextRange() ;
+
+function FindIE()
+{
+	var iFlags = 0 ;
+
+	if ( chkCase.checked )
+		iFlags = iFlags | 4 ;
+
+	if ( chkWord.checked )
+		iFlags = iFlags | 2 ;
+
+	var bFound = oRange.findText( document.getElementById('txtFind').value, 1, iFlags ) ;
+
+	if ( bFound )
+	{
+		oRange.scrollIntoView() ;
+		oRange.select() ;
+		oRange.collapse(false) ;
+		oLastRangeFound = oRange ;
+	}
+	else
+	{
+		oRange = oEditor.FCK.EditorDocument.body.createTextRange() ;
+		alert( oEditor.FCKLang.DlgFindNotFoundMsg ) ;
+	}
+}
+
+function FindGecko()
+{
+	var bCase = document.getElementById('chkCase').checked ;
+	var bWord = document.getElementById('chkWord').checked ;
+
+	// window.find( searchString, caseSensitive, backwards, wrapAround, wholeWord, searchInFrames, showDialog ) ;
+	oEditor.FCK.EditorWindow.find( document.getElementById('txtFind').value, bCase, false, false, bWord, false, false ) ;
+
+}
+
+function FindGecko()
+{
+	var bCase = document.getElementById('chkCase').checked ;
+	var bWord = document.getElementById('chkWord').checked ;
+
+	// window.find( searchString, caseSensitive, backwards, wrapAround, wholeWord, searchInFrames, showDialog ) ;
+	if ( !oEditor.FCK.EditorWindow.find( document.getElementById('txtFind').value, bCase, false, false, bWord, false, false ) )
+		alert( oEditor.FCKLang.DlgFindNotFoundMsg ) ;
+}
+	</script>
+</head>
+<body onload="OnLoad()" scroll="no" style="overflow: hidden">
+	<table cellspacing="3" cellpadding="2" width="100%" border="0">
+		<tr>
+			<td nowrap="nowrap">
+				<label for="txtFind" fcklang="DlgReplaceFindLbl">
+					Find what:</label>&nbsp;
+			</td>
+			<td width="100%">
+				<input id="txtFind" style="width: 100%" tabindex="1" type="text" />
+			</td>
+			<td>
+				<input id="btnFind" style="padding-right: 5px; padding-left: 5px" onclick="Ok();"
+					type="button" value="Find" fcklang="DlgFindFindBtn" />
+			</td>
+		</tr>
+		<tr>
+			<td valign="bottom" colspan="3">
+				&nbsp;<input id="chkCase" tabindex="3" type="checkbox" /><label for="chkCase" fcklang="DlgReplaceCaseChk">Match
+					case</label>
+				<br />
+				<div id="divWord" style="display: none">
+					&nbsp;<input id="chkWord" tabindex="4" type="checkbox" /><label for="chkWord" fcklang="DlgReplaceWordChk">Match
+					whole word</label>
+				</div>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_flash/fck_flash.js
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_flash/fck_flash.js	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_flash/fck_flash.js	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,300 +1,300 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Scripts related to the Flash dialog window (see fck_flash.html).
- */
-
-var dialog		= window.parent ;
-var oEditor		= dialog.InnerDialogLoaded() ;
-var FCK			= oEditor.FCK ;
-var FCKLang		= oEditor.FCKLang ;
-var FCKConfig	= oEditor.FCKConfig ;
-var FCKTools	= oEditor.FCKTools ;
-
-//#### Dialog Tabs
-
-// Set the dialog tabs.
-dialog.AddTab( 'Info', oEditor.FCKLang.DlgInfoTab ) ;
-
-if ( FCKConfig.FlashUpload )
-	dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
-
-if ( !FCKConfig.FlashDlgHideAdvanced )
-	dialog.AddTab( 'Advanced', oEditor.FCKLang.DlgAdvancedTag ) ;
-
-// Function called when a dialog tag is selected.
-function OnDialogTabChange( tabCode )
-{
-	ShowE('divInfo'		, ( tabCode == 'Info' ) ) ;
-	ShowE('divUpload'	, ( tabCode == 'Upload' ) ) ;
-	ShowE('divAdvanced'	, ( tabCode == 'Advanced' ) ) ;
-}
-
-// Get the selected flash embed (if available).
-var oFakeImage = dialog.Selection.GetSelectedElement() ;
-var oEmbed ;
-
-if ( oFakeImage )
-{
-	if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckflash') )
-		oEmbed = FCK.GetRealElement( oFakeImage ) ;
-	else
-		oFakeImage = null ;
-}
-
-window.onload = function()
-{
-	// Translate the dialog box texts.
-	oEditor.FCKLanguageManager.TranslatePage(document) ;
-
-	// Load the selected element information (if any).
-	LoadSelection() ;
-
-	// Show/Hide the "Browse Server" button.
-	GetE('tdBrowse').style.display = FCKConfig.FlashBrowser	? '' : 'none' ;
-
-	// Set the actual uploader URL.
-	if ( FCKConfig.FlashUpload )
-		GetE('frmUpload').action = FCKConfig.FlashUploadURL ;
-
-	dialog.SetAutoSize( true ) ;
-
-	// Activate the "OK" button.
-	dialog.SetOkButton( true ) ;
-
-	SelectField( 'txtUrl' ) ;
-}
-
-function LoadSelection()
-{
-	if ( ! oEmbed ) return ;
-
-	GetE('txtUrl').value    = GetAttribute( oEmbed, 'src', '' ) ;
-	GetE('txtWidth').value  = GetAttribute( oEmbed, 'width', '' ) ;
-	GetE('txtHeight').value = GetAttribute( oEmbed, 'height', '' ) ;
-
-	// Get Advances Attributes
-	GetE('txtAttId').value		= oEmbed.id ;
-	GetE('chkAutoPlay').checked	= GetAttribute( oEmbed, 'play', 'true' ) == 'true' ;
-	GetE('chkLoop').checked		= GetAttribute( oEmbed, 'loop', 'true' ) == 'true' ;
-	GetE('chkMenu').checked		= GetAttribute( oEmbed, 'menu', 'true' ) == 'true' ;
-	GetE('cmbScale').value		= GetAttribute( oEmbed, 'scale', '' ).toLowerCase() ;
-
-	GetE('txtAttTitle').value		= oEmbed.title ;
-
-	if ( oEditor.FCKBrowserInfo.IsIE )
-	{
-		GetE('txtAttClasses').value = oEmbed.getAttribute('className') || '' ;
-		GetE('txtAttStyle').value = oEmbed.style.cssText ;
-	}
-	else
-	{
-		GetE('txtAttClasses').value = oEmbed.getAttribute('class',2) || '' ;
-		GetE('txtAttStyle').value = oEmbed.getAttribute('style',2) || '' ;
-	}
-
-	UpdatePreview() ;
-}
-
-//#### The OK button was hit.
-function Ok()
-{
-	if ( GetE('txtUrl').value.length == 0 )
-	{
-		dialog.SetSelectedTab( 'Info' ) ;
-		GetE('txtUrl').focus() ;
-
-		alert( oEditor.FCKLang.DlgAlertUrl ) ;
-
-		return false ;
-	}
-
-	oEditor.FCKUndo.SaveUndoStep() ;
-	if ( !oEmbed )
-	{
-		oEmbed		= FCK.EditorDocument.createElement( 'EMBED' ) ;
-		oFakeImage  = null ;
-	}
-	UpdateEmbed( oEmbed ) ;
-
-	if ( !oFakeImage )
-	{
-		oFakeImage	= oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Flash', oEmbed ) ;
-		oFakeImage.setAttribute( '_fckflash', 'true', 0 ) ;
-		oFakeImage	= FCK.InsertElement( oFakeImage ) ;
-	}
-
-	oEditor.FCKEmbedAndObjectProcessor.RefreshView( oFakeImage, oEmbed ) ;
-
-	return true ;
-}
-
-function UpdateEmbed( e )
-{
-	SetAttribute( e, 'type'			, 'application/x-shockwave-flash' ) ;
-	SetAttribute( e, 'pluginspage'	, 'http://www.macromedia.com/go/getflashplayer' ) ;
-
-	SetAttribute( e, 'src', GetE('txtUrl').value ) ;
-	SetAttribute( e, "width" , GetE('txtWidth').value ) ;
-	SetAttribute( e, "height", GetE('txtHeight').value ) ;
-
-	// Advances Attributes
-
-	SetAttribute( e, 'id'	, GetE('txtAttId').value ) ;
-	SetAttribute( e, 'scale', GetE('cmbScale').value ) ;
-
-	SetAttribute( e, 'play', GetE('chkAutoPlay').checked ? 'true' : 'false' ) ;
-	SetAttribute( e, 'loop', GetE('chkLoop').checked ? 'true' : 'false' ) ;
-	SetAttribute( e, 'menu', GetE('chkMenu').checked ? 'true' : 'false' ) ;
-
-	SetAttribute( e, 'title'	, GetE('txtAttTitle').value ) ;
-
-	if ( oEditor.FCKBrowserInfo.IsIE )
-	{
-		SetAttribute( e, 'className', GetE('txtAttClasses').value ) ;
-		e.style.cssText = GetE('txtAttStyle').value ;
-	}
-	else
-	{
-		SetAttribute( e, 'class', GetE('txtAttClasses').value ) ;
-		SetAttribute( e, 'style', GetE('txtAttStyle').value ) ;
-	}
-}
-
-var ePreview ;
-
-function SetPreviewElement( previewEl )
-{
-	ePreview = previewEl ;
-
-	if ( GetE('txtUrl').value.length > 0 )
-		UpdatePreview() ;
-}
-
-function UpdatePreview()
-{
-	if ( !ePreview )
-		return ;
-
-	while ( ePreview.firstChild )
-		ePreview.removeChild( ePreview.firstChild ) ;
-
-	if ( GetE('txtUrl').value.length == 0 )
-		ePreview.innerHTML = '&nbsp;' ;
-	else
-	{
-		var oDoc	= ePreview.ownerDocument || ePreview.document ;
-		var e		= oDoc.createElement( 'EMBED' ) ;
-
-		SetAttribute( e, 'src', GetE('txtUrl').value ) ;
-		SetAttribute( e, 'type', 'application/x-shockwave-flash' ) ;
-		SetAttribute( e, 'width', '100%' ) ;
-		SetAttribute( e, 'height', '100%' ) ;
-
-		ePreview.appendChild( e ) ;
-	}
-}
-
-// <embed id="ePreview" src="fck_flash/claims.swf" width="100%" height="100%" style="visibility:hidden" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">
-
-function BrowseServer()
-{
-	OpenFileBrowser( FCKConfig.FlashBrowserURL, FCKConfig.FlashBrowserWindowWidth, FCKConfig.FlashBrowserWindowHeight ) ;
-}
-
-function SetUrl( url, width, height )
-{
-	GetE('txtUrl').value = url ;
-
-	if ( width )
-		GetE('txtWidth').value = width ;
-
-	if ( height )
-		GetE('txtHeight').value = height ;
-
-	UpdatePreview() ;
-
-	dialog.SetSelectedTab( 'Info' ) ;
-}
-
-function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
-{
-	// Remove animation
-	window.parent.Throbber.Hide() ;
-	GetE( 'divUpload' ).style.display  = '' ;
-
-	switch ( errorNumber )
-	{
-		case 0 :	// No errors
-			alert( 'Your file has been successfully uploaded' ) ;
-			break ;
-		case 1 :	// Custom error
-			alert( customMsg ) ;
-			return ;
-		case 101 :	// Custom warning
-			alert( customMsg ) ;
-			break ;
-		case 201 :
-			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
-			break ;
-		case 202 :
-			alert( 'Invalid file type' ) ;
-			return ;
-		case 203 :
-			alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
-			return ;
-		case 500 :
-			alert( 'The connector is disabled' ) ;
-			break ;
-		default :
-			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
-			return ;
-	}
-
-	SetUrl( fileUrl ) ;
-	GetE('frmUpload').reset() ;
-}
-
-var oUploadAllowedExtRegex	= new RegExp( FCKConfig.FlashUploadAllowedExtensions, 'i' ) ;
-var oUploadDeniedExtRegex	= new RegExp( FCKConfig.FlashUploadDeniedExtensions, 'i' ) ;
-
-function CheckUpload()
-{
-	var sFile = GetE('txtUploadFile').value ;
-
-	if ( sFile.length == 0 )
-	{
-		alert( 'Please select a file to upload' ) ;
-		return false ;
-	}
-
-	if ( ( FCKConfig.FlashUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
-		( FCKConfig.FlashUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
-	{
-		OnUploadCompleted( 202 ) ;
-		return false ;
-	}
-
-	// Show animation
-	window.parent.Throbber.Show( 100 ) ;
-	GetE( 'divUpload' ).style.display  = 'none' ;
-
-	return true ;
-}
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Scripts related to the Flash dialog window (see fck_flash.html).
+ */
+
+var dialog		= window.parent ;
+var oEditor		= dialog.InnerDialogLoaded() ;
+var FCK			= oEditor.FCK ;
+var FCKLang		= oEditor.FCKLang ;
+var FCKConfig	= oEditor.FCKConfig ;
+var FCKTools	= oEditor.FCKTools ;
+
+//#### Dialog Tabs
+
+// Set the dialog tabs.
+dialog.AddTab( 'Info', oEditor.FCKLang.DlgInfoTab ) ;
+
+if ( FCKConfig.FlashUpload )
+	dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
+
+if ( !FCKConfig.FlashDlgHideAdvanced )
+	dialog.AddTab( 'Advanced', oEditor.FCKLang.DlgAdvancedTag ) ;
+
+// Function called when a dialog tag is selected.
+function OnDialogTabChange( tabCode )
+{
+	ShowE('divInfo'		, ( tabCode == 'Info' ) ) ;
+	ShowE('divUpload'	, ( tabCode == 'Upload' ) ) ;
+	ShowE('divAdvanced'	, ( tabCode == 'Advanced' ) ) ;
+}
+
+// Get the selected flash embed (if available).
+var oFakeImage = dialog.Selection.GetSelectedElement() ;
+var oEmbed ;
+
+if ( oFakeImage )
+{
+	if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckflash') )
+		oEmbed = FCK.GetRealElement( oFakeImage ) ;
+	else
+		oFakeImage = null ;
+}
+
+window.onload = function()
+{
+	// Translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	// Load the selected element information (if any).
+	LoadSelection() ;
+
+	// Show/Hide the "Browse Server" button.
+	GetE('tdBrowse').style.display = FCKConfig.FlashBrowser	? '' : 'none' ;
+
+	// Set the actual uploader URL.
+	if ( FCKConfig.FlashUpload )
+		GetE('frmUpload').action = FCKConfig.FlashUploadURL ;
+
+	dialog.SetAutoSize( true ) ;
+
+	// Activate the "OK" button.
+	dialog.SetOkButton( true ) ;
+
+	SelectField( 'txtUrl' ) ;
+}
+
+function LoadSelection()
+{
+	if ( ! oEmbed ) return ;
+
+	GetE('txtUrl').value    = GetAttribute( oEmbed, 'src', '' ) ;
+	GetE('txtWidth').value  = GetAttribute( oEmbed, 'width', '' ) ;
+	GetE('txtHeight').value = GetAttribute( oEmbed, 'height', '' ) ;
+
+	// Get Advances Attributes
+	GetE('txtAttId').value		= oEmbed.id ;
+	GetE('chkAutoPlay').checked	= GetAttribute( oEmbed, 'play', 'true' ) == 'true' ;
+	GetE('chkLoop').checked		= GetAttribute( oEmbed, 'loop', 'true' ) == 'true' ;
+	GetE('chkMenu').checked		= GetAttribute( oEmbed, 'menu', 'true' ) == 'true' ;
+	GetE('cmbScale').value		= GetAttribute( oEmbed, 'scale', '' ).toLowerCase() ;
+
+	GetE('txtAttTitle').value		= oEmbed.title ;
+
+	if ( oEditor.FCKBrowserInfo.IsIE )
+	{
+		GetE('txtAttClasses').value = oEmbed.getAttribute('className') || '' ;
+		GetE('txtAttStyle').value = oEmbed.style.cssText ;
+	}
+	else
+	{
+		GetE('txtAttClasses').value = oEmbed.getAttribute('class',2) || '' ;
+		GetE('txtAttStyle').value = oEmbed.getAttribute('style',2) || '' ;
+	}
+
+	UpdatePreview() ;
+}
+
+//#### The OK button was hit.
+function Ok()
+{
+	if ( GetE('txtUrl').value.length == 0 )
+	{
+		dialog.SetSelectedTab( 'Info' ) ;
+		GetE('txtUrl').focus() ;
+
+		alert( oEditor.FCKLang.DlgAlertUrl ) ;
+
+		return false ;
+	}
+
+	oEditor.FCKUndo.SaveUndoStep() ;
+	if ( !oEmbed )
+	{
+		oEmbed		= FCK.EditorDocument.createElement( 'EMBED' ) ;
+		oFakeImage  = null ;
+	}
+	UpdateEmbed( oEmbed ) ;
+
+	if ( !oFakeImage )
+	{
+		oFakeImage	= oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Flash', oEmbed ) ;
+		oFakeImage.setAttribute( '_fckflash', 'true', 0 ) ;
+		oFakeImage	= FCK.InsertElement( oFakeImage ) ;
+	}
+
+	oEditor.FCKEmbedAndObjectProcessor.RefreshView( oFakeImage, oEmbed ) ;
+
+	return true ;
+}
+
+function UpdateEmbed( e )
+{
+	SetAttribute( e, 'type'			, 'application/x-shockwave-flash' ) ;
+	SetAttribute( e, 'pluginspage'	, 'http://www.macromedia.com/go/getflashplayer' ) ;
+
+	SetAttribute( e, 'src', GetE('txtUrl').value ) ;
+	SetAttribute( e, "width" , GetE('txtWidth').value ) ;
+	SetAttribute( e, "height", GetE('txtHeight').value ) ;
+
+	// Advances Attributes
+
+	SetAttribute( e, 'id'	, GetE('txtAttId').value ) ;
+	SetAttribute( e, 'scale', GetE('cmbScale').value ) ;
+
+	SetAttribute( e, 'play', GetE('chkAutoPlay').checked ? 'true' : 'false' ) ;
+	SetAttribute( e, 'loop', GetE('chkLoop').checked ? 'true' : 'false' ) ;
+	SetAttribute( e, 'menu', GetE('chkMenu').checked ? 'true' : 'false' ) ;
+
+	SetAttribute( e, 'title'	, GetE('txtAttTitle').value ) ;
+
+	if ( oEditor.FCKBrowserInfo.IsIE )
+	{
+		SetAttribute( e, 'className', GetE('txtAttClasses').value ) ;
+		e.style.cssText = GetE('txtAttStyle').value ;
+	}
+	else
+	{
+		SetAttribute( e, 'class', GetE('txtAttClasses').value ) ;
+		SetAttribute( e, 'style', GetE('txtAttStyle').value ) ;
+	}
+}
+
+var ePreview ;
+
+function SetPreviewElement( previewEl )
+{
+	ePreview = previewEl ;
+
+	if ( GetE('txtUrl').value.length > 0 )
+		UpdatePreview() ;
+}
+
+function UpdatePreview()
+{
+	if ( !ePreview )
+		return ;
+
+	while ( ePreview.firstChild )
+		ePreview.removeChild( ePreview.firstChild ) ;
+
+	if ( GetE('txtUrl').value.length == 0 )
+		ePreview.innerHTML = '&nbsp;' ;
+	else
+	{
+		var oDoc	= ePreview.ownerDocument || ePreview.document ;
+		var e		= oDoc.createElement( 'EMBED' ) ;
+
+		SetAttribute( e, 'src', GetE('txtUrl').value ) ;
+		SetAttribute( e, 'type', 'application/x-shockwave-flash' ) ;
+		SetAttribute( e, 'width', '100%' ) ;
+		SetAttribute( e, 'height', '100%' ) ;
+
+		ePreview.appendChild( e ) ;
+	}
+}
+
+// <embed id="ePreview" src="fck_flash/claims.swf" width="100%" height="100%" style="visibility:hidden" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">
+
+function BrowseServer()
+{
+	OpenFileBrowser( FCKConfig.FlashBrowserURL, FCKConfig.FlashBrowserWindowWidth, FCKConfig.FlashBrowserWindowHeight ) ;
+}
+
+function SetUrl( url, width, height )
+{
+	GetE('txtUrl').value = url ;
+
+	if ( width )
+		GetE('txtWidth').value = width ;
+
+	if ( height )
+		GetE('txtHeight').value = height ;
+
+	UpdatePreview() ;
+
+	dialog.SetSelectedTab( 'Info' ) ;
+}
+
+function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
+{
+	// Remove animation
+	window.parent.Throbber.Hide() ;
+	GetE( 'divUpload' ).style.display  = '' ;
+
+	switch ( errorNumber )
+	{
+		case 0 :	// No errors
+			alert( 'Your file has been successfully uploaded' ) ;
+			break ;
+		case 1 :	// Custom error
+			alert( customMsg ) ;
+			return ;
+		case 101 :	// Custom warning
+			alert( customMsg ) ;
+			break ;
+		case 201 :
+			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
+			break ;
+		case 202 :
+			alert( 'Invalid file type' ) ;
+			return ;
+		case 203 :
+			alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
+			return ;
+		case 500 :
+			alert( 'The connector is disabled' ) ;
+			break ;
+		default :
+			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
+			return ;
+	}
+
+	SetUrl( fileUrl ) ;
+	GetE('frmUpload').reset() ;
+}
+
+var oUploadAllowedExtRegex	= new RegExp( FCKConfig.FlashUploadAllowedExtensions, 'i' ) ;
+var oUploadDeniedExtRegex	= new RegExp( FCKConfig.FlashUploadDeniedExtensions, 'i' ) ;
+
+function CheckUpload()
+{
+	var sFile = GetE('txtUploadFile').value ;
+
+	if ( sFile.length == 0 )
+	{
+		alert( 'Please select a file to upload' ) ;
+		return false ;
+	}
+
+	if ( ( FCKConfig.FlashUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
+		( FCKConfig.FlashUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
+	{
+		OnUploadCompleted( 202 ) ;
+		return false ;
+	}
+
+	// Show animation
+	window.parent.Throbber.Show( 100 ) ;
+	GetE( 'divUpload' ).style.display  = 'none' ;
+
+	return true ;
+}

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_flash.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_flash.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_flash.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,152 +1,152 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Flash Properties dialog window.
--->
-<html>
-	<head>
-		<title>Flash Properties</title>
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-		<meta content="noindex, nofollow" name="robots">
-		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-		<script src="fck_flash/fck_flash.js" type="text/javascript"></script>
-		<script type="text/javascript">
-
-document.write( FCKTools.GetStyleHtml( GetCommonDialogCss() ) ) ;
-
-		</script>
-	</head>
-	<body scroll="no" style="OVERFLOW: hidden">
-		<div id="divInfo">
-			<table cellSpacing="1" cellPadding="1" width="100%" border="0">
-				<tr>
-					<td>
-						<table cellSpacing="0" cellPadding="0" width="100%" border="0">
-							<tr>
-								<td width="100%"><span fckLang="DlgImgURL">URL</span>
-								</td>
-								<td id="tdBrowse" style="DISPLAY: none" noWrap rowSpan="2">&nbsp; <input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server" fckLang="DlgBtnBrowseServer">
-								</td>
-							</tr>
-							<tr>
-								<td vAlign="top"><input id="txtUrl" onblur="UpdatePreview();" style="WIDTH: 100%" type="text">
-								</td>
-							</tr>
-						</table>
-					</td>
-				</tr>
-				<TR>
-					<TD>
-						<table cellSpacing="0" cellPadding="0" border="0">
-							<TR>
-								<TD nowrap>
-									<span fckLang="DlgImgWidth">Width</span><br>
-									<input id="txtWidth" onkeypress="return IsDigit(event);" type="text" size="3">
-								</TD>
-								<TD>&nbsp;</TD>
-								<TD>
-									<span fckLang="DlgImgHeight">Height</span><br>
-									<input id="txtHeight" onkeypress="return IsDigit(event);" type="text" size="3">
-								</TD>
-							</TR>
-						</table>
-					</TD>
-				</TR>
-				<tr>
-					<td vAlign="top">
-						<table cellSpacing="0" cellPadding="0" width="100%" border="0">
-							<tr>
-								<td valign="top" width="100%">
-									<table cellSpacing="0" cellPadding="0" width="100%">
-										<tr>
-											<td><span fckLang="DlgImgPreview">Preview</span></td>
-										</tr>
-										<tr>
-											<td id="ePreviewCell" valign="top" class="FlashPreviewArea"><iframe src="fck_flash/fck_flash_preview.html" frameborder="0" marginheight="0" marginwidth="0"></iframe></td>
-										</tr>
-									</table>
-								</td>
-							</tr>
-						</table>
-					</td>
-				</tr>
-			</table>
-		</div>
-		<div id="divUpload" style="DISPLAY: none">
-			<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data" action="" onsubmit="return CheckUpload();">
-				<span fckLang="DlgLnkUpload">Upload</span><br />
-				<input id="txtUploadFile" style="WIDTH: 100%" type="file" size="40" name="NewFile" /><br />
-				<br />
-				<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
-				<script type="text/javascript">
-					document.write( '<iframe name="UploadWindow" style="DISPLAY: none" src="' + FCKTools.GetVoidUrl() + '"><\/iframe>' ) ;
-				</script>
-			</form>
-		</div>
-		<div id="divAdvanced" style="DISPLAY: none">
-			<TABLE cellSpacing="0" cellPadding="0" border="0">
-				<TR>
-					<TD nowrap>
-						<span fckLang="DlgFlashScale">Scale</span><BR>
-						<select id="cmbScale">
-							<option value="" selected></option>
-							<option value="showall" fckLang="DlgFlashScaleAll">Show all</option>
-							<option value="noborder" fckLang="DlgFlashScaleNoBorder">No Border</option>
-							<option value="exactfit" fckLang="DlgFlashScaleFit">Exact Fit</option>
-						</select></TD>
-					<TD>&nbsp;&nbsp;&nbsp; &nbsp;
-					</TD>
-					<td valign="bottom">
-						<table>
-							<tr>
-								<td><input id="chkAutoPlay" type="checkbox" checked></td>
-								<td><label for="chkAutoPlay" nowrap fckLang="DlgFlashChkPlay">Auto Play</label>&nbsp;&nbsp;</td>
-								<td><input id="chkLoop" type="checkbox" checked></td>
-								<td><label for="chkLoop" nowrap fckLang="DlgFlashChkLoop">Loop</label>&nbsp;&nbsp;</td>
-								<td><input id="chkMenu" type="checkbox" checked></td>
-								<td><label for="chkMenu" nowrap fckLang="DlgFlashChkMenu">Enable Flash Menu</label></td>
-							</tr>
-						</table>
-					</td>
-				</TR>
-			</TABLE>
-			<br>
-			&nbsp;
-			<table cellSpacing="0" cellPadding="0" width="100%" align="center" border="0">
-				<tr>
-					<td vAlign="top" width="50%"><span fckLang="DlgGenId">Id</span><br>
-						<input id="txtAttId" style="WIDTH: 100%" type="text">
-					</td>
-					<td>&nbsp;&nbsp;</td>
-					<td vAlign="top" nowrap><span fckLang="DlgGenClass">Stylesheet Classes</span><br>
-						<input id="txtAttClasses" style="WIDTH: 100%" type="text">
-					</td>
-					<td>&nbsp;&nbsp;</td>
-					<td vAlign="top" nowrap width="50%">&nbsp;<span fckLang="DlgGenTitle">Advisory Title</span><br>
-						<input id="txtAttTitle" style="WIDTH: 100%" type="text">
-					</td>
-				</tr>
-			</table>
-			<span fckLang="DlgGenStyle">Style</span><br>
-			<input id="txtAttStyle" style="WIDTH: 100%" type="text">
-		</div>
-	</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Flash Properties dialog window.
+-->
+<html>
+	<head>
+		<title>Flash Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script src="fck_flash/fck_flash.js" type="text/javascript"></script>
+		<script type="text/javascript">
+
+document.write( FCKTools.GetStyleHtml( GetCommonDialogCss() ) ) ;
+
+		</script>
+	</head>
+	<body scroll="no" style="OVERFLOW: hidden">
+		<div id="divInfo">
+			<table cellSpacing="1" cellPadding="1" width="100%" border="0">
+				<tr>
+					<td>
+						<table cellSpacing="0" cellPadding="0" width="100%" border="0">
+							<tr>
+								<td width="100%"><span fckLang="DlgImgURL">URL</span>
+								</td>
+								<td id="tdBrowse" style="DISPLAY: none" noWrap rowSpan="2">&nbsp; <input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server" fckLang="DlgBtnBrowseServer">
+								</td>
+							</tr>
+							<tr>
+								<td vAlign="top"><input id="txtUrl" onblur="UpdatePreview();" style="WIDTH: 100%" type="text">
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+				<TR>
+					<TD>
+						<table cellSpacing="0" cellPadding="0" border="0">
+							<TR>
+								<TD nowrap>
+									<span fckLang="DlgImgWidth">Width</span><br>
+									<input id="txtWidth" onkeypress="return IsDigit(event);" type="text" size="3">
+								</TD>
+								<TD>&nbsp;</TD>
+								<TD>
+									<span fckLang="DlgImgHeight">Height</span><br>
+									<input id="txtHeight" onkeypress="return IsDigit(event);" type="text" size="3">
+								</TD>
+							</TR>
+						</table>
+					</TD>
+				</TR>
+				<tr>
+					<td vAlign="top">
+						<table cellSpacing="0" cellPadding="0" width="100%" border="0">
+							<tr>
+								<td valign="top" width="100%">
+									<table cellSpacing="0" cellPadding="0" width="100%">
+										<tr>
+											<td><span fckLang="DlgImgPreview">Preview</span></td>
+										</tr>
+										<tr>
+											<td id="ePreviewCell" valign="top" class="FlashPreviewArea"><iframe src="fck_flash/fck_flash_preview.html" frameborder="0" marginheight="0" marginwidth="0"></iframe></td>
+										</tr>
+									</table>
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+			</table>
+		</div>
+		<div id="divUpload" style="DISPLAY: none">
+			<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data" action="" onsubmit="return CheckUpload();">
+				<span fckLang="DlgLnkUpload">Upload</span><br />
+				<input id="txtUploadFile" style="WIDTH: 100%" type="file" size="40" name="NewFile" /><br />
+				<br />
+				<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
+				<script type="text/javascript">
+					document.write( '<iframe name="UploadWindow" style="DISPLAY: none" src="' + FCKTools.GetVoidUrl() + '"><\/iframe>' ) ;
+				</script>
+			</form>
+		</div>
+		<div id="divAdvanced" style="DISPLAY: none">
+			<TABLE cellSpacing="0" cellPadding="0" border="0">
+				<TR>
+					<TD nowrap>
+						<span fckLang="DlgFlashScale">Scale</span><BR>
+						<select id="cmbScale">
+							<option value="" selected></option>
+							<option value="showall" fckLang="DlgFlashScaleAll">Show all</option>
+							<option value="noborder" fckLang="DlgFlashScaleNoBorder">No Border</option>
+							<option value="exactfit" fckLang="DlgFlashScaleFit">Exact Fit</option>
+						</select></TD>
+					<TD>&nbsp;&nbsp;&nbsp; &nbsp;
+					</TD>
+					<td valign="bottom">
+						<table>
+							<tr>
+								<td><input id="chkAutoPlay" type="checkbox" checked></td>
+								<td><label for="chkAutoPlay" nowrap fckLang="DlgFlashChkPlay">Auto Play</label>&nbsp;&nbsp;</td>
+								<td><input id="chkLoop" type="checkbox" checked></td>
+								<td><label for="chkLoop" nowrap fckLang="DlgFlashChkLoop">Loop</label>&nbsp;&nbsp;</td>
+								<td><input id="chkMenu" type="checkbox" checked></td>
+								<td><label for="chkMenu" nowrap fckLang="DlgFlashChkMenu">Enable Flash Menu</label></td>
+							</tr>
+						</table>
+					</td>
+				</TR>
+			</TABLE>
+			<br>
+			&nbsp;
+			<table cellSpacing="0" cellPadding="0" width="100%" align="center" border="0">
+				<tr>
+					<td vAlign="top" width="50%"><span fckLang="DlgGenId">Id</span><br>
+						<input id="txtAttId" style="WIDTH: 100%" type="text">
+					</td>
+					<td>&nbsp;&nbsp;</td>
+					<td vAlign="top" nowrap><span fckLang="DlgGenClass">Stylesheet Classes</span><br>
+						<input id="txtAttClasses" style="WIDTH: 100%" type="text">
+					</td>
+					<td>&nbsp;&nbsp;</td>
+					<td vAlign="top" nowrap width="50%">&nbsp;<span fckLang="DlgGenTitle">Advisory Title</span><br>
+						<input id="txtAttTitle" style="WIDTH: 100%" type="text">
+					</td>
+				</tr>
+			</table>
+			<span fckLang="DlgGenStyle">Style</span><br>
+			<input id="txtAttStyle" style="WIDTH: 100%" type="text">
+		</div>
+	</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_form.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_form.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_form.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,109 +1,109 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Form dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title></title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<meta content="noindex, nofollow" name="robots" />
-	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-	<script type="text/javascript">
-
-var dialog	= window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-// Gets the document DOM
-var oDOM = oEditor.FCK.EditorDocument ;
-
-var oActiveEl = dialog.Selection.GetSelection().MoveToAncestorNode( 'FORM' ) ;
-
-window.onload = function()
-{
-	// First of all, translate the dialog box texts
-	oEditor.FCKLanguageManager.TranslatePage(document) ;
-
-	if ( oActiveEl )
-	{
-		GetE('txtName').value	= oActiveEl.name ;
-		GetE('txtAction').value	= oActiveEl.getAttribute( 'action', 2 ) ;
-		GetE('txtMethod').value	= oActiveEl.method ;
-	}
-	else
-		oActiveEl = null ;
-
-	dialog.SetOkButton( true ) ;
-	dialog.SetAutoSize( true ) ;
-	SelectField( 'txtName' ) ;
-}
-
-function Ok()
-{
-	if ( !oActiveEl )
-	{
-		oActiveEl = oEditor.FCK.InsertElement( 'form' ) ;
-
-		if ( oEditor.FCKBrowserInfo.IsGeckoLike )
-			oEditor.FCKTools.AppendBogusBr( oActiveEl ) ;
-	}
-
-	oActiveEl.name = GetE('txtName').value ;
-	SetAttribute( oActiveEl, 'action', GetE('txtAction').value ) ;
-	oActiveEl.method = GetE('txtMethod').value ;
-
-	return true ;
-}
-
-	</script>
-</head>
-<body style="overflow: hidden">
-	<table width="100%" style="height: 100%">
-		<tr>
-			<td align="center">
-				<table cellspacing="0" cellpadding="0" width="80%" border="0">
-					<tr>
-						<td>
-							<span fcklang="DlgFormName">Name</span><br />
-							<input style="width: 100%" type="text" id="txtName" />
-						</td>
-					</tr>
-					<tr>
-						<td>
-							<span fcklang="DlgFormAction">Action</span><br />
-							<input style="width: 100%" type="text" id="txtAction" />
-						</td>
-					</tr>
-					<tr>
-						<td>
-							<span fcklang="DlgFormMethod">Method</span><br />
-							<select id="txtMethod">
-								<option value="get" selected="selected">GET</option>
-								<option value="post">POST</option>
-							</select>
-						</td>
-					</tr>
-				</table>
-			</td>
-		</tr>
-	</table>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Form dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oActiveEl = dialog.Selection.GetSelection().MoveToAncestorNode( 'FORM' ) ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oActiveEl )
+	{
+		GetE('txtName').value	= oActiveEl.name ;
+		GetE('txtAction').value	= oActiveEl.getAttribute( 'action', 2 ) ;
+		GetE('txtMethod').value	= oActiveEl.method ;
+	}
+	else
+		oActiveEl = null ;
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
+}
+
+function Ok()
+{
+	if ( !oActiveEl )
+	{
+		oActiveEl = oEditor.FCK.InsertElement( 'form' ) ;
+
+		if ( oEditor.FCKBrowserInfo.IsGeckoLike )
+			oEditor.FCKTools.AppendBogusBr( oActiveEl ) ;
+	}
+
+	oActiveEl.name = GetE('txtName').value ;
+	SetAttribute( oActiveEl, 'action', GetE('txtAction').value ) ;
+	oActiveEl.method = GetE('txtMethod').value ;
+
+	return true ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table width="100%" style="height: 100%">
+		<tr>
+			<td align="center">
+				<table cellspacing="0" cellpadding="0" width="80%" border="0">
+					<tr>
+						<td>
+							<span fcklang="DlgFormName">Name</span><br />
+							<input style="width: 100%" type="text" id="txtName" />
+						</td>
+					</tr>
+					<tr>
+						<td>
+							<span fcklang="DlgFormAction">Action</span><br />
+							<input style="width: 100%" type="text" id="txtAction" />
+						</td>
+					</tr>
+					<tr>
+						<td>
+							<span fcklang="DlgFormMethod">Method</span><br />
+							<select id="txtMethod">
+								<option value="get" selected="selected">GET</option>
+								<option value="post">POST</option>
+							</select>
+						</td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_hiddenfield.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_hiddenfield.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_hiddenfield.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,115 +1,115 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Hidden Field dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>Hidden Field Properties</title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<meta content="noindex, nofollow" name="robots" />
-	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-	<script type="text/javascript">
-
-var dialog	= window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-var FCK = oEditor.FCK ;
-
-// Gets the document DOM
-var oDOM = FCK.EditorDocument ;
-
-// Get the selected flash embed (if available).
-var oFakeImage = dialog.Selection.GetSelectedElement() ;
-var oActiveEl ;
-
-if ( oFakeImage )
-{
-	if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckinputhidden') )
-		oActiveEl = FCK.GetRealElement( oFakeImage ) ;
-	else
-		oFakeImage = null ;
-}
-
-window.onload = function()
-{
-	// First of all, translate the dialog box texts
-	oEditor.FCKLanguageManager.TranslatePage(document) ;
-
-	if ( oActiveEl )
-	{
-		GetE('txtName').value		= oActiveEl.name ;
-		GetE('txtValue').value		= oActiveEl.value ;
-	}
-
-	dialog.SetOkButton( true ) ;
-	dialog.SetAutoSize( true ) ;
-	SelectField( 'txtName' ) ;
-}
-
-
-function Ok()
-{
-	oEditor.FCKUndo.SaveUndoStep() ;
-
-	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: 'hidden' } ) ;
-
-	SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
-
-	if ( !oFakeImage )
-	{
-		oFakeImage	= oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__InputHidden', oActiveEl ) ;
-		oFakeImage.setAttribute( '_fckinputhidden', 'true', 0 ) ;
-
-		oActiveEl.parentNode.insertBefore( oFakeImage, oActiveEl ) ;
-		oActiveEl.parentNode.removeChild( oActiveEl ) ;
-	}
-	else
-		oEditor.FCKUndo.SaveUndoStep() ;
-
-	return true ;
-}
-
-	</script>
-</head>
-<body style="overflow: hidden" scroll="no">
-	<table height="100%" width="100%">
-		<tr>
-			<td align="center">
-				<table border="0" class="inhoud" cellpadding="0" cellspacing="0" width="80%">
-					<tr>
-						<td>
-							<span fcklang="DlgHiddenName">Name</span><br />
-							<input type="text" size="20" id="txtName" style="width: 100%" />
-						</td>
-					</tr>
-					<tr>
-						<td>
-							<span fcklang="DlgHiddenValue">Value</span><br />
-							<input type="text" size="30" id="txtValue" style="width: 100%" />
-						</td>
-					</tr>
-				</table>
-			</td>
-		</tr>
-	</table>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Hidden Field dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Hidden Field Properties</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
+var FCK = oEditor.FCK ;
+
+// Gets the document DOM
+var oDOM = FCK.EditorDocument ;
+
+// Get the selected flash embed (if available).
+var oFakeImage = dialog.Selection.GetSelectedElement() ;
+var oActiveEl ;
+
+if ( oFakeImage )
+{
+	if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckinputhidden') )
+		oActiveEl = FCK.GetRealElement( oFakeImage ) ;
+	else
+		oFakeImage = null ;
+}
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oActiveEl )
+	{
+		GetE('txtName').value		= oActiveEl.name ;
+		GetE('txtValue').value		= oActiveEl.value ;
+	}
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
+}
+
+
+function Ok()
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: 'hidden' } ) ;
+
+	SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
+
+	if ( !oFakeImage )
+	{
+		oFakeImage	= oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__InputHidden', oActiveEl ) ;
+		oFakeImage.setAttribute( '_fckinputhidden', 'true', 0 ) ;
+
+		oActiveEl.parentNode.insertBefore( oFakeImage, oActiveEl ) ;
+		oActiveEl.parentNode.removeChild( oActiveEl ) ;
+	}
+	else
+		oEditor.FCKUndo.SaveUndoStep() ;
+
+	return true ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden" scroll="no">
+	<table height="100%" width="100%">
+		<tr>
+			<td align="center">
+				<table border="0" class="inhoud" cellpadding="0" cellspacing="0" width="80%">
+					<tr>
+						<td>
+							<span fcklang="DlgHiddenName">Name</span><br />
+							<input type="text" size="20" id="txtName" style="width: 100%" />
+						</td>
+					</tr>
+					<tr>
+						<td>
+							<span fcklang="DlgHiddenValue">Value</span><br />
+							<input type="text" size="30" id="txtValue" style="width: 100%" />
+						</td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_image/fck_image.js
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_image/fck_image.js	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_image/fck_image.js	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,512 +1,512 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Scripts related to the Image dialog window (see fck_image.html).
- */
-
-var dialog		= window.parent ;
-var oEditor		= dialog.InnerDialogLoaded() ;
-var FCK			= oEditor.FCK ;
-var FCKLang		= oEditor.FCKLang ;
-var FCKConfig	= oEditor.FCKConfig ;
-var FCKDebug	= oEditor.FCKDebug ;
-var FCKTools	= oEditor.FCKTools ;
-
-var bImageButton = ( document.location.search.length > 0 && document.location.search.substr(1) == 'ImageButton' ) ;
-
-//#### Dialog Tabs
-
-// Set the dialog tabs.
-dialog.AddTab( 'Info', FCKLang.DlgImgInfoTab ) ;
-
-if ( !bImageButton && !FCKConfig.ImageDlgHideLink )
-	dialog.AddTab( 'Link', FCKLang.DlgImgLinkTab ) ;
-
-if ( FCKConfig.ImageUpload )
-	dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
-
-if ( !FCKConfig.ImageDlgHideAdvanced )
-	dialog.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
-
-// Function called when a dialog tag is selected.
-function OnDialogTabChange( tabCode )
-{
-	ShowE('divInfo'		, ( tabCode == 'Info' ) ) ;
-	ShowE('divLink'		, ( tabCode == 'Link' ) ) ;
-	ShowE('divUpload'	, ( tabCode == 'Upload' ) ) ;
-	ShowE('divAdvanced'	, ( tabCode == 'Advanced' ) ) ;
-}
-
-// Get the selected image (if available).
-var oImage = dialog.Selection.GetSelectedElement() ;
-
-if ( oImage && oImage.tagName != 'IMG' && !( oImage.tagName == 'INPUT' && oImage.type == 'image' ) )
-	oImage = null ;
-
-// Get the active link.
-var oLink = dialog.Selection.GetSelection().MoveToAncestorNode( 'A' ) ;
-
-var oImageOriginal ;
-
-function UpdateOriginal( resetSize )
-{
-	if ( !eImgPreview )
-		return ;
-
-	if ( GetE('txtUrl').value.length == 0 )
-	{
-		oImageOriginal = null ;
-		return ;
-	}
-
-	oImageOriginal = document.createElement( 'IMG' ) ;	// new Image() ;
-
-	if ( resetSize )
-	{
-		oImageOriginal.onload = function()
-		{
-			this.onload = null ;
-			ResetSizes() ;
-		}
-	}
-
-	oImageOriginal.src = eImgPreview.src ;
-}
-
-var bPreviewInitialized ;
-
-window.onload = function()
-{
-	// Translate the dialog box texts.
-	oEditor.FCKLanguageManager.TranslatePage(document) ;
-
-	GetE('btnLockSizes').title = FCKLang.DlgImgLockRatio ;
-	GetE('btnResetSize').title = FCKLang.DlgBtnResetSize ;
-
-	// Load the selected element information (if any).
-	LoadSelection() ;
-
-	// Show/Hide the "Browse Server" button.
-	GetE('tdBrowse').style.display				= FCKConfig.ImageBrowser	? '' : 'none' ;
-	GetE('divLnkBrowseServer').style.display	= FCKConfig.LinkBrowser		? '' : 'none' ;
-
-	UpdateOriginal() ;
-
-	// Set the actual uploader URL.
-	if ( FCKConfig.ImageUpload )
-		GetE('frmUpload').action = FCKConfig.ImageUploadURL ;
-
-	dialog.SetAutoSize( true ) ;
-
-	// Activate the "OK" button.
-	dialog.SetOkButton( true ) ;
-
-	SelectField( 'txtUrl' ) ;
-}
-
-function LoadSelection()
-{
-	if ( ! oImage ) return ;
-
-	var sUrl = oImage.getAttribute( '_fcksavedurl' ) ;
-	if ( sUrl == null )
-		sUrl = GetAttribute( oImage, 'src', '' ) ;
-
-	GetE('txtUrl').value    = sUrl ;
-	GetE('txtAlt').value    = GetAttribute( oImage, 'alt', '' ) ;
-	GetE('txtVSpace').value	= GetAttribute( oImage, 'vspace', '' ) ;
-	GetE('txtHSpace').value	= GetAttribute( oImage, 'hspace', '' ) ;
-	GetE('txtBorder').value	= GetAttribute( oImage, 'border', '' ) ;
-	GetE('cmbAlign').value	= GetAttribute( oImage, 'align', '' ) ;
-
-	var iWidth, iHeight ;
-
-	var regexSize = /^\s*(\d+)px\s*$/i ;
-
-	if ( oImage.style.width )
-	{
-		var aMatchW  = oImage.style.width.match( regexSize ) ;
-		if ( aMatchW )
-		{
-			iWidth = aMatchW[1] ;
-			oImage.style.width = '' ;
-			SetAttribute( oImage, 'width' , iWidth ) ;
-		}
-	}
-
-	if ( oImage.style.height )
-	{
-		var aMatchH  = oImage.style.height.match( regexSize ) ;
-		if ( aMatchH )
-		{
-			iHeight = aMatchH[1] ;
-			oImage.style.height = '' ;
-			SetAttribute( oImage, 'height', iHeight ) ;
-		}
-	}
-
-	GetE('txtWidth').value	= iWidth ? iWidth : GetAttribute( oImage, "width", '' ) ;
-	GetE('txtHeight').value	= iHeight ? iHeight : GetAttribute( oImage, "height", '' ) ;
-
-	// Get Advances Attributes
-	GetE('txtAttId').value			= oImage.id ;
-	GetE('cmbAttLangDir').value		= oImage.dir ;
-	GetE('txtAttLangCode').value	= oImage.lang ;
-	GetE('txtAttTitle').value		= oImage.title ;
-	GetE('txtLongDesc').value		= oImage.longDesc ;
-
-	if ( oEditor.FCKBrowserInfo.IsIE )
-	{
-		GetE('txtAttClasses').value = oImage.className || '' ;
-		GetE('txtAttStyle').value = oImage.style.cssText ;
-	}
-	else
-	{
-		GetE('txtAttClasses').value = oImage.getAttribute('class',2) || '' ;
-		GetE('txtAttStyle').value = oImage.getAttribute('style',2) ;
-	}
-
-	if ( oLink )
-	{
-		var sLinkUrl = oLink.getAttribute( '_fcksavedurl' ) ;
-		if ( sLinkUrl == null )
-			sLinkUrl = oLink.getAttribute('href',2) ;
-
-		GetE('txtLnkUrl').value		= sLinkUrl ;
-		GetE('cmbLnkTarget').value	= oLink.target ;
-	}
-
-	UpdatePreview() ;
-}
-
-//#### The OK button was hit.
-function Ok()
-{
-	if ( GetE('txtUrl').value.length == 0 )
-	{
-		dialog.SetSelectedTab( 'Info' ) ;
-		GetE('txtUrl').focus() ;
-
-		alert( FCKLang.DlgImgAlertUrl ) ;
-
-		return false ;
-	}
-
-	var bHasImage = ( oImage != null ) ;
-
-	if ( bHasImage && bImageButton && oImage.tagName == 'IMG' )
-	{
-		if ( confirm( 'Do you want to transform the selected image on a image button?' ) )
-			oImage = null ;
-	}
-	else if ( bHasImage && !bImageButton && oImage.tagName == 'INPUT' )
-	{
-		if ( confirm( 'Do you want to transform the selected image button on a simple image?' ) )
-			oImage = null ;
-	}
-
-	oEditor.FCKUndo.SaveUndoStep() ;
-	if ( !bHasImage )
-	{
-		if ( bImageButton )
-		{
-			oImage = FCK.EditorDocument.createElement( 'input' ) ;
-			oImage.type = 'image' ;
-			oImage = FCK.InsertElement( oImage ) ;
-		}
-		else
-			oImage = FCK.InsertElement( 'img' ) ;
-	}
-
-	UpdateImage( oImage ) ;
-
-	var sLnkUrl = GetE('txtLnkUrl').value.Trim() ;
-
-	if ( sLnkUrl.length == 0 )
-	{
-		if ( oLink )
-			FCK.ExecuteNamedCommand( 'Unlink' ) ;
-	}
-	else
-	{
-		if ( oLink )	// Modifying an existent link.
-			oLink.href = sLnkUrl ;
-		else			// Creating a new link.
-		{
-			if ( !bHasImage )
-				oEditor.FCKSelection.SelectNode( oImage ) ;
-
-			oLink = oEditor.FCK.CreateLink( sLnkUrl )[0] ;
-
-			if ( !bHasImage )
-			{
-				oEditor.FCKSelection.SelectNode( oLink ) ;
-				oEditor.FCKSelection.Collapse( false ) ;
-			}
-		}
-
-		SetAttribute( oLink, '_fcksavedurl', sLnkUrl ) ;
-		SetAttribute( oLink, 'target', GetE('cmbLnkTarget').value ) ;
-	}
-
-	return true ;
-}
-
-function UpdateImage( e, skipId )
-{
-	e.src = GetE('txtUrl').value ;
-	SetAttribute( e, "_fcksavedurl", GetE('txtUrl').value ) ;
-	SetAttribute( e, "alt"   , GetE('txtAlt').value ) ;
-	SetAttribute( e, "width" , GetE('txtWidth').value ) ;
-	SetAttribute( e, "height", GetE('txtHeight').value ) ;
-	SetAttribute( e, "vspace", GetE('txtVSpace').value ) ;
-	SetAttribute( e, "hspace", GetE('txtHSpace').value ) ;
-	SetAttribute( e, "border", GetE('txtBorder').value ) ;
-	SetAttribute( e, "align" , GetE('cmbAlign').value ) ;
-
-	// Advances Attributes
-
-	if ( ! skipId )
-		SetAttribute( e, 'id', GetE('txtAttId').value ) ;
-
-	SetAttribute( e, 'dir'		, GetE('cmbAttLangDir').value ) ;
-	SetAttribute( e, 'lang'		, GetE('txtAttLangCode').value ) ;
-	SetAttribute( e, 'title'	, GetE('txtAttTitle').value ) ;
-	SetAttribute( e, 'longDesc'	, GetE('txtLongDesc').value ) ;
-
-	if ( oEditor.FCKBrowserInfo.IsIE )
-	{
-		e.className = GetE('txtAttClasses').value ;
-		e.style.cssText = GetE('txtAttStyle').value ;
-	}
-	else
-	{
-		SetAttribute( e, 'class'	, GetE('txtAttClasses').value ) ;
-		SetAttribute( e, 'style', GetE('txtAttStyle').value ) ;
-	}
-}
-
-var eImgPreview ;
-var eImgPreviewLink ;
-
-function SetPreviewElements( imageElement, linkElement )
-{
-	eImgPreview = imageElement ;
-	eImgPreviewLink = linkElement ;
-
-	UpdatePreview() ;
-	UpdateOriginal() ;
-
-	bPreviewInitialized = true ;
-}
-
-function UpdatePreview()
-{
-	if ( !eImgPreview || !eImgPreviewLink )
-		return ;
-
-	if ( GetE('txtUrl').value.length == 0 )
-		eImgPreviewLink.style.display = 'none' ;
-	else
-	{
-		UpdateImage( eImgPreview, true ) ;
-
-		if ( GetE('txtLnkUrl').value.Trim().length > 0 )
-			eImgPreviewLink.href = 'javascript:void(null);' ;
-		else
-			SetAttribute( eImgPreviewLink, 'href', '' ) ;
-
-		eImgPreviewLink.style.display = '' ;
-	}
-}
-
-var bLockRatio = true ;
-
-function SwitchLock( lockButton )
-{
-	bLockRatio = !bLockRatio ;
-	lockButton.className = bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ;
-	lockButton.title = bLockRatio ? 'Lock sizes' : 'Unlock sizes' ;
-
-	if ( bLockRatio )
-	{
-		if ( GetE('txtWidth').value.length > 0 )
-			OnSizeChanged( 'Width', GetE('txtWidth').value ) ;
-		else
-			OnSizeChanged( 'Height', GetE('txtHeight').value ) ;
-	}
-}
-
-// Fired when the width or height input texts change
-function OnSizeChanged( dimension, value )
-{
-	// Verifies if the aspect ration has to be maintained
-	if ( oImageOriginal && bLockRatio )
-	{
-		var e = dimension == 'Width' ? GetE('txtHeight') : GetE('txtWidth') ;
-
-		if ( value.length == 0 || isNaN( value ) )
-		{
-			e.value = '' ;
-			return ;
-		}
-
-		if ( dimension == 'Width' )
-			value = value == 0 ? 0 : Math.round( oImageOriginal.height * ( value  / oImageOriginal.width ) ) ;
-		else
-			value = value == 0 ? 0 : Math.round( oImageOriginal.width  * ( value / oImageOriginal.height ) ) ;
-
-		if ( !isNaN( value ) )
-			e.value = value ;
-	}
-
-	UpdatePreview() ;
-}
-
-// Fired when the Reset Size button is clicked
-function ResetSizes()
-{
-	if ( ! oImageOriginal ) return ;
-	if ( oEditor.FCKBrowserInfo.IsGecko && !oImageOriginal.complete )
-	{
-		setTimeout( ResetSizes, 50 ) ;
-		return ;
-	}
-
-	GetE('txtWidth').value  = oImageOriginal.width ;
-	GetE('txtHeight').value = oImageOriginal.height ;
-
-	UpdatePreview() ;
-}
-
-function BrowseServer()
-{
-	OpenServerBrowser(
-		'Image',
-		FCKConfig.ImageBrowserURL,
-		FCKConfig.ImageBrowserWindowWidth,
-		FCKConfig.ImageBrowserWindowHeight ) ;
-}
-
-function LnkBrowseServer()
-{
-	OpenServerBrowser(
-		'Link',
-		FCKConfig.LinkBrowserURL,
-		FCKConfig.LinkBrowserWindowWidth,
-		FCKConfig.LinkBrowserWindowHeight ) ;
-}
-
-function OpenServerBrowser( type, url, width, height )
-{
-	sActualBrowser = type ;
-	OpenFileBrowser( url, width, height ) ;
-}
-
-var sActualBrowser ;
-
-function SetUrl( url, width, height, alt )
-{
-	if ( sActualBrowser == 'Link' )
-	{
-		GetE('txtLnkUrl').value = url ;
-		UpdatePreview() ;
-	}
-	else
-	{
-		GetE('txtUrl').value = url ;
-		GetE('txtWidth').value = width ? width : '' ;
-		GetE('txtHeight').value = height ? height : '' ;
-
-		if ( alt )
-			GetE('txtAlt').value = alt;
-
-		UpdatePreview() ;
-		UpdateOriginal( true ) ;
-	}
-
-	dialog.SetSelectedTab( 'Info' ) ;
-}
-
-function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
-{
-	// Remove animation
-	window.parent.Throbber.Hide() ;
-	GetE( 'divUpload' ).style.display  = '' ;
-
-	switch ( errorNumber )
-	{
-		case 0 :	// No errors
-			alert( 'Your file has been successfully uploaded' ) ;
-			break ;
-		case 1 :	// Custom error
-			alert( customMsg ) ;
-			return ;
-		case 101 :	// Custom warning
-			alert( customMsg ) ;
-			break ;
-		case 201 :
-			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
-			break ;
-		case 202 :
-			alert( 'Invalid file type' ) ;
-			return ;
-		case 203 :
-			alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
-			return ;
-		case 500 :
-			alert( 'The connector is disabled' ) ;
-			break ;
-		default :
-			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
-			return ;
-	}
-
-	sActualBrowser = '' ;
-	SetUrl( fileUrl ) ;
-	GetE('frmUpload').reset() ;
-}
-
-var oUploadAllowedExtRegex	= new RegExp( FCKConfig.ImageUploadAllowedExtensions, 'i' ) ;
-var oUploadDeniedExtRegex	= new RegExp( FCKConfig.ImageUploadDeniedExtensions, 'i' ) ;
-
-function CheckUpload()
-{
-	var sFile = GetE('txtUploadFile').value ;
-
-	if ( sFile.length == 0 )
-	{
-		alert( 'Please select a file to upload' ) ;
-		return false ;
-	}
-
-	if ( ( FCKConfig.ImageUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
-		( FCKConfig.ImageUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
-	{
-		OnUploadCompleted( 202 ) ;
-		return false ;
-	}
-
-	// Show animation
-	window.parent.Throbber.Show( 100 ) ;
-	GetE( 'divUpload' ).style.display  = 'none' ;
-
-	return true ;
-}
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Scripts related to the Image dialog window (see fck_image.html).
+ */
+
+var dialog		= window.parent ;
+var oEditor		= dialog.InnerDialogLoaded() ;
+var FCK			= oEditor.FCK ;
+var FCKLang		= oEditor.FCKLang ;
+var FCKConfig	= oEditor.FCKConfig ;
+var FCKDebug	= oEditor.FCKDebug ;
+var FCKTools	= oEditor.FCKTools ;
+
+var bImageButton = ( document.location.search.length > 0 && document.location.search.substr(1) == 'ImageButton' ) ;
+
+//#### Dialog Tabs
+
+// Set the dialog tabs.
+dialog.AddTab( 'Info', FCKLang.DlgImgInfoTab ) ;
+
+if ( !bImageButton && !FCKConfig.ImageDlgHideLink )
+	dialog.AddTab( 'Link', FCKLang.DlgImgLinkTab ) ;
+
+if ( FCKConfig.ImageUpload )
+	dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
+
+if ( !FCKConfig.ImageDlgHideAdvanced )
+	dialog.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
+
+// Function called when a dialog tag is selected.
+function OnDialogTabChange( tabCode )
+{
+	ShowE('divInfo'		, ( tabCode == 'Info' ) ) ;
+	ShowE('divLink'		, ( tabCode == 'Link' ) ) ;
+	ShowE('divUpload'	, ( tabCode == 'Upload' ) ) ;
+	ShowE('divAdvanced'	, ( tabCode == 'Advanced' ) ) ;
+}
+
+// Get the selected image (if available).
+var oImage = dialog.Selection.GetSelectedElement() ;
+
+if ( oImage && oImage.tagName != 'IMG' && !( oImage.tagName == 'INPUT' && oImage.type == 'image' ) )
+	oImage = null ;
+
+// Get the active link.
+var oLink = dialog.Selection.GetSelection().MoveToAncestorNode( 'A' ) ;
+
+var oImageOriginal ;
+
+function UpdateOriginal( resetSize )
+{
+	if ( !eImgPreview )
+		return ;
+
+	if ( GetE('txtUrl').value.length == 0 )
+	{
+		oImageOriginal = null ;
+		return ;
+	}
+
+	oImageOriginal = document.createElement( 'IMG' ) ;	// new Image() ;
+
+	if ( resetSize )
+	{
+		oImageOriginal.onload = function()
+		{
+			this.onload = null ;
+			ResetSizes() ;
+		}
+	}
+
+	oImageOriginal.src = eImgPreview.src ;
+}
+
+var bPreviewInitialized ;
+
+window.onload = function()
+{
+	// Translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	GetE('btnLockSizes').title = FCKLang.DlgImgLockRatio ;
+	GetE('btnResetSize').title = FCKLang.DlgBtnResetSize ;
+
+	// Load the selected element information (if any).
+	LoadSelection() ;
+
+	// Show/Hide the "Browse Server" button.
+	GetE('tdBrowse').style.display				= FCKConfig.ImageBrowser	? '' : 'none' ;
+	GetE('divLnkBrowseServer').style.display	= FCKConfig.LinkBrowser		? '' : 'none' ;
+
+	UpdateOriginal() ;
+
+	// Set the actual uploader URL.
+	if ( FCKConfig.ImageUpload )
+		GetE('frmUpload').action = FCKConfig.ImageUploadURL ;
+
+	dialog.SetAutoSize( true ) ;
+
+	// Activate the "OK" button.
+	dialog.SetOkButton( true ) ;
+
+	SelectField( 'txtUrl' ) ;
+}
+
+function LoadSelection()
+{
+	if ( ! oImage ) return ;
+
+	var sUrl = oImage.getAttribute( '_fcksavedurl' ) ;
+	if ( sUrl == null )
+		sUrl = GetAttribute( oImage, 'src', '' ) ;
+
+	GetE('txtUrl').value    = sUrl ;
+	GetE('txtAlt').value    = GetAttribute( oImage, 'alt', '' ) ;
+	GetE('txtVSpace').value	= GetAttribute( oImage, 'vspace', '' ) ;
+	GetE('txtHSpace').value	= GetAttribute( oImage, 'hspace', '' ) ;
+	GetE('txtBorder').value	= GetAttribute( oImage, 'border', '' ) ;
+	GetE('cmbAlign').value	= GetAttribute( oImage, 'align', '' ) ;
+
+	var iWidth, iHeight ;
+
+	var regexSize = /^\s*(\d+)px\s*$/i ;
+
+	if ( oImage.style.width )
+	{
+		var aMatchW  = oImage.style.width.match( regexSize ) ;
+		if ( aMatchW )
+		{
+			iWidth = aMatchW[1] ;
+			oImage.style.width = '' ;
+			SetAttribute( oImage, 'width' , iWidth ) ;
+		}
+	}
+
+	if ( oImage.style.height )
+	{
+		var aMatchH  = oImage.style.height.match( regexSize ) ;
+		if ( aMatchH )
+		{
+			iHeight = aMatchH[1] ;
+			oImage.style.height = '' ;
+			SetAttribute( oImage, 'height', iHeight ) ;
+		}
+	}
+
+	GetE('txtWidth').value	= iWidth ? iWidth : GetAttribute( oImage, "width", '' ) ;
+	GetE('txtHeight').value	= iHeight ? iHeight : GetAttribute( oImage, "height", '' ) ;
+
+	// Get Advances Attributes
+	GetE('txtAttId').value			= oImage.id ;
+	GetE('cmbAttLangDir').value		= oImage.dir ;
+	GetE('txtAttLangCode').value	= oImage.lang ;
+	GetE('txtAttTitle').value		= oImage.title ;
+	GetE('txtLongDesc').value		= oImage.longDesc ;
+
+	if ( oEditor.FCKBrowserInfo.IsIE )
+	{
+		GetE('txtAttClasses').value = oImage.className || '' ;
+		GetE('txtAttStyle').value = oImage.style.cssText ;
+	}
+	else
+	{
+		GetE('txtAttClasses').value = oImage.getAttribute('class',2) || '' ;
+		GetE('txtAttStyle').value = oImage.getAttribute('style',2) ;
+	}
+
+	if ( oLink )
+	{
+		var sLinkUrl = oLink.getAttribute( '_fcksavedurl' ) ;
+		if ( sLinkUrl == null )
+			sLinkUrl = oLink.getAttribute('href',2) ;
+
+		GetE('txtLnkUrl').value		= sLinkUrl ;
+		GetE('cmbLnkTarget').value	= oLink.target ;
+	}
+
+	UpdatePreview() ;
+}
+
+//#### The OK button was hit.
+function Ok()
+{
+	if ( GetE('txtUrl').value.length == 0 )
+	{
+		dialog.SetSelectedTab( 'Info' ) ;
+		GetE('txtUrl').focus() ;
+
+		alert( FCKLang.DlgImgAlertUrl ) ;
+
+		return false ;
+	}
+
+	var bHasImage = ( oImage != null ) ;
+
+	if ( bHasImage && bImageButton && oImage.tagName == 'IMG' )
+	{
+		if ( confirm( 'Do you want to transform the selected image on a image button?' ) )
+			oImage = null ;
+	}
+	else if ( bHasImage && !bImageButton && oImage.tagName == 'INPUT' )
+	{
+		if ( confirm( 'Do you want to transform the selected image button on a simple image?' ) )
+			oImage = null ;
+	}
+
+	oEditor.FCKUndo.SaveUndoStep() ;
+	if ( !bHasImage )
+	{
+		if ( bImageButton )
+		{
+			oImage = FCK.EditorDocument.createElement( 'input' ) ;
+			oImage.type = 'image' ;
+			oImage = FCK.InsertElement( oImage ) ;
+		}
+		else
+			oImage = FCK.InsertElement( 'img' ) ;
+	}
+
+	UpdateImage( oImage ) ;
+
+	var sLnkUrl = GetE('txtLnkUrl').value.Trim() ;
+
+	if ( sLnkUrl.length == 0 )
+	{
+		if ( oLink )
+			FCK.ExecuteNamedCommand( 'Unlink' ) ;
+	}
+	else
+	{
+		if ( oLink )	// Modifying an existent link.
+			oLink.href = sLnkUrl ;
+		else			// Creating a new link.
+		{
+			if ( !bHasImage )
+				oEditor.FCKSelection.SelectNode( oImage ) ;
+
+			oLink = oEditor.FCK.CreateLink( sLnkUrl )[0] ;
+
+			if ( !bHasImage )
+			{
+				oEditor.FCKSelection.SelectNode( oLink ) ;
+				oEditor.FCKSelection.Collapse( false ) ;
+			}
+		}
+
+		SetAttribute( oLink, '_fcksavedurl', sLnkUrl ) ;
+		SetAttribute( oLink, 'target', GetE('cmbLnkTarget').value ) ;
+	}
+
+	return true ;
+}
+
+function UpdateImage( e, skipId )
+{
+	e.src = GetE('txtUrl').value ;
+	SetAttribute( e, "_fcksavedurl", GetE('txtUrl').value ) ;
+	SetAttribute( e, "alt"   , GetE('txtAlt').value ) ;
+	SetAttribute( e, "width" , GetE('txtWidth').value ) ;
+	SetAttribute( e, "height", GetE('txtHeight').value ) ;
+	SetAttribute( e, "vspace", GetE('txtVSpace').value ) ;
+	SetAttribute( e, "hspace", GetE('txtHSpace').value ) ;
+	SetAttribute( e, "border", GetE('txtBorder').value ) ;
+	SetAttribute( e, "align" , GetE('cmbAlign').value ) ;
+
+	// Advances Attributes
+
+	if ( ! skipId )
+		SetAttribute( e, 'id', GetE('txtAttId').value ) ;
+
+	SetAttribute( e, 'dir'		, GetE('cmbAttLangDir').value ) ;
+	SetAttribute( e, 'lang'		, GetE('txtAttLangCode').value ) ;
+	SetAttribute( e, 'title'	, GetE('txtAttTitle').value ) ;
+	SetAttribute( e, 'longDesc'	, GetE('txtLongDesc').value ) ;
+
+	if ( oEditor.FCKBrowserInfo.IsIE )
+	{
+		e.className = GetE('txtAttClasses').value ;
+		e.style.cssText = GetE('txtAttStyle').value ;
+	}
+	else
+	{
+		SetAttribute( e, 'class'	, GetE('txtAttClasses').value ) ;
+		SetAttribute( e, 'style', GetE('txtAttStyle').value ) ;
+	}
+}
+
+var eImgPreview ;
+var eImgPreviewLink ;
+
+function SetPreviewElements( imageElement, linkElement )
+{
+	eImgPreview = imageElement ;
+	eImgPreviewLink = linkElement ;
+
+	UpdatePreview() ;
+	UpdateOriginal() ;
+
+	bPreviewInitialized = true ;
+}
+
+function UpdatePreview()
+{
+	if ( !eImgPreview || !eImgPreviewLink )
+		return ;
+
+	if ( GetE('txtUrl').value.length == 0 )
+		eImgPreviewLink.style.display = 'none' ;
+	else
+	{
+		UpdateImage( eImgPreview, true ) ;
+
+		if ( GetE('txtLnkUrl').value.Trim().length > 0 )
+			eImgPreviewLink.href = 'javascript:void(null);' ;
+		else
+			SetAttribute( eImgPreviewLink, 'href', '' ) ;
+
+		eImgPreviewLink.style.display = '' ;
+	}
+}
+
+var bLockRatio = true ;
+
+function SwitchLock( lockButton )
+{
+	bLockRatio = !bLockRatio ;
+	lockButton.className = bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ;
+	lockButton.title = bLockRatio ? 'Lock sizes' : 'Unlock sizes' ;
+
+	if ( bLockRatio )
+	{
+		if ( GetE('txtWidth').value.length > 0 )
+			OnSizeChanged( 'Width', GetE('txtWidth').value ) ;
+		else
+			OnSizeChanged( 'Height', GetE('txtHeight').value ) ;
+	}
+}
+
+// Fired when the width or height input texts change
+function OnSizeChanged( dimension, value )
+{
+	// Verifies if the aspect ration has to be maintained
+	if ( oImageOriginal && bLockRatio )
+	{
+		var e = dimension == 'Width' ? GetE('txtHeight') : GetE('txtWidth') ;
+
+		if ( value.length == 0 || isNaN( value ) )
+		{
+			e.value = '' ;
+			return ;
+		}
+
+		if ( dimension == 'Width' )
+			value = value == 0 ? 0 : Math.round( oImageOriginal.height * ( value  / oImageOriginal.width ) ) ;
+		else
+			value = value == 0 ? 0 : Math.round( oImageOriginal.width  * ( value / oImageOriginal.height ) ) ;
+
+		if ( !isNaN( value ) )
+			e.value = value ;
+	}
+
+	UpdatePreview() ;
+}
+
+// Fired when the Reset Size button is clicked
+function ResetSizes()
+{
+	if ( ! oImageOriginal ) return ;
+	if ( oEditor.FCKBrowserInfo.IsGecko && !oImageOriginal.complete )
+	{
+		setTimeout( ResetSizes, 50 ) ;
+		return ;
+	}
+
+	GetE('txtWidth').value  = oImageOriginal.width ;
+	GetE('txtHeight').value = oImageOriginal.height ;
+
+	UpdatePreview() ;
+}
+
+function BrowseServer()
+{
+	OpenServerBrowser(
+		'Image',
+		FCKConfig.ImageBrowserURL,
+		FCKConfig.ImageBrowserWindowWidth,
+		FCKConfig.ImageBrowserWindowHeight ) ;
+}
+
+function LnkBrowseServer()
+{
+	OpenServerBrowser(
+		'Link',
+		FCKConfig.LinkBrowserURL,
+		FCKConfig.LinkBrowserWindowWidth,
+		FCKConfig.LinkBrowserWindowHeight ) ;
+}
+
+function OpenServerBrowser( type, url, width, height )
+{
+	sActualBrowser = type ;
+	OpenFileBrowser( url, width, height ) ;
+}
+
+var sActualBrowser ;
+
+function SetUrl( url, width, height, alt )
+{
+	if ( sActualBrowser == 'Link' )
+	{
+		GetE('txtLnkUrl').value = url ;
+		UpdatePreview() ;
+	}
+	else
+	{
+		GetE('txtUrl').value = url ;
+		GetE('txtWidth').value = width ? width : '' ;
+		GetE('txtHeight').value = height ? height : '' ;
+
+		if ( alt )
+			GetE('txtAlt').value = alt;
+
+		UpdatePreview() ;
+		UpdateOriginal( true ) ;
+	}
+
+	dialog.SetSelectedTab( 'Info' ) ;
+}
+
+function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
+{
+	// Remove animation
+	window.parent.Throbber.Hide() ;
+	GetE( 'divUpload' ).style.display  = '' ;
+
+	switch ( errorNumber )
+	{
+		case 0 :	// No errors
+			alert( 'Your file has been successfully uploaded' ) ;
+			break ;
+		case 1 :	// Custom error
+			alert( customMsg ) ;
+			return ;
+		case 101 :	// Custom warning
+			alert( customMsg ) ;
+			break ;
+		case 201 :
+			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
+			break ;
+		case 202 :
+			alert( 'Invalid file type' ) ;
+			return ;
+		case 203 :
+			alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
+			return ;
+		case 500 :
+			alert( 'The connector is disabled' ) ;
+			break ;
+		default :
+			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
+			return ;
+	}
+
+	sActualBrowser = '' ;
+	SetUrl( fileUrl ) ;
+	GetE('frmUpload').reset() ;
+}
+
+var oUploadAllowedExtRegex	= new RegExp( FCKConfig.ImageUploadAllowedExtensions, 'i' ) ;
+var oUploadDeniedExtRegex	= new RegExp( FCKConfig.ImageUploadDeniedExtensions, 'i' ) ;
+
+function CheckUpload()
+{
+	var sFile = GetE('txtUploadFile').value ;
+
+	if ( sFile.length == 0 )
+	{
+		alert( 'Please select a file to upload' ) ;
+		return false ;
+	}
+
+	if ( ( FCKConfig.ImageUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
+		( FCKConfig.ImageUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
+	{
+		OnUploadCompleted( 202 ) ;
+		return false ;
+	}
+
+	// Show animation
+	window.parent.Throbber.Show( 100 ) ;
+	GetE( 'divUpload' ).style.display  = 'none' ;
+
+	return true ;
+}

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_image.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_image.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_image.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,258 +1,258 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Image Properties dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>Image Properties</title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<meta name="robots" content="noindex, nofollow" />
-	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-	<script src="fck_image/fck_image.js" type="text/javascript"></script>
-		<script type="text/javascript">
-
-document.write( FCKTools.GetStyleHtml( GetCommonDialogCss() ) ) ;
-
-		</script>
-</head>
-<body scroll="no" style="overflow: hidden">
-	<div id="divInfo">
-		<table cellspacing="1" cellpadding="1" border="0" width="100%" height="100%">
-			<tr>
-				<td>
-					<table cellspacing="0" cellpadding="0" width="100%" border="0">
-						<tr>
-							<td width="100%">
-								<span fcklang="DlgImgURL">URL</span>
-							</td>
-							<td id="tdBrowse" style="display: none" nowrap="nowrap" rowspan="2">
-								&nbsp;
-								<input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server"
-									fcklang="DlgBtnBrowseServer" />
-							</td>
-						</tr>
-						<tr>
-							<td valign="top">
-								<input id="txtUrl" style="width: 100%" type="text" onblur="UpdatePreview();" />
-							</td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-			<tr>
-				<td>
-					<span fcklang="DlgImgAlt">Short Description</span><br />
-					<input id="txtAlt" style="width: 100%" type="text" /><br />
-				</td>
-			</tr>
-			<tr height="100%">
-				<td valign="top">
-					<table cellspacing="0" cellpadding="0" width="100%" border="0" height="100%">
-						<tr>
-							<td valign="top">
-								<br />
-								<table cellspacing="0" cellpadding="0" border="0">
-									<tr>
-										<td nowrap="nowrap">
-											<span fcklang="DlgImgWidth">Width</span>&nbsp;</td>
-										<td>
-											<input type="text" size="3" id="txtWidth" onkeyup="OnSizeChanged('Width',this.value);" /></td>
-										<td rowspan="2">
-											<div id="btnLockSizes" class="BtnLocked" onmouseover="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ) + ' BtnOver';"
-												onmouseout="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' );" title="Lock Sizes"
-												onclick="SwitchLock(this);">
-											</div>
-										</td>
-										<td rowspan="2">
-											<div id="btnResetSize" class="BtnReset" onmouseover="this.className='BtnReset BtnOver';"
-												onmouseout="this.className='BtnReset';" title="Reset Size" onclick="ResetSizes();">
-											</div>
-										</td>
-									</tr>
-									<tr>
-										<td nowrap="nowrap">
-											<span fcklang="DlgImgHeight">Height</span>&nbsp;</td>
-										<td>
-											<input type="text" size="3" id="txtHeight" onkeyup="OnSizeChanged('Height',this.value);" /></td>
-									</tr>
-								</table>
-								<br />
-								<table cellspacing="0" cellpadding="0" border="0">
-									<tr>
-										<td nowrap="nowrap">
-											<span fcklang="DlgImgBorder">Border</span>&nbsp;</td>
-										<td>
-											<input type="text" size="2" value="" id="txtBorder" onkeyup="UpdatePreview();" /></td>
-									</tr>
-									<tr>
-										<td nowrap="nowrap">
-											<span fcklang="DlgImgHSpace">HSpace</span>&nbsp;</td>
-										<td>
-											<input type="text" size="2" id="txtHSpace" onkeyup="UpdatePreview();" /></td>
-									</tr>
-									<tr>
-										<td nowrap="nowrap">
-											<span fcklang="DlgImgVSpace">VSpace</span>&nbsp;</td>
-										<td>
-											<input type="text" size="2" id="txtVSpace" onkeyup="UpdatePreview();" /></td>
-									</tr>
-									<tr>
-										<td nowrap="nowrap">
-											<span fcklang="DlgImgAlign">Align</span>&nbsp;</td>
-										<td>
-											<select id="cmbAlign" onchange="UpdatePreview();">
-												<option value="" selected="selected"></option>
-												<option fcklang="DlgImgAlignLeft" value="left">Left</option>
-												<option fcklang="DlgImgAlignAbsBottom" value="absBottom">Abs Bottom</option>
-												<option fcklang="DlgImgAlignAbsMiddle" value="absMiddle">Abs Middle</option>
-												<option fcklang="DlgImgAlignBaseline" value="baseline">Baseline</option>
-												<option fcklang="DlgImgAlignBottom" value="bottom">Bottom</option>
-												<option fcklang="DlgImgAlignMiddle" value="middle">Middle</option>
-												<option fcklang="DlgImgAlignRight" value="right">Right</option>
-												<option fcklang="DlgImgAlignTextTop" value="textTop">Text Top</option>
-												<option fcklang="DlgImgAlignTop" value="top">Top</option>
-											</select>
-										</td>
-									</tr>
-								</table>
-							</td>
-							<td>
-								&nbsp;&nbsp;&nbsp;</td>
-							<td width="100%" valign="top">
-								<table cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed">
-									<tr>
-										<td>
-											<span fcklang="DlgImgPreview">Preview</span></td>
-									</tr>
-									<tr>
-										<td valign="top">
-											<iframe class="ImagePreviewArea" src="fck_image/fck_image_preview.html" frameborder="0"
-												marginheight="0" marginwidth="0"></iframe>
-										</td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-		</table>
-	</div>
-	<div id="divUpload" style="display: none">
-		<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data"
-			action="" onsubmit="return CheckUpload();">
-			<span fcklang="DlgLnkUpload">Upload</span><br />
-			<input id="txtUploadFile" style="width: 100%" type="file" size="40" name="NewFile" /><br />
-			<br />
-			<input id="btnUpload" type="submit" value="Send it to the Server" fcklang="DlgLnkBtnUpload" />
-			<script type="text/javascript">
-				document.write( '<iframe name="UploadWindow" style="display: none" src="' + FCKTools.GetVoidUrl() + '"><\/iframe>' ) ;
-			</script>
-		</form>
-	</div>
-	<div id="divLink" style="display: none">
-		<table cellspacing="1" cellpadding="1" border="0" width="100%">
-			<tr>
-				<td>
-					<div>
-						<span fcklang="DlgLnkURL">URL</span><br />
-						<input id="txtLnkUrl" style="width: 100%" type="text" onblur="UpdatePreview();" />
-					</div>
-					<div id="divLnkBrowseServer" align="right">
-						<input type="button" value="Browse Server" fcklang="DlgBtnBrowseServer" onclick="LnkBrowseServer();" />
-					</div>
-					<div>
-						<span fcklang="DlgLnkTarget">Target</span><br />
-						<select id="cmbLnkTarget">
-							<option value="" fcklang="DlgGenNotSet" selected="selected">&lt;not set&gt;</option>
-							<option value="_blank" fcklang="DlgLnkTargetBlank">New Window (_blank)</option>
-							<option value="_top" fcklang="DlgLnkTargetTop">Topmost Window (_top)</option>
-							<option value="_self" fcklang="DlgLnkTargetSelf">Same Window (_self)</option>
-							<option value="_parent" fcklang="DlgLnkTargetParent">Parent Window (_parent)</option>
-						</select>
-					</div>
-				</td>
-			</tr>
-		</table>
-	</div>
-	<div id="divAdvanced" style="display: none">
-		<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
-			<tr>
-				<td valign="top" width="50%">
-					<span fcklang="DlgGenId">Id</span><br />
-					<input id="txtAttId" style="width: 100%" type="text" />
-				</td>
-				<td width="1">
-					&nbsp;&nbsp;</td>
-				<td valign="top">
-					<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
-						<tr>
-							<td width="60%">
-								<span fcklang="DlgGenLangDir">Language Direction</span><br />
-								<select id="cmbAttLangDir" style="width: 100%">
-									<option value="" fcklang="DlgGenNotSet" selected="selected">&lt;not set&gt;</option>
-									<option value="ltr" fcklang="DlgGenLangDirLtr">Left to Right (LTR)</option>
-									<option value="rtl" fcklang="DlgGenLangDirRtl">Right to Left (RTL)</option>
-								</select>
-							</td>
-							<td width="1%">
-								&nbsp;&nbsp;</td>
-							<td nowrap="nowrap">
-								<span fcklang="DlgGenLangCode">Language Code</span><br />
-								<input id="txtAttLangCode" style="width: 100%" type="text" />&nbsp;
-							</td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-			<tr>
-				<td colspan="3">
-					&nbsp;</td>
-			</tr>
-			<tr>
-				<td colspan="3">
-					<span fcklang="DlgGenLongDescr">Long Description URL</span><br />
-					<input id="txtLongDesc" style="width: 100%" type="text" />
-				</td>
-			</tr>
-			<tr>
-				<td colspan="3">
-					&nbsp;</td>
-			</tr>
-			<tr>
-				<td valign="top">
-					<span fcklang="DlgGenClass">Stylesheet Classes</span><br />
-					<input id="txtAttClasses" style="width: 100%" type="text" />
-				</td>
-				<td>
-				</td>
-				<td valign="top">
-					&nbsp;<span fcklang="DlgGenTitle">Advisory Title</span><br />
-					<input id="txtAttTitle" style="width: 100%" type="text" />
-				</td>
-			</tr>
-		</table>
-		<span fcklang="DlgGenStyle">Style</span><br />
-		<input id="txtAttStyle" style="width: 100%" type="text" />
-	</div>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Image Properties dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Image Properties</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script src="fck_image/fck_image.js" type="text/javascript"></script>
+		<script type="text/javascript">
+
+document.write( FCKTools.GetStyleHtml( GetCommonDialogCss() ) ) ;
+
+		</script>
+</head>
+<body scroll="no" style="overflow: hidden">
+	<div id="divInfo">
+		<table cellspacing="1" cellpadding="1" border="0" width="100%" height="100%">
+			<tr>
+				<td>
+					<table cellspacing="0" cellpadding="0" width="100%" border="0">
+						<tr>
+							<td width="100%">
+								<span fcklang="DlgImgURL">URL</span>
+							</td>
+							<td id="tdBrowse" style="display: none" nowrap="nowrap" rowspan="2">
+								&nbsp;
+								<input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server"
+									fcklang="DlgBtnBrowseServer" />
+							</td>
+						</tr>
+						<tr>
+							<td valign="top">
+								<input id="txtUrl" style="width: 100%" type="text" onblur="UpdatePreview();" />
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td>
+					<span fcklang="DlgImgAlt">Short Description</span><br />
+					<input id="txtAlt" style="width: 100%" type="text" /><br />
+				</td>
+			</tr>
+			<tr height="100%">
+				<td valign="top">
+					<table cellspacing="0" cellpadding="0" width="100%" border="0" height="100%">
+						<tr>
+							<td valign="top">
+								<br />
+								<table cellspacing="0" cellpadding="0" border="0">
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgWidth">Width</span>&nbsp;</td>
+										<td>
+											<input type="text" size="3" id="txtWidth" onkeyup="OnSizeChanged('Width',this.value);" /></td>
+										<td rowspan="2">
+											<div id="btnLockSizes" class="BtnLocked" onmouseover="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ) + ' BtnOver';"
+												onmouseout="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' );" title="Lock Sizes"
+												onclick="SwitchLock(this);">
+											</div>
+										</td>
+										<td rowspan="2">
+											<div id="btnResetSize" class="BtnReset" onmouseover="this.className='BtnReset BtnOver';"
+												onmouseout="this.className='BtnReset';" title="Reset Size" onclick="ResetSizes();">
+											</div>
+										</td>
+									</tr>
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgHeight">Height</span>&nbsp;</td>
+										<td>
+											<input type="text" size="3" id="txtHeight" onkeyup="OnSizeChanged('Height',this.value);" /></td>
+									</tr>
+								</table>
+								<br />
+								<table cellspacing="0" cellpadding="0" border="0">
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgBorder">Border</span>&nbsp;</td>
+										<td>
+											<input type="text" size="2" value="" id="txtBorder" onkeyup="UpdatePreview();" /></td>
+									</tr>
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgHSpace">HSpace</span>&nbsp;</td>
+										<td>
+											<input type="text" size="2" id="txtHSpace" onkeyup="UpdatePreview();" /></td>
+									</tr>
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgVSpace">VSpace</span>&nbsp;</td>
+										<td>
+											<input type="text" size="2" id="txtVSpace" onkeyup="UpdatePreview();" /></td>
+									</tr>
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgAlign">Align</span>&nbsp;</td>
+										<td>
+											<select id="cmbAlign" onchange="UpdatePreview();">
+												<option value="" selected="selected"></option>
+												<option fcklang="DlgImgAlignLeft" value="left">Left</option>
+												<option fcklang="DlgImgAlignAbsBottom" value="absBottom">Abs Bottom</option>
+												<option fcklang="DlgImgAlignAbsMiddle" value="absMiddle">Abs Middle</option>
+												<option fcklang="DlgImgAlignBaseline" value="baseline">Baseline</option>
+												<option fcklang="DlgImgAlignBottom" value="bottom">Bottom</option>
+												<option fcklang="DlgImgAlignMiddle" value="middle">Middle</option>
+												<option fcklang="DlgImgAlignRight" value="right">Right</option>
+												<option fcklang="DlgImgAlignTextTop" value="textTop">Text Top</option>
+												<option fcklang="DlgImgAlignTop" value="top">Top</option>
+											</select>
+										</td>
+									</tr>
+								</table>
+							</td>
+							<td>
+								&nbsp;&nbsp;&nbsp;</td>
+							<td width="100%" valign="top">
+								<table cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed">
+									<tr>
+										<td>
+											<span fcklang="DlgImgPreview">Preview</span></td>
+									</tr>
+									<tr>
+										<td valign="top">
+											<iframe class="ImagePreviewArea" src="fck_image/fck_image_preview.html" frameborder="0"
+												marginheight="0" marginwidth="0"></iframe>
+										</td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</div>
+	<div id="divUpload" style="display: none">
+		<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data"
+			action="" onsubmit="return CheckUpload();">
+			<span fcklang="DlgLnkUpload">Upload</span><br />
+			<input id="txtUploadFile" style="width: 100%" type="file" size="40" name="NewFile" /><br />
+			<br />
+			<input id="btnUpload" type="submit" value="Send it to the Server" fcklang="DlgLnkBtnUpload" />
+			<script type="text/javascript">
+				document.write( '<iframe name="UploadWindow" style="display: none" src="' + FCKTools.GetVoidUrl() + '"><\/iframe>' ) ;
+			</script>
+		</form>
+	</div>
+	<div id="divLink" style="display: none">
+		<table cellspacing="1" cellpadding="1" border="0" width="100%">
+			<tr>
+				<td>
+					<div>
+						<span fcklang="DlgLnkURL">URL</span><br />
+						<input id="txtLnkUrl" style="width: 100%" type="text" onblur="UpdatePreview();" />
+					</div>
+					<div id="divLnkBrowseServer" align="right">
+						<input type="button" value="Browse Server" fcklang="DlgBtnBrowseServer" onclick="LnkBrowseServer();" />
+					</div>
+					<div>
+						<span fcklang="DlgLnkTarget">Target</span><br />
+						<select id="cmbLnkTarget">
+							<option value="" fcklang="DlgGenNotSet" selected="selected">&lt;not set&gt;</option>
+							<option value="_blank" fcklang="DlgLnkTargetBlank">New Window (_blank)</option>
+							<option value="_top" fcklang="DlgLnkTargetTop">Topmost Window (_top)</option>
+							<option value="_self" fcklang="DlgLnkTargetSelf">Same Window (_self)</option>
+							<option value="_parent" fcklang="DlgLnkTargetParent">Parent Window (_parent)</option>
+						</select>
+					</div>
+				</td>
+			</tr>
+		</table>
+	</div>
+	<div id="divAdvanced" style="display: none">
+		<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+			<tr>
+				<td valign="top" width="50%">
+					<span fcklang="DlgGenId">Id</span><br />
+					<input id="txtAttId" style="width: 100%" type="text" />
+				</td>
+				<td width="1">
+					&nbsp;&nbsp;</td>
+				<td valign="top">
+					<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+						<tr>
+							<td width="60%">
+								<span fcklang="DlgGenLangDir">Language Direction</span><br />
+								<select id="cmbAttLangDir" style="width: 100%">
+									<option value="" fcklang="DlgGenNotSet" selected="selected">&lt;not set&gt;</option>
+									<option value="ltr" fcklang="DlgGenLangDirLtr">Left to Right (LTR)</option>
+									<option value="rtl" fcklang="DlgGenLangDirRtl">Right to Left (RTL)</option>
+								</select>
+							</td>
+							<td width="1%">
+								&nbsp;&nbsp;</td>
+							<td nowrap="nowrap">
+								<span fcklang="DlgGenLangCode">Language Code</span><br />
+								<input id="txtAttLangCode" style="width: 100%" type="text" />&nbsp;
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td colspan="3">
+					&nbsp;</td>
+			</tr>
+			<tr>
+				<td colspan="3">
+					<span fcklang="DlgGenLongDescr">Long Description URL</span><br />
+					<input id="txtLongDesc" style="width: 100%" type="text" />
+				</td>
+			</tr>
+			<tr>
+				<td colspan="3">
+					&nbsp;</td>
+			</tr>
+			<tr>
+				<td valign="top">
+					<span fcklang="DlgGenClass">Stylesheet Classes</span><br />
+					<input id="txtAttClasses" style="width: 100%" type="text" />
+				</td>
+				<td>
+				</td>
+				<td valign="top">
+					&nbsp;<span fcklang="DlgGenTitle">Advisory Title</span><br />
+					<input id="txtAttTitle" style="width: 100%" type="text" />
+				</td>
+			</tr>
+		</table>
+		<span fcklang="DlgGenStyle">Style</span><br />
+		<input id="txtAttStyle" style="width: 100%" type="text" />
+	</div>
+</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_link/fck_link.js
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_link/fck_link.js	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_link/fck_link.js	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,893 +1,893 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Scripts related to the Link dialog window (see fck_link.html).
- */
-
-var dialog	= window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-var FCK			= oEditor.FCK ;
-var FCKLang		= oEditor.FCKLang ;
-var FCKConfig	= oEditor.FCKConfig ;
-var FCKRegexLib	= oEditor.FCKRegexLib ;
-var FCKTools	= oEditor.FCKTools ;
-
-//#### Dialog Tabs
-
-// Set the dialog tabs.
-dialog.AddTab( 'Info', FCKLang.DlgLnkInfoTab ) ;
-
-if ( !FCKConfig.LinkDlgHideTarget )
-	dialog.AddTab( 'Target', FCKLang.DlgLnkTargetTab, true ) ;
-
-if ( FCKConfig.LinkUpload )
-	dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload, true ) ;
-
-if ( !FCKConfig.LinkDlgHideAdvanced )
-	dialog.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
-
-// Function called when a dialog tag is selected.
-function OnDialogTabChange( tabCode )
-{
-	ShowE('divInfo'		, ( tabCode == 'Info' ) ) ;
-	ShowE('divTarget'	, ( tabCode == 'Target' ) ) ;
-	ShowE('divUpload'	, ( tabCode == 'Upload' ) ) ;
-	ShowE('divAttribs'	, ( tabCode == 'Advanced' ) ) ;
-
-	dialog.SetAutoSize( true ) ;
-}
-
-//#### Regular Expressions library.
-var oRegex = new Object() ;
-
-oRegex.UriProtocol = /^(((http|https|ftp|news):\/\/)|mailto:)/gi ;
-
-oRegex.UrlOnChangeProtocol = /^(http|https|ftp|news):\/\/(?=.)/gi ;
-
-oRegex.UrlOnChangeTestOther = /^((javascript:)|[#\/\.])/gi ;
-
-oRegex.ReserveTarget = /^_(blank|self|top|parent)$/i ;
-
-oRegex.PopupUri = /^javascript:void\(\s*window.open\(\s*'([^']+)'\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*\)\s*$/ ;
-
-// Accessible popups
-oRegex.OnClickPopup = /^\s*on[cC]lick="\s*window.open\(\s*this\.href\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*;\s*return\s*false;*\s*"$/ ;
-
-oRegex.PopupFeatures = /(?:^|,)([^=]+)=(\d+|yes|no)/gi ;
-
-//#### Parser Functions
-
-var oParser = new Object() ;
-
-// This method simply returns the two inputs in numerical order. You can even
-// provide strings, as the method would parseInt() the values.
-oParser.SortNumerical = function(a, b)
-{
-	return parseInt( a, 10 ) - parseInt( b, 10 ) ;
-}
-
-oParser.ParseEMailParams = function(sParams)
-{
-	// Initialize the oEMailParams object.
-	var oEMailParams = new Object() ;
-	oEMailParams.Subject = '' ;
-	oEMailParams.Body = '' ;
-
-	var aMatch = sParams.match( /(^|^\?|&)subject=([^&]+)/i ) ;
-	if ( aMatch ) oEMailParams.Subject = decodeURIComponent( aMatch[2] ) ;
-
-	aMatch = sParams.match( /(^|^\?|&)body=([^&]+)/i ) ;
-	if ( aMatch ) oEMailParams.Body = decodeURIComponent( aMatch[2] ) ;
-
-	return oEMailParams ;
-}
-
-// This method returns either an object containing the email info, or FALSE
-// if the parameter is not an email link.
-oParser.ParseEMailUri = function( sUrl )
-{
-	// Initializes the EMailInfo object.
-	var oEMailInfo = new Object() ;
-	oEMailInfo.Address = '' ;
-	oEMailInfo.Subject = '' ;
-	oEMailInfo.Body = '' ;
-
-	var aLinkInfo = sUrl.match( /^(\w+):(.*)$/ ) ;
-	if ( aLinkInfo && aLinkInfo[1] == 'mailto' )
-	{
-		// This seems to be an unprotected email link.
-		var aParts = aLinkInfo[2].match( /^([^\?]+)\??(.+)?/ ) ;
-		if ( aParts )
-		{
-			// Set the e-mail address.
-			oEMailInfo.Address = aParts[1] ;
-
-			// Look for the optional e-mail parameters.
-			if ( aParts[2] )
-			{
-				var oEMailParams = oParser.ParseEMailParams( aParts[2] ) ;
-				oEMailInfo.Subject = oEMailParams.Subject ;
-				oEMailInfo.Body = oEMailParams.Body ;
-			}
-		}
-		return oEMailInfo ;
-	}
-	else if ( aLinkInfo && aLinkInfo[1] == 'javascript' )
-	{
-		// This may be a protected email.
-
-		// Try to match the url against the EMailProtectionFunction.
-		var func = FCKConfig.EMailProtectionFunction ;
-		if ( func != null )
-		{
-			try
-			{
-				// Escape special chars.
-				func = func.replace( /([\/^$*+.?()\[\]])/g, '\\$1' ) ;
-
-				// Define the possible keys.
-				var keys = new Array('NAME', 'DOMAIN', 'SUBJECT', 'BODY') ;
-
-				// Get the order of the keys (hold them in the array <pos>) and
-				// the function replaced by regular expression patterns.
-				var sFunc = func ;
-				var pos = new Array() ;
-				for ( var i = 0 ; i < keys.length ; i ++ )
-				{
-					var rexp = new RegExp( keys[i] ) ;
-					var p = func.search( rexp ) ;
-					if ( p >= 0 )
-					{
-						sFunc = sFunc.replace( rexp, '\'([^\']*)\'' ) ;
-						pos[pos.length] = p + ':' + keys[i] ;
-					}
-				}
-
-				// Sort the available keys.
-				pos.sort( oParser.SortNumerical ) ;
-
-				// Replace the excaped single quotes in the url, such they do
-				// not affect the regexp afterwards.
-				aLinkInfo[2] = aLinkInfo[2].replace( /\\'/g, '###SINGLE_QUOTE###' ) ;
-
-				// Create the regexp and execute it.
-				var rFunc = new RegExp( '^' + sFunc + '$' ) ;
-				var aMatch = rFunc.exec( aLinkInfo[2] ) ;
-				if ( aMatch )
-				{
-					var aInfo = new Array();
-					for ( var i = 1 ; i < aMatch.length ; i ++ )
-					{
-						var k = pos[i-1].match(/^\d+:(.+)$/) ;
-						aInfo[k[1]] = aMatch[i].replace(/###SINGLE_QUOTE###/g, '\'') ;
-					}
-
-					// Fill the EMailInfo object that will be returned
-					oEMailInfo.Address = aInfo['NAME'] + '@' + aInfo['DOMAIN'] ;
-					oEMailInfo.Subject = decodeURIComponent( aInfo['SUBJECT'] ) ;
-					oEMailInfo.Body = decodeURIComponent( aInfo['BODY'] ) ;
-
-					return oEMailInfo ;
-				}
-			}
-			catch (e)
-			{
-			}
-		}
-
-		// Try to match the email against the encode protection.
-		var aMatch = aLinkInfo[2].match( /^location\.href='mailto:'\+(String\.fromCharCode\([\d,]+\))\+'(.*)'$/ ) ;
-		if ( aMatch )
-		{
-			// The link is encoded
-			oEMailInfo.Address = eval( aMatch[1] ) ;
-			if ( aMatch[2] )
-			{
-				var oEMailParams = oParser.ParseEMailParams( aMatch[2] ) ;
-				oEMailInfo.Subject = oEMailParams.Subject ;
-				oEMailInfo.Body = oEMailParams.Body ;
-			}
-			return oEMailInfo ;
-		}
-	}
-	return false;
-}
-
-oParser.CreateEMailUri = function( address, subject, body )
-{
-	// Switch for the EMailProtection setting.
-	switch ( FCKConfig.EMailProtection )
-	{
-		case 'function' :
-			var func = FCKConfig.EMailProtectionFunction ;
-			if ( func == null )
-			{
-				if ( FCKConfig.Debug )
-				{
-					alert('EMailProtection alert!\nNo function defined. Please set "FCKConfig.EMailProtectionFunction"') ;
-				}
-				return '';
-			}
-
-			// Split the email address into name and domain parts.
-			var aAddressParts = address.split( '@', 2 ) ;
-			if ( aAddressParts[1] == undefined )
-			{
-				aAddressParts[1] = '' ;
-			}
-
-			// Replace the keys by their values (embedded in single quotes).
-			func = func.replace(/NAME/g, "'" + aAddressParts[0].replace(/'/g, '\\\'') + "'") ;
-			func = func.replace(/DOMAIN/g, "'" + aAddressParts[1].replace(/'/g, '\\\'') + "'") ;
-			func = func.replace(/SUBJECT/g, "'" + encodeURIComponent( subject ).replace(/'/g, '\\\'') + "'") ;
-			func = func.replace(/BODY/g, "'" + encodeURIComponent( body ).replace(/'/g, '\\\'') + "'") ;
-
-			return 'javascript:' + func ;
-
-		case 'encode' :
-			var aParams = [] ;
-			var aAddressCode = [] ;
-
-			if ( subject.length > 0 )
-				aParams.push( 'subject='+ encodeURIComponent( subject ) ) ;
-			if ( body.length > 0 )
-				aParams.push( 'body=' + encodeURIComponent( body ) ) ;
-			for ( var i = 0 ; i < address.length ; i++ )
-				aAddressCode.push( address.charCodeAt( i ) ) ;
-
-			return 'javascript:location.href=\'mailto:\'+String.fromCharCode(' + aAddressCode.join( ',' ) + ')+\'?' + aParams.join( '&' ) + '\'' ;
-	}
-
-	// EMailProtection 'none'
-
-	var sBaseUri = 'mailto:' + address ;
-
-	var sParams = '' ;
-
-	if ( subject.length > 0 )
-		sParams = '?subject=' + encodeURIComponent( subject ) ;
-
-	if ( body.length > 0 )
-	{
-		sParams += ( sParams.length == 0 ? '?' : '&' ) ;
-		sParams += 'body=' + encodeURIComponent( body ) ;
-	}
-
-	return sBaseUri + sParams ;
-}
-
-//#### Initialization Code
-
-// oLink: The actual selected link in the editor.
-var oLink = dialog.Selection.GetSelection().MoveToAncestorNode( 'A' ) ;
-if ( oLink )
-	FCK.Selection.SelectNode( oLink ) ;
-
-window.onload = function()
-{
-	// Translate the dialog box texts.
-	oEditor.FCKLanguageManager.TranslatePage(document) ;
-
-	// Fill the Anchor Names and Ids combos.
-	LoadAnchorNamesAndIds() ;
-
-	// Load the selected link information (if any).
-	LoadSelection() ;
-
-	// Update the dialog box.
-	SetLinkType( GetE('cmbLinkType').value ) ;
-
-	// Show/Hide the "Browse Server" button.
-	GetE('divBrowseServer').style.display = FCKConfig.LinkBrowser ? '' : 'none' ;
-
-	// Show the initial dialog content.
-	GetE('divInfo').style.display = '' ;
-
-	// Set the actual uploader URL.
-	if ( FCKConfig.LinkUpload )
-		GetE('frmUpload').action = FCKConfig.LinkUploadURL ;
-
-	// Set the default target (from configuration).
-	SetDefaultTarget() ;
-
-	// Activate the "OK" button.
-	dialog.SetOkButton( true ) ;
-
-	// Select the first field.
-	switch( GetE('cmbLinkType').value )
-	{
-		case 'url' :
-			SelectField( 'txtUrl' ) ;
-			break ;
-		case 'email' :
-			SelectField( 'txtEMailAddress' ) ;
-			break ;
-		case 'anchor' :
-			if ( GetE('divSelAnchor').style.display != 'none' )
-				SelectField( 'cmbAnchorName' ) ;
-			else
-				SelectField( 'cmbLinkType' ) ;
-	}
-}
-
-var bHasAnchors ;
-
-function LoadAnchorNamesAndIds()
-{
-	// Since version 2.0, the anchors are replaced in the DOM by IMGs so the user see the icon
-	// to edit them. So, we must look for that images now.
-	var aAnchors = new Array() ;
-	var i ;
-	var oImages = oEditor.FCK.EditorDocument.getElementsByTagName( 'IMG' ) ;
-	for( i = 0 ; i < oImages.length ; i++ )
-	{
-		if ( oImages[i].getAttribute('_fckanchor') )
-			aAnchors[ aAnchors.length ] = oEditor.FCK.GetRealElement( oImages[i] ) ;
-	}
-
-	// Add also real anchors
-	var oLinks = oEditor.FCK.EditorDocument.getElementsByTagName( 'A' ) ;
-	for( i = 0 ; i < oLinks.length ; i++ )
-	{
-		if ( oLinks[i].name && ( oLinks[i].name.length > 0 ) )
-			aAnchors[ aAnchors.length ] = oLinks[i] ;
-	}
-
-	var aIds = FCKTools.GetAllChildrenIds( oEditor.FCK.EditorDocument.body ) ;
-
-	bHasAnchors = ( aAnchors.length > 0 || aIds.length > 0 ) ;
-
-	for ( i = 0 ; i < aAnchors.length ; i++ )
-	{
-		var sName = aAnchors[i].name ;
-		if ( sName && sName.length > 0 )
-			FCKTools.AddSelectOption( GetE('cmbAnchorName'), sName, sName ) ;
-	}
-
-	for ( i = 0 ; i < aIds.length ; i++ )
-	{
-		FCKTools.AddSelectOption( GetE('cmbAnchorId'), aIds[i], aIds[i] ) ;
-	}
-
-	ShowE( 'divSelAnchor'	, bHasAnchors ) ;
-	ShowE( 'divNoAnchor'	, !bHasAnchors ) ;
-}
-
-function LoadSelection()
-{
-	if ( !oLink ) return ;
-
-	var sType = 'url' ;
-
-	// Get the actual Link href.
-	var sHRef = oLink.getAttribute( '_fcksavedurl' ) ;
-	if ( sHRef == null )
-		sHRef = oLink.getAttribute( 'href' , 2 ) || '' ;
-
-	// Look for a popup javascript link.
-	var oPopupMatch = oRegex.PopupUri.exec( sHRef ) ;
-	if( oPopupMatch )
-	{
-		GetE('cmbTarget').value = 'popup' ;
-		sHRef = oPopupMatch[1] ;
-		FillPopupFields( oPopupMatch[2], oPopupMatch[3] ) ;
-		SetTarget( 'popup' ) ;
-	}
-
-	// Accessible popups, the popup data is in the onclick attribute
-	if ( !oPopupMatch )
-	{
-		var onclick = oLink.getAttribute( 'onclick_fckprotectedatt' ) ;
-		if ( onclick )
-		{
-			// Decode the protected string
-			onclick = decodeURIComponent( onclick ) ;
-
-			oPopupMatch = oRegex.OnClickPopup.exec( onclick ) ;
-			if( oPopupMatch )
-			{
-				GetE( 'cmbTarget' ).value = 'popup' ;
-				FillPopupFields( oPopupMatch[1], oPopupMatch[2] ) ;
-				SetTarget( 'popup' ) ;
-			}
-		}
-	}
-
-	// Search for the protocol.
-	var sProtocol = oRegex.UriProtocol.exec( sHRef ) ;
-
-	// Search for a protected email link.
-	var oEMailInfo = oParser.ParseEMailUri( sHRef );
-
-	if ( oEMailInfo )
-	{
-		sType = 'email' ;
-
-		GetE('txtEMailAddress').value = oEMailInfo.Address ;
-		GetE('txtEMailSubject').value = oEMailInfo.Subject ;
-		GetE('txtEMailBody').value    = oEMailInfo.Body ;
-	}
-	else if ( sProtocol )
-	{
-		sProtocol = sProtocol[0].toLowerCase() ;
-		GetE('cmbLinkProtocol').value = sProtocol ;
-
-		// Remove the protocol and get the remaining URL.
-		var sUrl = sHRef.replace( oRegex.UriProtocol, '' ) ;
-		sType = 'url' ;
-		GetE('txtUrl').value = sUrl ;
-	}
-	else if ( sHRef.substr(0,1) == '#' && sHRef.length > 1 )	// It is an anchor link.
-	{
-		sType = 'anchor' ;
-		GetE('cmbAnchorName').value = GetE('cmbAnchorId').value = sHRef.substr(1) ;
-	}
-	else					// It is another type of link.
-	{
-		sType = 'url' ;
-
-		GetE('cmbLinkProtocol').value = '' ;
-		GetE('txtUrl').value = sHRef ;
-	}
-
-	if ( !oPopupMatch )
-	{
-		// Get the target.
-		var sTarget = oLink.target ;
-
-		if ( sTarget && sTarget.length > 0 )
-		{
-			if ( oRegex.ReserveTarget.test( sTarget ) )
-			{
-				sTarget = sTarget.toLowerCase() ;
-				GetE('cmbTarget').value = sTarget ;
-			}
-			else
-				GetE('cmbTarget').value = 'frame' ;
-			GetE('txtTargetFrame').value = sTarget ;
-		}
-	}
-
-	// Get Advances Attributes
-	GetE('txtAttId').value			= oLink.id ;
-	GetE('txtAttName').value		= oLink.name ;
-	GetE('cmbAttLangDir').value		= oLink.dir ;
-	GetE('txtAttLangCode').value	= oLink.lang ;
-	GetE('txtAttAccessKey').value	= oLink.accessKey ;
-	GetE('txtAttTabIndex').value	= oLink.tabIndex <= 0 ? '' : oLink.tabIndex ;
-	GetE('txtAttTitle').value		= oLink.title ;
-	GetE('txtAttContentType').value	= oLink.type ;
-	GetE('txtAttCharSet').value		= oLink.charset ;
-
-	var sClass ;
-	if ( oEditor.FCKBrowserInfo.IsIE )
-	{
-		sClass	= oLink.getAttribute('className',2) || '' ;
-		// Clean up temporary classes for internal use:
-		sClass = sClass.replace( FCKRegexLib.FCK_Class, '' ) ;
-
-		GetE('txtAttStyle').value	= oLink.style.cssText ;
-	}
-	else
-	{
-		sClass	= oLink.getAttribute('class',2) || '' ;
-		GetE('txtAttStyle').value	= oLink.getAttribute('style',2) || '' ;
-	}
-	GetE('txtAttClasses').value	= sClass ;
-
-	// Update the Link type combo.
-	GetE('cmbLinkType').value = sType ;
-}
-
-//#### Link type selection.
-function SetLinkType( linkType )
-{
-	ShowE('divLinkTypeUrl'		, (linkType == 'url') ) ;
-	ShowE('divLinkTypeAnchor'	, (linkType == 'anchor') ) ;
-	ShowE('divLinkTypeEMail'	, (linkType == 'email') ) ;
-
-	if ( !FCKConfig.LinkDlgHideTarget )
-		dialog.SetTabVisibility( 'Target'	, (linkType == 'url') ) ;
-
-	if ( FCKConfig.LinkUpload )
-		dialog.SetTabVisibility( 'Upload'	, (linkType == 'url') ) ;
-
-	if ( !FCKConfig.LinkDlgHideAdvanced )
-		dialog.SetTabVisibility( 'Advanced'	, (linkType != 'anchor' || bHasAnchors) ) ;
-
-	if ( linkType == 'email' )
-		dialog.SetAutoSize( true ) ;
-}
-
-//#### Target type selection.
-function SetTarget( targetType )
-{
-	GetE('tdTargetFrame').style.display	= ( targetType == 'popup' ? 'none' : '' ) ;
-	GetE('tdPopupName').style.display	=
-	GetE('tablePopupFeatures').style.display = ( targetType == 'popup' ? '' : 'none' ) ;
-
-	switch ( targetType )
-	{
-		case "_blank" :
-		case "_self" :
-		case "_parent" :
-		case "_top" :
-			GetE('txtTargetFrame').value = targetType ;
-			break ;
-		case "" :
-			GetE('txtTargetFrame').value = '' ;
-			break ;
-	}
-
-	if ( targetType == 'popup' )
-		dialog.SetAutoSize( true ) ;
-}
-
-//#### Called while the user types the URL.
-function OnUrlChange()
-{
-	var sUrl = GetE('txtUrl').value ;
-	var sProtocol = oRegex.UrlOnChangeProtocol.exec( sUrl ) ;
-
-	if ( sProtocol )
-	{
-		sUrl = sUrl.substr( sProtocol[0].length ) ;
-		GetE('txtUrl').value = sUrl ;
-		GetE('cmbLinkProtocol').value = sProtocol[0].toLowerCase() ;
-	}
-	else if ( oRegex.UrlOnChangeTestOther.test( sUrl ) )
-	{
-		GetE('cmbLinkProtocol').value = '' ;
-	}
-}
-
-//#### Called while the user types the target name.
-function OnTargetNameChange()
-{
-	var sFrame = GetE('txtTargetFrame').value ;
-
-	if ( sFrame.length == 0 )
-		GetE('cmbTarget').value = '' ;
-	else if ( oRegex.ReserveTarget.test( sFrame ) )
-		GetE('cmbTarget').value = sFrame.toLowerCase() ;
-	else
-		GetE('cmbTarget').value = 'frame' ;
-}
-
-// Accessible popups
-function BuildOnClickPopup()
-{
-	var sWindowName = "'" + GetE('txtPopupName').value.replace(/\W/gi, "") + "'" ;
-
-	var sFeatures = '' ;
-	var aChkFeatures = document.getElementsByName( 'chkFeature' ) ;
-	for ( var i = 0 ; i < aChkFeatures.length ; i++ )
-	{
-		if ( i > 0 ) sFeatures += ',' ;
-		sFeatures += aChkFeatures[i].value + '=' + ( aChkFeatures[i].checked ? 'yes' : 'no' ) ;
-	}
-
-	if ( GetE('txtPopupWidth').value.length > 0 )	sFeatures += ',width=' + GetE('txtPopupWidth').value ;
-	if ( GetE('txtPopupHeight').value.length > 0 )	sFeatures += ',height=' + GetE('txtPopupHeight').value ;
-	if ( GetE('txtPopupLeft').value.length > 0 )	sFeatures += ',left=' + GetE('txtPopupLeft').value ;
-	if ( GetE('txtPopupTop').value.length > 0 )		sFeatures += ',top=' + GetE('txtPopupTop').value ;
-
-	if ( sFeatures != '' )
-		sFeatures = sFeatures + ",status" ;
-
-	return ( "window.open(this.href," + sWindowName + ",'" + sFeatures + "'); return false" ) ;
-}
-
-//#### Fills all Popup related fields.
-function FillPopupFields( windowName, features )
-{
-	if ( windowName )
-		GetE('txtPopupName').value = windowName ;
-
-	var oFeatures = new Object() ;
-	var oFeaturesMatch ;
-	while( ( oFeaturesMatch = oRegex.PopupFeatures.exec( features ) ) != null )
-	{
-		var sValue = oFeaturesMatch[2] ;
-		if ( sValue == ( 'yes' || '1' ) )
-			oFeatures[ oFeaturesMatch[1] ] = true ;
-		else if ( ! isNaN( sValue ) && sValue != 0 )
-			oFeatures[ oFeaturesMatch[1] ] = sValue ;
-	}
-
-	// Update all features check boxes.
-	var aChkFeatures = document.getElementsByName('chkFeature') ;
-	for ( var i = 0 ; i < aChkFeatures.length ; i++ )
-	{
-		if ( oFeatures[ aChkFeatures[i].value ] )
-			aChkFeatures[i].checked = true ;
-	}
-
-	// Update position and size text boxes.
-	if ( oFeatures['width'] )	GetE('txtPopupWidth').value		= oFeatures['width'] ;
-	if ( oFeatures['height'] )	GetE('txtPopupHeight').value	= oFeatures['height'] ;
-	if ( oFeatures['left'] )	GetE('txtPopupLeft').value		= oFeatures['left'] ;
-	if ( oFeatures['top'] )		GetE('txtPopupTop').value		= oFeatures['top'] ;
-}
-
-//#### The OK button was hit.
-function Ok()
-{
-	var sUri, sInnerHtml ;
-	oEditor.FCKUndo.SaveUndoStep() ;
-
-	switch ( GetE('cmbLinkType').value )
-	{
-		case 'url' :
-			sUri = GetE('txtUrl').value ;
-
-			if ( sUri.length == 0 )
-			{
-				alert( FCKLang.DlnLnkMsgNoUrl ) ;
-				return false ;
-			}
-
-			sUri = GetE('cmbLinkProtocol').value + sUri ;
-
-			break ;
-
-		case 'email' :
-			sUri = GetE('txtEMailAddress').value ;
-
-			if ( sUri.length == 0 )
-			{
-				alert( FCKLang.DlnLnkMsgNoEMail ) ;
-				return false ;
-			}
-
-			sUri = oParser.CreateEMailUri(
-				sUri,
-				GetE('txtEMailSubject').value,
-				GetE('txtEMailBody').value ) ;
-			break ;
-
-		case 'anchor' :
-			var sAnchor = GetE('cmbAnchorName').value ;
-			if ( sAnchor.length == 0 ) sAnchor = GetE('cmbAnchorId').value ;
-
-			if ( sAnchor.length == 0 )
-			{
-				alert( FCKLang.DlnLnkMsgNoAnchor ) ;
-				return false ;
-			}
-
-			sUri = '#' + sAnchor ;
-			break ;
-	}
-
-	// If no link is selected, create a new one (it may result in more than one link creation - #220).
-	var aLinks = oLink ? [ oLink ] : oEditor.FCK.CreateLink( sUri, true ) ;
-
-	// If no selection, no links are created, so use the uri as the link text (by dom, 2006-05-26)
-	var aHasSelection = ( aLinks.length > 0 ) ;
-	if ( !aHasSelection )
-	{
-		sInnerHtml = sUri;
-
-		// Built a better text for empty links.
-		switch ( GetE('cmbLinkType').value )
-		{
-			// anchor: use old behavior --> return true
-			case 'anchor':
-				sInnerHtml = sInnerHtml.replace( /^#/, '' ) ;
-				break ;
-
-			// url: try to get path
-			case 'url':
-				var oLinkPathRegEx = new RegExp("//?([^?\"']+)([?].*)?$") ;
-				var asLinkPath = oLinkPathRegEx.exec( sUri ) ;
-				if (asLinkPath != null)
-					sInnerHtml = asLinkPath[1];  // use matched path
-				break ;
-
-			// mailto: try to get email address
-			case 'email':
-				sInnerHtml = GetE('txtEMailAddress').value ;
-				break ;
-		}
-
-		// Create a new (empty) anchor.
-		aLinks = [ oEditor.FCK.InsertElement( 'a' ) ] ;
-	}
-
-	for ( var i = 0 ; i < aLinks.length ; i++ )
-	{
-		oLink = aLinks[i] ;
-
-		if ( aHasSelection )
-			sInnerHtml = oLink.innerHTML ;		// Save the innerHTML (IE changes it if it is like an URL).
-
-		oLink.href = sUri ;
-		SetAttribute( oLink, '_fcksavedurl', sUri ) ;
-
-		var onclick;
-		// Accessible popups
-		if( GetE('cmbTarget').value == 'popup' )
-		{
-			onclick = BuildOnClickPopup() ;
-			// Encode the attribute
-			onclick = encodeURIComponent( " onclick=\"" + onclick + "\"" )  ;
-			SetAttribute( oLink, 'onclick_fckprotectedatt', onclick ) ;
-		}
-		else
-		{
-			// Check if the previous onclick was for a popup:
-			// In that case remove the onclick handler.
-			onclick = oLink.getAttribute( 'onclick_fckprotectedatt' ) ;
-			if ( onclick )
-			{
-				// Decode the protected string
-				onclick = decodeURIComponent( onclick ) ;
-
-				if( oRegex.OnClickPopup.test( onclick ) )
-					SetAttribute( oLink, 'onclick_fckprotectedatt', '' ) ;
-			}
-		}
-
-		oLink.innerHTML = sInnerHtml ;		// Set (or restore) the innerHTML
-
-		// Target
-		if( GetE('cmbTarget').value != 'popup' )
-			SetAttribute( oLink, 'target', GetE('txtTargetFrame').value ) ;
-		else
-			SetAttribute( oLink, 'target', null ) ;
-
-		// Let's set the "id" only for the first link to avoid duplication.
-		if ( i == 0 )
-			SetAttribute( oLink, 'id', GetE('txtAttId').value ) ;
-
-		// Advances Attributes
-		SetAttribute( oLink, 'name'		, GetE('txtAttName').value ) ;
-		SetAttribute( oLink, 'dir'		, GetE('cmbAttLangDir').value ) ;
-		SetAttribute( oLink, 'lang'		, GetE('txtAttLangCode').value ) ;
-		SetAttribute( oLink, 'accesskey', GetE('txtAttAccessKey').value ) ;
-		SetAttribute( oLink, 'tabindex'	, ( GetE('txtAttTabIndex').value > 0 ? GetE('txtAttTabIndex').value : null ) ) ;
-		SetAttribute( oLink, 'title'	, GetE('txtAttTitle').value ) ;
-		SetAttribute( oLink, 'type'		, GetE('txtAttContentType').value ) ;
-		SetAttribute( oLink, 'charset'	, GetE('txtAttCharSet').value ) ;
-
-		if ( oEditor.FCKBrowserInfo.IsIE )
-		{
-			var sClass = GetE('txtAttClasses').value ;
-			// If it's also an anchor add an internal class
-			if ( GetE('txtAttName').value.length != 0 )
-				sClass += ' FCK__AnchorC' ;
-			SetAttribute( oLink, 'className', sClass ) ;
-
-			oLink.style.cssText = GetE('txtAttStyle').value ;
-		}
-		else
-		{
-			SetAttribute( oLink, 'class', GetE('txtAttClasses').value ) ;
-			SetAttribute( oLink, 'style', GetE('txtAttStyle').value ) ;
-		}
-	}
-
-	// Select the (first) link.
-	oEditor.FCKSelection.SelectNode( aLinks[0] );
-
-	return true ;
-}
-
-function BrowseServer()
-{
-	OpenFileBrowser( FCKConfig.LinkBrowserURL, FCKConfig.LinkBrowserWindowWidth, FCKConfig.LinkBrowserWindowHeight ) ;
-}
-
-function SetUrl( url )
-{
-	GetE('txtUrl').value = url ;
-	OnUrlChange() ;
-	dialog.SetSelectedTab( 'Info' ) ;
-}
-
-function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
-{
-	// Remove animation
-	window.parent.Throbber.Hide() ;
-	GetE( 'divUpload' ).style.display  = '' ;
-
-	switch ( errorNumber )
-	{
-		case 0 :	// No errors
-			alert( 'Your file has been successfully uploaded' ) ;
-			break ;
-		case 1 :	// Custom error
-			alert( customMsg ) ;
-			return ;
-		case 101 :	// Custom warning
-			alert( customMsg ) ;
-			break ;
-		case 201 :
-			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
-			break ;
-		case 202 :
-			alert( 'Invalid file type' ) ;
-			return ;
-		case 203 :
-			alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
-			return ;
-		case 500 :
-			alert( 'The connector is disabled' ) ;
-			break ;
-		default :
-			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
-			return ;
-	}
-
-	SetUrl( fileUrl ) ;
-	GetE('frmUpload').reset() ;
-}
-
-var oUploadAllowedExtRegex	= new RegExp( FCKConfig.LinkUploadAllowedExtensions, 'i' ) ;
-var oUploadDeniedExtRegex	= new RegExp( FCKConfig.LinkUploadDeniedExtensions, 'i' ) ;
-
-function CheckUpload()
-{
-	var sFile = GetE('txtUploadFile').value ;
-
-	if ( sFile.length == 0 )
-	{
-		alert( 'Please select a file to upload' ) ;
-		return false ;
-	}
-
-	if ( ( FCKConfig.LinkUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
-		( FCKConfig.LinkUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
-	{
-		OnUploadCompleted( 202 ) ;
-		return false ;
-	}
-
-	// Show animation
-	window.parent.Throbber.Show( 100 ) ;
-	GetE( 'divUpload' ).style.display  = 'none' ;
-
-	return true ;
-}
-
-function SetDefaultTarget()
-{
-	var target = FCKConfig.DefaultLinkTarget || '' ;
-
-	if ( oLink || target.length == 0 )
-		return ;
-
-	switch ( target )
-	{
-		case '_blank' :
-		case '_self' :
-		case '_parent' :
-		case '_top' :
-			GetE('cmbTarget').value = target ;
-			break ;
-		default :
-			GetE('cmbTarget').value = 'frame' ;
-			break ;
-	}
-
-	GetE('txtTargetFrame').value = target ;
-}
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Scripts related to the Link dialog window (see fck_link.html).
+ */
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
+var FCK			= oEditor.FCK ;
+var FCKLang		= oEditor.FCKLang ;
+var FCKConfig	= oEditor.FCKConfig ;
+var FCKRegexLib	= oEditor.FCKRegexLib ;
+var FCKTools	= oEditor.FCKTools ;
+
+//#### Dialog Tabs
+
+// Set the dialog tabs.
+dialog.AddTab( 'Info', FCKLang.DlgLnkInfoTab ) ;
+
+if ( !FCKConfig.LinkDlgHideTarget )
+	dialog.AddTab( 'Target', FCKLang.DlgLnkTargetTab, true ) ;
+
+if ( FCKConfig.LinkUpload )
+	dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload, true ) ;
+
+if ( !FCKConfig.LinkDlgHideAdvanced )
+	dialog.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
+
+// Function called when a dialog tag is selected.
+function OnDialogTabChange( tabCode )
+{
+	ShowE('divInfo'		, ( tabCode == 'Info' ) ) ;
+	ShowE('divTarget'	, ( tabCode == 'Target' ) ) ;
+	ShowE('divUpload'	, ( tabCode == 'Upload' ) ) ;
+	ShowE('divAttribs'	, ( tabCode == 'Advanced' ) ) ;
+
+	dialog.SetAutoSize( true ) ;
+}
+
+//#### Regular Expressions library.
+var oRegex = new Object() ;
+
+oRegex.UriProtocol = /^(((http|https|ftp|news):\/\/)|mailto:)/gi ;
+
+oRegex.UrlOnChangeProtocol = /^(http|https|ftp|news):\/\/(?=.)/gi ;
+
+oRegex.UrlOnChangeTestOther = /^((javascript:)|[#\/\.])/gi ;
+
+oRegex.ReserveTarget = /^_(blank|self|top|parent)$/i ;
+
+oRegex.PopupUri = /^javascript:void\(\s*window.open\(\s*'([^']+)'\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*\)\s*$/ ;
+
+// Accessible popups
+oRegex.OnClickPopup = /^\s*on[cC]lick="\s*window.open\(\s*this\.href\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*;\s*return\s*false;*\s*"$/ ;
+
+oRegex.PopupFeatures = /(?:^|,)([^=]+)=(\d+|yes|no)/gi ;
+
+//#### Parser Functions
+
+var oParser = new Object() ;
+
+// This method simply returns the two inputs in numerical order. You can even
+// provide strings, as the method would parseInt() the values.
+oParser.SortNumerical = function(a, b)
+{
+	return parseInt( a, 10 ) - parseInt( b, 10 ) ;
+}
+
+oParser.ParseEMailParams = function(sParams)
+{
+	// Initialize the oEMailParams object.
+	var oEMailParams = new Object() ;
+	oEMailParams.Subject = '' ;
+	oEMailParams.Body = '' ;
+
+	var aMatch = sParams.match( /(^|^\?|&)subject=([^&]+)/i ) ;
+	if ( aMatch ) oEMailParams.Subject = decodeURIComponent( aMatch[2] ) ;
+
+	aMatch = sParams.match( /(^|^\?|&)body=([^&]+)/i ) ;
+	if ( aMatch ) oEMailParams.Body = decodeURIComponent( aMatch[2] ) ;
+
+	return oEMailParams ;
+}
+
+// This method returns either an object containing the email info, or FALSE
+// if the parameter is not an email link.
+oParser.ParseEMailUri = function( sUrl )
+{
+	// Initializes the EMailInfo object.
+	var oEMailInfo = new Object() ;
+	oEMailInfo.Address = '' ;
+	oEMailInfo.Subject = '' ;
+	oEMailInfo.Body = '' ;
+
+	var aLinkInfo = sUrl.match( /^(\w+):(.*)$/ ) ;
+	if ( aLinkInfo && aLinkInfo[1] == 'mailto' )
+	{
+		// This seems to be an unprotected email link.
+		var aParts = aLinkInfo[2].match( /^([^\?]+)\??(.+)?/ ) ;
+		if ( aParts )
+		{
+			// Set the e-mail address.
+			oEMailInfo.Address = aParts[1] ;
+
+			// Look for the optional e-mail parameters.
+			if ( aParts[2] )
+			{
+				var oEMailParams = oParser.ParseEMailParams( aParts[2] ) ;
+				oEMailInfo.Subject = oEMailParams.Subject ;
+				oEMailInfo.Body = oEMailParams.Body ;
+			}
+		}
+		return oEMailInfo ;
+	}
+	else if ( aLinkInfo && aLinkInfo[1] == 'javascript' )
+	{
+		// This may be a protected email.
+
+		// Try to match the url against the EMailProtectionFunction.
+		var func = FCKConfig.EMailProtectionFunction ;
+		if ( func != null )
+		{
+			try
+			{
+				// Escape special chars.
+				func = func.replace( /([\/^$*+.?()\[\]])/g, '\\$1' ) ;
+
+				// Define the possible keys.
+				var keys = new Array('NAME', 'DOMAIN', 'SUBJECT', 'BODY') ;
+
+				// Get the order of the keys (hold them in the array <pos>) and
+				// the function replaced by regular expression patterns.
+				var sFunc = func ;
+				var pos = new Array() ;
+				for ( var i = 0 ; i < keys.length ; i ++ )
+				{
+					var rexp = new RegExp( keys[i] ) ;
+					var p = func.search( rexp ) ;
+					if ( p >= 0 )
+					{
+						sFunc = sFunc.replace( rexp, '\'([^\']*)\'' ) ;
+						pos[pos.length] = p + ':' + keys[i] ;
+					}
+				}
+
+				// Sort the available keys.
+				pos.sort( oParser.SortNumerical ) ;
+
+				// Replace the excaped single quotes in the url, such they do
+				// not affect the regexp afterwards.
+				aLinkInfo[2] = aLinkInfo[2].replace( /\\'/g, '###SINGLE_QUOTE###' ) ;
+
+				// Create the regexp and execute it.
+				var rFunc = new RegExp( '^' + sFunc + '$' ) ;
+				var aMatch = rFunc.exec( aLinkInfo[2] ) ;
+				if ( aMatch )
+				{
+					var aInfo = new Array();
+					for ( var i = 1 ; i < aMatch.length ; i ++ )
+					{
+						var k = pos[i-1].match(/^\d+:(.+)$/) ;
+						aInfo[k[1]] = aMatch[i].replace(/###SINGLE_QUOTE###/g, '\'') ;
+					}
+
+					// Fill the EMailInfo object that will be returned
+					oEMailInfo.Address = aInfo['NAME'] + '@' + aInfo['DOMAIN'] ;
+					oEMailInfo.Subject = decodeURIComponent( aInfo['SUBJECT'] ) ;
+					oEMailInfo.Body = decodeURIComponent( aInfo['BODY'] ) ;
+
+					return oEMailInfo ;
+				}
+			}
+			catch (e)
+			{
+			}
+		}
+
+		// Try to match the email against the encode protection.
+		var aMatch = aLinkInfo[2].match( /^location\.href='mailto:'\+(String\.fromCharCode\([\d,]+\))\+'(.*)'$/ ) ;
+		if ( aMatch )
+		{
+			// The link is encoded
+			oEMailInfo.Address = eval( aMatch[1] ) ;
+			if ( aMatch[2] )
+			{
+				var oEMailParams = oParser.ParseEMailParams( aMatch[2] ) ;
+				oEMailInfo.Subject = oEMailParams.Subject ;
+				oEMailInfo.Body = oEMailParams.Body ;
+			}
+			return oEMailInfo ;
+		}
+	}
+	return false;
+}
+
+oParser.CreateEMailUri = function( address, subject, body )
+{
+	// Switch for the EMailProtection setting.
+	switch ( FCKConfig.EMailProtection )
+	{
+		case 'function' :
+			var func = FCKConfig.EMailProtectionFunction ;
+			if ( func == null )
+			{
+				if ( FCKConfig.Debug )
+				{
+					alert('EMailProtection alert!\nNo function defined. Please set "FCKConfig.EMailProtectionFunction"') ;
+				}
+				return '';
+			}
+
+			// Split the email address into name and domain parts.
+			var aAddressParts = address.split( '@', 2 ) ;
+			if ( aAddressParts[1] == undefined )
+			{
+				aAddressParts[1] = '' ;
+			}
+
+			// Replace the keys by their values (embedded in single quotes).
+			func = func.replace(/NAME/g, "'" + aAddressParts[0].replace(/'/g, '\\\'') + "'") ;
+			func = func.replace(/DOMAIN/g, "'" + aAddressParts[1].replace(/'/g, '\\\'') + "'") ;
+			func = func.replace(/SUBJECT/g, "'" + encodeURIComponent( subject ).replace(/'/g, '\\\'') + "'") ;
+			func = func.replace(/BODY/g, "'" + encodeURIComponent( body ).replace(/'/g, '\\\'') + "'") ;
+
+			return 'javascript:' + func ;
+
+		case 'encode' :
+			var aParams = [] ;
+			var aAddressCode = [] ;
+
+			if ( subject.length > 0 )
+				aParams.push( 'subject='+ encodeURIComponent( subject ) ) ;
+			if ( body.length > 0 )
+				aParams.push( 'body=' + encodeURIComponent( body ) ) ;
+			for ( var i = 0 ; i < address.length ; i++ )
+				aAddressCode.push( address.charCodeAt( i ) ) ;
+
+			return 'javascript:location.href=\'mailto:\'+String.fromCharCode(' + aAddressCode.join( ',' ) + ')+\'?' + aParams.join( '&' ) + '\'' ;
+	}
+
+	// EMailProtection 'none'
+
+	var sBaseUri = 'mailto:' + address ;
+
+	var sParams = '' ;
+
+	if ( subject.length > 0 )
+		sParams = '?subject=' + encodeURIComponent( subject ) ;
+
+	if ( body.length > 0 )
+	{
+		sParams += ( sParams.length == 0 ? '?' : '&' ) ;
+		sParams += 'body=' + encodeURIComponent( body ) ;
+	}
+
+	return sBaseUri + sParams ;
+}
+
+//#### Initialization Code
+
+// oLink: The actual selected link in the editor.
+var oLink = dialog.Selection.GetSelection().MoveToAncestorNode( 'A' ) ;
+if ( oLink )
+	FCK.Selection.SelectNode( oLink ) ;
+
+window.onload = function()
+{
+	// Translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	// Fill the Anchor Names and Ids combos.
+	LoadAnchorNamesAndIds() ;
+
+	// Load the selected link information (if any).
+	LoadSelection() ;
+
+	// Update the dialog box.
+	SetLinkType( GetE('cmbLinkType').value ) ;
+
+	// Show/Hide the "Browse Server" button.
+	GetE('divBrowseServer').style.display = FCKConfig.LinkBrowser ? '' : 'none' ;
+
+	// Show the initial dialog content.
+	GetE('divInfo').style.display = '' ;
+
+	// Set the actual uploader URL.
+	if ( FCKConfig.LinkUpload )
+		GetE('frmUpload').action = FCKConfig.LinkUploadURL ;
+
+	// Set the default target (from configuration).
+	SetDefaultTarget() ;
+
+	// Activate the "OK" button.
+	dialog.SetOkButton( true ) ;
+
+	// Select the first field.
+	switch( GetE('cmbLinkType').value )
+	{
+		case 'url' :
+			SelectField( 'txtUrl' ) ;
+			break ;
+		case 'email' :
+			SelectField( 'txtEMailAddress' ) ;
+			break ;
+		case 'anchor' :
+			if ( GetE('divSelAnchor').style.display != 'none' )
+				SelectField( 'cmbAnchorName' ) ;
+			else
+				SelectField( 'cmbLinkType' ) ;
+	}
+}
+
+var bHasAnchors ;
+
+function LoadAnchorNamesAndIds()
+{
+	// Since version 2.0, the anchors are replaced in the DOM by IMGs so the user see the icon
+	// to edit them. So, we must look for that images now.
+	var aAnchors = new Array() ;
+	var i ;
+	var oImages = oEditor.FCK.EditorDocument.getElementsByTagName( 'IMG' ) ;
+	for( i = 0 ; i < oImages.length ; i++ )
+	{
+		if ( oImages[i].getAttribute('_fckanchor') )
+			aAnchors[ aAnchors.length ] = oEditor.FCK.GetRealElement( oImages[i] ) ;
+	}
+
+	// Add also real anchors
+	var oLinks = oEditor.FCK.EditorDocument.getElementsByTagName( 'A' ) ;
+	for( i = 0 ; i < oLinks.length ; i++ )
+	{
+		if ( oLinks[i].name && ( oLinks[i].name.length > 0 ) )
+			aAnchors[ aAnchors.length ] = oLinks[i] ;
+	}
+
+	var aIds = FCKTools.GetAllChildrenIds( oEditor.FCK.EditorDocument.body ) ;
+
+	bHasAnchors = ( aAnchors.length > 0 || aIds.length > 0 ) ;
+
+	for ( i = 0 ; i < aAnchors.length ; i++ )
+	{
+		var sName = aAnchors[i].name ;
+		if ( sName && sName.length > 0 )
+			FCKTools.AddSelectOption( GetE('cmbAnchorName'), sName, sName ) ;
+	}
+
+	for ( i = 0 ; i < aIds.length ; i++ )
+	{
+		FCKTools.AddSelectOption( GetE('cmbAnchorId'), aIds[i], aIds[i] ) ;
+	}
+
+	ShowE( 'divSelAnchor'	, bHasAnchors ) ;
+	ShowE( 'divNoAnchor'	, !bHasAnchors ) ;
+}
+
+function LoadSelection()
+{
+	if ( !oLink ) return ;
+
+	var sType = 'url' ;
+
+	// Get the actual Link href.
+	var sHRef = oLink.getAttribute( '_fcksavedurl' ) ;
+	if ( sHRef == null )
+		sHRef = oLink.getAttribute( 'href' , 2 ) || '' ;
+
+	// Look for a popup javascript link.
+	var oPopupMatch = oRegex.PopupUri.exec( sHRef ) ;
+	if( oPopupMatch )
+	{
+		GetE('cmbTarget').value = 'popup' ;
+		sHRef = oPopupMatch[1] ;
+		FillPopupFields( oPopupMatch[2], oPopupMatch[3] ) ;
+		SetTarget( 'popup' ) ;
+	}
+
+	// Accessible popups, the popup data is in the onclick attribute
+	if ( !oPopupMatch )
+	{
+		var onclick = oLink.getAttribute( 'onclick_fckprotectedatt' ) ;
+		if ( onclick )
+		{
+			// Decode the protected string
+			onclick = decodeURIComponent( onclick ) ;
+
+			oPopupMatch = oRegex.OnClickPopup.exec( onclick ) ;
+			if( oPopupMatch )
+			{
+				GetE( 'cmbTarget' ).value = 'popup' ;
+				FillPopupFields( oPopupMatch[1], oPopupMatch[2] ) ;
+				SetTarget( 'popup' ) ;
+			}
+		}
+	}
+
+	// Search for the protocol.
+	var sProtocol = oRegex.UriProtocol.exec( sHRef ) ;
+
+	// Search for a protected email link.
+	var oEMailInfo = oParser.ParseEMailUri( sHRef );
+
+	if ( oEMailInfo )
+	{
+		sType = 'email' ;
+
+		GetE('txtEMailAddress').value = oEMailInfo.Address ;
+		GetE('txtEMailSubject').value = oEMailInfo.Subject ;
+		GetE('txtEMailBody').value    = oEMailInfo.Body ;
+	}
+	else if ( sProtocol )
+	{
+		sProtocol = sProtocol[0].toLowerCase() ;
+		GetE('cmbLinkProtocol').value = sProtocol ;
+
+		// Remove the protocol and get the remaining URL.
+		var sUrl = sHRef.replace( oRegex.UriProtocol, '' ) ;
+		sType = 'url' ;
+		GetE('txtUrl').value = sUrl ;
+	}
+	else if ( sHRef.substr(0,1) == '#' && sHRef.length > 1 )	// It is an anchor link.
+	{
+		sType = 'anchor' ;
+		GetE('cmbAnchorName').value = GetE('cmbAnchorId').value = sHRef.substr(1) ;
+	}
+	else					// It is another type of link.
+	{
+		sType = 'url' ;
+
+		GetE('cmbLinkProtocol').value = '' ;
+		GetE('txtUrl').value = sHRef ;
+	}
+
+	if ( !oPopupMatch )
+	{
+		// Get the target.
+		var sTarget = oLink.target ;
+
+		if ( sTarget && sTarget.length > 0 )
+		{
+			if ( oRegex.ReserveTarget.test( sTarget ) )
+			{
+				sTarget = sTarget.toLowerCase() ;
+				GetE('cmbTarget').value = sTarget ;
+			}
+			else
+				GetE('cmbTarget').value = 'frame' ;
+			GetE('txtTargetFrame').value = sTarget ;
+		}
+	}
+
+	// Get Advances Attributes
+	GetE('txtAttId').value			= oLink.id ;
+	GetE('txtAttName').value		= oLink.name ;
+	GetE('cmbAttLangDir').value		= oLink.dir ;
+	GetE('txtAttLangCode').value	= oLink.lang ;
+	GetE('txtAttAccessKey').value	= oLink.accessKey ;
+	GetE('txtAttTabIndex').value	= oLink.tabIndex <= 0 ? '' : oLink.tabIndex ;
+	GetE('txtAttTitle').value		= oLink.title ;
+	GetE('txtAttContentType').value	= oLink.type ;
+	GetE('txtAttCharSet').value		= oLink.charset ;
+
+	var sClass ;
+	if ( oEditor.FCKBrowserInfo.IsIE )
+	{
+		sClass	= oLink.getAttribute('className',2) || '' ;
+		// Clean up temporary classes for internal use:
+		sClass = sClass.replace( FCKRegexLib.FCK_Class, '' ) ;
+
+		GetE('txtAttStyle').value	= oLink.style.cssText ;
+	}
+	else
+	{
+		sClass	= oLink.getAttribute('class',2) || '' ;
+		GetE('txtAttStyle').value	= oLink.getAttribute('style',2) || '' ;
+	}
+	GetE('txtAttClasses').value	= sClass ;
+
+	// Update the Link type combo.
+	GetE('cmbLinkType').value = sType ;
+}
+
+//#### Link type selection.
+function SetLinkType( linkType )
+{
+	ShowE('divLinkTypeUrl'		, (linkType == 'url') ) ;
+	ShowE('divLinkTypeAnchor'	, (linkType == 'anchor') ) ;
+	ShowE('divLinkTypeEMail'	, (linkType == 'email') ) ;
+
+	if ( !FCKConfig.LinkDlgHideTarget )
+		dialog.SetTabVisibility( 'Target'	, (linkType == 'url') ) ;
+
+	if ( FCKConfig.LinkUpload )
+		dialog.SetTabVisibility( 'Upload'	, (linkType == 'url') ) ;
+
+	if ( !FCKConfig.LinkDlgHideAdvanced )
+		dialog.SetTabVisibility( 'Advanced'	, (linkType != 'anchor' || bHasAnchors) ) ;
+
+	if ( linkType == 'email' )
+		dialog.SetAutoSize( true ) ;
+}
+
+//#### Target type selection.
+function SetTarget( targetType )
+{
+	GetE('tdTargetFrame').style.display	= ( targetType == 'popup' ? 'none' : '' ) ;
+	GetE('tdPopupName').style.display	=
+	GetE('tablePopupFeatures').style.display = ( targetType == 'popup' ? '' : 'none' ) ;
+
+	switch ( targetType )
+	{
+		case "_blank" :
+		case "_self" :
+		case "_parent" :
+		case "_top" :
+			GetE('txtTargetFrame').value = targetType ;
+			break ;
+		case "" :
+			GetE('txtTargetFrame').value = '' ;
+			break ;
+	}
+
+	if ( targetType == 'popup' )
+		dialog.SetAutoSize( true ) ;
+}
+
+//#### Called while the user types the URL.
+function OnUrlChange()
+{
+	var sUrl = GetE('txtUrl').value ;
+	var sProtocol = oRegex.UrlOnChangeProtocol.exec( sUrl ) ;
+
+	if ( sProtocol )
+	{
+		sUrl = sUrl.substr( sProtocol[0].length ) ;
+		GetE('txtUrl').value = sUrl ;
+		GetE('cmbLinkProtocol').value = sProtocol[0].toLowerCase() ;
+	}
+	else if ( oRegex.UrlOnChangeTestOther.test( sUrl ) )
+	{
+		GetE('cmbLinkProtocol').value = '' ;
+	}
+}
+
+//#### Called while the user types the target name.
+function OnTargetNameChange()
+{
+	var sFrame = GetE('txtTargetFrame').value ;
+
+	if ( sFrame.length == 0 )
+		GetE('cmbTarget').value = '' ;
+	else if ( oRegex.ReserveTarget.test( sFrame ) )
+		GetE('cmbTarget').value = sFrame.toLowerCase() ;
+	else
+		GetE('cmbTarget').value = 'frame' ;
+}
+
+// Accessible popups
+function BuildOnClickPopup()
+{
+	var sWindowName = "'" + GetE('txtPopupName').value.replace(/\W/gi, "") + "'" ;
+
+	var sFeatures = '' ;
+	var aChkFeatures = document.getElementsByName( 'chkFeature' ) ;
+	for ( var i = 0 ; i < aChkFeatures.length ; i++ )
+	{
+		if ( i > 0 ) sFeatures += ',' ;
+		sFeatures += aChkFeatures[i].value + '=' + ( aChkFeatures[i].checked ? 'yes' : 'no' ) ;
+	}
+
+	if ( GetE('txtPopupWidth').value.length > 0 )	sFeatures += ',width=' + GetE('txtPopupWidth').value ;
+	if ( GetE('txtPopupHeight').value.length > 0 )	sFeatures += ',height=' + GetE('txtPopupHeight').value ;
+	if ( GetE('txtPopupLeft').value.length > 0 )	sFeatures += ',left=' + GetE('txtPopupLeft').value ;
+	if ( GetE('txtPopupTop').value.length > 0 )		sFeatures += ',top=' + GetE('txtPopupTop').value ;
+
+	if ( sFeatures != '' )
+		sFeatures = sFeatures + ",status" ;
+
+	return ( "window.open(this.href," + sWindowName + ",'" + sFeatures + "'); return false" ) ;
+}
+
+//#### Fills all Popup related fields.
+function FillPopupFields( windowName, features )
+{
+	if ( windowName )
+		GetE('txtPopupName').value = windowName ;
+
+	var oFeatures = new Object() ;
+	var oFeaturesMatch ;
+	while( ( oFeaturesMatch = oRegex.PopupFeatures.exec( features ) ) != null )
+	{
+		var sValue = oFeaturesMatch[2] ;
+		if ( sValue == ( 'yes' || '1' ) )
+			oFeatures[ oFeaturesMatch[1] ] = true ;
+		else if ( ! isNaN( sValue ) && sValue != 0 )
+			oFeatures[ oFeaturesMatch[1] ] = sValue ;
+	}
+
+	// Update all features check boxes.
+	var aChkFeatures = document.getElementsByName('chkFeature') ;
+	for ( var i = 0 ; i < aChkFeatures.length ; i++ )
+	{
+		if ( oFeatures[ aChkFeatures[i].value ] )
+			aChkFeatures[i].checked = true ;
+	}
+
+	// Update position and size text boxes.
+	if ( oFeatures['width'] )	GetE('txtPopupWidth').value		= oFeatures['width'] ;
+	if ( oFeatures['height'] )	GetE('txtPopupHeight').value	= oFeatures['height'] ;
+	if ( oFeatures['left'] )	GetE('txtPopupLeft').value		= oFeatures['left'] ;
+	if ( oFeatures['top'] )		GetE('txtPopupTop').value		= oFeatures['top'] ;
+}
+
+//#### The OK button was hit.
+function Ok()
+{
+	var sUri, sInnerHtml ;
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	switch ( GetE('cmbLinkType').value )
+	{
+		case 'url' :
+			sUri = GetE('txtUrl').value ;
+
+			if ( sUri.length == 0 )
+			{
+				alert( FCKLang.DlnLnkMsgNoUrl ) ;
+				return false ;
+			}
+
+			sUri = GetE('cmbLinkProtocol').value + sUri ;
+
+			break ;
+
+		case 'email' :
+			sUri = GetE('txtEMailAddress').value ;
+
+			if ( sUri.length == 0 )
+			{
+				alert( FCKLang.DlnLnkMsgNoEMail ) ;
+				return false ;
+			}
+
+			sUri = oParser.CreateEMailUri(
+				sUri,
+				GetE('txtEMailSubject').value,
+				GetE('txtEMailBody').value ) ;
+			break ;
+
+		case 'anchor' :
+			var sAnchor = GetE('cmbAnchorName').value ;
+			if ( sAnchor.length == 0 ) sAnchor = GetE('cmbAnchorId').value ;
+
+			if ( sAnchor.length == 0 )
+			{
+				alert( FCKLang.DlnLnkMsgNoAnchor ) ;
+				return false ;
+			}
+
+			sUri = '#' + sAnchor ;
+			break ;
+	}
+
+	// If no link is selected, create a new one (it may result in more than one link creation - #220).
+	var aLinks = oLink ? [ oLink ] : oEditor.FCK.CreateLink( sUri, true ) ;
+
+	// If no selection, no links are created, so use the uri as the link text (by dom, 2006-05-26)
+	var aHasSelection = ( aLinks.length > 0 ) ;
+	if ( !aHasSelection )
+	{
+		sInnerHtml = sUri;
+
+		// Built a better text for empty links.
+		switch ( GetE('cmbLinkType').value )
+		{
+			// anchor: use old behavior --> return true
+			case 'anchor':
+				sInnerHtml = sInnerHtml.replace( /^#/, '' ) ;
+				break ;
+
+			// url: try to get path
+			case 'url':
+				var oLinkPathRegEx = new RegExp("//?([^?\"']+)([?].*)?$") ;
+				var asLinkPath = oLinkPathRegEx.exec( sUri ) ;
+				if (asLinkPath != null)
+					sInnerHtml = asLinkPath[1];  // use matched path
+				break ;
+
+			// mailto: try to get email address
+			case 'email':
+				sInnerHtml = GetE('txtEMailAddress').value ;
+				break ;
+		}
+
+		// Create a new (empty) anchor.
+		aLinks = [ oEditor.FCK.InsertElement( 'a' ) ] ;
+	}
+
+	for ( var i = 0 ; i < aLinks.length ; i++ )
+	{
+		oLink = aLinks[i] ;
+
+		if ( aHasSelection )
+			sInnerHtml = oLink.innerHTML ;		// Save the innerHTML (IE changes it if it is like an URL).
+
+		oLink.href = sUri ;
+		SetAttribute( oLink, '_fcksavedurl', sUri ) ;
+
+		var onclick;
+		// Accessible popups
+		if( GetE('cmbTarget').value == 'popup' )
+		{
+			onclick = BuildOnClickPopup() ;
+			// Encode the attribute
+			onclick = encodeURIComponent( " onclick=\"" + onclick + "\"" )  ;
+			SetAttribute( oLink, 'onclick_fckprotectedatt', onclick ) ;
+		}
+		else
+		{
+			// Check if the previous onclick was for a popup:
+			// In that case remove the onclick handler.
+			onclick = oLink.getAttribute( 'onclick_fckprotectedatt' ) ;
+			if ( onclick )
+			{
+				// Decode the protected string
+				onclick = decodeURIComponent( onclick ) ;
+
+				if( oRegex.OnClickPopup.test( onclick ) )
+					SetAttribute( oLink, 'onclick_fckprotectedatt', '' ) ;
+			}
+		}
+
+		oLink.innerHTML = sInnerHtml ;		// Set (or restore) the innerHTML
+
+		// Target
+		if( GetE('cmbTarget').value != 'popup' )
+			SetAttribute( oLink, 'target', GetE('txtTargetFrame').value ) ;
+		else
+			SetAttribute( oLink, 'target', null ) ;
+
+		// Let's set the "id" only for the first link to avoid duplication.
+		if ( i == 0 )
+			SetAttribute( oLink, 'id', GetE('txtAttId').value ) ;
+
+		// Advances Attributes
+		SetAttribute( oLink, 'name'		, GetE('txtAttName').value ) ;
+		SetAttribute( oLink, 'dir'		, GetE('cmbAttLangDir').value ) ;
+		SetAttribute( oLink, 'lang'		, GetE('txtAttLangCode').value ) ;
+		SetAttribute( oLink, 'accesskey', GetE('txtAttAccessKey').value ) ;
+		SetAttribute( oLink, 'tabindex'	, ( GetE('txtAttTabIndex').value > 0 ? GetE('txtAttTabIndex').value : null ) ) ;
+		SetAttribute( oLink, 'title'	, GetE('txtAttTitle').value ) ;
+		SetAttribute( oLink, 'type'		, GetE('txtAttContentType').value ) ;
+		SetAttribute( oLink, 'charset'	, GetE('txtAttCharSet').value ) ;
+
+		if ( oEditor.FCKBrowserInfo.IsIE )
+		{
+			var sClass = GetE('txtAttClasses').value ;
+			// If it's also an anchor add an internal class
+			if ( GetE('txtAttName').value.length != 0 )
+				sClass += ' FCK__AnchorC' ;
+			SetAttribute( oLink, 'className', sClass ) ;
+
+			oLink.style.cssText = GetE('txtAttStyle').value ;
+		}
+		else
+		{
+			SetAttribute( oLink, 'class', GetE('txtAttClasses').value ) ;
+			SetAttribute( oLink, 'style', GetE('txtAttStyle').value ) ;
+		}
+	}
+
+	// Select the (first) link.
+	oEditor.FCKSelection.SelectNode( aLinks[0] );
+
+	return true ;
+}
+
+function BrowseServer()
+{
+	OpenFileBrowser( FCKConfig.LinkBrowserURL, FCKConfig.LinkBrowserWindowWidth, FCKConfig.LinkBrowserWindowHeight ) ;
+}
+
+function SetUrl( url )
+{
+	GetE('txtUrl').value = url ;
+	OnUrlChange() ;
+	dialog.SetSelectedTab( 'Info' ) ;
+}
+
+function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
+{
+	// Remove animation
+	window.parent.Throbber.Hide() ;
+	GetE( 'divUpload' ).style.display  = '' ;
+
+	switch ( errorNumber )
+	{
+		case 0 :	// No errors
+			alert( 'Your file has been successfully uploaded' ) ;
+			break ;
+		case 1 :	// Custom error
+			alert( customMsg ) ;
+			return ;
+		case 101 :	// Custom warning
+			alert( customMsg ) ;
+			break ;
+		case 201 :
+			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
+			break ;
+		case 202 :
+			alert( 'Invalid file type' ) ;
+			return ;
+		case 203 :
+			alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
+			return ;
+		case 500 :
+			alert( 'The connector is disabled' ) ;
+			break ;
+		default :
+			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
+			return ;
+	}
+
+	SetUrl( fileUrl ) ;
+	GetE('frmUpload').reset() ;
+}
+
+var oUploadAllowedExtRegex	= new RegExp( FCKConfig.LinkUploadAllowedExtensions, 'i' ) ;
+var oUploadDeniedExtRegex	= new RegExp( FCKConfig.LinkUploadDeniedExtensions, 'i' ) ;
+
+function CheckUpload()
+{
+	var sFile = GetE('txtUploadFile').value ;
+
+	if ( sFile.length == 0 )
+	{
+		alert( 'Please select a file to upload' ) ;
+		return false ;
+	}
+
+	if ( ( FCKConfig.LinkUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
+		( FCKConfig.LinkUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
+	{
+		OnUploadCompleted( 202 ) ;
+		return false ;
+	}
+
+	// Show animation
+	window.parent.Throbber.Show( 100 ) ;
+	GetE( 'divUpload' ).style.display  = 'none' ;
+
+	return true ;
+}
+
+function SetDefaultTarget()
+{
+	var target = FCKConfig.DefaultLinkTarget || '' ;
+
+	if ( oLink || target.length == 0 )
+		return ;
+
+	switch ( target )
+	{
+		case '_blank' :
+		case '_self' :
+		case '_parent' :
+		case '_top' :
+			GetE('cmbTarget').value = target ;
+			break ;
+		default :
+			GetE('cmbTarget').value = 'frame' ;
+			break ;
+	}
+
+	GetE('txtTargetFrame').value = target ;
+}

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_link.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_link.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_link.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,295 +1,295 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Link dialog window.
--->
-<html>
-	<head>
-		<title>Link Properties</title>
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-		<meta name="robots" content="noindex, nofollow" />
-		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-		<script src="fck_link/fck_link.js" type="text/javascript"></script>
-	</head>
-	<body scroll="no" style="OVERFLOW: hidden">
-		<div id="divInfo" style="DISPLAY: none">
-			<span fckLang="DlgLnkType">Link Type</span><br />
-			<select id="cmbLinkType" onchange="SetLinkType(this.value);">
-				<option value="url" fckLang="DlgLnkTypeURL" selected="selected">URL</option>
-				<option value="anchor" fckLang="DlgLnkTypeAnchor">Anchor in this page</option>
-				<option value="email" fckLang="DlgLnkTypeEMail">E-Mail</option>
-			</select>
-			<br />
-			<br />
-			<div id="divLinkTypeUrl">
-				<table cellspacing="0" cellpadding="0" width="100%" border="0" dir="ltr">
-					<tr>
-						<td nowrap="nowrap">
-							<span fckLang="DlgLnkProto">Protocol</span><br />
-							<select id="cmbLinkProtocol">
-								<option value="http://" selected="selected">http://</option>
-								<option value="https://">https://</option>
-								<option value="ftp://">ftp://</option>
-								<option value="news://">news://</option>
-								<option value="" fckLang="DlgLnkProtoOther">&lt;other&gt;</option>
-							</select>
-						</td>
-						<td nowrap="nowrap">&nbsp;</td>
-						<td nowrap="nowrap" width="100%">
-							<span fckLang="DlgLnkURL">URL</span><br />
-							<input id="txtUrl" style="WIDTH: 100%" type="text" onkeyup="OnUrlChange();" onchange="OnUrlChange();" />
-						</td>
-					</tr>
-				</table>
-				<br />
-				<div id="divBrowseServer">
-				<input type="button" value="Browse Server" fckLang="DlgBtnBrowseServer" onclick="BrowseServer();" />
-				</div>
-			</div>
-			<div id="divLinkTypeAnchor" style="DISPLAY: none" align="center">
-				<div id="divSelAnchor" style="DISPLAY: none">
-					<table cellspacing="0" cellpadding="0" border="0" width="70%">
-						<tr>
-							<td colspan="3">
-								<span fckLang="DlgLnkAnchorSel">Select an Anchor</span>
-							</td>
-						</tr>
-						<tr>
-							<td width="50%">
-								<span fckLang="DlgLnkAnchorByName">By Anchor Name</span><br />
-								<select id="cmbAnchorName" onchange="GetE('cmbAnchorId').value='';" style="WIDTH: 100%">
-									<option value="" selected="selected"></option>
-								</select>
-							</td>
-							<td>&nbsp;&nbsp;&nbsp;</td>
-							<td width="50%">
-								<span fckLang="DlgLnkAnchorById">By Element Id</span><br />
-								<select id="cmbAnchorId" onchange="GetE('cmbAnchorName').value='';" style="WIDTH: 100%">
-									<option value="" selected="selected"></option>
-								</select>
-							</td>
-						</tr>
-					</table>
-				</div>
-				<div id="divNoAnchor" style="DISPLAY: none">
-					<span fckLang="DlgLnkNoAnchors">&lt;No anchors available in the document&gt;</span>
-				</div>
-			</div>
-			<div id="divLinkTypeEMail" style="DISPLAY: none">
-				<span fckLang="DlgLnkEMail">E-Mail Address</span><br />
-				<input id="txtEMailAddress" style="WIDTH: 100%" type="text" /><br />
-				<span fckLang="DlgLnkEMailSubject">Message Subject</span><br />
-				<input id="txtEMailSubject" style="WIDTH: 100%" type="text" /><br />
-				<span fckLang="DlgLnkEMailBody">Message Body</span><br />
-				<textarea id="txtEMailBody" style="WIDTH: 100%" rows="3" cols="20"></textarea>
-			</div>
-		</div>
-		<div id="divUpload" style="DISPLAY: none">
-			<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data" action="" onsubmit="return CheckUpload();">
-				<span fckLang="DlgLnkUpload">Upload</span><br />
-				<input id="txtUploadFile" style="WIDTH: 100%" type="file" size="40" name="NewFile" /><br />
-				<br />
-				<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
-				<script type="text/javascript">
-					document.write( '<iframe name="UploadWindow" style="display: none" src="' + FCKTools.GetVoidUrl() + '"><\/iframe>' ) ;
-				</script>
-			</form>
-		</div>
-		<div id="divTarget" style="DISPLAY: none">
-			<table cellspacing="0" cellpadding="0" width="100%" border="0">
-				<tr>
-					<td nowrap="nowrap">
-						<span fckLang="DlgLnkTarget">Target</span><br />
-						<select id="cmbTarget" onchange="SetTarget(this.value);">
-							<option value="" fckLang="DlgGenNotSet" selected="selected">&lt;not set&gt;</option>
-							<option value="frame" fckLang="DlgLnkTargetFrame">&lt;frame&gt;</option>
-							<option value="popup" fckLang="DlgLnkTargetPopup">&lt;popup window&gt;</option>
-							<option value="_blank" fckLang="DlgLnkTargetBlank">New Window (_blank)</option>
-							<option value="_top" fckLang="DlgLnkTargetTop">Topmost Window (_top)</option>
-							<option value="_self" fckLang="DlgLnkTargetSelf">Same Window (_self)</option>
-							<option value="_parent" fckLang="DlgLnkTargetParent">Parent Window (_parent)</option>
-						</select>
-					</td>
-					<td>&nbsp;</td>
-					<td id="tdTargetFrame" nowrap="nowrap" width="100%">
-						<span fckLang="DlgLnkTargetFrameName">Target Frame Name</span><br />
-						<input id="txtTargetFrame" style="WIDTH: 100%" type="text" onkeyup="OnTargetNameChange();"
-							onchange="OnTargetNameChange();" />
-					</td>
-					<td id="tdPopupName" style="DISPLAY: none" nowrap="nowrap" width="100%">
-						<span fckLang="DlgLnkPopWinName">Popup Window Name</span><br />
-						<input id="txtPopupName" style="WIDTH: 100%" type="text" />
-					</td>
-				</tr>
-			</table>
-			<br />
-			<table id="tablePopupFeatures" style="DISPLAY: none" cellspacing="0" cellpadding="0" align="center"
-				border="0">
-				<tr>
-					<td>
-						<span fckLang="DlgLnkPopWinFeat">Popup Window Features</span><br />
-						<table cellspacing="0" cellpadding="0" border="0">
-							<tr>
-								<td valign="top" nowrap="nowrap" width="50%">
-									<input id="chkPopupResizable" name="chkFeature" value="resizable" type="checkbox" /><label for="chkPopupResizable" fckLang="DlgLnkPopResize">Resizable</label><br />
-									<input id="chkPopupLocationBar" name="chkFeature" value="location" type="checkbox" /><label for="chkPopupLocationBar" fckLang="DlgLnkPopLocation">Location
-										Bar</label><br />
-									<input id="chkPopupManuBar" name="chkFeature" value="menubar" type="checkbox" /><label for="chkPopupManuBar" fckLang="DlgLnkPopMenu">Menu
-										Bar</label><br />
-									<input id="chkPopupScrollBars" name="chkFeature" value="scrollbars" type="checkbox" /><label for="chkPopupScrollBars" fckLang="DlgLnkPopScroll">Scroll
-										Bars</label>
-								</td>
-								<td></td>
-								<td valign="top" nowrap="nowrap" width="50%">
-									<input id="chkPopupStatusBar" name="chkFeature" value="status" type="checkbox" /><label for="chkPopupStatusBar" fckLang="DlgLnkPopStatus">Status
-										Bar</label><br />
-									<input id="chkPopupToolbar" name="chkFeature" value="toolbar" type="checkbox" /><label for="chkPopupToolbar" fckLang="DlgLnkPopToolbar">Toolbar</label><br />
-									<input id="chkPopupFullScreen" name="chkFeature" value="fullscreen" type="checkbox" /><label for="chkPopupFullScreen" fckLang="DlgLnkPopFullScrn">Full
-										Screen (IE)</label><br />
-									<input id="chkPopupDependent" name="chkFeature" value="dependent" type="checkbox" /><label for="chkPopupDependent" fckLang="DlgLnkPopDependent">Dependent
-										(Netscape)</label>
-								</td>
-							</tr>
-							<tr>
-								<td valign="top" nowrap="nowrap" width="50%">&nbsp;</td>
-								<td></td>
-								<td valign="top" nowrap="nowrap" width="50%"></td>
-							</tr>
-							<tr>
-								<td valign="top">
-									<table cellspacing="0" cellpadding="0" border="0">
-										<tr>
-											<td nowrap="nowrap"><span fckLang="DlgLnkPopWidth">Width</span></td>
-											<td>&nbsp;<input id="txtPopupWidth" type="text" maxlength="4" size="4" /></td>
-										</tr>
-										<tr>
-											<td nowrap="nowrap"><span fckLang="DlgLnkPopHeight">Height</span></td>
-											<td>&nbsp;<input id="txtPopupHeight" type="text" maxlength="4" size="4" /></td>
-										</tr>
-									</table>
-								</td>
-								<td>&nbsp;&nbsp;</td>
-								<td valign="top">
-									<table cellspacing="0" cellpadding="0" border="0">
-										<tr>
-											<td nowrap="nowrap"><span fckLang="DlgLnkPopLeft">Left Position</span></td>
-											<td>&nbsp;<input id="txtPopupLeft" type="text" maxlength="4" size="4" /></td>
-										</tr>
-										<tr>
-											<td nowrap="nowrap"><span fckLang="DlgLnkPopTop">Top Position</span></td>
-											<td>&nbsp;<input id="txtPopupTop" type="text" maxlength="4" size="4" /></td>
-										</tr>
-									</table>
-								</td>
-							</tr>
-						</table>
-					</td>
-				</tr>
-			</table>
-		</div>
-		<div id="divAttribs" style="DISPLAY: none">
-			<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
-				<tr>
-					<td valign="top" width="50%">
-						<span fckLang="DlgGenId">Id</span><br />
-						<input id="txtAttId" style="WIDTH: 100%" type="text" />
-					</td>
-					<td width="1"></td>
-					<td valign="top">
-						<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
-							<tr>
-								<td width="60%">
-									<span fckLang="DlgGenLangDir">Language Direction</span><br />
-									<select id="cmbAttLangDir" style="WIDTH: 100%">
-										<option value="" fckLang="DlgGenNotSet" selected>&lt;not set&gt;</option>
-										<option value="ltr" fckLang="DlgGenLangDirLtr">Left to Right (LTR)</option>
-										<option value="rtl" fckLang="DlgGenLangDirRtl">Right to Left (RTL)</option>
-									</select>
-								</td>
-								<td width="1%">&nbsp;&nbsp;&nbsp;</td>
-								<td nowrap="nowrap"><span fckLang="DlgGenAccessKey">Access Key</span><br />
-									<input id="txtAttAccessKey" style="WIDTH: 100%" type="text" maxlength="1" size="1" />
-								</td>
-							</tr>
-						</table>
-					</td>
-				</tr>
-				<tr>
-					<td valign="top" width="50%">
-						<span fckLang="DlgGenName">Name</span><br />
-						<input id="txtAttName" style="WIDTH: 100%" type="text" />
-					</td>
-					<td width="1"></td>
-					<td valign="top">
-						<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
-							<tr>
-								<td width="60%">
-									<span fckLang="DlgGenLangCode">Language Code</span><br />
-									<input id="txtAttLangCode" style="WIDTH: 100%" type="text" />
-								</td>
-								<td width="1%">&nbsp;&nbsp;&nbsp;</td>
-								<td nowrap="nowrap">
-									<span fckLang="DlgGenTabIndex">Tab Index</span><br />
-									<input id="txtAttTabIndex" style="WIDTH: 100%" type="text" maxlength="5" size="5" />
-								</td>
-							</tr>
-						</table>
-					</td>
-				</tr>
-				<tr>
-					<td valign="top" width="50%">&nbsp;</td>
-					<td width="1"></td>
-					<td valign="top"></td>
-				</tr>
-				<tr>
-					<td valign="top" width="50%">
-						<span fckLang="DlgGenTitle">Advisory Title</span><br />
-						<input id="txtAttTitle" style="WIDTH: 100%" type="text" />
-					</td>
-					<td width="1">&nbsp;&nbsp;&nbsp;</td>
-					<td valign="top">
-						<span fckLang="DlgGenContType">Advisory Content Type</span><br />
-						<input id="txtAttContentType" style="WIDTH: 100%" type="text" />
-					</td>
-				</tr>
-				<tr>
-					<td valign="top">
-						<span fckLang="DlgGenClass">Stylesheet Classes</span><br />
-						<input id="txtAttClasses" style="WIDTH: 100%" type="text" />
-					</td>
-					<td></td>
-					<td valign="top">
-						<span fckLang="DlgGenLinkCharset">Linked Resource Charset</span><br />
-						<input id="txtAttCharSet" style="WIDTH: 100%" type="text" />
-					</td>
-				</tr>
-			</table>
-			<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
-				<tr>
-					<td>
-						<span fckLang="DlgGenStyle">Style</span><br />
-						<input id="txtAttStyle" style="WIDTH: 100%" type="text" />
-					</td>
-				</tr>
-			</table>
-		</div>
-	</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Link dialog window.
+-->
+<html>
+	<head>
+		<title>Link Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+		<meta name="robots" content="noindex, nofollow" />
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script src="fck_link/fck_link.js" type="text/javascript"></script>
+	</head>
+	<body scroll="no" style="OVERFLOW: hidden">
+		<div id="divInfo" style="DISPLAY: none">
+			<span fckLang="DlgLnkType">Link Type</span><br />
+			<select id="cmbLinkType" onchange="SetLinkType(this.value);">
+				<option value="url" fckLang="DlgLnkTypeURL" selected="selected">URL</option>
+				<option value="anchor" fckLang="DlgLnkTypeAnchor">Anchor in this page</option>
+				<option value="email" fckLang="DlgLnkTypeEMail">E-Mail</option>
+			</select>
+			<br />
+			<br />
+			<div id="divLinkTypeUrl">
+				<table cellspacing="0" cellpadding="0" width="100%" border="0" dir="ltr">
+					<tr>
+						<td nowrap="nowrap">
+							<span fckLang="DlgLnkProto">Protocol</span><br />
+							<select id="cmbLinkProtocol">
+								<option value="http://" selected="selected">http://</option>
+								<option value="https://">https://</option>
+								<option value="ftp://">ftp://</option>
+								<option value="news://">news://</option>
+								<option value="" fckLang="DlgLnkProtoOther">&lt;other&gt;</option>
+							</select>
+						</td>
+						<td nowrap="nowrap">&nbsp;</td>
+						<td nowrap="nowrap" width="100%">
+							<span fckLang="DlgLnkURL">URL</span><br />
+							<input id="txtUrl" style="WIDTH: 100%" type="text" onkeyup="OnUrlChange();" onchange="OnUrlChange();" />
+						</td>
+					</tr>
+				</table>
+				<br />
+				<div id="divBrowseServer">
+				<input type="button" value="Browse Server" fckLang="DlgBtnBrowseServer" onclick="BrowseServer();" />
+				</div>
+			</div>
+			<div id="divLinkTypeAnchor" style="DISPLAY: none" align="center">
+				<div id="divSelAnchor" style="DISPLAY: none">
+					<table cellspacing="0" cellpadding="0" border="0" width="70%">
+						<tr>
+							<td colspan="3">
+								<span fckLang="DlgLnkAnchorSel">Select an Anchor</span>
+							</td>
+						</tr>
+						<tr>
+							<td width="50%">
+								<span fckLang="DlgLnkAnchorByName">By Anchor Name</span><br />
+								<select id="cmbAnchorName" onchange="GetE('cmbAnchorId').value='';" style="WIDTH: 100%">
+									<option value="" selected="selected"></option>
+								</select>
+							</td>
+							<td>&nbsp;&nbsp;&nbsp;</td>
+							<td width="50%">
+								<span fckLang="DlgLnkAnchorById">By Element Id</span><br />
+								<select id="cmbAnchorId" onchange="GetE('cmbAnchorName').value='';" style="WIDTH: 100%">
+									<option value="" selected="selected"></option>
+								</select>
+							</td>
+						</tr>
+					</table>
+				</div>
+				<div id="divNoAnchor" style="DISPLAY: none">
+					<span fckLang="DlgLnkNoAnchors">&lt;No anchors available in the document&gt;</span>
+				</div>
+			</div>
+			<div id="divLinkTypeEMail" style="DISPLAY: none">
+				<span fckLang="DlgLnkEMail">E-Mail Address</span><br />
+				<input id="txtEMailAddress" style="WIDTH: 100%" type="text" /><br />
+				<span fckLang="DlgLnkEMailSubject">Message Subject</span><br />
+				<input id="txtEMailSubject" style="WIDTH: 100%" type="text" /><br />
+				<span fckLang="DlgLnkEMailBody">Message Body</span><br />
+				<textarea id="txtEMailBody" style="WIDTH: 100%" rows="3" cols="20"></textarea>
+			</div>
+		</div>
+		<div id="divUpload" style="DISPLAY: none">
+			<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data" action="" onsubmit="return CheckUpload();">
+				<span fckLang="DlgLnkUpload">Upload</span><br />
+				<input id="txtUploadFile" style="WIDTH: 100%" type="file" size="40" name="NewFile" /><br />
+				<br />
+				<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
+				<script type="text/javascript">
+					document.write( '<iframe name="UploadWindow" style="display: none" src="' + FCKTools.GetVoidUrl() + '"><\/iframe>' ) ;
+				</script>
+			</form>
+		</div>
+		<div id="divTarget" style="DISPLAY: none">
+			<table cellspacing="0" cellpadding="0" width="100%" border="0">
+				<tr>
+					<td nowrap="nowrap">
+						<span fckLang="DlgLnkTarget">Target</span><br />
+						<select id="cmbTarget" onchange="SetTarget(this.value);">
+							<option value="" fckLang="DlgGenNotSet" selected="selected">&lt;not set&gt;</option>
+							<option value="frame" fckLang="DlgLnkTargetFrame">&lt;frame&gt;</option>
+							<option value="popup" fckLang="DlgLnkTargetPopup">&lt;popup window&gt;</option>
+							<option value="_blank" fckLang="DlgLnkTargetBlank">New Window (_blank)</option>
+							<option value="_top" fckLang="DlgLnkTargetTop">Topmost Window (_top)</option>
+							<option value="_self" fckLang="DlgLnkTargetSelf">Same Window (_self)</option>
+							<option value="_parent" fckLang="DlgLnkTargetParent">Parent Window (_parent)</option>
+						</select>
+					</td>
+					<td>&nbsp;</td>
+					<td id="tdTargetFrame" nowrap="nowrap" width="100%">
+						<span fckLang="DlgLnkTargetFrameName">Target Frame Name</span><br />
+						<input id="txtTargetFrame" style="WIDTH: 100%" type="text" onkeyup="OnTargetNameChange();"
+							onchange="OnTargetNameChange();" />
+					</td>
+					<td id="tdPopupName" style="DISPLAY: none" nowrap="nowrap" width="100%">
+						<span fckLang="DlgLnkPopWinName">Popup Window Name</span><br />
+						<input id="txtPopupName" style="WIDTH: 100%" type="text" />
+					</td>
+				</tr>
+			</table>
+			<br />
+			<table id="tablePopupFeatures" style="DISPLAY: none" cellspacing="0" cellpadding="0" align="center"
+				border="0">
+				<tr>
+					<td>
+						<span fckLang="DlgLnkPopWinFeat">Popup Window Features</span><br />
+						<table cellspacing="0" cellpadding="0" border="0">
+							<tr>
+								<td valign="top" nowrap="nowrap" width="50%">
+									<input id="chkPopupResizable" name="chkFeature" value="resizable" type="checkbox" /><label for="chkPopupResizable" fckLang="DlgLnkPopResize">Resizable</label><br />
+									<input id="chkPopupLocationBar" name="chkFeature" value="location" type="checkbox" /><label for="chkPopupLocationBar" fckLang="DlgLnkPopLocation">Location
+										Bar</label><br />
+									<input id="chkPopupManuBar" name="chkFeature" value="menubar" type="checkbox" /><label for="chkPopupManuBar" fckLang="DlgLnkPopMenu">Menu
+										Bar</label><br />
+									<input id="chkPopupScrollBars" name="chkFeature" value="scrollbars" type="checkbox" /><label for="chkPopupScrollBars" fckLang="DlgLnkPopScroll">Scroll
+										Bars</label>
+								</td>
+								<td></td>
+								<td valign="top" nowrap="nowrap" width="50%">
+									<input id="chkPopupStatusBar" name="chkFeature" value="status" type="checkbox" /><label for="chkPopupStatusBar" fckLang="DlgLnkPopStatus">Status
+										Bar</label><br />
+									<input id="chkPopupToolbar" name="chkFeature" value="toolbar" type="checkbox" /><label for="chkPopupToolbar" fckLang="DlgLnkPopToolbar">Toolbar</label><br />
+									<input id="chkPopupFullScreen" name="chkFeature" value="fullscreen" type="checkbox" /><label for="chkPopupFullScreen" fckLang="DlgLnkPopFullScrn">Full
+										Screen (IE)</label><br />
+									<input id="chkPopupDependent" name="chkFeature" value="dependent" type="checkbox" /><label for="chkPopupDependent" fckLang="DlgLnkPopDependent">Dependent
+										(Netscape)</label>
+								</td>
+							</tr>
+							<tr>
+								<td valign="top" nowrap="nowrap" width="50%">&nbsp;</td>
+								<td></td>
+								<td valign="top" nowrap="nowrap" width="50%"></td>
+							</tr>
+							<tr>
+								<td valign="top">
+									<table cellspacing="0" cellpadding="0" border="0">
+										<tr>
+											<td nowrap="nowrap"><span fckLang="DlgLnkPopWidth">Width</span></td>
+											<td>&nbsp;<input id="txtPopupWidth" type="text" maxlength="4" size="4" /></td>
+										</tr>
+										<tr>
+											<td nowrap="nowrap"><span fckLang="DlgLnkPopHeight">Height</span></td>
+											<td>&nbsp;<input id="txtPopupHeight" type="text" maxlength="4" size="4" /></td>
+										</tr>
+									</table>
+								</td>
+								<td>&nbsp;&nbsp;</td>
+								<td valign="top">
+									<table cellspacing="0" cellpadding="0" border="0">
+										<tr>
+											<td nowrap="nowrap"><span fckLang="DlgLnkPopLeft">Left Position</span></td>
+											<td>&nbsp;<input id="txtPopupLeft" type="text" maxlength="4" size="4" /></td>
+										</tr>
+										<tr>
+											<td nowrap="nowrap"><span fckLang="DlgLnkPopTop">Top Position</span></td>
+											<td>&nbsp;<input id="txtPopupTop" type="text" maxlength="4" size="4" /></td>
+										</tr>
+									</table>
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+			</table>
+		</div>
+		<div id="divAttribs" style="DISPLAY: none">
+			<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+				<tr>
+					<td valign="top" width="50%">
+						<span fckLang="DlgGenId">Id</span><br />
+						<input id="txtAttId" style="WIDTH: 100%" type="text" />
+					</td>
+					<td width="1"></td>
+					<td valign="top">
+						<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+							<tr>
+								<td width="60%">
+									<span fckLang="DlgGenLangDir">Language Direction</span><br />
+									<select id="cmbAttLangDir" style="WIDTH: 100%">
+										<option value="" fckLang="DlgGenNotSet" selected>&lt;not set&gt;</option>
+										<option value="ltr" fckLang="DlgGenLangDirLtr">Left to Right (LTR)</option>
+										<option value="rtl" fckLang="DlgGenLangDirRtl">Right to Left (RTL)</option>
+									</select>
+								</td>
+								<td width="1%">&nbsp;&nbsp;&nbsp;</td>
+								<td nowrap="nowrap"><span fckLang="DlgGenAccessKey">Access Key</span><br />
+									<input id="txtAttAccessKey" style="WIDTH: 100%" type="text" maxlength="1" size="1" />
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+				<tr>
+					<td valign="top" width="50%">
+						<span fckLang="DlgGenName">Name</span><br />
+						<input id="txtAttName" style="WIDTH: 100%" type="text" />
+					</td>
+					<td width="1"></td>
+					<td valign="top">
+						<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+							<tr>
+								<td width="60%">
+									<span fckLang="DlgGenLangCode">Language Code</span><br />
+									<input id="txtAttLangCode" style="WIDTH: 100%" type="text" />
+								</td>
+								<td width="1%">&nbsp;&nbsp;&nbsp;</td>
+								<td nowrap="nowrap">
+									<span fckLang="DlgGenTabIndex">Tab Index</span><br />
+									<input id="txtAttTabIndex" style="WIDTH: 100%" type="text" maxlength="5" size="5" />
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+				<tr>
+					<td valign="top" width="50%">&nbsp;</td>
+					<td width="1"></td>
+					<td valign="top"></td>
+				</tr>
+				<tr>
+					<td valign="top" width="50%">
+						<span fckLang="DlgGenTitle">Advisory Title</span><br />
+						<input id="txtAttTitle" style="WIDTH: 100%" type="text" />
+					</td>
+					<td width="1">&nbsp;&nbsp;&nbsp;</td>
+					<td valign="top">
+						<span fckLang="DlgGenContType">Advisory Content Type</span><br />
+						<input id="txtAttContentType" style="WIDTH: 100%" type="text" />
+					</td>
+				</tr>
+				<tr>
+					<td valign="top">
+						<span fckLang="DlgGenClass">Stylesheet Classes</span><br />
+						<input id="txtAttClasses" style="WIDTH: 100%" type="text" />
+					</td>
+					<td></td>
+					<td valign="top">
+						<span fckLang="DlgGenLinkCharset">Linked Resource Charset</span><br />
+						<input id="txtAttCharSet" style="WIDTH: 100%" type="text" />
+					</td>
+				</tr>
+			</table>
+			<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+				<tr>
+					<td>
+						<span fckLang="DlgGenStyle">Style</span><br />
+						<input id="txtAttStyle" style="WIDTH: 100%" type="text" />
+					</td>
+				</tr>
+			</table>
+		</div>
+	</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_listprop.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_listprop.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_listprop.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,120 +1,120 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Bulleted List dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title></title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<meta content="noindex, nofollow" name="robots" />
-	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-	<script type="text/javascript">
-
-var dialog	= window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-// Gets the document DOM
-var oDOM = oEditor.FCK.EditorDocument ;
-var sListType = ( location.search == '?OL' ? 'OL' : 'UL' ) ;
-
-var oActiveEl = dialog.Selection.GetSelection().MoveToAncestorNode( sListType ) ;
-var oActiveSel ;
-
-window.onload = function()
-{
-	// First of all, translate the dialog box texts
-	oEditor.FCKLanguageManager.TranslatePage(document) ;
-
-	if ( sListType == 'UL' )
-		oActiveSel = GetE('selBulleted') ;
-	else
-	{
-		if ( oActiveEl )
-		{
-			oActiveSel = GetE('selNumbered') ;
-			GetE('eStart').style.display = '' ;
-			GetE('txtStartPosition').value	= GetAttribute( oActiveEl, 'start' ) ;
-		}
-	}
-
-	oActiveSel.style.display = '' ;
-
-	if ( oActiveEl )
-	{
-		if ( oActiveEl.getAttribute('type') )
-			oActiveSel.value = oActiveEl.getAttribute('type') ;
-	}
-
-	dialog.SetOkButton( true ) ;
-	dialog.SetAutoSize( true ) ;
-
-	SelectField( sListType == 'OL' ? 'txtStartPosition' : 'selBulleted' ) ;
-}
-
-function Ok()
-{
-	if ( oActiveEl ){
-		SetAttribute( oActiveEl, 'type'	, oActiveSel.value ) ;
-		if(oActiveEl.tagName == 'OL')
-			SetAttribute( oActiveEl, 'start', GetE('txtStartPosition').value ) ;
-	}
-
-	return true ;
-}
-
-	</script>
-</head>
-<body style="overflow: hidden">
-	<table width="100%" style="height: 100%">
-		<tr>
-			<td style="text-align:center">
-				<table cellspacing="0" cellpadding="0" border="0" style="margin-left: auto; margin-right: auto;">
-					<tr>
-						<td id="eStart" style="display: none; padding-right: 5px; padding-left: 5px">
-							<span fcklang="DlgLstStart">Start</span><br />
-							<input type="text" id="txtStartPosition" size="5" />
-						</td>
-						<td style="padding-right: 5px; padding-left: 5px">
-							<span fcklang="DlgLstType">List Type</span><br />
-							<select id="selBulleted" style="display: none">
-								<option value="" selected="selected"></option>
-								<option value="circle" fcklang="DlgLstTypeCircle">Circle</option>
-								<option value="disc" fcklang="DlgLstTypeDisc">Disc</option>
-								<option value="square" fcklang="DlgLstTypeSquare">Square</option>
-							</select>
-							<select id="selNumbered" style="display: none">
-								<option value="" selected="selected"></option>
-								<option value="1" fcklang="DlgLstTypeNumbers">Numbers (1, 2, 3)</option>
-								<option value="a" fcklang="DlgLstTypeLCase">Lowercase Letters (a, b, c)</option>
-								<option value="A" fcklang="DlgLstTypeUCase">Uppercase Letters (A, B, C)</option>
-								<option value="i" fcklang="DlgLstTypeSRoman">Small Roman Numerals (i, ii, iii)</option>
-								<option value="I" fcklang="DlgLstTypeLRoman">Large Roman Numerals (I, II, III)</option>
-							</select>
-							&nbsp;
-						</td>
-					</tr>
-				</table>
-			</td>
-		</tr>
-	</table>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Bulleted List dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+var sListType = ( location.search == '?OL' ? 'OL' : 'UL' ) ;
+
+var oActiveEl = dialog.Selection.GetSelection().MoveToAncestorNode( sListType ) ;
+var oActiveSel ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( sListType == 'UL' )
+		oActiveSel = GetE('selBulleted') ;
+	else
+	{
+		if ( oActiveEl )
+		{
+			oActiveSel = GetE('selNumbered') ;
+			GetE('eStart').style.display = '' ;
+			GetE('txtStartPosition').value	= GetAttribute( oActiveEl, 'start' ) ;
+		}
+	}
+
+	oActiveSel.style.display = '' ;
+
+	if ( oActiveEl )
+	{
+		if ( oActiveEl.getAttribute('type') )
+			oActiveSel.value = oActiveEl.getAttribute('type') ;
+	}
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+
+	SelectField( sListType == 'OL' ? 'txtStartPosition' : 'selBulleted' ) ;
+}
+
+function Ok()
+{
+	if ( oActiveEl ){
+		SetAttribute( oActiveEl, 'type'	, oActiveSel.value ) ;
+		if(oActiveEl.tagName == 'OL')
+			SetAttribute( oActiveEl, 'start', GetE('txtStartPosition').value ) ;
+	}
+
+	return true ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table width="100%" style="height: 100%">
+		<tr>
+			<td style="text-align:center">
+				<table cellspacing="0" cellpadding="0" border="0" style="margin-left: auto; margin-right: auto;">
+					<tr>
+						<td id="eStart" style="display: none; padding-right: 5px; padding-left: 5px">
+							<span fcklang="DlgLstStart">Start</span><br />
+							<input type="text" id="txtStartPosition" size="5" />
+						</td>
+						<td style="padding-right: 5px; padding-left: 5px">
+							<span fcklang="DlgLstType">List Type</span><br />
+							<select id="selBulleted" style="display: none">
+								<option value="" selected="selected"></option>
+								<option value="circle" fcklang="DlgLstTypeCircle">Circle</option>
+								<option value="disc" fcklang="DlgLstTypeDisc">Disc</option>
+								<option value="square" fcklang="DlgLstTypeSquare">Square</option>
+							</select>
+							<select id="selNumbered" style="display: none">
+								<option value="" selected="selected"></option>
+								<option value="1" fcklang="DlgLstTypeNumbers">Numbers (1, 2, 3)</option>
+								<option value="a" fcklang="DlgLstTypeLCase">Lowercase Letters (a, b, c)</option>
+								<option value="A" fcklang="DlgLstTypeUCase">Uppercase Letters (A, B, C)</option>
+								<option value="i" fcklang="DlgLstTypeSRoman">Small Roman Numerals (i, ii, iii)</option>
+								<option value="I" fcklang="DlgLstTypeLRoman">Large Roman Numerals (I, II, III)</option>
+							</select>
+							&nbsp;
+						</td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_paste.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_paste.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_paste.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,346 +1,346 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 dialog is shown when, for some reason (usually security settings),
- * the user is not able to paste data from the clipboard to the editor using
- * the toolbar buttons or the context menu.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title></title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<meta name="robots" content="noindex, nofollow" />
-	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-	<script type="text/javascript">
-var dialog = window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-var FCK = oEditor.FCK;
-var FCKTools	= oEditor.FCKTools ;
-var FCKConfig	= oEditor.FCKConfig ;
-var FCKBrowserInfo = oEditor.FCKBrowserInfo ;
-
-window.onload = function ()
-{
-	// First of all, translate the dialog box texts
-	oEditor.FCKLanguageManager.TranslatePage(document) ;
-
-	var sPastingType = dialog.Args().CustomValue ;
-
-	if ( sPastingType == 'Word' || sPastingType == 'Security' )
-	{
-		if ( sPastingType == 'Security' )
-			document.getElementById( 'xSecurityMsg' ).style.display = '' ;
-
-		// For document.domain compatibility (#123) we must do all the magic in
-		// the URL for IE.
-		var sFrameUrl = !oEditor.FCK_IS_CUSTOM_DOMAIN || !FCKBrowserInfo.IsIE ?
-			'javascript:void(0)' :
-			'javascript:void( (function(){' +
-				'document.open() ;' +
-				'document.domain=\'' + document.domain + '\' ;' +
-				'document.write(\'<html><head><script>window.onerror = function() { return true ; };<\/script><\/head><body><\/body><\/html>\') ;' +
-				'document.close() ;' +
-				'document.body.contentEditable = true ;' +
-				'window.focus() ;' +
-				'})() )' ;
-
-		var eFrameSpace = document.getElementById( 'xFrameSpace' ) ;
-		eFrameSpace.innerHTML = '<iframe id="frmData" src="' + sFrameUrl + '" ' +
-					'height="98%" width="99%" frameborder="0" style="border: #000000 1px; background-color: #ffffff"><\/iframe>' ;
-
-		var oFrame = eFrameSpace.firstChild ;
-
-		if ( !oEditor.FCK_IS_CUSTOM_DOMAIN || !FCKBrowserInfo.IsIE )
-		{
-			// Avoid errors if the pasted content has any script that fails: #389
-			var oDoc = oFrame.contentWindow.document ;
-			oDoc.open() ;
-			oDoc.write('<html><head><script>window.onerror = function() { return true ; };<\/script><\/head><body><\/body><\/html>') ;
-			oDoc.close() ;
-
-			if ( FCKBrowserInfo.IsIE )
-				oDoc.body.contentEditable = true ;
-			else
-				oDoc.designMode = 'on' ;
-
-			oFrame.contentWindow.focus();
-		}
-	}
-	else
-	{
-		document.getElementById('txtData').style.display = '' ;
-	}
-
-	if ( sPastingType != 'Word' )
-		document.getElementById('oWordCommands').style.display = 'none' ;
-
-	dialog.SetOkButton( true ) ;
-	dialog.SetAutoSize( true ) ;
-}
-
-function Ok()
-{
-	// Before doing anything, save undo snapshot.
-	oEditor.FCKUndo.SaveUndoStep() ;
-
-	var sHtml ;
-
-	var sPastingType = dialog.Args().CustomValue ;
-
-	if ( sPastingType == 'Word' || sPastingType == 'Security' )
-	{
-		var oFrame = document.getElementById('frmData') ;
-		var oBody ;
-
-		if ( oFrame.contentDocument )
-			oBody = oFrame.contentDocument.body ;
-		else
-			oBody = oFrame.contentWindow.document.body ;
-
-		if ( sPastingType == 'Word' )
-		{
-			// If a plugin creates a FCK.CustomCleanWord function it will be called instead of the default one
-			if ( typeof( FCK.CustomCleanWord ) == 'function' )
-				sHtml = FCK.CustomCleanWord( oBody, document.getElementById('chkRemoveFont').checked, document.getElementById('chkRemoveStyles').checked ) ;
-			else
-				sHtml = CleanWord( oBody, document.getElementById('chkRemoveFont').checked, document.getElementById('chkRemoveStyles').checked ) ;
-		}
-		else
-			sHtml = oBody.innerHTML ;
-
-		// Fix relative anchor URLs (IE automatically adds the current page URL).
-		var re = new RegExp( window.location + "#", "g" ) ;
-		sHtml = sHtml.replace( re, '#') ;
-	}
-	else
-	{
-		sHtml = oEditor.FCKTools.HTMLEncode( document.getElementById('txtData').value )  ;
-		sHtml = FCKTools.ProcessLineBreaks( oEditor, FCKConfig, sHtml ) ;
-
-		// FCK.InsertHtml() does not work for us, since document fragments cannot contain node fragments. :(
-		// Use the marker method instead. It's primitive, but it works.
-		var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
-		var oDoc = oEditor.FCK.EditorDocument ;
-		dialog.Selection.EnsureSelection() ;
-		range.MoveToSelection() ;
-		range.DeleteContents() ;
-		var marker = [] ;
-		for ( var i = 0 ; i < 5 ; i++ )
-			marker.push( parseInt(Math.random() * 100000, 10 ) ) ;
-		marker = marker.join( "" ) ;
-		range.InsertNode ( oDoc.createTextNode( marker ) ) ;
-		var bookmark = range.CreateBookmark() ;
-
-		// Now we've got a marker indicating the paste position in the editor document.
-		// Find its position in the HTML code.
-		var htmlString = oDoc.body.innerHTML ;
-		var index = htmlString.indexOf( marker ) ;
-
-		// Split it the HTML code up, add the code we generated, and put them back together.
-		var htmlList = [] ;
-		htmlList.push( htmlString.substr( 0, index ) ) ;
-		htmlList.push( sHtml ) ;
-		htmlList.push( htmlString.substr( index + marker.length ) ) ;
-		htmlString = htmlList.join( "" ) ;
-
-		if ( oEditor.FCKBrowserInfo.IsIE )
-			oEditor.FCK.SetInnerHtml( htmlString ) ;
-		else
-			oDoc.body.innerHTML = htmlString ;
-
-		range.MoveToBookmark( bookmark ) ;
-		range.Collapse( false ) ;
-		range.Select() ;
-		range.Release() ;
-		return true ;
-	}
-
-	oEditor.FCK.InsertHtml( sHtml ) ;
-
-	return true ;
-}
-
-// This function will be called from the PasteFromWord dialog (fck_paste.html)
-// Input: oNode a DOM node that contains the raw paste from the clipboard
-// bIgnoreFont, bRemoveStyles booleans according to the values set in the dialog
-// Output: the cleaned string
-function CleanWord( oNode, bIgnoreFont, bRemoveStyles )
-{
-	var html = oNode.innerHTML ;
-
-	html = html.replace(/<o:p>\s*<\/o:p>/g, '') ;
-	html = html.replace(/<o:p>[\s\S]*?<\/o:p>/g, '&nbsp;') ;
-
-	// Remove mso-xxx styles.
-	html = html.replace( /\s*mso-[^:]+:[^;"]+;?/gi, '' ) ;
-
-	// Remove margin styles.
-	html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*;/gi, '' ) ;
-	html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*"/gi, "\"" ) ;
-
-	html = html.replace( /\s*TEXT-INDENT: 0cm\s*;/gi, '' ) ;
-	html = html.replace( /\s*TEXT-INDENT: 0cm\s*"/gi, "\"" ) ;
-
-	html = html.replace( /\s*TEXT-ALIGN: [^\s;]+;?"/gi, "\"" ) ;
-
-	html = html.replace( /\s*PAGE-BREAK-BEFORE: [^\s;]+;?"/gi, "\"" ) ;
-
-	html = html.replace( /\s*FONT-VARIANT: [^\s;]+;?"/gi, "\"" ) ;
-
-	html = html.replace( /\s*tab-stops:[^;"]*;?/gi, '' ) ;
-	html = html.replace( /\s*tab-stops:[^"]*/gi, '' ) ;
-
-	// Remove FONT face attributes.
-	if ( bIgnoreFont )
-	{
-		html = html.replace( /\s*face="[^"]*"/gi, '' ) ;
-		html = html.replace( /\s*face=[^ >]*/gi, '' ) ;
-
-		html = html.replace( /\s*FONT-FAMILY:[^;"]*;?/gi, '' ) ;
-	}
-
-	// Remove Class attributes
-	html = html.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3") ;
-
-	// Remove styles.
-	if ( bRemoveStyles )
-		html = html.replace( /<(\w[^>]*) style="([^\"]*)"([^>]*)/gi, "<$1$3" ) ;
-
-	// Remove style, meta and link tags
-	html = html.replace( /<STYLE[^>]*>[\s\S]*?<\/STYLE[^>]*>/gi, '' ) ;
-	html = html.replace( /<(?:META|LINK)[^>]*>\s*/gi, '' ) ;
-
-	// Remove empty styles.
-	html =  html.replace( /\s*style="\s*"/gi, '' ) ;
-
-	html = html.replace( /<SPAN\s*[^>]*>\s*&nbsp;\s*<\/SPAN>/gi, '&nbsp;' ) ;
-
-	html = html.replace( /<SPAN\s*[^>]*><\/SPAN>/gi, '' ) ;
-
-	// Remove Lang attributes
-	html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ;
-
-	html = html.replace( /<SPAN\s*>([\s\S]*?)<\/SPAN>/gi, '$1' ) ;
-
-	html = html.replace( /<FONT\s*>([\s\S]*?)<\/FONT>/gi, '$1' ) ;
-
-	// Remove XML elements and declarations
-	html = html.replace(/<\\?\?xml[^>]*>/gi, '' ) ;
-
-	// Remove w: tags with contents.
-	html = html.replace( /<w:[^>]*>[\s\S]*?<\/w:[^>]*>/gi, '' ) ;
-
-	// Remove Tags with XML namespace declarations: <o:p><\/o:p>
-	html = html.replace(/<\/?\w+:[^>]*>/gi, '' ) ;
-
-	// Remove comments [SF BUG-1481861].
-	html = html.replace(/<\!--[\s\S]*?-->/g, '' ) ;
-
-	html = html.replace( /<(U|I|STRIKE)>&nbsp;<\/\1>/g, '&nbsp;' ) ;
-
-	html = html.replace( /<H\d>\s*<\/H\d>/gi, '' ) ;
-
-	// Remove "display:none" tags.
-	html = html.replace( /<(\w+)[^>]*\sstyle="[^"]*DISPLAY\s?:\s?none[\s\S]*?<\/\1>/ig, '' ) ;
-
-	// Remove language tags
-	html = html.replace( /<(\w[^>]*) language=([^ |>]*)([^>]*)/gi, "<$1$3") ;
-
-	// Remove onmouseover and onmouseout events (from MS Word comments effect)
-	html = html.replace( /<(\w[^>]*) onmouseover="([^\"]*)"([^>]*)/gi, "<$1$3") ;
-	html = html.replace( /<(\w[^>]*) onmouseout="([^\"]*)"([^>]*)/gi, "<$1$3") ;
-
-	if ( FCKConfig.CleanWordKeepsStructure )
-	{
-		// The original <Hn> tag send from Word is something like this: <Hn style="margin-top:0px;margin-bottom:0px">
-		html = html.replace( /<H(\d)([^>]*)>/gi, '<h$1>' ) ;
-
-		// Word likes to insert extra <font> tags, when using MSIE. (Wierd).
-		html = html.replace( /<(H\d)><FONT[^>]*>([\s\S]*?)<\/FONT><\/\1>/gi, '<$1>$2<\/$1>' );
-		html = html.replace( /<(H\d)><EM>([\s\S]*?)<\/EM><\/\1>/gi, '<$1>$2<\/$1>' );
-	}
-	else
-	{
-		html = html.replace( /<H1([^>]*)>/gi, '<div$1><b><font size="6">' ) ;
-		html = html.replace( /<H2([^>]*)>/gi, '<div$1><b><font size="5">' ) ;
-		html = html.replace( /<H3([^>]*)>/gi, '<div$1><b><font size="4">' ) ;
-		html = html.replace( /<H4([^>]*)>/gi, '<div$1><b><font size="3">' ) ;
-		html = html.replace( /<H5([^>]*)>/gi, '<div$1><b><font size="2">' ) ;
-		html = html.replace( /<H6([^>]*)>/gi, '<div$1><b><font size="1">' ) ;
-
-		html = html.replace( /<\/H\d>/gi, '<\/font><\/b><\/div>' ) ;
-
-		// Transform <P> to <DIV>
-		var re = new RegExp( '(<P)([^>]*>[\\s\\S]*?)(<\/P>)', 'gi' ) ;	// Different because of a IE 5.0 error
-		html = html.replace( re, '<div$2<\/div>' ) ;
-
-		// Remove empty tags (three times, just to be sure).
-		// This also removes any empty anchor
-		html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
-		html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
-		html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
-	}
-
-	return html ;
-}
-
-	</script>
-
-</head>
-<body style="overflow: hidden">
-	<table cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 98%">
-		<tr>
-			<td>
-				<div id="xSecurityMsg" style="display: none">
-					<span fcklang="DlgPasteSec">Because of your browser security settings,
-						the editor is not able to access your clipboard data directly. You are required
-						to paste it again in this window.</span><br />
-					&nbsp;
-				</div>
-				<div>
-					<span fcklang="DlgPasteMsg2">Please paste inside the following box using the keyboard
-						(<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.</span><br />
-					&nbsp;
-				</div>
-			</td>
-		</tr>
-		<tr>
-			<td id="xFrameSpace" valign="top" height="100%" style="border: #000000 1px solid">
-				<textarea id="txtData" cols="80" rows="5" style="border: #000000 1px; display: none;
-					width: 99%; height: 98%"></textarea>
-			</td>
-		</tr>
-		<tr id="oWordCommands">
-			<td>
-
-					<input id="chkRemoveFont" type="checkbox" checked="checked" />
-					<label for="chkRemoveFont" fcklang="DlgPasteIgnoreFont">
-						Ignore Font Face definitions</label>
-					<br />
-					<input id="chkRemoveStyles" type="checkbox" />
-					<label for="chkRemoveStyles" fcklang="DlgPasteRemoveStyles">
-						Remove Styles definitions</label>
-
-			</td>
-		</tr>
-	</table>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 dialog is shown when, for some reason (usually security settings),
+ * the user is not able to paste data from the clipboard to the editor using
+ * the toolbar buttons or the context menu.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+var dialog = window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+var FCK = oEditor.FCK;
+var FCKTools	= oEditor.FCKTools ;
+var FCKConfig	= oEditor.FCKConfig ;
+var FCKBrowserInfo = oEditor.FCKBrowserInfo ;
+
+window.onload = function ()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	var sPastingType = dialog.Args().CustomValue ;
+
+	if ( sPastingType == 'Word' || sPastingType == 'Security' )
+	{
+		if ( sPastingType == 'Security' )
+			document.getElementById( 'xSecurityMsg' ).style.display = '' ;
+
+		// For document.domain compatibility (#123) we must do all the magic in
+		// the URL for IE.
+		var sFrameUrl = !oEditor.FCK_IS_CUSTOM_DOMAIN || !FCKBrowserInfo.IsIE ?
+			'javascript:void(0)' :
+			'javascript:void( (function(){' +
+				'document.open() ;' +
+				'document.domain=\'' + document.domain + '\' ;' +
+				'document.write(\'<html><head><script>window.onerror = function() { return true ; };<\/script><\/head><body><\/body><\/html>\') ;' +
+				'document.close() ;' +
+				'document.body.contentEditable = true ;' +
+				'window.focus() ;' +
+				'})() )' ;
+
+		var eFrameSpace = document.getElementById( 'xFrameSpace' ) ;
+		eFrameSpace.innerHTML = '<iframe id="frmData" src="' + sFrameUrl + '" ' +
+					'height="98%" width="99%" frameborder="0" style="border: #000000 1px; background-color: #ffffff"><\/iframe>' ;
+
+		var oFrame = eFrameSpace.firstChild ;
+
+		if ( !oEditor.FCK_IS_CUSTOM_DOMAIN || !FCKBrowserInfo.IsIE )
+		{
+			// Avoid errors if the pasted content has any script that fails: #389
+			var oDoc = oFrame.contentWindow.document ;
+			oDoc.open() ;
+			oDoc.write('<html><head><script>window.onerror = function() { return true ; };<\/script><\/head><body><\/body><\/html>') ;
+			oDoc.close() ;
+
+			if ( FCKBrowserInfo.IsIE )
+				oDoc.body.contentEditable = true ;
+			else
+				oDoc.designMode = 'on' ;
+
+			oFrame.contentWindow.focus();
+		}
+	}
+	else
+	{
+		document.getElementById('txtData').style.display = '' ;
+	}
+
+	if ( sPastingType != 'Word' )
+		document.getElementById('oWordCommands').style.display = 'none' ;
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+}
+
+function Ok()
+{
+	// Before doing anything, save undo snapshot.
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	var sHtml ;
+
+	var sPastingType = dialog.Args().CustomValue ;
+
+	if ( sPastingType == 'Word' || sPastingType == 'Security' )
+	{
+		var oFrame = document.getElementById('frmData') ;
+		var oBody ;
+
+		if ( oFrame.contentDocument )
+			oBody = oFrame.contentDocument.body ;
+		else
+			oBody = oFrame.contentWindow.document.body ;
+
+		if ( sPastingType == 'Word' )
+		{
+			// If a plugin creates a FCK.CustomCleanWord function it will be called instead of the default one
+			if ( typeof( FCK.CustomCleanWord ) == 'function' )
+				sHtml = FCK.CustomCleanWord( oBody, document.getElementById('chkRemoveFont').checked, document.getElementById('chkRemoveStyles').checked ) ;
+			else
+				sHtml = CleanWord( oBody, document.getElementById('chkRemoveFont').checked, document.getElementById('chkRemoveStyles').checked ) ;
+		}
+		else
+			sHtml = oBody.innerHTML ;
+
+		// Fix relative anchor URLs (IE automatically adds the current page URL).
+		var re = new RegExp( window.location + "#", "g" ) ;
+		sHtml = sHtml.replace( re, '#') ;
+	}
+	else
+	{
+		sHtml = oEditor.FCKTools.HTMLEncode( document.getElementById('txtData').value )  ;
+		sHtml = FCKTools.ProcessLineBreaks( oEditor, FCKConfig, sHtml ) ;
+
+		// FCK.InsertHtml() does not work for us, since document fragments cannot contain node fragments. :(
+		// Use the marker method instead. It's primitive, but it works.
+		var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
+		var oDoc = oEditor.FCK.EditorDocument ;
+		dialog.Selection.EnsureSelection() ;
+		range.MoveToSelection() ;
+		range.DeleteContents() ;
+		var marker = [] ;
+		for ( var i = 0 ; i < 5 ; i++ )
+			marker.push( parseInt(Math.random() * 100000, 10 ) ) ;
+		marker = marker.join( "" ) ;
+		range.InsertNode ( oDoc.createTextNode( marker ) ) ;
+		var bookmark = range.CreateBookmark() ;
+
+		// Now we've got a marker indicating the paste position in the editor document.
+		// Find its position in the HTML code.
+		var htmlString = oDoc.body.innerHTML ;
+		var index = htmlString.indexOf( marker ) ;
+
+		// Split it the HTML code up, add the code we generated, and put them back together.
+		var htmlList = [] ;
+		htmlList.push( htmlString.substr( 0, index ) ) ;
+		htmlList.push( sHtml ) ;
+		htmlList.push( htmlString.substr( index + marker.length ) ) ;
+		htmlString = htmlList.join( "" ) ;
+
+		if ( oEditor.FCKBrowserInfo.IsIE )
+			oEditor.FCK.SetInnerHtml( htmlString ) ;
+		else
+			oDoc.body.innerHTML = htmlString ;
+
+		range.MoveToBookmark( bookmark ) ;
+		range.Collapse( false ) ;
+		range.Select() ;
+		range.Release() ;
+		return true ;
+	}
+
+	oEditor.FCK.InsertHtml( sHtml ) ;
+
+	return true ;
+}
+
+// This function will be called from the PasteFromWord dialog (fck_paste.html)
+// Input: oNode a DOM node that contains the raw paste from the clipboard
+// bIgnoreFont, bRemoveStyles booleans according to the values set in the dialog
+// Output: the cleaned string
+function CleanWord( oNode, bIgnoreFont, bRemoveStyles )
+{
+	var html = oNode.innerHTML ;
+
+	html = html.replace(/<o:p>\s*<\/o:p>/g, '') ;
+	html = html.replace(/<o:p>[\s\S]*?<\/o:p>/g, '&nbsp;') ;
+
+	// Remove mso-xxx styles.
+	html = html.replace( /\s*mso-[^:]+:[^;"]+;?/gi, '' ) ;
+
+	// Remove margin styles.
+	html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*;/gi, '' ) ;
+	html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*"/gi, "\"" ) ;
+
+	html = html.replace( /\s*TEXT-INDENT: 0cm\s*;/gi, '' ) ;
+	html = html.replace( /\s*TEXT-INDENT: 0cm\s*"/gi, "\"" ) ;
+
+	html = html.replace( /\s*TEXT-ALIGN: [^\s;]+;?"/gi, "\"" ) ;
+
+	html = html.replace( /\s*PAGE-BREAK-BEFORE: [^\s;]+;?"/gi, "\"" ) ;
+
+	html = html.replace( /\s*FONT-VARIANT: [^\s;]+;?"/gi, "\"" ) ;
+
+	html = html.replace( /\s*tab-stops:[^;"]*;?/gi, '' ) ;
+	html = html.replace( /\s*tab-stops:[^"]*/gi, '' ) ;
+
+	// Remove FONT face attributes.
+	if ( bIgnoreFont )
+	{
+		html = html.replace( /\s*face="[^"]*"/gi, '' ) ;
+		html = html.replace( /\s*face=[^ >]*/gi, '' ) ;
+
+		html = html.replace( /\s*FONT-FAMILY:[^;"]*;?/gi, '' ) ;
+	}
+
+	// Remove Class attributes
+	html = html.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3") ;
+
+	// Remove styles.
+	if ( bRemoveStyles )
+		html = html.replace( /<(\w[^>]*) style="([^\"]*)"([^>]*)/gi, "<$1$3" ) ;
+
+	// Remove style, meta and link tags
+	html = html.replace( /<STYLE[^>]*>[\s\S]*?<\/STYLE[^>]*>/gi, '' ) ;
+	html = html.replace( /<(?:META|LINK)[^>]*>\s*/gi, '' ) ;
+
+	// Remove empty styles.
+	html =  html.replace( /\s*style="\s*"/gi, '' ) ;
+
+	html = html.replace( /<SPAN\s*[^>]*>\s*&nbsp;\s*<\/SPAN>/gi, '&nbsp;' ) ;
+
+	html = html.replace( /<SPAN\s*[^>]*><\/SPAN>/gi, '' ) ;
+
+	// Remove Lang attributes
+	html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ;
+
+	html = html.replace( /<SPAN\s*>([\s\S]*?)<\/SPAN>/gi, '$1' ) ;
+
+	html = html.replace( /<FONT\s*>([\s\S]*?)<\/FONT>/gi, '$1' ) ;
+
+	// Remove XML elements and declarations
+	html = html.replace(/<\\?\?xml[^>]*>/gi, '' ) ;
+
+	// Remove w: tags with contents.
+	html = html.replace( /<w:[^>]*>[\s\S]*?<\/w:[^>]*>/gi, '' ) ;
+
+	// Remove Tags with XML namespace declarations: <o:p><\/o:p>
+	html = html.replace(/<\/?\w+:[^>]*>/gi, '' ) ;
+
+	// Remove comments [SF BUG-1481861].
+	html = html.replace(/<\!--[\s\S]*?-->/g, '' ) ;
+
+	html = html.replace( /<(U|I|STRIKE)>&nbsp;<\/\1>/g, '&nbsp;' ) ;
+
+	html = html.replace( /<H\d>\s*<\/H\d>/gi, '' ) ;
+
+	// Remove "display:none" tags.
+	html = html.replace( /<(\w+)[^>]*\sstyle="[^"]*DISPLAY\s?:\s?none[\s\S]*?<\/\1>/ig, '' ) ;
+
+	// Remove language tags
+	html = html.replace( /<(\w[^>]*) language=([^ |>]*)([^>]*)/gi, "<$1$3") ;
+
+	// Remove onmouseover and onmouseout events (from MS Word comments effect)
+	html = html.replace( /<(\w[^>]*) onmouseover="([^\"]*)"([^>]*)/gi, "<$1$3") ;
+	html = html.replace( /<(\w[^>]*) onmouseout="([^\"]*)"([^>]*)/gi, "<$1$3") ;
+
+	if ( FCKConfig.CleanWordKeepsStructure )
+	{
+		// The original <Hn> tag send from Word is something like this: <Hn style="margin-top:0px;margin-bottom:0px">
+		html = html.replace( /<H(\d)([^>]*)>/gi, '<h$1>' ) ;
+
+		// Word likes to insert extra <font> tags, when using MSIE. (Wierd).
+		html = html.replace( /<(H\d)><FONT[^>]*>([\s\S]*?)<\/FONT><\/\1>/gi, '<$1>$2<\/$1>' );
+		html = html.replace( /<(H\d)><EM>([\s\S]*?)<\/EM><\/\1>/gi, '<$1>$2<\/$1>' );
+	}
+	else
+	{
+		html = html.replace( /<H1([^>]*)>/gi, '<div$1><b><font size="6">' ) ;
+		html = html.replace( /<H2([^>]*)>/gi, '<div$1><b><font size="5">' ) ;
+		html = html.replace( /<H3([^>]*)>/gi, '<div$1><b><font size="4">' ) ;
+		html = html.replace( /<H4([^>]*)>/gi, '<div$1><b><font size="3">' ) ;
+		html = html.replace( /<H5([^>]*)>/gi, '<div$1><b><font size="2">' ) ;
+		html = html.replace( /<H6([^>]*)>/gi, '<div$1><b><font size="1">' ) ;
+
+		html = html.replace( /<\/H\d>/gi, '<\/font><\/b><\/div>' ) ;
+
+		// Transform <P> to <DIV>
+		var re = new RegExp( '(<P)([^>]*>[\\s\\S]*?)(<\/P>)', 'gi' ) ;	// Different because of a IE 5.0 error
+		html = html.replace( re, '<div$2<\/div>' ) ;
+
+		// Remove empty tags (three times, just to be sure).
+		// This also removes any empty anchor
+		html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
+		html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
+		html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
+	}
+
+	return html ;
+}
+
+	</script>
+
+</head>
+<body style="overflow: hidden">
+	<table cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 98%">
+		<tr>
+			<td>
+				<div id="xSecurityMsg" style="display: none">
+					<span fcklang="DlgPasteSec">Because of your browser security settings,
+						the editor is not able to access your clipboard data directly. You are required
+						to paste it again in this window.</span><br />
+					&nbsp;
+				</div>
+				<div>
+					<span fcklang="DlgPasteMsg2">Please paste inside the following box using the keyboard
+						(<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.</span><br />
+					&nbsp;
+				</div>
+			</td>
+		</tr>
+		<tr>
+			<td id="xFrameSpace" valign="top" height="100%" style="border: #000000 1px solid">
+				<textarea id="txtData" cols="80" rows="5" style="border: #000000 1px; display: none;
+					width: 99%; height: 98%"></textarea>
+			</td>
+		</tr>
+		<tr id="oWordCommands">
+			<td>
+
+					<input id="chkRemoveFont" type="checkbox" checked="checked" />
+					<label for="chkRemoveFont" fcklang="DlgPasteIgnoreFont">
+						Ignore Font Face definitions</label>
+					<br />
+					<input id="chkRemoveStyles" type="checkbox" />
+					<label for="chkRemoveStyles" fcklang="DlgPasteRemoveStyles">
+						Remove Styles definitions</label>
+
+			</td>
+		</tr>
+	</table>
+</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_radiobutton.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_radiobutton.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_radiobutton.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,104 +1,104 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Radio Button dialog window.
--->
-<html>
-	<head>
-		<title>Radio Button Properties</title>
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-		<meta content="noindex, nofollow" name="robots">
-		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-		<script type="text/javascript">
-
-var dialog	= window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-// Gets the document DOM
-var oDOM = oEditor.FCK.EditorDocument ;
-
-var oActiveEl = dialog.Selection.GetSelectedElement() ;
-
-window.onload = function()
-{
-	// First of all, translate the dialog box texts
-	oEditor.FCKLanguageManager.TranslatePage(document) ;
-
-	if ( oActiveEl && oActiveEl.tagName.toUpperCase() == 'INPUT' && oActiveEl.type == 'radio' )
-	{
-		GetE('txtName').value		= oActiveEl.name ;
-		GetE('txtValue').value		= oEditor.FCKBrowserInfo.IsIE ? oActiveEl.value : GetAttribute( oActiveEl, 'value' ) ;
-		GetE('txtSelected').checked	= oActiveEl.checked ;
-	}
-	else
-		oActiveEl = null ;
-
-	dialog.SetOkButton( true ) ;
-	dialog.SetAutoSize( true ) ;
-	SelectField( 'txtName' ) ;
-}
-
-function Ok()
-{
-	oEditor.FCKUndo.SaveUndoStep() ;
-
-	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: 'radio' } ) ;
-
-	if ( oEditor.FCKBrowserInfo.IsIE )
-		oActiveEl.value = GetE('txtValue').value ;
-	else
-		SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
-
-	var bIsChecked = GetE('txtSelected').checked ;
-	SetAttribute( oActiveEl, 'checked', bIsChecked ? 'checked' : null ) ;	// For Firefox
-	oActiveEl.checked = bIsChecked ;
-
-	return true ;
-}
-
-		</script>
-	</head>
-	<body style="OVERFLOW: hidden" scroll="no">
-		<table height="100%" width="100%">
-			<tr>
-				<td align="center">
-					<table border="0" cellpadding="0" cellspacing="0" width="80%">
-						<tr>
-							<td>
-								<span fckLang="DlgCheckboxName">Name</span><br>
-								<input type="text" size="20" id="txtName" style="WIDTH: 100%">
-							</td>
-						</tr>
-						<tr>
-							<td>
-								<span fckLang="DlgCheckboxValue">Value</span><br>
-								<input type="text" size="20" id="txtValue" style="WIDTH: 100%">
-							</td>
-						</tr>
-						<tr>
-							<td><input type="checkbox" id="txtSelected"><label for="txtSelected" fckLang="DlgCheckboxSelected">Checked</label></td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-		</table>
-	</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Radio Button dialog window.
+-->
+<html>
+	<head>
+		<title>Radio Button Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oActiveEl = dialog.Selection.GetSelectedElement() ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oActiveEl && oActiveEl.tagName.toUpperCase() == 'INPUT' && oActiveEl.type == 'radio' )
+	{
+		GetE('txtName').value		= oActiveEl.name ;
+		GetE('txtValue').value		= oEditor.FCKBrowserInfo.IsIE ? oActiveEl.value : GetAttribute( oActiveEl, 'value' ) ;
+		GetE('txtSelected').checked	= oActiveEl.checked ;
+	}
+	else
+		oActiveEl = null ;
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
+}
+
+function Ok()
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: 'radio' } ) ;
+
+	if ( oEditor.FCKBrowserInfo.IsIE )
+		oActiveEl.value = GetE('txtValue').value ;
+	else
+		SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
+
+	var bIsChecked = GetE('txtSelected').checked ;
+	SetAttribute( oActiveEl, 'checked', bIsChecked ? 'checked' : null ) ;	// For Firefox
+	oActiveEl.checked = bIsChecked ;
+
+	return true ;
+}
+
+		</script>
+	</head>
+	<body style="OVERFLOW: hidden" scroll="no">
+		<table height="100%" width="100%">
+			<tr>
+				<td align="center">
+					<table border="0" cellpadding="0" cellspacing="0" width="80%">
+						<tr>
+							<td>
+								<span fckLang="DlgCheckboxName">Name</span><br>
+								<input type="text" size="20" id="txtName" style="WIDTH: 100%">
+							</td>
+						</tr>
+						<tr>
+							<td>
+								<span fckLang="DlgCheckboxValue">Value</span><br>
+								<input type="text" size="20" id="txtValue" style="WIDTH: 100%">
+							</td>
+						</tr>
+						<tr>
+							<td><input type="checkbox" id="txtSelected"><label for="txtSelected" fckLang="DlgCheckboxSelected">Checked</label></td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_replace.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_replace.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_replace.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,648 +1,648 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * "Find" and "Replace" dialog box window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title></title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<meta content="noindex, nofollow" name="robots" />
-	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-	<script type="text/javascript">
-
-var dialog	= window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-var dialogArguments = dialog.Args() ;
-
-var FCKLang = oEditor.FCKLang ;
-var FCKDomTools = oEditor.FCKDomTools ;
-var FCKDomRange = oEditor.FCKDomRange ;
-var FCKListsLib = oEditor.FCKListsLib ;
-var FCKTools = oEditor.FCKTools ;
-var EditorDocument = oEditor.FCK.EditorDocument ;
-var HighlightStyle = oEditor.FCKStyles.GetStyle( '_FCK_SelectionHighlight' )  ;
-
-dialog.AddTab( 'Find', FCKLang.DlgFindTitle ) ;
-dialog.AddTab( 'Replace', FCKLang.DlgReplaceTitle ) ;
-var idMap = {} ;
-
-function OnDialogTabChange( tabCode )
-{
-	ShowE( 'divFind', ( tabCode == 'Find' ) ) ;
-	ShowE( 'divReplace', ( tabCode == 'Replace' ) ) ;
-	idMap['FindText'] = 'txtFind' + tabCode ;
-	idMap['CheckCase'] = 'chkCase' + tabCode ;
-	idMap['CheckWord'] = 'chkWord' + tabCode ;
-
-	if ( tabCode == 'Replace' )
-		dialog.SetAutoSize( true ) ;
-}
-
-GetNextNonEmptyTextNode = function( node, stopNode )
-{
-	while ( ( node = FCKDomTools.GetNextSourceNode( node, false, 3, stopNode ) ) && node && node.length < 1 )
-		1 ;
-	return node ;
-}
-
-CharacterCursor = function( arg )
-{
-	if ( arg.nodeType && arg.nodeType == 9 )
-	{
-		this._textNode = GetNextNonEmptyTextNode( arg.body, arg.documentElement ) ;
-		this._offset = 0 ;
-		this._doc = arg ;
-	}
-	else
-	{
-		this._textNode = arguments[0] ;
-		this._offset = arguments[1] ;
-		this._doc = FCKTools.GetElementDocument( arguments[0] ) ;
-	}
-}
-CharacterCursor.prototype =
-{
-	GetCharacter : function()
-	{
-		return ( this._textNode && this._textNode.nodeValue.charAt( this._offset ) ) || null ;
-	},
-
-	// Non-normalized.
-	GetTextNode : function()
-	{
-		return this._textNode ;
-	},
-
-	// Non-normalized.
-	GetIndex : function()
-	{
-		return this._offset ;
-	},
-
-	// Return value means whehther we've crossed a line break or a paragraph boundary.
-	MoveNext : function()
-	{
-		if ( this._offset < this._textNode.length - 1 )
-		{
-			this._offset++ ;
-			return false ;
-		}
-
-		var crossed = false ;
-		var curNode = this._textNode ;
-		while ( ( curNode = FCKDomTools.GetNextSourceNode( curNode ) )
-				&& curNode && ( curNode.nodeType != 3 || curNode.length < 1 ) )
-		{
-			var tag = curNode.nodeName.toLowerCase() ;
-			if ( FCKListsLib.BlockElements[tag] || tag == 'br' )
-				crossed = true ;
-		}
-
-		this._textNode = curNode ;
-		this._offset = 0 ;
-		return crossed ;
-	},
-
-	// Return value means whehther we've crossed a line break or a paragraph boundary.
-	MoveBack : function()
-	{
-		if ( this._offset > 0 && this._textNode.length > 0 )
-		{
-			this._offset = Math.min( this._offset - 1, this._textNode.length - 1 ) ;
-			return false ;
-		}
-
-		var crossed = false ;
-		var curNode = this._textNode ;
-		while ( ( curNode = FCKDomTools.GetPreviousSourceNode( curNode ) )
-				&& curNode && ( curNode.nodeType != 3 || curNode.length < 1 ) )
-		{
-			var tag = curNode.nodeName.toLowerCase() ;
-			if ( FCKListsLib.BlockElements[tag] || tag == 'br' )
-				crossed = true ;
-		}
-
-		this._textNode = curNode ;
-		this._offset = curNode.length - 1 ;
-		return crossed ;
-	},
-
-	Clone : function()
-	{
-		return new CharacterCursor( this._textNode, this._offset ) ;
-	}
-} ;
-
-CharacterRange = function( initCursor, maxLength )
-{
-	this._cursors = initCursor.push ? initCursor : [initCursor] ;
-	this._maxLength = maxLength ;
-	this._highlightRange = null ;
-}
-CharacterRange.prototype =
-{
-	ToDomRange : function()
-	{
-		var firstCursor = this._cursors[0] ;
-		var lastCursor = this._cursors[ this._cursors.length - 1 ] ;
-		var domRange = new FCKDomRange( FCKTools.GetElementWindow( firstCursor.GetTextNode() ) ) ;
-		var w3cRange = domRange._Range = domRange.CreateRange() ;
-		w3cRange.setStart( firstCursor.GetTextNode(), firstCursor.GetIndex() ) ;
-		w3cRange.setEnd( lastCursor.GetTextNode(), lastCursor.GetIndex() + 1 ) ;
-		domRange._UpdateElementInfo() ;
-		return domRange ;
-	},
-
-	Highlight : function()
-	{
-		if ( this._cursors.length < 1 )
-			return ;
-
-		var domRange = this.ToDomRange() ;
-		HighlightStyle.ApplyToRange( domRange, false, true ) ;
-		this._highlightRange = domRange ;
-
-		var charRange = CharacterRange.CreateFromDomRange( domRange ) ;
-		var focusNode = domRange.StartNode ;
-		if ( focusNode.nodeType != 1 )
-			focusNode = focusNode.parentNode ;
-		FCKDomTools.ScrollIntoView( focusNode, false ) ;
-		this._cursors = charRange._cursors ;
-	},
-
-	RemoveHighlight : function()
-	{
-		if ( this._highlightRange )
-		{
-			HighlightStyle.RemoveFromRange( this._highlightRange, false, true ) ;
-			var charRange = CharacterRange.CreateFromDomRange( this._highlightRange ) ;
-			this._cursors = charRange._cursors ;
-			this._highlightRange = null ;
-		}
-	},
-
-	GetHighlightDomRange : function()
-	{
-		return this._highlightRange;
-	},
-
-	MoveNext : function()
-	{
-		var next = this._cursors[ this._cursors.length - 1 ].Clone() ;
-		var retval = next.MoveNext() ;
-		if ( retval )
-			this._cursors = [] ;
-		this._cursors.push( next ) ;
-		if ( this._cursors.length > this._maxLength )
-			this._cursors.shift() ;
-		return retval ;
-	},
-
-	MoveBack : function()
-	{
-		var prev = this._cursors[0].Clone() ;
-		var retval = prev.MoveBack() ;
-		if ( retval )
-			this._cursors = [] ;
-		this._cursors.unshift( prev ) ;
-		if ( this._cursors.length > this._maxLength )
-			this._cursors.pop() ;
-		return retval ;
-	},
-
-	GetEndCharacter : function()
-	{
-		if ( this._cursors.length < 1 )
-			return null ;
-		var retval = this._cursors[ this._cursors.length - 1 ].GetCharacter() ;
-		return retval ;
-	},
-
-	GetNextRange : function( len )
-	{
-		if ( this._cursors.length == 0 )
-			return null ;
-		var cur = this._cursors[ this._cursors.length - 1 ].Clone() ;
-		cur.MoveNext() ;
-		return new CharacterRange( cur, len ) ;
-	},
-
-	GetCursors : function()
-	{
-		return this._cursors ;
-	}
-} ;
-
-CharacterRange.CreateFromDomRange = function( domRange )
-{
-	var w3cRange = domRange._Range ;
-	var startContainer = w3cRange.startContainer ;
-	var endContainer = w3cRange.endContainer ;
-	var startTextNode, startIndex, endTextNode, endIndex ;
-
-	if ( startContainer.nodeType == 3 )
-	{
-		startTextNode = startContainer ;
-		startIndex = w3cRange.startOffset ;
-	}
-	else if ( domRange.StartNode.nodeType == 3 )
-	{
-		startTextNode = domRange.StartNode ;
-		startIndex = 0 ;
-	}
-	else
-	{
-		startTextNode = GetNextNonEmptyTextNode( domRange.StartNode, domRange.StartNode.parentNode ) ;
-		if ( !startTextNode )
-			return null ;
-		startIndex = 0 ;
-	}
-
-	if ( endContainer.nodeType == 3 && w3cRange.endOffset > 0 )
-	{
-		endTextNode = endContainer ;
-		endIndex = w3cRange.endOffset - 1 ;
-	}
-	else
-	{
-		endTextNode = domRange.EndNode ;
-		while ( endTextNode.nodeType != 3 )
-			endTextNode = endTextNode.lastChild ;
-		endIndex = endTextNode.length - 1 ;
-	}
-
-	var cursors = [] ;
-	var current = new CharacterCursor( startTextNode, startIndex ) ;
-	cursors.push( current ) ;
-	if ( !( current.GetTextNode() == endTextNode && current.GetIndex() == endIndex ) && !domRange.CheckIsEmpty() )
-	{
-		do
-		{
-			current = current.Clone() ;
-			current.MoveNext() ;
-			cursors.push( current ) ;
-		}
-		while ( !( current.GetTextNode() == endTextNode && current.GetIndex() == endIndex ) ) ;
-	}
-
-	return new CharacterRange( cursors, cursors.length ) ;
-}
-
-// Knuth-Morris-Pratt Algorithm for stream input
-KMP_NOMATCH = 0 ;
-KMP_ADVANCED = 1 ;
-KMP_MATCHED = 2 ;
-KmpMatch = function( pattern, ignoreCase )
-{
-	var overlap = [ -1 ] ;
-	for ( var i = 0 ; i < pattern.length ; i++ )
-	{
-		overlap.push( overlap[i] + 1 ) ;
-		while ( overlap[ i + 1 ] > 0 && pattern.charAt( i ) != pattern.charAt( overlap[ i + 1 ] - 1 ) )
-			overlap[ i + 1 ] = overlap[ overlap[ i + 1 ] - 1 ] + 1 ;
-	}
-	this._Overlap = overlap ;
-	this._State = 0 ;
-	this._IgnoreCase = ( ignoreCase === true ) ;
-	if ( ignoreCase )
-		this.Pattern = pattern.toLowerCase();
-	else
-		this.Pattern = pattern ;
-}
-KmpMatch.prototype = {
-	FeedCharacter : function( c )
-	{
-		if ( this._IgnoreCase )
-			c = c.toLowerCase();
-
-		while ( true )
-		{
-			if ( c == this.Pattern.charAt( this._State ) )
-			{
-				this._State++ ;
-				if ( this._State == this.Pattern.length )
-				{
-					// found a match, start over, don't care about partial matches involving the current match
-					this._State = 0;
-					return KMP_MATCHED;
-				}
-				return KMP_ADVANCED ;
-			}
-			else if ( this._State == 0 )
-				return KMP_NOMATCH;
-			else
-				this._State = this._Overlap[ this._State ];
-		}
-
-		return null ;
-	},
-
-	Reset : function()
-	{
-		this._State = 0 ;
-	}
-};
-
-// Place a range at the start of document.
-function OnLoad()
-{
-	// First of all, translate the dialog box texts.
-	oEditor.FCKLanguageManager.TranslatePage( document ) ;
-
-	// Show the appropriate tab at startup.
-	if ( dialogArguments.CustomValue == 'Find' )
-	{
-		dialog.SetSelectedTab( 'Find' ) ;
-		dialog.SetAutoSize( true ) ;
-	}
-	else
-		dialog.SetSelectedTab( 'Replace' ) ;
-
-	SelectField( 'txtFind' + dialogArguments.CustomValue ) ;
-}
-
-function btnStat()
-{
-	GetE('btnReplace').disabled =
-		GetE('btnReplaceAll').disabled =
-			GetE('btnFind').disabled =
-				( GetE(idMap["FindText"]).value.length == 0 ) ;
-}
-
-function btnStatDelayed()
-{
-	setTimeout( btnStat, 1 ) ;
-}
-
-function GetSearchString()
-{
-	return GetE(idMap['FindText']).value ;
-}
-
-function GetReplaceString()
-{
-	return GetE("txtReplace").value ;
-}
-
-function GetCheckCase()
-{
-	return !! ( GetE(idMap['CheckCase']).checked ) ;
-}
-
-function GetMatchWord()
-{
-	return !! ( GetE(idMap['CheckWord']).checked ) ;
-}
-
-/* Is this character a unicode whitespace or a punctuation mark?
- * References:
- * http://unicode.org/Public/UNIDATA/PropList.txt (whitespaces)
- * http://php.chinaunix.net/manual/tw/ref.regex.php (punctuation marks)
- */
-function CheckIsWordSeparator( c )
-{
-	var code = c.charCodeAt( 0 );
-	if ( code >= 9 && code <= 0xd )
-		return true;
-	if ( code >= 0x2000 && code <= 0x200a )
-		return true;
-	switch ( code )
-	{
-		case 0x20:
-		case 0x85:
-		case 0xa0:
-		case 0x1680:
-		case 0x180e:
-		case 0x2028:
-		case 0x2029:
-		case 0x202f:
-		case 0x205f:
-		case 0x3000:
-			return true;
-		default:
-	}
-	return /[.,"'?!;:]/.test( c ) ;
-}
-
-FindRange = null ;
-function _Find()
-{
-	var searchString = GetSearchString() ;
-	if ( !FindRange )
-		FindRange = new CharacterRange( new CharacterCursor( EditorDocument ), searchString.length ) ;
-	else
-	{
-		FindRange.RemoveHighlight() ;
-		FindRange = FindRange.GetNextRange( searchString.length ) ;
-	}
-	var matcher = new KmpMatch( searchString, ! GetCheckCase() ) ;
-	var matchState = KMP_NOMATCH ;
-	var character = '%' ;
-
-	while ( character != null )
-	{
-		while ( ( character = FindRange.GetEndCharacter() ) )
-		{
-			matchState = matcher.FeedCharacter( character ) ;
-			if ( matchState == KMP_MATCHED )
-				break ;
-			if ( FindRange.MoveNext() )
-				matcher.Reset() ;
-		}
-
-		if ( matchState == KMP_MATCHED )
-		{
-			if ( GetMatchWord() )
-			{
-				var cursors = FindRange.GetCursors() ;
-				var head = cursors[ cursors.length - 1 ].Clone() ;
-				var tail = cursors[0].Clone() ;
-				if ( !head.MoveNext() && !CheckIsWordSeparator( head.GetCharacter() ) )
-					continue ;
-				if ( !tail.MoveBack() && !CheckIsWordSeparator( tail.GetCharacter() ) )
-					continue ;
-			}
-
-			FindRange.Highlight() ;
-			return true ;
-		}
-	}
-
-	FindRange = null ;
-	return false ;
-}
-
-function Find()
-{
-	if ( ! _Find() )
-		alert( FCKLang.DlgFindNotFoundMsg ) ;
-}
-
-function Replace()
-{
-	var saveUndoStep = function( selectRange )
-	{
-		var ieRange ;
-		if ( oEditor.FCKBrowserInfo.IsIE )
-			ieRange = document.selection.createRange() ;
-
-		selectRange.Select() ;
-		oEditor.FCKUndo.SaveUndoStep() ;
-		var cloneRange = selectRange.Clone() ;
-		cloneRange.Collapse( false ) ;
-		cloneRange.Select() ;
-
-		if ( ieRange )
-			setTimeout( function(){ ieRange.select() ; }, 1 ) ;
-	}
-
-	if ( FindRange && FindRange.GetHighlightDomRange() )
-	{
-		var range = FindRange.GetHighlightDomRange() ;
-		var bookmark = range.CreateBookmark() ;
-		FindRange.RemoveHighlight() ;
-		range.MoveToBookmark( bookmark ) ;
-
-		saveUndoStep( range ) ;
-		range.DeleteContents() ;
-		range.InsertNode( EditorDocument.createTextNode( GetReplaceString() ) ) ;
-		range._UpdateElementInfo() ;
-
-		FindRange = CharacterRange.CreateFromDomRange( range ) ;
-	}
-	else
-	{
-		if ( ! _Find() )
-		{
-			FindRange && FindRange.RemoveHighlight() ;
-			alert( FCKLang.DlgFindNotFoundMsg ) ;
-		}
-	}
-}
-
-function ReplaceAll()
-{
-	oEditor.FCKUndo.SaveUndoStep() ;
-	var replaceCount = 0 ;
-
-	while ( _Find() )
-	{
-		var range = FindRange.GetHighlightDomRange() ;
-		var bookmark = range.CreateBookmark() ;
-		FindRange.RemoveHighlight() ;
-		range.MoveToBookmark( bookmark) ;
-
-		range.DeleteContents() ;
-		range.InsertNode( EditorDocument.createTextNode( GetReplaceString() ) ) ;
-		range._UpdateElementInfo() ;
-
-		FindRange = CharacterRange.CreateFromDomRange( range ) ;
-		replaceCount++ ;
-	}
-	if ( replaceCount == 0 )
-	{
-		FindRange && FindRange.RemoveHighlight() ;
-		alert( FCKLang.DlgFindNotFoundMsg ) ;
-	}
-	dialog.Cancel() ;
-}
-
-window.onunload = function()
-{
-	if ( FindRange )
-	{
-		FindRange.RemoveHighlight() ;
-		FindRange.ToDomRange().Select() ;
-	}
-}
-	</script>
-</head>
-<body onload="OnLoad()" style="overflow: hidden">
-	<div id="divFind" style="display: none">
-		<table cellspacing="3" cellpadding="2" width="100%" border="0">
-			<tr>
-				<td nowrap="nowrap">
-					<label for="txtFindFind" fcklang="DlgReplaceFindLbl">
-						Find what:</label>
-				</td>
-				<td width="100%">
-					<input id="txtFindFind" onkeyup="btnStat()" oninput="btnStat()" onpaste="btnStatDelayed()" style="width: 100%" tabindex="1"
-						type="text" />
-				</td>
-				<td>
-					<input id="btnFind" style="width: 80px" disabled="disabled" onclick="Find();"
-						type="button" value="Find" fcklang="DlgFindFindBtn" />
-				</td>
-			</tr>
-			<tr>
-				<td valign="bottom" colspan="3">
-					&nbsp;<input id="chkCaseFind" tabindex="3" type="checkbox" /><label for="chkCaseFind" fcklang="DlgReplaceCaseChk">Match
-						case</label>
-					<br />
-					&nbsp;<input id="chkWordFind" tabindex="4" type="checkbox" /><label for="chkWordFind" fcklang="DlgReplaceWordChk">Match
-						whole word</label>
-				</td>
-			</tr>
-		</table>
-	</div>
-	<div id="divReplace" style="display:none">
-		<table cellspacing="3" cellpadding="2" width="100%" border="0">
-			<tr>
-				<td nowrap="nowrap">
-					<label for="txtFindReplace" fcklang="DlgReplaceFindLbl">
-						Find what:</label>
-				</td>
-				<td width="100%">
-					<input id="txtFindReplace" onkeyup="btnStat()" oninput="btnStat()" onpaste="btnStatDelayed()" style="width: 100%" tabindex="1"
-						type="text" />
-				</td>
-				<td>
-					<input id="btnReplace" style="width: 80px" disabled="disabled" onclick="Replace();"
-						type="button" value="Replace" fcklang="DlgReplaceReplaceBtn" />
-				</td>
-			</tr>
-			<tr>
-				<td valign="top" nowrap="nowrap">
-					<label for="txtReplace" fcklang="DlgReplaceReplaceLbl">
-						Replace with:</label>
-				</td>
-				<td valign="top">
-					<input id="txtReplace" style="width: 100%" tabindex="2" type="text" />
-				</td>
-				<td>
-					<input id="btnReplaceAll" style="width: 80px" disabled="disabled" onclick="ReplaceAll()" type="button"
-						value="Replace All" fcklang="DlgReplaceReplAllBtn" />
-				</td>
-			</tr>
-			<tr>
-				<td valign="bottom" colspan="3">
-					&nbsp;<input id="chkCaseReplace" tabindex="3" type="checkbox" /><label for="chkCaseReplace" fcklang="DlgReplaceCaseChk">Match
-						case</label>
-					<br />
-					&nbsp;<input id="chkWordReplace" tabindex="4" type="checkbox" /><label for="chkWordReplace" fcklang="DlgReplaceWordChk">Match
-						whole word</label>
-				</td>
-			</tr>
-		</table>
-	</div>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * "Find" and "Replace" dialog box window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+var dialogArguments = dialog.Args() ;
+
+var FCKLang = oEditor.FCKLang ;
+var FCKDomTools = oEditor.FCKDomTools ;
+var FCKDomRange = oEditor.FCKDomRange ;
+var FCKListsLib = oEditor.FCKListsLib ;
+var FCKTools = oEditor.FCKTools ;
+var EditorDocument = oEditor.FCK.EditorDocument ;
+var HighlightStyle = oEditor.FCKStyles.GetStyle( '_FCK_SelectionHighlight' )  ;
+
+dialog.AddTab( 'Find', FCKLang.DlgFindTitle ) ;
+dialog.AddTab( 'Replace', FCKLang.DlgReplaceTitle ) ;
+var idMap = {} ;
+
+function OnDialogTabChange( tabCode )
+{
+	ShowE( 'divFind', ( tabCode == 'Find' ) ) ;
+	ShowE( 'divReplace', ( tabCode == 'Replace' ) ) ;
+	idMap['FindText'] = 'txtFind' + tabCode ;
+	idMap['CheckCase'] = 'chkCase' + tabCode ;
+	idMap['CheckWord'] = 'chkWord' + tabCode ;
+
+	if ( tabCode == 'Replace' )
+		dialog.SetAutoSize( true ) ;
+}
+
+GetNextNonEmptyTextNode = function( node, stopNode )
+{
+	while ( ( node = FCKDomTools.GetNextSourceNode( node, false, 3, stopNode ) ) && node && node.length < 1 )
+		1 ;
+	return node ;
+}
+
+CharacterCursor = function( arg )
+{
+	if ( arg.nodeType && arg.nodeType == 9 )
+	{
+		this._textNode = GetNextNonEmptyTextNode( arg.body, arg.documentElement ) ;
+		this._offset = 0 ;
+		this._doc = arg ;
+	}
+	else
+	{
+		this._textNode = arguments[0] ;
+		this._offset = arguments[1] ;
+		this._doc = FCKTools.GetElementDocument( arguments[0] ) ;
+	}
+}
+CharacterCursor.prototype =
+{
+	GetCharacter : function()
+	{
+		return ( this._textNode && this._textNode.nodeValue.charAt( this._offset ) ) || null ;
+	},
+
+	// Non-normalized.
+	GetTextNode : function()
+	{
+		return this._textNode ;
+	},
+
+	// Non-normalized.
+	GetIndex : function()
+	{
+		return this._offset ;
+	},
+
+	// Return value means whehther we've crossed a line break or a paragraph boundary.
+	MoveNext : function()
+	{
+		if ( this._offset < this._textNode.length - 1 )
+		{
+			this._offset++ ;
+			return false ;
+		}
+
+		var crossed = false ;
+		var curNode = this._textNode ;
+		while ( ( curNode = FCKDomTools.GetNextSourceNode( curNode ) )
+				&& curNode && ( curNode.nodeType != 3 || curNode.length < 1 ) )
+		{
+			var tag = curNode.nodeName.toLowerCase() ;
+			if ( FCKListsLib.BlockElements[tag] || tag == 'br' )
+				crossed = true ;
+		}
+
+		this._textNode = curNode ;
+		this._offset = 0 ;
+		return crossed ;
+	},
+
+	// Return value means whehther we've crossed a line break or a paragraph boundary.
+	MoveBack : function()
+	{
+		if ( this._offset > 0 && this._textNode.length > 0 )
+		{
+			this._offset = Math.min( this._offset - 1, this._textNode.length - 1 ) ;
+			return false ;
+		}
+
+		var crossed = false ;
+		var curNode = this._textNode ;
+		while ( ( curNode = FCKDomTools.GetPreviousSourceNode( curNode ) )
+				&& curNode && ( curNode.nodeType != 3 || curNode.length < 1 ) )
+		{
+			var tag = curNode.nodeName.toLowerCase() ;
+			if ( FCKListsLib.BlockElements[tag] || tag == 'br' )
+				crossed = true ;
+		}
+
+		this._textNode = curNode ;
+		this._offset = curNode.length - 1 ;
+		return crossed ;
+	},
+
+	Clone : function()
+	{
+		return new CharacterCursor( this._textNode, this._offset ) ;
+	}
+} ;
+
+CharacterRange = function( initCursor, maxLength )
+{
+	this._cursors = initCursor.push ? initCursor : [initCursor] ;
+	this._maxLength = maxLength ;
+	this._highlightRange = null ;
+}
+CharacterRange.prototype =
+{
+	ToDomRange : function()
+	{
+		var firstCursor = this._cursors[0] ;
+		var lastCursor = this._cursors[ this._cursors.length - 1 ] ;
+		var domRange = new FCKDomRange( FCKTools.GetElementWindow( firstCursor.GetTextNode() ) ) ;
+		var w3cRange = domRange._Range = domRange.CreateRange() ;
+		w3cRange.setStart( firstCursor.GetTextNode(), firstCursor.GetIndex() ) ;
+		w3cRange.setEnd( lastCursor.GetTextNode(), lastCursor.GetIndex() + 1 ) ;
+		domRange._UpdateElementInfo() ;
+		return domRange ;
+	},
+
+	Highlight : function()
+	{
+		if ( this._cursors.length < 1 )
+			return ;
+
+		var domRange = this.ToDomRange() ;
+		HighlightStyle.ApplyToRange( domRange, false, true ) ;
+		this._highlightRange = domRange ;
+
+		var charRange = CharacterRange.CreateFromDomRange( domRange ) ;
+		var focusNode = domRange.StartNode ;
+		if ( focusNode.nodeType != 1 )
+			focusNode = focusNode.parentNode ;
+		FCKDomTools.ScrollIntoView( focusNode, false ) ;
+		this._cursors = charRange._cursors ;
+	},
+
+	RemoveHighlight : function()
+	{
+		if ( this._highlightRange )
+		{
+			HighlightStyle.RemoveFromRange( this._highlightRange, false, true ) ;
+			var charRange = CharacterRange.CreateFromDomRange( this._highlightRange ) ;
+			this._cursors = charRange._cursors ;
+			this._highlightRange = null ;
+		}
+	},
+
+	GetHighlightDomRange : function()
+	{
+		return this._highlightRange;
+	},
+
+	MoveNext : function()
+	{
+		var next = this._cursors[ this._cursors.length - 1 ].Clone() ;
+		var retval = next.MoveNext() ;
+		if ( retval )
+			this._cursors = [] ;
+		this._cursors.push( next ) ;
+		if ( this._cursors.length > this._maxLength )
+			this._cursors.shift() ;
+		return retval ;
+	},
+
+	MoveBack : function()
+	{
+		var prev = this._cursors[0].Clone() ;
+		var retval = prev.MoveBack() ;
+		if ( retval )
+			this._cursors = [] ;
+		this._cursors.unshift( prev ) ;
+		if ( this._cursors.length > this._maxLength )
+			this._cursors.pop() ;
+		return retval ;
+	},
+
+	GetEndCharacter : function()
+	{
+		if ( this._cursors.length < 1 )
+			return null ;
+		var retval = this._cursors[ this._cursors.length - 1 ].GetCharacter() ;
+		return retval ;
+	},
+
+	GetNextRange : function( len )
+	{
+		if ( this._cursors.length == 0 )
+			return null ;
+		var cur = this._cursors[ this._cursors.length - 1 ].Clone() ;
+		cur.MoveNext() ;
+		return new CharacterRange( cur, len ) ;
+	},
+
+	GetCursors : function()
+	{
+		return this._cursors ;
+	}
+} ;
+
+CharacterRange.CreateFromDomRange = function( domRange )
+{
+	var w3cRange = domRange._Range ;
+	var startContainer = w3cRange.startContainer ;
+	var endContainer = w3cRange.endContainer ;
+	var startTextNode, startIndex, endTextNode, endIndex ;
+
+	if ( startContainer.nodeType == 3 )
+	{
+		startTextNode = startContainer ;
+		startIndex = w3cRange.startOffset ;
+	}
+	else if ( domRange.StartNode.nodeType == 3 )
+	{
+		startTextNode = domRange.StartNode ;
+		startIndex = 0 ;
+	}
+	else
+	{
+		startTextNode = GetNextNonEmptyTextNode( domRange.StartNode, domRange.StartNode.parentNode ) ;
+		if ( !startTextNode )
+			return null ;
+		startIndex = 0 ;
+	}
+
+	if ( endContainer.nodeType == 3 && w3cRange.endOffset > 0 )
+	{
+		endTextNode = endContainer ;
+		endIndex = w3cRange.endOffset - 1 ;
+	}
+	else
+	{
+		endTextNode = domRange.EndNode ;
+		while ( endTextNode.nodeType != 3 )
+			endTextNode = endTextNode.lastChild ;
+		endIndex = endTextNode.length - 1 ;
+	}
+
+	var cursors = [] ;
+	var current = new CharacterCursor( startTextNode, startIndex ) ;
+	cursors.push( current ) ;
+	if ( !( current.GetTextNode() == endTextNode && current.GetIndex() == endIndex ) && !domRange.CheckIsEmpty() )
+	{
+		do
+		{
+			current = current.Clone() ;
+			current.MoveNext() ;
+			cursors.push( current ) ;
+		}
+		while ( !( current.GetTextNode() == endTextNode && current.GetIndex() == endIndex ) ) ;
+	}
+
+	return new CharacterRange( cursors, cursors.length ) ;
+}
+
+// Knuth-Morris-Pratt Algorithm for stream input
+KMP_NOMATCH = 0 ;
+KMP_ADVANCED = 1 ;
+KMP_MATCHED = 2 ;
+KmpMatch = function( pattern, ignoreCase )
+{
+	var overlap = [ -1 ] ;
+	for ( var i = 0 ; i < pattern.length ; i++ )
+	{
+		overlap.push( overlap[i] + 1 ) ;
+		while ( overlap[ i + 1 ] > 0 && pattern.charAt( i ) != pattern.charAt( overlap[ i + 1 ] - 1 ) )
+			overlap[ i + 1 ] = overlap[ overlap[ i + 1 ] - 1 ] + 1 ;
+	}
+	this._Overlap = overlap ;
+	this._State = 0 ;
+	this._IgnoreCase = ( ignoreCase === true ) ;
+	if ( ignoreCase )
+		this.Pattern = pattern.toLowerCase();
+	else
+		this.Pattern = pattern ;
+}
+KmpMatch.prototype = {
+	FeedCharacter : function( c )
+	{
+		if ( this._IgnoreCase )
+			c = c.toLowerCase();
+
+		while ( true )
+		{
+			if ( c == this.Pattern.charAt( this._State ) )
+			{
+				this._State++ ;
+				if ( this._State == this.Pattern.length )
+				{
+					// found a match, start over, don't care about partial matches involving the current match
+					this._State = 0;
+					return KMP_MATCHED;
+				}
+				return KMP_ADVANCED ;
+			}
+			else if ( this._State == 0 )
+				return KMP_NOMATCH;
+			else
+				this._State = this._Overlap[ this._State ];
+		}
+
+		return null ;
+	},
+
+	Reset : function()
+	{
+		this._State = 0 ;
+	}
+};
+
+// Place a range at the start of document.
+function OnLoad()
+{
+	// First of all, translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage( document ) ;
+
+	// Show the appropriate tab at startup.
+	if ( dialogArguments.CustomValue == 'Find' )
+	{
+		dialog.SetSelectedTab( 'Find' ) ;
+		dialog.SetAutoSize( true ) ;
+	}
+	else
+		dialog.SetSelectedTab( 'Replace' ) ;
+
+	SelectField( 'txtFind' + dialogArguments.CustomValue ) ;
+}
+
+function btnStat()
+{
+	GetE('btnReplace').disabled =
+		GetE('btnReplaceAll').disabled =
+			GetE('btnFind').disabled =
+				( GetE(idMap["FindText"]).value.length == 0 ) ;
+}
+
+function btnStatDelayed()
+{
+	setTimeout( btnStat, 1 ) ;
+}
+
+function GetSearchString()
+{
+	return GetE(idMap['FindText']).value ;
+}
+
+function GetReplaceString()
+{
+	return GetE("txtReplace").value ;
+}
+
+function GetCheckCase()
+{
+	return !! ( GetE(idMap['CheckCase']).checked ) ;
+}
+
+function GetMatchWord()
+{
+	return !! ( GetE(idMap['CheckWord']).checked ) ;
+}
+
+/* Is this character a unicode whitespace or a punctuation mark?
+ * References:
+ * http://unicode.org/Public/UNIDATA/PropList.txt (whitespaces)
+ * http://php.chinaunix.net/manual/tw/ref.regex.php (punctuation marks)
+ */
+function CheckIsWordSeparator( c )
+{
+	var code = c.charCodeAt( 0 );
+	if ( code >= 9 && code <= 0xd )
+		return true;
+	if ( code >= 0x2000 && code <= 0x200a )
+		return true;
+	switch ( code )
+	{
+		case 0x20:
+		case 0x85:
+		case 0xa0:
+		case 0x1680:
+		case 0x180e:
+		case 0x2028:
+		case 0x2029:
+		case 0x202f:
+		case 0x205f:
+		case 0x3000:
+			return true;
+		default:
+	}
+	return /[.,"'?!;:]/.test( c ) ;
+}
+
+FindRange = null ;
+function _Find()
+{
+	var searchString = GetSearchString() ;
+	if ( !FindRange )
+		FindRange = new CharacterRange( new CharacterCursor( EditorDocument ), searchString.length ) ;
+	else
+	{
+		FindRange.RemoveHighlight() ;
+		FindRange = FindRange.GetNextRange( searchString.length ) ;
+	}
+	var matcher = new KmpMatch( searchString, ! GetCheckCase() ) ;
+	var matchState = KMP_NOMATCH ;
+	var character = '%' ;
+
+	while ( character != null )
+	{
+		while ( ( character = FindRange.GetEndCharacter() ) )
+		{
+			matchState = matcher.FeedCharacter( character ) ;
+			if ( matchState == KMP_MATCHED )
+				break ;
+			if ( FindRange.MoveNext() )
+				matcher.Reset() ;
+		}
+
+		if ( matchState == KMP_MATCHED )
+		{
+			if ( GetMatchWord() )
+			{
+				var cursors = FindRange.GetCursors() ;
+				var head = cursors[ cursors.length - 1 ].Clone() ;
+				var tail = cursors[0].Clone() ;
+				if ( !head.MoveNext() && !CheckIsWordSeparator( head.GetCharacter() ) )
+					continue ;
+				if ( !tail.MoveBack() && !CheckIsWordSeparator( tail.GetCharacter() ) )
+					continue ;
+			}
+
+			FindRange.Highlight() ;
+			return true ;
+		}
+	}
+
+	FindRange = null ;
+	return false ;
+}
+
+function Find()
+{
+	if ( ! _Find() )
+		alert( FCKLang.DlgFindNotFoundMsg ) ;
+}
+
+function Replace()
+{
+	var saveUndoStep = function( selectRange )
+	{
+		var ieRange ;
+		if ( oEditor.FCKBrowserInfo.IsIE )
+			ieRange = document.selection.createRange() ;
+
+		selectRange.Select() ;
+		oEditor.FCKUndo.SaveUndoStep() ;
+		var cloneRange = selectRange.Clone() ;
+		cloneRange.Collapse( false ) ;
+		cloneRange.Select() ;
+
+		if ( ieRange )
+			setTimeout( function(){ ieRange.select() ; }, 1 ) ;
+	}
+
+	if ( FindRange && FindRange.GetHighlightDomRange() )
+	{
+		var range = FindRange.GetHighlightDomRange() ;
+		var bookmark = range.CreateBookmark() ;
+		FindRange.RemoveHighlight() ;
+		range.MoveToBookmark( bookmark ) ;
+
+		saveUndoStep( range ) ;
+		range.DeleteContents() ;
+		range.InsertNode( EditorDocument.createTextNode( GetReplaceString() ) ) ;
+		range._UpdateElementInfo() ;
+
+		FindRange = CharacterRange.CreateFromDomRange( range ) ;
+	}
+	else
+	{
+		if ( ! _Find() )
+		{
+			FindRange && FindRange.RemoveHighlight() ;
+			alert( FCKLang.DlgFindNotFoundMsg ) ;
+		}
+	}
+}
+
+function ReplaceAll()
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+	var replaceCount = 0 ;
+
+	while ( _Find() )
+	{
+		var range = FindRange.GetHighlightDomRange() ;
+		var bookmark = range.CreateBookmark() ;
+		FindRange.RemoveHighlight() ;
+		range.MoveToBookmark( bookmark) ;
+
+		range.DeleteContents() ;
+		range.InsertNode( EditorDocument.createTextNode( GetReplaceString() ) ) ;
+		range._UpdateElementInfo() ;
+
+		FindRange = CharacterRange.CreateFromDomRange( range ) ;
+		replaceCount++ ;
+	}
+	if ( replaceCount == 0 )
+	{
+		FindRange && FindRange.RemoveHighlight() ;
+		alert( FCKLang.DlgFindNotFoundMsg ) ;
+	}
+	dialog.Cancel() ;
+}
+
+window.onunload = function()
+{
+	if ( FindRange )
+	{
+		FindRange.RemoveHighlight() ;
+		FindRange.ToDomRange().Select() ;
+	}
+}
+	</script>
+</head>
+<body onload="OnLoad()" style="overflow: hidden">
+	<div id="divFind" style="display: none">
+		<table cellspacing="3" cellpadding="2" width="100%" border="0">
+			<tr>
+				<td nowrap="nowrap">
+					<label for="txtFindFind" fcklang="DlgReplaceFindLbl">
+						Find what:</label>
+				</td>
+				<td width="100%">
+					<input id="txtFindFind" onkeyup="btnStat()" oninput="btnStat()" onpaste="btnStatDelayed()" style="width: 100%" tabindex="1"
+						type="text" />
+				</td>
+				<td>
+					<input id="btnFind" style="width: 80px" disabled="disabled" onclick="Find();"
+						type="button" value="Find" fcklang="DlgFindFindBtn" />
+				</td>
+			</tr>
+			<tr>
+				<td valign="bottom" colspan="3">
+					&nbsp;<input id="chkCaseFind" tabindex="3" type="checkbox" /><label for="chkCaseFind" fcklang="DlgReplaceCaseChk">Match
+						case</label>
+					<br />
+					&nbsp;<input id="chkWordFind" tabindex="4" type="checkbox" /><label for="chkWordFind" fcklang="DlgReplaceWordChk">Match
+						whole word</label>
+				</td>
+			</tr>
+		</table>
+	</div>
+	<div id="divReplace" style="display:none">
+		<table cellspacing="3" cellpadding="2" width="100%" border="0">
+			<tr>
+				<td nowrap="nowrap">
+					<label for="txtFindReplace" fcklang="DlgReplaceFindLbl">
+						Find what:</label>
+				</td>
+				<td width="100%">
+					<input id="txtFindReplace" onkeyup="btnStat()" oninput="btnStat()" onpaste="btnStatDelayed()" style="width: 100%" tabindex="1"
+						type="text" />
+				</td>
+				<td>
+					<input id="btnReplace" style="width: 80px" disabled="disabled" onclick="Replace();"
+						type="button" value="Replace" fcklang="DlgReplaceReplaceBtn" />
+				</td>
+			</tr>
+			<tr>
+				<td valign="top" nowrap="nowrap">
+					<label for="txtReplace" fcklang="DlgReplaceReplaceLbl">
+						Replace with:</label>
+				</td>
+				<td valign="top">
+					<input id="txtReplace" style="width: 100%" tabindex="2" type="text" />
+				</td>
+				<td>
+					<input id="btnReplaceAll" style="width: 80px" disabled="disabled" onclick="ReplaceAll()" type="button"
+						value="Replace All" fcklang="DlgReplaceReplAllBtn" />
+				</td>
+			</tr>
+			<tr>
+				<td valign="bottom" colspan="3">
+					&nbsp;<input id="chkCaseReplace" tabindex="3" type="checkbox" /><label for="chkCaseReplace" fcklang="DlgReplaceCaseChk">Match
+						case</label>
+					<br />
+					&nbsp;<input id="chkWordReplace" tabindex="4" type="checkbox" /><label for="chkWordReplace" fcklang="DlgReplaceWordChk">Match
+						whole word</label>
+				</td>
+			</tr>
+		</table>
+	</div>
+</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_select/fck_select.js
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_select/fck_select.js	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_select/fck_select.js	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,194 +1,194 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Scripts for the fck_select.html page.
- */
-
-function Select( combo )
-{
-	var iIndex = combo.selectedIndex ;
-
-	oListText.selectedIndex		= iIndex ;
-	oListValue.selectedIndex	= iIndex ;
-
-	var oTxtText	= document.getElementById( "txtText" ) ;
-	var oTxtValue	= document.getElementById( "txtValue" ) ;
-
-	oTxtText.value	= oListText.value ;
-	oTxtValue.value	= oListValue.value ;
-}
-
-function Add()
-{
-	var oTxtText	= document.getElementById( "txtText" ) ;
-	var oTxtValue	= document.getElementById( "txtValue" ) ;
-
-	AddComboOption( oListText, oTxtText.value, oTxtText.value ) ;
-	AddComboOption( oListValue, oTxtValue.value, oTxtValue.value ) ;
-
-	oListText.selectedIndex = oListText.options.length - 1 ;
-	oListValue.selectedIndex = oListValue.options.length - 1 ;
-
-	oTxtText.value	= '' ;
-	oTxtValue.value	= '' ;
-
-	oTxtText.focus() ;
-}
-
-function Modify()
-{
-	var iIndex = oListText.selectedIndex ;
-
-	if ( iIndex < 0 ) return ;
-
-	var oTxtText	= document.getElementById( "txtText" ) ;
-	var oTxtValue	= document.getElementById( "txtValue" ) ;
-
-	oListText.options[ iIndex ].innerHTML	= HTMLEncode( oTxtText.value ) ;
-	oListText.options[ iIndex ].value		= oTxtText.value ;
-
-	oListValue.options[ iIndex ].innerHTML	= HTMLEncode( oTxtValue.value ) ;
-	oListValue.options[ iIndex ].value		= oTxtValue.value ;
-
-	oTxtText.value	= '' ;
-	oTxtValue.value	= '' ;
-
-	oTxtText.focus() ;
-}
-
-function Move( steps )
-{
-	ChangeOptionPosition( oListText, steps ) ;
-	ChangeOptionPosition( oListValue, steps ) ;
-}
-
-function Delete()
-{
-	RemoveSelectedOptions( oListText ) ;
-	RemoveSelectedOptions( oListValue ) ;
-}
-
-function SetSelectedValue()
-{
-	var iIndex = oListValue.selectedIndex ;
-	if ( iIndex < 0 ) return ;
-
-	var oTxtValue = document.getElementById( "txtSelValue" ) ;
-
-	oTxtValue.value = oListValue.options[ iIndex ].value ;
-}
-
-// Moves the selected option by a number of steps (also negative)
-function ChangeOptionPosition( combo, steps )
-{
-	var iActualIndex = combo.selectedIndex ;
-
-	if ( iActualIndex < 0 )
-		return ;
-
-	var iFinalIndex = iActualIndex + steps ;
-
-	if ( iFinalIndex < 0 )
-		iFinalIndex = 0 ;
-
-	if ( iFinalIndex > ( combo.options.length - 1 ) )
-		iFinalIndex = combo.options.length - 1 ;
-
-	if ( iActualIndex == iFinalIndex )
-		return ;
-
-	var oOption = combo.options[ iActualIndex ] ;
-	var sText	= HTMLDecode( oOption.innerHTML ) ;
-	var sValue	= oOption.value ;
-
-	combo.remove( iActualIndex ) ;
-
-	oOption = AddComboOption( combo, sText, sValue, null, iFinalIndex ) ;
-
-	oOption.selected = true ;
-}
-
-// Remove all selected options from a SELECT object
-function RemoveSelectedOptions(combo)
-{
-	// Save the selected index
-	var iSelectedIndex = combo.selectedIndex ;
-
-	var oOptions = combo.options ;
-
-	// Remove all selected options
-	for ( var i = oOptions.length - 1 ; i >= 0 ; i-- )
-	{
-		if (oOptions[i].selected) combo.remove(i) ;
-	}
-
-	// Reset the selection based on the original selected index
-	if ( combo.options.length > 0 )
-	{
-		if ( iSelectedIndex >= combo.options.length ) iSelectedIndex = combo.options.length - 1 ;
-		combo.selectedIndex = iSelectedIndex ;
-	}
-}
-
-// Add a new option to a SELECT object (combo or list)
-function AddComboOption( combo, optionText, optionValue, documentObject, index )
-{
-	var oOption ;
-
-	if ( documentObject )
-		oOption = documentObject.createElement("OPTION") ;
-	else
-		oOption = document.createElement("OPTION") ;
-
-	if ( index != null )
-		combo.options.add( oOption, index ) ;
-	else
-		combo.options.add( oOption ) ;
-
-	oOption.innerHTML = optionText.length > 0 ? HTMLEncode( optionText ) : '&nbsp;' ;
-	oOption.value     = optionValue ;
-
-	return oOption ;
-}
-
-function HTMLEncode( text )
-{
-	if ( !text )
-		return '' ;
-
-	text = text.replace( /&/g, '&amp;' ) ;
-	text = text.replace( /</g, '&lt;' ) ;
-	text = text.replace( />/g, '&gt;' ) ;
-
-	return text ;
-}
-
-
-function HTMLDecode( text )
-{
-	if ( !text )
-		return '' ;
-
-	text = text.replace( /&gt;/g, '>' ) ;
-	text = text.replace( /&lt;/g, '<' ) ;
-	text = text.replace( /&amp;/g, '&' ) ;
-
-	return text ;
-}
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Scripts for the fck_select.html page.
+ */
+
+function Select( combo )
+{
+	var iIndex = combo.selectedIndex ;
+
+	oListText.selectedIndex		= iIndex ;
+	oListValue.selectedIndex	= iIndex ;
+
+	var oTxtText	= document.getElementById( "txtText" ) ;
+	var oTxtValue	= document.getElementById( "txtValue" ) ;
+
+	oTxtText.value	= oListText.value ;
+	oTxtValue.value	= oListValue.value ;
+}
+
+function Add()
+{
+	var oTxtText	= document.getElementById( "txtText" ) ;
+	var oTxtValue	= document.getElementById( "txtValue" ) ;
+
+	AddComboOption( oListText, oTxtText.value, oTxtText.value ) ;
+	AddComboOption( oListValue, oTxtValue.value, oTxtValue.value ) ;
+
+	oListText.selectedIndex = oListText.options.length - 1 ;
+	oListValue.selectedIndex = oListValue.options.length - 1 ;
+
+	oTxtText.value	= '' ;
+	oTxtValue.value	= '' ;
+
+	oTxtText.focus() ;
+}
+
+function Modify()
+{
+	var iIndex = oListText.selectedIndex ;
+
+	if ( iIndex < 0 ) return ;
+
+	var oTxtText	= document.getElementById( "txtText" ) ;
+	var oTxtValue	= document.getElementById( "txtValue" ) ;
+
+	oListText.options[ iIndex ].innerHTML	= HTMLEncode( oTxtText.value ) ;
+	oListText.options[ iIndex ].value		= oTxtText.value ;
+
+	oListValue.options[ iIndex ].innerHTML	= HTMLEncode( oTxtValue.value ) ;
+	oListValue.options[ iIndex ].value		= oTxtValue.value ;
+
+	oTxtText.value	= '' ;
+	oTxtValue.value	= '' ;
+
+	oTxtText.focus() ;
+}
+
+function Move( steps )
+{
+	ChangeOptionPosition( oListText, steps ) ;
+	ChangeOptionPosition( oListValue, steps ) ;
+}
+
+function Delete()
+{
+	RemoveSelectedOptions( oListText ) ;
+	RemoveSelectedOptions( oListValue ) ;
+}
+
+function SetSelectedValue()
+{
+	var iIndex = oListValue.selectedIndex ;
+	if ( iIndex < 0 ) return ;
+
+	var oTxtValue = document.getElementById( "txtSelValue" ) ;
+
+	oTxtValue.value = oListValue.options[ iIndex ].value ;
+}
+
+// Moves the selected option by a number of steps (also negative)
+function ChangeOptionPosition( combo, steps )
+{
+	var iActualIndex = combo.selectedIndex ;
+
+	if ( iActualIndex < 0 )
+		return ;
+
+	var iFinalIndex = iActualIndex + steps ;
+
+	if ( iFinalIndex < 0 )
+		iFinalIndex = 0 ;
+
+	if ( iFinalIndex > ( combo.options.length - 1 ) )
+		iFinalIndex = combo.options.length - 1 ;
+
+	if ( iActualIndex == iFinalIndex )
+		return ;
+
+	var oOption = combo.options[ iActualIndex ] ;
+	var sText	= HTMLDecode( oOption.innerHTML ) ;
+	var sValue	= oOption.value ;
+
+	combo.remove( iActualIndex ) ;
+
+	oOption = AddComboOption( combo, sText, sValue, null, iFinalIndex ) ;
+
+	oOption.selected = true ;
+}
+
+// Remove all selected options from a SELECT object
+function RemoveSelectedOptions(combo)
+{
+	// Save the selected index
+	var iSelectedIndex = combo.selectedIndex ;
+
+	var oOptions = combo.options ;
+
+	// Remove all selected options
+	for ( var i = oOptions.length - 1 ; i >= 0 ; i-- )
+	{
+		if (oOptions[i].selected) combo.remove(i) ;
+	}
+
+	// Reset the selection based on the original selected index
+	if ( combo.options.length > 0 )
+	{
+		if ( iSelectedIndex >= combo.options.length ) iSelectedIndex = combo.options.length - 1 ;
+		combo.selectedIndex = iSelectedIndex ;
+	}
+}
+
+// Add a new option to a SELECT object (combo or list)
+function AddComboOption( combo, optionText, optionValue, documentObject, index )
+{
+	var oOption ;
+
+	if ( documentObject )
+		oOption = documentObject.createElement("OPTION") ;
+	else
+		oOption = document.createElement("OPTION") ;
+
+	if ( index != null )
+		combo.options.add( oOption, index ) ;
+	else
+		combo.options.add( oOption ) ;
+
+	oOption.innerHTML = optionText.length > 0 ? HTMLEncode( optionText ) : '&nbsp;' ;
+	oOption.value     = optionValue ;
+
+	return oOption ;
+}
+
+function HTMLEncode( text )
+{
+	if ( !text )
+		return '' ;
+
+	text = text.replace( /&/g, '&amp;' ) ;
+	text = text.replace( /</g, '&lt;' ) ;
+	text = text.replace( />/g, '&gt;' ) ;
+
+	return text ;
+}
+
+
+function HTMLDecode( text )
+{
+	if ( !text )
+		return '' ;
+
+	text = text.replace( /&gt;/g, '>' ) ;
+	text = text.replace( /&lt;/g, '<' ) ;
+	text = text.replace( /&amp;/g, '&' ) ;
+
+	return text ;
+}

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_select.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_select.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_select.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,180 +1,180 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Select dialog window.
--->
-<html>
-	<head>
-		<title>Select Properties</title>
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-		<meta content="noindex, nofollow" name="robots">
-		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-		<script type="text/javascript" src="fck_select/fck_select.js"></script>
-		<script type="text/javascript">
-
-var dialog	= window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-// Gets the document DOM
-var oDOM = oEditor.FCK.EditorDocument ;
-
-var oActiveEl = dialog.Selection.GetSelectedElement() ;
-
-var oListText ;
-var oListValue ;
-
-window.onload = function()
-{
-	// First of all, translate the dialog box texts
-	oEditor.FCKLanguageManager.TranslatePage(document) ;
-
-	oListText	= document.getElementById( 'cmbText' ) ;
-	oListValue	= document.getElementById( 'cmbValue' ) ;
-
-	// Fix the lists widths. (Bug #970)
-	oListText.style.width = oListText.offsetWidth ;
-	oListValue.style.width = oListValue.offsetWidth ;
-
-	if ( oActiveEl && oActiveEl.tagName == 'SELECT' )
-	{
-		GetE('txtName').value		= oActiveEl.name ;
-		GetE('txtSelValue').value	= oActiveEl.value ;
-		GetE('txtLines').value		= GetAttribute( oActiveEl, 'size' ) ;
-		GetE('chkMultiple').checked	= oActiveEl.multiple ;
-
-		// Load the actual options
-		for ( var i = 0 ; i < oActiveEl.options.length ; i++ )
-		{
-			var sText	= HTMLDecode( oActiveEl.options[i].innerHTML ) ;
-			var sValue	= oActiveEl.options[i].value ;
-
-			AddComboOption( oListText, sText, sText ) ;
-			AddComboOption( oListValue, sValue, sValue ) ;
-		}
-	}
-	else
-		oActiveEl = null ;
-
-	dialog.SetOkButton( true ) ;
-	dialog.SetAutoSize( true ) ;
-	SelectField( 'txtName' ) ;
-}
-
-function Ok()
-{
-	oEditor.FCKUndo.SaveUndoStep() ;
-
-	var sSize = GetE('txtLines').value ;
-	if ( sSize == null || isNaN( sSize ) || sSize <= 1 )
-		sSize = '' ;
-
-	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'SELECT', {name: GetE('txtName').value} ) ;
-
-	SetAttribute( oActiveEl, 'size'	, sSize ) ;
-	oActiveEl.multiple = ( sSize.length > 0 && GetE('chkMultiple').checked ) ;
-
-	// Remove all options.
-	while ( oActiveEl.options.length > 0 )
-		oActiveEl.remove(0) ;
-
-	// Add all available options.
-	for ( var i = 0 ; i < oListText.options.length ; i++ )
-	{
-		var sText	= oListText.options[i].value ;
-		var sValue	= oListValue.options[i].value ;
-		if ( sValue.length == 0 ) sValue = sText ;
-
-		var oOption = AddComboOption( oActiveEl, sText, sValue, oDOM ) ;
-
-		if ( sValue == GetE('txtSelValue').value )
-		{
-			SetAttribute( oOption, 'selected', 'selected' ) ;
-			oOption.selected = true ;
-		}
-	}
-
-	return true ;
-}
-
-		</script>
-	</head>
-	<body style="overflow: hidden">
-		<table width="100%" height="100%">
-			<tr>
-				<td>
-					<table width="100%">
-						<tr>
-							<td nowrap><span fckLang="DlgSelectName">Name</span>&nbsp;</td>
-							<td width="100%" colSpan="2"><input id="txtName" style="WIDTH: 100%" type="text"></td>
-						</tr>
-						<tr>
-							<td nowrap><span fckLang="DlgSelectValue">Value</span>&nbsp;</td>
-							<td width="100%" colSpan="2"><input id="txtSelValue" style="WIDTH: 100%; BACKGROUND-COLOR: buttonface" type="text" readonly></td>
-						</tr>
-						<tr>
-							<td nowrap><span fckLang="DlgSelectSize">Size</span>&nbsp;</td>
-							<td nowrap><input id="txtLines" type="text" size="2" value="">&nbsp;<span fckLang="DlgSelectLines">lines</span></td>
-							<td nowrap align="right"><input id="chkMultiple" name="chkMultiple" type="checkbox"><label for="chkMultiple" fckLang="DlgSelectChkMulti">Allow
-									multiple selections</label></td>
-						</tr>
-					</table>
-					<br>
-					<hr style="POSITION: absolute">
-					<span style="LEFT: 10px; POSITION: relative; TOP: -7px" class="BackColor">&nbsp;<span fckLang="DlgSelectOpAvail">Available
-							Options</span>&nbsp;</span>
-					<table width="100%">
-						<tr>
-							<td width="50%"><span fckLang="DlgSelectOpText">Text</span><br>
-								<input id="txtText" style="WIDTH: 100%" type="text" name="txtText">
-							</td>
-							<td width="50%"><span fckLang="DlgSelectOpValue">Value</span><br>
-								<input id="txtValue" style="WIDTH: 100%" type="text" name="txtValue">
-							</td>
-							<td vAlign="bottom"><input onclick="Add();" type="button" fckLang="DlgSelectBtnAdd" value="Add"></td>
-							<td vAlign="bottom"><input onclick="Modify();" type="button" fckLang="DlgSelectBtnModify" value="Modify"></td>
-						</tr>
-						<tr>
-							<td rowSpan="2"><select id="cmbText" style="WIDTH: 100%" onchange="GetE('cmbValue').selectedIndex = this.selectedIndex;Select(this);"
-									size="5" name="cmbText"></select>
-							</td>
-							<td rowSpan="2"><select id="cmbValue" style="WIDTH: 100%" onchange="GetE('cmbText').selectedIndex = this.selectedIndex;Select(this);"
-									size="5" name="cmbValue"></select>
-							</td>
-							<td vAlign="top" colSpan="2">
-							</td>
-						</tr>
-						<tr>
-							<td vAlign="bottom" colSpan="2"><input style="WIDTH: 100%" onclick="Move(-1);" type="button" fckLang="DlgSelectBtnUp" value="Up">
-								<br>
-								<input style="WIDTH: 100%" onclick="Move(1);" type="button" fckLang="DlgSelectBtnDown"
-									value="Down">
-							</td>
-						</tr>
-						<TR>
-							<TD vAlign="bottom" colSpan="4"><INPUT onclick="SetSelectedValue();" type="button" fckLang="DlgSelectBtnSetValue" value="Set as selected value">&nbsp;&nbsp;
-								<input onclick="Delete();" type="button" fckLang="DlgSelectBtnDelete" value="Delete"></TD>
-						</TR>
-					</table>
-				</td>
-			</tr>
-		</table>
-	</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Select dialog window.
+-->
+<html>
+	<head>
+		<title>Select Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script type="text/javascript" src="fck_select/fck_select.js"></script>
+		<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oActiveEl = dialog.Selection.GetSelectedElement() ;
+
+var oListText ;
+var oListValue ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	oListText	= document.getElementById( 'cmbText' ) ;
+	oListValue	= document.getElementById( 'cmbValue' ) ;
+
+	// Fix the lists widths. (Bug #970)
+	oListText.style.width = oListText.offsetWidth ;
+	oListValue.style.width = oListValue.offsetWidth ;
+
+	if ( oActiveEl && oActiveEl.tagName == 'SELECT' )
+	{
+		GetE('txtName').value		= oActiveEl.name ;
+		GetE('txtSelValue').value	= oActiveEl.value ;
+		GetE('txtLines').value		= GetAttribute( oActiveEl, 'size' ) ;
+		GetE('chkMultiple').checked	= oActiveEl.multiple ;
+
+		// Load the actual options
+		for ( var i = 0 ; i < oActiveEl.options.length ; i++ )
+		{
+			var sText	= HTMLDecode( oActiveEl.options[i].innerHTML ) ;
+			var sValue	= oActiveEl.options[i].value ;
+
+			AddComboOption( oListText, sText, sText ) ;
+			AddComboOption( oListValue, sValue, sValue ) ;
+		}
+	}
+	else
+		oActiveEl = null ;
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
+}
+
+function Ok()
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	var sSize = GetE('txtLines').value ;
+	if ( sSize == null || isNaN( sSize ) || sSize <= 1 )
+		sSize = '' ;
+
+	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'SELECT', {name: GetE('txtName').value} ) ;
+
+	SetAttribute( oActiveEl, 'size'	, sSize ) ;
+	oActiveEl.multiple = ( sSize.length > 0 && GetE('chkMultiple').checked ) ;
+
+	// Remove all options.
+	while ( oActiveEl.options.length > 0 )
+		oActiveEl.remove(0) ;
+
+	// Add all available options.
+	for ( var i = 0 ; i < oListText.options.length ; i++ )
+	{
+		var sText	= oListText.options[i].value ;
+		var sValue	= oListValue.options[i].value ;
+		if ( sValue.length == 0 ) sValue = sText ;
+
+		var oOption = AddComboOption( oActiveEl, sText, sValue, oDOM ) ;
+
+		if ( sValue == GetE('txtSelValue').value )
+		{
+			SetAttribute( oOption, 'selected', 'selected' ) ;
+			oOption.selected = true ;
+		}
+	}
+
+	return true ;
+}
+
+		</script>
+	</head>
+	<body style="overflow: hidden">
+		<table width="100%" height="100%">
+			<tr>
+				<td>
+					<table width="100%">
+						<tr>
+							<td nowrap><span fckLang="DlgSelectName">Name</span>&nbsp;</td>
+							<td width="100%" colSpan="2"><input id="txtName" style="WIDTH: 100%" type="text"></td>
+						</tr>
+						<tr>
+							<td nowrap><span fckLang="DlgSelectValue">Value</span>&nbsp;</td>
+							<td width="100%" colSpan="2"><input id="txtSelValue" style="WIDTH: 100%; BACKGROUND-COLOR: buttonface" type="text" readonly></td>
+						</tr>
+						<tr>
+							<td nowrap><span fckLang="DlgSelectSize">Size</span>&nbsp;</td>
+							<td nowrap><input id="txtLines" type="text" size="2" value="">&nbsp;<span fckLang="DlgSelectLines">lines</span></td>
+							<td nowrap align="right"><input id="chkMultiple" name="chkMultiple" type="checkbox"><label for="chkMultiple" fckLang="DlgSelectChkMulti">Allow
+									multiple selections</label></td>
+						</tr>
+					</table>
+					<br>
+					<hr style="POSITION: absolute">
+					<span style="LEFT: 10px; POSITION: relative; TOP: -7px" class="BackColor">&nbsp;<span fckLang="DlgSelectOpAvail">Available
+							Options</span>&nbsp;</span>
+					<table width="100%">
+						<tr>
+							<td width="50%"><span fckLang="DlgSelectOpText">Text</span><br>
+								<input id="txtText" style="WIDTH: 100%" type="text" name="txtText">
+							</td>
+							<td width="50%"><span fckLang="DlgSelectOpValue">Value</span><br>
+								<input id="txtValue" style="WIDTH: 100%" type="text" name="txtValue">
+							</td>
+							<td vAlign="bottom"><input onclick="Add();" type="button" fckLang="DlgSelectBtnAdd" value="Add"></td>
+							<td vAlign="bottom"><input onclick="Modify();" type="button" fckLang="DlgSelectBtnModify" value="Modify"></td>
+						</tr>
+						<tr>
+							<td rowSpan="2"><select id="cmbText" style="WIDTH: 100%" onchange="GetE('cmbValue').selectedIndex = this.selectedIndex;Select(this);"
+									size="5" name="cmbText"></select>
+							</td>
+							<td rowSpan="2"><select id="cmbValue" style="WIDTH: 100%" onchange="GetE('cmbText').selectedIndex = this.selectedIndex;Select(this);"
+									size="5" name="cmbValue"></select>
+							</td>
+							<td vAlign="top" colSpan="2">
+							</td>
+						</tr>
+						<tr>
+							<td vAlign="bottom" colSpan="2"><input style="WIDTH: 100%" onclick="Move(-1);" type="button" fckLang="DlgSelectBtnUp" value="Up">
+								<br>
+								<input style="WIDTH: 100%" onclick="Move(1);" type="button" fckLang="DlgSelectBtnDown"
+									value="Down">
+							</td>
+						</tr>
+						<TR>
+							<TD vAlign="bottom" colSpan="4"><INPUT onclick="SetSelectedValue();" type="button" fckLang="DlgSelectBtnSetValue" value="Set as selected value">&nbsp;&nbsp;
+								<input onclick="Delete();" type="button" fckLang="DlgSelectBtnDelete" value="Delete"></TD>
+						</TR>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_smiley.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_smiley.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_smiley.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,111 +1,111 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Smileys (emoticons) dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title></title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<meta name="robots" content="noindex, nofollow" />
-	<style type="text/css">
-		.Hand
-		{
-			cursor: pointer;
-			cursor: hand;
-		}
-	</style>
-	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-	<script type="text/javascript">
-
-var dialog	= window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-window.onload = function ()
-{
-	// First of all, translate the dialog box texts
-	oEditor.FCKLanguageManager.TranslatePage(document) ;
-
-	dialog.SetAutoSize( true ) ;
-}
-
-function InsertSmiley( url )
-{
-	oEditor.FCKUndo.SaveUndoStep() ;
-
-	var oImg = oEditor.FCK.InsertElement( 'img' ) ;
-	oImg.src = url ;
-	oImg.setAttribute( '_fcksavedurl', url ) ;
-
-	// For long smileys list, it seams that IE continues loading the images in
-	// the background when you quickly select one image. so, let's clear
-	// everything before closing.
-	document.body.innerHTML = '' ;
-
-	dialog.Cancel() ;
-}
-
-function over(td)
-{
-	td.className = 'LightBackground Hand' ;
-}
-
-function out(td)
-{
-	td.className = 'DarkBackground Hand' ;
-}
-	</script>
-</head>
-<body style="overflow: hidden">
-	<table cellpadding="2" cellspacing="2" align="center" border="0" width="100%" height="100%">
-		<script type="text/javascript">
-
-var FCKConfig = oEditor.FCKConfig ;
-
-var sBasePath	= FCKConfig.SmileyPath ;
-var aImages		= FCKConfig.SmileyImages ;
-var iCols		= FCKConfig.SmileyColumns ;
-var iColWidth	= parseInt( 100 / iCols, 10 ) ;
-
-var i = 0 ;
-while (i < aImages.length)
-{
-	document.write( '<tr>' ) ;
-	for(var j = 0 ; j < iCols ; j++)
-	{
-		if (aImages[i])
-		{
-			var sUrl = sBasePath + aImages[i] ;
-			document.write( '<td width="' + iColWidth + '%" align="center" class="DarkBackground Hand" onclick="InsertSmiley(\'' + sUrl.replace(/'/g, "\\'" ) + '\')" onmouseover="over(this)" onmouseout="out(this)">' ) ;
-			document.write( '<img src="' + sUrl + '" border="0" />' ) ;
-		}
-		else
-			document.write( '<td width="' + iColWidth + '%" class="DarkBackground">&nbsp;' ) ;
-		document.write( '<\/td>' ) ;
-		i++ ;
-	}
-	document.write('<\/tr>') ;
-}
-
-		</script>
-	</table>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Smileys (emoticons) dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<style type="text/css">
+		.Hand
+		{
+			cursor: pointer;
+			cursor: hand;
+		}
+	</style>
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
+window.onload = function ()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	dialog.SetAutoSize( true ) ;
+}
+
+function InsertSmiley( url )
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	var oImg = oEditor.FCK.InsertElement( 'img' ) ;
+	oImg.src = url ;
+	oImg.setAttribute( '_fcksavedurl', url ) ;
+
+	// For long smileys list, it seams that IE continues loading the images in
+	// the background when you quickly select one image. so, let's clear
+	// everything before closing.
+	document.body.innerHTML = '' ;
+
+	dialog.Cancel() ;
+}
+
+function over(td)
+{
+	td.className = 'LightBackground Hand' ;
+}
+
+function out(td)
+{
+	td.className = 'DarkBackground Hand' ;
+}
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table cellpadding="2" cellspacing="2" align="center" border="0" width="100%" height="100%">
+		<script type="text/javascript">
+
+var FCKConfig = oEditor.FCKConfig ;
+
+var sBasePath	= FCKConfig.SmileyPath ;
+var aImages		= FCKConfig.SmileyImages ;
+var iCols		= FCKConfig.SmileyColumns ;
+var iColWidth	= parseInt( 100 / iCols, 10 ) ;
+
+var i = 0 ;
+while (i < aImages.length)
+{
+	document.write( '<tr>' ) ;
+	for(var j = 0 ; j < iCols ; j++)
+	{
+		if (aImages[i])
+		{
+			var sUrl = sBasePath + aImages[i] ;
+			document.write( '<td width="' + iColWidth + '%" align="center" class="DarkBackground Hand" onclick="InsertSmiley(\'' + sUrl.replace(/'/g, "\\'" ) + '\')" onmouseover="over(this)" onmouseout="out(this)">' ) ;
+			document.write( '<img src="' + sUrl + '" border="0" />' ) ;
+		}
+		else
+			document.write( '<td width="' + iColWidth + '%" class="DarkBackground">&nbsp;' ) ;
+		document.write( '<\/td>' ) ;
+		i++ ;
+	}
+	document.write('<\/tr>') ;
+}
+
+		</script>
+	</table>
+</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_source.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_source.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_source.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,68 +1,68 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Source editor dialog window.
--->
-<html>
-	<head>
-		<title>Source</title>
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-		<meta name="robots" content="noindex, nofollow">
-		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-		<script language="javascript">
-
-var oEditor		= window.parent.InnerDialogLoaded() ;
-var FCK			= oEditor.FCK ;
-var FCKConfig	= oEditor.FCKConfig ;
-var FCKTools	= oEditor.FCKTools ;
-
-document.write( FCKTools.GetStyleHtml( GetCommonDialogCss() ) ) ;
-
-window.onload = function()
-{
-	// EnableXHTML and EnableSourceXHTML has been deprecated
-//	document.getElementById('txtSource').value = ( FCKConfig.EnableXHTML && FCKConfig.EnableSourceXHTML ? FCK.GetXHTML( FCKConfig.FormatSource ) : FCK.GetHTML( FCKConfig.FormatSource ) ) ;
-	document.getElementById('txtSource').value = FCK.GetXHTML( FCKConfig.FormatSource ) ;
-
-	// Activate the "OK" button.
-	window.parent.SetOkButton( true ) ;
-}
-
-//#### The OK button was hit.
-function Ok()
-{
-	if ( oEditor.FCKBrowserInfo.IsIE )
-		oEditor.FCKUndo.SaveUndoStep() ;
-
-	FCK.SetData( document.getElementById('txtSource').value, false ) ;
-
-	return true ;
-}
-		</script>
-	</head>
-	<body scroll="no" style="OVERFLOW: hidden">
-		<table width="100%" height="100%">
-			<tr>
-				<td height="100%"><textarea id="txtSource" dir="ltr" style="PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-SIZE: 14px; PADDING-BOTTOM: 5px; WIDTH: 100%; PADDING-TOP: 5px; FONT-FAMILY: Monospace; HEIGHT: 100%">Loading. Please wait...</textarea></td>
-			</tr>
-		</table>
-	</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Source editor dialog window.
+-->
+<html>
+	<head>
+		<title>Source</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script language="javascript">
+
+var oEditor		= window.parent.InnerDialogLoaded() ;
+var FCK			= oEditor.FCK ;
+var FCKConfig	= oEditor.FCKConfig ;
+var FCKTools	= oEditor.FCKTools ;
+
+document.write( FCKTools.GetStyleHtml( GetCommonDialogCss() ) ) ;
+
+window.onload = function()
+{
+	// EnableXHTML and EnableSourceXHTML has been deprecated
+//	document.getElementById('txtSource').value = ( FCKConfig.EnableXHTML && FCKConfig.EnableSourceXHTML ? FCK.GetXHTML( FCKConfig.FormatSource ) : FCK.GetHTML( FCKConfig.FormatSource ) ) ;
+	document.getElementById('txtSource').value = FCK.GetXHTML( FCKConfig.FormatSource ) ;
+
+	// Activate the "OK" button.
+	window.parent.SetOkButton( true ) ;
+}
+
+//#### The OK button was hit.
+function Ok()
+{
+	if ( oEditor.FCKBrowserInfo.IsIE )
+		oEditor.FCKUndo.SaveUndoStep() ;
+
+	FCK.SetData( document.getElementById('txtSource').value, false ) ;
+
+	return true ;
+}
+		</script>
+	</head>
+	<body scroll="no" style="OVERFLOW: hidden">
+		<table width="100%" height="100%">
+			<tr>
+				<td height="100%"><textarea id="txtSource" dir="ltr" style="PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-SIZE: 14px; PADDING-BOTTOM: 5px; WIDTH: 100%; PADDING-TOP: 5px; FONT-FAMILY: Monospace; HEIGHT: 100%">Loading. Please wait...</textarea></td>
+			</tr>
+		</table>
+	</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_specialchar.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_specialchar.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_specialchar.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,121 +1,121 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Special Chars Selector dialog window.
--->
-<html>
-	<head>
-		<meta name="robots" content="noindex, nofollow">
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-		<style type="text/css">
-				.Hand
-				{
-					cursor: pointer ;
-					cursor: hand ;
-				}
-				.Sample { font-size: 24px; }
-		</style>
-		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-		<script type="text/javascript">
-
-var oEditor = window.parent.InnerDialogLoaded() ;
-
-var oSample ;
-
-function insertChar(charValue)
-{
-	oEditor.FCKUndo.SaveUndoStep() ;
-	oEditor.FCK.InsertHtml( charValue || "" ) ;
-	window.parent.Cancel() ;
-}
-
-function over(td)
-{
-	if ( ! oSample )
-		return ;
-	oSample.innerHTML = td.innerHTML ;
-	td.className = 'LightBackground SpecialCharsOver Hand' ;
-}
-
-function out(td)
-{
-	if ( ! oSample )
-		return ;
-	oSample.innerHTML = "&nbsp;" ;
-	td.className = 'DarkBackground SpecialCharsOut Hand' ;
-}
-
-function setDefaults()
-{
-	// Gets the sample placeholder.
-	oSample = document.getElementById("SampleTD") ;
-
-	// First of all, translates the dialog box texts.
-	oEditor.FCKLanguageManager.TranslatePage(document) ;
-
-	window.parent.SetAutoSize( true ) ;
-}
-
-		</script>
-	</head>
-	<body onload="setDefaults()" style="overflow: hidden">
-		<table cellpadding="0" cellspacing="0" width="100%" height="100%">
-			<tr>
-				<td width="100%">
-					<table cellpadding="1" cellspacing="1" align="center" border="0" width="100%" height="100%">
-						<script type="text/javascript">
-var aChars = ["!","&quot;","#","$","%","&amp;","\\'","(",")","*","+","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","&lt;","=","&gt;","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","&euro;","&lsquo;","&rsquo;","&rsquo;","&ldquo;","&rdquo;","&ndash;","&mdash;","&iexcl;","&cent;","&pound;","&curren;","&yen;","&brvbar;","&sect;","&uml;","&copy;","&ordf;","&laquo;","&not;","&reg;","&macr;","&deg;","&plusmn;","&sup2;","&sup3;","&acute;","&micro;","&para;","&middot;","&cedil;","&sup1;","&ordm;","&raquo;","&frac14;","&frac12;","&frac34;","&iquest;","&Agrave;","&Aacute;","&Acirc;","&Atilde;","&Auml;","&Aring;","&AElig;","&Ccedil;","&Egrave;","&Eacute;","&Ecirc;","&Euml;","&Igrave;","&Iacute;","&Icirc;","&Iuml;","&ETH;","&Ntilde;","&Ograve;","&Oacute;","&Ocirc;","&Otilde;","&Ouml;","&times;","&Oslash;","&Ugrave;","&Uacute;","&Ucirc;","&Uuml;","&Yacute;","&THORN;","&szlig;","&agrave;","&aacute;","&acirc;","&atilde;","&auml;","&aring;","&aelig;","&ccedil;","&egrave;","&eacute;","&ecirc;","&euml;","&igrave;","&iacute;","&icirc;","&iuml;","&eth;","&ntilde;","&ograve;","&oacute;","&ocirc;","&otilde;","&ouml;","&divide;","&oslash;","&ugrave;","&uacute;","&ucirc;","&uuml;","&uuml;","&yacute;","&thorn;","&yuml;","&OElig;","&oelig;","&#372;","&#374","&#373","&#375;","&sbquo;","&#8219;","&bdquo;","&hellip;","&trade;","&#9658;","&bull;","&rarr;","&rArr;","&hArr;","&diams;","&asymp;"] ;
-
-var cols = 20 ;
-
-var i = 0 ;
-while (i < aChars.length)
-{
-	document.write("<TR>") ;
-	for(var j = 0 ; j < cols ; j++)
-	{
-		if (aChars[i])
-		{
-			document.write('<TD width="1%" class="DarkBackground SpecialCharsOut Hand" align="center" onclick="insertChar(\'' + aChars[i].replace(/&/g, "&amp;") + '\')" onmouseover="over(this)" onmouseout="out(this)">') ;
-			document.write(aChars[i]) ;
-		}
-		else
-			document.write("<TD class='DarkBackground SpecialCharsOut'>&nbsp;") ;
-		document.write("<\/TD>") ;
-		i++ ;
-	}
-	document.write("<\/TR>") ;
-}
-						</script>
-					</table>
-				</td>
-				<td nowrap>&nbsp;&nbsp;&nbsp;&nbsp;</td>
-				<td valign="top">
-					<table width="40" cellpadding="0" cellspacing="0" border="0">
-						<tr>
-							<td id="SampleTD" width="40" height="40" align="center" class="DarkBackground SpecialCharsOut Sample">&nbsp;</td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-		</table>
-	</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Special Chars Selector dialog window.
+-->
+<html>
+	<head>
+		<meta name="robots" content="noindex, nofollow">
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<style type="text/css">
+				.Hand
+				{
+					cursor: pointer ;
+					cursor: hand ;
+				}
+				.Sample { font-size: 24px; }
+		</style>
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+var oSample ;
+
+function insertChar(charValue)
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+	oEditor.FCK.InsertHtml( charValue || "" ) ;
+	window.parent.Cancel() ;
+}
+
+function over(td)
+{
+	if ( ! oSample )
+		return ;
+	oSample.innerHTML = td.innerHTML ;
+	td.className = 'LightBackground SpecialCharsOver Hand' ;
+}
+
+function out(td)
+{
+	if ( ! oSample )
+		return ;
+	oSample.innerHTML = "&nbsp;" ;
+	td.className = 'DarkBackground SpecialCharsOut Hand' ;
+}
+
+function setDefaults()
+{
+	// Gets the sample placeholder.
+	oSample = document.getElementById("SampleTD") ;
+
+	// First of all, translates the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	window.parent.SetAutoSize( true ) ;
+}
+
+		</script>
+	</head>
+	<body onload="setDefaults()" style="overflow: hidden">
+		<table cellpadding="0" cellspacing="0" width="100%" height="100%">
+			<tr>
+				<td width="100%">
+					<table cellpadding="1" cellspacing="1" align="center" border="0" width="100%" height="100%">
+						<script type="text/javascript">
+var aChars = ["!","&quot;","#","$","%","&amp;","\\'","(",")","*","+","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","&lt;","=","&gt;","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","&euro;","&lsquo;","&rsquo;","&rsquo;","&ldquo;","&rdquo;","&ndash;","&mdash;","&iexcl;","&cent;","&pound;","&curren;","&yen;","&brvbar;","&sect;","&uml;","&copy;","&ordf;","&laquo;","&not;","&reg;","&macr;","&deg;","&plusmn;","&sup2;","&sup3;","&acute;","&micro;","&para;","&middot;","&cedil;","&sup1;","&ordm;","&raquo;","&frac14;","&frac12;","&frac34;","&iquest;","&Agrave;","&Aacute;","&Acirc;","&Atilde;","&Auml;","&Aring;","&AElig;","&Ccedil;","&Egrave;","&Eacute;","&Ecirc;","&Euml;","&Igrave;","&Iacute;","&Icirc;","&Iuml;","&ETH;","&Ntilde;","&Ograve;","&Oacute;","&Ocirc;","&Otilde;","&Ouml;","&times;","&Oslash;","&Ugrave;","&Uacute;","&Ucirc;","&Uuml;","&Yacute;","&THORN;","&szlig;","&agrave;","&aacute;","&acirc;","&atilde;","&auml;","&aring;","&aelig;","&ccedil;","&egrave;","&eacute;","&ecirc;","&euml;","&igrave;","&iacute;","&icirc;","&iuml;","&eth;","&ntilde;","&ograve;","&oacute;","&ocirc;","&otilde;","&ouml;","&divide;","&oslash;","&ugrave;","&uacute;","&ucirc;","&uuml;","&uuml;","&yacute;","&thorn;","&yuml;","&OElig;","&oelig;","&#372;","&#374","&#373","&#375;","&sbquo;","&#8219;","&bdquo;","&hellip;","&trade;","&#9658;","&bull;","&rarr;","&rArr;","&hArr;","&diams;","&asymp;"] ;
+
+var cols = 20 ;
+
+var i = 0 ;
+while (i < aChars.length)
+{
+	document.write("<TR>") ;
+	for(var j = 0 ; j < cols ; j++)
+	{
+		if (aChars[i])
+		{
+			document.write('<TD width="1%" class="DarkBackground SpecialCharsOut Hand" align="center" onclick="insertChar(\'' + aChars[i].replace(/&/g, "&amp;") + '\')" onmouseover="over(this)" onmouseout="out(this)">') ;
+			document.write(aChars[i]) ;
+		}
+		else
+			document.write("<TD class='DarkBackground SpecialCharsOut'>&nbsp;") ;
+		document.write("<\/TD>") ;
+		i++ ;
+	}
+	document.write("<\/TR>") ;
+}
+						</script>
+					</table>
+				</td>
+				<td nowrap>&nbsp;&nbsp;&nbsp;&nbsp;</td>
+				<td valign="top">
+					<table width="40" cellpadding="0" cellspacing="0" border="0">
+						<tr>
+							<td id="SampleTD" width="40" height="40" align="center" class="DarkBackground SpecialCharsOut Sample">&nbsp;</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,87 +1,87 @@
-////////////////////////////////////////////////////
-// controlWindow object
-////////////////////////////////////////////////////
-function controlWindow( controlForm ) {
-	// private properties
-	this._form = controlForm;
-
-	// public properties
-	this.windowType = "controlWindow";
-//	this.noSuggestionSelection = "- No suggestions -";	// by FredCK
-	this.noSuggestionSelection = FCKLang.DlgSpellNoSuggestions ;
-	// set up the properties for elements of the given control form
-	this.suggestionList  = this._form.sugg;
-	this.evaluatedText   = this._form.misword;
-	this.replacementText = this._form.txtsugg;
-	this.undoButton      = this._form.btnUndo;
-
-	// public methods
-	this.addSuggestion = addSuggestion;
-	this.clearSuggestions = clearSuggestions;
-	this.selectDefaultSuggestion = selectDefaultSuggestion;
-	this.resetForm = resetForm;
-	this.setSuggestedText = setSuggestedText;
-	this.enableUndo = enableUndo;
-	this.disableUndo = disableUndo;
-}
-
-function resetForm() {
-	if( this._form ) {
-		this._form.reset();
-	}
-}
-
-function setSuggestedText() {
-	var slct = this.suggestionList;
-	var txt = this.replacementText;
-	var str = "";
-	if( (slct.options[0].text) && slct.options[0].text != this.noSuggestionSelection ) {
-		str = slct.options[slct.selectedIndex].text;
-	}
-	txt.value = str;
-}
-
-function selectDefaultSuggestion() {
-	var slct = this.suggestionList;
-	var txt = this.replacementText;
-	if( slct.options.length == 0 ) {
-		this.addSuggestion( this.noSuggestionSelection );
-	} else {
-		slct.options[0].selected = true;
-	}
-	this.setSuggestedText();
-}
-
-function addSuggestion( sugg_text ) {
-	var slct = this.suggestionList;
-	if( sugg_text ) {
-		var i = slct.options.length;
-		var newOption = new Option( sugg_text, 'sugg_text'+i );
-		slct.options[i] = newOption;
-	 }
-}
-
-function clearSuggestions() {
-	var slct = this.suggestionList;
-	for( var j = slct.length - 1; j > -1; j-- ) {
-		if( slct.options[j] ) {
-			slct.options[j] = null;
-		}
-	}
-}
-
-function enableUndo() {
-	if( this.undoButton ) {
-		if( this.undoButton.disabled == true ) {
-			this.undoButton.disabled = false;
-		}
-	}
-}
-
-function disableUndo() {
-	if( this.undoButton ) {
-		if( this.undoButton.disabled == false ) {
-			this.undoButton.disabled = true;
-		}
-	}
-}
+////////////////////////////////////////////////////
+// controlWindow object
+////////////////////////////////////////////////////
+function controlWindow( controlForm ) {
+	// private properties
+	this._form = controlForm;
+
+	// public properties
+	this.windowType = "controlWindow";
+//	this.noSuggestionSelection = "- No suggestions -";	// by FredCK
+	this.noSuggestionSelection = FCKLang.DlgSpellNoSuggestions ;
+	// set up the properties for elements of the given control form
+	this.suggestionList  = this._form.sugg;
+	this.evaluatedText   = this._form.misword;
+	this.replacementText = this._form.txtsugg;
+	this.undoButton      = this._form.btnUndo;
+
+	// public methods
+	this.addSuggestion = addSuggestion;
+	this.clearSuggestions = clearSuggestions;
+	this.selectDefaultSuggestion = selectDefaultSuggestion;
+	this.resetForm = resetForm;
+	this.setSuggestedText = setSuggestedText;
+	this.enableUndo = enableUndo;
+	this.disableUndo = disableUndo;
+}
+
+function resetForm() {
+	if( this._form ) {
+		this._form.reset();
+	}
+}
+
+function setSuggestedText() {
+	var slct = this.suggestionList;
+	var txt = this.replacementText;
+	var str = "";
+	if( (slct.options[0].text) && slct.options[0].text != this.noSuggestionSelection ) {
+		str = slct.options[slct.selectedIndex].text;
+	}
+	txt.value = str;
+}
+
+function selectDefaultSuggestion() {
+	var slct = this.suggestionList;
+	var txt = this.replacementText;
+	if( slct.options.length == 0 ) {
+		this.addSuggestion( this.noSuggestionSelection );
+	} else {
+		slct.options[0].selected = true;
+	}
+	this.setSuggestedText();
+}
+
+function addSuggestion( sugg_text ) {
+	var slct = this.suggestionList;
+	if( sugg_text ) {
+		var i = slct.options.length;
+		var newOption = new Option( sugg_text, 'sugg_text'+i );
+		slct.options[i] = newOption;
+	 }
+}
+
+function clearSuggestions() {
+	var slct = this.suggestionList;
+	for( var j = slct.length - 1; j > -1; j-- ) {
+		if( slct.options[j] ) {
+			slct.options[j] = null;
+		}
+	}
+}
+
+function enableUndo() {
+	if( this.undoButton ) {
+		if( this.undoButton.disabled == true ) {
+			this.undoButton.disabled = false;
+		}
+	}
+}
+
+function disableUndo() {
+	if( this.undoButton ) {
+		if( this.undoButton.disabled == false ) {
+			this.undoButton.disabled = true;
+		}
+	}
+}

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/controls.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/controls.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/controls.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,153 +1,153 @@
-<html>
-	<head>
-		<link rel="stylesheet" type="text/css" href="spellerStyle.css" />
-		<script type="text/javascript" src="controlWindow.js"></script>
-		<script type="text/javascript">
-var spellerObject;
-var controlWindowObj;
-
-if( parent.opener ) {
-	spellerObject = parent.opener.speller;
-}
-
-function ignore_word() {
-	if( spellerObject ) {
-		spellerObject.ignoreWord();
-	}
-}
-
-function ignore_all() {
-	if( spellerObject ) {
-		spellerObject.ignoreAll();
-	}
-}
-
-function replace_word() {
-	if( spellerObject ) {
-		spellerObject.replaceWord();
-	}
-}
-
-function replace_all() {
-	if( spellerObject ) {
-		spellerObject.replaceAll();
-	}
-}
-
-function end_spell() {
-	if( spellerObject ) {
-		spellerObject.terminateSpell();
-	}
-}
-
-function undo() {
-	if( spellerObject ) {
-		spellerObject.undo();
-	}
-}
-
-function suggText() {
-	if( controlWindowObj ) {
-		controlWindowObj.setSuggestedText();
-	}
-}
-
-var FCKLang = window.parent.parent.FCKLang ;	// by FredCK
-
-function init_spell() {
-	// By FredCK (fckLang attributes have been added to the HTML source of this page)
-	window.parent.parent.OnSpellerControlsLoad( this ) ;
-
-	var controlForm = document.spellcheck;
-
-	// create a new controlWindow object
- 	controlWindowObj = new controlWindow( controlForm );
-
-	// call the init_spell() function in the parent frameset
-	if( parent.frames.length ) {
-		parent.init_spell( controlWindowObj );
-	} else {
-		alert( 'This page was loaded outside of a frameset. It might not display properly' );
-	}
-}
-
-</script>
-	</head>
-	<body class="controlWindowBody" onLoad="init_spell();" style="OVERFLOW: hidden" scroll="no">	<!-- by FredCK -->
-		<form name="spellcheck">
-			<table border="0" cellpadding="0" cellspacing="0" border="0" align="center">
-				<tr>
-					<td colspan="3" class="normalLabel"><span fckLang="DlgSpellNotInDic">Not in dictionary:</span></td>
-				</tr>
-				<tr>
-					<td colspan="3"><input class="readonlyInput" type="text" name="misword" readonly /></td>
-				</tr>
-				<tr>
-					<td colspan="3" height="5"></td>
-				</tr>
-				<tr>
-					<td class="normalLabel"><span fckLang="DlgSpellChangeTo">Change to:</span></td>
-				</tr>
-				<tr valign="top">
-					<td>
-						<table border="0" cellpadding="0" cellspacing="0" border="0">
-							<tr>
-								<td class="normalLabel">
-									<input class="textDefault" type="text" name="txtsugg" />
-								</td>
-							</tr>
-							<tr>
-								<td>
-									<select class="suggSlct" name="sugg" size="7" onChange="suggText();" onDblClick="replace_word();">
-										<option></option>
-									</select>
-								</td>
-							</tr>
-						</table>
-					</td>
-					<td>&nbsp;&nbsp;</td>
-					<td>
-						<table border="0" cellpadding="0" cellspacing="0" border="0">
-							<tr>
-								<td>
-									<input class="buttonDefault" type="button" fckLang="DlgSpellBtnIgnore" value="Ignore" onClick="ignore_word();">
-								</td>
-								<td>&nbsp;&nbsp;</td>
-								<td>
-									<input class="buttonDefault" type="button" fckLang="DlgSpellBtnIgnoreAll" value="Ignore All" onClick="ignore_all();">
-								</td>
-							</tr>
-							<tr>
-								<td colspan="3" height="5"></td>
-							</tr>
-							<tr>
-								<td>
-									<input class="buttonDefault" type="button" fckLang="DlgSpellBtnReplace" value="Replace" onClick="replace_word();">
-								</td>
-								<td>&nbsp;&nbsp;</td>
-								<td>
-									<input class="buttonDefault" type="button" fckLang="DlgSpellBtnReplaceAll" value="Replace All" onClick="replace_all();">
-								</td>
-							</tr>
-							<tr>
-								<td colspan="3" height="5"></td>
-							</tr>
-							<tr>
-								<td>
-									<input class="buttonDefault" type="button" name="btnUndo" fckLang="DlgSpellBtnUndo" value="Undo" onClick="undo();"
-										disabled>
-								</td>
-								<td>&nbsp;&nbsp;</td>
-								<td>
-									<!-- by FredCK
-									<input class="buttonDefault" type="button" value="Close" onClick="end_spell();">
-									-->
-								</td>
-							</tr>
-						</table>
-					</td>
-				</tr>
-			</table>
-		</form>
-	</body>
-</html>
+<html>
+	<head>
+		<link rel="stylesheet" type="text/css" href="spellerStyle.css" />
+		<script type="text/javascript" src="controlWindow.js"></script>
+		<script type="text/javascript">
+var spellerObject;
+var controlWindowObj;
+
+if( parent.opener ) {
+	spellerObject = parent.opener.speller;
+}
+
+function ignore_word() {
+	if( spellerObject ) {
+		spellerObject.ignoreWord();
+	}
+}
+
+function ignore_all() {
+	if( spellerObject ) {
+		spellerObject.ignoreAll();
+	}
+}
+
+function replace_word() {
+	if( spellerObject ) {
+		spellerObject.replaceWord();
+	}
+}
+
+function replace_all() {
+	if( spellerObject ) {
+		spellerObject.replaceAll();
+	}
+}
+
+function end_spell() {
+	if( spellerObject ) {
+		spellerObject.terminateSpell();
+	}
+}
+
+function undo() {
+	if( spellerObject ) {
+		spellerObject.undo();
+	}
+}
+
+function suggText() {
+	if( controlWindowObj ) {
+		controlWindowObj.setSuggestedText();
+	}
+}
+
+var FCKLang = window.parent.parent.FCKLang ;	// by FredCK
+
+function init_spell() {
+	// By FredCK (fckLang attributes have been added to the HTML source of this page)
+	window.parent.parent.OnSpellerControlsLoad( this ) ;
+
+	var controlForm = document.spellcheck;
+
+	// create a new controlWindow object
+ 	controlWindowObj = new controlWindow( controlForm );
+
+	// call the init_spell() function in the parent frameset
+	if( parent.frames.length ) {
+		parent.init_spell( controlWindowObj );
+	} else {
+		alert( 'This page was loaded outside of a frameset. It might not display properly' );
+	}
+}
+
+</script>
+	</head>
+	<body class="controlWindowBody" onLoad="init_spell();" style="OVERFLOW: hidden" scroll="no">	<!-- by FredCK -->
+		<form name="spellcheck">
+			<table border="0" cellpadding="0" cellspacing="0" border="0" align="center">
+				<tr>
+					<td colspan="3" class="normalLabel"><span fckLang="DlgSpellNotInDic">Not in dictionary:</span></td>
+				</tr>
+				<tr>
+					<td colspan="3"><input class="readonlyInput" type="text" name="misword" readonly /></td>
+				</tr>
+				<tr>
+					<td colspan="3" height="5"></td>
+				</tr>
+				<tr>
+					<td class="normalLabel"><span fckLang="DlgSpellChangeTo">Change to:</span></td>
+				</tr>
+				<tr valign="top">
+					<td>
+						<table border="0" cellpadding="0" cellspacing="0" border="0">
+							<tr>
+								<td class="normalLabel">
+									<input class="textDefault" type="text" name="txtsugg" />
+								</td>
+							</tr>
+							<tr>
+								<td>
+									<select class="suggSlct" name="sugg" size="7" onChange="suggText();" onDblClick="replace_word();">
+										<option></option>
+									</select>
+								</td>
+							</tr>
+						</table>
+					</td>
+					<td>&nbsp;&nbsp;</td>
+					<td>
+						<table border="0" cellpadding="0" cellspacing="0" border="0">
+							<tr>
+								<td>
+									<input class="buttonDefault" type="button" fckLang="DlgSpellBtnIgnore" value="Ignore" onClick="ignore_word();">
+								</td>
+								<td>&nbsp;&nbsp;</td>
+								<td>
+									<input class="buttonDefault" type="button" fckLang="DlgSpellBtnIgnoreAll" value="Ignore All" onClick="ignore_all();">
+								</td>
+							</tr>
+							<tr>
+								<td colspan="3" height="5"></td>
+							</tr>
+							<tr>
+								<td>
+									<input class="buttonDefault" type="button" fckLang="DlgSpellBtnReplace" value="Replace" onClick="replace_word();">
+								</td>
+								<td>&nbsp;&nbsp;</td>
+								<td>
+									<input class="buttonDefault" type="button" fckLang="DlgSpellBtnReplaceAll" value="Replace All" onClick="replace_all();">
+								</td>
+							</tr>
+							<tr>
+								<td colspan="3" height="5"></td>
+							</tr>
+							<tr>
+								<td>
+									<input class="buttonDefault" type="button" name="btnUndo" fckLang="DlgSpellBtnUndo" value="Undo" onClick="undo();"
+										disabled>
+								</td>
+								<td>&nbsp;&nbsp;</td>
+								<td>
+									<!-- by FredCK
+									<input class="buttonDefault" type="button" value="Close" onClick="end_spell();">
+									-->
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+			</table>
+		</form>
+	</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,148 +1,148 @@
-<cfsetting enablecfoutputonly="true">
-<!---
-This code uses a CF User Defined Function and should work in CF version 5.0
-and up without alteration.
-
-Also if you are hosting your site at an ISP, you will have to check with them
-to see if the use of <CFEXECUTE> is allowed. In most cases ISP will not allow
-the use of that tag for security reasons. Clients would be able to access each
-others files in certain cases.
---->
-
-<!--- The following variables values must reflect your installation. --->
-<cfset aspell_dir	  = "C:\Program Files\Aspell\bin">
-<cfset lang         = "en_US">
-<cfset aspell_opts  = "-a --lang=#lang# --encoding=utf-8 -H --rem-sgml-check=alt">
-<cfset tempfile_in  = GetTempFile(GetTempDirectory(), "spell_")>
-<cfset tempfile_out = GetTempFile(GetTempDirectory(), "spell_")>
-<cfset spellercss   = "../spellerStyle.css">
-<cfset word_win_src = "../wordWindow.js">
-
-<cfset form.checktext = form["textinputs[]"]>
-
-<!--- make no difference between URL and FORM scopes --->
-<cfparam name="url.checktext"  default="">
-<cfparam name="form.checktext" default="#url.checktext#">
-
-<!--- Takes care of those pesky smart quotes from MS apps, replaces them with regular quotes --->
-<cfset submitted_text = ReplaceList(form.checktext,"%u201C,%u201D","%22,%22")>
-
-<!--- submitted_text now is ready for processing --->
-
-<!--- use carat on each line to escape possible aspell commands --->
-<cfset text = "">
-<cfset CRLF = Chr(13) & Chr(10)>
-
-<cfloop list="#submitted_text#" index="field" delimiters=",">
-	<cfset text = text & "%"  & CRLF
-                      & "^A" & CRLF
-                      & "!"  & CRLF>
-	<!--- Strip all tags for the text. (by FredCK - #339 / #681) --->
-	<cfset field = REReplace(URLDecode(field), "<[^>]+>", " ", "all")>
-	<cfloop list="#field#" index="line" delimiters="#CRLF#">
-		<cfset text = ListAppend(text, "^" & Trim(JSStringFormat(line)), CRLF)>
-	</cfloop>
-</cfloop>
-
-<!--- create temp file from the submitted text, this will be passed to aspell to be check for misspelled words --->
-<cffile action="write" file="#tempfile_in#" output="#text#" charset="utf-8">
-
-<!--- execute aspell in an UTF-8 console and redirect output to a file. UTF-8 encoding is lost if done differently --->
-<cfexecute name="cmd.exe" arguments='/c type "#tempfile_in#" | "#aspell_dir#\aspell.exe" #aspell_opts# > "#tempfile_out#"' timeout="100"/>
-
-<!--- read output file for further processing --->
-<cffile action="read" file="#tempfile_out#" variable="food" charset="utf-8">
-
-<!--- remove temp files --->
-<cffile action="delete" file="#tempfile_in#">
-<cffile action="delete" file="#tempfile_out#">
-
-<cfset texts = StructNew()>
-<cfset texts.textinputs = "">
-<cfset texts.words      = "">
-<cfset texts.abort      = "">
-
-<!--- Generate Text Inputs --->
-<cfset i = 0>
-<cfloop list="#submitted_text#" index="textinput">
-  <cfset texts.textinputs = ListAppend(texts.textinputs, 'textinputs[#i#] = decodeURIComponent("#textinput#");', CRLF)>
-  <cfset i = i + 1>
-</cfloop>
-
-<!--- Generate Words Lists --->
-<cfset word_cnt  = 0>
-<cfset input_cnt = -1>
-<cfloop list="#food#" index="aspell_line" delimiters="#CRLF#">
-    <cfset leftChar = Left(aspell_line, 1)>
-	<cfif leftChar eq "*">
-			<cfset input_cnt   = input_cnt + 1>
-			<cfset word_cnt    = 0>
-			<cfset texts.words = ListAppend(texts.words, "words[#input_cnt#] = [];", CRLF)>
-			<cfset texts.words = ListAppend(texts.words, "suggs[#input_cnt#] = [];", CRLF)>
-    <cfelse>
-        <cfif leftChar eq "&" or leftChar eq "##">
-			<!--- word that misspelled --->
-			<cfset bad_word    = Trim(ListGetAt(aspell_line, 2, " "))>
-			<cfset bad_word    = Replace(bad_word, "'", "\'", "ALL")>
-			<!--- sugestions --->
-			<cfset sug_list    = Trim(ListRest(aspell_line, ":"))>
-			<cfset sug_list    = ListQualify(Replace(sug_list, "'", "\'", "ALL"), "'")>
-			<!--- javascript --->
-			<cfset texts.words = ListAppend(texts.words, "words[#input_cnt#][#word_cnt#] = '#bad_word#';", CRLF)>
-			<cfset texts.words = ListAppend(texts.words, "suggs[#input_cnt#][#word_cnt#] = [#sug_list#];", CRLF)>
-			<cfset word_cnt    = word_cnt + 1>
-		</cfif>
-     </cfif>
-</cfloop>
-
-<cfif texts.words eq "">
-  <cfset texts.abort = "alert('Spell check complete.\n\nNo misspellings found.'); top.window.close();">
-</cfif>
-
-<cfcontent type="text/html; charset=utf-8">
-
-<cfoutput><html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<link rel="stylesheet" type="text/css" href="#spellercss#" />
-<script language="javascript" src="#word_win_src#"></script>
-<script language="javascript">
-var suggs      = new Array();
-var words      = new Array();
-var textinputs = new Array();
-var error;
-
-#texts.textinputs##CRLF#
-#texts.words#
-#texts.abort#
-
-var wordWindowObj = new wordWindow();
-wordWindowObj.originalSpellings = words;
-wordWindowObj.suggestions = suggs;
-wordWindowObj.textInputs = textinputs;
-
-function init_spell() {
-	// check if any error occured during server-side processing
-	if( error ) {
-		alert( error );
-	} else {
-		// call the init_spell() function in the parent frameset
-		if (parent.frames.length) {
-			parent.init_spell( wordWindowObj );
-		} else {
-			alert('This page was loaded outside of a frameset. It might not display properly');
-		}
-	}
-}
-</script>
-
-</head>
-<body onLoad="init_spell();">
-
-<script type="text/javascript">
-wordWindowObj.writeBody();
-</script>
-
-</body>
-</html></cfoutput>
-<cfsetting enablecfoutputonly="false">
+<cfsetting enablecfoutputonly="true">
+<!---
+This code uses a CF User Defined Function and should work in CF version 5.0
+and up without alteration.
+
+Also if you are hosting your site at an ISP, you will have to check with them
+to see if the use of <CFEXECUTE> is allowed. In most cases ISP will not allow
+the use of that tag for security reasons. Clients would be able to access each
+others files in certain cases.
+--->
+
+<!--- The following variables values must reflect your installation. --->
+<cfset aspell_dir	  = "C:\Program Files\Aspell\bin">
+<cfset lang         = "en_US">
+<cfset aspell_opts  = "-a --lang=#lang# --encoding=utf-8 -H --rem-sgml-check=alt">
+<cfset tempfile_in  = GetTempFile(GetTempDirectory(), "spell_")>
+<cfset tempfile_out = GetTempFile(GetTempDirectory(), "spell_")>
+<cfset spellercss   = "../spellerStyle.css">
+<cfset word_win_src = "../wordWindow.js">
+
+<cfset form.checktext = form["textinputs[]"]>
+
+<!--- make no difference between URL and FORM scopes --->
+<cfparam name="url.checktext"  default="">
+<cfparam name="form.checktext" default="#url.checktext#">
+
+<!--- Takes care of those pesky smart quotes from MS apps, replaces them with regular quotes --->
+<cfset submitted_text = ReplaceList(form.checktext,"%u201C,%u201D","%22,%22")>
+
+<!--- submitted_text now is ready for processing --->
+
+<!--- use carat on each line to escape possible aspell commands --->
+<cfset text = "">
+<cfset CRLF = Chr(13) & Chr(10)>
+
+<cfloop list="#submitted_text#" index="field" delimiters=",">
+	<cfset text = text & "%"  & CRLF
+                      & "^A" & CRLF
+                      & "!"  & CRLF>
+	<!--- Strip all tags for the text. (by FredCK - #339 / #681) --->
+	<cfset field = REReplace(URLDecode(field), "<[^>]+>", " ", "all")>
+	<cfloop list="#field#" index="line" delimiters="#CRLF#">
+		<cfset text = ListAppend(text, "^" & Trim(JSStringFormat(line)), CRLF)>
+	</cfloop>
+</cfloop>
+
+<!--- create temp file from the submitted text, this will be passed to aspell to be check for misspelled words --->
+<cffile action="write" file="#tempfile_in#" output="#text#" charset="utf-8">
+
+<!--- execute aspell in an UTF-8 console and redirect output to a file. UTF-8 encoding is lost if done differently --->
+<cfexecute name="cmd.exe" arguments='/c type "#tempfile_in#" | "#aspell_dir#\aspell.exe" #aspell_opts# > "#tempfile_out#"' timeout="100"/>
+
+<!--- read output file for further processing --->
+<cffile action="read" file="#tempfile_out#" variable="food" charset="utf-8">
+
+<!--- remove temp files --->
+<cffile action="delete" file="#tempfile_in#">
+<cffile action="delete" file="#tempfile_out#">
+
+<cfset texts = StructNew()>
+<cfset texts.textinputs = "">
+<cfset texts.words      = "">
+<cfset texts.abort      = "">
+
+<!--- Generate Text Inputs --->
+<cfset i = 0>
+<cfloop list="#submitted_text#" index="textinput">
+  <cfset texts.textinputs = ListAppend(texts.textinputs, 'textinputs[#i#] = decodeURIComponent("#textinput#");', CRLF)>
+  <cfset i = i + 1>
+</cfloop>
+
+<!--- Generate Words Lists --->
+<cfset word_cnt  = 0>
+<cfset input_cnt = -1>
+<cfloop list="#food#" index="aspell_line" delimiters="#CRLF#">
+    <cfset leftChar = Left(aspell_line, 1)>
+	<cfif leftChar eq "*">
+			<cfset input_cnt   = input_cnt + 1>
+			<cfset word_cnt    = 0>
+			<cfset texts.words = ListAppend(texts.words, "words[#input_cnt#] = [];", CRLF)>
+			<cfset texts.words = ListAppend(texts.words, "suggs[#input_cnt#] = [];", CRLF)>
+    <cfelse>
+        <cfif leftChar eq "&" or leftChar eq "##">
+			<!--- word that misspelled --->
+			<cfset bad_word    = Trim(ListGetAt(aspell_line, 2, " "))>
+			<cfset bad_word    = Replace(bad_word, "'", "\'", "ALL")>
+			<!--- sugestions --->
+			<cfset sug_list    = Trim(ListRest(aspell_line, ":"))>
+			<cfset sug_list    = ListQualify(Replace(sug_list, "'", "\'", "ALL"), "'")>
+			<!--- javascript --->
+			<cfset texts.words = ListAppend(texts.words, "words[#input_cnt#][#word_cnt#] = '#bad_word#';", CRLF)>
+			<cfset texts.words = ListAppend(texts.words, "suggs[#input_cnt#][#word_cnt#] = [#sug_list#];", CRLF)>
+			<cfset word_cnt    = word_cnt + 1>
+		</cfif>
+     </cfif>
+</cfloop>
+
+<cfif texts.words eq "">
+  <cfset texts.abort = "alert('Spell check complete.\n\nNo misspellings found.'); top.window.close();">
+</cfif>
+
+<cfcontent type="text/html; charset=utf-8">
+
+<cfoutput><html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="#spellercss#" />
+<script language="javascript" src="#word_win_src#"></script>
+<script language="javascript">
+var suggs      = new Array();
+var words      = new Array();
+var textinputs = new Array();
+var error;
+
+#texts.textinputs##CRLF#
+#texts.words#
+#texts.abort#
+
+var wordWindowObj = new wordWindow();
+wordWindowObj.originalSpellings = words;
+wordWindowObj.suggestions = suggs;
+wordWindowObj.textInputs = textinputs;
+
+function init_spell() {
+	// check if any error occured during server-side processing
+	if( error ) {
+		alert( error );
+	} else {
+		// call the init_spell() function in the parent frameset
+		if (parent.frames.length) {
+			parent.init_spell( wordWindowObj );
+		} else {
+			alert('This page was loaded outside of a frameset. It might not display properly');
+		}
+	}
+}
+</script>
+
+</head>
+<body onLoad="init_spell();">
+
+<script type="text/javascript">
+wordWindowObj.writeBody();
+</script>
+
+</body>
+</html></cfoutput>
+<cfsetting enablecfoutputonly="false">

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,461 +1,461 @@
-////////////////////////////////////////////////////
-// spellChecker.js
-//
-// spellChecker object
-//
-// This file is sourced on web pages that have a textarea object to evaluate
-// for spelling. It includes the implementation for the spellCheckObject.
-//
-////////////////////////////////////////////////////
-
-
-// constructor
-function spellChecker( textObject ) {
-
-	// public properties - configurable
-//	this.popUpUrl = '/speller/spellchecker.html';							// by FredCK
-	this.popUpUrl = 'fck_spellerpages/spellerpages/spellchecker.html';		// by FredCK
-	this.popUpName = 'spellchecker';
-//	this.popUpProps = "menu=no,width=440,height=350,top=70,left=120,resizable=yes,status=yes";	// by FredCK
-	this.popUpProps = null ;																	// by FredCK
-//	this.spellCheckScript = '/speller/server-scripts/spellchecker.php';		// by FredCK
-	//this.spellCheckScript = '/cgi-bin/spellchecker.pl';
-
-	// values used to keep track of what happened to a word
-	this.replWordFlag = "R";	// single replace
-	this.ignrWordFlag = "I";	// single ignore
-	this.replAllFlag = "RA";	// replace all occurances
-	this.ignrAllFlag = "IA";	// ignore all occurances
-	this.fromReplAll = "~RA";	// an occurance of a "replace all" word
-	this.fromIgnrAll = "~IA";	// an occurance of a "ignore all" word
-	// properties set at run time
-	this.wordFlags = new Array();
-	this.currentTextIndex = 0;
-	this.currentWordIndex = 0;
-	this.spellCheckerWin = null;
-	this.controlWin = null;
-	this.wordWin = null;
-	this.textArea = textObject;	// deprecated
-	this.textInputs = arguments;
-
-	// private methods
-	this._spellcheck = _spellcheck;
-	this._getSuggestions = _getSuggestions;
-	this._setAsIgnored = _setAsIgnored;
-	this._getTotalReplaced = _getTotalReplaced;
-	this._setWordText = _setWordText;
-	this._getFormInputs = _getFormInputs;
-
-	// public methods
-	this.openChecker = openChecker;
-	this.startCheck = startCheck;
-	this.checkTextBoxes = checkTextBoxes;
-	this.checkTextAreas = checkTextAreas;
-	this.spellCheckAll = spellCheckAll;
-	this.ignoreWord = ignoreWord;
-	this.ignoreAll = ignoreAll;
-	this.replaceWord = replaceWord;
-	this.replaceAll = replaceAll;
-	this.terminateSpell = terminateSpell;
-	this.undo = undo;
-
-	// set the current window's "speller" property to the instance of this class.
-	// this object can now be referenced by child windows/frames.
-	window.speller = this;
-}
-
-// call this method to check all text boxes (and only text boxes) in the HTML document
-function checkTextBoxes() {
-	this.textInputs = this._getFormInputs( "^text$" );
-	this.openChecker();
-}
-
-// call this method to check all textareas (and only textareas ) in the HTML document
-function checkTextAreas() {
-	this.textInputs = this._getFormInputs( "^textarea$" );
-	this.openChecker();
-}
-
-// call this method to check all text boxes and textareas in the HTML document
-function spellCheckAll() {
-	this.textInputs = this._getFormInputs( "^text(area)?$" );
-	this.openChecker();
-}
-
-// call this method to check text boxe(s) and/or textarea(s) that were passed in to the
-// object's constructor or to the textInputs property
-function openChecker() {
-	this.spellCheckerWin = window.open( this.popUpUrl, this.popUpName, this.popUpProps );
-	if( !this.spellCheckerWin.opener ) {
-		this.spellCheckerWin.opener = window;
-	}
-}
-
-function startCheck( wordWindowObj, controlWindowObj ) {
-
-	// set properties from args
-	this.wordWin = wordWindowObj;
-	this.controlWin = controlWindowObj;
-
-	// reset properties
-	this.wordWin.resetForm();
-	this.controlWin.resetForm();
-	this.currentTextIndex = 0;
-	this.currentWordIndex = 0;
-	// initialize the flags to an array - one element for each text input
-	this.wordFlags = new Array( this.wordWin.textInputs.length );
-	// each element will be an array that keeps track of each word in the text
-	for( var i=0; i<this.wordFlags.length; i++ ) {
-		this.wordFlags[i] = [];
-	}
-
-	// start
-	this._spellcheck();
-
-	return true;
-}
-
-function ignoreWord() {
-	var wi = this.currentWordIndex;
-	var ti = this.currentTextIndex;
-	if( !this.wordWin ) {
-		alert( 'Error: Word frame not available.' );
-		return false;
-	}
-	if( !this.wordWin.getTextVal( ti, wi )) {
-		alert( 'Error: "Not in dictionary" text is missing.' );
-		return false;
-	}
-	// set as ignored
-	if( this._setAsIgnored( ti, wi, this.ignrWordFlag )) {
-		this.currentWordIndex++;
-		this._spellcheck();
-	}
-	return true;
-}
-
-function ignoreAll() {
-	var wi = this.currentWordIndex;
-	var ti = this.currentTextIndex;
-	if( !this.wordWin ) {
-		alert( 'Error: Word frame not available.' );
-		return false;
-	}
-	// get the word that is currently being evaluated.
-	var s_word_to_repl = this.wordWin.getTextVal( ti, wi );
-	if( !s_word_to_repl ) {
-		alert( 'Error: "Not in dictionary" text is missing' );
-		return false;
-	}
-
-	// set this word as an "ignore all" word.
-	this._setAsIgnored( ti, wi, this.ignrAllFlag );
-
-	// loop through all the words after this word
-	for( var i = ti; i < this.wordWin.textInputs.length; i++ ) {
-		for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) {
-			if(( i == ti && j > wi ) || i > ti ) {
-				// future word: set as "from ignore all" if
-				// 1) do not already have a flag and
-				// 2) have the same value as current word
-				if(( this.wordWin.getTextVal( i, j ) == s_word_to_repl )
-				&& ( !this.wordFlags[i][j] )) {
-					this._setAsIgnored( i, j, this.fromIgnrAll );
-				}
-			}
-		}
-	}
-
-	// finally, move on
-	this.currentWordIndex++;
-	this._spellcheck();
-	return true;
-}
-
-function replaceWord() {
-	var wi = this.currentWordIndex;
-	var ti = this.currentTextIndex;
-	if( !this.wordWin ) {
-		alert( 'Error: Word frame not available.' );
-		return false;
-	}
-	if( !this.wordWin.getTextVal( ti, wi )) {
-		alert( 'Error: "Not in dictionary" text is missing' );
-		return false;
-	}
-	if( !this.controlWin.replacementText ) {
-		return false ;
-	}
-	var txt = this.controlWin.replacementText;
-	if( txt.value ) {
-		var newspell = new String( txt.value );
-		if( this._setWordText( ti, wi, newspell, this.replWordFlag )) {
-			this.currentWordIndex++;
-			this._spellcheck();
-		}
-	}
-	return true;
-}
-
-function replaceAll() {
-	var ti = this.currentTextIndex;
-	var wi = this.currentWordIndex;
-	if( !this.wordWin ) {
-		alert( 'Error: Word frame not available.' );
-		return false;
-	}
-	var s_word_to_repl = this.wordWin.getTextVal( ti, wi );
-	if( !s_word_to_repl ) {
-		alert( 'Error: "Not in dictionary" text is missing' );
-		return false;
-	}
-	var txt = this.controlWin.replacementText;
-	if( !txt.value ) return false;
-	var newspell = new String( txt.value );
-
-	// set this word as a "replace all" word.
-	this._setWordText( ti, wi, newspell, this.replAllFlag );
-
-	// loop through all the words after this word
-	for( var i = ti; i < this.wordWin.textInputs.length; i++ ) {
-		for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) {
-			if(( i == ti && j > wi ) || i > ti ) {
-				// future word: set word text to s_word_to_repl if
-				// 1) do not already have a flag and
-				// 2) have the same value as s_word_to_repl
-				if(( this.wordWin.getTextVal( i, j ) == s_word_to_repl )
-				&& ( !this.wordFlags[i][j] )) {
-					this._setWordText( i, j, newspell, this.fromReplAll );
-				}
-			}
-		}
-	}
-
-	// finally, move on
-	this.currentWordIndex++;
-	this._spellcheck();
-	return true;
-}
-
-function terminateSpell() {
-	// called when we have reached the end of the spell checking.
-	var msg = "";		// by FredCK
-	var numrepl = this._getTotalReplaced();
-	if( numrepl == 0 ) {
-		// see if there were no misspellings to begin with
-		if( !this.wordWin ) {
-			msg = "";
-		} else {
-			if( this.wordWin.totalMisspellings() ) {
-//				msg += "No words changed.";			// by FredCK
-				msg += FCKLang.DlgSpellNoChanges ;	// by FredCK
-			} else {
-//				msg += "No misspellings found.";	// by FredCK
-				msg += FCKLang.DlgSpellNoMispell ;	// by FredCK
-			}
-		}
-	} else if( numrepl == 1 ) {
-//		msg += "One word changed.";			// by FredCK
-		msg += FCKLang.DlgSpellOneChange ;	// by FredCK
-	} else {
-//		msg += numrepl + " words changed.";	// by FredCK
-		msg += FCKLang.DlgSpellManyChanges.replace( /%1/g, numrepl ) ;
-	}
-	if( msg ) {
-//		msg += "\n";	// by FredCK
-		alert( msg );
-	}
-
-	if( numrepl > 0 ) {
-		// update the text field(s) on the opener window
-		for( var i = 0; i < this.textInputs.length; i++ ) {
-			// this.textArea.value = this.wordWin.text;
-			if( this.wordWin ) {
-				if( this.wordWin.textInputs[i] ) {
-					this.textInputs[i].value = this.wordWin.textInputs[i];
-				}
-			}
-		}
-	}
-
-	// return back to the calling window
-//	this.spellCheckerWin.close();					// by FredCK
-	if ( typeof( this.OnFinished ) == 'function' )	// by FredCK
-		this.OnFinished(numrepl) ;					// by FredCK
-
-	return true;
-}
-
-function undo() {
-	// skip if this is the first word!
-	var ti = this.currentTextIndex;
-	var wi = this.currentWordIndex;
-
-	if( this.wordWin.totalPreviousWords( ti, wi ) > 0 ) {
-		this.wordWin.removeFocus( ti, wi );
-
-		// go back to the last word index that was acted upon
-		do {
-			// if the current word index is zero then reset the seed
-			if( this.currentWordIndex == 0 && this.currentTextIndex > 0 ) {
-				this.currentTextIndex--;
-				this.currentWordIndex = this.wordWin.totalWords( this.currentTextIndex )-1;
-				if( this.currentWordIndex < 0 ) this.currentWordIndex = 0;
-			} else {
-				if( this.currentWordIndex > 0 ) {
-					this.currentWordIndex--;
-				}
-			}
-		} while (
-			this.wordWin.totalWords( this.currentTextIndex ) == 0
-			|| this.wordFlags[this.currentTextIndex][this.currentWordIndex] == this.fromIgnrAll
-			|| this.wordFlags[this.currentTextIndex][this.currentWordIndex] == this.fromReplAll
-		);
-
-		var text_idx = this.currentTextIndex;
-		var idx = this.currentWordIndex;
-		var preReplSpell = this.wordWin.originalSpellings[text_idx][idx];
-
-		// if we got back to the first word then set the Undo button back to disabled
-		if( this.wordWin.totalPreviousWords( text_idx, idx ) == 0 ) {
-			this.controlWin.disableUndo();
-		}
-
-		var i, j, origSpell ;
-		// examine what happened to this current word.
-		switch( this.wordFlags[text_idx][idx] ) {
-			// replace all: go through this and all the future occurances of the word
-			// and revert them all to the original spelling and clear their flags
-			case this.replAllFlag :
-				for( i = text_idx; i < this.wordWin.textInputs.length; i++ ) {
-					for( j = 0; j < this.wordWin.totalWords( i ); j++ ) {
-						if(( i == text_idx && j >= idx ) || i > text_idx ) {
-							origSpell = this.wordWin.originalSpellings[i][j];
-							if( origSpell == preReplSpell ) {
-								this._setWordText ( i, j, origSpell, undefined );
-							}
-						}
-					}
-				}
-				break;
-
-			// ignore all: go through all the future occurances of the word
-			// and clear their flags
-			case this.ignrAllFlag :
-				for( i = text_idx; i < this.wordWin.textInputs.length; i++ ) {
-					for( j = 0; j < this.wordWin.totalWords( i ); j++ ) {
-						if(( i == text_idx && j >= idx ) || i > text_idx ) {
-							origSpell = this.wordWin.originalSpellings[i][j];
-							if( origSpell == preReplSpell ) {
-								this.wordFlags[i][j] = undefined;
-							}
-						}
-					}
-				}
-				break;
-
-			// replace: revert the word to its original spelling
-			case this.replWordFlag :
-				this._setWordText ( text_idx, idx, preReplSpell, undefined );
-				break;
-		}
-
-		// For all four cases, clear the wordFlag of this word. re-start the process
-		this.wordFlags[text_idx][idx] = undefined;
-		this._spellcheck();
-	}
-}
-
-function _spellcheck() {
-	var ww = this.wordWin;
-
-	// check if this is the last word in the current text element
-	if( this.currentWordIndex == ww.totalWords( this.currentTextIndex) ) {
-		this.currentTextIndex++;
-		this.currentWordIndex = 0;
-		// keep going if we're not yet past the last text element
-		if( this.currentTextIndex < this.wordWin.textInputs.length ) {
-			this._spellcheck();
-			return;
-		} else {
-			this.terminateSpell();
-			return;
-		}
-	}
-
-	// if this is after the first one make sure the Undo button is enabled
-	if( this.currentWordIndex > 0 ) {
-		this.controlWin.enableUndo();
-	}
-
-	// skip the current word if it has already been worked on
-	if( this.wordFlags[this.currentTextIndex][this.currentWordIndex] ) {
-		// increment the global current word index and move on.
-		this.currentWordIndex++;
-		this._spellcheck();
-	} else {
-		var evalText = ww.getTextVal( this.currentTextIndex, this.currentWordIndex );
-		if( evalText ) {
-			this.controlWin.evaluatedText.value = evalText;
-			ww.setFocus( this.currentTextIndex, this.currentWordIndex );
-			this._getSuggestions( this.currentTextIndex, this.currentWordIndex );
-		}
-	}
-}
-
-function _getSuggestions( text_num, word_num ) {
-	this.controlWin.clearSuggestions();
-	// add suggestion in list for each suggested word.
-	// get the array of suggested words out of the
-	// three-dimensional array containing all suggestions.
-	var a_suggests = this.wordWin.suggestions[text_num][word_num];
-	if( a_suggests ) {
-		// got an array of suggestions.
-		for( var ii = 0; ii < a_suggests.length; ii++ ) {
-			this.controlWin.addSuggestion( a_suggests[ii] );
-		}
-	}
-	this.controlWin.selectDefaultSuggestion();
-}
-
-function _setAsIgnored( text_num, word_num, flag ) {
-	// set the UI
-	this.wordWin.removeFocus( text_num, word_num );
-	// do the bookkeeping
-	this.wordFlags[text_num][word_num] = flag;
-	return true;
-}
-
-function _getTotalReplaced() {
-	var i_replaced = 0;
-	for( var i = 0; i < this.wordFlags.length; i++ ) {
-		for( var j = 0; j < this.wordFlags[i].length; j++ ) {
-			if(( this.wordFlags[i][j] == this.replWordFlag )
-			|| ( this.wordFlags[i][j] == this.replAllFlag )
-			|| ( this.wordFlags[i][j] == this.fromReplAll )) {
-				i_replaced++;
-			}
-		}
-	}
-	return i_replaced;
-}
-
-function _setWordText( text_num, word_num, newText, flag ) {
-	// set the UI and form inputs
-	this.wordWin.setText( text_num, word_num, newText );
-	// keep track of what happened to this word:
-	this.wordFlags[text_num][word_num] = flag;
-	return true;
-}
-
-function _getFormInputs( inputPattern ) {
-	var inputs = new Array();
-	for( var i = 0; i < document.forms.length; i++ ) {
-		for( var j = 0; j < document.forms[i].elements.length; j++ ) {
-			if( document.forms[i].elements[j].type.match( inputPattern )) {
-				inputs[inputs.length] = document.forms[i].elements[j];
-			}
-		}
-	}
-	return inputs;
-}
+////////////////////////////////////////////////////
+// spellChecker.js
+//
+// spellChecker object
+//
+// This file is sourced on web pages that have a textarea object to evaluate
+// for spelling. It includes the implementation for the spellCheckObject.
+//
+////////////////////////////////////////////////////
+
+
+// constructor
+function spellChecker( textObject ) {
+
+	// public properties - configurable
+//	this.popUpUrl = '/speller/spellchecker.html';							// by FredCK
+	this.popUpUrl = 'fck_spellerpages/spellerpages/spellchecker.html';		// by FredCK
+	this.popUpName = 'spellchecker';
+//	this.popUpProps = "menu=no,width=440,height=350,top=70,left=120,resizable=yes,status=yes";	// by FredCK
+	this.popUpProps = null ;																	// by FredCK
+//	this.spellCheckScript = '/speller/server-scripts/spellchecker.php';		// by FredCK
+	//this.spellCheckScript = '/cgi-bin/spellchecker.pl';
+
+	// values used to keep track of what happened to a word
+	this.replWordFlag = "R";	// single replace
+	this.ignrWordFlag = "I";	// single ignore
+	this.replAllFlag = "RA";	// replace all occurances
+	this.ignrAllFlag = "IA";	// ignore all occurances
+	this.fromReplAll = "~RA";	// an occurance of a "replace all" word
+	this.fromIgnrAll = "~IA";	// an occurance of a "ignore all" word
+	// properties set at run time
+	this.wordFlags = new Array();
+	this.currentTextIndex = 0;
+	this.currentWordIndex = 0;
+	this.spellCheckerWin = null;
+	this.controlWin = null;
+	this.wordWin = null;
+	this.textArea = textObject;	// deprecated
+	this.textInputs = arguments;
+
+	// private methods
+	this._spellcheck = _spellcheck;
+	this._getSuggestions = _getSuggestions;
+	this._setAsIgnored = _setAsIgnored;
+	this._getTotalReplaced = _getTotalReplaced;
+	this._setWordText = _setWordText;
+	this._getFormInputs = _getFormInputs;
+
+	// public methods
+	this.openChecker = openChecker;
+	this.startCheck = startCheck;
+	this.checkTextBoxes = checkTextBoxes;
+	this.checkTextAreas = checkTextAreas;
+	this.spellCheckAll = spellCheckAll;
+	this.ignoreWord = ignoreWord;
+	this.ignoreAll = ignoreAll;
+	this.replaceWord = replaceWord;
+	this.replaceAll = replaceAll;
+	this.terminateSpell = terminateSpell;
+	this.undo = undo;
+
+	// set the current window's "speller" property to the instance of this class.
+	// this object can now be referenced by child windows/frames.
+	window.speller = this;
+}
+
+// call this method to check all text boxes (and only text boxes) in the HTML document
+function checkTextBoxes() {
+	this.textInputs = this._getFormInputs( "^text$" );
+	this.openChecker();
+}
+
+// call this method to check all textareas (and only textareas ) in the HTML document
+function checkTextAreas() {
+	this.textInputs = this._getFormInputs( "^textarea$" );
+	this.openChecker();
+}
+
+// call this method to check all text boxes and textareas in the HTML document
+function spellCheckAll() {
+	this.textInputs = this._getFormInputs( "^text(area)?$" );
+	this.openChecker();
+}
+
+// call this method to check text boxe(s) and/or textarea(s) that were passed in to the
+// object's constructor or to the textInputs property
+function openChecker() {
+	this.spellCheckerWin = window.open( this.popUpUrl, this.popUpName, this.popUpProps );
+	if( !this.spellCheckerWin.opener ) {
+		this.spellCheckerWin.opener = window;
+	}
+}
+
+function startCheck( wordWindowObj, controlWindowObj ) {
+
+	// set properties from args
+	this.wordWin = wordWindowObj;
+	this.controlWin = controlWindowObj;
+
+	// reset properties
+	this.wordWin.resetForm();
+	this.controlWin.resetForm();
+	this.currentTextIndex = 0;
+	this.currentWordIndex = 0;
+	// initialize the flags to an array - one element for each text input
+	this.wordFlags = new Array( this.wordWin.textInputs.length );
+	// each element will be an array that keeps track of each word in the text
+	for( var i=0; i<this.wordFlags.length; i++ ) {
+		this.wordFlags[i] = [];
+	}
+
+	// start
+	this._spellcheck();
+
+	return true;
+}
+
+function ignoreWord() {
+	var wi = this.currentWordIndex;
+	var ti = this.currentTextIndex;
+	if( !this.wordWin ) {
+		alert( 'Error: Word frame not available.' );
+		return false;
+	}
+	if( !this.wordWin.getTextVal( ti, wi )) {
+		alert( 'Error: "Not in dictionary" text is missing.' );
+		return false;
+	}
+	// set as ignored
+	if( this._setAsIgnored( ti, wi, this.ignrWordFlag )) {
+		this.currentWordIndex++;
+		this._spellcheck();
+	}
+	return true;
+}
+
+function ignoreAll() {
+	var wi = this.currentWordIndex;
+	var ti = this.currentTextIndex;
+	if( !this.wordWin ) {
+		alert( 'Error: Word frame not available.' );
+		return false;
+	}
+	// get the word that is currently being evaluated.
+	var s_word_to_repl = this.wordWin.getTextVal( ti, wi );
+	if( !s_word_to_repl ) {
+		alert( 'Error: "Not in dictionary" text is missing' );
+		return false;
+	}
+
+	// set this word as an "ignore all" word.
+	this._setAsIgnored( ti, wi, this.ignrAllFlag );
+
+	// loop through all the words after this word
+	for( var i = ti; i < this.wordWin.textInputs.length; i++ ) {
+		for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) {
+			if(( i == ti && j > wi ) || i > ti ) {
+				// future word: set as "from ignore all" if
+				// 1) do not already have a flag and
+				// 2) have the same value as current word
+				if(( this.wordWin.getTextVal( i, j ) == s_word_to_repl )
+				&& ( !this.wordFlags[i][j] )) {
+					this._setAsIgnored( i, j, this.fromIgnrAll );
+				}
+			}
+		}
+	}
+
+	// finally, move on
+	this.currentWordIndex++;
+	this._spellcheck();
+	return true;
+}
+
+function replaceWord() {
+	var wi = this.currentWordIndex;
+	var ti = this.currentTextIndex;
+	if( !this.wordWin ) {
+		alert( 'Error: Word frame not available.' );
+		return false;
+	}
+	if( !this.wordWin.getTextVal( ti, wi )) {
+		alert( 'Error: "Not in dictionary" text is missing' );
+		return false;
+	}
+	if( !this.controlWin.replacementText ) {
+		return false ;
+	}
+	var txt = this.controlWin.replacementText;
+	if( txt.value ) {
+		var newspell = new String( txt.value );
+		if( this._setWordText( ti, wi, newspell, this.replWordFlag )) {
+			this.currentWordIndex++;
+			this._spellcheck();
+		}
+	}
+	return true;
+}
+
+function replaceAll() {
+	var ti = this.currentTextIndex;
+	var wi = this.currentWordIndex;
+	if( !this.wordWin ) {
+		alert( 'Error: Word frame not available.' );
+		return false;
+	}
+	var s_word_to_repl = this.wordWin.getTextVal( ti, wi );
+	if( !s_word_to_repl ) {
+		alert( 'Error: "Not in dictionary" text is missing' );
+		return false;
+	}
+	var txt = this.controlWin.replacementText;
+	if( !txt.value ) return false;
+	var newspell = new String( txt.value );
+
+	// set this word as a "replace all" word.
+	this._setWordText( ti, wi, newspell, this.replAllFlag );
+
+	// loop through all the words after this word
+	for( var i = ti; i < this.wordWin.textInputs.length; i++ ) {
+		for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) {
+			if(( i == ti && j > wi ) || i > ti ) {
+				// future word: set word text to s_word_to_repl if
+				// 1) do not already have a flag and
+				// 2) have the same value as s_word_to_repl
+				if(( this.wordWin.getTextVal( i, j ) == s_word_to_repl )
+				&& ( !this.wordFlags[i][j] )) {
+					this._setWordText( i, j, newspell, this.fromReplAll );
+				}
+			}
+		}
+	}
+
+	// finally, move on
+	this.currentWordIndex++;
+	this._spellcheck();
+	return true;
+}
+
+function terminateSpell() {
+	// called when we have reached the end of the spell checking.
+	var msg = "";		// by FredCK
+	var numrepl = this._getTotalReplaced();
+	if( numrepl == 0 ) {
+		// see if there were no misspellings to begin with
+		if( !this.wordWin ) {
+			msg = "";
+		} else {
+			if( this.wordWin.totalMisspellings() ) {
+//				msg += "No words changed.";			// by FredCK
+				msg += FCKLang.DlgSpellNoChanges ;	// by FredCK
+			} else {
+//				msg += "No misspellings found.";	// by FredCK
+				msg += FCKLang.DlgSpellNoMispell ;	// by FredCK
+			}
+		}
+	} else if( numrepl == 1 ) {
+//		msg += "One word changed.";			// by FredCK
+		msg += FCKLang.DlgSpellOneChange ;	// by FredCK
+	} else {
+//		msg += numrepl + " words changed.";	// by FredCK
+		msg += FCKLang.DlgSpellManyChanges.replace( /%1/g, numrepl ) ;
+	}
+	if( msg ) {
+//		msg += "\n";	// by FredCK
+		alert( msg );
+	}
+
+	if( numrepl > 0 ) {
+		// update the text field(s) on the opener window
+		for( var i = 0; i < this.textInputs.length; i++ ) {
+			// this.textArea.value = this.wordWin.text;
+			if( this.wordWin ) {
+				if( this.wordWin.textInputs[i] ) {
+					this.textInputs[i].value = this.wordWin.textInputs[i];
+				}
+			}
+		}
+	}
+
+	// return back to the calling window
+//	this.spellCheckerWin.close();					// by FredCK
+	if ( typeof( this.OnFinished ) == 'function' )	// by FredCK
+		this.OnFinished(numrepl) ;					// by FredCK
+
+	return true;
+}
+
+function undo() {
+	// skip if this is the first word!
+	var ti = this.currentTextIndex;
+	var wi = this.currentWordIndex;
+
+	if( this.wordWin.totalPreviousWords( ti, wi ) > 0 ) {
+		this.wordWin.removeFocus( ti, wi );
+
+		// go back to the last word index that was acted upon
+		do {
+			// if the current word index is zero then reset the seed
+			if( this.currentWordIndex == 0 && this.currentTextIndex > 0 ) {
+				this.currentTextIndex--;
+				this.currentWordIndex = this.wordWin.totalWords( this.currentTextIndex )-1;
+				if( this.currentWordIndex < 0 ) this.currentWordIndex = 0;
+			} else {
+				if( this.currentWordIndex > 0 ) {
+					this.currentWordIndex--;
+				}
+			}
+		} while (
+			this.wordWin.totalWords( this.currentTextIndex ) == 0
+			|| this.wordFlags[this.currentTextIndex][this.currentWordIndex] == this.fromIgnrAll
+			|| this.wordFlags[this.currentTextIndex][this.currentWordIndex] == this.fromReplAll
+		);
+
+		var text_idx = this.currentTextIndex;
+		var idx = this.currentWordIndex;
+		var preReplSpell = this.wordWin.originalSpellings[text_idx][idx];
+
+		// if we got back to the first word then set the Undo button back to disabled
+		if( this.wordWin.totalPreviousWords( text_idx, idx ) == 0 ) {
+			this.controlWin.disableUndo();
+		}
+
+		var i, j, origSpell ;
+		// examine what happened to this current word.
+		switch( this.wordFlags[text_idx][idx] ) {
+			// replace all: go through this and all the future occurances of the word
+			// and revert them all to the original spelling and clear their flags
+			case this.replAllFlag :
+				for( i = text_idx; i < this.wordWin.textInputs.length; i++ ) {
+					for( j = 0; j < this.wordWin.totalWords( i ); j++ ) {
+						if(( i == text_idx && j >= idx ) || i > text_idx ) {
+							origSpell = this.wordWin.originalSpellings[i][j];
+							if( origSpell == preReplSpell ) {
+								this._setWordText ( i, j, origSpell, undefined );
+							}
+						}
+					}
+				}
+				break;
+
+			// ignore all: go through all the future occurances of the word
+			// and clear their flags
+			case this.ignrAllFlag :
+				for( i = text_idx; i < this.wordWin.textInputs.length; i++ ) {
+					for( j = 0; j < this.wordWin.totalWords( i ); j++ ) {
+						if(( i == text_idx && j >= idx ) || i > text_idx ) {
+							origSpell = this.wordWin.originalSpellings[i][j];
+							if( origSpell == preReplSpell ) {
+								this.wordFlags[i][j] = undefined;
+							}
+						}
+					}
+				}
+				break;
+
+			// replace: revert the word to its original spelling
+			case this.replWordFlag :
+				this._setWordText ( text_idx, idx, preReplSpell, undefined );
+				break;
+		}
+
+		// For all four cases, clear the wordFlag of this word. re-start the process
+		this.wordFlags[text_idx][idx] = undefined;
+		this._spellcheck();
+	}
+}
+
+function _spellcheck() {
+	var ww = this.wordWin;
+
+	// check if this is the last word in the current text element
+	if( this.currentWordIndex == ww.totalWords( this.currentTextIndex) ) {
+		this.currentTextIndex++;
+		this.currentWordIndex = 0;
+		// keep going if we're not yet past the last text element
+		if( this.currentTextIndex < this.wordWin.textInputs.length ) {
+			this._spellcheck();
+			return;
+		} else {
+			this.terminateSpell();
+			return;
+		}
+	}
+
+	// if this is after the first one make sure the Undo button is enabled
+	if( this.currentWordIndex > 0 ) {
+		this.controlWin.enableUndo();
+	}
+
+	// skip the current word if it has already been worked on
+	if( this.wordFlags[this.currentTextIndex][this.currentWordIndex] ) {
+		// increment the global current word index and move on.
+		this.currentWordIndex++;
+		this._spellcheck();
+	} else {
+		var evalText = ww.getTextVal( this.currentTextIndex, this.currentWordIndex );
+		if( evalText ) {
+			this.controlWin.evaluatedText.value = evalText;
+			ww.setFocus( this.currentTextIndex, this.currentWordIndex );
+			this._getSuggestions( this.currentTextIndex, this.currentWordIndex );
+		}
+	}
+}
+
+function _getSuggestions( text_num, word_num ) {
+	this.controlWin.clearSuggestions();
+	// add suggestion in list for each suggested word.
+	// get the array of suggested words out of the
+	// three-dimensional array containing all suggestions.
+	var a_suggests = this.wordWin.suggestions[text_num][word_num];
+	if( a_suggests ) {
+		// got an array of suggestions.
+		for( var ii = 0; ii < a_suggests.length; ii++ ) {
+			this.controlWin.addSuggestion( a_suggests[ii] );
+		}
+	}
+	this.controlWin.selectDefaultSuggestion();
+}
+
+function _setAsIgnored( text_num, word_num, flag ) {
+	// set the UI
+	this.wordWin.removeFocus( text_num, word_num );
+	// do the bookkeeping
+	this.wordFlags[text_num][word_num] = flag;
+	return true;
+}
+
+function _getTotalReplaced() {
+	var i_replaced = 0;
+	for( var i = 0; i < this.wordFlags.length; i++ ) {
+		for( var j = 0; j < this.wordFlags[i].length; j++ ) {
+			if(( this.wordFlags[i][j] == this.replWordFlag )
+			|| ( this.wordFlags[i][j] == this.replAllFlag )
+			|| ( this.wordFlags[i][j] == this.fromReplAll )) {
+				i_replaced++;
+			}
+		}
+	}
+	return i_replaced;
+}
+
+function _setWordText( text_num, word_num, newText, flag ) {
+	// set the UI and form inputs
+	this.wordWin.setText( text_num, word_num, newText );
+	// keep track of what happened to this word:
+	this.wordFlags[text_num][word_num] = flag;
+	return true;
+}
+
+function _getFormInputs( inputPattern ) {
+	var inputs = new Array();
+	for( var i = 0; i < document.forms.length; i++ ) {
+		for( var j = 0; j < document.forms[i].elements.length; j++ ) {
+			if( document.forms[i].elements[j].type.match( inputPattern )) {
+				inputs[inputs.length] = document.forms[i].elements[j];
+			}
+		}
+	}
+	return inputs;
+}

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,71 +1,71 @@
-
-<script>
-
-var wordWindow = null;
-var controlWindow = null;
-
-function init_spell( spellerWindow ) {
-
-	if( spellerWindow ) {
-		if( spellerWindow.windowType == "wordWindow" ) {
-			wordWindow = spellerWindow;
-		} else if ( spellerWindow.windowType == "controlWindow" ) {
-			controlWindow = spellerWindow;
-		}
-	}
-
-	if( controlWindow && wordWindow ) {
-		// populate the speller object and start it off!
-		var speller = opener.speller;
-		wordWindow.speller = speller;
-		speller.startCheck( wordWindow, controlWindow );
-	}
-}
-
-// encodeForPost
-function encodeForPost( str ) {
-	var s = new String( str );
-	s = encodeURIComponent( s );
-	// additionally encode single quotes to evade any PHP
-	// magic_quotes_gpc setting (it inserts escape characters and
-	// therefore skews the btye positions of misspelled words)
-	return s.replace( /\'/g, '%27' );
-}
-
-// post the text area data to the script that populates the speller
-function postWords() {
-	var bodyDoc = window.frames[0].document;
-	bodyDoc.open();
-	bodyDoc.write('<html>');
-	bodyDoc.write('<meta http-equiv="Content-Type" content="text/html; charset=utf-8">');
-	bodyDoc.write('<link rel="stylesheet" type="text/css" href="spellerStyle.css"/>');
-	if (opener) {
-		var speller = opener.speller;
-		bodyDoc.write('<body class="normalText" onLoad="document.forms[0].submit();">');
-		bodyDoc.write('<p>' + window.parent.FCKLang.DlgSpellProgress + '<\/p>');		// by FredCK
-		bodyDoc.write('<form action="'+speller.spellCheckScript+'" method="post">');
-		for( var i = 0; i < speller.textInputs.length; i++ ) {
-			bodyDoc.write('<input type="hidden" name="textinputs[]" value="'+encodeForPost(speller.textInputs[i].value)+'">');
-		}
-		bodyDoc.write('<\/form>');
-		bodyDoc.write('<\/body>');
-	} else {
-		bodyDoc.write('<body class="normalText">');
-		bodyDoc.write('<p><b>This page cannot be displayed<\/b><\/p><p>The window was not opened from another window.<\/p>');
-		bodyDoc.write('<\/body>');
-	}
-	bodyDoc.write('<\/html>');
-	bodyDoc.close();
-}
-</script>
-
-<html>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<head>
-<title>Speller Pages</title>
-</head>
-<frameset rows="*,201" onLoad="postWords();">
-<frame src="blank.html">
-<frame src="controls.html">
-</frameset>
-</html>
+
+<script>
+
+var wordWindow = null;
+var controlWindow = null;
+
+function init_spell( spellerWindow ) {
+
+	if( spellerWindow ) {
+		if( spellerWindow.windowType == "wordWindow" ) {
+			wordWindow = spellerWindow;
+		} else if ( spellerWindow.windowType == "controlWindow" ) {
+			controlWindow = spellerWindow;
+		}
+	}
+
+	if( controlWindow && wordWindow ) {
+		// populate the speller object and start it off!
+		var speller = opener.speller;
+		wordWindow.speller = speller;
+		speller.startCheck( wordWindow, controlWindow );
+	}
+}
+
+// encodeForPost
+function encodeForPost( str ) {
+	var s = new String( str );
+	s = encodeURIComponent( s );
+	// additionally encode single quotes to evade any PHP
+	// magic_quotes_gpc setting (it inserts escape characters and
+	// therefore skews the btye positions of misspelled words)
+	return s.replace( /\'/g, '%27' );
+}
+
+// post the text area data to the script that populates the speller
+function postWords() {
+	var bodyDoc = window.frames[0].document;
+	bodyDoc.open();
+	bodyDoc.write('<html>');
+	bodyDoc.write('<meta http-equiv="Content-Type" content="text/html; charset=utf-8">');
+	bodyDoc.write('<link rel="stylesheet" type="text/css" href="spellerStyle.css"/>');
+	if (opener) {
+		var speller = opener.speller;
+		bodyDoc.write('<body class="normalText" onLoad="document.forms[0].submit();">');
+		bodyDoc.write('<p>' + window.parent.FCKLang.DlgSpellProgress + '<\/p>');		// by FredCK
+		bodyDoc.write('<form action="'+speller.spellCheckScript+'" method="post">');
+		for( var i = 0; i < speller.textInputs.length; i++ ) {
+			bodyDoc.write('<input type="hidden" name="textinputs[]" value="'+encodeForPost(speller.textInputs[i].value)+'">');
+		}
+		bodyDoc.write('<\/form>');
+		bodyDoc.write('<\/body>');
+	} else {
+		bodyDoc.write('<body class="normalText">');
+		bodyDoc.write('<p><b>This page cannot be displayed<\/b><\/p><p>The window was not opened from another window.<\/p>');
+		bodyDoc.write('<\/body>');
+	}
+	bodyDoc.write('<\/html>');
+	bodyDoc.close();
+}
+</script>
+
+<html>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<head>
+<title>Speller Pages</title>
+</head>
+<frameset rows="*,201" onLoad="postWords();">
+<frame src="blank.html">
+<frame src="controls.html">
+</frameset>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,49 +1,49 @@
-.blend {
-	font-family: courier new;
-	font-size: 10pt;
-	border: 0;
-	margin-bottom:-1;
-}
-.normalLabel {
-	font-size:8pt;
-}
-.normalText {
-	font-family:arial, helvetica, sans-serif;
-	font-size:10pt;
-	color:000000;
-	background-color:FFFFFF;
-}
-.plainText {
-	font-family: courier new, courier, monospace;
-	font-size: 10pt;
-	color:000000;
-	background-color:FFFFFF;
-}
-.controlWindowBody {
-	font-family:arial, helvetica, sans-serif;
-	font-size:8pt;
-	padding: 7px ;		/* by FredCK */
-	margin: 0px ;		/* by FredCK */
-	/* color:000000;				by FredCK */
-	/* background-color:DADADA;		by FredCK */
-}
-.readonlyInput {
-	background-color:DADADA;
-	color:000000;
-	font-size:8pt;
-	width:392px;
-}
-.textDefault {
-	font-size:8pt;
-	width: 200px;
-}
-.buttonDefault {
-	width:90px;
-	height:22px;
-	font-size:8pt;
-}
-.suggSlct {
-	width:200px;
-	margin-top:2;
-	font-size:8pt;
-}
+.blend {
+	font-family: courier new;
+	font-size: 10pt;
+	border: 0;
+	margin-bottom:-1;
+}
+.normalLabel {
+	font-size:8pt;
+}
+.normalText {
+	font-family:arial, helvetica, sans-serif;
+	font-size:10pt;
+	color:000000;
+	background-color:FFFFFF;
+}
+.plainText {
+	font-family: courier new, courier, monospace;
+	font-size: 10pt;
+	color:000000;
+	background-color:FFFFFF;
+}
+.controlWindowBody {
+	font-family:arial, helvetica, sans-serif;
+	font-size:8pt;
+	padding: 7px ;		/* by FredCK */
+	margin: 0px ;		/* by FredCK */
+	/* color:000000;				by FredCK */
+	/* background-color:DADADA;		by FredCK */
+}
+.readonlyInput {
+	background-color:DADADA;
+	color:000000;
+	font-size:8pt;
+	width:392px;
+}
+.textDefault {
+	font-size:8pt;
+	width: 200px;
+}
+.buttonDefault {
+	width:90px;
+	height:22px;
+	font-size:8pt;
+}
+.suggSlct {
+	width:200px;
+	margin-top:2;
+	font-size:8pt;
+}

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,272 +1,272 @@
-////////////////////////////////////////////////////
-// wordWindow object
-////////////////////////////////////////////////////
-function wordWindow() {
-	// private properties
-	this._forms = [];
-
-	// private methods
-	this._getWordObject = _getWordObject;
-	//this._getSpellerObject = _getSpellerObject;
-	this._wordInputStr = _wordInputStr;
-	this._adjustIndexes = _adjustIndexes;
-	this._isWordChar = _isWordChar;
-	this._lastPos = _lastPos;
-
-	// public properties
-	this.wordChar = /[a-zA-Z]/;
-	this.windowType = "wordWindow";
-	this.originalSpellings = new Array();
-	this.suggestions = new Array();
-	this.checkWordBgColor = "pink";
-	this.normWordBgColor = "white";
-	this.text = "";
-	this.textInputs = new Array();
-	this.indexes = new Array();
-	//this.speller = this._getSpellerObject();
-
-	// public methods
-	this.resetForm = resetForm;
-	this.totalMisspellings = totalMisspellings;
-	this.totalWords = totalWords;
-	this.totalPreviousWords = totalPreviousWords;
-	//this.getTextObjectArray = getTextObjectArray;
-	this.getTextVal = getTextVal;
-	this.setFocus = setFocus;
-	this.removeFocus = removeFocus;
-	this.setText = setText;
-	//this.getTotalWords = getTotalWords;
-	this.writeBody = writeBody;
-	this.printForHtml = printForHtml;
-}
-
-function resetForm() {
-	if( this._forms ) {
-		for( var i = 0; i < this._forms.length; i++ ) {
-			this._forms[i].reset();
-		}
-	}
-	return true;
-}
-
-function totalMisspellings() {
-	var total_words = 0;
-	for( var i = 0; i < this.textInputs.length; i++ ) {
-		total_words += this.totalWords( i );
-	}
-	return total_words;
-}
-
-function totalWords( textIndex ) {
-	return this.originalSpellings[textIndex].length;
-}
-
-function totalPreviousWords( textIndex, wordIndex ) {
-	var total_words = 0;
-	for( var i = 0; i <= textIndex; i++ ) {
-		for( var j = 0; j < this.totalWords( i ); j++ ) {
-			if( i == textIndex && j == wordIndex ) {
-				break;
-			} else {
-				total_words++;
-			}
-		}
-	}
-	return total_words;
-}
-
-//function getTextObjectArray() {
-//	return this._form.elements;
-//}
-
-function getTextVal( textIndex, wordIndex ) {
-	var word = this._getWordObject( textIndex, wordIndex );
-	if( word ) {
-		return word.value;
-	}
-}
-
-function setFocus( textIndex, wordIndex ) {
-	var word = this._getWordObject( textIndex, wordIndex );
-	if( word ) {
-		if( word.type == "text" ) {
-			word.focus();
-			word.style.backgroundColor = this.checkWordBgColor;
-		}
-	}
-}
-
-function removeFocus( textIndex, wordIndex ) {
-	var word = this._getWordObject( textIndex, wordIndex );
-	if( word ) {
-		if( word.type == "text" ) {
-			word.blur();
-			word.style.backgroundColor = this.normWordBgColor;
-		}
-	}
-}
-
-function setText( textIndex, wordIndex, newText ) {
-	var word = this._getWordObject( textIndex, wordIndex );
-	var beginStr;
-	var endStr;
-	if( word ) {
-		var pos = this.indexes[textIndex][wordIndex];
-		var oldText = word.value;
-		// update the text given the index of the string
-		beginStr = this.textInputs[textIndex].substring( 0, pos );
-		endStr = this.textInputs[textIndex].substring(
-			pos + oldText.length,
-			this.textInputs[textIndex].length
-		);
-		this.textInputs[textIndex] = beginStr + newText + endStr;
-
-		// adjust the indexes on the stack given the differences in
-		// length between the new word and old word.
-		var lengthDiff = newText.length - oldText.length;
-		this._adjustIndexes( textIndex, wordIndex, lengthDiff );
-
-		word.size = newText.length;
-		word.value = newText;
-		this.removeFocus( textIndex, wordIndex );
-	}
-}
-
-
-function writeBody() {
-	var d = window.document;
-	var is_html = false;
-
-	d.open();
-
-	// iterate through each text input.
-	for( var txtid = 0; txtid < this.textInputs.length; txtid++ ) {
-		var end_idx = 0;
-		var begin_idx = 0;
-		d.writeln( '<form name="textInput'+txtid+'">' );
-		var wordtxt = this.textInputs[txtid];
-		this.indexes[txtid] = [];
-
-		if( wordtxt ) {
-			var orig = this.originalSpellings[txtid];
-			if( !orig ) break;
-
-			//!!! plain text, or HTML mode?
-			d.writeln( '<div class="plainText">' );
-			// iterate through each occurrence of a misspelled word.
-			for( var i = 0; i < orig.length; i++ ) {
-				// find the position of the current misspelled word,
-				// starting at the last misspelled word.
-				// and keep looking if it's a substring of another word
-				do {
-					begin_idx = wordtxt.indexOf( orig[i], end_idx );
-					end_idx = begin_idx + orig[i].length;
-					// word not found? messed up!
-					if( begin_idx == -1 ) break;
-					// look at the characters immediately before and after
-					// the word. If they are word characters we'll keep looking.
-					var before_char = wordtxt.charAt( begin_idx - 1 );
-					var after_char = wordtxt.charAt( end_idx );
-				} while (
-					this._isWordChar( before_char )
-					|| this._isWordChar( after_char )
-				);
-
-				// keep track of its position in the original text.
-				this.indexes[txtid][i] = begin_idx;
-
-				// write out the characters before the current misspelled word
-				for( var j = this._lastPos( txtid, i ); j < begin_idx; j++ ) {
-					// !!! html mode? make it html compatible
-					d.write( this.printForHtml( wordtxt.charAt( j )));
-				}
-
-				// write out the misspelled word.
-				d.write( this._wordInputStr( orig[i] ));
-
-				// if it's the last word, write out the rest of the text
-				if( i == orig.length-1 ){
-					d.write( printForHtml( wordtxt.substr( end_idx )));
-				}
-			}
-
-			d.writeln( '</div>' );
-
-		}
-		d.writeln( '</form>' );
-	}
-	//for ( var j = 0; j < d.forms.length; j++ ) {
-	//	alert( d.forms[j].name );
-	//	for( var k = 0; k < d.forms[j].elements.length; k++ ) {
-	//		alert( d.forms[j].elements[k].name + ": " + d.forms[j].elements[k].value );
-	//	}
-	//}
-
-	// set the _forms property
-	this._forms = d.forms;
-	d.close();
-}
-
-// return the character index in the full text after the last word we evaluated
-function _lastPos( txtid, idx ) {
-	if( idx > 0 )
-		return this.indexes[txtid][idx-1] + this.originalSpellings[txtid][idx-1].length;
-	else
-		return 0;
-}
-
-function printForHtml( n ) {
-	return n ;		// by FredCK
-/*
-	var htmlstr = n;
-	if( htmlstr.length == 1 ) {
-		// do simple case statement if it's just one character
-		switch ( n ) {
-			case "\n":
-				htmlstr = '<br/>';
-				break;
-			case "<":
-				htmlstr = '&lt;';
-				break;
-			case ">":
-				htmlstr = '&gt;';
-				break;
-		}
-		return htmlstr;
-	} else {
-		htmlstr = htmlstr.replace( /</g, '&lt' );
-		htmlstr = htmlstr.replace( />/g, '&gt' );
-		htmlstr = htmlstr.replace( /\n/g, '<br/>' );
-		return htmlstr;
-	}
-*/
-}
-
-function _isWordChar( letter ) {
-	if( letter.search( this.wordChar ) == -1 ) {
-		return false;
-	} else {
-		return true;
-	}
-}
-
-function _getWordObject( textIndex, wordIndex ) {
-	if( this._forms[textIndex] ) {
-		if( this._forms[textIndex].elements[wordIndex] ) {
-			return this._forms[textIndex].elements[wordIndex];
-		}
-	}
-	return null;
-}
-
-function _wordInputStr( word ) {
-	var str = '<input readonly ';
-	str += 'class="blend" type="text" value="' + word + '" size="' + word.length + '">';
-	return str;
-}
-
-function _adjustIndexes( textIndex, wordIndex, lengthDiff ) {
-	for( var i = wordIndex + 1; i < this.originalSpellings[textIndex].length; i++ ) {
-		this.indexes[textIndex][i] = this.indexes[textIndex][i] + lengthDiff;
-	}
-}
+////////////////////////////////////////////////////
+// wordWindow object
+////////////////////////////////////////////////////
+function wordWindow() {
+	// private properties
+	this._forms = [];
+
+	// private methods
+	this._getWordObject = _getWordObject;
+	//this._getSpellerObject = _getSpellerObject;
+	this._wordInputStr = _wordInputStr;
+	this._adjustIndexes = _adjustIndexes;
+	this._isWordChar = _isWordChar;
+	this._lastPos = _lastPos;
+
+	// public properties
+	this.wordChar = /[a-zA-Z]/;
+	this.windowType = "wordWindow";
+	this.originalSpellings = new Array();
+	this.suggestions = new Array();
+	this.checkWordBgColor = "pink";
+	this.normWordBgColor = "white";
+	this.text = "";
+	this.textInputs = new Array();
+	this.indexes = new Array();
+	//this.speller = this._getSpellerObject();
+
+	// public methods
+	this.resetForm = resetForm;
+	this.totalMisspellings = totalMisspellings;
+	this.totalWords = totalWords;
+	this.totalPreviousWords = totalPreviousWords;
+	//this.getTextObjectArray = getTextObjectArray;
+	this.getTextVal = getTextVal;
+	this.setFocus = setFocus;
+	this.removeFocus = removeFocus;
+	this.setText = setText;
+	//this.getTotalWords = getTotalWords;
+	this.writeBody = writeBody;
+	this.printForHtml = printForHtml;
+}
+
+function resetForm() {
+	if( this._forms ) {
+		for( var i = 0; i < this._forms.length; i++ ) {
+			this._forms[i].reset();
+		}
+	}
+	return true;
+}
+
+function totalMisspellings() {
+	var total_words = 0;
+	for( var i = 0; i < this.textInputs.length; i++ ) {
+		total_words += this.totalWords( i );
+	}
+	return total_words;
+}
+
+function totalWords( textIndex ) {
+	return this.originalSpellings[textIndex].length;
+}
+
+function totalPreviousWords( textIndex, wordIndex ) {
+	var total_words = 0;
+	for( var i = 0; i <= textIndex; i++ ) {
+		for( var j = 0; j < this.totalWords( i ); j++ ) {
+			if( i == textIndex && j == wordIndex ) {
+				break;
+			} else {
+				total_words++;
+			}
+		}
+	}
+	return total_words;
+}
+
+//function getTextObjectArray() {
+//	return this._form.elements;
+//}
+
+function getTextVal( textIndex, wordIndex ) {
+	var word = this._getWordObject( textIndex, wordIndex );
+	if( word ) {
+		return word.value;
+	}
+}
+
+function setFocus( textIndex, wordIndex ) {
+	var word = this._getWordObject( textIndex, wordIndex );
+	if( word ) {
+		if( word.type == "text" ) {
+			word.focus();
+			word.style.backgroundColor = this.checkWordBgColor;
+		}
+	}
+}
+
+function removeFocus( textIndex, wordIndex ) {
+	var word = this._getWordObject( textIndex, wordIndex );
+	if( word ) {
+		if( word.type == "text" ) {
+			word.blur();
+			word.style.backgroundColor = this.normWordBgColor;
+		}
+	}
+}
+
+function setText( textIndex, wordIndex, newText ) {
+	var word = this._getWordObject( textIndex, wordIndex );
+	var beginStr;
+	var endStr;
+	if( word ) {
+		var pos = this.indexes[textIndex][wordIndex];
+		var oldText = word.value;
+		// update the text given the index of the string
+		beginStr = this.textInputs[textIndex].substring( 0, pos );
+		endStr = this.textInputs[textIndex].substring(
+			pos + oldText.length,
+			this.textInputs[textIndex].length
+		);
+		this.textInputs[textIndex] = beginStr + newText + endStr;
+
+		// adjust the indexes on the stack given the differences in
+		// length between the new word and old word.
+		var lengthDiff = newText.length - oldText.length;
+		this._adjustIndexes( textIndex, wordIndex, lengthDiff );
+
+		word.size = newText.length;
+		word.value = newText;
+		this.removeFocus( textIndex, wordIndex );
+	}
+}
+
+
+function writeBody() {
+	var d = window.document;
+	var is_html = false;
+
+	d.open();
+
+	// iterate through each text input.
+	for( var txtid = 0; txtid < this.textInputs.length; txtid++ ) {
+		var end_idx = 0;
+		var begin_idx = 0;
+		d.writeln( '<form name="textInput'+txtid+'">' );
+		var wordtxt = this.textInputs[txtid];
+		this.indexes[txtid] = [];
+
+		if( wordtxt ) {
+			var orig = this.originalSpellings[txtid];
+			if( !orig ) break;
+
+			//!!! plain text, or HTML mode?
+			d.writeln( '<div class="plainText">' );
+			// iterate through each occurrence of a misspelled word.
+			for( var i = 0; i < orig.length; i++ ) {
+				// find the position of the current misspelled word,
+				// starting at the last misspelled word.
+				// and keep looking if it's a substring of another word
+				do {
+					begin_idx = wordtxt.indexOf( orig[i], end_idx );
+					end_idx = begin_idx + orig[i].length;
+					// word not found? messed up!
+					if( begin_idx == -1 ) break;
+					// look at the characters immediately before and after
+					// the word. If they are word characters we'll keep looking.
+					var before_char = wordtxt.charAt( begin_idx - 1 );
+					var after_char = wordtxt.charAt( end_idx );
+				} while (
+					this._isWordChar( before_char )
+					|| this._isWordChar( after_char )
+				);
+
+				// keep track of its position in the original text.
+				this.indexes[txtid][i] = begin_idx;
+
+				// write out the characters before the current misspelled word
+				for( var j = this._lastPos( txtid, i ); j < begin_idx; j++ ) {
+					// !!! html mode? make it html compatible
+					d.write( this.printForHtml( wordtxt.charAt( j )));
+				}
+
+				// write out the misspelled word.
+				d.write( this._wordInputStr( orig[i] ));
+
+				// if it's the last word, write out the rest of the text
+				if( i == orig.length-1 ){
+					d.write( printForHtml( wordtxt.substr( end_idx )));
+				}
+			}
+
+			d.writeln( '</div>' );
+
+		}
+		d.writeln( '</form>' );
+	}
+	//for ( var j = 0; j < d.forms.length; j++ ) {
+	//	alert( d.forms[j].name );
+	//	for( var k = 0; k < d.forms[j].elements.length; k++ ) {
+	//		alert( d.forms[j].elements[k].name + ": " + d.forms[j].elements[k].value );
+	//	}
+	//}
+
+	// set the _forms property
+	this._forms = d.forms;
+	d.close();
+}
+
+// return the character index in the full text after the last word we evaluated
+function _lastPos( txtid, idx ) {
+	if( idx > 0 )
+		return this.indexes[txtid][idx-1] + this.originalSpellings[txtid][idx-1].length;
+	else
+		return 0;
+}
+
+function printForHtml( n ) {
+	return n ;		// by FredCK
+/*
+	var htmlstr = n;
+	if( htmlstr.length == 1 ) {
+		// do simple case statement if it's just one character
+		switch ( n ) {
+			case "\n":
+				htmlstr = '<br/>';
+				break;
+			case "<":
+				htmlstr = '&lt;';
+				break;
+			case ">":
+				htmlstr = '&gt;';
+				break;
+		}
+		return htmlstr;
+	} else {
+		htmlstr = htmlstr.replace( /</g, '&lt' );
+		htmlstr = htmlstr.replace( />/g, '&gt' );
+		htmlstr = htmlstr.replace( /\n/g, '<br/>' );
+		return htmlstr;
+	}
+*/
+}
+
+function _isWordChar( letter ) {
+	if( letter.search( this.wordChar ) == -1 ) {
+		return false;
+	} else {
+		return true;
+	}
+}
+
+function _getWordObject( textIndex, wordIndex ) {
+	if( this._forms[textIndex] ) {
+		if( this._forms[textIndex].elements[wordIndex] ) {
+			return this._forms[textIndex].elements[wordIndex];
+		}
+	}
+	return null;
+}
+
+function _wordInputStr( word ) {
+	var str = '<input readonly ';
+	str += 'class="blend" type="text" value="' + word + '" size="' + word.length + '">';
+	return str;
+}
+
+function _adjustIndexes( textIndex, wordIndex, lengthDiff ) {
+	for( var i = wordIndex + 1; i < this.originalSpellings[textIndex].length; i++ ) {
+		this.indexes[textIndex][i] = this.indexes[textIndex][i] + lengthDiff;
+	}
+}

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_spellerpages.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_spellerpages.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,70 +1,70 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Spell Check dialog window.
--->
-<html>
-	<head>
-		<title>Spell Check</title>
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-		<meta content="noindex, nofollow" name="robots">
-		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-		<script src="fck_spellerpages/spellerpages/spellChecker.js"></script>
-		<script type="text/javascript">
-
-var oEditor = window.parent.InnerDialogLoaded() ;
-var FCKLang = oEditor.FCKLang ;
-
-window.onload = function()
-{
-	document.getElementById('txtHtml').value = oEditor.FCK.EditorDocument.body.innerHTML ;
-
-	var oSpeller = new spellChecker( document.getElementById('txtHtml') ) ;
-	oSpeller.spellCheckScript = oEditor.FCKConfig.SpellerPagesServerScript || 'server-scripts/spellchecker.php' ;
-	oSpeller.OnFinished = oSpeller_OnFinished ;
-	oSpeller.openChecker() ;
-}
-
-function OnSpellerControlsLoad( controlsWindow )
-{
-	// Translate the dialog box texts
-	oEditor.FCKLanguageManager.TranslatePage( controlsWindow.document ) ;
-}
-
-function oSpeller_OnFinished( numberOCorrections )
-{
-	if ( numberOCorrections > 0 )
-	{
-		oEditor.FCKUndo.SaveUndoStep() ;
-		oEditor.FCK.EditorDocument.body.innerHTML = document.getElementById('txtHtml').value ;
-		if ( oEditor.FCKBrowserInfo.IsIE )
-			oEditor.FCKSelection.Collapse( true ) ;
-	}
-	window.parent.Cancel() ;
-}
-
-		</script>
-	</head>
-	<body style="OVERFLOW: hidden" scroll="no" style="padding:0px;">
-		<input type="hidden" id="txtHtml" value="">
-		<iframe id="frmSpell" src="javascript:void(0)" name="spellchecker" width="100%" height="100%" frameborder="0"></iframe>
-	</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Spell Check dialog window.
+-->
+<html>
+	<head>
+		<title>Spell Check</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script src="fck_spellerpages/spellerpages/spellChecker.js"></script>
+		<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+var FCKLang = oEditor.FCKLang ;
+
+window.onload = function()
+{
+	document.getElementById('txtHtml').value = oEditor.FCK.EditorDocument.body.innerHTML ;
+
+	var oSpeller = new spellChecker( document.getElementById('txtHtml') ) ;
+	oSpeller.spellCheckScript = oEditor.FCKConfig.SpellerPagesServerScript || 'server-scripts/spellchecker.php' ;
+	oSpeller.OnFinished = oSpeller_OnFinished ;
+	oSpeller.openChecker() ;
+}
+
+function OnSpellerControlsLoad( controlsWindow )
+{
+	// Translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage( controlsWindow.document ) ;
+}
+
+function oSpeller_OnFinished( numberOCorrections )
+{
+	if ( numberOCorrections > 0 )
+	{
+		oEditor.FCKUndo.SaveUndoStep() ;
+		oEditor.FCK.EditorDocument.body.innerHTML = document.getElementById('txtHtml').value ;
+		if ( oEditor.FCKBrowserInfo.IsIE )
+			oEditor.FCKSelection.Collapse( true ) ;
+	}
+	window.parent.Cancel() ;
+}
+
+		</script>
+	</head>
+	<body style="OVERFLOW: hidden" scroll="no" style="padding:0px;">
+		<input type="hidden" id="txtHtml" value="">
+		<iframe id="frmSpell" src="javascript:void(0)" name="spellchecker" width="100%" height="100%" frameborder="0"></iframe>
+	</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_table.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_table.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_table.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,298 +1,298 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Table dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>Table Properties</title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<meta name="robots" content="noindex, nofollow" />
-	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-	<script type="text/javascript">
-
-var dialog	= window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-var dialogArguments = dialog.Args() ;
-
-// Gets the document DOM
-var oDOM = oEditor.FCK.EditorDocument ;
-
-// Gets the table if there is one selected.
-var table ;
-var e = dialog.Selection.GetSelectedElement() ;
-
-if ( ( !e && document.location.search.substr(1) == 'Parent' ) || ( e && e.tagName != 'TABLE' ) )
-	e = oEditor.FCKSelection.MoveToAncestorNode( 'TABLE' ) ;
-
-if ( e && e.tagName == "TABLE" )
-	table = e ;
-
-// Fired when the window loading process is finished. It sets the fields with the
-// actual values if a table is selected in the editor.
-window.onload = function()
-{
-	// First of all, translate the dialog box texts
-	oEditor.FCKLanguageManager.TranslatePage(document) ;
-
-	if (table)
-	{
-		document.getElementById('txtRows').value    = table.rows.length ;
-		document.getElementById('txtColumns').value = table.rows[0].cells.length ;
-
-		// Gets the value from the Width or the Style attribute
-		var iWidth  = (table.style.width  ? table.style.width  : table.width ) ;
-		var iHeight = (table.style.height ? table.style.height : table.height ) ;
-
-		if (iWidth.indexOf('%') >= 0)			// Percentual = %
-		{
-			iWidth = parseInt( iWidth.substr(0,iWidth.length - 1), 10 ) ;
-			document.getElementById('selWidthType').value = "percent" ;
-		}
-		else if (iWidth.indexOf('px') >= 0)		// Style Pixel = px
-		{																										  //
-			iWidth = iWidth.substr(0,iWidth.length - 2);
-			document.getElementById('selWidthType').value = "pixels" ;
-		}
-
-		if (iHeight && iHeight.indexOf('px') >= 0)		// Style Pixel = px
-			iHeight = iHeight.substr(0,iHeight.length - 2);
-
-		document.getElementById('txtWidth').value		= iWidth || '' ;
-		document.getElementById('txtHeight').value		= iHeight || '' ;
-		document.getElementById('txtBorder').value		= GetAttribute( table, 'border', '' ) ;
-		document.getElementById('selAlignment').value	= GetAttribute( table, 'align', '' ) ;
-		document.getElementById('txtCellPadding').value	= GetAttribute( table, 'cellPadding', '' ) ;
-		document.getElementById('txtCellSpacing').value	= GetAttribute( table, 'cellSpacing', '' ) ;
-		document.getElementById('txtSummary').value     = GetAttribute( table, 'summary', '' ) ;
-//		document.getElementById('cmbFontStyle').value	= table.className ;
-
-		var eCaption = oEditor.FCKDomTools.GetFirstChild( table, 'CAPTION' ) ;
-		if ( eCaption ) document.getElementById('txtCaption').value = eCaption.innerHTML ;
-
-		document.getElementById('txtRows').disabled    = true ;
-		document.getElementById('txtColumns').disabled = true ;
-		SelectField( 'txtWidth' ) ;
-	}
-	else
-		SelectField( 'txtRows' ) ;
-
-	dialog.SetOkButton( true ) ;
-	dialog.SetAutoSize( true ) ;
-}
-
-// Fired when the user press the OK button
-function Ok()
-{
-	var bExists = ( table != null ) ;
-
-	if ( ! bExists )
-		table = oEditor.FCK.EditorDocument.createElement( "TABLE" ) ;
-
-	// Removes the Width and Height styles
-	if ( bExists && table.style.width )		table.style.width = null ; //.removeAttribute("width") ;
-	if ( bExists && table.style.height )	table.style.height = null ; //.removeAttribute("height") ;
-
-	var sWidth = GetE('txtWidth').value ;
-	if ( sWidth.length > 0 && GetE('selWidthType').value == 'percent' )
-		sWidth += '%' ;
-
-	SetAttribute( table, 'width'		, sWidth ) ;
-	SetAttribute( table, 'height'		, GetE('txtHeight').value ) ;
-	SetAttribute( table, 'border'		, GetE('txtBorder').value ) ;
-	SetAttribute( table, 'align'		, GetE('selAlignment').value ) ;
-	SetAttribute( table, 'cellPadding'	, GetE('txtCellPadding').value ) ;
-	SetAttribute( table, 'cellSpacing'	, GetE('txtCellSpacing').value ) ;
-	SetAttribute( table, 'summary'		, GetE('txtSummary').value ) ;
-
-	var eCaption = oEditor.FCKDomTools.GetFirstChild( table, 'CAPTION' ) ;
-
-	if ( document.getElementById('txtCaption').value != '')
-	{
-		if ( !eCaption )
-		{
-			eCaption = oEditor.FCK.EditorDocument.createElement( 'CAPTION' ) ;
-			table.insertBefore( eCaption, table.firstChild ) ;
-		}
-
-		eCaption.innerHTML = document.getElementById('txtCaption').value ;
-	}
-	else if ( bExists && eCaption )
-	{
-		// TODO: It causes an IE internal error if using removeChild or
-		// table.deleteCaption() (see #505).
-		if ( oEditor.FCKBrowserInfo.IsIE )
-			eCaption.innerHTML = '' ;
-		else
-			eCaption.parentNode.removeChild( eCaption ) ;
-	}
-
-	if (! bExists)
-	{
-		var iRows = document.getElementById('txtRows').value ;
-		var iCols = document.getElementById('txtColumns').value ;
-
-		for ( var r = 0 ; r < iRows ; r++ )
-		{
-			var oRow = table.insertRow(-1) ;
-			for ( var c = 0 ; c < iCols ; c++ )
-			{
-				var oCell = oRow.insertCell(-1) ;
-				if ( oEditor.FCKBrowserInfo.IsGeckoLike )
-					oEditor.FCKTools.AppendBogusBr( oCell ) ;
-			}
-		}
-
-		oEditor.FCKUndo.SaveUndoStep() ;
-
-		oEditor.FCK.InsertElement( table ) ;
-	}
-
-	return true ;
-}
-
-	</script>
-</head>
-<body style="overflow: hidden">
-	<table id="otable" cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 100%">
-		<tr>
-			<td>
-				<table cellspacing="1" cellpadding="1" width="100%" border="0">
-					<tr>
-						<td valign="top">
-							<table cellspacing="0" cellpadding="0" border="0">
-								<tr>
-									<td>
-										<span fcklang="DlgTableRows">Rows</span>:</td>
-									<td>
-										&nbsp;<input id="txtRows" type="text" maxlength="3" size="2" value="3" name="txtRows"
-											onkeypress="return IsDigit(event);" /></td>
-								</tr>
-								<tr>
-									<td>
-										<span fcklang="DlgTableColumns">Columns</span>:</td>
-									<td>
-										&nbsp;<input id="txtColumns" type="text" maxlength="2" size="2" value="2" name="txtColumns"
-											onkeypress="return IsDigit(event);" /></td>
-								</tr>
-								<tr>
-									<td>
-										&nbsp;</td>
-									<td>
-										&nbsp;</td>
-								</tr>
-								<tr>
-									<td>
-										<span fcklang="DlgTableBorder">Border size</span>:</td>
-									<td>
-										&nbsp;<input id="txtBorder" type="text" maxlength="2" size="2" value="1" name="txtBorder"
-											onkeypress="return IsDigit(event);" /></td>
-								</tr>
-								<tr>
-									<td>
-										<span fcklang="DlgTableAlign">Alignment</span>:</td>
-									<td>
-										&nbsp;<select id="selAlignment" name="selAlignment">
-											<option fcklang="DlgTableAlignNotSet" value="" selected="selected">&lt;Not set&gt;</option>
-											<option fcklang="DlgTableAlignLeft" value="left">Left</option>
-											<option fcklang="DlgTableAlignCenter" value="center">Center</option>
-											<option fcklang="DlgTableAlignRight" value="right">Right</option>
-										</select></td>
-								</tr>
-							</table>
-						</td>
-						<td>
-							&nbsp;&nbsp;&nbsp;</td>
-						<td align="right" valign="top">
-							<table cellspacing="0" cellpadding="0" border="0">
-								<tr>
-									<td>
-										<span fcklang="DlgTableWidth">Width</span>:</td>
-									<td>
-										&nbsp;<input id="txtWidth" type="text" maxlength="4" size="3" value="200" name="txtWidth"
-											onkeypress="return IsDigit(event);" /></td>
-									<td>
-										&nbsp;<select id="selWidthType" name="selWidthType">
-											<option fcklang="DlgTableWidthPx" value="pixels" selected="selected">pixels</option>
-											<option fcklang="DlgTableWidthPc" value="percent">percent</option>
-										</select></td>
-								</tr>
-								<tr>
-									<td>
-										<span fcklang="DlgTableHeight">Height</span>:</td>
-									<td>
-										&nbsp;<input id="txtHeight" type="text" maxlength="4" size="3" name="txtHeight" onkeypress="return IsDigit(event);" /></td>
-									<td>
-										&nbsp;<span fcklang="DlgTableWidthPx">pixels</span></td>
-								</tr>
-								<tr>
-									<td>
-										&nbsp;</td>
-									<td>
-										&nbsp;</td>
-									<td>
-										&nbsp;</td>
-								</tr>
-								<tr>
-									<td nowrap="nowrap">
-										<span fcklang="DlgTableCellSpace">Cell spacing</span>:</td>
-									<td>
-										&nbsp;<input id="txtCellSpacing" type="text" maxlength="2" size="2" value="1" name="txtCellSpacing"
-											onkeypress="return IsDigit(event);" /></td>
-									<td>
-										&nbsp;</td>
-								</tr>
-								<tr>
-									<td nowrap="nowrap">
-										<span fcklang="DlgTableCellPad">Cell padding</span>:</td>
-									<td>
-										&nbsp;<input id="txtCellPadding" type="text" maxlength="2" size="2" value="1" name="txtCellPadding"
-											onkeypress="return IsDigit(event);" /></td>
-									<td>
-										&nbsp;</td>
-								</tr>
-							</table>
-						</td>
-					</tr>
-				</table>
-				<table cellspacing="0" cellpadding="0" width="100%" border="0">
-					<tr>
-						<td nowrap="nowrap">
-							<span fcklang="DlgTableCaption">Caption</span>:&nbsp;</td>
-						<td>
-							&nbsp;</td>
-						<td width="100%" nowrap="nowrap">
-							<input id="txtCaption" type="text" style="width: 100%" /></td>
-					</tr>
-					<tr>
-						<td nowrap="nowrap">
-							<span fcklang="DlgTableSummary">Summary</span>:&nbsp;</td>
-						<td>
-							&nbsp;</td>
-						<td width="100%" nowrap="nowrap">
-							<input id="txtSummary" type="text" style="width: 100%" /></td>
-					</tr>
-				</table>
-			</td>
-		</tr>
-	</table>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Table dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Table Properties</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+var dialogArguments = dialog.Args() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+// Gets the table if there is one selected.
+var table ;
+var e = dialog.Selection.GetSelectedElement() ;
+
+if ( ( !e && document.location.search.substr(1) == 'Parent' ) || ( e && e.tagName != 'TABLE' ) )
+	e = oEditor.FCKSelection.MoveToAncestorNode( 'TABLE' ) ;
+
+if ( e && e.tagName == "TABLE" )
+	table = e ;
+
+// Fired when the window loading process is finished. It sets the fields with the
+// actual values if a table is selected in the editor.
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if (table)
+	{
+		document.getElementById('txtRows').value    = table.rows.length ;
+		document.getElementById('txtColumns').value = table.rows[0].cells.length ;
+
+		// Gets the value from the Width or the Style attribute
+		var iWidth  = (table.style.width  ? table.style.width  : table.width ) ;
+		var iHeight = (table.style.height ? table.style.height : table.height ) ;
+
+		if (iWidth.indexOf('%') >= 0)			// Percentual = %
+		{
+			iWidth = parseInt( iWidth.substr(0,iWidth.length - 1), 10 ) ;
+			document.getElementById('selWidthType').value = "percent" ;
+		}
+		else if (iWidth.indexOf('px') >= 0)		// Style Pixel = px
+		{																										  //
+			iWidth = iWidth.substr(0,iWidth.length - 2);
+			document.getElementById('selWidthType').value = "pixels" ;
+		}
+
+		if (iHeight && iHeight.indexOf('px') >= 0)		// Style Pixel = px
+			iHeight = iHeight.substr(0,iHeight.length - 2);
+
+		document.getElementById('txtWidth').value		= iWidth || '' ;
+		document.getElementById('txtHeight').value		= iHeight || '' ;
+		document.getElementById('txtBorder').value		= GetAttribute( table, 'border', '' ) ;
+		document.getElementById('selAlignment').value	= GetAttribute( table, 'align', '' ) ;
+		document.getElementById('txtCellPadding').value	= GetAttribute( table, 'cellPadding', '' ) ;
+		document.getElementById('txtCellSpacing').value	= GetAttribute( table, 'cellSpacing', '' ) ;
+		document.getElementById('txtSummary').value     = GetAttribute( table, 'summary', '' ) ;
+//		document.getElementById('cmbFontStyle').value	= table.className ;
+
+		var eCaption = oEditor.FCKDomTools.GetFirstChild( table, 'CAPTION' ) ;
+		if ( eCaption ) document.getElementById('txtCaption').value = eCaption.innerHTML ;
+
+		document.getElementById('txtRows').disabled    = true ;
+		document.getElementById('txtColumns').disabled = true ;
+		SelectField( 'txtWidth' ) ;
+	}
+	else
+		SelectField( 'txtRows' ) ;
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+}
+
+// Fired when the user press the OK button
+function Ok()
+{
+	var bExists = ( table != null ) ;
+
+	if ( ! bExists )
+		table = oEditor.FCK.EditorDocument.createElement( "TABLE" ) ;
+
+	// Removes the Width and Height styles
+	if ( bExists && table.style.width )		table.style.width = null ; //.removeAttribute("width") ;
+	if ( bExists && table.style.height )	table.style.height = null ; //.removeAttribute("height") ;
+
+	var sWidth = GetE('txtWidth').value ;
+	if ( sWidth.length > 0 && GetE('selWidthType').value == 'percent' )
+		sWidth += '%' ;
+
+	SetAttribute( table, 'width'		, sWidth ) ;
+	SetAttribute( table, 'height'		, GetE('txtHeight').value ) ;
+	SetAttribute( table, 'border'		, GetE('txtBorder').value ) ;
+	SetAttribute( table, 'align'		, GetE('selAlignment').value ) ;
+	SetAttribute( table, 'cellPadding'	, GetE('txtCellPadding').value ) ;
+	SetAttribute( table, 'cellSpacing'	, GetE('txtCellSpacing').value ) ;
+	SetAttribute( table, 'summary'		, GetE('txtSummary').value ) ;
+
+	var eCaption = oEditor.FCKDomTools.GetFirstChild( table, 'CAPTION' ) ;
+
+	if ( document.getElementById('txtCaption').value != '')
+	{
+		if ( !eCaption )
+		{
+			eCaption = oEditor.FCK.EditorDocument.createElement( 'CAPTION' ) ;
+			table.insertBefore( eCaption, table.firstChild ) ;
+		}
+
+		eCaption.innerHTML = document.getElementById('txtCaption').value ;
+	}
+	else if ( bExists && eCaption )
+	{
+		// TODO: It causes an IE internal error if using removeChild or
+		// table.deleteCaption() (see #505).
+		if ( oEditor.FCKBrowserInfo.IsIE )
+			eCaption.innerHTML = '' ;
+		else
+			eCaption.parentNode.removeChild( eCaption ) ;
+	}
+
+	if (! bExists)
+	{
+		var iRows = document.getElementById('txtRows').value ;
+		var iCols = document.getElementById('txtColumns').value ;
+
+		for ( var r = 0 ; r < iRows ; r++ )
+		{
+			var oRow = table.insertRow(-1) ;
+			for ( var c = 0 ; c < iCols ; c++ )
+			{
+				var oCell = oRow.insertCell(-1) ;
+				if ( oEditor.FCKBrowserInfo.IsGeckoLike )
+					oEditor.FCKTools.AppendBogusBr( oCell ) ;
+			}
+		}
+
+		oEditor.FCKUndo.SaveUndoStep() ;
+
+		oEditor.FCK.InsertElement( table ) ;
+	}
+
+	return true ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table id="otable" cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 100%">
+		<tr>
+			<td>
+				<table cellspacing="1" cellpadding="1" width="100%" border="0">
+					<tr>
+						<td valign="top">
+							<table cellspacing="0" cellpadding="0" border="0">
+								<tr>
+									<td>
+										<span fcklang="DlgTableRows">Rows</span>:</td>
+									<td>
+										&nbsp;<input id="txtRows" type="text" maxlength="3" size="2" value="3" name="txtRows"
+											onkeypress="return IsDigit(event);" /></td>
+								</tr>
+								<tr>
+									<td>
+										<span fcklang="DlgTableColumns">Columns</span>:</td>
+									<td>
+										&nbsp;<input id="txtColumns" type="text" maxlength="2" size="2" value="2" name="txtColumns"
+											onkeypress="return IsDigit(event);" /></td>
+								</tr>
+								<tr>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+								</tr>
+								<tr>
+									<td>
+										<span fcklang="DlgTableBorder">Border size</span>:</td>
+									<td>
+										&nbsp;<input id="txtBorder" type="text" maxlength="2" size="2" value="1" name="txtBorder"
+											onkeypress="return IsDigit(event);" /></td>
+								</tr>
+								<tr>
+									<td>
+										<span fcklang="DlgTableAlign">Alignment</span>:</td>
+									<td>
+										&nbsp;<select id="selAlignment" name="selAlignment">
+											<option fcklang="DlgTableAlignNotSet" value="" selected="selected">&lt;Not set&gt;</option>
+											<option fcklang="DlgTableAlignLeft" value="left">Left</option>
+											<option fcklang="DlgTableAlignCenter" value="center">Center</option>
+											<option fcklang="DlgTableAlignRight" value="right">Right</option>
+										</select></td>
+								</tr>
+							</table>
+						</td>
+						<td>
+							&nbsp;&nbsp;&nbsp;</td>
+						<td align="right" valign="top">
+							<table cellspacing="0" cellpadding="0" border="0">
+								<tr>
+									<td>
+										<span fcklang="DlgTableWidth">Width</span>:</td>
+									<td>
+										&nbsp;<input id="txtWidth" type="text" maxlength="4" size="3" value="200" name="txtWidth"
+											onkeypress="return IsDigit(event);" /></td>
+									<td>
+										&nbsp;<select id="selWidthType" name="selWidthType">
+											<option fcklang="DlgTableWidthPx" value="pixels" selected="selected">pixels</option>
+											<option fcklang="DlgTableWidthPc" value="percent">percent</option>
+										</select></td>
+								</tr>
+								<tr>
+									<td>
+										<span fcklang="DlgTableHeight">Height</span>:</td>
+									<td>
+										&nbsp;<input id="txtHeight" type="text" maxlength="4" size="3" name="txtHeight" onkeypress="return IsDigit(event);" /></td>
+									<td>
+										&nbsp;<span fcklang="DlgTableWidthPx">pixels</span></td>
+								</tr>
+								<tr>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgTableCellSpace">Cell spacing</span>:</td>
+									<td>
+										&nbsp;<input id="txtCellSpacing" type="text" maxlength="2" size="2" value="1" name="txtCellSpacing"
+											onkeypress="return IsDigit(event);" /></td>
+									<td>
+										&nbsp;</td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgTableCellPad">Cell padding</span>:</td>
+									<td>
+										&nbsp;<input id="txtCellPadding" type="text" maxlength="2" size="2" value="1" name="txtCellPadding"
+											onkeypress="return IsDigit(event);" /></td>
+									<td>
+										&nbsp;</td>
+								</tr>
+							</table>
+						</td>
+					</tr>
+				</table>
+				<table cellspacing="0" cellpadding="0" width="100%" border="0">
+					<tr>
+						<td nowrap="nowrap">
+							<span fcklang="DlgTableCaption">Caption</span>:&nbsp;</td>
+						<td>
+							&nbsp;</td>
+						<td width="100%" nowrap="nowrap">
+							<input id="txtCaption" type="text" style="width: 100%" /></td>
+					</tr>
+					<tr>
+						<td nowrap="nowrap">
+							<span fcklang="DlgTableSummary">Summary</span>:&nbsp;</td>
+						<td>
+							&nbsp;</td>
+						<td width="100%" nowrap="nowrap">
+							<input id="txtSummary" type="text" style="width: 100%" /></td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_tablecell.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_tablecell.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_tablecell.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,257 +1,257 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Cell properties dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>Table Cell Properties</title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<meta name="robots" content="noindex, nofollow" />
-	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-	<script type="text/javascript">
-
-var dialog	= window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-// Gets the document DOM
-var oDOM = oEditor.FCK.EditorDocument ;
-
-// Array of selected Cells
-var aCells = oEditor.FCKTableHandler.GetSelectedCells() ;
-
-window.onload = function()
-{
-	// First of all, translate the dialog box texts
-	oEditor.FCKLanguageManager.TranslatePage( document ) ;
-
-	SetStartupValue() ;
-
-	dialog.SetOkButton( true ) ;
-	dialog.SetAutoSize( true ) ;
-	SelectField( 'txtWidth' ) ;
-}
-
-function SetStartupValue()
-{
-	if ( aCells.length > 0 )
-	{
-		var oCell = aCells[0] ;
-		var iWidth = GetAttribute( oCell, 'width' ) ;
-
-		if ( iWidth.indexOf && iWidth.indexOf( '%' ) >= 0 )
-		{
-			iWidth = iWidth.substr( 0, iWidth.length - 1 ) ;
-			GetE('selWidthType').value = 'percent' ;
-		}
-
-		if ( oCell.attributes['noWrap'] != null && oCell.attributes['noWrap'].specified )
-			GetE('selWordWrap').value = !oCell.noWrap ;
-
-		GetE('txtWidth').value			= iWidth ;
-		GetE('txtHeight').value			= GetAttribute( oCell, 'height' ) ;
-		GetE('selHAlign').value			= GetAttribute( oCell, 'align' ) ;
-		GetE('selVAlign').value			= GetAttribute( oCell, 'vAlign' ) ;
-		GetE('txtRowSpan').value		= GetAttribute( oCell, 'rowSpan' ) ;
-		GetE('txtCollSpan').value		= GetAttribute( oCell, 'colSpan' ) ;
-		GetE('txtBackColor').value		= GetAttribute( oCell, 'bgColor' ) ;
-		GetE('txtBorderColor').value	= GetAttribute( oCell, 'borderColor' ) ;
-//		GetE('cmbFontStyle').value		= oCell.className ;
-	}
-}
-
-// Fired when the user press the OK button
-function Ok()
-{
-	for( i = 0 ; i < aCells.length ; i++ )
-	{
-		if ( GetE('txtWidth').value.length > 0 )
-			aCells[i].width	= GetE('txtWidth').value + ( GetE('selWidthType').value == 'percent' ? '%' : '') ;
-		else
-			aCells[i].removeAttribute( 'width', 0 ) ;
-
-		if ( GetE('selWordWrap').value == 'false' )
-			SetAttribute( aCells[i], 'noWrap', 'nowrap' ) ;
-		else
-			aCells[i].removeAttribute( 'noWrap' ) ;
-
-		SetAttribute( aCells[i], 'height'		, GetE('txtHeight').value ) ;
-		SetAttribute( aCells[i], 'align'		, GetE('selHAlign').value ) ;
-		SetAttribute( aCells[i], 'vAlign'		, GetE('selVAlign').value ) ;
-		SetAttribute( aCells[i], 'rowSpan'		, GetE('txtRowSpan').value ) ;
-		SetAttribute( aCells[i], 'colSpan'		, GetE('txtCollSpan').value ) ;
-		SetAttribute( aCells[i], 'bgColor'		, GetE('txtBackColor').value ) ;
-		SetAttribute( aCells[i], 'borderColor'	, GetE('txtBorderColor').value ) ;
-//		SetAttribute( aCells[i], 'className'	, GetE('cmbFontStyle').value ) ;
-	}
-
-	return true ;
-}
-
-function SelectBackColor( color )
-{
-	if ( color && color.length > 0 )
-		GetE('txtBackColor').value = color ;
-}
-
-function SelectBorderColor( color )
-{
-	if ( color && color.length > 0 )
-		GetE('txtBorderColor').value = color ;
-}
-
-function SelectColor( wich )
-{
-	oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', oEditor.FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, wich == 'Back' ? SelectBackColor : SelectBorderColor, window ) ;
-}
-
-	</script>
-</head>
-<body scroll="no" style="overflow: hidden">
-	<table cellspacing="0" cellpadding="0" width="100%" border="0" height="100%">
-		<tr>
-			<td>
-				<table cellspacing="1" cellpadding="1" width="100%" border="0">
-					<tr>
-						<td>
-							<table cellspacing="0" cellpadding="0" border="0">
-								<tr>
-									<td nowrap="nowrap">
-										<span fcklang="DlgCellWidth">Width</span>:</td>
-									<td>
-										&nbsp;<input onkeypress="return IsDigit(event);" id="txtWidth" type="text" maxlength="4"
-											size="3" name="txtWidth" />&nbsp;<select id="selWidthType" name="selWidthType">
-												<option fcklang="DlgCellWidthPx" value="pixels" selected="selected">pixels</option>
-												<option fcklang="DlgCellWidthPc" value="percent">percent</option>
-											</select></td>
-								</tr>
-								<tr>
-									<td nowrap="nowrap">
-										<span fcklang="DlgCellHeight">Height</span>:</td>
-									<td>
-										&nbsp;<input id="txtHeight" type="text" maxlength="4" size="3" name="txtHeight" onkeypress="return IsDigit(event);" />&nbsp;<span
-											fcklang="DlgCellWidthPx">pixels</span></td>
-								</tr>
-								<tr>
-									<td>
-										&nbsp;</td>
-									<td>
-										&nbsp;</td>
-								</tr>
-								<tr>
-									<td nowrap="nowrap">
-										<span fcklang="DlgCellWordWrap">Word Wrap</span>:</td>
-									<td>
-										&nbsp;<select id="selWordWrap" name="selAlignment">
-											<option fcklang="DlgCellWordWrapYes" value="true" selected="selected">Yes</option>
-											<option fcklang="DlgCellWordWrapNo" value="false">No</option>
-										</select></td>
-								</tr>
-								<tr>
-									<td>
-										&nbsp;</td>
-									<td>
-										&nbsp;</td>
-								</tr>
-								<tr>
-									<td nowrap="nowrap">
-										<span fcklang="DlgCellHorAlign">Horizontal Alignment</span>:</td>
-									<td>
-										&nbsp;<select id="selHAlign" name="selAlignment">
-											<option fcklang="DlgCellHorAlignNotSet" value="" selected>&lt;Not set&gt;</option>
-											<option fcklang="DlgCellHorAlignLeft" value="left">Left</option>
-											<option fcklang="DlgCellHorAlignCenter" value="center">Center</option>
-											<option fcklang="DlgCellHorAlignRight" value="right">Right</option>
-										</select></td>
-								</tr>
-								<tr>
-									<td nowrap="nowrap">
-										<span fcklang="DlgCellVerAlign">Vertical Alignment</span>:</td>
-									<td>
-										&nbsp;<select id="selVAlign" name="selAlignment">
-											<option fcklang="DlgCellVerAlignNotSet" value="" selected>&lt;Not set&gt;</option>
-											<option fcklang="DlgCellVerAlignTop" value="top">Top</option>
-											<option fcklang="DlgCellVerAlignMiddle" value="middle">Middle</option>
-											<option fcklang="DlgCellVerAlignBottom" value="bottom">Bottom</option>
-											<option fcklang="DlgCellVerAlignBaseline" value="baseline">Baseline</option>
-										</select></td>
-								</tr>
-							</table>
-						</td>
-						<td>
-							&nbsp;&nbsp;&nbsp;</td>
-						<td align="right">
-							<table cellspacing="0" cellpadding="0" border="0">
-								<tr>
-									<td nowrap="nowrap">
-										<span fcklang="DlgCellRowSpan">Rows Span</span>:</td>
-									<td>
-										&nbsp;
-										<input onkeypress="return IsDigit(event);" id="txtRowSpan" type="text" maxlength="3" size="2"
-											name="txtRows"></td>
-									<td>
-									</td>
-								</tr>
-								<tr>
-									<td nowrap="nowrap">
-										<span fcklang="DlgCellCollSpan">Columns Span</span>:</td>
-									<td>
-										&nbsp;
-										<input onkeypress="return IsDigit(event);" id="txtCollSpan" type="text" maxlength="2"
-											size="2" name="txtColumns"></td>
-									<td>
-									</td>
-								</tr>
-								<tr>
-									<td>
-										&nbsp;</td>
-									<td>
-										&nbsp;</td>
-									<td>
-										&nbsp;</td>
-								</tr>
-								<tr>
-									<td nowrap="nowrap">
-										<span fcklang="DlgCellBackColor">Background Color</span>:</td>
-									<td>
-										&nbsp;<input id="txtBackColor" type="text" size="8" name="txtCellSpacing"></td>
-									<td>
-										&nbsp;
-										<input type="button" fcklang="DlgCellBtnSelect" value="Select..." onclick="SelectColor( 'Back' )"></td>
-								</tr>
-								<tr>
-									<td nowrap="nowrap">
-										<span fcklang="DlgCellBorderColor">Border Color</span>:</td>
-									<td>
-										&nbsp;<input id="txtBorderColor" type="text" size="8" name="txtCellPadding" /></td>
-									<td>
-										&nbsp;
-										<input type="button" fcklang="DlgCellBtnSelect" value="Select..." onclick="SelectColor( 'Border' )" /></td>
-								</tr>
-							</table>
-						</td>
-					</tr>
-				</table>
-			</td>
-		</tr>
-	</table>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Cell properties dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Table Cell Properties</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+// Array of selected Cells
+var aCells = oEditor.FCKTableHandler.GetSelectedCells() ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage( document ) ;
+
+	SetStartupValue() ;
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtWidth' ) ;
+}
+
+function SetStartupValue()
+{
+	if ( aCells.length > 0 )
+	{
+		var oCell = aCells[0] ;
+		var iWidth = GetAttribute( oCell, 'width' ) ;
+
+		if ( iWidth.indexOf && iWidth.indexOf( '%' ) >= 0 )
+		{
+			iWidth = iWidth.substr( 0, iWidth.length - 1 ) ;
+			GetE('selWidthType').value = 'percent' ;
+		}
+
+		if ( oCell.attributes['noWrap'] != null && oCell.attributes['noWrap'].specified )
+			GetE('selWordWrap').value = !oCell.noWrap ;
+
+		GetE('txtWidth').value			= iWidth ;
+		GetE('txtHeight').value			= GetAttribute( oCell, 'height' ) ;
+		GetE('selHAlign').value			= GetAttribute( oCell, 'align' ) ;
+		GetE('selVAlign').value			= GetAttribute( oCell, 'vAlign' ) ;
+		GetE('txtRowSpan').value		= GetAttribute( oCell, 'rowSpan' ) ;
+		GetE('txtCollSpan').value		= GetAttribute( oCell, 'colSpan' ) ;
+		GetE('txtBackColor').value		= GetAttribute( oCell, 'bgColor' ) ;
+		GetE('txtBorderColor').value	= GetAttribute( oCell, 'borderColor' ) ;
+//		GetE('cmbFontStyle').value		= oCell.className ;
+	}
+}
+
+// Fired when the user press the OK button
+function Ok()
+{
+	for( i = 0 ; i < aCells.length ; i++ )
+	{
+		if ( GetE('txtWidth').value.length > 0 )
+			aCells[i].width	= GetE('txtWidth').value + ( GetE('selWidthType').value == 'percent' ? '%' : '') ;
+		else
+			aCells[i].removeAttribute( 'width', 0 ) ;
+
+		if ( GetE('selWordWrap').value == 'false' )
+			SetAttribute( aCells[i], 'noWrap', 'nowrap' ) ;
+		else
+			aCells[i].removeAttribute( 'noWrap' ) ;
+
+		SetAttribute( aCells[i], 'height'		, GetE('txtHeight').value ) ;
+		SetAttribute( aCells[i], 'align'		, GetE('selHAlign').value ) ;
+		SetAttribute( aCells[i], 'vAlign'		, GetE('selVAlign').value ) ;
+		SetAttribute( aCells[i], 'rowSpan'		, GetE('txtRowSpan').value ) ;
+		SetAttribute( aCells[i], 'colSpan'		, GetE('txtCollSpan').value ) ;
+		SetAttribute( aCells[i], 'bgColor'		, GetE('txtBackColor').value ) ;
+		SetAttribute( aCells[i], 'borderColor'	, GetE('txtBorderColor').value ) ;
+//		SetAttribute( aCells[i], 'className'	, GetE('cmbFontStyle').value ) ;
+	}
+
+	return true ;
+}
+
+function SelectBackColor( color )
+{
+	if ( color && color.length > 0 )
+		GetE('txtBackColor').value = color ;
+}
+
+function SelectBorderColor( color )
+{
+	if ( color && color.length > 0 )
+		GetE('txtBorderColor').value = color ;
+}
+
+function SelectColor( wich )
+{
+	oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', oEditor.FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, wich == 'Back' ? SelectBackColor : SelectBorderColor, window ) ;
+}
+
+	</script>
+</head>
+<body scroll="no" style="overflow: hidden">
+	<table cellspacing="0" cellpadding="0" width="100%" border="0" height="100%">
+		<tr>
+			<td>
+				<table cellspacing="1" cellpadding="1" width="100%" border="0">
+					<tr>
+						<td>
+							<table cellspacing="0" cellpadding="0" border="0">
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellWidth">Width</span>:</td>
+									<td>
+										&nbsp;<input onkeypress="return IsDigit(event);" id="txtWidth" type="text" maxlength="4"
+											size="3" name="txtWidth" />&nbsp;<select id="selWidthType" name="selWidthType">
+												<option fcklang="DlgCellWidthPx" value="pixels" selected="selected">pixels</option>
+												<option fcklang="DlgCellWidthPc" value="percent">percent</option>
+											</select></td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellHeight">Height</span>:</td>
+									<td>
+										&nbsp;<input id="txtHeight" type="text" maxlength="4" size="3" name="txtHeight" onkeypress="return IsDigit(event);" />&nbsp;<span
+											fcklang="DlgCellWidthPx">pixels</span></td>
+								</tr>
+								<tr>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellWordWrap">Word Wrap</span>:</td>
+									<td>
+										&nbsp;<select id="selWordWrap" name="selAlignment">
+											<option fcklang="DlgCellWordWrapYes" value="true" selected="selected">Yes</option>
+											<option fcklang="DlgCellWordWrapNo" value="false">No</option>
+										</select></td>
+								</tr>
+								<tr>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellHorAlign">Horizontal Alignment</span>:</td>
+									<td>
+										&nbsp;<select id="selHAlign" name="selAlignment">
+											<option fcklang="DlgCellHorAlignNotSet" value="" selected>&lt;Not set&gt;</option>
+											<option fcklang="DlgCellHorAlignLeft" value="left">Left</option>
+											<option fcklang="DlgCellHorAlignCenter" value="center">Center</option>
+											<option fcklang="DlgCellHorAlignRight" value="right">Right</option>
+										</select></td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellVerAlign">Vertical Alignment</span>:</td>
+									<td>
+										&nbsp;<select id="selVAlign" name="selAlignment">
+											<option fcklang="DlgCellVerAlignNotSet" value="" selected>&lt;Not set&gt;</option>
+											<option fcklang="DlgCellVerAlignTop" value="top">Top</option>
+											<option fcklang="DlgCellVerAlignMiddle" value="middle">Middle</option>
+											<option fcklang="DlgCellVerAlignBottom" value="bottom">Bottom</option>
+											<option fcklang="DlgCellVerAlignBaseline" value="baseline">Baseline</option>
+										</select></td>
+								</tr>
+							</table>
+						</td>
+						<td>
+							&nbsp;&nbsp;&nbsp;</td>
+						<td align="right">
+							<table cellspacing="0" cellpadding="0" border="0">
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellRowSpan">Rows Span</span>:</td>
+									<td>
+										&nbsp;
+										<input onkeypress="return IsDigit(event);" id="txtRowSpan" type="text" maxlength="3" size="2"
+											name="txtRows"></td>
+									<td>
+									</td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellCollSpan">Columns Span</span>:</td>
+									<td>
+										&nbsp;
+										<input onkeypress="return IsDigit(event);" id="txtCollSpan" type="text" maxlength="2"
+											size="2" name="txtColumns"></td>
+									<td>
+									</td>
+								</tr>
+								<tr>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellBackColor">Background Color</span>:</td>
+									<td>
+										&nbsp;<input id="txtBackColor" type="text" size="8" name="txtCellSpacing"></td>
+									<td>
+										&nbsp;
+										<input type="button" fcklang="DlgCellBtnSelect" value="Select..." onclick="SelectColor( 'Back' )"></td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellBorderColor">Border Color</span>:</td>
+									<td>
+										&nbsp;<input id="txtBorderColor" type="text" size="8" name="txtCellPadding" /></td>
+									<td>
+										&nbsp;
+										<input type="button" fcklang="DlgCellBtnSelect" value="Select..." onclick="SelectColor( 'Border' )" /></td>
+								</tr>
+							</table>
+						</td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_template.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_template.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_template.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,242 +1,242 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Template selection dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title></title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<meta name="robots" content="noindex, nofollow" />
-	<style type="text/css">
-			.TplList
-			{
-				border: #dcdcdc 2px solid;
-				background-color: #ffffff;
-				overflow: auto;
-				width: 90%;
-			}
-
-			.TplItem
-			{
-				margin: 5px;
-				padding: 7px;
-				border: #eeeeee 1px solid;
-			}
-
-			.TplItem TABLE
-			{
-				display: inline;
-			}
-
-			.TplTitle
-			{
-				font-weight: bold;
-			}
-		</style>
-	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-	<script type="text/javascript">
-
-var oEditor		= window.parent.InnerDialogLoaded() ;
-var FCK			= oEditor.FCK ;
-var FCKLang		= oEditor.FCKLang ;
-var FCKConfig	= oEditor.FCKConfig ;
-
-window.onload = function()
-{
-	// Set the right box height (browser dependent).
-	GetE('eList').style.height = document.all ? '100%' : '295px' ;
-
-	// Translate the dialog box texts.
-	oEditor.FCKLanguageManager.TranslatePage(document) ;
-
-	GetE('xChkReplaceAll').checked = ( FCKConfig.TemplateReplaceAll !== false ) ;
-
-	if ( FCKConfig.TemplateReplaceCheckbox !== false )
-		GetE('xReplaceBlock').style.display = '' ;
-
-	window.parent.SetAutoSize( true ) ;
-
-	LoadTemplatesXml() ;
-}
-
-function LoadTemplatesXml()
-{
-	var oTemplate ;
-
-	if ( !FCK._Templates )
-	{
-		GetE('eLoading').style.display = '' ;
-
-		// Create the Templates array.
-		FCK._Templates = new Array() ;
-
-		// Load the XML file.
-		var oXml = new oEditor.FCKXml() ;
-		oXml.LoadUrl( FCKConfig.TemplatesXmlPath ) ;
-
-		// Get the Images Base Path.
-		var oAtt = oXml.SelectSingleNode( 'Templates/@imagesBasePath' ) ;
-		var sImagesBasePath = oAtt ? oAtt.value : '' ;
-
-		// Get the "Template" nodes defined in the XML file.
-		var aTplNodes = oXml.SelectNodes( 'Templates/Template' ) ;
-
-		for ( var i = 0 ; i < aTplNodes.length ; i++ )
-		{
-			var oNode = aTplNodes[i] ;
-
-			oTemplate = new Object() ;
-
-			var oPart ;
-
-			// Get the Template Title.
-			if ( (oPart = oNode.attributes.getNamedItem('title')) )
-				oTemplate.Title = oPart.value ;
-			else
-				oTemplate.Title = 'Template ' + ( i + 1 ) ;
-
-			// Get the Template Description.
-			if ( (oPart = oXml.SelectSingleNode( 'Description', oNode )) )
-				oTemplate.Description = oPart.text ? oPart.text : oPart.textContent ;
-
-			// Get the Template Image.
-			if ( (oPart = oNode.attributes.getNamedItem('image')) )
-				oTemplate.Image = sImagesBasePath + oPart.value ;
-
-			// Get the Template HTML.
-			if ( (oPart = oXml.SelectSingleNode( 'Html', oNode )) )
-				oTemplate.Html = oPart.text ? oPart.text : oPart.textContent ;
-			else
-			{
-				alert( 'No HTML defined for template index ' + i + '. Please review the "' + FCKConfig.TemplatesXmlPath + '" file.' ) ;
-				continue ;
-			}
-
-			FCK._Templates[ FCK._Templates.length ] = oTemplate ;
-		}
-
-		GetE('eLoading').style.display = 'none' ;
-	}
-
-	if ( FCK._Templates.length == 0 )
-		GetE('eEmpty').style.display = '' ;
-	else
-	{
-		for ( var j = 0 ; j < FCK._Templates.length ; j++ )
-		{
-			oTemplate = FCK._Templates[j] ;
-
-			var oItemDiv = GetE('eList').appendChild( document.createElement( 'DIV' ) ) ;
-			oItemDiv.TplIndex = j ;
-			oItemDiv.className = 'TplItem' ;
-
-			// Build the inner HTML of our new item DIV.
-			var sInner = '<table><tr>' ;
-
-			if ( oTemplate.Image )
-				sInner += '<td valign="top"><img src="' + oTemplate.Image + '"><\/td>' ;
-
-			sInner += '<td valign="top"><div class="TplTitle">' + oTemplate.Title + '<\/div>' ;
-
-			if ( oTemplate.Description )
-				sInner += '<div>' + oTemplate.Description + '<\/div>' ;
-
-			sInner += '<\/td><\/tr><\/table>' ;
-
-			oItemDiv.innerHTML = sInner ;
-
-			oItemDiv.onmouseover = ItemDiv_OnMouseOver ;
-			oItemDiv.onmouseout = ItemDiv_OnMouseOut ;
-			oItemDiv.onclick = ItemDiv_OnClick ;
-		}
-	}
-}
-
-function ItemDiv_OnMouseOver()
-{
-	this.className += ' PopupSelectionBox' ;
-}
-
-function ItemDiv_OnMouseOut()
-{
-	this.className = this.className.replace( /\s*PopupSelectionBox\s*/, '' ) ;
-}
-
-function ItemDiv_OnClick()
-{
-	SelectTemplate( this.TplIndex ) ;
-}
-
-function SelectTemplate( index )
-{
-	oEditor.FCKUndo.SaveUndoStep() ;
-
-	if ( GetE('xChkReplaceAll').checked )
-		FCK.SetData( FCK._Templates[index].Html ) ;
-	else
-		FCK.InsertHtml( FCK._Templates[index].Html ) ;
-
-	window.parent.Cancel( true ) ;
-}
-
-	</script>
-</head>
-<body style="overflow: hidden">
-	<table width="100%" style="height: 100%">
-		<tr>
-			<td align="center">
-				<span fcklang="DlgTemplatesSelMsg">Please select the template to open in the editor<br />
-					(the actual contents will be lost):</span>
-			</td>
-		</tr>
-		<tr>
-			<td height="100%" align="center">
-				<div id="eList" align="left" class="TplList">
-					<div id="eLoading" align="center" style="display: none">
-						<br />
-						<span fcklang="DlgTemplatesLoading">Loading templates list. Please wait...</span>
-					</div>
-					<div id="eEmpty" align="center" style="display: none">
-						<br />
-						<span fcklang="DlgTemplatesNoTpl">(No templates defined)</span>
-					</div>
-				</div>
-			</td>
-		</tr>
-		<tr id="xReplaceBlock" style="display: none">
-			<td>
-				<table cellpadding="0" cellspacing="0">
-					<tr>
-						<td>
-							<input id="xChkReplaceAll" type="checkbox" /></td>
-						<td>
-							&nbsp;</td>
-						<td>
-							<label for="xChkReplaceAll" fcklang="DlgTemplatesReplace">
-								Replace actual contents</label></td>
-					</tr>
-				</table>
-			</td>
-		</tr>
-	</table>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Template selection dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<style type="text/css">
+			.TplList
+			{
+				border: #dcdcdc 2px solid;
+				background-color: #ffffff;
+				overflow: auto;
+				width: 90%;
+			}
+
+			.TplItem
+			{
+				margin: 5px;
+				padding: 7px;
+				border: #eeeeee 1px solid;
+			}
+
+			.TplItem TABLE
+			{
+				display: inline;
+			}
+
+			.TplTitle
+			{
+				font-weight: bold;
+			}
+		</style>
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var oEditor		= window.parent.InnerDialogLoaded() ;
+var FCK			= oEditor.FCK ;
+var FCKLang		= oEditor.FCKLang ;
+var FCKConfig	= oEditor.FCKConfig ;
+
+window.onload = function()
+{
+	// Set the right box height (browser dependent).
+	GetE('eList').style.height = document.all ? '100%' : '295px' ;
+
+	// Translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	GetE('xChkReplaceAll').checked = ( FCKConfig.TemplateReplaceAll !== false ) ;
+
+	if ( FCKConfig.TemplateReplaceCheckbox !== false )
+		GetE('xReplaceBlock').style.display = '' ;
+
+	window.parent.SetAutoSize( true ) ;
+
+	LoadTemplatesXml() ;
+}
+
+function LoadTemplatesXml()
+{
+	var oTemplate ;
+
+	if ( !FCK._Templates )
+	{
+		GetE('eLoading').style.display = '' ;
+
+		// Create the Templates array.
+		FCK._Templates = new Array() ;
+
+		// Load the XML file.
+		var oXml = new oEditor.FCKXml() ;
+		oXml.LoadUrl( FCKConfig.TemplatesXmlPath ) ;
+
+		// Get the Images Base Path.
+		var oAtt = oXml.SelectSingleNode( 'Templates/@imagesBasePath' ) ;
+		var sImagesBasePath = oAtt ? oAtt.value : '' ;
+
+		// Get the "Template" nodes defined in the XML file.
+		var aTplNodes = oXml.SelectNodes( 'Templates/Template' ) ;
+
+		for ( var i = 0 ; i < aTplNodes.length ; i++ )
+		{
+			var oNode = aTplNodes[i] ;
+
+			oTemplate = new Object() ;
+
+			var oPart ;
+
+			// Get the Template Title.
+			if ( (oPart = oNode.attributes.getNamedItem('title')) )
+				oTemplate.Title = oPart.value ;
+			else
+				oTemplate.Title = 'Template ' + ( i + 1 ) ;
+
+			// Get the Template Description.
+			if ( (oPart = oXml.SelectSingleNode( 'Description', oNode )) )
+				oTemplate.Description = oPart.text ? oPart.text : oPart.textContent ;
+
+			// Get the Template Image.
+			if ( (oPart = oNode.attributes.getNamedItem('image')) )
+				oTemplate.Image = sImagesBasePath + oPart.value ;
+
+			// Get the Template HTML.
+			if ( (oPart = oXml.SelectSingleNode( 'Html', oNode )) )
+				oTemplate.Html = oPart.text ? oPart.text : oPart.textContent ;
+			else
+			{
+				alert( 'No HTML defined for template index ' + i + '. Please review the "' + FCKConfig.TemplatesXmlPath + '" file.' ) ;
+				continue ;
+			}
+
+			FCK._Templates[ FCK._Templates.length ] = oTemplate ;
+		}
+
+		GetE('eLoading').style.display = 'none' ;
+	}
+
+	if ( FCK._Templates.length == 0 )
+		GetE('eEmpty').style.display = '' ;
+	else
+	{
+		for ( var j = 0 ; j < FCK._Templates.length ; j++ )
+		{
+			oTemplate = FCK._Templates[j] ;
+
+			var oItemDiv = GetE('eList').appendChild( document.createElement( 'DIV' ) ) ;
+			oItemDiv.TplIndex = j ;
+			oItemDiv.className = 'TplItem' ;
+
+			// Build the inner HTML of our new item DIV.
+			var sInner = '<table><tr>' ;
+
+			if ( oTemplate.Image )
+				sInner += '<td valign="top"><img src="' + oTemplate.Image + '"><\/td>' ;
+
+			sInner += '<td valign="top"><div class="TplTitle">' + oTemplate.Title + '<\/div>' ;
+
+			if ( oTemplate.Description )
+				sInner += '<div>' + oTemplate.Description + '<\/div>' ;
+
+			sInner += '<\/td><\/tr><\/table>' ;
+
+			oItemDiv.innerHTML = sInner ;
+
+			oItemDiv.onmouseover = ItemDiv_OnMouseOver ;
+			oItemDiv.onmouseout = ItemDiv_OnMouseOut ;
+			oItemDiv.onclick = ItemDiv_OnClick ;
+		}
+	}
+}
+
+function ItemDiv_OnMouseOver()
+{
+	this.className += ' PopupSelectionBox' ;
+}
+
+function ItemDiv_OnMouseOut()
+{
+	this.className = this.className.replace( /\s*PopupSelectionBox\s*/, '' ) ;
+}
+
+function ItemDiv_OnClick()
+{
+	SelectTemplate( this.TplIndex ) ;
+}
+
+function SelectTemplate( index )
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	if ( GetE('xChkReplaceAll').checked )
+		FCK.SetData( FCK._Templates[index].Html ) ;
+	else
+		FCK.InsertHtml( FCK._Templates[index].Html ) ;
+
+	window.parent.Cancel( true ) ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table width="100%" style="height: 100%">
+		<tr>
+			<td align="center">
+				<span fcklang="DlgTemplatesSelMsg">Please select the template to open in the editor<br />
+					(the actual contents will be lost):</span>
+			</td>
+		</tr>
+		<tr>
+			<td height="100%" align="center">
+				<div id="eList" align="left" class="TplList">
+					<div id="eLoading" align="center" style="display: none">
+						<br />
+						<span fcklang="DlgTemplatesLoading">Loading templates list. Please wait...</span>
+					</div>
+					<div id="eEmpty" align="center" style="display: none">
+						<br />
+						<span fcklang="DlgTemplatesNoTpl">(No templates defined)</span>
+					</div>
+				</div>
+			</td>
+		</tr>
+		<tr id="xReplaceBlock" style="display: none">
+			<td>
+				<table cellpadding="0" cellspacing="0">
+					<tr>
+						<td>
+							<input id="xChkReplaceAll" type="checkbox" /></td>
+						<td>
+							&nbsp;</td>
+						<td>
+							<label for="xChkReplaceAll" fcklang="DlgTemplatesReplace">
+								Replace actual contents</label></td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_textarea.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_textarea.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_textarea.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,94 +1,94 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Text Area dialog window.
--->
-<html>
-	<head>
-		<title>Text Area Properties</title>
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-		<meta content="noindex, nofollow" name="robots">
-		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-		<script type="text/javascript">
-
-var dialog	= window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-// Gets the document DOM
-var oDOM = oEditor.FCK.EditorDocument ;
-
-var oActiveEl = dialog.Selection.GetSelectedElement() ;
-
-window.onload = function()
-{
-	// First of all, translate the dialog box texts
-	oEditor.FCKLanguageManager.TranslatePage(document) ;
-
-	if ( oActiveEl && oActiveEl.tagName == 'TEXTAREA' )
-	{
-		GetE('txtName').value		= oActiveEl.name ;
-		GetE('txtCols').value		= GetAttribute( oActiveEl, 'cols' ) ;
-		GetE('txtRows').value		= GetAttribute( oActiveEl, 'rows' ) ;
-	}
-	else
-		oActiveEl = null ;
-
-	dialog.SetOkButton( true ) ;
-	dialog.SetAutoSize( true ) ;
-	SelectField( 'txtName' ) ;
-}
-
-function Ok()
-{
-	oEditor.FCKUndo.SaveUndoStep() ;
-
-	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'TEXTAREA', {name: GetE('txtName').value} ) ;
-
-	SetAttribute( oActiveEl, 'cols', GetE('txtCols').value ) ;
-	SetAttribute( oActiveEl, 'rows', GetE('txtRows').value ) ;
-
-	return true ;
-}
-
-		</script>
-	</head>
-	<body style="overflow: hidden">
-		<table height="100%" width="100%">
-			<tr>
-				<td align="center">
-					<table border="0" cellpadding="0" cellspacing="0" width="80%">
-						<tr>
-							<td>
-								<span fckLang="DlgTextareaName">Name</span><br>
-								<input type="text" id="txtName" style="WIDTH: 100%">
-								<span fckLang="DlgTextareaCols">Collumns</span><br>
-								<input id="txtCols" type="text" size="5">
-								<br>
-								<span fckLang="DlgTextareaRows">Rows</span><br>
-								<input id="txtRows" type="text" size="5">
-							</td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-		</table>
-	</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Text Area dialog window.
+-->
+<html>
+	<head>
+		<title>Text Area Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oActiveEl = dialog.Selection.GetSelectedElement() ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oActiveEl && oActiveEl.tagName == 'TEXTAREA' )
+	{
+		GetE('txtName').value		= oActiveEl.name ;
+		GetE('txtCols').value		= GetAttribute( oActiveEl, 'cols' ) ;
+		GetE('txtRows').value		= GetAttribute( oActiveEl, 'rows' ) ;
+	}
+	else
+		oActiveEl = null ;
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
+}
+
+function Ok()
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'TEXTAREA', {name: GetE('txtName').value} ) ;
+
+	SetAttribute( oActiveEl, 'cols', GetE('txtCols').value ) ;
+	SetAttribute( oActiveEl, 'rows', GetE('txtRows').value ) ;
+
+	return true ;
+}
+
+		</script>
+	</head>
+	<body style="overflow: hidden">
+		<table height="100%" width="100%">
+			<tr>
+				<td align="center">
+					<table border="0" cellpadding="0" cellspacing="0" width="80%">
+						<tr>
+							<td>
+								<span fckLang="DlgTextareaName">Name</span><br>
+								<input type="text" id="txtName" style="WIDTH: 100%">
+								<span fckLang="DlgTextareaCols">Collumns</span><br>
+								<input id="txtCols" type="text" size="5">
+								<br>
+								<span fckLang="DlgTextareaRows">Rows</span><br>
+								<input id="txtRows" type="text" size="5">
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_textfield.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_textfield.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_textfield.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,136 +1,136 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Text field dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title></title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<meta content="noindex, nofollow" name="robots" />
-	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-	<script type="text/javascript">
-
-var dialog	= window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-// Gets the document DOM
-var oDOM = oEditor.FCK.EditorDocument ;
-
-var oActiveEl = dialog.Selection.GetSelectedElement() ;
-
-window.onload = function()
-{
-	// First of all, translate the dialog box texts
-	oEditor.FCKLanguageManager.TranslatePage(document) ;
-
-	if ( oActiveEl && oActiveEl.tagName == 'INPUT' && ( oActiveEl.type == 'text' || oActiveEl.type == 'password' ) )
-	{
-		GetE('txtName').value	= oActiveEl.name ;
-		GetE('txtValue').value	= oActiveEl.value ;
-		GetE('txtSize').value	= GetAttribute( oActiveEl, 'size' ) ;
-		GetE('txtMax').value	= GetAttribute( oActiveEl, 'maxLength' ) ;
-		GetE('txtType').value	= oActiveEl.type ;
-	}
-	else
-		oActiveEl = null ;
-
-	dialog.SetOkButton( true ) ;
-	dialog.SetAutoSize( true ) ;
-	SelectField( 'txtName' ) ;
-}
-
-function Ok()
-{
-	if ( isNaN( GetE('txtMax').value ) || GetE('txtMax').value < 0 )
-	{
-		alert( "Maximum characters must be a positive number." ) ;
-		GetE('txtMax').focus() ;
-		return false ;
-	}
-	else if( isNaN( GetE('txtSize').value ) || GetE('txtSize').value < 0 )
-	{
-		alert( "Width must be a positive number." ) ;
-		GetE('txtSize').focus() ;
-		return false ;
-	}
-
-	oEditor.FCKUndo.SaveUndoStep() ;
-
-	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: GetE('txtType').value } ) ;
-
-	SetAttribute( oActiveEl, 'value'	, GetE('txtValue').value ) ;
-	SetAttribute( oActiveEl, 'size'		, GetE('txtSize').value ) ;
-	SetAttribute( oActiveEl, 'maxlength', GetE('txtMax').value ) ;
-
-	return true ;
-}
-
-	</script>
-</head>
-<body style="overflow: hidden">
-	<table width="100%" style="height: 100%">
-		<tr>
-			<td align="center">
-				<table cellspacing="0" cellpadding="0" border="0">
-					<tr>
-						<td>
-							<span fcklang="DlgTextName">Name</span><br />
-							<input id="txtName" type="text" size="20" />
-						</td>
-						<td>
-						</td>
-						<td>
-							<span fcklang="DlgTextValue">Value</span><br />
-							<input id="txtValue" type="text" size="25" />
-						</td>
-					</tr>
-					<tr>
-						<td>
-							<span fcklang="DlgTextCharWidth">Character Width</span><br />
-							<input id="txtSize" type="text" size="5" />
-						</td>
-						<td>
-						</td>
-						<td>
-							<span fcklang="DlgTextMaxChars">Maximum Characters</span><br />
-							<input id="txtMax" type="text" size="5" />
-						</td>
-					</tr>
-					<tr>
-						<td>
-							<span fcklang="DlgTextType">Type</span><br />
-							<select id="txtType">
-								<option value="text" selected="selected" fcklang="DlgTextTypeText">Text</option>
-								<option value="password" fcklang="DlgTextTypePass">Password</option>
-							</select>
-						</td>
-						<td>
-							&nbsp;</td>
-						<td>
-						</td>
-					</tr>
-				</table>
-			</td>
-		</tr>
-	</table>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Text field dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oActiveEl = dialog.Selection.GetSelectedElement() ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oActiveEl && oActiveEl.tagName == 'INPUT' && ( oActiveEl.type == 'text' || oActiveEl.type == 'password' ) )
+	{
+		GetE('txtName').value	= oActiveEl.name ;
+		GetE('txtValue').value	= oActiveEl.value ;
+		GetE('txtSize').value	= GetAttribute( oActiveEl, 'size' ) ;
+		GetE('txtMax').value	= GetAttribute( oActiveEl, 'maxLength' ) ;
+		GetE('txtType').value	= oActiveEl.type ;
+	}
+	else
+		oActiveEl = null ;
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
+}
+
+function Ok()
+{
+	if ( isNaN( GetE('txtMax').value ) || GetE('txtMax').value < 0 )
+	{
+		alert( "Maximum characters must be a positive number." ) ;
+		GetE('txtMax').focus() ;
+		return false ;
+	}
+	else if( isNaN( GetE('txtSize').value ) || GetE('txtSize').value < 0 )
+	{
+		alert( "Width must be a positive number." ) ;
+		GetE('txtSize').focus() ;
+		return false ;
+	}
+
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: GetE('txtType').value } ) ;
+
+	SetAttribute( oActiveEl, 'value'	, GetE('txtValue').value ) ;
+	SetAttribute( oActiveEl, 'size'		, GetE('txtSize').value ) ;
+	SetAttribute( oActiveEl, 'maxlength', GetE('txtMax').value ) ;
+
+	return true ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table width="100%" style="height: 100%">
+		<tr>
+			<td align="center">
+				<table cellspacing="0" cellpadding="0" border="0">
+					<tr>
+						<td>
+							<span fcklang="DlgTextName">Name</span><br />
+							<input id="txtName" type="text" size="20" />
+						</td>
+						<td>
+						</td>
+						<td>
+							<span fcklang="DlgTextValue">Value</span><br />
+							<input id="txtValue" type="text" size="25" />
+						</td>
+					</tr>
+					<tr>
+						<td>
+							<span fcklang="DlgTextCharWidth">Character Width</span><br />
+							<input id="txtSize" type="text" size="5" />
+						</td>
+						<td>
+						</td>
+						<td>
+							<span fcklang="DlgTextMaxChars">Maximum Characters</span><br />
+							<input id="txtMax" type="text" size="5" />
+						</td>
+					</tr>
+					<tr>
+						<td>
+							<span fcklang="DlgTextType">Type</span><br />
+							<select id="txtType">
+								<option value="text" selected="selected" fcklang="DlgTextTypeText">Text</option>
+								<option value="password" fcklang="DlgTextTypePass">Password</option>
+							</select>
+						</td>
+						<td>
+							&nbsp;</td>
+						<td>
+						</td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_universalkey/data.js
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_universalkey/data.js	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_universalkey/data.js	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,70 +1,70 @@
-/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2006 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: data.js
- * 	Scripts for the fck_universalkey.html page.
- * 	Definition des 104 caracteres en hexa unicode.
- * 
- * File Authors:
- * 		Michel Staelens (michel.staelens at wanadoo.fr)
- * 		Abdul-Aziz Al-Oraij (top7up at hotmail.com)
- */
-
-var Maj = new Array() ;
-var Min = new Array() ;
-
-Maj["Arabic"]				="0651|0021|0040|0023|0024|0025|005E|0026|002A|0029|0028|005F|002B|064E|064B|064F|064C|0625|0625|2018|00F7|00D7|061B|003C|003E|0650|064D|005D|005B|0623|0623|0640|060C|002F|003A|0022|007E|0652|007D|007B|0622|0622|2019|002C|002E|061F|007C|0020|0020|0020|0020|0020" ;
-Min["Arabic"]				="0630|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0636|0635|062B|0642|0641|063A|0639|0647|062E|062D|062C|062F|0634|0633|064A|0628|0644|0627|062A|0646|0645|0643|0637|0626|0621|0624|0631|0644|0627|0649|0629|0648|0632|0638|005C|0020|0020|0020|0020" ;
-Maj["Belarusian (C)"]		="0401|0021|0022|2116|003B|0025|003A|003F|002A|0028|0029|005F|002B|0419|0426|0423|041A|0415|041D|0413|0428|040E|0417|0425|0027|0424|042B|0412|0410|041F|0420|041E|041B|0414|0416|042D|042F|0427|0421|041C|0406|0422|042C|0411|042E|002C|0020|0020|0020|0020|0020|0020" ;
-Min["Belarusian (C)"]		="0451|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0439|0446|0443|043A|0435|043D|0433|0448|045E|0437|0445|0027|0444|044B|0432|0430|043F|0440|043E|043B|0434|0436|044D|044F|0447|0441|043C|0456|0442|044C|0431|044E|002E|0020|0020|0020|0020|0020|0020" ;
-Maj["Bulgarian (C)"]		="007E|0021|003F|002B|0022|0025|003D|003A|002F|005F|2116|0406|0056|044B|0423|0415|0418|0428|0429|041A|0421|0414|0417|0426|00A7|042C|042F|0410|041E|0416|0413|0422|041D|0412|041C|0427|042E|0419|042A|042D|0424|0425|041F|0420|041B|0411|0029|0020|0020|0020|0020|0020" ;
-Min["Bulgarian (C)"]		="0060|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|002E|002C|0443|0435|0438|0448|0449|043A|0441|0434|0437|0446|003B|044C|044F|0430|043E|0436|0433|0442|043D|0432|043C|0447|044E|0439|044A|044D|0444|0445|043F|0440|043B|0431|0028|0020|0020|0020|0020|0020" ;
-Maj["Croatian (L)"]			="00B8|0021|0022|0023|0024|0025|0026|002F|0028|0029|003D|003F|00A8|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|0160|0110|0041|0053|0044|0046|0047|0048|004A|004B|004C|010C|0106|0059|0058|0043|0056|0042|004E|004D|017D|003B|003A|003C|003E|005F|002D|002A|002B" ;
-Min["Croatian (L)"]			="00B8|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0027|00A8|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|0161|0111|0061|0073|0064|0066|0067|0068|006A|006B|006C|010D|0107|0079|0078|0063|0076|0062|006E|006D|017E|002C|002E|003C|003E|005F|002D|002A|002B" ;
-Maj["Czech (L)"]			="00B0|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0025|02C7|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|002F|0028|0041|0053|0044|0046|0047|0048|004A|004B|004C|0022|0027|0059|0058|0043|0056|0042|004E|004D|003F|003A|005F|005B|007B|0021|0020|0148|010F" ;
-Min["Czech (L)"]			="003B|002B|011B|0161|010D|0159|017E|00FD|00E1|00ED|00E9|003D|00B4|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|00FA|0029|0061|0073|0064|0066|0067|0068|006A|006B|006C|016F|00A7|0079|0078|0063|0076|0062|006E|006D|002C|002E|002D|005D|007D|00A8|0040|00F3|0165" ;
-Maj["Danish (L)"]			="00A7|0021|0022|0023|00A4|0025|0026|002F|0028|0029|003D|003F|0060|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|00C5|005E|0041|0053|0044|0046|0047|0048|004A|004B|004C|00C6|00D8|003E|005A|0058|0043|0056|0042|004E|004D|003B|003A|002A|005F|007B|007D|005C|007E" ;
-Min["Danish (L)"]			="00BD|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002B|00B4|0071|0077|0065|0072|0074|0079|0075|0069|006F|0070|00E5|00A8|0061|0073|0064|0066|0067|0068|006A|006B|006C|00E6|00F8|003C|007A|0078|0063|0076|0062|006E|006D|002C|002E|0027|002D|005B|005D|007C|0040" ;
-Maj["Farsi"]				="0020|0021|0040|0023|0024|0025|005E|0026|002A|0029|0028|005F|002B|0020|0020|0020|0020|0020|0020|0020|00F7|00D7|0020|007D|007B|0020|0020|005D|005B|0623|0622|0640|060C|061B|003A|0022|007E|0020|0020|0020|0020|0020|2019|003E|003C|061F|007C|0020|0020|0020|0020|0020"
-Min["Farsi"]				="067E|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0636|0635|062B|0642|0641|063A|0639|0647|062E|062D|062C|0686|0634|0633|064A|0628|0644|0627|062A|0646|0645|0643|06AF|0638|0637|0632|0631|0630|062F|0621|0648|002E|002F|005C|0020|0020|0020|0020|0020"
-Maj["Finnish (L)"]			="00A7|0021|0022|0023|00A4|0025|0026|002F|0028|0029|003D|003F|0060|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|00C5|005E|0041|0053|0044|0046|0047|0048|004A|004B|004C|00D6|00C4|003E|005A|0058|0043|0056|0042|004E|004D|003B|003A|002A|005F|007B|007D|005C|007E" ;
-Min["Finnish (L)"]			="00BD|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002B|00B4|0071|0077|0065|0072|0074|0079|0075|0069|006F|0070|00E5|00A8|0061|0073|0064|0066|0067|0068|006A|006B|006C|00F6|00E4|003C|007A|0078|0063|0076|0062|006E|006D|002C|002E|0027|002D|005B|005D|007C|0040" ;
-Maj["French (L)"]			="0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|00B0|002B|0023|0041|005A|0045|0052|0054|0059|0055|0049|004F|0050|00A8|0025|0051|0053|0044|0046|0047|0048|004A|004B|004C|004D|00B5|0057|0058|0043|0056|0042|004E|003F|002E|002F|00A7|003C|005B|007B|00A3|007E|0020" ;
-Min["French (L)"]			="0026|00E9|0022|0027|0028|002D|00E8|005F|00E7|00E0|0029|003D|0040|0061|007A|0065|0072|0074|0079|0075|0069|006F|0070|005E|00F9|0071|0073|0064|0066|0067|0068|006A|006B|006C|006D|002A|0077|0078|0063|0076|0062|006E|002C|003B|003A|0021|003E|005D|007D|0024|007E|0020" ;
-Maj["Greek"]				="007E|0021|0040|0023|0024|0025|0390|0026|03B0|0028|0029|005F|002B|003A|03A3|0395|03A1|03A4|03A5|0398|0399|039F|03A0|0386|038F|0391|03A3|0394|03A6|0393|0397|039E|039A|039B|038C|0022|0396|03A7|03A8|03A9|0392|039D|039C|003C|003E|003F|0388|0389|038A|03AA|03AB|038E" ;
-Min["Greek"]				="0060|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|003B|03C2|03B5|03C1|03C4|03C5|03B8|03B9|03BF|03C0|03AC|03CE|03B1|03C3|03B4|03C6|03B3|03B7|03BE|03BA|03BB|03CC|0027|03B6|03C7|03C8|03C9|03B2|03BD|03BC|002C|002E|002F|03AD|03AE|03AF|03CA|03CB|03CD" ;
-Maj["Hebrew"]				="007E|0021|0040|0023|0024|0025|005E|0026|002A|0028|0029|005F|002B|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|007B|007D|0041|0053|0044|0046|0047|0048|004A|004B|004C|003A|0022|005A|0058|0043|0056|0042|004E|004D|003C|003E|003F|0020|0020|0020|0020|0020|0020" ;
-Min["Hebrew"]				="0060|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|002F|0027|05E7|05E8|05D0|05D8|05D5|05DF|05DD|05E4|005B|005D|05E9|05D3|05D2|05DB|05E2|05D9|05D7|05DC|05DA|05E3|002C|05D6|05E1|05D1|05D4|05E0|05DE|05E6|05EA|05E5|002E|0020|0020|0020|0020|0020|0020" ;
-Maj["Hungarian (L)"]		="00A7|0027|0022|002B|0021|0025|002F|003D|0028|0029|00ED|00DC|00D3|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|0150|00DA|0041|0053|0044|0046|0047|0048|004A|004B|004C|00C9|00C1|0170|00CD|0059|0058|0043|0056|0042|004E|004D|003F|002E|003A|002D|005F|007B|007D" ;
-Min["Hungarian (L)"]		="0030|0031|0032|0033|0034|0035|0036|0037|0038|0039|00F6|00FC|00F3|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|0151|00FA|0061|0073|0064|0066|0067|0068|006A|006B|006C|00E9|00E1|0171|00ED|0079|0078|0063|0076|0062|006E|006D|002C|002E|003A|002D|005F|007B|007D" ;
-Maj["Diacritical (L)"]		="0060|00B4|005E|00A8|007E|00B0|00B7|00B8|00AF|02D9|02DB|02C7|02D8|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|00C6|02DD|0041|0053|0044|0046|0047|0048|004A|004B|004C|0141|0152|0059|0058|0043|0056|0042|004E|004D|01A0|01AF|00D8|0126|0110|0132|00DE|00D0|00DF" ;
-Min["Diacritical (L)"]		="0060|00B4|005E|00A8|007E|00B0|00B7|00B8|00AF|02D9|02DB|02C7|02D8|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|00E6|02DD|0061|0073|0064|0066|0067|0068|006A|006B|006C|0142|0153|0079|0078|0063|0076|0062|006E|006D|01A1|01B0|00F8|0127|0111|0133|00FE|00F0|00DF" ;
-Maj["Macedonian (C)"]		="007E|0021|201E|201C|2019|0025|2018|0026|002A|0028|0029|005F|002B|0409|040A|0415|0420|0422|0405|0423|0418|041E|041F|0428|0403|0410|0421|0414|0424|0413|0425|0408|041A|041B|0427|040C|0401|0417|040F|0426|0412|0411|041D|041C|0416|003B|003A|003F|002A|005F|007B|007D" ;
-Min["Macedonian (C)"]		="0060|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0459|045A|0435|0440|0442|0455|0443|0438|043E|043F|0448|0453|0430|0441|0434|0444|0433|0445|0458|043A|043B|0447|045C|0451|0437|045F|0446|0432|0431|043D|043C|0436|002C|002E|002F|0027|002D|005B|005D" ;
-Maj["Norwegian (L)"]		="00A7|0021|0022|0023|00A4|0025|0026|002F|0028|0029|003D|003F|0060|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|00C5|005E|0041|0053|0044|0046|0047|0048|004A|004B|00D8|00C6|00C4|003E|005A|0058|0043|0056|0042|004E|004D|003B|003A|002A|005F|007B|007D|005C|007E" ;
-Min["Norwegian (L)"]		="00BD|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002B|00B4|0071|0077|0065|0072|0074|0079|0075|0069|006F|0070|00E5|00A8|0061|0073|0064|0066|0067|0068|006A|006B|00F8|00E6|00E4|003C|007A|0078|0063|0076|0062|006E|006D|002C|002E|0027|002D|005B|005D|007C|0040" ;
-Maj["Polish (L)"]			="002A|0021|0022|0023|00A4|0025|0026|002F|0028|0029|003D|003F|017A|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|0144|0107|0041|0053|0044|0046|0047|0048|004A|004B|004C|0141|0119|0059|0058|0043|0056|0042|004E|004D|003B|003A|005F|003C|005B|007B|02D9|00B4|02DB" ;
-Min["Polish (L)"]			="0027|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002B|00F3|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|017C|015B|0061|0073|0064|0066|0067|0068|006A|006B|006C|0142|0105|0079|0078|0063|0076|0062|006E|006D|002C|002E|002D|003E|005D|007D|02D9|00B4|02DB" ;
-Maj["Russian (C)"]			="0401|0021|0040|0023|2116|0025|005E|0026|002A|0028|0029|005F|002B|0419|0426|0423|041A|0415|041D|0413|0428|0429|0417|0425|042A|0424|042B|0412|0410|041F|0420|041E|041B|0414|0416|042D|042F|0427|0421|041C|0418|0422|042C|0411|042E|003E|002E|003A|0022|005B|005D|003F" ;
-Min["Russian (C)"]			="0451|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0439|0446|0443|043A|0435|043D|0433|0448|0449|0437|0445|044A|0444|044B|0432|0430|043F|0440|043E|043B|0434|0436|044D|044F|0447|0441|043C|0438|0442|044C|0431|044E|003C|002C|003B|0027|007B|007D|002F" ;
-Maj["Serbian (C)"]			="007E|0021|0022|0023|0024|0025|0026|002F|0028|0029|003D|003F|002A|0409|040A|0415|0420|0422|0417|0423|0418|041E|041F|0428|0402|0410|0421|0414|0424|0413|0425|0408|041A|041B|0427|040B|003E|0405|040F|0426|0412|0411|041D|041C|0416|003A|005F|002E|003A|0022|005B|005D" ;
-Min["Serbian (C)"]			="0060|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0027|002B|0459|045A|0435|0440|0442|0437|0443|0438|043E|043F|0448|0452|0430|0441|0434|0444|0433|0445|0458|043A|043B|0447|045B|003C|0455|045F|0446|0432|0431|043D|043C|0436|002E|002D|002C|003B|0027|007B|007D" ;
-Maj["Serbian (L)"]			="007E|0021|0022|0023|0024|0025|0026|002F|0028|0029|003D|003F|002A|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|0160|0110|0041|0053|0044|0046|0047|0048|004A|004B|004C|010C|0106|003E|0059|0058|0043|0056|0042|004E|004D|017D|003A|005F|002E|003A|0022|005B|005D" ;
-Min["Serbian (L)"]			="201A|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0027|002B|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|0161|0111|0061|0073|0064|0066|0067|0068|006A|006B|006C|010D|0107|003C|0079|0078|0063|0076|0062|006E|006D|017E|002E|002D|002C|003B|0027|007B|007D" ;
-Maj["Slovak (L)"]			="00B0|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0025|02C7|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|002F|0028|0041|0053|0044|0046|0047|0048|004A|004B|004C|0022|0021|0059|0058|0043|0056|0042|004E|004D|003F|003A|005F|003C|005B|010F|0029|002A|0020" ;
-Min["Slovak (L)"]			="003B|002B|013E|0161|010D|0165|017E|00FD|00E1|00ED|00E9|003D|00B4|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|00FA|00E4|0061|0073|0064|0066|0067|0068|006A|006B|006C|00F4|00A7|0079|0078|0063|0076|0062|006E|006D|002C|002E|002D|003E|005D|00F3|0148|0026|0020" ;
-Maj["Spanish (L)"]			="00AA|0021|0022|00B7|0024|0025|0026|002F|0028|0029|003D|003F|00BF|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|005E|00A8|0041|0053|0044|0046|0047|0048|004A|004B|004C|00D1|00C7|005A|0058|0043|0056|0042|004E|004D|003B|003A|005F|003E|007C|0040|0023|007E|002A" ;
-Min["Spanish (L)"]			="00BA|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0027|00A1|0071|0077|0065|0072|0074|0079|0075|0069|006F|0070|0060|00B4|0061|0073|0064|0066|0067|0068|006A|006B|006C|00F1|00E7|007A|0078|0063|0076|0062|006E|006D|002C|002E|002D|003C|005C|0040|0023|007E|002B" ;
-Maj["Ukrainian (C)"]		="0401|0021|0040|0023|2116|0025|005E|0026|002A|0028|0029|005F|002B|0419|0426|0423|041A|0415|041D|0413|0428|0429|0417|0425|0407|0424|0406|0412|0410|041F|0420|041E|041B|0414|0416|0404|0490|042F|0427|0421|041C|0418|0422|042C|0411|042E|002E|003A|0022|003C|003E|003F" ;
-Min["Ukrainian (C)"]		="0451|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0439|0446|0443|043A|0435|043D|0433|0448|0449|0437|0445|0457|0444|0456|0432|0430|043F|0440|043E|043B|0434|0436|0454|0491|044F|0447|0441|043C|0438|0442|044C|0431|044E|002C|003B|0027|007B|007D|002F" ;
-Maj["Vietnamese (L)"]		="007E|0021|0040|0023|0024|0025|005E|0026|002A|0028|0029|005F|002B|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|01AF|01A0|0041|0053|0044|0046|0047|0048|004A|004B|004C|0102|00C2|005A|0058|0043|0056|0042|004E|004D|00CA|00D4|0110|003C|003E|003F|007D|003A|0022" ;
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: data.js
+ * 	Scripts for the fck_universalkey.html page.
+ * 	Definition des 104 caracteres en hexa unicode.
+ * 
+ * File Authors:
+ * 		Michel Staelens (michel.staelens at wanadoo.fr)
+ * 		Abdul-Aziz Al-Oraij (top7up at hotmail.com)
+ */
+
+var Maj = new Array() ;
+var Min = new Array() ;
+
+Maj["Arabic"]				="0651|0021|0040|0023|0024|0025|005E|0026|002A|0029|0028|005F|002B|064E|064B|064F|064C|0625|0625|2018|00F7|00D7|061B|003C|003E|0650|064D|005D|005B|0623|0623|0640|060C|002F|003A|0022|007E|0652|007D|007B|0622|0622|2019|002C|002E|061F|007C|0020|0020|0020|0020|0020" ;
+Min["Arabic"]				="0630|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0636|0635|062B|0642|0641|063A|0639|0647|062E|062D|062C|062F|0634|0633|064A|0628|0644|0627|062A|0646|0645|0643|0637|0626|0621|0624|0631|0644|0627|0649|0629|0648|0632|0638|005C|0020|0020|0020|0020" ;
+Maj["Belarusian (C)"]		="0401|0021|0022|2116|003B|0025|003A|003F|002A|0028|0029|005F|002B|0419|0426|0423|041A|0415|041D|0413|0428|040E|0417|0425|0027|0424|042B|0412|0410|041F|0420|041E|041B|0414|0416|042D|042F|0427|0421|041C|0406|0422|042C|0411|042E|002C|0020|0020|0020|0020|0020|0020" ;
+Min["Belarusian (C)"]		="0451|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0439|0446|0443|043A|0435|043D|0433|0448|045E|0437|0445|0027|0444|044B|0432|0430|043F|0440|043E|043B|0434|0436|044D|044F|0447|0441|043C|0456|0442|044C|0431|044E|002E|0020|0020|0020|0020|0020|0020" ;
+Maj["Bulgarian (C)"]		="007E|0021|003F|002B|0022|0025|003D|003A|002F|005F|2116|0406|0056|044B|0423|0415|0418|0428|0429|041A|0421|0414|0417|0426|00A7|042C|042F|0410|041E|0416|0413|0422|041D|0412|041C|0427|042E|0419|042A|042D|0424|0425|041F|0420|041B|0411|0029|0020|0020|0020|0020|0020" ;
+Min["Bulgarian (C)"]		="0060|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|002E|002C|0443|0435|0438|0448|0449|043A|0441|0434|0437|0446|003B|044C|044F|0430|043E|0436|0433|0442|043D|0432|043C|0447|044E|0439|044A|044D|0444|0445|043F|0440|043B|0431|0028|0020|0020|0020|0020|0020" ;
+Maj["Croatian (L)"]			="00B8|0021|0022|0023|0024|0025|0026|002F|0028|0029|003D|003F|00A8|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|0160|0110|0041|0053|0044|0046|0047|0048|004A|004B|004C|010C|0106|0059|0058|0043|0056|0042|004E|004D|017D|003B|003A|003C|003E|005F|002D|002A|002B" ;
+Min["Croatian (L)"]			="00B8|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0027|00A8|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|0161|0111|0061|0073|0064|0066|0067|0068|006A|006B|006C|010D|0107|0079|0078|0063|0076|0062|006E|006D|017E|002C|002E|003C|003E|005F|002D|002A|002B" ;
+Maj["Czech (L)"]			="00B0|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0025|02C7|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|002F|0028|0041|0053|0044|0046|0047|0048|004A|004B|004C|0022|0027|0059|0058|0043|0056|0042|004E|004D|003F|003A|005F|005B|007B|0021|0020|0148|010F" ;
+Min["Czech (L)"]			="003B|002B|011B|0161|010D|0159|017E|00FD|00E1|00ED|00E9|003D|00B4|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|00FA|0029|0061|0073|0064|0066|0067|0068|006A|006B|006C|016F|00A7|0079|0078|0063|0076|0062|006E|006D|002C|002E|002D|005D|007D|00A8|0040|00F3|0165" ;
+Maj["Danish (L)"]			="00A7|0021|0022|0023|00A4|0025|0026|002F|0028|0029|003D|003F|0060|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|00C5|005E|0041|0053|0044|0046|0047|0048|004A|004B|004C|00C6|00D8|003E|005A|0058|0043|0056|0042|004E|004D|003B|003A|002A|005F|007B|007D|005C|007E" ;
+Min["Danish (L)"]			="00BD|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002B|00B4|0071|0077|0065|0072|0074|0079|0075|0069|006F|0070|00E5|00A8|0061|0073|0064|0066|0067|0068|006A|006B|006C|00E6|00F8|003C|007A|0078|0063|0076|0062|006E|006D|002C|002E|0027|002D|005B|005D|007C|0040" ;
+Maj["Farsi"]				="0020|0021|0040|0023|0024|0025|005E|0026|002A|0029|0028|005F|002B|0020|0020|0020|0020|0020|0020|0020|00F7|00D7|0020|007D|007B|0020|0020|005D|005B|0623|0622|0640|060C|061B|003A|0022|007E|0020|0020|0020|0020|0020|2019|003E|003C|061F|007C|0020|0020|0020|0020|0020"
+Min["Farsi"]				="067E|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0636|0635|062B|0642|0641|063A|0639|0647|062E|062D|062C|0686|0634|0633|064A|0628|0644|0627|062A|0646|0645|0643|06AF|0638|0637|0632|0631|0630|062F|0621|0648|002E|002F|005C|0020|0020|0020|0020|0020"
+Maj["Finnish (L)"]			="00A7|0021|0022|0023|00A4|0025|0026|002F|0028|0029|003D|003F|0060|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|00C5|005E|0041|0053|0044|0046|0047|0048|004A|004B|004C|00D6|00C4|003E|005A|0058|0043|0056|0042|004E|004D|003B|003A|002A|005F|007B|007D|005C|007E" ;
+Min["Finnish (L)"]			="00BD|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002B|00B4|0071|0077|0065|0072|0074|0079|0075|0069|006F|0070|00E5|00A8|0061|0073|0064|0066|0067|0068|006A|006B|006C|00F6|00E4|003C|007A|0078|0063|0076|0062|006E|006D|002C|002E|0027|002D|005B|005D|007C|0040" ;
+Maj["French (L)"]			="0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|00B0|002B|0023|0041|005A|0045|0052|0054|0059|0055|0049|004F|0050|00A8|0025|0051|0053|0044|0046|0047|0048|004A|004B|004C|004D|00B5|0057|0058|0043|0056|0042|004E|003F|002E|002F|00A7|003C|005B|007B|00A3|007E|0020" ;
+Min["French (L)"]			="0026|00E9|0022|0027|0028|002D|00E8|005F|00E7|00E0|0029|003D|0040|0061|007A|0065|0072|0074|0079|0075|0069|006F|0070|005E|00F9|0071|0073|0064|0066|0067|0068|006A|006B|006C|006D|002A|0077|0078|0063|0076|0062|006E|002C|003B|003A|0021|003E|005D|007D|0024|007E|0020" ;
+Maj["Greek"]				="007E|0021|0040|0023|0024|0025|0390|0026|03B0|0028|0029|005F|002B|003A|03A3|0395|03A1|03A4|03A5|0398|0399|039F|03A0|0386|038F|0391|03A3|0394|03A6|0393|0397|039E|039A|039B|038C|0022|0396|03A7|03A8|03A9|0392|039D|039C|003C|003E|003F|0388|0389|038A|03AA|03AB|038E" ;
+Min["Greek"]				="0060|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|003B|03C2|03B5|03C1|03C4|03C5|03B8|03B9|03BF|03C0|03AC|03CE|03B1|03C3|03B4|03C6|03B3|03B7|03BE|03BA|03BB|03CC|0027|03B6|03C7|03C8|03C9|03B2|03BD|03BC|002C|002E|002F|03AD|03AE|03AF|03CA|03CB|03CD" ;
+Maj["Hebrew"]				="007E|0021|0040|0023|0024|0025|005E|0026|002A|0028|0029|005F|002B|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|007B|007D|0041|0053|0044|0046|0047|0048|004A|004B|004C|003A|0022|005A|0058|0043|0056|0042|004E|004D|003C|003E|003F|0020|0020|0020|0020|0020|0020" ;
+Min["Hebrew"]				="0060|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|002F|0027|05E7|05E8|05D0|05D8|05D5|05DF|05DD|05E4|005B|005D|05E9|05D3|05D2|05DB|05E2|05D9|05D7|05DC|05DA|05E3|002C|05D6|05E1|05D1|05D4|05E0|05DE|05E6|05EA|05E5|002E|0020|0020|0020|0020|0020|0020" ;
+Maj["Hungarian (L)"]		="00A7|0027|0022|002B|0021|0025|002F|003D|0028|0029|00ED|00DC|00D3|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|0150|00DA|0041|0053|0044|0046|0047|0048|004A|004B|004C|00C9|00C1|0170|00CD|0059|0058|0043|0056|0042|004E|004D|003F|002E|003A|002D|005F|007B|007D" ;
+Min["Hungarian (L)"]		="0030|0031|0032|0033|0034|0035|0036|0037|0038|0039|00F6|00FC|00F3|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|0151|00FA|0061|0073|0064|0066|0067|0068|006A|006B|006C|00E9|00E1|0171|00ED|0079|0078|0063|0076|0062|006E|006D|002C|002E|003A|002D|005F|007B|007D" ;
+Maj["Diacritical (L)"]		="0060|00B4|005E|00A8|007E|00B0|00B7|00B8|00AF|02D9|02DB|02C7|02D8|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|00C6|02DD|0041|0053|0044|0046|0047|0048|004A|004B|004C|0141|0152|0059|0058|0043|0056|0042|004E|004D|01A0|01AF|00D8|0126|0110|0132|00DE|00D0|00DF" ;
+Min["Diacritical (L)"]		="0060|00B4|005E|00A8|007E|00B0|00B7|00B8|00AF|02D9|02DB|02C7|02D8|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|00E6|02DD|0061|0073|0064|0066|0067|0068|006A|006B|006C|0142|0153|0079|0078|0063|0076|0062|006E|006D|01A1|01B0|00F8|0127|0111|0133|00FE|00F0|00DF" ;
+Maj["Macedonian (C)"]		="007E|0021|201E|201C|2019|0025|2018|0026|002A|0028|0029|005F|002B|0409|040A|0415|0420|0422|0405|0423|0418|041E|041F|0428|0403|0410|0421|0414|0424|0413|0425|0408|041A|041B|0427|040C|0401|0417|040F|0426|0412|0411|041D|041C|0416|003B|003A|003F|002A|005F|007B|007D" ;
+Min["Macedonian (C)"]		="0060|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0459|045A|0435|0440|0442|0455|0443|0438|043E|043F|0448|0453|0430|0441|0434|0444|0433|0445|0458|043A|043B|0447|045C|0451|0437|045F|0446|0432|0431|043D|043C|0436|002C|002E|002F|0027|002D|005B|005D" ;
+Maj["Norwegian (L)"]		="00A7|0021|0022|0023|00A4|0025|0026|002F|0028|0029|003D|003F|0060|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|00C5|005E|0041|0053|0044|0046|0047|0048|004A|004B|00D8|00C6|00C4|003E|005A|0058|0043|0056|0042|004E|004D|003B|003A|002A|005F|007B|007D|005C|007E" ;
+Min["Norwegian (L)"]		="00BD|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002B|00B4|0071|0077|0065|0072|0074|0079|0075|0069|006F|0070|00E5|00A8|0061|0073|0064|0066|0067|0068|006A|006B|00F8|00E6|00E4|003C|007A|0078|0063|0076|0062|006E|006D|002C|002E|0027|002D|005B|005D|007C|0040" ;
+Maj["Polish (L)"]			="002A|0021|0022|0023|00A4|0025|0026|002F|0028|0029|003D|003F|017A|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|0144|0107|0041|0053|0044|0046|0047|0048|004A|004B|004C|0141|0119|0059|0058|0043|0056|0042|004E|004D|003B|003A|005F|003C|005B|007B|02D9|00B4|02DB" ;
+Min["Polish (L)"]			="0027|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002B|00F3|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|017C|015B|0061|0073|0064|0066|0067|0068|006A|006B|006C|0142|0105|0079|0078|0063|0076|0062|006E|006D|002C|002E|002D|003E|005D|007D|02D9|00B4|02DB" ;
+Maj["Russian (C)"]			="0401|0021|0040|0023|2116|0025|005E|0026|002A|0028|0029|005F|002B|0419|0426|0423|041A|0415|041D|0413|0428|0429|0417|0425|042A|0424|042B|0412|0410|041F|0420|041E|041B|0414|0416|042D|042F|0427|0421|041C|0418|0422|042C|0411|042E|003E|002E|003A|0022|005B|005D|003F" ;
+Min["Russian (C)"]			="0451|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0439|0446|0443|043A|0435|043D|0433|0448|0449|0437|0445|044A|0444|044B|0432|0430|043F|0440|043E|043B|0434|0436|044D|044F|0447|0441|043C|0438|0442|044C|0431|044E|003C|002C|003B|0027|007B|007D|002F" ;
+Maj["Serbian (C)"]			="007E|0021|0022|0023|0024|0025|0026|002F|0028|0029|003D|003F|002A|0409|040A|0415|0420|0422|0417|0423|0418|041E|041F|0428|0402|0410|0421|0414|0424|0413|0425|0408|041A|041B|0427|040B|003E|0405|040F|0426|0412|0411|041D|041C|0416|003A|005F|002E|003A|0022|005B|005D" ;
+Min["Serbian (C)"]			="0060|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0027|002B|0459|045A|0435|0440|0442|0437|0443|0438|043E|043F|0448|0452|0430|0441|0434|0444|0433|0445|0458|043A|043B|0447|045B|003C|0455|045F|0446|0432|0431|043D|043C|0436|002E|002D|002C|003B|0027|007B|007D" ;
+Maj["Serbian (L)"]			="007E|0021|0022|0023|0024|0025|0026|002F|0028|0029|003D|003F|002A|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|0160|0110|0041|0053|0044|0046|0047|0048|004A|004B|004C|010C|0106|003E|0059|0058|0043|0056|0042|004E|004D|017D|003A|005F|002E|003A|0022|005B|005D" ;
+Min["Serbian (L)"]			="201A|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0027|002B|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|0161|0111|0061|0073|0064|0066|0067|0068|006A|006B|006C|010D|0107|003C|0079|0078|0063|0076|0062|006E|006D|017E|002E|002D|002C|003B|0027|007B|007D" ;
+Maj["Slovak (L)"]			="00B0|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0025|02C7|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|002F|0028|0041|0053|0044|0046|0047|0048|004A|004B|004C|0022|0021|0059|0058|0043|0056|0042|004E|004D|003F|003A|005F|003C|005B|010F|0029|002A|0020" ;
+Min["Slovak (L)"]			="003B|002B|013E|0161|010D|0165|017E|00FD|00E1|00ED|00E9|003D|00B4|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|00FA|00E4|0061|0073|0064|0066|0067|0068|006A|006B|006C|00F4|00A7|0079|0078|0063|0076|0062|006E|006D|002C|002E|002D|003E|005D|00F3|0148|0026|0020" ;
+Maj["Spanish (L)"]			="00AA|0021|0022|00B7|0024|0025|0026|002F|0028|0029|003D|003F|00BF|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|005E|00A8|0041|0053|0044|0046|0047|0048|004A|004B|004C|00D1|00C7|005A|0058|0043|0056|0042|004E|004D|003B|003A|005F|003E|007C|0040|0023|007E|002A" ;
+Min["Spanish (L)"]			="00BA|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0027|00A1|0071|0077|0065|0072|0074|0079|0075|0069|006F|0070|0060|00B4|0061|0073|0064|0066|0067|0068|006A|006B|006C|00F1|00E7|007A|0078|0063|0076|0062|006E|006D|002C|002E|002D|003C|005C|0040|0023|007E|002B" ;
+Maj["Ukrainian (C)"]		="0401|0021|0040|0023|2116|0025|005E|0026|002A|0028|0029|005F|002B|0419|0426|0423|041A|0415|041D|0413|0428|0429|0417|0425|0407|0424|0406|0412|0410|041F|0420|041E|041B|0414|0416|0404|0490|042F|0427|0421|041C|0418|0422|042C|0411|042E|002E|003A|0022|003C|003E|003F" ;
+Min["Ukrainian (C)"]		="0451|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0439|0446|0443|043A|0435|043D|0433|0448|0449|0437|0445|0457|0444|0456|0432|0430|043F|0440|043E|043B|0434|0436|0454|0491|044F|0447|0441|043C|0438|0442|044C|0431|044E|002C|003B|0027|007B|007D|002F" ;
+Maj["Vietnamese (L)"]		="007E|0021|0040|0023|0024|0025|005E|0026|002A|0028|0029|005F|002B|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|01AF|01A0|0041|0053|0044|0046|0047|0048|004A|004B|004C|0102|00C2|005A|0058|0043|0056|0042|004E|004D|00CA|00D4|0110|003C|003E|003F|007D|003A|0022" ;
 Min["Vietnamese (L)"]		="20AB|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0071|0077|0065|0072|0074|0079|0075|0069|006F|0070|01B0|01A1|0061|0073|0064|0066|0067|0068|006A|006B|006C|0103|00E2|007A|0078|0063|0076|0062|006E|006D|00EA|00F4|0111|002C|002E|002F|007B|003B|0027" ;
\ No newline at end of file

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_universalkey/diacritic.js
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_universalkey/diacritic.js	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_universalkey/diacritic.js	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,65 +1,65 @@
-/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2006 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: diacritic.js
- * 	Scripts for the fck_universalkey.html page.
- * 
- * File Authors:
- * 		Michel Staelens (michel.staelens at wanadoo.fr)
- * 		Abdul-Aziz Al-Oraij (top7up at hotmail.com)
- */
-
-var dia = new Array()
-
-dia["0060"]=new Array();dia["00B4"]=new Array();dia["005E"]=new Array();dia["00A8"]=new Array();dia["007E"]=new Array();dia["00B0"]=new Array();dia["00B7"]=new Array();dia["00B8"]=new Array();dia["00AF"]=new Array();dia["02D9"]=new Array();dia["02DB"]=new Array();dia["02C7"]=new Array();dia["02D8"]=new Array();dia["02DD"]=new Array();dia["031B"]=new Array();
-dia["0060"]["0061"]="00E0";dia["00B4"]["0061"]="00E1";dia["005E"]["0061"]="00E2";dia["00A8"]["0061"]="00E4";dia["007E"]["0061"]="00E3";dia["00B0"]["0061"]="00E5";dia["00AF"]["0061"]="0101";dia["02DB"]["0061"]="0105";dia["02D8"]["0061"]="0103";
-dia["00B4"]["0063"]="0107";dia["005E"]["0063"]="0109";dia["00B8"]["0063"]="00E7";dia["02D9"]["0063"]="010B";dia["02C7"]["0063"]="010D";
-dia["02C7"]["0064"]="010F";
-dia["0060"]["0065"]="00E8";dia["00B4"]["0065"]="00E9";dia["005E"]["0065"]="00EA";dia["00A8"]["0065"]="00EB";dia["00AF"]["0065"]="0113";dia["02D9"]["0065"]="0117";dia["02DB"]["0065"]="0119";dia["02C7"]["0065"]="011B";dia["02D8"]["0065"]="0115";
-dia["005E"]["0067"]="011D";dia["00B8"]["0067"]="0123";dia["02D9"]["0067"]="0121";dia["02D8"]["0067"]="011F";
-dia["005E"]["0068"]="0125";
-dia["0060"]["0069"]="00EC";dia["00B4"]["0069"]="00ED";dia["005E"]["0069"]="00EE";dia["00A8"]["0069"]="00EF";dia["007E"]["0069"]="0129";dia["00AF"]["0069"]="012B";dia["02DB"]["0069"]="012F";dia["02D8"]["0069"]="012D";
-dia["005E"]["006A"]="0135";
-dia["00B8"]["006B"]="0137";
-dia["00B4"]["006C"]="013A";dia["00B7"]["006C"]="0140";dia["00B8"]["006C"]="013C";dia["02C7"]["006C"]="013E";
-dia["00B4"]["006E"]="0144";dia["007E"]["006E"]="00F1";dia["00B8"]["006E"]="0146";dia["02D8"]["006E"]="0148";
-dia["0060"]["006F"]="00F2";dia["00B4"]["006F"]="00F3";dia["005E"]["006F"]="00F4";dia["00A8"]["006F"]="00F6";dia["007E"]["006F"]="00F5";dia["00AF"]["006F"]="014D";dia["02D8"]["006F"]="014F";dia["02DD"]["006F"]="0151";dia["031B"]["006F"]="01A1";
-dia["00B4"]["0072"]="0155";dia["00B8"]["0072"]="0157";dia["02C7"]["0072"]="0159";
-dia["00B4"]["0073"]="015B";dia["005E"]["0073"]="015D";dia["00B8"]["0073"]="015F";dia["02C7"]["0073"]="0161";
-dia["00B8"]["0074"]="0163";dia["02C7"]["0074"]="0165";
-dia["0060"]["0075"]="00F9";dia["00B4"]["0075"]="00FA";dia["005E"]["0075"]="00FB";dia["00A8"]["0075"]="00FC";dia["007E"]["0075"]="0169";dia["00B0"]["0075"]="016F";dia["00AF"]["0075"]="016B";dia["02DB"]["0075"]="0173";dia["02D8"]["0075"]="016D";dia["02DD"]["0075"]="0171";dia["031B"]["0075"]="01B0";
-dia["005E"]["0077"]="0175";
-dia["00B4"]["0079"]="00FD";dia["005E"]["0079"]="0177";dia["00A8"]["0079"]="00FF";
-dia["00B4"]["007A"]="017A";dia["02D9"]["007A"]="017C";dia["02C7"]["007A"]="017E";
-dia["00B4"]["00E6"]="01FD";
-dia["00B4"]["00F8"]="01FF";
-dia["0060"]["0041"]="00C0";dia["00B4"]["0041"]="00C1";dia["005E"]["0041"]="00C2";dia["00A8"]["0041"]="00C4";dia["007E"]["0041"]="00C3";dia["00B0"]["0041"]="00C5";dia["00AF"]["0041"]="0100";dia["02DB"]["0041"]="0104";dia["02D8"]["0041"]="0102";
-dia["00B4"]["0043"]="0106";dia["005E"]["0043"]="0108";dia["00B8"]["0043"]="00C7";dia["02D9"]["0043"]="010A";dia["02C7"]["0043"]="010C";
-dia["02C7"]["0044"]="010E";
-dia["0060"]["0045"]="00C8";dia["00B4"]["0045"]="00C9";dia["005E"]["0045"]="00CA";dia["00A8"]["0045"]="00CB";dia["00AF"]["0045"]="0112";dia["02D9"]["0045"]="0116";dia["02DB"]["0045"]="0118";dia["02C7"]["0045"]="011A";dia["02D8"]["0045"]="0114";
-dia["005E"]["0047"]="011C";dia["00B8"]["0047"]="0122";dia["02D9"]["0047"]="0120";dia["02D8"]["0047"]="011E";
-dia["005E"]["0048"]="0124";
-dia["0060"]["0049"]="00CC";dia["00B4"]["0049"]="00CD";dia["005E"]["0049"]="00CE";dia["00A8"]["0049"]="00CF";dia["007E"]["0049"]="0128";dia["00AF"]["0049"]="012A";dia["02D9"]["0049"]="0130";dia["02DB"]["0049"]="012E";dia["02D8"]["0049"]="012C";
-dia["005E"]["004A"]="0134";
-dia["00B8"]["004B"]="0136";
-dia["00B4"]["004C"]="0139";dia["00B7"]["004C"]="013F";dia["00B8"]["004C"]="013B";dia["02C7"]["004C"]="013D";
-dia["00B4"]["004E"]="0143";dia["007E"]["004E"]="00D1";dia["00B8"]["004E"]="0145";dia["02D8"]["004E"]="0147";
-dia["0060"]["004F"]="00D2";dia["00B4"]["004F"]="00D3";dia["005E"]["004F"]="00D4";dia["00A8"]["004F"]="00D6";dia["007E"]["004F"]="00D5";dia["00AF"]["004F"]="014C";dia["02D8"]["004F"]="014E";dia["02DD"]["004F"]="0150";dia["031B"]["004F"]="01A0";
-dia["00B4"]["0052"]="0154";dia["00B8"]["0052"]="0156";dia["02C7"]["0052"]="0158";
-dia["00B4"]["0053"]="015A";dia["005E"]["0053"]="015C";dia["00B8"]["0053"]="015E";dia["02C7"]["0053"]="0160";
-dia["00B8"]["0054"]="0162";dia["02C7"]["0054"]="0164";
-dia["0060"]["0055"]="00D9";dia["00B4"]["0055"]="00DA";dia["005E"]["0055"]="00DB";dia["00A8"]["0055"]="00DC";dia["007E"]["0055"]="0168";dia["00B0"]["0055"]="016E";dia["00AF"]["0055"]="016A";dia["02DB"]["0055"]="0172";dia["02D8"]["0055"]="016C";dia["02DD"]["0055"]="0170";dia["031B"]["0055"]="01AF";
-dia["005E"]["0057"]="0174";
-dia["00B4"]["0059"]="00DD";dia["005E"]["0059"]="0176";dia["00A8"]["0059"]="0178";
-dia["00B4"]["005A"]="0179";dia["02D9"]["005A"]="017B";dia["02C7"]["005A"]="017D";
-dia["00B4"]["00C6"]="01FC";
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: diacritic.js
+ * 	Scripts for the fck_universalkey.html page.
+ * 
+ * File Authors:
+ * 		Michel Staelens (michel.staelens at wanadoo.fr)
+ * 		Abdul-Aziz Al-Oraij (top7up at hotmail.com)
+ */
+
+var dia = new Array()
+
+dia["0060"]=new Array();dia["00B4"]=new Array();dia["005E"]=new Array();dia["00A8"]=new Array();dia["007E"]=new Array();dia["00B0"]=new Array();dia["00B7"]=new Array();dia["00B8"]=new Array();dia["00AF"]=new Array();dia["02D9"]=new Array();dia["02DB"]=new Array();dia["02C7"]=new Array();dia["02D8"]=new Array();dia["02DD"]=new Array();dia["031B"]=new Array();
+dia["0060"]["0061"]="00E0";dia["00B4"]["0061"]="00E1";dia["005E"]["0061"]="00E2";dia["00A8"]["0061"]="00E4";dia["007E"]["0061"]="00E3";dia["00B0"]["0061"]="00E5";dia["00AF"]["0061"]="0101";dia["02DB"]["0061"]="0105";dia["02D8"]["0061"]="0103";
+dia["00B4"]["0063"]="0107";dia["005E"]["0063"]="0109";dia["00B8"]["0063"]="00E7";dia["02D9"]["0063"]="010B";dia["02C7"]["0063"]="010D";
+dia["02C7"]["0064"]="010F";
+dia["0060"]["0065"]="00E8";dia["00B4"]["0065"]="00E9";dia["005E"]["0065"]="00EA";dia["00A8"]["0065"]="00EB";dia["00AF"]["0065"]="0113";dia["02D9"]["0065"]="0117";dia["02DB"]["0065"]="0119";dia["02C7"]["0065"]="011B";dia["02D8"]["0065"]="0115";
+dia["005E"]["0067"]="011D";dia["00B8"]["0067"]="0123";dia["02D9"]["0067"]="0121";dia["02D8"]["0067"]="011F";
+dia["005E"]["0068"]="0125";
+dia["0060"]["0069"]="00EC";dia["00B4"]["0069"]="00ED";dia["005E"]["0069"]="00EE";dia["00A8"]["0069"]="00EF";dia["007E"]["0069"]="0129";dia["00AF"]["0069"]="012B";dia["02DB"]["0069"]="012F";dia["02D8"]["0069"]="012D";
+dia["005E"]["006A"]="0135";
+dia["00B8"]["006B"]="0137";
+dia["00B4"]["006C"]="013A";dia["00B7"]["006C"]="0140";dia["00B8"]["006C"]="013C";dia["02C7"]["006C"]="013E";
+dia["00B4"]["006E"]="0144";dia["007E"]["006E"]="00F1";dia["00B8"]["006E"]="0146";dia["02D8"]["006E"]="0148";
+dia["0060"]["006F"]="00F2";dia["00B4"]["006F"]="00F3";dia["005E"]["006F"]="00F4";dia["00A8"]["006F"]="00F6";dia["007E"]["006F"]="00F5";dia["00AF"]["006F"]="014D";dia["02D8"]["006F"]="014F";dia["02DD"]["006F"]="0151";dia["031B"]["006F"]="01A1";
+dia["00B4"]["0072"]="0155";dia["00B8"]["0072"]="0157";dia["02C7"]["0072"]="0159";
+dia["00B4"]["0073"]="015B";dia["005E"]["0073"]="015D";dia["00B8"]["0073"]="015F";dia["02C7"]["0073"]="0161";
+dia["00B8"]["0074"]="0163";dia["02C7"]["0074"]="0165";
+dia["0060"]["0075"]="00F9";dia["00B4"]["0075"]="00FA";dia["005E"]["0075"]="00FB";dia["00A8"]["0075"]="00FC";dia["007E"]["0075"]="0169";dia["00B0"]["0075"]="016F";dia["00AF"]["0075"]="016B";dia["02DB"]["0075"]="0173";dia["02D8"]["0075"]="016D";dia["02DD"]["0075"]="0171";dia["031B"]["0075"]="01B0";
+dia["005E"]["0077"]="0175";
+dia["00B4"]["0079"]="00FD";dia["005E"]["0079"]="0177";dia["00A8"]["0079"]="00FF";
+dia["00B4"]["007A"]="017A";dia["02D9"]["007A"]="017C";dia["02C7"]["007A"]="017E";
+dia["00B4"]["00E6"]="01FD";
+dia["00B4"]["00F8"]="01FF";
+dia["0060"]["0041"]="00C0";dia["00B4"]["0041"]="00C1";dia["005E"]["0041"]="00C2";dia["00A8"]["0041"]="00C4";dia["007E"]["0041"]="00C3";dia["00B0"]["0041"]="00C5";dia["00AF"]["0041"]="0100";dia["02DB"]["0041"]="0104";dia["02D8"]["0041"]="0102";
+dia["00B4"]["0043"]="0106";dia["005E"]["0043"]="0108";dia["00B8"]["0043"]="00C7";dia["02D9"]["0043"]="010A";dia["02C7"]["0043"]="010C";
+dia["02C7"]["0044"]="010E";
+dia["0060"]["0045"]="00C8";dia["00B4"]["0045"]="00C9";dia["005E"]["0045"]="00CA";dia["00A8"]["0045"]="00CB";dia["00AF"]["0045"]="0112";dia["02D9"]["0045"]="0116";dia["02DB"]["0045"]="0118";dia["02C7"]["0045"]="011A";dia["02D8"]["0045"]="0114";
+dia["005E"]["0047"]="011C";dia["00B8"]["0047"]="0122";dia["02D9"]["0047"]="0120";dia["02D8"]["0047"]="011E";
+dia["005E"]["0048"]="0124";
+dia["0060"]["0049"]="00CC";dia["00B4"]["0049"]="00CD";dia["005E"]["0049"]="00CE";dia["00A8"]["0049"]="00CF";dia["007E"]["0049"]="0128";dia["00AF"]["0049"]="012A";dia["02D9"]["0049"]="0130";dia["02DB"]["0049"]="012E";dia["02D8"]["0049"]="012C";
+dia["005E"]["004A"]="0134";
+dia["00B8"]["004B"]="0136";
+dia["00B4"]["004C"]="0139";dia["00B7"]["004C"]="013F";dia["00B8"]["004C"]="013B";dia["02C7"]["004C"]="013D";
+dia["00B4"]["004E"]="0143";dia["007E"]["004E"]="00D1";dia["00B8"]["004E"]="0145";dia["02D8"]["004E"]="0147";
+dia["0060"]["004F"]="00D2";dia["00B4"]["004F"]="00D3";dia["005E"]["004F"]="00D4";dia["00A8"]["004F"]="00D6";dia["007E"]["004F"]="00D5";dia["00AF"]["004F"]="014C";dia["02D8"]["004F"]="014E";dia["02DD"]["004F"]="0150";dia["031B"]["004F"]="01A0";
+dia["00B4"]["0052"]="0154";dia["00B8"]["0052"]="0156";dia["02C7"]["0052"]="0158";
+dia["00B4"]["0053"]="015A";dia["005E"]["0053"]="015C";dia["00B8"]["0053"]="015E";dia["02C7"]["0053"]="0160";
+dia["00B8"]["0054"]="0162";dia["02C7"]["0054"]="0164";
+dia["0060"]["0055"]="00D9";dia["00B4"]["0055"]="00DA";dia["005E"]["0055"]="00DB";dia["00A8"]["0055"]="00DC";dia["007E"]["0055"]="0168";dia["00B0"]["0055"]="016E";dia["00AF"]["0055"]="016A";dia["02DB"]["0055"]="0172";dia["02D8"]["0055"]="016C";dia["02DD"]["0055"]="0170";dia["031B"]["0055"]="01AF";
+dia["005E"]["0057"]="0174";
+dia["00B4"]["0059"]="00DD";dia["005E"]["0059"]="0176";dia["00A8"]["0059"]="0178";
+dia["00B4"]["005A"]="0179";dia["02D9"]["005A"]="017B";dia["02C7"]["005A"]="017D";
+dia["00B4"]["00C6"]="01FC";
 dia["00B4"]["00D8"]="01FE";
\ No newline at end of file

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_universalkey/dialogue.js
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_universalkey/dialogue.js	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_universalkey/dialogue.js	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,31 +1,31 @@
-/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2006 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: dialogue.js
- * 	Scripts for the fck_universalkey.html page.
- * 
- * File Authors:
- * 		Michel Staelens (michel.staelens at wanadoo.fr)
- * 		Bernadette Cierzniak
- * 		Abdul-Aziz Al-Oraij (top7up at hotmail.com)
- * 		Frederico Caldeira Knabben (fredck at fckeditor.net)
- */
-
-function afficher(txt)
-{
-	document.getElementById( 'uni_area' ).value = txt ;
-}
-
-function rechercher()
-{
-	return document.getElementById( 'uni_area' ).value ;
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: dialogue.js
+ * 	Scripts for the fck_universalkey.html page.
+ * 
+ * File Authors:
+ * 		Michel Staelens (michel.staelens at wanadoo.fr)
+ * 		Bernadette Cierzniak
+ * 		Abdul-Aziz Al-Oraij (top7up at hotmail.com)
+ * 		Frederico Caldeira Knabben (fredck at fckeditor.net)
+ */
+
+function afficher(txt)
+{
+	document.getElementById( 'uni_area' ).value = txt ;
+}
+
+function rechercher()
+{
+	return document.getElementById( 'uni_area' ).value ;
 }
\ No newline at end of file

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_universalkey/fck_universalkey.css
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_universalkey/fck_universalkey.css	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_universalkey/fck_universalkey.css	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,62 +1,62 @@
-/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2006 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: fck_universalkey.css
- * 	CSS styles for the Universal Keyboard.
- * 
- * File Authors:
- * 		Michel Staelens (michel.staelens at wanadoo.fr)
- * 		Bernadette Cierzniak
- * 		Abdul-Aziz Al-Oraij (top7up at hotmail.com)
- */
-
-BODY, TEXTAREA, INPUT, TD, SELECT
-{
-	font-family: Tahoma,verdana,arial,sans-serif;
-}
-DIV
-{
-	position: absolute;
-}
-.simple
-{
-	font-size: 11pt;
-}
-.double
-{
-	font-size: 9pt;
-}
-.simpledia
-{
-	color: red;
-	font-size: 11pt;
-}
-.doubledia
-{
-	color: red;
-	font-size: 9pt;
-}
-.action
-{
-	color: white;
-	font-size: 7pt;
-}
-.clavier
-{
-	color: blue;
-	font-size: 7pt;
-}
-.sign
-{
-	color: gray;
-	font-size: 7pt;
-}
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_universalkey.css
+ * 	CSS styles for the Universal Keyboard.
+ * 
+ * File Authors:
+ * 		Michel Staelens (michel.staelens at wanadoo.fr)
+ * 		Bernadette Cierzniak
+ * 		Abdul-Aziz Al-Oraij (top7up at hotmail.com)
+ */
+
+BODY, TEXTAREA, INPUT, TD, SELECT
+{
+	font-family: Tahoma,verdana,arial,sans-serif;
+}
+DIV
+{
+	position: absolute;
+}
+.simple
+{
+	font-size: 11pt;
+}
+.double
+{
+	font-size: 9pt;
+}
+.simpledia
+{
+	color: red;
+	font-size: 11pt;
+}
+.doubledia
+{
+	color: red;
+	font-size: 9pt;
+}
+.action
+{
+	color: white;
+	font-size: 7pt;
+}
+.clavier
+{
+	color: blue;
+	font-size: 7pt;
+}
+.sign
+{
+	color: gray;
+	font-size: 7pt;
+}

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_universalkey/multihexa.js
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_universalkey/multihexa.js	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_universalkey/multihexa.js	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,309 +1,309 @@
-/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2006 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: multihexa.js
- * 	Scripts for the fck_universalkey.html page.
- * 	Definition des 104 caracteres en hexa unicode.
- * 
- * File Authors:
- * 		Michel Staelens (michel.staelens at wanadoo.fr)
- * 		Bernadette Cierzniak
- * 		Abdul-Aziz Al-Oraij (top7up at hotmail.com)
- */
-
-var caps=0, lock=0, hexchars="0123456789ABCDEF", accent="0000", keydeb=0
-var key=new Array();j=0;for (i in Maj){key[j]=i;j++}
-var ns6=((!document.all)&&(document.getElementById))
-var ie=document.all
-
-var langue=getCk();
-if (langue==""){
-	langue=key[keydeb]
-}
-CarMaj=Maj[langue].split("|");CarMin=Min[langue].split("|")
-
-/*unikey*/
-var posUniKeyLeft=0, posUniKeyTop=0
-if (ns6){posUniKeyLeft=0;posUniKeyTop=60}
-else if (ie){posUniKeyLeft=0;posUniKeyTop=60}
-tracer("fond",posUniKeyLeft,posUniKeyTop,'<img src="fck_universalkey/keyboard_layout.gif" width=404 height=152 border="0"><br />',"sign")
-/*touches*/
-var posX=new Array(0,28,56,84,112,140,168,196,224,252,280,308,336,42,70,98,126,154,182,210,238,266,294,322,350,50,78,106,134,162,190,218,246,274,302,330,64,92,120,148,176,204,232,260,288,316,28,56,84,294,322,350)
-var posY=new Array(14,14,14,14,14,14,14,14,14,14,14,14,14,42,42,42,42,42,42,42,42,42,42,42,42,70,70,70,70,70,70,70,70,70,70,70,98,98,98,98,98,98,98,98,98,98,126,126,126,126,126,126)
-var nbTouches=52
-for (i=0;i<nbTouches;i++){
-	CarMaj[i]=((CarMaj[i]!="0000")?(fromhexby4tocar(CarMaj[i])):"")
-	CarMin[i]=((CarMin[i]!="0000")?(fromhexby4tocar(CarMin[i])):"")
-	if (CarMaj[i]==CarMin[i].toUpperCase()){
-		cecar=((lock==0)&&(caps==0)?CarMin[i]:CarMaj[i])
-		tracer("car"+i,posUniKeyLeft+6+posX[i],posUniKeyTop+3+posY[i],cecar,((dia[hexa(cecar)]!=null)?"simpledia":"simple"))
-		tracer("majus"+i,posUniKeyLeft+15+posX[i],posUniKeyTop+1+posY[i],"&nbsp;","double")
-		tracer("minus"+i,posUniKeyLeft+3+posX[i],posUniKeyTop+9+posY[i],"&nbsp;","double")
-	}
-	else{
-		tracer("car"+i,posUniKeyLeft+6+posX[i],posUniKeyTop+3+posY[i],"&nbsp;","simple")
-		cecar=CarMin[i]
-		tracer("minus"+i,posUniKeyLeft+3+posX[i],posUniKeyTop+9+posY[i],cecar,((dia[hexa(cecar)]!=null)?"doubledia":"double"))
-		cecar=CarMaj[i]
-		tracer("majus"+i,posUniKeyLeft+15+posX[i],posUniKeyTop+1+posY[i],cecar,((dia[hexa(cecar)]!=null)?"doubledia":"double"))
-	}
-}
-/*touches de fonctions*/
-var actC1=new Array(0,371,364,0,378,0,358,0,344,0,112,378)
-var actC2=new Array(0,0,14,42,42,70,70,98,98,126,126,126)
-var actC3=new Array(32,403,403,39,403,47,403,61,403,25,291,403)
-var actC4=new Array(11,11,39,67,67,95,95,123,123,151,151,151)
-var act  =new Array(" « KB"," KB » ","Delete","Clear","Back","Caps<br> Lock","Enter","Shift","Shift","<|<","Space",">|>")
-var effet=new Array("keyscroll(-3)","keyscroll(3)","faire(\"del\")","RAZ()","faire(\"bck\")","bloq()","faire(\"\\n\")","haut()","haut()","faire(\"ar\")","faire(\" \")","faire(\"av\")")
-var nbActions=12
-for (i=0;i<nbActions;i++){
-	tracer("act"+i,posUniKeyLeft+1+actC1[i],posUniKeyTop-1+actC2[i],act[i],"action")
-}
-/*navigation*/
-var keyC1=new Array(35,119,203,287)
-var keyC2=new Array(0,0,0,0)
-var keyC3=new Array(116,200,284,368)
-var keyC4=new Array(11,11,11,11)
-for (i=0;i<4;i++){
-	tracer("key"+i,posUniKeyLeft+5+keyC1[i],posUniKeyTop-1+keyC2[i],key[i],"unikey")
-}
-/*zones reactives*/
-tracer("masque",posUniKeyLeft,posUniKeyTop,'<img src="fck_universalkey/00.gif" width=404 height=152 border="0" usemap="#unikey">')
-document.write('<map name="unikey">')
-for (i=0;i<nbTouches;i++){
-	document.write('<area coords="'+posX[i]+','+posY[i]+','+(posX[i]+25)+','+(posY[i]+25)+'" href=# onClick=\'javascript:ecrire('+i+')\'>')
-}
-for (i=0;i<nbActions;i++){
-	document.write('<area coords="'+actC1[i]+','+actC2[i]+','+actC3[i]+','+actC4[i]+'" href=# onClick=\'javascript:'+effet[i]+'\'>')
-}
-for (i=0;i<4;i++){
-	document.write('<area coords="'+keyC1[i]+','+keyC2[i]+','+keyC3[i]+','+keyC4[i]+'" onclick=\'javascript:charger('+i+')\'>')
-}
-document.write('</map>')
-
-/*fonctions*/
-function ecrire(i){
-	txt=rechercher()+"|";subtxt=txt.split("|")
-	ceci=(lock==1)?CarMaj[i]:((caps==1)?CarMaj[i]:CarMin[i])
-	if (test(ceci)){subtxt[0]+=cardia(ceci);distinguer(false)}
-	else if(dia[accent]!=null&&dia[hexa(ceci)]!=null){distinguer(false);accent=hexa(ceci);distinguer(true)}
-	else if(dia[accent]!=null){subtxt[0]+=fromhexby4tocar(accent)+ceci;distinguer(false)}
-	else if(dia[hexa(ceci)]!=null){accent=hexa(ceci);distinguer(true)}
-	else {subtxt[0]+=ceci}
-	txt=subtxt[0]+"|"+subtxt[1]
-	afficher(txt)
-	if (caps==1){caps=0;MinusMajus()}
-}
-function faire(ceci){
-	txt=rechercher()+"|";subtxt=txt.split("|")
-	l0=subtxt[0].length
-	l1=subtxt[1].length
-	c1=subtxt[0].substring(0,(l0-2))
-	c2=subtxt[0].substring(0,(l0-1))
-	c3=subtxt[1].substring(0,1)
-	c4=subtxt[1].substring(0,2)
-	c5=subtxt[0].substring((l0-2),l0)
-	c6=subtxt[0].substring((l0-1),l0)
-	c7=subtxt[1].substring(1,l1)
-	c8=subtxt[1].substring(2,l1)
-	if(dia[accent]!=null){if(ceci==" "){ceci=fromhexby4tocar(accent)}distinguer(false)}
-	switch (ceci){
-	case("av") :if(escape(c4)!="%0D%0A"){txt=subtxt[0]+c3+"|"+c7}else{txt=subtxt[0]+c4+"|"+c8}break
-	case("ar") :if(escape(c5)!="%0D%0A"){txt=c2+"|"+c6+subtxt[1]}else{txt=c1+"|"+c5+subtxt[1]}break
-	case("bck"):if(escape(c5)!="%0D%0A"){txt=c2+"|"+subtxt[1]}else{txt=c1+"|"+subtxt[1]}break
-	case("del"):if(escape(c4)!="%0D%0A"){txt=subtxt[0]+"|"+c7}else{txt=subtxt[0]+"|"+c8}break
-	default:txt=subtxt[0]+ceci+"|"+subtxt[1];break
-	}
-	afficher(txt)
-}
-function RAZ(){txt="";if(dia[accent]!=null){distinguer(false)}afficher(txt)}
-function haut(){caps=1;MinusMajus()}
-function bloq(){lock=(lock==1)?0:1;MinusMajus()}
-
-/*fonctions de traitement du unikey*/
-function tracer(nom,gauche,haut,ceci,classe){ceci="<span class="+classe+">"+ceci+"</span>";document.write('<div id="'+nom+'" >'+ceci+'</div>');if (ns6){document.getElementById(nom).style.left=gauche+"px";document.getElementById(nom).style.top=haut+"px";}else if (ie){document.all(nom).style.left=gauche;document.all(nom).style.top=haut}}
-function retracer(nom,ceci,classe){ceci="<span class="+classe+">"+ceci+"</span>";if (ns6){document.getElementById(nom).innerHTML=ceci}else if (ie){doc=document.all(nom);doc.innerHTML=ceci}}
-function keyscroll(n){
-	keydeb+=n
-	if (keydeb<0){
-		keydeb=0
-	}
-	if (keydeb>key.length-4){
-		keydeb=key.length-4
-	}
-	for (i=keydeb;i<keydeb+4;i++){
-		retracer("key"+(i-keydeb),key[i],"unikey")
-	}
-	if (keydeb==0){
-		retracer("act0","&nbsp;","action")
-	}else {
-		retracer("act0",act[0],"action")
-	}
-	if (keydeb==key.length-4){
-		retracer("act1","&nbsp;","action")
-	}else {
-		retracer("act1",act[1],"action")
-	}
-}
-function charger(i){
-	langue=key[i+keydeb];setCk(langue);accent="0000"
-	CarMaj=Maj[langue].split("|");CarMin=Min[langue].split("|")
-	for (i=0;i<nbTouches;i++){
-		CarMaj[i]=((CarMaj[i]!="0000")?(fromhexby4tocar(CarMaj[i])):"")
-		CarMin[i]=((CarMin[i]!="0000")?(fromhexby4tocar(CarMin[i])):"")
-		if (CarMaj[i]==CarMin[i].toUpperCase()){
-			cecar=((lock==0)&&(caps==0)?CarMin[i]:CarMaj[i])
-			retracer("car"+i,cecar,((dia[hexa(cecar)]!=null)?"simpledia":"simple"))
-			retracer("minus"+i,"&nbsp;")
-			retracer("majus"+i,"&nbsp;")
-		}
-		else{
-			retracer("car"+i,"&nbsp;")
-			cecar=CarMin[i]
-			retracer("minus"+i,cecar,((dia[hexa(cecar)]!=null)?"doubledia":"double"))
-			cecar=CarMaj[i]
-			retracer("majus"+i,cecar,((dia[hexa(cecar)]!=null)?"doubledia":"double"))
-		}
-	}
-}
-function distinguer(oui){
-	for (i=0;i<nbTouches;i++){
-		if (CarMaj[i]==CarMin[i].toUpperCase()){
-			cecar=((lock==0)&&(caps==0)?CarMin[i]:CarMaj[i])
-			if(test(cecar)){retracer("car"+i,oui?(cardia(cecar)):cecar,oui?"simpledia":"simple")}
-		}
-		else{
-			cecar=CarMin[i]
-			if(test(cecar)){retracer("minus"+i,oui?(cardia(cecar)):cecar,oui?"doubledia":"double")}
-			cecar=CarMaj[i]
-			if(test(cecar)){retracer("majus"+i,oui?(cardia(cecar)):cecar,oui?"doubledia":"double")}
-		}
-	}
-	if (!oui){accent="0000"}
-}
-function MinusMajus(){
-	for (i=0;i<nbTouches;i++){
-		if (CarMaj[i]==CarMin[i].toUpperCase()){
-			cecar=((lock==0)&&(caps==0)?CarMin[i]:CarMaj[i])
-			retracer("car"+i,(test(cecar)?cardia(cecar):cecar),((dia[hexa(cecar)]!=null||test(cecar))?"simpledia":"simple"))
-		}
-	}
-}
-function test(cecar){return(dia[accent]!=null&&dia[accent][hexa(cecar)]!=null)}
-function cardia(cecar){return(fromhexby4tocar(dia[accent][hexa(cecar)]))}
-function fromhex(inval){out=0;for (a=inval.length-1;a>=0;a--){out+=Math.pow(16,inval.length-a-1)*hexchars.indexOf(inval.charAt(a))}return out}
-function fromhexby4tocar(ceci){out4=new String();for (l=0;l<ceci.length;l+=4){out4+=String.fromCharCode(fromhex(ceci.substring(l,l+4)))}return out4}
-function tohex(inval){return hexchars.charAt(inval/16)+hexchars.charAt(inval%16)}
-function tohex2(inval){return tohex(inval/256)+tohex(inval%256)}
-function hexa(ceci){out="";for (k=0;k<ceci.length;k++){out+=(tohex2(ceci.charCodeAt(k)))}return out}
-function getCk(){
-	fromN=document.cookie.indexOf("langue=")+0;
-	if((fromN)!=-1){
-		fromN+=7;
-		toN=document.cookie.indexOf(";",fromN)+0;
-		if(toN==-1){
-			toN=document.cookie.length
-		}
-		return unescape(document.cookie.substring(fromN,toN))
-	}
-	return ""
-}
-function setCk(inval){
-	if(inval!=null){
-		exp=new Date();
-		time=365*60*60*24*1000;
-		exp.setTime(exp.getTime()+time);
-		document.cookie=escape("langue")+"="+escape(inval)+"; "+"expires="+exp.toGMTString()
-	}
-}
-
-// Arabic Keystroke Translator
-function arkey(e) {
-	if ((document.layers)|(navigator.userAgent.indexOf("MSIE 4")>-1)|(langue!="Arabic")) return true;
-
-	if (!e) var e = window.event;
-	if (e.keyCode) keyCode = e.keyCode;
-	else if (e.which) keyCode = e.which;
-	var character = String.fromCharCode(keyCode);
-
-		entry = true;
-		cont=e.srcElement || e.currentTarget || e.target;
-		if (keyCode>64 && keyCode<91) {
-			entry=false;
-			source='ش لاؤ ي ث ب ل ا ه ت ن م ة ى خ ح ض ق س ف ع ر ص ء غ ئ ';
-			shsource='ِ لآ} ] ُ [ لأأ ÷ ـ ، /   آ × ؛ َ ٌ ٍ لإ  { ً ْ إ ~'; 
-
-			if (e.shiftKey) cont.value += shsource.substr((keyCode-64)*2-2,2);
-			else
-				cont.value += source.substr((keyCode-64)*2-2,2);
-			if (cont.value.substr(cont.value.length-1,1)==' ') cont.value=cont.value.substr(0,cont.value.length-1);
-		}
-		if (e.shiftKey) {
-			if (keyCode==186) {cont.value += ':';entry=false;}
-			if (keyCode==188) {cont.value += ',';entry=false;}
-			if (keyCode==190) {cont.value += '.';entry=false;}
-			if (keyCode==191) {cont.value += 'ØŸ';entry=false;}
-			if (keyCode==192) {cont.value += 'Ù‘';entry=false;}
-			if (keyCode==219) {cont.value += '<';entry=false;}
-			if (keyCode==221) {cont.value += '>';entry=false;}
-		} else {
-			if (keyCode==186||keyCode==59) {cont.value += 'Ùƒ';entry=false;}
-			if (keyCode==188) {cont.value += 'Ùˆ';entry=false;}
-			if (keyCode==190) {cont.value += 'ز';entry=false;}
-			if (keyCode==191) {cont.value += 'ظ';entry=false;}
-			if (keyCode==192) {cont.value += 'Ø°';entry=false;}
-			if (keyCode==219) {cont.value += 'ج';entry=false;}
-			if (keyCode==221) {cont.value += 'د';entry=false;}
-			if (keyCode==222) {cont.value += 'Ø·';entry=false;}
-		}
-	return entry;
-}
-function hold_it(e){
-	if ((document.layers)|(navigator.userAgent.indexOf("MSIE 4")>-1)|(langue!="Arabic")) return true;
-
-	var keyCode;
-	if (!e) var e = window.event;
-	if (e.keyCode) keyCode = e.keyCode;
-	else if (e.which) keyCode = e.which;
-	var character = String.fromCharCode(keyCode);
-	switch(keyCode){
-		case 186:
-		case 188:
-		case 190:
-		case 191:
-		case 192:
-		case 219:
-		case 221:
-		case 222:
-		case 116:
-		case 59:
-		case 47:
-		case 46:
-		case 44:
-		case 39:
-			return false;
-		case 92:
-			return true;
-	}
-		if (keyCode<63) return true;
-		return false;
-	}
-
-var obj = document.getElementById( 'uni_area' );
-if ( obj && langue=="Arabic"){
-	with (navigator) {
-		if (appName=="Netscape")
-			obj.onkeypress = hold_it;
-	}
-	obj.onkeydown = arkey;
-}
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: multihexa.js
+ * 	Scripts for the fck_universalkey.html page.
+ * 	Definition des 104 caracteres en hexa unicode.
+ * 
+ * File Authors:
+ * 		Michel Staelens (michel.staelens at wanadoo.fr)
+ * 		Bernadette Cierzniak
+ * 		Abdul-Aziz Al-Oraij (top7up at hotmail.com)
+ */
+
+var caps=0, lock=0, hexchars="0123456789ABCDEF", accent="0000", keydeb=0
+var key=new Array();j=0;for (i in Maj){key[j]=i;j++}
+var ns6=((!document.all)&&(document.getElementById))
+var ie=document.all
+
+var langue=getCk();
+if (langue==""){
+	langue=key[keydeb]
+}
+CarMaj=Maj[langue].split("|");CarMin=Min[langue].split("|")
+
+/*unikey*/
+var posUniKeyLeft=0, posUniKeyTop=0
+if (ns6){posUniKeyLeft=0;posUniKeyTop=60}
+else if (ie){posUniKeyLeft=0;posUniKeyTop=60}
+tracer("fond",posUniKeyLeft,posUniKeyTop,'<img src="fck_universalkey/keyboard_layout.gif" width=404 height=152 border="0"><br />',"sign")
+/*touches*/
+var posX=new Array(0,28,56,84,112,140,168,196,224,252,280,308,336,42,70,98,126,154,182,210,238,266,294,322,350,50,78,106,134,162,190,218,246,274,302,330,64,92,120,148,176,204,232,260,288,316,28,56,84,294,322,350)
+var posY=new Array(14,14,14,14,14,14,14,14,14,14,14,14,14,42,42,42,42,42,42,42,42,42,42,42,42,70,70,70,70,70,70,70,70,70,70,70,98,98,98,98,98,98,98,98,98,98,126,126,126,126,126,126)
+var nbTouches=52
+for (i=0;i<nbTouches;i++){
+	CarMaj[i]=((CarMaj[i]!="0000")?(fromhexby4tocar(CarMaj[i])):"")
+	CarMin[i]=((CarMin[i]!="0000")?(fromhexby4tocar(CarMin[i])):"")
+	if (CarMaj[i]==CarMin[i].toUpperCase()){
+		cecar=((lock==0)&&(caps==0)?CarMin[i]:CarMaj[i])
+		tracer("car"+i,posUniKeyLeft+6+posX[i],posUniKeyTop+3+posY[i],cecar,((dia[hexa(cecar)]!=null)?"simpledia":"simple"))
+		tracer("majus"+i,posUniKeyLeft+15+posX[i],posUniKeyTop+1+posY[i],"&nbsp;","double")
+		tracer("minus"+i,posUniKeyLeft+3+posX[i],posUniKeyTop+9+posY[i],"&nbsp;","double")
+	}
+	else{
+		tracer("car"+i,posUniKeyLeft+6+posX[i],posUniKeyTop+3+posY[i],"&nbsp;","simple")
+		cecar=CarMin[i]
+		tracer("minus"+i,posUniKeyLeft+3+posX[i],posUniKeyTop+9+posY[i],cecar,((dia[hexa(cecar)]!=null)?"doubledia":"double"))
+		cecar=CarMaj[i]
+		tracer("majus"+i,posUniKeyLeft+15+posX[i],posUniKeyTop+1+posY[i],cecar,((dia[hexa(cecar)]!=null)?"doubledia":"double"))
+	}
+}
+/*touches de fonctions*/
+var actC1=new Array(0,371,364,0,378,0,358,0,344,0,112,378)
+var actC2=new Array(0,0,14,42,42,70,70,98,98,126,126,126)
+var actC3=new Array(32,403,403,39,403,47,403,61,403,25,291,403)
+var actC4=new Array(11,11,39,67,67,95,95,123,123,151,151,151)
+var act  =new Array(" « KB"," KB » ","Delete","Clear","Back","Caps<br> Lock","Enter","Shift","Shift","<|<","Space",">|>")
+var effet=new Array("keyscroll(-3)","keyscroll(3)","faire(\"del\")","RAZ()","faire(\"bck\")","bloq()","faire(\"\\n\")","haut()","haut()","faire(\"ar\")","faire(\" \")","faire(\"av\")")
+var nbActions=12
+for (i=0;i<nbActions;i++){
+	tracer("act"+i,posUniKeyLeft+1+actC1[i],posUniKeyTop-1+actC2[i],act[i],"action")
+}
+/*navigation*/
+var keyC1=new Array(35,119,203,287)
+var keyC2=new Array(0,0,0,0)
+var keyC3=new Array(116,200,284,368)
+var keyC4=new Array(11,11,11,11)
+for (i=0;i<4;i++){
+	tracer("key"+i,posUniKeyLeft+5+keyC1[i],posUniKeyTop-1+keyC2[i],key[i],"unikey")
+}
+/*zones reactives*/
+tracer("masque",posUniKeyLeft,posUniKeyTop,'<img src="fck_universalkey/00.gif" width=404 height=152 border="0" usemap="#unikey">')
+document.write('<map name="unikey">')
+for (i=0;i<nbTouches;i++){
+	document.write('<area coords="'+posX[i]+','+posY[i]+','+(posX[i]+25)+','+(posY[i]+25)+'" href=# onClick=\'javascript:ecrire('+i+')\'>')
+}
+for (i=0;i<nbActions;i++){
+	document.write('<area coords="'+actC1[i]+','+actC2[i]+','+actC3[i]+','+actC4[i]+'" href=# onClick=\'javascript:'+effet[i]+'\'>')
+}
+for (i=0;i<4;i++){
+	document.write('<area coords="'+keyC1[i]+','+keyC2[i]+','+keyC3[i]+','+keyC4[i]+'" onclick=\'javascript:charger('+i+')\'>')
+}
+document.write('</map>')
+
+/*fonctions*/
+function ecrire(i){
+	txt=rechercher()+"|";subtxt=txt.split("|")
+	ceci=(lock==1)?CarMaj[i]:((caps==1)?CarMaj[i]:CarMin[i])
+	if (test(ceci)){subtxt[0]+=cardia(ceci);distinguer(false)}
+	else if(dia[accent]!=null&&dia[hexa(ceci)]!=null){distinguer(false);accent=hexa(ceci);distinguer(true)}
+	else if(dia[accent]!=null){subtxt[0]+=fromhexby4tocar(accent)+ceci;distinguer(false)}
+	else if(dia[hexa(ceci)]!=null){accent=hexa(ceci);distinguer(true)}
+	else {subtxt[0]+=ceci}
+	txt=subtxt[0]+"|"+subtxt[1]
+	afficher(txt)
+	if (caps==1){caps=0;MinusMajus()}
+}
+function faire(ceci){
+	txt=rechercher()+"|";subtxt=txt.split("|")
+	l0=subtxt[0].length
+	l1=subtxt[1].length
+	c1=subtxt[0].substring(0,(l0-2))
+	c2=subtxt[0].substring(0,(l0-1))
+	c3=subtxt[1].substring(0,1)
+	c4=subtxt[1].substring(0,2)
+	c5=subtxt[0].substring((l0-2),l0)
+	c6=subtxt[0].substring((l0-1),l0)
+	c7=subtxt[1].substring(1,l1)
+	c8=subtxt[1].substring(2,l1)
+	if(dia[accent]!=null){if(ceci==" "){ceci=fromhexby4tocar(accent)}distinguer(false)}
+	switch (ceci){
+	case("av") :if(escape(c4)!="%0D%0A"){txt=subtxt[0]+c3+"|"+c7}else{txt=subtxt[0]+c4+"|"+c8}break
+	case("ar") :if(escape(c5)!="%0D%0A"){txt=c2+"|"+c6+subtxt[1]}else{txt=c1+"|"+c5+subtxt[1]}break
+	case("bck"):if(escape(c5)!="%0D%0A"){txt=c2+"|"+subtxt[1]}else{txt=c1+"|"+subtxt[1]}break
+	case("del"):if(escape(c4)!="%0D%0A"){txt=subtxt[0]+"|"+c7}else{txt=subtxt[0]+"|"+c8}break
+	default:txt=subtxt[0]+ceci+"|"+subtxt[1];break
+	}
+	afficher(txt)
+}
+function RAZ(){txt="";if(dia[accent]!=null){distinguer(false)}afficher(txt)}
+function haut(){caps=1;MinusMajus()}
+function bloq(){lock=(lock==1)?0:1;MinusMajus()}
+
+/*fonctions de traitement du unikey*/
+function tracer(nom,gauche,haut,ceci,classe){ceci="<span class="+classe+">"+ceci+"</span>";document.write('<div id="'+nom+'" >'+ceci+'</div>');if (ns6){document.getElementById(nom).style.left=gauche+"px";document.getElementById(nom).style.top=haut+"px";}else if (ie){document.all(nom).style.left=gauche;document.all(nom).style.top=haut}}
+function retracer(nom,ceci,classe){ceci="<span class="+classe+">"+ceci+"</span>";if (ns6){document.getElementById(nom).innerHTML=ceci}else if (ie){doc=document.all(nom);doc.innerHTML=ceci}}
+function keyscroll(n){
+	keydeb+=n
+	if (keydeb<0){
+		keydeb=0
+	}
+	if (keydeb>key.length-4){
+		keydeb=key.length-4
+	}
+	for (i=keydeb;i<keydeb+4;i++){
+		retracer("key"+(i-keydeb),key[i],"unikey")
+	}
+	if (keydeb==0){
+		retracer("act0","&nbsp;","action")
+	}else {
+		retracer("act0",act[0],"action")
+	}
+	if (keydeb==key.length-4){
+		retracer("act1","&nbsp;","action")
+	}else {
+		retracer("act1",act[1],"action")
+	}
+}
+function charger(i){
+	langue=key[i+keydeb];setCk(langue);accent="0000"
+	CarMaj=Maj[langue].split("|");CarMin=Min[langue].split("|")
+	for (i=0;i<nbTouches;i++){
+		CarMaj[i]=((CarMaj[i]!="0000")?(fromhexby4tocar(CarMaj[i])):"")
+		CarMin[i]=((CarMin[i]!="0000")?(fromhexby4tocar(CarMin[i])):"")
+		if (CarMaj[i]==CarMin[i].toUpperCase()){
+			cecar=((lock==0)&&(caps==0)?CarMin[i]:CarMaj[i])
+			retracer("car"+i,cecar,((dia[hexa(cecar)]!=null)?"simpledia":"simple"))
+			retracer("minus"+i,"&nbsp;")
+			retracer("majus"+i,"&nbsp;")
+		}
+		else{
+			retracer("car"+i,"&nbsp;")
+			cecar=CarMin[i]
+			retracer("minus"+i,cecar,((dia[hexa(cecar)]!=null)?"doubledia":"double"))
+			cecar=CarMaj[i]
+			retracer("majus"+i,cecar,((dia[hexa(cecar)]!=null)?"doubledia":"double"))
+		}
+	}
+}
+function distinguer(oui){
+	for (i=0;i<nbTouches;i++){
+		if (CarMaj[i]==CarMin[i].toUpperCase()){
+			cecar=((lock==0)&&(caps==0)?CarMin[i]:CarMaj[i])
+			if(test(cecar)){retracer("car"+i,oui?(cardia(cecar)):cecar,oui?"simpledia":"simple")}
+		}
+		else{
+			cecar=CarMin[i]
+			if(test(cecar)){retracer("minus"+i,oui?(cardia(cecar)):cecar,oui?"doubledia":"double")}
+			cecar=CarMaj[i]
+			if(test(cecar)){retracer("majus"+i,oui?(cardia(cecar)):cecar,oui?"doubledia":"double")}
+		}
+	}
+	if (!oui){accent="0000"}
+}
+function MinusMajus(){
+	for (i=0;i<nbTouches;i++){
+		if (CarMaj[i]==CarMin[i].toUpperCase()){
+			cecar=((lock==0)&&(caps==0)?CarMin[i]:CarMaj[i])
+			retracer("car"+i,(test(cecar)?cardia(cecar):cecar),((dia[hexa(cecar)]!=null||test(cecar))?"simpledia":"simple"))
+		}
+	}
+}
+function test(cecar){return(dia[accent]!=null&&dia[accent][hexa(cecar)]!=null)}
+function cardia(cecar){return(fromhexby4tocar(dia[accent][hexa(cecar)]))}
+function fromhex(inval){out=0;for (a=inval.length-1;a>=0;a--){out+=Math.pow(16,inval.length-a-1)*hexchars.indexOf(inval.charAt(a))}return out}
+function fromhexby4tocar(ceci){out4=new String();for (l=0;l<ceci.length;l+=4){out4+=String.fromCharCode(fromhex(ceci.substring(l,l+4)))}return out4}
+function tohex(inval){return hexchars.charAt(inval/16)+hexchars.charAt(inval%16)}
+function tohex2(inval){return tohex(inval/256)+tohex(inval%256)}
+function hexa(ceci){out="";for (k=0;k<ceci.length;k++){out+=(tohex2(ceci.charCodeAt(k)))}return out}
+function getCk(){
+	fromN=document.cookie.indexOf("langue=")+0;
+	if((fromN)!=-1){
+		fromN+=7;
+		toN=document.cookie.indexOf(";",fromN)+0;
+		if(toN==-1){
+			toN=document.cookie.length
+		}
+		return unescape(document.cookie.substring(fromN,toN))
+	}
+	return ""
+}
+function setCk(inval){
+	if(inval!=null){
+		exp=new Date();
+		time=365*60*60*24*1000;
+		exp.setTime(exp.getTime()+time);
+		document.cookie=escape("langue")+"="+escape(inval)+"; "+"expires="+exp.toGMTString()
+	}
+}
+
+// Arabic Keystroke Translator
+function arkey(e) {
+	if ((document.layers)|(navigator.userAgent.indexOf("MSIE 4")>-1)|(langue!="Arabic")) return true;
+
+	if (!e) var e = window.event;
+	if (e.keyCode) keyCode = e.keyCode;
+	else if (e.which) keyCode = e.which;
+	var character = String.fromCharCode(keyCode);
+
+		entry = true;
+		cont=e.srcElement || e.currentTarget || e.target;
+		if (keyCode>64 && keyCode<91) {
+			entry=false;
+			source='ش لاؤ ي ث ب ل ا ه ت ن م ة ى خ ح ض ق س ف ع ر ص ء غ ئ ';
+			shsource='ِ لآ} ] ُ [ لأأ ÷ ـ ، /   آ × ؛ َ ٌ ٍ لإ  { ً ْ إ ~'; 
+
+			if (e.shiftKey) cont.value += shsource.substr((keyCode-64)*2-2,2);
+			else
+				cont.value += source.substr((keyCode-64)*2-2,2);
+			if (cont.value.substr(cont.value.length-1,1)==' ') cont.value=cont.value.substr(0,cont.value.length-1);
+		}
+		if (e.shiftKey) {
+			if (keyCode==186) {cont.value += ':';entry=false;}
+			if (keyCode==188) {cont.value += ',';entry=false;}
+			if (keyCode==190) {cont.value += '.';entry=false;}
+			if (keyCode==191) {cont.value += 'ØŸ';entry=false;}
+			if (keyCode==192) {cont.value += 'Ù‘';entry=false;}
+			if (keyCode==219) {cont.value += '<';entry=false;}
+			if (keyCode==221) {cont.value += '>';entry=false;}
+		} else {
+			if (keyCode==186||keyCode==59) {cont.value += 'Ùƒ';entry=false;}
+			if (keyCode==188) {cont.value += 'Ùˆ';entry=false;}
+			if (keyCode==190) {cont.value += 'ز';entry=false;}
+			if (keyCode==191) {cont.value += 'ظ';entry=false;}
+			if (keyCode==192) {cont.value += 'Ø°';entry=false;}
+			if (keyCode==219) {cont.value += 'ج';entry=false;}
+			if (keyCode==221) {cont.value += 'د';entry=false;}
+			if (keyCode==222) {cont.value += 'Ø·';entry=false;}
+		}
+	return entry;
+}
+function hold_it(e){
+	if ((document.layers)|(navigator.userAgent.indexOf("MSIE 4")>-1)|(langue!="Arabic")) return true;
+
+	var keyCode;
+	if (!e) var e = window.event;
+	if (e.keyCode) keyCode = e.keyCode;
+	else if (e.which) keyCode = e.which;
+	var character = String.fromCharCode(keyCode);
+	switch(keyCode){
+		case 186:
+		case 188:
+		case 190:
+		case 191:
+		case 192:
+		case 219:
+		case 221:
+		case 222:
+		case 116:
+		case 59:
+		case 47:
+		case 46:
+		case 44:
+		case 39:
+			return false;
+		case 92:
+			return true;
+	}
+		if (keyCode<63) return true;
+		return false;
+	}
+
+var obj = document.getElementById( 'uni_area' );
+if ( obj && langue=="Arabic"){
+	with (navigator) {
+		if (appName=="Netscape")
+			obj.onkeypress = hold_it;
+	}
+	obj.onkeydown = arkey;
+}
 // Arabic Keystroke Translator End
\ No newline at end of file

Modified: trunk/src/plugins/fckeditor/www/editor/dialog/fck_universalkey.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/dialog/fck_universalkey.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/dialog/fck_universalkey.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,63 +1,63 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2006 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: fck_universalkey.html
- * 	Unicode Keyboard dialog window.
- * 
- * File Authors:
- * 		Abdul-Aziz Al-Oraij (top7up at hotmail.com)
- * 		Michel Staelens
- * 		Bernadette Cierzniak
- * 		Frederico Caldeira Knabben (fredck at fckeditor.net)
--->
-<html>
-	<head>
-		<title>Universal Keyboard</title>
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-		<meta content="noindex, nofollow" name="robots">
-		<link rel="stylesheet" type="text/css" href="fck_universalkey/fck_universalkey.css" />
-		<script type="text/javascript">
-
-var oEditor = window.parent.InnerDialogLoaded() ;
-
-window.onload = function()
-{
-	document.body.style.padding = '0px' ;
-
-	// First of all, translate the dialog box texts
-	oEditor.FCKLanguageManager.TranslatePage(document) ;
-
-	window.parent.SetOkButton( true ) ;
-	window.parent.SetAutoSize( true ) ;	
-}
-
-function Ok()
-{
-	var oArea = document.getElementById( 'uni_area' ) ;
-
-	if ( oArea.value.length > 0 )
-		oEditor.FCK.InsertHtml( oArea.value ) ;
-
-	return true ;
-}
-
-		</script>
-	</head>
-	<body style="OVERFLOW: hidden" scroll="no">
-		<textarea id="uni_area" cols="40" rows="4" style="width:100%;height:60px;"></textarea>
-		<script type="text/javascript" src="fck_universalkey/data.js"></script>
-		<script type="text/javascript" src="fck_universalkey/diacritic.js"></script>
-		<script type="text/javascript" src="fck_universalkey/dialogue.js"></script>
-		<script type="text/javascript" src="fck_universalkey/multihexa.js"></script>
-	</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_universalkey.html
+ * 	Unicode Keyboard dialog window.
+ * 
+ * File Authors:
+ * 		Abdul-Aziz Al-Oraij (top7up at hotmail.com)
+ * 		Michel Staelens
+ * 		Bernadette Cierzniak
+ * 		Frederico Caldeira Knabben (fredck at fckeditor.net)
+-->
+<html>
+	<head>
+		<title>Universal Keyboard</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<link rel="stylesheet" type="text/css" href="fck_universalkey/fck_universalkey.css" />
+		<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+window.onload = function()
+{
+	document.body.style.padding = '0px' ;
+
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	window.parent.SetOkButton( true ) ;
+	window.parent.SetAutoSize( true ) ;	
+}
+
+function Ok()
+{
+	var oArea = document.getElementById( 'uni_area' ) ;
+
+	if ( oArea.value.length > 0 )
+		oEditor.FCK.InsertHtml( oArea.value ) ;
+
+	return true ;
+}
+
+		</script>
+	</head>
+	<body style="OVERFLOW: hidden" scroll="no">
+		<textarea id="uni_area" cols="40" rows="4" style="width:100%;height:60px;"></textarea>
+		<script type="text/javascript" src="fck_universalkey/data.js"></script>
+		<script type="text/javascript" src="fck_universalkey/diacritic.js"></script>
+		<script type="text/javascript" src="fck_universalkey/dialogue.js"></script>
+		<script type="text/javascript" src="fck_universalkey/multihexa.js"></script>
+	</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/fckblank.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/fckblank.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/fckblank.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,5 +1,5 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head><title></title></head>
-<body></body>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head><title></title></head>
+<body></body>
 </html>
\ No newline at end of file

Modified: trunk/src/plugins/fckeditor/www/editor/fckdebug.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/fckdebug.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/fckdebug.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,153 +1,153 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 Debug window.
- * It automatically popups if the Debug = true in the configuration file.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>FCKeditor Debug Window</title>
-	<meta name="robots" content="noindex, nofollow" />
-	<script type="text/javascript">
-
-var oWindow ;
-var oDiv ;
-
-if ( !window.FCKMessages )
-	window.FCKMessages = new Array() ;
-
-window.onload = function()
-{
-	oWindow = document.getElementById('xOutput').contentWindow ;
-	oWindow.document.open() ;
-	oWindow.document.write( '<div id="divMsg"><\/div>' ) ;
-	oWindow.document.close() ;
-	oDiv	= oWindow.document.getElementById('divMsg') ;
-}
-
-function Output( message, color, noParse )
-{
-	if ( !noParse && message != null && isNaN( message ) )
-		message = message.replace(/</g, "&lt;") ;
-
-	if ( color )
-		message = '<font color="' + color + '">' + message + '<\/font>' ;
-
-	window.FCKMessages[ window.FCKMessages.length ] = message ;
-	StartTimer() ;
-}
-
-function OutputObject( anyObject, color )
-{
-	var message ;
-
-	if ( anyObject != null )
-	{
-		message = 'Properties of: ' + anyObject + '</b><blockquote>' ;
-
-		for (var prop in anyObject)
-		{
-			try
-			{
-				var sVal = anyObject[ prop ] != null ? anyObject[ prop ] + '' : '[null]' ;
-				message += '<b>' + prop + '</b> : ' + sVal.replace(/</g, '&lt;') + '<br>' ;
-			}
-			catch (e)
-			{
-				try
-				{
-					message += '<b>' + prop + '</b> : [' + typeof( anyObject[ prop ] ) + ']<br>' ;
-				}
-				catch (e)
-				{
-					message += '<b>' + prop + '</b> : [-error-]<br>' ;
-				}
-			}
-		}
-
-		message += '</blockquote><b>' ;
-	} else
-		message = 'OutputObject : Object is "null".' ;
-
-	Output( message, color, true ) ;
-}
-
-function StartTimer()
-{
-	window.setTimeout( 'CheckMessages()', 100 ) ;
-}
-
-function CheckMessages()
-{
-	if ( window.FCKMessages.length > 0 )
-	{
-		// Get the first item in the queue
-		var sMessage = window.FCKMessages[0] ;
-
-		// Removes the first item from the queue
-		var oTempArray = new Array() ;
-		for ( i = 1 ; i < window.FCKMessages.length ; i++ )
-			oTempArray[ i - 1 ] = window.FCKMessages[ i ] ;
-		window.FCKMessages = oTempArray ;
-
-		var d = new Date() ;
-		var sTime =
-			( d.getHours() + 100 + '' ).substr( 1,2 ) + ':' +
-			( d.getMinutes() + 100 + '' ).substr( 1,2 ) + ':' +
-			( d.getSeconds() + 100 + '' ).substr( 1,2 ) + ':' +
-			( d.getMilliseconds() + 1000 + '' ).substr( 1,3 ) ;
-
-		var oMsgDiv = oWindow.document.createElement( 'div' ) ;
-		oMsgDiv.innerHTML = sTime + ': <b>' + sMessage + '<\/b>' ;
-		oDiv.appendChild( oMsgDiv ) ;
-		oMsgDiv.scrollIntoView() ;
-	}
-}
-
-function Clear()
-{
-	oDiv.innerHTML = '' ;
-}
-	</script>
-</head>
-<body style="margin: 10px">
-	<table style="height: 100%" cellspacing="5" cellpadding="0" width="100%" border="0">
-		<tr>
-			<td>
-				<table cellspacing="0" cellpadding="0" width="100%" border="0">
-					<tr>
-						<td style="font-weight: bold; font-size: 1.2em;">
-							FCKeditor Debug Window</td>
-						<td align="right">
-							<input type="button" value="Clear" onclick="Clear();" /></td>
-					</tr>
-				</table>
-			</td>
-		</tr>
-		<tr style="height: 100%">
-			<td style="border: #696969 1px solid">
-				<iframe id="xOutput" width="100%" height="100%" scrolling="auto" src="javascript:void(0)"
-					frameborder="0"></iframe>
-			</td>
-		</tr>
-	</table>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 Debug window.
+ * It automatically popups if the Debug = true in the configuration file.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>FCKeditor Debug Window</title>
+	<meta name="robots" content="noindex, nofollow" />
+	<script type="text/javascript">
+
+var oWindow ;
+var oDiv ;
+
+if ( !window.FCKMessages )
+	window.FCKMessages = new Array() ;
+
+window.onload = function()
+{
+	oWindow = document.getElementById('xOutput').contentWindow ;
+	oWindow.document.open() ;
+	oWindow.document.write( '<div id="divMsg"><\/div>' ) ;
+	oWindow.document.close() ;
+	oDiv	= oWindow.document.getElementById('divMsg') ;
+}
+
+function Output( message, color, noParse )
+{
+	if ( !noParse && message != null && isNaN( message ) )
+		message = message.replace(/</g, "&lt;") ;
+
+	if ( color )
+		message = '<font color="' + color + '">' + message + '<\/font>' ;
+
+	window.FCKMessages[ window.FCKMessages.length ] = message ;
+	StartTimer() ;
+}
+
+function OutputObject( anyObject, color )
+{
+	var message ;
+
+	if ( anyObject != null )
+	{
+		message = 'Properties of: ' + anyObject + '</b><blockquote>' ;
+
+		for (var prop in anyObject)
+		{
+			try
+			{
+				var sVal = anyObject[ prop ] != null ? anyObject[ prop ] + '' : '[null]' ;
+				message += '<b>' + prop + '</b> : ' + sVal.replace(/</g, '&lt;') + '<br>' ;
+			}
+			catch (e)
+			{
+				try
+				{
+					message += '<b>' + prop + '</b> : [' + typeof( anyObject[ prop ] ) + ']<br>' ;
+				}
+				catch (e)
+				{
+					message += '<b>' + prop + '</b> : [-error-]<br>' ;
+				}
+			}
+		}
+
+		message += '</blockquote><b>' ;
+	} else
+		message = 'OutputObject : Object is "null".' ;
+
+	Output( message, color, true ) ;
+}
+
+function StartTimer()
+{
+	window.setTimeout( 'CheckMessages()', 100 ) ;
+}
+
+function CheckMessages()
+{
+	if ( window.FCKMessages.length > 0 )
+	{
+		// Get the first item in the queue
+		var sMessage = window.FCKMessages[0] ;
+
+		// Removes the first item from the queue
+		var oTempArray = new Array() ;
+		for ( i = 1 ; i < window.FCKMessages.length ; i++ )
+			oTempArray[ i - 1 ] = window.FCKMessages[ i ] ;
+		window.FCKMessages = oTempArray ;
+
+		var d = new Date() ;
+		var sTime =
+			( d.getHours() + 100 + '' ).substr( 1,2 ) + ':' +
+			( d.getMinutes() + 100 + '' ).substr( 1,2 ) + ':' +
+			( d.getSeconds() + 100 + '' ).substr( 1,2 ) + ':' +
+			( d.getMilliseconds() + 1000 + '' ).substr( 1,3 ) ;
+
+		var oMsgDiv = oWindow.document.createElement( 'div' ) ;
+		oMsgDiv.innerHTML = sTime + ': <b>' + sMessage + '<\/b>' ;
+		oDiv.appendChild( oMsgDiv ) ;
+		oMsgDiv.scrollIntoView() ;
+	}
+}
+
+function Clear()
+{
+	oDiv.innerHTML = '' ;
+}
+	</script>
+</head>
+<body style="margin: 10px">
+	<table style="height: 100%" cellspacing="5" cellpadding="0" width="100%" border="0">
+		<tr>
+			<td>
+				<table cellspacing="0" cellpadding="0" width="100%" border="0">
+					<tr>
+						<td style="font-weight: bold; font-size: 1.2em;">
+							FCKeditor Debug Window</td>
+						<td align="right">
+							<input type="button" value="Clear" onclick="Clear();" /></td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+		<tr style="height: 100%">
+			<td style="border: #696969 1px solid">
+				<iframe id="xOutput" width="100%" height="100%" scrolling="auto" src="javascript:void(0)"
+					frameborder="0"></iframe>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/fckdialog.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/fckdialog.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/fckdialog.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,812 +1,812 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 page is used by all dialog box as the container.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-	<head>
-		<title></title>
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-		<meta name="robots" content="noindex, nofollow" />
-		<script type="text/javascript">
-// <![CDATA[
-
-// Domain relaxation logic.
-(function()
-{
-	var d = document.domain ;
-
-	while ( true )
-	{
-		// Test if we can access a parent property.
-		try
-		{
-			var parentDomain = ( Args().TopWindow || E ).document.domain ;
-
-			if ( document.domain != parentDomain )
-				document.domain = parentDomain ;
-
-			break ;
-		}
-		catch( e ) {}
-
-		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
-		d = d.replace( /.*?(?:\.|$)/, '' ) ;
-
-		if ( d.length == 0 )
-			break ;		// It was not able to detect the domain.
-
-		document.domain = d ;
-	}
-})() ;
-
-var E = frameElement._DialogArguments.Editor ;
-
-// It seems referencing to frameElement._DialogArguments directly would lead to memory leaks in IE.
-// So let's use functions to access its members instead.
-function Args()
-{
-	return frameElement._DialogArguments ;
-}
-
-function ParentDialog( dialog )
-{
-	return dialog ? dialog._ParentDialog : frameElement._ParentDialog ;
-}
-
-var FCK				= E.FCK ;
-var FCKTools		= E.FCKTools ;
-var FCKDomTools		= E.FCKDomTools ;
-var FCKDialog		= E.FCKDialog ;
-var FCKBrowserInfo	= E.FCKBrowserInfo ;
-var FCKConfig		= E.FCKConfig ;
-
-// Steal the focus so that the caret would no longer stay in the editor iframe.
-window.focus() ;
-
-// Sets the Skin CSS
-document.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;
-
-// Sets the language direction.
-var langDir = document.documentElement.dir = E.FCKLang.Dir ;
-
-// For IE6-, the fck_dialog_ie6.js is loaded, used to fix limitations in the browser.
-if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
-	document.write( '<' + 'script type="text/javascript" src="' + FCKConfig.SkinPath + 'fck_dialog_ie6.js"><' + '\/script>' ) ;
-
-FCKTools.RegisterDollarFunction( window ) ;
-
-// Resize related functions.
-var Sizer = function()
-{
-	var bAutoSize = false ;
-
-	var retval = {
-		// Sets whether the dialog should auto-resize according to its content's height.
-		SetAutoSize : function( autoSize )
-		{
-			bAutoSize = autoSize ;
-			this.RefreshSize() ;
-		},
-
-		// Fit the dialog container's layout to the inner iframe's external size.
-		RefreshContainerSize : function()
-		{
-			var frmMain = $( 'frmMain' ) ;
-
-			if ( frmMain )
-			{
-				// Get the container size.
-				var height = $( 'contents' ).offsetHeight ;
-
-				// Subtract the size of other elements.
-				height -= $( 'TitleArea' ).offsetHeight ;
-				height -= $( 'TabsRow' ).offsetHeight ;
-				height -= $( 'PopupButtons' ).offsetHeight ;
-
-				frmMain.style.height = Math.max( height, 0 ) + 'px' ;
-			}
-		},
-
-		// Resize and re-layout the dialog.
-		// Triggers the onresize event for the layout logic.
-		ResizeDialog : function( width, height )
-		{
-			FCKDomTools.SetElementStyles( window.frameElement,
-					{
-						'width' : width + 'px',
-						'height' : height + 'px'
-					} ) ;
-
-			// If the skin have defined a function for resize fixes, call it now.
-			if ( typeof window.DoResizeFixes == 'function' )
-				window.DoResizeFixes() ;
-		},
-
-		// if bAutoSize is true, automatically fit the dialog size and layout to
-		// accomodate the inner iframe's internal height.
-		// if bAutoSize is false, then only the layout logic for the dialog decorations
-		// is run to accomodate the inner iframe's external height.
-		RefreshSize : function()
-		{
-			if ( bAutoSize )
-			{
-				var frmMain		= $( 'frmMain' ) ;
-				var innerDoc	= frmMain.contentWindow.document ;
-				var isStrict	= FCKTools.IsStrictMode( innerDoc ) ;
-
-				// Get the size of the frame contents.
-				var innerWidth	= isStrict ? innerDoc.documentElement.scrollWidth : innerDoc.body.scrollWidth ;
-				var innerHeight	= isStrict ? innerDoc.documentElement.scrollHeight : innerDoc.body.scrollHeight ;
-
-				// Get the current frame size.
-				var frameSize = FCKTools.GetViewPaneSize( frmMain.contentWindow ) ;
-
-				var deltaWidth	= innerWidth - frameSize.Width ;
-				var deltaHeight	= innerHeight - frameSize.Height ;
-
-				// If the contents fits the current size.
-				if ( deltaWidth <= 0 && deltaHeight <= 0 )
-					return ;
-
-				var dialogWidth		= frameElement.offsetWidth + Math.max( deltaWidth, 0 ) ;
-				var dialogHeight	= frameElement.offsetHeight + Math.max( deltaHeight, 0 ) ;
-
-				this.ResizeDialog( dialogWidth, dialogHeight ) ;
-			}
-			this.RefreshContainerSize() ;
-		}
-	}
-
-	/**
-	 * Safari seems to have a bug with the time when RefreshSize() is executed - it
-	 * thinks frmMain's innerHeight is 0 if we query the value too soon after the
-	 * page is loaded in some circumstances. (#1316)
-	 * TODO : Maybe this is not needed anymore after #35.
-	 */
-	if ( FCKBrowserInfo.IsSafari )
-	{
-		var originalRefreshSize = retval.RefreshSize ;
-
-		retval.RefreshSize = function()
-		{
-			FCKTools.SetTimeout( originalRefreshSize, 1, retval ) ;
-		}
-	}
-
-	/**
-	 * IE6 has a similar bug where it sometimes thinks $('contents') has an
-	 * offsetHeight of 0 (#2114).
-	 */
-	if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
-	{
-		var originalRefreshContainerSize = retval.RefreshContainerSize ;
-		retval.RefreshContainerSize = function()
-		{
-			FCKTools.SetTimeout( originalRefreshContainerSize, 1, retval ) ;
-		}
-	}
-
-	window.onresize = function()
-	{
-		retval.RefreshContainerSize() ;
-	}
-
-	window.SetAutoSize = FCKTools.Bind( retval, retval.SetAutoSize ) ;
-
-	return retval ;
-}() ;
-
-// Manages the throbber image that appears if the inner part of dialog is taking too long to load.
-var Throbber = function()
-{
-	var timer ;
-
-	var updateThrobber = function()
-	{
-		var throbberParent = $( 'throbberBlock' ) ;
-		var throbberBlocks = throbberParent.childNodes ;
-		var lastClass = throbberParent.lastChild.className ;
-
-		// From the last to the second one, copy the class from the previous one.
-		for ( var i = throbberBlocks.length - 1 ; i > 0 ; i-- )
-			throbberBlocks[i].className = throbberBlocks[i-1].className ;
-
-		// For the first one, copy the last class (rotation).
-		throbberBlocks[0].className = lastClass ;
-	}
-
-	return {
-		Show : function( waitMilliseconds )
-		{
-			// Auto-setup the Show function to be called again after the
-			// requested amount of time.
-			if ( waitMilliseconds && waitMilliseconds > 0 )
-			{
-				timer = FCKTools.SetTimeout( this.Show, waitMilliseconds, this, null, window ) ;
-				return ;
-			}
-
-			var throbberParent = $( 'throbberBlock' ) ;
-
-			if (throbberParent.childNodes.length == 0)
-			{
-				// Create the throbber blocks.
-				var classIds = [ 1,2,3,4,5,4,3,2 ] ;
-				while ( classIds.length > 0 )
-					throbberParent.appendChild( document.createElement( 'div' ) ).className = ' throbber_' + classIds.shift() ;
-			}
-
-			// Center the throbber.
-			var frm = $( 'contents' ) ;
-			var frmCoords = FCKTools.GetDocumentPosition( window, frm ) ;
-			var x = frmCoords.x + ( frm.offsetWidth - throbberParent.offsetWidth ) / 2 ;
-			var y = frmCoords.y + ( frm.offsetHeight - throbberParent.offsetHeight ) / 2 ;
-			throbberParent.style.left = parseInt( x, 10 ) + 'px' ;
-			throbberParent.style.top = parseInt( y, 10 ) + 'px' ;
-
-			// Show it.
-			throbberParent.style.visibility = ''  ;
-
-			// Hide tabs and buttons:
-			$( 'Tabs' ).style.visibility = 'hidden' ;
-			$( 'PopupButtons' ).style.visibility = 'hidden' ;
-
-			// Setup the animation interval.
-			timer = setInterval( updateThrobber, 100 ) ;
-		},
-
-		Hide : function()
-		{
-			if ( timer )
-			{
-				clearInterval( timer ) ;
-				timer = null ;
-			}
-
-			$( 'throbberBlock' ).style.visibility = 'hidden' ;
-
-			// Show tabs and buttons:
-			$( 'Tabs' ).style.visibility = '' ;
-			$( 'PopupButtons' ).style.visibility = '' ;
-		}
-	} ;
-}() ;
-
-// Drag and drop handlers.
-var DragAndDrop = function()
-{
-	var registeredWindows = [] ;
-	var lastCoords ;
-	var currentPos ;
-
-	var cleanUpHandlers = function()
-	{
-		for ( var i = 0 ; i < registeredWindows.length ; i++ )
-		{
-			FCKTools.RemoveEventListener( registeredWindows[i].document, 'mousemove', dragMouseMoveHandler ) ;
-			FCKTools.RemoveEventListener( registeredWindows[i].document, 'mouseup', dragMouseUpHandler ) ;
-		}
-	}
-
-	var dragMouseMoveHandler = function( evt )
-	{
-		if ( !lastCoords )
-			return ;
-
-		if ( !evt )
-			evt = FCKTools.GetElementDocument( this ).parentWindow.event ;
-
-		// Updated the last coordinates.
-		var currentCoords =
-		{
-			x : evt.screenX,
-			y : evt.screenY
-		} ;
-
-		currentPos =
-		{
-			x : currentPos.x + ( currentCoords.x - lastCoords.x ),
-			y : currentPos.y + ( currentCoords.y - lastCoords.y )
-		} ;
-
-		lastCoords = currentCoords ;
-
-		frameElement.style.left	= currentPos.x + 'px' ;
-		frameElement.style.top	= currentPos.y + 'px' ;
-
-		if ( evt.preventDefault )
-			evt.preventDefault() ;
-		else
-			evt.returnValue = false ;
-	}
-
-	var dragMouseUpHandler = function( evt )
-	{
-		if ( !lastCoords )
-			return ;
-		if ( !evt )
-			evt = FCKTools.GetElementDocument( this ).parentWindow.event ;
-		cleanUpHandlers() ;
-		lastCoords = null ;
-	}
-
-	return {
-
-		MouseDownHandler : function( evt )
-		{
-			var view = null ;
-			if ( !evt )
-			{
-				view = FCKTools.GetElementDocument( this ).parentWindow ;
-				evt = view.event ;
-			}
-			else
-				view = evt.view ;
-
-			var target = evt.srcElement || evt.target ;
-			if ( target.id == 'closeButton' || target.className == 'PopupTab' || target.className == 'PopupTabSelected' )
-				return ;
-
-			lastCoords =
-			{
-				x : evt.screenX,
-				y : evt.screenY
-			} ;
-
-			// Save the current IFRAME position.
-			currentPos =
-			{
-				x : parseInt( FCKDomTools.GetCurrentElementStyle( frameElement, 'left' ), 10 ),
-				y : parseInt( FCKDomTools.GetCurrentElementStyle( frameElement, 'top' ), 10 )
-			} ;
-
-			for ( var i = 0 ; i < registeredWindows.length ; i++ )
-			{
-				FCKTools.AddEventListener( registeredWindows[i].document, 'mousemove', dragMouseMoveHandler ) ;
-				FCKTools.AddEventListener( registeredWindows[i].document, 'mouseup', dragMouseUpHandler ) ;
-			}
-
-			if ( evt.preventDefault )
-				evt.preventDefault() ;
-			else
-				evt.returnValue = false ;
-		},
-
-		RegisterHandlers : function( w )
-		{
-			registeredWindows.push( w ) ;
-		}
-	}
-}() ;
-
-// Selection related functions.
-//(Became simple shortcuts after the fix for #1990)
-var Selection =
-{
-	/**
-	 * Ensures that the editing area contains an active selection. This is a
-	 * requirement for IE, as it looses the selection when the focus moves to other
-	 * frames.
-	 */
-	EnsureSelection : function()
-	{
-		FCK.Selection.Restore() ;
-	},
-
-	/**
-	 * Get the FCKSelection object for the editor instance.
-	 */
-	GetSelection : function()
-	{
-		return FCK.Selection ;
-	},
-
-	/**
-	 * Get the selected element in the editing area (for object selections).
-	 */
-	GetSelectedElement : function()
-	{
-		return FCK.Selection.GetSelectedElement() ;
-	}
-}
-
-// Tab related functions.
-var Tabs = function()
-{
-	// Only element ids should be stored here instead of element references since setSelectedTab and TabDiv_OnClick
-	// would build circular references with the element references inside and cause memory leaks in IE6.
-	var oTabs = new Object() ;
-
-	var setSelectedTab = function( tabCode )
-	{
-		for ( var sCode in oTabs )
-		{
-			if ( sCode == tabCode )
-				$( oTabs[sCode] ).className = 'PopupTabSelected' ;
-			else
-				$( oTabs[sCode] ).className = 'PopupTab' ;
-		}
-
-		if ( typeof( window.frames["frmMain"].OnDialogTabChange ) == 'function' )
-			window.frames["frmMain"].OnDialogTabChange( tabCode ) ;
-	}
-
-	function TabDiv_OnClick()
-	{
-		setSelectedTab( this.TabCode ) ;
-	}
-
-	window.AddTab = function( tabCode, tabText, startHidden )
-	{
-		if ( typeof( oTabs[ tabCode ] ) != 'undefined' )
-			return ;
-
-		var eTabsRow = $( 'Tabs' ) ;
-
-		var oCell = eTabsRow.insertCell(  eTabsRow.cells.length - 1 ) ;
-		oCell.noWrap = true ;
-
-		var oDiv = document.createElement( 'DIV' ) ;
-		oDiv.className = 'PopupTab' ;
-		oDiv.innerHTML = tabText ;
-		oDiv.TabCode = tabCode ;
-		oDiv.onclick = TabDiv_OnClick ;
-		oDiv.id = Math.random() ;
-
-		if ( startHidden )
-			oDiv.style.display = 'none' ;
-
-		eTabsRow = $( 'TabsRow' ) ;
-
-		oCell.appendChild( oDiv ) ;
-
-		if ( eTabsRow.style.display == 'none' )
-		{
-			var eTitleArea = $( 'TitleArea' ) ;
-			eTitleArea.className = 'PopupTitle' ;
-
-			oDiv.className = 'PopupTabSelected' ;
-			eTabsRow.style.display = '' ;
-
-			if ( window.onresize )
-				window.onresize() ;
-		}
-
-		oTabs[ tabCode ] = oDiv.id ;
-
-		FCKTools.DisableSelection( oDiv ) ;
-	} ;
-
-	window.SetSelectedTab = setSelectedTab ;
-
-	window.SetTabVisibility = function( tabCode, isVisible )
-	{
-		var oTab = $( oTabs[ tabCode ] ) ;
-		oTab.style.display = isVisible ? '' : 'none' ;
-
-		if ( ! isVisible && oTab.className == 'PopupTabSelected' )
-		{
-			for ( var sCode in oTabs )
-			{
-				if ( $( oTabs[sCode] ).style.display != 'none' )
-				{
-					setSelectedTab( sCode ) ;
-					break ;
-				}
-			}
-		}
-	} ;
-}() ;
-
-// readystatechange handler for registering drag and drop handlers in cover
-// iframes, defined out here to avoid memory leak.
-// Do NOT put this function as a private function as it will induce memory leak
-// in IE and it's not detectable with Drip or sIEve and undetectable leaks are
-// really nasty (sigh).
-var onReadyRegister = function()
-{
-	if ( this.readyState != 'complete' )
-		return ;
-	DragAndDrop.RegisterHandlers( this.contentWindow ) ;
-} ;
-
-// The business logic of the dialog, dealing with operational things like
-// dialog open/dialog close/enable/disable/etc.
-(function()
-{
-	var setOnKeyDown = function( targetDocument )
-	{
-		targetDocument.onkeydown = function ( e )
-		{
-			e = e || event || this.parentWindow.event ;
-			switch ( e.keyCode )
-			{
-				case 13 :		// ENTER
-					var oTarget = e.srcElement || e.target ;
-					if ( oTarget.tagName == 'TEXTAREA' )
-						return true ;
-					Ok() ;
-					return false ;
-
-				case 27 :		// ESC
-					Cancel() ;
-					return false ;
-			}
-			return true ;
-		}
-	} ;
-
-	var contextMenuBlocker = function( e )
-	{
-		var sTagName = e.target.tagName ;
-		if ( ! ( ( sTagName == "INPUT" && e.target.type == "text" ) || sTagName == "TEXTAREA" ) )
-			e.preventDefault() ;
-	} ;
-
-	var disableContextMenu = function( targetDocument )
-	{
-		if ( FCKBrowserInfo.IsIE )
-			return ;
-
-		targetDocument.addEventListener( 'contextmenu', contextMenuBlocker, true ) ;
-	} ;
-
-	// Program entry point.
-	window.Init = function()
-	{
-		// Start the throbber timer.
-		Throbber.Show( 1000 ) ;
-
-		Sizer.RefreshContainerSize() ;
-		LoadInnerDialog() ;
-
-		FCKTools.DisableSelection( document.body ) ;
-
-		// Make the title area draggable.
-		var titleElement = $( 'header' ) ;
-		titleElement.onmousedown = DragAndDrop.MouseDownHandler ;
-
-		// Connect mousemove and mouseup events from dialog frame and outer window to dialog dragging logic.
-		DragAndDrop.RegisterHandlers( window ) ;
-		DragAndDrop.RegisterHandlers( Args().TopWindow ) ;
-
-		// Disable the previous dialog if it exists.
-		if ( ParentDialog() )
-		{
-			ParentDialog().contentWindow.SetEnabled( false ) ;
-			if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
-			{
-				var currentParent = ParentDialog() ;
-				while ( currentParent )
-				{
-					var blockerFrame = currentParent.contentWindow.$( 'blocker' ) ;
-					if ( blockerFrame.readyState == 'complete' )
-						DragAndDrop.RegisterHandlers( blockerFrame.contentWindow ) ;
-					else
-						blockerFrame.onreadystatechange = onReadyRegister ;
-					currentParent = ParentDialog( currentParent ) ;
-				}
-			}
-			else
-			{
-				var currentParent = ParentDialog() ;
-				while ( currentParent )
-				{
-					DragAndDrop.RegisterHandlers( currentParent.contentWindow ) ;
-					currentParent = ParentDialog( currentParent ) ;
-				}
-			}
-		}
-
-		// If this is the only dialog on screen, enable the background cover.
-		if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
-		{
-			var blockerFrame = FCKDialog.GetCover().firstChild ;
-			if ( blockerFrame.readyState == 'complete' )
-				DragAndDrop.RegisterHandlers( blockerFrame.contentWindow ) ;
-			else
-				blockerFrame.onreadystatechange = onReadyRegister;
-		}
-
-		// Add Enter/Esc hotkeys and disable context menu for the dialog.
-		setOnKeyDown( document ) ;
-		disableContextMenu( document ) ;
-	} ;
-
-	window.LoadInnerDialog = function()
-	{
-		if ( window.onresize )
-			window.onresize() ;
-
-		// First of all, translate the dialog box contents.
-		E.FCKLanguageManager.TranslatePage( document ) ;
-
-		// Create the IFRAME that holds the dialog contents.
-		$( 'innerContents' ).innerHTML = '<iframe id="frmMain" src="' + Args().Page + '" name="frmMain" frameborder="0" width="100%" height="100%" scrolling="auto" style="visibility: hidden;" allowtransparency="true"><\/iframe>' ;
-	} ;
-
-	window.InnerDialogLoaded = function()
-	{
-		// If the dialog has been closed before the iframe is loaded, do nothing.
-		if ( !frameElement.parentNode )
-			return null ;
-
-		Throbber.Hide() ;
-
-		var frmMain = $('frmMain') ;
-		var innerWindow = frmMain.contentWindow ;
-		var innerDoc = innerWindow.document ;
-
-		// Show the loaded iframe.
-		frmMain.style.visibility = '' ;
-
-		// Set the language direction.
-		innerDoc.documentElement.dir = langDir ;
-
-		// Sets the Skin CSS.
-		innerDoc.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;
-
-		setOnKeyDown( innerDoc ) ;
-		disableContextMenu( innerDoc ) ;
-
-		Sizer.RefreshContainerSize();
-
-		DragAndDrop.RegisterHandlers( innerWindow ) ;
-
-		innerWindow.focus() ;
-
-		return E ;
-	} ;
-
-	window.SetOkButton = function( showIt )
-	{
-		$('btnOk').style.visibility = ( showIt ? '' : 'hidden' ) ;
-	} ;
-
-	window.Ok = function()
-	{
-		Selection.EnsureSelection() ;
-
-		var frmMain = window.frames["frmMain"] ;
-
-		if ( frmMain.Ok && frmMain.Ok() )
-			CloseDialog() ;
-		else
-			frmMain.focus() ;
-	} ;
-
-	window.Cancel = function( dontFireChange )
-	{
-		Selection.EnsureSelection() ;
-		return CloseDialog( dontFireChange ) ;
-	} ;
-
-	window.CloseDialog = function( dontFireChange )
-	{
-		Throbber.Hide() ;
-
-		// Points the src to a non-existent location to avoid loading errors later, in case the dialog
-		// haven't been completed loaded at this point.
-		if ( $( 'frmMain' ) )
-			$( 'frmMain' ).src = FCKTools.GetVoidUrl() ;
-
-		if ( !dontFireChange && !FCK.EditMode )
-		{
-			// All dialog windows, by default, will fire the "OnSelectionChange"
-			// event, no matter the Ok or Cancel button has been pressed.
-			// It seems that OnSelectionChange may enter on a concurrency state
-			// on some situations (#1965), so we should put the event firing in
-			// the execution queue instead of executing it immediately.
-			setTimeout( function()
-				{
-					FCK.Events.FireEvent( 'OnSelectionChange' ) ;
-				}, 0 ) ;
-		}
-
-		FCKDialog.OnDialogClose( window ) ;
-	} ;
-
-	window.SetEnabled = function( isEnabled )
-	{
-		var cover = $( 'cover' ) ;
-		cover.style.display = isEnabled ? 'none' : '' ;
-
-		if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
-		{
-			if ( !isEnabled )
-			{
-				// Inser the blocker IFRAME before the cover.
-				var blocker = document.createElement( 'iframe' ) ;
-				blocker.src = FCKTools.GetVoidUrl() ;
-				blocker.hideFocus = true ;
-				blocker.frameBorder = 0 ;
-				blocker.id = blocker.className = 'blocker' ;
-				cover.appendChild( blocker ) ;
-			}
-			else
-			{
-				var blocker = $( 'blocker' ) ;
-				if ( blocker && blocker.parentNode )
-					blocker.parentNode.removeChild( blocker ) ;
-			}
-		}
-	} ;
-})() ;
-// ]]>
-		</script>
-	</head>
-	<body onload="Init();" class="PopupBody">
-		<div class="contents" id="contents">
-			<div id="header">
-				<div id="TitleArea" class="PopupTitle PopupTitleBorder">
-					<script type="text/javascript">
-// <![CDATA[
-document.write( Args().Title ) ;
-// ]]>
-					</script>
-					<div id="closeButton" onclick="Cancel();"></div>
-				</div>
-				<div id="TabsRow" class="PopupTabArea" style="display: none">
-					<table border="0" cellpadding="0" cellspacing="0" width="100%">
-						<tr id="Tabs">
-							<td class="PopupTabEmptyArea">&nbsp;</td>
-							<td class="PopupTabEmptyArea" width="100%">&nbsp;</td>
-						</tr>
-					</table>
-				</div>
-			</div>
-			<div id="innerContents"></div>
-			<div id="PopupButtons" class="PopupButtons">
-				<table border="0" cellpadding="0" cellspacing="0">
-					<tr>
-						<td width="100%">&nbsp;</td>
-						<td nowrap="nowrap">
-							<input id="btnOk" style="visibility: hidden;" type="button" value="Ok" class="Button" onclick="Ok();" fckLang="DlgBtnOK" />
-							&nbsp;
-							<input id="btnCancel" type="button" value="Cancel" class="Button" onclick="Cancel();" fckLang="DlgBtnCancel" />
-						</td>
-					</tr>
-				</table>
-			</div>
-		</div>
-		<div class="tl"></div>
-		<div class="tc"></div>
-		<div class="tr"></div>
-		<div class="ml"></div>
-		<div class="mr"></div>
-		<div class="bl"></div>
-		<div class="bc"></div>
-		<div class="br"></div>
-		<div class="cover" id="cover" style="display:none"></div>
-		<div id="throbberBlock" style="position: absolute; visibility: hidden"></div>
-		<script type="text/javascript">
-// <![CDATA[
-			// Set the class name for language direction.
-			document.body.className += ' ' + langDir ;
-
-			var cover = $( 'cover' ) ;
-			cover.style.backgroundColor = FCKConfig.BackgroundBlockerColor ;
-			FCKDomTools.SetOpacity( cover, FCKConfig.BackgroundBlockerOpacity ) ;
-// ]]>
-		</script>
-	</body>
-</html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 page is used by all dialog box as the container.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<title></title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+		<meta name="robots" content="noindex, nofollow" />
+		<script type="text/javascript">
+// <![CDATA[
+
+// Domain relaxation logic.
+(function()
+{
+	var d = document.domain ;
+
+	while ( true )
+	{
+		// Test if we can access a parent property.
+		try
+		{
+			var parentDomain = ( Args().TopWindow || E ).document.domain ;
+
+			if ( document.domain != parentDomain )
+				document.domain = parentDomain ;
+
+			break ;
+		}
+		catch( e ) {}
+
+		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
+		d = d.replace( /.*?(?:\.|$)/, '' ) ;
+
+		if ( d.length == 0 )
+			break ;		// It was not able to detect the domain.
+
+		document.domain = d ;
+	}
+})() ;
+
+var E = frameElement._DialogArguments.Editor ;
+
+// It seems referencing to frameElement._DialogArguments directly would lead to memory leaks in IE.
+// So let's use functions to access its members instead.
+function Args()
+{
+	return frameElement._DialogArguments ;
+}
+
+function ParentDialog( dialog )
+{
+	return dialog ? dialog._ParentDialog : frameElement._ParentDialog ;
+}
+
+var FCK				= E.FCK ;
+var FCKTools		= E.FCKTools ;
+var FCKDomTools		= E.FCKDomTools ;
+var FCKDialog		= E.FCKDialog ;
+var FCKBrowserInfo	= E.FCKBrowserInfo ;
+var FCKConfig		= E.FCKConfig ;
+
+// Steal the focus so that the caret would no longer stay in the editor iframe.
+window.focus() ;
+
+// Sets the Skin CSS
+document.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;
+
+// Sets the language direction.
+var langDir = document.documentElement.dir = E.FCKLang.Dir ;
+
+// For IE6-, the fck_dialog_ie6.js is loaded, used to fix limitations in the browser.
+if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
+	document.write( '<' + 'script type="text/javascript" src="' + FCKConfig.SkinPath + 'fck_dialog_ie6.js"><' + '\/script>' ) ;
+
+FCKTools.RegisterDollarFunction( window ) ;
+
+// Resize related functions.
+var Sizer = function()
+{
+	var bAutoSize = false ;
+
+	var retval = {
+		// Sets whether the dialog should auto-resize according to its content's height.
+		SetAutoSize : function( autoSize )
+		{
+			bAutoSize = autoSize ;
+			this.RefreshSize() ;
+		},
+
+		// Fit the dialog container's layout to the inner iframe's external size.
+		RefreshContainerSize : function()
+		{
+			var frmMain = $( 'frmMain' ) ;
+
+			if ( frmMain )
+			{
+				// Get the container size.
+				var height = $( 'contents' ).offsetHeight ;
+
+				// Subtract the size of other elements.
+				height -= $( 'TitleArea' ).offsetHeight ;
+				height -= $( 'TabsRow' ).offsetHeight ;
+				height -= $( 'PopupButtons' ).offsetHeight ;
+
+				frmMain.style.height = Math.max( height, 0 ) + 'px' ;
+			}
+		},
+
+		// Resize and re-layout the dialog.
+		// Triggers the onresize event for the layout logic.
+		ResizeDialog : function( width, height )
+		{
+			FCKDomTools.SetElementStyles( window.frameElement,
+					{
+						'width' : width + 'px',
+						'height' : height + 'px'
+					} ) ;
+
+			// If the skin have defined a function for resize fixes, call it now.
+			if ( typeof window.DoResizeFixes == 'function' )
+				window.DoResizeFixes() ;
+		},
+
+		// if bAutoSize is true, automatically fit the dialog size and layout to
+		// accomodate the inner iframe's internal height.
+		// if bAutoSize is false, then only the layout logic for the dialog decorations
+		// is run to accomodate the inner iframe's external height.
+		RefreshSize : function()
+		{
+			if ( bAutoSize )
+			{
+				var frmMain		= $( 'frmMain' ) ;
+				var innerDoc	= frmMain.contentWindow.document ;
+				var isStrict	= FCKTools.IsStrictMode( innerDoc ) ;
+
+				// Get the size of the frame contents.
+				var innerWidth	= isStrict ? innerDoc.documentElement.scrollWidth : innerDoc.body.scrollWidth ;
+				var innerHeight	= isStrict ? innerDoc.documentElement.scrollHeight : innerDoc.body.scrollHeight ;
+
+				// Get the current frame size.
+				var frameSize = FCKTools.GetViewPaneSize( frmMain.contentWindow ) ;
+
+				var deltaWidth	= innerWidth - frameSize.Width ;
+				var deltaHeight	= innerHeight - frameSize.Height ;
+
+				// If the contents fits the current size.
+				if ( deltaWidth <= 0 && deltaHeight <= 0 )
+					return ;
+
+				var dialogWidth		= frameElement.offsetWidth + Math.max( deltaWidth, 0 ) ;
+				var dialogHeight	= frameElement.offsetHeight + Math.max( deltaHeight, 0 ) ;
+
+				this.ResizeDialog( dialogWidth, dialogHeight ) ;
+			}
+			this.RefreshContainerSize() ;
+		}
+	}
+
+	/**
+	 * Safari seems to have a bug with the time when RefreshSize() is executed - it
+	 * thinks frmMain's innerHeight is 0 if we query the value too soon after the
+	 * page is loaded in some circumstances. (#1316)
+	 * TODO : Maybe this is not needed anymore after #35.
+	 */
+	if ( FCKBrowserInfo.IsSafari )
+	{
+		var originalRefreshSize = retval.RefreshSize ;
+
+		retval.RefreshSize = function()
+		{
+			FCKTools.SetTimeout( originalRefreshSize, 1, retval ) ;
+		}
+	}
+
+	/**
+	 * IE6 has a similar bug where it sometimes thinks $('contents') has an
+	 * offsetHeight of 0 (#2114).
+	 */
+	if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
+	{
+		var originalRefreshContainerSize = retval.RefreshContainerSize ;
+		retval.RefreshContainerSize = function()
+		{
+			FCKTools.SetTimeout( originalRefreshContainerSize, 1, retval ) ;
+		}
+	}
+
+	window.onresize = function()
+	{
+		retval.RefreshContainerSize() ;
+	}
+
+	window.SetAutoSize = FCKTools.Bind( retval, retval.SetAutoSize ) ;
+
+	return retval ;
+}() ;
+
+// Manages the throbber image that appears if the inner part of dialog is taking too long to load.
+var Throbber = function()
+{
+	var timer ;
+
+	var updateThrobber = function()
+	{
+		var throbberParent = $( 'throbberBlock' ) ;
+		var throbberBlocks = throbberParent.childNodes ;
+		var lastClass = throbberParent.lastChild.className ;
+
+		// From the last to the second one, copy the class from the previous one.
+		for ( var i = throbberBlocks.length - 1 ; i > 0 ; i-- )
+			throbberBlocks[i].className = throbberBlocks[i-1].className ;
+
+		// For the first one, copy the last class (rotation).
+		throbberBlocks[0].className = lastClass ;
+	}
+
+	return {
+		Show : function( waitMilliseconds )
+		{
+			// Auto-setup the Show function to be called again after the
+			// requested amount of time.
+			if ( waitMilliseconds && waitMilliseconds > 0 )
+			{
+				timer = FCKTools.SetTimeout( this.Show, waitMilliseconds, this, null, window ) ;
+				return ;
+			}
+
+			var throbberParent = $( 'throbberBlock' ) ;
+
+			if (throbberParent.childNodes.length == 0)
+			{
+				// Create the throbber blocks.
+				var classIds = [ 1,2,3,4,5,4,3,2 ] ;
+				while ( classIds.length > 0 )
+					throbberParent.appendChild( document.createElement( 'div' ) ).className = ' throbber_' + classIds.shift() ;
+			}
+
+			// Center the throbber.
+			var frm = $( 'contents' ) ;
+			var frmCoords = FCKTools.GetDocumentPosition( window, frm ) ;
+			var x = frmCoords.x + ( frm.offsetWidth - throbberParent.offsetWidth ) / 2 ;
+			var y = frmCoords.y + ( frm.offsetHeight - throbberParent.offsetHeight ) / 2 ;
+			throbberParent.style.left = parseInt( x, 10 ) + 'px' ;
+			throbberParent.style.top = parseInt( y, 10 ) + 'px' ;
+
+			// Show it.
+			throbberParent.style.visibility = ''  ;
+
+			// Hide tabs and buttons:
+			$( 'Tabs' ).style.visibility = 'hidden' ;
+			$( 'PopupButtons' ).style.visibility = 'hidden' ;
+
+			// Setup the animation interval.
+			timer = setInterval( updateThrobber, 100 ) ;
+		},
+
+		Hide : function()
+		{
+			if ( timer )
+			{
+				clearInterval( timer ) ;
+				timer = null ;
+			}
+
+			$( 'throbberBlock' ).style.visibility = 'hidden' ;
+
+			// Show tabs and buttons:
+			$( 'Tabs' ).style.visibility = '' ;
+			$( 'PopupButtons' ).style.visibility = '' ;
+		}
+	} ;
+}() ;
+
+// Drag and drop handlers.
+var DragAndDrop = function()
+{
+	var registeredWindows = [] ;
+	var lastCoords ;
+	var currentPos ;
+
+	var cleanUpHandlers = function()
+	{
+		for ( var i = 0 ; i < registeredWindows.length ; i++ )
+		{
+			FCKTools.RemoveEventListener( registeredWindows[i].document, 'mousemove', dragMouseMoveHandler ) ;
+			FCKTools.RemoveEventListener( registeredWindows[i].document, 'mouseup', dragMouseUpHandler ) ;
+		}
+	}
+
+	var dragMouseMoveHandler = function( evt )
+	{
+		if ( !lastCoords )
+			return ;
+
+		if ( !evt )
+			evt = FCKTools.GetElementDocument( this ).parentWindow.event ;
+
+		// Updated the last coordinates.
+		var currentCoords =
+		{
+			x : evt.screenX,
+			y : evt.screenY
+		} ;
+
+		currentPos =
+		{
+			x : currentPos.x + ( currentCoords.x - lastCoords.x ),
+			y : currentPos.y + ( currentCoords.y - lastCoords.y )
+		} ;
+
+		lastCoords = currentCoords ;
+
+		frameElement.style.left	= currentPos.x + 'px' ;
+		frameElement.style.top	= currentPos.y + 'px' ;
+
+		if ( evt.preventDefault )
+			evt.preventDefault() ;
+		else
+			evt.returnValue = false ;
+	}
+
+	var dragMouseUpHandler = function( evt )
+	{
+		if ( !lastCoords )
+			return ;
+		if ( !evt )
+			evt = FCKTools.GetElementDocument( this ).parentWindow.event ;
+		cleanUpHandlers() ;
+		lastCoords = null ;
+	}
+
+	return {
+
+		MouseDownHandler : function( evt )
+		{
+			var view = null ;
+			if ( !evt )
+			{
+				view = FCKTools.GetElementDocument( this ).parentWindow ;
+				evt = view.event ;
+			}
+			else
+				view = evt.view ;
+
+			var target = evt.srcElement || evt.target ;
+			if ( target.id == 'closeButton' || target.className == 'PopupTab' || target.className == 'PopupTabSelected' )
+				return ;
+
+			lastCoords =
+			{
+				x : evt.screenX,
+				y : evt.screenY
+			} ;
+
+			// Save the current IFRAME position.
+			currentPos =
+			{
+				x : parseInt( FCKDomTools.GetCurrentElementStyle( frameElement, 'left' ), 10 ),
+				y : parseInt( FCKDomTools.GetCurrentElementStyle( frameElement, 'top' ), 10 )
+			} ;
+
+			for ( var i = 0 ; i < registeredWindows.length ; i++ )
+			{
+				FCKTools.AddEventListener( registeredWindows[i].document, 'mousemove', dragMouseMoveHandler ) ;
+				FCKTools.AddEventListener( registeredWindows[i].document, 'mouseup', dragMouseUpHandler ) ;
+			}
+
+			if ( evt.preventDefault )
+				evt.preventDefault() ;
+			else
+				evt.returnValue = false ;
+		},
+
+		RegisterHandlers : function( w )
+		{
+			registeredWindows.push( w ) ;
+		}
+	}
+}() ;
+
+// Selection related functions.
+//(Became simple shortcuts after the fix for #1990)
+var Selection =
+{
+	/**
+	 * Ensures that the editing area contains an active selection. This is a
+	 * requirement for IE, as it looses the selection when the focus moves to other
+	 * frames.
+	 */
+	EnsureSelection : function()
+	{
+		FCK.Selection.Restore() ;
+	},
+
+	/**
+	 * Get the FCKSelection object for the editor instance.
+	 */
+	GetSelection : function()
+	{
+		return FCK.Selection ;
+	},
+
+	/**
+	 * Get the selected element in the editing area (for object selections).
+	 */
+	GetSelectedElement : function()
+	{
+		return FCK.Selection.GetSelectedElement() ;
+	}
+}
+
+// Tab related functions.
+var Tabs = function()
+{
+	// Only element ids should be stored here instead of element references since setSelectedTab and TabDiv_OnClick
+	// would build circular references with the element references inside and cause memory leaks in IE6.
+	var oTabs = new Object() ;
+
+	var setSelectedTab = function( tabCode )
+	{
+		for ( var sCode in oTabs )
+		{
+			if ( sCode == tabCode )
+				$( oTabs[sCode] ).className = 'PopupTabSelected' ;
+			else
+				$( oTabs[sCode] ).className = 'PopupTab' ;
+		}
+
+		if ( typeof( window.frames["frmMain"].OnDialogTabChange ) == 'function' )
+			window.frames["frmMain"].OnDialogTabChange( tabCode ) ;
+	}
+
+	function TabDiv_OnClick()
+	{
+		setSelectedTab( this.TabCode ) ;
+	}
+
+	window.AddTab = function( tabCode, tabText, startHidden )
+	{
+		if ( typeof( oTabs[ tabCode ] ) != 'undefined' )
+			return ;
+
+		var eTabsRow = $( 'Tabs' ) ;
+
+		var oCell = eTabsRow.insertCell(  eTabsRow.cells.length - 1 ) ;
+		oCell.noWrap = true ;
+
+		var oDiv = document.createElement( 'DIV' ) ;
+		oDiv.className = 'PopupTab' ;
+		oDiv.innerHTML = tabText ;
+		oDiv.TabCode = tabCode ;
+		oDiv.onclick = TabDiv_OnClick ;
+		oDiv.id = Math.random() ;
+
+		if ( startHidden )
+			oDiv.style.display = 'none' ;
+
+		eTabsRow = $( 'TabsRow' ) ;
+
+		oCell.appendChild( oDiv ) ;
+
+		if ( eTabsRow.style.display == 'none' )
+		{
+			var eTitleArea = $( 'TitleArea' ) ;
+			eTitleArea.className = 'PopupTitle' ;
+
+			oDiv.className = 'PopupTabSelected' ;
+			eTabsRow.style.display = '' ;
+
+			if ( window.onresize )
+				window.onresize() ;
+		}
+
+		oTabs[ tabCode ] = oDiv.id ;
+
+		FCKTools.DisableSelection( oDiv ) ;
+	} ;
+
+	window.SetSelectedTab = setSelectedTab ;
+
+	window.SetTabVisibility = function( tabCode, isVisible )
+	{
+		var oTab = $( oTabs[ tabCode ] ) ;
+		oTab.style.display = isVisible ? '' : 'none' ;
+
+		if ( ! isVisible && oTab.className == 'PopupTabSelected' )
+		{
+			for ( var sCode in oTabs )
+			{
+				if ( $( oTabs[sCode] ).style.display != 'none' )
+				{
+					setSelectedTab( sCode ) ;
+					break ;
+				}
+			}
+		}
+	} ;
+}() ;
+
+// readystatechange handler for registering drag and drop handlers in cover
+// iframes, defined out here to avoid memory leak.
+// Do NOT put this function as a private function as it will induce memory leak
+// in IE and it's not detectable with Drip or sIEve and undetectable leaks are
+// really nasty (sigh).
+var onReadyRegister = function()
+{
+	if ( this.readyState != 'complete' )
+		return ;
+	DragAndDrop.RegisterHandlers( this.contentWindow ) ;
+} ;
+
+// The business logic of the dialog, dealing with operational things like
+// dialog open/dialog close/enable/disable/etc.
+(function()
+{
+	var setOnKeyDown = function( targetDocument )
+	{
+		targetDocument.onkeydown = function ( e )
+		{
+			e = e || event || this.parentWindow.event ;
+			switch ( e.keyCode )
+			{
+				case 13 :		// ENTER
+					var oTarget = e.srcElement || e.target ;
+					if ( oTarget.tagName == 'TEXTAREA' )
+						return true ;
+					Ok() ;
+					return false ;
+
+				case 27 :		// ESC
+					Cancel() ;
+					return false ;
+			}
+			return true ;
+		}
+	} ;
+
+	var contextMenuBlocker = function( e )
+	{
+		var sTagName = e.target.tagName ;
+		if ( ! ( ( sTagName == "INPUT" && e.target.type == "text" ) || sTagName == "TEXTAREA" ) )
+			e.preventDefault() ;
+	} ;
+
+	var disableContextMenu = function( targetDocument )
+	{
+		if ( FCKBrowserInfo.IsIE )
+			return ;
+
+		targetDocument.addEventListener( 'contextmenu', contextMenuBlocker, true ) ;
+	} ;
+
+	// Program entry point.
+	window.Init = function()
+	{
+		// Start the throbber timer.
+		Throbber.Show( 1000 ) ;
+
+		Sizer.RefreshContainerSize() ;
+		LoadInnerDialog() ;
+
+		FCKTools.DisableSelection( document.body ) ;
+
+		// Make the title area draggable.
+		var titleElement = $( 'header' ) ;
+		titleElement.onmousedown = DragAndDrop.MouseDownHandler ;
+
+		// Connect mousemove and mouseup events from dialog frame and outer window to dialog dragging logic.
+		DragAndDrop.RegisterHandlers( window ) ;
+		DragAndDrop.RegisterHandlers( Args().TopWindow ) ;
+
+		// Disable the previous dialog if it exists.
+		if ( ParentDialog() )
+		{
+			ParentDialog().contentWindow.SetEnabled( false ) ;
+			if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
+			{
+				var currentParent = ParentDialog() ;
+				while ( currentParent )
+				{
+					var blockerFrame = currentParent.contentWindow.$( 'blocker' ) ;
+					if ( blockerFrame.readyState == 'complete' )
+						DragAndDrop.RegisterHandlers( blockerFrame.contentWindow ) ;
+					else
+						blockerFrame.onreadystatechange = onReadyRegister ;
+					currentParent = ParentDialog( currentParent ) ;
+				}
+			}
+			else
+			{
+				var currentParent = ParentDialog() ;
+				while ( currentParent )
+				{
+					DragAndDrop.RegisterHandlers( currentParent.contentWindow ) ;
+					currentParent = ParentDialog( currentParent ) ;
+				}
+			}
+		}
+
+		// If this is the only dialog on screen, enable the background cover.
+		if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
+		{
+			var blockerFrame = FCKDialog.GetCover().firstChild ;
+			if ( blockerFrame.readyState == 'complete' )
+				DragAndDrop.RegisterHandlers( blockerFrame.contentWindow ) ;
+			else
+				blockerFrame.onreadystatechange = onReadyRegister;
+		}
+
+		// Add Enter/Esc hotkeys and disable context menu for the dialog.
+		setOnKeyDown( document ) ;
+		disableContextMenu( document ) ;
+	} ;
+
+	window.LoadInnerDialog = function()
+	{
+		if ( window.onresize )
+			window.onresize() ;
+
+		// First of all, translate the dialog box contents.
+		E.FCKLanguageManager.TranslatePage( document ) ;
+
+		// Create the IFRAME that holds the dialog contents.
+		$( 'innerContents' ).innerHTML = '<iframe id="frmMain" src="' + Args().Page + '" name="frmMain" frameborder="0" width="100%" height="100%" scrolling="auto" style="visibility: hidden;" allowtransparency="true"><\/iframe>' ;
+	} ;
+
+	window.InnerDialogLoaded = function()
+	{
+		// If the dialog has been closed before the iframe is loaded, do nothing.
+		if ( !frameElement.parentNode )
+			return null ;
+
+		Throbber.Hide() ;
+
+		var frmMain = $('frmMain') ;
+		var innerWindow = frmMain.contentWindow ;
+		var innerDoc = innerWindow.document ;
+
+		// Show the loaded iframe.
+		frmMain.style.visibility = '' ;
+
+		// Set the language direction.
+		innerDoc.documentElement.dir = langDir ;
+
+		// Sets the Skin CSS.
+		innerDoc.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;
+
+		setOnKeyDown( innerDoc ) ;
+		disableContextMenu( innerDoc ) ;
+
+		Sizer.RefreshContainerSize();
+
+		DragAndDrop.RegisterHandlers( innerWindow ) ;
+
+		innerWindow.focus() ;
+
+		return E ;
+	} ;
+
+	window.SetOkButton = function( showIt )
+	{
+		$('btnOk').style.visibility = ( showIt ? '' : 'hidden' ) ;
+	} ;
+
+	window.Ok = function()
+	{
+		Selection.EnsureSelection() ;
+
+		var frmMain = window.frames["frmMain"] ;
+
+		if ( frmMain.Ok && frmMain.Ok() )
+			CloseDialog() ;
+		else
+			frmMain.focus() ;
+	} ;
+
+	window.Cancel = function( dontFireChange )
+	{
+		Selection.EnsureSelection() ;
+		return CloseDialog( dontFireChange ) ;
+	} ;
+
+	window.CloseDialog = function( dontFireChange )
+	{
+		Throbber.Hide() ;
+
+		// Points the src to a non-existent location to avoid loading errors later, in case the dialog
+		// haven't been completed loaded at this point.
+		if ( $( 'frmMain' ) )
+			$( 'frmMain' ).src = FCKTools.GetVoidUrl() ;
+
+		if ( !dontFireChange && !FCK.EditMode )
+		{
+			// All dialog windows, by default, will fire the "OnSelectionChange"
+			// event, no matter the Ok or Cancel button has been pressed.
+			// It seems that OnSelectionChange may enter on a concurrency state
+			// on some situations (#1965), so we should put the event firing in
+			// the execution queue instead of executing it immediately.
+			setTimeout( function()
+				{
+					FCK.Events.FireEvent( 'OnSelectionChange' ) ;
+				}, 0 ) ;
+		}
+
+		FCKDialog.OnDialogClose( window ) ;
+	} ;
+
+	window.SetEnabled = function( isEnabled )
+	{
+		var cover = $( 'cover' ) ;
+		cover.style.display = isEnabled ? 'none' : '' ;
+
+		if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
+		{
+			if ( !isEnabled )
+			{
+				// Inser the blocker IFRAME before the cover.
+				var blocker = document.createElement( 'iframe' ) ;
+				blocker.src = FCKTools.GetVoidUrl() ;
+				blocker.hideFocus = true ;
+				blocker.frameBorder = 0 ;
+				blocker.id = blocker.className = 'blocker' ;
+				cover.appendChild( blocker ) ;
+			}
+			else
+			{
+				var blocker = $( 'blocker' ) ;
+				if ( blocker && blocker.parentNode )
+					blocker.parentNode.removeChild( blocker ) ;
+			}
+		}
+	} ;
+})() ;
+// ]]>
+		</script>
+	</head>
+	<body onload="Init();" class="PopupBody">
+		<div class="contents" id="contents">
+			<div id="header">
+				<div id="TitleArea" class="PopupTitle PopupTitleBorder">
+					<script type="text/javascript">
+// <![CDATA[
+document.write( Args().Title ) ;
+// ]]>
+					</script>
+					<div id="closeButton" onclick="Cancel();"></div>
+				</div>
+				<div id="TabsRow" class="PopupTabArea" style="display: none">
+					<table border="0" cellpadding="0" cellspacing="0" width="100%">
+						<tr id="Tabs">
+							<td class="PopupTabEmptyArea">&nbsp;</td>
+							<td class="PopupTabEmptyArea" width="100%">&nbsp;</td>
+						</tr>
+					</table>
+				</div>
+			</div>
+			<div id="innerContents"></div>
+			<div id="PopupButtons" class="PopupButtons">
+				<table border="0" cellpadding="0" cellspacing="0">
+					<tr>
+						<td width="100%">&nbsp;</td>
+						<td nowrap="nowrap">
+							<input id="btnOk" style="visibility: hidden;" type="button" value="Ok" class="Button" onclick="Ok();" fckLang="DlgBtnOK" />
+							&nbsp;
+							<input id="btnCancel" type="button" value="Cancel" class="Button" onclick="Cancel();" fckLang="DlgBtnCancel" />
+						</td>
+					</tr>
+				</table>
+			</div>
+		</div>
+		<div class="tl"></div>
+		<div class="tc"></div>
+		<div class="tr"></div>
+		<div class="ml"></div>
+		<div class="mr"></div>
+		<div class="bl"></div>
+		<div class="bc"></div>
+		<div class="br"></div>
+		<div class="cover" id="cover" style="display:none"></div>
+		<div id="throbberBlock" style="position: absolute; visibility: hidden"></div>
+		<script type="text/javascript">
+// <![CDATA[
+			// Set the class name for language direction.
+			document.body.className += ' ' + langDir ;
+
+			var cover = $( 'cover' ) ;
+			cover.style.backgroundColor = FCKConfig.BackgroundBlockerColor ;
+			FCKDomTools.SetOpacity( cover, FCKConfig.BackgroundBlockerOpacity ) ;
+// ]]>
+		</script>
+	</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/fckeditor.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/fckeditor.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/fckeditor.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,317 +1,317 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Main page that holds the editor.
--->
-<html>
-<head>
-	<title>FCKeditor</title>
-	<meta name="robots" content="noindex, nofollow">
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-	<meta http-equiv="Cache-Control" content="public">
-	<script type="text/javascript">
-
-// #1645: Alert the user if opening FCKeditor in FF3 from local filesystem
-// without security.fileuri.strict_origin_policy disabled.
-if ( document.location.protocol == 'file:' )
-{
-	try
-	{
-		window.parent.document.domain ;
-	}
-	catch ( e )
-	{
-		window.addEventListener( 'load', function()
-			{
-				document.body.innerHTML = '\
-					<div style="border: 1px red solid; font-family: arial; font-size: 12px; color: red; padding:10px;">\
-						<p>\
-							<b>Your browser security settings don\'t allow FCKeditor to be opened from\
-							the local filesystem.<\/b>\
-						<\/p>\
-						<p>\
-							Please open the <b>about:config<\/b> page and disable the\
-							&quot;security.fileuri.strict_origin_policy&quot; option; then load this page again.\
-						<\/p>\
-						<p>\
-							Check our <a href="http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/FAQ#ff3perms">FAQ<\/a>\
-							for more information.\
-						<\/p>\
-					<\/div>' ;
-			}, false ) ;
-	}
-}
-
-// Save a reference to the default domain.
-var FCK_ORIGINAL_DOMAIN ;
-
-// Automatically detect the correct document.domain (#123).
-(function()
-{
-	var d = FCK_ORIGINAL_DOMAIN = document.domain ;
-
-	while ( true )
-	{
-		// Test if we can access a parent property.
-		try
-		{
-			var test = window.parent.document.domain ;
-			break ;
-		}
-		catch( e ) {}
-
-		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
-		d = d.replace( /.*?(?:\.|$)/, '' ) ;
-
-		if ( d.length == 0 )
-			break ;		// It was not able to detect the domain.
-
-		try
-		{
-			document.domain = d ;
-		}
-		catch (e)
-		{
-			break ;
-		}
-	}
-})() ;
-
-// Save a reference to the detected runtime domain.
-var FCK_RUNTIME_DOMAIN = document.domain ;
-
-var FCK_IS_CUSTOM_DOMAIN = ( FCK_ORIGINAL_DOMAIN != FCK_RUNTIME_DOMAIN ) ;
-
-// Instead of loading scripts and CSSs using inline tags, all scripts are
-// loaded by code. In this way we can guarantee the correct processing order,
-// otherwise external scripts and inline scripts could be executed in an
-// unwanted order (IE).
-
-function LoadScript( url )
-{
-	document.write( '<scr' + 'ipt type="text/javascript" src="' + url + '"><\/scr' + 'ipt>' ) ;
-}
-
-// Main editor scripts.
-var sSuffix = ( /*@cc_on!@*/false ) ? 'ie' : 'gecko' ;
-
-LoadScript( 'js/fckeditorcode_' + sSuffix + '.js' ) ;
-
-// Base configuration file.
-LoadScript( '../fckconfig.js' ) ;
-
-	</script>
-	<script type="text/javascript">
-
-// Adobe AIR compatibility file.
-if ( FCKBrowserInfo.IsAIR )
-	LoadScript( 'js/fckadobeair.js' ) ;
-
-if ( FCKBrowserInfo.IsIE )
-{
-	// Remove IE mouse flickering.
-	try
-	{
-		document.execCommand( 'BackgroundImageCache', false, true ) ;
-	}
-	catch (e)
-	{
-		// We have been reported about loading problems caused by the above
-		// line. For safety, let's just ignore errors.
-	}
-
-	// Create the default cleanup object used by the editor.
-	FCK.IECleanup = new FCKIECleanup( window ) ;
-	FCK.IECleanup.AddItem( FCKTempBin, FCKTempBin.Reset ) ;
-	FCK.IECleanup.AddItem( FCK, FCK_Cleanup ) ;
-}
-
-// The first function to be called on selection change must the the styles
-// change checker, because the result of its processing may be used by another
-// functions listening to the same event.
-FCK.Events.AttachEvent( 'OnSelectionChange', function() { FCKStyles.CheckSelectionChanges() ; } ) ;
-
-// The config hidden field is processed immediately, because
-// CustomConfigurationsPath may be set in the page.
-FCKConfig.ProcessHiddenField() ;
-
-// Load the custom configurations file (if defined).
-if ( FCKConfig.CustomConfigurationsPath.length > 0 )
-	LoadScript( FCKConfig.CustomConfigurationsPath ) ;
-
-	</script>
-	<script type="text/javascript">
-
-// Load configurations defined at page level.
-FCKConfig_LoadPageConfig() ;
-
-FCKConfig_PreProcess() ;
-
-// Load the full debug script.
-if ( FCKConfig.Debug )
-	LoadScript( '_source/internals/fckdebug.js' ) ;
-
-	</script>
-	<script type="text/javascript">
-
-// CSS minified by http://iceyboard.no-ip.org/projects/css_compressor (see _dev/css_compression.txt).
-var FCK_InternalCSS			= FCKTools.FixCssUrls( FCKConfig.BasePath + 'css/', 'html{min-height:100%}table.FCK__ShowTableBorders,table.FCK__ShowTableBorders td,table.FCK__ShowTableBorders th{border:#d3d3d3 1px solid}form{border:1px dotted #F00;padding:2px}.FCK__Flash{border:#a9a9a9 1px solid;background-position:center center;background-image:url(images/fck_flashlogo.gif);background-repeat:no-repeat;width:80px;height:80px}.FCK__UnknownObject{border:#a9a9a9 1px solid;background-position:center center;background-image:url(images/fck_plugin.gif);background-repeat:no-repeat;width:80px;height:80px}.FCK__Anchor{border:1px dotted #00F;background-position:center center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;width:16px;height:15px;vertical-align:middle}.FCK__AnchorC{border:1px dotted #00F;background-position:1px center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;padding-left:18px}a[name]{border:1px dotted #00F;background-position:0 center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;padding-left:18px}.FCK__PageBreak{background-position:center center;background-image:url(images/fck_pagebreak.gif);background-repeat:no-repeat;clear:both;display:block;float:none;width:100%;border-top:#999 1px dotted;border-bottom:#999 1px dotted;border-right:0;border-left:0;height:5px}.FCK__InputHidden{width:19px;height:18px;background-image:url(images/fck_hiddenfield.gif);background-repeat:no-repeat;vertical-align:text-bottom;background-position:center center}.FCK__ShowBlocks p,.FCK__ShowBlocks div,.FCK__ShowBlocks pre,.FCK__ShowBlocks address,.FCK__ShowBlocks blockquote,.FCK__ShowBlocks h1,.FCK__ShowBlocks h2,.FCK__ShowBlocks h3,.FCK__ShowBlocks h4,.FCK__ShowBlocks h5,.FCK__ShowBlocks h6{background-repeat:no-repeat;border:1px dotted gray;padding-top:8px;padding-left:8px}.FCK__ShowBlocks p{background-image:url(images/block_p.png)}.FCK__ShowBlocks div{background-image:url(images/block_div.png)}.FCK__ShowBlocks pre{background-image:url(images/block_pre.png)}.FCK__ShowBlocks address{background-image:url(images/block_address.png)}.FCK__ShowBlocks blockquote{background-image:url(images/block_blockquote.png)}.FCK__ShowBlocks h1{background-image:url(images/block_h1.png)}.FCK__ShowBlocks h2{background-image:url(images/block_h2.png)}.FCK__ShowBlocks h3{background-image:url(images/block_h3.png)}.FCK__ShowBlocks h4{background-image:url(images/block_h4.png)}.FCK__ShowBlocks h5{background-image:url(images/block_h5.png)}.FCK__ShowBlocks h6{background-image:url(images/block_h6.png)}' ) ;
-var FCK_ShowTableBordersCSS	= FCKTools.FixCssUrls( FCKConfig.BasePath + 'css/', 'table:not([border]),table:not([border]) > tr > td,table:not([border]) > tr > th,table:not([border]) > tbody > tr > td,table:not([border]) > tbody > tr > th,table:not([border]) > thead > tr > td,table:not([border]) > thead > tr > th,table:not([border]) > tfoot > tr > td,table:not([border]) > tfoot > tr > th,table[border=\"0\"],table[border=\"0\"] > tr > td,table[border=\"0\"] > tr > th,table[border=\"0\"] > tbody > tr > td,table[border=\"0\"] > tbody > tr > th,table[border=\"0\"] > thead > tr > td,table[border=\"0\"] > thead > tr > th,table[border=\"0\"] > tfoot > tr > td,table[border=\"0\"] > tfoot > tr > th{border:#d3d3d3 1px dotted}' ) ;
-
-// Popup the debug window if debug mode is set to true. It guarantees that the
-// first debug message will not be lost.
-if ( FCKConfig.Debug )
-	FCKDebug._GetWindow() ;
-
-// Load the active skin CSS.
-document.write( FCKTools.GetStyleHtml( FCKConfig.SkinEditorCSS ) ) ;
-
-// Load the language file.
-FCKLanguageManager.Initialize() ;
-LoadScript( 'lang/' + FCKLanguageManager.ActiveLanguage.Code + '.js' ) ;
-
-	</script>
-	<script type="text/javascript">
-
-// Initialize the editing area context menu.
-FCK_ContextMenu_Init() ;
-
-FCKPlugins.Load() ;
-
-	</script>
-	<script type="text/javascript">
-
-// Set the editor interface direction.
-window.document.dir = FCKLang.Dir ;
-
-	</script>
-	<script type="text/javascript">
-
-window.onload = function()
-{
-	InitializeAPI() ;
-
-	if ( FCKBrowserInfo.IsIE )
-		FCK_PreloadImages() ;
-	else
-		LoadToolbarSetup() ;
-}
-
-function LoadToolbarSetup()
-{
-	FCKeditorAPI._FunctionQueue.Add( LoadToolbar ) ;
-}
-
-function LoadToolbar()
-{
-	var oToolbarSet = FCK.ToolbarSet = FCKToolbarSet_Create() ;
-
-	if ( oToolbarSet.IsLoaded )
-		StartEditor() ;
-	else
-	{
-		oToolbarSet.OnLoad = StartEditor ;
-		oToolbarSet.Load( FCKURLParams['Toolbar'] || 'Default' ) ;
-	}
-}
-
-function StartEditor()
-{
-	// Remove the onload listener.
-	FCK.ToolbarSet.OnLoad = null ;
-
-	FCKeditorAPI._FunctionQueue.Remove( LoadToolbar ) ;
-
-	FCK.Events.AttachEvent( 'OnStatusChange', WaitForActive ) ;
-
-	// Start the editor.
-	FCK.StartEditor() ;
-}
-
-function WaitForActive( editorInstance, newStatus )
-{
-	if ( newStatus == FCK_STATUS_ACTIVE )
-	{
-		if ( FCKBrowserInfo.IsGecko )
-			FCKTools.RunFunction( window.onresize ) ;
-
-		if ( !FCKConfig.PreventSubmitHandler )
-			_AttachFormSubmitToAPI() ;
-
-		FCK.SetStatus( FCK_STATUS_COMPLETE ) ;
-
-		// Call the special "FCKeditor_OnComplete" function that should be present in
-		// the HTML page where the editor is located.
-		if ( typeof( window.parent.FCKeditor_OnComplete ) == 'function' )
-			window.parent.FCKeditor_OnComplete( FCK ) ;
-	}
-}
-
-// Gecko browsers doesn't calculate well the IFRAME size so we must
-// recalculate it every time the window size changes.
-if ( FCKBrowserInfo.IsGecko && !FCKBrowserInfo.IsOpera )
-{
-	window.onresize = function( e )
-	{
-		// Running in Chrome makes the window receive the event including subframes.
-		// we care only about this window. Ticket #1642.
-		// #2002: The originalTarget from the event can be the current document, the window, or the editing area.
-		if ( e && e.originalTarget !== document && e.originalTarget !== window && (!e.originalTarget.ownerDocument || e.originalTarget.ownerDocument != document ))
-			return ;
-
-		var oCell = document.getElementById( 'xEditingArea' ) ;
-
-		var eInnerElement = oCell.firstChild ;
-		if ( eInnerElement )
-		{
-			eInnerElement.style.height = '0px' ;
-			eInnerElement.style.height = ( oCell.scrollHeight - 2 ) + 'px' ;
-		}
-	}
-}
-
-	</script>
-</head>
-<body>
-	<table width="100%" cellpadding="0" cellspacing="0" style="height: 100%; table-layout: fixed">
-		<tr id="xToolbarRow" style="display: none">
-			<td id="xToolbarSpace" style="overflow: hidden">
-				<table width="100%" cellpadding="0" cellspacing="0">
-					<tr id="xCollapsed" style="display: none">
-						<td id="xExpandHandle" class="TB_Expand" colspan="3">
-							<img class="TB_ExpandImg" alt="" src="images/spacer.gif" width="8" height="4" /></td>
-					</tr>
-					<tr id="xExpanded" style="display: none">
-						<td id="xTBLeftBorder" class="TB_SideBorder" style="width: 1px; display: none;"></td>
-						<td id="xCollapseHandle" style="display: none" class="TB_Collapse" valign="bottom">
-							<img class="TB_CollapseImg" alt="" src="images/spacer.gif" width="8" height="4" /></td>
-						<td id="xToolbar" class="TB_ToolbarSet"></td>
-						<td class="TB_SideBorder" style="width: 1px"></td>
-					</tr>
-				</table>
-			</td>
-		</tr>
-		<tr>
-			<td id="xEditingArea" valign="top" style="height: 100%"></td>
-		</tr>
-	</table>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 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 ==
+ *
+ * Main page that holds the editor.
+-->
+<html>
+<head>
+	<title>FCKeditor</title>
+	<meta name="robots" content="noindex, nofollow">
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+	<meta http-equiv="Cache-Control" content="public">
+	<script type="text/javascript">
+
+// #1645: Alert the user if opening FCKeditor in FF3 from local filesystem
+// without security.fileuri.strict_origin_policy disabled.
+if ( document.location.protocol == 'file:' )
+{
+	try
+	{
+		window.parent.document.domain ;
+	}
+	catch ( e )
+	{
+		window.addEventListener( 'load', function()
+			{
+				document.body.innerHTML = '\
+					<div style="border: 1px red solid; font-family: arial; font-size: 12px; color: red; padding:10px;">\
+						<p>\
+							<b>Your browser security settings don\'t allow FCKeditor to be opened from\
+							the local filesystem.<\/b>\
+						<\/p>\
+						<p>\
+							Please open the <b>about:config<\/b> page and disable the\
+							&quot;security.fileuri.strict_origin_policy&quot; option; then load this page again.\
+						<\/p>\
+						<p>\
+							Check our <a href="http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/FAQ#ff3perms">FAQ<\/a>\
+							for more information.\
+						<\/p>\
+					<\/div>' ;
+			}, false ) ;
+	}
+}
+
+// Save a reference to the default domain.
+var FCK_ORIGINAL_DOMAIN ;
+
+// Automatically detect the correct document.domain (#123).
+(function()
+{
+	var d = FCK_ORIGINAL_DOMAIN = document.domain ;
+
+	while ( true )
+	{
+		// Test if we can access a parent property.
+		try
+		{
+			var test = window.parent.document.domain ;
+			break ;
+		}
+		catch( e ) {}
+
+		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
+		d = d.replace( /.*?(?:\.|$)/, '' ) ;
+
+		if ( d.length == 0 )
+			break ;		// It was not able to detect the domain.
+
+		try
+		{
+			document.domain = d ;
+		}
+		catch (e)
+		{
+			break ;
+		}
+	}
+})() ;
+
+// Save a reference to the detected runtime domain.
+var FCK_RUNTIME_DOMAIN = document.domain ;
+
+var FCK_IS_CUSTOM_DOMAIN = ( FCK_ORIGINAL_DOMAIN != FCK_RUNTIME_DOMAIN ) ;
+
+// Instead of loading scripts and CSSs using inline tags, all scripts are
+// loaded by code. In this way we can guarantee the correct processing order,
+// otherwise external scripts and inline scripts could be executed in an
+// unwanted order (IE).
+
+function LoadScript( url )
+{
+	document.write( '<scr' + 'ipt type="text/javascript" src="' + url + '"><\/scr' + 'ipt>' ) ;
+}
+
+// Main editor scripts.
+var sSuffix = ( /*@cc_on!@*/false ) ? 'ie' : 'gecko' ;
+
+LoadScript( 'js/fckeditorcode_' + sSuffix + '.js' ) ;
+
+// Base configuration file.
+LoadScript( '../fckconfig.js' ) ;
+
+	</script>
+	<script type="text/javascript">
+
+// Adobe AIR compatibility file.
+if ( FCKBrowserInfo.IsAIR )
+	LoadScript( 'js/fckadobeair.js' ) ;
+
+if ( FCKBrowserInfo.IsIE )
+{
+	// Remove IE mouse flickering.
+	try
+	{
+		document.execCommand( 'BackgroundImageCache', false, true ) ;
+	}
+	catch (e)
+	{
+		// We have been reported about loading problems caused by the above
+		// line. For safety, let's just ignore errors.
+	}
+
+	// Create the default cleanup object used by the editor.
+	FCK.IECleanup = new FCKIECleanup( window ) ;
+	FCK.IECleanup.AddItem( FCKTempBin, FCKTempBin.Reset ) ;
+	FCK.IECleanup.AddItem( FCK, FCK_Cleanup ) ;
+}
+
+// The first function to be called on selection change must the the styles
+// change checker, because the result of its processing may be used by another
+// functions listening to the same event.
+FCK.Events.AttachEvent( 'OnSelectionChange', function() { FCKStyles.CheckSelectionChanges() ; } ) ;
+
+// The config hidden field is processed immediately, because
+// CustomConfigurationsPath may be set in the page.
+FCKConfig.ProcessHiddenField() ;
+
+// Load the custom configurations file (if defined).
+if ( FCKConfig.CustomConfigurationsPath.length > 0 )
+	LoadScript( FCKConfig.CustomConfigurationsPath ) ;
+
+	</script>
+	<script type="text/javascript">
+
+// Load configurations defined at page level.
+FCKConfig_LoadPageConfig() ;
+
+FCKConfig_PreProcess() ;
+
+// Load the full debug script.
+if ( FCKConfig.Debug )
+	LoadScript( '_source/internals/fckdebug.js' ) ;
+
+	</script>
+	<script type="text/javascript">
+
+// CSS minified by http://iceyboard.no-ip.org/projects/css_compressor (see _dev/css_compression.txt).
+var FCK_InternalCSS			= FCKTools.FixCssUrls( FCKConfig.BasePath + 'css/', 'html{min-height:100%}table.FCK__ShowTableBorders,table.FCK__ShowTableBorders td,table.FCK__ShowTableBorders th{border:#d3d3d3 1px solid}form{border:1px dotted #F00;padding:2px}.FCK__Flash{border:#a9a9a9 1px solid;background-position:center center;background-image:url(images/fck_flashlogo.gif);background-repeat:no-repeat;width:80px;height:80px}.FCK__UnknownObject{border:#a9a9a9 1px solid;background-position:center center;background-image:url(images/fck_plugin.gif);background-repeat:no-repeat;width:80px;height:80px}.FCK__Anchor{border:1px dotted #00F;background-position:center center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;width:16px;height:15px;vertical-align:middle}.FCK__AnchorC{border:1px dotted #00F;background-position:1px center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;padding-left:18px}a[name]{border:1px dotted #00F;background-position:0 center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;padding-left:18px}.FCK__PageBreak{background-position:center center;background-image:url(images/fck_pagebreak.gif);background-repeat:no-repeat;clear:both;display:block;float:none;width:100%;border-top:#999 1px dotted;border-bottom:#999 1px dotted;border-right:0;border-left:0;height:5px}.FCK__InputHidden{width:19px;height:18px;background-image:url(images/fck_hiddenfield.gif);background-repeat:no-repeat;vertical-align:text-bottom;background-position:center center}.FCK__ShowBlocks p,.FCK__ShowBlocks div,.FCK__ShowBlocks pre,.FCK__ShowBlocks address,.FCK__ShowBlocks blockquote,.FCK__ShowBlocks h1,.FCK__ShowBlocks h2,.FCK__ShowBlocks h3,.FCK__ShowBlocks h4,.FCK__ShowBlocks h5,.FCK__ShowBlocks h6{background-repeat:no-repeat;border:1px dotted gray;padding-top:8px;padding-left:8px}.FCK__ShowBlocks p{background-image:url(images/block_p.png)}.FCK__ShowBlocks div{background-image:url(images/block_div.png)}.FCK__ShowBlocks pre{background-image:url(images/block_pre.png)}.FCK__ShowBlocks address{background-image:url(images/block_address.png)}.FCK__ShowBlocks blockquote{background-image:url(images/block_blockquote.png)}.FCK__ShowBlocks h1{background-image:url(images/block_h1.png)}.FCK__ShowBlocks h2{background-image:url(images/block_h2.png)}.FCK__ShowBlocks h3{background-image:url(images/block_h3.png)}.FCK__ShowBlocks h4{background-image:url(images/block_h4.png)}.FCK__ShowBlocks h5{background-image:url(images/block_h5.png)}.FCK__ShowBlocks h6{background-image:url(images/block_h6.png)}' ) ;
+var FCK_ShowTableBordersCSS	= FCKTools.FixCssUrls( FCKConfig.BasePath + 'css/', 'table:not([border]),table:not([border]) > tr > td,table:not([border]) > tr > th,table:not([border]) > tbody > tr > td,table:not([border]) > tbody > tr > th,table:not([border]) > thead > tr > td,table:not([border]) > thead > tr > th,table:not([border]) > tfoot > tr > td,table:not([border]) > tfoot > tr > th,table[border=\"0\"],table[border=\"0\"] > tr > td,table[border=\"0\"] > tr > th,table[border=\"0\"] > tbody > tr > td,table[border=\"0\"] > tbody > tr > th,table[border=\"0\"] > thead > tr > td,table[border=\"0\"] > thead > tr > th,table[border=\"0\"] > tfoot > tr > td,table[border=\"0\"] > tfoot > tr > th{border:#d3d3d3 1px dotted}' ) ;
+
+// Popup the debug window if debug mode is set to true. It guarantees that the
+// first debug message will not be lost.
+if ( FCKConfig.Debug )
+	FCKDebug._GetWindow() ;
+
+// Load the active skin CSS.
+document.write( FCKTools.GetStyleHtml( FCKConfig.SkinEditorCSS ) ) ;
+
+// Load the language file.
+FCKLanguageManager.Initialize() ;
+LoadScript( 'lang/' + FCKLanguageManager.ActiveLanguage.Code + '.js' ) ;
+
+	</script>
+	<script type="text/javascript">
+
+// Initialize the editing area context menu.
+FCK_ContextMenu_Init() ;
+
+FCKPlugins.Load() ;
+
+	</script>
+	<script type="text/javascript">
+
+// Set the editor interface direction.
+window.document.dir = FCKLang.Dir ;
+
+	</script>
+	<script type="text/javascript">
+
+window.onload = function()
+{
+	InitializeAPI() ;
+
+	if ( FCKBrowserInfo.IsIE )
+		FCK_PreloadImages() ;
+	else
+		LoadToolbarSetup() ;
+}
+
+function LoadToolbarSetup()
+{
+	FCKeditorAPI._FunctionQueue.Add( LoadToolbar ) ;
+}
+
+function LoadToolbar()
+{
+	var oToolbarSet = FCK.ToolbarSet = FCKToolbarSet_Create() ;
+
+	if ( oToolbarSet.IsLoaded )
+		StartEditor() ;
+	else
+	{
+		oToolbarSet.OnLoad = StartEditor ;
+		oToolbarSet.Load( FCKURLParams['Toolbar'] || 'Default' ) ;
+	}
+}
+
+function StartEditor()
+{
+	// Remove the onload listener.
+	FCK.ToolbarSet.OnLoad = null ;
+
+	FCKeditorAPI._FunctionQueue.Remove( LoadToolbar ) ;
+
+	FCK.Events.AttachEvent( 'OnStatusChange', WaitForActive ) ;
+
+	// Start the editor.
+	FCK.StartEditor() ;
+}
+
+function WaitForActive( editorInstance, newStatus )
+{
+	if ( newStatus == FCK_STATUS_ACTIVE )
+	{
+		if ( FCKBrowserInfo.IsGecko )
+			FCKTools.RunFunction( window.onresize ) ;
+
+		if ( !FCKConfig.PreventSubmitHandler )
+			_AttachFormSubmitToAPI() ;
+
+		FCK.SetStatus( FCK_STATUS_COMPLETE ) ;
+
+		// Call the special "FCKeditor_OnComplete" function that should be present in
+		// the HTML page where the editor is located.
+		if ( typeof( window.parent.FCKeditor_OnComplete ) == 'function' )
+			window.parent.FCKeditor_OnComplete( FCK ) ;
+	}
+}
+
+// Gecko browsers doesn't calculate well the IFRAME size so we must
+// recalculate it every time the window size changes.
+if ( FCKBrowserInfo.IsGecko && !FCKBrowserInfo.IsOpera )
+{
+	window.onresize = function( e )
+	{
+		// Running in Chrome makes the window receive the event including subframes.
+		// we care only about this window. Ticket #1642.
+		// #2002: The originalTarget from the event can be the current document, the window, or the editing area.
+		if ( e && e.originalTarget !== document && e.originalTarget !== window && (!e.originalTarget.ownerDocument || e.originalTarget.ownerDocument != document ))
+			return ;
+
+		var oCell = document.getElementById( 'xEditingArea' ) ;
+
+		var eInnerElement = oCell.firstChild ;
+		if ( eInnerElement )
+		{
+			eInnerElement.style.height = '0px' ;
+			eInnerElement.style.height = ( oCell.scrollHeight - 2 ) + 'px' ;
+		}
+	}
+}
+
+	</script>
+</head>
+<body>
+	<table width="100%" cellpadding="0" cellspacing="0" style="height: 100%; table-layout: fixed">
+		<tr id="xToolbarRow" style="display: none">
+			<td id="xToolbarSpace" style="overflow: hidden">
+				<table width="100%" cellpadding="0" cellspacing="0">
+					<tr id="xCollapsed" style="display: none">
+						<td id="xExpandHandle" class="TB_Expand" colspan="3">
+							<img class="TB_ExpandImg" alt="" src="images/spacer.gif" width="8" height="4" /></td>
+					</tr>
+					<tr id="xExpanded" style="display: none">
+						<td id="xTBLeftBorder" class="TB_SideBorder" style="width: 1px; display: none;"></td>
+						<td id="xCollapseHandle" style="display: none" class="TB_Collapse" valign="bottom">
+							<img class="TB_CollapseImg" alt="" src="images/spacer.gif" width="8" height="4" /></td>
+						<td id="xToolbar" class="TB_ToolbarSet"></td>
+						<td class="TB_SideBorder" style="width: 1px"></td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+		<tr>
+			<td id="xEditingArea" valign="top" style="height: 100%"></td>
+		</tr>
+	</table>
+</body>
+</html>

Modified: trunk/src/plugins/fckeditor/www/editor/fckeditor.original.html
===================================================================
--- trunk/gforge/plugins/fckeditor/www/editor/fckeditor.original.html	2010-06-17 09:13:32 UTC (rev 10059)
+++ trunk/src/plugins/fckeditor/www/editor/fckeditor.original.html	2010-06-17 09:34:41 UTC (rev 10060)
@@ -1,424 +1,424 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2008 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 ==
- *
- * Main page that holds the editor.
--->
-<html>
-<head>
-	<title>FCKeditor</title>
-	<meta name="robots" content="noindex, nofollow">
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-	<!-- @Packager.RemoveLine
-	<meta http-equiv="Cache-Control" content="public">
-	@Packager.RemoveLine -->
-	<script type="text/javascript">
-
-// #1645: Alert the user if opening FCKeditor in FF3 from local filesystem
-// without security.fileuri.strict_origin_policy disabled.
-if ( document.location.protocol == 'file:' )
-{
-	try
-	{
-		window.parent.document.domain ;
-	}
-	catch ( e )
-	{
-		window.addEventListener( 'load', function()
-			{
-				document.body.innerHTML = '\
-					<div style="border: 1px red solid; font-family: arial; font-size: 12px; color: red; padding:10px;">\
-						<p>\
-							<b>Your browser security settings don\'t allow FCKeditor to be opened from\
-							the local filesystem.<\/b>\
-						<\/p>\
-						<p>\
-							Please open the <b>about:config<\/b> page and disable the\
-							&quot;security.fileuri.strict_origin_policy&quot; option; then load this page again.\
-						<\/p>\
-						<p>\
-							Check our <a href="http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/FAQ#ff3perms">FAQ<\/a>\
-							for more information.\
-						<\/p>\
-					<\/div>' ;
-			}, false ) ;
-	}
-}
-
-// Save a reference to the default domain.
-var FCK_ORIGINAL_DOMAIN ;
-
-// Automatically detect the correct document.domain (#123).
-(function()
-{
-	var d = FCK_ORIGINAL_DOMAIN = document.domain ;
-
-	while ( true )
-	{
-		// Test if we can access a parent property.
-		try
-		{
-			var test = window.parent.document.domain ;
-			break ;
-		}
-		catch( e ) {}
-
-		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
-		d = d.replace( /.*?(?:\.|$)/, '' ) ;
-
-		if ( d.length == 0 )
-			break ;		// It was not able to detect the domain.
-
-		try
-		{
-			document.domain = d ;
-		}
-		catch (e)
-		{
-			break ;
-		}
-	}
-})() ;
-
-// Save a reference to the detected runtime domain.
-var FCK_RUNTIME_DOMAIN = document.domain ;
-
-var FCK_IS_CUSTOM_DOMAIN = ( FCK_ORIGINAL_DOMAIN != FCK_RUNTIME_DOMAIN ) ;
-
-// Instead of loading scripts and CSSs using inline tags, all scripts are
-// loaded by code. In this way we can guarantee the correct processing order,
-// otherwise external scripts and inline scripts could be executed in an
-// unwanted order (IE).
-
-function LoadScript( url )
-{
-	document.write( '<scr' + 'ipt type="text/javascript" src="' + url + '"><\/scr' + 'ipt>' ) ;
-}
-
-// Main editor scripts.
-var sSuffix = ( /*@cc_on!@*/false ) ? 'ie' : 'gecko' ;
-
-/* @Packager.RemoveLine
-LoadScript( 'js/fckeditorcode_' + sSuffix + '.js' ) ;
- at Packager.RemoveLine */
-// @Packager.Remove.Start
-
-LoadScript( '_source/fckconstants.js' ) ;
-LoadScript( '_source/fckjscoreextensions.js' ) ;
-
-if ( sSuffix == 'ie' )
-	LoadScript( '_source/classes/fckiecleanup.js' ) ;
-
-LoadScript( '_source/internals/fckbrowserinfo.js' ) ;
-LoadScript( '_source/internals/fckurlparams.js' ) ;
-LoadScript( '_source/classes/fckevents.js' ) ;
-LoadScript( '_source/classes/fckdataprocessor.js' ) ;
-LoadScript( '_source/internals/fck.js' ) ;
-LoadScript( '_source/internals/fck_' + sSuffix + '.js' ) ;
-LoadScript( '_source/internals/fckconfig.js' ) ;
-
-LoadScript( '_source/internals/fckdebug_empty.js' ) ;
-LoadScript( '_source/internals/fckdomtools.js' ) ;
-LoadScript( '_source/internals/fcktools.js' ) ;
-LoadScript( '_source/internals/fcktools_' + sSuffix + '.js' ) ;
-LoadScript( '_source/fckeditorapi.js' ) ;
-LoadScript( '_source/classes/fckimagepreloader.js' ) ;
-LoadScript( '_source/internals/fckregexlib.js' ) ;
-LoadScript( '_source/internals/fcklistslib.js' ) ;
-LoadScript( '_source/internals/fcklanguagemanager.js' ) ;
-LoadScript( '_source/internals/fckxhtmlentities.js' ) ;
-LoadScript( '_source/internals/fckxhtml.js' ) ;
-LoadScript( '_source/internals/fckxhtml_' + sSuffix + '.js' ) ;
-LoadScript( '_source/internals/fckcodeformatter.js' ) ;
-LoadScript( '_source/internals/fckundo.js' ) ;
-LoadScript( '_source/classes/fckeditingarea.js' ) ;
-LoadScript( '_source/classes/fckkeystrokehandler.js' ) ;
-
-LoadScript( 'dtd/fck_xhtml10transitional.js' ) ;
-LoadScript( '_source/classes/fckstyle.js' ) ;
-LoadScript( '_source/internals/fckstyles.js' ) ;
-
-LoadScript( '_source/internals/fcklisthandler.js' ) ;
-LoadScript( '_source/classes/fckelementpath.js' ) ;
-LoadScript( '