Index: /FCKeditor/releases/latest/_whatsnew.html
===================================================================
--- /FCKeditor/releases/latest/_whatsnew.html	(revision 1901)
+++ /FCKeditor/releases/latest/_whatsnew.html	(revision 1902)
@@ -33,4 +33,8 @@
 	<h1>
 		FCKeditor ChangeLog - What's New?</h1>
+	<h3>
+		Version 2.6</h3>
+	<p>
+		No changes. The stabilization of the 2.6 RC was completed successfully, as expected.</p>
 	<h3>
 		Version 2.6 RC</h3>
Index: /FCKeditor/releases/latest/editor/_source/fckeditorapi.js
===================================================================
--- /FCKeditor/releases/latest/editor/_source/fckeditorapi.js	(revision 1901)
+++ /FCKeditor/releases/latest/editor/_source/fckeditorapi.js	(revision 1902)
@@ -41,6 +41,6 @@
 		var sScript =
 			'window.FCKeditorAPI = {' +
-				'Version : "2.6 RC",' +
-				'VersionBuild : "18531",' +
+				'Version : "2.6",' +
+				'VersionBuild : "18638",' +
 				'Instances : new Object(),' +
 
Index: /FCKeditor/releases/latest/editor/dialog/fck_about.html
===================================================================
--- /FCKeditor/releases/latest/editor/dialog/fck_about.html	(revision 1901)
+++ /FCKeditor/releases/latest/editor/dialog/fck_about.html	(revision 1902)
@@ -79,6 +79,6 @@
 								<span fcklang="DlgAboutVersion">version</span>
 								<br />
-								<b>2.6 RC</b><br />
-								Build 18531</td>
+								<b>2.6</b><br />
+								Build 18638</td>
 						</tr>
 					</table>
Index: /FCKeditor/releases/latest/editor/js/fckeditorcode_gecko.js
===================================================================
--- /FCKeditor/releases/latest/editor/js/fckeditorcode_gecko.js	(revision 1901)
+++ /FCKeditor/releases/latest/editor/js/fckeditorcode_gecko.js	(revision 1902)
@@ -36,5 +36,5 @@
 var FCKTools={};FCKTools.CreateBogusBR=function(A){var B=A.createElement('br');B.setAttribute('type','_moz');return B;};FCKTools.FixCssUrls=function(A,B){if (!A||A.length==0) return B;return B.replace(/url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g,function(match,opener,path,closer){if (/^\/|^\w?:/.test(path)) return match;else return 'url('+opener+A+path+closer+')';});};FCKTools._GetUrlFixedCss=function(A,B){var C=A.match(/^([^|]+)\|([\s\S]*)/);if (C) return FCKTools.FixCssUrls(C[1],C[2]);else return A;};FCKTools.AppendStyleSheet=function(A,B){if (!B) return [];if (typeof(B)=='string'){if (/[\\\/\.]\w*$/.test(B)){return this.AppendStyleSheet(A,B.split(','));}else return [this.AppendStyleString(A,FCKTools._GetUrlFixedCss(B))];}else{var C=[];for (var i=0;i<B.length;i++) C.push(this._AppendStyleSheet(A,B[i]));return C;}};FCKTools.GetStyleHtml=(function(){var A=function(styleDef,markTemp){if (styleDef.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<style type="text/css"'+B+'>'+styleDef+'</style>';};var C=function(cssFileUrl,markTemp){if (cssFileUrl.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<link href="'+cssFileUrl+'" type="text/css" rel="stylesheet" '+B+'/>';};return function(cssFileOrArrayOrDef,markTemp){if (!cssFileOrArrayOrDef) return '';if (typeof(cssFileOrArrayOrDef)=='string'){if (/[\\\/\.]\w*$/.test(cssFileOrArrayOrDef)){return this.GetStyleHtml(cssFileOrArrayOrDef.split(','),markTemp);}else return A(this._GetUrlFixedCss(cssFileOrArrayOrDef),markTemp);}else{var E='';for (var i=0;i<cssFileOrArrayOrDef.length;i++) E+=C(cssFileOrArrayOrDef[i],markTemp);return E;}}})();FCKTools.GetElementDocument=function (A){return A.ownerDocument||A.document;};FCKTools.GetElementWindow=function(A){return this.GetDocumentWindow(this.GetElementDocument(A));};FCKTools.GetDocumentWindow=function(A){if (FCKBrowserInfo.IsSafari&&!A.parentWindow) this.FixDocumentParentWindow(window.top);return A.parentWindow||A.defaultView;};FCKTools.FixDocumentParentWindow=function(A){if (A.document) A.document.parentWindow=A;for (var i=0;i<A.frames.length;i++) FCKTools.FixDocumentParentWindow(A.frames[i]);};FCKTools.HTMLEncode=function(A){if (!A) return '';A=A.replace(/&/g,'&amp;');A=A.replace(/</g,'&lt;');A=A.replace(/>/g,'&gt;');return A;};FCKTools.HTMLDecode=function(A){if (!A) return '';A=A.replace(/&gt;/g,'>');A=A.replace(/&lt;/g,'<');A=A.replace(/&amp;/g,'&');return A;};FCKTools._ProcessLineBreaksForPMode=function(A,B,C,D,E){var F=0;var G="<p>";var H="</p>";var I="<br />";if (C){G="<li>";H="</li>";F=1;};while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='p'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};var n=B.charAt(i+1);if (n=='\r'){i++;n=B.charAt(i+1);};if (n=='\n'){i++;if (F) E.push(H);E.push(G);F=1;}else E.push(I);}};FCKTools._ProcessLineBreaksForDivMode=function(A,B,C,D,E){var F=0;var G="<div>";var H="</div>";if (C){G="<li>";H="</li>";F=1;};while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='div'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F){if (E[E.length-1]==G){E.push("&nbsp;");};E.push(H);};E.push(G);F=1;};if (F) E.push(H);};FCKTools._ProcessLineBreaksForBrMode=function(A,B,C,D,E){var F=0;var G="<br />";var H="";if (C){G="<li>";H="</li>";F=1;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F&&H.length) E.push (H);E.push(G);F=1;}};FCKTools.ProcessLineBreaks=function(A,B,C){var D=B.EnterMode.toLowerCase();var E=[];var F=0;var G=new A.FCKDomRange(A.FCK.EditorWindow);G.MoveToSelection();var H=G._Range.startContainer;while (H&&H.nodeType!=1) H=H.parentNode;if (H&&H.tagName.toLowerCase()=='li') F=1;if (D=='p') this._ProcessLineBreaksForPMode(A,C,F,H,E);else if (D=='div') this._ProcessLineBreaksForDivMode(A,C,F,H,E);else if (D=='br') this._ProcessLineBreaksForBrMode(A,C,F,H,E);return E.join("");};FCKTools.AddSelectOption=function(A,B,C){var D=FCKTools.GetElementDocument(A).createElement("OPTION");D.text=B;D.value=C;A.options.add(D);return D;};FCKTools.RunFunction=function(A,B,C,D){if (A) this.SetTimeout(A,0,B,C,D);};FCKTools.SetTimeout=function(A,B,C,D,E){return (E||window).setTimeout(function(){if (D) A.apply(C,[].concat(D));else A.apply(C);},B);};FCKTools.SetInterval=function(A,B,C,D,E){return (E||window).setInterval(function(){A.apply(C,D||[]);},B);};FCKTools.ConvertStyleSizeToHtml=function(A){return A.EndsWith('%')?A:parseInt(A,10);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.EndsWith('%')?A:(A+'px');};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.CreateEventListener=function(A,B){var f=function(){var C=[];for (var i=0;i<arguments.length;i++) C.push(arguments[i]);A.apply(this,C.concat(B));};return f;};FCKTools.IsStrictMode=function(A){return ('CSS1Compat'==(A.compatMode||(FCKBrowserInfo.IsSafari?'CSS1Compat':null)));};FCKTools.ArgumentsToArray=function(A,B,C){B=B||0;C=C||A.length;var D=[];for (var i=B;i<B+C&&i<A.length;i++) D.push(A[i]);return D;};FCKTools.CloneObject=function(A){var B=function() {};B.prototype=A;return new B;};FCKTools.AppendBogusBr=function(A){if (!A) return;var B=this.GetLastItem(A.getElementsByTagName('br'));if (!B||(B.getAttribute('type',2)!='_moz'&&B.getAttribute('_moz_dirty')==null)){var C=this.GetElementDocument(A);if (FCKBrowserInfo.IsOpera) A.appendChild(C.createTextNode(''));else A.appendChild(this.CreateBogusBR(C));}};FCKTools.GetLastItem=function(A){if (A.length>0) return A[A.length-1];return null;};FCKTools.GetDocumentPosition=function(w,A){var x=0;var y=0;var B=A;var C=null;var D=FCKTools.GetElementWindow(B);while (B&&!(D==w&&(B==w.document.body||B==w.document.documentElement))){x+=B.offsetLeft-B.scrollLeft;y+=B.offsetTop-B.scrollTop;if (!FCKBrowserInfo.IsOpera){var E=C;while (E&&E!=B){x-=E.scrollLeft;y-=E.scrollTop;E=E.parentNode;}};C=B;if (B.offsetParent) B=B.offsetParent;else{if (D!=w){B=D.frameElement;C=null;if (B) D=B.contentWindow.parent;}else B=null;}};if (FCKDomTools.GetCurrentElementStyle(w.document.body,'position')!='static'||(FCKBrowserInfo.IsIE&&FCKDomTools.GetPositionedAncestor(A)==null)){x+=w.document.body.offsetLeft;y+=w.document.body.offsetTop;};return { "x":x,"y":y };};FCKTools.GetWindowPosition=function(w,A){var B=this.GetDocumentPosition(w,A);var C=FCKTools.GetScrollPosition(w);B.x-=C.X;B.y-=C.Y;return B;};FCKTools.ProtectFormStyles=function(A){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return [];var B=[];var C=['style','className'];for (var i=0;i<C.length;i++){var D=C[i];if (A.elements.namedItem(D)){var E=A.elements.namedItem(D);B.push([E,E.nextSibling]);A.removeChild(E);}};return B;};FCKTools.RestoreFormStyles=function(A,B){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return;if (B.length>0){for (var i=B.length-1;i>=0;i--){var C=B[i][0];var D=B[i][1];if (D) A.insertBefore(C,D);else A.appendChild(C);}}};FCKTools.GetNextNode=function(A,B){if (A.firstChild) return A.firstChild;else if (A.nextSibling) return A.nextSibling;else{var C=A.parentNode;while (C){if (C==B) return null;if (C.nextSibling) return C.nextSibling;else C=C.parentNode;}};return null;};FCKTools.GetNextTextNode=function(A,B,C){node=this.GetNextNode(A,B);if (C&&node&&C(node)) return null;while (node&&node.nodeType!=3){node=this.GetNextNode(node,B);if (C&&node&&C(node)) return null;};return node;};FCKTools.Merge=function(){var A=arguments;var o=A[0];for (var i=1;i<A.length;i++){var B=A[i];for (var p in B) o[p]=B[p];};return o;};FCKTools.IsArray=function(A){return (A instanceof Array);};FCKTools.AppendLengthProperty=function(A,B){var C=0;for (var n in A) C++;return A[B||'length']=C;};FCKTools.NormalizeCssText=function(A){var B=document.createElement('span');B.style.cssText=A;return B.style.cssText;};FCKTools.Bind=function(A,B){return function(){ return B.apply(A,arguments);};};FCKTools.GetVoidUrl=function(){if (FCK_IS_CUSTOM_DOMAIN) return "javascript: void( function(){document.open();document.write('<html><head><title></title></head><body></body></html>');document.domain = '"+FCK_RUNTIME_DOMAIN+"';document.close();}() ) ;";if (FCKBrowserInfo.IsIE){if (FCKBrowserInfo.IsIE7||!FCKBrowserInfo.IsIE6) return "";else return "javascript: '';";};return "javascript: void(0);";};
 FCKTools.CancelEvent=function(e){if (e) e.preventDefault();};FCKTools.DisableSelection=function(A){if (FCKBrowserInfo.IsGecko) A.style.MozUserSelect='none';else if (FCKBrowserInfo.IsSafari) A.style.KhtmlUserSelect='none';else A.style.userSelect='none';};FCKTools._AppendStyleSheet=function(A,B){var e=A.createElement('LINK');e.rel='stylesheet';e.type='text/css';e.href=B;A.getElementsByTagName("HEAD")[0].appendChild(e);return e;};FCKTools.AppendStyleString=function(A,B){if (!B) return null;var e=A.createElement("STYLE");e.appendChild(A.createTextNode(B));A.getElementsByTagName("HEAD")[0].appendChild(e);return e;};FCKTools.ClearElementAttributes=function(A){for (var i=0;i<A.attributes.length;i++){A.removeAttribute(A.attributes[i].name,0);}};FCKTools.GetAllChildrenIds=function(A){var B=[];var C=function(parent){for (var i=0;i<parent.childNodes.length;i++){var D=parent.childNodes[i].id;if (D&&D.length>0) B[B.length]=D;C(parent.childNodes[i]);}};C(A);return B;};FCKTools.RemoveOuterTags=function(e){var A=e.ownerDocument.createDocumentFragment();for (var i=0;i<e.childNodes.length;i++) A.appendChild(e.childNodes[i].cloneNode(true));e.parentNode.replaceChild(A,e);};FCKTools.CreateXmlObject=function(A){switch (A){case 'XmlHttp':return new XMLHttpRequest();case 'DOMDocument':var B=(new DOMParser()).parseFromString('<tmp></tmp>','text/xml');FCKDomTools.RemoveNode(B.firstChild);return B;};return null;};FCKTools.GetScrollPosition=function(A){return { X:A.pageXOffset,Y:A.pageYOffset };};FCKTools.AddEventListener=function(A,B,C){A.addEventListener(B,C,false);};FCKTools.RemoveEventListener=function(A,B,C){A.removeEventListener(B,C,false);};FCKTools.AddEventListenerEx=function(A,B,C,D){A.addEventListener(B,function(e){C.apply(A,[e].concat(D||[]));},false);};FCKTools.GetViewPaneSize=function(A){return { Width:A.innerWidth,Height:A.innerHeight };};FCKTools.SaveStyles=function(A){var B=FCKTools.ProtectFormStyles(A);var C={};if (A.className.length>0){C.Class=A.className;A.className='';};var D=A.getAttribute('style');if (D&&D.length>0){C.Inline=D;A.setAttribute('style','',0);};FCKTools.RestoreFormStyles(A,B);return C;};FCKTools.RestoreStyles=function(A,B){var C=FCKTools.ProtectFormStyles(A);A.className=B.Class||'';if (B.Inline) A.setAttribute('style',B.Inline,0);else A.removeAttribute('style',0);FCKTools.RestoreFormStyles(A,C);};FCKTools.RegisterDollarFunction=function(A){A.$=function(id){return A.document.getElementById(id);};};FCKTools.AppendElement=function(A,B){return A.appendChild(A.ownerDocument.createElement(B));};FCKTools.GetElementPosition=function(A,B){var c={ X:0,Y:0 };var C=B||window;var D=FCKTools.GetElementWindow(A);var E=null;while (A){var F=D.getComputedStyle(A,'').position;if (F&&F!='static'&&A.style.zIndex!=FCKConfig.FloatingPanelsZIndex) break;c.X+=A.offsetLeft-A.scrollLeft;c.Y+=A.offsetTop-A.scrollTop;if (!FCKBrowserInfo.IsOpera){var G=E;while (G&&G!=A){c.X-=G.scrollLeft;c.Y-=G.scrollTop;G=G.parentNode;}};E=A;if (A.offsetParent) A=A.offsetParent;else{if (D!=C){A=D.frameElement;E=null;if (A) D=FCKTools.GetElementWindow(A);}else{c.X+=A.scrollLeft;c.Y+=A.scrollTop;break;}}};return c;};
-var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='window.FCKeditorAPI = {Version : "2.6 RC",VersionBuild : "18531",Instances : new Object(),GetInstance : function( name ){return this.Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.Instances ){var oEditor = FCKeditorAPI.Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue	: {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if(FCKBrowserInfo.IsAIR){FCKAdobeAIR.FCKeditorAPI_Evaluate(A,B);}else if (FCKBrowserInfo.IsSafari||FCKBrowserInfo.IsGecko19){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;FCKeditorAPI.__Instances=FCKeditorAPI.Instances;};FCKeditorAPI.Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){if (!window.FCKUnloadFlag) return;delete FCKeditorAPI.Instances[FCK.Name];};function FCKeditorAPI_ConfirmCleanup(){window.FCKUnloadFlag=true;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);FCKTools.AddEventListener(window,'beforeunload',FCKeditorAPI_ConfirmCleanup);
+var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='window.FCKeditorAPI = {Version : "2.6",VersionBuild : "18638",Instances : new Object(),GetInstance : function( name ){return this.Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.Instances ){var oEditor = FCKeditorAPI.Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue	: {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if(FCKBrowserInfo.IsAIR){FCKAdobeAIR.FCKeditorAPI_Evaluate(A,B);}else if (FCKBrowserInfo.IsSafari||FCKBrowserInfo.IsGecko19){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;FCKeditorAPI.__Instances=FCKeditorAPI.Instances;};FCKeditorAPI.Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){if (!window.FCKUnloadFlag) return;delete FCKeditorAPI.Instances[FCK.Name];};function FCKeditorAPI_ConfirmCleanup(){window.FCKUnloadFlag=true;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);FCKTools.AddEventListener(window,'beforeunload',FCKeditorAPI_ConfirmCleanup);
 var FCKImagePreloader=function(){this._Images=[];};FCKImagePreloader.prototype={AddImages:function(A){if (typeof(A)=='string') A=A.split(';');this._Images=this._Images.concat(A);},Start:function(){var A=this._Images;this._PreloadCount=A.length;for (var i=0;i<A.length;i++){var B=document.createElement('img');FCKTools.AddEventListenerEx(B,'load',_FCKImagePreloader_OnImage,this);FCKTools.AddEventListenerEx(B,'error',_FCKImagePreloader_OnImage,this);B.src=A[i];_FCKImagePreloader_ImageCache.push(B);}}};var _FCKImagePreloader_ImageCache=[];function _FCKImagePreloader_OnImage(A,B){if ((--B._PreloadCount)==0&&B.OnComplete) B.OnComplete();};
 var FCKRegexLib={AposEntity:/&apos;/gi,ObjectElements:/^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i,NamedCommands:/^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i,BeforeBody:/(^[\s\S]*\<body[^\>]*\>)/i,AfterBody:/(\<\/body\>[\s\S]*$)/i,ToReplace:/___fcktoreplace:([\w]+)/ig,MetaHttpEquiv:/http-equiv\s*=\s*["']?([^"' ]+)/i,HasBaseTag:/<base /i,HasBodyTag:/<body[\s|>]/i,HtmlOpener:/<html\s?[^>]*>/i,HeadOpener:/<head\s?[^>]*>/i,HeadCloser:/<\/head\s*>/i,FCK_Class:/\s*FCK__[^ ]*(?=\s+|$)/,ElementName:/(^[a-z_:][\w.\-:]*\w$)|(^[a-z_]$)/,ForceSimpleAmpersand:/___FCKAmp___/g,SpaceNoClose:/\/>/g,EmptyParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/,EmptyOutParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*|&nbsp;)(<\/\1>)?$/,TagBody:/></,GeckoEntitiesMarker:/#\?-\:/g,ProtectUrlsImg:/<img(?=\s).*?\ssrc=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsA:/<a(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsArea:/<area(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,Html4DocType:/HTML 4\.0 Transitional/i,DocTypeTag:/<!DOCTYPE[^>]*>/i,TagsWithEvent:/<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g,EventAttributes:/\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,ProtectedEvents:/\s\w+_fckprotectedatt="([^"]+)"/g,StyleProperties:/\S+\s*:/g,InvalidSelfCloseTags:/(<(?!base|meta|link|hr|br|param|img|area|input)([a-zA-Z0-9:]+)[^>]*)\/>/gi,StyleVariableAttName:/#\(\s*("|')(.+?)\1[^\)]*\s*\)/g,RegExp:/^\/(.*)\/([gim]*)$/,HtmlTag:/<[^\s<>](?:"[^"]*"|'[^']*'|[^<])*>/};
Index: /FCKeditor/releases/latest/editor/js/fckeditorcode_ie.js
===================================================================
--- /FCKeditor/releases/latest/editor/js/fckeditorcode_ie.js	(revision 1901)
+++ /FCKeditor/releases/latest/editor/js/fckeditorcode_ie.js	(revision 1902)
@@ -37,5 +37,5 @@
 var FCKTools={};FCKTools.CreateBogusBR=function(A){var B=A.createElement('br');B.setAttribute('type','_moz');return B;};FCKTools.FixCssUrls=function(A,B){if (!A||A.length==0) return B;return B.replace(/url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g,function(match,opener,path,closer){if (/^\/|^\w?:/.test(path)) return match;else return 'url('+opener+A+path+closer+')';});};FCKTools._GetUrlFixedCss=function(A,B){var C=A.match(/^([^|]+)\|([\s\S]*)/);if (C) return FCKTools.FixCssUrls(C[1],C[2]);else return A;};FCKTools.AppendStyleSheet=function(A,B){if (!B) return [];if (typeof(B)=='string'){if (/[\\\/\.]\w*$/.test(B)){return this.AppendStyleSheet(A,B.split(','));}else return [this.AppendStyleString(A,FCKTools._GetUrlFixedCss(B))];}else{var C=[];for (var i=0;i<B.length;i++) C.push(this._AppendStyleSheet(A,B[i]));return C;}};FCKTools.GetStyleHtml=(function(){var A=function(styleDef,markTemp){if (styleDef.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<style type="text/css"'+B+'>'+styleDef+'</style>';};var C=function(cssFileUrl,markTemp){if (cssFileUrl.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<link href="'+cssFileUrl+'" type="text/css" rel="stylesheet" '+B+'/>';};return function(cssFileOrArrayOrDef,markTemp){if (!cssFileOrArrayOrDef) return '';if (typeof(cssFileOrArrayOrDef)=='string'){if (/[\\\/\.]\w*$/.test(cssFileOrArrayOrDef)){return this.GetStyleHtml(cssFileOrArrayOrDef.split(','),markTemp);}else return A(this._GetUrlFixedCss(cssFileOrArrayOrDef),markTemp);}else{var E='';for (var i=0;i<cssFileOrArrayOrDef.length;i++) E+=C(cssFileOrArrayOrDef[i],markTemp);return E;}}})();FCKTools.GetElementDocument=function (A){return A.ownerDocument||A.document;};FCKTools.GetElementWindow=function(A){return this.GetDocumentWindow(this.GetElementDocument(A));};FCKTools.GetDocumentWindow=function(A){if (FCKBrowserInfo.IsSafari&&!A.parentWindow) this.FixDocumentParentWindow(window.top);return A.parentWindow||A.defaultView;};FCKTools.FixDocumentParentWindow=function(A){if (A.document) A.document.parentWindow=A;for (var i=0;i<A.frames.length;i++) FCKTools.FixDocumentParentWindow(A.frames[i]);};FCKTools.HTMLEncode=function(A){if (!A) return '';A=A.replace(/&/g,'&amp;');A=A.replace(/</g,'&lt;');A=A.replace(/>/g,'&gt;');return A;};FCKTools.HTMLDecode=function(A){if (!A) return '';A=A.replace(/&gt;/g,'>');A=A.replace(/&lt;/g,'<');A=A.replace(/&amp;/g,'&');return A;};FCKTools._ProcessLineBreaksForPMode=function(A,B,C,D,E){var F=0;var G="<p>";var H="</p>";var I="<br />";if (C){G="<li>";H="</li>";F=1;};while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='p'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};var n=B.charAt(i+1);if (n=='\r'){i++;n=B.charAt(i+1);};if (n=='\n'){i++;if (F) E.push(H);E.push(G);F=1;}else E.push(I);}};FCKTools._ProcessLineBreaksForDivMode=function(A,B,C,D,E){var F=0;var G="<div>";var H="</div>";if (C){G="<li>";H="</li>";F=1;};while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='div'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F){if (E[E.length-1]==G){E.push("&nbsp;");};E.push(H);};E.push(G);F=1;};if (F) E.push(H);};FCKTools._ProcessLineBreaksForBrMode=function(A,B,C,D,E){var F=0;var G="<br />";var H="";if (C){G="<li>";H="</li>";F=1;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F&&H.length) E.push (H);E.push(G);F=1;}};FCKTools.ProcessLineBreaks=function(A,B,C){var D=B.EnterMode.toLowerCase();var E=[];var F=0;var G=new A.FCKDomRange(A.FCK.EditorWindow);G.MoveToSelection();var H=G._Range.startContainer;while (H&&H.nodeType!=1) H=H.parentNode;if (H&&H.tagName.toLowerCase()=='li') F=1;if (D=='p') this._ProcessLineBreaksForPMode(A,C,F,H,E);else if (D=='div') this._ProcessLineBreaksForDivMode(A,C,F,H,E);else if (D=='br') this._ProcessLineBreaksForBrMode(A,C,F,H,E);return E.join("");};FCKTools.AddSelectOption=function(A,B,C){var D=FCKTools.GetElementDocument(A).createElement("OPTION");D.text=B;D.value=C;A.options.add(D);return D;};FCKTools.RunFunction=function(A,B,C,D){if (A) this.SetTimeout(A,0,B,C,D);};FCKTools.SetTimeout=function(A,B,C,D,E){return (E||window).setTimeout(function(){if (D) A.apply(C,[].concat(D));else A.apply(C);},B);};FCKTools.SetInterval=function(A,B,C,D,E){return (E||window).setInterval(function(){A.apply(C,D||[]);},B);};FCKTools.ConvertStyleSizeToHtml=function(A){return A.EndsWith('%')?A:parseInt(A,10);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.EndsWith('%')?A:(A+'px');};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.CreateEventListener=function(A,B){var f=function(){var C=[];for (var i=0;i<arguments.length;i++) C.push(arguments[i]);A.apply(this,C.concat(B));};return f;};FCKTools.IsStrictMode=function(A){return ('CSS1Compat'==(A.compatMode||(FCKBrowserInfo.IsSafari?'CSS1Compat':null)));};FCKTools.ArgumentsToArray=function(A,B,C){B=B||0;C=C||A.length;var D=[];for (var i=B;i<B+C&&i<A.length;i++) D.push(A[i]);return D;};FCKTools.CloneObject=function(A){var B=function() {};B.prototype=A;return new B;};FCKTools.AppendBogusBr=function(A){if (!A) return;var B=this.GetLastItem(A.getElementsByTagName('br'));if (!B||(B.getAttribute('type',2)!='_moz'&&B.getAttribute('_moz_dirty')==null)){var C=this.GetElementDocument(A);if (FCKBrowserInfo.IsOpera) A.appendChild(C.createTextNode(''));else A.appendChild(this.CreateBogusBR(C));}};FCKTools.GetLastItem=function(A){if (A.length>0) return A[A.length-1];return null;};FCKTools.GetDocumentPosition=function(w,A){var x=0;var y=0;var B=A;var C=null;var D=FCKTools.GetElementWindow(B);while (B&&!(D==w&&(B==w.document.body||B==w.document.documentElement))){x+=B.offsetLeft-B.scrollLeft;y+=B.offsetTop-B.scrollTop;if (!FCKBrowserInfo.IsOpera){var E=C;while (E&&E!=B){x-=E.scrollLeft;y-=E.scrollTop;E=E.parentNode;}};C=B;if (B.offsetParent) B=B.offsetParent;else{if (D!=w){B=D.frameElement;C=null;if (B) D=B.contentWindow.parent;}else B=null;}};if (FCKDomTools.GetCurrentElementStyle(w.document.body,'position')!='static'||(FCKBrowserInfo.IsIE&&FCKDomTools.GetPositionedAncestor(A)==null)){x+=w.document.body.offsetLeft;y+=w.document.body.offsetTop;};return { "x":x,"y":y };};FCKTools.GetWindowPosition=function(w,A){var B=this.GetDocumentPosition(w,A);var C=FCKTools.GetScrollPosition(w);B.x-=C.X;B.y-=C.Y;return B;};FCKTools.ProtectFormStyles=function(A){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return [];var B=[];var C=['style','className'];for (var i=0;i<C.length;i++){var D=C[i];if (A.elements.namedItem(D)){var E=A.elements.namedItem(D);B.push([E,E.nextSibling]);A.removeChild(E);}};return B;};FCKTools.RestoreFormStyles=function(A,B){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return;if (B.length>0){for (var i=B.length-1;i>=0;i--){var C=B[i][0];var D=B[i][1];if (D) A.insertBefore(C,D);else A.appendChild(C);}}};FCKTools.GetNextNode=function(A,B){if (A.firstChild) return A.firstChild;else if (A.nextSibling) return A.nextSibling;else{var C=A.parentNode;while (C){if (C==B) return null;if (C.nextSibling) return C.nextSibling;else C=C.parentNode;}};return null;};FCKTools.GetNextTextNode=function(A,B,C){node=this.GetNextNode(A,B);if (C&&node&&C(node)) return null;while (node&&node.nodeType!=3){node=this.GetNextNode(node,B);if (C&&node&&C(node)) return null;};return node;};FCKTools.Merge=function(){var A=arguments;var o=A[0];for (var i=1;i<A.length;i++){var B=A[i];for (var p in B) o[p]=B[p];};return o;};FCKTools.IsArray=function(A){return (A instanceof Array);};FCKTools.AppendLengthProperty=function(A,B){var C=0;for (var n in A) C++;return A[B||'length']=C;};FCKTools.NormalizeCssText=function(A){var B=document.createElement('span');B.style.cssText=A;return B.style.cssText;};FCKTools.Bind=function(A,B){return function(){ return B.apply(A,arguments);};};FCKTools.GetVoidUrl=function(){if (FCK_IS_CUSTOM_DOMAIN) return "javascript: void( function(){document.open();document.write('<html><head><title></title></head><body></body></html>');document.domain = '"+FCK_RUNTIME_DOMAIN+"';document.close();}() ) ;";if (FCKBrowserInfo.IsIE){if (FCKBrowserInfo.IsIE7||!FCKBrowserInfo.IsIE6) return "";else return "javascript: '';";};return "javascript: void(0);";};
 FCKTools.CancelEvent=function(e){return false;};FCKTools._AppendStyleSheet=function(A,B){return A.createStyleSheet(B).owningElement;};FCKTools.AppendStyleString=function(A,B){if (!B) return null;var s=A.createStyleSheet("");s.cssText=B;return s;};FCKTools.ClearElementAttributes=function(A){A.clearAttributes();};FCKTools.GetAllChildrenIds=function(A){var B=[];for (var i=0;i<A.all.length;i++){var C=A.all[i].id;if (C&&C.length>0) B[B.length]=C;};return B;};FCKTools.RemoveOuterTags=function(e){e.insertAdjacentHTML('beforeBegin',e.innerHTML);e.parentNode.removeChild(e);};FCKTools.CreateXmlObject=function(A){var B;switch (A){case 'XmlHttp':try { return new XMLHttpRequest();} catch (e) {};B=['MSXML2.XmlHttp','Microsoft.XmlHttp'];break;case 'DOMDocument':B=['MSXML2.DOMDocument','Microsoft.XmlDom'];break;};for (var i=0;i<2;i++){try { return new ActiveXObject(B[i]);}catch (e){}};if (FCKLang.NoActiveX){alert(FCKLang.NoActiveX);FCKLang.NoActiveX=null;};return null;};FCKTools.DisableSelection=function(A){A.unselectable='on';var e,i=0;while ((e=A.all[i++])){switch (e.tagName){case 'IFRAME':case 'TEXTAREA':case 'INPUT':case 'SELECT':break;default:e.unselectable='on';}}};FCKTools.GetScrollPosition=function(A){var B=A.document;var C={ X:B.documentElement.scrollLeft,Y:B.documentElement.scrollTop };if (C.X>0||C.Y>0) return C;return { X:B.body.scrollLeft,Y:B.body.scrollTop };};FCKTools.AddEventListener=function(A,B,C){A.attachEvent('on'+B,C);};FCKTools.RemoveEventListener=function(A,B,C){A.detachEvent('on'+B,C);};FCKTools.AddEventListenerEx=function(A,B,C,D){var o={};o.Source=A;o.Params=D||[];o.Listener=function(ev){return C.apply(o.Source,[ev].concat(o.Params));};if (FCK.IECleanup) FCK.IECleanup.AddItem(null,function() { o.Source=null;o.Params=null;});A.attachEvent('on'+B,o.Listener);A=null;D=null;};FCKTools.GetViewPaneSize=function(A){var B;var C=A.document.documentElement;if (C&&C.clientWidth) B=C;else B=A.document.body;if (B) return { Width:B.clientWidth,Height:B.clientHeight };else return { Width:0,Height:0 };};FCKTools.SaveStyles=function(A){var B=FCKTools.ProtectFormStyles(A);var C={};if (A.className.length>0){C.Class=A.className;A.className='';};var D=A.style.cssText;if (D.length>0){C.Inline=D;A.style.cssText='';};FCKTools.RestoreFormStyles(A,B);return C;};FCKTools.RestoreStyles=function(A,B){var C=FCKTools.ProtectFormStyles(A);A.className=B.Class||'';A.style.cssText=B.Inline||'';FCKTools.RestoreFormStyles(A,C);};FCKTools.RegisterDollarFunction=function(A){A.$=A.document.getElementById;};FCKTools.AppendElement=function(A,B){return A.appendChild(this.GetElementDocument(A).createElement(B));};FCKTools.ToLowerCase=function(A){return A.toLowerCase();};
-var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='window.FCKeditorAPI = {Version : "2.6 RC",VersionBuild : "18531",Instances : new Object(),GetInstance : function( name ){return this.Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.Instances ){var oEditor = FCKeditorAPI.Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue	: {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if(FCKBrowserInfo.IsAIR){FCKAdobeAIR.FCKeditorAPI_Evaluate(A,B);}else if (FCKBrowserInfo.IsSafari||FCKBrowserInfo.IsGecko19){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;FCKeditorAPI.__Instances=FCKeditorAPI.Instances;};FCKeditorAPI.Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){if (!window.FCKUnloadFlag) return;delete FCKeditorAPI.Instances[FCK.Name];};function FCKeditorAPI_ConfirmCleanup(){window.FCKUnloadFlag=true;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);FCKTools.AddEventListener(window,'beforeunload',FCKeditorAPI_ConfirmCleanup);
+var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='window.FCKeditorAPI = {Version : "2.6",VersionBuild : "18638",Instances : new Object(),GetInstance : function( name ){return this.Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.Instances ){var oEditor = FCKeditorAPI.Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue	: {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if(FCKBrowserInfo.IsAIR){FCKAdobeAIR.FCKeditorAPI_Evaluate(A,B);}else if (FCKBrowserInfo.IsSafari||FCKBrowserInfo.IsGecko19){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;FCKeditorAPI.__Instances=FCKeditorAPI.Instances;};FCKeditorAPI.Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){if (!window.FCKUnloadFlag) return;delete FCKeditorAPI.Instances[FCK.Name];};function FCKeditorAPI_ConfirmCleanup(){window.FCKUnloadFlag=true;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);FCKTools.AddEventListener(window,'beforeunload',FCKeditorAPI_ConfirmCleanup);
 var FCKImagePreloader=function(){this._Images=[];};FCKImagePreloader.prototype={AddImages:function(A){if (typeof(A)=='string') A=A.split(';');this._Images=this._Images.concat(A);},Start:function(){var A=this._Images;this._PreloadCount=A.length;for (var i=0;i<A.length;i++){var B=document.createElement('img');FCKTools.AddEventListenerEx(B,'load',_FCKImagePreloader_OnImage,this);FCKTools.AddEventListenerEx(B,'error',_FCKImagePreloader_OnImage,this);B.src=A[i];_FCKImagePreloader_ImageCache.push(B);}}};var _FCKImagePreloader_ImageCache=[];function _FCKImagePreloader_OnImage(A,B){if ((--B._PreloadCount)==0&&B.OnComplete) B.OnComplete();};
 var FCKRegexLib={AposEntity:/&apos;/gi,ObjectElements:/^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i,NamedCommands:/^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i,BeforeBody:/(^[\s\S]*\<body[^\>]*\>)/i,AfterBody:/(\<\/body\>[\s\S]*$)/i,ToReplace:/___fcktoreplace:([\w]+)/ig,MetaHttpEquiv:/http-equiv\s*=\s*["']?([^"' ]+)/i,HasBaseTag:/<base /i,HasBodyTag:/<body[\s|>]/i,HtmlOpener:/<html\s?[^>]*>/i,HeadOpener:/<head\s?[^>]*>/i,HeadCloser:/<\/head\s*>/i,FCK_Class:/\s*FCK__[^ ]*(?=\s+|$)/,ElementName:/(^[a-z_:][\w.\-:]*\w$)|(^[a-z_]$)/,ForceSimpleAmpersand:/___FCKAmp___/g,SpaceNoClose:/\/>/g,EmptyParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/,EmptyOutParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*|&nbsp;)(<\/\1>)?$/,TagBody:/></,GeckoEntitiesMarker:/#\?-\:/g,ProtectUrlsImg:/<img(?=\s).*?\ssrc=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsA:/<a(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsArea:/<area(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,Html4DocType:/HTML 4\.0 Transitional/i,DocTypeTag:/<!DOCTYPE[^>]*>/i,TagsWithEvent:/<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g,EventAttributes:/\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,ProtectedEvents:/\s\w+_fckprotectedatt="([^"]+)"/g,StyleProperties:/\S+\s*:/g,InvalidSelfCloseTags:/(<(?!base|meta|link|hr|br|param|img|area|input)([a-zA-Z0-9:]+)[^>]*)\/>/gi,StyleVariableAttName:/#\(\s*("|')(.+?)\1[^\)]*\s*\)/g,RegExp:/^\/(.*)\/([gim]*)$/,HtmlTag:/<[^\s<>](?:"[^"]*"|'[^']*'|[^<])*>/};
Index: /FCKeditor/releases/latest/fckeditor.js
===================================================================
--- /FCKeditor/releases/latest/fckeditor.js	(revision 1901)
+++ /FCKeditor/releases/latest/fckeditor.js	(revision 1902)
@@ -60,6 +60,6 @@
 FCKeditor.MinWidth = 750 ;
 
-FCKeditor.prototype.Version			= '2.6 RC' ;
-FCKeditor.prototype.VersionBuild	= '18531' ;
+FCKeditor.prototype.Version			= '2.6' ;
+FCKeditor.prototype.VersionBuild	= '18638' ;
 
 FCKeditor.prototype.Create = function()
Index: /FCKeditor/releases/stable/_documentation.html
===================================================================
--- /FCKeditor/releases/stable/_documentation.html	(revision 1901)
+++ /FCKeditor/releases/stable/_documentation.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -33,6 +33,6 @@
 		FCKeditor Documentation</h1>
 	<p>
-		You can find the official documentation for FCKeditor online, at <a href="http://wiki.fckeditor.net/">
-			http://wiki.fckeditor.net/</a>.</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>
Index: /FCKeditor/releases/stable/_samples/_plugins/findreplace/fckplugin.js
===================================================================
--- /FCKeditor/releases/stable/_samples/_plugins/findreplace/fckplugin.js	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/_plugins/findreplace/fckplugin.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/_plugins/findreplace/find.html
===================================================================
--- /FCKeditor/releases/stable/_samples/_plugins/findreplace/find.html	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/_plugins/findreplace/find.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/_plugins/findreplace/lang/en.js
===================================================================
--- /FCKeditor/releases/stable/_samples/_plugins/findreplace/lang/en.js	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/_plugins/findreplace/lang/en.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/_plugins/findreplace/lang/fr.js
===================================================================
--- /FCKeditor/releases/stable/_samples/_plugins/findreplace/lang/fr.js	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/_plugins/findreplace/lang/fr.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/_plugins/findreplace/lang/it.js
===================================================================
--- /FCKeditor/releases/stable/_samples/_plugins/findreplace/lang/it.js	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/_plugins/findreplace/lang/it.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/_plugins/findreplace/replace.html
===================================================================
--- /FCKeditor/releases/stable/_samples/_plugins/findreplace/replace.html	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/_plugins/findreplace/replace.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/_plugins/samples/fckplugin.js
===================================================================
--- /FCKeditor/releases/stable/_samples/_plugins/samples/fckplugin.js	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/_plugins/samples/fckplugin.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/adobeair/application.xml
===================================================================
--- /FCKeditor/releases/stable/_samples/adobeair/application.xml	(revision 1902)
+++ /FCKeditor/releases/stable/_samples/adobeair/application.xml	(revision 1902)
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<application xmlns="http://ns.adobe.com/air/application/1.0">
+	<id>net.fckeditor.air.samples.sample01</id>
+	<name>FCKeditor Sample Application 1.0</name>
+	<version>1.0</version>
+	<filename>FCKeditor AIR Sample</filename>
+	<description>This is a sample AIR application including FCKeditor.</description>
+	<copyright>Copyright (C) 2003-2008 Frederico Caldeira Knabben</copyright>
+	<initialWindow>
+		<content>_samples/adobeair/sample01.html</content>
+		<title>FCKeditor AIR Sample</title>
+		<systemChrome>standard</systemChrome>
+		<transparent>false</transparent>
+		<visible>true</visible>
+		<minimizable>true</minimizable>
+		<maximizable>true</maximizable>
+		<resizable>true</resizable>
+		<x>100</x>
+		<y>80</y>
+		<width>820</width>
+		<height>600</height>
+		<minSize>600 400</minSize>
+	</initialWindow>
+	<installFolder>FCKeditor/AIR Samples/Sample01</installFolder>
+	<programMenuFolder>FCKeditor/AIR Samples</programMenuFolder>
+	<icon>
+		<image16x16>_samples/adobeair/icons/16.png</image16x16>
+		<image32x32>_samples/adobeair/icons/32.png</image32x32>
+		<image48x48>_samples/adobeair/icons/48.png</image48x48>
+		<image128x128>_samples/adobeair/icons/128.png</image128x128>
+	</icon>
+	<customUpdateUI>false</customUpdateUI>
+	<allowBrowserInvocation>false</allowBrowserInvocation>
+</application>
Index: /FCKeditor/releases/stable/_samples/adobeair/package.bat
===================================================================
--- /FCKeditor/releases/stable/_samples/adobeair/package.bat	(revision 1902)
+++ /FCKeditor/releases/stable/_samples/adobeair/package.bat	(revision 1902)
@@ -0,0 +1,26 @@
+@ECHO OFF
+
+::
+:: 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 ==
+::
+
+:: adt -package SIGNING_OPTIONS air_file app_xml [file_or_dir | -C dir file_or_dir | -e file dir ...] ...
+
+"C:\Adobe AIR SDK\bin\adt" -package -storetype pkcs12 -keystore sample01_cert.pfx -storepass 123abc FCKeditor.air application.xml -C ../../ .
Index: /FCKeditor/releases/stable/_samples/adobeair/run.bat
===================================================================
--- /FCKeditor/releases/stable/_samples/adobeair/run.bat	(revision 1902)
+++ /FCKeditor/releases/stable/_samples/adobeair/run.bat	(revision 1902)
@@ -0,0 +1,26 @@
+@ECHO OFF
+
+::
+:: 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 ==
+::
+
+:: adl [-runtime runtime-directory] [-pubId publisher-id] [-nodebug] application.xml [rootdirectory] [-- arguments]
+
+"C:\Adobe AIR SDK\bin\adl" application.xml ../../
Index: /FCKeditor/releases/stable/_samples/adobeair/sample01.html
===================================================================
--- /FCKeditor/releases/stable/_samples/adobeair/sample01.html	(revision 1902)
+++ /FCKeditor/releases/stable/_samples/adobeair/sample01.html	(revision 1902)
@@ -0,0 +1,58 @@
+<!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 ==
+ *
+ * Sample Adobe AIR application.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>FCKeditor - Adobe AIR Sample</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<link href="../sample.css" rel="stylesheet" type="text/css" />
+	<script type="text/javascript" src="../../fckeditor.js"></script>
+	<style type="text/css">
+		body { margin: 10px ; }
+	</style>
+</head>
+<body>
+	<h1>
+		FCKeditor - Adobe AIR Sample
+	</h1>
+	<div>
+		This sample loads FCKeditor with full features enabled.
+	</div>
+	<hr />
+	<script type="text/javascript">
+
+// Automatically calculates the editor base path based on the _samples directory.
+// This is usefull only for these samples. A real application should use something like this:
+// oFCKeditor.BasePath = '/fckeditor/' ;	// '/fckeditor/' is the default value.
+var sBasePath = document.location.href.substring(0,document.location.href.lastIndexOf('_samples')) ;
+
+var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
+oFCKeditor.BasePath	= sBasePath ;
+oFCKeditor.Height	= 400 ;
+oFCKeditor.Value	= '<p>FCKeditor is in the <strong>AIR</strong>!<\/p>' ;
+oFCKeditor.Create() ;
+
+	</script>
+</body>
+</html>
Index: /FCKeditor/releases/stable/_samples/afp/fck.afpa
===================================================================
--- /FCKeditor/releases/stable/_samples/afp/fck.afpa	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/afp/fck.afpa	(revision 1902)
Index: /FCKeditor/releases/stable/_samples/afp/fck.afpa.code
===================================================================
--- /FCKeditor/releases/stable/_samples/afp/fck.afpa.code	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/afp/fck.afpa.code	(revision 1902)
@@ -1,4 +1,4 @@
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -164,3 +164,2 @@
 
 ENDDEFINE
-
Index: /FCKeditor/releases/stable/_samples/afp/sample01.afp
===================================================================
--- /FCKeditor/releases/stable/_samples/afp/sample01.afp	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/afp/sample01.afp	(revision 1902)
@@ -1,5 +1,5 @@
 <%
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/afp/sample02.afp
===================================================================
--- /FCKeditor/releases/stable/_samples/afp/sample02.afp	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/afp/sample02.afp	(revision 1902)
@@ -1,5 +1,5 @@
 <%
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -18,5 +18,5 @@
  *
  * == END LICENSE ==
- * 
+ *
  * This page is a basic Sample for FCKeditor integration in the AFP script language (www.afpages.de)
  *
Index: /FCKeditor/releases/stable/_samples/afp/sample03.afp
===================================================================
--- /FCKeditor/releases/stable/_samples/afp/sample03.afp	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/afp/sample03.afp	(revision 1902)
@@ -1,5 +1,5 @@
 <%
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/afp/sample04.afp
===================================================================
--- /FCKeditor/releases/stable/_samples/afp/sample04.afp	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/afp/sample04.afp	(revision 1902)
@@ -1,5 +1,5 @@
 <%
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/afp/sampleposteddata.afp
===================================================================
--- /FCKeditor/releases/stable/_samples/afp/sampleposteddata.afp	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/afp/sampleposteddata.afp	(revision 1902)
@@ -1,5 +1,5 @@
 <%
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/asp/sample01.asp
===================================================================
--- /FCKeditor/releases/stable/_samples/asp/sample01.asp	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/asp/sample01.asp	(revision 1902)
@@ -3,5 +3,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/asp/sample02.asp
===================================================================
--- /FCKeditor/releases/stable/_samples/asp/sample02.asp	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/asp/sample02.asp	(revision 1902)
@@ -3,5 +3,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/asp/sample03.asp
===================================================================
--- /FCKeditor/releases/stable/_samples/asp/sample03.asp	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/asp/sample03.asp	(revision 1902)
@@ -3,5 +3,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/asp/sample04.asp
===================================================================
--- /FCKeditor/releases/stable/_samples/asp/sample04.asp	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/asp/sample04.asp	(revision 1902)
@@ -3,5 +3,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/asp/sampleposteddata.asp
===================================================================
--- /FCKeditor/releases/stable/_samples/asp/sampleposteddata.asp	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/asp/sampleposteddata.asp	(revision 1902)
@@ -3,5 +3,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/cfm/sample01.cfm
===================================================================
--- /FCKeditor/releases/stable/_samples/cfm/sample01.cfm	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/cfm/sample01.cfm	(revision 1902)
@@ -2,5 +2,5 @@
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/cfm/sample01_mx.cfm
===================================================================
--- /FCKeditor/releases/stable/_samples/cfm/sample01_mx.cfm	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/cfm/sample01_mx.cfm	(revision 1902)
@@ -2,5 +2,5 @@
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/cfm/sample02.cfm
===================================================================
--- /FCKeditor/releases/stable/_samples/cfm/sample02.cfm	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/cfm/sample02.cfm	(revision 1902)
@@ -2,5 +2,5 @@
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/cfm/sample02_mx.cfm
===================================================================
--- /FCKeditor/releases/stable/_samples/cfm/sample02_mx.cfm	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/cfm/sample02_mx.cfm	(revision 1902)
@@ -2,5 +2,5 @@
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/cfm/sample03.cfm
===================================================================
--- /FCKeditor/releases/stable/_samples/cfm/sample03.cfm	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/cfm/sample03.cfm	(revision 1902)
@@ -2,5 +2,5 @@
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/cfm/sample03_mx.cfm
===================================================================
--- /FCKeditor/releases/stable/_samples/cfm/sample03_mx.cfm	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/cfm/sample03_mx.cfm	(revision 1902)
@@ -2,5 +2,5 @@
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/cfm/sample04.cfm
===================================================================
--- /FCKeditor/releases/stable/_samples/cfm/sample04.cfm	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/cfm/sample04.cfm	(revision 1902)
@@ -2,5 +2,5 @@
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/cfm/sample04_mx.cfm
===================================================================
--- /FCKeditor/releases/stable/_samples/cfm/sample04_mx.cfm	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/cfm/sample04_mx.cfm	(revision 1902)
@@ -2,5 +2,5 @@
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/cfm/sampleposteddata.cfm
===================================================================
--- /FCKeditor/releases/stable/_samples/cfm/sampleposteddata.cfm	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/cfm/sampleposteddata.cfm	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/default.html
===================================================================
--- /FCKeditor/releases/stable/_samples/default.html	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/default.html	(revision 1902)
@@ -3,5 +3,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/html/sample01.html
===================================================================
--- /FCKeditor/releases/stable/_samples/html/sample01.html	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/html/sample01.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -44,5 +44,5 @@
 // This is usefull only for these samples. A real application should use something like this:
 // oFCKeditor.BasePath = '/fckeditor/' ;	// '/fckeditor/' is the default value.
-var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
+var sBasePath = document.location.href.substring(0,document.location.href.lastIndexOf('_samples')) ;
 
 var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
Index: /FCKeditor/releases/stable/_samples/html/sample02.html
===================================================================
--- /FCKeditor/releases/stable/_samples/html/sample02.html	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/html/sample02.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -36,5 +36,5 @@
 	// This is usefull only for these samples. A real application should use something like this:
 	// oFCKeditor.BasePath = '/fckeditor/' ;	// '/fckeditor/' is the default value.
-	var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
+	var sBasePath = document.location.href.substring(0,document.location.href.lastIndexOf('_samples')) ;
 
 	var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
Index: /FCKeditor/releases/stable/_samples/html/sample03.html
===================================================================
--- /FCKeditor/releases/stable/_samples/html/sample03.html	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/html/sample03.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -79,5 +79,5 @@
 function ChangeLanguage( languageCode )
 {
-	window.location.href = window.location.pathname + "?" + languageCode ;
+	document.location.href = document.location.href.replace( /\?.*$/, '' ) + "?" + languageCode ;
 }
 	</script>
@@ -112,5 +112,5 @@
 // This is usefull only for these samples. A real application should use something like this:
 // oFCKeditor.BasePath = '/fckeditor/' ;	// '/fckeditor/' is the default value.
-var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
+var sBasePath = document.location.href.substring(0,document.location.href.lastIndexOf('_samples')) ;
 
 var sLang ;
Index: /FCKeditor/releases/stable/_samples/html/sample04.html
===================================================================
--- /FCKeditor/releases/stable/_samples/html/sample04.html	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/html/sample04.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -40,5 +40,5 @@
 function ChangeLanguage( languageCode )
 {
-	window.location.href = window.location.pathname + "?" + languageCode ;
+	document.location.href = document.location.href.replace( /\?.*$/, '' ) + "?" + languageCode ;
 }
 
@@ -72,5 +72,5 @@
 // This is usefull only for these samples. A real application should use something like this:
 // oFCKeditor.BasePath = '/fckeditor/' ;	// '/fckeditor/' is the default value.
-var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
+var sBasePath = document.location.href.substring(0,document.location.href.lastIndexOf('_samples')) ;
 
 // Get the toolbar from the URL.
Index: /FCKeditor/releases/stable/_samples/html/sample05.html
===================================================================
--- /FCKeditor/releases/stable/_samples/html/sample05.html	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/html/sample05.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -45,5 +45,5 @@
 function ChangeLanguage( languageCode )
 {
-	window.location.href = window.location.pathname + "?" + languageCode ;
+	document.location.href = document.location.href.replace( /\?.*$/, '' ) + "?" + languageCode ;
 }
 
@@ -78,5 +78,5 @@
 // This is usefull only for these samples. A real application should use something like this:
 // oFCKeditor.BasePath = '/fckeditor/' ;	// '/fckeditor/' is the default value.
-var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
+var sBasePath = document.location.href.substring(0,document.location.href.lastIndexOf('_samples')) ;
 
 // Get the skin from the URL.
Index: /FCKeditor/releases/stable/_samples/html/sample06.config.js
===================================================================
--- /FCKeditor/releases/stable/_samples/html/sample06.config.js	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/html/sample06.config.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -40,10 +40,10 @@
 //			pluginName: The plugin name. The plugin directory must match this name.
 //			availableLanguages: a list of available language files for the plugin (separated by a comma).
-FCKConfig.Plugins.Add( 'findreplace', 'en,it,fr' ) ;
+FCKConfig.Plugins.Add( 'findreplace', 'en,fr,it' ) ;
 FCKConfig.Plugins.Add( 'samples' ) ;
 
 // If you want to use plugins found on other directories, just use the third parameter.
 var sOtherPluginPath = FCKConfig.BasePath.substr(0, FCKConfig.BasePath.length - 7) + 'editor/plugins/' ;
-FCKConfig.Plugins.Add( 'placeholder', 'en,it,de,fr', sOtherPluginPath ) ;
+FCKConfig.Plugins.Add( 'placeholder', 'de,en,es,fr,it,pl', sOtherPluginPath ) ;
 FCKConfig.Plugins.Add( 'tablecommands', null, sOtherPluginPath ) ;
 FCKConfig.Plugins.Add( 'simplecommands', null, sOtherPluginPath ) ;
Index: /FCKeditor/releases/stable/_samples/html/sample06.html
===================================================================
--- /FCKeditor/releases/stable/_samples/html/sample06.html	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/html/sample06.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -52,5 +52,5 @@
 // This is usefull only for these samples. A real application should use something like this:
 // oFCKeditor.BasePath = '/fckeditor/' ;	// '/fckeditor/' is the default value.
-var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
+var sBasePath = document.location.href.substring(0,document.location.href.lastIndexOf('_samples')) ;
 
 var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
Index: /FCKeditor/releases/stable/_samples/html/sample07.html
===================================================================
--- /FCKeditor/releases/stable/_samples/html/sample07.html	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/html/sample07.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -44,5 +44,5 @@
 // This is usefull only for these samples. A real application should use something like this:
 // oFCKeditor.BasePath = '/fckeditor/' ;	// '/fckeditor/' is the default value.
-var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
+var sBasePath = document.location.href.substring(0,document.location.href.lastIndexOf('_samples')) ;
 
 var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
Index: /FCKeditor/releases/stable/_samples/html/sample08.html
===================================================================
--- /FCKeditor/releases/stable/_samples/html/sample08.html	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/html/sample08.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -155,5 +155,5 @@
 // This is usefull only for these samples. A real application should use something like this:
 // oFCKeditor.BasePath = '/fckeditor/' ;	// '/fckeditor/' is the default value.
-var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
+var sBasePath = document.location.href.substring(0,document.location.href.lastIndexOf('_samples')) ;
 
 var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
Index: /FCKeditor/releases/stable/_samples/html/sample09.html
===================================================================
--- /FCKeditor/releases/stable/_samples/html/sample09.html	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/html/sample09.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -69,5 +69,5 @@
 // This is usefull only for these samples. A real application should use something like this:
 // oFCKeditor.BasePath = '/fckeditor/' ;	// '/fckeditor/' is the default value.
-var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
+var sBasePath = document.location.href.substring(0,document.location.href.lastIndexOf('_samples')) ;
 
 var oFCKeditor = new FCKeditor( 'FCKeditor_Basic' ) ;
Index: /FCKeditor/releases/stable/_samples/html/sample10.html
===================================================================
--- /FCKeditor/releases/stable/_samples/html/sample10.html	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/html/sample10.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -51,5 +51,5 @@
 // This is usefull only for these samples. A real application should use something like this:
 // oFCKeditor.BasePath = '/fckeditor/' ;	// '/fckeditor/' is the default value.
-var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
+var sBasePath = document.location.href.substring(0,document.location.href.lastIndexOf('_samples')) ;
 
 var oFCKeditor = new FCKeditor( 'FCKeditor_1' ) ;
Index: /FCKeditor/releases/stable/_samples/html/sample11.html
===================================================================
--- /FCKeditor/releases/stable/_samples/html/sample11.html	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/html/sample11.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/html/sample11_frame.html
===================================================================
--- /FCKeditor/releases/stable/_samples/html/sample11_frame.html	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/html/sample11_frame.html	(revision 1902)
@@ -1,5 +1,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -41,5 +41,5 @@
 // This is usefull only for these samples. A real application should use something like this:
 // oFCKeditor.BasePath = '/fckeditor/' ;	// '/fckeditor/' is the default value.
-var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
+var sBasePath = document.location.href.substring(0,document.location.href.lastIndexOf('_samples')) ;
 
 var oFCKeditor = new FCKeditor( 'FCKeditor_1' ) ;
Index: /FCKeditor/releases/stable/_samples/html/sample12.html
===================================================================
--- /FCKeditor/releases/stable/_samples/html/sample12.html	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/html/sample12.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -83,5 +83,5 @@
 // This is usefull only for these samples. A real application should use something like this:
 // oFCKeditor.BasePath = '/fckeditor/' ;	// '/fckeditor/' is the default value.
-var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
+var sBasePath = document.location.href.substring(0,document.location.href.lastIndexOf('_samples')) ;
 
 // The following are the default configurations for the Enter and Shift+Enter modes.
Index: /FCKeditor/releases/stable/_samples/html/sample13.html
===================================================================
--- /FCKeditor/releases/stable/_samples/html/sample13.html	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/html/sample13.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -86,5 +86,5 @@
 	// This is usefull only for these samples. A real application should use something like this:
 	// oFCKeditor.BasePath = '/fckeditor/' ;	// '/fckeditor/' is the default value.
-	var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
+	var sBasePath = document.location.href.substring(0,document.location.href.lastIndexOf('_samples')) ;
 
 	// Create an instance of FCKeditor (using the target textarea as the name).
Index: /FCKeditor/releases/stable/_samples/html/sample14.config.js
===================================================================
--- /FCKeditor/releases/stable/_samples/html/sample14.config.js	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/html/sample14.config.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/html/sample14.html
===================================================================
--- /FCKeditor/releases/stable/_samples/html/sample14.html	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/html/sample14.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -46,5 +46,5 @@
 // This is usefull only for these samples. A real application should use something like this:
 // oFCKeditor.BasePath = '/fckeditor/' ;	// '/fckeditor/' is the default value.
-var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
+var sBasePath = document.location.href.substring(0,document.location.href.lastIndexOf('_samples')) ;
 
 var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
Index: /FCKeditor/releases/stable/_samples/html/sample14.styles.css
===================================================================
--- /FCKeditor/releases/stable/_samples/html/sample14.styles.css	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/html/sample14.styles.css	(revision 1902)
@@ -1,5 +1,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/html/sampleposteddata.asp
===================================================================
--- /FCKeditor/releases/stable/_samples/html/sampleposteddata.asp	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/html/sampleposteddata.asp	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/html/sampleposteddata.html
===================================================================
--- /FCKeditor/releases/stable/_samples/html/sampleposteddata.html	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/html/sampleposteddata.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/lasso/sample01.lasso
===================================================================
--- /FCKeditor/releases/stable/_samples/lasso/sample01.lasso	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/lasso/sample01.lasso	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/lasso/sample02.lasso
===================================================================
--- /FCKeditor/releases/stable/_samples/lasso/sample02.lasso	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/lasso/sample02.lasso	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/lasso/sample03.lasso
===================================================================
--- /FCKeditor/releases/stable/_samples/lasso/sample03.lasso	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/lasso/sample03.lasso	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/lasso/sample04.lasso
===================================================================
--- /FCKeditor/releases/stable/_samples/lasso/sample04.lasso	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/lasso/sample04.lasso	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/lasso/sampleposteddata.lasso
===================================================================
--- /FCKeditor/releases/stable/_samples/lasso/sampleposteddata.lasso	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/lasso/sampleposteddata.lasso	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/perl/sample01.cgi
===================================================================
--- /FCKeditor/releases/stable/_samples/perl/sample01.cgi	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/perl/sample01.cgi	(revision 1902)
@@ -3,5 +3,5 @@
 #####
 #  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2007 Frederico Caldeira Knabben
+#  Copyright (C) 2003-2008 Frederico Caldeira Knabben
 #
 #  == BEGIN LICENSE ==
@@ -110,4 +110,6 @@
 		} elsif($ENV{'FILEPATH_INFO'}) {
 			$dir  = $ENV{'FILEPATH_INFO'};
+		} elsif($ENV{'REQUEST_URI'}) {
+			$dir  = $ENV{'REQUEST_URI'};
 		}
 	}
Index: /FCKeditor/releases/stable/_samples/perl/sample02.cgi
===================================================================
--- /FCKeditor/releases/stable/_samples/perl/sample02.cgi	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/perl/sample02.cgi	(revision 1902)
@@ -3,5 +3,5 @@
 #####
 #  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2007 Frederico Caldeira Knabben
+#  Copyright (C) 2003-2008 Frederico Caldeira Knabben
 #
 #  == BEGIN LICENSE ==
@@ -175,4 +175,6 @@
 		} elsif($ENV{'FILEPATH_INFO'}) {
 			$dir  = $ENV{'FILEPATH_INFO'};
+		} elsif($ENV{'REQUEST_URI'}) {
+			$dir  = $ENV{'REQUEST_URI'};
 		}
 	}
Index: /FCKeditor/releases/stable/_samples/perl/sample03.cgi
===================================================================
--- /FCKeditor/releases/stable/_samples/perl/sample03.cgi	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/perl/sample03.cgi	(revision 1902)
@@ -3,5 +3,5 @@
 #####
 #  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2007 Frederico Caldeira Knabben
+#  Copyright (C) 2003-2008 Frederico Caldeira Knabben
 #
 #  == BEGIN LICENSE ==
@@ -160,4 +160,6 @@
 		} elsif($ENV{'FILEPATH_INFO'}) {
 			$dir  = $ENV{'FILEPATH_INFO'};
+		} elsif($ENV{'REQUEST_URI'}) {
+			$dir  = $ENV{'REQUEST_URI'};
 		}
 	}
Index: /FCKeditor/releases/stable/_samples/perl/sample04.cgi
===================================================================
--- /FCKeditor/releases/stable/_samples/perl/sample04.cgi	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/perl/sample04.cgi	(revision 1902)
@@ -3,5 +3,5 @@
 #####
 #  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2007 Frederico Caldeira Knabben
+#  Copyright (C) 2003-2008 Frederico Caldeira Knabben
 #
 #  == BEGIN LICENSE ==
@@ -167,4 +167,6 @@
 		} elsif($ENV{'FILEPATH_INFO'}) {
 			$dir  = $ENV{'FILEPATH_INFO'};
+		} elsif($ENV{'REQUEST_URI'}) {
+			$dir  = $ENV{'REQUEST_URI'};
 		}
 	}
Index: /FCKeditor/releases/stable/_samples/perl/sampleposteddata.cgi
===================================================================
--- /FCKeditor/releases/stable/_samples/perl/sampleposteddata.cgi	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/perl/sampleposteddata.cgi	(revision 1902)
@@ -3,5 +3,5 @@
 #####
 #  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2007 Frederico Caldeira Knabben
+#  Copyright (C) 2003-2008 Frederico Caldeira Knabben
 #
 #  == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/php/sample01.php
===================================================================
--- /FCKeditor/releases/stable/_samples/php/sample01.php	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/php/sample01.php	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/php/sample02.php
===================================================================
--- /FCKeditor/releases/stable/_samples/php/sample02.php	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/php/sample02.php	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/php/sample03.php
===================================================================
--- /FCKeditor/releases/stable/_samples/php/sample03.php	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/php/sample03.php	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/php/sample04.php
===================================================================
--- /FCKeditor/releases/stable/_samples/php/sample04.php	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/php/sample04.php	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/php/sampleposteddata.php
===================================================================
--- /FCKeditor/releases/stable/_samples/php/sampleposteddata.php	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/php/sampleposteddata.php	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/py/sample01.py
===================================================================
--- /FCKeditor/releases/stable/_samples/py/sample01.py	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/py/sample01.py	(revision 1902)
@@ -3,5 +3,5 @@
 """
 FCKeditor - The text editor for Internet - http://www.fckeditor.net
-Copyright (C) 2003-2007 Frederico Caldeira Knabben
+Copyright (C) 2003-2008 Frederico Caldeira Knabben
 
 == BEGIN LICENSE ==
@@ -79,4 +79,2 @@
 </html>
 """
-
-
Index: /FCKeditor/releases/stable/_samples/py/sampleposteddata.py
===================================================================
--- /FCKeditor/releases/stable/_samples/py/sampleposteddata.py	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/py/sampleposteddata.py	(revision 1902)
@@ -3,5 +3,5 @@
 """
 FCKeditor - The text editor for Internet - http://www.fckeditor.net
-Copyright (C) 2003-2007 Frederico Caldeira Knabben
+Copyright (C) 2003-2008 Frederico Caldeira Knabben
 
 == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/sample.css
===================================================================
--- /FCKeditor/releases/stable/_samples/sample.css	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/sample.css	(revision 1902)
@@ -1,5 +1,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_samples/sampleslist.html
===================================================================
--- /FCKeditor/releases/stable/_samples/sampleslist.html	(revision 1901)
+++ /FCKeditor/releases/stable/_samples/sampleslist.html	(revision 1902)
@@ -3,5 +3,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/_upgrade.html
===================================================================
--- /FCKeditor/releases/stable/_upgrade.html	(revision 1901)
+++ /FCKeditor/releases/stable/_upgrade.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -33,6 +33,7 @@
 		FCKeditor Upgrade</h1>
 	<p>
-		Please check the following URL for notes regarding upgrade: <a href="http://wiki.fckeditor.net/Developer%27s_Guide/Upgrade">
-			http://wiki.fckeditor.net/Developer%27s_Guide/Upgrade</a></p>
+		Please check the following URL for notes regarding upgrade:<br />
+		<a href="http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/Installation/Upgrading">
+			http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/Installation/Upgrading</a></p>
 </body>
 </html>
Index: /FCKeditor/releases/stable/_whatsnew.html
===================================================================
--- /FCKeditor/releases/stable/_whatsnew.html	(revision 1901)
+++ /FCKeditor/releases/stable/_whatsnew.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -34,36 +34,256 @@
 		FCKeditor ChangeLog - What's New?</h1>
 	<h3>
-		Version 2.5.1</h3>
+		Version 2.6</h3>
+	<p>
+		No changes. The stabilization of the 2.6 RC was completed successfully, as expected.</p>
+	<h3>
+		Version 2.6 RC</h3>
 	<p>
 		New Features and Improvements:</p>
 	<ul>
-		<li><strong>FCKeditor.Net 2.5</strong> compatibility.</li>
-		<li>JavaScript integration file:
-			<ul>
-				<li>The new "<strong>FCKeditor.ReplaceAllTextareas</strong>" function is being introduced,
-					making it possible to replace many (or unknown) &lt;textarea&gt; elements in a single
-					call. The replacement can be also filtered by CSS class name, or by a custom function
-					evaluator. </li>
-				<li>It is now possible to set the default BasePath for all editor instances by setting
-					<strong>FCKeditor.BasePath</strong>. This is extremely useful when working with
-					the ReplaceAllTextareas function. </li>
-			</ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2017">#2017</a>] The FCKeditorAPI.Instances
+			object can now be used to access all FCKeditor instances available in the page.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1980">#1980</a>] <span
+			style="color: #ff0000">Attention:</span> By default, the editor now produces &lt;strong&gt;
+			and &lt;em&gt; instead of &lt;b&gt; and &lt;i&gt;.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1924">#1924</a>] The dialog
+			close button is now correctly positioned in IE in RTL languages.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1933">#1933</a>] Placeholder
+			dialog will now display the placeholder value correctly in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/957">#957</a>] Pressing
+			Enter or typing after a placeholder with the placeholder plugin will no longer generate
+			colored text.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1952">#1952</a>] Fixed
+			an issue in FCKTools.FixCssUrls that, other than wrong, was breaking Opera.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1695">#1695</a>] Removed
+			Ctrl-Tab hotkey for Source mode and allowed Ctrl-T to work in Firefox.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1666">#1666</a>] Fixed
+			permission denied errors during opening popup menus in IE6 under domain relaxation
+			mode.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1934">#1934</a>] Fixed
+			JavaScript errors when calling Selection.EnsureSelection() in dialogs.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1920">#1920</a>] Fixed
+			SSL warning message when opening image and flash dialogs under HTTPS in IE6.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1955">#1955</a>] [<a
+			target="_blank" href="http://dev.fckeditor.net/ticket/1981">#1981</a>] [<a target="_blank"
+				href="http://dev.fckeditor.net/ticket/1985">#1985</a>] [<a target="_blank" href="http://dev.fckeditor.net/ticket/1989">#1989</a>]
+			Fixed XHTML source formatting errors in non-IE browsers.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2000">#2000</a>] The #
+			character is now properly encoded in file names returned by the File Browser.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1945">#1945</a>] New folders
+			and file names are now properly sanitized against control characters. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1944">#1944</a>] Backslash
+			character is now disallowed in current folder path.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1055">#1055</a>] Added
+			logic to override JavaScript errors occurring inside the editing frame due to user
+			added JavaScript code.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1647">#1647</a>] Hitting
+			ENTER on list items containing block elements will now create new list item elements,
+			instead of adding further blocks to the same list item.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1411">#1411</a>] Label
+			only combos now get properly grayed out when moving to source view.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2009">#2009</a>] Fixed
+			an important bug regarding styles removal on styled text boundaries, introduced
+			with the 2.6 Beta 1. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2011">#2011</a>] Internal
+			CSS &lt;style&gt; tags where being outputted when FullPage=true.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2016">#2016</a>] The Link
+			dialog now properly selects the first field when opening it to modify mailto or
+			anchor links. This problem was also throwing an error in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2021">#2021</a>] The caret
+			will no longer remain behind in the editing area when the placeholder dialog is
+			opened.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2024">#2024</a>] Fixed
+			JavaScript error in IE when the user tries to open dialogs in Source mode.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1853">#1853</a>] Setting
+			ShiftEnterMode to p or div now works correctly when EnterMode is br.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1838">#1838</a>] Fixed
+			the issue where context menus sometimes don't disappear after selecting an option.
 		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2028">#2028</a>] Fixed
+			JavaScript error when EnterMode=br and user tries to insert a page break.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2002">#2002</a>] Fixed
+			the issue where the maximize editor button does not vertically expand the editing
+			area in Firefox.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1842">#1842</a>] PHP integration:
+			fixed filename encoding problems in file browser.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1832">#1832</a>] Calling
+			FCK.InsertHtml() in non-IE browsers would now activate the document processor as
+			expected.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1998">#1998</a>] The native
+			XMLHttpRequest class is now used in IE, whenever it is available.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1792">#1792</a>] In IE,
+			the browser was able to enter in an infinite loop when working with multiple editors
+			in the same page. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1948">#1948</a>] Some
+			CSS rules are reset to dialog elements to avoid conflict with the page CSS.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1965">#1965</a>] IE was
+			having problems with SpellerPages, causing some errors to be thrown when completing
+			the spell checking in some situations.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2042">#2042</a>] The FitWindow
+			command was throwing an error if executed in an editor where its relative button
+			is not present in the toolbar.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/922">#922</a>] Implemented
+			a generic document processor for &lt;OBJECT&gt; and &lt;EMBED&gt; tags.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1831">#1831</a>] Fixed
+			the issue where the placeholder icon for &lt;EMBED&gt; tags does not always show
+			up in IE7.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2049">#2049</a>] Fixed
+			a deleted cursor CSS attribute in the minified CSS inside fck_dialog_common.js.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1806">#1806</a>] In IE,
+			the caret will not any more move to the previous line when selecting a Format style
+			inside an empty paragraph.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1990">#1990</a>] In IE,
+			dialogs using API calls which deals with the selection, like InsertHtml now can
+			be sure the selection will be placed in the correct position.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1997">#1997</a>] With
+			IE, the first character of table captions where being lost on table creation.</li>
+		<li>The selection and cursor position was not being properly handled when creating some
+			elements like forms and tables.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/662">#662</a>] In the
+			Perl sample files, the GetServerPath function will now calculate the path properly.</li>
+	</ul>
+	<h3>
+		Version 2.6 Beta 1</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/35">#35</a>] <strong>New
+			(and cool!) floating dialog system</strong>, avoiding problems with popup blockers
+			and enhancing the editor usability.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1886">#1886</a>] <strong>
+			Adobe AIR</strong> compatibility.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/123">#123</a>] Full support
+			for <strong>document.domain</strong> with automatic domain detection.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1622">#1622</a>] New <strong>
+			inline CSS cache</strong> feature, making it possible to avoid downloading the CSS
+			files for the editing area and skins. For that, it is enough to set the EditorAreaCSS,
+			SkinEditorCSS and SkinDialogCSS to string values in the format "/absolute/path/for/urls/|&lt;minified
+			CSS styles". All internal CSS links are already using this feature. </li>
+		<li>New language file for <strong>Canadian French</strong>.</li>
 	</ul>
 	<p>
 		Fixed Bugs:</p>
 	<ul>
-		<li>[<a href="http://dev.fckeditor.net/ticket/339" target="_blank">#339</a>] [<a
-			href="http://dev.fckeditor.net/ticket/681" target="_blank">#681</a>] The SpellerPages
-			spell checker will now completely ignore the presence of HTML tags in the text.
-		</li>
-		<li>[<a href="http://dev.fckeditor.net/ticket/1643" target="_blank">#1643</a>] Resolved
-			several "strict warning" messages in Firefox when running FCKeditor. </li>
-		<li>[<a href="http://dev.fckeditor.net/ticket/1603" target="_blank">#1603</a>] Certain
-			specific markup was making FCKeditor entering in a loop, blocking its execution.
-		</li>
-		<li>[<a href="http://dev.fckeditor.net/ticket/1664" target="_blank">#1664</a>] The ENTER
-			key will not any more swap the order of the tags when hit at the end of paragraphs.
-		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1643">#1643</a>] Resolved
+			several "strict warning" messages in Firefox when running FCKeditor.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1522">#1522</a>] The ENTER
+			key will now work properly in IE with the cursor at the start of a formatted block.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1503">#1503</a>] It's
+			possible to define in the Styles that a Style (with an empty class) must be shown
+			selected only when no class is present in the current element, and selecting that
+			item will clear the current class (it does apply to any attribute, not only classes).</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/191">#191</a>] The scrollbars
+			are now being properly shown in Firefox Mac when placing FCKeditor inside a hidden
+			div.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/503">#503</a>] Orphaned
+			&lt;li&gt; elements now get properly enclosed in a &lt;ul&gt; on output.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/309">#309</a>] The ENTER
+			key will not any more break &lt;button&gt; elements at the beginning of paragraphs.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1654">#1654</a>] The editor
+			was not loading on a specific unknown situation. The breaking point has been removed.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1707">#1707</a>] The editor
+			no longer hangs when operating on documents imported from Microsoft Word.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1514">#1514</a>] Floating
+			panels attached to a shared toolbar among multiple FCKeditor instances are no longer
+			misplaced when the editing areas are absolutely or relatively positioned.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1715">#1715</a>] The ShowDropDialog
+			is now enforced only when ForcePasteAsPlainText = true.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1336">#1336</a>] Sometimes
+			the autogrow plugin didn't work properly in Firefox.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1728">#1728</a>] External
+			toolbars are now properly sized in Opera.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1782">#1782</a>] Clicking
+			on radio buttons or checkboxes in the editor in IE will no longer cause lockups
+			in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/805">#805</a>] The FCKConfig.Keystrokes
+			commands where executed even if the command itself was disabled.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/982">#982</a>] The button
+			to empty the box in the "Paste from Word" has been removed as it leads to confusion
+			for some users.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1682">#1682</a>] Editing
+			control elements in Firefox, Opera and Safari now works properly.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1613">#1613</a>] The editor
+			was surrounded by a &lt;div&gt; element that wasn't really needed.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/676">#676</a>] If a form
+			control was moved in IE after creating it, then it did lose its name.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/738">#738</a>] It wasn't
+			possible to change the type of an existing button.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1854">#1854</a>] Indentation
+			now works inside table cells.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1717">#1717</a>] The editor
+			was entering on looping on some specific cases when dealing with invalid source
+			markup.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1530">#1530</a>] Pasting
+			text into the "Find what" fields in the Find and Replace dialog would now activate
+			the find and replace buttons.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1828">#1828</a>] The Find/Replace
+			dialog will no longer display wrong starting positions for the match when there
+			are multiple and identical characters preceding the character at the real starting
+			point of the match.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1878">#1878</a>] Fixed
+			a JavaScript error which occurs in the Find/Replace dialog when the user presses
+			"Find" or "Replace" after the "No match found" message has appeared.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1355">#1355</a>] Line
+			breaks and spaces are now conserved when converting to and from the "Formatted"
+			format.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1670">#1670</a>] Improved
+			the background color behind smiley icons and special characters in their corresponding
+			dialogs.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1693">#1693</a>] Custom
+			error messages are now properly displayed in the file browser.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/970">#970</a>] The text
+			and value fields in the selection box dialog will no longer extend beyond the dialog
+			limits when the user inputs a very long text or value for one of the selection options.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/479">#479</a>] Fixed the
+			issue where pressing Enter in an &lt;o:p&gt; tag in IE does not generate line breaks.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/481">#481</a>] Fixed the
+			issue where the image preview in image dialog sometimes doesn't display after selecting
+			the image from server browser.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1488">#1488</a>] PHP integration:
+			the FCKeditor class is now more PHP5/6 friendly ("public" keyword is used instead
+			of depreciated "var").</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1815">#1815</a>] PHP integration:
+			removed closing tag: "?&gt;", so no additional whitespace added when files are included.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1906">#1906</a>] PHP file
+			browser: fixed problems with DetectHtml() function when open_basedir was set.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1871">#1871</a>] PHP file
+			browser: permissions applied with the chmod command are now configurable.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1872">#1872</a>] Perl
+			file browser: permissions applied with the chmod command are now configurable.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1873">#1873</a>] Python
+			file browser: permissions applied with the chmod command are now configurable.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1572">#1572</a>] ColdFusion
+			integration: fixed issues with setting the editor height.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1692">#1692</a>] ColdFusion
+			file browser: it is possible now to define TempDirectory to avoid issues with GetTempdirectory()
+			returning an empty string.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1379">#1379</a>] ColdFusion
+			file browser: resolved issues with OnRequestEnd.cfm breaking the file browser.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1509">#1509</a>] InsertHtml()
+			in IE will no longer turn the preceding normal whitespace into &amp;nbsp;.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/958">#958</a>] The AddItem
+			method now has an additional fifth parameter "customData" that will be sent to the
+			Execute method of the command for that menu item, allowing a single command to be
+			used for different menu items..</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1502">#1502</a>] The RemoveFormat
+			command now also removes the attributes from the cleaned text. The list of attributes
+			is configurable with FCKConfig.RemoveAttributes.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1596">#1596</a>] On Safari,
+			dialogs have now right-to-left layout when it runs a RTL language, like Arabic.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1344">#1344</a>] Added
+			warning message on Copy and Cut operation failure on IE due to paste permission
+			settings.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1868">#1868</a>] Links
+			to file browser has been changed to avoid requests containing double dots.</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/1627">#1627</a>] Samples
+			failed to load from local filesystem in IE7.</li>
 	</ul>
 	<p>
Index: /FCKeditor/releases/stable/_whatsnew_history.html
===================================================================
--- /FCKeditor/releases/stable/_whatsnew_history.html	(revision 1901)
+++ /FCKeditor/releases/stable/_whatsnew_history.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -33,4 +33,38 @@
 	<h1>
 		FCKeditor ChangeLog - What's New?</h1>
+	<h3>
+		Version 2.5.1</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li><strong>FCKeditor.Net 2.5</strong> compatibility.</li>
+		<li>JavaScript integration file:
+			<ul>
+				<li>The new "<strong>FCKeditor.ReplaceAllTextareas</strong>" function is being introduced,
+					making it possible to replace many (or unknown) &lt;textarea&gt; elements in a single
+					call. The replacement can be also filtered by CSS class name, or by a custom function
+					evaluator. </li>
+				<li>It is now possible to set the default BasePath for all editor instances by setting
+					<strong>FCKeditor.BasePath</strong>. This is extremely useful when working with
+					the ReplaceAllTextareas function. </li>
+			</ul>
+		</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a href="http://dev.fckeditor.net/ticket/339" target="_blank">#339</a>] [<a
+			href="http://dev.fckeditor.net/ticket/681" target="_blank">#681</a>] The SpellerPages
+			spell checker will now completely ignore the presence of HTML tags in the text.
+		</li>
+		<li>[<a href="http://dev.fckeditor.net/ticket/1643" target="_blank">#1643</a>] Resolved
+			several "strict warning" messages in Firefox when running FCKeditor. </li>
+		<li>[<a href="http://dev.fckeditor.net/ticket/1603" target="_blank">#1603</a>] Certain
+			specific markup was making FCKeditor entering in a loop, blocking its execution.
+		</li>
+		<li>[<a href="http://dev.fckeditor.net/ticket/1664" target="_blank">#1664</a>] The ENTER
+			key will not any more swap the order of the tags when hit at the end of paragraphs.
+		</li>
+	</ul>
 	<h3>
 		Version 2.5</h3>
Index: /FCKeditor/releases/stable/editor/_source/classes/fckcontextmenu.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckcontextmenu.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckcontextmenu.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -27,5 +27,5 @@
 
 	var oPanel = this._Panel = new FCKPanel( parentWindow ) ;
-	oPanel.AppendStyleSheet( FCKConfig.SkinPath + 'fck_editor.css' ) ;
+	oPanel.AppendStyleSheet( FCKConfig.SkinEditorCSS ) ;
 	oPanel.IsContextMenu = true ;
 
@@ -57,7 +57,11 @@
 }
 
-FCKContextMenu.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled )
-{
-	var oItem = this._MenuBlock.AddItem( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled) ;
+/**
+ The customData parameter is just a value that will be send to the command that is executed,
+ so it's possible to reuse the same command for several items just by assigning different data for each one.
+*/
+FCKContextMenu.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData )
+{
+	var oItem = this._MenuBlock.AddItem( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData ) ;
 	this._Redraw = true ;
 	return oItem ;
@@ -123,5 +127,5 @@
 			if( !overrideButton )
 			{
-				var doc = e.target.ownerDocument ;
+				var doc = FCKTools.GetElementDocument( e.target ) ;
 				overrideButton = FCKContextMenu_OverrideButton = doc.createElement('input') ;
 				overrideButton.type = 'button' ;
@@ -131,6 +135,6 @@
 			}
 
-			overrideButton.style.cssText = 'position:absolute;top:' + ( e.clientY - 2 ) + 
-				'px;left:' + ( e.clientX - 2 ) + 
+			overrideButton.style.cssText = 'position:absolute;top:' + ( e.clientY - 2 ) +
+				'px;left:' + ( e.clientX - 2 ) +
 				'px;width:5px;height:5px;opacity:0.01' ;
 		}
@@ -156,4 +160,5 @@
 		}
 	}
+	return true ;
 }
 
@@ -176,5 +181,5 @@
 		fckContextMenu._Redraw = false ;
 	}
-	
+
 	// This will avoid that the content of the context menu can be dragged in IE
 	// as the content of the panel is recreated we need to do it every time
Index: /FCKeditor/releases/stable/editor/_source/classes/fckdataprocessor.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckdataprocessor.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckdataprocessor.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/classes/fckdocumentfragment_gecko.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckdocumentfragment_gecko.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckdocumentfragment_gecko.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/classes/fckdocumentfragment_ie.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckdocumentfragment_ie.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckdocumentfragment_ie.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/classes/fckdomrange.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckdomrange.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckdomrange.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -99,4 +99,5 @@
 			return docFrag ;
 		}
+		return null ;
 	},
 
@@ -105,4 +106,6 @@
 		if ( this._Range )
 			return this._Range.collapsed ;
+
+		return false ;
 	},
 
@@ -146,10 +149,18 @@
 	MoveToElementEditStart : function( targetElement )
 	{
-		var child ;
-
-		while ( ( child = targetElement.firstChild ) && child.nodeType == 1 && FCKListsLib.EmptyElements[ child.nodeName.toLowerCase() ] == null )
-			targetElement = child ;
-
-		this.MoveToElementStart( targetElement ) ;
+		var editableElement ;
+
+		while ( targetElement && targetElement.nodeType == 1 )
+		{
+			if ( FCKDomTools.CheckIsEditable( targetElement ) )
+				editableElement = targetElement ;
+			else if ( editableElement )
+				break ;		// If we already found an editable element, stop the loop.
+
+			targetElement = targetElement.firstChild ;
+		}
+
+		if ( editableElement )
+			this.MoveToElementStart( editableElement ) ;
 	},
 
@@ -737,5 +748,5 @@
 	 *		- PreviousBlock	: a reference to the block element that preceeds
 	 *		  the range after the split.
-	 *		- NextBlock : a reference to the block element that preceeds the
+	 *		- NextBlock : a reference to the block element that follows the
 	 *		  range after the split.
 	 *		- WasStartOfBlock : a boolean indicating that the range was
@@ -748,6 +759,8 @@
 	 * NextBlock value if the range was at the end of the block.
 	 */
-	SplitBlock : function()
-	{
+	SplitBlock : function( forceBlockTag )
+	{
+		var blockTag = forceBlockTag || FCKConfig.EnterMode ;
+
 		if ( !this._Range )
 			this.MoveToSelection() ;
@@ -761,14 +774,14 @@
 			var oElementPath	= null ;
 
-			if ( FCKConfig.EnterMode != 'br' )
+			if ( blockTag != 'br' )
 			{
 				if ( !eStartBlock )
 				{
-					eStartBlock = this.FixBlock( true ) ;
+					eStartBlock = this.FixBlock( true, blockTag ) ;
 					eEndBlock	= this.EndBlock ;	// FixBlock may have fixed the EndBlock too.
 				}
 
 				if ( !eEndBlock )
-					eEndBlock = this.FixBlock( false ) ;
+					eEndBlock = this.FixBlock( false, blockTag ) ;
 			}
 
@@ -833,5 +846,5 @@
 
 	// Transform a block without a block tag in a valid block (orphan text in the body or td, usually).
-	FixBlock : function( isStart )
+	FixBlock : function( isStart, blockTag )
 	{
 		// Bookmark the range so we can restore it later.
@@ -845,5 +858,5 @@
 
 		// Create the fixed block.
-		var oFixedBlock = this.Window.document.createElement( FCKConfig.EnterMode ) ;
+		var oFixedBlock = this.Window.document.createElement( blockTag ) ;
 
 		// Move the contents of the temporary range to the fixed block.
Index: /FCKeditor/releases/stable/editor/_source/classes/fckdomrange_gecko.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckdomrange_gecko.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckdomrange_gecko.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/classes/fckdomrange_ie.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckdomrange_ie.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckdomrange_ie.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -83,5 +83,5 @@
 	// Create marker tags for the start and end boundaries.
 	var eStartMarker = this.GetBookmarkNode( bookmark, true ) ;
-	
+
 	if ( !eStartMarker )
 		return ;
@@ -113,6 +113,6 @@
 	{
 		bIsStartMakerAlone = ( forceExpand || !eStartMarker.previousSibling || eStartMarker.previousSibling.nodeName.toLowerCase() == 'br' ) && !eStartMarker.nextSibing ;
-		
-		// Append a temporary <span>&nbsp;</span> before the selection.
+
+		// Append a temporary <span>&#65279;</span> before the selection.
 		// This is needed to avoid IE destroying selections inside empty
 		// inline elements, like <b></b> (#253).
@@ -122,5 +122,5 @@
 		dummySpan.innerHTML = '&#65279;' ;	// Zero Width No-Break Space (U+FEFF). See #1359.
 		eStartMarker.parentNode.insertBefore( dummySpan, eStartMarker ) ;
-		
+
 		if ( bIsStartMakerAlone )
 		{
@@ -132,5 +132,5 @@
 		}
 	}
-	
+
 	if ( !this._Range )
 		this._Range = this.CreateRange() ;
@@ -144,7 +144,7 @@
 		if ( bIsStartMakerAlone )
 		{
-			// Move the selection start to include the temporary &nbsp;.
+			// Move the selection start to include the temporary &#65279;.
 			oIERange.moveStart( 'character', -1 ) ;
-			
+
 			oIERange.select() ;
 
Index: /FCKeditor/releases/stable/editor/_source/classes/fckdomrangeiterator.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckdomrangeiterator.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckdomrangeiterator.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -93,4 +93,6 @@
 		var lastNode = this._LastNode ;
 
+		this._NextNode = null ;
+
 		while ( currentNode )
 		{
@@ -111,5 +113,5 @@
 				var nodeName = currentNode.nodeName.toLowerCase() ;
 
-				if ( boundarySet[ nodeName ] )
+				if ( boundarySet[ nodeName ] && ( !FCKBrowserInfo.IsIE || currentNode.scopeName == 'HTML' ) )
 				{
 					// <br> boundaries must be part of the range. It will
@@ -129,5 +131,12 @@
 					// including possibly skipped empty spaces. (#1603)
 					if ( range )
+					{
 						range.SetEnd( currentNode, 3, true ) ;
+
+						// The found boundary must be set as the next one at this
+						// point. (#1717)
+						if ( nodeName != 'br' )
+							this._NextNode = currentNode ;
+					}
 
 					closeRange = true ;
@@ -202,7 +211,7 @@
 			{
 				range._UpdateElementInfo() ;
-				
-				if ( range.StartNode == range.EndNode 
-						&& range.StartNode.parentNode == range.StartBlockLimit 
+
+				if ( range.StartNode == range.EndNode
+						&& range.StartNode.parentNode == range.StartBlockLimit
 						&& range.StartNode.getAttribute && range.StartNode.getAttribute( '_fck_bookmark' ) )
 					range = null ;
@@ -210,5 +219,5 @@
 					break ;
 			}
-			
+
 			if ( isLast )
 				break ;
@@ -272,5 +281,4 @@
 					removePreviousBr = !splitInfo.WasStartOfBlock ;
 					removeLastBr = !splitInfo.WasEndOfBlock ;
-					FCKDebug.Output( 'removePreviousBr=' + removePreviousBr + ',removeLastBr=' + removeLastBr ) ;
 
 					// Insert the new block into the DOM.
@@ -312,5 +320,6 @@
 		// above block can be removed or changed, so we can rely on it for the
 		// next interation.
-		this._NextNode = ( isLast || block == lastNode ) ? null : FCKDomTools.GetNextSourceNode( block, true, null, lastNode ) ;
+		if ( !this._NextNode )
+			this._NextNode = ( isLast || block == lastNode ) ? null : FCKDomTools.GetNextSourceNode( block, true, null, lastNode ) ;
 
 		return block ;
Index: /FCKeditor/releases/stable/editor/_source/classes/fckeditingarea.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckeditingarea.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckeditingarea.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -45,29 +45,13 @@
 
 	// Remove all child nodes from the target.
-	var oChild ;
-	while( ( oChild = eTargetElement.firstChild ) )		// Only one "=".
-	{
-		// Set innerHTML = '' to avoid memory leak.
-		if ( oChild.contentWindow )
-			oChild.contentWindow.document.body.innerHTML = '' ;
-
-		eTargetElement.removeChild( oChild ) ;
-	}
+	while( eTargetElement.firstChild )
+		eTargetElement.removeChild( eTargetElement.firstChild ) ;
 
 	if ( this.Mode == FCK_EDITMODE_WYSIWYG )
 	{
-		// Create the editing area IFRAME.
-		var oIFrame = this.IFrame = oTargetDocument.createElement( 'iframe' ) ;
-		
-		// Firefox will render the tables inside the body in Quirks mode if the 
-		// source of the iframe is set to javascript. see #515
-		if ( !FCKBrowserInfo.IsGecko )
-			oIFrame.src = 'javascript:void(0)' ;
-		
-		oIFrame.frameBorder = 0 ;
-		oIFrame.width = oIFrame.height = '100%' ;
-
-		// Append the new IFRAME to the target.
-		eTargetElement.appendChild( oIFrame ) ;
+		// For FF, document.domain must be set only when different, otherwhise
+		// we'll strangely have "Permission denied" issues.
+		if ( FCK_IS_CUSTOM_DOMAIN )
+			html = '<script>document.domain="' + FCK_RUNTIME_DOMAIN + '";</script>' + html ;
 
 		// IE has a bug with the <base> tag... it must have a </base> closer,
@@ -105,4 +89,36 @@
 		}
 
+		// Create the editing area IFRAME.
+		var oIFrame = this.IFrame = oTargetDocument.createElement( 'iframe' ) ;
+
+		// IE: Avoid JavaScript errors thrown by the editing are source (like tags events).
+		// See #1055.
+		var sOverrideError = '<script type="text/javascript" _fcktemp="true">window.onerror=function(){return true;};</script>' ;
+
+		oIFrame.frameBorder = 0 ;
+		oIFrame.width = oIFrame.height = '100%' ;
+
+		if ( FCK_IS_CUSTOM_DOMAIN && FCKBrowserInfo.IsIE )
+		{
+			window._FCKHtmlToLoad = sOverrideError + html ;
+			oIFrame.src = 'javascript:void( (function(){' +
+				'document.open() ;' +
+				'document.domain="' + document.domain + '" ;' +
+				'document.write( window.parent._FCKHtmlToLoad );' +
+				'document.close() ;' +
+				'window.parent._FCKHtmlToLoad = null ;' +
+				'})() )' ;
+		}
+		else if ( !FCKBrowserInfo.IsGecko )
+		{
+			// Firefox will render the tables inside the body in Quirks mode if the
+			// source of the iframe is set to javascript. see #515
+			oIFrame.src = 'javascript:void(0)' ;
+		}
+
+		// Append the new IFRAME to the target. For IE, it must be done after
+		// setting the "src", to avoid the "secure/unsecure" message under HTTPS.
+		eTargetElement.appendChild( oIFrame ) ;
+
 		// Get the window and document objects used to interact with the newly created IFRAME.
 		this.Window = oIFrame.contentWindow ;
@@ -112,9 +128,15 @@
 		// this.Window.onerror = function() { alert( 'Error!' ) ; return true ; }
 
-		var oDoc = this.Document = this.Window.document ;
-
-		oDoc.open() ;
-		oDoc.write( html ) ;
-		oDoc.close() ;
+		if ( !FCK_IS_CUSTOM_DOMAIN || !FCKBrowserInfo.IsIE )
+		{
+			var oDoc = this.Window.document ;
+
+			oDoc.open() ;
+			oDoc.write( sOverrideError + html ) ;
+			oDoc.close() ;
+		}
+
+		if ( FCKBrowserInfo.IsAIR )
+			FCKAdobeAIR.EditingArea_Start( oDoc, html ) ;
 
 		// Firefox 1.0.x is buggy... ohh yes... so let's do it two times and it
@@ -126,14 +148,33 @@
 		}
 
-		this.Window._FCKEditingArea = this ;
-
-		// FF 1.0.x is buggy... we must wait a lot to enable editing because
-		// sometimes the content simply disappears, for example when pasting
-		// "bla1!<img src='some_url'>!bla2" in the source and then switching
-		// back to design.
-		if ( FCKBrowserInfo.IsGecko10 )
-			this.Window.setTimeout( FCKEditingArea_CompleteStart, 500 ) ;
+		if ( oIFrame.readyState && oIFrame.readyState != 'completed' )
+		{
+			var editArea = this ;
+			( oIFrame.onreadystatechange = function()
+			{
+				if ( oIFrame.readyState == 'complete' )
+				{
+					oIFrame.onreadystatechange = null ;
+					editArea.Window._FCKEditingArea = editArea ;
+					FCKEditingArea_CompleteStart.call( editArea.Window ) ;
+				}
+			// It happened that IE changed the state to "complete" after the
+			// "if" and before the "onreadystatechange" assignement, making we
+			// lost the event call, so we do a manual call just to be sure.
+			} )() ;
+		}
 		else
-			FCKEditingArea_CompleteStart.call( this.Window ) ;
+		{
+			this.Window._FCKEditingArea = this ;
+
+			// FF 1.0.x is buggy... we must wait a lot to enable editing because
+			// sometimes the content simply disappears, for example when pasting
+			// "bla1!<img src='some_url'>!bla2" in the source and then switching
+			// back to design.
+			if ( FCKBrowserInfo.IsGecko10 )
+				this.Window.setTimeout( FCKEditingArea_CompleteStart, 500 ) ;
+			else
+				FCKEditingArea_CompleteStart.call( this.Window ) ;
+		}
 	}
 	else
@@ -142,9 +183,9 @@
 		eTextarea.className = 'SourceField' ;
 		eTextarea.dir = 'ltr' ;
-		FCKDomTools.SetElementStyles( eTextarea, 
-			{ 
-				width	: '100%', 
-				height	: '100%', 
-				border	: 'none', 
+		FCKDomTools.SetElementStyles( eTextarea,
+			{
+				width	: '100%',
+				height	: '100%',
+				border	: 'none',
 				resize	: 'none',
 				outline	: 'none'
@@ -170,5 +211,8 @@
 
 	var oEditorArea = this._FCKEditingArea ;
-	
+
+	// Save this reference to be re-used later.
+	oEditorArea.Document = oEditorArea.Window.document ;
+
 	oEditorArea.MakeEditable() ;
 
@@ -214,5 +258,5 @@
 			oDoc.execCommand( 'enableInlineTableEditing', false, !FCKConfig.DisableFFTableHandles ) ;
 		}
-		catch (e) 
+		catch (e)
 		{
 			// In Firefox if the iframe is initially hidden it can't be set to designMode and it raises an exception
@@ -229,10 +273,10 @@
 {
 	var editingArea = evt.currentTarget.contentWindow._FCKEditingArea ;
-	
+
 	// We want to run our function after the events no longer fire, so we can know that it's a stable situation
 	if ( editingArea._timer )
 		window.clearTimeout( editingArea._timer ) ;
 
-	editingArea._timer = FCKTools.SetTimeout( FCKEditingArea_MakeEditableByMutation, 1000, editingArea ) ;	
+	editingArea._timer = FCKTools.SetTimeout( FCKEditingArea_MakeEditableByMutation, 1000, editingArea ) ;
 }
 
@@ -256,14 +300,8 @@
 		if ( this.Mode == FCK_EDITMODE_WYSIWYG )
 		{
-			// The following check is important to avoid IE entering in a focus loop. Ref:
-			// http://sourceforge.net/tracker/index.php?func=detail&aid=1567060&group_id=75348&atid=543653
-			if ( FCKBrowserInfo.IsIE && this.Document.hasFocus() )
-				this._EnsureFocusIE() ;
-
-			this.Window.focus() ;
-
-			// In IE it can happen that the document is in theory focused but the active element is outside it
 			if ( FCKBrowserInfo.IsIE )
-				this._EnsureFocusIE() ;
+				this._FocusIE() ;
+			else
+				this.Window.focus() ;
 		}
 		else
@@ -279,8 +317,11 @@
 }
 
-FCKEditingArea.prototype._EnsureFocusIE = function()
-{
-	// In IE it can happen that the document is in theory focused but the active element is outside it
+FCKEditingArea.prototype._FocusIE = function()
+{
+	// In IE it can happen that the document is in theory focused but the
+	// active element is outside of it.
 	this.Document.body.setActive() ;
+
+	this.Window.focus() ;
 
 	// Kludge for #141... yet more code to workaround IE bugs
@@ -292,5 +333,5 @@
 	// Only apply the fix when in a block, and the block is empty.
 	if ( parentNode.childNodes.length > 0 ||
-		 !( FCKListsLib.BlockElements[parentTag] || 
+		 !( FCKListsLib.BlockElements[parentTag] ||
 		    FCKListsLib.NonEmptyBlockElements[parentTag] ) )
 	{
@@ -298,12 +339,9 @@
 	}
 
-	range.moveEnd( "character", 1 ) ;
-	range.select() ;
-
-	if ( range.boundingWidth > 0 )
-	{
-		range.moveEnd( "character", -1 ) ;
-		range.select() ;
-	}
+	// Force the selection to happen, in this way we guarantee the focus will
+	// be there.
+	range = new FCKDomRange( this.Window ) ;
+	range.MoveToElementEditStart( parentNode ) ;
+	range.Select() ;
 }
 
Index: /FCKeditor/releases/stable/editor/_source/classes/fckelementpath.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckelementpath.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckelementpath.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -39,4 +39,6 @@
 
 			var sElementName = e.nodeName.toLowerCase() ;
+			if ( FCKBrowserInfo.IsIE && e.scopeName != 'HTML' )
+				sElementName = e.scopeName.toLowerCase() + ':' + sElementName ;
 
 			if ( !eBlockLimit )
@@ -75,14 +77,13 @@
 {
 	var childNodes = element.childNodes ;
-	
+
 	for ( var i = 0, count = childNodes.length ; i < count ; i++ )
 	{
 		var child = childNodes[i] ;
-		
+
 		if ( child.nodeType == 1 && FCKListsLib.BlockElements[ child.nodeName.toLowerCase() ] )
 			return true ;
 	}
-	
+
 	return false ;
 }
-
Index: /FCKeditor/releases/stable/editor/_source/classes/fckenterkey.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckenterkey.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckenterkey.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -394,7 +394,5 @@
 	var oRange = range || new FCKDomRange( this.Window ) ;
 
-	var oSplitInfo = oRange.SplitBlock() ;
-
-	// FCKDebug.OutputObject( oSplitInfo ) ;
+	var oSplitInfo = oRange.SplitBlock( blockTag ) ;
 
 	if ( oSplitInfo )
@@ -407,8 +405,24 @@
 		var bIsEndOfBlock	= oSplitInfo.WasEndOfBlock ;
 
+		// If there is one block under a list item, modify the split so that the list item gets split as well. (Bug #1647)
+		if ( eNextBlock )
+		{
+			if ( eNextBlock.parentNode.nodeName.IEquals( 'li' ) )
+			{
+				FCKDomTools.BreakParent( eNextBlock, eNextBlock.parentNode ) ;
+				FCKDomTools.MoveNode( eNextBlock, eNextBlock.nextSibling, true ) ;
+			}
+		}
+		else if ( ePreviousBlock && ePreviousBlock.parentNode.nodeName.IEquals( 'li' ) )
+		{
+			FCKDomTools.BreakParent( ePreviousBlock, ePreviousBlock.parentNode ) ;
+			oRange.MoveToElementEditStart( ePreviousBlock.nextSibling );
+			FCKDomTools.MoveNode( ePreviousBlock, ePreviousBlock.previousSibling ) ;
+		}
+
 		// If we have both the previous and next blocks, it means that the
 		// boundaries were on separated blocks, or none of them where on the
 		// block limits (start/end).
-		if ( !oSplitInfo.WasStartOfBlock && !oSplitInfo.WasEndOfBlock )
+		if ( !bIsStartOfBlock && !bIsEndOfBlock )
 		{
 			// If the next block is an <li> with another list tree as the first child
@@ -416,5 +430,5 @@
 			if ( eNextBlock.nodeName.IEquals( 'li' ) && eNextBlock.firstChild
 					&& eNextBlock.firstChild.nodeName.IEquals( ['ul', 'ol'] ) )
-				eNextBlock.insertBefore( eNextBlock.ownerDocument.createTextNode( '\xa0' ), eNextBlock.firstChild ) ;
+				eNextBlock.insertBefore( FCKTools.GetElementDocument( eNextBlock ).createTextNode( '\xa0' ), eNextBlock.firstChild ) ;
 			// Move the selection to the end block.
 			if ( eNextBlock )
@@ -463,5 +477,5 @@
 					if ( element == elementPath.Block || element == elementPath.BlockLimit )
 						break ;
-					
+
 					if ( FCKListsLib.InlineChildReqElements[ element.nodeName.toLowerCase() ] )
 					{
@@ -483,5 +497,5 @@
 			{
 				// Move the selection to the new block.
-				oRange.MoveToNodeContents( eNewBlock ) ;
+				oRange.MoveToElementEditStart( eNewBlock ) ;
 				oRange.Select() ;
 			}
Index: /FCKeditor/releases/stable/editor/_source/classes/fckevents.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckevents.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckevents.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/classes/fckhtmliterator.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckhtmliterator.js	(revision 1902)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckhtmliterator.js	(revision 1902)
@@ -0,0 +1,142 @@
+﻿/*
+ * 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 class can be used to interate through nodes inside a range.
+ *
+ * During interation, the provided range can become invalid, due to document
+ * mutations, so CreateBookmark() used to restore it after processing, if
+ * needed.
+ */
+
+var FCKHtmlIterator = function( source )
+{
+	this._sourceHtml = source ;
+}
+FCKHtmlIterator.prototype =
+{
+	Next : function()
+	{
+		var sourceHtml = this._sourceHtml ;
+		if ( sourceHtml == null )
+			return null ;
+
+		var match = FCKRegexLib.HtmlTag.exec( sourceHtml ) ;
+		var isTag = false ;
+		var value = "" ;
+		if ( match )
+		{
+			if ( match.index > 0 )
+			{
+				value = sourceHtml.substr( 0, match.index ) ;
+				this._sourceHtml = sourceHtml.substr( match.index ) ;
+			}
+			else
+			{
+				isTag = true ;
+				value = match[0] ;
+				this._sourceHtml = sourceHtml.substr( match[0].length ) ;
+			}
+		}
+		else
+		{
+			value = sourceHtml ;
+			this._sourceHtml = null ;
+		}
+		return { 'isTag' : isTag, 'value' : value } ;
+	},
+
+	Each : function( func )
+	{
+		var chunk ;
+		while ( ( chunk = this.Next() ) )
+			func( chunk.isTag, chunk.value ) ;
+	}
+} ;
+/*
+ * 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 class can be used to interate through nodes inside a range.
+ *
+ * During interation, the provided range can become invalid, due to document
+ * mutations, so CreateBookmark() used to restore it after processing, if
+ * needed.
+ */
+
+var FCKHtmlIterator = function( source )
+{
+	this._sourceHtml = source ;
+}
+FCKHtmlIterator.prototype =
+{
+	Next : function()
+	{
+		var sourceHtml = this._sourceHtml ;
+		if ( sourceHtml == null )
+			return null ;
+
+		var match = FCKRegexLib.HtmlTag.exec( sourceHtml ) ;
+		var isTag = false ;
+		var value = "" ;
+		if ( match )
+		{
+			if ( match.index > 0 )
+			{
+				value = sourceHtml.substr( 0, match.index ) ;
+				this._sourceHtml = sourceHtml.substr( match.index ) ;
+			}
+			else
+			{
+				isTag = true ;
+				value = match[0] ;
+				this._sourceHtml = sourceHtml.substr( match[0].length ) ;
+			}
+		}
+		else
+		{
+			value = sourceHtml ;
+			this._sourceHtml = null ;
+		}
+		return { 'isTag' : isTag, 'value' : value } ;
+	},
+
+	Each : function( func )
+	{
+		var chunk ;
+		while ( ( chunk = this.Next() ) )
+			func( chunk.isTag, chunk.value ) ;
+	}
+} ;
Index: /FCKeditor/releases/stable/editor/_source/classes/fckicon.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckicon.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckicon.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/classes/fckiecleanup.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckiecleanup.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckiecleanup.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/classes/fckimagepreloader.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckimagepreloader.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckimagepreloader.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/classes/fckkeystrokehandler.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckkeystrokehandler.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckkeystrokehandler.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -57,7 +57,7 @@
 		// If the configuration for the keystrokes is missing some element or has any extra comma
 		// this item won't be valid, so skip it and keep on processing.
-		if ( !keyDef ) 
+		if ( !keyDef )
 			continue ;
-		
+
 		if ( typeof( keyDef[0] ) == 'object' )		// It is an array with arrays defining the keystrokes.
 			this.SetKeystrokes.apply( this, keyDef ) ;
Index: /FCKeditor/releases/stable/editor/_source/classes/fckmenublock.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckmenublock.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckmenublock.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -33,7 +33,7 @@
 }
 
-FCKMenuBlock.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled )
+FCKMenuBlock.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData )
 {
-	var oItem = new FCKMenuItem( this, name, label, iconPathOrStripInfoArrayOrIndex, isDisabled ) ;
+	var oItem = new FCKMenuItem( this, name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData ) ;
 
 	oItem.OnClick		= FCKTools.CreateEventListener( FCKMenuBlock_Item_OnClick, this ) ;
@@ -111,5 +111,5 @@
 		{
 			menuBlock._Window.focus() ;
-			
+
 			// Due to the event model provided by Opera, we need to set
 			// HasFocus here as the above focus() call will not fire the focus
Index: /FCKeditor/releases/stable/editor/_source/classes/fckmenublockpanel.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckmenublockpanel.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckmenublockpanel.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -36,5 +36,5 @@
 {
 	var oPanel = this.Panel = ( this.Parent && this.Parent.Panel ? this.Parent.Panel.CreateChildPanel() : new FCKPanel() ) ;
-	oPanel.AppendStyleSheet( FCKConfig.SkinPath + 'fck_editor.css' ) ;
+	oPanel.AppendStyleSheet( FCKConfig.SkinEditorCSS ) ;
 
 	// Call the "base" implementation.
Index: /FCKeditor/releases/stable/editor/_source/classes/fckmenuitem.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckmenuitem.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckmenuitem.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -22,5 +22,5 @@
  */
 
-var FCKMenuItem = function( parentMenuBlock, name, label, iconPathOrStripInfoArray, isDisabled )
+var FCKMenuItem = function( parentMenuBlock, name, label, iconPathOrStripInfoArray, isDisabled, customData )
 {
 	this.Name		= name ;
@@ -33,4 +33,5 @@
 	this.SubMenu.Parent		= parentMenuBlock ;
 	this.SubMenu.OnClick	= FCKTools.CreateEventListener( FCKMenuItem_SubMenu_OnClick, this ) ;
+	this.CustomData = customData ;
 
 	if ( FCK.IECleanup )
@@ -39,8 +40,8 @@
 
 
-FCKMenuItem.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled )
+FCKMenuItem.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData )
 {
 	this.HasSubMenu = true ;
-	return this.SubMenu.AddItem( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled ) ;
+	return this.SubMenu.AddItem( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData ) ;
 }
 
Index: /FCKeditor/releases/stable/editor/_source/classes/fckpanel.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckpanel.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckpanel.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -36,6 +36,29 @@
 	{
 		// Create the Popup that will hold the panel.
+		// The popup has to be created before playing with domain hacks, see #1666.
 		this._Popup	= this._Window.createPopup() ;
+
+		// this._Window cannot be accessed while playing with domain hacks, but local variable is ok.
+		// See #1666.
+		var pDoc = this._Window.document ;
+
+		// This is a trick to IE6 (not IE7). The original domain must be set
+		// before creating the popup, so we are able to take a refence to the
+		// document inside of it, and the set the proper domain for it. (#123)
+		if ( FCK_IS_CUSTOM_DOMAIN && !FCKBrowserInfo.IsIE7 )
+		{
+			pDoc.domain = FCK_ORIGINAL_DOMAIN ;
+			document.domain = FCK_ORIGINAL_DOMAIN ;
+		}
+
 		oDocument = this.Document = this._Popup.document ;
+
+		// Set the proper domain inside the popup.
+		if ( FCK_IS_CUSTOM_DOMAIN )
+		{
+			oDocument.domain = FCK_RUNTIME_DOMAIN ;
+			pDoc.domain = FCK_RUNTIME_DOMAIN ;
+			document.domain = FCK_RUNTIME_DOMAIN ;
+		}
 
 		FCK.IECleanup.AddItem( this, FCKPanel_Cleanup ) ;
@@ -55,22 +78,5 @@
 			} ) ;
 
-		if ( this._Window == window.parent && window.frameElement )
-		{
-			var scrollPos = null ;
-			if ( FCKBrowserInfo.IsGecko && FCK && FCK.EditorDocument )
-				scrollPos = [ FCK.EditorDocument.body.scrollLeft, FCK.EditorDocument.body.scrollTop ] ;
-			window.frameElement.parentNode.insertBefore( oIFrame, window.frameElement ) ;
-			if ( scrollPos )
-			{
-				var restoreFunc = function()
-				{
-					FCK.EditorDocument.body.scrollLeft = scrollPos[0] ;
-					FCK.EditorDocument.body.scrollTop = scrollPos[1] ;
-				}
-				setTimeout( restoreFunc, 500 ) ;
-			}
-		}
-		else
-			this._Window.document.body.appendChild( oIFrame ) ;
+		this._Window.document.body.appendChild( oIFrame ) ;
 
 		var oIFrameWindow = oIFrame.contentWindow ;
@@ -87,4 +93,7 @@
 		oDocument.write( '<html><head>' + sBase + '<\/head><body style="margin:0px;padding:0px;"><\/body><\/html>' ) ;
 		oDocument.close() ;
+
+		if( FCKBrowserInfo.IsAIR )
+			FCKAdobeAIR.Panel_Contructor( oDocument, window.document.location ) ;
 
 		FCKTools.AddEventListenerEx( oIFrameWindow, 'focus', FCKPanel_Window_OnFocus, this ) ;
@@ -175,7 +184,18 @@
 		}
 
+		// Toggle the iframe scrolling attribute to prevent the panel
+		// scrollbars from disappearing in FF Mac. (#191)
+		if ( FCKBrowserInfo.IsGecko && FCKBrowserInfo.IsMac )
+		{
+			this._IFrame.scrolling = '' ;
+			FCKTools.RunFunction( function(){ this._IFrame.scrolling = 'no'; }, this ) ;
+		}
+
 		// Be sure we'll not have more than one Panel opened at the same time.
-		if ( FCKPanel._OpenedPanel )
-			FCKPanel._OpenedPanel.Hide() ;
+		// Do not unlock focus manager here because we're displaying another floating panel
+		// instead of returning the editor to a "no panel" state (Bug #1514).
+		if ( FCK.ToolbarSet.CurrentInstance.GetInstanceObject( 'FCKPanel' )._OpenedPanel &&
+				FCK.ToolbarSet.CurrentInstance.GetInstanceObject( 'FCKPanel' )._OpenedPanel != this )
+			FCK.ToolbarSet.CurrentInstance.GetInstanceObject( 'FCKPanel' )._OpenedPanel.Hide( false, true ) ;
 
 		FCKDomTools.SetElementStyles( eMainNode,
@@ -206,5 +226,5 @@
 
 		// Minus the offsets provided by any positioned parent element of the panel iframe.
-		var positionedAncestor = FCKDomTools.GetPositionedAncestor( FCKTools.GetElementWindow( this._IFrame ), this._IFrame.parentNode ) ;
+		var positionedAncestor = FCKDomTools.GetPositionedAncestor( this._IFrame.parentNode ) ;
 		if ( positionedAncestor )
 		{
@@ -242,7 +262,4 @@
 		}
 
-		if ( x < 0 )
-			 x = 0 ;
-
 		// Set the context menu DIV in the specified location.
 		FCKDomTools.SetElementStyles( this._IFrame,
@@ -252,22 +269,25 @@
 			} ) ;
 
-		var iWidth	= iMainWidth ;
-		var iHeight	= eMainNode.offsetHeight ;
-
-		this._IFrame.width	= iWidth ;
-		this._IFrame.height = iHeight ;
-
 		// Move the focus to the IFRAME so we catch the "onblur".
 		this._IFrame.contentWindow.focus() ;
-
-		FCKPanel._OpenedPanel = this ;
-	}
-
-	this._IsOpened = true ;
+		this._IsOpened = true ;
+
+		var me = this ;
+		this._resizeTimer = setTimeout( function()
+			{
+				var iWidth = eMainNode.offsetWidth || eMainNode.firstChild.offsetWidth ;
+				var iHeight = eMainNode.offsetHeight ;
+				me._IFrame.width = iWidth ;
+				me._IFrame.height = iHeight ;
+
+			}, 0 ) ;
+
+		FCK.ToolbarSet.CurrentInstance.GetInstanceObject( 'FCKPanel' )._OpenedPanel = this ;
+	}
 
 	FCKTools.RunFunction( this.OnShow, this ) ;
 }
 
-FCKPanel.prototype.Hide = function( ignoreOnHide )
+FCKPanel.prototype.Hide = function( ignoreOnHide, ignoreFocusManagerUnlock )
 {
 	if ( this._Popup )
@@ -279,5 +299,5 @@
 
 		// Enable the editor to fire the "OnBlur".
-		if ( typeof( FCKFocusManager ) != 'undefined' )
+		if ( typeof( FCKFocusManager ) != 'undefined' && !ignoreFocusManagerUnlock )
 			FCKFocusManager.Unlock() ;
 
@@ -287,4 +307,10 @@
 
 		this._IsOpened = false ;
+
+		if ( this._resizeTimer )
+		{
+			clearTimeout( this._resizeTimer ) ;
+			this._resizeTimer = null ;
+		}
 
 		if ( this.ParentPanel )
Index: /FCKeditor/releases/stable/editor/_source/classes/fckplugin.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckplugin.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckplugin.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/classes/fckspecialcombo.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckspecialcombo.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckspecialcombo.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -38,5 +38,5 @@
 
 	this._Panel = new FCKPanel( parentWindow || window ) ;
-	this._Panel.AppendStyleSheet( FCKConfig.SkinPath + 'fck_editor.css' ) ;
+	this._Panel.AppendStyleSheet( FCKConfig.SkinEditorCSS ) ;
 	this._PanelBox = this._Panel.MainNode.appendChild( this._Panel.Document.createElement( 'DIV' ) ) ;
 	this._PanelBox.className = 'SC_Panel' ;
@@ -83,5 +83,5 @@
 	if ( this.Items )
 		this.Items = {} ;
-	
+
 	var itemsholder = this._ItemsHolderEl ;
 	while ( itemsholder.firstChild )
Index: /FCKeditor/releases/stable/editor/_source/classes/fckstyle.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckstyle.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckstyle.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -95,5 +95,5 @@
 	 * Apply the style to a FCKDomRange.
 	 */
-	ApplyToRange : function( range, selectIt )
+	ApplyToRange : function( range, selectIt, updateRange )
 	{
 		// ApplyToRange is not valid for FCK_STYLE_OBJECT types.
@@ -112,5 +112,5 @@
 		}
 
-		this.ApplyToRange( range, selectIt ) ;
+		this.ApplyToRange( range, selectIt, updateRange ) ;
 	},
 
@@ -142,5 +142,5 @@
 	 * effect.
 	 */
-	RemoveFromRange : function( range, selectIt )
+	RemoveFromRange : function( range, selectIt, updateRange )
 	{
 		var bookmark ;
@@ -232,6 +232,7 @@
 						this._RemoveOverrides( pathElement, styleOverrides[ pathElementName ] ) ;
 
-						// Remove the element if no more attributes are available.
-						this._RemoveNoAttribElement( pathElement ) ;
+						// Remove the element if no more attributes are available and it's an inline style element
+						if ( this.GetType() == FCK_STYLE_INLINE)
+							this._RemoveNoAttribElement( pathElement ) ;
 					}
 				}
@@ -276,4 +277,7 @@
 				range.SelectBookmark( bookmark ) ;
 
+			if ( updateRange )
+				range.MoveToBookmark( bookmark ) ;
+
 			return ;
 		}
@@ -283,5 +287,5 @@
 
 		// Bookmark the range so we can re-select it after processing.
-		var bookmark = range.CreateBookmark( true ) ;
+		bookmark = range.CreateBookmark( true ) ;
 
 		// The style will be applied within the bookmark boundaries.
@@ -401,4 +405,7 @@
 		if ( selectIt )
 			range.SelectBookmark( bookmark ) ;
+
+		if ( updateRange )
+			range.MoveToBookmark( bookmark ) ;
 	},
 
@@ -487,5 +494,5 @@
 		{
 			case FCK_STYLE_BLOCK :
-				return this.CheckElementRemovable( elementPath.Block || elementPath.BlockLimit ) ;
+				return this.CheckElementRemovable( elementPath.Block || elementPath.BlockLimit, true ) ;
 
 			case FCK_STYLE_INLINE :
@@ -689,5 +696,6 @@
 		}
 
-		return ( valueA == valueB )
+		// Return true if they match or if valueA is null and valueB is an empty string
+		return ( valueA == valueB || ( ( valueA === null || valueA === '' ) && ( valueB === null || valueB === '' ) ) )
 	},
 
@@ -739,4 +747,92 @@
 
 		this._Variables[ name ] = value ;
+	},
+
+	/**
+	 * Converting from a PRE block to a non-PRE block in formatting operations.
+	 */
+	_FromPre : function( doc, block, newBlock )
+	{
+		var innerHTML = block.innerHTML ;
+
+		// Trim the first and last linebreaks immediately after and before <pre>, </pre>,
+		// if they exist.
+		// This is done because the linebreaks are not rendered.
+		innerHTML = innerHTML.replace( /(\r\n|\r)/g, '\n' ) ;
+		innerHTML = innerHTML.replace( /^[ \t]*\n/, '' ) ;
+		innerHTML = innerHTML.replace( /\n$/, '' ) ;
+
+		// 1. Convert spaces or tabs at the beginning or at the end to &nbsp;
+		innerHTML = innerHTML.replace( /^[ \t]+|[ \t]+$/g, function( match, offset, s )
+				{
+					if ( match.length == 1 )	// one space, preserve it
+						return '&nbsp;' ;
+					else if ( offset == 0 )		// beginning of block
+						return new Array( match.length ).join( '&nbsp;' ) + ' ' ;
+					else				// end of block
+						return ' ' + new Array( match.length ).join( '&nbsp;' ) ;
+				} ) ;
+
+		// 2. Convert \n to <BR>.
+		// 3. Convert contiguous (i.e. non-singular) spaces or tabs to &nbsp;
+		var htmlIterator = new FCKHtmlIterator( innerHTML ) ;
+		var results = [] ;
+		htmlIterator.Each( function( isTag, value )
+			{
+				if ( !isTag )
+				{
+					value = value.replace( /\n/g, '<BR>' ) ;
+					value = value.replace( /[ \t]{2,}/g,
+							function ( match )
+							{
+								return new Array( match.length ).join( '&nbsp;' ) + ' ' ;
+							} ) ;
+				}
+				results.push( value ) ;
+			} ) ;
+		newBlock.innerHTML = results.join( '' ) ;
+		return newBlock ;
+	},
+
+	/**
+	 * Converting from a non-PRE block to a PRE block in formatting operations.
+	 */
+	_ToPre : function( doc, block, newBlock )
+	{
+		// Handle converting from a regular block to a <pre> block.
+		var innerHTML = block.innerHTML.Trim() ;
+
+		// 1. Delete ANSI whitespaces immediately before and after <BR> because they are not visible.
+		// 2. Mark down any <BR /> nodes here so they can be turned into \n in the next step and avoid being compressed.
+		innerHTML = innerHTML.replace( /[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi, '<BR />' ) ;
+
+		// 3. Compress other ANSI whitespaces since they're only visible as one single space previously.
+		// 4. Convert &nbsp; to spaces since &nbsp; is no longer needed in <PRE>.
+		// 5. Convert any <BR /> to \n. This must not be done earlier because the \n would then get compressed.
+		var htmlIterator = new FCKHtmlIterator( innerHTML ) ;
+		var results = [] ;
+		htmlIterator.Each( function( isTag, value )
+			{
+				if ( !isTag )
+					value = value.replace( /([ \t\n\r]+|&nbsp;)/g, ' ' ) ;
+				else if ( isTag && value == '<BR />' )
+					value = '\n' ;
+				results.push( value ) ;
+			} ) ;
+
+		// Assigning innerHTML to <PRE> in IE causes all linebreaks to be reduced to spaces.
+		// Assigning outerHTML to <PRE> in IE doesn't work if the <PRE> isn't contained in another node
+		// since the node reference is changed after outerHTML assignment.
+		// So, we need some hacks to workaround IE bugs here.
+		if ( FCKBrowserInfo.IsIE )
+		{
+			var temp = doc.createElement( 'div' ) ;
+			temp.appendChild( newBlock ) ;
+			newBlock.outerHTML = '<PRE>\n' + results.join( '' ) + '</PRE>' ;
+			newBlock = temp.removeChild( temp.firstChild ) ;
+		}
+		else
+			newBlock.innerHTML = results.join( '' ) ;
+		return newBlock ;
 	},
 
@@ -748,5 +844,5 @@
 	 *	- Properly handle block containers like <div> and <blockquote>.
 	 */
-	_ApplyBlockStyle : function( range, selectIt )
+	_ApplyBlockStyle : function( range, selectIt, updateRange )
 	{
 		// Bookmark the range so we can re-select it after processing.
@@ -754,5 +850,5 @@
 
 		if ( selectIt )
-			bookmark = range.CreateBookmark( true ) ;
+			bookmark = range.CreateBookmark() ;
 
 		var iterator = new FCKDomRangeIterator( range ) ;
@@ -760,14 +856,75 @@
 
 		var block ;
+		var doc = range.Window.document ;
+
+		var preBlocks = [] ;
+		var convertedPreBlocks = [] ;
+
 		while( ( block = iterator.GetNextParagraph() ) )		// Only one =
 		{
 			// Create the new node right before the current one.
-			var newBlock = block.parentNode.insertBefore( this.BuildElement( range.Window.document ), block ) ;
+			var newBlock = this.BuildElement( doc ) ;
 
 			// Move everything from the current node to the new one.
-			FCKDomTools.MoveChildren( block, newBlock ) ;
-
-			// Delete the current node.
+			var newBlockIsPre = newBlock.nodeName.IEquals( 'pre' ) ;
+			var blockIsPre = block.nodeName.IEquals( 'pre' ) ;
+			if ( newBlockIsPre && !blockIsPre )
+			{
+				newBlock = this._ToPre( doc, block, newBlock ) ;
+				preBlocks.push( newBlock ) ;
+			}
+			else if ( !newBlockIsPre && blockIsPre )
+			{
+				newBlock = this._FromPre( doc, block, newBlock ) ;
+				convertedPreBlocks.push( newBlock ) ;
+			}
+			else	// Convering from a regular block to another regular block.
+				FCKDomTools.MoveChildren( block, newBlock ) ;
+
+			// Replace the current block.
+			block.parentNode.insertBefore( newBlock, block ) ;
 			FCKDomTools.RemoveNode( block ) ;
+		}
+
+		// Merge adjacent <PRE> blocks for #1229.
+		for ( var i = 0 ; i < preBlocks.length - 1 ; i++ )
+		{
+			// Check if the next block in HTML equals the next <PRE> block generated.
+			if ( FCKDomTools.GetNextSourceElement( preBlocks[i], true, [], [], true ) != preBlocks[i+1] )
+				continue ;
+
+			// Merge the upper <PRE> block's content into the lower <PRE> block.
+			// Remove the upper <PRE> block.
+			preBlocks[i+1].innerHTML = preBlocks[i].innerHTML + '\n\n' + preBlocks[i+1].innerHTML ;
+			FCKDomTools.RemoveNode( preBlocks[i] ) ;
+		}
+
+		// Split converted <PRE> blocks for #1229.
+		for ( var i = 0 ; i < convertedPreBlocks.length ; i++ )
+		{
+			var currentBlock = convertedPreBlocks[i] ;
+			var lastNewBlock = null ;
+			for ( var j = 0 ; j < currentBlock.childNodes.length ; j++ )
+			{
+				var cursor = currentBlock.childNodes[j] ;
+
+				// If we have two <BR>s, and they're not at the beginning or the end,
+				// then we'll split up the contents following them into another block.
+				if ( cursor.nodeName.IEquals( 'br' ) && j != 0 && j != currentBlock.childNodes.length - 2
+						&& cursor.nextSibling && cursor.nextSibling.nodeName.IEquals( 'br' ) )
+				{
+					FCKDomTools.RemoveNode( cursor.nextSibling ) ;
+					FCKDomTools.RemoveNode( cursor ) ;
+					j-- ;	// restart at current index at next iteration
+					lastNewBlock = FCKDomTools.InsertAfterNode( lastNewBlock || currentBlock, doc.createElement( currentBlock.nodeName ) ) ;
+					continue ;
+				}
+
+				if ( lastNewBlock )
+				{
+					FCKDomTools.MoveNode( cursor, lastNewBlock ) ;
+					j-- ;	// restart at current index at next iteration
+				}
+			}
 		}
 
@@ -775,4 +932,7 @@
 		if ( selectIt )
 			range.SelectBookmark( bookmark ) ;
+
+		if ( updateRange )
+			range.MoveToBookmark( bookmark ) ;
 	},
 
@@ -787,5 +947,5 @@
 	 *        <span style="color: #ff0000;"><span style="background-color: #ffffff">XYZ</span></span>
 	 */
-	_ApplyInlineStyle : function( range, selectIt )
+	_ApplyInlineStyle : function( range, selectIt, updateRange )
 	{
 		var doc = range.Window.document ;
@@ -968,4 +1128,7 @@
 		if ( selectIt )
 			range.SelectBookmark( bookmark ) ;
+
+		if ( updateRange )
+			range.MoveToBookmark( bookmark ) ;
 	},
 
Index: /FCKeditor/releases/stable/editor/_source/classes/fcktoolbar.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fcktoolbar.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fcktoolbar.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarbreak_gecko.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarbreak_gecko.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarbreak_gecko.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarbreak_ie.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarbreak_ie.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarbreak_ie.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarbutton.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarbutton.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarbutton.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -49,12 +49,17 @@
 FCKToolbarButton.prototype.RefreshState = function()
 {
+	var uiButton = this._UIButton ;
+
+	if ( !uiButton )
+		return ;
+
 	// Gets the actual state.
 	var eState = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).GetState() ;
 
 	// If there are no state changes than do nothing and return.
-	if ( eState == this._UIButton.State ) return ;
+	if ( eState == uiButton.State ) return ;
 
 	// Sets the actual state.
-	this._UIButton.ChangeState( eState ) ;
+	uiButton.ChangeState( eState ) ;
 }
 
Index: /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarbuttonui.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarbuttonui.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarbuttonui.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarfontformatcombo.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarfontformatcombo.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarfontformatcombo.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -35,5 +35,5 @@
 
 	this.PanelWidth = 190 ;
-	
+
 	this.DefaultLabel = FCKConfig.DefaultFontFormatLabel || '' ;
 }
@@ -65,5 +65,5 @@
 		div		: aNames[9] || ( aNames[0] + ' (DIV)')
 	} ;
-	
+
 	// Get the available formats from the configuration file.
 	var elements = FCKConfig.FontFormats.split(';') ;
Index: /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarfontscombo.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarfontscombo.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarfontscombo.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarfontsizecombo.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarfontsizecombo.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarfontsizecombo.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarpanelbutton.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarpanelbutton.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarpanelbutton.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -49,4 +49,12 @@
 
 	var oPanel = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName )._Panel ;
+	this.RegisterPanel( oPanel ) ;
+}
+
+FCKToolbarPanelButton.prototype.RegisterPanel = function( oPanel )
+{
+	if ( oPanel._FCKToolbarPanelButton )
+		return ;
+
 	oPanel._FCKToolbarPanelButton = this ;
 
@@ -55,5 +63,5 @@
 	eLineDiv.style.top = '0px' ;
 
-	var eLine = this.LineImg = eLineDiv.appendChild( oPanel.Document.createElement( 'IMG' ) ) ;
+	var eLine = oPanel._FCKToolbarPanelButtonLineDiv = eLineDiv.appendChild( oPanel.Document.createElement( 'IMG' ) ) ;
 	eLine.className = 'TB_ConnectionLine' ;
 	eLine.style.position = 'absolute' ;
@@ -75,7 +83,10 @@
 	oButton._UIButton.ChangeState( FCK_TRISTATE_ON ) ;
 
-	oButton.LineImg.style.width = ( e.offsetWidth - 2 ) + 'px' ;
+	// oButton.LineImg.style.width = ( e.offsetWidth - 2 ) + 'px' ;
 
-	FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( oButton.CommandName ).Execute( 0, e.offsetHeight - 1, e ) ; // -1 to be over the border
+	var oCommand = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( oButton.CommandName ) ;
+	var oPanel = oCommand._Panel ;
+	oPanel._FCKToolbarPanelButtonLineDiv.style.width = ( e.offsetWidth - 2 ) + 'px' ;
+	oCommand.Execute( 0, e.offsetHeight - 1, e ) ; // -1 to be over the border
 }
 
Index: /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarspecialcombo.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarspecialcombo.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarspecialcombo.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -33,4 +33,7 @@
 	this.SourceView			= false ;
 	this.ContextSensitive	= true ;
+	this.FieldWidth			= null ;
+	this.PanelWidth			= null ;
+	this.PanelMaxHeight		= null ;
 	//this._LastValue			= null ;
 }
@@ -99,5 +102,5 @@
 				{
 					this._LastValue = sValue ;
-					
+
 					if ( !sValue || sValue.length == 0 )
 					{
Index: /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarstylecombo.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarstylecombo.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fcktoolbarstylecombo.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -77,8 +77,8 @@
 
 		// Object type styles have no preview.
-		var caption = style.GetType() == FCK_STYLE_OBJECT ? 
-			styleName : 
+		var caption = style.GetType() == FCK_STYLE_OBJECT ?
+			styleName :
 			FCKToolbarStyleCombo_BuildPreview( style, style.Label || styleName ) ;
-	
+
 		var item = targetSpecialCombo.AddItem( styleName, caption ) ;
 
@@ -124,5 +124,5 @@
 	//	  for that element only.
 	//	- Select the styles that are active for the current selection.
-	
+
 	// Clear the current selection.
 	targetSpecialCombo.DeselectAll() ;
@@ -131,7 +131,7 @@
 	var path ;
 	var tagName ;
-	
+
 	var selection = FCK.ToolbarSet.CurrentInstance.Selection ;
-	
+
 	if ( selection.GetType() == 'Control' )
 	{
@@ -149,5 +149,5 @@
 		var item = targetSpecialCombo.Items[i] ;
 		var style = item.Style ;
-		
+
 		if ( ( tagName && style.Element == tagName ) || ( !tagName && style.GetType() != FCK_STYLE_OBJECT ) )
 		{
@@ -162,14 +162,14 @@
 }
 
-function FCKToolbarStyleCombo_BuildPreview( style, caption ) 
+function FCKToolbarStyleCombo_BuildPreview( style, caption )
 {
 	var styleType = style.GetType() ;
 	var html = [] ;
-	
+
 	if ( styleType == FCK_STYLE_BLOCK )
 		html.push( '<div class="BaseFont">' ) ;
-	
+
 	var elementName = style.Element ;
-	
+
 	// Avoid <bdo> in the preview.
 	if ( elementName == 'bdo' )
Index: /FCKeditor/releases/stable/editor/_source/classes/fckw3crange.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckw3crange.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckw3crange.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -262,17 +262,21 @@
 			// If the start container has children and the offset is pointing
 			// to a child, then we should start from its previous sibling.
-			if ( startNode.childNodes.length > 0 &&  startOffset <= startNode.childNodes.length - 1 )
-			{
-				// If the offset points to the first node, we don't have a
-				// sibling, so let's use the first one, but mark it for removal.
-				if ( startOffset == 0 )
-				{
-					// Let's create a temporary node and mark it for removal.
-					startNode = startNode.insertBefore( this._Document.createTextNode(''), startNode.firstChild ) ;
-					removeStartNode = true ;
-				}
-				else
-					startNode = startNode.childNodes[ startOffset ].previousSibling ;
-			}
+
+			// If the offset points to the first node, we don't have a
+			// sibling, so let's use the first one, but mark it for removal.
+			if ( startOffset == 0 )
+			{
+				// Let's create a temporary node and mark it for removal.
+				startNode = startNode.insertBefore( this._Document.createTextNode(''), startNode.firstChild ) ;
+				removeStartNode = true ;
+			}
+			else if ( startOffset > startNode.childNodes.length - 1 )
+			{
+				// Let's create a temporary node and mark it for removal.
+				startNode = startNode.appendChild( this._Document.createTextNode('') ) ;
+				removeStartNode = true ;
+			}
+			else
+				startNode = startNode.childNodes[ startOffset ].previousSibling ;
 		}
 
@@ -420,5 +424,5 @@
 			{
 				var endIndex = FCKDomTools.GetIndexOf( topEnd ) ;
-				
+
 				// If the start node is to be removed, we must correct the
 				// index to reflect the removal.
Index: /FCKeditor/releases/stable/editor/_source/classes/fckxml.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckxml.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckxml.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/classes/fckxml_gecko.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckxml_gecko.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckxml_gecko.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -27,26 +27,41 @@
 	{
 		this.Error = false ;
-		var oFCKXml = this ;
 
+		var oXml ;
 		var oXmlHttp = FCKTools.CreateXmlObject( 'XmlHttp' ) ;
-		oXmlHttp.open( "GET", urlToCall, false ) ;
+		oXmlHttp.open( 'GET', urlToCall, false ) ;
 		oXmlHttp.send( null ) ;
 
 		if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 )
-			this.DOMDocument = oXmlHttp.responseXML ;
+			oXml = oXmlHttp.responseXML ;
 		else if ( oXmlHttp.status == 0 && oXmlHttp.readyState == 4 )
-			this.DOMDocument = oXmlHttp.responseXML ;
+			oXml = oXmlHttp.responseXML ;
 		else
-			this.DOMDocument = null ;
+			oXml = null ;
 
-		if ( this.DOMDocument == null || this.DOMDocument.firstChild == null )
+		if ( oXml )
+		{
+			// Try to access something on it.
+			try
+			{
+				var test = oXml.firstChild ;
+			}
+			catch (e)
+			{
+				// If document.domain has been changed (#123), we'll have a security
+				// error at this point. The workaround here is parsing the responseText:
+				// http://alexander.kirk.at/2006/07/27/firefox-15-xmlhttprequest-reqresponsexml-and-documentdomain/
+				oXml = (new DOMParser()).parseFromString( oXmlHttp.responseText, 'text/xml' ) ;
+			}
+		}
+
+		if ( !oXml || !oXml.firstChild )
 		{
 			this.Error = true ;
-			if (window.confirm( 'Error loading "' + urlToCall + '"\r\nDo you want to see more info?' ) )
-				alert( 'URL requested: "' + urlToCall + '"\r\n' +
-							'Server response:\r\nStatus: ' + oXmlHttp.status + '\r\n' +
-							'Response text:\r\n' + oXmlHttp.responseText ) ;
+			if ( window.confirm( 'Error loading "' + urlToCall + '" (HTTP Status: ' + oXmlHttp.status + ').\r\nDo you want to see the server response dump?' ) )
+				alert( oXmlHttp.responseText ) ;
+		}
 
-		}
+		this.DOMDocument = oXml ;
 	},
 
Index: /FCKeditor/releases/stable/editor/_source/classes/fckxml_ie.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/classes/fckxml_ie.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/classes/fckxml_ie.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/commandclasses/fck_othercommands.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/commandclasses/fck_othercommands.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/commandclasses/fck_othercommands.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -24,5 +24,5 @@
 
 // ### General Dialog Box Commands.
-var FCKDialogCommand = function( name, title, url, width, height, getStateFunction, getStateParam )
+var FCKDialogCommand = function( name, title, url, width, height, getStateFunction, getStateParam, customValue )
 {
 	this.Name	= name ;
@@ -31,4 +31,5 @@
 	this.Width	= width ;
 	this.Height	= height ;
+	this.CustomValue = customValue ;
 
 	this.GetStateFunction	= getStateFunction ;
@@ -40,5 +41,5 @@
 FCKDialogCommand.prototype.Execute = function()
 {
-	FCKDialog.OpenDialog( 'FCKDialog_' + this.Name , this.Title, this.Url, this.Width, this.Height, null, null, this.Resizable ) ;
+	FCKDialog.OpenDialog( 'FCKDialog_' + this.Name , this.Title, this.Url, this.Width, this.Height, this.CustomValue, null, this.Resizable ) ;
 }
 
@@ -48,5 +49,5 @@
 		return this.GetStateFunction( this.GetStateParam ) ;
 	else
-		return FCK_TRISTATE_OFF ;
+		return FCK.EditMode == FCK_EDITMODE_WYSIWYG ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
 }
 
@@ -72,10 +73,10 @@
 {}
 
-FCKFormatBlockCommand.prototype = 
+FCKFormatBlockCommand.prototype =
 {
 	Name : 'FormatBlock',
-	
+
 	Execute : FCKStyleCommand.prototype.Execute,
-	
+
 	GetState : function()
 	{
@@ -89,5 +90,5 @@
 {}
 
-FCKFontNameCommand.prototype = 
+FCKFontNameCommand.prototype =
 {
 	Name		: 'FontName',
@@ -100,5 +101,5 @@
 {}
 
-FCKFontSizeCommand.prototype = 
+FCKFontSizeCommand.prototype =
 {
 	Name		: 'FontSize',
@@ -210,4 +211,6 @@
 FCKUndoCommand.prototype.GetState = function()
 {
+	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
+		return FCK_TRISTATE_DISABLED ;
 	return ( FCKUndo.CheckUndoState() ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ) ;
 }
@@ -226,4 +229,6 @@
 FCKRedoCommand.prototype.GetState = function()
 {
+	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
+		return FCK_TRISTATE_DISABLED ;
 	return ( FCKUndo.CheckRedoState() ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ) ;
 }
@@ -253,8 +258,5 @@
 	oRange.MoveToSelection() ;
 	var oSplitInfo = oRange.SplitBlock() ;
-	if ( oSplitInfo.NextBlock )
-		oSplitInfo.NextBlock.parentNode.insertBefore( oFakeImage, oSplitInfo.NextBlock ) ;
-	else
-		oSplitInfo.PreviousBlock.parentNode.insertBefore( oFakeImage, oSplitInfo.PreviousBlock.nextSibling ) ;
+	oRange.InsertNode( oFakeImage ) ;
 
 	FCK.Events.FireEvent( 'OnSelectionChange' ) ;
@@ -263,4 +265,6 @@
 FCKPageBreakCommand.prototype.GetState = function()
 {
+	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
+		return FCK_TRISTATE_DISABLED ;
 	return 0 ; // FCK_TRISTATE_OFF
 }
@@ -286,5 +290,5 @@
 		return ;
 	}
-	
+
 	FCK.ExecuteNamedCommand( this.Name ) ;
 }
@@ -292,4 +296,6 @@
 FCKUnlinkCommand.prototype.GetState = function()
 {
+	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
+		return FCK_TRISTATE_DISABLED ;
 	var state = FCK.GetNamedCommandState( this.Name ) ;
 
@@ -337,4 +343,6 @@
 FCKSelectAllCommand.prototype.GetState = function()
 {
+	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
+		return FCK_TRISTATE_DISABLED ;
 	return FCK_TRISTATE_OFF ;
 }
@@ -358,4 +366,6 @@
 	GetState : function()
 	{
+		if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
+			return FCK_TRISTATE_DISABLED ;
 		return FCK.GetNamedCommandState( 'Paste' ) ;
 	}
@@ -378,25 +388,61 @@
 	GetState : function()
 	{
+		if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
+			return FCK_TRISTATE_DISABLED ;
 		return FCK.GetNamedCommandState( 'InsertHorizontalRule' ) ;
 	}
 } ;
 
-// FCKCopyCommand
-var FCKCopyCommand = function()
-{
-	this.Name = 'Copy' ;
-}
-
-FCKCopyCommand.prototype = 
+// FCKCutCopyCommand
+var FCKCutCopyCommand = function( isCut )
+{
+	this.Name = isCut ? 'Cut' : 'Copy' ;
+}
+
+FCKCutCopyCommand.prototype =
 {
 	Execute : function()
 	{
-		FCK.ExecuteNamedCommand( this.Name ) ;
+		var enabled = false ;
+
+		if ( FCKBrowserInfo.IsIE )
+		{
+			// The following seems to be the only reliable way to detect that
+			// cut/copy is enabled in IE. It will fire the oncut/oncopy event
+			// only if the security settings enabled the command to execute.
+
+			var onEvent = function()
+			{
+				enabled = true ;
+			} ;
+
+			var eventName = 'on' + this.Name.toLowerCase() ;
+
+			FCK.EditorDocument.body.attachEvent( eventName, onEvent ) ;
+			FCK.ExecuteNamedCommand( this.Name ) ;
+			FCK.EditorDocument.body.detachEvent( eventName, onEvent ) ;
+		}
+		else
+		{
+			try
+			{
+				// Other browsers throw an error if the command is disabled.
+				FCK.ExecuteNamedCommand( this.Name ) ;
+				enabled = true ;
+			}
+			catch(e){}
+		}
+
+		if ( !enabled )
+			alert( FCKLang[ 'PasteError' + this.Name ] ) ;
 	},
 
 	GetState : function()
 	{
-		// Strangely, the cut command happens to have the correct states for both Copy and Cut in all browsers.
-		return FCK.GetNamedCommandState( 'Cut' ) ;
+		// Strangely, the Cut command happens to have the correct states for
+		// both Copy and Cut in all browsers.
+		return FCK.EditMode != FCK_EDITMODE_WYSIWYG ?
+				FCK_TRISTATE_DISABLED :
+				FCK.GetNamedCommandState( 'Cut' ) ;
 	}
 };
@@ -407,5 +453,5 @@
 }
 
-FCKAnchorDeleteCommand.prototype = 
+FCKAnchorDeleteCommand.prototype =
 {
 	Execute : function()
@@ -466,4 +512,6 @@
 	GetState : function()
 	{
+		if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
+			return FCK_TRISTATE_DISABLED ;
 		return FCK.GetNamedCommandState( 'Unlink') ;
 	}
Index: /FCKeditor/releases/stable/editor/_source/commandclasses/fckblockquotecommand.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/commandclasses/fckblockquotecommand.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/commandclasses/fckblockquotecommand.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -26,5 +26,5 @@
 }
 
-FCKBlockQuoteCommand.prototype = 
+FCKBlockQuoteCommand.prototype =
 {
 	Execute : function()
@@ -46,8 +46,8 @@
 			var bStart	= range.GetBookmarkNode( bookmark, true ) ;
 			var bEnd	= range.GetBookmarkNode( bookmark, false ) ;
-			
+
 			var cursor ;
-			
-			if ( bStart 
+
+			if ( bStart
 					&& bStart.parentNode.nodeName.IEquals( 'blockquote' )
 					&& !bStart.previousSibling )
@@ -61,5 +61,5 @@
 			}
 
-			if ( bEnd 
+			if ( bEnd
 					&& bEnd.parentNode.nodeName.IEquals( 'blockquote' )
 					&& !bEnd.previousSibling )
@@ -127,5 +127,5 @@
 				if ( block.nodeName.IEquals( 'blockquote' ) )
 				{
-					var docFrag = block.ownerDocument.createDocumentFragment() ;
+					var docFrag = FCKTools.GetElementDocument( block ).createDocumentFragment() ;
 					while ( block.firstChild )
 					{
@@ -204,15 +204,15 @@
 					if ( node.nodeName.IEquals( 'div' ) )
 					{
-						var docFrag = node.ownerDocument.createDocumentFragment() ;
-						var needBeginBr = firstTime && node.previousSibling && 
+						var docFrag = FCKTools.GetElementDocument( node ).createDocumentFragment() ;
+						var needBeginBr = firstTime && node.previousSibling &&
 							!FCKListsLib.BlockBoundaries[node.previousSibling.nodeName.toLowerCase()] ;
 						if ( firstTime && needBeginBr )
-							docFrag.appendChild( node.ownerDocument.createElement( 'br' ) ) ;
-						var needEndBr = node.nextSibling && 
+							docFrag.appendChild( FCKTools.GetElementDocument( node ).createElement( 'br' ) ) ;
+						var needEndBr = node.nextSibling &&
 							!FCKListsLib.BlockBoundaries[node.nextSibling.nodeName.toLowerCase()] ;
 						while ( node.firstChild )
 							docFrag.appendChild( node.removeChild( node.firstChild ) ) ;
 						if ( needEndBr )
-							docFrag.appendChild( node.ownerDocument.createElement( 'br' ) ) ;
+							docFrag.appendChild( FCKTools.GetElementDocument( node ).createElement( 'br' ) ) ;
 						node.parentNode.replaceChild( docFrag, node ) ;
 						firstTime = false ;
Index: /FCKeditor/releases/stable/editor/_source/commandclasses/fckcorestylecommand.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/commandclasses/fckcorestylecommand.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/commandclasses/fckcorestylecommand.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -50,4 +50,6 @@
 	GetState : function()
 	{
+		if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
+			return FCK_TRISTATE_DISABLED ;
 		return this.IsActive ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF ;
 	},
Index: /FCKeditor/releases/stable/editor/_source/commandclasses/fckfitwindow.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/commandclasses/fckfitwindow.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/commandclasses/fckfitwindow.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -156,5 +156,5 @@
 	//also lost, even if you comment the following line (MakeEditable).
 	// if ( FCKBrowserInfo.IsGecko10 )	// Initially I thought it was a FF 1.0 only problem.
-	if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG ) 
+	if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
 		FCK.EditingArea.MakeEditable() ;
 
Index: /FCKeditor/releases/stable/editor/_source/commandclasses/fckindentcommands.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/commandclasses/fckindentcommands.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/commandclasses/fckindentcommands.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -58,6 +58,6 @@
 		// If we're in a list, then the indent/outdent operations would be done on the list nodes.
 		// Otherwise, apply the operation on the nearest block nodes.
-		var nearestListBlock = FCKDomTools.GetCommonParentNode( range.StartNode || range.StartContainer , 
-				range.EndNode || range.EndContainer, 
+		var nearestListBlock = FCKDomTools.GetCommonParentNode( range.StartNode || range.StartContainer ,
+				range.EndNode || range.EndContainer,
 				['ul', 'ol'] ) ;
 		if ( nearestListBlock )
@@ -134,4 +134,6 @@
 	{
 		var iterator = new FCKDomRangeIterator( range ) ;
+		iterator.EnforceRealBlocks = true ;
+
 		range.Expand( 'block_contents' ) ;
 		var commonParents = FCKDomTools.GetCommonParents( range.StartContainer, range.EndContainer ) ;
Index: /FCKeditor/releases/stable/editor/_source/commandclasses/fckjustifycommands.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/commandclasses/fckjustifycommands.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/commandclasses/fckjustifycommands.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -40,11 +40,11 @@
 			{
 				case 'left' :
-					return classes[0] ;
+					return classes[0] || null ;
 				case 'center' :
-					return classes[1] ;
+					return classes[1] || null ;
 				case 'right' :
-					return classes[2] ;
+					return classes[2] || null ;
 				case 'justify' :
-					return classes[3] ;
+					return classes[3] || null ;
 			}
 		}
@@ -100,5 +100,5 @@
 		// change the DOM tree and break selections.
 		var bookmark = range.CreateBookmark() ;
-		
+
 		var cssClassName = this._CssClassName ;
 
Index: /FCKeditor/releases/stable/editor/_source/commandclasses/fcklistcommands.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/commandclasses/fcklistcommands.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/commandclasses/fcklistcommands.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -146,5 +146,5 @@
 				{
 					rangeQueue = [] ;
-					var selectionObject = FCK.EditorWindow.getSelection() ;
+					var selectionObject = FCKSelection.GetSelection() ;
 					if ( selectionObject && listGroups.length == 0 )
 						rangeQueue.push( selectionObject.getRangeAt( 0 ) ) ;
@@ -253,5 +253,5 @@
 			FCKDomTools.SetElementMarker( markerObj, itemNode, '_FCK_ListItem_Processed', true ) ;
 		}
-		var fakeParent = groupObj.root.ownerDocument.createElement( this.TagName ) ;
+		var fakeParent = FCKTools.GetElementDocument( groupObj.root ).createElement( this.TagName ) ;
 		for ( var i = 0 ; i < selectedListItems.length ; i++ )
 		{
@@ -271,5 +271,5 @@
 	{
 		var contents = groupObj.contents ;
-		var doc = groupObj.root.ownerDocument ;
+		var doc = FCKTools.GetElementDocument( groupObj.root ) ;
 		var listContents = [] ;
 
Index: /FCKeditor/releases/stable/editor/_source/commandclasses/fcknamedcommand.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/commandclasses/fcknamedcommand.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/commandclasses/fcknamedcommand.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -34,4 +34,6 @@
 FCKNamedCommand.prototype.GetState = function()
 {
+	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
+		return FCK_TRISTATE_DISABLED ;
 	return FCK.GetNamedCommandState( this.Name ) ;
 }
Index: /FCKeditor/releases/stable/editor/_source/commandclasses/fckpasteplaintextcommand.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/commandclasses/fckpasteplaintextcommand.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/commandclasses/fckpasteplaintextcommand.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -35,4 +35,6 @@
 FCKPastePlainTextCommand.prototype.GetState = function()
 {
+	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
+		return FCK_TRISTATE_DISABLED ;
 	return FCK.GetNamedCommandState( 'Paste' ) ;
 }
Index: /FCKeditor/releases/stable/editor/_source/commandclasses/fckpastewordcommand.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/commandclasses/fckpastewordcommand.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/commandclasses/fckpastewordcommand.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -34,5 +34,5 @@
 FCKPasteWordCommand.prototype.GetState = function()
 {
-	if ( FCKConfig.ForcePasteAsPlainText )
+	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG || FCKConfig.ForcePasteAsPlainText )
 		return FCK_TRISTATE_DISABLED ;
 	else
Index: /FCKeditor/releases/stable/editor/_source/commandclasses/fckremoveformatcommand.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/commandclasses/fckremoveformatcommand.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/commandclasses/fckremoveformatcommand.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/commandclasses/fckshowblocks.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/commandclasses/fckshowblocks.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/commandclasses/fckshowblocks.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/commandclasses/fckspellcheckcommand_gecko.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/commandclasses/fckspellcheckcommand_gecko.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/commandclasses/fckspellcheckcommand_gecko.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -36,4 +36,6 @@
 FCKSpellCheckCommand.prototype.GetState = function()
 {
+	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
+		return FCK_TRISTATE_DISABLED ;
 	return this.IsEnabled ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
 }
Index: /FCKeditor/releases/stable/editor/_source/commandclasses/fckspellcheckcommand_ie.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/commandclasses/fckspellcheckcommand_ie.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/commandclasses/fckspellcheckcommand_ie.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -64,4 +64,6 @@
 FCKSpellCheckCommand.prototype.GetState = function()
 {
+	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
+		return FCK_TRISTATE_DISABLED ;
 	return this.IsEnabled ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
 }
Index: /FCKeditor/releases/stable/editor/_source/commandclasses/fckstylecommand.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/commandclasses/fckstylecommand.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/commandclasses/fckstylecommand.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -28,5 +28,5 @@
 {
 	Name : 'Style',
-	
+
 	Execute : function( styleName, styleComboItem )
 	{
@@ -46,5 +46,5 @@
 	GetState : function()
 	{
-		if ( !FCK.EditorDocument )
+		if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG || !FCK.EditorDocument )
 			return FCK_TRISTATE_DISABLED ;
 
Index: /FCKeditor/releases/stable/editor/_source/commandclasses/fcktablecommand.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/commandclasses/fcktablecommand.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/commandclasses/fcktablecommand.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -36,5 +36,5 @@
 		switch ( this.Name )
 		{
-			case 'TableMergeRight' : 
+			case 'TableMergeRight' :
 				return FCKTableHandler.MergeRight() ;
 			case 'TableMergeDown' :
@@ -89,5 +89,5 @@
 					return FCK_TRISTATE_DISABLED ;
 			case 'TableMergeCells' :
-				if ( FCKTableHandler.CheckIsSelectionRectangular() 
+				if ( FCKTableHandler.CheckIsSelectionRectangular()
 						&& FCKTableHandler.GetSelectedCells().length > 1 )
 					return FCK_TRISTATE_OFF ;
@@ -103,4 +103,4 @@
 	}
 	else
-		return FCK_TRISTATE_DISABLED; 
+		return FCK_TRISTATE_DISABLED;
 }
Index: /FCKeditor/releases/stable/editor/_source/commandclasses/fcktextcolorcommand.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/commandclasses/fcktextcolorcommand.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/commandclasses/fcktextcolorcommand.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -40,7 +40,8 @@
 
 	this._Panel = new FCKPanel( oWindow ) ;
-	this._Panel.AppendStyleSheet( FCKConfig.SkinPath + 'fck_editor.css' ) ;
+	this._Panel.AppendStyleSheet( FCKConfig.SkinEditorCSS ) ;
 	this._Panel.MainNode.className = 'FCK_Panel' ;
 	this._CreatePanelBody( this._Panel.Document, this._Panel.MainNode ) ;
+	FCK.ToolbarSet.ToolbarItems.GetItem( this.Name ).RegisterPanel( this._Panel ) ;
 
 	FCKTools.DisableSelection( this._Panel.Document.body ) ;
@@ -76,4 +77,6 @@
 FCKTextColorCommand.prototype.GetState = function()
 {
+	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
+		return FCK_TRISTATE_DISABLED ;
 	return FCK_TRISTATE_OFF ;
 }
@@ -107,5 +110,6 @@
 	this.className = 'ColorDeselected' ;
 	command._Panel.Hide() ;
-	FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, FCKTools.Hitch(command, 'SetColor') ) ;
+	FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320,
+			FCKTools.Bind( command, command.SetColor ) ) ;
 }
 
Index: /FCKeditor/releases/stable/editor/_source/fckconstants.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/fckconstants.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/fckconstants.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/fckeditorapi.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/fckeditorapi.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/fckeditorapi.js	(revision 1902)
@@ -1,5 +1,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -36,23 +36,23 @@
 		// from a freed script" error).
 
-		// Note: we check the existence of oEditor.GetParentForm because some external 
-		// code (like JSON) can extend the Object prototype and we get then extra oEditor 
+		// Note: we check the existence of oEditor.GetParentForm because some external
+		// code (like JSON) can extend the Object prototype and we get then extra oEditor
 		// objects that aren't really FCKeditor instances.
 		var sScript =
-			'var FCKeditorAPI = {' +
-				'Version : "2.5.1",' +
-				'VersionBuild : "17566",' +
-				'__Instances : new Object(),' +
+			'window.FCKeditorAPI = {' +
+				'Version : "2.6",' +
+				'VersionBuild : "18638",' +
+				'Instances : new Object(),' +
 
 				'GetInstance : function( name )' +
 				'{' +
-					'return this.__Instances[ name ];' +
+					'return this.Instances[ name ];' +
 				'},' +
 
 				'_FormSubmit : function()' +
 				'{' +
-					'for ( var name in FCKeditorAPI.__Instances )' +
+					'for ( var name in FCKeditorAPI.Instances )' +
 					'{' +
-						'var oEditor = FCKeditorAPI.__Instances[ name ] ;' +
+						'var oEditor = FCKeditorAPI.Instances[ name ] ;' +
 						'if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )' +
 							'oEditor.UpdateLinkedField() ;' +
@@ -112,4 +112,8 @@
 				eval.call( oParentWindow, sScript ) ;
 			}
+			else if( FCKBrowserInfo.IsAIR )
+			{
+				FCKAdobeAIR.FCKeditorAPI_Evaluate( oParentWindow, sScript ) ;
+			}
 			else if ( FCKBrowserInfo.IsSafari || FCKBrowserInfo.IsGecko19 )
 			{
@@ -126,8 +130,12 @@
 
 		FCKeditorAPI = oParentWindow.FCKeditorAPI ;
+
+		// The __Instances properly has been changed to the public Instances,
+		// but we should still have the "deprecated" version of it.
+		FCKeditorAPI.__Instances = FCKeditorAPI.Instances ;
 	}
 
 	// Add the current instance to the FCKeditorAPI's instances collection.
-	FCKeditorAPI.__Instances[ FCK.Name ] = FCK ;
+	FCKeditorAPI.Instances[ FCK.Name ] = FCK ;
 }
 
@@ -159,5 +167,5 @@
 	if ( ! window.FCKUnloadFlag )
 		return ;
-	delete FCKeditorAPI.__Instances[ FCK.Name ] ;
+	delete FCKeditorAPI.Instances[ FCK.Name ] ;
 }
 function FCKeditorAPI_ConfirmCleanup()
@@ -165,4 +173,4 @@
 	window.FCKUnloadFlag = true ;
 }
-FCKTools.AddEventListener( window, 'unload', FCKeditorAPI_Cleanup ) ;	
+FCKTools.AddEventListener( window, 'unload', FCKeditorAPI_Cleanup ) ;
 FCKTools.AddEventListener( window, 'beforeunload', FCKeditorAPI_ConfirmCleanup) ;
Index: /FCKeditor/releases/stable/editor/_source/fckjscoreextensions.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/fckjscoreextensions.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/fckjscoreextensions.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -139,8 +139,8 @@
 	if ( typeof replacement == 'function' )
 	{
-		return this.replace( regExp, 
-			function() 
-			{ 
-				return replacement.apply( thisObj || this, arguments ) ; 
+		return this.replace( regExp,
+			function()
+			{
+				return replacement.apply( thisObj || this, arguments ) ;
 			} ) ;
 	}
Index: /FCKeditor/releases/stable/editor/_source/fckscriptloader.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/fckscriptloader.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/fckscriptloader.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -41,4 +41,6 @@
 		return ;
 
+	FCKScriptLoader._LoadedScripts[ scriptName ] = true ;
+
 	var oScriptInfo = this._Scripts[ scriptName ] ;
 
@@ -66,6 +68,4 @@
 			this._LoadScript( sBaseScriptName + '_gecko.js' ) ;
 	}
-
-	FCKScriptLoader._LoadedScripts[ scriptName ] = true ;
 }
 
@@ -111,5 +111,5 @@
 FCKScriptLoader.AddScript( 'FCKConfig'			, 'internals/'	, ['FCKBrowserInfo','FCKConstants'] ) ;
 FCKScriptLoader.AddScript( 'FCKDebug'			, 'internals/'	, ['FCKConfig'] ) ;
-FCKScriptLoader.AddScript( 'FCKDomTools'		, 'internals/'	, ['FCKJSCoreExtensions','FCKBrowserInfo','FCKTools'], FCK_GENERIC ) ;
+FCKScriptLoader.AddScript( 'FCKDomTools'		, 'internals/'	, ['FCKJSCoreExtensions','FCKBrowserInfo','FCKTools','FCKDomRange'], FCK_GENERIC ) ;
 FCKScriptLoader.AddScript( 'FCKListsLib'		, 'internals/' ) ;
 FCKScriptLoader.AddScript( 'FCKListHandler'		, 'internals/'	, ['FCKConfig', 'FCKDocumentFragment', 'FCKJSCoreExtensions','FCKDomTools'], FCK_GENERIC ) ;
Index: /FCKeditor/releases/stable/editor/_source/internals/fck.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fck.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fck.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -33,4 +33,13 @@
 	DataProcessor	: new FCKDataProcessor(),
 
+	GetInstanceObject	: (function()
+	{
+		var w = window ;
+		return function( name )
+		{
+			return w[name] ;
+		}
+	})(),
+
 	AttachToOnSelectionChange : function( functionPointer )
 	{
@@ -177,5 +186,7 @@
 				// Element Node.
 				case 1 :
-					if ( !FCKListsLib.BlockElements[ oNode.nodeName.toLowerCase() ] && 
+					var nodeName = oNode.nodeName.toLowerCase() ;
+					if ( !FCKListsLib.BlockElements[ nodeName ] &&
+							nodeName != 'li' &&
 							!oNode.getAttribute('_fckfakelement') &&
 							oNode.getAttribute('_moz_dirty') == null )
@@ -271,7 +282,21 @@
 	OnDoubleClick : function( element )
 	{
-		var oHandler = FCK.RegisteredDoubleClickHandlers[ element.tagName ] ;
-		if ( oHandler )
-			oHandler( element ) ;
+		var oCalls = FCK.RegisteredDoubleClickHandlers[ element.tagName.toUpperCase() ] ;
+
+		if ( oCalls )
+		{
+			for ( var i = 0 ; i < oCalls.length ; i++ )
+				oCalls[ i ]( element ) ;
+		}
+
+		// Generic handler for any element
+		oCalls = FCK.RegisteredDoubleClickHandlers[ '*' ] ;
+
+		if ( oCalls )
+		{
+			for ( var i = 0 ; i < oCalls.length ; i++ )
+				oCalls[ i ]( element ) ;
+		}
+
 	},
 
@@ -279,5 +304,19 @@
 	RegisterDoubleClickHandler : function( handlerFunction, tag )
 	{
-		FCK.RegisteredDoubleClickHandlers[ tag.toUpperCase() ] = handlerFunction ;
+		var nodeName = tag || '*' ;
+		nodeName = nodeName.toUpperCase() ;
+
+		var aTargets ;
+
+		if ( !( aTargets = FCK.RegisteredDoubleClickHandlers[ nodeName ] ) )
+			FCK.RegisteredDoubleClickHandlers[ nodeName ] = [ handlerFunction ] ;
+		else
+		{
+			// Check that the event handler isn't already registered with the same listener
+			// It doesn't detect function pointers belonging to an object (at least in Gecko)
+			if ( aTargets.IndexOf( handlerFunction ) == -1 )
+				aTargets.push( handlerFunction ) ;
+		}
+
 	},
 
@@ -325,5 +364,5 @@
 		// IE doesn't support <abbr> and it breaks it. Let's protect it.
 		if ( FCKBrowserInfo.IsIE )
-			sTags += sTags.length > 0 ? '|ABBR|XML|EMBED' : 'ABBR|XML|EMBED' ;
+			sTags += sTags.length > 0 ? '|ABBR|XML|EMBED|OBJECT' : 'ABBR|XML|EMBED|OBJECT' ;
 
 		var oRegex ;
@@ -361,5 +400,5 @@
 		if ( FCKBrowserInfo.IsIE && FCK.EditorDocument )
 		{
-				FCK.EditorDocument.detachEvent("onselectionchange", Doc_OnSelectionChange ) ;
+			FCK.EditorDocument.detachEvent("onselectionchange", Doc_OnSelectionChange ) ;
 		}
 
@@ -401,7 +440,7 @@
 				sHeadExtra += FCK._GetBehaviorsStyle() ;
 			else if ( FCKConfig.ShowBorders )
-				sHeadExtra += '<link href="' + FCKConfig.FullBasePath + 'css/fck_showtableborders_gecko.css" rel="stylesheet" type="text/css" _fcktemp="true" />' ;
-
-			sHeadExtra += '<link href="' + FCKConfig.FullBasePath + 'css/fck_internal.css" rel="stylesheet" type="text/css" _fcktemp="true" />' ;
+				sHeadExtra += FCKTools.GetStyleHtml( FCK_ShowTableBordersCSS, true ) ;
+
+			sHeadExtra += FCKTools.GetStyleHtml( FCK_InternalCSS, true ) ;
 
 			// Attention: do not change it before testing it well (sample07)!
@@ -446,8 +485,4 @@
 			window.onresize() ;
 	},
-
-	// For the FocusManager
-	HasFocus : false,
-
 
 	// This collection is used by the browser specific implementations to tell
@@ -529,9 +564,4 @@
 	Preview : function()
 	{
-		var iWidth	= FCKConfig.ScreenWidth * 0.8 ;
-		var iHeight	= FCKConfig.ScreenHeight * 0.7 ;
-		var iLeft	= ( FCKConfig.ScreenWidth - iWidth ) / 2 ;
-		var oWindow = window.open( '', null, 'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width=' + iWidth + ',height=' + iHeight + ',left=' + iLeft ) ;
-
 		var sHTML ;
 
@@ -557,6 +587,29 @@
 		}
 
-		oWindow.document.write( sHTML );
-		oWindow.document.close();
+		var iWidth	= FCKConfig.ScreenWidth * 0.8 ;
+		var iHeight	= FCKConfig.ScreenHeight * 0.7 ;
+		var iLeft	= ( FCKConfig.ScreenWidth - iWidth ) / 2 ;
+
+		var sOpenUrl = '' ;
+		if ( FCK_IS_CUSTOM_DOMAIN && FCKBrowserInfo.IsIE)
+		{
+			window._FCKHtmlToLoad = sHTML ;
+			sOpenUrl = 'javascript:void( (function(){' +
+				'document.open() ;' +
+				'document.domain="' + document.domain + '" ;' +
+				'document.write( window.opener._FCKHtmlToLoad );' +
+				'document.close() ;' +
+				'window.opener._FCKHtmlToLoad = null ;' +
+				'})() )' ;
+		}
+
+		var oWindow = window.open( sOpenUrl, null, 'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width=' + iWidth + ',height=' + iHeight + ',left=' + iLeft ) ;
+
+		if ( !FCK_IS_CUSTOM_DOMAIN || !FCKBrowserInfo.IsIE)
+		{
+			oWindow.document.write( sHTML );
+			oWindow.document.close();
+		}
+
 	},
 
@@ -606,4 +659,6 @@
 		var elementName = element.nodeName.toLowerCase() ;
 
+		FCKSelection.Restore() ;
+
 		// Create a range for the selection. V3 will have a new selection
 		// object that may internally supply this feature.
@@ -615,5 +670,5 @@
 			range.InsertNode( element ) ;
 
-			var next = FCKDomTools.GetNextSourceElement( element, false, null, [ 'hr','br','param','img','area','input' ] ) ;
+			var next = FCKDomTools.GetNextSourceElement( element, false, null, [ 'hr','br','param','img','area','input' ], true ) ;
 
 			// Be sure that we have something after the new element, so we can move the cursor there.
@@ -809,5 +864,5 @@
 		// Prevent the caret from going between the body and the padding node in Firefox.
 		// i.e. <body>|<p></p></body>
-		var sel = FCK.EditorWindow.getSelection() ;
+		var sel = FCKSelection.GetSelection() ;
 		if ( sel && sel.rangeCount == 1 )
 		{
@@ -830,5 +885,5 @@
 		if ( parentElement && parentElement.nodeName.IEquals( 'body' ) )
 		{
-			if ( FCK.EditorDocument.body.childNodes.length == 1 
+			if ( FCK.EditorDocument.body.childNodes.length == 1
 					&& FCK.EditorDocument.body.firstChild == paddingNode )
 			{
@@ -837,5 +892,5 @@
 				if ( !paddingNode.childNodes.firstChild )
 				{
-					paddingNode.appendChild( paddingNode.ownerDocument.createTextNode( '\ufeff' ) ) ;
+					paddingNode.appendChild( FCKTools.GetElementDocument( paddingNode ).createTextNode( '\ufeff' ) ) ;
 					clearContents = true ;
 				}
@@ -911,7 +966,4 @@
 		return ;
 
-	if ( FCKConfig.Debug )
-		FCKDebug._GetWindow() ;
-
 	FCK.SetStatus( FCK_STATUS_ACTIVE ) ;
 }
@@ -919,15 +971,6 @@
 function _FCK_GetEditorAreaStyleTags()
 {
-	var sTags = '' ;
-	var aCSSs = FCKConfig.EditorAreaCSS ;
-	var sStyles = FCKConfig.EditorAreaStyles ;
-
-	for ( var i = 0 ; i < aCSSs.length ; i++ )
-		sTags += '<link href="' + aCSSs[i] + '" rel="stylesheet" type="text/css" />' ;
-
-	if ( sStyles && sStyles.length > 0 )
-		sTags += "<style>" + sStyles + "</style>" ;
-
-	return sTags ;
+	return FCKTools.GetStyleHtml( FCKConfig.EditorAreaCSS ) +
+		FCKTools.GetStyleHtml( FCKConfig.EditorAreaStyles ) ;
 }
 
@@ -959,4 +1002,9 @@
 	// be cancelled. Let's do that only if the Execute() call explicitly returns "false".
 	var oCommand = FCK.Commands.GetCommand( keystrokeValue ) ;
+
+	// If the command is disabled then ignore the keystroke
+	if ( oCommand.GetState() == FCK_TRISTATE_DISABLED )
+		return false ;
+
 	return ( oCommand.Execute.apply( oCommand, FCKTools.ArgumentsToArray( arguments, 2 ) ) !== false ) ;
 }
@@ -1098,6 +1146,20 @@
 function FCKFocusManager_Win_OnFocus_Area()
 {
+	// Check if we are already focusing the editor (to avoid loops).
+	if ( FCKFocusManager._IsFocusing )
+		return ;
+
+	FCKFocusManager._IsFocusing = true ;
+
 	FCK.Focus() ;
 	FCKFocusManager_Win_OnFocus() ;
+
+	// The above FCK.Focus() call may trigger other focus related functions.
+	// So, to avoid a loop, we delay the focusing mark removal, so it get
+	// executed after all othre functions have been run.
+	FCKTools.RunFunction( function()
+		{
+			delete FCKFocusManager._IsFocusing ;
+		} ) ;
 }
 
@@ -1112,3 +1174,2 @@
 	}
 }
-
Index: /FCKeditor/releases/stable/editor/_source/internals/fck_contextmenu.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fck_contextmenu.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fck_contextmenu.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -71,5 +71,5 @@
 					menu.AddSeparator() ;
 					var oItem = menu.AddItem( 'Cell'	, FCKLang.CellCM ) ;
-					oItem.AddItem( 'TableInsertCellBefore'	, FCKLang.InsertCellBefore, 69 ) ; 
+					oItem.AddItem( 'TableInsertCellBefore'	, FCKLang.InsertCellBefore, 69 ) ;
 					oItem.AddItem( 'TableInsertCellAfter'	, FCKLang.InsertCellAfter, 58 ) ;
 					oItem.AddItem( 'TableDeleteCells'	, FCKLang.DeleteCells, 59 ) ;
@@ -79,5 +79,5 @@
 					else
 					{
-						oItem.AddItem( 'TableMergeRight'	, FCKLang.MergeRight, 60, 
+						oItem.AddItem( 'TableMergeRight'	, FCKLang.MergeRight, 60,
 							FCKCommands.GetCommand( 'TableMergeRight' ).GetState() == FCK_TRISTATE_DISABLED ) ;
 						oItem.AddItem( 'TableMergeDown'		, FCKLang.MergeDown, 60,
@@ -322,4 +322,4 @@
 {
 	FCK.Focus() ;
-	FCKCommands.GetCommand( item.Name ).Execute() ;
-}
+	FCKCommands.GetCommand( item.Name ).Execute( item.CustomData ) ;
+}
Index: /FCKeditor/releases/stable/editor/_source/internals/fck_gecko.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fck_gecko.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fck_gecko.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -29,6 +29,6 @@
 {
 	// When calling "SetData", the editing area IFRAME gets a fixed height. So we must recalculate it.
-	if ( FCKBrowserInfo.IsGecko )		// Not for Safari/Opera.
-		Window_OnResize() ;
+	if ( window.onresize )		// Not for Safari/Opera.
+		window.onresize() ;
 
 	FCKFocusManager.AddWindow( this.EditorWindow ) ;
@@ -46,4 +46,5 @@
 			return ;
 		}
+
 		if ( FCKConfig.ForcePasteAsPlainText )
 		{
@@ -57,9 +58,8 @@
 			else if ( FCKConfig.ShowDropDialog )
 				FCK.PasteAsPlainText() ;
-		}
-		else if ( FCKConfig.ShowDropDialog )
-			FCKDialog.OpenDialog( 'FCKDialog_Paste', FCKLang.Paste, 'dialog/fck_paste.html', 400, 330, 'Security' ) ;
-		evt.preventDefault() ;
-		evt.stopPropagation() ;
+
+			evt.preventDefault() ;
+			evt.stopPropagation() ;
+		}
 	}
 
@@ -89,5 +89,5 @@
 		var moveCursor = function()
 		{
-			var selection = FCK.EditorWindow.getSelection() ;
+			var selection = FCKSelection.GetSelection() ;
 			var range = selection.getRangeAt(0) ;
 			if ( ! range || ! range.collapsed )
@@ -105,5 +105,5 @@
 			// only perform the patched behavior if we're in an <a> tag, or the End key is pressed.
 			var parentTag = node.parentNode.tagName.toLowerCase() ;
-			if ( ! (  parentTag == 'a' ||
+			if ( ! (  parentTag == 'a' || String(node.parentNode.contentEditable) == 'false' ||
 					( ! ( FCKListsLib.BlockElements[parentTag] || FCKListsLib.NonEmptyBlockElements[parentTag] )
 					  && keyCode == 35 ) ) )
@@ -173,5 +173,5 @@
 
 						var stopTag = stopNode.tagName.toLowerCase() ;
-						if ( FCKListsLib.BlockElements[stopTag] || FCKListsLib.EmptyElements[stopTag] 
+						if ( FCKListsLib.BlockElements[stopTag] || FCKListsLib.EmptyElements[stopTag]
 							|| FCKListsLib.NonEmptyBlockElements[stopTag] )
 							break ;
@@ -302,8 +302,5 @@
 {
 	Print	: true,
-	Paste	: true,
-
-	Cut	: true,
-	Copy	: true
+	Paste	: true
 } ;
 
@@ -328,12 +325,4 @@
 			catch (e)	{ FCKDialog.OpenDialog( 'FCKDialog_Paste', FCKLang.Paste, 'dialog/fck_paste.html', 400, 330, 'Security' ) ; }
 			break ;
-		case 'Cut' :
-			try			{ FCK.ExecuteNamedCommand( 'Cut', null, true ) ; }
-			catch (e)	{ alert(FCKLang.PasteErrorCut) ; }
-			break ;
-		case 'Copy' :
-			try			{ FCK.ExecuteNamedCommand( 'Copy', null, true ) ; }
-			catch (e)	{ alert(FCKLang.PasteErrorCopy) ; }
-			break ;
 		default :
 			FCK.ExecuteNamedCommand( commandName, commandParameter ) ;
@@ -372,4 +361,6 @@
 	this.EditorDocument.execCommand( 'inserthtml', false, html ) ;
 	this.Focus() ;
+
+	FCKDocumentProcessor.Process( FCK.EditorDocument ) ;
 
 	// For some strange reason the SaveUndoStep() call doesn't activate the undo button at the first InsertHtml() call.
@@ -458,5 +449,5 @@
 {
 	FCK._FillEmptyBlock( FCK.EditorDocument.body.firstChild ) ;
-	var sel = FCK.EditorWindow.getSelection() ;
+	var sel = FCKSelection.GetSelection() ;
 	if ( !sel || sel.rangeCount < 1 )
 		return ;
Index: /FCKeditor/releases/stable/editor/_source/internals/fck_ie.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fck_ie.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fck_ie.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -75,5 +75,5 @@
 {
 	var body = FCK.EditorDocument.body ;
-	
+
 	body.detachEvent( 'onpaste', Doc_OnPaste ) ;
 
@@ -81,5 +81,5 @@
 
 	body.attachEvent( 'onpaste', Doc_OnPaste ) ;
-	
+
 	return ret ;
 }
@@ -94,5 +94,5 @@
 {
 	// Don't fire the event if no document is loaded.
-	if ( FCK.EditorDocument )
+	if ( !FCK.IsSelectionChangeLocked && FCK.EditorDocument )
 		FCK.Events.FireEvent( "OnSelectionChange" ) ;
 }
@@ -105,18 +105,15 @@
 		return ;
 	}
-	var evt = FCK.EditorWindow.event ;
+
 	if ( FCKConfig.ForcePasteAsPlainText )
 	{
+		var evt = FCK.EditorWindow.event ;
+
 		if ( FCK._CheckIsPastingEnabled() || FCKConfig.ShowDropDialog )
 			FCK.PasteAsPlainText( evt.dataTransfer.getData( 'Text' ) ) ;
-	}
-	else
-	{
-		if ( FCKConfig.ShowDropDialog ) 
-			FCKTools.RunFunction( FCKDialog.OpenDialog, 
-				FCKDialog, ['FCKDialog_Paste', FCKLang.Paste, 'dialog/fck_paste.html', 400, 330, 'Security'] ) ;
-	}
-	evt.returnValue = false ;
-	evt.cancelBubble = true ;
+
+		evt.returnValue = false ;
+		evt.cancelBubble = true ;
+	}
 }
 
@@ -139,7 +136,9 @@
 
 	this.EditorDocument.attachEvent("ondblclick", Doc_OnDblClick ) ;
-	
+
 	// Catch cursor selection changes.
 	this.EditorDocument.attachEvent("onselectionchange", Doc_OnSelectionChange ) ;
+
+	FCKTools.AddEventListener( FCK.EditorDocument, 'mousedown', Doc_OnMouseDown ) ;
 }
 
@@ -157,5 +156,5 @@
 
 	// Gets the actual selection.
-	var oSel = FCK.EditorDocument.selection ;
+	var oSel = FCKSelection.GetSelection() ;
 
 	// Deletes the actual selection contents.
@@ -165,5 +164,5 @@
 	// Using the following trick, any comment in the beginning of the HTML will
 	// be preserved.
-	html = '<span id="__fakeFCKRemove__">&nbsp;</span>' + html ;
+	html = '<span id="__fakeFCKRemove__" style="display:none;">fakeFCKRemove</span>' + html ;
 
 	// Insert the HTML.
@@ -277,5 +276,5 @@
 	if ( ! forceText )
 		sText = clipboardData.getData("Text") ;
-	else 
+	else
 		sText = forceText ;
 
@@ -289,5 +288,5 @@
 		var startTagIndex = sText.search( '<p>' ) ;
 
-		if ( ( closeTagIndex != -1 && startTagIndex != -1 && closeTagIndex < startTagIndex ) 
+		if ( ( closeTagIndex != -1 && startTagIndex != -1 && closeTagIndex < startTagIndex )
 				|| ( closeTagIndex != -1 && startTagIndex == -1 ) )
 		{
@@ -434,2 +433,21 @@
 	return aCreatedLinks ;
 }
+
+function _FCK_RemoveDisabledAtt()
+{
+	this.removeAttribute( 'disabled' ) ;
+}
+
+function Doc_OnMouseDown( evt )
+{
+	var e = evt.srcElement ;
+
+	// Radio buttons and checkboxes should not be allowed to be triggered in IE
+	// in editable mode. Otherwise the whole browser window may be locked by
+	// the buttons. (#1782)
+	if ( e.nodeName.IEquals( 'input' ) && e.type.IEquals( ['radio', 'checkbox'] ) && !e.disabled )
+	{
+		e.disabled = true ;
+		FCKTools.SetTimeout( _FCK_RemoveDisabledAtt, 1, e ) ;
+	}
+}
Index: /FCKeditor/releases/stable/editor/_source/internals/fckbrowserinfo.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fckbrowserinfo.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fckbrowserinfo.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -27,8 +27,10 @@
 {
 	IsIE		: /*@cc_on!@*/false,
-	IsIE7		: /*@cc_on!@*/false && ( parseFloat( s.match( /msie ([\d|\.]+)/ )[1] ) >= 7 ),
+	IsIE7		: /*@cc_on!@*/false && ( parseInt( s.match( /msie (\d+)/ )[1], 10 ) >= 7 ),
+	IsIE6		: /*@cc_on!@*/false && ( parseInt( s.match( /msie (\d+)/ )[1], 10 ) >= 6 ),
 	IsGecko		: s.Contains('gecko/'),
 	IsSafari	: s.Contains(' applewebkit/'),		// Read "IsWebKit"
 	IsOpera		: !!window.opera,
+	IsAIR		: s.Contains(' adobeair/'),
 	IsMac		: s.Contains('macintosh')
 } ;
Index: /FCKeditor/releases/stable/editor/_source/internals/fckcodeformatter.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fckcodeformatter.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fckcodeformatter.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/internals/fckcommands.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fckcommands.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fckcommands.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -45,27 +45,26 @@
 		case 'Subscript'	:
 		case 'Superscript'	: oCommand = new FCKCoreStyleCommand( commandName ) ; break ;
-		
+
 		case 'RemoveFormat'	: oCommand = new FCKRemoveFormatCommand() ; break ;
 
-		case 'DocProps'		: oCommand = new FCKDialogCommand( 'DocProps'	, FCKLang.DocProps				, 'dialog/fck_docprops.html'	, 400, 390, FCKCommands.GetFullPageState ) ; break ;
+		case 'DocProps'		: oCommand = new FCKDialogCommand( 'DocProps'	, FCKLang.DocProps				, 'dialog/fck_docprops.html'	, 400, 380, FCKCommands.GetFullPageState ) ; break ;
 		case 'Templates'	: oCommand = new FCKDialogCommand( 'Templates'	, FCKLang.DlgTemplatesTitle		, 'dialog/fck_template.html'	, 380, 450 ) ; break ;
-		case 'Link'			: oCommand = new FCKDialogCommand( 'Link'		, FCKLang.DlgLnkWindowTitle		, 'dialog/fck_link.html'		, 400, 330 ) ; break ;
+		case 'Link'			: oCommand = new FCKDialogCommand( 'Link'		, FCKLang.DlgLnkWindowTitle		, 'dialog/fck_link.html'		, 400, 300 ) ; break ;
 		case 'Unlink'		: oCommand = new FCKUnlinkCommand() ; break ;
-		case 'Anchor'		: oCommand = new FCKDialogCommand( 'Anchor'		, FCKLang.DlgAnchorTitle		, 'dialog/fck_anchor.html'		, 370, 170 ) ; break ;
+		case 'Anchor'		: oCommand = new FCKDialogCommand( 'Anchor'		, FCKLang.DlgAnchorTitle		, 'dialog/fck_anchor.html'		, 370, 160 ) ; break ;
 		case 'AnchorDelete'	: oCommand = new FCKAnchorDeleteCommand() ; break ;
-		case 'BulletedList'	: oCommand = new FCKDialogCommand( 'BulletedList', FCKLang.BulletedListProp		, 'dialog/fck_listprop.html?UL'	, 370, 170 ) ; break ;
-		case 'NumberedList'	: oCommand = new FCKDialogCommand( 'NumberedList', FCKLang.NumberedListProp		, 'dialog/fck_listprop.html?OL'	, 370, 170 ) ; break ;
-		case 'About'		: oCommand = new FCKDialogCommand( 'About'		, FCKLang.About					, 'dialog/fck_about.html'		, 400, 330 ) ; break ;
+		case 'BulletedList'	: oCommand = new FCKDialogCommand( 'BulletedList', FCKLang.BulletedListProp		, 'dialog/fck_listprop.html?UL'	, 370, 160 ) ; break ;
+		case 'NumberedList'	: oCommand = new FCKDialogCommand( 'NumberedList', FCKLang.NumberedListProp		, 'dialog/fck_listprop.html?OL'	, 370, 160 ) ; break ;
+		case 'About'		: oCommand = new FCKDialogCommand( 'About'		, FCKLang.About					, 'dialog/fck_about.html'		, 420, 330, function(){ return FCK_TRISTATE_OFF ; } ) ; break ;
+		case 'Find'			: oCommand = new FCKDialogCommand( 'Find'		, FCKLang.DlgFindAndReplaceTitle, 'dialog/fck_replace.html'		, 340, 230, null, null, 'Find' ) ; break ;
+		case 'Replace'		: oCommand = new FCKDialogCommand( 'Replace'	, FCKLang.DlgFindAndReplaceTitle, 'dialog/fck_replace.html'		, 340, 230, null, null, 'Replace' ) ; break ;
 
-		case 'Find'			: oCommand = new FCKDialogCommand( 'Find'		, FCKLang.DlgFindAndReplaceTitle			, 'dialog/fck_replace.html'		, 340, 250 ) ; break ;
-		case 'Replace'		: oCommand = new FCKDialogCommand( 'Replace'	, FCKLang.DlgFindAndReplaceTitle		, 'dialog/fck_replace.html'		, 340, 250 ) ; break ;
-
-		case 'Image'		: oCommand = new FCKDialogCommand( 'Image'		, FCKLang.DlgImgTitle			, 'dialog/fck_image.html'		, 450, 400 ) ; break ;
-		case 'Flash'		: oCommand = new FCKDialogCommand( 'Flash'		, FCKLang.DlgFlashTitle			, 'dialog/fck_flash.html'		, 450, 400 ) ; break ;
-		case 'SpecialChar'	: oCommand = new FCKDialogCommand( 'SpecialChar', FCKLang.DlgSpecialCharTitle	, 'dialog/fck_specialchar.html'	, 400, 320 ) ; break ;
+		case 'Image'		: oCommand = new FCKDialogCommand( 'Image'		, FCKLang.DlgImgTitle			, 'dialog/fck_image.html'		, 450, 390 ) ; break ;
+		case 'Flash'		: oCommand = new FCKDialogCommand( 'Flash'		, FCKLang.DlgFlashTitle			, 'dialog/fck_flash.html'		, 450, 390 ) ; break ;
+		case 'SpecialChar'	: oCommand = new FCKDialogCommand( 'SpecialChar', FCKLang.DlgSpecialCharTitle	, 'dialog/fck_specialchar.html'	, 400, 290 ) ; break ;
 		case 'Smiley'		: oCommand = new FCKDialogCommand( 'Smiley'		, FCKLang.DlgSmileyTitle		, 'dialog/fck_smiley.html'		, FCKConfig.SmileyWindowWidth, FCKConfig.SmileyWindowHeight ) ; break ;
 		case 'Table'		: oCommand = new FCKDialogCommand( 'Table'		, FCKLang.DlgTableTitle			, 'dialog/fck_table.html'		, 480, 250 ) ; break ;
 		case 'TableProp'	: oCommand = new FCKDialogCommand( 'Table'		, FCKLang.DlgTableTitle			, 'dialog/fck_table.html?Parent', 480, 250 ) ; break ;
-		case 'TableCellProp': oCommand = new FCKDialogCommand( 'TableCell'	, FCKLang.DlgCellTitle			, 'dialog/fck_tablecell.html'	, 550, 250 ) ; break ;
+		case 'TableCellProp': oCommand = new FCKDialogCommand( 'TableCell'	, FCKLang.DlgCellTitle			, 'dialog/fck_tablecell.html'	, 550, 240 ) ; break ;
 
 		case 'Style'		: oCommand = new FCKStyleCommand() ; break ;
@@ -113,13 +112,13 @@
 		case 'TableDelete'				: oCommand = new FCKTableCommand('TableDelete') ; break ;
 
-		case 'Form'			: oCommand = new FCKDialogCommand( 'Form'		, FCKLang.Form			, 'dialog/fck_form.html'		, 380, 230 ) ; break ;
-		case 'Checkbox'		: oCommand = new FCKDialogCommand( 'Checkbox'	, FCKLang.Checkbox		, 'dialog/fck_checkbox.html'	, 380, 230 ) ; break ;
-		case 'Radio'		: oCommand = new FCKDialogCommand( 'Radio'		, FCKLang.RadioButton	, 'dialog/fck_radiobutton.html'	, 380, 230 ) ; break ;
-		case 'TextField'	: oCommand = new FCKDialogCommand( 'TextField'	, FCKLang.TextField		, 'dialog/fck_textfield.html'	, 380, 230 ) ; break ;
-		case 'Textarea'		: oCommand = new FCKDialogCommand( 'Textarea'	, FCKLang.Textarea		, 'dialog/fck_textarea.html'	, 380, 230 ) ; break ;
-		case 'HiddenField'	: oCommand = new FCKDialogCommand( 'HiddenField', FCKLang.HiddenField	, 'dialog/fck_hiddenfield.html'	, 380, 230 ) ; break ;
-		case 'Button'		: oCommand = new FCKDialogCommand( 'Button'		, FCKLang.Button		, 'dialog/fck_button.html'		, 380, 230 ) ; break ;
-		case 'Select'		: oCommand = new FCKDialogCommand( 'Select'		, FCKLang.SelectionField, 'dialog/fck_select.html'		, 400, 380 ) ; break ;
-		case 'ImageButton'	: oCommand = new FCKDialogCommand( 'ImageButton', FCKLang.ImageButton	, 'dialog/fck_image.html?ImageButton', 450, 400 ) ; break ;
+		case 'Form'			: oCommand = new FCKDialogCommand( 'Form'		, FCKLang.Form			, 'dialog/fck_form.html'		, 380, 210 ) ; break ;
+		case 'Checkbox'		: oCommand = new FCKDialogCommand( 'Checkbox'	, FCKLang.Checkbox		, 'dialog/fck_checkbox.html'	, 380, 200 ) ; break ;
+		case 'Radio'		: oCommand = new FCKDialogCommand( 'Radio'		, FCKLang.RadioButton	, 'dialog/fck_radiobutton.html'	, 380, 200 ) ; break ;
+		case 'TextField'	: oCommand = new FCKDialogCommand( 'TextField'	, FCKLang.TextField		, 'dialog/fck_textfield.html'	, 380, 210 ) ; break ;
+		case 'Textarea'		: oCommand = new FCKDialogCommand( 'Textarea'	, FCKLang.Textarea		, 'dialog/fck_textarea.html'	, 380, 210 ) ; break ;
+		case 'HiddenField'	: oCommand = new FCKDialogCommand( 'HiddenField', FCKLang.HiddenField	, 'dialog/fck_hiddenfield.html'	, 380, 190 ) ; break ;
+		case 'Button'		: oCommand = new FCKDialogCommand( 'Button'		, FCKLang.Button		, 'dialog/fck_button.html'		, 380, 210 ) ; break ;
+		case 'Select'		: oCommand = new FCKDialogCommand( 'Select'		, FCKLang.SelectionField, 'dialog/fck_select.html'		, 400, 340 ) ; break ;
+		case 'ImageButton'	: oCommand = new FCKDialogCommand( 'ImageButton', FCKLang.ImageButton	, 'dialog/fck_image.html?ImageButton', 450, 390 ) ; break ;
 
 		case 'SpellCheck'	: oCommand = new FCKSpellCheckCommand() ; break ;
@@ -128,5 +127,6 @@
 		case 'Undo'	: oCommand = new FCKUndoCommand() ; break ;
 		case 'Redo'	: oCommand = new FCKRedoCommand() ; break ;
-		case 'Copy'	: oCommand = new FCKCopyCommand() ; break ;
+		case 'Copy'	: oCommand = new FCKCutCopyCommand( false ) ; break ;
+		case 'Cut'	: oCommand = new FCKCutCopyCommand( true ) ; break ;
 
 		case 'SelectAll'			: oCommand = new FCKSelectAllCommand() ; break ;
Index: /FCKeditor/releases/stable/editor/_source/internals/fckconfig.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fckconfig.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fckconfig.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -132,15 +132,17 @@
 		oConfig.PluginsPath += '/' ;
 
-	// EditorAreaCSS accepts a single path string, a list of paths separated by
-	// a comma or and array of paths.
-	// In the string cases, transform it in an array.
-	if ( typeof( oConfig.EditorAreaCSS ) == 'string' )
-		oConfig.EditorAreaCSS = oConfig.EditorAreaCSS.split(',') ;
-
+	// If no ToolbarComboPreviewCSS, point it to EditorAreaCSS.
 	var sComboPreviewCSS = oConfig.ToolbarComboPreviewCSS ;
 	if ( !sComboPreviewCSS || sComboPreviewCSS.length == 0 )
 		oConfig.ToolbarComboPreviewCSS = oConfig.EditorAreaCSS ;
-	else if ( typeof( sComboPreviewCSS ) == 'string' )
-		oConfig.ToolbarComboPreviewCSS = [ sComboPreviewCSS ] ;
+
+	// Turn the attributes that will be removed in the RemoveFormat from a string to an array
+	oConfig.RemoveAttributesArray = (oConfig.RemoveAttributes || '').split( ',' );
+
+	if ( !FCKConfig.SkinEditorCSS || FCKConfig.SkinEditorCSS.length == 0 )
+		FCKConfig.SkinEditorCSS = FCKConfig.SkinPath + 'fck_editor.css' ;
+
+	if ( !FCKConfig.SkinDialogCSS || FCKConfig.SkinDialogCSS.length == 0 )
+		FCKConfig.SkinDialogCSS = FCKConfig.SkinPath + 'fck_dialog.css' ;
 }
 
@@ -175,8 +177,5 @@
 
 	// <noscript> tags (get lost in IE and messed up in FF).
-	/<noscript[\s\S]*?<\/noscript>/gi,
-
-	// Protect <object> tags. See #359.
-	/<object[\s\S]+?<\/object>/gi
+	/<noscript[\s\S]*?<\/noscript>/gi
 ] ;
 
Index: /FCKeditor/releases/stable/editor/_source/internals/fckdebug.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fckdebug.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fckdebug.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/internals/fckdialog.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fckdialog.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fckdialog.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -22,17 +22,213 @@
  */
 
-var FCKDialog = new Object() ;
-
-// This method opens a dialog window using the standard dialog template.
-FCKDialog.OpenDialog = function( dialogName, dialogTitle, dialogPage, width, height, customValue, parentWindow, resizable )
+var FCKDialog = ( function()
 {
-	// Setup the dialog info.
-	var oDialogInfo = new Object() ;
-	oDialogInfo.Title = dialogTitle ;
-	oDialogInfo.Page = dialogPage ;
-	oDialogInfo.Editor = window ;
-	oDialogInfo.CustomValue = customValue ;		// Optional
-
-	var sUrl = FCKConfig.BasePath + 'fckdialog.html' ;
-	this.Show( oDialogInfo, dialogName, sUrl, width, height, parentWindow, resizable ) ;
-}
+	var topDialog ;
+	var baseZIndex ;
+	var cover ;
+
+	// The document that holds the dialog.
+	var topWindow = window.parent ;
+
+	while ( topWindow.parent && topWindow.parent != topWindow )
+	{
+		try
+		{
+			if ( topWindow.parent.document.domain != document.domain )
+				break ;
+			if ( topWindow.parent.document.getElementsByTagName( 'frameset' ).length > 0 )
+				break ;
+		}
+		catch ( e )
+		{
+			break ;
+		}
+		topWindow = topWindow.parent ;
+	}
+
+	var topDocument = topWindow.document ;
+
+	var getZIndex = function()
+	{
+		if ( !baseZIndex )
+			baseZIndex = FCKConfig.FloatingPanelsZIndex + 999 ;
+		return ++baseZIndex ;
+	}
+
+	// TODO : This logic is not actually working when reducing the window, only
+	// when enlarging it.
+	var resizeHandler = function()
+	{
+		if ( !cover )
+			return ;
+
+		var relElement = FCKTools.IsStrictMode( topDocument ) ? topDocument.documentElement : topDocument.body ;
+
+		FCKDomTools.SetElementStyles( cover,
+			{
+				'width' : Math.max( relElement.scrollWidth,
+					relElement.clientWidth,
+					topDocument.scrollWidth || 0 ) - 1 + 'px',
+				'height' : Math.max( relElement.scrollHeight,
+					relElement.clientHeight,
+					topDocument.scrollHeight || 0 ) - 1 + 'px'
+			} ) ;
+	}
+
+	var resetStyles = function( element )
+	{
+		element.style.cssText = 'margin:0;' +
+			'padding:0;' +
+			'border:0;' +
+			'background-color:transparent;' +
+			'background-image:none;' ;
+	}
+
+	return {
+		/**
+		 * Opens a dialog window using the standard dialog template.
+		 */
+		OpenDialog : function( dialogName, dialogTitle, dialogPage, width, height, customValue, parentWindow, resizable )
+		{
+			if ( !topDialog )
+				this.DisplayMainCover() ;
+
+			// Setup the dialog info to be passed to the dialog.
+			var dialogInfo =
+			{
+				Title : dialogTitle,
+				Page : dialogPage,
+				Editor : window,
+				CustomValue : customValue,		// Optional
+				TopWindow : topWindow
+			}
+
+			FCK.ToolbarSet.CurrentInstance.Selection.Save() ;
+
+			// Calculate the dialog position, centering it on the screen.
+			var viewSize = FCKTools.GetViewPaneSize( topWindow ) ;
+			var scrollPosition = FCKTools.GetScrollPosition( topWindow ) ;
+			var iTop  = Math.max( scrollPosition.Y + ( viewSize.Height - height - 20 ) / 2, 0 ) ;
+			var iLeft = Math.max( scrollPosition.X + ( viewSize.Width - width - 20 )  / 2, 0 ) ;
+
+			// Setup the IFRAME that will hold the dialog.
+			var dialog = topDocument.createElement( 'iframe' ) ;
+			resetStyles( dialog ) ;
+			dialog.src = FCKConfig.BasePath + 'fckdialog.html' ;
+
+			// Dummy URL for testing whether the code in fckdialog.js alone leaks memory.
+			// dialog.src = 'about:blank';
+
+			dialog.frameBorder = 0 ;
+			dialog.allowTransparency = true ;
+			FCKDomTools.SetElementStyles( dialog,
+					{
+						'position'	: 'absolute',
+						'top'		: iTop + 'px',
+						'left'		: iLeft + 'px',
+						'width'		: width + 'px',
+						'height'	: height + 'px',
+						'zIndex'	: getZIndex()
+					} ) ;
+
+			// Save the dialog info to be used by the dialog page once loaded.
+			dialog._DialogArguments = dialogInfo ;
+
+			// Append the IFRAME to the target document.
+			topDocument.body.appendChild( dialog ) ;
+
+			// Keep record of the dialog's parent/child relationships.
+			dialog._ParentDialog = topDialog ;
+			topDialog = dialog ;
+		},
+
+		/**
+		 * (For internal use)
+		 * Called when the top dialog is closed.
+		 */
+		OnDialogClose : function( dialogWindow )
+		{
+			var dialog = dialogWindow.frameElement ;
+			FCKDomTools.RemoveNode( dialog ) ;
+
+			if ( dialog._ParentDialog )		// Nested Dialog.
+			{
+				topDialog = dialog._ParentDialog ;
+				dialog._ParentDialog.contentWindow.SetEnabled( true ) ;
+			}
+			else							// First Dialog.
+			{
+				// Set the Focus in the browser, so the "OnBlur" event is not
+				// fired. In IE, there is no need to do that because the dialog
+				// already moved the selection to the editing area before
+				// closing (EnsureSelection). Also, the Focus() call here
+				// causes memory leak on IE7 (weird).
+				if ( !FCKBrowserInfo.IsIE )
+					FCK.Focus() ;
+
+				this.HideMainCover() ;
+				// Bug #1918: Assigning topDialog = null directly causes IE6 to crash.
+				setTimeout( function(){ topDialog = null ; }, 0 ) ;
+
+				// Release the previously saved selection.
+				FCK.ToolbarSet.CurrentInstance.Selection.Release() ;
+			}
+		},
+
+		DisplayMainCover : function()
+		{
+			// Setup the DIV that will be used to cover.
+			cover = topDocument.createElement( 'div' ) ;
+			resetStyles( cover ) ;
+			FCKDomTools.SetElementStyles( cover,
+				{
+					'position' : 'absolute',
+					'zIndex' : getZIndex(),
+					'top' : '0px',
+					'left' : '0px',
+					'backgroundColor' : FCKConfig.BackgroundBlockerColor
+				} ) ;
+			FCKDomTools.SetOpacity( cover, FCKConfig.BackgroundBlockerOpacity ) ;
+
+			// For IE6-, we need to fill the cover with a transparent IFRAME,
+			// to properly block <select> fields.
+			if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
+			{
+				var iframe = topDocument.createElement( 'iframe' ) ;
+				resetStyles( iframe ) ;
+				iframe.hideFocus = true ;
+				iframe.frameBorder = 0 ;
+				iframe.src = FCKTools.GetVoidUrl() ;
+				FCKDomTools.SetElementStyles( iframe,
+					{
+						'width' : '100%',
+						'height' : '100%',
+						'position' : 'absolute',
+						'left' : '0px',
+						'top' : '0px',
+						'filter' : 'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'
+					} ) ;
+				cover.appendChild( iframe ) ;
+			}
+
+			// We need to manually adjust the cover size on resize.
+			FCKTools.AddEventListener( topWindow, 'resize', resizeHandler ) ;
+			resizeHandler() ;
+
+			topDocument.body.appendChild( cover ) ;
+
+			FCKFocusManager.Lock() ;
+		},
+
+		HideMainCover : function()
+		{
+			FCKDomTools.RemoveNode( cover ) ;
+			FCKFocusManager.Unlock() ;
+		},
+
+		GetCover : function()
+		{
+			return cover ;
+		}
+	} ;
+} )() ;
Index: /FCKeditor/releases/stable/editor/_source/internals/fckdocumentprocessor.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fckdocumentprocessor.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fckdocumentprocessor.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -34,12 +34,15 @@
 FCKDocumentProcessor.Process = function( document )
 {
+	var bIsDirty = FCK.IsDirty() ;
 	var oProcessor, i = 0 ;
 	while( ( oProcessor = this._Items[i++] ) )
 		oProcessor.ProcessDocument( document ) ;
+	if ( !bIsDirty )
+		FCK.ResetIsDirty() ;
 }
 
 var FCKDocumentProcessor_CreateFakeImage = function( fakeClass, realElement )
 {
-	var oImg = FCK.EditorDocument.createElement( 'IMG' ) ;
+	var oImg = FCKTools.GetElementDocument( realElement ).createElement( 'IMG' ) ;
 	oImg.className = fakeClass ;
 	oImg.src = FCKConfig.FullBasePath + 'images/spacer.gif' ;
@@ -119,54 +122,60 @@
 }
 
-// Flash Embeds.
-var FCKFlashProcessor = FCKDocumentProcessor.AppendNew() ;
-FCKFlashProcessor.ProcessDocument = function( document )
-{
-	/*
-	Sample code:
-	This is some <embed src="/UserFiles/Flash/Yellow_Runners.swf"></embed><strong>sample text</strong>. You are&nbsp;<a name="fred"></a> using <a href="http://www.fckeditor.net/">FCKeditor</a>.
-	*/
-
-	var bIsDirty = FCK.IsDirty() ;
-
-	var aEmbeds = document.getElementsByTagName( 'EMBED' ) ;
-
-	var oEmbed ;
-	var i = aEmbeds.length - 1 ;
-	while ( i >= 0 && ( oEmbed = aEmbeds[i--] ) )
-	{
-		// IE doesn't return the type attribute with oEmbed.type or oEmbed.getAttribute("type") 
-		// But it turns out that after accessing it then it doesn't gets copied later
-		var oType = oEmbed.attributes[ 'type' ] ;
-
-		// Check the extension and the type. Now it should be enough with just the type
-		// Opera doesn't return oEmbed.src so oEmbed.src.EndsWith will fail
-		if ( (oEmbed.src && oEmbed.src.EndsWith( '.swf', true )) || ( oType && oType.nodeValue == 'application/x-shockwave-flash' ) )
-		{
-			var oCloned = oEmbed.cloneNode( true ) ;
-
-			var oImg = FCKDocumentProcessor_CreateFakeImage( 'FCK__Flash', oCloned ) ;
-			oImg.setAttribute( '_fckflash', 'true', 0 ) ;
-
-			FCKFlashProcessor.RefreshView( oImg, oEmbed ) ;
-
-			oEmbed.parentNode.insertBefore( oImg, oEmbed ) ;
-			oEmbed.parentNode.removeChild( oEmbed ) ;
-		}
-	}
-
-	// Fix the IsDirty state (#1406).
-	if ( !bIsDirty )
-		FCK.ResetIsDirty() ;
-}
-
-FCKFlashProcessor.RefreshView = function( placeHolderImage, originalEmbed )
-{
-	if ( originalEmbed.getAttribute( 'width' ) > 0 )
-		placeHolderImage.style.width = FCKTools.ConvertHtmlSizeToStyle( originalEmbed.getAttribute( 'width' ) ) ;
-
-	if ( originalEmbed.getAttribute( 'height' ) > 0 )
-		placeHolderImage.style.height = FCKTools.ConvertHtmlSizeToStyle( originalEmbed.getAttribute( 'height' ) ) ;
-}
+// EMBED and OBJECT tags.
+FCKEmbedAndObjectProcessor = (function()
+{
+	var customProcessors = [] ;
+
+	var processElement = function( el )
+	{
+		var clone = el.cloneNode( true ) ;
+		var replaceElement ;
+		var fakeImg = replaceElement = FCKDocumentProcessor_CreateFakeImage( 'FCK__UnknownObject', clone ) ;
+		FCKEmbedAndObjectProcessor.RefreshView( fakeImg, el ) ;
+
+		for ( var i = 0 ; i < customProcessors.length ; i++ )
+			replaceElement = customProcessors[i]( el, replaceElement ) || replaceElement ;
+
+		if ( replaceElement != fakeImg )
+			FCKTempBin.RemoveElement( fakeImg.getAttribute( '_fckrealelement' ) ) ;
+
+		el.parentNode.replaceChild( replaceElement, el ) ;
+	}
+
+	return FCKTools.Merge( FCKDocumentProcessor.AppendNew(),
+		       {
+				ProcessDocument : function( doc )
+				{
+					// Firefox 3 would sometimes throw an unknown exception while accessing EMBEDs and OBJECTs
+					// without the setTimeout().
+					FCKTools.RunFunction( function()
+						{
+							// Process OBJECTs first, since EMBEDs can sometimes go inside OBJECTS (e.g. Flash).
+							var aObjects = doc.getElementsByTagName( 'object' );
+							for ( var i = aObjects.length - 1 ; i >= 0 ; i-- )
+								processElement( aObjects[i] ) ;
+
+							// Now process any EMBEDs left.
+							var aEmbeds = doc.getElementsByTagName( 'embed' ) ;
+							for ( var i = aEmbeds.length - 1 ; i >= 0 ; i-- )
+								processElement( aEmbeds[i] ) ;
+						} ) ;
+				},
+
+				RefreshView : function( placeHolder, original )
+				{
+					if ( original.getAttribute( 'width' ) > 0 )
+						placeHolder.style.width = FCKTools.ConvertHtmlSizeToStyle( original.getAttribute( 'width' ) ) ;
+
+					if ( original.getAttribute( 'height' ) > 0 )
+						placeHolder.style.height = FCKTools.ConvertHtmlSizeToStyle( original.getAttribute( 'height' ) ) ;
+				},
+
+				AddCustomHandler : function( func )
+				{
+					customProcessors.push( func ) ;
+				}
+			} ) ;
+} )() ;
 
 FCK.GetRealElement = function( fakeElement )
@@ -202,5 +211,5 @@
 			var newHR = document.createElement( 'hr' ) ;
 			newHR.mergeAttributes( eHR, true ) ;
-			
+
 			// We must insert the new one after it. insertBefore will not work in all cases.
 			FCKDomTools.InsertAfterNode( eHR, newHR ) ;
@@ -230,2 +239,11 @@
 	}
 }
+
+// Flash handler.
+FCKEmbedAndObjectProcessor.AddCustomHandler( function( el, fakeImg )
+	{
+		if ( ! ( el.nodeName.IEquals( 'embed' ) && ( el.type == 'application/x-shockwave-flash' || /\.swf($|#|\?)/i.test( el.src ) ) ) )
+			return ;
+		fakeImg.className = 'FCK__Flash' ;
+		fakeImg.setAttribute( '_fckflash', 'true', 0 );
+	} ) ;
Index: /FCKeditor/releases/stable/editor/_source/internals/fckdomtools.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fckdomtools.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fckdomtools.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -518,4 +518,13 @@
 	},
 
+	/**
+	 * Removes an array of attributes from an element
+	 */
+	RemoveAttributes : function (element, aAttributes )
+	{
+		for ( var i = 0 ; i < aAttributes.length ; i++ )
+			this.RemoveAttribute( element, aAttributes[i] );
+	},
+
 	GetAttributeValue : function( element, att )
 	{
@@ -570,5 +579,5 @@
 	 * If element = <span />, we have these results:
 	 *		<b>This <i>is some</i><span /><i> sample</i> test text</b>			(If parent = <i>)
-	 *		<b>This <i>is some</i></b><span /><b<i> sample</i> test text</b>	(If parent = <b>)
+	 *		<b>This <i>is some</i></b><span /><b><i> sample</i> test text</b>	(If parent = <b>)
 	 */
 	BreakParent : function( element, parent, reusableRange )
@@ -610,5 +619,5 @@
 	{
 		var retval = [] ;
-		while ( node && node != node.ownerDocument.documentElement )
+		while ( node && node != FCKTools.GetElementDocument( node ).documentElement )
 		{
 			var parentNode = node.parentNode ;
@@ -768,5 +777,5 @@
 		if ( ! listArray || listArray.length < baseIndex + 1 )
 			return null ;
-		var doc = listArray[baseIndex].parent.ownerDocument ;
+		var doc = FCKTools.GetElementDocument( listArray[baseIndex].parent ) ;
 		var retval = doc.createDocumentFragment() ;
 		var rootNode = null ;
@@ -925,21 +934,39 @@
 	},
 
-	GetCurrentElementStyle : function( w, element, attrName )
+	SetOpacity : function( element, opacity )
 	{
 		if ( FCKBrowserInfo.IsIE )
-			return element.currentStyle[attrName] ;
+		{
+			opacity = Math.round( opacity * 100 ) ;
+			element.style.filter = ( opacity > 100 ? '' : 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + opacity + ')' ) ;
+		}
 		else
-			return w.getComputedStyle( element, '' )[attrName] ;
-	},
-
-	GetPositionedAncestor : function( w, element )
+			element.style.opacity = opacity ;
+	},
+
+	GetCurrentElementStyle : function( element, propertyName )
+	{
+		if ( FCKBrowserInfo.IsIE )
+			return element.currentStyle[ propertyName ] ;
+		else
+			return element.ownerDocument.defaultView.getComputedStyle( element, '' ).getPropertyValue( propertyName ) ;
+	},
+
+	GetPositionedAncestor : function( element )
 	{
 		var currentElement = element ;
-		while ( currentElement != currentElement.ownerDocument.documentElement )
-		{
-			if ( this.GetCurrentElementStyle( w, currentElement, 'position' ) != 'static' )
+
+		while ( currentElement != FCKTools.GetElementDocument( currentElement ).documentElement )
+		{
+			if ( this.GetCurrentElementStyle( currentElement, 'position' ) != 'static' )
 				return currentElement ;
-			currentElement = currentElement.parentNode ;
-		}
+
+			if ( currentElement == FCKTools.GetElementDocument( currentElement ).documentElement
+					&& currentWindow != w )
+				currentElement = currentWindow.frameElement ;
+			else
+				currentElement = currentElement.parentNode ;
+		}
+
 		return null ;
 	},
@@ -954,5 +981,5 @@
 		var window = FCKTools.GetElementWindow( element ) ;
 		var windowHeight = FCKTools.GetViewPaneSize( window ).Height ;
-		
+
 		// Starts the offset that will be scrolled with the negative value of
 		// the visible window height.
@@ -963,9 +990,9 @@
 		{
 			offset += element.offsetHeight ;
-			
+
 			// Consider the margin in the scroll, which is ok for our current
 			// needs, but needs investigation if we will be using this function
 			// in other places.
-			offset += parseInt( this.GetCurrentElementStyle( window, element, 'marginBottom' ) || 0, 10 ) ;
+			offset += parseInt( this.GetCurrentElementStyle( element, 'marginBottom' ) || 0, 10 ) ;
 		}
 
@@ -974,11 +1001,24 @@
 		while ( ( element = element.offsetParent ) )
 			offset += element.offsetTop || 0 ;
-		
+
 		// Scroll the window to the desired position, if not already visible.
 		var currentScroll = FCKTools.GetScrollPosition( window ).Y ;
 		if ( offset > 0 && offset > currentScroll )
 			window.scrollTo( 0, offset ) ;
+	},
+
+	/**
+	 * Check if the element can be edited inside the browser.
+	 */
+	CheckIsEditable : function( element )
+	{
+		// Get the element name.
+		var nodeName = element.nodeName.toLowerCase() ;
+
+		// Get the element DTD (defaults to span for unknown elements).
+		var childDTD = FCK.DTD[ nodeName ] || FCK.DTD.span ;
+
+		// In the DTD # == text node.
+		return ( childDTD['#'] && !FCKListsLib.NonEditableElements[ nodeName ] ) ;
 	}
 } ;
-
-
Index: /FCKeditor/releases/stable/editor/_source/internals/fcklanguagemanager.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fcklanguagemanager.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fcklanguagemanager.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -49,4 +49,5 @@
 		fo		: 'Faroese',
 		fr		: 'French',
+		'fr-ca'	: 'French (Canada)',
 		gl		: 'Galician',
 		he		: 'Hebrew',
Index: /FCKeditor/releases/stable/editor/_source/internals/fcklisthandler.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fcklisthandler.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fcklisthandler.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/internals/fcklistslib.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fcklistslib.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fcklistslib.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -54,5 +54,8 @@
 	// Object elements for the Styles System.
 	StyleObjectElements : { img:1,hr:1,li:1,table:1,tr:1,td:1,embed:1,object:1,ol:1,ul:1 },
-	
+
+	// Elements that accept text nodes, but are not possible to edit in the browser.
+	NonEditableElements : { button:1,option:1,script:1,iframe:1,textarea:1,object:1,embed:1,map:1,applet:1 },
+
 	// Elements used to separate block contents.
 	BlockBoundaries : { p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1 },
Index: /FCKeditor/releases/stable/editor/_source/internals/fckplugins.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fckplugins.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fckplugins.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/internals/fckregexlib.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fckregexlib.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fckregexlib.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -94,4 +94,6 @@
 StyleVariableAttName : /#\(\s*("|')(.+?)\1[^\)]*\s*\)/g,
 
-RegExp : /^\/(.*)\/([gim]*)$/
+RegExp : /^\/(.*)\/([gim]*)$/,
+
+HtmlTag : /<[^\s<>](?:"[^"]*"|'[^']*'|[^<])*>/
 } ;
Index: /FCKeditor/releases/stable/editor/_source/internals/fckselection.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fckselection.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fckselection.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -22,5 +22,5 @@
  */
 
-var FCKSelection = FCK.Selection = 
+var FCKSelection = FCK.Selection =
 {
 	GetParentBlock : function()
@@ -35,5 +35,5 @@
 		return retval ;
 	},
-	
+
 	ApplyStyle : function( styleDefinition )
 	{
Index: /FCKeditor/releases/stable/editor/_source/internals/fckselection_gecko.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fckselection_gecko.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fckselection_gecko.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -31,5 +31,5 @@
 
 	var sel ;
-	try { sel = FCK.EditorWindow.getSelection() ; } catch (e) {}
+	try { sel = this.GetSelection() ; } catch (e) {}
 
 	if ( sel && sel.rangeCount == 1 )
@@ -52,28 +52,17 @@
 FCKSelection.GetSelectedElement = function()
 {
-	var selectedElement = null ;
-
-	var selection = !!FCK.EditorWindow && FCK.EditorWindow.getSelection() ;
-
-	if ( selection && selection.anchorNode && selection.anchorNode.nodeType == 1 )
-	{
-		if ( this.GetType() == 'Control' )
-		{
-			// This one is good for all browsers, expect Safari Mac.
-			selectedElement = selection.anchorNode.childNodes[ selection.anchorOffset ] ;
-
-			// For Safari (Mac only), the anchor node for a control selection is
-			// the control itself, which seams logic. FF and Opera use the parent
-			// as the anchor node, pointing to the control with the offset.
-			// As FF created the selection "standard", Safari would do better by
-			// following their steps.
-			if ( !selectedElement )
-				selectedElement = selection.anchorNode ;
-			else if ( selectedElement.nodeType != 1 )
-				return null ;
-		}
-	}
-
-	return selectedElement ;
+	var selection = !!FCK.EditorWindow && this.GetSelection() ;
+	if ( !selection || selection.rangeCount < 1 )
+		return null ;
+
+	var range = selection.getRangeAt( 0 ) ;
+	if ( range.startContainer != range.endContainer || range.startContainer.nodeType != 1 || range.startOffset != range.endOffset - 1 )
+		return null ;
+
+	var node = range.startContainer.childNodes[ range.startOffset ] ;
+	if ( node.nodeType != 1 )
+		return null ;
+
+	return node ;
 }
 
@@ -84,5 +73,5 @@
 	else
 	{
-		var oSel = FCK.EditorWindow.getSelection() ;
+		var oSel = this.GetSelection() ;
 		if ( oSel )
 		{
@@ -129,5 +118,5 @@
 	else
 	{
-		var oSel = FCK.EditorWindow.getSelection() ;
+		var oSel = this.GetSelection() ;
 		if ( oSel && oSel.rangeCount > 0 )
 		{
@@ -147,5 +136,5 @@
 	oRange.selectNode( element ) ;
 
-	var oSel = FCK.EditorWindow.getSelection() ;
+	var oSel = this.GetSelection() ;
 	oSel.removeAllRanges() ;
 	oSel.addRange( oRange ) ;
@@ -154,5 +143,5 @@
 FCKSelection.Collapse = function( toStart )
 {
-	var oSel = FCK.EditorWindow.getSelection() ;
+	var oSel = this.GetSelection() ;
 
 	if ( toStart == null || toStart === true )
@@ -168,5 +157,5 @@
 	if ( ! oContainer && FCK.EditorWindow )
 	{
-		try		{ oContainer = FCK.EditorWindow.getSelection().getRangeAt(0).startContainer ; }
+		try		{ oContainer = this.GetSelection().getRangeAt(0).startContainer ; }
 		catch(e){}
 	}
@@ -188,5 +177,5 @@
 	var oContainer = this.GetSelectedElement() ;
 	if ( ! oContainer )
-		oContainer = FCK.EditorWindow.getSelection().getRangeAt(0).startContainer ;
+		oContainer = this.GetSelection().getRangeAt(0).startContainer ;
 
 	while ( oContainer )
@@ -203,5 +192,5 @@
 {
 	// Gets the actual selection.
-	var oSel = FCK.EditorWindow.getSelection() ;
+	var oSel = this.GetSelection() ;
 
 	// Deletes the actual selection contents.
@@ -213,2 +202,19 @@
 	return oSel ;
 }
+
+/**
+ * Returns the native selection object.
+ */
+FCKSelection.GetSelection = function()
+{
+	return FCK.EditorWindow.getSelection() ;
+}
+
+// The following are IE only features (we don't need then in other browsers
+// currently).
+FCKSelection.Save = function()
+{}
+FCKSelection.Restore = function()
+{}
+FCKSelection.Release = function()
+{}
Index: /FCKeditor/releases/stable/editor/_source/internals/fckselection_ie.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fckselection_ie.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fckselection_ie.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -29,9 +29,9 @@
 	try
 	{
-		var ieType = FCK.EditorDocument.selection.type ;
+		var ieType = FCKSelection.GetSelection().type ;
 		if ( ieType == 'Control' || ieType == 'Text' )
 			return ieType ;
 
-		if ( FCK.EditorDocument.selection.createRange().parentElement )
+		if ( this.GetSelection().createRange().parentElement )
 			return 'Text' ;
 	}
@@ -50,8 +50,8 @@
 	if ( this.GetType() == 'Control' )
 	{
-		var oRange = FCK.EditorDocument.selection.createRange() ;
+		var oRange = this.GetSelection().createRange() ;
 
 		if ( oRange && oRange.item )
-			return FCK.EditorDocument.selection.createRange().item(0) ;
+			return this.GetSelection().createRange().item(0) ;
 	}
 	return null ;
@@ -70,5 +70,5 @@
 
 		default :
-			return FCK.EditorDocument.selection.createRange().parentElement() ;
+			return this.GetSelection().createRange().parentElement() ;
 	}
 } ;
@@ -87,10 +87,10 @@
 		default :
 			var doc = FCK.EditorDocument ;
-			
+
 			var range = doc.selection.createRange() ;
 			range.collapse( startBoundary !== false ) ;
-			
+
 			var el = range.parentElement() ;
-			
+
 			// It may happen that range is comming from outside "doc", so we
 			// must check it (#1204).
@@ -102,5 +102,5 @@
 {
 	FCK.Focus() ;
-	FCK.EditorDocument.selection.empty() ;
+	this.GetSelection().empty() ;
 	var oRange ;
 	try
@@ -125,5 +125,5 @@
 	if ( this.GetType() == 'Text' )
 	{
-		var oRange = FCK.EditorDocument.selection.createRange() ;
+		var oRange = this.GetSelection().createRange() ;
 		oRange.collapse( toStart == null || toStart === true ) ;
 		oRange.select() ;
@@ -136,5 +136,5 @@
 	var oContainer ;
 
-	if ( FCK.EditorDocument.selection.type == "Control" )
+	if ( this.GetSelection().type == "Control" )
 	{
 		oContainer = this.GetSelectedElement() ;
@@ -142,5 +142,5 @@
 	else
 	{
-		var oRange  = FCK.EditorDocument.selection.createRange() ;
+		var oRange  = this.GetSelection().createRange() ;
 		oContainer = oRange.parentElement() ;
 	}
@@ -163,7 +163,7 @@
 		return null ;
 
-	if ( FCK.EditorDocument.selection.type == "Control" )
-	{
-		oRange = FCK.EditorDocument.selection.createRange() ;
+	if ( this.GetSelection().type == "Control" )
+	{
+		oRange = this.GetSelection().createRange() ;
 		for ( i = 0 ; i < oRange.length ; i++ )
 		{
@@ -177,5 +177,5 @@
 	else
 	{
-		oRange  = FCK.EditorDocument.selection.createRange() ;
+		oRange  = this.GetSelection().createRange() ;
 		oNode = oRange.parentElement() ;
 	}
@@ -190,5 +190,5 @@
 {
 	// Gets the actual selection.
-	var oSel = FCK.EditorDocument.selection ;
+	var oSel = this.GetSelection() ;
 
 	// Deletes the actual selection contents.
@@ -200,2 +200,76 @@
 	return oSel ;
 } ;
+
+/**
+ * Returns the native selection object.
+ */
+FCKSelection.GetSelection = function()
+{
+	this.Restore() ;
+	return FCK.EditorDocument.selection ;
+}
+
+FCKSelection.Save = function()
+{
+	// Ensures the editor has the selection focus. (#1801)
+	FCK.Focus() ;
+
+	var editorDocument = FCK.EditorDocument ;
+
+	if ( !editorDocument )
+		return ;
+
+	var selection = editorDocument.selection ;
+	var range ;
+
+	if ( selection )
+	{
+		range = selection.createRange() ;
+
+		// Ensure that the range comes from the editor document.
+		if ( range )
+		{
+			if ( range.parentElement && FCKTools.GetElementDocument( range.parentElement() ) != editorDocument )
+				range = null ;
+			else if ( range.item && FCKTools.GetElementDocument( range.item(0) )!= editorDocument )
+				range = null ;
+		}
+	}
+
+	this.SelectionData = range ;
+}
+
+FCKSelection._GetSelectionDocument = function( selection )
+{
+	var range = selection.createRange() ;
+	if ( !range )
+		return null;
+	else if ( range.item )
+		return FCKTools.GetElementDocument( range.item( 0 ) ) ;
+	else
+		return FCKTools.GetElementDocument( range.parentElement() ) ;
+}
+
+FCKSelection.Restore = function()
+{
+	if ( this.SelectionData )
+	{
+		FCK.IsSelectionChangeLocked = true ;
+
+		try
+		{
+			// Don't repeat the restore process if the editor document is already selected.
+			if ( this._GetSelectionDocument( FCK.EditorDocument.selection ) == FCK.EditorDocument )
+				return ;
+			this.SelectionData.select() ;
+		}
+		catch ( e ) {}
+
+		FCK.IsSelectionChangeLocked = false ;
+	}
+}
+
+FCKSelection.Release = function()
+{
+	delete this.SelectionData ;
+}
Index: /FCKeditor/releases/stable/editor/_source/internals/fckstyles.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fckstyles.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fckstyles.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -89,5 +89,5 @@
 				var state = style.CheckActive( path ) ;
 
-				if ( style._LastState != state )
+				if ( state != ( style._LastState || null ) )
 				{
 					style._LastState = state ;
@@ -211,4 +211,6 @@
 			if ( tagsRegex.test( currentNode.nodeName ) )
 				FCKDomTools.RemoveNode( currentNode, true ) ;
+			else
+				FCKDomTools.RemoveAttributes( currentNode, FCKConfig.RemoveAttributesArray );
 
 			currentNode = nextNode ;
Index: /FCKeditor/releases/stable/editor/_source/internals/fcktablehandler.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fcktablehandler.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fcktablehandler.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -367,6 +367,6 @@
 	var baseColIdx = colIdx - selectionGeometry.x ;
 	var baseRowIdx = rowIdx - selectionGeometry.y ;
-	var cellContents = refCell.ownerDocument.createDocumentFragment() ;
-	for ( var i = 0 ; i < selectionGeometry.height ; i++ ) 
+	var cellContents = FCKTools.GetElementDocument( refCell ).createDocumentFragment() ;
+	for ( var i = 0 ; i < selectionGeometry.height ; i++ )
 	{
 		var rowChildNodesCount = 0 ;
@@ -377,5 +377,5 @@
 			{
 				var node = currentCell.removeChild( currentCell.firstChild ) ;
-				if ( node.nodeType != 1 
+				if ( node.nodeType != 1
 					|| ( node.getAttribute( 'type', 2 ) != '_moz' && node.getAttribute( '_moz_dirty' ) != null ) )
 				{
@@ -386,5 +386,5 @@
 		}
 		if ( rowChildNodesCount > 0 )
-			cellContents.appendChild( refCell.ownerDocument.createElement( 'br' ) ) ;
+			cellContents.appendChild( FCKTools.GetElementDocument( refCell ).createElement( 'br' ) ) ;
 	}
 
@@ -393,5 +393,5 @@
 	this._InstallTableMap( tableMap, refCell.parentNode.parentNode ) ;
 	refCell.appendChild( cellContents ) ;
-	
+
 	if ( FCKBrowserInfo.IsGeckoLike && ( ! refCell.firstChild ) )
 		FCKTools.AppendBogusBr( refCell ) ;
@@ -407,5 +407,5 @@
 	var refCell = target.refCell ;
 	var tableMap = target.tableMap ;
-	var nextCell = target.nextCell ; 
+	var nextCell = target.nextCell ;
 
 	var cellContents = FCK.EditorDocument.createDocumentFragment() ;
@@ -431,9 +431,9 @@
 	var nextCell = target.nextCell ;
 
-	var cellContents = refCell.ownerDocument.createDocumentFragment() ;
+	var cellContents = FCKTools.GetElementDocument( refCell ).createDocumentFragment() ;
 	while ( nextCell && nextCell.childNodes && nextCell.childNodes.length > 0 )
 		cellContents.appendChild( nextCell.removeChild( nextCell.firstChild ) ) ;
 	if ( cellContents.firstChild )
-		cellContents.insertBefore( nextCell.ownerDocument.createElement( 'br' ), cellContents.firstChild ) ;
+		cellContents.insertBefore( FCKTools.GetElementDocument( nextCell ).createElement( 'br' ), cellContents.firstChild ) ;
 	refCell.appendChild( cellContents ) ;
 	this._MarkCells( [nextCell], '_Replace' ) ;
@@ -461,5 +461,5 @@
 		// new cell gets floor(colSpan/2).
 		var newCellSpan = Math.ceil( cellSpan / 2 ) ;
-		var newCell = refCell.ownerDocument.createElement( 'td' ) ;
+		var newCell = FCKTools.GetElementDocument( refCell ).createElement( 'td' ) ;
 		if ( FCKBrowserInfo.IsGeckoLike )
 			FCKTools.AppendBogusBr( newCell ) ;
@@ -475,8 +475,8 @@
 	else
 	{
-		// Splitting a single-column cell - add a new cell, and expand 
+		// Splitting a single-column cell - add a new cell, and expand
 		// cells crossing the same column.
 		var newTableMap = [] ;
-		for ( var i = 0 ; i < tableMap.length ; i++ ) 
+		for ( var i = 0 ; i < tableMap.length ; i++ )
 		{
 			var newRow = tableMap[i].slice( 0, colIdx ) ;
@@ -489,5 +489,5 @@
 			{
 				newRow.push( refCell ) ;
-				newRow.push( refCell.ownerDocument.createElement( 'td' ) ) ;
+				newRow.push( FCKTools.GetElementDocument( refCell ).createElement( 'td' ) ) ;
 				if ( FCKBrowserInfo.IsGeckoLike )
 					FCKTools.AppendBogusBr( newRow[newRow.length - 1] ) ;
@@ -552,5 +552,5 @@
 		var newRow = FCK.EditorDocument.createElement( 'tr' ) ;
 		currentCell.parentNode.parentNode.insertBefore( newRow, currentCell.parentNode.parentNode.rows[newCellRowIndex] ) ;
-		
+
 		// 2. +1 to rowSpan for all cells crossing currentCell's row.
 		for ( var i = 0 ; i < tableMap[currentRowIndex].length ; )
@@ -756,5 +756,5 @@
 	for ( var i = 0 ; i < tableMap.length ; i++ )
 	{
-		var rowObj = table.ownerDocument.createElement( 'tr' ) ;
+		var rowObj = FCKTools.GetElementDocument( table ).createElement( 'tr' ) ;
 		for ( var j = 0 ; j < tableMap[i].length ; )
 		{
Index: /FCKeditor/releases/stable/editor/_source/internals/fcktablehandler_gecko.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fcktablehandler_gecko.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fcktablehandler_gecko.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -26,5 +26,5 @@
 	var aCells = new Array() ;
 
-	var oSelection = FCK.EditorWindow.getSelection() ;
+	var oSelection = FCKSelection.GetSelection() ;
 
 	// If the selection is a text.
Index: /FCKeditor/releases/stable/editor/_source/internals/fcktablehandler_ie.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fcktablehandler_ie.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fcktablehandler_ie.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -32,5 +32,5 @@
 	var aCells = new Array() ;
 
-	var oRange = FCK.EditorDocument.selection.createRange() ;
+	var oRange = FCKSelection.GetSelection().createRange() ;
 //	var oParent = oRange.parentElement() ;
 	var oParent = FCKSelection.GetParentElement() ;
Index: /FCKeditor/releases/stable/editor/_source/internals/fcktoolbaritems.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fcktoolbaritems.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fcktoolbaritems.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/internals/fcktoolbarset.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fcktoolbarset.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fcktoolbarset.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -51,5 +51,8 @@
 			if ( oOutMatch )
 			{
-				eToolbarTarget = eval( 'parent.' + oOutMatch[1] ).document.getElementById( oOutMatch[2] ) ;
+				if ( FCKBrowserInfo.IsAIR )
+					FCKAdobeAIR.ToolbarSet_GetOutElement( window, oOutMatch ) ;
+				else
+					eToolbarTarget = eval( 'parent.' + oOutMatch[1] ).document.getElementById( oOutMatch[2] ) ;
 			}
 			else
@@ -91,6 +94,27 @@
 			// Initialize the IFRAME document body.
 			eTargetDocument.open() ;
-			eTargetDocument.write( '<html><head>' + sBase + '<script type="text/javascript"> var adjust = function() { window.frameElement.height = document.body.scrollHeight ; }; window.onresize = adjust; window.onload = function () {window.setTimeout( adjust, 0 );}</script></head><body style="overflow: hidden">' + document.getElementById( 'xToolbarSpace' ).innerHTML + '</body></html>' ) ;
+			eTargetDocument.write( '<html><head>' + sBase + '<script type="text/javascript"> var adjust = function() { window.frameElement.height = document.body.scrollHeight ; }; '
+					+ 'window.onresize = window.onload = '
+					+ 'function(){'		// poll scrollHeight until it no longer changes for 1 sec.
+					+ 'var timer = null;'
+					+ 'var lastHeight = -1;'
+					+ 'var lastChange = 0;'
+					+ 'var poller = function(){'
+					+ 'var currentHeight = document.body.scrollHeight || 0;'
+					+ 'var currentTime = (new Date()).getTime();'
+					+ 'if (currentHeight != lastHeight){'
+					+ 'lastChange = currentTime;'
+					+ 'adjust();'
+					+ 'lastHeight = document.body.scrollHeight;'
+					+ '}'
+					+ 'if (lastChange < currentTime - 1000) clearInterval(timer);'
+					+ '};'
+					+ 'timer = setInterval(poller, 100);'
+					+ '}'
+					+ '</script></head><body style="overflow: hidden">' + document.getElementById( 'xToolbarSpace' ).innerHTML + '</body></html>' ) ;
 			eTargetDocument.close() ;
+
+			if( FCKBrowserInfo.IsAIR )
+				FCKAdobeAIR.ToolbarSet_InitOutFrame( eTargetDocument ) ;
 
 			FCKTools.AddEventListener( eTargetDocument, 'contextmenu', FCKTools.CancelEvent ) ;
@@ -98,9 +122,9 @@
 			// Load external resources (must be done here, otherwise Firefox will not
 			// have the document DOM ready to be used right away.
-			FCKTools.AppendStyleSheet( eTargetDocument, FCKConfig.SkinPath + 'fck_editor.css' ) ;
+			FCKTools.AppendStyleSheet( eTargetDocument, FCKConfig.SkinEditorCSS ) ;
 
 			oToolbarSet = eToolbarTarget.__FCKToolbarSet = new FCKToolbarSet( eTargetDocument ) ;
 			oToolbarSet._IFrame = eToolbarIFrame ;
-			
+
 			if ( FCK.IECleanup )
 				FCK.IECleanup.AddItem( eToolbarTarget, FCKToolbarSet_Target_Cleanup ) ;
@@ -108,4 +132,6 @@
 
 	oToolbarSet.CurrentInstance = FCK ;
+	if ( !oToolbarSet.ToolbarItems )
+		oToolbarSet.ToolbarItems = FCKToolbarItems ;
 
 	FCK.AttachToOnSelectionChange( oToolbarSet.RefreshItemsState ) ;
@@ -253,5 +279,5 @@
 		// If the configuration for the toolbar is missing some element or has any extra comma
 		// this item won't be valid, so skip it and keep on processing.
-		if ( !oToolbarItems ) 
+		if ( !oToolbarItems )
 			continue ;
 
Index: /FCKeditor/releases/stable/editor/_source/internals/fcktools.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fcktools.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fcktools.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -32,24 +32,118 @@
 }
 
-// Returns a reference to the appended style sheet or an array with all the appended references
-FCKTools.AppendStyleSheet = function( documentElement, cssFileUrlOrArray )
-{
-	if ( typeof( cssFileUrlOrArray ) == 'string' )
-		return this._AppendStyleSheet( documentElement, cssFileUrlOrArray ) ;
+/**
+ * Fixes relative URL entries defined inside CSS styles by appending a prefix
+ * to them.
+ * @param (String) cssStyles The CSS styles definition possibly containing url()
+ *		paths.
+ * @param (String) urlFixPrefix The prefix to append to relative URLs.
+ */
+FCKTools.FixCssUrls = function( urlFixPrefix, cssStyles )
+{
+	if ( !urlFixPrefix || urlFixPrefix.length == 0 )
+		return cssStyles ;
+
+	return cssStyles.replace( /url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g, function( match, opener, path, closer )
+		{
+			if ( /^\/|^\w?:/.test( path ) )
+				return match ;
+			else
+				return 'url(' + opener + urlFixPrefix + path + closer + ')' ;
+		} ) ;
+}
+
+FCKTools._GetUrlFixedCss = function( cssStyles, urlFixPrefix )
+{
+	var match = cssStyles.match( /^([^|]+)\|([\s\S]*)/ ) ;
+
+	if ( match )
+		return FCKTools.FixCssUrls( match[1], match[2] ) ;
 	else
-	{
-		var aStyleSheeArray = new Array() ;
-
-		for ( var i = 0 ; i < cssFileUrlOrArray.length ; i++ )
-			aStyleSheeArray.push(this._AppendStyleSheet( documentElement, cssFileUrlOrArray[i] ) ) ;
-
-		return aStyleSheeArray ;
-	}
-}
-
-FCKTools.AppendStyleString = function ( documentElement, cssStyles )
-{
-	this._AppendStyleString( documentElement, cssStyles ) ;
-}
+		return cssStyles ;
+}
+
+/**
+ * Appends a <link css> or <style> element to the document.
+ * @param (Object) documentElement The DOM document object to which append the
+ *		stylesheet.
+ * @param (Variant) cssFileOrDef A String pointing to the CSS file URL or an
+ *		Array with many CSS file URLs or the CSS definitions for the <style>
+ *		element.
+ * @return {Array} An array containing all elements created in the target
+ *		document. It may include <link> or <style> elements, depending on the
+ *		value passed with cssFileOrDef.
+ */
+FCKTools.AppendStyleSheet = function( domDocument, cssFileOrArrayOrDef )
+{
+	if ( !cssFileOrArrayOrDef )
+		return [] ;
+
+	if ( typeof( cssFileOrArrayOrDef ) == 'string' )
+	{
+		// Test if the passed argument is an URL.
+		if ( /[\\\/\.]\w*$/.test( cssFileOrArrayOrDef ) )
+		{
+			// The string may have several URLs separated by comma.
+			return this.AppendStyleSheet( domDocument, cssFileOrArrayOrDef.split(',') ) ;
+		}
+		else
+			return [ this.AppendStyleString( domDocument, FCKTools._GetUrlFixedCss( cssFileOrArrayOrDef ) ) ] ;
+	}
+	else
+	{
+		var styles = [] ;
+		for ( var i = 0 ; i < cssFileOrArrayOrDef.length ; i++ )
+			styles.push( this._AppendStyleSheet( domDocument, cssFileOrArrayOrDef[i] ) ) ;
+		return styles ;
+	}
+}
+
+FCKTools.GetStyleHtml = (function()
+{
+	var getStyle = function( styleDef, markTemp )
+	{
+		if ( styleDef.length == 0 )
+			return '' ;
+
+		var temp = markTemp ? ' _fcktemp="true"' : '' ;
+		return '<' + 'style type="text/css"' + temp + '>' + styleDef + '<' + '/style>' ;
+	}
+
+	var getLink = function( cssFileUrl, markTemp )
+	{
+		if ( cssFileUrl.length == 0 )
+			return '' ;
+
+		var temp = markTemp ? ' _fcktemp="true"' : '' ;
+		return '<' + 'link href="' + cssFileUrl + '" type="text/css" rel="stylesheet" ' + temp + '/>' ;
+	}
+
+	return function( cssFileOrArrayOrDef, markTemp )
+	{
+		if ( !cssFileOrArrayOrDef )
+			return '' ;
+
+		if ( typeof( cssFileOrArrayOrDef ) == 'string' )
+		{
+			// Test if the passed argument is an URL.
+			if ( /[\\\/\.]\w*$/.test( cssFileOrArrayOrDef ) )
+			{
+				// The string may have several URLs separated by comma.
+				return this.GetStyleHtml( cssFileOrArrayOrDef.split(','), markTemp ) ;
+			}
+			else
+				return getStyle( this._GetUrlFixedCss( cssFileOrArrayOrDef ), markTemp ) ;
+		}
+		else
+		{
+			var html = '' ;
+
+			for ( var i = 0 ; i < cssFileOrArrayOrDef.length ; i++ )
+				html += getLink( cssFileOrArrayOrDef[i], markTemp ) ;
+
+			return html ;
+		}
+	}
+})() ;
 
 FCKTools.GetElementDocument = function ( element )
@@ -367,6 +461,6 @@
 {
 	// There is no compatMode in Safari, but it seams that it always behave as
-	// CSS1Compat, so let's assume it as the default.
-	return ( 'CSS1Compat' == ( document.compatMode || 'CSS1Compat' ) ) ;
+	// CSS1Compat, so let's assume it as the default for that browser.
+	return ( 'CSS1Compat' == ( document.compatMode || ( FCKBrowserInfo.IsSafari ? 'CSS1Compat' : null ) ) ) ;
 }
 
@@ -452,5 +546,5 @@
 				prevNode = null ;
 				if ( curNode )
-					curWindow = FCKTools.GetElementWindow( curNode ) ;
+					curWindow = curNode.contentWindow.parent ;
 			}
 			else
@@ -463,6 +557,6 @@
 	// 2. It matters is when we're in IE and the element has no positioned ancestor.
 	// Otherwise the values should be ignored.
-	if ( FCKDomTools.GetCurrentElementStyle( w, w.document.body, 'position') != 'static' 
-			|| ( FCKBrowserInfo.IsIE && FCKDomTools.GetPositionedAncestor( w, node ) == null ) )
+	if ( FCKDomTools.GetCurrentElementStyle( w.document.body, 'position') != 'static'
+			|| ( FCKBrowserInfo.IsIE && FCKDomTools.GetPositionedAncestor( node ) == null ) )
 	{
 		x += w.document.body.offsetLeft ;
@@ -612,10 +706,35 @@
 
 /**
- * Utility function to wrap a call to an object's method,
- * so it can be passed for example to an event handler,
- * and then it will be executed with 'this' being the object.
- */
-FCKTools.Hitch = function( obj, methodName )
-{
-  return function() { obj[methodName].apply(obj, arguments); } ;
-}
+ * Binding the "this" reference to an object for a function.
+ */
+FCKTools.Bind = function( subject, func )
+{
+  return function(){ return func.apply( subject, arguments ) ; } ;
+}
+
+/**
+ * Retrieve the correct "empty iframe" URL for the current browser, which
+ * causes the minimum fuzz (e.g. security warnings in HTTPS, DNS error in
+ * IE5.5, etc.) for that browser, making the iframe ready to DOM use whithout
+ * having to loading an external file.
+ */
+FCKTools.GetVoidUrl = function()
+{
+	if ( FCK_IS_CUSTOM_DOMAIN )
+		return "javascript: void( function(){" +
+			"document.open();" +
+			"document.write('<html><head><title></title></head><body></body></html>');" +
+			"document.domain = '" + FCK_RUNTIME_DOMAIN + "';" +
+			"document.close();" +
+			"}() ) ;";
+
+	if ( FCKBrowserInfo.IsIE )
+	{
+		if ( FCKBrowserInfo.IsIE7 || !FCKBrowserInfo.IsIE6 )
+			return "" ;					// IE7+ / IE5.5
+		else
+			return "javascript: '';" ;	// IE6+
+	}
+
+	return "javascript: void(0);" ;		// All other browsers.
+}
Index: /FCKeditor/releases/stable/editor/_source/internals/fcktools_gecko.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fcktools_gecko.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fcktools_gecko.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -31,7 +31,9 @@
 {
 	if ( FCKBrowserInfo.IsGecko )
-		element.style.MozUserSelect	= 'none' ;	// Gecko only.
+		element.style.MozUserSelect		= 'none' ;	// Gecko only.
+	else if ( FCKBrowserInfo.IsSafari )
+		element.style.KhtmlUserSelect	= 'none' ;	// WebKit only.
 	else
-		element.style.userSelect	= 'none' ;	// CSS3 (not supported yet).
+		element.style.userSelect		= 'none' ;	// CSS3 (not supported yet).
 }
 
@@ -48,6 +50,9 @@
 
 // Appends a CSS style string to a document.
-FCKTools._AppendStyleString = function( documentElement, cssStyles )
-{
+FCKTools.AppendStyleString = function( documentElement, cssStyles )
+{
+	if ( !cssStyles )
+		return null ;
+
 	var e = documentElement.createElement( "STYLE" ) ;
 	e.appendChild( documentElement.createTextNode( cssStyles ) ) ;
@@ -112,6 +117,13 @@
 		case 'XmlHttp' :
 			return new XMLHttpRequest() ;
+
 		case 'DOMDocument' :
-			return document.implementation.createDocument( '', '', null ) ;
+			// Originaly, we were had the following here:
+			// return document.implementation.createDocument( '', '', null ) ;
+			// But that doesn't work if we're running under domain relaxation mode, so we need a workaround.
+			// See http://ajaxian.com/archives/xml-messages-with-cross-domain-json about the trick we're using.
+			var doc = ( new DOMParser() ).parseFromString( '<tmp></tmp>', 'text/xml' ) ;
+			FCKDomTools.RemoveNode( doc.firstChild ) ;
+			return doc ;
 	}
 	return null ;
@@ -192,5 +204,5 @@
 	targetWindow.$ = function( id )
 	{
-		return this.document.getElementById( id ) ;
+		return targetWindow.document.getElementById( id ) ;
 	} ;
 }
@@ -225,5 +237,5 @@
 
 		/*
-		FCKDebug.Output( el.tagName + ":" + "offset=" + el.offsetLeft + "," + el.offsetTop + "  " 
+		FCKDebug.Output( el.tagName + ":" + "offset=" + el.offsetLeft + "," + el.offsetTop + "  "
 				+ "scroll=" + el.scrollLeft + "," + el.scrollTop ) ;
 		*/
Index: /FCKeditor/releases/stable/editor/_source/internals/fcktools_ie.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fcktools_ie.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fcktools_ie.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -34,6 +34,9 @@
 
 // Appends a CSS style string to a document.
-FCKTools._AppendStyleString = function( documentElement, cssStyles )
-{
+FCKTools.AppendStyleString = function( documentElement, cssStyles )
+{
+	if ( !cssStyles )
+		return null ;
+
 	var s = documentElement.createStyleSheet( "" ) ;
 	s.cssText = cssStyles ;
@@ -72,4 +75,7 @@
 	{
 		case 'XmlHttp' :
+			// Try the native XMLHttpRequest introduced with IE7.
+			try { return new XMLHttpRequest() ; } catch (e) {}
+
 			aObjs = [ 'MSXML2.XmlHttp', 'Microsoft.XmlHttp' ] ;
 			break ;
Index: /FCKeditor/releases/stable/editor/_source/internals/fckundo.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fckundo.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fckundo.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -32,4 +32,6 @@
 FCKUndo._GetBookmark = function()
 {
+	FCKSelection.Restore() ;
+
 	var range = new FCKDomRange( FCK.EditorWindow ) ;
 	try
@@ -109,5 +111,5 @@
 	else
 	{
-		return this._CompareCursors( bookmark1.Start, bookmark2.Start ) == 0 
+		return this._CompareCursors( bookmark1.Start, bookmark2.Start ) == 0
 			&& this._CompareCursors( bookmark1.End, bookmark2.End ) == 0 ;
 	}
@@ -132,6 +134,6 @@
 
 	// Cancel operation if the new step is identical to the previous one.
-	if ( this.CurrentIndex > 0 
-			&& sHtml == this.SavedData[ this.CurrentIndex ][0] 
+	if ( this.CurrentIndex > 0
+			&& sHtml == this.SavedData[ this.CurrentIndex ][0]
 			&& this._CheckIsBookmarksEqual( bookmark, this.SavedData[ this.CurrentIndex ][1] ) )
 		return ;
Index: /FCKeditor/releases/stable/editor/_source/internals/fckurlparams.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fckurlparams.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fckurlparams.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/_source/internals/fckxhtml.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fckxhtml.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fckxhtml.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -28,5 +28,5 @@
 FCKXHtml.GetXHTML = function( node, includeNode, format )
 {
-	FCKDomTools.CheckAndRemovePaddingNode( node.ownerDocument, FCKConfig.EnterMode ) ;
+	FCKDomTools.CheckAndRemovePaddingNode( FCKTools.GetElementDocument( node ), FCKConfig.EnterMode ) ;
 	FCKXHtmlEntities.Initialize() ;
 
@@ -147,5 +147,5 @@
 		}
 	}
-	
+
 	// If the resulting node is empty.
 	if ( xmlNode.childNodes.length == 0 )
@@ -183,6 +183,6 @@
 			// If we detect a <br> inside a <pre> in Gecko, turn it into a line break instead.
 			// This is a workaround for the Gecko bug here: https://bugzilla.mozilla.org/show_bug.cgi?id=92921
-			if ( FCKBrowserInfo.IsGecko 
-					&& htmlNode.tagName.toLowerCase() == 'br' 
+			if ( FCKBrowserInfo.IsGecko
+					&& htmlNode.tagName.toLowerCase() == 'br'
 					&& htmlNode.parentNode.tagName.toLowerCase() == 'pre' )
 			{
@@ -236,5 +236,5 @@
 
 			var oNode = this.XML.createElement( sNodeName ) ;
-			
+
 			// Add all attributes.
 			FCKXHtml._AppendAttributes( xmlNode, htmlNode, oNode, sNodeName ) ;
@@ -404,4 +404,33 @@
 	},
 
+	// Fix orphaned <li> nodes (Bug #503).
+	li : function( node, htmlNode, targetNode )
+	{
+		// If the XML parent node is already a <ul> or <ol>, then add the <li> as usual.
+		if ( targetNode.nodeName.IEquals( ['ul', 'ol'] ) )
+			return FCKXHtml._AppendChildNodes( node, htmlNode, true ) ;
+
+		var newTarget = FCKXHtml.XML.createElement( 'ul' ) ;
+
+		// Reset the _fckxhtmljob so the HTML node is processed again.
+		htmlNode._fckxhtmljob = null ;
+
+		// Loop through all sibling LIs, adding them to the <ul>.
+		do
+		{
+			FCKXHtml._AppendNode( newTarget, htmlNode ) ;
+
+			// Look for the next element following this <li>.
+			do
+			{
+				htmlNode = FCKDomTools.GetNextSibling( htmlNode ) ;
+
+			} while ( htmlNode && htmlNode.nodeType == 3 && htmlNode.nodeValue.Trim().length == 0 )
+
+		}	while ( htmlNode && htmlNode.nodeName.toLowerCase() == 'li' )
+
+		return newTarget ;
+	},
+
 	// Fix nested <ul> and <ol>.
 	ol : function( node, htmlNode, targetNode )
Index: /FCKeditor/releases/stable/editor/_source/internals/fckxhtml_gecko.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fckxhtml_gecko.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fckxhtml_gecko.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -25,9 +25,5 @@
 FCKXHtml._GetMainXmlString = function()
 {
-	// Create the XMLSerializer.
-	var oSerializer = new XMLSerializer() ;
-
-	// Return the serialized XML as a string.
-	return oSerializer.serializeToString( this.MainNode ) ;
+	return ( new XMLSerializer() ).serializeToString( this.MainNode ) ;
 }
 
@@ -73,5 +69,5 @@
 {
 	// Opera moves the <FCK:meta> element outside head (#1166).
-	
+
 	// Save a reference to the XML <head> node, so we can use it for
 	// orphan <meta>s.
@@ -79,5 +75,5 @@
 	{
 		FCKXHtml.XML._HeadElement = node ;
-		
+
 		node = FCKXHtml._AppendChildNodes( node, htmlNode, true ) ;
 
@@ -92,5 +88,5 @@
 		{
 			var headElement = FCKXHtml.XML._HeadElement ;
-			
+
 			if ( headElement && xmlNode != headElement )
 			{
Index: /FCKeditor/releases/stable/editor/_source/internals/fckxhtml_ie.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fckxhtml_ie.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fckxhtml_ie.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -147,5 +147,5 @@
 }
 
-// Fix behavior for IE, it doesn't read back the .name on newly created maps 
+// Fix behavior for IE, it doesn't read back the .name on newly created maps
 FCKXHtml.TagProcessors['map'] = function( node, htmlNode )
 {
Index: /FCKeditor/releases/stable/editor/_source/internals/fckxhtmlentities.js
===================================================================
--- /FCKeditor/releases/stable/editor/_source/internals/fckxhtmlentities.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/_source/internals/fckxhtmlentities.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/css/fck_editorarea.css
===================================================================
--- /FCKeditor/releases/stable/editor/css/fck_editorarea.css	(revision 1901)
+++ /FCKeditor/releases/stable/editor/css/fck_editorarea.css	(revision 1902)
@@ -1,5 +1,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/css/fck_internal.css
===================================================================
--- /FCKeditor/releases/stable/editor/css/fck_internal.css	(revision 1901)
+++ /FCKeditor/releases/stable/editor/css/fck_internal.css	(revision 1902)
@@ -1,5 +1,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -20,4 +20,11 @@
  *
  * 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).
  */
 
@@ -45,4 +52,14 @@
 	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;
@@ -147,5 +164,5 @@
 }
 
-.FCK__ShowBlocks blockquote 
+.FCK__ShowBlocks blockquote
 {
 	background-image: url(images/block_blockquote.png);
Index: /FCKeditor/releases/stable/editor/css/fck_showtableborders_gecko.css
===================================================================
--- /FCKeditor/releases/stable/editor/css/fck_showtableborders_gecko.css	(revision 1901)
+++ /FCKeditor/releases/stable/editor/css/fck_showtableborders_gecko.css	(revision 1902)
@@ -1,5 +1,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -20,4 +20,11 @@
  *
  * 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).
  */
 
Index: /FCKeditor/releases/stable/editor/dialog/common/fck_dialog_common.css
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/common/fck_dialog_common.css	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/common/fck_dialog_common.css	(revision 1902)
@@ -1,5 +1,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -21,4 +21,11 @@
  * 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).
  */
 
Index: /FCKeditor/releases/stable/editor/dialog/common/fck_dialog_common.js
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/common/fck_dialog_common.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/common/fck_dialog_common.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -20,5 +20,45 @@
  *
  * 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
+	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.
@@ -58,32 +98,45 @@
 }
 
-var KeyIdentifierMap = 
-{
-	End		: 35,
-	Home	: 36,
-	Left	: 37,
-	Right	: 39,
-	'U+00007F' : 46		// Delete
-} 
+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.
-function IsDigit( 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
-	) ;
-}
+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()
@@ -164,2 +217,122 @@
 		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 ;
+}
Index: /FCKeditor/releases/stable/editor/dialog/fck_about.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_about.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_about.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -71,5 +71,5 @@
 		<table cellpadding="0" cellspacing="0" border="0" width="100%" style="height: 100%">
 			<tr>
-				<td>
+				<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">
@@ -79,6 +79,6 @@
 								<span fcklang="DlgAboutVersion">version</span>
 								<br />
-								<b>2.5.1</b><br />
-								Build 17566</td>
+								<b>2.6</b><br />
+								Build 18638</td>
 						</tr>
 					</table>
@@ -86,22 +86,28 @@
 			</tr>
 			<tr style="height: 100%">
-				<td align="center">
-					&nbsp;<br />
+				<td align="center" valign="middle">
 					<span style="font-size: 14px" dir="ltr">
-						<br />
 						<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>
-					<br />
-					<br />
-					<br />
+					<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-2007 <a href="#" onclick="SendEMail();">Frederico Caldeira Knabben</a>
+					Copyright &copy; 2003-2008 <a href="#" onclick="SendEMail();">Frederico Caldeira Knabben</a>
 				</td>
-			</tr>
-			<tr>
 				<td align="center">
-					<img alt="" src="fck_about/logo_fredck.gif" width="87" height="36" />
+					<a href="http://www.fckeditor.net/sponsors/apply" target="_blank">Become a Sponsor</a>
 				</td>
 			</tr>
Index: /FCKeditor/releases/stable/editor/dialog/fck_anchor.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_anchor.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_anchor.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -30,14 +30,16 @@
 		<script type="text/javascript">
 
-var oEditor	= window.parent.InnerDialogLoaded() ;
-var FCK		= oEditor.FCK ;
-var FCKBrowserInfo = oEditor.FCKBrowserInfo ;
-var FCKTools = oEditor.FCKTools ;
-var FCKRegexLib = oEditor.FCKRegexLib ;
-
-// Gets the document DOM
-var oDOM = oEditor.FCK.EditorDocument ;
-
-var oFakeImage = FCK.Selection.GetSelectedElement() ;
+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 ;
 
@@ -70,4 +72,6 @@
 	window.parent.SetOkButton( true ) ;
 	window.parent.SetAutoSize( true ) ;
+
+	SelectField( 'txtName' ) ;
 }
 
Index: /FCKeditor/releases/stable/editor/dialog/fck_button.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_button.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_button.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -30,10 +30,11 @@
 	<script type="text/javascript">
 
-var oEditor = window.parent.InnerDialogLoaded() ;
+var dialog	= window.parent ;
+var oEditor	= dialog.InnerDialogLoaded() ;
 
 // Gets the document DOM
 var oDOM = oEditor.FCK.EditorDocument ;
 
-var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
+var oActiveEl = dialog.Selection.GetSelectedElement() ;
 
 window.onload = function()
@@ -47,12 +48,11 @@
 		GetE('txtValue').value	= oActiveEl.value ;
 		GetE('txtType').value	= oActiveEl.type ;
-
-		GetE('txtType').disabled = true ;
 	}
 	else
 		oActiveEl = null ;
 
-	window.parent.SetOkButton( true ) ;
-	window.parent.SetAutoSize( true ) ;
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
 }
 
@@ -60,13 +60,7 @@
 {
 	oEditor.FCKUndo.SaveUndoStep() ;
-	
-	if ( !oActiveEl )
-	{
-		oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
-		oActiveEl.type = GetE('txtType').value ;
-		oActiveEl = oEditor.FCK.InsertElement( oActiveEl ) ;
-	}
 
-	oActiveEl.name = GetE('txtName').value ;
+	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: GetE('txtType').value } ) ;
+
 	SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
 
Index: /FCKeditor/releases/stable/editor/dialog/fck_checkbox.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_checkbox.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_checkbox.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -30,10 +30,11 @@
 		<script type="text/javascript">
 
-var oEditor = window.parent.InnerDialogLoaded() ;
+var dialog	= window.parent ;
+var oEditor	= dialog.InnerDialogLoaded() ;
 
 // Gets the document DOM
 var oDOM = oEditor.FCK.EditorDocument ;
 
-var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
+var oActiveEl = dialog.Selection.GetSelectedElement() ;
 
 window.onload = function()
@@ -51,6 +52,7 @@
 		oActiveEl = null ;
 
-	window.parent.SetOkButton( true ) ;
-	window.parent.SetAutoSize( true ) ;
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
 }
 
@@ -58,14 +60,6 @@
 {
 	oEditor.FCKUndo.SaveUndoStep() ;
-	
-	if ( !oActiveEl )
-	{
-		oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
-		oActiveEl.type = 'checkbox' ;
-		oActiveEl = oEditor.FCK.InsertElement( oActiveEl ) ;
-	}
 
-	if ( GetE('txtName').value.length > 0 )
-		oActiveEl.name = GetE('txtName').value ;
+	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: 'checkbox' } ) ;
 
 	if ( oEditor.FCKBrowserInfo.IsIE )
Index: /FCKeditor/releases/stable/editor/dialog/fck_colorselector.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_colorselector.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_colorselector.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -35,4 +35,5 @@
 			.ColorCell		{ height: 15px ; width: 15px ; }
 		</style>
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
 		<script type="text/javascript">
 
@@ -136,6 +137,6 @@
 function Ok()
 {
-	if ( typeof(window.parent.dialogArguments.CustomValue) == 'function' )
-		window.parent.dialogArguments.CustomValue( document.getElementById('selcolor').value ) ;
+	if ( typeof(window.parent.Args().CustomValue) == 'function' )
+		window.parent.Args().CustomValue( document.getElementById('selcolor').value ) ;
 
 	return true ;
Index: /FCKeditor/releases/stable/editor/dialog/fck_docprops.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_docprops.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_docprops.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -375,9 +375,9 @@
 	switch ( wich )
 	{
-		case 'Back'			: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectBackColor, window ) ; return ;
-		case 'ColorText'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectColorText, window ) ; return ;
-		case 'ColorLink'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectColorLink, window ) ; return ;
-		case 'ColorVisited'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectColorVisited, window ) ; return ;
-		case 'ColorActive'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectColorActive, window ) ; return ;
+		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 ;
 	}
 }
Index: /FCKeditor/releases/stable/editor/dialog/fck_docprops/fck_document_preview.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_docprops/fck_document_preview.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_docprops/fck_document_preview.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/dialog/fck_flash.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_flash.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_flash.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -29,5 +29,9 @@
 		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
 		<script src="fck_flash/fck_flash.js" type="text/javascript"></script>
-		<link href="common/fck_dialog_common.css" type="text/css" rel="stylesheet">
+		<script type="text/javascript">
+
+document.write( FCKTools.GetStyleHtml( GetCommonDialogCss() ) ) ;
+
+		</script>
 	</head>
 	<body scroll="no" style="OVERFLOW: hidden">
@@ -93,5 +97,7 @@
 				<br />
 				<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
-				<iframe name="UploadWindow" style="DISPLAY: none" src="javascript:void(0)"></iframe>
+				<script type="text/javascript">
+					document.write( '<iframe name="UploadWindow" style="DISPLAY: none" src="' + FCKTools.GetVoidUrl() + '"></iframe>' ) ;
+				</script>
 			</form>
 		</div>
Index: /FCKeditor/releases/stable/editor/dialog/fck_flash/fck_flash.js
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_flash/fck_flash.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_flash/fck_flash.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -22,19 +22,21 @@
  */
 
-var oEditor		= window.parent.InnerDialogLoaded() ;
+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.
-window.parent.AddTab( 'Info', oEditor.FCKLang.DlgInfoTab ) ;
+dialog.AddTab( 'Info', oEditor.FCKLang.DlgInfoTab ) ;
 
 if ( FCKConfig.FlashUpload )
-	window.parent.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
+	dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
 
 if ( !FCKConfig.FlashDlgHideAdvanced )
-	window.parent.AddTab( 'Advanced', oEditor.FCKLang.DlgAdvancedTag ) ;
+	dialog.AddTab( 'Advanced', oEditor.FCKLang.DlgAdvancedTag ) ;
 
 // Function called when a dialog tag is selected.
@@ -47,5 +49,5 @@
 
 // Get the selected flash embed (if available).
-var oFakeImage = FCK.Selection.GetSelectedElement() ;
+var oFakeImage = dialog.Selection.GetSelectedElement() ;
 var oEmbed ;
 
@@ -73,8 +75,10 @@
 		GetE('frmUpload').action = FCKConfig.FlashUploadURL ;
 
-	window.parent.SetAutoSize( true ) ;
+	dialog.SetAutoSize( true ) ;
 
 	// Activate the "OK" button.
-	window.parent.SetOkButton( true ) ;
+	dialog.SetOkButton( true ) ;
+
+	SelectField( 'txtUrl' ) ;
 }
 
@@ -115,5 +119,5 @@
 	if ( GetE('txtUrl').value.length == 0 )
 	{
-		window.parent.SetSelectedTab( 'Info' ) ;
+		dialog.SetSelectedTab( 'Info' ) ;
 		GetE('txtUrl').focus() ;
 
@@ -138,5 +142,5 @@
 	}
 
-	oEditor.FCKFlashProcessor.RefreshView( oFakeImage, oEmbed ) ;
+	oEditor.FCKEmbedAndObjectProcessor.RefreshView( oFakeImage, oEmbed ) ;
 
 	return true ;
@@ -228,5 +232,5 @@
 	UpdatePreview() ;
 
-	window.parent.SetSelectedTab( 'Info' ) ;
+	dialog.SetSelectedTab( 'Info' ) ;
 }
 
@@ -253,4 +257,7 @@
 			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 ) ;
Index: /FCKeditor/releases/stable/editor/dialog/fck_flash/fck_flash_preview.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_flash/fck_flash_preview.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_flash/fck_flash_preview.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -27,9 +27,13 @@
 		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 		<meta name="robots" content="noindex, nofollow">
-		<link href="../common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
+		<script src="../common/fck_dialog_common.js" type="text/javascript"></script>
 		<script language="javascript">
 
+var FCKTools	= window.parent.FCKTools ;
+var FCKConfig	= window.parent.FCKConfig ;
+
 // Sets the Skin CSS
-document.write( '<link href="' + window.parent.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
+document.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;
+document.write( FCKTools.GetStyleHtml( GetCommonDialogCss( '../' ) ) ) ;
 
 if ( window.parent.FCKConfig.BaseHref.length > 0 )
Index: /FCKeditor/releases/stable/editor/dialog/fck_form.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_form.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_form.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -30,10 +30,11 @@
 	<script type="text/javascript">
 
-var oEditor = window.parent.InnerDialogLoaded() ;
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
 
 // Gets the document DOM
 var oDOM = oEditor.FCK.EditorDocument ;
 
-var oActiveEl = oEditor.FCKSelection.MoveToAncestorNode( 'FORM' ) ;
+var oActiveEl = dialog.Selection.GetSelection().MoveToAncestorNode( 'FORM' ) ;
 
 window.onload = function()
@@ -51,6 +52,7 @@
 		oActiveEl = null ;
 
-	window.parent.SetOkButton( true ) ;
-	window.parent.SetAutoSize( true ) ;
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
 }
 
Index: /FCKeditor/releases/stable/editor/dialog/fck_hiddenfield.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_hiddenfield.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_hiddenfield.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -30,5 +30,7 @@
 	<script type="text/javascript">
 
-var oEditor = window.parent.InnerDialogLoaded() ;
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
 var FCK = oEditor.FCK ;
 
@@ -37,5 +39,5 @@
 
 // Get the selected flash embed (if available).
-var oFakeImage = FCK.Selection.GetSelectedElement() ;
+var oFakeImage = dialog.Selection.GetSelectedElement() ;
 var oActiveEl ;
 
@@ -59,6 +61,7 @@
 	}
 
-	window.parent.SetOkButton( true ) ;
-	window.parent.SetAutoSize( true ) ;
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
 }
 
@@ -67,14 +70,7 @@
 {
 	oEditor.FCKUndo.SaveUndoStep() ;
-	
-	if ( !oActiveEl )
-	{
-		oActiveEl = FCK.EditorDocument.createElement( 'INPUT' ) ;
-		oActiveEl.type = 'hidden' ;
 
-		oFakeImage = null ;
-	}
+	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: 'hidden' } ) ;
 
-	oActiveEl.name = GetE('txtName').value ;
 	SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
 
@@ -83,10 +79,10 @@
 		oFakeImage	= oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__InputHidden', oActiveEl ) ;
 		oFakeImage.setAttribute( '_fckinputhidden', 'true', 0 ) ;
-		oFakeImage	= FCK.InsertElement( oFakeImage ) ;
+
+		oActiveEl.parentNode.insertBefore( oFakeImage, oActiveEl ) ;
+		oActiveEl.parentNode.removeChild( oActiveEl ) ;
 	}
 	else
 		oEditor.FCKUndo.SaveUndoStep() ;
-
-	oEditor.FCKFlashProcessor.RefreshView( oFakeImage, oActiveEl ) ;
 
 	return true ;
Index: /FCKeditor/releases/stable/editor/dialog/fck_image.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_image.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_image.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -29,5 +29,9 @@
 	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
 	<script src="fck_image/fck_image.js" type="text/javascript"></script>
-	<link href="common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
+		<script type="text/javascript">
+
+document.write( FCKTools.GetStyleHtml( GetCommonDialogCss() ) ) ;
+
+		</script>
 </head>
 <body scroll="no" style="overflow: hidden">
@@ -161,5 +165,7 @@
 			<br />
 			<input id="btnUpload" type="submit" value="Send it to the Server" fcklang="DlgLnkBtnUpload" />
-			<iframe name="UploadWindow" style="display: none" src="javascript:void(0)"></iframe>
+			<script type="text/javascript">
+				document.write( '<iframe name="UploadWindow" style="display: none" src="' + FCKTools.GetVoidUrl() + '"></iframe>' ) ;
+			</script>
 		</form>
 	</div>
Index: /FCKeditor/releases/stable/editor/dialog/fck_image/fck_image.js
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_image/fck_image.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_image/fck_image.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -22,9 +22,11 @@
  */
 
-var oEditor		= window.parent.InnerDialogLoaded() ;
+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' ) ;
@@ -33,14 +35,14 @@
 
 // Set the dialog tabs.
-window.parent.AddTab( 'Info', FCKLang.DlgImgInfoTab ) ;
+dialog.AddTab( 'Info', FCKLang.DlgImgInfoTab ) ;
 
 if ( !bImageButton && !FCKConfig.ImageDlgHideLink )
-	window.parent.AddTab( 'Link', FCKLang.DlgImgLinkTab ) ;
+	dialog.AddTab( 'Link', FCKLang.DlgImgLinkTab ) ;
 
 if ( FCKConfig.ImageUpload )
-	window.parent.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
+	dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
 
 if ( !FCKConfig.ImageDlgHideAdvanced )
-	window.parent.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
+	dialog.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
 
 // Function called when a dialog tag is selected.
@@ -54,5 +56,5 @@
 
 // Get the selected image (if available).
-var oImage = FCK.Selection.GetSelectedElement() ;
+var oImage = dialog.Selection.GetSelectedElement() ;
 
 if ( oImage && oImage.tagName != 'IMG' && !( oImage.tagName == 'INPUT' && oImage.type == 'image' ) )
@@ -60,5 +62,5 @@
 
 // Get the active link.
-var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;
+var oLink = dialog.Selection.GetSelection().MoveToAncestorNode( 'A' ) ;
 
 var oImageOriginal ;
@@ -112,8 +114,10 @@
 		GetE('frmUpload').action = FCKConfig.ImageUploadURL ;
 
-	window.parent.SetAutoSize( true ) ;
+	dialog.SetAutoSize( true ) ;
 
 	// Activate the "OK" button.
-	window.parent.SetOkButton( true ) ;
+	dialog.SetOkButton( true ) ;
+
+	SelectField( 'txtUrl' ) ;
 }
 
@@ -198,5 +202,5 @@
 	if ( GetE('txtUrl').value.length == 0 )
 	{
-		window.parent.SetSelectedTab( 'Info' ) ;
+		dialog.SetSelectedTab( 'Info' ) ;
 		GetE('txtUrl').focus() ;
 
@@ -381,4 +385,9 @@
 {
 	if ( ! oImageOriginal ) return ;
+	if ( oEditor.FCKBrowserInfo.IsGecko && !oImageOriginal.complete )
+	{
+		setTimeout( ResetSizes, 50 ) ;
+		return ;
+	}
 
 	GetE('txtWidth').value  = oImageOriginal.width ;
@@ -434,5 +443,5 @@
 	}
 
-	window.parent.SetSelectedTab( 'Info' ) ;
+	dialog.SetSelectedTab( 'Info' ) ;
 }
 
@@ -459,4 +468,7 @@
 			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 ) ;
Index: /FCKeditor/releases/stable/editor/dialog/fck_image/fck_image_preview.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_image/fck_image_preview.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_image/fck_image_preview.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -29,9 +29,13 @@
 	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 	<meta name="robots" content="noindex, nofollow" />
-	<link href="../common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
+	<script src="../common/fck_dialog_common.js" type="text/javascript"></script>
 	<script type="text/javascript">
 
+var FCKTools	= window.parent.FCKTools ;
+var FCKConfig	= window.parent.FCKConfig ;
+
 // Sets the Skin CSS
-document.write( '<link href="' + window.parent.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
+document.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;
+document.write( FCKTools.GetStyleHtml( GetCommonDialogCss( '../' ) ) ) ;
 
 if ( window.parent.FCKConfig.BaseHref.length > 0 )
@@ -48,19 +52,21 @@
 </head>
 <body style="color: #000000; background-color: #ffffff">
-	<a id="lnkPreview" onclick="return false;" style="cursor: default">
-		<img id="imgPreview" onload="window.parent.UpdateOriginal();" style="display: none" /></a>Lorem
-	ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas feugiat consequat diam.
-	Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, nulla.
-	Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis
-	euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce
-	mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie.
-	Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque
-	egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem,
-	in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut
-	placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy
-	metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices,
-	ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris
-	non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas
-	elementum. Nunc imperdiet gravida mauris.
+	<div>
+		<a id="lnkPreview" onclick="return false;" style="cursor: default">
+			<img id="imgPreview" onload="window.parent.UpdateOriginal();"
+				style="display: none" alt="" /></a>Lorem ipsum dolor sit amet, consectetuer adipiscing
+		elit. Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus
+		a, commodo non, facilisis vitae, nulla. Aenean dictum lacinia tortor. Nunc iaculis,
+		nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed
+		velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper
+		nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices
+		a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus
+		faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget
+		tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit,
+		tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis
+		id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus,
+		eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur
+		ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.
+	</div>
 </body>
 </html>
Index: /FCKeditor/releases/stable/editor/dialog/fck_link.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_link.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_link.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/dialog/fck_link/fck_link.js
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_link/fck_link.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_link/fck_link.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -22,5 +22,7 @@
  */
 
-var oEditor		= window.parent.InnerDialogLoaded() ;
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
 var FCK			= oEditor.FCK ;
 var FCKLang		= oEditor.FCKLang ;
@@ -32,14 +34,14 @@
 
 // Set the dialog tabs.
-window.parent.AddTab( 'Info', FCKLang.DlgLnkInfoTab ) ;
+dialog.AddTab( 'Info', FCKLang.DlgLnkInfoTab ) ;
 
 if ( !FCKConfig.LinkDlgHideTarget )
-	window.parent.AddTab( 'Target', FCKLang.DlgLnkTargetTab, true ) ;
+	dialog.AddTab( 'Target', FCKLang.DlgLnkTargetTab, true ) ;
 
 if ( FCKConfig.LinkUpload )
-	window.parent.AddTab( 'Upload', FCKLang.DlgLnkUpload, true ) ;
+	dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload, true ) ;
 
 if ( !FCKConfig.LinkDlgHideAdvanced )
-	window.parent.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
+	dialog.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
 
 // Function called when a dialog tag is selected.
@@ -51,5 +53,5 @@
 	ShowE('divAttribs'	, ( tabCode == 'Advanced' ) ) ;
 
-	window.parent.SetAutoSize( true ) ;
+	dialog.SetAutoSize( true ) ;
 }
 
@@ -125,5 +127,5 @@
 
 // oLink: The actual selected link in the editor.
-var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;
+var oLink = dialog.Selection.GetSelection().MoveToAncestorNode( 'A' ) ;
 if ( oLink )
 	FCK.Selection.SelectNode( oLink ) ;
@@ -157,5 +159,21 @@
 
 	// Activate the "OK" button.
-	window.parent.SetOkButton( true ) ;
+	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' ) ;
+	}
 }
 
@@ -225,5 +243,5 @@
 
 	// Accessible popups, the popup data is in the onclick attribute
-	if ( !oPopupMatch ) 
+	if ( !oPopupMatch )
 	{
 		var onclick = oLink.getAttribute( 'onclick_fckprotectedatt' ) ;
@@ -232,5 +250,5 @@
 			// Decode the protected string
 			onclick = decodeURIComponent( onclick ) ;
-			
+
 			oPopupMatch = oRegex.OnClickPopup.exec( onclick ) ;
 			if( oPopupMatch )
@@ -339,14 +357,14 @@
 
 	if ( !FCKConfig.LinkDlgHideTarget )
-		window.parent.SetTabVisibility( 'Target'	, (linkType == 'url') ) ;
+		dialog.SetTabVisibility( 'Target'	, (linkType == 'url') ) ;
 
 	if ( FCKConfig.LinkUpload )
-		window.parent.SetTabVisibility( 'Upload'	, (linkType == 'url') ) ;
+		dialog.SetTabVisibility( 'Upload'	, (linkType == 'url') ) ;
 
 	if ( !FCKConfig.LinkDlgHideAdvanced )
-		window.parent.SetTabVisibility( 'Advanced'	, (linkType != 'anchor' || bHasAnchors) ) ;
+		dialog.SetTabVisibility( 'Advanced'	, (linkType != 'anchor' || bHasAnchors) ) ;
 
 	if ( linkType == 'email' )
-		window.parent.SetAutoSize( true ) ;
+		dialog.SetAutoSize( true ) ;
 }
 
@@ -372,5 +390,5 @@
 
 	if ( targetType == 'popup' )
-		window.parent.SetAutoSize( true ) ;
+		dialog.SetAutoSize( true ) ;
 }
 
@@ -575,5 +593,5 @@
 				// Decode the protected string
 				onclick = decodeURIComponent( onclick ) ;
-			
+
 				if( oRegex.OnClickPopup.test( onclick ) )
 					SetAttribute( oLink, 'onclick_fckprotectedatt', '' ) ;
@@ -635,5 +653,5 @@
 	document.getElementById('txtUrl').value = url ;
 	OnUrlChange() ;
-	window.parent.SetSelectedTab( 'Info' ) ;
+	dialog.SetSelectedTab( 'Info' ) ;
 }
 
@@ -660,4 +678,7 @@
 			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 ) ;
@@ -695,5 +716,5 @@
 {
 	var target = FCKConfig.DefaultLinkTarget || '' ;
-	
+
 	if ( oLink || target.length == 0 )
 		return ;
@@ -711,5 +732,5 @@
 			break ;
 	}
-	
+
 	GetE('txtTargetFrame').value = target ;
 }
Index: /FCKeditor/releases/stable/editor/dialog/fck_listprop.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_listprop.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_listprop.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -30,5 +30,6 @@
 	<script type="text/javascript">
 
-var oEditor = window.parent.InnerDialogLoaded() ;
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
 
 // Gets the document DOM
@@ -36,5 +37,5 @@
 var sListType = ( location.search == '?OL' ? 'OL' : 'UL' ) ;
 
-var oActiveEl = oEditor.FCKSelection.MoveToAncestorNode( sListType ) ;
+var oActiveEl = dialog.Selection.GetSelection().MoveToAncestorNode( sListType ) ;
 var oActiveSel ;
 
@@ -64,6 +65,8 @@
 	}
 
-	window.parent.SetOkButton( true ) ;
-	window.parent.SetAutoSize( true ) ;
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+
+	SelectField( 'txtStartPosition' ) ;
 }
 
Index: /FCKeditor/releases/stable/editor/dialog/fck_paste.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_paste.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_paste.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -29,10 +29,12 @@
 	<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 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 ()
@@ -41,5 +43,5 @@
 	oEditor.FCKLanguageManager.TranslatePage(document) ;
 
-	var sPastingType = window.parent.dialogArguments.CustomValue ;
+	var sPastingType = dialog.Args().CustomValue ;
 
 	if ( sPastingType == 'Word' || sPastingType == 'Security' )
@@ -48,20 +50,38 @@
 			document.getElementById( 'xSecurityMsg' ).style.display = '' ;
 
-		var oFrame = document.getElementById('frmData') ;
-		oFrame.style.display = '' ;
-
-		// 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 ( oFrame.contentDocument )
-			oFrame.contentDocument.designMode = 'on' ;
-		else
-			oFrame.contentWindow.document.body.contentEditable = true ;
-
-		// Set the focus on the pasting area
-		oFrame.contentWindow.focus();
+		// 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
@@ -73,6 +93,6 @@
 		document.getElementById('oWordCommands').style.display = 'none' ;
 
-	window.parent.SetOkButton( true ) ;
-	window.parent.SetAutoSize( true ) ;
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
 }
 
@@ -84,5 +104,5 @@
 	var sHtml ;
 
-	var sPastingType = window.parent.dialogArguments.CustomValue ;
+	var sPastingType = dialog.Args().CustomValue ;
 
 	if ( sPastingType == 'Word' || sPastingType == 'Security' )
@@ -120,4 +140,5 @@
 		var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
 		var oDoc = oEditor.FCK.EditorDocument ;
+		dialog.Selection.EnsureSelection() ;
 		range.MoveToSelection() ;
 		range.DeleteContents() ;
@@ -157,15 +178,4 @@
 	return true ;
 }
-
-function CleanUpBox()
-{
-	var oFrame = document.getElementById('frmData') ;
-
-	if ( oFrame.contentDocument )
-		oFrame.contentDocument.body.innerHTML = '' ;
-	else
-		oFrame.contentWindow.document.body.innerHTML = '' ;
-}
-
 
 // This function will be called from the PasteFromWord dialog (fck_paste.html)
@@ -307,31 +317,20 @@
 		</tr>
 		<tr>
-			<td valign="top" height="100%" style="border-right: #000000 1px solid; border-top: #000000 1px solid;
-				border-left: #000000 1px solid; border-bottom: #000000 1px solid">
+			<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>
-				<iframe id="frmData" src="javascript:void(0)" height="98%" width="99%" frameborder="0"
-					style="border-right: #000000 1px; border-top: #000000 1px; display: none; border-left: #000000 1px;
-					border-bottom: #000000 1px; background-color: #ffffff"></iframe>
 			</td>
 		</tr>
 		<tr id="oWordCommands">
 			<td>
-				<table border="0" cellpadding="0" cellspacing="0" width="100%">
-					<tr>
-						<td nowrap="nowrap">
-							<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>
-						<td align="right" valign="top">
-							<input type="button" fcklang="DlgPasteCleanBox" value="Clean Up Box" onclick="CleanUpBox()" />
-						</td>
-					</tr>
-				</table>
+
+					<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>
Index: /FCKeditor/releases/stable/editor/dialog/fck_radiobutton.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_radiobutton.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_radiobutton.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -30,10 +30,11 @@
 		<script type="text/javascript">
 
-var oEditor = window.parent.InnerDialogLoaded() ;
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
 
 // Gets the document DOM
 var oDOM = oEditor.FCK.EditorDocument ;
 
-var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
+var oActiveEl = dialog.Selection.GetSelectedElement() ;
 
 window.onload = function()
@@ -51,6 +52,7 @@
 		oActiveEl = null ;
 
-	window.parent.SetOkButton( true ) ;
-	window.parent.SetAutoSize( true ) ;
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
 }
 
@@ -58,14 +60,6 @@
 {
 	oEditor.FCKUndo.SaveUndoStep() ;
-	
-	if ( !oActiveEl )
-	{
-		oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
-		oActiveEl.type = 'radio' ;
-		oActiveEl = oEditor.FCK.InsertElement( oActiveEl ) ;
-	}
 
-	if ( GetE('txtName').value.length > 0 )
-		oActiveEl.name = GetE('txtName').value ;
+	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: 'radio' } ) ;
 
 	if ( oEditor.FCKBrowserInfo.IsIE )
Index: /FCKeditor/releases/stable/editor/dialog/fck_replace.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_replace.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_replace.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -30,9 +30,12 @@
 	<script type="text/javascript">
 
-var oEditor = window.parent.InnerDialogLoaded() ;
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+var dialogArguments = dialog.Args() ;
+
 var FCKLang = oEditor.FCKLang ;
 
-window.parent.AddTab( 'Find', FCKLang.DlgFindTitle ) ;
-window.parent.AddTab( 'Replace', FCKLang.DlgReplaceTitle ) ;
+dialog.AddTab( 'Find', FCKLang.DlgFindTitle ) ;
+dialog.AddTab( 'Replace', FCKLang.DlgReplaceTitle ) ;
 var idMap = {} ;
 
@@ -46,5 +49,37 @@
 
 	if ( tabCode == 'Replace' )
-		window.parent.SetAutoSize( true ) ;
+		dialog.SetAutoSize( true ) ;
+}
+
+// Place a range at the start of document.
+// This will be the starting point of our search.
+var GlobalRange = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
+
+function ResetGlobalRange()
+{
+	GlobalRange.SetStart( oEditor.FCK.EditorDocument.body, 1 ) ;
+	GlobalRange.SetEnd( oEditor.FCK.EditorDocument.body, 1 ) ;
+	GlobalRange.Collapse( true ) ;
+}
+ResetGlobalRange() ;
+
+var HighlightRange = null ;
+function Highlight()
+{
+	if ( HighlightRange )
+		ClearHighlight() ;
+	var cloneRange = GlobalRange.Clone() ;
+	oEditor.FCKStyles.GetStyle( '_FCK_SelectionHighlight' ).ApplyToRange( cloneRange, false, true ) ;
+	HighlightRange = cloneRange ;
+	GlobalRange = HighlightRange.Clone() ;
+}
+
+function ClearHighlight()
+{
+	if ( HighlightRange )
+	{
+		oEditor.FCKStyles.GetStyle( '_FCK_SelectionHighlight' ).RemoveFromRange( HighlightRange, false, true ) ;
+		HighlightRange = null ;
+	}
 }
 
@@ -54,56 +89,47 @@
 	oEditor.FCKLanguageManager.TranslatePage( document ) ;
 
-	// Place the cursor at the start of document.
-	// This will be the starting point of our search.
-	var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
-	range.SetStart( oEditor.FCK.EditorDocument.body, 1 ) ;
-	range.SetEnd( oEditor.FCK.EditorDocument.body, 1 ) ;
-	range.Collapse( true ) ;
-	range.Select() ;
-
 	// Show the appropriate tab at startup.
-	if ( window.parent.name.search( 'Replace' ) == -1 )
-	{
-		window.parent.SetSelectedTab( 'Find' ) ;
-		window.parent.SetAutoSize( true ) ;
+	if ( dialogArguments.CustomValue == 'Find' )
+	{
+		dialog.SetSelectedTab( 'Find' ) ;
+		dialog.SetAutoSize( true ) ;
 	}
 	else
-		window.parent.SetSelectedTab( 'Replace' ) ;
-
-}
-
-function btnStat(frm)
-{
-	document.getElementById('btnReplace').disabled =
-		document.getElementById('btnReplaceAll').disabled =
-			document.getElementById('btnFind').disabled =
-				( document.getElementById(idMap["FindText"]).value.length == 0 ) ;
-}
-
-function GetSelection()
-{
-	var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
-	range.MoveToSelection() ;
-	return range.CreateBookmark2() ;
+		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 document.getElementById(idMap['FindText']).value ;
+	return GetE(idMap['FindText']).value ;
 }
 
 function GetReplaceString()
 {
-	return document.getElementById("txtReplace").value ;
+	return GetE("txtReplace").value ;
 }
 
 function GetCheckCase()
 {
-	return !! ( document.getElementById(idMap['CheckCase']).checked ) ;
+	return !! ( GetE(idMap['CheckCase']).checked ) ;
 }
 
 function GetMatchWord()
 {
-	return !! ( document.getElementById(idMap['CheckWord']).checked ) ;
+	return !! ( GetE(idMap['CheckWord']).checked ) ;
 }
 
@@ -242,5 +268,5 @@
 					return KMP_MATCHED;
 				}
-				return KMP_ADVANCED;
+				return KMP_ADVANCED ;
 			}
 			else if ( this._State == 0 )
@@ -262,7 +288,8 @@
 	// Start from the end of the current selection.
 	var matcher = new KmpMatch( GetSearchString(), ! GetCheckCase() ) ;
-	var cursor = GetSelection().End ;
+	var cursor = GlobalRange.CreateBookmark2().End ;
 	var matchState = KMP_NOMATCH ;
 	var matchBookmark = null ;
+	var matchBookmarkStart = [] ;
 
 	// Match finding.
@@ -279,5 +306,5 @@
 				{
 					matcher.Reset();
-					matchBookmark = null ;
+					matchBookmarkStart = [] ;
 				}
 			}
@@ -286,16 +313,28 @@
 				matchState = matcher.FeedCharacter(data) ;
 
+				// No possible match of any useful substring in the pattern for the currently scanned character.
+				// So delete any positional information.
 				if ( matchState == KMP_NOMATCH )
-					matchBookmark = null ;
-				else if ( matchState == KMP_ADVANCED && matchBookmark == null )
-					matchBookmark = { Start : cursor.concat( [] ) } ;
+					matchBookmarkStart = [] ;
+				// We've matched something, but it's not a complete match, so let's just mark down the position for backtracking later.
+				else if ( matchState == KMP_ADVANCED )
+				{
+					matchBookmarkStart.push( cursor.concat( [] ) ) ;
+					if ( matchBookmarkStart.length > matcher._State )
+						matchBookmarkStart.shift() ;
+				}
+				// Found a complete match! Mark down the ending position as well.
 				else if ( matchState == KMP_MATCHED )
 				{
-					if ( matchBookmark == null )
-						matchBookmark = { Start : cursor.concat( [] ) } ;
-					matchBookmark.End = cursor.concat( [] ) ;
+					// It is possible to get a KMP_MATCHED without KMP_ADVANCED when the match pattern is only 1 character.
+					// So need to check and mark down the starting position as well.
+					if ( matchBookmarkStart.length == 0 )
+						matchBookmarkStart = [cursor.concat( [] )] ;
+
+					matchBookmark = { 'Start' : matchBookmarkStart.shift(), 'End' : cursor.concat( [] ) } ;
 					matchBookmark.End[ matchBookmark.End.length - 1 ]++;
 
 					// Wait, do we have to match a whole word?
+					// If yes, carry out additional checks on what we've got.
 					if ( GetMatchWord() )
 					{
@@ -342,11 +381,10 @@
 	}
 
-	// If we've found a match, select the match.
+	// If we've found a match, highlight the match.
 	if ( matchState == KMP_MATCHED )
 	{
-		var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
-		range.MoveToBookmark2( matchBookmark ) ;
-		range.Select() ;
-		var focus = range._Range.endContainer ;
+		GlobalRange.MoveToBookmark2( matchBookmark ) ;
+		Highlight() ;
+		var focus = GlobalRange._Range.endContainer ;
 		while ( focus && focus.nodeType != 1 )
 			focus = focus.parentNode ;
@@ -360,38 +398,38 @@
 		}
 
-		return true;
+		return true ;
 	}
 	else
-		return false;
+	{
+		ResetGlobalRange() ;
+		return false ;
+	}
 }
 
 function Find()
 {
-	var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
-	range.MoveToSelection() ;
-	range.Collapse( false ) ;
-	range.Select() ;
-
 	if ( ! _Find() )
+	{
+		ClearHighlight() ;
 		alert( FCKLang.DlgFindNotFoundMsg ) ;
+	}
 }
 
 function Replace()
 {
-	var selection = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
-	selection.MoveToSelection() ;
-
-	if ( selection.CheckIsCollapsed() )
+	if ( GlobalRange.CheckIsCollapsed() )
 	{
 		if (! _Find() )
+		{
+			ClearHighlight() ;
 			alert( FCKLang.DlgFindNotFoundMsg ) ;
+		}
 	}
 	else
 	{
 		oEditor.FCKUndo.SaveUndoStep() ;
-		selection.DeleteContents() ;
-		selection.InsertNode( oEditor.FCK.EditorDocument.createTextNode( GetReplaceString() ) ) ;
-		selection.Collapse( false ) ;
-		selection.Select() ;
+		GlobalRange.DeleteContents() ;
+		GlobalRange.InsertNode( oEditor.FCK.EditorDocument.createTextNode( GetReplaceString() ) ) ;
+		GlobalRange.Collapse( false ) ;
 	}
 }
@@ -400,21 +438,23 @@
 {
 	oEditor.FCKUndo.SaveUndoStep() ;
-	var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
-
 	var replaceCount = 0 ;
 
 	while ( _Find() )
 	{
-		range.MoveToSelection() ;
-		range.DeleteContents() ;
-		range.InsertNode( oEditor.FCK.EditorDocument.createTextNode( GetReplaceString() ) ) ;
-		range.Collapse( false ) ;
-		range.Select() ;
+		dialog.Selection.EnsureSelection() ;
+		GlobalRange.DeleteContents() ;
+		GlobalRange.InsertNode( oEditor.FCK.EditorDocument.createTextNode( GetReplaceString() ) ) ;
+		GlobalRange.Collapse( false ) ;
 		replaceCount++ ;
 	}
 	if ( replaceCount == 0 )
+	{
+		ClearHighlight() ;
 		alert( FCKLang.DlgFindNotFoundMsg ) ;
-	window.parent.Cancel() ;
-}
+	}
+	dialog.Cancel() ;
+}
+
+window.onunload = function(){ ClearHighlight() ; }
 	</script>
 </head>
@@ -428,5 +468,5 @@
 				</td>
 				<td width="100%">
-					<input id="txtFindFind" onkeyup="btnStat(this.form)" style="width: 100%" tabindex="1"
+					<input id="txtFindFind" onkeyup="btnStat()" oninput="btnStat()" onpaste="btnStatDelayed()" style="width: 100%" tabindex="1"
 						type="text" />
 				</td>
@@ -455,5 +495,5 @@
 				</td>
 				<td width="100%">
-					<input id="txtFindReplace" onkeyup="btnStat(this.form)" style="width: 100%" tabindex="1"
+					<input id="txtFindReplace" onkeyup="btnStat()" oninput="btnStat()" onpaste="btnStatDelayed()" style="width: 100%" tabindex="1"
 						type="text" />
 				</td>
Index: /FCKeditor/releases/stable/editor/dialog/fck_select.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_select.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_select.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -31,10 +31,11 @@
 		<script type="text/javascript">
 
-var oEditor = window.parent.InnerDialogLoaded() ;
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
 
 // Gets the document DOM
 var oDOM = oEditor.FCK.EditorDocument ;
 
-var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
+var oActiveEl = dialog.Selection.GetSelectedElement() ;
 
 var oListText ;
@@ -48,4 +49,8 @@
 	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' )
@@ -69,6 +74,7 @@
 		oActiveEl = null ;
 
-	window.parent.SetOkButton( true ) ;
-	window.parent.SetAutoSize( true ) ;
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
 }
 
@@ -76,15 +82,11 @@
 {
 	oEditor.FCKUndo.SaveUndoStep() ;
-	
+
 	var sSize = GetE('txtLines').value ;
 	if ( sSize == null || isNaN( sSize ) || sSize <= 1 )
 		sSize = '' ;
 
-	if ( !oActiveEl )
-	{
-		oActiveEl = oEditor.FCK.InsertElement( 'select' ) ;
-	}
+	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'SELECT', {name: GetE('txtName').value} ) ;
 
-	SetAttribute( oActiveEl, 'name'	, GetE('txtName').value ) ;
 	SetAttribute( oActiveEl, 'size'	, sSize ) ;
 	oActiveEl.multiple = ( sSize.length > 0 && GetE('chkMultiple').checked ) ;
Index: /FCKeditor/releases/stable/editor/dialog/fck_select/fck_select.js
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_select/fck_select.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_select/fck_select.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/dialog/fck_smiley.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_smiley.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_smiley.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -34,7 +34,9 @@
 		}
 	</style>
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
 	<script type="text/javascript">
 
-var oEditor = window.parent.InnerDialogLoaded() ;
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
 
 window.onload = function ()
@@ -43,5 +45,5 @@
 	oEditor.FCKLanguageManager.TranslatePage(document) ;
 
-	window.parent.SetAutoSize( true ) ;
+	dialog.SetAutoSize( true ) ;
 }
 
@@ -49,4 +51,5 @@
 {
 	oEditor.FCKUndo.SaveUndoStep() ;
+
 	var oImg = oEditor.FCK.InsertElement( 'img' ) ;
 	oImg.src = url ;
@@ -58,5 +61,5 @@
 	document.body.innerHTML = '' ;
 
-	window.parent.Cancel() ;
+	dialog.Cancel() ;
 }
 
Index: /FCKeditor/releases/stable/editor/dialog/fck_source.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_source.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_source.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -27,5 +27,5 @@
 		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 		<meta name="robots" content="noindex, nofollow">
-		<link href="common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
 		<script language="javascript">
 
@@ -33,4 +33,7 @@
 var FCK			= oEditor.FCK ;
 var FCKConfig	= oEditor.FCKConfig ;
+var FCKTools	= oEditor.FCKTools ;
+
+document.write( FCKTools.GetStyleHtml( GetCommonDialogCss() ) ) ;
 
 window.onload = function()
Index: /FCKeditor/releases/stable/editor/dialog/fck_specialchar.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_specialchar.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_specialchar.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -34,4 +34,5 @@
 				.Sample { font-size: 24px; }
 		</style>
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
 		<script type="text/javascript">
 
@@ -82,5 +83,5 @@
 					<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;","&sbquo;","&#8219;","&bdquo;","&hellip;","&trade;","&#9658;","&bull;","&rarr;","&rArr;","&hArr;","&diams;","&asymp;"] ;
+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 ;
Index: /FCKeditor/releases/stable/editor/dialog/fck_spellerpages.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_spellerpages.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_spellerpages.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -27,4 +27,5 @@
 		<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">
Index: /FCKeditor/releases/stable/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php	(revision 1902)
@@ -63,5 +63,5 @@
 # handle a server-side error.
 function error_handler( $err ) {
-	echo "error = '" . escape_quote( $err ) . "';\n";
+	echo "error = '" . preg_replace( "/['\\\\]/", "\\\\$0", $err ) . "';\n";
 }
 
@@ -198,4 +198,2 @@
 </body>
 </html>
-
-
Index: /FCKeditor/releases/stable/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl	(revision 1902)
@@ -180,4 +180,2 @@
 </html>
 EOF
-
-
Index: /FCKeditor/releases/stable/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js	(revision 1902)
@@ -460,3 +460,2 @@
 	return inputs;
 }
-
Index: /FCKeditor/releases/stable/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css	(revision 1902)
Index: /FCKeditor/releases/stable/editor/dialog/fck_table.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_table.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_table.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -30,5 +30,7 @@
 	<script type="text/javascript">
 
-var oEditor = window.parent.InnerDialogLoaded() ;
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+var dialogArguments = dialog.Args() ;
 
 // Gets the document DOM
@@ -37,5 +39,5 @@
 // Gets the table if there is one selected.
 var table ;
-var e = oEditor.FCKSelection.GetSelectedElement() ;
+var e = dialog.Selection.GetSelectedElement() ;
 
 if ( ( !e && document.location.search.substr(1) == 'Parent' ) || ( e && e.tagName != 'TABLE' ) )
@@ -89,8 +91,11 @@
 		document.getElementById('txtRows').disabled    = true ;
 		document.getElementById('txtColumns').disabled = true ;
-	}
-
-	window.parent.SetOkButton( true ) ;
-	window.parent.SetAutoSize( true ) ;
+		SelectField( 'txtWidth' ) ;
+	}
+	else
+		SelectField( 'txtRows' ) ;
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
 }
 
Index: /FCKeditor/releases/stable/editor/dialog/fck_tablecell.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_tablecell.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_tablecell.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -30,5 +30,6 @@
 	<script type="text/javascript">
 
-var oEditor = window.parent.InnerDialogLoaded() ;
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
 
 // Gets the document DOM
@@ -45,6 +46,7 @@
 	SetStartupValue() ;
 
-	window.parent.SetOkButton( true ) ;
-	window.parent.SetAutoSize( true ) ;
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtWidth' ) ;
 }
 
@@ -88,5 +90,5 @@
 
 		if ( GetE('selWordWrap').value == 'false' )
-			SetAttribute( aCells[i], 'noWrap', 'nowrap' ) ;  
+			SetAttribute( aCells[i], 'noWrap', 'nowrap' ) ;
 		else
 			aCells[i].removeAttribute( 'noWrap' ) ;
@@ -119,5 +121,5 @@
 function SelectColor( wich )
 {
-	oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', oEditor.FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, wich == 'Back' ? SelectBackColor : SelectBorderColor, window ) ;
+	oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', oEditor.FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, wich == 'Back' ? SelectBackColor : SelectBorderColor, window ) ;
 }
 
Index: /FCKeditor/releases/stable/editor/dialog/fck_template.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_template.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_template.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/dialog/fck_textarea.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_textarea.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_textarea.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -30,10 +30,11 @@
 		<script type="text/javascript">
 
-var oEditor = window.parent.InnerDialogLoaded() ;
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
 
 // Gets the document DOM
 var oDOM = oEditor.FCK.EditorDocument ;
 
-var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
+var oActiveEl = dialog.Selection.GetSelectedElement() ;
 
 window.onload = function()
@@ -51,6 +52,7 @@
 		oActiveEl = null ;
 
-	window.parent.SetOkButton( true ) ;
-	window.parent.SetAutoSize( true ) ;
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
 }
 
@@ -58,11 +60,7 @@
 {
 	oEditor.FCKUndo.SaveUndoStep() ;
-	
-	if ( !oActiveEl )
-	{
-		oActiveEl = oEditor.FCK.InsertElement( 'textarea' ) ;
-	}
 
-	oActiveEl.name = GetE('txtName').value ;
+	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'TEXTAREA', {name: GetE('txtName').value} ) ;
+
 	SetAttribute( oActiveEl, 'cols', GetE('txtCols').value ) ;
 	SetAttribute( oActiveEl, 'rows', GetE('txtRows').value ) ;
Index: /FCKeditor/releases/stable/editor/dialog/fck_textfield.html
===================================================================
--- /FCKeditor/releases/stable/editor/dialog/fck_textfield.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dialog/fck_textfield.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -30,10 +30,11 @@
 	<script type="text/javascript">
 
-var oEditor = window.parent.InnerDialogLoaded() ;
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
 
 // Gets the document DOM
 var oDOM = oEditor.FCK.EditorDocument ;
 
-var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
+var oActiveEl = dialog.Selection.GetSelectedElement() ;
 
 window.onload = function()
@@ -49,12 +50,11 @@
 		GetE('txtMax').value	= GetAttribute( oActiveEl, 'maxLength' ) ;
 		GetE('txtType').value	= oActiveEl.type ;
-
-		GetE('txtType').disabled = true ;
 	}
 	else
 		oActiveEl = null ;
 
-	window.parent.SetOkButton( true ) ;
-	window.parent.SetAutoSize( true ) ;
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
 }
 
@@ -74,13 +74,8 @@
 	}
 
-	if ( !oActiveEl )
-	{
-		oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
-		oActiveEl.type = GetE('txtType').value ;
-		oEditor.FCKUndo.SaveUndoStep() ;
-		oActiveEl = oEditor.FCK.InsertElement( oActiveEl ) ;
-	}
+	oEditor.FCKUndo.SaveUndoStep() ;
 
-	oActiveEl.name = GetE('txtName').value ;
+	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 ) ;
Index: /FCKeditor/releases/stable/editor/dtd/fck_dtd_test.html
===================================================================
--- /FCKeditor/releases/stable/editor/dtd/fck_dtd_test.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dtd/fck_dtd_test.html	(revision 1902)
@@ -17,6 +17,4 @@
 	<table border="1">
 		<script type="text/javascript">
-
-    alert(FCK.DTD);
 
 for ( var p in FCK.DTD )
Index: /FCKeditor/releases/stable/editor/dtd/fck_xhtml10strict.js
===================================================================
--- /FCKeditor/releases/stable/editor/dtd/fck_xhtml10strict.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dtd/fck_xhtml10strict.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -24,5 +24,5 @@
 FCK.DTD = (function()
 {
-    X = FCKTools.Merge ;
+    var X = FCKTools.Merge ;
 
     var H,I,J,K,C,L,M,A,B,D,E,G,N,F ;
Index: /FCKeditor/releases/stable/editor/dtd/fck_xhtml10transitional.js
===================================================================
--- /FCKeditor/releases/stable/editor/dtd/fck_xhtml10transitional.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/dtd/fck_xhtml10transitional.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -24,5 +24,5 @@
 FCK.DTD = (function()
 {
-    X = FCKTools.Merge ;
+    var X = FCKTools.Merge ;
 
     var A,L,J,M,N,O,D,H,P,K,Q,F,G,C,B,E,I ;
Index: /FCKeditor/releases/stable/editor/fckdebug.html
===================================================================
--- /FCKeditor/releases/stable/editor/fckdebug.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/fckdebug.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/fckdialog.html
===================================================================
--- /FCKeditor/releases/stable/editor/fckdialog.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/fckdialog.html	(revision 1902)
@@ -1,6 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!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-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -24,317 +24,760 @@
 <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">
-
-// On some Gecko browsers (probably over slow connections) the
-// "dialogArguments" are not set so we must get it from the opener window.
-if ( !window.dialogArguments )
-	window.dialogArguments = window.opener.FCKLastDialogInfo ;
+// 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( '<link href="' + window.dialogArguments.Editor.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
+document.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;
 
 // Sets the language direction.
-window.document.dir = window.dialogArguments.Editor.FCKLang.Dir ;
-
-// IE does not set the window name in showModalDialog(), let's set it here.
-if ( window.dialogArguments.Editor.FCKBrowserInfo.IsIE )
-	window.name = window.dialogArguments.DialogName ;
-
-var sTitle = window.dialogArguments.Title ;
-document.write( '<title>' + sTitle + '<\/title>' ) ;
-
-function LoadInnerDialog()
-{
-	if ( window.onresize )
-		window.onresize() ;
-
-	// First of all, translate the dialog box contents.
-	window.dialogArguments.Editor.FCKLanguageManager.TranslatePage( document ) ;
-
-	window.frames["frmMain"].document.location.href = window.dialogArguments.Page ;
+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 ) ;
+		}
+	}
+
+	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' ) ;
+
+			// 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 = ''  ;
+
+			// Setup the animation interval.
+			timer = setInterval( updateThrobber, 100 ) ;
+		},
+
+		Hide : function()
+		{
+			if ( timer )
+			{
+				clearInterval( timer ) ;
+				timer = null ;
+			}
+
+			var throbberParent = document.getElementById( 'throbberBlock' ) ;
+			if ( throbberParent )
+				FCKDomTools.RemoveNode( throbberParent ) ;
+		}
+	} ;
+}() ;
+
+// 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() ;
+	}
 }
 
-function InnerDialogLoaded()
-{
-	var oInnerDoc = document.getElementById('frmMain').contentWindow.document ;
-
-	// Set the language direction.
-	oInnerDoc.dir = window.dialogArguments.Editor.FCKLang.Dir ;
-
-	// Sets the Skin CSS.
-	oInnerDoc.write( '<link href="' + window.dialogArguments.Editor.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
-
-	SetOnKeyDown( oInnerDoc ) ;
-	DisableContextMenu( oInnerDoc ) ;
-
-	return window.dialogArguments.Editor ;
-}
-
-function SetOkButton( showIt )
-{
-	document.getElementById('btnOk').style.visibility = ( showIt ? '' : 'hidden' ) ;
-}
-
-var bAutoSize = false ;
-
-function SetAutoSize( autoSize )
-{
-	bAutoSize = autoSize ;
-	RefreshSize() ;
-}
-
-function RefreshSize()
-{
-	if ( bAutoSize )
-	{
-		var oInnerDoc = document.getElementById('frmMain').contentWindow.document ;
-
-		var iFrameHeight ;
-		if ( document.all )
-			iFrameHeight = oInnerDoc.body.offsetHeight ;
-		else
-			iFrameHeight = document.getElementById('frmMain').contentWindow.innerHeight ;
-
-		var iInnerHeight = oInnerDoc.body.scrollHeight ;
-
-		var iDiff = iInnerHeight - iFrameHeight ;
-
-		if ( iDiff > 0 )
-		{
-			if ( document.all )
-				window.dialogHeight = ( parseInt( window.dialogHeight, 10 ) + iDiff ) + 'px' ;
+// 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
-				window.resizeBy( 0, iDiff ) ;
-		}
-	}
-}
-
-// Kludge for #1316: 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.
-if ( window.dialogArguments.Editor.FCKBrowserInfo.IsSafari )
-{
-	window.OriginalRefreshSize = RefreshSize ;
-
-	RefreshSize = function()
-	{
-		window.setTimeout( window.OriginalRefreshSize, 1 );
-	}
-}
-
-function Ok()
-{
-	if ( window.frames["frmMain"].Ok && window.frames["frmMain"].Ok() )
-		Cancel() ;
-}
-
-function Cancel( dontFireChange )
-{
-	if ( !dontFireChange && !window.dialogArguments.Editor.FCK.EditMode )
-	{
-		// All dialog windows, by default, will fire the "OnSelectionChange"
-		// event, no matter the Ok or Cancel button has been pressed.
-		window.dialogArguments.Editor.FCK.Events.FireEvent( 'OnSelectionChange' ) ;
-	}
-	window.close() ;
-}
-
-// Object that holds all available tabs.
-var oTabs = new Object() ;
-
-function TabDiv_OnClick()
-{
-	SetSelectedTab( this.TabCode ) ;
-}
-
-function AddTab( tabCode, tabText, startHidden )
-{
-	if ( typeof( oTabs[ tabCode ] ) != 'undefined' )
+				$( 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 ;
-
-	var eTabsRow = document.getElementById( '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 ;
-
-	if ( startHidden )
-		oDiv.style.display = 'none' ;
-
-	eTabsRow = document.getElementById( 'TabsRow' ) ;
-
-	oCell.appendChild( oDiv ) ;
-
-	if ( eTabsRow.style.display == 'none' )
-	{
-		var eTitleArea = document.getElementById( 'TitleArea' ) ;
-		eTitleArea.className = 'PopupTitle' ;
-
-		oDiv.className = 'PopupTabSelected' ;
-		eTabsRow.style.display = '' ;
-
-		if ( ! window.dialogArguments.Editor.FCKBrowserInfo.IsIE )
-			window.onresize() ;
-	}
-
-	oTabs[ tabCode ] = oDiv ;
-}
-
-function SetSelectedTab( 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 SetTabVisibility( 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 ;
-			}
-		}
-	}
-}
-
-function SetOnKeyDown( 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 ;
-				break ;
-		}
-		return true ;
-	}
-}
-SetOnKeyDown( document ) ;
-
-function DisableContextMenu( targetDocument )
-{
-	if ( window.dialogArguments.Editor.FCKBrowserInfo.IsIE ) return ;
-
-	// Disable Right-Click
-	var oOnContextMenu = function( e )
+	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() ;
-	}
-	targetDocument.addEventListener( 'contextmenu', oOnContextMenu, true ) ;
-}
-DisableContextMenu( document ) ;
-
-if ( ! window.dialogArguments.Editor.FCKBrowserInfo.IsIE )
-{
-	window.onresize = function()
-	{
-		var oFrame = document.getElementById("frmMain") ;
-
-		if ( ! oFrame )
-		return ;
-
-		oFrame.height = 0 ;
-
-		var oCell = document.getElementById("FrameCell") ;
-		var iHeight = oCell.offsetHeight ;
-
-		oFrame.height = iHeight - 2 ;
-	}
-}
-
-if ( window.dialogArguments.Editor.FCKBrowserInfo.IsIE )
-{
-	function Window_OnBeforeUnload()
-	{
-		for ( var t in oTabs )
-			oTabs[t] = null ;
-
-		window.dialogArguments.Editor = null ;
-	}
-	window.attachEvent( "onbeforeunload", Window_OnBeforeUnload ) ;
-}
-
-function Window_OnClose()
-{
-	window.dialogArguments.Editor.FCKFocusManager.Unlock() ;
-}
-
-if ( window.addEventListener )
-	window.addEventListener( 'unload', Window_OnClose, false ) ;
-
+	} ;
+
+	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="LoadInnerDialog();" class="PopupBody">
-		<table height="100%" cellspacing="0" cellpadding="0" width="100%" border="0">
-			<tr>
-				<td id="TitleArea" class="PopupTitle PopupTitleBorder">
+	<body onload="Init();" class="PopupBody">
+		<div class="contents" id="contents">
+			<div id="header">
+				<div id="TitleArea" class="PopupTitle PopupTitleBorder">
 					<script type="text/javascript">
-document.write( sTitle ) ;
+document.write( Args().Title ) ;
 					</script>
-				</td>
-			</tr>
-			<tr id="TabsRow" style="DISPLAY: none">
-				<td class="PopupTabArea">
+					<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" onselectstart="return false;">
+						<tr id="Tabs">
 							<td class="PopupTabEmptyArea">&nbsp;</td>
 							<td class="PopupTabEmptyArea" width="100%">&nbsp;</td>
 						</tr>
 					</table>
-				</td>
-			</tr>
-			<tr>
-				<td id="FrameCell" height="100%" valign="top">
-					<iframe id="frmMain" src="javascript:void(0)" name="frmMain" frameborder="0" height="100%" width="100%" scrolling="auto">
-					</iframe>
-				</td>
-			</tr>
-			<tr>
-				<td 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>
-				</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">
+			// 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>
Index: /FCKeditor/releases/stable/editor/fckeditor.html
===================================================================
--- /FCKeditor/releases/stable/editor/fckeditor.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/fckeditor.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -27,6 +27,46 @@
 	<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">
+	<meta http-equiv="Cache-Control" content="public">
+	<script type="text/javascript">
+
+// 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
@@ -40,9 +80,4 @@
 }
 
-function LoadCss( url )
-{
-	document.write( '<link href="' + url + '" type="text/css" rel="stylesheet" />' ) ;
-}
-
 // Main editor scripts.
 var sSuffix = ( /*@cc_on!@*/false ) ? 'ie' : 'gecko' ;
@@ -55,4 +90,8 @@
 	</script>
 	<script type="text/javascript">
+
+// Adobe AIR compatibility file.
+if ( FCKBrowserInfo.IsAIR )
+	LoadScript( 'js/fckadobeair.js' ) ;
 
 if ( FCKBrowserInfo.IsIE )
@@ -96,6 +135,15 @@
 FCKConfig_PreProcess() ;
 
+// CSS minified by http://iceyboard.no-ip.org/projects/css_compressor
+var FCK_InternalCSS			= FCKTools.FixCssUrls( FCKConfig.FullBasePath + '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__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.FullBasePath + '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.
-LoadCss( FCKConfig.SkinPath + 'fck_editor.css' ) ;
+document.write( FCKTools.GetStyleHtml( FCKConfig.SkinEditorCSS ) ) ;
 
 // Load the language file.
@@ -179,11 +227,14 @@
 }
 
-// Gecko browsers doens't calculate well that IFRAME size so we must
+// Gecko browsers doesn't calculate well the IFRAME size so we must
 // recalculate it every time the window size changes.
-if ( FCKBrowserInfo.IsGecko )
-{
-	function Window_OnResize()
-	{
-		if ( FCKBrowserInfo.IsOpera )
+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 ;
 
@@ -193,9 +244,8 @@
 		if ( eInnerElement )
 		{
-			eInnerElement.style.height = 0 ;
-			eInnerElement.style.height = oCell.scrollHeight - 2 ;
-		}
-	}
-	window.onresize = Window_OnResize ;
+			eInnerElement.style.height = '0px' ;
+			eInnerElement.style.height = ( oCell.scrollHeight - 2 ) + 'px' ;
+		}
+	}
 }
 
Index: /FCKeditor/releases/stable/editor/fckeditor.original.html
===================================================================
--- /FCKeditor/releases/stable/editor/fckeditor.original.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/fckeditor.original.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -28,7 +28,47 @@
 	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 	<!-- @Packager.RemoveLine
-	<meta http-equiv="Cache-Control" content="public" />
+	<meta http-equiv="Cache-Control" content="public">
 	@Packager.RemoveLine -->
 	<script type="text/javascript">
+
+// 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
@@ -40,9 +80,4 @@
 {
 	document.write( '<scr' + 'ipt type="text/javascript" src="' + url + '"><\/scr' + 'ipt>' ) ;
-}
-
-function LoadCss( url )
-{
-	document.write( '<link href="' + url + '" type="text/css" rel="stylesheet" />' ) ;
 }
 
@@ -142,5 +177,4 @@
 LoadScript( '_source/internals/fcktoolbarset.js' ) ;
 LoadScript( '_source/internals/fckdialog.js' ) ;
-LoadScript( '_source/internals/fckdialog_' + sSuffix + '.js' ) ;
 LoadScript( '_source/classes/fckmenuitem.js' ) ;
 LoadScript( '_source/classes/fckmenublock.js' ) ;
@@ -148,4 +182,5 @@
 LoadScript( '_source/classes/fckcontextmenu.js' ) ;
 LoadScript( '_source/internals/fck_contextmenu.js' ) ;
+LoadScript( '_source/classes/fckhtmliterator.js' ) ;
 LoadScript( '_source/classes/fckplugin.js' ) ;
 LoadScript( '_source/internals/fckplugins.js' ) ;
@@ -158,4 +193,8 @@
 	</script>
 	<script type="text/javascript">
+
+// Adobe AIR compatibility file.
+if ( FCKBrowserInfo.IsAIR )
+	LoadScript( 'js/fckadobeair.js' ) ;
 
 if ( FCKBrowserInfo.IsIE )
@@ -199,6 +238,19 @@
 FCKConfig_PreProcess() ;
 
+var FCK_InternalCSS			= FCKConfig.FullBasePath + 'css/fck_internal.css' ;					// @Packager.RemoveLine
+var FCK_ShowTableBordersCSS	= FCKConfig.FullBasePath + 'css/fck_showtableborders_gecko.css' ;	// @Packager.RemoveLine
+/* @Packager.RemoveLine
+// CSS minified by http://iceyboard.no-ip.org/projects/css_compressor
+var FCK_InternalCSS			= FCKTools.FixCssUrls( FCKConfig.FullBasePath + '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__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.FullBasePath + '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}' ) ;
+@Packager.RemoveLine */
+
+// 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.
-LoadCss( FCKConfig.SkinPath + 'fck_editor.css' ) ;
+document.write( FCKTools.GetStyleHtml( FCKConfig.SkinEditorCSS ) ) ;
 
 // Load the language file.
@@ -282,11 +334,14 @@
 }
 
-// Gecko browsers doens't calculate well that IFRAME size so we must
+// Gecko browsers doesn't calculate well the IFRAME size so we must
 // recalculate it every time the window size changes.
-if ( FCKBrowserInfo.IsGecko )
-{
-	function Window_OnResize()
-	{
-		if ( FCKBrowserInfo.IsOpera )
+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 ;
 
@@ -296,9 +351,8 @@
 		if ( eInnerElement )
 		{
-			eInnerElement.style.height = 0 ;
-			eInnerElement.style.height = oCell.scrollHeight - 2 ;
+			eInnerElement.style.height = '0px' ;
+			eInnerElement.style.height = ( oCell.scrollHeight - 2 ) + 'px' ;
 		}
 	}
-	window.onresize = Window_OnResize ;
 }
 
Index: /FCKeditor/releases/stable/editor/filemanager/browser/default/browser.css
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/browser/default/browser.css	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/browser/default/browser.css	(revision 1902)
@@ -1,5 +1,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/filemanager/browser/default/browser.html
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/browser/default/browser.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/browser/default/browser.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -25,7 +25,39 @@
 	<head>
 		<title>FCKeditor - Resources Browser</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 		<link href="browser.css" type="text/css" rel="stylesheet">
 		<script type="text/javascript" src="js/fckxml.js"></script>
 		<script language="javascript">
+// Automatically detect the correct document.domain (#1919).
+(function()
+{
+	var d = document.domain ;
+
+	while ( true )
+	{
+		// Test if we can access a parent property.
+		try
+		{
+			var test = window.opener.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 ;
+		}
+	}
+})() ;
 
 function GetUrlParam( paramName )
@@ -141,5 +173,8 @@
 function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
 {
-	window.frames['frmUpload'].OnUploadCompleted( errorNumber, fileName ) ;
+	if (errorNumber == "1")
+		window.frames['frmUpload'].OnUploadCompleted( errorNumber, customMsg ) ;
+	else
+		window.frames['frmUpload'].OnUploadCompleted( errorNumber, fileName ) ;
 }
 
Index: /FCKeditor/releases/stable/editor/filemanager/browser/default/frmactualfolder.html
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/browser/default/frmactualfolder.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/browser/default/frmactualfolder.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -24,6 +24,38 @@
 <html>
 	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 		<link href="browser.css" type="text/css" rel="stylesheet">
 		<script type="text/javascript">
+// Automatically detect the correct document.domain (#1919).
+(function()
+{
+	var d = document.domain ;
+
+	while ( true )
+	{
+		// Test if we can access a parent property.
+		try
+		{
+			var test = window.top.opener.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 ;
+		}
+	}
+})() ;
 
 function OnResize()
Index: /FCKeditor/releases/stable/editor/filemanager/browser/default/frmcreatefolder.html
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/browser/default/frmcreatefolder.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/browser/default/frmcreatefolder.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/filemanager/browser/default/frmfolders.html
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/browser/default/frmfolders.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/browser/default/frmfolders.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -26,4 +26,5 @@
 	<head>
 		<link href="browser.css" type="text/css" rel="stylesheet">
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 		<script type="text/javascript" src="js/common.js"></script>
 		<script language="javascript">
Index: /FCKeditor/releases/stable/editor/filemanager/browser/default/frmresourceslist.html
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/browser/default/frmresourceslist.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/browser/default/frmresourceslist.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -25,4 +25,5 @@
 <head>
 	<link href="browser.css" type="text/css" rel="stylesheet" />
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 	<script type="text/javascript" src="js/common.js"></script>
 	<script type="text/javascript">
@@ -88,5 +89,5 @@
 function OpenFile( fileUrl )
 {
-	window.top.opener.SetUrl( encodeURI( fileUrl ) ) ;
+	window.top.opener.SetUrl( encodeURI( fileUrl ).replace( '#', '%23' ) ) ;
 	window.top.close() ;
 	window.top.opener.focus() ;
Index: /FCKeditor/releases/stable/editor/filemanager/browser/default/frmresourcetype.html
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/browser/default/frmresourcetype.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/browser/default/frmresourcetype.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/filemanager/browser/default/frmupload.html
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/browser/default/frmupload.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/browser/default/frmupload.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -25,4 +25,5 @@
 	<head>
 		<title>File Upload</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 		<link href="browser.css" type="text/css" rel="stylesheet" />
 		<script type="text/javascript" src="js/common.js"></script>
Index: /FCKeditor/releases/stable/editor/filemanager/browser/default/js/common.js
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/browser/default/js/common.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/browser/default/js/common.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -22,4 +22,36 @@
  * File Browser dialog window.
  */
+
+// Automatically detect the correct document.domain (#1919).
+(function()
+{
+	var d = document.domain ;
+
+	while ( true )
+	{
+		// Test if we can access a parent property.
+		try
+		{
+			var test = window.top.opener.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 ;
+		}
+	}
+})() ;
 
 function AddSelectOption( selectElement, optionText, optionValue )
Index: /FCKeditor/releases/stable/editor/filemanager/browser/default/js/fckxml.js
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/browser/default/js/fckxml.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/browser/default/js/fckxml.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -32,6 +32,6 @@
 {
 	// Gecko / IE7
-	if ( typeof(XMLHttpRequest) != 'undefined' )
-		return new XMLHttpRequest() ;
+	try { return new XMLHttpRequest(); }
+	catch(e) {}
 
 	// IE6
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/asp/basexml.asp
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/asp/basexml.asp	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/asp/basexml.asp	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿<%
  ' FCKeditor - The text editor for Internet - http://www.fckeditor.net
- ' Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ ' Copyright (C) 2003-2008 Frederico Caldeira Knabben
  '
  ' == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/asp/class_upload.asp
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/asp/class_upload.asp	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/asp/class_upload.asp	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿<%
  ' FCKeditor - The text editor for Internet - http://www.fckeditor.net
- ' Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ ' Copyright (C) 2003-2008 Frederico Caldeira Knabben
  '
  ' == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/asp/commands.asp
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/asp/commands.asp	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/asp/commands.asp	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿<%
  ' FCKeditor - The text editor for Internet - http://www.fckeditor.net
- ' Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ ' Copyright (C) 2003-2008 Frederico Caldeira Knabben
  '
  ' == BEGIN LICENSE ==
@@ -191,5 +191,5 @@
 	dim sFileUrl
 	sFileUrl = CombinePaths( GetResourceTypePath( resourceType, sCommand ) , currentFolder )
-	sFileUrl = CombinePaths( sFileUrl, sFileName ) 
+	sFileUrl = CombinePaths( sFileUrl, sFileName )
 
 	SendUploadResults sErrorNumber, sFileUrl, sFileName, ""
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/asp/config.asp
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/asp/config.asp	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/asp/config.asp	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿<%
  ' FCKeditor - The text editor for Internet - http://www.fckeditor.net
- ' Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ ' Copyright (C) 2003-2008 Frederico Caldeira Knabben
  '
  ' == BEGIN LICENSE ==
@@ -24,5 +24,5 @@
 
 ' SECURITY: You must explicitly enable this "connector" (set it to "True").
-' WARNING: don't just set "ConfigIsEnabled = true", you must be sure that only 
+' WARNING: don't just set "ConfigIsEnabled = true", you must be sure that only
 '		authenticated users can access this file or use some kind of session checking.
 Dim ConfigIsEnabled
@@ -30,5 +30,5 @@
 
 ' Path to user files relative to the document root.
-' This setting is preserved only for backward compatibility. 
+' This setting is preserved only for backward compatibility.
 ' You should look at the settings for each resource type to get the full potential
 Dim ConfigUserFilesPath
@@ -38,5 +38,5 @@
 ' following setting enabled.
 Dim ConfigForceSingleExtension
-ConfigForceSingleExtension = true 
+ConfigForceSingleExtension = true
 
 ' What the user can do with this connector
@@ -55,8 +55,8 @@
 '	Configuration settings for each Resource Type
 '
-'	- AllowedExtensions: the possible extensions that can be allowed. 
+'	- AllowedExtensions: the possible extensions that can be allowed.
 '		If it is empty then any file type can be uploaded.
 '
-'	- DeniedExtensions: The extensions that won't be allowed. 
+'	- DeniedExtensions: The extensions that won't be allowed.
 '		If it is empty then no restrictions are done here.
 '
@@ -65,11 +65,11 @@
 '
 '	- FileTypesPath: the virtual folder relative to the document root where
-'		these resources will be located. 
+'		these resources will be located.
 '		Attention: It must start and end with a slash: '/'
 '
 '	- FileTypesAbsolutePath: the physical path to the above folder. It must be
-'		an absolute path. 
+'		an absolute path.
 '		If it's an empty string then it will be autocalculated.
-'		Useful if you are using a virtual directory, symbolic link or alias. 
+'		Useful if you are using a virtual directory, symbolic link or alias.
 '		Examples: 'C:\\MySite\\userfiles\\' or '/root/mysite/userfiles/'.
 '		Attention: The above 'FileTypesPath' must point to the same directory.
@@ -77,12 +77,12 @@
 '
 ' - QuickUploadPath: the virtual folder relative to the document root where
-'		these resources will be uploaded using the Upload tab in the resources 
+'		these resources will be uploaded using the Upload tab in the resources
 '		dialogs.
 '		Attention: It must start and end with a slash: '/'
 '
 '	 - QuickUploadAbsolutePath: the physical path to the above folder. It must be
-'		an absolute path. 
+'		an absolute path.
 '		If it's an empty string then it will be autocalculated.
-'		Useful if you are using a virtual directory, symbolic link or alias. 
+'		Useful if you are using a virtual directory, symbolic link or alias.
 '		Examples: 'C:\\MySite\\userfiles\\' or '/root/mysite/userfiles/'.
 '		Attention: The above 'QuickUploadPath' must point to the same directory.
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/asp/connector.asp
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/asp/connector.asp	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/asp/connector.asp	(revision 1902)
@@ -6,5 +6,5 @@
 <%
  ' FCKeditor - The text editor for Internet - http://www.fckeditor.net
- ' Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ ' Copyright (C) 2003-2008 Frederico Caldeira Knabben
  '
  ' == BEGIN LICENSE ==
@@ -51,5 +51,5 @@
 	sCurrentFolder = GetCurrentFolder()
 
-	' Check if it is an allowed command 
+	' Check if it is an allowed command
 	if ( Not IsAllowedCommand( sCommand ) ) then
 		SendError 1, "The """ & sCommand & """ command isn't allowed"
@@ -57,5 +57,5 @@
 
 	' Check if it is an allowed resource type.
-	if ( Not IsAllowedType( sResourceType ) ) Then 
+	if ( Not IsAllowedType( sResourceType ) ) Then
 		SendError 1, "The """ & sResourceType & """ resource type isn't allowed"
 	end if
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/asp/io.asp
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/asp/io.asp	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/asp/io.asp	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿<%
  ' FCKeditor - The text editor for Internet - http://www.fckeditor.net
- ' Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ ' Copyright (C) 2003-2008 Frederico Caldeira Knabben
  '
  ' == BEGIN LICENSE ==
@@ -41,12 +41,12 @@
 		else
 			' Map the "UserFiles" path to a local directory.
-			GetResourceTypeDirectory = Server.MapPath( ConfigQuickUploadPath.Item( resourceType ) ) 
+			GetResourceTypeDirectory = Server.MapPath( ConfigQuickUploadPath.Item( resourceType ) )
 		end if
 	else
-		if ( ConfigFileTypesAbsolutePath.Item( resourceType ) <> "" ) then 
+		if ( ConfigFileTypesAbsolutePath.Item( resourceType ) <> "" ) then
 			GetResourceTypeDirectory = ConfigFileTypesAbsolutePath.Item( resourceType )
 		else
 			' Map the "UserFiles" path to a local directory.
-			GetResourceTypeDirectory = Server.MapPath( ConfigFileTypesPath.Item( resourceType ) ) 
+			GetResourceTypeDirectory = Server.MapPath( ConfigFileTypesPath.Item( resourceType ) )
 		end if
 	end if
@@ -64,5 +64,5 @@
 	Dim sResourceTypePath
 	' Get the resource type directory.
-	sResourceTypePath = GetResourceTypeDirectory( resourceType, sCommand ) 
+	sResourceTypePath = GetResourceTypeDirectory( resourceType, sCommand )
 
 	' Ensure that the directory exists.
@@ -173,5 +173,5 @@
 
 	' Check for invalid folder paths (..)
-	If ( InStr( 1, sCurrentFolder, ".." ) <> 0 ) Then
+	If ( InStr( 1, sCurrentFolder, ".." ) <> 0 OR InStr( 1, sCurrentFolder, "\" ) <> 0) Then
 		SendError 102, ""
 	End If
@@ -186,6 +186,6 @@
 	oRegex.Global		= True
 
-' remove . \ / | : ? *  " < >
-	oRegex.Pattern = "(\.|\\|\/|\||:|\?|\*|""|\<|\>)"
+' remove . \ / | : ? *  " < > and control characters
+	oRegex.Pattern = "(\.|\\|\/|\||:|\?|\*|""|\<|\>|[\u0000-\u001F]|\u007F)"
 	SanitizeFolderName = oRegex.Replace( sNewFolderName, "_" )
 
@@ -204,6 +204,6 @@
 	end if
 
-' remove \ / | : ? *  " < >
-	oRegex.Pattern = "(\\|\/|\||:|\?|\*|""|\<|\>)"
+' remove \ / | : ? *  " < > and control characters
+	oRegex.Pattern = "(\\|\/|\||:|\?|\*|""|\<|\>|[\u0000-\u001F]|\u007F)"
 	SanitizeFileName = oRegex.Replace( sNewFileName, "_" )
 
@@ -215,4 +215,36 @@
 	Response.Clear
 	Response.Write "<script type=""text/javascript"">"
+	Response.Write "(function()"
+	Response.Write "{"
+	Response.Write "var d = document.domain ;"
+
+	Response.Write " while ( true )"
+	Response.Write "	{"
+	' Test if we can access a parent property.
+	Response.Write "		try"
+	Response.Write "		{"
+	Response.Write "			var test = window.top.opener.document.domain ;"
+	Response.Write "			break ;"
+	Response.Write "		}"
+	Response.Write "		catch( e ) {}"
+
+	' Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
+	Response.Write "		d = d.replace( /.*?(?:\.|$)/, '' ) ;"
+
+	Response.Write "		if ( d.length == 0 )"
+	' It was not able to detect the domain.
+	Response.Write "			break ;"
+	Response.Write ""
+	Response.Write "		try"
+	Response.Write "		{"
+	Response.Write "			document.domain = d ;"
+	Response.Write "		}"
+	Response.Write "		catch (e)"
+	Response.Write "		{"
+	Response.Write "			break ;"
+	Response.Write "		}"
+	Response.Write "	}"
+	Response.Write "})() ;"
+
 	Response.Write "window.parent.OnUploadCompleted(" & errorNumber & ",""" & Replace( fileUrl, """", "\""" ) & """,""" & Replace( fileName, """", "\""" ) & """,""" & Replace( customMsg , """", "\""" ) & """) ;"
 	Response.Write "</script>"
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/asp/upload.asp
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/asp/upload.asp	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/asp/upload.asp	(revision 1902)
@@ -6,5 +6,5 @@
 <%
  ' FCKeditor - The text editor for Internet - http://www.fckeditor.net
- ' Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ ' Copyright (C) 2003-2008 Frederico Caldeira Knabben
  '
  ' == BEGIN LICENSE ==
@@ -32,4 +32,8 @@
 <!--#include file="class_upload.asp"-->
 <%
+
+Sub SendError( number, text )
+	SendUploadResults number, "", "", text
+End Sub
 
 ' Check if this uploader has been enabled.
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/asp/util.asp
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/asp/util.asp	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/asp/util.asp	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿<%
  ' FCKeditor - The text editor for Internet - http://www.fckeditor.net
- ' Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ ' Copyright (C) 2003-2008 Frederico Caldeira Knabben
  '
  ' == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/aspx/config.ascx
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/aspx/config.ascx	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/aspx/config.ascx	(revision 1902)
@@ -2,5 +2,5 @@
 <%--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -23,5 +23,5 @@
 --%>
 <script runat="server">
-	
+
 	/**
 	 * This function must check the user session to be sure that he/she is
@@ -95,4 +95,4 @@
 		TypeConfig[ "Media" ].QuickUploadAbsolutePath	= ( UserFilesAbsolutePath == "" ? "" : "%UserFilesAbsolutePath%" );
 	}
-	
+
 </script>
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/aspx/connector.aspx
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/aspx/connector.aspx	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/aspx/connector.aspx	(revision 1902)
@@ -3,5 +3,5 @@
 <%--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/aspx/upload.aspx
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/aspx/upload.aspx	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/aspx/upload.aspx	(revision 1902)
@@ -3,5 +3,5 @@
 <%--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/ImageObject.cfc
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/ImageObject.cfc	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/ImageObject.cfc	(revision 1902)
@@ -2,5 +2,5 @@
 <!---
 	ImageObject.cfc written by Rick Root (rick@webworksllc.com)
-	
+
 	Related Web Sites:
 	- http://www.opensourcecf.com/imagecfc (home page)
@@ -33,32 +33,32 @@
 	All rights reserved.
 
-	Redistribution and use in source and binary forms, with or 
-	without modification, are permitted provided that the 
+	Redistribution and use in source and binary forms, with or
+	without modification, are permitted provided that the
 	following conditions are met:
 
-	- Redistributions of source code must retain the above 
-	  copyright notice, this list of conditions and the 
-	  following disclaimer. 
-	- Redistributions in binary form must reproduce the above 
-	  copyright notice, this list of conditions and the 
-	  following disclaimer in the documentation and/or other 
-	  materials provided with the distribution. 
-	- Neither the name of the Webworks, LLC. nor the names of 
-	  its contributors may be used to endorse or promote products 
-	  derived from this software without specific prior written 
-	  permission. 
-
-	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
-	CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
-	INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
-	MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
-	DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
-	CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
-	SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
-	BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
-	LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-	HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
-	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
-	OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
+	- Redistributions of source code must retain the above
+	  copyright notice, this list of conditions and the
+	  following disclaimer.
+	- Redistributions in binary form must reproduce the above
+	  copyright notice, this list of conditions and the
+	  following disclaimer in the documentation and/or other
+	  materials provided with the distribution.
+	- Neither the name of the Webworks, LLC. nor the names of
+	  its contributors may be used to endorse or promote products
+	  derived from this software without specific prior written
+	  permission.
+
+	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+	CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+	INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+	MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+	DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+	CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+	SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+	BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+	LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+	HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+	OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 	SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 --->
@@ -188,5 +188,5 @@
 	</cfif>
 	<cfset imageCFC.setOption(key, val)>
-	
+
 </cffunction>
 
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf5_connector.cfm
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf5_connector.cfm	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf5_connector.cfm	(revision 1902)
@@ -2,5 +2,5 @@
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -130,5 +130,5 @@
 	<cfset xmlContent = "<Error number=""1"" text=""This connector is disabled. Please check the 'editor/filemanager/connectors/cfm/config.cfm' file"" />">
 
-<cfelseif find("..",url.currentFolder)>
+<cfelseif find("..",url.currentFolder) or find("\",url.currentFolder)>
 
 	<cfset xmlContent = "<Error number=""102"" />">
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf5_upload.cfm
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf5_upload.cfm	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf5_upload.cfm	(revision 1902)
@@ -2,5 +2,5 @@
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -48,4 +48,36 @@
 	{
 		WriteOutput('<script type="text/javascript">');
+		WriteOutput("(function()"&
+"{"&
+"	var d = document.domain ;"&
+""&
+"	while ( true )"&
+"	{"&
+		// Test if we can access a parent property.
+"		try"&
+"		{"&
+"			var test = window.top.opener.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 )"&
+			// It was not able to detect the domain.
+"			break ;"&
+""&
+"		try"&
+"		{"&
+"			document.domain = d ;"&
+"		}"&
+"		catch (e)"&
+"		{"&
+"			break ;"&
+"		}"&
+"	}"&
+"})() ;");
+
 		WriteOutput('window.parent.OnUploadCompleted(' & errorNumber & ', "' & JSStringFormat(fileUrl) & '", "' & JSStringFormat(fileName) & '", "' & JSStringFormat(customMsg) & '");' );
 		WriteOutput('</script>');
@@ -68,5 +100,5 @@
 </cfif>
 
-<cfif find( "..", url.currentFolder)>
+<cfif find( "..", url.currentFolder) or find( "\", url.currentFolder)>
 	<cfset SendUploadResults(102)>
 	<cfabort>
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf_basexml.cfm
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf_basexml.cfm	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf_basexml.cfm	(revision 1902)
@@ -2,5 +2,5 @@
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf_commands.cfm
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf_commands.cfm	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf_commands.cfm	(revision 1902)
@@ -2,5 +2,5 @@
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -33,4 +33,5 @@
 	<cfset var sFileExt = "">
 	<cfset var sFileUrl = "">
+	<cfset var sTempDir = "">
 	<cfset var sTempFilePath = "">
 	<cfset var errorNumber = 0>
@@ -39,6 +40,15 @@
 	<cfset var destination = "">
 
-    <cftry>
-        <cffile action="UPLOAD" filefield="NewFile" destination="#GetTempDirectory()#" nameconflict="makeunique" mode="0755" />
+	<cftry>
+		<cfif isDefined( "REQUEST.Config.TempDirectory" )>
+			<cfset sTempDir = REQUEST.Config.TempDirectory>
+		<cfelse>
+			<cfset sTempDir = GetTempDirectory()>
+		</cfif>
+		<cfif NOT DirectoryExists (sTempDir)>
+			<cfthrow message="Invalid temporary directory: #sTempDir#">
+		</cfif>
+
+		<cffile action="UPLOAD" filefield="NewFile" destination="#sTempDir#" nameconflict="makeunique" mode="0755" />
 		<cfset sTempFilePath = CFFILE.ServerDirectory & REQUEST.fs & CFFILE.ServerFile>
 
@@ -93,10 +103,5 @@
 
  		<cfset destination = sServerDir & sFileName>
-<!---
-		<cfdump var="#sTempFilePath#">
-		<cfoutput ><br /></cfoutput>
-		<cfdump var="#destination#">
-		<cfabort>
- --->
+
 		<cflock name="#destination#" timeout="30" type="Exclusive">
 		<cftry>
@@ -121,5 +126,5 @@
 		</cfcatch>
 
-    </cftry>
+	</cftry>
 
 	<cfset SendUploadResults( errorNumber, sFileUrl, sFileName, customMsg ) >
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf_connector.cfm
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf_connector.cfm	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf_connector.cfm	(revision 1902)
@@ -2,5 +2,5 @@
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf_io.cfm
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf_io.cfm	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf_io.cfm	(revision 1902)
@@ -2,5 +2,5 @@
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -175,5 +175,5 @@
 </cffunction>
 
-<cffunction name="GetCurrentFolder" returntype="String" output="false">
+<cffunction name="GetCurrentFolder" returntype="String" output="true">
 	<cfset var sCurrentFolder = "/">
 
@@ -194,5 +194,5 @@
 	<cfset sCurrentFolder = rereplace( sCurrentFolder, "//+", "/", "all" )>
 
-	<cfif find( "..", sCurrentFolder)>
+	<cfif find( "..", sCurrentFolder) or find( "\", sCurrentFolder) >
 		<cfset SendError( 102, "" )>
 	</cfif>
@@ -205,6 +205,6 @@
 
 	<!--- Do a cleanup of the folder name to avoid possible problems --->
-	<!--- Remove . \ / | : ? * " < > --->
-	<cfset sNewFolderName = rereplace( sNewFolderName, '\.+|\\+|\/+|\|+|\:+|\?+|\*+|"+|<+|>+', "_", "all" )>
+	<!--- Remove . \ / | : ? * " < > and control characters --->
+	<cfset sNewFolderName = rereplace( sNewFolderName, '\.+|\\+|\/+|\|+|\:+|\?+|\*+|"+|<+|>+|[[:cntrl:]]+', "_", "all" )>
 
 	<cfreturn sNewFolderName>
@@ -267,5 +267,36 @@
 
 	<cfoutput>
-		<script type="text/javascript">
+<script type="text/javascript">
+(function()
+{
+	var d = document.domain ;
+
+	while ( true )
+	{
+		// Test if we can access a parent property.
+		try
+		{
+			var test = window.top.opener.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 ;
+		}
+	}
+})() ;
+
 			window.parent.OnUploadCompleted( #errorNumber#, "#JSStringFormat(fileUrl)#", "#JSStringFormat(fileName)#", "#JSStringFormat(customMsg)#" );
 		</script>
@@ -282,6 +313,6 @@
 
 	<!--- Do a cleanup of the file name to avoid possible problems --->
-	<!--- Remove \ / | : ? * " < > --->
-	<cfset sNewFileName = rereplace( sNewFileName, '\\[.]+|\\+|\/+|\|+|\:+|\?+|\*+|"+|<+|>+', "_", "all" )>
+	<!--- Remove \ / | : ? * " < > and control characters --->
+	<cfset sNewFileName = rereplace( sNewFileName, '\\[.]+|\\+|\/+|\|+|\:+|\?+|\*+|"+|<+|>+|[[:cntrl:]]+', "_", "all" )>
 
 	<cfreturn sNewFileName>
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf_upload.cfm
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf_upload.cfm	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf_upload.cfm	(revision 1902)
@@ -2,5 +2,5 @@
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -33,4 +33,10 @@
 <cfinclude template="cf_io.cfm">
 <cfinclude template="cf_commands.cfm">
+
+<cffunction name="SendError" returntype="void" output="true">
+	<cfargument name="number" required="true" type="Numeric">
+	<cfargument name="text" required="true">
+	<cfreturn SendUploadResults( "#ARGUMENTS.number#", "", "", "ARGUMENTS.text" )>
+</cffunction>
 
 <cfset REQUEST.Config = Config>
@@ -65,4 +71,2 @@
 
 <cfset FileUpload( sType, sCurrentFolder, sCommand )>
-
-
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf_util.cfm
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf_util.cfm	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/cf_util.cfm	(revision 1902)
@@ -2,5 +2,5 @@
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -130,3 +130,2 @@
 	<cfreturn false>
 </cffunction>
-
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/config.cfm
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/config.cfm	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/config.cfm	(revision 1902)
@@ -2,5 +2,5 @@
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -27,5 +27,6 @@
 
 	// SECURITY: You must explicitly enable this "connector". (Set enabled to "true")
-	Config.Enabled = true ;
+	Config.Enabled = false ;
+
 
 	// Path to uploaded files relative to the document root.
@@ -57,4 +58,9 @@
 	Config.HtmlExtensions					= "html,htm,xml,xsd,txt,js" ;
 
+	//Due to known issues with GetTempDirectory function, it is
+	//recommended to set this vairiable to a valid directory
+	//instead of using the GetTempDirectory function
+	//(used by MX 6.0 and above)
+	Config.TempDirectory = GetTempDirectory();
 
 //	Configuration settings for each Resource Type
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/connector.cfm
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/connector.cfm	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/connector.cfm	(revision 1902)
@@ -2,5 +2,5 @@
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -30,2 +30,3 @@
 	<cfinclude template="cf_connector.cfm">
 </cfif>
+<cfabort>
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/image.cfc
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/image.cfc	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/image.cfc	(revision 1902)
@@ -1323,3 +1323,2 @@
 
 </cfcomponent>
-
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/upload.cfm
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/upload.cfm	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/cfm/upload.cfm	(revision 1902)
@@ -2,5 +2,5 @@
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/lasso/config.lasso
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/lasso/config.lasso	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/lasso/config.lasso	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/lasso/connector.lasso
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/lasso/connector.lasso	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/lasso/connector.lasso	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -56,4 +56,63 @@
 	);
 
+	/*.....................................................................
+	Custom tag sets the HTML response.
+	*/
+
+	define_tag(
+		'htmlreply',
+		-namespace='fck_',
+		-priority='replace',
+		-required='uploadResult',
+		-optional='NewFilePath',
+		-type='string',
+		-description='Sets the HTML response for the FCKEditor File Upload feature.'
+	);
+		$__html_reply__ = '\
+<script type="text/javascript">
+(function()
+{
+	var d = document.domain ;
+
+	while ( true )
+	{
+		// Test if we can access a parent property.
+		try
+		{
+			var test = window.top.opener.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 ;
+		}
+	}
+})() ;
+';
+			if($uploadResult == '0' || $uploadResult == '201');
+			$__html_reply__ = $__html_reply__ + '\
+	window.parent.OnUploadCompleted(' + $uploadResult + ',\'' + $NewFilePath + '\',\'' + $NewFilePath->split('/')->last + '\');
+</script>
+			';
+			else;
+			$__html_reply__ = $__html_reply__ + '\
+	window.parent.OnUploadCompleted(' + $uploadResult + ');
+</script>
+			';
+			/if;
+	/define_tag;
+
 
     /*.....................................................................
@@ -64,7 +123,19 @@
 	var('currentFolderURL' = $ServerPath
 		+ $config->find('Subdirectories')->find(action_param('Type'))
-		+ action_param('CurrentFolder')
+		+ $CurrentFolder
 	);
 
+	if($CurrentFolder->(Find: '..') || $CurrentFolder->(Find: '\\'));
+		if($Command == 'FileUpload');
+			$responseType = 'html';
+			$uploadResult = '102';
+			fck_htmlreply(
+				-uploadResult=$uploadResult
+			);
+		else;
+			$errorNumber = 102;
+			$commandData += '<Error number="' + $errorNumber + '" />\n';
+		/if;
+	else;
 
     /*.....................................................................
@@ -111,4 +182,5 @@
             */
 			case('CreateFolder');
+				$NewFolderName = (String_ReplaceRegExp: $NewFolderName, -find='\\.|\\\\|\\/|\\||\\:|\\?|\\*|"|<|>', -replace='_');
 				var('newFolder' = $currentFolderURL + $NewFolderName + '/');
 				file_create($newFolder);
@@ -149,5 +221,9 @@
                 Was a file actually uploaded?
                 */
-				file_uploads->size ? $NewFile = file_uploads->get(1) | $uploadResult = '202';
+                if(file_uploads->size);
+                	$NewFile = file_uploads->get(1);
+                else;
+                	$uploadResult = '202';
+                /if;
 
 				if($uploadResult == '0');
@@ -158,7 +234,9 @@
                     */
 					$NewFileName = $NewFile->find('OrigName');
+					$NewFileName = (String_ReplaceRegExp: $NewFileName, -find='\\\\|\\/|\\||\\:|\\?|\\*|"|<|>', -replace='_');
 					$OrigFilePath = $currentFolderURL + $NewFileName;
 					$NewFilePath = $OrigFilePath;
 					local('fileExtension') = '.' + $NewFile->find('OrigExtension');
+					#fileExtension = (String_ReplaceRegExp: #fileExtension, -find='\\\\|\\/|\\||\\:|\\?|\\*|"|<|>', -replace='_');
 					local('shortFileName') = $NewFileName->removetrailing(#fileExtension)&;
 
@@ -192,29 +270,15 @@
 								$OrigFilePath != $NewFilePath ? $uploadResult = 201;
 							case;
-								$uploadResult = '202';
+								$uploadResult = file_currenterror( -errorcode);
 						/select;
 					/if;
 				/if;
-
-
-                /*.........................................................
-                Set the HTML response.
-                */
-                if($uploadResult == '0' || $uploadResult == '201');
-				$__html_reply__ = '\
-<script type="text/javascript">
-	window.parent.frames[\'frmUpload\'].OnUploadCompleted(' + $uploadResult + ',\'' + $NewFilePath + '\',\'' + $NewFilePath->split('/')->last + '\');
-</script>
-				';
-                else;
-				$__html_reply__ = '\
-<script type="text/javascript">
-	window.parent.frames[\'frmUpload\'].OnUploadCompleted(' + $uploadResult + ');
-</script>
-				';
-				/if;
+				fck_htmlreply(
+					-uploadResult=$uploadResult,
+					-NewFilePath=$NewFilePath
+				);
 		/select;
 	/inline;
-
+	/if;
 
     /*.....................................................................
@@ -235,23 +299,24 @@
 Content-Type: text/xml; charset=utf-8
 [//lasso
-		/header;
-
-
-        /*.................................................................
-        Set the content type encoding for Lasso.
-        */
+/header;
+
+		/*
+			Set the content type encoding for Lasso.
+		*/
 		content_type('text/xml; charset=utf-8');
 
-
-        /*.................................................................
-        Wrap the response as XML and output.
-        */
+		/*
+			Wrap the response as XML and output.
+		*/
 		$__html_reply__ = '\
 <?xml version="1.0" encoding="utf-8" ?>
-<Connector command="' + $Command + '" resourceType="' + $Type + '">
-	<CurrentFolder path="' + $CurrentFolder + '" url="' + $currentFolderURL + '" />
-' + $commandData + '
-</Connector>
-		';
+<Connector command="' + $Command + '" resourceType="' + $Type + '">';
+
+		if($errorNumber != '102');
+			$__html_reply__ += '<CurrentFolder path="' + $CurrentFolder + '" url="' + $currentFolderURL + '" />';
+		/if;
+
+		$__html_reply__ += $commandData + '
+</Connector>';
 	/if;
 ]
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/lasso/upload.lasso
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/lasso/upload.lasso	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/lasso/upload.lasso	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -57,5 +57,4 @@
 	);
 
-
 	/*.....................................................................
 	Custom tag sets the HTML response.
@@ -78,4 +77,34 @@
 		$__html_reply__ = '\
 <script type="text/javascript">
+(function()
+{
+	var d = document.domain ;
+
+	while ( true )
+	{
+		// Test if we can access a parent property.
+		try
+		{
+			var test = window.top.opener.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 ;
+		}
+	}
+})() ;
 	window.parent.OnUploadCompleted(' + #errorNumber + ',"'
 		+ string_replace(#fileUrl, -find='"', -replace='\\"') + '","'
@@ -86,4 +115,7 @@
 	/define_tag;
 
+	if($CurrentFolder->(Find: '..') || $CurrentFolder->(Find: '\\'));
+		$errorNumber = 102;
+	/if;
 
 	if($config->find('Enabled'));
@@ -95,5 +127,7 @@
 			Was a file actually uploaded?
 			*/
-			file_uploads->size ? $NewFile = file_uploads->get(1) | $errorNumber = 202;
+			if($errorNumber != '102');
+				file_uploads->size ? $NewFile = file_uploads->get(1) | $errorNumber = 202;
+			/if;
 
 			if($errorNumber == 0);
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/perl/basexml.pl
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/perl/basexml.pl	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/perl/basexml.pl	(revision 1902)
@@ -1,5 +1,5 @@
 #####
 #  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2007 Frederico Caldeira Knabben
+#  Copyright (C) 2003-2008 Frederico Caldeira Knabben
 #
 #  == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/perl/commands.pl
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/perl/commands.pl	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/perl/commands.pl	(revision 1902)
@@ -1,5 +1,5 @@
 #####
 #  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2007 Frederico Caldeira Knabben
+#  Copyright (C) 2003-2008 Frederico Caldeira Knabben
 #
 #  == BEGIN LICENSE ==
@@ -92,4 +92,5 @@
 	if($FORM{'NewFolderName'} ne "") {
 		$sNewFolderName = $FORM{'NewFolderName'};
+		$sNewFolderName =~ s/\.|\\|\/|\||\:|\?|\*|\"|<|>|[[:cntrl:]]/_/g;
 		# Map the virtual path to the local server path of the current folder.
 		$sServerDir = &ServerMapFolder($resourceType, $currentFolder);
@@ -129,4 +130,5 @@
 		# Get the uploaded file name.
 		$sFileName = $new_fname;
+		$sFileName =~ s/\\|\/|\||\:|\?|\*|\"|<|>|[[:cntrl:]]/_/g;
 		$sOriginalFileName = $sFileName;
 
@@ -141,5 +143,14 @@
 			} else {
 				copy("$img_dir/$new_fname","$sFilePath");
-				chmod(0777,$sFilePath);
+				if (defined $CHMOD_ON_UPLOAD) {
+					if ($CHMOD_ON_UPLOAD) {
+						umask(000);
+						chmod($CHMOD_ON_UPLOAD,$sFilePath);
+					}
+				}
+				else {
+					umask(000);
+					chmod(0777,$sFilePath);
+				}
 				unlink("$img_dir/$new_fname");
 				last;
@@ -159,6 +170,41 @@
 	local($sErrorNumber, $sFileUrl, $sFileName, $customMsg) = @_;
 
-	print "Content-type: text/html\n\n";
-	print '<script type="text/javascript">';
+	print <<EOF;
+Content-type: text/html
+
+<script type="text/javascript">
+// Automatically detect the correct document.domain (#1919).
+(function()
+{
+	var d = document.domain ;
+
+	while ( true )
+	{
+		// Test if we can access a parent property.
+		try
+		{
+			var test = window.top.opener.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 ;
+		}
+	}
+})() ;
+
+EOF
 	print 'window.parent.OnUploadCompleted(' . $sErrorNumber . ',"' . JS_cnv($sFileUrl) . '","' . JS_cnv($sFileName) . '","' . JS_cnv($customMsg) . '") ;';
 	print '</script>';
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/perl/connector.cgi
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/perl/connector.cgi	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/perl/connector.cgi	(revision 1902)
@@ -3,5 +3,5 @@
 #####
 #  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2007 Frederico Caldeira Knabben
+#  Copyright (C) 2003-2008 Frederico Caldeira Knabben
 #
 #  == BEGIN LICENSE ==
@@ -102,5 +102,5 @@
 
 	# Check for invalid folder paths (..)
-	if ( $sCurrentFolder =~ /\.\./ ) {
+	if ( $sCurrentFolder =~ /(?:\.\.|\\)/ ) {
 		SendError( 102, "" ) ;
 	}
@@ -135,3 +135,2 @@
 	exit ;
 }
-
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/perl/io.pl
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/perl/io.pl	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/perl/io.pl	(revision 1902)
@@ -1,5 +1,5 @@
 #####
 #  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2007 Frederico Caldeira Knabben
+#  Copyright (C) 2003-2008 Frederico Caldeira Knabben
 #
 #  == BEGIN LICENSE ==
@@ -88,7 +88,17 @@
 	}
 	if(!(-e $folderPath)) {
-		umask(000);
-		mkdir("$folderPath",0777);
-		chmod(0777,"$folderPath");
+		if (defined $CHMOD_ON_FOLDER_CREATE && !$CHMOD_ON_FOLDER_CREATE) {
+			mkdir("$folderPath");
+		}
+		else {
+			umask(000);
+			if (defined $CHMOD_ON_FOLDER_CREATE) {
+				mkdir("$folderPath",$CHMOD_ON_FOLDER_CREATE);
+			}
+			else {
+				mkdir("$folderPath",0777);
+			}
+		}
+
 		return(0);
 	} else {
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/perl/upload.cgi
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/perl/upload.cgi	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/perl/upload.cgi	(revision 1902)
@@ -3,5 +3,5 @@
 #####
 #  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2007 Frederico Caldeira Knabben
+#  Copyright (C) 2003-2008 Frederico Caldeira Knabben
 #
 #  == BEGIN LICENSE ==
@@ -105,5 +105,5 @@
 
 	# Check for invalid folder paths (..)
-	if ( $sCurrentFolder =~ /\.\./ ) {
+	if ( $sCurrentFolder =~ /(?:\.\.|\\)/ ) {
 		SendError( 102, "" ) ;
 	}
@@ -116,3 +116,2 @@
 
 }
-
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/perl/upload_fck.pl
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/perl/upload_fck.pl	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/perl/upload_fck.pl	(revision 1902)
@@ -1,5 +1,5 @@
 #####
 #  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2007 Frederico Caldeira Knabben
+#  Copyright (C) 2003-2008 Frederico Caldeira Knabben
 #
 #  == BEGIN LICENSE ==
@@ -28,4 +28,14 @@
 # File size max(unit KB)
 $MAX_CONTENT_SIZE =  30000;
+
+# After file is uploaded, sometimes it is required to change its permissions
+# so that it was possible to access it at the later time.
+# If possible, it is recommended to set more restrictive permissions, like 0755.
+# Set to 0 to disable this feature.
+$CHMOD_ON_UPLOAD = 0777;
+
+# See comments above.
+# Used when creating folders that does not exist.
+$CHMOD_ON_FOLDER_CREATE = 0755;
 
 # Filelock (1=use,0=not use)
@@ -125,7 +135,16 @@
 	my ($FORM) = @_;
 
-
-	mkdir($img_dir,0777);
-	chmod(0777,$img_dir);
+	if (defined $CHMOD_ON_FOLDER_CREATE && !$CHMOD_ON_FOLDER_CREATE) {
+		mkdir("$img_dir");
+	}
+	else {
+		umask(000);
+		if (defined $CHMOD_ON_FOLDER_CREATE) {
+			mkdir("$img_dir",$CHMOD_ON_FOLDER_CREATE);
+		}
+		else {
+			mkdir("$img_dir",0777);
+		}
+	}
 
 	undef $img_data_exists;
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/perl/util.pl
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/perl/util.pl	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/perl/util.pl	(revision 1902)
@@ -1,5 +1,5 @@
 #####
 #  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2007 Frederico Caldeira Knabben
+#  Copyright (C) 2003-2008 Frederico Caldeira Knabben
 #
 #  == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/php/basexml.php
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/php/basexml.php	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/php/basexml.php	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -67,5 +67,5 @@
 {
 	if ( isset( $GLOBALS['HeaderSent'] ) && $GLOBALS['HeaderSent'] )
-	{ 
+	{
 		SendErrorNode( $number, $text ) ;
 		CreateXmlFooter() ;
@@ -79,7 +79,7 @@
 
 		echo '<Connector>' ;
-		
+
 		SendErrorNode( $number, $text ) ;
-		
+
 		echo '</Connector>' ;
 	}
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/php/commands.php
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/php/commands.php	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/php/commands.php	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -185,13 +185,14 @@
 		if ( isset( $Config['SecureImageUploads'] ) )
 		{
-			if ( !IsImageValid( $oFile['tmp_name'], $sExtension ) )
+			if ( ( $isImageValid = IsImageValid( $oFile['tmp_name'], $sExtension ) ) === false )
 			{
 				$sErrorNumber = '202' ;
 			}
 		}
-		
+
 		if ( isset( $Config['HtmlExtensions'] ) )
 		{
-			if ( !IsHtmlExtension( $sExtension, $Config['HtmlExtensions'] ) && DetectHtml( $oFile['tmp_name'] ) )
+			if ( !IsHtmlExtension( $sExtension, $Config['HtmlExtensions'] ) &&
+				( $detectHtml = DetectHtml( $oFile['tmp_name'] ) ) === true )
 			{
 				$sErrorNumber = '202' ;
@@ -220,6 +221,18 @@
 					if ( is_file( $sFilePath ) )
 					{
+						if ( isset( $Config['ChmodOnUpload'] ) && !$Config['ChmodOnUpload'] )
+						{
+							break ;
+						}
+
+						$permissions = 0777;
+
+						if ( isset( $Config['ChmodOnUpload'] ) && $Config['ChmodOnUpload'] )
+						{
+							$permissions = $Config['ChmodOnUpload'] ;
+						}
+
 						$oldumask = umask(0) ;
-						chmod( $sFilePath, 0777 ) ;
+						chmod( $sFilePath, $permissions ) ;
 						umask( $oldumask ) ;
 					}
@@ -228,4 +241,19 @@
 				}
 			}
+
+			if ( file_exists( $sFilePath ) )
+			{
+				//previous checks failed, try once again
+				if ( isset( $isImageValid ) && $isImageValid === -1 && IsImageValid( $sFilePath, $sExtension ) === false )
+				{
+					@unlink( $sFilePath ) ;
+					$sErrorNumber = '202' ;
+				}
+				else if ( isset( $detectHtml ) && $detectHtml === -1 && DetectHtml( $sFilePath ) === true )
+				{
+					@unlink( $sFilePath ) ;
+					$sErrorNumber = '202' ;
+				}
+			}
 		}
 		else
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/php/config.php
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/php/config.php	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/php/config.php	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -26,5 +26,5 @@
 
 // SECURITY: You must explicitly enable this "connector". (Set it to "true").
-// WARNING: don't just set "$Config['Enabled'] = true ;", you must be sure that only 
+// WARNING: don't just set "$Config['Enabled'] = true ;", you must be sure that only
 //		authenticated users can access this file or use some kind of session checking.
 $Config['Enabled'] = false ;
@@ -44,12 +44,12 @@
 $Config['ForceSingleExtension'] = true ;
 
-// Perform additional checks for image files
-// if set to true, validate image size (using getimagesize)
+// Perform additional checks for image files.
+// If set to true, validate image size (using getimagesize).
 $Config['SecureImageUploads'] = true;
 
-// What the user can do with this connector
+// What the user can do with this connector.
 $Config['ConfigAllowedCommands'] = array('QuickUpload', 'FileUpload', 'GetFolders', 'GetFoldersAndFiles', 'CreateFolder') ;
 
-// Allowed Resource Types
+// Allowed Resource Types.
 $Config['ConfigAllowedTypes'] = array('File', 'Image', 'Flash', 'Media') ;
 
@@ -58,10 +58,21 @@
 $Config['HtmlExtensions'] = array("html", "htm", "xml", "xsd", "txt", "js") ;
 
+// After file is uploaded, sometimes it is required to change its permissions
+// so that it was possible to access it at the later time.
+// If possible, it is recommended to set more restrictive permissions, like 0755.
+// Set to 0 to disable this feature.
+// Note: not needed on Windows-based servers.
+$Config['ChmodOnUpload'] = 0777 ;
+
+// See comments above.
+// Used when creating folders that does not exist.
+$Config['ChmodOnFolderCreate'] = 0777 ;
+
 /*
 	Configuration settings for each Resource Type
 
-	- AllowedExtensions: the possible extensions that can be allowed. 
+	- AllowedExtensions: the possible extensions that can be allowed.
 		If it is empty then any file type can be uploaded.
-	- DeniedExtensions: The extensions that won't be allowed. 
+	- DeniedExtensions: The extensions that won't be allowed.
 		If it is empty then no restrictions are done here.
 
@@ -70,11 +81,11 @@
 
 	- FileTypesPath: the virtual folder relative to the document root where
-		these resources will be located. 
+		these resources will be located.
 		Attention: It must start and end with a slash: '/'
 
 	- FileTypesAbsolutePath: the physical path to the above folder. It must be
-		an absolute path. 
+		an absolute path.
 		If it's an empty string then it will be autocalculated.
-		Useful if you are using a virtual directory, symbolic link or alias. 
+		Useful if you are using a virtual directory, symbolic link or alias.
 		Examples: 'C:\\MySite\\userfiles\\' or '/root/mysite/userfiles/'.
 		Attention: The above 'FileTypesPath' must point to the same directory.
@@ -82,21 +93,21 @@
 
 	 - QuickUploadPath: the virtual folder relative to the document root where
-		these resources will be uploaded using the Upload tab in the resources 
+		these resources will be uploaded using the Upload tab in the resources
 		dialogs.
 		Attention: It must start and end with a slash: '/'
 
 	 - QuickUploadAbsolutePath: the physical path to the above folder. It must be
-		an absolute path. 
+		an absolute path.
 		If it's an empty string then it will be autocalculated.
-		Useful if you are using a virtual directory, symbolic link or alias. 
+		Useful if you are using a virtual directory, symbolic link or alias.
 		Examples: 'C:\\MySite\\userfiles\\' or '/root/mysite/userfiles/'.
 		Attention: The above 'QuickUploadPath' must point to the same directory.
 		Attention: It must end with a slash: '/'
 
-	 	NOTE: by default, QuickUploadPath and QuickUploadAbsolutePath point to 
-	 	"userfiles" directory to maintain backwards compatibility with older versions of FCKeditor. 
+	 	NOTE: by default, QuickUploadPath and QuickUploadAbsolutePath point to
+	 	"userfiles" directory to maintain backwards compatibility with older versions of FCKeditor.
 	 	This is fine, but you in some cases you will be not able to browse uploaded files using file browser.
-	 	Example: if you click on "image button", select "Upload" tab and send image 
-	 	to the server, image will appear in FCKeditor correctly, but because it is placed 
+	 	Example: if you click on "image button", select "Upload" tab and send image
+	 	to the server, image will appear in FCKeditor correctly, but because it is placed
 	 	directly in /userfiles/ directory, you'll be not able to see it in built-in file browser.
 	 	The more expected behaviour would be to send images directly to "image" subfolder.
@@ -104,8 +115,8 @@
 			$Config['QuickUploadPath']['Image']			= $Config['UserFilesPath'] ;
 			$Config['QuickUploadAbsolutePath']['Image']	= $Config['UserFilesAbsolutePath'] ;
-		into:	
+		into:
 			$Config['QuickUploadPath']['Image']			= $Config['FileTypesPath']['Image'] ;
-			$Config['QuickUploadAbsolutePath']['Image'] 	= $Config['FileTypesAbsolutePath']['Image'] ;			
-		
+			$Config['QuickUploadAbsolutePath']['Image'] 	= $Config['FileTypesAbsolutePath']['Image'] ;
+
 */
 
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/php/connector.php
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/php/connector.php	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/php/connector.php	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -50,6 +50,6 @@
 	$sCurrentFolder	= GetCurrentFolder() ;
 
-	// Check if it is an allowed command 
-	if ( ! IsAllowedCommand( $sCommand ) ) 
+	// Check if it is an allowed command
+	if ( ! IsAllowedCommand( $sCommand ) )
 		SendError( 1, 'The "' . $sCommand . '" command isn\'t allowed' ) ;
 
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/php/io.php
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/php/io.php	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/php/io.php	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -30,5 +30,5 @@
 	global $Config ;
 
-	if ( $sCommand == "QuickUpload") 
+	if ( $sCommand == "QuickUpload")
 		return $Config['QuickUploadPath'][$resourceType] ;
 	else
@@ -39,5 +39,5 @@
 {
 	global $Config ;
-	if ( $sCommand == "QuickUpload") 
+	if ( $sCommand == "QuickUpload")
 	{
 		if ( strlen( $Config['QuickUploadAbsolutePath'][$resourceType] ) > 0 )
@@ -89,4 +89,5 @@
 function CreateServerFolder( $folderPath, $lastFolder = null )
 {
+	global $Config ;
 	$sParent = GetParentFolder( $folderPath ) ;
 
@@ -104,5 +105,5 @@
 			return "Can't create $folderPath directory" ;
 		}
-		
+
 		$sErrorMsg = CreateServerFolder( $sParent, $folderPath ) ;
 		if ( $sErrorMsg != '' )
@@ -119,8 +120,20 @@
 		ini_set( 'track_errors', '1' ) ;
 
-		// To create the folder with 0777 permissions, we need to set umask to zero.
-		$oldumask = umask(0) ;
-		mkdir( $folderPath, 0777 ) ;
-		umask( $oldumask ) ;
+		if ( isset( $Config['ChmodOnFolderCreate'] ) && !$Config['ChmodOnFolderCreate'] )
+		{
+			mkdir( $folderPath ) ;
+		}
+		else
+		{
+			$permissions = 0777 ;
+			if ( isset( $Config['ChmodOnFolderCreate'] ) )
+			{
+				$permissions = $Config['ChmodOnFolderCreate'] ;
+			}
+			// To create the folder with 0777 permissions, we need to set umask to zero.
+			$oldumask = umask(0) ;
+			mkdir( $folderPath, $permissions ) ;
+			umask( $oldumask ) ;
+		}
 
 		$sErrorMsg = $php_errormsg ;
@@ -138,7 +151,7 @@
 function GetRootPath()
 {
-    if (!isset($_SERVER)) {
-        global $_SERVER;
-    }
+	if (!isset($_SERVER)) {
+		global $_SERVER;
+	}
 	$sRealPath = realpath( './' ) ;
 
@@ -147,5 +160,5 @@
 
 	$sSelfPath = str_replace( '/', DIRECTORY_SEPARATOR, $sSelfPath ) ;
-	
+
 	$position = strpos( $sRealPath, $sSelfPath ) ;
 
@@ -181,8 +194,8 @@
 	$arDenied	= $Config['DeniedExtensions'][$resourceType] ;
 
-	if ( count($arAllowed) > 0 && !in_array( $sExtension, $arAllowed ) ) 
+	if ( count($arAllowed) > 0 && !in_array( $sExtension, $arAllowed ) )
 		return false ;
 
-	if ( count($arDenied) > 0 && in_array( $sExtension, $arDenied ) ) 
+	if ( count($arDenied) > 0 && in_array( $sExtension, $arDenied ) )
 		return false ;
 
@@ -195,5 +208,5 @@
 	if ( !in_array( $resourceType, $Config['ConfigAllowedTypes'] ) )
 		return false ;
-	
+
 	return true ;
 }
@@ -205,5 +218,5 @@
 	if ( !in_array( $sCommand, $Config['ConfigAllowedCommands'] ) )
 		return false ;
-	
+
 	return true ;
 }
@@ -211,12 +224,14 @@
 function GetCurrentFolder()
 {
-    if (!isset($_GET)) {
-        global $_GET;
-    }
+	if (!isset($_GET)) {
+		global $_GET;
+	}
 	$sCurrentFolder	= isset( $_GET['CurrentFolder'] ) ? $_GET['CurrentFolder'] : '/' ;
 
 	// Check the current folder syntax (must begin and start with a slash).
-	if ( ! ereg( '/$', $sCurrentFolder ) ) $sCurrentFolder .= '/' ;
-	if ( strpos( $sCurrentFolder, '/' ) !== 0 ) $sCurrentFolder = '/' . $sCurrentFolder ;
+	if ( !preg_match( '|/$|', $sCurrentFolder ) )
+		$sCurrentFolder .= '/' ;
+	if ( strpos( $sCurrentFolder, '/' ) !== 0 )
+		$sCurrentFolder = '/' . $sCurrentFolder ;
 
 	// Ensure the folder path has no double-slashes
@@ -226,5 +241,5 @@
 
 	// Check for invalid folder paths (..)
-	if ( strpos( $sCurrentFolder, '..' ) )
+	if ( strpos( $sCurrentFolder, '..' ) || strpos( $sCurrentFolder, "\\" ))
 		SendError( 102, '' ) ;
 
@@ -238,5 +253,5 @@
 
 	// Remove . \ / | : ? * " < >
-	$sNewFolderName = preg_replace( '/\\.|\\\\|\\/|\\||\\:|\\?|\\*|"|<|>/', '_', $sNewFolderName ) ;
+	$sNewFolderName = preg_replace( '/\\.|\\\\|\\/|\\||\\:|\\?|\\*|"|<|>|[[:cntrl:]]/', '_', $sNewFolderName ) ;
 
 	return $sNewFolderName ;
@@ -255,5 +270,5 @@
 
 	// Remove \ / | : ? * " < >
-	$sNewFileName = preg_replace( '/\\\\|\\/|\\||\\:|\\?|\\*|"|<|>/', '_', $sNewFileName ) ;
+	$sNewFileName = preg_replace( '/\\\\|\\/|\\||\\:|\\?|\\*|"|<|>|[[:cntrl:]]/', '_', $sNewFileName ) ;
 
 	return $sNewFileName ;
@@ -263,5 +278,38 @@
 function SendUploadResults( $errorNumber, $fileUrl = '', $fileName = '', $customMsg = '' )
 {
-	echo '<script type="text/javascript">' ;
+	echo <<<EOF
+<script type="text/javascript">
+(function()
+{
+	var d = document.domain ;
+
+	while ( true )
+	{
+		// Test if we can access a parent property.
+		try
+		{
+			var test = window.top.opener.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 ;
+		}
+	}
+})() ;
+
+EOF;
 	$rpl = array( '\\' => '\\\\', '"' => '\\"' ) ;
 	echo 'window.parent.OnUploadCompleted(' . $errorNumber . ',"' . strtr( $fileUrl, $rpl ) . '","' . strtr( $fileName, $rpl ) . '", "' . strtr( $customMsg, $rpl ) . '") ;' ;
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/php/phpcompat.php
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/php/phpcompat.php	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/php/phpcompat.php	(revision 1902)
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/php/upload.php
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/php/upload.php	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/php/upload.php	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -44,8 +44,8 @@
 $sType = isset( $_GET['Type'] ) ? $_GET['Type'] : 'File' ;
 
-$sCurrentFolder	= GetCurrentFolder() ; 
+$sCurrentFolder	= GetCurrentFolder() ;
 
 // Is enabled the upload?
-if ( ! IsAllowedCommand( $sCommand ) ) 
+if ( ! IsAllowedCommand( $sCommand ) )
 	SendUploadResults( '1', '', '', 'The ""' . $sCommand . '"" command isn\'t allowed' ) ;
 
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/php/util.php
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/php/util.php	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/php/util.php	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -35,7 +35,30 @@
 }
 
+function FindBadUtf8( $string )
+{
+	$regex =
+	'([\x00-\x7F]'.
+	'|[\xC2-\xDF][\x80-\xBF]'.
+	'|\xE0[\xA0-\xBF][\x80-\xBF]'.
+	'|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}'.
+	'|\xED[\x80-\x9F][\x80-\xBF]'.
+	'|\xF0[\x90-\xBF][\x80-\xBF]{2}'.
+	'|[\xF1-\xF3][\x80-\xBF]{3}'.
+	'|\xF4[\x80-\x8F][\x80-\xBF]{2}'.
+	'|(.{1}))';
+
+	while (preg_match('/'.$regex.'/S', $string, $matches)) {
+		if ( isset($matches[2])) {
+			return true;
+		}
+		$string = substr($string, strlen($matches[0]));
+	}
+
+	return false;
+}
+
 function ConvertToXmlAttribute( $value )
 {
-	if ( defined( 'PHP_OS' ) ) 
+	if ( defined( 'PHP_OS' ) )
 	{
 		$os = PHP_OS ;
@@ -45,13 +68,13 @@
 		$os = php_uname() ;
 	}
-	
-	if ( strtoupper( substr( $os, 0, 3 ) ) === 'WIN' ) 
+
+	if ( strtoupper( substr( $os, 0, 3 ) ) === 'WIN' || FindBadUtf8( $value ) )
 	{
 		return ( utf8_encode( htmlspecialchars( $value ) ) ) ;
-	} 
-	else 
+	}
+	else
 	{
 		return ( htmlspecialchars( $value ) ) ;
-	}	
+	}
 }
 
@@ -78,20 +101,28 @@
 
 /**
- * Detect HTML in the first KB to prevent against potential security issue with 
+ * Detect HTML in the first KB to prevent against potential security issue with
  * IE/Safari/Opera file type auto detection bug.
  * Returns true if file contain insecure HTML code at the beginning.
- * 
+ *
  * @param string $filePath absolute path to file
  * @return boolean
- */ 
+ */
 function DetectHtml( $filePath )
 {
-	$fp = fopen( $filePath, 'rb' ) ;
+	$fp = @fopen( $filePath, 'rb' ) ;
+
+	//open_basedir restriction, see #1906
+	if ( $fp === false || !flock( $fp, LOCK_SH ) )
+	{
+		return -1 ;
+	}
+
 	$chunk = fread( $fp, 1024 ) ;
+	flock( $fp, LOCK_UN ) ;
 	fclose( $fp ) ;
 
 	$chunk = strtolower( $chunk ) ;
 
-	if (!$chunk) 
+	if (!$chunk)
 	{
 		return false ;
@@ -100,14 +131,14 @@
 	$chunk = trim( $chunk ) ;
 
-	if ( preg_match( "/<!DOCTYPE\W*X?HTML/sim", $chunk ) ) 
+	if ( preg_match( "/<!DOCTYPE\W*X?HTML/sim", $chunk ) )
 	{
 		return true;
-	}	
+	}
 
 	$tags = array( '<body', '<head', '<html', '<img', '<pre', '<script', '<table', '<title' ) ;
 
-	foreach( $tags as $tag ) 
-	{
-		if( false !== strpos( $chunk, $tag ) ) 
+	foreach( $tags as $tag )
+	{
+		if( false !== strpos( $chunk, $tag ) )
 		{
 			return true ;
@@ -116,5 +147,5 @@
 
 	//type = javascript
-	if ( preg_match( '!type\s*=\s*[\'"]?\s*(?:\w*/)?(?:ecma|java)!sim', $chunk ) ) 
+	if ( preg_match( '!type\s*=\s*[\'"]?\s*(?:\w*/)?(?:ecma|java)!sim', $chunk ) )
 	{
 		return true ;
@@ -128,12 +159,12 @@
 		return true ;
 	}
-	
+
 	//url(javascript
-	if ( preg_match( '!url\s*\(\s*[\'"]?\s*(?:ecma|java)script:!sim', $chunk ) ) 
+	if ( preg_match( '!url\s*\(\s*[\'"]?\s*(?:ecma|java)script:!sim', $chunk ) )
 	{
 		return true ;
-	}			
-
-	return false ;	
+	}
+
+	return false ;
 }
 
@@ -142,12 +173,16 @@
  * Currently this function validates only image files.
  * Returns false if file is invalid.
- * 
+ *
  * @param string $filePath absolute path to file
  * @param string $extension file extension
  * @param integer $detectionLevel 0 = none, 1 = use getimagesize for images, 2 = use DetectHtml for images
  * @return boolean
- */ 
+ */
 function IsImageValid( $filePath, $extension )
 {
+	if (!@is_readable($filePath)) {
+		return -1;
+	}
+
 	$imageCheckExtensions = array('gif', 'jpeg', 'jpg', 'png', 'swf', 'psd', 'bmp', 'iff');
 
@@ -171,13 +206,13 @@
 		}
 	}
-	
+
 	if ( !in_array( $extension, $imageCheckExtensions ) ) {
 		return true;
 	}
-	
+
 	if ( @getimagesize( $filePath ) === false ) {
 		return false ;
-	}		
-	
+	}
+
 	return true;
 }
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/py/config.py
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/py/config.py	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/py/config.py	(revision 1902)
@@ -2,5 +2,5 @@
 """
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -20,12 +20,12 @@
  * == END LICENSE ==
  *
- * Configuration file for the File Manager Connector for Python 
+ * Configuration file for the File Manager Connector for Python
 """
 
-# INSTALLATION NOTE: You must set up your server environment accordingly to run 
+# INSTALLATION NOTE: You must set up your server environment accordingly to run
 # python scripts. This connector requires Python 2.4 or greater.
-# 
-# Supported operation modes: 
-#  * WSGI (recommended): You'll need apache + mod_python + modpython_gateway 
+#
+# Supported operation modes:
+#  * WSGI (recommended): You'll need apache + mod_python + modpython_gateway
 #                        or any web server capable of the WSGI python standard
 #  * Plain Old CGI:      Any server capable of running standard python scripts
@@ -33,18 +33,18 @@
 #                        This was the previous connector version operation mode
 #
-# If you're using Apache web server, replace the htaccess.txt to to .htaccess, 
+# If you're using Apache web server, replace the htaccess.txt to to .htaccess,
 # and set the proper options and paths.
 # For WSGI and mod_python, you may need to download modpython_gateway from:
-# http://projects.amor.org/misc/svn/modpython_gateway.py and copy it in this 
+# http://projects.amor.org/misc/svn/modpython_gateway.py and copy it in this
 # directory.
 
-   
+
 # SECURITY: You must explicitly enable this "connector". (Set it to "True").
-# WARNING: don't just set "ConfigIsEnabled = True", you must be sure that only 
+# WARNING: don't just set "ConfigIsEnabled = True", you must be sure that only
 #		authenticated users can access this file or use some kind of session checking.
 Enabled = False
 
 # Path to user files relative to the document root.
-UserFilesPath = '/userfiles/' 
+UserFilesPath = '/userfiles/'
 
 # Fill the following value it you prefer to specify the absolute path for the
@@ -54,15 +54,26 @@
 # WARNING: GetRootPath may not work in virtual or mod_python configurations, and
 # may not be thread safe. Use this configuration parameter instead.
-UserFilesAbsolutePath = '' 
+UserFilesAbsolutePath = ''
 
 # Due to security issues with Apache modules, it is recommended to leave the
 # following setting enabled.
-ForceSingleExtension = True 
+ForceSingleExtension = True
 
 # What the user can do with this connector
-ConfigAllowedCommands = [ 'QuickUpload', 'FileUpload', 'GetFolders', 'GetFoldersAndFiles', 'CreateFolder' ] 
+ConfigAllowedCommands = [ 'QuickUpload', 'FileUpload', 'GetFolders', 'GetFoldersAndFiles', 'CreateFolder' ]
 
 # Allowed Resource Types
-ConfigAllowedTypes = ['File', 'Image', 'Flash', 'Media'] 
+ConfigAllowedTypes = ['File', 'Image', 'Flash', 'Media']
+
+# After file is uploaded, sometimes it is required to change its permissions
+# so that it was possible to access it at the later time.
+# If possible, it is recommended to set more restrictive permissions, like 0755.
+# Set to 0 to disable this feature.
+# Note: not needed on Windows-based servers.
+ChmodOnUpload = 0755
+
+# See comments above.
+# Used when creating folders that does not exist.
+ChmodOnFolderCreate = 0755
 
 # Do not touch this 3 lines, see "Configuration settings for each Resource Type"
@@ -73,7 +84,7 @@
 #	Configuration settings for each Resource Type
 #
-#	- AllowedExtensions: the possible extensions that can be allowed. 
+#	- AllowedExtensions: the possible extensions that can be allowed.
 #		If it is empty then any file type can be uploaded.
-#	- DeniedExtensions: The extensions that won't be allowed. 
+#	- DeniedExtensions: The extensions that won't be allowed.
 #		If it is empty then no restrictions are done here.
 #
@@ -82,11 +93,11 @@
 #
 #	- FileTypesPath: the virtual folder relative to the document root where
-#		these resources will be located. 
+#		these resources will be located.
 #		Attention: It must start and end with a slash: '/'
 #
 #	- FileTypesAbsolutePath: the physical path to the above folder. It must be
-#		an absolute path. 
+#		an absolute path.
 #		If it's an empty string then it will be autocalculated.
-#		Useful if you are using a virtual directory, symbolic link or alias. 
+#		Useful if you are using a virtual directory, symbolic link or alias.
 #		Examples: 'C:\\MySite\\userfiles\\' or '/root/mysite/userfiles/'.
 #		Attention: The above 'FileTypesPath' must point to the same directory.
@@ -95,12 +106,12 @@
 #
 #	- QuickUploadPath: the virtual folder relative to the document root where
-#		these resources will be uploaded using the Upload tab in the resources 
+#		these resources will be uploaded using the Upload tab in the resources
 #		dialogs.
 #		Attention: It must start and end with a slash: '/'
 #
 #	- QuickUploadAbsolutePath: the physical path to the above folder. It must be
-#		an absolute path. 
+#		an absolute path.
 #		If it's an empty string then it will be autocalculated.
-#		Useful if you are using a virtual directory, symbolic link or alias. 
+#		Useful if you are using a virtual directory, symbolic link or alias.
 #		Examples: 'C:\\MySite\\userfiles\\' or '/root/mysite/userfiles/'.
 #		Attention: The above 'QuickUploadPath' must point to the same directory.
@@ -109,5 +120,5 @@
 AllowedExtensions['File'] 		= ['7z','aiff','asf','avi','bmp','csv','doc','fla','flv','gif','gz','gzip','jpeg','jpg','mid','mov','mp3','mp4','mpc','mpeg','mpg','ods','odt','pdf','png','ppt','pxd','qt','ram','rar','rm','rmi','rmvb','rtf','sdc','sitd','swf','sxc','sxw','tar','tgz','tif','tiff','txt','vsd','wav','wma','wmv','xls','xml','zip']
 DeniedExtensions['File'] 		= []
-FileTypesPath['File'] 			= UserFilesPath + 'file/' 
+FileTypesPath['File'] 			= UserFilesPath + 'file/'
 FileTypesAbsolutePath['File'] 	= (not UserFilesAbsolutePath == '') and (UserFilesAbsolutePath + 'file/') or ''
 QuickUploadPath['File']			= FileTypesPath['File']
@@ -116,5 +127,5 @@
 AllowedExtensions['Image']		= ['bmp','gif','jpeg','jpg','png']
 DeniedExtensions['Image']		= []
-FileTypesPath['Image']			= UserFilesPath + 'image/' 
+FileTypesPath['Image']			= UserFilesPath + 'image/'
 FileTypesAbsolutePath['Image']	= (not UserFilesAbsolutePath == '') and UserFilesAbsolutePath + 'image/' or ''
 QuickUploadPath['Image']		= FileTypesPath['Image']
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/py/connector.py
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/py/connector.py	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/py/connector.py	(revision 1902)
@@ -3,5 +3,5 @@
 """
 FCKeditor - The text editor for Internet - http://www.fckeditor.net
-Copyright (C) 2003-2007 Frederico Caldeira Knabben
+Copyright (C) 2003-2008 Frederico Caldeira Knabben
 
 == BEGIN LICENSE ==
@@ -38,5 +38,5 @@
 							GetFoldersAndFilesCommandMixin,
 							CreateFolderCommandMixin,
-							UploadFileCommandMixin, 
+							UploadFileCommandMixin,
 							BaseHttpMixin, BaseXmlMixin, BaseHtmlMixin  ):
 	"The Standard connector class."
@@ -58,27 +58,27 @@
 		if currentFolder is None:
 			return self.sendError(102, "")
-		
+
 		# Check if it is an allowed command
 		if ( not command in Config.ConfigAllowedCommands ):
-			return self.sendError( 1, 'The %s command isn\'t allowed' % command ) 
-		
+			return self.sendError( 1, 'The %s command isn\'t allowed' % command )
+
 		if ( not resourceType in Config.ConfigAllowedTypes  ):
-			return self.sendError( 1, 'Invalid type specified' ) 
+			return self.sendError( 1, 'Invalid type specified' )
 
 		# Setup paths
 		if command == "QuickUpload":
-			self.userFilesFolder = Config.QuickUploadAbsolutePath[resourceType] 
+			self.userFilesFolder = Config.QuickUploadAbsolutePath[resourceType]
 			self.webUserFilesFolder =  Config.QuickUploadPath[resourceType]
 		else:
 			self.userFilesFolder = Config.FileTypesAbsolutePath[resourceType]
-			self.webUserFilesFolder = Config.FileTypesPath[resourceType]	
-		
+			self.webUserFilesFolder = Config.FileTypesPath[resourceType]
+
 		if not self.userFilesFolder: # no absolute path given (dangerous...)
-			self.userFilesFolder = mapServerPath(self.environ, 
+			self.userFilesFolder = mapServerPath(self.environ,
 									self.webUserFilesFolder)
 		# Ensure that the directory exists.
 		if not os.path.exists(self.userFilesFolder):
 			try:
-				self.createServerFoldercreateServerFolder( self.userFilesFolder ) 
+				self.createServerFoldercreateServerFolder( self.userFilesFolder )
 			except:
 				return self.sendError(1, "This connector couldn\'t access to local user\'s files directories.  Please check the UserFilesAbsolutePath in \"editor/filemanager/connectors/py/config.py\" and try again. ")
@@ -87,8 +87,8 @@
 		if (command == "FileUpload"):
 			return self.uploadFile(resourceType, currentFolder)
-		
+
 		# Create Url
 		url = combinePaths( self.webUserFilesFolder, currentFolder )
-		
+
 		# Begin XML
 		s += self.createXmlHeader(command, resourceType, currentFolder, url)
@@ -100,6 +100,6 @@
 		s += selector[command](resourceType, currentFolder)
 		s += self.createXmlFooter()
-		return s	
-	
+		return s
+
 # Running from command line (plain old CGI)
 if __name__ == '__main__':
@@ -110,5 +110,5 @@
 		for header in conn.headers:
 			print '%s: %s' % header
-		print 
+		print
 		print data
 	except:
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/py/fckcommands.py
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/py/fckcommands.py	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/py/fckcommands.py	(revision 1902)
@@ -3,5 +3,5 @@
 """
 FCKeditor - The text editor for Internet - http://www.fckeditor.net
-Copyright (C) 2003-2007 Frederico Caldeira Knabben
+Copyright (C) 2003-2008 Frederico Caldeira Knabben
 
 == BEGIN LICENSE ==
@@ -101,5 +101,5 @@
 						errorNo = 103
 					elif e.errno==36 or e.errno==2 or e.errno==22: # filename too long / no such file / invalid name
-						errorNo = 102 
+						errorNo = 102
 				else:
 					errorNo = 110
@@ -111,7 +111,16 @@
 		"Purpose: physically creates a folder on the server"
 		# No need to check if the parent exists, just create all hierachy
-		oldumask = os.umask(0)
-		os.makedirs(folderPath,mode=0755)
-		os.umask( oldumask ) 
+
+		try:
+			permissions = Config.ChmodOnFolderCreate
+			if not permissions:
+				os.makedirs(folderPath)
+		except AttributeError: #ChmodOnFolderCreate undefined
+			permissions = 0755
+
+		if permissions:
+			oldumask = os.umask(0)
+			os.makedirs(folderPath,mode=0755)
+			os.umask( oldumask )
 
 class UploadFileCommandMixin (object):
@@ -126,5 +135,5 @@
 			# Get the file name
 			newFileName = newFile.filename
-			newFileName = sanitizeFileName( newFileName ) 
+			newFileName = sanitizeFileName( newFileName )
 			newFileNameOnly = removeExtension(newFileName)
 			newFileExtension = getExtension(newFileName).lower()
@@ -169,7 +178,15 @@
 
 						if os.path.exists ( newFilePath ):
-							oldumask = os.umask(0) 
-							os.chmod( newFilePath, 0755 ) 
-							os.umask( oldumask ) 
+							doChmod = False
+							try:
+								doChmod = Config.ChmodOnUpload
+								permissions = Config.ChmodOnUpload
+							except AttributeError: #ChmodOnUpload undefined
+								doChmod = True
+								permissions = 0755
+							if ( doChmod ):
+								oldumask = os.umask(0)
+								os.chmod( newFilePath, permissions )
+								os.umask( oldumask )
 
 						newFileUrl = self.webUserFilesFolder + currentFolder + newFileName
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/py/fckconnector.py
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/py/fckconnector.py	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/py/fckconnector.py	(revision 1902)
@@ -3,5 +3,5 @@
 """
 FCKeditor - The text editor for Internet - http://www.fckeditor.net
-Copyright (C) 2003-2007 Frederico Caldeira Knabben
+Copyright (C) 2003-2008 Frederico Caldeira Knabben
 
 == BEGIN LICENSE ==
@@ -39,5 +39,5 @@
 		"Constructor: Here you should parse request fields, initialize variables, etc."
 		self.request = FCKeditorRequest(environ) # Parse request
-		self.headers = []						# Clean Headers 
+		self.headers = []						# Clean Headers
 		if environ:
 			self.environ = environ
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/py/fckoutput.py
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/py/fckoutput.py	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/py/fckoutput.py	(revision 1902)
@@ -3,5 +3,5 @@
 """
 FCKeditor - The text editor for Internet - http://www.fckeditor.net
-Copyright (C) 2003-2007 Frederico Caldeira Knabben
+Copyright (C) 2003-2008 Frederico Caldeira Knabben
 
 == BEGIN LICENSE ==
@@ -54,10 +54,10 @@
 		self.setHeader('Expires','Mon, 26 Jul 1997 05:00:00 GMT')
 		# always modified
-		self.setHeader('Last-Modified',strftime("%a, %d %b %Y %H:%M:%S GMT", gmtime())) 
+		self.setHeader('Last-Modified',strftime("%a, %d %b %Y %H:%M:%S GMT", gmtime()))
 		# HTTP/1.1
-		self.setHeader('Cache-Control','no-store, no-cache, must-revalidate') 
-		self.setHeader('Cache-Control','post-check=0, pre-check=0') 
+		self.setHeader('Cache-Control','no-store, no-cache, must-revalidate')
+		self.setHeader('Cache-Control','post-check=0, pre-check=0')
 		# HTTP/1.0
-		self.setHeader('Pragma','no-cache') 
+		self.setHeader('Pragma','no-cache')
 
 		# Set the response format.
@@ -94,5 +94,5 @@
 				self.sendErrorNode (number, text) +
 				"""</Connector>""" )
-		
+
 	def sendErrorNode(self, number, text):
 		return """<Error number="%s" text="%s" />""" % (number, convertToXmlAttribute(text))
@@ -103,9 +103,40 @@
 		"This is the function that sends the results of the uploading process"
 		return """<script type="text/javascript">
-			window.parent.OnUploadCompleted(%(errorNumber)s,"%(fileUrl)s","%(fileName)s","%(customMsg)s"); 
+			(function()
+			{
+				var d = document.domain ;
+
+				while ( true )
+				{
+					// Test if we can access a parent property.
+					try
+					{
+						var test = window.top.opener.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 ;
+					}
+				}
+			})() ;
+
+			window.parent.OnUploadCompleted(%(errorNumber)s,"%(fileUrl)s","%(fileName)s","%(customMsg)s");
 			</script>""" % {
 			'errorNumber': errorNo,
 			'fileUrl': fileUrl.replace ('"', '\\"'),
-			'fileName': fileName.replace ( '"', '\\"' ) , 
+			'fileName': fileName.replace ( '"', '\\"' ) ,
 			'customMsg': customMsg.replace ( '"', '\\"' ),
 			}
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/py/fckutil.py
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/py/fckutil.py	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/py/fckutil.py	(revision 1902)
@@ -3,5 +3,5 @@
 """
 FCKeditor - The text editor for Internet - http://www.fckeditor.net
-Copyright (C) 2003-2007 Frederico Caldeira Knabben
+Copyright (C) 2003-2008 Frederico Caldeira Knabben
 
 == BEGIN LICENSE ==
@@ -21,5 +21,5 @@
 == END LICENSE ==
 
-Utility functions for the File Manager Connector for Python 
+Utility functions for the File Manager Connector for Python
 
 """
@@ -50,8 +50,8 @@
 
 def combinePaths( basePath, folder ):
-	return removeFromEnd( basePath, '/' ) + '/' + removeFromStart( folder, '/' ) 
+	return removeFromEnd( basePath, '/' ) + '/' + removeFromStart( folder, '/' )
 
 def getFileName(filename):
-	" Purpose: helper function to extrapolate the filename " 
+	" Purpose: helper function to extrapolate the filename "
 	for splitChar in ["/", "\\"]:
 		array = filename.split(splitChar)
@@ -62,6 +62,6 @@
 def sanitizeFolderName( newFolderName ):
 	"Do a cleanup of the folder name to avoid possible problems"
-	# Remove . \ / | : ? *
-	return re.sub( '\\.|\\\\|\\/|\\||\\:|\\?|\\*', '_', newFolderName )
+	# Remove . \ / | : ? * " < > and control characters
+	return re.sub( '(?u)\\.|\\\\|\\/|\\||\\:|\\?|\\*|"|<|>|[^\u0000-\u001f\u007f-\u009f]', '_', newFolderName )
 
 def sanitizeFileName( newFileName ):
@@ -73,9 +73,9 @@
 	newFileName = os.path.basename (newFileName)	# strip directories
 	# Remove \ / | : ? *
-	return re.sub ( '/\\\\|\\/|\\||\\:|\\?|\\*/', '_', newFileName )
+	return re.sub ( '(?u)/\\\\|\\/|\\||\\:|\\?|\\*|"|<|>|[^\u0000-\u001f\u007f-\u009f]/', '_', newFileName )
 
 def getCurrentFolder(currentFolder):
-	if not currentFolder: 
-		currentFolder = '/' 
+	if not currentFolder:
+		currentFolder = '/'
 
 	# Check the current folder syntax (must begin and end with a slash).
@@ -84,14 +84,14 @@
 	if (currentFolder[0] <> "/"):
 		currentFolder = "/" + currentFolder
-				
+
 	# Ensure the folder path has no double-slashes
 	while '//' in currentFolder:
-		currentFolder = currentFolder.replace('//','/') 
+		currentFolder = currentFolder.replace('//','/')
 
 	# Check for invalid folder paths (..)
-	if '..' in currentFolder:
+	if '..' in currentFolder or '\\' in currentFolder:
 		return None
 
-	return currentFolder 
+	return currentFolder
 
 def mapServerPath( environ, url):
@@ -102,5 +102,5 @@
 
 def mapServerFolder(resourceTypePath, folderPath):
-	return combinePaths ( resourceTypePath  , folderPath ) 
+	return combinePaths ( resourceTypePath  , folderPath )
 
 def getRootPath(environ):
@@ -112,16 +112,15 @@
 		return environ['DOCUMENT_ROOT']
 	else:
-		realPath = os.path.realpath( './' ) 
+		realPath = os.path.realpath( './' )
 		selfPath = environ['SCRIPT_FILENAME']
-		selfPath = selfPath [ :  selfPath.rfind( '/'  ) ] 		
-		selfPath = selfPath.replace( '/', os.path.sep) 
-		
-		position = realPath.find(selfPath) 
+		selfPath = selfPath [ :  selfPath.rfind( '/'  ) ]
+		selfPath = selfPath.replace( '/', os.path.sep)
+
+		position = realPath.find(selfPath)
 
 		# This can check only that this script isn't run from a virtual dir
 		# But it avoids the problems that arise if it isn't checked
-		raise realPath 
+		raise realPath
 		if ( position < 0 or position <> len(realPath) - len(selfPath) or realPath[ : position ]==''):
 			raise Exception('Sorry, can\'t map "UserFilesPath" to a physical path. You must set the "UserFilesAbsolutePath" value in "editor/filemanager/connectors/py/config.py".')
 		return realPath[ : position ]
-
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/py/htaccess.txt
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/py/htaccess.txt	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/py/htaccess.txt	(revision 1902)
@@ -1,3 +1,3 @@
-# replace the name of this file to .htaccess (if using apache), 
+# replace the name of this file to .htaccess (if using apache),
 # and set the proper options and paths according your enviroment
 
@@ -20,4 +20,4 @@
 
 # Plain old CGI
-#Options +ExecCGI 
+#Options +ExecCGI
 #AddHandler cgi-script py
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/py/upload.py
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/py/upload.py	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/py/upload.py	(revision 1902)
@@ -3,5 +3,5 @@
 """
 FCKeditor - The text editor for Internet - http://www.fckeditor.net
-Copyright (C) 2003-2007 Frederico Caldeira Knabben
+Copyright (C) 2003-2008 Frederico Caldeira Knabben
 
 == BEGIN LICENSE ==
@@ -32,6 +32,6 @@
 
 class FCKeditorQuickUpload(	FCKeditorConnectorBase,
-							UploadFileCommandMixin, 
-							BaseHttpMixin, BaseHtmlMixin):	
+							UploadFileCommandMixin,
+							BaseHttpMixin, BaseHtmlMixin):
 	def doResponse(self):
 		"Main function. Process the request, set headers and return a string as response."
@@ -49,22 +49,22 @@
 		# Check if it is an allowed command
 		if ( not command in Config.ConfigAllowedCommands ):
-			return self.sendUploadResults( 1, '', '', 'The %s command isn\'t allowed' % command ) 
-		
+			return self.sendUploadResults( 1, '', '', 'The %s command isn\'t allowed' % command )
+
 		if ( not resourceType in Config.ConfigAllowedTypes  ):
-			return self.sendUploadResults( 1, '', '', 'Invalid type specified' ) 
+			return self.sendUploadResults( 1, '', '', 'Invalid type specified' )
 
 		# Setup paths
-		self.userFilesFolder = Config.QuickUploadAbsolutePath[resourceType] 
-		self.webUserFilesFolder =  Config.QuickUploadPath[resourceType]	
+		self.userFilesFolder = Config.QuickUploadAbsolutePath[resourceType]
+		self.webUserFilesFolder =  Config.QuickUploadPath[resourceType]
 		if not self.userFilesFolder: # no absolute path given (dangerous...)
-			self.userFilesFolder = mapServerPath(self.environ, 
+			self.userFilesFolder = mapServerPath(self.environ,
 									self.webUserFilesFolder)
-		
+
 		# Ensure that the directory exists.
 		if not os.path.exists(self.userFilesFolder):
 			try:
-				self.createServerFoldercreateServerFolder( self.userFilesFolder ) 
+				self.createServerFoldercreateServerFolder( self.userFilesFolder )
 			except:
-				return self.sendError(1, "This connector couldn\'t access to local user\'s files directories.  Please check the UserFilesAbsolutePath in \"editor/filemanager/connectors/py/config.py\" and try again. ")			
+				return self.sendError(1, "This connector couldn\'t access to local user\'s files directories.  Please check the UserFilesAbsolutePath in \"editor/filemanager/connectors/py/config.py\" and try again. ")
 
 		# File upload doesn't have to return XML, so intercept here
@@ -80,5 +80,5 @@
 			if not header is None:
 				print '%s: %s' % header
-		print 
+		print
 		print data
 	except:
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/py/wsgi.py
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/py/wsgi.py	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/py/wsgi.py	(revision 1902)
@@ -3,5 +3,5 @@
 """
 FCKeditor - The text editor for Internet - http://www.fckeditor.net
-Copyright (C) 2003-2007 Frederico Caldeira Knabben
+Copyright (C) 2003-2008 Frederico Caldeira Knabben
 
 == BEGIN LICENSE ==
@@ -34,5 +34,5 @@
 
 # Running from WSGI capable server (recomended)
-def App(environ, start_response): 
+def App(environ, start_response):
 	"WSGI entry point. Run the connector"
 	if environ['SCRIPT_NAME'].endswith("connector.py"):
@@ -55,4 +55,4 @@
 		start_response("500 Internal Server Error",[("Content-type","text/html")])
 		file = StringIO()
-		cgitb.Hook(file = file).handle()    
+		cgitb.Hook(file = file).handle()
 		yield file.getvalue()
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/py/zope.py
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/py/zope.py	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/py/zope.py	(revision 1902)
@@ -3,5 +3,5 @@
 """
 FCKeditor - The text editor for Internet - http://www.fckeditor.net
-Copyright (C) 2003-2007 Frederico Caldeira Knabben
+Copyright (C) 2003-2008 Frederico Caldeira Knabben
 
 == BEGIN LICENSE ==
@@ -24,6 +24,6 @@
 
 This code was not tested at all.
-It just was ported from pre 2.5 release, so for further reference see 
-\editor\filemanager\browser\default\connectors\py\connector.py in previous 
+It just was ported from pre 2.5 release, so for further reference see
+\editor\filemanager\browser\default\connectors\py\connector.py in previous
 releases.
 
@@ -49,5 +49,5 @@
 		self.context = context
 		self.request = FCKeditorRequest(context)
-	
+
 	def getZopeRootContext(self):
 		if self.zopeRootContext is None:
@@ -187,3 +187,2 @@
 return connector.FCKeditorConnectorZope(context=context).doResponse()
 """
-
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/test.html
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/test.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/test.html	(revision 1902)
@@ -1,5 +1,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -25,5 +25,38 @@
 <head>
 	<title>FCKeditor - Connectors Tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 	<script type="text/javascript">
+
+// Automatically detect the correct document.domain (#1919).
+(function()
+{
+	var d = document.domain ;
+
+	while ( true )
+	{
+		// Test if we can access a parent property.
+		try
+		{
+			var test = window.opener.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 ;
+		}
+	}
+})() ;
 
 function BuildBaseUrl( command )
Index: /FCKeditor/releases/stable/editor/filemanager/connectors/uploadtest.html
===================================================================
--- /FCKeditor/releases/stable/editor/filemanager/connectors/uploadtest.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/filemanager/connectors/uploadtest.html	(revision 1902)
@@ -1,5 +1,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -24,5 +24,38 @@
 	<head>
 		<title>FCKeditor - Uploaders Tests</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 		<script type="text/javascript">
+
+// Automatically detect the correct document.domain (#1919).
+(function()
+{
+	var d = document.domain ;
+
+	while ( true )
+	{
+		// Test if we can access a parent property.
+		try
+		{
+			var test = window.opener.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 ;
+		}
+	}
+})() ;
 
 function SendFile()
@@ -42,7 +75,12 @@
 	txtUrl.value = '' ;
 
-	frmUpload.action = sUploaderUrl;
+	var date = new Date()
+
+	frmUpload.action = sUploaderUrl + '?time=' + date.getTime();
 	if (document.getElementById('cmbType').value) {
-		frmUpload.action = frmUpload.action + '?Type='+document.getElementById('cmbType').value;
+		frmUpload.action = frmUpload.action + '&Type='+document.getElementById('cmbType').value;
+	}
+	if (document.getElementById('CurrentFolder').value) {
+		frmUpload.action = frmUpload.action + '&CurrentFolder='+document.getElementById('CurrentFolder').value;
 	}
 	frmUpload.submit() ;
@@ -89,5 +127,5 @@
 						<tr>
 							<td nowrap>
-								Select the "File Uploader" to use:<br>
+								Select the "File Uploader" to use: <br>
 								<select id="cmbUploaderUrl">
 									<option selected value="asp/upload.asp">ASP</option>
@@ -112,4 +150,8 @@
 							</select>
 						</td>
+						<td>
+						Current Folder: <br>
+						<input type="text" name="CurrentFolder" id="CurrentFolder" value="/">
+						</td>
 							<td nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
 							<td width="100%">
@@ -126,4 +168,5 @@
 									Upload a new file:<br>
 									<input type="file" name="NewFile"><br>
+
 									<input type="button" value="Send it to the Server" onclick="SendFile();">
 								</form>
Index: /FCKeditor/releases/stable/editor/js/fckadobeair.js
===================================================================
--- /FCKeditor/releases/stable/editor/js/fckadobeair.js	(revision 1902)
+++ /FCKeditor/releases/stable/editor/js/fckadobeair.js	(revision 1902)
@@ -0,0 +1,176 @@
+﻿/*
+ * 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 ==
+ *
+ * Compatibility code for Adobe AIR.
+ */
+
+if ( FCKBrowserInfo.IsAIR )
+{
+	var FCKAdobeAIR = (function()
+	{
+		/*
+		 * ### Private functions.
+		 */
+
+		var getDocumentHead = function( doc )
+		{
+			var head ;
+			var heads = doc.getElementsByTagName( 'head' ) ;
+
+			if( heads && heads[0] )
+				head = heads[0] ;
+			else
+			{
+				head = doc.createElement( 'head' ) ;
+				doc.documentElement.insertBefore( head, doc.documentElement.firstChild ) ;
+			}
+
+			return head ;
+		} ;
+
+		/*
+		 * ### Public interface.
+		 */
+		return {
+			FCKeditorAPI_Evaluate : function( parentWindow, script )
+			{
+				// TODO : This one doesn't work always. The parent window will
+				// point to an anonymous function in this window. If this
+				// window is destroyied the parent window will be pointing to
+				// an invalid reference.
+
+				// Evaluate the script in this window.
+				eval( script ) ;
+
+				// Point the FCKeditorAPI property of the parent window to the
+				// local reference.
+				parentWindow.FCKeditorAPI = window.FCKeditorAPI ;
+			},
+
+			EditingArea_Start : function( doc, html )
+			{
+				// Get the HTML for the <head>.
+				var headInnerHtml = html.match( /<head>([\s\S]*)<\/head>/i )[1] ;
+
+				if ( headInnerHtml && headInnerHtml.length > 0 )
+				{
+					// Inject the <head> HTML inside a <div>.
+					// Do that before getDocumentHead because WebKit moves
+					// <link css> elements to the <head> at this point.
+					var div = doc.createElement( 'div' ) ;
+					div.innerHTML = headInnerHtml ;
+
+					// Move the <div> nodes to <head>.
+					FCKDomTools.MoveChildren( div, getDocumentHead( doc ) ) ;
+				}
+
+				doc.body.innerHTML = html.match( /<body>([\s\S]*)<\/body>/i )[1] ;
+
+				//prevent clicking on hyperlinks and navigating away
+				doc.addEventListener('click', function( ev )
+					{
+						ev.preventDefault() ;
+						ev.stopPropagation() ;
+					}, true ) ;
+			},
+
+			Panel_Contructor : function( doc, baseLocation )
+			{
+				var head = getDocumentHead( doc ) ;
+
+				// Set the <base> href.
+				head.appendChild( doc.createElement('base') ).href = baseLocation ;
+
+				doc.body.style.margin	= '0px' ;
+				doc.body.style.padding	= '0px' ;
+			},
+
+			ToolbarSet_GetOutElement : function( win, outMatch )
+			{
+				var toolbarTarget = win.parent ;
+
+				var targetWindowParts = outMatch[1].split( '.' ) ;
+				while ( targetWindowParts.length > 0 )
+				{
+					var part = targetWindowParts.shift() ;
+					if ( part.length > 0 )
+						toolbarTarget = toolbarTarget[ part ] ;
+				}
+
+				toolbarTarget = toolbarTarget.document.getElementById( outMatch[2] ) ;
+			},
+
+			ToolbarSet_InitOutFrame : function( doc )
+			{
+				var head = getDocumentHead( doc ) ;
+
+				head.appendChild( doc.createElement('base') ).href = window.document.location ;
+
+				var targetWindow = doc.defaultView;
+
+				targetWindow.adjust = function()
+				{
+					targetWindow.frameElement.height = doc.body.scrollHeight;
+				} ;
+
+				targetWindow.onresize = targetWindow.adjust ;
+				targetWindow.setTimeout( targetWindow.adjust, 0 ) ;
+
+				doc.body.style.overflow = 'hidden';
+				doc.body.innerHTML = document.getElementById( 'xToolbarSpace' ).innerHTML ;
+			}
+		} ;
+	})();
+
+	/*
+	 * ### Overrides
+	 */
+	( function()
+	{
+		// Save references for override reuse.
+		var _Original_FCKPanel_Window_OnFocus	= FCKPanel_Window_OnFocus ;
+		var _Original_FCKPanel_Window_OnBlur	= FCKPanel_Window_OnBlur ;
+		var _Original_FCK_StartEditor			= FCK.StartEditor ;
+
+		FCKPanel_Window_OnFocus = function( e, panel )
+		{
+			// Call the original implementation.
+			_Original_FCKPanel_Window_OnFocus.call( this, e, panel ) ;
+
+			if ( panel._focusTimer )
+				clearTimeout( panel._focusTimer ) ;
+		}
+
+		FCKPanel_Window_OnBlur = function( e, panel )
+		{
+			// Delay the execution of the original function.
+			panel._focusTimer = FCKTools.SetTimeout( _Original_FCKPanel_Window_OnBlur, 100, this, [ e, panel ] ) ;
+		}
+
+		FCK.StartEditor = function()
+		{
+			// Force pointing to the CSS files instead of using the inline CSS cached styles.
+			window.FCK_InternalCSS			= FCKConfig.FullBasePath + 'css/fck_internal.css' ;
+			window.FCK_ShowTableBordersCSS	= FCKConfig.FullBasePath + 'css/fck_showtableborders_gecko.css' ;
+
+			_Original_FCK_StartEditor.apply( this, arguments ) ;
+		}
+	})();
+}
Index: /FCKeditor/releases/stable/editor/js/fckeditorcode_gecko.js
===================================================================
--- /FCKeditor/releases/stable/editor/js/fckeditorcode_gecko.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/js/fckeditorcode_gecko.js	(revision 1902)
@@ -1,22 +1,22 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- * 
+ * 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 file has been compressed for better performance. The original source
  * can be found at "editor/_source".
@@ -25,84 +25,84 @@
 var FCK_STATUS_NOTLOADED=window.parent.FCK_STATUS_NOTLOADED=0;var FCK_STATUS_ACTIVE=window.parent.FCK_STATUS_ACTIVE=1;var FCK_STATUS_COMPLETE=window.parent.FCK_STATUS_COMPLETE=2;var FCK_TRISTATE_OFF=window.parent.FCK_TRISTATE_OFF=0;var FCK_TRISTATE_ON=window.parent.FCK_TRISTATE_ON=1;var FCK_TRISTATE_DISABLED=window.parent.FCK_TRISTATE_DISABLED=-1;var FCK_UNKNOWN=window.parent.FCK_UNKNOWN=-9;var FCK_TOOLBARITEM_ONLYICON=window.parent.FCK_TOOLBARITEM_ONLYICON=0;var FCK_TOOLBARITEM_ONLYTEXT=window.parent.FCK_TOOLBARITEM_ONLYTEXT=1;var FCK_TOOLBARITEM_ICONTEXT=window.parent.FCK_TOOLBARITEM_ICONTEXT=2;var FCK_EDITMODE_WYSIWYG=window.parent.FCK_EDITMODE_WYSIWYG=0;var FCK_EDITMODE_SOURCE=window.parent.FCK_EDITMODE_SOURCE=1;var FCK_IMAGES_PATH='images/';var FCK_SPACER_PATH='images/spacer.gif';var CTRL=1000;var SHIFT=2000;var ALT=4000;var FCK_STYLE_BLOCK=0;var FCK_STYLE_INLINE=1;var FCK_STYLE_OBJECT=2;
 String.prototype.Contains=function(A){return (this.indexOf(A)>-1);};String.prototype.Equals=function(){var A=arguments;if (A.length==1&&A[0].pop) A=A[0];for (var i=0;i<A.length;i++){if (this==A[i]) return true;};return false;};String.prototype.IEquals=function(){var A=this.toUpperCase();var B=arguments;if (B.length==1&&B[0].pop) B=B[0];for (var i=0;i<B.length;i++){if (A==B[i].toUpperCase()) return true;};return false;};String.prototype.ReplaceAll=function(A,B){var C=this;for (var i=0;i<A.length;i++){C=C.replace(A[i],B[i]);};return C;};String.prototype.StartsWith=function(A){return (this.substr(0,A.length)==A);};String.prototype.EndsWith=function(A,B){var C=this.length;var D=A.length;if (D>C) return false;if (B){var E=new RegExp(A+'$','i');return E.test(this);}else return (D==0||this.substr(C-D,D)==A);};String.prototype.Remove=function(A,B){var s='';if (A>0) s=this.substring(0,A);if (A+B<this.length) s+=this.substring(A+B,this.length);return s;};String.prototype.Trim=function(){return this.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g,'');};String.prototype.LTrim=function(){return this.replace(/^[ \t\n\r]*/g,'');};String.prototype.RTrim=function(){return this.replace(/[ \t\n\r]*$/g,'');};String.prototype.ReplaceNewLineChars=function(A){return this.replace(/\n/g,A);};String.prototype.Replace=function(A,B,C){if (typeof B=='function'){return this.replace(A,function(){return B.apply(C||this,arguments);});}else return this.replace(A,B);};Array.prototype.AddItem=function(A){var i=this.length;this[i]=A;return i;};Array.prototype.IndexOf=function(A){for (var i=0;i<this.length;i++){if (this[i]==A) return i;};return-1;};
-var s=navigator.userAgent.toLowerCase();var FCKBrowserInfo={IsIE:/*@cc_on!@*/false,IsIE7:/*@cc_on!@*/false && ( parseFloat( s.match( /msie ([\d|\.]+)/)[1])>=7),IsGecko:s.Contains('gecko/'),IsSafari:s.Contains(' applewebkit/'),IsOpera:!!window.opera,IsMac:s.Contains('macintosh')};(function(A){A.IsGeckoLike=(A.IsGecko||A.IsSafari||A.IsOpera);if (A.IsGecko){var B=s.match(/gecko\/(\d+)/)[1];A.IsGecko10=((B<20051111)||(/rv:1\.7/.test(s)));A.IsGecko19=/rv:1\.9/.test(s);}else A.IsGecko10=false;})(FCKBrowserInfo);
+var s=navigator.userAgent.toLowerCase();var FCKBrowserInfo={IsIE:/*@cc_on!@*/false,IsIE7:/*@cc_on!@*/false && ( parseInt( s.match( /msie (\d+)/)[1],10)>=7),IsIE6:/*@cc_on!@*/false && ( parseInt( s.match( /msie (\d+)/)[1],10)>=6),IsGecko:s.Contains('gecko/'),IsSafari:s.Contains(' applewebkit/'),IsOpera:!!window.opera,IsAIR:s.Contains(' adobeair/'),IsMac:s.Contains('macintosh')};(function(A){A.IsGeckoLike=(A.IsGecko||A.IsSafari||A.IsOpera);if (A.IsGecko){var B=s.match(/gecko\/(\d+)/)[1];A.IsGecko10=((B<20051111)||(/rv:1\.7/.test(s)));A.IsGecko19=/rv:1\.9/.test(s);}else A.IsGecko10=false;})(FCKBrowserInfo);
 var FCKURLParams={};(function(){var A=document.location.search.substr(1).split('&');for (var i=0;i<A.length;i++){var B=A[i].split('=');var C=decodeURIComponent(B[0]);var D=decodeURIComponent(B[1]);FCKURLParams[C]=D;}})();
 var FCKEvents=function(A){this.Owner=A;this._RegisteredEvents={};};FCKEvents.prototype.AttachEvent=function(A,B){var C;if (!(C=this._RegisteredEvents[A])) this._RegisteredEvents[A]=[B];else{if (C.IndexOf(B)==-1) C.push(B);}};FCKEvents.prototype.FireEvent=function(A,B){var C=true;var D=this._RegisteredEvents[A];if (D){for (var i=0;i<D.length;i++){try{C=(D[i](this.Owner,B)&&C);}catch(e){if (e.number!=-2146823277) throw e;}}};return C;};
 var FCKDataProcessor=function(){};FCKDataProcessor.prototype={ConvertToHtml:function(A){if (FCKConfig.FullPage){FCK.DocTypeDeclaration=A.match(FCKRegexLib.DocTypeTag);if (!FCKRegexLib.HasBodyTag.test(A)) A='<body>'+A+'</body>';if (!FCKRegexLib.HtmlOpener.test(A)) A='<html dir="'+FCKConfig.ContentLangDirection+'">'+A+'</html>';if (!FCKRegexLib.HeadOpener.test(A)) A=A.replace(FCKRegexLib.HtmlOpener,'$&<head><title></title></head>');return A;}else{var B=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"';if (FCKBrowserInfo.IsIE&&FCKConfig.DocType.length>0&&!FCKRegexLib.Html4DocType.test(FCKConfig.DocType)) B+=' style="overflow-y: scroll"';B+='><head><title></title></head><body'+FCKConfig.GetBodyAttributes()+'>'+A+'</body></html>';return B;}},ConvertToDataFormat:function(A,B,C,D){var E=FCKXHtml.GetXHTML(A,!B,D);if (C&&FCKRegexLib.EmptyOutParagraph.test(E)) return '';return E;},FixHtml:function(A){return A;}};
-var FCK={Name:FCKURLParams['InstanceName'],Status:0,EditMode:0,Toolbar:null,HasFocus:false,DataProcessor:new FCKDataProcessor(),AttachToOnSelectionChange:function(A){this.Events.AttachEvent('OnSelectionChange',A);},GetLinkedFieldValue:function(){return this.LinkedField.value;},GetParentForm:function(){return this.LinkedField.form;},StartupValue:'',IsDirty:function(){if (this.EditMode==1) return (this.StartupValue!=this.EditingArea.Textarea.value);else{if (!this.EditorDocument) return false;return (this.StartupValue!=this.EditorDocument.body.innerHTML);}},ResetIsDirty:function(){if (this.EditMode==1) this.StartupValue=this.EditingArea.Textarea.value;else if (this.EditorDocument.body) this.StartupValue=this.EditorDocument.body.innerHTML;},StartEditor:function(){this.TempBaseTag=FCKConfig.BaseHref.length>0?'<base href="'+FCKConfig.BaseHref+'" _fcktemp="true"></base>':'';var A=FCK.KeystrokeHandler=new FCKKeystrokeHandler();A.OnKeystroke=_FCK_KeystrokeHandler_OnKeystroke;A.SetKeystrokes(FCKConfig.Keystrokes);if (FCKBrowserInfo.IsIE7){if ((CTRL+86/*V*/) in A.Keystrokes) A.SetKeystrokes([CTRL+86,true]);if ((SHIFT+45/*INS*/) in A.Keystrokes) A.SetKeystrokes([SHIFT+45,true]);};A.SetKeystrokes([CTRL+8,true]);this.EditingArea=new FCKEditingArea(document.getElementById('xEditingArea'));this.EditingArea.FFSpellChecker=FCKConfig.FirefoxSpellChecker;this.SetData(this.GetLinkedFieldValue(),true);FCKTools.AddEventListener(document,"keydown",this._TabKeyHandler);this.AttachToOnSelectionChange(_FCK_PaddingNodeListener);if (FCKBrowserInfo.IsGecko) this.AttachToOnSelectionChange(this._ExecCheckEmptyBlock);},Focus:function(){FCK.EditingArea.Focus();},SetStatus:function(A){this.Status=A;if (A==1){FCKFocusManager.AddWindow(window,true);if (FCKBrowserInfo.IsIE) FCKFocusManager.AddWindow(window.frameElement,true);if (FCKConfig.StartupFocus) FCK.Focus();};this.Events.FireEvent('OnStatusChange',A);},FixBody:function(){var A=FCKConfig.EnterMode;if (A!='p'&&A!='div') return;var B=this.EditorDocument;if (!B) return;var C=B.body;if (!C) return;FCKDomTools.TrimNode(C);var D=C.firstChild;var E;while (D){var F=false;switch (D.nodeType){case 1:if (!FCKListsLib.BlockElements[D.nodeName.toLowerCase()]&&!D.getAttribute('_fckfakelement')&&D.getAttribute('_moz_dirty')==null) F=true;break;case 3:if (E||D.nodeValue.Trim().length>0) F=true;};if (F){var G=D.parentNode;if (!E) E=G.insertBefore(B.createElement(A),D);E.appendChild(G.removeChild(D));D=E.nextSibling;}else{if (E){FCKDomTools.TrimNode(E);E=null;};D=D.nextSibling;}};if (E) FCKDomTools.TrimNode(E);},GetData:function(A){if (FCK.EditMode==1) return FCK.EditingArea.Textarea.value;this.FixBody();var B=FCK.EditorDocument;if (!B) return null;var C=FCKConfig.FullPage;var D=FCK.DataProcessor.ConvertToDataFormat(C?B.documentElement:B.body,!C,FCKConfig.IgnoreEmptyParagraphValue,A);D=FCK.ProtectEventsRestore(D);if (FCKBrowserInfo.IsIE) D=D.replace(FCKRegexLib.ToReplace,'$1');if (C){if (FCK.DocTypeDeclaration&&FCK.DocTypeDeclaration.length>0) D=FCK.DocTypeDeclaration+'\n'+D;if (FCK.XmlDeclaration&&FCK.XmlDeclaration.length>0) D=FCK.XmlDeclaration+'\n'+D;};return FCKConfig.ProtectedSource.Revert(D);},UpdateLinkedField:function(){var A=FCK.GetXHTML(FCKConfig.FormatOutput);if (FCKConfig.HtmlEncodeOutput) A=FCKTools.HTMLEncode(A);FCK.LinkedField.value=A;FCK.Events.FireEvent('OnAfterLinkedFieldUpdate');},RegisteredDoubleClickHandlers:{},OnDoubleClick:function(A){var B=FCK.RegisteredDoubleClickHandlers[A.tagName];if (B) B(A);},RegisterDoubleClickHandler:function(A,B){FCK.RegisteredDoubleClickHandlers[B.toUpperCase()]=A;},OnAfterSetHTML:function(){FCKDocumentProcessor.Process(FCK.EditorDocument);FCKUndo.SaveUndoStep();FCK.Events.FireEvent('OnSelectionChange');FCK.Events.FireEvent('OnAfterSetHTML');},ProtectUrls:function(A){A=A.replace(FCKRegexLib.ProtectUrlsA,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsImg,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsArea,'$& _fcksavedurl=$1');return A;},ProtectEvents:function(A){return A.replace(FCKRegexLib.TagsWithEvent,_FCK_ProtectEvents_ReplaceTags);},ProtectEventsRestore:function(A){return A.replace(FCKRegexLib.ProtectedEvents,_FCK_ProtectEvents_RestoreEvents);},ProtectTags:function(A){var B=FCKConfig.ProtectedTags;if (FCKBrowserInfo.IsIE) B+=B.length>0?'|ABBR|XML|EMBED':'ABBR|XML|EMBED';var C;if (B.length>0){C=new RegExp('<('+B+')(?!\w|:)','gi');A=A.replace(C,'<FCK:$1');C=new RegExp('<\/('+B+')>','gi');A=A.replace(C,'<\/FCK:$1>');};B='META';if (FCKBrowserInfo.IsIE) B+='|HR';C=new RegExp('<(('+B+')(?=\\s|>|/)[\\s\\S]*?)/?>','gi');A=A.replace(C,'<FCK:$1 />');return A;},SetData:function(A,B){this.EditingArea.Mode=FCK.EditMode;if (FCKBrowserInfo.IsIE&&FCK.EditorDocument){FCK.EditorDocument.detachEvent("onselectionchange",Doc_OnSelectionChange);};if (FCK.EditMode==0){this._ForceResetIsDirty=(B===true);A=FCKConfig.ProtectedSource.Protect(A);A=FCK.DataProcessor.ConvertToHtml(A);A=A.replace(FCKRegexLib.InvalidSelfCloseTags,'$1></$2>');A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);if (FCK.TempBaseTag.length>0&&!FCKRegexLib.HasBaseTag.test(A)) A=A.replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);var C='';if (!FCKConfig.FullPage) C+=_FCK_GetEditorAreaStyleTags();if (FCKBrowserInfo.IsIE) C+=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) C+='<link href="'+FCKConfig.FullBasePath+'css/fck_showtableborders_gecko.css" rel="stylesheet" type="text/css" _fcktemp="true" />';C+='<link href="'+FCKConfig.FullBasePath+'css/fck_internal.css" rel="stylesheet" type="text/css" _fcktemp="true" />';A=A.replace(FCKRegexLib.HeadCloser,C+'$&');this.EditingArea.OnLoad=_FCK_EditingArea_OnLoad;this.EditingArea.Start(A);}else{FCK.EditorWindow=null;FCK.EditorDocument=null;FCKDomTools.PaddingNode=null;this.EditingArea.OnLoad=null;this.EditingArea.Start(A);this.EditingArea.Textarea._FCKShowContextMenu=true;FCK.EnterKeyHandler=null;if (B) this.ResetIsDirty();FCK.KeystrokeHandler.AttachToElement(this.EditingArea.Textarea);this.EditingArea.Textarea.focus();FCK.Events.FireEvent('OnAfterSetHTML');};if (FCKBrowserInfo.IsGecko) window.onresize();},HasFocus:false,RedirectNamedCommands:{},ExecuteNamedCommand:function(A,B,C,D){if (!D) FCKUndo.SaveUndoStep();if (!C&&FCK.RedirectNamedCommands[A]!=null) FCK.ExecuteRedirectedNamedCommand(A,B);else{FCK.Focus();FCK.EditorDocument.execCommand(A,false,B);FCK.Events.FireEvent('OnSelectionChange');};if (!D) FCKUndo.SaveUndoStep();},GetNamedCommandState:function(A){try{if (FCKBrowserInfo.IsSafari&&FCK.EditorWindow&&A.IEquals('Paste')) return 0;if (!FCK.EditorDocument.queryCommandEnabled(A)) return -1;else{return FCK.EditorDocument.queryCommandState(A)?1:0;}}catch (e){return 0;}},GetNamedCommandValue:function(A){var B='';var C=FCK.GetNamedCommandState(A);if (C==-1) return null;try{B=this.EditorDocument.queryCommandValue(A);}catch(e) {};return B?B:'';},Paste:function(A){if (FCK.Status!=2||!FCK.Events.FireEvent('OnPaste')) return false;return A||FCK._ExecPaste();},PasteFromWord:function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');},Preview:function(){var A=FCKConfig.ScreenWidth*0.8;var B=FCKConfig.ScreenHeight*0.7;var C=(FCKConfig.ScreenWidth-A)/2;var D=window.open('',null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+A+',height='+B+',left='+C);var E;if (FCKConfig.FullPage){if (FCK.TempBaseTag.length>0) E=FCK.TempBaseTag+FCK.GetXHTML();else E=FCK.GetXHTML();}else{E=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"><head>'+FCK.TempBaseTag+'<title>'+FCKLang.Preview+'</title>'+_FCK_GetEditorAreaStyleTags()+'</head><body'+FCKConfig.GetBodyAttributes()+'>'+FCK.GetXHTML()+'</body></html>';};D.document.write(E);D.document.close();},SwitchEditMode:function(A){var B=(FCK.EditMode==0);var C=FCK.IsDirty();var D;if (B){FCKCommands.GetCommand('ShowBlocks').SaveState();if (!A&&FCKBrowserInfo.IsIE) FCKUndo.SaveUndoStep();D=FCK.GetXHTML(FCKConfig.FormatSource);if (D==null) return false;}else D=this.EditingArea.Textarea.value;FCK.EditMode=B?1:0;FCK.SetData(D,!C);FCK.Focus();FCKTools.RunFunction(FCK.ToolbarSet.RefreshModeState,FCK.ToolbarSet);return true;},InsertElement:function(A){if (typeof A=='string') A=this.EditorDocument.createElement(A);var B=A.nodeName.toLowerCase();var C=new FCKDomRange(this.EditorWindow);if (FCKListsLib.BlockElements[B]!=null){C.SplitBlock();C.InsertNode(A);var D=FCKDomTools.GetNextSourceElement(A,false,null,['hr','br','param','img','area','input']);if (!D&&FCKConfig.EnterMode!='br'){D=this.EditorDocument.body.appendChild(this.EditorDocument.createElement(FCKConfig.EnterMode));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(D);};if (FCKListsLib.EmptyElements[B]==null) C.MoveToElementEditStart(A);else if (D) C.MoveToElementEditStart(D);else C.MoveToPosition(A,4);if (FCKBrowserInfo.IsGecko){if (D) D.scrollIntoView(false);A.scrollIntoView(false);}}else{C.MoveToSelection();C.DeleteContents();C.InsertNode(A);C.SetStart(A,4);C.SetEnd(A,4);};C.Select();C.Release();this.Focus();return A;},_InsertBlockElement:function(A){},_IsFunctionKey:function(A){if (A>=16&&A<=20) return true;if (A==27||(A>=33&&A<=40)) return true;if (A==45) return true;return false;},_KeyDownListener:function(A){if (!A) A=FCK.EditorWindow.event;if (FCK.EditorWindow){if (!FCK._IsFunctionKey(A.keyCode)&&!(A.ctrlKey||A.metaKey)&&!(A.keyCode==46)) FCK._KeyDownUndo();};return true;},_KeyDownUndo:function(){if (!FCKUndo.Typing){FCKUndo.SaveUndoStep();FCKUndo.Typing=true;FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.TypesCount++;FCKUndo.Changed=1;if (FCKUndo.TypesCount>FCKUndo.MaxTypes){FCKUndo.TypesCount=0;FCKUndo.SaveUndoStep();}},_TabKeyHandler:function(A){if (!A) A=window.event;var B=A.keyCode;if (B==9&&FCK.EditMode!=0){if (FCKBrowserInfo.IsIE){var C=document.selection.createRange();if (C.parentElement()!=FCK.EditingArea.Textarea) return true;C.text='\t';C.select();}else{var a=[];var D=FCK.EditingArea.Textarea;var E=D.selectionStart;var F=D.selectionEnd;a.push(D.value.substr(0,E));a.push('\t');a.push(D.value.substr(F));D.value=a.join('');D.setSelectionRange(E+1,E+1);};if (A.preventDefault) return A.preventDefault();return A.returnValue=false;};return true;}};FCK.Events=new FCKEvents(FCK);FCK.GetHTML=FCK.GetXHTML=FCK.GetData;FCK.SetHTML=FCK.SetData;FCK.InsertElementAndGetIt=FCK.CreateElement=FCK.InsertElement;function _FCK_ProtectEvents_ReplaceTags(A){return A.replace(FCKRegexLib.EventAttributes,_FCK_ProtectEvents_ReplaceEvents);};function _FCK_ProtectEvents_ReplaceEvents(A,B){return ' '+B+'_fckprotectedatt="'+encodeURIComponent(A)+'"';};function _FCK_ProtectEvents_RestoreEvents(A,B){return decodeURIComponent(B);};function _FCK_MouseEventsListener(A){if (!A) A=window.event;if (A.type=='mousedown') FCK.MouseDownFlag=true;else if (A.type=='mouseup') FCK.MouseDownFlag=false;else if (A.type=='mousemove') FCK.Events.FireEvent('OnMouseMove',A);};function _FCK_PaddingNodeListener(){if (FCKConfig.EnterMode.IEquals('br')) return;FCKDomTools.EnforcePaddingNode(FCK.EditorDocument,FCKConfig.EnterMode);if (!FCKBrowserInfo.IsIE&&FCKDomTools.PaddingNode){var A=FCK.EditorWindow.getSelection();if (A&&A.rangeCount==1){var B=A.getRangeAt(0);if (B.collapsed&&B.startContainer==FCK.EditorDocument.body&&B.startOffset==0){B.selectNodeContents(FCKDomTools.PaddingNode);B.collapse(true);A.removeAllRanges();A.addRange(B);}}}else if (FCKDomTools.PaddingNode){var C=FCKSelection.GetParentElement();var D=FCKDomTools.PaddingNode;if (C&&C.nodeName.IEquals('body')){if (FCK.EditorDocument.body.childNodes.length==1&&FCK.EditorDocument.body.firstChild==D){var B=FCK.EditorDocument.body.createTextRange();var F=false;if (!D.childNodes.firstChild){D.appendChild(D.ownerDocument.createTextNode('\ufeff'));F=true;};B.moveToElementText(D);B.select();if (F) B.pasteHTML('');}}}};function _FCK_EditingArea_OnLoad(){FCK.EditorWindow=FCK.EditingArea.Window;FCK.EditorDocument=FCK.EditingArea.Document;FCK.InitializeBehaviors();FCK.MouseDownFlag=false;FCKTools.AddEventListener(FCK.EditorDocument,'mousemove',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mousedown',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mouseup',_FCK_MouseEventsListener);if (FCKBrowserInfo.IsSafari){var A=function(evt){if (!(evt.ctrlKey||evt.metaKey)) return;if (FCK.EditMode!=0) return;switch (evt.keyCode){case 89:FCKUndo.Redo();break;case 90:FCKUndo.Undo();break;}};FCKTools.AddEventListener(FCK.EditorDocument,'keyup',A);};FCK.EnterKeyHandler=new FCKEnterKey(FCK.EditorWindow,FCKConfig.EnterMode,FCKConfig.ShiftEnterMode,FCKConfig.TabSpaces);FCK.KeystrokeHandler.AttachToElement(FCK.EditorDocument);if (FCK._ForceResetIsDirty) FCK.ResetIsDirty();if (FCKBrowserInfo.IsIE&&FCK.HasFocus) FCK.EditorDocument.body.setActive();FCK.OnAfterSetHTML();FCKCommands.GetCommand('ShowBlocks').RestoreState();if (FCK.Status!=0) return;if (FCKConfig.Debug) FCKDebug._GetWindow();FCK.SetStatus(1);};function _FCK_GetEditorAreaStyleTags(){var A='';var B=FCKConfig.EditorAreaCSS;var C=FCKConfig.EditorAreaStyles;for (var i=0;i<B.length;i++) A+='<link href="'+B[i]+'" rel="stylesheet" type="text/css" />';if (C&&C.length>0) A+="<style>"+C+"</style>";return A;};function _FCK_KeystrokeHandler_OnKeystroke(A,B){if (FCK.Status!=2) return false;if (FCK.EditMode==0){switch (B){case 'Paste':return!FCK.Paste();case 'Cut':FCKUndo.SaveUndoStep();return false;}}else{if (B.Equals('Paste','Undo','Redo','SelectAll','Cut')) return false;};var C=FCK.Commands.GetCommand(B);return (C.Execute.apply(C,FCKTools.ArgumentsToArray(arguments,2))!==false);};(function(){var A=window.parent.document;var B=A.getElementById(FCK.Name);var i=0;while (B||i==0){if (B&&B.tagName.toLowerCase().Equals('input','textarea')){FCK.LinkedField=B;break;};B=A.getElementsByName(FCK.Name)[i++];}})();var FCKTempBin={Elements:[],AddElement:function(A){var B=this.Elements.length;this.Elements[B]=A;return B;},RemoveElement:function(A){var e=this.Elements[A];this.Elements[A]=null;return e;},Reset:function(){var i=0;while (i<this.Elements.length) this.Elements[i++]=null;this.Elements.length=0;}};var FCKFocusManager=FCK.FocusManager={IsLocked:false,AddWindow:function(A,B){var C;if (FCKBrowserInfo.IsIE) C=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else if (FCKBrowserInfo.IsSafari) C=A;else C=A.document;FCKTools.AddEventListener(C,'blur',FCKFocusManager_Win_OnBlur);FCKTools.AddEventListener(C,'focus',B?FCKFocusManager_Win_OnFocus_Area:FCKFocusManager_Win_OnFocus);},RemoveWindow:function(A){if (FCKBrowserInfo.IsIE) oTarget=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else oTarget=A.document;FCKTools.RemoveEventListener(oTarget,'blur',FCKFocusManager_Win_OnBlur);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus_Area);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus);},Lock:function(){this.IsLocked=true;},Unlock:function(){if (this._HasPendingBlur) FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);this.IsLocked=false;},_ResetTimer:function(){this._HasPendingBlur=false;if (this._Timer){window.clearTimeout(this._Timer);delete this._Timer;}}};function FCKFocusManager_Win_OnBlur(){if (typeof(FCK)!='undefined'&&FCK.HasFocus){FCKFocusManager._ResetTimer();FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);}};function FCKFocusManager_FireOnBlur(){if (FCKFocusManager.IsLocked) FCKFocusManager._HasPendingBlur=true;else{FCK.HasFocus=false;FCK.Events.FireEvent("OnBlur");}};function FCKFocusManager_Win_OnFocus_Area(){FCK.Focus();FCKFocusManager_Win_OnFocus();};function FCKFocusManager_Win_OnFocus(){FCKFocusManager._ResetTimer();if (!FCK.HasFocus&&!FCKFocusManager.IsLocked){FCK.HasFocus=true;FCK.Events.FireEvent("OnFocus");}};
-FCK.Description="FCKeditor for Gecko Browsers";FCK.InitializeBehaviors=function(){if (FCKBrowserInfo.IsGecko) Window_OnResize();FCKFocusManager.AddWindow(this.EditorWindow);this.ExecOnSelectionChange=function(){FCK.Events.FireEvent("OnSelectionChange");};this._ExecDrop=function(evt){if (FCK.MouseDownFlag){FCK.MouseDownFlag=false;return;};if (FCKConfig.ForcePasteAsPlainText){if (evt.dataTransfer){var A=evt.dataTransfer.getData('Text');A=FCKTools.HTMLEncode(A);A=FCKTools.ProcessLineBreaks(window,FCKConfig,A);FCK.InsertHtml(A);}else if (FCKConfig.ShowDropDialog) FCK.PasteAsPlainText();}else if (FCKConfig.ShowDropDialog) FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.Paste,'dialog/fck_paste.html',400,330,'Security');evt.preventDefault();evt.stopPropagation();};this._ExecCheckCaret=function(evt){if (FCK.EditMode!=0) return;if (evt.type=='keypress'){var B=evt.keyCode;if (B<33||B>40) return;};var C=function(H){if (H.nodeType!=1) return false;var D=H.tagName.toLowerCase();return (FCKListsLib.BlockElements[D]||FCKListsLib.EmptyElements[D]);};var E=function(){var F=FCK.EditorWindow.getSelection();var G=F.getRangeAt(0);if (!G||!G.collapsed) return;var H=G.endContainer;if (H.nodeType!=3) return;if (H.nodeValue.length!=G.endOffset) return;var I=H.parentNode.tagName.toLowerCase();if (!(I=='a'||(!(FCKListsLib.BlockElements[I]||FCKListsLib.NonEmptyBlockElements[I])&&B==35))) return;var J=FCKTools.GetNextTextNode(H,H.parentNode,C);if (J) return;G=FCK.EditorDocument.createRange();J=FCKTools.GetNextTextNode(H,H.parentNode.parentNode,C);if (J){if (FCKBrowserInfo.IsOpera&&B==37) return;G.setStart(J,0);G.setEnd(J,0);}else{while (H.parentNode&&H.parentNode!=FCK.EditorDocument.body&&H.parentNode!=FCK.EditorDocument.documentElement&&H==H.parentNode.lastChild&&(!FCKListsLib.BlockElements[H.parentNode.tagName.toLowerCase()]&&!FCKListsLib.NonEmptyBlockElements[H.parentNode.tagName.toLowerCase()])) H=H.parentNode;if (FCKListsLib.BlockElements[I]||FCKListsLib.EmptyElements[I]||H==FCK.EditorDocument.body){G.setStart(H,H.childNodes.length);G.setEnd(H,H.childNodes.length);}else{var K=H.nextSibling;while (K){if (K.nodeType!=1){K=K.nextSibling;continue;};var L=K.tagName.toLowerCase();if (FCKListsLib.BlockElements[L]||FCKListsLib.EmptyElements[L]||FCKListsLib.NonEmptyBlockElements[L]) break;K=K.nextSibling;};var M=FCK.EditorDocument.createTextNode('');if (K) H.parentNode.insertBefore(M,K);else H.parentNode.appendChild(M);G.setStart(M,0);G.setEnd(M,0);}};F.removeAllRanges();F.addRange(G);FCK.Events.FireEvent("OnSelectionChange");};setTimeout(E,1);};this.ExecOnSelectionChangeTimer=function(){if (FCK.LastOnChangeTimer) window.clearTimeout(FCK.LastOnChangeTimer);FCK.LastOnChangeTimer=window.setTimeout(FCK.ExecOnSelectionChange,100);};this.EditorDocument.addEventListener('mouseup',this.ExecOnSelectionChange,false);this.EditorDocument.addEventListener('keyup',this.ExecOnSelectionChangeTimer,false);this._DblClickListener=function(e){FCK.OnDoubleClick(e.target);e.stopPropagation();};this.EditorDocument.addEventListener('dblclick',this._DblClickListener,true);this.EditorDocument.addEventListener('keydown',this._KeyDownListener,false);if (FCKBrowserInfo.IsGecko){this.EditorWindow.addEventListener('dragdrop',this._ExecDrop,true);}else if (FCKBrowserInfo.IsSafari){var N=function(evt){ if (!FCK.MouseDownFlag) evt.returnValue=false;};this.EditorDocument.addEventListener('dragenter',N,true);this.EditorDocument.addEventListener('dragover',N,true);this.EditorDocument.addEventListener('drop',this._ExecDrop,true);this.EditorDocument.addEventListener('mousedown',function(ev){var O=ev.srcElement;if (O.nodeName.IEquals('IMG','HR','INPUT','TEXTAREA','SELECT')){FCKSelection.SelectNode(O);}},true);this.EditorDocument.addEventListener('mouseup',function(ev){if (ev.srcElement.nodeName.IEquals('INPUT','TEXTAREA','SELECT')) ev.preventDefault()},true);this.EditorDocument.addEventListener('click',function(ev){if (ev.srcElement.nodeName.IEquals('INPUT','TEXTAREA','SELECT')) ev.preventDefault()},true);};if (FCKBrowserInfo.IsGecko||FCKBrowserInfo.IsOpera){this.EditorDocument.addEventListener('keypress',this._ExecCheckCaret,false);this.EditorDocument.addEventListener('click',this._ExecCheckCaret,false);};FCK.ContextMenu._InnerContextMenu.SetMouseClickWindow(FCK.EditorWindow);FCK.ContextMenu._InnerContextMenu.AttachToElement(FCK.EditorDocument);};FCK.MakeEditable=function(){this.EditingArea.MakeEditable();};function Document_OnContextMenu(e){if (!e.target._FCKShowContextMenu) e.preventDefault();};document.oncontextmenu=Document_OnContextMenu;FCK._BaseGetNamedCommandState=FCK.GetNamedCommandState;FCK.GetNamedCommandState=function(A){switch (A){case 'Unlink':return FCKSelection.HasAncestorNode('A')?0:-1;default:return FCK._BaseGetNamedCommandState(A);}};FCK.RedirectNamedCommands={Print:true,Paste:true,Cut:true,Copy:true};FCK.ExecuteRedirectedNamedCommand=function(A,B){switch (A){case 'Print':FCK.EditorWindow.print();break;case 'Paste':try{if (FCKBrowserInfo.IsSafari) throw '';if (FCK.Paste()) FCK.ExecuteNamedCommand('Paste',null,true);}catch (e)	{ FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.Paste,'dialog/fck_paste.html',400,330,'Security');};break;case 'Cut':try			{ FCK.ExecuteNamedCommand('Cut',null,true);}catch (e)	{ alert(FCKLang.PasteErrorCut);};break;case 'Copy':try			{ FCK.ExecuteNamedCommand('Copy',null,true);}catch (e)	{ alert(FCKLang.PasteErrorCopy);};break;default:FCK.ExecuteNamedCommand(A,B);}};FCK._ExecPaste=function(){FCKUndo.SaveUndoStep();if (FCKConfig.ForcePasteAsPlainText){FCK.PasteAsPlainText();return false;};return true;};FCK.InsertHtml=function(A){A=FCKConfig.ProtectedSource.Protect(A);A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);FCKUndo.SaveUndoStep();this.EditorDocument.execCommand('inserthtml',false,A);this.Focus();this.Events.FireEvent("OnSelectionChange");};FCK.PasteAsPlainText=function(){FCKTools.RunFunction(FCKDialog.OpenDialog,FCKDialog,['FCKDialog_Paste',FCKLang.PasteAsText,'dialog/fck_paste.html',400,330,'PlainText']);};FCK.GetClipboardHTML=function(){return '';};FCK.CreateLink=function(A,B){var C=[];FCK.ExecuteNamedCommand('Unlink',null,false,!!B);if (A.length>0){var D='javascript:void(0);/*'+(new Date().getTime())+'*/';FCK.ExecuteNamedCommand('CreateLink',D,false,!!B);var E=this.EditorDocument.evaluate("//a[@href='"+D+"']",this.EditorDocument.body,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);for (var i=0;i<E.snapshotLength;i++){var F=E.snapshotItem(i);F.href=A;if (D==F.innerHTML) F.innerHTML='';C.push(F);}};return C;};FCK._FillEmptyBlock=function(A){if (!A||A.nodeType!=1) return;var B=A.tagName.toLowerCase();if (B!='p'&&B!='div') return;if (A.firstChild) return;FCKTools.AppendBogusBr(A);};FCK._ExecCheckEmptyBlock=function(){FCK._FillEmptyBlock(FCK.EditorDocument.body.firstChild);var A=FCK.EditorWindow.getSelection();if (!A||A.rangeCount<1) return;var B=A.getRangeAt(0);FCK._FillEmptyBlock(B.startContainer);};
-var FCKConfig=FCK.Config={};if (document.location.protocol=='file:'){FCKConfig.BasePath=decodeURIComponent(document.location.pathname.substr(1));FCKConfig.BasePath=FCKConfig.BasePath.replace(/\\/gi, '/');var sFullProtocol=document.location.href.match(/^(file\:\/{2,3})/)[1];if (FCKBrowserInfo.IsOpera) sFullProtocol+='localhost/';FCKConfig.BasePath=sFullProtocol+FCKConfig.BasePath.substring(0,FCKConfig.BasePath.lastIndexOf('/')+1);FCKConfig.FullBasePath=FCKConfig.BasePath;}else{FCKConfig.BasePath=document.location.pathname.substring(0,document.location.pathname.lastIndexOf('/')+1);FCKConfig.FullBasePath=document.location.protocol+'//'+document.location.host+FCKConfig.BasePath;};FCKConfig.EditorPath=FCKConfig.BasePath.replace(/editor\/$/,'');try{FCKConfig.ScreenWidth=screen.width;FCKConfig.ScreenHeight=screen.height;}catch (e){FCKConfig.ScreenWidth=800;FCKConfig.ScreenHeight=600;};FCKConfig.ProcessHiddenField=function(){this.PageConfig={};var A=window.parent.document.getElementById(FCK.Name+'___Config');if (!A) return;var B=A.value.split('&');for (var i=0;i<B.length;i++){if (B[i].length==0) continue;var C=B[i].split('=');var D=decodeURIComponent(C[0]);var E=decodeURIComponent(C[1]);if (D=='CustomConfigurationsPath') FCKConfig[D]=E;else if (E.toLowerCase()=="true") this.PageConfig[D]=true;else if (E.toLowerCase()=="false") this.PageConfig[D]=false;else if (E.length>0&&!isNaN(E)) this.PageConfig[D]=parseInt(E,10);else this.PageConfig[D]=E;}};function FCKConfig_LoadPageConfig(){var A=FCKConfig.PageConfig;for (var B in A) FCKConfig[B]=A[B];};function FCKConfig_PreProcess(){var A=FCKConfig;if (A.AllowQueryStringDebug){try{if ((/fckdebug=true/i).test(window.top.location.search)) A.Debug=true;}catch (e) {/*Ignore it. Much probably we are inside a FRAME where the "top" is in another domain (security error).*/}};if (!A.PluginsPath.EndsWith('/')) A.PluginsPath+='/';if (typeof(A.EditorAreaCSS)=='string') A.EditorAreaCSS=A.EditorAreaCSS.split(',');var B=A.ToolbarComboPreviewCSS;if (!B||B.length==0) A.ToolbarComboPreviewCSS=A.EditorAreaCSS;else if (typeof(B)=='string') A.ToolbarComboPreviewCSS=[B];};FCKConfig.ToolbarSets={};FCKConfig.Plugins={};FCKConfig.Plugins.Items=[];FCKConfig.Plugins.Add=function(A,B,C){FCKConfig.Plugins.Items.AddItem([A,B,C]);};FCKConfig.ProtectedSource={};FCKConfig.ProtectedSource._CodeTag=(new Date()).valueOf();FCKConfig.ProtectedSource.RegexEntries=[/<!--[\s\S]*?-->/g,/<script[\s\S]*?<\/script>/gi,/<noscript[\s\S]*?<\/noscript>/gi,/<object[\s\S]+?<\/object>/gi];FCKConfig.ProtectedSource.Add=function(A){this.RegexEntries.AddItem(A);};FCKConfig.ProtectedSource.Protect=function(A){var B=this._CodeTag;function _Replace(protectedSource){var C=FCKTempBin.AddElement(protectedSource);return '<!--{'+B+C+'}-->';};for (var i=0;i<this.RegexEntries.length;i++){A=A.replace(this.RegexEntries[i],_Replace);};return A;};FCKConfig.ProtectedSource.Revert=function(A,B){function _Replace(m,opener,index){var C=B?FCKTempBin.RemoveElement(index):FCKTempBin.Elements[index];return FCKConfig.ProtectedSource.Revert(C,B);};var D=new RegExp("(<|&lt;)!--\\{"+this._CodeTag+"(\\d+)\\}--(>|&gt;)","g");return A.replace(D,_Replace);};FCKConfig.GetBodyAttributes=function(){var A='';if (this.BodyId&&this.BodyId.length>0) A+=' id="'+this.BodyId+'"';if (this.BodyClass&&this.BodyClass.length>0) A+=' class="'+this.BodyClass+'"';return A;};FCKConfig.ApplyBodyAttributes=function(A){if (this.BodyId&&this.BodyId.length>0) A.id=FCKConfig.BodyId;if (this.BodyClass&&this.BodyClass.length>0) A.className+=' '+FCKConfig.BodyClass;};
-var FCKDebug={};FCKDebug._GetWindow=function(){if (!this.DebugWindow||this.DebugWindow.closed) this.DebugWindow=window.open(FCKConfig.BasePath+'fckdebug.html','FCKeditorDebug','menubar=no,scrollbars=yes,resizable=yes,location=no,toolbar=no,width=600,height=500',true);return this.DebugWindow;};FCKDebug.Output=function(A,B,C){if (!FCKConfig.Debug) return;try{this._GetWindow().Output(A,B);}catch (e) {}};FCKDebug.OutputObject=function(A,B){if (!FCKConfig.Debug) return;try{this._GetWindow().OutputObject(A,B);}catch (e) {}}
-var FCKDomTools={MoveChildren:function(A,B,C){if (A==B) return;var D;if (C){while ((D=A.lastChild)) B.insertBefore(A.removeChild(D),B.firstChild);}else{while ((D=A.firstChild)) B.appendChild(A.removeChild(D));}},MoveNode:function(A,B,C){if (C) B.insertBefore(FCKDomTools.RemoveNode(A),B.firstChild);else B.appendChild(FCKDomTools.RemoveNode(A));},TrimNode:function(A){this.LTrimNode(A);this.RTrimNode(A);},LTrimNode:function(A){var B;while ((B=A.firstChild)){if (B.nodeType==3){var C=B.nodeValue.LTrim();var D=B.nodeValue.length;if (C.length==0){A.removeChild(B);continue;}else if (C.length<D){B.splitText(D-C.length);A.removeChild(A.firstChild);}};break;}},RTrimNode:function(A){var B;while ((B=A.lastChild)){if (B.nodeType==3){var C=B.nodeValue.RTrim();var D=B.nodeValue.length;if (C.length==0){B.parentNode.removeChild(B);continue;}else if (C.length<D){B.splitText(C.length);A.lastChild.parentNode.removeChild(A.lastChild);}};break;};if (!FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsOpera){B=A.lastChild;if (B&&B.nodeType==1&&B.nodeName.toLowerCase()=='br'){B.parentNode.removeChild(B);}}},RemoveNode:function(A,B){if (B){var C;while ((C=A.firstChild)) A.parentNode.insertBefore(A.removeChild(C),A);};return A.parentNode.removeChild(A);},GetFirstChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.firstChild;while(C){if (C.nodeType==1&&C.tagName.Equals.apply(C.tagName,B)) return C;C=C.nextSibling;};return null;},GetLastChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.lastChild;while(C){if (C.nodeType==1&&(!B||C.tagName.Equals(B))) return C;C=C.previousSibling;};return null;},GetPreviousSourceElement:function(A,B,C,D){if (!A) return null;if (C&&A.nodeType==1&&A.nodeName.IEquals(C)) return null;if (A.previousSibling) A=A.previousSibling;else return this.GetPreviousSourceElement(A.parentNode,B,C,D);while (A){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (!D||!A.nodeName.IEquals(D)) return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;if (A.lastChild) A=A.lastChild;else return this.GetPreviousSourceElement(A,B,C,D);};return null;},GetNextSourceElement:function(A,B,C,D,E){while((A=this.GetNextSourceNode(A,E))){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (D&&A.nodeName.IEquals(D)) return this.GetNextSourceElement(A,B,C,D);return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;};return null;},GetNextSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.firstChild) E=A.firstChild;else{if (D&&A==D) return null;E=A.nextSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetNextSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetNextSourceNode(E,false,C,D);return E;},GetPreviousSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.lastChild) E=A.lastChild;else{if (D&&A==D) return null;E=A.previousSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetPreviousSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetPreviousSourceNode(E,false,C,D);return E;},InsertAfterNode:function(A,B){return A.parentNode.insertBefore(B,A.nextSibling);},GetParents:function(A){var B=[];while (A){B.unshift(A);A=A.parentNode;};return B;},GetCommonParents:function(A,B){var C=this.GetParents(A);var D=this.GetParents(B);var E=[];for (var i=0;i<C.length;i++){if (C[i]==D[i]) E.push(C[i]);};return E;},GetCommonParentNode:function(A,B,C){var D={};if (!C.pop) C=[C];while (C.length>0) D[C.pop().toLowerCase()]=1;var E=this.GetCommonParents(A,B);var F=null;while ((F=E.pop())){if (D[F.nodeName.toLowerCase()]) return F;};return null;},GetIndexOf:function(A){var B=A.parentNode?A.parentNode.firstChild:null;var C=-1;while (B){C++;if (B==A) return C;B=B.nextSibling;};return-1;},PaddingNode:null,EnforcePaddingNode:function(A,B){try{if (!A||!A.body) return;}catch (e){return;};this.CheckAndRemovePaddingNode(A,B,true);try{if (A.body.lastChild&&(A.body.lastChild.nodeType!=1||A.body.lastChild.tagName.toLowerCase()==B.toLowerCase())) return;}catch (e){return;};var C=A.createElement(B);if (FCKBrowserInfo.IsGecko&&FCKListsLib.NonEmptyBlockElements[B]) FCKTools.AppendBogusBr(C);this.PaddingNode=C;if (A.body.childNodes.length==1&&A.body.firstChild.nodeType==1&&A.body.firstChild.tagName.toLowerCase()=='br'&&(A.body.firstChild.getAttribute('_moz_dirty')!=null||A.body.firstChild.getAttribute('type')=='_moz')) A.body.replaceChild(C,A.body.firstChild);else A.body.appendChild(C);},CheckAndRemovePaddingNode:function(A,B,C){var D=this.PaddingNode;if (!D) return;try{if (D.parentNode!=A.body||D.tagName.toLowerCase()!=B||(D.childNodes.length>1)||(D.firstChild&&D.firstChild.nodeValue!='\xa0'&&String(D.firstChild.tagName).toLowerCase()!='br')){this.PaddingNode=null;return;}}catch (e){this.PaddingNode=null;return;};if (!C){if (D.parentNode.childNodes.length>1) D.parentNode.removeChild(D);this.PaddingNode=null;}},HasAttribute:function(A,B){if (A.hasAttribute) return A.hasAttribute(B);else{var C=A.attributes[B];return (C!=undefined&&C.specified);}},HasAttributes:function(A){var B=A.attributes;for (var i=0;i<B.length;i++){if (FCKBrowserInfo.IsIE&&B[i].nodeName=='class'){if (A.className.length>0) return true;}else if (B[i].specified) return true;};return false;},RemoveAttribute:function(A,B){if (FCKBrowserInfo.IsIE&&B.toLowerCase()=='class') B='className';return A.removeAttribute(B,0);},GetAttributeValue:function(A,B){var C=B;if (typeof B=='string') B=A.attributes[B];else C=B.nodeName;if (B&&B.specified){if (C=='style') return A.style.cssText;else if (C=='class'||C.indexOf('on')==0) return B.nodeValue;else{return A.getAttribute(C,2);}};return null;},Contains:function(A,B){if (A.contains&&B.nodeType==1) return A.contains(B);while ((B=B.parentNode)){if (B==A) return true;};return false;},BreakParent:function(A,B,C){var D=C||new FCKDomRange(FCKTools.GetElementWindow(A));D.SetStart(A,4);D.SetEnd(B,4);var E=D.ExtractContents();D.InsertNode(A.parentNode.removeChild(A));E.InsertAfterNode(A);D.Release(!!C);},GetNodeAddress:function(A,B){var C=[];while (A&&A!=A.ownerDocument.documentElement){var D=A.parentNode;var E=-1;for(var i=0;i<D.childNodes.length;i++){var F=D.childNodes[i];if (B===true&&F.nodeType==3&&F.previousSibling&&F.previousSibling.nodeType==3) continue;E++;if (D.childNodes[i]==A) break;};C.unshift(E);A=A.parentNode;};return C;},GetNodeFromAddress:function(A,B,C){var D=A.documentElement;for (var i=0;i<B.length;i++){var E=B[i];if (!C){D=D.childNodes[E];continue;};var F=-1;for (var j=0;j<D.childNodes.length;j++){var G=D.childNodes[j];if (C===true&&G.nodeType==3&&G.previousSibling&&G.previousSibling.nodeType==3) continue;F++;if (F==E){D=G;break;}}};return D;},CloneElement:function(A){A=A.cloneNode(false);A.removeAttribute('id',false);return A;},ClearElementJSProperty:function(A,B){if (FCKBrowserInfo.IsIE) A.removeAttribute(B);else delete A[B];},SetElementMarker:function (A,B,C,D){var E=String(parseInt(Math.random()*0xfffffff,10));B._FCKMarkerId=E;B[C]=D;if (!A[E]) A[E]={ 'element':B,'markers':{} };A[E]['markers'][C]=D;},ClearElementMarkers:function(A,B,C){var D=B._FCKMarkerId;if (!D) return;this.ClearElementJSProperty(B,'_FCKMarkerId');for (var j in A[D]['markers']) this.ClearElementJSProperty(B,j);if (C) delete A[D];},ClearAllMarkers:function(A){for (var i in A) this.ClearElementMarkers(A,A[i]['element'],true);},ListToArray:function(A,B,C,D,E){if (!A.nodeName.IEquals(['ul','ol'])) return [];if (!D) D=0;if (!C) C=[];for (var i=0;i<A.childNodes.length;i++){var F=A.childNodes[i];if (!F.nodeName.IEquals('li')) continue;var G={ 'parent':A,'indent':D,'contents':[] };if (!E){G.grandparent=A.parentNode;if (G.grandparent&&G.grandparent.nodeName.IEquals('li')) G.grandparent=G.grandparent.parentNode;}else G.grandparent=E;if (B) this.SetElementMarker(B,F,'_FCK_ListArray_Index',C.length);C.push(G);for (var j=0;j<F.childNodes.length;j++){var H=F.childNodes[j];if (H.nodeName.IEquals(['ul','ol'])) this.ListToArray(H,B,C,D+1,G.grandparent);else G.contents.push(H);}};return C;},ArrayToList:function(A,B,C){if (C==undefined) C=0;if (!A||A.length<C+1) return null;var D=A[C].parent.ownerDocument;var E=D.createDocumentFragment();var F=null;var G=C;var H=Math.max(A[C].indent,0);var I=null;while (true){var J=A[G];if (J.indent==H){if (!F||A[G].parent.nodeName!=F.nodeName){F=A[G].parent.cloneNode(false);E.appendChild(F);};I=D.createElement('li');F.appendChild(I);for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));G++;}else if (J.indent==Math.max(H,0)+1){var K=this.ArrayToList(A,null,G);I.appendChild(K.listNode);G=K.nextIndex;}else if (J.indent==-1&&C==0&&J.grandparent){var I;if (J.grandparent.nodeName.IEquals(['ul','ol'])) I=D.createElement('li');else{if (FCKConfig.EnterMode.IEquals(['div','p'])&&!J.grandparent.nodeName.IEquals('td')) I=D.createElement(FCKConfig.EnterMode);else I=D.createDocumentFragment();};for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));if (I.nodeType==11){if (I.lastChild&&I.lastChild.getAttribute&&I.lastChild.getAttribute('type')=='_moz') I.removeChild(I.lastChild);I.appendChild(D.createElement('br'));};if (I.nodeName.IEquals(FCKConfig.EnterMode)&&I.firstChild){this.TrimNode(I);if (FCKListsLib.BlockBoundaries[I.firstChild.nodeName.toLowerCase()]){var M=D.createDocumentFragment();while (I.firstChild) M.appendChild(I.removeChild(I.firstChild));I=M;}};if (FCKBrowserInfo.IsGeckoLike&&I.nodeName.IEquals(['div','p'])) FCKTools.AppendBogusBr(I);E.appendChild(I);F=null;G++;}else return null;if (A.length<=G||Math.max(A[G].indent,0)<H){break;}};if (B){var N=E.firstChild;while (N){if (N.nodeType==1) this.ClearElementMarkers(B,N);N=this.GetNextSourceNode(N);}};return { 'listNode':E,'nextIndex':G };},GetNextSibling:function(A,B){A=A.nextSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.nextSibling;return A;},GetPreviousSibling:function(A,B){A=A.previousSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.previousSibling;return A;},CheckIsEmptyElement:function(A,B){var C=A.firstChild;var D;while (C){if (C.nodeType==1){if (D||!FCKListsLib.InlineNonEmptyElements[C.nodeName.toLowerCase()]) return false;if (!B||B(C)===true) D=C;}else if (C.nodeType==3&&C.nodeValue.length>0) return false;C=C.nextSibling;};return D?this.CheckIsEmptyElement(D,B):true;},SetElementStyles:function(A,B){var C=A.style;for (var D in B) C[D]=B[D];},GetCurrentElementStyle:function(w,A,B){if (FCKBrowserInfo.IsIE) return A.currentStyle[B];else return w.getComputedStyle(A,'')[B];},GetPositionedAncestor:function(w,A){var B=A;while (B!=B.ownerDocument.documentElement){if (this.GetCurrentElementStyle(w,B,'position')!='static') return B;B=B.parentNode;};return null;},ScrollIntoView:function(A,B){var C=FCKTools.GetElementWindow(A);var D=FCKTools.GetViewPaneSize(C).Height;var E=D*-1;if (B===false){E+=A.offsetHeight;E+=parseInt(this.GetCurrentElementStyle(C,A,'marginBottom')||0,10);};E+=A.offsetTop;while ((A=A.offsetParent)) E+=A.offsetTop||0;var F=FCKTools.GetScrollPosition(C).Y;if (E>0&&E>F) C.scrollTo(0,E);}};
-var FCKTools={};FCKTools.CreateBogusBR=function(A){var B=A.createElement('br');B.setAttribute('type','_moz');return B;};FCKTools.AppendStyleSheet=function(A,B){if (typeof(B)=='string') return this._AppendStyleSheet(A,B);else{var C=[];for (var i=0;i<B.length;i++) C.push(this._AppendStyleSheet(A,B[i]));return C;}};FCKTools.AppendStyleString=function (A,B){this._AppendStyleString(A,B);};FCKTools.GetElementDocument=function (A){return A.ownerDocument||A.document;};FCKTools.GetElementWindow=function(A){return this.GetDocumentWindow(this.GetElementDocument(A));};FCKTools.GetDocumentWindow=function(A){if (FCKBrowserInfo.IsSafari&&!A.parentWindow) this.FixDocumentParentWindow(window.top);return A.parentWindow||A.defaultView;};FCKTools.FixDocumentParentWindow=function(A){if (A.document) A.document.parentWindow=A;for (var i=0;i<A.frames.length;i++) FCKTools.FixDocumentParentWindow(A.frames[i]);};FCKTools.HTMLEncode=function(A){if (!A) return '';A=A.replace(/&/g,'&amp;');A=A.replace(/</g,'&lt;');A=A.replace(/>/g,'&gt;');return A;};FCKTools.HTMLDecode=function(A){if (!A) return '';A=A.replace(/&gt;/g,'>');A=A.replace(/&lt;/g,'<');A=A.replace(/&amp;/g,'&');return A;};FCKTools._ProcessLineBreaksForPMode=function(A,B,C,D,E){var F=0;var G="<p>";var H="</p>";var I="<br />";if (C){G="<li>";H="</li>";F=1;};while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='p'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};var n=B.charAt(i+1);if (n=='\r'){i++;n=B.charAt(i+1);};if (n=='\n'){i++;if (F) E.push(H);E.push(G);F=1;}else E.push(I);}};FCKTools._ProcessLineBreaksForDivMode=function(A,B,C,D,E){var F=0;var G="<div>";var H="</div>";if (C){G="<li>";H="</li>";F=1;};while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='div'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F){if (E[E.length-1]==G){E.push("&nbsp;");};E.push(H);};E.push(G);F=1;};if (F) E.push(H);};FCKTools._ProcessLineBreaksForBrMode=function(A,B,C,D,E){var F=0;var G="<br />";var H="";if (C){G="<li>";H="</li>";F=1;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F&&H.length) E.push (H);E.push(G);F=1;}};FCKTools.ProcessLineBreaks=function(A,B,C){var D=B.EnterMode.toLowerCase();var E=[];var F=0;var G=new A.FCKDomRange(A.FCK.EditorWindow);G.MoveToSelection();var H=G._Range.startContainer;while (H&&H.nodeType!=1) H=H.parentNode;if (H&&H.tagName.toLowerCase()=='li') F=1;if (D=='p') this._ProcessLineBreaksForPMode(A,C,F,H,E);else if (D=='div') this._ProcessLineBreaksForDivMode(A,C,F,H,E);else if (D=='br') this._ProcessLineBreaksForBrMode(A,C,F,H,E);return E.join("");};FCKTools.AddSelectOption=function(A,B,C){var D=FCKTools.GetElementDocument(A).createElement("OPTION");D.text=B;D.value=C;A.options.add(D);return D;};FCKTools.RunFunction=function(A,B,C,D){if (A) this.SetTimeout(A,0,B,C,D);};FCKTools.SetTimeout=function(A,B,C,D,E){return (E||window).setTimeout(function(){if (D) A.apply(C,[].concat(D));else A.apply(C);},B);};FCKTools.SetInterval=function(A,B,C,D,E){return (E||window).setInterval(function(){A.apply(C,D||[]);},B);};FCKTools.ConvertStyleSizeToHtml=function(A){return A.EndsWith('%')?A:parseInt(A,10);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.EndsWith('%')?A:(A+'px');};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.CreateEventListener=function(A,B){var f=function(){var C=[];for (var i=0;i<arguments.length;i++) C.push(arguments[i]);A.apply(this,C.concat(B));};return f;};FCKTools.IsStrictMode=function(A){return ('CSS1Compat'==(A.compatMode||'CSS1Compat'));};FCKTools.ArgumentsToArray=function(A,B,C){B=B||0;C=C||A.length;var D=[];for (var i=B;i<B+C&&i<A.length;i++) D.push(A[i]);return D;};FCKTools.CloneObject=function(A){var B=function() {};B.prototype=A;return new B;};FCKTools.AppendBogusBr=function(A){if (!A) return;var B=this.GetLastItem(A.getElementsByTagName('br'));if (!B||(B.getAttribute('type',2)!='_moz'&&B.getAttribute('_moz_dirty')==null)){var C=this.GetElementDocument(A);if (FCKBrowserInfo.IsOpera) A.appendChild(C.createTextNode(''));else A.appendChild(this.CreateBogusBR(C));}};FCKTools.GetLastItem=function(A){if (A.length>0) return A[A.length-1];return null;};FCKTools.GetDocumentPosition=function(w,A){var x=0;var y=0;var B=A;var C=null;var D=FCKTools.GetElementWindow(B);while (B&&!(D==w&&(B==w.document.body||B==w.document.documentElement))){x+=B.offsetLeft-B.scrollLeft;y+=B.offsetTop-B.scrollTop;if (!FCKBrowserInfo.IsOpera){var E=C;while (E&&E!=B){x-=E.scrollLeft;y-=E.scrollTop;E=E.parentNode;}};C=B;if (B.offsetParent) B=B.offsetParent;else{if (D!=w){B=D.frameElement;C=null;if (B) D=FCKTools.GetElementWindow(B);}else B=null;}};if (FCKDomTools.GetCurrentElementStyle(w,w.document.body,'position')!='static'||(FCKBrowserInfo.IsIE&&FCKDomTools.GetPositionedAncestor(w,A)==null)){x+=w.document.body.offsetLeft;y+=w.document.body.offsetTop;};return { "x":x,"y":y };};FCKTools.GetWindowPosition=function(w,A){var B=this.GetDocumentPosition(w,A);var C=FCKTools.GetScrollPosition(w);B.x-=C.X;B.y-=C.Y;return B;};FCKTools.ProtectFormStyles=function(A){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return [];var B=[];var C=['style','className'];for (var i=0;i<C.length;i++){var D=C[i];if (A.elements.namedItem(D)){var E=A.elements.namedItem(D);B.push([E,E.nextSibling]);A.removeChild(E);}};return B;};FCKTools.RestoreFormStyles=function(A,B){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return;if (B.length>0){for (var i=B.length-1;i>=0;i--){var C=B[i][0];var D=B[i][1];if (D) A.insertBefore(C,D);else A.appendChild(C);}}};FCKTools.GetNextNode=function(A,B){if (A.firstChild) return A.firstChild;else if (A.nextSibling) return A.nextSibling;else{var C=A.parentNode;while (C){if (C==B) return null;if (C.nextSibling) return C.nextSibling;else C=C.parentNode;}};return null;};FCKTools.GetNextTextNode=function(A,B,C){node=this.GetNextNode(A,B);if (C&&node&&C(node)) return null;while (node&&node.nodeType!=3){node=this.GetNextNode(node,B);if (C&&node&&C(node)) return null;};return node;};FCKTools.Merge=function(){var A=arguments;var o=A[0];for (var i=1;i<A.length;i++){var B=A[i];for (var p in B) o[p]=B[p];};return o;};FCKTools.IsArray=function(A){return (A instanceof Array);};FCKTools.AppendLengthProperty=function(A,B){var C=0;for (var n in A) C++;return A[B||'length']=C;};FCKTools.NormalizeCssText=function(A){var B=document.createElement('span');B.style.cssText=A;return B.style.cssText;};FCKTools.Hitch=function(A,B){return function() { A[B].apply(A,arguments);};};
-FCKTools.CancelEvent=function(e){if (e) e.preventDefault();};FCKTools.DisableSelection=function(A){if (FCKBrowserInfo.IsGecko) A.style.MozUserSelect='none';else A.style.userSelect='none';};FCKTools._AppendStyleSheet=function(A,B){var e=A.createElement('LINK');e.rel='stylesheet';e.type='text/css';e.href=B;A.getElementsByTagName("HEAD")[0].appendChild(e);return e;};FCKTools._AppendStyleString=function(A,B){var e=A.createElement("STYLE");e.appendChild(A.createTextNode(B));A.getElementsByTagName("HEAD")[0].appendChild(e);return e;};FCKTools.ClearElementAttributes=function(A){for (var i=0;i<A.attributes.length;i++){A.removeAttribute(A.attributes[i].name,0);}};FCKTools.GetAllChildrenIds=function(A){var B=[];var C=function(parent){for (var i=0;i<parent.childNodes.length;i++){var D=parent.childNodes[i].id;if (D&&D.length>0) B[B.length]=D;C(parent.childNodes[i]);}};C(A);return B;};FCKTools.RemoveOuterTags=function(e){var A=e.ownerDocument.createDocumentFragment();for (var i=0;i<e.childNodes.length;i++) A.appendChild(e.childNodes[i].cloneNode(true));e.parentNode.replaceChild(A,e);};FCKTools.CreateXmlObject=function(A){switch (A){case 'XmlHttp':return new XMLHttpRequest();case 'DOMDocument':return document.implementation.createDocument('','',null);};return null;};FCKTools.GetScrollPosition=function(A){return { X:A.pageXOffset,Y:A.pageYOffset };};FCKTools.AddEventListener=function(A,B,C){A.addEventListener(B,C,false);};FCKTools.RemoveEventListener=function(A,B,C){A.removeEventListener(B,C,false);};FCKTools.AddEventListenerEx=function(A,B,C,D){A.addEventListener(B,function(e){C.apply(A,[e].concat(D||[]));},false);};FCKTools.GetViewPaneSize=function(A){return { Width:A.innerWidth,Height:A.innerHeight };};FCKTools.SaveStyles=function(A){var B=FCKTools.ProtectFormStyles(A);var C={};if (A.className.length>0){C.Class=A.className;A.className='';};var D=A.getAttribute('style');if (D&&D.length>0){C.Inline=D;A.setAttribute('style','',0);};FCKTools.RestoreFormStyles(A,B);return C;};FCKTools.RestoreStyles=function(A,B){var C=FCKTools.ProtectFormStyles(A);A.className=B.Class||'';if (B.Inline) A.setAttribute('style',B.Inline,0);else A.removeAttribute('style',0);FCKTools.RestoreFormStyles(A,C);};FCKTools.RegisterDollarFunction=function(A){A.$=function(id){return this.document.getElementById(id);};};FCKTools.AppendElement=function(A,B){return A.appendChild(A.ownerDocument.createElement(B));};FCKTools.GetElementPosition=function(A,B){var c={ X:0,Y:0 };var C=B||window;var D=FCKTools.GetElementWindow(A);var E=null;while (A){var F=D.getComputedStyle(A,'').position;if (F&&F!='static'&&A.style.zIndex!=FCKConfig.FloatingPanelsZIndex) break;c.X+=A.offsetLeft-A.scrollLeft;c.Y+=A.offsetTop-A.scrollTop;if (!FCKBrowserInfo.IsOpera){var G=E;while (G&&G!=A){c.X-=G.scrollLeft;c.Y-=G.scrollTop;G=G.parentNode;}};E=A;if (A.offsetParent) A=A.offsetParent;else{if (D!=C){A=D.frameElement;E=null;if (A) D=FCKTools.GetElementWindow(A);}else{c.X+=A.scrollLeft;c.Y+=A.scrollTop;break;}}};return c;};
-var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='var FCKeditorAPI = {Version : "2.5.1",VersionBuild : "17566",__Instances : new Object(),GetInstance : function( name ){return this.__Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.__Instances ){var oEditor = FCKeditorAPI.__Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue	: {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if (FCKBrowserInfo.IsSafari||FCKBrowserInfo.IsGecko19){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;};FCKeditorAPI.__Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){if (!window.FCKUnloadFlag) return;delete FCKeditorAPI.__Instances[FCK.Name];};function FCKeditorAPI_ConfirmCleanup(){window.FCKUnloadFlag=true;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);FCKTools.AddEventListener(window,'beforeunload',FCKeditorAPI_ConfirmCleanup);
-var FCKImagePreloader=function(){this._Images=[];};FCKImagePreloader.prototype={AddImages:function(A){if (typeof(A)=='string') A=A.split(';');this._Images=this._Images.concat(A);},Start:function(){var A=this._Images;this._PreloadCount=A.length;for (var i=0;i<A.length;i++){var B=document.createElement('img');FCKTools.AddEventListenerEx(B,'load',_FCKImagePreloader_OnImage,this);FCKTools.AddEventListenerEx(B,'error',_FCKImagePreloader_OnImage,this);B.src=A[i];_FCKImagePreloader_ImageCache.push(B);}}};var _FCKImagePreloader_ImageCache=[];function _FCKImagePreloader_OnImage(A,B){if ((--B._PreloadCount)==0&&B.OnComplete) B.OnComplete();}
-var FCKRegexLib={AposEntity:/&apos;/gi,ObjectElements:/^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i,NamedCommands:/^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i,BeforeBody:/(^[\s\S]*\<body[^\>]*\>)/i,AfterBody:/(\<\/body\>[\s\S]*$)/i,ToReplace:/___fcktoreplace:([\w]+)/ig,MetaHttpEquiv:/http-equiv\s*=\s*["']?([^"' ]+)/i,HasBaseTag:/<base /i,HasBodyTag:/<body[\s|>]/i,HtmlOpener:/<html\s?[^>]*>/i,HeadOpener:/<head\s?[^>]*>/i,HeadCloser:/<\/head\s*>/i,FCK_Class:/\s*FCK__[^ ]*(?=\s+|$)/,ElementName:/(^[a-z_:][\w.\-:]*\w$)|(^[a-z_]$)/,ForceSimpleAmpersand:/___FCKAmp___/g,SpaceNoClose:/\/>/g,EmptyParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/,EmptyOutParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*|&nbsp;)(<\/\1>)?$/,TagBody:/></,GeckoEntitiesMarker:/#\?-\:/g,ProtectUrlsImg:/<img(?=\s).*?\ssrc=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsA:/<a(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsArea:/<area(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,Html4DocType:/HTML 4\.0 Transitional/i,DocTypeTag:/<!DOCTYPE[^>]*>/i,TagsWithEvent:/<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g,EventAttributes:/\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,ProtectedEvents:/\s\w+_fckprotectedatt="([^"]+)"/g,StyleProperties:/\S+\s*:/g,InvalidSelfCloseTags:/(<(?!base|meta|link|hr|br|param|img|area|input)([a-zA-Z0-9:]+)[^>]*)\/>/gi,StyleVariableAttName:/#\(\s*("|')(.+?)\1[^\)]*\s*\)/g,RegExp:/^\/(.*)\/([gim]*)$/};
-var FCKListsLib={BlockElements:{ address:1,blockquote:1,center:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,marquee:1,noscript:1,ol:1,p:1,pre:1,script:1,table:1,ul:1 },NonEmptyBlockElements:{ p:1,div:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,address:1,pre:1,ol:1,ul:1,li:1,td:1,th:1 },InlineChildReqElements:{ abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },InlineNonEmptyElements:{ a:1,abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },EmptyElements:{ base:1,col:1,meta:1,link:1,hr:1,br:1,param:1,img:1,area:1,input:1 },PathBlockElements:{ address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,de:1 },PathBlockLimitElements:{ body:1,div:1,td:1,th:1,caption:1,form:1 },StyleBlockElements:{ address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1 },StyleObjectElements:{ img:1,hr:1,li:1,table:1,tr:1,td:1,embed:1,object:1,ol:1,ul:1 },BlockBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1 },ListBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1,br:1 }};
-var FCKLanguageManager=FCK.Language={AvailableLanguages:{af:'Afrikaans',ar:'Arabic',bg:'Bulgarian',bn:'Bengali/Bangla',bs:'Bosnian',ca:'Catalan',cs:'Czech',da:'Danish',de:'German',el:'Greek',en:'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-uk':'English (United Kingdom)',eo:'Esperanto',es:'Spanish',et:'Estonian',eu:'Basque',fa:'Persian',fi:'Finnish',fo:'Faroese',fr:'French',gl:'Galician',he:'Hebrew',hi:'Hindi',hr:'Croatian',hu:'Hungarian',it:'Italian',ja:'Japanese',km:'Khmer',ko:'Korean',lt:'Lithuanian',lv:'Latvian',mn:'Mongolian',ms:'Malay',nb:'Norwegian Bokmal',nl:'Dutch',no:'Norwegian',pl:'Polish',pt:'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)',ro:'Romanian',ru:'Russian',sk:'Slovak',sl:'Slovenian',sr:'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)',sv:'Swedish',th:'Thai',tr:'Turkish',uk:'Ukrainian',vi:'Vietnamese',zh:'Chinese Traditional','zh-cn':'Chinese Simplified'},GetActiveLanguage:function(){if (FCKConfig.AutoDetectLanguage){var A;if (navigator.userLanguage) A=navigator.userLanguage.toLowerCase();else if (navigator.language) A=navigator.language.toLowerCase();else{return FCKConfig.DefaultLanguage;};if (A.length>=5){A=A.substr(0,5);if (this.AvailableLanguages[A]) return A;};if (A.length>=2){A=A.substr(0,2);if (this.AvailableLanguages[A]) return A;}};return this.DefaultLanguage;},TranslateElements:function(A,B,C,D){var e=A.getElementsByTagName(B);var E,s;for (var i=0;i<e.length;i++){if ((E=e[i].getAttribute('fckLang'))){if ((s=FCKLang[E])){if (D) s=FCKTools.HTMLEncode(s);e[i][C]=s;}}}},TranslatePage:function(A){this.TranslateElements(A,'INPUT','value');this.TranslateElements(A,'SPAN','innerHTML');this.TranslateElements(A,'LABEL','innerHTML');this.TranslateElements(A,'OPTION','innerHTML',true);this.TranslateElements(A,'LEGEND','innerHTML');},Initialize:function(){if (this.AvailableLanguages[FCKConfig.DefaultLanguage]) this.DefaultLanguage=FCKConfig.DefaultLanguage;else this.DefaultLanguage='en';this.ActiveLanguage={};this.ActiveLanguage.Code=this.GetActiveLanguage();this.ActiveLanguage.Name=this.AvailableLanguages[this.ActiveLanguage.Code];}};
+var FCK={Name:FCKURLParams['InstanceName'],Status:0,EditMode:0,Toolbar:null,HasFocus:false,DataProcessor:new FCKDataProcessor(),GetInstanceObject:(function(){var w=window;return function(name){return w[name];}})(),AttachToOnSelectionChange:function(A){this.Events.AttachEvent('OnSelectionChange',A);},GetLinkedFieldValue:function(){return this.LinkedField.value;},GetParentForm:function(){return this.LinkedField.form;},StartupValue:'',IsDirty:function(){if (this.EditMode==1) return (this.StartupValue!=this.EditingArea.Textarea.value);else{if (!this.EditorDocument) return false;return (this.StartupValue!=this.EditorDocument.body.innerHTML);}},ResetIsDirty:function(){if (this.EditMode==1) this.StartupValue=this.EditingArea.Textarea.value;else if (this.EditorDocument.body) this.StartupValue=this.EditorDocument.body.innerHTML;},StartEditor:function(){this.TempBaseTag=FCKConfig.BaseHref.length>0?'<base href="'+FCKConfig.BaseHref+'" _fcktemp="true"></base>':'';var A=FCK.KeystrokeHandler=new FCKKeystrokeHandler();A.OnKeystroke=_FCK_KeystrokeHandler_OnKeystroke;A.SetKeystrokes(FCKConfig.Keystrokes);if (FCKBrowserInfo.IsIE7){if ((CTRL+86/*V*/) in A.Keystrokes) A.SetKeystrokes([CTRL+86,true]);if ((SHIFT+45/*INS*/) in A.Keystrokes) A.SetKeystrokes([SHIFT+45,true]);};A.SetKeystrokes([CTRL+8,true]);this.EditingArea=new FCKEditingArea(document.getElementById('xEditingArea'));this.EditingArea.FFSpellChecker=FCKConfig.FirefoxSpellChecker;this.SetData(this.GetLinkedFieldValue(),true);FCKTools.AddEventListener(document,"keydown",this._TabKeyHandler);this.AttachToOnSelectionChange(_FCK_PaddingNodeListener);if (FCKBrowserInfo.IsGecko) this.AttachToOnSelectionChange(this._ExecCheckEmptyBlock);},Focus:function(){FCK.EditingArea.Focus();},SetStatus:function(A){this.Status=A;if (A==1){FCKFocusManager.AddWindow(window,true);if (FCKBrowserInfo.IsIE) FCKFocusManager.AddWindow(window.frameElement,true);if (FCKConfig.StartupFocus) FCK.Focus();};this.Events.FireEvent('OnStatusChange',A);},FixBody:function(){var A=FCKConfig.EnterMode;if (A!='p'&&A!='div') return;var B=this.EditorDocument;if (!B) return;var C=B.body;if (!C) return;FCKDomTools.TrimNode(C);var D=C.firstChild;var E;while (D){var F=false;switch (D.nodeType){case 1:var G=D.nodeName.toLowerCase();if (!FCKListsLib.BlockElements[G]&&G!='li'&&!D.getAttribute('_fckfakelement')&&D.getAttribute('_moz_dirty')==null) F=true;break;case 3:if (E||D.nodeValue.Trim().length>0) F=true;};if (F){var H=D.parentNode;if (!E) E=H.insertBefore(B.createElement(A),D);E.appendChild(H.removeChild(D));D=E.nextSibling;}else{if (E){FCKDomTools.TrimNode(E);E=null;};D=D.nextSibling;}};if (E) FCKDomTools.TrimNode(E);},GetData:function(A){if (FCK.EditMode==1) return FCK.EditingArea.Textarea.value;this.FixBody();var B=FCK.EditorDocument;if (!B) return null;var C=FCKConfig.FullPage;var D=FCK.DataProcessor.ConvertToDataFormat(C?B.documentElement:B.body,!C,FCKConfig.IgnoreEmptyParagraphValue,A);D=FCK.ProtectEventsRestore(D);if (FCKBrowserInfo.IsIE) D=D.replace(FCKRegexLib.ToReplace,'$1');if (C){if (FCK.DocTypeDeclaration&&FCK.DocTypeDeclaration.length>0) D=FCK.DocTypeDeclaration+'\n'+D;if (FCK.XmlDeclaration&&FCK.XmlDeclaration.length>0) D=FCK.XmlDeclaration+'\n'+D;};return FCKConfig.ProtectedSource.Revert(D);},UpdateLinkedField:function(){var A=FCK.GetXHTML(FCKConfig.FormatOutput);if (FCKConfig.HtmlEncodeOutput) A=FCKTools.HTMLEncode(A);FCK.LinkedField.value=A;FCK.Events.FireEvent('OnAfterLinkedFieldUpdate');},RegisteredDoubleClickHandlers:{},OnDoubleClick:function(A){var B=FCK.RegisteredDoubleClickHandlers[A.tagName.toUpperCase()];if (B){for (var i=0;i<B.length;i++) B[i](A);};B=FCK.RegisteredDoubleClickHandlers['*'];if (B){for (var i=0;i<B.length;i++) B[i](A);}},RegisterDoubleClickHandler:function(A,B){var C=B||'*';C=C.toUpperCase();var D;if (!(D=FCK.RegisteredDoubleClickHandlers[C])) FCK.RegisteredDoubleClickHandlers[C]=[A];else{if (D.IndexOf(A)==-1) D.push(A);}},OnAfterSetHTML:function(){FCKDocumentProcessor.Process(FCK.EditorDocument);FCKUndo.SaveUndoStep();FCK.Events.FireEvent('OnSelectionChange');FCK.Events.FireEvent('OnAfterSetHTML');},ProtectUrls:function(A){A=A.replace(FCKRegexLib.ProtectUrlsA,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsImg,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsArea,'$& _fcksavedurl=$1');return A;},ProtectEvents:function(A){return A.replace(FCKRegexLib.TagsWithEvent,_FCK_ProtectEvents_ReplaceTags);},ProtectEventsRestore:function(A){return A.replace(FCKRegexLib.ProtectedEvents,_FCK_ProtectEvents_RestoreEvents);},ProtectTags:function(A){var B=FCKConfig.ProtectedTags;if (FCKBrowserInfo.IsIE) B+=B.length>0?'|ABBR|XML|EMBED|OBJECT':'ABBR|XML|EMBED|OBJECT';var C;if (B.length>0){C=new RegExp('<('+B+')(?!\w|:)','gi');A=A.replace(C,'<FCK:$1');C=new RegExp('<\/('+B+')>','gi');A=A.replace(C,'<\/FCK:$1>');};B='META';if (FCKBrowserInfo.IsIE) B+='|HR';C=new RegExp('<(('+B+')(?=\\s|>|/)[\\s\\S]*?)/?>','gi');A=A.replace(C,'<FCK:$1 />');return A;},SetData:function(A,B){this.EditingArea.Mode=FCK.EditMode;if (FCKBrowserInfo.IsIE&&FCK.EditorDocument){FCK.EditorDocument.detachEvent("onselectionchange",Doc_OnSelectionChange);};if (FCK.EditMode==0){this._ForceResetIsDirty=(B===true);A=FCKConfig.ProtectedSource.Protect(A);A=FCK.DataProcessor.ConvertToHtml(A);A=A.replace(FCKRegexLib.InvalidSelfCloseTags,'$1></$2>');A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);if (FCK.TempBaseTag.length>0&&!FCKRegexLib.HasBaseTag.test(A)) A=A.replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);var C='';if (!FCKConfig.FullPage) C+=_FCK_GetEditorAreaStyleTags();if (FCKBrowserInfo.IsIE) C+=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) C+=FCKTools.GetStyleHtml(FCK_ShowTableBordersCSS,true);C+=FCKTools.GetStyleHtml(FCK_InternalCSS,true);A=A.replace(FCKRegexLib.HeadCloser,C+'$&');this.EditingArea.OnLoad=_FCK_EditingArea_OnLoad;this.EditingArea.Start(A);}else{FCK.EditorWindow=null;FCK.EditorDocument=null;FCKDomTools.PaddingNode=null;this.EditingArea.OnLoad=null;this.EditingArea.Start(A);this.EditingArea.Textarea._FCKShowContextMenu=true;FCK.EnterKeyHandler=null;if (B) this.ResetIsDirty();FCK.KeystrokeHandler.AttachToElement(this.EditingArea.Textarea);this.EditingArea.Textarea.focus();FCK.Events.FireEvent('OnAfterSetHTML');};if (FCKBrowserInfo.IsGecko) window.onresize();},RedirectNamedCommands:{},ExecuteNamedCommand:function(A,B,C,D){if (!D) FCKUndo.SaveUndoStep();if (!C&&FCK.RedirectNamedCommands[A]!=null) FCK.ExecuteRedirectedNamedCommand(A,B);else{FCK.Focus();FCK.EditorDocument.execCommand(A,false,B);FCK.Events.FireEvent('OnSelectionChange');};if (!D) FCKUndo.SaveUndoStep();},GetNamedCommandState:function(A){try{if (FCKBrowserInfo.IsSafari&&FCK.EditorWindow&&A.IEquals('Paste')) return 0;if (!FCK.EditorDocument.queryCommandEnabled(A)) return -1;else{return FCK.EditorDocument.queryCommandState(A)?1:0;}}catch (e){return 0;}},GetNamedCommandValue:function(A){var B='';var C=FCK.GetNamedCommandState(A);if (C==-1) return null;try{B=this.EditorDocument.queryCommandValue(A);}catch(e) {};return B?B:'';},Paste:function(A){if (FCK.Status!=2||!FCK.Events.FireEvent('OnPaste')) return false;return A||FCK._ExecPaste();},PasteFromWord:function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');},Preview:function(){var A;if (FCKConfig.FullPage){if (FCK.TempBaseTag.length>0) A=FCK.TempBaseTag+FCK.GetXHTML();else A=FCK.GetXHTML();}else{A=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"><head>'+FCK.TempBaseTag+'<title>'+FCKLang.Preview+'</title>'+_FCK_GetEditorAreaStyleTags()+'</head><body'+FCKConfig.GetBodyAttributes()+'>'+FCK.GetXHTML()+'</body></html>';};var B=FCKConfig.ScreenWidth*0.8;var C=FCKConfig.ScreenHeight*0.7;var D=(FCKConfig.ScreenWidth-B)/2;var E='';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=A;E='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.opener._FCKHtmlToLoad );document.close() ;window.opener._FCKHtmlToLoad = null ;})() )';};var F=window.open(E,null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+B+',height='+C+',left='+D);if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){F.document.write(A);F.document.close();}},SwitchEditMode:function(A){var B=(FCK.EditMode==0);var C=FCK.IsDirty();var D;if (B){FCKCommands.GetCommand('ShowBlocks').SaveState();if (!A&&FCKBrowserInfo.IsIE) FCKUndo.SaveUndoStep();D=FCK.GetXHTML(FCKConfig.FormatSource);if (D==null) return false;}else D=this.EditingArea.Textarea.value;FCK.EditMode=B?1:0;FCK.SetData(D,!C);FCK.Focus();FCKTools.RunFunction(FCK.ToolbarSet.RefreshModeState,FCK.ToolbarSet);return true;},InsertElement:function(A){if (typeof A=='string') A=this.EditorDocument.createElement(A);var B=A.nodeName.toLowerCase();FCKSelection.Restore();var C=new FCKDomRange(this.EditorWindow);if (FCKListsLib.BlockElements[B]!=null){C.SplitBlock();C.InsertNode(A);var D=FCKDomTools.GetNextSourceElement(A,false,null,['hr','br','param','img','area','input'],true);if (!D&&FCKConfig.EnterMode!='br'){D=this.EditorDocument.body.appendChild(this.EditorDocument.createElement(FCKConfig.EnterMode));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(D);};if (FCKListsLib.EmptyElements[B]==null) C.MoveToElementEditStart(A);else if (D) C.MoveToElementEditStart(D);else C.MoveToPosition(A,4);if (FCKBrowserInfo.IsGecko){if (D) D.scrollIntoView(false);A.scrollIntoView(false);}}else{C.MoveToSelection();C.DeleteContents();C.InsertNode(A);C.SetStart(A,4);C.SetEnd(A,4);};C.Select();C.Release();this.Focus();return A;},_InsertBlockElement:function(A){},_IsFunctionKey:function(A){if (A>=16&&A<=20) return true;if (A==27||(A>=33&&A<=40)) return true;if (A==45) return true;return false;},_KeyDownListener:function(A){if (!A) A=FCK.EditorWindow.event;if (FCK.EditorWindow){if (!FCK._IsFunctionKey(A.keyCode)&&!(A.ctrlKey||A.metaKey)&&!(A.keyCode==46)) FCK._KeyDownUndo();};return true;},_KeyDownUndo:function(){if (!FCKUndo.Typing){FCKUndo.SaveUndoStep();FCKUndo.Typing=true;FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.TypesCount++;FCKUndo.Changed=1;if (FCKUndo.TypesCount>FCKUndo.MaxTypes){FCKUndo.TypesCount=0;FCKUndo.SaveUndoStep();}},_TabKeyHandler:function(A){if (!A) A=window.event;var B=A.keyCode;if (B==9&&FCK.EditMode!=0){if (FCKBrowserInfo.IsIE){var C=document.selection.createRange();if (C.parentElement()!=FCK.EditingArea.Textarea) return true;C.text='\t';C.select();}else{var a=[];var D=FCK.EditingArea.Textarea;var E=D.selectionStart;var F=D.selectionEnd;a.push(D.value.substr(0,E));a.push('\t');a.push(D.value.substr(F));D.value=a.join('');D.setSelectionRange(E+1,E+1);};if (A.preventDefault) return A.preventDefault();return A.returnValue=false;};return true;}};FCK.Events=new FCKEvents(FCK);FCK.GetHTML=FCK.GetXHTML=FCK.GetData;FCK.SetHTML=FCK.SetData;FCK.InsertElementAndGetIt=FCK.CreateElement=FCK.InsertElement;function _FCK_ProtectEvents_ReplaceTags(A){return A.replace(FCKRegexLib.EventAttributes,_FCK_ProtectEvents_ReplaceEvents);};function _FCK_ProtectEvents_ReplaceEvents(A,B){return ' '+B+'_fckprotectedatt="'+encodeURIComponent(A)+'"';};function _FCK_ProtectEvents_RestoreEvents(A,B){return decodeURIComponent(B);};function _FCK_MouseEventsListener(A){if (!A) A=window.event;if (A.type=='mousedown') FCK.MouseDownFlag=true;else if (A.type=='mouseup') FCK.MouseDownFlag=false;else if (A.type=='mousemove') FCK.Events.FireEvent('OnMouseMove',A);};function _FCK_PaddingNodeListener(){if (FCKConfig.EnterMode.IEquals('br')) return;FCKDomTools.EnforcePaddingNode(FCK.EditorDocument,FCKConfig.EnterMode);if (!FCKBrowserInfo.IsIE&&FCKDomTools.PaddingNode){var A=FCKSelection.GetSelection();if (A&&A.rangeCount==1){var B=A.getRangeAt(0);if (B.collapsed&&B.startContainer==FCK.EditorDocument.body&&B.startOffset==0){B.selectNodeContents(FCKDomTools.PaddingNode);B.collapse(true);A.removeAllRanges();A.addRange(B);}}}else if (FCKDomTools.PaddingNode){var C=FCKSelection.GetParentElement();var D=FCKDomTools.PaddingNode;if (C&&C.nodeName.IEquals('body')){if (FCK.EditorDocument.body.childNodes.length==1&&FCK.EditorDocument.body.firstChild==D){var B=FCK.EditorDocument.body.createTextRange();var F=false;if (!D.childNodes.firstChild){D.appendChild(FCKTools.GetElementDocument(D).createTextNode('\ufeff'));F=true;};B.moveToElementText(D);B.select();if (F) B.pasteHTML('');}}}};function _FCK_EditingArea_OnLoad(){FCK.EditorWindow=FCK.EditingArea.Window;FCK.EditorDocument=FCK.EditingArea.Document;FCK.InitializeBehaviors();FCK.MouseDownFlag=false;FCKTools.AddEventListener(FCK.EditorDocument,'mousemove',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mousedown',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mouseup',_FCK_MouseEventsListener);if (FCKBrowserInfo.IsSafari){var A=function(evt){if (!(evt.ctrlKey||evt.metaKey)) return;if (FCK.EditMode!=0) return;switch (evt.keyCode){case 89:FCKUndo.Redo();break;case 90:FCKUndo.Undo();break;}};FCKTools.AddEventListener(FCK.EditorDocument,'keyup',A);};FCK.EnterKeyHandler=new FCKEnterKey(FCK.EditorWindow,FCKConfig.EnterMode,FCKConfig.ShiftEnterMode,FCKConfig.TabSpaces);FCK.KeystrokeHandler.AttachToElement(FCK.EditorDocument);if (FCK._ForceResetIsDirty) FCK.ResetIsDirty();if (FCKBrowserInfo.IsIE&&FCK.HasFocus) FCK.EditorDocument.body.setActive();FCK.OnAfterSetHTML();FCKCommands.GetCommand('ShowBlocks').RestoreState();if (FCK.Status!=0) return;FCK.SetStatus(1);};function _FCK_GetEditorAreaStyleTags(){return FCKTools.GetStyleHtml(FCKConfig.EditorAreaCSS)+FCKTools.GetStyleHtml(FCKConfig.EditorAreaStyles);};function _FCK_KeystrokeHandler_OnKeystroke(A,B){if (FCK.Status!=2) return false;if (FCK.EditMode==0){switch (B){case 'Paste':return!FCK.Paste();case 'Cut':FCKUndo.SaveUndoStep();return false;}}else{if (B.Equals('Paste','Undo','Redo','SelectAll','Cut')) return false;};var C=FCK.Commands.GetCommand(B);if (C.GetState()==-1) return false;return (C.Execute.apply(C,FCKTools.ArgumentsToArray(arguments,2))!==false);};(function(){var A=window.parent.document;var B=A.getElementById(FCK.Name);var i=0;while (B||i==0){if (B&&B.tagName.toLowerCase().Equals('input','textarea')){FCK.LinkedField=B;break;};B=A.getElementsByName(FCK.Name)[i++];}})();var FCKTempBin={Elements:[],AddElement:function(A){var B=this.Elements.length;this.Elements[B]=A;return B;},RemoveElement:function(A){var e=this.Elements[A];this.Elements[A]=null;return e;},Reset:function(){var i=0;while (i<this.Elements.length) this.Elements[i++]=null;this.Elements.length=0;}};var FCKFocusManager=FCK.FocusManager={IsLocked:false,AddWindow:function(A,B){var C;if (FCKBrowserInfo.IsIE) C=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else if (FCKBrowserInfo.IsSafari) C=A;else C=A.document;FCKTools.AddEventListener(C,'blur',FCKFocusManager_Win_OnBlur);FCKTools.AddEventListener(C,'focus',B?FCKFocusManager_Win_OnFocus_Area:FCKFocusManager_Win_OnFocus);},RemoveWindow:function(A){if (FCKBrowserInfo.IsIE) oTarget=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else oTarget=A.document;FCKTools.RemoveEventListener(oTarget,'blur',FCKFocusManager_Win_OnBlur);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus_Area);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus);},Lock:function(){this.IsLocked=true;},Unlock:function(){if (this._HasPendingBlur) FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);this.IsLocked=false;},_ResetTimer:function(){this._HasPendingBlur=false;if (this._Timer){window.clearTimeout(this._Timer);delete this._Timer;}}};function FCKFocusManager_Win_OnBlur(){if (typeof(FCK)!='undefined'&&FCK.HasFocus){FCKFocusManager._ResetTimer();FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);}};function FCKFocusManager_FireOnBlur(){if (FCKFocusManager.IsLocked) FCKFocusManager._HasPendingBlur=true;else{FCK.HasFocus=false;FCK.Events.FireEvent("OnBlur");}};function FCKFocusManager_Win_OnFocus_Area(){if (FCKFocusManager._IsFocusing) return;FCKFocusManager._IsFocusing=true;FCK.Focus();FCKFocusManager_Win_OnFocus();FCKTools.RunFunction(function(){delete FCKFocusManager._IsFocusing;});};function FCKFocusManager_Win_OnFocus(){FCKFocusManager._ResetTimer();if (!FCK.HasFocus&&!FCKFocusManager.IsLocked){FCK.HasFocus=true;FCK.Events.FireEvent("OnFocus");}};
+FCK.Description="FCKeditor for Gecko Browsers";FCK.InitializeBehaviors=function(){if (window.onresize) window.onresize();FCKFocusManager.AddWindow(this.EditorWindow);this.ExecOnSelectionChange=function(){FCK.Events.FireEvent("OnSelectionChange");};this._ExecDrop=function(evt){if (FCK.MouseDownFlag){FCK.MouseDownFlag=false;return;};if (FCKConfig.ForcePasteAsPlainText){if (evt.dataTransfer){var A=evt.dataTransfer.getData('Text');A=FCKTools.HTMLEncode(A);A=FCKTools.ProcessLineBreaks(window,FCKConfig,A);FCK.InsertHtml(A);}else if (FCKConfig.ShowDropDialog) FCK.PasteAsPlainText();evt.preventDefault();evt.stopPropagation();}};this._ExecCheckCaret=function(evt){if (FCK.EditMode!=0) return;if (evt.type=='keypress'){var B=evt.keyCode;if (B<33||B>40) return;};var C=function(H){if (H.nodeType!=1) return false;var D=H.tagName.toLowerCase();return (FCKListsLib.BlockElements[D]||FCKListsLib.EmptyElements[D]);};var E=function(){var F=FCKSelection.GetSelection();var G=F.getRangeAt(0);if (!G||!G.collapsed) return;var H=G.endContainer;if (H.nodeType!=3) return;if (H.nodeValue.length!=G.endOffset) return;var I=H.parentNode.tagName.toLowerCase();if (!(I=='a'||String(H.parentNode.contentEditable)=='false'||(!(FCKListsLib.BlockElements[I]||FCKListsLib.NonEmptyBlockElements[I])&&B==35))) return;var J=FCKTools.GetNextTextNode(H,H.parentNode,C);if (J) return;G=FCK.EditorDocument.createRange();J=FCKTools.GetNextTextNode(H,H.parentNode.parentNode,C);if (J){if (FCKBrowserInfo.IsOpera&&B==37) return;G.setStart(J,0);G.setEnd(J,0);}else{while (H.parentNode&&H.parentNode!=FCK.EditorDocument.body&&H.parentNode!=FCK.EditorDocument.documentElement&&H==H.parentNode.lastChild&&(!FCKListsLib.BlockElements[H.parentNode.tagName.toLowerCase()]&&!FCKListsLib.NonEmptyBlockElements[H.parentNode.tagName.toLowerCase()])) H=H.parentNode;if (FCKListsLib.BlockElements[I]||FCKListsLib.EmptyElements[I]||H==FCK.EditorDocument.body){G.setStart(H,H.childNodes.length);G.setEnd(H,H.childNodes.length);}else{var K=H.nextSibling;while (K){if (K.nodeType!=1){K=K.nextSibling;continue;};var L=K.tagName.toLowerCase();if (FCKListsLib.BlockElements[L]||FCKListsLib.EmptyElements[L]||FCKListsLib.NonEmptyBlockElements[L]) break;K=K.nextSibling;};var M=FCK.EditorDocument.createTextNode('');if (K) H.parentNode.insertBefore(M,K);else H.parentNode.appendChild(M);G.setStart(M,0);G.setEnd(M,0);}};F.removeAllRanges();F.addRange(G);FCK.Events.FireEvent("OnSelectionChange");};setTimeout(E,1);};this.ExecOnSelectionChangeTimer=function(){if (FCK.LastOnChangeTimer) window.clearTimeout(FCK.LastOnChangeTimer);FCK.LastOnChangeTimer=window.setTimeout(FCK.ExecOnSelectionChange,100);};this.EditorDocument.addEventListener('mouseup',this.ExecOnSelectionChange,false);this.EditorDocument.addEventListener('keyup',this.ExecOnSelectionChangeTimer,false);this._DblClickListener=function(e){FCK.OnDoubleClick(e.target);e.stopPropagation();};this.EditorDocument.addEventListener('dblclick',this._DblClickListener,true);this.EditorDocument.addEventListener('keydown',this._KeyDownListener,false);if (FCKBrowserInfo.IsGecko){this.EditorWindow.addEventListener('dragdrop',this._ExecDrop,true);}else if (FCKBrowserInfo.IsSafari){var N=function(evt){ if (!FCK.MouseDownFlag) evt.returnValue=false;};this.EditorDocument.addEventListener('dragenter',N,true);this.EditorDocument.addEventListener('dragover',N,true);this.EditorDocument.addEventListener('drop',this._ExecDrop,true);this.EditorDocument.addEventListener('mousedown',function(ev){var O=ev.srcElement;if (O.nodeName.IEquals('IMG','HR','INPUT','TEXTAREA','SELECT')){FCKSelection.SelectNode(O);}},true);this.EditorDocument.addEventListener('mouseup',function(ev){if (ev.srcElement.nodeName.IEquals('INPUT','TEXTAREA','SELECT')) ev.preventDefault()},true);this.EditorDocument.addEventListener('click',function(ev){if (ev.srcElement.nodeName.IEquals('INPUT','TEXTAREA','SELECT')) ev.preventDefault()},true);};if (FCKBrowserInfo.IsGecko||FCKBrowserInfo.IsOpera){this.EditorDocument.addEventListener('keypress',this._ExecCheckCaret,false);this.EditorDocument.addEventListener('click',this._ExecCheckCaret,false);};FCK.ContextMenu._InnerContextMenu.SetMouseClickWindow(FCK.EditorWindow);FCK.ContextMenu._InnerContextMenu.AttachToElement(FCK.EditorDocument);};FCK.MakeEditable=function(){this.EditingArea.MakeEditable();};function Document_OnContextMenu(e){if (!e.target._FCKShowContextMenu) e.preventDefault();};document.oncontextmenu=Document_OnContextMenu;FCK._BaseGetNamedCommandState=FCK.GetNamedCommandState;FCK.GetNamedCommandState=function(A){switch (A){case 'Unlink':return FCKSelection.HasAncestorNode('A')?0:-1;default:return FCK._BaseGetNamedCommandState(A);}};FCK.RedirectNamedCommands={Print:true,Paste:true};FCK.ExecuteRedirectedNamedCommand=function(A,B){switch (A){case 'Print':FCK.EditorWindow.print();break;case 'Paste':try{if (FCKBrowserInfo.IsSafari) throw '';if (FCK.Paste()) FCK.ExecuteNamedCommand('Paste',null,true);}catch (e)	{ FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.Paste,'dialog/fck_paste.html',400,330,'Security');};break;default:FCK.ExecuteNamedCommand(A,B);}};FCK._ExecPaste=function(){FCKUndo.SaveUndoStep();if (FCKConfig.ForcePasteAsPlainText){FCK.PasteAsPlainText();return false;};return true;};FCK.InsertHtml=function(A){A=FCKConfig.ProtectedSource.Protect(A);A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);FCKUndo.SaveUndoStep();this.EditorDocument.execCommand('inserthtml',false,A);this.Focus();FCKDocumentProcessor.Process(FCK.EditorDocument);this.Events.FireEvent("OnSelectionChange");};FCK.PasteAsPlainText=function(){FCKTools.RunFunction(FCKDialog.OpenDialog,FCKDialog,['FCKDialog_Paste',FCKLang.PasteAsText,'dialog/fck_paste.html',400,330,'PlainText']);};FCK.GetClipboardHTML=function(){return '';};FCK.CreateLink=function(A,B){var C=[];FCK.ExecuteNamedCommand('Unlink',null,false,!!B);if (A.length>0){var D='javascript:void(0);/*'+(new Date().getTime())+'*/';FCK.ExecuteNamedCommand('CreateLink',D,false,!!B);var E=this.EditorDocument.evaluate("//a[@href='"+D+"']",this.EditorDocument.body,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);for (var i=0;i<E.snapshotLength;i++){var F=E.snapshotItem(i);F.href=A;if (D==F.innerHTML) F.innerHTML='';C.push(F);}};return C;};FCK._FillEmptyBlock=function(A){if (!A||A.nodeType!=1) return;var B=A.tagName.toLowerCase();if (B!='p'&&B!='div') return;if (A.firstChild) return;FCKTools.AppendBogusBr(A);};FCK._ExecCheckEmptyBlock=function(){FCK._FillEmptyBlock(FCK.EditorDocument.body.firstChild);var A=FCKSelection.GetSelection();if (!A||A.rangeCount<1) return;var B=A.getRangeAt(0);FCK._FillEmptyBlock(B.startContainer);};
+var FCKConfig=FCK.Config={};if (document.location.protocol=='file:'){FCKConfig.BasePath=decodeURIComponent(document.location.pathname.substr(1));FCKConfig.BasePath=FCKConfig.BasePath.replace(/\\/gi, '/');var sFullProtocol=document.location.href.match(/^(file\:\/{2,3})/)[1];if (FCKBrowserInfo.IsOpera) sFullProtocol+='localhost/';FCKConfig.BasePath=sFullProtocol+FCKConfig.BasePath.substring(0,FCKConfig.BasePath.lastIndexOf('/')+1);FCKConfig.FullBasePath=FCKConfig.BasePath;}else{FCKConfig.BasePath=document.location.pathname.substring(0,document.location.pathname.lastIndexOf('/')+1);FCKConfig.FullBasePath=document.location.protocol+'//'+document.location.host+FCKConfig.BasePath;};FCKConfig.EditorPath=FCKConfig.BasePath.replace(/editor\/$/,'');try{FCKConfig.ScreenWidth=screen.width;FCKConfig.ScreenHeight=screen.height;}catch (e){FCKConfig.ScreenWidth=800;FCKConfig.ScreenHeight=600;};FCKConfig.ProcessHiddenField=function(){this.PageConfig={};var A=window.parent.document.getElementById(FCK.Name+'___Config');if (!A) return;var B=A.value.split('&');for (var i=0;i<B.length;i++){if (B[i].length==0) continue;var C=B[i].split('=');var D=decodeURIComponent(C[0]);var E=decodeURIComponent(C[1]);if (D=='CustomConfigurationsPath') FCKConfig[D]=E;else if (E.toLowerCase()=="true") this.PageConfig[D]=true;else if (E.toLowerCase()=="false") this.PageConfig[D]=false;else if (E.length>0&&!isNaN(E)) this.PageConfig[D]=parseInt(E,10);else this.PageConfig[D]=E;}};function FCKConfig_LoadPageConfig(){var A=FCKConfig.PageConfig;for (var B in A) FCKConfig[B]=A[B];};function FCKConfig_PreProcess(){var A=FCKConfig;if (A.AllowQueryStringDebug){try{if ((/fckdebug=true/i).test(window.top.location.search)) A.Debug=true;}catch (e) {/*Ignore it. Much probably we are inside a FRAME where the "top" is in another domain (security error).*/}};if (!A.PluginsPath.EndsWith('/')) A.PluginsPath+='/';var B=A.ToolbarComboPreviewCSS;if (!B||B.length==0) A.ToolbarComboPreviewCSS=A.EditorAreaCSS;A.RemoveAttributesArray=(A.RemoveAttributes||'').split(',');if (!FCKConfig.SkinEditorCSS||FCKConfig.SkinEditorCSS.length==0) FCKConfig.SkinEditorCSS=FCKConfig.SkinPath+'fck_editor.css';if (!FCKConfig.SkinDialogCSS||FCKConfig.SkinDialogCSS.length==0) FCKConfig.SkinDialogCSS=FCKConfig.SkinPath+'fck_dialog.css';};FCKConfig.ToolbarSets={};FCKConfig.Plugins={};FCKConfig.Plugins.Items=[];FCKConfig.Plugins.Add=function(A,B,C){FCKConfig.Plugins.Items.AddItem([A,B,C]);};FCKConfig.ProtectedSource={};FCKConfig.ProtectedSource._CodeTag=(new Date()).valueOf();FCKConfig.ProtectedSource.RegexEntries=[/<!--[\s\S]*?-->/g,/<script[\s\S]*?<\/script>/gi,/<noscript[\s\S]*?<\/noscript>/gi];FCKConfig.ProtectedSource.Add=function(A){this.RegexEntries.AddItem(A);};FCKConfig.ProtectedSource.Protect=function(A){var B=this._CodeTag;function _Replace(protectedSource){var C=FCKTempBin.AddElement(protectedSource);return '<!--{'+B+C+'}-->';};for (var i=0;i<this.RegexEntries.length;i++){A=A.replace(this.RegexEntries[i],_Replace);};return A;};FCKConfig.ProtectedSource.Revert=function(A,B){function _Replace(m,opener,index){var C=B?FCKTempBin.RemoveElement(index):FCKTempBin.Elements[index];return FCKConfig.ProtectedSource.Revert(C,B);};var D=new RegExp("(<|&lt;)!--\\{"+this._CodeTag+"(\\d+)\\}--(>|&gt;)","g");return A.replace(D,_Replace);};FCKConfig.GetBodyAttributes=function(){var A='';if (this.BodyId&&this.BodyId.length>0) A+=' id="'+this.BodyId+'"';if (this.BodyClass&&this.BodyClass.length>0) A+=' class="'+this.BodyClass+'"';return A;};FCKConfig.ApplyBodyAttributes=function(A){if (this.BodyId&&this.BodyId.length>0) A.id=FCKConfig.BodyId;if (this.BodyClass&&this.BodyClass.length>0) A.className+=' '+FCKConfig.BodyClass;};
+var FCKDebug={};FCKDebug._GetWindow=function(){if (!this.DebugWindow||this.DebugWindow.closed) this.DebugWindow=window.open(FCKConfig.BasePath+'fckdebug.html','FCKeditorDebug','menubar=no,scrollbars=yes,resizable=yes,location=no,toolbar=no,width=600,height=500',true);return this.DebugWindow;};FCKDebug.Output=function(A,B,C){if (!FCKConfig.Debug) return;try{this._GetWindow().Output(A,B);}catch (e) {}};FCKDebug.OutputObject=function(A,B){if (!FCKConfig.Debug) return;try{this._GetWindow().OutputObject(A,B);}catch (e) {}};
+var FCKDomTools={MoveChildren:function(A,B,C){if (A==B) return;var D;if (C){while ((D=A.lastChild)) B.insertBefore(A.removeChild(D),B.firstChild);}else{while ((D=A.firstChild)) B.appendChild(A.removeChild(D));}},MoveNode:function(A,B,C){if (C) B.insertBefore(FCKDomTools.RemoveNode(A),B.firstChild);else B.appendChild(FCKDomTools.RemoveNode(A));},TrimNode:function(A){this.LTrimNode(A);this.RTrimNode(A);},LTrimNode:function(A){var B;while ((B=A.firstChild)){if (B.nodeType==3){var C=B.nodeValue.LTrim();var D=B.nodeValue.length;if (C.length==0){A.removeChild(B);continue;}else if (C.length<D){B.splitText(D-C.length);A.removeChild(A.firstChild);}};break;}},RTrimNode:function(A){var B;while ((B=A.lastChild)){if (B.nodeType==3){var C=B.nodeValue.RTrim();var D=B.nodeValue.length;if (C.length==0){B.parentNode.removeChild(B);continue;}else if (C.length<D){B.splitText(C.length);A.lastChild.parentNode.removeChild(A.lastChild);}};break;};if (!FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsOpera){B=A.lastChild;if (B&&B.nodeType==1&&B.nodeName.toLowerCase()=='br'){B.parentNode.removeChild(B);}}},RemoveNode:function(A,B){if (B){var C;while ((C=A.firstChild)) A.parentNode.insertBefore(A.removeChild(C),A);};return A.parentNode.removeChild(A);},GetFirstChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.firstChild;while(C){if (C.nodeType==1&&C.tagName.Equals.apply(C.tagName,B)) return C;C=C.nextSibling;};return null;},GetLastChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.lastChild;while(C){if (C.nodeType==1&&(!B||C.tagName.Equals(B))) return C;C=C.previousSibling;};return null;},GetPreviousSourceElement:function(A,B,C,D){if (!A) return null;if (C&&A.nodeType==1&&A.nodeName.IEquals(C)) return null;if (A.previousSibling) A=A.previousSibling;else return this.GetPreviousSourceElement(A.parentNode,B,C,D);while (A){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (!D||!A.nodeName.IEquals(D)) return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;if (A.lastChild) A=A.lastChild;else return this.GetPreviousSourceElement(A,B,C,D);};return null;},GetNextSourceElement:function(A,B,C,D,E){while((A=this.GetNextSourceNode(A,E))){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (D&&A.nodeName.IEquals(D)) return this.GetNextSourceElement(A,B,C,D);return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;};return null;},GetNextSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.firstChild) E=A.firstChild;else{if (D&&A==D) return null;E=A.nextSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetNextSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetNextSourceNode(E,false,C,D);return E;},GetPreviousSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.lastChild) E=A.lastChild;else{if (D&&A==D) return null;E=A.previousSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetPreviousSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetPreviousSourceNode(E,false,C,D);return E;},InsertAfterNode:function(A,B){return A.parentNode.insertBefore(B,A.nextSibling);},GetParents:function(A){var B=[];while (A){B.unshift(A);A=A.parentNode;};return B;},GetCommonParents:function(A,B){var C=this.GetParents(A);var D=this.GetParents(B);var E=[];for (var i=0;i<C.length;i++){if (C[i]==D[i]) E.push(C[i]);};return E;},GetCommonParentNode:function(A,B,C){var D={};if (!C.pop) C=[C];while (C.length>0) D[C.pop().toLowerCase()]=1;var E=this.GetCommonParents(A,B);var F=null;while ((F=E.pop())){if (D[F.nodeName.toLowerCase()]) return F;};return null;},GetIndexOf:function(A){var B=A.parentNode?A.parentNode.firstChild:null;var C=-1;while (B){C++;if (B==A) return C;B=B.nextSibling;};return-1;},PaddingNode:null,EnforcePaddingNode:function(A,B){try{if (!A||!A.body) return;}catch (e){return;};this.CheckAndRemovePaddingNode(A,B,true);try{if (A.body.lastChild&&(A.body.lastChild.nodeType!=1||A.body.lastChild.tagName.toLowerCase()==B.toLowerCase())) return;}catch (e){return;};var C=A.createElement(B);if (FCKBrowserInfo.IsGecko&&FCKListsLib.NonEmptyBlockElements[B]) FCKTools.AppendBogusBr(C);this.PaddingNode=C;if (A.body.childNodes.length==1&&A.body.firstChild.nodeType==1&&A.body.firstChild.tagName.toLowerCase()=='br'&&(A.body.firstChild.getAttribute('_moz_dirty')!=null||A.body.firstChild.getAttribute('type')=='_moz')) A.body.replaceChild(C,A.body.firstChild);else A.body.appendChild(C);},CheckAndRemovePaddingNode:function(A,B,C){var D=this.PaddingNode;if (!D) return;try{if (D.parentNode!=A.body||D.tagName.toLowerCase()!=B||(D.childNodes.length>1)||(D.firstChild&&D.firstChild.nodeValue!='\xa0'&&String(D.firstChild.tagName).toLowerCase()!='br')){this.PaddingNode=null;return;}}catch (e){this.PaddingNode=null;return;};if (!C){if (D.parentNode.childNodes.length>1) D.parentNode.removeChild(D);this.PaddingNode=null;}},HasAttribute:function(A,B){if (A.hasAttribute) return A.hasAttribute(B);else{var C=A.attributes[B];return (C!=undefined&&C.specified);}},HasAttributes:function(A){var B=A.attributes;for (var i=0;i<B.length;i++){if (FCKBrowserInfo.IsIE&&B[i].nodeName=='class'){if (A.className.length>0) return true;}else if (B[i].specified) return true;};return false;},RemoveAttribute:function(A,B){if (FCKBrowserInfo.IsIE&&B.toLowerCase()=='class') B='className';return A.removeAttribute(B,0);},RemoveAttributes:function (A,B){for (var i=0;i<B.length;i++) this.RemoveAttribute(A,B[i]);},GetAttributeValue:function(A,B){var C=B;if (typeof B=='string') B=A.attributes[B];else C=B.nodeName;if (B&&B.specified){if (C=='style') return A.style.cssText;else if (C=='class'||C.indexOf('on')==0) return B.nodeValue;else{return A.getAttribute(C,2);}};return null;},Contains:function(A,B){if (A.contains&&B.nodeType==1) return A.contains(B);while ((B=B.parentNode)){if (B==A) return true;};return false;},BreakParent:function(A,B,C){var D=C||new FCKDomRange(FCKTools.GetElementWindow(A));D.SetStart(A,4);D.SetEnd(B,4);var E=D.ExtractContents();D.InsertNode(A.parentNode.removeChild(A));E.InsertAfterNode(A);D.Release(!!C);},GetNodeAddress:function(A,B){var C=[];while (A&&A!=FCKTools.GetElementDocument(A).documentElement){var D=A.parentNode;var E=-1;for(var i=0;i<D.childNodes.length;i++){var F=D.childNodes[i];if (B===true&&F.nodeType==3&&F.previousSibling&&F.previousSibling.nodeType==3) continue;E++;if (D.childNodes[i]==A) break;};C.unshift(E);A=A.parentNode;};return C;},GetNodeFromAddress:function(A,B,C){var D=A.documentElement;for (var i=0;i<B.length;i++){var E=B[i];if (!C){D=D.childNodes[E];continue;};var F=-1;for (var j=0;j<D.childNodes.length;j++){var G=D.childNodes[j];if (C===true&&G.nodeType==3&&G.previousSibling&&G.previousSibling.nodeType==3) continue;F++;if (F==E){D=G;break;}}};return D;},CloneElement:function(A){A=A.cloneNode(false);A.removeAttribute('id',false);return A;},ClearElementJSProperty:function(A,B){if (FCKBrowserInfo.IsIE) A.removeAttribute(B);else delete A[B];},SetElementMarker:function (A,B,C,D){var E=String(parseInt(Math.random()*0xfffffff,10));B._FCKMarkerId=E;B[C]=D;if (!A[E]) A[E]={ 'element':B,'markers':{} };A[E]['markers'][C]=D;},ClearElementMarkers:function(A,B,C){var D=B._FCKMarkerId;if (!D) return;this.ClearElementJSProperty(B,'_FCKMarkerId');for (var j in A[D]['markers']) this.ClearElementJSProperty(B,j);if (C) delete A[D];},ClearAllMarkers:function(A){for (var i in A) this.ClearElementMarkers(A,A[i]['element'],true);},ListToArray:function(A,B,C,D,E){if (!A.nodeName.IEquals(['ul','ol'])) return [];if (!D) D=0;if (!C) C=[];for (var i=0;i<A.childNodes.length;i++){var F=A.childNodes[i];if (!F.nodeName.IEquals('li')) continue;var G={ 'parent':A,'indent':D,'contents':[] };if (!E){G.grandparent=A.parentNode;if (G.grandparent&&G.grandparent.nodeName.IEquals('li')) G.grandparent=G.grandparent.parentNode;}else G.grandparent=E;if (B) this.SetElementMarker(B,F,'_FCK_ListArray_Index',C.length);C.push(G);for (var j=0;j<F.childNodes.length;j++){var H=F.childNodes[j];if (H.nodeName.IEquals(['ul','ol'])) this.ListToArray(H,B,C,D+1,G.grandparent);else G.contents.push(H);}};return C;},ArrayToList:function(A,B,C){if (C==undefined) C=0;if (!A||A.length<C+1) return null;var D=FCKTools.GetElementDocument(A[C].parent);var E=D.createDocumentFragment();var F=null;var G=C;var H=Math.max(A[C].indent,0);var I=null;while (true){var J=A[G];if (J.indent==H){if (!F||A[G].parent.nodeName!=F.nodeName){F=A[G].parent.cloneNode(false);E.appendChild(F);};I=D.createElement('li');F.appendChild(I);for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));G++;}else if (J.indent==Math.max(H,0)+1){var K=this.ArrayToList(A,null,G);I.appendChild(K.listNode);G=K.nextIndex;}else if (J.indent==-1&&C==0&&J.grandparent){var I;if (J.grandparent.nodeName.IEquals(['ul','ol'])) I=D.createElement('li');else{if (FCKConfig.EnterMode.IEquals(['div','p'])&&!J.grandparent.nodeName.IEquals('td')) I=D.createElement(FCKConfig.EnterMode);else I=D.createDocumentFragment();};for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));if (I.nodeType==11){if (I.lastChild&&I.lastChild.getAttribute&&I.lastChild.getAttribute('type')=='_moz') I.removeChild(I.lastChild);I.appendChild(D.createElement('br'));};if (I.nodeName.IEquals(FCKConfig.EnterMode)&&I.firstChild){this.TrimNode(I);if (FCKListsLib.BlockBoundaries[I.firstChild.nodeName.toLowerCase()]){var M=D.createDocumentFragment();while (I.firstChild) M.appendChild(I.removeChild(I.firstChild));I=M;}};if (FCKBrowserInfo.IsGeckoLike&&I.nodeName.IEquals(['div','p'])) FCKTools.AppendBogusBr(I);E.appendChild(I);F=null;G++;}else return null;if (A.length<=G||Math.max(A[G].indent,0)<H){break;}};if (B){var N=E.firstChild;while (N){if (N.nodeType==1) this.ClearElementMarkers(B,N);N=this.GetNextSourceNode(N);}};return { 'listNode':E,'nextIndex':G };},GetNextSibling:function(A,B){A=A.nextSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.nextSibling;return A;},GetPreviousSibling:function(A,B){A=A.previousSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.previousSibling;return A;},CheckIsEmptyElement:function(A,B){var C=A.firstChild;var D;while (C){if (C.nodeType==1){if (D||!FCKListsLib.InlineNonEmptyElements[C.nodeName.toLowerCase()]) return false;if (!B||B(C)===true) D=C;}else if (C.nodeType==3&&C.nodeValue.length>0) return false;C=C.nextSibling;};return D?this.CheckIsEmptyElement(D,B):true;},SetElementStyles:function(A,B){var C=A.style;for (var D in B) C[D]=B[D];},SetOpacity:function(A,B){if (FCKBrowserInfo.IsIE){B=Math.round(B*100);A.style.filter=(B>100?'':'progid:DXImageTransform.Microsoft.Alpha(opacity='+B+')');}else A.style.opacity=B;},GetCurrentElementStyle:function(A,B){if (FCKBrowserInfo.IsIE) return A.currentStyle[B];else return A.ownerDocument.defaultView.getComputedStyle(A,'').getPropertyValue(B);},GetPositionedAncestor:function(A){var B=A;while (B!=FCKTools.GetElementDocument(B).documentElement){if (this.GetCurrentElementStyle(B,'position')!='static') return B;if (B==FCKTools.GetElementDocument(B).documentElement&&currentWindow!=w) B=currentWindow.frameElement;else B=B.parentNode;};return null;},ScrollIntoView:function(A,B){var C=FCKTools.GetElementWindow(A);var D=FCKTools.GetViewPaneSize(C).Height;var E=D*-1;if (B===false){E+=A.offsetHeight;E+=parseInt(this.GetCurrentElementStyle(A,'marginBottom')||0,10);};E+=A.offsetTop;while ((A=A.offsetParent)) E+=A.offsetTop||0;var F=FCKTools.GetScrollPosition(C).Y;if (E>0&&E>F) C.scrollTo(0,E);},CheckIsEditable:function(A){var B=A.nodeName.toLowerCase();var C=FCK.DTD[B]||FCK.DTD.span;return (C['#']&&!FCKListsLib.NonEditableElements[B]);}};
+var FCKTools={};FCKTools.CreateBogusBR=function(A){var B=A.createElement('br');B.setAttribute('type','_moz');return B;};FCKTools.FixCssUrls=function(A,B){if (!A||A.length==0) return B;return B.replace(/url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g,function(match,opener,path,closer){if (/^\/|^\w?:/.test(path)) return match;else return 'url('+opener+A+path+closer+')';});};FCKTools._GetUrlFixedCss=function(A,B){var C=A.match(/^([^|]+)\|([\s\S]*)/);if (C) return FCKTools.FixCssUrls(C[1],C[2]);else return A;};FCKTools.AppendStyleSheet=function(A,B){if (!B) return [];if (typeof(B)=='string'){if (/[\\\/\.]\w*$/.test(B)){return this.AppendStyleSheet(A,B.split(','));}else return [this.AppendStyleString(A,FCKTools._GetUrlFixedCss(B))];}else{var C=[];for (var i=0;i<B.length;i++) C.push(this._AppendStyleSheet(A,B[i]));return C;}};FCKTools.GetStyleHtml=(function(){var A=function(styleDef,markTemp){if (styleDef.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<style type="text/css"'+B+'>'+styleDef+'</style>';};var C=function(cssFileUrl,markTemp){if (cssFileUrl.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<link href="'+cssFileUrl+'" type="text/css" rel="stylesheet" '+B+'/>';};return function(cssFileOrArrayOrDef,markTemp){if (!cssFileOrArrayOrDef) return '';if (typeof(cssFileOrArrayOrDef)=='string'){if (/[\\\/\.]\w*$/.test(cssFileOrArrayOrDef)){return this.GetStyleHtml(cssFileOrArrayOrDef.split(','),markTemp);}else return A(this._GetUrlFixedCss(cssFileOrArrayOrDef),markTemp);}else{var E='';for (var i=0;i<cssFileOrArrayOrDef.length;i++) E+=C(cssFileOrArrayOrDef[i],markTemp);return E;}}})();FCKTools.GetElementDocument=function (A){return A.ownerDocument||A.document;};FCKTools.GetElementWindow=function(A){return this.GetDocumentWindow(this.GetElementDocument(A));};FCKTools.GetDocumentWindow=function(A){if (FCKBrowserInfo.IsSafari&&!A.parentWindow) this.FixDocumentParentWindow(window.top);return A.parentWindow||A.defaultView;};FCKTools.FixDocumentParentWindow=function(A){if (A.document) A.document.parentWindow=A;for (var i=0;i<A.frames.length;i++) FCKTools.FixDocumentParentWindow(A.frames[i]);};FCKTools.HTMLEncode=function(A){if (!A) return '';A=A.replace(/&/g,'&amp;');A=A.replace(/</g,'&lt;');A=A.replace(/>/g,'&gt;');return A;};FCKTools.HTMLDecode=function(A){if (!A) return '';A=A.replace(/&gt;/g,'>');A=A.replace(/&lt;/g,'<');A=A.replace(/&amp;/g,'&');return A;};FCKTools._ProcessLineBreaksForPMode=function(A,B,C,D,E){var F=0;var G="<p>";var H="</p>";var I="<br />";if (C){G="<li>";H="</li>";F=1;};while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='p'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};var n=B.charAt(i+1);if (n=='\r'){i++;n=B.charAt(i+1);};if (n=='\n'){i++;if (F) E.push(H);E.push(G);F=1;}else E.push(I);}};FCKTools._ProcessLineBreaksForDivMode=function(A,B,C,D,E){var F=0;var G="<div>";var H="</div>";if (C){G="<li>";H="</li>";F=1;};while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='div'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F){if (E[E.length-1]==G){E.push("&nbsp;");};E.push(H);};E.push(G);F=1;};if (F) E.push(H);};FCKTools._ProcessLineBreaksForBrMode=function(A,B,C,D,E){var F=0;var G="<br />";var H="";if (C){G="<li>";H="</li>";F=1;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F&&H.length) E.push (H);E.push(G);F=1;}};FCKTools.ProcessLineBreaks=function(A,B,C){var D=B.EnterMode.toLowerCase();var E=[];var F=0;var G=new A.FCKDomRange(A.FCK.EditorWindow);G.MoveToSelection();var H=G._Range.startContainer;while (H&&H.nodeType!=1) H=H.parentNode;if (H&&H.tagName.toLowerCase()=='li') F=1;if (D=='p') this._ProcessLineBreaksForPMode(A,C,F,H,E);else if (D=='div') this._ProcessLineBreaksForDivMode(A,C,F,H,E);else if (D=='br') this._ProcessLineBreaksForBrMode(A,C,F,H,E);return E.join("");};FCKTools.AddSelectOption=function(A,B,C){var D=FCKTools.GetElementDocument(A).createElement("OPTION");D.text=B;D.value=C;A.options.add(D);return D;};FCKTools.RunFunction=function(A,B,C,D){if (A) this.SetTimeout(A,0,B,C,D);};FCKTools.SetTimeout=function(A,B,C,D,E){return (E||window).setTimeout(function(){if (D) A.apply(C,[].concat(D));else A.apply(C);},B);};FCKTools.SetInterval=function(A,B,C,D,E){return (E||window).setInterval(function(){A.apply(C,D||[]);},B);};FCKTools.ConvertStyleSizeToHtml=function(A){return A.EndsWith('%')?A:parseInt(A,10);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.EndsWith('%')?A:(A+'px');};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.CreateEventListener=function(A,B){var f=function(){var C=[];for (var i=0;i<arguments.length;i++) C.push(arguments[i]);A.apply(this,C.concat(B));};return f;};FCKTools.IsStrictMode=function(A){return ('CSS1Compat'==(A.compatMode||(FCKBrowserInfo.IsSafari?'CSS1Compat':null)));};FCKTools.ArgumentsToArray=function(A,B,C){B=B||0;C=C||A.length;var D=[];for (var i=B;i<B+C&&i<A.length;i++) D.push(A[i]);return D;};FCKTools.CloneObject=function(A){var B=function() {};B.prototype=A;return new B;};FCKTools.AppendBogusBr=function(A){if (!A) return;var B=this.GetLastItem(A.getElementsByTagName('br'));if (!B||(B.getAttribute('type',2)!='_moz'&&B.getAttribute('_moz_dirty')==null)){var C=this.GetElementDocument(A);if (FCKBrowserInfo.IsOpera) A.appendChild(C.createTextNode(''));else A.appendChild(this.CreateBogusBR(C));}};FCKTools.GetLastItem=function(A){if (A.length>0) return A[A.length-1];return null;};FCKTools.GetDocumentPosition=function(w,A){var x=0;var y=0;var B=A;var C=null;var D=FCKTools.GetElementWindow(B);while (B&&!(D==w&&(B==w.document.body||B==w.document.documentElement))){x+=B.offsetLeft-B.scrollLeft;y+=B.offsetTop-B.scrollTop;if (!FCKBrowserInfo.IsOpera){var E=C;while (E&&E!=B){x-=E.scrollLeft;y-=E.scrollTop;E=E.parentNode;}};C=B;if (B.offsetParent) B=B.offsetParent;else{if (D!=w){B=D.frameElement;C=null;if (B) D=B.contentWindow.parent;}else B=null;}};if (FCKDomTools.GetCurrentElementStyle(w.document.body,'position')!='static'||(FCKBrowserInfo.IsIE&&FCKDomTools.GetPositionedAncestor(A)==null)){x+=w.document.body.offsetLeft;y+=w.document.body.offsetTop;};return { "x":x,"y":y };};FCKTools.GetWindowPosition=function(w,A){var B=this.GetDocumentPosition(w,A);var C=FCKTools.GetScrollPosition(w);B.x-=C.X;B.y-=C.Y;return B;};FCKTools.ProtectFormStyles=function(A){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return [];var B=[];var C=['style','className'];for (var i=0;i<C.length;i++){var D=C[i];if (A.elements.namedItem(D)){var E=A.elements.namedItem(D);B.push([E,E.nextSibling]);A.removeChild(E);}};return B;};FCKTools.RestoreFormStyles=function(A,B){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return;if (B.length>0){for (var i=B.length-1;i>=0;i--){var C=B[i][0];var D=B[i][1];if (D) A.insertBefore(C,D);else A.appendChild(C);}}};FCKTools.GetNextNode=function(A,B){if (A.firstChild) return A.firstChild;else if (A.nextSibling) return A.nextSibling;else{var C=A.parentNode;while (C){if (C==B) return null;if (C.nextSibling) return C.nextSibling;else C=C.parentNode;}};return null;};FCKTools.GetNextTextNode=function(A,B,C){node=this.GetNextNode(A,B);if (C&&node&&C(node)) return null;while (node&&node.nodeType!=3){node=this.GetNextNode(node,B);if (C&&node&&C(node)) return null;};return node;};FCKTools.Merge=function(){var A=arguments;var o=A[0];for (var i=1;i<A.length;i++){var B=A[i];for (var p in B) o[p]=B[p];};return o;};FCKTools.IsArray=function(A){return (A instanceof Array);};FCKTools.AppendLengthProperty=function(A,B){var C=0;for (var n in A) C++;return A[B||'length']=C;};FCKTools.NormalizeCssText=function(A){var B=document.createElement('span');B.style.cssText=A;return B.style.cssText;};FCKTools.Bind=function(A,B){return function(){ return B.apply(A,arguments);};};FCKTools.GetVoidUrl=function(){if (FCK_IS_CUSTOM_DOMAIN) return "javascript: void( function(){document.open();document.write('<html><head><title></title></head><body></body></html>');document.domain = '"+FCK_RUNTIME_DOMAIN+"';document.close();}() ) ;";if (FCKBrowserInfo.IsIE){if (FCKBrowserInfo.IsIE7||!FCKBrowserInfo.IsIE6) return "";else return "javascript: '';";};return "javascript: void(0);";};
+FCKTools.CancelEvent=function(e){if (e) e.preventDefault();};FCKTools.DisableSelection=function(A){if (FCKBrowserInfo.IsGecko) A.style.MozUserSelect='none';else if (FCKBrowserInfo.IsSafari) A.style.KhtmlUserSelect='none';else A.style.userSelect='none';};FCKTools._AppendStyleSheet=function(A,B){var e=A.createElement('LINK');e.rel='stylesheet';e.type='text/css';e.href=B;A.getElementsByTagName("HEAD")[0].appendChild(e);return e;};FCKTools.AppendStyleString=function(A,B){if (!B) return null;var e=A.createElement("STYLE");e.appendChild(A.createTextNode(B));A.getElementsByTagName("HEAD")[0].appendChild(e);return e;};FCKTools.ClearElementAttributes=function(A){for (var i=0;i<A.attributes.length;i++){A.removeAttribute(A.attributes[i].name,0);}};FCKTools.GetAllChildrenIds=function(A){var B=[];var C=function(parent){for (var i=0;i<parent.childNodes.length;i++){var D=parent.childNodes[i].id;if (D&&D.length>0) B[B.length]=D;C(parent.childNodes[i]);}};C(A);return B;};FCKTools.RemoveOuterTags=function(e){var A=e.ownerDocument.createDocumentFragment();for (var i=0;i<e.childNodes.length;i++) A.appendChild(e.childNodes[i].cloneNode(true));e.parentNode.replaceChild(A,e);};FCKTools.CreateXmlObject=function(A){switch (A){case 'XmlHttp':return new XMLHttpRequest();case 'DOMDocument':var B=(new DOMParser()).parseFromString('<tmp></tmp>','text/xml');FCKDomTools.RemoveNode(B.firstChild);return B;};return null;};FCKTools.GetScrollPosition=function(A){return { X:A.pageXOffset,Y:A.pageYOffset };};FCKTools.AddEventListener=function(A,B,C){A.addEventListener(B,C,false);};FCKTools.RemoveEventListener=function(A,B,C){A.removeEventListener(B,C,false);};FCKTools.AddEventListenerEx=function(A,B,C,D){A.addEventListener(B,function(e){C.apply(A,[e].concat(D||[]));},false);};FCKTools.GetViewPaneSize=function(A){return { Width:A.innerWidth,Height:A.innerHeight };};FCKTools.SaveStyles=function(A){var B=FCKTools.ProtectFormStyles(A);var C={};if (A.className.length>0){C.Class=A.className;A.className='';};var D=A.getAttribute('style');if (D&&D.length>0){C.Inline=D;A.setAttribute('style','',0);};FCKTools.RestoreFormStyles(A,B);return C;};FCKTools.RestoreStyles=function(A,B){var C=FCKTools.ProtectFormStyles(A);A.className=B.Class||'';if (B.Inline) A.setAttribute('style',B.Inline,0);else A.removeAttribute('style',0);FCKTools.RestoreFormStyles(A,C);};FCKTools.RegisterDollarFunction=function(A){A.$=function(id){return A.document.getElementById(id);};};FCKTools.AppendElement=function(A,B){return A.appendChild(A.ownerDocument.createElement(B));};FCKTools.GetElementPosition=function(A,B){var c={ X:0,Y:0 };var C=B||window;var D=FCKTools.GetElementWindow(A);var E=null;while (A){var F=D.getComputedStyle(A,'').position;if (F&&F!='static'&&A.style.zIndex!=FCKConfig.FloatingPanelsZIndex) break;c.X+=A.offsetLeft-A.scrollLeft;c.Y+=A.offsetTop-A.scrollTop;if (!FCKBrowserInfo.IsOpera){var G=E;while (G&&G!=A){c.X-=G.scrollLeft;c.Y-=G.scrollTop;G=G.parentNode;}};E=A;if (A.offsetParent) A=A.offsetParent;else{if (D!=C){A=D.frameElement;E=null;if (A) D=FCKTools.GetElementWindow(A);}else{c.X+=A.scrollLeft;c.Y+=A.scrollTop;break;}}};return c;};
+var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='window.FCKeditorAPI = {Version : "2.6",VersionBuild : "18638",Instances : new Object(),GetInstance : function( name ){return this.Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.Instances ){var oEditor = FCKeditorAPI.Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue	: {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if(FCKBrowserInfo.IsAIR){FCKAdobeAIR.FCKeditorAPI_Evaluate(A,B);}else if (FCKBrowserInfo.IsSafari||FCKBrowserInfo.IsGecko19){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;FCKeditorAPI.__Instances=FCKeditorAPI.Instances;};FCKeditorAPI.Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){if (!window.FCKUnloadFlag) return;delete FCKeditorAPI.Instances[FCK.Name];};function FCKeditorAPI_ConfirmCleanup(){window.FCKUnloadFlag=true;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);FCKTools.AddEventListener(window,'beforeunload',FCKeditorAPI_ConfirmCleanup);
+var FCKImagePreloader=function(){this._Images=[];};FCKImagePreloader.prototype={AddImages:function(A){if (typeof(A)=='string') A=A.split(';');this._Images=this._Images.concat(A);},Start:function(){var A=this._Images;this._PreloadCount=A.length;for (var i=0;i<A.length;i++){var B=document.createElement('img');FCKTools.AddEventListenerEx(B,'load',_FCKImagePreloader_OnImage,this);FCKTools.AddEventListenerEx(B,'error',_FCKImagePreloader_OnImage,this);B.src=A[i];_FCKImagePreloader_ImageCache.push(B);}}};var _FCKImagePreloader_ImageCache=[];function _FCKImagePreloader_OnImage(A,B){if ((--B._PreloadCount)==0&&B.OnComplete) B.OnComplete();};
+var FCKRegexLib={AposEntity:/&apos;/gi,ObjectElements:/^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i,NamedCommands:/^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i,BeforeBody:/(^[\s\S]*\<body[^\>]*\>)/i,AfterBody:/(\<\/body\>[\s\S]*$)/i,ToReplace:/___fcktoreplace:([\w]+)/ig,MetaHttpEquiv:/http-equiv\s*=\s*["']?([^"' ]+)/i,HasBaseTag:/<base /i,HasBodyTag:/<body[\s|>]/i,HtmlOpener:/<html\s?[^>]*>/i,HeadOpener:/<head\s?[^>]*>/i,HeadCloser:/<\/head\s*>/i,FCK_Class:/\s*FCK__[^ ]*(?=\s+|$)/,ElementName:/(^[a-z_:][\w.\-:]*\w$)|(^[a-z_]$)/,ForceSimpleAmpersand:/___FCKAmp___/g,SpaceNoClose:/\/>/g,EmptyParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/,EmptyOutParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*|&nbsp;)(<\/\1>)?$/,TagBody:/></,GeckoEntitiesMarker:/#\?-\:/g,ProtectUrlsImg:/<img(?=\s).*?\ssrc=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsA:/<a(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsArea:/<area(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,Html4DocType:/HTML 4\.0 Transitional/i,DocTypeTag:/<!DOCTYPE[^>]*>/i,TagsWithEvent:/<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g,EventAttributes:/\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,ProtectedEvents:/\s\w+_fckprotectedatt="([^"]+)"/g,StyleProperties:/\S+\s*:/g,InvalidSelfCloseTags:/(<(?!base|meta|link|hr|br|param|img|area|input)([a-zA-Z0-9:]+)[^>]*)\/>/gi,StyleVariableAttName:/#\(\s*("|')(.+?)\1[^\)]*\s*\)/g,RegExp:/^\/(.*)\/([gim]*)$/,HtmlTag:/<[^\s<>](?:"[^"]*"|'[^']*'|[^<])*>/};
+var FCKListsLib={BlockElements:{ address:1,blockquote:1,center:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,marquee:1,noscript:1,ol:1,p:1,pre:1,script:1,table:1,ul:1 },NonEmptyBlockElements:{ p:1,div:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,address:1,pre:1,ol:1,ul:1,li:1,td:1,th:1 },InlineChildReqElements:{ abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },InlineNonEmptyElements:{ a:1,abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },EmptyElements:{ base:1,col:1,meta:1,link:1,hr:1,br:1,param:1,img:1,area:1,input:1 },PathBlockElements:{ address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,de:1 },PathBlockLimitElements:{ body:1,div:1,td:1,th:1,caption:1,form:1 },StyleBlockElements:{ address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1 },StyleObjectElements:{ img:1,hr:1,li:1,table:1,tr:1,td:1,embed:1,object:1,ol:1,ul:1 },NonEditableElements:{ button:1,option:1,script:1,iframe:1,textarea:1,object:1,embed:1,map:1,applet:1 },BlockBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1 },ListBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1,br:1 }};
+var FCKLanguageManager=FCK.Language={AvailableLanguages:{af:'Afrikaans',ar:'Arabic',bg:'Bulgarian',bn:'Bengali/Bangla',bs:'Bosnian',ca:'Catalan',cs:'Czech',da:'Danish',de:'German',el:'Greek',en:'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-uk':'English (United Kingdom)',eo:'Esperanto',es:'Spanish',et:'Estonian',eu:'Basque',fa:'Persian',fi:'Finnish',fo:'Faroese',fr:'French','fr-ca':'French (Canada)',gl:'Galician',he:'Hebrew',hi:'Hindi',hr:'Croatian',hu:'Hungarian',it:'Italian',ja:'Japanese',km:'Khmer',ko:'Korean',lt:'Lithuanian',lv:'Latvian',mn:'Mongolian',ms:'Malay',nb:'Norwegian Bokmal',nl:'Dutch',no:'Norwegian',pl:'Polish',pt:'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)',ro:'Romanian',ru:'Russian',sk:'Slovak',sl:'Slovenian',sr:'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)',sv:'Swedish',th:'Thai',tr:'Turkish',uk:'Ukrainian',vi:'Vietnamese',zh:'Chinese Traditional','zh-cn':'Chinese Simplified'},GetActiveLanguage:function(){if (FCKConfig.AutoDetectLanguage){var A;if (navigator.userLanguage) A=navigator.userLanguage.toLowerCase();else if (navigator.language) A=navigator.language.toLowerCase();else{return FCKConfig.DefaultLanguage;};if (A.length>=5){A=A.substr(0,5);if (this.AvailableLanguages[A]) return A;};if (A.length>=2){A=A.substr(0,2);if (this.AvailableLanguages[A]) return A;}};return this.DefaultLanguage;},TranslateElements:function(A,B,C,D){var e=A.getElementsByTagName(B);var E,s;for (var i=0;i<e.length;i++){if ((E=e[i].getAttribute('fckLang'))){if ((s=FCKLang[E])){if (D) s=FCKTools.HTMLEncode(s);e[i][C]=s;}}}},TranslatePage:function(A){this.TranslateElements(A,'INPUT','value');this.TranslateElements(A,'SPAN','innerHTML');this.TranslateElements(A,'LABEL','innerHTML');this.TranslateElements(A,'OPTION','innerHTML',true);this.TranslateElements(A,'LEGEND','innerHTML');},Initialize:function(){if (this.AvailableLanguages[FCKConfig.DefaultLanguage]) this.DefaultLanguage=FCKConfig.DefaultLanguage;else this.DefaultLanguage='en';this.ActiveLanguage={};this.ActiveLanguage.Code=this.GetActiveLanguage();this.ActiveLanguage.Name=this.AvailableLanguages[this.ActiveLanguage.Code];}};
 var FCKXHtmlEntities={};FCKXHtmlEntities.Initialize=function(){if (FCKXHtmlEntities.Entities) return;var A='';var B,e;if (FCKConfig.ProcessHTMLEntities){FCKXHtmlEntities.Entities={' ':'nbsp','¡':'iexcl','¢':'cent','£':'pound','¤':'curren','¥':'yen','¦':'brvbar','§':'sect','¨':'uml','©':'copy','ª':'ordf','«':'laquo','¬':'not','­':'shy','®':'reg','¯':'macr','°':'deg','±':'plusmn','²':'sup2','³':'sup3','´':'acute','µ':'micro','¶':'para','·':'middot','¸':'cedil','¹':'sup1','º':'ordm','»':'raquo','¼':'frac14','½':'frac12','¾':'frac34','¿':'iquest','×':'times','÷':'divide','ƒ':'fnof','•':'bull','…':'hellip','′':'prime','″':'Prime','‾':'oline','⁄':'frasl','℘':'weierp','ℑ':'image','ℜ':'real','™':'trade','ℵ':'alefsym','←':'larr','↑':'uarr','→':'rarr','↓':'darr','↔':'harr','↵':'crarr','⇐':'lArr','⇑':'uArr','⇒':'rArr','⇓':'dArr','⇔':'hArr','∀':'forall','∂':'part','∃':'exist','∅':'empty','∇':'nabla','∈':'isin','∉':'notin','∋':'ni','∏':'prod','∑':'sum','−':'minus','∗':'lowast','√':'radic','∝':'prop','∞':'infin','∠':'ang','∧':'and','∨':'or','∩':'cap','∪':'cup','∫':'int','∴':'there4','∼':'sim','≅':'cong','≈':'asymp','≠':'ne','≡':'equiv','≤':'le','≥':'ge','⊂':'sub','⊃':'sup','⊄':'nsub','⊆':'sube','⊇':'supe','⊕':'oplus','⊗':'otimes','⊥':'perp','⋅':'sdot','\u2308':'lceil','\u2309':'rceil','\u230a':'lfloor','\u230b':'rfloor','\u2329':'lang','\u232a':'rang','◊':'loz','♠':'spades','♣':'clubs','♥':'hearts','♦':'diams','"':'quot','ˆ':'circ','˜':'tilde',' ':'ensp',' ':'emsp',' ':'thinsp','‌':'zwnj','‍':'zwj','‎':'lrm','‏':'rlm','–':'ndash','—':'mdash','‘':'lsquo','’':'rsquo','‚':'sbquo','“':'ldquo','”':'rdquo','„':'bdquo','†':'dagger','‡':'Dagger','‰':'permil','‹':'lsaquo','›':'rsaquo','€':'euro'};for (e in FCKXHtmlEntities.Entities) A+=e;if (FCKConfig.IncludeLatinEntities){B={'À':'Agrave','Á':'Aacute','Â':'Acirc','Ã':'Atilde','Ä':'Auml','Å':'Aring','Æ':'AElig','Ç':'Ccedil','È':'Egrave','É':'Eacute','Ê':'Ecirc','Ë':'Euml','Ì':'Igrave','Í':'Iacute','Î':'Icirc','Ï':'Iuml','Ð':'ETH','Ñ':'Ntilde','Ò':'Ograve','Ó':'Oacute','Ô':'Ocirc','Õ':'Otilde','Ö':'Ouml','Ø':'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','ø':'oslash','ù':'ugrave','ú':'uacute','û':'ucirc','ü':'uuml','ý':'yacute','þ':'thorn','ÿ':'yuml','Œ':'OElig','œ':'oelig','Š':'Scaron','š':'scaron','Ÿ':'Yuml'};for (e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;};if (FCKConfig.IncludeGreekEntities){B={'Α':'Alpha','Β':'Beta','Γ':'Gamma','Δ':'Delta','Ε':'Epsilon','Ζ':'Zeta','Η':'Eta','Θ':'Theta','Ι':'Iota','Κ':'Kappa','Λ':'Lambda','Μ':'Mu','Ν':'Nu','Ξ':'Xi','Ο':'Omicron','Π':'Pi','Ρ':'Rho','Σ':'Sigma','Τ':'Tau','Υ':'Upsilon','Φ':'Phi','Χ':'Chi','Ψ':'Psi','Ω':'Omega','α':'alpha','β':'beta','γ':'gamma','δ':'delta','ε':'epsilon','ζ':'zeta','η':'eta','θ':'theta','ι':'iota','κ':'kappa','λ':'lambda','μ':'mu','ν':'nu','ξ':'xi','ο':'omicron','π':'pi','ρ':'rho','ς':'sigmaf','σ':'sigma','τ':'tau','υ':'upsilon','φ':'phi','χ':'chi','ψ':'psi','ω':'omega','\u03d1':'thetasym','\u03d2':'upsih','\u03d6':'piv'};for (e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;}}else{FCKXHtmlEntities.Entities={};A=' ';};var C='['+A+']';if (FCKConfig.ProcessNumericEntities) C='[^ -~]|'+C;var D=FCKConfig.AdditionalNumericEntities;if (D&&D.length>0) C+='|'+FCKConfig.AdditionalNumericEntities;FCKXHtmlEntities.EntitiesRegex=new RegExp(C,'g');};
-var FCKXHtml={};FCKXHtml.CurrentJobNum=0;FCKXHtml.GetXHTML=function(A,B,C){FCKDomTools.CheckAndRemovePaddingNode(A.ownerDocument,FCKConfig.EnterMode);FCKXHtmlEntities.Initialize();this._NbspEntity=(FCKConfig.ProcessHTMLEntities?'nbsp':'#160');var D=FCK.IsDirty();FCKXHtml.SpecialBlocks=[];this.XML=FCKTools.CreateXmlObject('DOMDocument');this.MainNode=this.XML.appendChild(this.XML.createElement('xhtml'));FCKXHtml.CurrentJobNum++;if (B) this._AppendNode(this.MainNode,A);else this._AppendChildNodes(this.MainNode,A,false);var E=this._GetMainXmlString();this.XML=null;if (FCKBrowserInfo.IsSafari) E=E.replace(/^<xhtml.*?>/,'<xhtml>');E=E.substr(7,E.length-15).Trim();E=E.replace(FCKRegexLib.SpaceNoClose,' />');if (FCKConfig.ForceSimpleAmpersand) E=E.replace(FCKRegexLib.ForceSimpleAmpersand,'&');if (C) E=FCKCodeFormatter.Format(E);for (var i=0;i<FCKXHtml.SpecialBlocks.length;i++){var F=new RegExp('___FCKsi___'+i);E=E.replace(F,FCKXHtml.SpecialBlocks[i]);};E=E.replace(FCKRegexLib.GeckoEntitiesMarker,'&');if (!D) FCK.ResetIsDirty();FCKDomTools.EnforcePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);return E;};FCKXHtml._AppendAttribute=function(A,B,C){try{if (C==undefined||C==null) C='';else if (C.replace){if (FCKConfig.ForceSimpleAmpersand) C=C.replace(/&/g,'___FCKAmp___');C=C.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity);};var D=this.XML.createAttribute(B);D.value=C;A.attributes.setNamedItem(D);}catch (e){}};FCKXHtml._AppendChildNodes=function(A,B,C){var D=B.firstChild;while (D){this._AppendNode(A,D);D=D.nextSibling;};if (C&&B.tagName&&B.tagName.toLowerCase()!='pre'){FCKDomTools.TrimNode(A);if (FCKConfig.FillEmptyBlocks){var E=A.lastChild;if (E&&E.nodeType==1&&E.nodeName=='br') this._AppendEntity(A,this._NbspEntity);}};if (A.childNodes.length==0){if (C&&FCKConfig.FillEmptyBlocks){this._AppendEntity(A,this._NbspEntity);return A;};var F=A.nodeName;if (FCKListsLib.InlineChildReqElements[F]) return null;if (!FCKListsLib.EmptyElements[F]) A.appendChild(this.XML.createTextNode(''));};return A;};FCKXHtml._AppendNode=function(A,B){if (!B) return false;switch (B.nodeType){case 1:if (FCKBrowserInfo.IsGecko&&B.tagName.toLowerCase()=='br'&&B.parentNode.tagName.toLowerCase()=='pre'){var C='\r';if (B==B.parentNode.firstChild) C+='\r';return FCKXHtml._AppendNode(A,this.XML.createTextNode(C));};if (B.getAttribute('_fckfakelement')) return FCKXHtml._AppendNode(A,FCK.GetRealElement(B));if (FCKBrowserInfo.IsGecko&&B.nextSibling&&(B.hasAttribute('_moz_editor_bogus_node')||B.getAttribute('type')=='_moz')) return false;if (B.getAttribute('_fcktemp')) return false;var D=B.tagName.toLowerCase();if (FCKBrowserInfo.IsIE){if (B.scopeName&&B.scopeName!='HTML'&&B.scopeName!='FCK') D=B.scopeName.toLowerCase()+':'+D;}else{if (D.StartsWith('fck:')) D=D.Remove(0,4);};if (!FCKRegexLib.ElementName.test(D)) return false;if (B._fckxhtmljob&&B._fckxhtmljob==FCKXHtml.CurrentJobNum) return false;var E=this.XML.createElement(D);FCKXHtml._AppendAttributes(A,B,E,D);B._fckxhtmljob=FCKXHtml.CurrentJobNum;var F=FCKXHtml.TagProcessors[D];if (F) E=F(E,B,A);else E=this._AppendChildNodes(E,B,Boolean(FCKListsLib.NonEmptyBlockElements[D]));if (!E) return false;A.appendChild(E);break;case 3:if (B.parentNode&&B.parentNode.nodeName.IEquals('pre')) return this._AppendTextNode(A,B.nodeValue);return this._AppendTextNode(A,B.nodeValue.ReplaceNewLineChars(' '));case 8:if (FCKBrowserInfo.IsIE&&!B.innerHTML) break;try { A.appendChild(this.XML.createComment(B.nodeValue));}catch (e) {/*Do nothing... probably this is a wrong format comment.*/};break;default:A.appendChild(this.XML.createComment("Element not supported - Type: "+B.nodeType+" Name: "+B.nodeName));break;};return true;};FCKXHtml._AppendSpecialItem=function(A){return '___FCKsi___'+FCKXHtml.SpecialBlocks.AddItem(A);};FCKXHtml._AppendEntity=function(A,B){A.appendChild(this.XML.createTextNode('#?-:'+B+';'));};FCKXHtml._AppendTextNode=function(A,B){var C=B.length>0;if (C) A.appendChild(this.XML.createTextNode(B.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity)));return C;};function FCKXHtml_GetEntity(A){var B=FCKXHtmlEntities.Entities[A]||('#'+A.charCodeAt(0));return '#?-:'+B+';';};FCKXHtml.TagProcessors={a:function(A,B){if (B.innerHTML.Trim().length==0&&!B.name) return false;var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);};A=FCKXHtml._AppendChildNodes(A,B,false);return A;},area:function(A,B){var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (!A.attributes.getNamedItem('coords')){var D=B.getAttribute('coords',2);if (D&&D!='0,0,0') FCKXHtml._AppendAttribute(A,'coords',D);};if (!A.attributes.getNamedItem('shape')){var E=B.getAttribute('shape',2);if (E&&E.length>0) FCKXHtml._AppendAttribute(A,'shape',E.toLowerCase());}};return A;},body:function(A,B){A=FCKXHtml._AppendChildNodes(A,B,false);A.removeAttribute('spellcheck');return A;},iframe:function(A,B){var C=B.innerHTML;if (FCKBrowserInfo.IsGecko) C=FCKTools.HTMLDecode(C);C=C.replace(/\s_fcksavedurl="[^"]*"/g,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},img:function(A,B){if (!A.attributes.getNamedItem('alt')) FCKXHtml._AppendAttribute(A,'alt','');var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'src',C);return A;},ol:function(A,B,C){if (B.innerHTML.Trim().length==0) return false;var D=C.lastChild;if (D&&D.nodeType==3) D=D.previousSibling;if (D&&D.nodeName.toUpperCase()=='LI'){B._fckxhtmljob=null;FCKXHtml._AppendNode(D,B);return false;};A=FCKXHtml._AppendChildNodes(A,B);return A;},pre:function (A,B){var C=B.firstChild;if (C&&C.nodeType==3) A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem('\r\n')));FCKXHtml._AppendChildNodes(A,B,true);return A;},script:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/javascript');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.text)));return A;},span:function(A,B){if (B.innerHTML.length==0) return false;A=FCKXHtml._AppendChildNodes(A,B,false);return A;},style:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/css');var C=B.innerHTML;if (FCKBrowserInfo.IsIE) C=C.replace(/^(\r\n|\n|\r)/,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},title:function(A,B){A.appendChild(FCKXHtml.XML.createTextNode(FCK.EditorDocument.title));return A;}};FCKXHtml.TagProcessors.ul=FCKXHtml.TagProcessors.ol;
-FCKXHtml._GetMainXmlString=function(){var A=new XMLSerializer();return A.serializeToString(this.MainNode);};FCKXHtml._AppendAttributes=function(A,B,C){var D=B.attributes;for (var n=0;n<D.length;n++){var E=D[n];if (E.specified){var F=E.nodeName.toLowerCase();var G;if (F.StartsWith('_fck')) continue;else if (F.indexOf('_moz')==0) continue;else if (F=='class'){G=E.nodeValue.replace(FCKRegexLib.FCK_Class,'');if (G.length==0) continue;}else if (E.nodeValue===true) G=F;else G=B.getAttribute(F,2);this._AppendAttribute(C,F,G);}}};if (FCKBrowserInfo.IsOpera){FCKXHtml.TagProcessors['head']=function(A,B){FCKXHtml.XML._HeadElement=A;A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['meta']=function(A,B,C){if (B.parentNode.nodeName.toLowerCase()!='head'){var D=FCKXHtml.XML._HeadElement;if (D&&C!=D){delete B._fckxhtmljob;FCKXHtml._AppendNode(D,B);return null;}};return A;}}
-var FCKCodeFormatter={};FCKCodeFormatter.Init=function(){var A=this.Regex={};A.BlocksOpener=/\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.BlocksCloser=/\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.NewLineTags=/\<(BR|HR)[^\>]*\>/gi;A.MainTags=/\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi;A.LineSplitter=/\s*\n+\s*/g;A.IncreaseIndent=/^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \/\>]/i;A.DecreaseIndent=/^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \>]/i;A.FormatIndentatorRemove=new RegExp('^'+FCKConfig.FormatIndentator);A.ProtectedTags=/(<PRE[^>]*>)([\s\S]*?)(<\/PRE>)/gi;};FCKCodeFormatter._ProtectData=function(A,B,C,D){return B+'___FCKpd___'+FCKCodeFormatter.ProtectedData.AddItem(C)+D;};FCKCodeFormatter.Format=function(A){if (!this.Regex) this.Init();FCKCodeFormatter.ProtectedData=[];var B=A.replace(this.Regex.ProtectedTags,FCKCodeFormatter._ProtectData);B=B.replace(this.Regex.BlocksOpener,'\n$&');B=B.replace(this.Regex.BlocksCloser,'$&\n');B=B.replace(this.Regex.NewLineTags,'$&\n');B=B.replace(this.Regex.MainTags,'\n$&\n');var C='';var D=B.split(this.Regex.LineSplitter);B='';for (var i=0;i<D.length;i++){var E=D[i];if (E.length==0) continue;if (this.Regex.DecreaseIndent.test(E)) C=C.replace(this.Regex.FormatIndentatorRemove,'');B+=C+E+'\n';if (this.Regex.IncreaseIndent.test(E)) C+=FCKConfig.FormatIndentator;};for (var j=0;j<FCKCodeFormatter.ProtectedData.length;j++){var F=new RegExp('___FCKpd___'+j);B=B.replace(F,FCKCodeFormatter.ProtectedData[j].replace(/\$/g,'$$$$'));};return B.Trim();}
-var FCKUndo={};FCKUndo.SavedData=[];FCKUndo.CurrentIndex=-1;FCKUndo.TypesCount=0;FCKUndo.Changed=false;FCKUndo.MaxTypes=25;FCKUndo.Typing=false;FCKUndo.SaveLocked=false;FCKUndo._GetBookmark=function(){var A=new FCKDomRange(FCK.EditorWindow);try{A.MoveToSelection();}catch (e){return null;};if (FCKBrowserInfo.IsIE){var B=A.CreateBookmark();var C=FCK.EditorDocument.body.innerHTML;A.MoveToBookmark(B);return [B,C];};return A.CreateBookmark2();};FCKUndo._SelectBookmark=function(A){if (!A) return;var B=new FCKDomRange(FCK.EditorWindow);if (A instanceof Object){if (FCKBrowserInfo.IsIE) B.MoveToBookmark(A[0]);else B.MoveToBookmark2(A);try{B.Select();}catch (e){B.MoveToPosition(FCK.EditorDocument.body,4);B.Select();}}};FCKUndo._CompareCursors=function(A,B){for (var i=0;i<Math.min(A.length,B.length);i++){if (A[i]<B[i]) return-1;else if (A[i]>B[i]) return 1;};if (A.length<B.length) return-1;else if (A.length>B.length) return 1;return 0;};FCKUndo._CheckIsBookmarksEqual=function(A,B){if (!(A&&B)) return false;if (FCKBrowserInfo.IsIE){var C=A[1].search(A[0].StartId);var D=B[1].search(B[0].StartId);var E=A[1].search(A[0].EndId);var F=B[1].search(B[0].EndId);return C==D&&E==F;}else{return this._CompareCursors(A.Start,B.Start)==0&&this._CompareCursors(A.End,B.End)==0;}};FCKUndo.SaveUndoStep=function(){if (FCK.EditMode!=0||this.SaveLocked) return;if (this.SavedData.length) this.Changed=true;var A=FCK.EditorDocument.body.innerHTML;var B=this._GetBookmark();this.SavedData=this.SavedData.slice(0,this.CurrentIndex+1);if (this.CurrentIndex>0&&A==this.SavedData[this.CurrentIndex][0]&&this._CheckIsBookmarksEqual(B,this.SavedData[this.CurrentIndex][1])) return;else if (this.CurrentIndex==0&&this.SavedData.length&&A==this.SavedData[0][0]){this.SavedData[0][1]=B;return;};if (this.CurrentIndex+1>=FCKConfig.MaxUndoLevels) this.SavedData.shift();else this.CurrentIndex++;this.SavedData[this.CurrentIndex]=[A,B];FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.CheckUndoState=function(){return (this.Changed||this.CurrentIndex>0);};FCKUndo.CheckRedoState=function(){return (this.CurrentIndex<(this.SavedData.length-1));};FCKUndo.Undo=function(){if (this.CheckUndoState()){if (this.CurrentIndex==(this.SavedData.length-1)){this.SaveUndoStep();};this._ApplyUndoLevel(--this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo.Redo=function(){if (this.CheckRedoState()){this._ApplyUndoLevel(++this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo._ApplyUndoLevel=function(A){var B=this.SavedData[A];if (!B) return;if (FCKBrowserInfo.IsIE){if (B[1]&&B[1][1]) FCK.SetInnerHtml(B[1][1]);else FCK.SetInnerHtml(B[0]);}else FCK.EditorDocument.body.innerHTML=B[0];this._SelectBookmark(B[1]);this.TypesCount=0;this.Changed=false;this.Typing=false;};
-var FCKEditingArea=function(A){this.TargetElement=A;this.Mode=0;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKEditingArea_Cleanup);};FCKEditingArea.prototype.Start=function(A,B){var C=this.TargetElement;var D=FCKTools.GetElementDocument(C);var E;while((E=C.firstChild)){if (E.contentWindow) E.contentWindow.document.body.innerHTML='';C.removeChild(E);};if (this.Mode==0){var F=this.IFrame=D.createElement('iframe');if (!FCKBrowserInfo.IsGecko) F.src='javascript:void(0)';F.frameBorder=0;F.width=F.height='100%';C.appendChild(F);if (FCKBrowserInfo.IsIE) A=A.replace(/(<base[^>]*?)\s*\/?>(?!\s*<\/base>)/gi,'$1></base>');else if (!B){var G=A.match(FCKRegexLib.BeforeBody);var H=A.match(FCKRegexLib.AfterBody);if (G&&H){var I=A.substr(G[1].length,A.length-G[1].length-H[1].length);A=G[1]+'&nbsp;'+H[1];if (FCKBrowserInfo.IsGecko&&(I.length==0||FCKRegexLib.EmptyParagraph.test(I))) I='<br type="_moz">';this._BodyHTML=I;}else this._BodyHTML=A;};this.Window=F.contentWindow;var J=this.Document=this.Window.document;J.open();J.write(A);J.close();if (FCKBrowserInfo.IsGecko10&&!B){this.Start(A,true);return;};this.Window._FCKEditingArea=this;if (FCKBrowserInfo.IsGecko10) this.Window.setTimeout(FCKEditingArea_CompleteStart,500);else FCKEditingArea_CompleteStart.call(this.Window);}else{var K=this.Textarea=D.createElement('textarea');K.className='SourceField';K.dir='ltr';FCKDomTools.SetElementStyles(K,{width:'100%',height:'100%',border:'none',resize:'none',outline:'none'});C.appendChild(K);K.value=A;FCKTools.RunFunction(this.OnLoad);}};function FCKEditingArea_CompleteStart(){if (!this.document.body){this.setTimeout(FCKEditingArea_CompleteStart,50);return;};var A=this._FCKEditingArea;A.MakeEditable();FCKTools.RunFunction(A.OnLoad);};FCKEditingArea.prototype.MakeEditable=function(){var A=this.Document;if (FCKBrowserInfo.IsIE){A.body.disabled=true;A.body.contentEditable=true;A.body.removeAttribute("disabled");}else{try{A.body.spellcheck=(this.FFSpellChecker!==false);if (this._BodyHTML){A.body.innerHTML=this._BodyHTML;this._BodyHTML=null;};A.designMode='on';A.execCommand('enableObjectResizing',false,!FCKConfig.DisableObjectResizing);A.execCommand('enableInlineTableEditing',false,!FCKConfig.DisableFFTableHandles);}catch (e){FCKTools.AddEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);}}};function FCKEditingArea_Document_AttributeNodeModified(A){var B=A.currentTarget.contentWindow._FCKEditingArea;if (B._timer) window.clearTimeout(B._timer);B._timer=FCKTools.SetTimeout(FCKEditingArea_MakeEditableByMutation,1000,B);};function FCKEditingArea_MakeEditableByMutation(){delete this._timer;FCKTools.RemoveEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);this.MakeEditable();};FCKEditingArea.prototype.Focus=function(){try{if (this.Mode==0){if (FCKBrowserInfo.IsIE&&this.Document.hasFocus()) this._EnsureFocusIE();this.Window.focus();if (FCKBrowserInfo.IsIE) this._EnsureFocusIE();}else{var A=FCKTools.GetElementDocument(this.Textarea);if ((!A.hasFocus||A.hasFocus())&&A.activeElement==this.Textarea) return;this.Textarea.focus();}}catch(e) {}};FCKEditingArea.prototype._EnsureFocusIE=function(){this.Document.body.setActive();var A=this.Document.selection.createRange();var B=A.parentElement();var C=B.nodeName.toLowerCase();if (B.childNodes.length>0||!(FCKListsLib.BlockElements[C]||FCKListsLib.NonEmptyBlockElements[C])){return;};A.moveEnd("character",1);A.select();if (A.boundingWidth>0){A.moveEnd("character",-1);A.select();}};function FCKEditingArea_Cleanup(){if (this.Document) this.Document.body.innerHTML="";this.TargetElement=null;this.IFrame=null;this.Document=null;this.Textarea=null;if (this.Window){this.Window._FCKEditingArea=null;this.Window=null;}};
+var FCKXHtml={};FCKXHtml.CurrentJobNum=0;FCKXHtml.GetXHTML=function(A,B,C){FCKDomTools.CheckAndRemovePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);FCKXHtmlEntities.Initialize();this._NbspEntity=(FCKConfig.ProcessHTMLEntities?'nbsp':'#160');var D=FCK.IsDirty();FCKXHtml.SpecialBlocks=[];this.XML=FCKTools.CreateXmlObject('DOMDocument');this.MainNode=this.XML.appendChild(this.XML.createElement('xhtml'));FCKXHtml.CurrentJobNum++;if (B) this._AppendNode(this.MainNode,A);else this._AppendChildNodes(this.MainNode,A,false);var E=this._GetMainXmlString();this.XML=null;if (FCKBrowserInfo.IsSafari) E=E.replace(/^<xhtml.*?>/,'<xhtml>');E=E.substr(7,E.length-15).Trim();E=E.replace(FCKRegexLib.SpaceNoClose,' />');if (FCKConfig.ForceSimpleAmpersand) E=E.replace(FCKRegexLib.ForceSimpleAmpersand,'&');if (C) E=FCKCodeFormatter.Format(E);for (var i=0;i<FCKXHtml.SpecialBlocks.length;i++){var F=new RegExp('___FCKsi___'+i);E=E.replace(F,FCKXHtml.SpecialBlocks[i]);};E=E.replace(FCKRegexLib.GeckoEntitiesMarker,'&');if (!D) FCK.ResetIsDirty();FCKDomTools.EnforcePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);return E;};FCKXHtml._AppendAttribute=function(A,B,C){try{if (C==undefined||C==null) C='';else if (C.replace){if (FCKConfig.ForceSimpleAmpersand) C=C.replace(/&/g,'___FCKAmp___');C=C.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity);};var D=this.XML.createAttribute(B);D.value=C;A.attributes.setNamedItem(D);}catch (e){}};FCKXHtml._AppendChildNodes=function(A,B,C){var D=B.firstChild;while (D){this._AppendNode(A,D);D=D.nextSibling;};if (C&&B.tagName&&B.tagName.toLowerCase()!='pre'){FCKDomTools.TrimNode(A);if (FCKConfig.FillEmptyBlocks){var E=A.lastChild;if (E&&E.nodeType==1&&E.nodeName=='br') this._AppendEntity(A,this._NbspEntity);}};if (A.childNodes.length==0){if (C&&FCKConfig.FillEmptyBlocks){this._AppendEntity(A,this._NbspEntity);return A;};var F=A.nodeName;if (FCKListsLib.InlineChildReqElements[F]) return null;if (!FCKListsLib.EmptyElements[F]) A.appendChild(this.XML.createTextNode(''));};return A;};FCKXHtml._AppendNode=function(A,B){if (!B) return false;switch (B.nodeType){case 1:if (FCKBrowserInfo.IsGecko&&B.tagName.toLowerCase()=='br'&&B.parentNode.tagName.toLowerCase()=='pre'){var C='\r';if (B==B.parentNode.firstChild) C+='\r';return FCKXHtml._AppendNode(A,this.XML.createTextNode(C));};if (B.getAttribute('_fckfakelement')) return FCKXHtml._AppendNode(A,FCK.GetRealElement(B));if (FCKBrowserInfo.IsGecko&&B.nextSibling&&(B.hasAttribute('_moz_editor_bogus_node')||B.getAttribute('type')=='_moz')) return false;if (B.getAttribute('_fcktemp')) return false;var D=B.tagName.toLowerCase();if (FCKBrowserInfo.IsIE){if (B.scopeName&&B.scopeName!='HTML'&&B.scopeName!='FCK') D=B.scopeName.toLowerCase()+':'+D;}else{if (D.StartsWith('fck:')) D=D.Remove(0,4);};if (!FCKRegexLib.ElementName.test(D)) return false;if (B._fckxhtmljob&&B._fckxhtmljob==FCKXHtml.CurrentJobNum) return false;var E=this.XML.createElement(D);FCKXHtml._AppendAttributes(A,B,E,D);B._fckxhtmljob=FCKXHtml.CurrentJobNum;var F=FCKXHtml.TagProcessors[D];if (F) E=F(E,B,A);else E=this._AppendChildNodes(E,B,Boolean(FCKListsLib.NonEmptyBlockElements[D]));if (!E) return false;A.appendChild(E);break;case 3:if (B.parentNode&&B.parentNode.nodeName.IEquals('pre')) return this._AppendTextNode(A,B.nodeValue);return this._AppendTextNode(A,B.nodeValue.ReplaceNewLineChars(' '));case 8:if (FCKBrowserInfo.IsIE&&!B.innerHTML) break;try { A.appendChild(this.XML.createComment(B.nodeValue));}catch (e) {/*Do nothing... probably this is a wrong format comment.*/};break;default:A.appendChild(this.XML.createComment("Element not supported - Type: "+B.nodeType+" Name: "+B.nodeName));break;};return true;};FCKXHtml._AppendSpecialItem=function(A){return '___FCKsi___'+FCKXHtml.SpecialBlocks.AddItem(A);};FCKXHtml._AppendEntity=function(A,B){A.appendChild(this.XML.createTextNode('#?-:'+B+';'));};FCKXHtml._AppendTextNode=function(A,B){var C=B.length>0;if (C) A.appendChild(this.XML.createTextNode(B.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity)));return C;};function FCKXHtml_GetEntity(A){var B=FCKXHtmlEntities.Entities[A]||('#'+A.charCodeAt(0));return '#?-:'+B+';';};FCKXHtml.TagProcessors={a:function(A,B){if (B.innerHTML.Trim().length==0&&!B.name) return false;var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);};A=FCKXHtml._AppendChildNodes(A,B,false);return A;},area:function(A,B){var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (!A.attributes.getNamedItem('coords')){var D=B.getAttribute('coords',2);if (D&&D!='0,0,0') FCKXHtml._AppendAttribute(A,'coords',D);};if (!A.attributes.getNamedItem('shape')){var E=B.getAttribute('shape',2);if (E&&E.length>0) FCKXHtml._AppendAttribute(A,'shape',E.toLowerCase());}};return A;},body:function(A,B){A=FCKXHtml._AppendChildNodes(A,B,false);A.removeAttribute('spellcheck');return A;},iframe:function(A,B){var C=B.innerHTML;if (FCKBrowserInfo.IsGecko) C=FCKTools.HTMLDecode(C);C=C.replace(/\s_fcksavedurl="[^"]*"/g,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},img:function(A,B){if (!A.attributes.getNamedItem('alt')) FCKXHtml._AppendAttribute(A,'alt','');var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'src',C);return A;},li:function(A,B,C){if (C.nodeName.IEquals(['ul','ol'])) return FCKXHtml._AppendChildNodes(A,B,true);var D=FCKXHtml.XML.createElement('ul');B._fckxhtmljob=null;do{FCKXHtml._AppendNode(D,B);do{B=FCKDomTools.GetNextSibling(B);} while (B&&B.nodeType==3&&B.nodeValue.Trim().length==0)}	while (B&&B.nodeName.toLowerCase()=='li') return D;},ol:function(A,B,C){if (B.innerHTML.Trim().length==0) return false;var D=C.lastChild;if (D&&D.nodeType==3) D=D.previousSibling;if (D&&D.nodeName.toUpperCase()=='LI'){B._fckxhtmljob=null;FCKXHtml._AppendNode(D,B);return false;};A=FCKXHtml._AppendChildNodes(A,B);return A;},pre:function (A,B){var C=B.firstChild;if (C&&C.nodeType==3) A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem('\r\n')));FCKXHtml._AppendChildNodes(A,B,true);return A;},script:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/javascript');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.text)));return A;},span:function(A,B){if (B.innerHTML.length==0) return false;A=FCKXHtml._AppendChildNodes(A,B,false);return A;},style:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/css');var C=B.innerHTML;if (FCKBrowserInfo.IsIE) C=C.replace(/^(\r\n|\n|\r)/,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},title:function(A,B){A.appendChild(FCKXHtml.XML.createTextNode(FCK.EditorDocument.title));return A;}};FCKXHtml.TagProcessors.ul=FCKXHtml.TagProcessors.ol;
+FCKXHtml._GetMainXmlString=function(){return (new XMLSerializer()).serializeToString(this.MainNode);};FCKXHtml._AppendAttributes=function(A,B,C){var D=B.attributes;for (var n=0;n<D.length;n++){var E=D[n];if (E.specified){var F=E.nodeName.toLowerCase();var G;if (F.StartsWith('_fck')) continue;else if (F.indexOf('_moz')==0) continue;else if (F=='class'){G=E.nodeValue.replace(FCKRegexLib.FCK_Class,'');if (G.length==0) continue;}else if (E.nodeValue===true) G=F;else G=B.getAttribute(F,2);this._AppendAttribute(C,F,G);}}};if (FCKBrowserInfo.IsOpera){FCKXHtml.TagProcessors['head']=function(A,B){FCKXHtml.XML._HeadElement=A;A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['meta']=function(A,B,C){if (B.parentNode.nodeName.toLowerCase()!='head'){var D=FCKXHtml.XML._HeadElement;if (D&&C!=D){delete B._fckxhtmljob;FCKXHtml._AppendNode(D,B);return null;}};return A;}};
+var FCKCodeFormatter={};FCKCodeFormatter.Init=function(){var A=this.Regex={};A.BlocksOpener=/\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.BlocksCloser=/\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.NewLineTags=/\<(BR|HR)[^\>]*\>/gi;A.MainTags=/\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi;A.LineSplitter=/\s*\n+\s*/g;A.IncreaseIndent=/^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \/\>]/i;A.DecreaseIndent=/^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \>]/i;A.FormatIndentatorRemove=new RegExp('^'+FCKConfig.FormatIndentator);A.ProtectedTags=/(<PRE[^>]*>)([\s\S]*?)(<\/PRE>)/gi;};FCKCodeFormatter._ProtectData=function(A,B,C,D){return B+'___FCKpd___'+FCKCodeFormatter.ProtectedData.AddItem(C)+D;};FCKCodeFormatter.Format=function(A){if (!this.Regex) this.Init();FCKCodeFormatter.ProtectedData=[];var B=A.replace(this.Regex.ProtectedTags,FCKCodeFormatter._ProtectData);B=B.replace(this.Regex.BlocksOpener,'\n$&');B=B.replace(this.Regex.BlocksCloser,'$&\n');B=B.replace(this.Regex.NewLineTags,'$&\n');B=B.replace(this.Regex.MainTags,'\n$&\n');var C='';var D=B.split(this.Regex.LineSplitter);B='';for (var i=0;i<D.length;i++){var E=D[i];if (E.length==0) continue;if (this.Regex.DecreaseIndent.test(E)) C=C.replace(this.Regex.FormatIndentatorRemove,'');B+=C+E+'\n';if (this.Regex.IncreaseIndent.test(E)) C+=FCKConfig.FormatIndentator;};for (var j=0;j<FCKCodeFormatter.ProtectedData.length;j++){var F=new RegExp('___FCKpd___'+j);B=B.replace(F,FCKCodeFormatter.ProtectedData[j].replace(/\$/g,'$$$$'));};return B.Trim();};
+var FCKUndo={};FCKUndo.SavedData=[];FCKUndo.CurrentIndex=-1;FCKUndo.TypesCount=0;FCKUndo.Changed=false;FCKUndo.MaxTypes=25;FCKUndo.Typing=false;FCKUndo.SaveLocked=false;FCKUndo._GetBookmark=function(){FCKSelection.Restore();var A=new FCKDomRange(FCK.EditorWindow);try{A.MoveToSelection();}catch (e){return null;};if (FCKBrowserInfo.IsIE){var B=A.CreateBookmark();var C=FCK.EditorDocument.body.innerHTML;A.MoveToBookmark(B);return [B,C];};return A.CreateBookmark2();};FCKUndo._SelectBookmark=function(A){if (!A) return;var B=new FCKDomRange(FCK.EditorWindow);if (A instanceof Object){if (FCKBrowserInfo.IsIE) B.MoveToBookmark(A[0]);else B.MoveToBookmark2(A);try{B.Select();}catch (e){B.MoveToPosition(FCK.EditorDocument.body,4);B.Select();}}};FCKUndo._CompareCursors=function(A,B){for (var i=0;i<Math.min(A.length,B.length);i++){if (A[i]<B[i]) return-1;else if (A[i]>B[i]) return 1;};if (A.length<B.length) return-1;else if (A.length>B.length) return 1;return 0;};FCKUndo._CheckIsBookmarksEqual=function(A,B){if (!(A&&B)) return false;if (FCKBrowserInfo.IsIE){var C=A[1].search(A[0].StartId);var D=B[1].search(B[0].StartId);var E=A[1].search(A[0].EndId);var F=B[1].search(B[0].EndId);return C==D&&E==F;}else{return this._CompareCursors(A.Start,B.Start)==0&&this._CompareCursors(A.End,B.End)==0;}};FCKUndo.SaveUndoStep=function(){if (FCK.EditMode!=0||this.SaveLocked) return;if (this.SavedData.length) this.Changed=true;var A=FCK.EditorDocument.body.innerHTML;var B=this._GetBookmark();this.SavedData=this.SavedData.slice(0,this.CurrentIndex+1);if (this.CurrentIndex>0&&A==this.SavedData[this.CurrentIndex][0]&&this._CheckIsBookmarksEqual(B,this.SavedData[this.CurrentIndex][1])) return;else if (this.CurrentIndex==0&&this.SavedData.length&&A==this.SavedData[0][0]){this.SavedData[0][1]=B;return;};if (this.CurrentIndex+1>=FCKConfig.MaxUndoLevels) this.SavedData.shift();else this.CurrentIndex++;this.SavedData[this.CurrentIndex]=[A,B];FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.CheckUndoState=function(){return (this.Changed||this.CurrentIndex>0);};FCKUndo.CheckRedoState=function(){return (this.CurrentIndex<(this.SavedData.length-1));};FCKUndo.Undo=function(){if (this.CheckUndoState()){if (this.CurrentIndex==(this.SavedData.length-1)){this.SaveUndoStep();};this._ApplyUndoLevel(--this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo.Redo=function(){if (this.CheckRedoState()){this._ApplyUndoLevel(++this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo._ApplyUndoLevel=function(A){var B=this.SavedData[A];if (!B) return;if (FCKBrowserInfo.IsIE){if (B[1]&&B[1][1]) FCK.SetInnerHtml(B[1][1]);else FCK.SetInnerHtml(B[0]);}else FCK.EditorDocument.body.innerHTML=B[0];this._SelectBookmark(B[1]);this.TypesCount=0;this.Changed=false;this.Typing=false;};
+var FCKEditingArea=function(A){this.TargetElement=A;this.Mode=0;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKEditingArea_Cleanup);};FCKEditingArea.prototype.Start=function(A,B){var C=this.TargetElement;var D=FCKTools.GetElementDocument(C);while(C.firstChild) C.removeChild(C.firstChild);if (this.Mode==0){if (FCK_IS_CUSTOM_DOMAIN) A='<script>document.domain="'+FCK_RUNTIME_DOMAIN+'";</script>'+A;if (FCKBrowserInfo.IsIE) A=A.replace(/(<base[^>]*?)\s*\/?>(?!\s*<\/base>)/gi,'$1></base>');else if (!B){var E=A.match(FCKRegexLib.BeforeBody);var F=A.match(FCKRegexLib.AfterBody);if (E&&F){var G=A.substr(E[1].length,A.length-E[1].length-F[1].length);A=E[1]+'&nbsp;'+F[1];if (FCKBrowserInfo.IsGecko&&(G.length==0||FCKRegexLib.EmptyParagraph.test(G))) G='<br type="_moz">';this._BodyHTML=G;}else this._BodyHTML=A;};var H=this.IFrame=D.createElement('iframe');var I='<script type="text/javascript" _fcktemp="true">window.onerror=function(){return true;};</script>';H.frameBorder=0;H.width=H.height='100%';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=I+A;H.src='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.parent._FCKHtmlToLoad );document.close() ;window.parent._FCKHtmlToLoad = null ;})() )';}else if (!FCKBrowserInfo.IsGecko){H.src='javascript:void(0)';};C.appendChild(H);this.Window=H.contentWindow;if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){var J=this.Window.document;J.open();J.write(I+A);J.close();};if (FCKBrowserInfo.IsAIR) FCKAdobeAIR.EditingArea_Start(J,A);if (FCKBrowserInfo.IsGecko10&&!B){this.Start(A,true);return;};if (H.readyState&&H.readyState!='completed'){var K=this;(H.onreadystatechange=function(){if (H.readyState=='complete'){H.onreadystatechange=null;K.Window._FCKEditingArea=K;FCKEditingArea_CompleteStart.call(K.Window);}})();}else{this.Window._FCKEditingArea=this;if (FCKBrowserInfo.IsGecko10) this.Window.setTimeout(FCKEditingArea_CompleteStart,500);else FCKEditingArea_CompleteStart.call(this.Window);}}else{var L=this.Textarea=D.createElement('textarea');L.className='SourceField';L.dir='ltr';FCKDomTools.SetElementStyles(L,{width:'100%',height:'100%',border:'none',resize:'none',outline:'none'});C.appendChild(L);L.value=A;FCKTools.RunFunction(this.OnLoad);}};function FCKEditingArea_CompleteStart(){if (!this.document.body){this.setTimeout(FCKEditingArea_CompleteStart,50);return;};var A=this._FCKEditingArea;A.Document=A.Window.document;A.MakeEditable();FCKTools.RunFunction(A.OnLoad);};FCKEditingArea.prototype.MakeEditable=function(){var A=this.Document;if (FCKBrowserInfo.IsIE){A.body.disabled=true;A.body.contentEditable=true;A.body.removeAttribute("disabled");}else{try{A.body.spellcheck=(this.FFSpellChecker!==false);if (this._BodyHTML){A.body.innerHTML=this._BodyHTML;this._BodyHTML=null;};A.designMode='on';A.execCommand('enableObjectResizing',false,!FCKConfig.DisableObjectResizing);A.execCommand('enableInlineTableEditing',false,!FCKConfig.DisableFFTableHandles);}catch (e){FCKTools.AddEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);}}};function FCKEditingArea_Document_AttributeNodeModified(A){var B=A.currentTarget.contentWindow._FCKEditingArea;if (B._timer) window.clearTimeout(B._timer);B._timer=FCKTools.SetTimeout(FCKEditingArea_MakeEditableByMutation,1000,B);};function FCKEditingArea_MakeEditableByMutation(){delete this._timer;FCKTools.RemoveEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);this.MakeEditable();};FCKEditingArea.prototype.Focus=function(){try{if (this.Mode==0){if (FCKBrowserInfo.IsIE) this._FocusIE();else this.Window.focus();}else{var A=FCKTools.GetElementDocument(this.Textarea);if ((!A.hasFocus||A.hasFocus())&&A.activeElement==this.Textarea) return;this.Textarea.focus();}}catch(e) {}};FCKEditingArea.prototype._FocusIE=function(){this.Document.body.setActive();this.Window.focus();var A=this.Document.selection.createRange();var B=A.parentElement();var C=B.nodeName.toLowerCase();if (B.childNodes.length>0||!(FCKListsLib.BlockElements[C]||FCKListsLib.NonEmptyBlockElements[C])){return;};A=new FCKDomRange(this.Window);A.MoveToElementEditStart(B);A.Select();};function FCKEditingArea_Cleanup(){if (this.Document) this.Document.body.innerHTML="";this.TargetElement=null;this.IFrame=null;this.Document=null;this.Textarea=null;if (this.Window){this.Window._FCKEditingArea=null;this.Window=null;}};
 var FCKKeystrokeHandler=function(A){this.Keystrokes={};this.CancelCtrlDefaults=(A!==false);};FCKKeystrokeHandler.prototype.AttachToElement=function(A){FCKTools.AddEventListenerEx(A,'keydown',_FCKKeystrokeHandler_OnKeyDown,this);if (FCKBrowserInfo.IsGecko10||FCKBrowserInfo.IsOpera||(FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac)) FCKTools.AddEventListenerEx(A,'keypress',_FCKKeystrokeHandler_OnKeyPress,this);};FCKKeystrokeHandler.prototype.SetKeystrokes=function(){for (var i=0;i<arguments.length;i++){var A=arguments[i];if (!A) continue;if (typeof(A[0])=='object') this.SetKeystrokes.apply(this,A);else{if (A.length==1) delete this.Keystrokes[A[0]];else this.Keystrokes[A[0]]=A[1]===true?true:A;}}};function _FCKKeystrokeHandler_OnKeyDown(A,B){var C=A.keyCode||A.which;var D=0;if (A.ctrlKey||A.metaKey) D+=CTRL;if (A.shiftKey) D+=SHIFT;if (A.altKey) D+=ALT;var E=C+D;var F=B._CancelIt=false;var G=B.Keystrokes[E];if (G){if (G===true||!(B.OnKeystroke&&B.OnKeystroke.apply(B,G))) return true;F=true;};if (F||(B.CancelCtrlDefaults&&D==CTRL&&(C<33||C>40))){B._CancelIt=true;if (A.preventDefault) return A.preventDefault();A.returnValue=false;A.cancelBubble=true;return false;};return true;};function _FCKKeystrokeHandler_OnKeyPress(A,B){if (B._CancelIt){if (A.preventDefault) return A.preventDefault();return false;};return true;};
-FCK.DTD=(function(){X=FCKTools.Merge;var A,L,J,M,N,O,D,H,P,K,Q,F,G,C,B,E,I;A={isindex:1,fieldset:1};B={input:1,button:1,select:1,textarea:1,label:1};C=X({a:1},B);D=X({iframe:1},C);E={hr:1,ul:1,menu:1,div:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1};F={ins:1,del:1,script:1};G=X({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1},F);H=X({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1},G);I=X({p:1},H);J=X({iframe:1},H,B);K={img:1,noscript:1,br:1,kbd:1,center:1,button:1,basefont:1,h5:1,h4:1,samp:1,h6:1,ol:1,h1:1,h3:1,h2:1,form:1,font:1,'#':1,select:1,menu:1,ins:1,abbr:1,label:1,code:1,table:1,script:1,cite:1,input:1,iframe:1,strong:1,textarea:1,noframes:1,big:1,small:1,span:1,hr:1,sub:1,bdo:1,'var':1,div:1,object:1,sup:1,strike:1,dir:1,map:1,dl:1,applet:1,del:1,isindex:1,fieldset:1,ul:1,b:1,acronym:1,a:1,blockquote:1,i:1,u:1,s:1,tt:1,address:1,q:1,pre:1,p:1,em:1,dfn:1};L=X({a:1},J);M={tr:1};N={'#':1};O=X({param:1},K);P=X({form:1},A,D,E,I);Q={li:1};return {col:{},tr:{td:1,th:1},img:{},colgroup:{col:1},noscript:P,td:P,br:{},th:P,center:P,kbd:L,button:X(I,E),basefont:{},h5:L,h4:L,samp:L,h6:L,ol:Q,h1:L,h3:L,option:N,h2:L,form:X(A,D,E,I),select:{optgroup:1,option:1},font:J,ins:P,menu:Q,abbr:L,label:L,table:{thead:1,col:1,tbody:1,tr:1,colgroup:1,caption:1,tfoot:1},code:L,script:N,tfoot:M,cite:L,li:P,input:{},iframe:P,strong:J,textarea:N,noframes:P,big:J,small:J,span:J,hr:{},dt:L,sub:J,optgroup:{option:1},param:{},bdo:L,'var':J,div:P,object:O,sup:J,dd:P,strike:J,area:{},dir:Q,map:X({area:1,form:1,p:1},A,F,E),applet:O,dl:{dt:1,dd:1},del:P,isindex:{},fieldset:X({legend:1},K),thead:M,ul:Q,acronym:L,b:J,a:J,blockquote:P,caption:L,i:J,u:J,tbody:M,s:L,address:X(D,I),tt:J,legend:L,q:L,pre:X(G,C),p:L,em:J,dfn:L};})();
-var FCKStyle=function(A){this.Element=(A.Element||'span').toLowerCase();this._StyleDesc=A;};FCKStyle.prototype={GetType:function(){var A=this.GetType_$;if (A!=undefined) return A;var B=this.Element;if (B=='#'||FCKListsLib.StyleBlockElements[B]) A=0;else if (FCKListsLib.StyleObjectElements[B]) A=2;else A=1;return (this.GetType_$=A);},ApplyToSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.ApplyToRange(B,true);},ApplyToRange:function(A,B){switch (this.GetType()){case 0:this.ApplyToRange=this._ApplyBlockStyle;break;case 1:this.ApplyToRange=this._ApplyInlineStyle;break;default:return;};this.ApplyToRange(A,B);},ApplyToObject:function(A){if (!A) return;this.BuildElement(null,A);},RemoveFromSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.RemoveFromRange(B,true);},RemoveFromRange:function(A,B){var C;var D=this._GetAttribsForComparison();var E=this._GetOverridesForComparison();if (A.CheckIsCollapsed()){var C=A.CreateBookmark(true);var G=A.GetBookmarkNode(C,true);var H=new FCKElementPath(G.parentNode);var I=[];var J=!FCKDomTools.GetNextSibling(G);var K=J||!FCKDomTools.GetPreviousSibling(G);var L;var M=-1;for (var i=0;i<H.Elements.length;i++){var N=H.Elements[i];if (this.CheckElementRemovable(N)){if (K&&!FCKDomTools.CheckIsEmptyElement(N,function(el){return (el!=G);})){L=N;M=I.length-1;}else{var O=N.nodeName.toLowerCase();if (O==this.Element){for (var P in D){if (FCKDomTools.HasAttribute(N,P)){switch (P){case 'style':this._RemoveStylesFromElement(N);break;case 'class':if (FCKDomTools.GetAttributeValue(N,P)!=this.GetFinalAttributeValue(P)) continue;default:FCKDomTools.RemoveAttribute(N,P);}}}};this._RemoveOverrides(N,E[O]);this._RemoveNoAttribElement(N);}}else if (K) I.push(N);K=K&&((J&&!FCKDomTools.GetNextSibling(N))||(!J&&!FCKDomTools.GetPreviousSibling(N)));if (L&&(!K||(i==H.Elements.length-1))){var Q=FCKDomTools.RemoveNode(G);for (var j=0;j<=M;j++){var R=FCKDomTools.CloneElement(I[j]);R.appendChild(Q);Q=R;};if (J) FCKDomTools.InsertAfterNode(L,Q);else L.parentNode.insertBefore(Q,L);K=false;L=null;}};if (B) A.SelectBookmark(C);return;};A.Expand('inline_elements');var C=A.CreateBookmark(true);var T=A.GetBookmarkNode(C,true);var U=A.GetBookmarkNode(C,false);A.Release(true);var H=new FCKElementPath(T);var X=H.Elements;var N;for (var i=1;i<X.length;i++){N=X[i];if (N==H.Block||N==H.BlockLimit) break;if (this.CheckElementRemovable(N)) FCKDomTools.BreakParent(T,N,A);};H=new FCKElementPath(U);X=H.Elements;for (var i=1;i<X.length;i++){N=X[i];if (N==H.Block||N==H.BlockLimit) break;b=N.nodeName.toLowerCase();if (this.CheckElementRemovable(N)) FCKDomTools.BreakParent(U,N,A);};var Z=FCKDomTools.GetNextSourceNode(T,true);while (Z){var a=FCKDomTools.GetNextSourceNode(Z);if (Z.nodeType==1){var b=Z.nodeName.toLowerCase();var c=(b==this.Element);if (c){for (var P in D){if (FCKDomTools.HasAttribute(Z,P)){switch (P){case 'style':this._RemoveStylesFromElement(Z);break;case 'class':if (FCKDomTools.GetAttributeValue(Z,P)!=this.GetFinalAttributeValue(P)) continue;default:FCKDomTools.RemoveAttribute(Z,P);}}}}else c=!!E[b];if (c){this._RemoveOverrides(Z,E[b]);this._RemoveNoAttribElement(Z);}};if (a==U) break;Z=a;};this._FixBookmarkStart(T);if (B) A.SelectBookmark(C);},CheckElementRemovable:function(A,B){if (!A) return false;var C=A.nodeName.toLowerCase();if (C==this.Element){if (!B&&!FCKDomTools.HasAttributes(A)) return true;var D=this._GetAttribsForComparison();var E=(D._length==0);for (var F in D){if (F=='_length') continue;if (this._CompareAttributeValues(F,FCKDomTools.GetAttributeValue(A,F),(this.GetFinalAttributeValue(F)||''))){E=true;if (!B) break;}else{E=false;if (B) return false;}};if (E) return true;};var G=this._GetOverridesForComparison()[C];if (G){if (!(D=G.Attributes)) return true;for (var i=0;i<D.length;i++){var H=D[i][0];if (FCKDomTools.HasAttribute(A,H)){var I=D[i][1];if (I==null||(typeof I=='string'&&FCKDomTools.GetAttributeValue(A,H)==I)||I.test(FCKDomTools.GetAttributeValue(A,H))) return true;}}};return false;},CheckActive:function(A){switch (this.GetType()){case 0:return this.CheckElementRemovable(A.Block||A.BlockLimit);case 1:var B=A.Elements;for (var i=0;i<B.length;i++){var C=B[i];if (C==A.Block||C==A.BlockLimit) continue;if (this.CheckElementRemovable(C,true)) return true;}};return false;},RemoveFromElement:function(A){var B=this._GetAttribsForComparison();var C=this._GetOverridesForComparison();var D=A.getElementsByTagName(this.Element);for (var i=D.length-1;i>=0;i--){var E=D[i];for (var F in B){if (FCKDomTools.HasAttribute(E,F)){switch (F){case 'style':this._RemoveStylesFromElement(E);break;case 'class':if (FCKDomTools.GetAttributeValue(E,F)!=this.GetFinalAttributeValue(F)) continue;default:FCKDomTools.RemoveAttribute(E,F);}}};this._RemoveOverrides(E,C[this.Element]);this._RemoveNoAttribElement(E);};for (var G in C){if (G!=this.Element){D=A.getElementsByTagName(G);for (var i=D.length-1;i>=0;i--){var E=D[i];this._RemoveOverrides(E,C[G]);this._RemoveNoAttribElement(E);}}}},_RemoveStylesFromElement:function(A){var B=A.style.cssText;var C=this.GetFinalStyleValue();if (B.length>0&&C.length==0) return;C='(^|;)\\s*('+C.replace(/\s*([^ ]+):.*?(;|$)/g,'$1|').replace(/\|$/,'')+'):[^;]+';var D=new RegExp(C,'gi');B=B.replace(D,'').Trim();if (B.length==0||B==';') FCKDomTools.RemoveAttribute(A,'style');else A.style.cssText=B.replace(D,'');},_RemoveOverrides:function(A,B){var C=B&&B.Attributes;if (C){for (var i=0;i<C.length;i++){var D=C[i][0];if (FCKDomTools.HasAttribute(A,D)){var E=C[i][1];if (E==null||(E.test&&E.test(FCKDomTools.GetAttributeValue(A,D)))||(typeof E=='string'&&FCKDomTools.GetAttributeValue(A,D)==E)) FCKDomTools.RemoveAttribute(A,D);}}}},_RemoveNoAttribElement:function(A){if (!FCKDomTools.HasAttributes(A)){var B=A.firstChild;var C=A.lastChild;FCKDomTools.RemoveNode(A,true);this._MergeSiblings(B);if (B!=C) this._MergeSiblings(C);}},BuildElement:function(A,B){var C=B||A.createElement(this.Element);var D=this._StyleDesc.Attributes;var E;if (D){for (var F in D){E=this.GetFinalAttributeValue(F);if (F.toLowerCase()=='class') C.className=E;else C.setAttribute(F,E);}};if (this._GetStyleText().length>0) C.style.cssText=this.GetFinalStyleValue();return C;},_CompareAttributeValues:function(A,B,C){if (A=='style'&&B&&C){B=B.replace(/;$/,'').toLowerCase();C=C.replace(/;$/,'').toLowerCase();};return (B==C)},GetFinalAttributeValue:function(A){var B=this._StyleDesc.Attributes;var B=B?B[A]:null;if (!B&&A=='style') return this.GetFinalStyleValue();if (B&&this._Variables) B=B.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);return B;},GetFinalStyleValue:function(){var A=this._GetStyleText();if (A.length>0&&this._Variables){A=A.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);A=FCKTools.NormalizeCssText(A);};return A;},_GetVariableReplace:function(){return this._Variables[arguments[2]]||arguments[0];},SetVariable:function(A,B){var C=this._Variables;if (!C) C=this._Variables={};this._Variables[A]=B;},_ApplyBlockStyle:function(A,B){var C;if (B) C=A.CreateBookmark(true);var D=new FCKDomRangeIterator(A);D.EnforceRealBlocks=true;var E;while((E=D.GetNextParagraph())){var F=E.parentNode.insertBefore(this.BuildElement(A.Window.document),E);FCKDomTools.MoveChildren(E,F);FCKDomTools.RemoveNode(E);};if (B) A.SelectBookmark(C);},_ApplyInlineStyle:function(A,B){var C=A.Window.document;if (A.CheckIsCollapsed()){var D=this.BuildElement(C);A.InsertNode(D);A.MoveToPosition(D,2);A.Select();return;};var E=this.Element;var F=FCK.DTD[E]||FCK.DTD.span;var G=this._GetAttribsForComparison();var H;A.Expand('inline_elements');var I=A.CreateBookmark(true);var J=A.GetBookmarkNode(I,true);var K=A.GetBookmarkNode(I,false);A.Release(true);var L=FCKDomTools.GetNextSourceNode(J,true);while (L){var M=false;var N=L.nodeType;var O=N==1?L.nodeName.toLowerCase():null;if (!O||F[O]){if ((FCK.DTD[L.parentNode.nodeName.toLowerCase()]||FCK.DTD.span)[E]||!FCK.DTD[E]){if (!A.CheckHasRange()) A.SetStart(L,3);if (N!=1||L.childNodes.length==0){var P=L;var Q=P.parentNode;while (P==Q.lastChild&&F[Q.nodeName.toLowerCase()]){P=Q;};A.SetEnd(P,4);if (P==P.parentNode.lastChild&&!F[P.parentNode.nodeName.toLowerCase()]) M=true;}else{A.SetEnd(L,3);}}else M=true;}else M=true;L=FCKDomTools.GetNextSourceNode(L);if (L==K){L=null;M=true;};if (M&&A.CheckHasRange()&&!A.CheckIsCollapsed()){H=this.BuildElement(C);A.ExtractContents().AppendTo(H);if (H.innerHTML.RTrim().length>0){A.InsertNode(H);this.RemoveFromElement(H);this._MergeSiblings(H,this._GetAttribsForComparison());if (!FCKBrowserInfo.IsIE) H.normalize();};A.Release(true);}};this._FixBookmarkStart(J);if (B) A.SelectBookmark(I);},_FixBookmarkStart:function(A){var B;while ((B=A.nextSibling)){if (B.nodeType==1&&FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){if (!B.firstChild) FCKDomTools.RemoveNode(B);else FCKDomTools.MoveNode(A,B,true);continue;};if (B.nodeType==3&&B.length==0){FCKDomTools.RemoveNode(B);continue;};break;}},_MergeSiblings:function(A,B){if (!A||A.nodeType!=1||!FCKListsLib.InlineNonEmptyElements[A.nodeName.toLowerCase()]) return;this._MergeNextSibling(A,B);this._MergePreviousSibling(A,B);},_MergeNextSibling:function(A,B){var C=A.nextSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.nextSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.lastChild;if (D) FCKDomTools.MoveNode(A.nextSibling,A);FCKDomTools.MoveChildren(C,A);FCKDomTools.RemoveNode(C);if (E) this._MergeNextSibling(E);}}},_MergePreviousSibling:function(A,B){var C=A.previousSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.previousSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.firstChild;if (D) FCKDomTools.MoveNode(A.previousSibling,A,true);FCKDomTools.MoveChildren(C,A,true);FCKDomTools.RemoveNode(C);if (E) this._MergePreviousSibling(E);}}},_GetStyleText:function(){var A=this._StyleDesc.Styles;var B=(this._StyleDesc.Attributes?this._StyleDesc.Attributes['style']||'':'');if (B.length>0) B+=';';for (var C in A) B+=C+':'+A[C]+';';if (B.length>0&&!(/#\(/.test(B))){B=FCKTools.NormalizeCssText(B);};return (this._GetStyleText=function() { return B;})();},_GetAttribsForComparison:function(){var A=this._GetAttribsForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Attributes;if (B){for (var C in B){A[C.toLowerCase()]=B[C].toLowerCase();}};if (this._GetStyleText().length>0){A['style']=this._GetStyleText().toLowerCase();};FCKTools.AppendLengthProperty(A,'_length');return (this._GetAttribsForComparison_$=A);},_GetOverridesForComparison:function(){var A=this._GetOverridesForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Overrides;if (B){if (!FCKTools.IsArray(B)) B=[B];for (var i=0;i<B.length;i++){var C=B[i];var D;var E;var F;if (typeof C=='string') D=C.toLowerCase();else{D=C.Element?C.Element.toLowerCase():this.Element;F=C.Attributes;};E=A[D]||(A[D]={});if (F){var G=(E.Attributes=E.Attributes||[]);for (var H in F){G.push([H.toLowerCase(),F[H]]);}}}};return (this._GetOverridesForComparison_$=A);},_CreateElementAttribsForComparison:function(A){var B={};var C=0;for (var i=0;i<A.attributes.length;i++){var D=A.attributes[i];if (D.specified){B[D.nodeName.toLowerCase()]=FCKDomTools.GetAttributeValue(A,D).toLowerCase();C++;}};B._length=C;return B;},_CheckAttributesMatch:function(A,B){var C=A.attributes;var D=0;for (var i=0;i<C.length;i++){var E=C[i];if (E.specified){var F=E.nodeName.toLowerCase();var G=B[F];if (!G) break;if (G!=FCKDomTools.GetAttributeValue(A,E).toLowerCase()) break;D++;}};return (D==B._length);}};
-var FCKStyles=FCK.Styles={_Callbacks:{},_ObjectStyles:{},ApplyStyle:function(A){if (typeof A=='string') A=this.GetStyles()[A];if (A){if (A.GetType()==2) A.ApplyToObject(FCKSelection.GetSelectedElement());else A.ApplyToSelection(FCK.EditorWindow);FCK.Events.FireEvent('OnSelectionChange');}},RemoveStyle:function(A){if (typeof A=='string') A=this.GetStyles()[A];if (A){A.RemoveFromSelection(FCK.EditorWindow);FCK.Events.FireEvent('OnSelectionChange');}},AttachStyleStateChange:function(A,B,C){var D=this._Callbacks[A];if (!D) D=this._Callbacks[A]=[];D.push([B,C]);},CheckSelectionChanges:function(){var A=FCKSelection.GetBoundaryParentElement(true);if (!A) return;var B=new FCKElementPath(A);var C=this.GetStyles();for (var D in C){var E=this._Callbacks[D];if (E){var F=C[D];var G=F.CheckActive(B);if (F._LastState!=G){F._LastState=G;for (var i=0;i<E.length;i++){var H=E[i][0];var I=E[i][1];H.call(I||window,D,G);}}}}},CheckStyleInSelection:function(A){return false;},_GetRemoveFormatTagsRegex:function (){var A=new RegExp('^(?:'+FCKConfig.RemoveFormatTags.replace(/,/g,'|')+')$','i');return (this._GetRemoveFormatTagsRegex=function(){return A;})&&A;},RemoveAll:function(){var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();if (A.CheckIsCollapsed()) return;A.Expand('inline_elements');var B=A.CreateBookmark(true);var C=A.GetBookmarkNode(B,true);var D=A.GetBookmarkNode(B,false);A.Release(true);var E=this._GetRemoveFormatTagsRegex();var F=new FCKElementPath(C);var G=F.Elements;var H;for (var i=1;i<G.length;i++){H=G[i];if (H==F.Block||H==F.BlockLimit) break;if (E.test(H.nodeName)) FCKDomTools.BreakParent(C,H,A);};F=new FCKElementPath(D);G=F.Elements;for (var i=1;i<G.length;i++){H=G[i];if (H==F.Block||H==F.BlockLimit) break;elementName=H.nodeName.toLowerCase();if (E.test(H.nodeName)) FCKDomTools.BreakParent(D,H,A);};var I=FCKDomTools.GetNextSourceNode(C,true,1);while (I){if (I==D) break;var J=FCKDomTools.GetNextSourceNode(I,false,1);if (E.test(I.nodeName)) FCKDomTools.RemoveNode(I,true);I=J;};A.SelectBookmark(B);FCK.Events.FireEvent('OnSelectionChange');},GetStyle:function(A){return this.GetStyles()[A];},GetStyles:function(){var A=this._GetStyles;if (!A){A=this._GetStyles=FCKTools.Merge(this._LoadStylesCore(),this._LoadStylesCustom(),this._LoadStylesXml());};return A;},CheckHasObjectStyle:function(A){return!!this._ObjectStyles[A];},_LoadStylesCore:function(){var A={};var B=FCKConfig.CoreStyles;for (var C in B){var D=A['_FCK_'+C]=new FCKStyle(B[C]);D.IsCore=true;};return A;},_LoadStylesCustom:function(){var A={};var B=FCKConfig.CustomStyles;if (B){for (var C in B){var D=A[C]=new FCKStyle(B[C]);D.Name=C;}};return A;},_LoadStylesXml:function(){var A={};var B=FCKConfig.StylesXmlPath;if (!B||B.length==0) return A;var C=new FCKXml();C.LoadUrl(B);var D=FCKXml.TransformToObject(C.SelectSingleNode('Styles'));var E=D.$Style;if (!E) return A;for (var i=0;i<E.length;i++){var F=E[i];var G=(F.element||'').toLowerCase();if (G.length==0) throw('The element name is required. Error loading "'+B+'"');var H={Element:G,Attributes:{},Styles:{},Overrides:[]};var I=F.$Attribute||[];for (var j=0;j<I.length;j++){H.Attributes[I[j].name]=I[j].value;};var J=F.$Style||[];for (j=0;j<J.length;j++){H.Styles[J[j].name]=J[j].value;};var K=F.$Override;if (K){for (j=0;j<K.length;j++){var L=K[j];var M={Element:L.element};var N=L.$Attribute;if (N){M.Attributes={};for (var k=0;k<N.length;k++){var O=N[k].value||null;if (O){var P=O&&FCKRegexLib.RegExp.exec(O);if (P) O=new RegExp(P[1],P[2]||'');};M.Attributes[N[k].name]=O;}};H.Overrides.push(M);}};var Q=new FCKStyle(H);Q.Name=F.name||G;if (Q.GetType()==2) this._ObjectStyles[G]=true;A[Q.Name]=Q;};return A;}};
+FCK.DTD=(function(){var X=FCKTools.Merge;var A,L,J,M,N,O,D,H,P,K,Q,F,G,C,B,E,I;A={isindex:1,fieldset:1};B={input:1,button:1,select:1,textarea:1,label:1};C=X({a:1},B);D=X({iframe:1},C);E={hr:1,ul:1,menu:1,div:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1};F={ins:1,del:1,script:1};G=X({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1},F);H=X({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1},G);I=X({p:1},H);J=X({iframe:1},H,B);K={img:1,noscript:1,br:1,kbd:1,center:1,button:1,basefont:1,h5:1,h4:1,samp:1,h6:1,ol:1,h1:1,h3:1,h2:1,form:1,font:1,'#':1,select:1,menu:1,ins:1,abbr:1,label:1,code:1,table:1,script:1,cite:1,input:1,iframe:1,strong:1,textarea:1,noframes:1,big:1,small:1,span:1,hr:1,sub:1,bdo:1,'var':1,div:1,object:1,sup:1,strike:1,dir:1,map:1,dl:1,applet:1,del:1,isindex:1,fieldset:1,ul:1,b:1,acronym:1,a:1,blockquote:1,i:1,u:1,s:1,tt:1,address:1,q:1,pre:1,p:1,em:1,dfn:1};L=X({a:1},J);M={tr:1};N={'#':1};O=X({param:1},K);P=X({form:1},A,D,E,I);Q={li:1};return {col:{},tr:{td:1,th:1},img:{},colgroup:{col:1},noscript:P,td:P,br:{},th:P,center:P,kbd:L,button:X(I,E),basefont:{},h5:L,h4:L,samp:L,h6:L,ol:Q,h1:L,h3:L,option:N,h2:L,form:X(A,D,E,I),select:{optgroup:1,option:1},font:J,ins:P,menu:Q,abbr:L,label:L,table:{thead:1,col:1,tbody:1,tr:1,colgroup:1,caption:1,tfoot:1},code:L,script:N,tfoot:M,cite:L,li:P,input:{},iframe:P,strong:J,textarea:N,noframes:P,big:J,small:J,span:J,hr:{},dt:L,sub:J,optgroup:{option:1},param:{},bdo:L,'var':J,div:P,object:O,sup:J,dd:P,strike:J,area:{},dir:Q,map:X({area:1,form:1,p:1},A,F,E),applet:O,dl:{dt:1,dd:1},del:P,isindex:{},fieldset:X({legend:1},K),thead:M,ul:Q,acronym:L,b:J,a:J,blockquote:P,caption:L,i:J,u:J,tbody:M,s:L,address:X(D,I),tt:J,legend:L,q:L,pre:X(G,C),p:L,em:J,dfn:L};})();
+var FCKStyle=function(A){this.Element=(A.Element||'span').toLowerCase();this._StyleDesc=A;};FCKStyle.prototype={GetType:function(){var A=this.GetType_$;if (A!=undefined) return A;var B=this.Element;if (B=='#'||FCKListsLib.StyleBlockElements[B]) A=0;else if (FCKListsLib.StyleObjectElements[B]) A=2;else A=1;return (this.GetType_$=A);},ApplyToSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.ApplyToRange(B,true);},ApplyToRange:function(A,B,C){switch (this.GetType()){case 0:this.ApplyToRange=this._ApplyBlockStyle;break;case 1:this.ApplyToRange=this._ApplyInlineStyle;break;default:return;};this.ApplyToRange(A,B,C);},ApplyToObject:function(A){if (!A) return;this.BuildElement(null,A);},RemoveFromSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.RemoveFromRange(B,true);},RemoveFromRange:function(A,B,C){var D;var E=this._GetAttribsForComparison();var F=this._GetOverridesForComparison();if (A.CheckIsCollapsed()){var D=A.CreateBookmark(true);var H=A.GetBookmarkNode(D,true);var I=new FCKElementPath(H.parentNode);var J=[];var K=!FCKDomTools.GetNextSibling(H);var L=K||!FCKDomTools.GetPreviousSibling(H);var M;var N=-1;for (var i=0;i<I.Elements.length;i++){var O=I.Elements[i];if (this.CheckElementRemovable(O)){if (L&&!FCKDomTools.CheckIsEmptyElement(O,function(el){return (el!=H);})){M=O;N=J.length-1;}else{var P=O.nodeName.toLowerCase();if (P==this.Element){for (var Q in E){if (FCKDomTools.HasAttribute(O,Q)){switch (Q){case 'style':this._RemoveStylesFromElement(O);break;case 'class':if (FCKDomTools.GetAttributeValue(O,Q)!=this.GetFinalAttributeValue(Q)) continue;default:FCKDomTools.RemoveAttribute(O,Q);}}}};this._RemoveOverrides(O,F[P]);if (this.GetType()==1) this._RemoveNoAttribElement(O);}}else if (L) J.push(O);L=L&&((K&&!FCKDomTools.GetNextSibling(O))||(!K&&!FCKDomTools.GetPreviousSibling(O)));if (M&&(!L||(i==I.Elements.length-1))){var R=FCKDomTools.RemoveNode(H);for (var j=0;j<=N;j++){var S=FCKDomTools.CloneElement(J[j]);S.appendChild(R);R=S;};if (K) FCKDomTools.InsertAfterNode(M,R);else M.parentNode.insertBefore(R,M);L=false;M=null;}};if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);return;};A.Expand('inline_elements');D=A.CreateBookmark(true);var T=A.GetBookmarkNode(D,true);var U=A.GetBookmarkNode(D,false);A.Release(true);var I=new FCKElementPath(T);var X=I.Elements;var O;for (var i=1;i<X.length;i++){O=X[i];if (O==I.Block||O==I.BlockLimit) break;if (this.CheckElementRemovable(O)) FCKDomTools.BreakParent(T,O,A);};I=new FCKElementPath(U);X=I.Elements;for (var i=1;i<X.length;i++){O=X[i];if (O==I.Block||O==I.BlockLimit) break;b=O.nodeName.toLowerCase();if (this.CheckElementRemovable(O)) FCKDomTools.BreakParent(U,O,A);};var Z=FCKDomTools.GetNextSourceNode(T,true);while (Z){var a=FCKDomTools.GetNextSourceNode(Z);if (Z.nodeType==1){var b=Z.nodeName.toLowerCase();var c=(b==this.Element);if (c){for (var Q in E){if (FCKDomTools.HasAttribute(Z,Q)){switch (Q){case 'style':this._RemoveStylesFromElement(Z);break;case 'class':if (FCKDomTools.GetAttributeValue(Z,Q)!=this.GetFinalAttributeValue(Q)) continue;default:FCKDomTools.RemoveAttribute(Z,Q);}}}}else c=!!F[b];if (c){this._RemoveOverrides(Z,F[b]);this._RemoveNoAttribElement(Z);}};if (a==U) break;Z=a;};this._FixBookmarkStart(T);if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);},CheckElementRemovable:function(A,B){if (!A) return false;var C=A.nodeName.toLowerCase();if (C==this.Element){if (!B&&!FCKDomTools.HasAttributes(A)) return true;var D=this._GetAttribsForComparison();var E=(D._length==0);for (var F in D){if (F=='_length') continue;if (this._CompareAttributeValues(F,FCKDomTools.GetAttributeValue(A,F),(this.GetFinalAttributeValue(F)||''))){E=true;if (!B) break;}else{E=false;if (B) return false;}};if (E) return true;};var G=this._GetOverridesForComparison()[C];if (G){if (!(D=G.Attributes)) return true;for (var i=0;i<D.length;i++){var H=D[i][0];if (FCKDomTools.HasAttribute(A,H)){var I=D[i][1];if (I==null||(typeof I=='string'&&FCKDomTools.GetAttributeValue(A,H)==I)||I.test(FCKDomTools.GetAttributeValue(A,H))) return true;}}};return false;},CheckActive:function(A){switch (this.GetType()){case 0:return this.CheckElementRemovable(A.Block||A.BlockLimit,true);case 1:var B=A.Elements;for (var i=0;i<B.length;i++){var C=B[i];if (C==A.Block||C==A.BlockLimit) continue;if (this.CheckElementRemovable(C,true)) return true;}};return false;},RemoveFromElement:function(A){var B=this._GetAttribsForComparison();var C=this._GetOverridesForComparison();var D=A.getElementsByTagName(this.Element);for (var i=D.length-1;i>=0;i--){var E=D[i];for (var F in B){if (FCKDomTools.HasAttribute(E,F)){switch (F){case 'style':this._RemoveStylesFromElement(E);break;case 'class':if (FCKDomTools.GetAttributeValue(E,F)!=this.GetFinalAttributeValue(F)) continue;default:FCKDomTools.RemoveAttribute(E,F);}}};this._RemoveOverrides(E,C[this.Element]);this._RemoveNoAttribElement(E);};for (var G in C){if (G!=this.Element){D=A.getElementsByTagName(G);for (var i=D.length-1;i>=0;i--){var E=D[i];this._RemoveOverrides(E,C[G]);this._RemoveNoAttribElement(E);}}}},_RemoveStylesFromElement:function(A){var B=A.style.cssText;var C=this.GetFinalStyleValue();if (B.length>0&&C.length==0) return;C='(^|;)\\s*('+C.replace(/\s*([^ ]+):.*?(;|$)/g,'$1|').replace(/\|$/,'')+'):[^;]+';var D=new RegExp(C,'gi');B=B.replace(D,'').Trim();if (B.length==0||B==';') FCKDomTools.RemoveAttribute(A,'style');else A.style.cssText=B.replace(D,'');},_RemoveOverrides:function(A,B){var C=B&&B.Attributes;if (C){for (var i=0;i<C.length;i++){var D=C[i][0];if (FCKDomTools.HasAttribute(A,D)){var E=C[i][1];if (E==null||(E.test&&E.test(FCKDomTools.GetAttributeValue(A,D)))||(typeof E=='string'&&FCKDomTools.GetAttributeValue(A,D)==E)) FCKDomTools.RemoveAttribute(A,D);}}}},_RemoveNoAttribElement:function(A){if (!FCKDomTools.HasAttributes(A)){var B=A.firstChild;var C=A.lastChild;FCKDomTools.RemoveNode(A,true);this._MergeSiblings(B);if (B!=C) this._MergeSiblings(C);}},BuildElement:function(A,B){var C=B||A.createElement(this.Element);var D=this._StyleDesc.Attributes;var E;if (D){for (var F in D){E=this.GetFinalAttributeValue(F);if (F.toLowerCase()=='class') C.className=E;else C.setAttribute(F,E);}};if (this._GetStyleText().length>0) C.style.cssText=this.GetFinalStyleValue();return C;},_CompareAttributeValues:function(A,B,C){if (A=='style'&&B&&C){B=B.replace(/;$/,'').toLowerCase();C=C.replace(/;$/,'').toLowerCase();};return (B==C||((B===null||B==='')&&(C===null||C==='')))},GetFinalAttributeValue:function(A){var B=this._StyleDesc.Attributes;var B=B?B[A]:null;if (!B&&A=='style') return this.GetFinalStyleValue();if (B&&this._Variables) B=B.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);return B;},GetFinalStyleValue:function(){var A=this._GetStyleText();if (A.length>0&&this._Variables){A=A.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);A=FCKTools.NormalizeCssText(A);};return A;},_GetVariableReplace:function(){return this._Variables[arguments[2]]||arguments[0];},SetVariable:function(A,B){var C=this._Variables;if (!C) C=this._Variables={};this._Variables[A]=B;},_FromPre:function(A,B,C){var D=B.innerHTML;D=D.replace(/(\r\n|\r)/g,'\n');D=D.replace(/^[ \t]*\n/,'');D=D.replace(/\n$/,'');D=D.replace(/^[ \t]+|[ \t]+$/g,function(match,offset,s){if (match.length==1) return '&nbsp;';else if (offset==0) return new Array(match.length).join('&nbsp;')+' ';else return ' '+new Array(match.length).join('&nbsp;');});var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag){value=value.replace(/\n/g,'<BR>');value=value.replace(/[ \t]{2,}/g,function (match){return new Array(match.length).join('&nbsp;')+' ';});};F.push(value);});C.innerHTML=F.join('');return C;},_ToPre:function(A,B,C){var D=B.innerHTML.Trim();D=D.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,'<BR />');var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag) value=value.replace(/([ \t\n\r]+|&nbsp;)/g,' ');else if (isTag&&value=='<BR />') value='\n';F.push(value);});if (FCKBrowserInfo.IsIE){var G=A.createElement('div');G.appendChild(C);C.outerHTML='<PRE>\n'+F.join('')+'</PRE>';C=G.removeChild(G.firstChild);}else C.innerHTML=F.join('');return C;},_ApplyBlockStyle:function(A,B,C){var D;if (B) D=A.CreateBookmark();var E=new FCKDomRangeIterator(A);E.EnforceRealBlocks=true;var F;var G=A.Window.document;var H=[];var I=[];while((F=E.GetNextParagraph())){var J=this.BuildElement(G);var K=J.nodeName.IEquals('pre');var L=F.nodeName.IEquals('pre');if (K&&!L){J=this._ToPre(G,F,J);H.push(J);}else if (!K&&L){J=this._FromPre(G,F,J);I.push(J);}else FCKDomTools.MoveChildren(F,J);F.parentNode.insertBefore(J,F);FCKDomTools.RemoveNode(F);};for (var i=0;i<H.length-1;i++){if (FCKDomTools.GetNextSourceElement(H[i],true,[],[],true)!=H[i+1]) continue;H[i+1].innerHTML=H[i].innerHTML+'\n\n'+H[i+1].innerHTML;FCKDomTools.RemoveNode(H[i]);};for (var i=0;i<I.length;i++){var M=I[i];var N=null;for (var j=0;j<M.childNodes.length;j++){var O=M.childNodes[j];if (O.nodeName.IEquals('br')&&j!=0&&j!=M.childNodes.length-2&&O.nextSibling&&O.nextSibling.nodeName.IEquals('br')){FCKDomTools.RemoveNode(O.nextSibling);FCKDomTools.RemoveNode(O);j--;N=FCKDomTools.InsertAfterNode(N||M,G.createElement(M.nodeName));continue;};if (N){FCKDomTools.MoveNode(O,N);j--;}}};if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);},_ApplyInlineStyle:function(A,B,C){var D=A.Window.document;if (A.CheckIsCollapsed()){var E=this.BuildElement(D);A.InsertNode(E);A.MoveToPosition(E,2);A.Select();return;};var F=this.Element;var G=FCK.DTD[F]||FCK.DTD.span;var H=this._GetAttribsForComparison();var I;A.Expand('inline_elements');var J=A.CreateBookmark(true);var K=A.GetBookmarkNode(J,true);var L=A.GetBookmarkNode(J,false);A.Release(true);var M=FCKDomTools.GetNextSourceNode(K,true);while (M){var N=false;var O=M.nodeType;var P=O==1?M.nodeName.toLowerCase():null;if (!P||G[P]){if ((FCK.DTD[M.parentNode.nodeName.toLowerCase()]||FCK.DTD.span)[F]||!FCK.DTD[F]){if (!A.CheckHasRange()) A.SetStart(M,3);if (O!=1||M.childNodes.length==0){var Q=M;var R=Q.parentNode;while (Q==R.lastChild&&G[R.nodeName.toLowerCase()]){Q=R;};A.SetEnd(Q,4);if (Q==Q.parentNode.lastChild&&!G[Q.parentNode.nodeName.toLowerCase()]) N=true;}else{A.SetEnd(M,3);}}else N=true;}else N=true;M=FCKDomTools.GetNextSourceNode(M);if (M==L){M=null;N=true;};if (N&&A.CheckHasRange()&&!A.CheckIsCollapsed()){I=this.BuildElement(D);A.ExtractContents().AppendTo(I);if (I.innerHTML.RTrim().length>0){A.InsertNode(I);this.RemoveFromElement(I);this._MergeSiblings(I,this._GetAttribsForComparison());if (!FCKBrowserInfo.IsIE) I.normalize();};A.Release(true);}};this._FixBookmarkStart(K);if (B) A.SelectBookmark(J);if (C) A.MoveToBookmark(J);},_FixBookmarkStart:function(A){var B;while ((B=A.nextSibling)){if (B.nodeType==1&&FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){if (!B.firstChild) FCKDomTools.RemoveNode(B);else FCKDomTools.MoveNode(A,B,true);continue;};if (B.nodeType==3&&B.length==0){FCKDomTools.RemoveNode(B);continue;};break;}},_MergeSiblings:function(A,B){if (!A||A.nodeType!=1||!FCKListsLib.InlineNonEmptyElements[A.nodeName.toLowerCase()]) return;this._MergeNextSibling(A,B);this._MergePreviousSibling(A,B);},_MergeNextSibling:function(A,B){var C=A.nextSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.nextSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.lastChild;if (D) FCKDomTools.MoveNode(A.nextSibling,A);FCKDomTools.MoveChildren(C,A);FCKDomTools.RemoveNode(C);if (E) this._MergeNextSibling(E);}}},_MergePreviousSibling:function(A,B){var C=A.previousSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.previousSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.firstChild;if (D) FCKDomTools.MoveNode(A.previousSibling,A,true);FCKDomTools.MoveChildren(C,A,true);FCKDomTools.RemoveNode(C);if (E) this._MergePreviousSibling(E);}}},_GetStyleText:function(){var A=this._StyleDesc.Styles;var B=(this._StyleDesc.Attributes?this._StyleDesc.Attributes['style']||'':'');if (B.length>0) B+=';';for (var C in A) B+=C+':'+A[C]+';';if (B.length>0&&!(/#\(/.test(B))){B=FCKTools.NormalizeCssText(B);};return (this._GetStyleText=function() { return B;})();},_GetAttribsForComparison:function(){var A=this._GetAttribsForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Attributes;if (B){for (var C in B){A[C.toLowerCase()]=B[C].toLowerCase();}};if (this._GetStyleText().length>0){A['style']=this._GetStyleText().toLowerCase();};FCKTools.AppendLengthProperty(A,'_length');return (this._GetAttribsForComparison_$=A);},_GetOverridesForComparison:function(){var A=this._GetOverridesForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Overrides;if (B){if (!FCKTools.IsArray(B)) B=[B];for (var i=0;i<B.length;i++){var C=B[i];var D;var E;var F;if (typeof C=='string') D=C.toLowerCase();else{D=C.Element?C.Element.toLowerCase():this.Element;F=C.Attributes;};E=A[D]||(A[D]={});if (F){var G=(E.Attributes=E.Attributes||[]);for (var H in F){G.push([H.toLowerCase(),F[H]]);}}}};return (this._GetOverridesForComparison_$=A);},_CreateElementAttribsForComparison:function(A){var B={};var C=0;for (var i=0;i<A.attributes.length;i++){var D=A.attributes[i];if (D.specified){B[D.nodeName.toLowerCase()]=FCKDomTools.GetAttributeValue(A,D).toLowerCase();C++;}};B._length=C;return B;},_CheckAttributesMatch:function(A,B){var C=A.attributes;var D=0;for (var i=0;i<C.length;i++){var E=C[i];if (E.specified){var F=E.nodeName.toLowerCase();var G=B[F];if (!G) break;if (G!=FCKDomTools.GetAttributeValue(A,E).toLowerCase()) break;D++;}};return (D==B._length);}};
+var FCKStyles=FCK.Styles={_Callbacks:{},_ObjectStyles:{},ApplyStyle:function(A){if (typeof A=='string') A=this.GetStyles()[A];if (A){if (A.GetType()==2) A.ApplyToObject(FCKSelection.GetSelectedElement());else A.ApplyToSelection(FCK.EditorWindow);FCK.Events.FireEvent('OnSelectionChange');}},RemoveStyle:function(A){if (typeof A=='string') A=this.GetStyles()[A];if (A){A.RemoveFromSelection(FCK.EditorWindow);FCK.Events.FireEvent('OnSelectionChange');}},AttachStyleStateChange:function(A,B,C){var D=this._Callbacks[A];if (!D) D=this._Callbacks[A]=[];D.push([B,C]);},CheckSelectionChanges:function(){var A=FCKSelection.GetBoundaryParentElement(true);if (!A) return;var B=new FCKElementPath(A);var C=this.GetStyles();for (var D in C){var E=this._Callbacks[D];if (E){var F=C[D];var G=F.CheckActive(B);if (G!=(F._LastState||null)){F._LastState=G;for (var i=0;i<E.length;i++){var H=E[i][0];var I=E[i][1];H.call(I||window,D,G);}}}}},CheckStyleInSelection:function(A){return false;},_GetRemoveFormatTagsRegex:function (){var A=new RegExp('^(?:'+FCKConfig.RemoveFormatTags.replace(/,/g,'|')+')$','i');return (this._GetRemoveFormatTagsRegex=function(){return A;})&&A;},RemoveAll:function(){var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();if (A.CheckIsCollapsed()) return;A.Expand('inline_elements');var B=A.CreateBookmark(true);var C=A.GetBookmarkNode(B,true);var D=A.GetBookmarkNode(B,false);A.Release(true);var E=this._GetRemoveFormatTagsRegex();var F=new FCKElementPath(C);var G=F.Elements;var H;for (var i=1;i<G.length;i++){H=G[i];if (H==F.Block||H==F.BlockLimit) break;if (E.test(H.nodeName)) FCKDomTools.BreakParent(C,H,A);};F=new FCKElementPath(D);G=F.Elements;for (var i=1;i<G.length;i++){H=G[i];if (H==F.Block||H==F.BlockLimit) break;elementName=H.nodeName.toLowerCase();if (E.test(H.nodeName)) FCKDomTools.BreakParent(D,H,A);};var I=FCKDomTools.GetNextSourceNode(C,true,1);while (I){if (I==D) break;var J=FCKDomTools.GetNextSourceNode(I,false,1);if (E.test(I.nodeName)) FCKDomTools.RemoveNode(I,true);else FCKDomTools.RemoveAttributes(I,FCKConfig.RemoveAttributesArray);I=J;};A.SelectBookmark(B);FCK.Events.FireEvent('OnSelectionChange');},GetStyle:function(A){return this.GetStyles()[A];},GetStyles:function(){var A=this._GetStyles;if (!A){A=this._GetStyles=FCKTools.Merge(this._LoadStylesCore(),this._LoadStylesCustom(),this._LoadStylesXml());};return A;},CheckHasObjectStyle:function(A){return!!this._ObjectStyles[A];},_LoadStylesCore:function(){var A={};var B=FCKConfig.CoreStyles;for (var C in B){var D=A['_FCK_'+C]=new FCKStyle(B[C]);D.IsCore=true;};return A;},_LoadStylesCustom:function(){var A={};var B=FCKConfig.CustomStyles;if (B){for (var C in B){var D=A[C]=new FCKStyle(B[C]);D.Name=C;}};return A;},_LoadStylesXml:function(){var A={};var B=FCKConfig.StylesXmlPath;if (!B||B.length==0) return A;var C=new FCKXml();C.LoadUrl(B);var D=FCKXml.TransformToObject(C.SelectSingleNode('Styles'));var E=D.$Style;if (!E) return A;for (var i=0;i<E.length;i++){var F=E[i];var G=(F.element||'').toLowerCase();if (G.length==0) throw('The element name is required. Error loading "'+B+'"');var H={Element:G,Attributes:{},Styles:{},Overrides:[]};var I=F.$Attribute||[];for (var j=0;j<I.length;j++){H.Attributes[I[j].name]=I[j].value;};var J=F.$Style||[];for (j=0;j<J.length;j++){H.Styles[J[j].name]=J[j].value;};var K=F.$Override;if (K){for (j=0;j<K.length;j++){var L=K[j];var M={Element:L.element};var N=L.$Attribute;if (N){M.Attributes={};for (var k=0;k<N.length;k++){var O=N[k].value||null;if (O){var P=O&&FCKRegexLib.RegExp.exec(O);if (P) O=new RegExp(P[1],P[2]||'');};M.Attributes[N[k].name]=O;}};H.Overrides.push(M);}};var Q=new FCKStyle(H);Q.Name=F.name||G;if (Q.GetType()==2) this._ObjectStyles[G]=true;A[Q.Name]=Q;};return A;}};
 var FCKListHandler={OutdentListItem:function(A){var B=A.parentNode;if (B.tagName.toUpperCase().Equals('UL','OL')){var C=FCKTools.GetElementDocument(A);var D=new FCKDocumentFragment(C);var E=D.RootNode;var F=false;var G=FCKDomTools.GetFirstChild(A,['UL','OL']);if (G){F=true;var H;while ((H=G.firstChild)) E.appendChild(G.removeChild(H));FCKDomTools.RemoveNode(G);};var I;var J=false;while ((I=A.nextSibling)){if (!F&&I.nodeType==1&&I.nodeName.toUpperCase()=='LI') J=F=true;E.appendChild(I.parentNode.removeChild(I));if (!J&&I.nodeType==1&&I.nodeName.toUpperCase().Equals('UL','OL')) FCKDomTools.RemoveNode(I,true);};var K=B.parentNode.tagName.toUpperCase();var L=(K=='LI');if (L||K.Equals('UL','OL')){if (F){var G=B.cloneNode(false);D.AppendTo(G);A.appendChild(G);}else if (L) D.InsertAfterNode(B.parentNode);else D.InsertAfterNode(B);if (L) FCKDomTools.InsertAfterNode(B.parentNode,B.removeChild(A));else FCKDomTools.InsertAfterNode(B,B.removeChild(A));}else{if (F){var N=B.cloneNode(false);D.AppendTo(N);FCKDomTools.InsertAfterNode(B,N);};var O=C.createElement(FCKConfig.EnterMode=='p'?'p':'div');FCKDomTools.MoveChildren(B.removeChild(A),O);FCKDomTools.InsertAfterNode(B,O);if (FCKConfig.EnterMode=='br'){if (FCKBrowserInfo.IsGecko) O.parentNode.insertBefore(FCKTools.CreateBogusBR(C),O);else FCKDomTools.InsertAfterNode(O,FCKTools.CreateBogusBR(C));FCKDomTools.RemoveNode(O,true);}};if (this.CheckEmptyList(B)) FCKDomTools.RemoveNode(B,true);}},CheckEmptyList:function(A){return (FCKDomTools.GetFirstChild(A,'LI')==null);},CheckListHasContents:function(A){var B=A.firstChild;while (B){switch (B.nodeType){case 1:if (!B.nodeName.IEquals('UL','LI')) return true;break;case 3:if (B.nodeValue.Trim().length>0) return true;};B=B.nextSibling;};return false;}};
-var FCKElementPath=function(A){var B=null;var C=null;var D=[];var e=A;while (e){if (e.nodeType==1){if (!this.LastElement) this.LastElement=e;var E=e.nodeName.toLowerCase();if (!C){if (!B&&FCKListsLib.PathBlockElements[E]!=null) B=e;if (FCKListsLib.PathBlockLimitElements[E]!=null){if (!B&&E=='div'&&!FCKElementPath._CheckHasBlock(e)) B=e;else C=e;}};D.push(e);if (E=='body') break;};e=e.parentNode;};this.Block=B;this.BlockLimit=C;this.Elements=D;};FCKElementPath._CheckHasBlock=function(A){var B=A.childNodes;for (var i=0,count=B.length;i<count;i++){var C=B[i];if (C.nodeType==1&&FCKListsLib.BlockElements[C.nodeName.toLowerCase()]) return true;};return false;};
-var FCKDomRange=function(A){this.Window=A;this._Cache={};};FCKDomRange.prototype={_UpdateElementInfo:function(){var A=this._Range;if (!A) this.Release(true);else{var B=A.startContainer;var C=A.endContainer;var D=new FCKElementPath(B);this.StartNode=B.nodeType==3?B:B.childNodes[A.startOffset];this.StartContainer=B;this.StartBlock=D.Block;this.StartBlockLimit=D.BlockLimit;if (B!=C) D=new FCKElementPath(C);var E=C;if (A.endOffset==0){while (E&&!E.previousSibling) E=E.parentNode;if (E) E=E.previousSibling;}else if (E.nodeType==1) E=E.childNodes[A.endOffset-1];this.EndNode=E;this.EndContainer=C;this.EndBlock=D.Block;this.EndBlockLimit=D.BlockLimit;};this._Cache={};},CreateRange:function(){return new FCKW3CRange(this.Window.document);},DeleteContents:function(){if (this._Range){this._Range.deleteContents();this._UpdateElementInfo();}},ExtractContents:function(){if (this._Range){var A=this._Range.extractContents();this._UpdateElementInfo();return A;}},CheckIsCollapsed:function(){if (this._Range) return this._Range.collapsed;},Collapse:function(A){if (this._Range) this._Range.collapse(A);this._UpdateElementInfo();},Clone:function(){var A=FCKTools.CloneObject(this);if (this._Range) A._Range=this._Range.cloneRange();return A;},MoveToNodeContents:function(A){if (!this._Range) this._Range=this.CreateRange();this._Range.selectNodeContents(A);this._UpdateElementInfo();},MoveToElementStart:function(A){this.SetStart(A,1);this.SetEnd(A,1);},MoveToElementEditStart:function(A){var B;while ((B=A.firstChild)&&B.nodeType==1&&FCKListsLib.EmptyElements[B.nodeName.toLowerCase()]==null) A=B;this.MoveToElementStart(A);},InsertNode:function(A){if (this._Range) this._Range.insertNode(A);},CheckIsEmpty:function(){if (this.CheckIsCollapsed()) return true;var A=this.Window.document.createElement('div');this._Range.cloneContents().AppendTo(A);FCKDomTools.TrimNode(A);return (A.innerHTML.length==0);},CheckStartOfBlock:function(){var A=this._Cache;var B=A.IsStartOfBlock;if (B!=undefined) return B;var C=this.StartBlock||this.StartBlockLimit;var D=this._Range.startContainer;var E=this._Range.startOffset;var F;if (E>0){if (D.nodeType==3){var G=D.nodeValue.substr(0,E).Trim();if (G.length!=0) return A.IsStartOfBlock=false;}else F=D.childNodes[E-1];};if (!F) F=FCKDomTools.GetPreviousSourceNode(D,true,null,C);while (F){switch (F.nodeType){case 1:if (!FCKListsLib.InlineChildReqElements[F.nodeName.toLowerCase()]) return A.IsStartOfBlock=false;break;case 3:if (F.nodeValue.Trim().length>0) return A.IsStartOfBlock=false;};F=FCKDomTools.GetPreviousSourceNode(F,false,null,C);};return A.IsStartOfBlock=true;},CheckEndOfBlock:function(A){var B=this._Cache.IsEndOfBlock;if (B!=undefined) return B;var C=this.EndBlock||this.EndBlockLimit;var D=this._Range.endContainer;var E=this._Range.endOffset;var F;if (D.nodeType==3){var G=D.nodeValue;if (E<G.length){G=G.substr(E);if (G.Trim().length!=0) return this._Cache.IsEndOfBlock=false;}}else F=D.childNodes[E];if (!F) F=FCKDomTools.GetNextSourceNode(D,true,null,C);var H=false;while (F){switch (F.nodeType){case 1:var I=F.nodeName.toLowerCase();if (FCKListsLib.InlineChildReqElements[I]) break;if (I=='br'&&!H){H=true;break;};return this._Cache.IsEndOfBlock=false;case 3:if (F.nodeValue.Trim().length>0) return this._Cache.IsEndOfBlock=false;};F=FCKDomTools.GetNextSourceNode(F,false,null,C);};if (A) this.Select();return this._Cache.IsEndOfBlock=true;},CreateBookmark:function(A){var B={StartId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'S',EndId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'E'};var C=this.Window.document;var D;var E;var F;if (!this.CheckIsCollapsed()){E=C.createElement('span');E.style.display='none';E.id=B.EndId;E.setAttribute('_fck_bookmark',true);E.innerHTML='&nbsp;';F=this.Clone();F.Collapse(false);F.InsertNode(E);};D=C.createElement('span');D.style.display='none';D.id=B.StartId;D.setAttribute('_fck_bookmark',true);D.innerHTML='&nbsp;';F=this.Clone();F.Collapse(true);F.InsertNode(D);if (A){B.StartNode=D;B.EndNode=E;};if (E){this.SetStart(D,4);this.SetEnd(E,3);}else this.MoveToPosition(D,4);return B;},GetBookmarkNode:function(A,B){var C=this.Window.document;if (B) return A.StartNode||C.getElementById(A.StartId);else return A.EndNode||C.getElementById(A.EndId);},MoveToBookmark:function(A,B){var C=this.GetBookmarkNode(A,true);var D=this.GetBookmarkNode(A,false);this.SetStart(C,3);if (!B) FCKDomTools.RemoveNode(C);if (D){this.SetEnd(D,3);if (!B) FCKDomTools.RemoveNode(D);}else this.Collapse(true);this._UpdateElementInfo();},CreateBookmark2:function(){if (!this._Range) return { "Start":0,"End":0 };var A={"Start":[this._Range.startOffset],"End":[this._Range.endOffset]};var B=this._Range.startContainer.previousSibling;var C=this._Range.endContainer.previousSibling;var D=this._Range.startContainer;var E=this._Range.endContainer;while (B&&B.nodeType==3){A.Start[0]+=B.length;D=B;B=B.previousSibling;};while (C&&C.nodeType==3){A.End[0]+=C.length;E=C;C=C.previousSibling;};if (D.nodeType==1&&D.childNodes[A.Start[0]]&&D.childNodes[A.Start[0]].nodeType==3){var F=D.childNodes[A.Start[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};D=F;A.Start[0]=G;};if (E.nodeType==1&&E.childNodes[A.End[0]]&&E.childNodes[A.End[0]].nodeType==3){var F=E.childNodes[A.End[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};E=F;A.End[0]=G;};A.Start=FCKDomTools.GetNodeAddress(D,true).concat(A.Start);A.End=FCKDomTools.GetNodeAddress(E,true).concat(A.End);return A;},MoveToBookmark2:function(A){var B=FCKDomTools.GetNodeFromAddress(this.Window.document,A.Start.slice(0,-1),true);var C=FCKDomTools.GetNodeFromAddress(this.Window.document,A.End.slice(0,-1),true);this.Release(true);this._Range=new FCKW3CRange(this.Window.document);var D=A.Start[A.Start.length-1];var E=A.End[A.End.length-1];while (B.nodeType==3&&D>B.length){if (!B.nextSibling||B.nextSibling.nodeType!=3) break;D-=B.length;B=B.nextSibling;};while (C.nodeType==3&&E>C.length){if (!C.nextSibling||C.nextSibling.nodeType!=3) break;E-=C.length;C=C.nextSibling;};this._Range.setStart(B,D);this._Range.setEnd(C,E);this._UpdateElementInfo();},MoveToPosition:function(A,B){this.SetStart(A,B);this.Collapse(true);},SetStart:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setStart(A,0);break;case 2:D.setStart(A,A.childNodes.length);break;case 3:D.setStartBefore(A);break;case 4:D.setStartAfter(A);};if (!C) this._UpdateElementInfo();},SetEnd:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setEnd(A,0);break;case 2:D.setEnd(A,A.childNodes.length);break;case 3:D.setEndBefore(A);break;case 4:D.setEndAfter(A);};if (!C) this._UpdateElementInfo();},Expand:function(A){var B,oSibling;switch (A){case 'inline_elements':if (this._Range.startOffset==0){B=this._Range.startContainer;if (B.nodeType!=1) B=B.previousSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setStartBefore(B);if (B!=B.parentNode.firstChild) break;B=B.parentNode;}}};B=this._Range.endContainer;var C=this._Range.endOffset;if ((B.nodeType==3&&C>=B.nodeValue.length)||(B.nodeType==1&&C>=B.childNodes.length)||(B.nodeType!=1&&B.nodeType!=3)){if (B.nodeType!=1) B=B.nextSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setEndAfter(B);if (B!=B.parentNode.lastChild) break;B=B.parentNode;}}};break;case 'block_contents':case 'list_contents':var D=FCKListsLib.BlockBoundaries;if (A=='list_contents'||FCKConfig.EnterMode=='br') D=FCKListsLib.ListBoundaries;if (this.StartBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents') this.SetStart(this.StartBlock,1);else{B=this._Range.startContainer;if (B.nodeType==1){var E=B.childNodes[this._Range.startOffset];if (E) B=FCKDomTools.GetPreviousSourceNode(E,true);else B=B.lastChild||B;};while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setStartBefore(B);B=B.previousSibling||B.parentNode;}};if (this.EndBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents'&&this.EndBlock.nodeName.toLowerCase()!='li') this.SetEnd(this.EndBlock,2);else{B=this._Range.endContainer;if (B.nodeType==1) B=B.childNodes[this._Range.endOffset]||B.lastChild;while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setEndAfter(B);B=B.nextSibling||B.parentNode;};if (B&&B.nodeName.toLowerCase()=='br') this._Range.setEndAfter(B);};this._UpdateElementInfo();}},SplitBlock:function(){if (!this._Range) this.MoveToSelection();if (this.StartBlockLimit==this.EndBlockLimit){var A=this.StartBlock;var B=this.EndBlock;var C=null;if (FCKConfig.EnterMode!='br'){if (!A){A=this.FixBlock(true);B=this.EndBlock;};if (!B) B=this.FixBlock(false);};var D=(A!=null&&this.CheckStartOfBlock());var E=(B!=null&&this.CheckEndOfBlock());if (!this.CheckIsEmpty()) this.DeleteContents();if (A&&B&&A==B){if (E){C=new FCKElementPath(this.StartContainer);this.MoveToPosition(B,4);B=null;}else if (D){C=new FCKElementPath(this.StartContainer);this.MoveToPosition(A,3);A=null;}else{this.SetEnd(A,2);var F=this.ExtractContents();B=A.cloneNode(false);B.removeAttribute('id',false);F.AppendTo(B);FCKDomTools.InsertAfterNode(A,B);this.MoveToPosition(A,4);if (FCKBrowserInfo.IsGecko&&!A.nodeName.IEquals(['ul','ol'])) FCKTools.AppendBogusBr(A);}};return {PreviousBlock:A,NextBlock:B,WasStartOfBlock:D,WasEndOfBlock:E,ElementPath:C};};return null;},FixBlock:function(A){var B=this.CreateBookmark();this.Collapse(A);this.Expand('block_contents');var C=this.Window.document.createElement(FCKConfig.EnterMode);this.ExtractContents().AppendTo(C);FCKDomTools.TrimNode(C);this.InsertNode(C);this.MoveToBookmark(B);return C;},Release:function(A){if (!A) this.Window=null;this.StartNode=null;this.StartContainer=null;this.StartBlock=null;this.StartBlockLimit=null;this.EndNode=null;this.EndContainer=null;this.EndBlock=null;this.EndBlockLimit=null;this._Range=null;this._Cache=null;},CheckHasRange:function(){return!!this._Range;},GetTouchedStartNode:function(){var A=this._Range;var B=A.startContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.startOffset]||B;},GetTouchedEndNode:function(){var A=this._Range;var B=A.endContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.endOffset-1]||B;}};
-FCKDomRange.prototype.MoveToSelection=function(){this.Release(true);var A=this.Window.getSelection();if (A&&A.rangeCount>0){this._Range=FCKW3CRange.CreateFromRange(this.Window.document,A.getRangeAt(0));this._UpdateElementInfo();}else if (this.Window.document) this.MoveToElementStart(this.Window.document.body);};FCKDomRange.prototype.Select=function(){var A=this._Range;if (A){var B=A.startContainer;if (A.collapsed&&B.nodeType==1&&B.childNodes.length==0) B.appendChild(A._Document.createTextNode(''));var C=this.Window.document.createRange();C.setStart(B,A.startOffset);try{C.setEnd(A.endContainer,A.endOffset);}catch (e){if (e.toString().Contains('NS_ERROR_ILLEGAL_VALUE')){A.collapse(true);C.setEnd(A.endContainer,A.endOffset);}else throw(e);};var D=this.Window.getSelection();D.removeAllRanges();D.addRange(C);}};FCKDomRange.prototype.SelectBookmark=function(A){var B=this.Window.document.createRange();var C=this.GetBookmarkNode(A,true);var D=this.GetBookmarkNode(A,false);B.setStart(C.parentNode,FCKDomTools.GetIndexOf(C));FCKDomTools.RemoveNode(C);if (D){B.setEnd(D.parentNode,FCKDomTools.GetIndexOf(D));FCKDomTools.RemoveNode(D);};var E=this.Window.getSelection();E.removeAllRanges();E.addRange(B);}
-var FCKDomRangeIterator=function(A){this.Range=A;this.ForceBrBreak=false;this.EnforceRealBlocks=false;};FCKDomRangeIterator.CreateFromSelection=function(A){var B=new FCKDomRange(A);B.MoveToSelection();return new FCKDomRangeIterator(B);};FCKDomRangeIterator.prototype={GetNextParagraph:function(){var A;var B;var C;var D;var E;var F=this.ForceBrBreak?FCKListsLib.ListBoundaries:FCKListsLib.BlockBoundaries;if (!this._LastNode){var B=this.Range.Clone();B.Expand(this.ForceBrBreak?'list_contents':'block_contents');this._NextNode=B.GetTouchedStartNode();this._LastNode=B.GetTouchedEndNode();B=null;};var H=this._NextNode;var I=this._LastNode;while (H){var J=false;var K=(H.nodeType!=1);var L=false;if (!K){var M=H.nodeName.toLowerCase();if (F[M]){if (M=='br') K=true;else if (!B&&H.childNodes.length==0&&M!='hr'){A=H;C=H==I;break;};if (B) B.SetEnd(H,3,true);J=true;}else{if (H.firstChild){if (!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};H=H.firstChild;continue;};K=true;}}else if (H.nodeType==3){if (/^[\r\n\t ]+$/.test(H.nodeValue)) K=false;};if (K&&!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};C=((!J||K)&&H==I);if (B&&!J){while (!H.nextSibling&&!C){var N=H.parentNode;if (F[N.nodeName.toLowerCase()]){J=true;C=C||(N==I);break;};H=N;K=true;C=(H==I);L=true;}};if (K) B.SetEnd(H,4,true);if ((J||C)&&B){B._UpdateElementInfo();if (B.StartNode==B.EndNode&&B.StartNode.parentNode==B.StartBlockLimit&&B.StartNode.getAttribute&&B.StartNode.getAttribute('_fck_bookmark')) B=null;else break;};if (C) break;H=FCKDomTools.GetNextSourceNode(H,L,null,I);};if (!A){if (!B){this._NextNode=null;return null;};A=B.StartBlock;if (!A&&!this.EnforceRealBlocks&&B.StartBlockLimit.nodeName.IEquals('DIV','TH','TD')&&B.CheckStartOfBlock()&&B.CheckEndOfBlock()){A=B.StartBlockLimit;}else if (!A||(this.EnforceRealBlocks&&A.nodeName.toLowerCase()=='li')){A=this.Range.Window.document.createElement(FCKConfig.EnterMode=='p'?'p':'div');B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);B.InsertNode(A);D=true;E=true;}else if (A.nodeName.toLowerCase()!='li'){if (!B.CheckStartOfBlock()||!B.CheckEndOfBlock()){A=A.cloneNode(false);B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);var O=B.SplitBlock();D=!O.WasStartOfBlock;E=!O.WasEndOfBlock;FCKDebug.Output('removePreviousBr='+D+',removeLastBr='+E);B.InsertNode(A);}}else if (!C){this._NextNode=A==I?null:FCKDomTools.GetNextSourceNode(B.EndNode,true,null,I);return A;}};if (D){var P=A.previousSibling;if (P&&P.nodeType==1){if (P.nodeName.toLowerCase()=='br') P.parentNode.removeChild(P);else if (P.lastChild&&P.lastChild.nodeName.IEquals('br')) P.removeChild(P.lastChild);}};if (E){var Q=A.lastChild;if (Q&&Q.nodeType==1&&Q.nodeName.toLowerCase()=='br') A.removeChild(Q);};this._NextNode=(C||A==I)?null:FCKDomTools.GetNextSourceNode(A,true,null,I);return A;}};
-var FCKDocumentFragment=function(A,B){this.RootNode=B||A.createDocumentFragment();};FCKDocumentFragment.prototype={AppendTo:function(A){A.appendChild(this.RootNode);},InsertAfterNode:function(A){FCKDomTools.InsertAfterNode(A,this.RootNode);}}
-var FCKW3CRange=function(A){this._Document=A;this.startContainer=null;this.startOffset=null;this.endContainer=null;this.endOffset=null;this.collapsed=true;};FCKW3CRange.CreateRange=function(A){return new FCKW3CRange(A);};FCKW3CRange.CreateFromRange=function(A,B){var C=FCKW3CRange.CreateRange(A);C.setStart(B.startContainer,B.startOffset);C.setEnd(B.endContainer,B.endOffset);return C;};FCKW3CRange.prototype={_UpdateCollapsed:function(){this.collapsed=(this.startContainer==this.endContainer&&this.startOffset==this.endOffset);},setStart:function(A,B){this.startContainer=A;this.startOffset=B;if (!this.endContainer){this.endContainer=A;this.endOffset=B;};this._UpdateCollapsed();},setEnd:function(A,B){this.endContainer=A;this.endOffset=B;if (!this.startContainer){this.startContainer=A;this.startOffset=B;};this._UpdateCollapsed();},setStartAfter:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setStartBefore:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A));},setEndAfter:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setEndBefore:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A));},collapse:function(A){if (A){this.endContainer=this.startContainer;this.endOffset=this.startOffset;}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset;};this.collapsed=true;},selectNodeContents:function(A){this.setStart(A,0);this.setEnd(A,A.nodeType==3?A.data.length:A.childNodes.length);},insertNode:function(A){var B=this.startContainer;var C=this.startOffset;if (B.nodeType==3){B.splitText(C);if (B==this.endContainer) this.setEnd(B.nextSibling,this.endOffset-this.startOffset);FCKDomTools.InsertAfterNode(B,A);return;}else{B.insertBefore(A,B.childNodes[C]||null);if (B==this.endContainer){this.endOffset++;this.collapsed=false;}}},deleteContents:function(){if (this.collapsed) return;this._ExecContentsAction(0);},extractContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(1,A);return A;},cloneContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(2,A);return A;},_ExecContentsAction:function(A,B){var C=this.startContainer;var D=this.endContainer;var E=this.startOffset;var F=this.endOffset;var G=false;var H=false;if (D.nodeType==3) D=D.splitText(F);else{if (D.childNodes.length>0){if (F>D.childNodes.length-1){D=FCKDomTools.InsertAfterNode(D.lastChild,this._Document.createTextNode(''));H=true;}else D=D.childNodes[F];}};if (C.nodeType==3){C.splitText(E);if (C==D) D=C.nextSibling;}else{if (C.childNodes.length>0&&E<=C.childNodes.length-1){if (E==0){C=C.insertBefore(this._Document.createTextNode(''),C.firstChild);G=true;}else C=C.childNodes[E].previousSibling;}};var I=FCKDomTools.GetParents(C);var J=FCKDomTools.GetParents(D);var i,topStart,topEnd;for (i=0;i<I.length;i++){topStart=I[i];topEnd=J[i];if (topStart!=topEnd) break;};var K,levelStartNode,levelClone,currentNode,currentSibling;if (B) K=B.RootNode;for (var j=i;j<I.length;j++){levelStartNode=I[j];if (K&&levelStartNode!=C) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==C));currentNode=levelStartNode.nextSibling;while(currentNode){if (currentNode==J[j]||currentNode==D) break;currentSibling=currentNode.nextSibling;if (A==2) K.appendChild(currentNode.cloneNode(true));else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.appendChild(currentNode);};currentNode=currentSibling;};if (K) K=levelClone;};if (B) K=B.RootNode;for (var k=i;k<J.length;k++){levelStartNode=J[k];if (A>0&&levelStartNode!=D) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==D));if (!I[k]||levelStartNode.parentNode!=I[k].parentNode){currentNode=levelStartNode.previousSibling;while(currentNode){if (currentNode==I[k]||currentNode==C) break;currentSibling=currentNode.previousSibling;if (A==2) K.insertBefore(currentNode.cloneNode(true),K.firstChild);else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.insertBefore(currentNode,K.firstChild);};currentNode=currentSibling;}};if (K) K=levelClone;};if (A==2){var L=this.startContainer;if (L.nodeType==3){L.data+=L.nextSibling.data;L.parentNode.removeChild(L.nextSibling);};var M=this.endContainer;if (M.nodeType==3&&M.nextSibling){M.data+=M.nextSibling.data;M.parentNode.removeChild(M.nextSibling);}}else{if (topStart&&topEnd&&(C.parentNode!=topStart.parentNode||D.parentNode!=topEnd.parentNode)){var N=FCKDomTools.GetIndexOf(topEnd);if (G&&topEnd.parentNode==C.parentNode) N--;this.setStart(topEnd.parentNode,N);};this.collapse(true);};if(G) C.parentNode.removeChild(C);if(H&&D.parentNode) D.parentNode.removeChild(D);},cloneRange:function(){return FCKW3CRange.CreateFromRange(this._Document,this);}};
-var FCKEnterKey=function(A,B,C,D){this.Window=A;this.EnterMode=B||'p';this.ShiftEnterMode=C||'br';var E=new FCKKeystrokeHandler(false);E._EnterKey=this;E.OnKeystroke=FCKEnterKey_OnKeystroke;E.SetKeystrokes([[13,'Enter'],[SHIFT+13,'ShiftEnter'],[9,'Tab'],[8,'Backspace'],[CTRL+8,'CtrlBackspace'],[46,'Delete']]);if (D>0){this.TabText='';while (D-->0) this.TabText+='\xa0';};E.AttachToElement(A.document);};function FCKEnterKey_OnKeystroke(A,B){var C=this._EnterKey;try{switch (B){case 'Enter':return C.DoEnter();break;case 'ShiftEnter':return C.DoShiftEnter();break;case 'Backspace':return C.DoBackspace();break;case 'Delete':return C.DoDelete();break;case 'Tab':return C.DoTab();break;case 'CtrlBackspace':return C.DoCtrlBackspace();break;}}catch (e){};return false;};FCKEnterKey.prototype.DoEnter=function(A,B){FCKUndo.SaveUndoStep();this._HasShift=(B===true);var C=FCKSelection.GetParentElement();var D=new FCKElementPath(C);var E=A||this.EnterMode;if (E=='br'||D.Block&&D.Block.tagName.toLowerCase()=='pre') return this._ExecuteEnterBr();else return this._ExecuteEnterBlock(E);};FCKEnterKey.prototype.DoShiftEnter=function(){return this.DoEnter(this.ShiftEnterMode,true);};FCKEnterKey.prototype.DoBackspace=function(){var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};var C=B.CheckIsCollapsed();if (!C){if (FCKBrowserInfo.IsIE&&this.Window.document.selection.type.toLowerCase()=="control"){var D=this.Window.document.selection.createRange();for (var i=D.length-1;i>=0;i--){var E=D.item(i);E.parentNode.removeChild(E);};return true;};return false;};var F=B.StartBlock;var G=B.EndBlock;if (B.StartBlockLimit==B.EndBlockLimit&&F&&G){if (!C){var H=B.CheckEndOfBlock();B.DeleteContents();if (F!=G){B.SetStart(G,1);B.SetEnd(G,1);};B.Select();A=(F==G);};if (B.CheckStartOfBlock()){var I=B.StartBlock;var J=FCKDomTools.GetPreviousSourceElement(I,true,['BODY',B.StartBlockLimit.nodeName],['UL','OL']);A=this._ExecuteBackspace(B,J,I);}else if (FCKBrowserInfo.IsGeckoLike){B.Select();}};B.Release();return A;};FCKEnterKey.prototype.DoCtrlBackspace=function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(this.Window);A.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(A,this.Window.document.body)){this._FixIESelectAllBug(A);return true;};return false;};FCKEnterKey.prototype._ExecuteBackspace=function(A,B,C){var D=false;if (!B&&C&&C.nodeName.IEquals('LI')&&C.parentNode.parentNode.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};if (B&&B.nodeName.IEquals('LI')){var E=FCKDomTools.GetLastChild(B,['UL','OL']);while (E){B=FCKDomTools.GetLastChild(E,'LI');E=FCKDomTools.GetLastChild(B,['UL','OL']);}};if (B&&C){if (C.nodeName.IEquals('LI')&&!B.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};var F=C.parentNode;var G=B.nodeName.toLowerCase();if (FCKListsLib.EmptyElements[G]!=null||G=='table'){FCKDomTools.RemoveNode(B);D=true;}else{FCKDomTools.RemoveNode(C);while (F.innerHTML.Trim().length==0){var H=F.parentNode;H.removeChild(F);F=H;};FCKDomTools.LTrimNode(C);FCKDomTools.RTrimNode(B);A.SetStart(B,2,true);A.Collapse(true);var I=A.CreateBookmark(true);if (!C.tagName.IEquals(['TABLE'])) FCKDomTools.MoveChildren(C,B);A.SelectBookmark(I);D=true;}};return D;};FCKEnterKey.prototype.DoDelete=function(){FCKUndo.SaveUndoStep();var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};if (B.CheckIsCollapsed()&&B.CheckEndOfBlock(FCKBrowserInfo.IsGeckoLike)){var C=B.StartBlock;var D=FCKTools.GetElementAscensor(C,'td');var E=FCKDomTools.GetNextSourceElement(C,true,[B.StartBlockLimit.nodeName],['UL','OL','TR'],true);if (D){var F=FCKTools.GetElementAscensor(E,'td');if (F!=D) return true;};A=this._ExecuteBackspace(B,C,E);};B.Release();return A;};FCKEnterKey.prototype.DoTab=function(){var A=new FCKDomRange(this.Window);A.MoveToSelection();var B=A._Range.startContainer;while (B){if (B.nodeType==1){var C=B.tagName.toLowerCase();if (C=="tr"||C=="td"||C=="th"||C=="tbody"||C=="table") return false;else break;};B=B.parentNode;};if (this.TabText){A.DeleteContents();A.InsertNode(this.Window.document.createTextNode(this.TabText));A.Collapse(false);A.Select();};return true;};FCKEnterKey.prototype._ExecuteEnterBlock=function(A,B){var C=B||new FCKDomRange(this.Window);var D=C.SplitBlock();if (D){var E=D.PreviousBlock;var F=D.NextBlock;var G=D.WasStartOfBlock;var H=D.WasEndOfBlock;if (!D.WasStartOfBlock&&!D.WasEndOfBlock){if (F.nodeName.IEquals('li')&&F.firstChild&&F.firstChild.nodeName.IEquals(['ul','ol'])) F.insertBefore(F.ownerDocument.createTextNode('\xa0'),F.firstChild);if (F) C.MoveToElementEditStart(F);}else{if (G&&H&&E.tagName.toUpperCase()=='LI'){C.MoveToElementStart(E);this._OutdentWithSelection(E,C);C.Release();return true;};var I;if (E){var J=E.tagName.toUpperCase();if (!this._HasShift&&!(/^H[1-6]$/).test(J)){I=FCKDomTools.CloneElement(E);}}else if (F) I=FCKDomTools.CloneElement(F);if (!I) I=this.Window.document.createElement(A);var K=D.ElementPath;if (K){for (var i=0,len=K.Elements.length;i<len;i++){var L=K.Elements[i];if (L==K.Block||L==K.BlockLimit) break;if (FCKListsLib.InlineChildReqElements[L.nodeName.toLowerCase()]){L=FCKDomTools.CloneElement(L);FCKDomTools.MoveChildren(I,L);I.appendChild(L);}}};if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);C.InsertNode(I);if (FCKBrowserInfo.IsIE){C.MoveToNodeContents(I);C.Select();};C.MoveToElementEditStart(G&&!H?F:I);};if (FCKBrowserInfo.IsSafari) FCKDomTools.ScrollIntoView(F||I,false);else if (FCKBrowserInfo.IsGeckoLike) (F||I).scrollIntoView(false);C.Select();};C.Release();return true;};FCKEnterKey.prototype._ExecuteEnterBr=function(A){var B=new FCKDomRange(this.Window);B.MoveToSelection();if (B.StartBlockLimit==B.EndBlockLimit){B.DeleteContents();B.MoveToSelection();var C=B.CheckStartOfBlock();var D=B.CheckEndOfBlock();var E=B.StartBlock?B.StartBlock.tagName.toUpperCase():'';var F=this._HasShift;var G=false;if (!F&&E=='LI') return this._ExecuteEnterBlock(null,B);if (!F&&D&&(/^H[1-6]$/).test(E)){FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createElement('br'));if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createTextNode(''));B.SetStart(B.StartBlock.nextSibling,FCKBrowserInfo.IsIE?3:1);}else{var H;G=E.IEquals('pre');if (G) H=this.Window.document.createTextNode(FCKBrowserInfo.IsIE?'\r':'\n');else H=this.Window.document.createElement('br');B.InsertNode(H);if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(H,this.Window.document.createTextNode(''));if (D&&FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H.parentNode);if (FCKBrowserInfo.IsIE) B.SetStart(H,4);else B.SetStart(H.nextSibling,1);if (!FCKBrowserInfo.IsIE){var I=null;if (FCKBrowserInfo.IsOpera) I=this.Window.document.createElement('span');else I=this.Window.document.createElement('br');H.parentNode.insertBefore(I,H.nextSibling);if (FCKBrowserInfo.IsSafari) FCKDomTools.ScrollIntoView(I,false);else I.scrollIntoView(false);I.parentNode.removeChild(I);}};B.Collapse(true);B.Select(G);};B.Release();return true;};FCKEnterKey.prototype._OutdentWithSelection=function(A,B){var C=B.CreateBookmark();FCKListHandler.OutdentListItem(A);B.MoveToBookmark(C);B.Select();};FCKEnterKey.prototype._CheckIsAllContentsIncluded=function(A,B){var C=false;var D=false;if (A.StartContainer==B||A.StartContainer==B.firstChild) C=(A._Range.startOffset==0);if (A.EndContainer==B||A.EndContainer==B.lastChild){var E=A.EndContainer.nodeType==3?A.EndContainer.length:A.EndContainer.childNodes.length;D=(A._Range.endOffset==E);};return C&&D;};FCKEnterKey.prototype._FixIESelectAllBug=function(A){var B=this.Window.document;B.body.innerHTML='';var C;if (FCKConfig.EnterMode.IEquals(['div','p'])){C=B.createElement(FCKConfig.EnterMode);B.body.appendChild(C);}else C=B.body;A.MoveToNodeContents(C);A.Collapse(true);A.Select();A.Release();};
-var FCKDocumentProcessor={};FCKDocumentProcessor._Items=[];FCKDocumentProcessor.AppendNew=function(){var A={};this._Items.AddItem(A);return A;};FCKDocumentProcessor.Process=function(A){var B,i=0;while((B=this._Items[i++])) B.ProcessDocument(A);};var FCKDocumentProcessor_CreateFakeImage=function(A,B){var C=FCK.EditorDocument.createElement('IMG');C.className=A;C.src=FCKConfig.FullBasePath+'images/spacer.gif';C.setAttribute('_fckfakelement','true',0);C.setAttribute('_fckrealelement',FCKTempBin.AddElement(B),0);return C;};if (FCKBrowserInfo.IsIE||FCKBrowserInfo.IsOpera){var FCKAnchorsProcessor=FCKDocumentProcessor.AppendNew();FCKAnchorsProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('A');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.name.length>0){if (C.innerHTML!==''){if (FCKBrowserInfo.IsIE) C.className+=' FCK__AnchorC';}else{var D=FCKDocumentProcessor_CreateFakeImage('FCK__Anchor',C.cloneNode(true));D.setAttribute('_fckanchor','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}}}};var FCKPageBreaksProcessor=FCKDocumentProcessor.AppendNew();FCKPageBreaksProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('DIV');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.style.pageBreakAfter=='always'&&C.childNodes.length==1&&C.childNodes[0].style&&C.childNodes[0].style.display=='none'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',C.cloneNode(true));C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};var FCKFlashProcessor=FCKDocumentProcessor.AppendNew();FCKFlashProcessor.ProcessDocument=function(A){var B=FCK.IsDirty();var C=A.getElementsByTagName('EMBED');var D;var i=C.length-1;while (i>=0&&(D=C[i--])){var E=D.attributes['type'];if ((D.src&&D.src.EndsWith('.swf',true))||(E&&E.nodeValue=='application/x-shockwave-flash')){var F=D.cloneNode(true);var G=FCKDocumentProcessor_CreateFakeImage('FCK__Flash',F);G.setAttribute('_fckflash','true',0);FCKFlashProcessor.RefreshView(G,D);D.parentNode.insertBefore(G,D);D.parentNode.removeChild(D);}};if (!B) FCK.ResetIsDirty();};FCKFlashProcessor.RefreshView=function(A,B){if (B.getAttribute('width')>0) A.style.width=FCKTools.ConvertHtmlSizeToStyle(B.getAttribute('width'));if (B.getAttribute('height')>0) A.style.height=FCKTools.ConvertHtmlSizeToStyle(B.getAttribute('height'));};FCK.GetRealElement=function(A){var e=FCKTempBin.Elements[A.getAttribute('_fckrealelement')];if (A.getAttribute('_fckflash')){if (A.style.width.length>0) e.width=FCKTools.ConvertStyleSizeToHtml(A.style.width);if (A.style.height.length>0) e.height=FCKTools.ConvertStyleSizeToHtml(A.style.height);};return e;};if (FCKBrowserInfo.IsIE){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('HR');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){var D=A.createElement('hr');D.mergeAttributes(C,true);FCKDomTools.InsertAfterNode(C,D);C.parentNode.removeChild(C);}}};FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('INPUT');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.type=='hidden'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__InputHidden',C.cloneNode(true));D.setAttribute('_fckinputhidden','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}}
+var FCKElementPath=function(A){var B=null;var C=null;var D=[];var e=A;while (e){if (e.nodeType==1){if (!this.LastElement) this.LastElement=e;var E=e.nodeName.toLowerCase();if (FCKBrowserInfo.IsIE&&e.scopeName!='HTML') E=e.scopeName.toLowerCase()+':'+E;if (!C){if (!B&&FCKListsLib.PathBlockElements[E]!=null) B=e;if (FCKListsLib.PathBlockLimitElements[E]!=null){if (!B&&E=='div'&&!FCKElementPath._CheckHasBlock(e)) B=e;else C=e;}};D.push(e);if (E=='body') break;};e=e.parentNode;};this.Block=B;this.BlockLimit=C;this.Elements=D;};FCKElementPath._CheckHasBlock=function(A){var B=A.childNodes;for (var i=0,count=B.length;i<count;i++){var C=B[i];if (C.nodeType==1&&FCKListsLib.BlockElements[C.nodeName.toLowerCase()]) return true;};return false;};
+var FCKDomRange=function(A){this.Window=A;this._Cache={};};FCKDomRange.prototype={_UpdateElementInfo:function(){var A=this._Range;if (!A) this.Release(true);else{var B=A.startContainer;var C=A.endContainer;var D=new FCKElementPath(B);this.StartNode=B.nodeType==3?B:B.childNodes[A.startOffset];this.StartContainer=B;this.StartBlock=D.Block;this.StartBlockLimit=D.BlockLimit;if (B!=C) D=new FCKElementPath(C);var E=C;if (A.endOffset==0){while (E&&!E.previousSibling) E=E.parentNode;if (E) E=E.previousSibling;}else if (E.nodeType==1) E=E.childNodes[A.endOffset-1];this.EndNode=E;this.EndContainer=C;this.EndBlock=D.Block;this.EndBlockLimit=D.BlockLimit;};this._Cache={};},CreateRange:function(){return new FCKW3CRange(this.Window.document);},DeleteContents:function(){if (this._Range){this._Range.deleteContents();this._UpdateElementInfo();}},ExtractContents:function(){if (this._Range){var A=this._Range.extractContents();this._UpdateElementInfo();return A;};return null;},CheckIsCollapsed:function(){if (this._Range) return this._Range.collapsed;return false;},Collapse:function(A){if (this._Range) this._Range.collapse(A);this._UpdateElementInfo();},Clone:function(){var A=FCKTools.CloneObject(this);if (this._Range) A._Range=this._Range.cloneRange();return A;},MoveToNodeContents:function(A){if (!this._Range) this._Range=this.CreateRange();this._Range.selectNodeContents(A);this._UpdateElementInfo();},MoveToElementStart:function(A){this.SetStart(A,1);this.SetEnd(A,1);},MoveToElementEditStart:function(A){var B;while (A&&A.nodeType==1){if (FCKDomTools.CheckIsEditable(A)) B=A;else if (B) break;A=A.firstChild;};if (B) this.MoveToElementStart(B);},InsertNode:function(A){if (this._Range) this._Range.insertNode(A);},CheckIsEmpty:function(){if (this.CheckIsCollapsed()) return true;var A=this.Window.document.createElement('div');this._Range.cloneContents().AppendTo(A);FCKDomTools.TrimNode(A);return (A.innerHTML.length==0);},CheckStartOfBlock:function(){var A=this._Cache;var B=A.IsStartOfBlock;if (B!=undefined) return B;var C=this.StartBlock||this.StartBlockLimit;var D=this._Range.startContainer;var E=this._Range.startOffset;var F;if (E>0){if (D.nodeType==3){var G=D.nodeValue.substr(0,E).Trim();if (G.length!=0) return A.IsStartOfBlock=false;}else F=D.childNodes[E-1];};if (!F) F=FCKDomTools.GetPreviousSourceNode(D,true,null,C);while (F){switch (F.nodeType){case 1:if (!FCKListsLib.InlineChildReqElements[F.nodeName.toLowerCase()]) return A.IsStartOfBlock=false;break;case 3:if (F.nodeValue.Trim().length>0) return A.IsStartOfBlock=false;};F=FCKDomTools.GetPreviousSourceNode(F,false,null,C);};return A.IsStartOfBlock=true;},CheckEndOfBlock:function(A){var B=this._Cache.IsEndOfBlock;if (B!=undefined) return B;var C=this.EndBlock||this.EndBlockLimit;var D=this._Range.endContainer;var E=this._Range.endOffset;var F;if (D.nodeType==3){var G=D.nodeValue;if (E<G.length){G=G.substr(E);if (G.Trim().length!=0) return this._Cache.IsEndOfBlock=false;}}else F=D.childNodes[E];if (!F) F=FCKDomTools.GetNextSourceNode(D,true,null,C);var H=false;while (F){switch (F.nodeType){case 1:var I=F.nodeName.toLowerCase();if (FCKListsLib.InlineChildReqElements[I]) break;if (I=='br'&&!H){H=true;break;};return this._Cache.IsEndOfBlock=false;case 3:if (F.nodeValue.Trim().length>0) return this._Cache.IsEndOfBlock=false;};F=FCKDomTools.GetNextSourceNode(F,false,null,C);};if (A) this.Select();return this._Cache.IsEndOfBlock=true;},CreateBookmark:function(A){var B={StartId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'S',EndId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'E'};var C=this.Window.document;var D;var E;var F;if (!this.CheckIsCollapsed()){E=C.createElement('span');E.style.display='none';E.id=B.EndId;E.setAttribute('_fck_bookmark',true);E.innerHTML='&nbsp;';F=this.Clone();F.Collapse(false);F.InsertNode(E);};D=C.createElement('span');D.style.display='none';D.id=B.StartId;D.setAttribute('_fck_bookmark',true);D.innerHTML='&nbsp;';F=this.Clone();F.Collapse(true);F.InsertNode(D);if (A){B.StartNode=D;B.EndNode=E;};if (E){this.SetStart(D,4);this.SetEnd(E,3);}else this.MoveToPosition(D,4);return B;},GetBookmarkNode:function(A,B){var C=this.Window.document;if (B) return A.StartNode||C.getElementById(A.StartId);else return A.EndNode||C.getElementById(A.EndId);},MoveToBookmark:function(A,B){var C=this.GetBookmarkNode(A,true);var D=this.GetBookmarkNode(A,false);this.SetStart(C,3);if (!B) FCKDomTools.RemoveNode(C);if (D){this.SetEnd(D,3);if (!B) FCKDomTools.RemoveNode(D);}else this.Collapse(true);this._UpdateElementInfo();},CreateBookmark2:function(){if (!this._Range) return { "Start":0,"End":0 };var A={"Start":[this._Range.startOffset],"End":[this._Range.endOffset]};var B=this._Range.startContainer.previousSibling;var C=this._Range.endContainer.previousSibling;var D=this._Range.startContainer;var E=this._Range.endContainer;while (B&&B.nodeType==3){A.Start[0]+=B.length;D=B;B=B.previousSibling;};while (C&&C.nodeType==3){A.End[0]+=C.length;E=C;C=C.previousSibling;};if (D.nodeType==1&&D.childNodes[A.Start[0]]&&D.childNodes[A.Start[0]].nodeType==3){var F=D.childNodes[A.Start[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};D=F;A.Start[0]=G;};if (E.nodeType==1&&E.childNodes[A.End[0]]&&E.childNodes[A.End[0]].nodeType==3){var F=E.childNodes[A.End[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};E=F;A.End[0]=G;};A.Start=FCKDomTools.GetNodeAddress(D,true).concat(A.Start);A.End=FCKDomTools.GetNodeAddress(E,true).concat(A.End);return A;},MoveToBookmark2:function(A){var B=FCKDomTools.GetNodeFromAddress(this.Window.document,A.Start.slice(0,-1),true);var C=FCKDomTools.GetNodeFromAddress(this.Window.document,A.End.slice(0,-1),true);this.Release(true);this._Range=new FCKW3CRange(this.Window.document);var D=A.Start[A.Start.length-1];var E=A.End[A.End.length-1];while (B.nodeType==3&&D>B.length){if (!B.nextSibling||B.nextSibling.nodeType!=3) break;D-=B.length;B=B.nextSibling;};while (C.nodeType==3&&E>C.length){if (!C.nextSibling||C.nextSibling.nodeType!=3) break;E-=C.length;C=C.nextSibling;};this._Range.setStart(B,D);this._Range.setEnd(C,E);this._UpdateElementInfo();},MoveToPosition:function(A,B){this.SetStart(A,B);this.Collapse(true);},SetStart:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setStart(A,0);break;case 2:D.setStart(A,A.childNodes.length);break;case 3:D.setStartBefore(A);break;case 4:D.setStartAfter(A);};if (!C) this._UpdateElementInfo();},SetEnd:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setEnd(A,0);break;case 2:D.setEnd(A,A.childNodes.length);break;case 3:D.setEndBefore(A);break;case 4:D.setEndAfter(A);};if (!C) this._UpdateElementInfo();},Expand:function(A){var B,oSibling;switch (A){case 'inline_elements':if (this._Range.startOffset==0){B=this._Range.startContainer;if (B.nodeType!=1) B=B.previousSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setStartBefore(B);if (B!=B.parentNode.firstChild) break;B=B.parentNode;}}};B=this._Range.endContainer;var C=this._Range.endOffset;if ((B.nodeType==3&&C>=B.nodeValue.length)||(B.nodeType==1&&C>=B.childNodes.length)||(B.nodeType!=1&&B.nodeType!=3)){if (B.nodeType!=1) B=B.nextSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setEndAfter(B);if (B!=B.parentNode.lastChild) break;B=B.parentNode;}}};break;case 'block_contents':case 'list_contents':var D=FCKListsLib.BlockBoundaries;if (A=='list_contents'||FCKConfig.EnterMode=='br') D=FCKListsLib.ListBoundaries;if (this.StartBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents') this.SetStart(this.StartBlock,1);else{B=this._Range.startContainer;if (B.nodeType==1){var E=B.childNodes[this._Range.startOffset];if (E) B=FCKDomTools.GetPreviousSourceNode(E,true);else B=B.lastChild||B;};while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setStartBefore(B);B=B.previousSibling||B.parentNode;}};if (this.EndBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents'&&this.EndBlock.nodeName.toLowerCase()!='li') this.SetEnd(this.EndBlock,2);else{B=this._Range.endContainer;if (B.nodeType==1) B=B.childNodes[this._Range.endOffset]||B.lastChild;while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setEndAfter(B);B=B.nextSibling||B.parentNode;};if (B&&B.nodeName.toLowerCase()=='br') this._Range.setEndAfter(B);};this._UpdateElementInfo();}},SplitBlock:function(A){var B=A||FCKConfig.EnterMode;if (!this._Range) this.MoveToSelection();if (this.StartBlockLimit==this.EndBlockLimit){var C=this.StartBlock;var D=this.EndBlock;var E=null;if (B!='br'){if (!C){C=this.FixBlock(true,B);D=this.EndBlock;};if (!D) D=this.FixBlock(false,B);};var F=(C!=null&&this.CheckStartOfBlock());var G=(D!=null&&this.CheckEndOfBlock());if (!this.CheckIsEmpty()) this.DeleteContents();if (C&&D&&C==D){if (G){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(D,4);D=null;}else if (F){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(C,3);C=null;}else{this.SetEnd(C,2);var H=this.ExtractContents();D=C.cloneNode(false);D.removeAttribute('id',false);H.AppendTo(D);FCKDomTools.InsertAfterNode(C,D);this.MoveToPosition(C,4);if (FCKBrowserInfo.IsGecko&&!C.nodeName.IEquals(['ul','ol'])) FCKTools.AppendBogusBr(C);}};return {PreviousBlock:C,NextBlock:D,WasStartOfBlock:F,WasEndOfBlock:G,ElementPath:E};};return null;},FixBlock:function(A,B){var C=this.CreateBookmark();this.Collapse(A);this.Expand('block_contents');var D=this.Window.document.createElement(B);this.ExtractContents().AppendTo(D);FCKDomTools.TrimNode(D);this.InsertNode(D);this.MoveToBookmark(C);return D;},Release:function(A){if (!A) this.Window=null;this.StartNode=null;this.StartContainer=null;this.StartBlock=null;this.StartBlockLimit=null;this.EndNode=null;this.EndContainer=null;this.EndBlock=null;this.EndBlockLimit=null;this._Range=null;this._Cache=null;},CheckHasRange:function(){return!!this._Range;},GetTouchedStartNode:function(){var A=this._Range;var B=A.startContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.startOffset]||B;},GetTouchedEndNode:function(){var A=this._Range;var B=A.endContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.endOffset-1]||B;}};
+FCKDomRange.prototype.MoveToSelection=function(){this.Release(true);var A=this.Window.getSelection();if (A&&A.rangeCount>0){this._Range=FCKW3CRange.CreateFromRange(this.Window.document,A.getRangeAt(0));this._UpdateElementInfo();}else if (this.Window.document) this.MoveToElementStart(this.Window.document.body);};FCKDomRange.prototype.Select=function(){var A=this._Range;if (A){var B=A.startContainer;if (A.collapsed&&B.nodeType==1&&B.childNodes.length==0) B.appendChild(A._Document.createTextNode(''));var C=this.Window.document.createRange();C.setStart(B,A.startOffset);try{C.setEnd(A.endContainer,A.endOffset);}catch (e){if (e.toString().Contains('NS_ERROR_ILLEGAL_VALUE')){A.collapse(true);C.setEnd(A.endContainer,A.endOffset);}else throw(e);};var D=this.Window.getSelection();D.removeAllRanges();D.addRange(C);}};FCKDomRange.prototype.SelectBookmark=function(A){var B=this.Window.document.createRange();var C=this.GetBookmarkNode(A,true);var D=this.GetBookmarkNode(A,false);B.setStart(C.parentNode,FCKDomTools.GetIndexOf(C));FCKDomTools.RemoveNode(C);if (D){B.setEnd(D.parentNode,FCKDomTools.GetIndexOf(D));FCKDomTools.RemoveNode(D);};var E=this.Window.getSelection();E.removeAllRanges();E.addRange(B);};
+var FCKDomRangeIterator=function(A){this.Range=A;this.ForceBrBreak=false;this.EnforceRealBlocks=false;};FCKDomRangeIterator.CreateFromSelection=function(A){var B=new FCKDomRange(A);B.MoveToSelection();return new FCKDomRangeIterator(B);};FCKDomRangeIterator.prototype={GetNextParagraph:function(){var A;var B;var C;var D;var E;var F=this.ForceBrBreak?FCKListsLib.ListBoundaries:FCKListsLib.BlockBoundaries;if (!this._LastNode){var B=this.Range.Clone();B.Expand(this.ForceBrBreak?'list_contents':'block_contents');this._NextNode=B.GetTouchedStartNode();this._LastNode=B.GetTouchedEndNode();B=null;};var H=this._NextNode;var I=this._LastNode;this._NextNode=null;while (H){var J=false;var K=(H.nodeType!=1);var L=false;if (!K){var M=H.nodeName.toLowerCase();if (F[M]&&(!FCKBrowserInfo.IsIE||H.scopeName=='HTML')){if (M=='br') K=true;else if (!B&&H.childNodes.length==0&&M!='hr'){A=H;C=H==I;break;};if (B){B.SetEnd(H,3,true);if (M!='br') this._NextNode=H;};J=true;}else{if (H.firstChild){if (!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};H=H.firstChild;continue;};K=true;}}else if (H.nodeType==3){if (/^[\r\n\t ]+$/.test(H.nodeValue)) K=false;};if (K&&!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};C=((!J||K)&&H==I);if (B&&!J){while (!H.nextSibling&&!C){var N=H.parentNode;if (F[N.nodeName.toLowerCase()]){J=true;C=C||(N==I);break;};H=N;K=true;C=(H==I);L=true;}};if (K) B.SetEnd(H,4,true);if ((J||C)&&B){B._UpdateElementInfo();if (B.StartNode==B.EndNode&&B.StartNode.parentNode==B.StartBlockLimit&&B.StartNode.getAttribute&&B.StartNode.getAttribute('_fck_bookmark')) B=null;else break;};if (C) break;H=FCKDomTools.GetNextSourceNode(H,L,null,I);};if (!A){if (!B){this._NextNode=null;return null;};A=B.StartBlock;if (!A&&!this.EnforceRealBlocks&&B.StartBlockLimit.nodeName.IEquals('DIV','TH','TD')&&B.CheckStartOfBlock()&&B.CheckEndOfBlock()){A=B.StartBlockLimit;}else if (!A||(this.EnforceRealBlocks&&A.nodeName.toLowerCase()=='li')){A=this.Range.Window.document.createElement(FCKConfig.EnterMode=='p'?'p':'div');B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);B.InsertNode(A);D=true;E=true;}else if (A.nodeName.toLowerCase()!='li'){if (!B.CheckStartOfBlock()||!B.CheckEndOfBlock()){A=A.cloneNode(false);B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);var O=B.SplitBlock();D=!O.WasStartOfBlock;E=!O.WasEndOfBlock;B.InsertNode(A);}}else if (!C){this._NextNode=A==I?null:FCKDomTools.GetNextSourceNode(B.EndNode,true,null,I);return A;}};if (D){var P=A.previousSibling;if (P&&P.nodeType==1){if (P.nodeName.toLowerCase()=='br') P.parentNode.removeChild(P);else if (P.lastChild&&P.lastChild.nodeName.IEquals('br')) P.removeChild(P.lastChild);}};if (E){var Q=A.lastChild;if (Q&&Q.nodeType==1&&Q.nodeName.toLowerCase()=='br') A.removeChild(Q);};if (!this._NextNode) this._NextNode=(C||A==I)?null:FCKDomTools.GetNextSourceNode(A,true,null,I);return A;}};
+var FCKDocumentFragment=function(A,B){this.RootNode=B||A.createDocumentFragment();};FCKDocumentFragment.prototype={AppendTo:function(A){A.appendChild(this.RootNode);},InsertAfterNode:function(A){FCKDomTools.InsertAfterNode(A,this.RootNode);}};
+var FCKW3CRange=function(A){this._Document=A;this.startContainer=null;this.startOffset=null;this.endContainer=null;this.endOffset=null;this.collapsed=true;};FCKW3CRange.CreateRange=function(A){return new FCKW3CRange(A);};FCKW3CRange.CreateFromRange=function(A,B){var C=FCKW3CRange.CreateRange(A);C.setStart(B.startContainer,B.startOffset);C.setEnd(B.endContainer,B.endOffset);return C;};FCKW3CRange.prototype={_UpdateCollapsed:function(){this.collapsed=(this.startContainer==this.endContainer&&this.startOffset==this.endOffset);},setStart:function(A,B){this.startContainer=A;this.startOffset=B;if (!this.endContainer){this.endContainer=A;this.endOffset=B;};this._UpdateCollapsed();},setEnd:function(A,B){this.endContainer=A;this.endOffset=B;if (!this.startContainer){this.startContainer=A;this.startOffset=B;};this._UpdateCollapsed();},setStartAfter:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setStartBefore:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A));},setEndAfter:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setEndBefore:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A));},collapse:function(A){if (A){this.endContainer=this.startContainer;this.endOffset=this.startOffset;}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset;};this.collapsed=true;},selectNodeContents:function(A){this.setStart(A,0);this.setEnd(A,A.nodeType==3?A.data.length:A.childNodes.length);},insertNode:function(A){var B=this.startContainer;var C=this.startOffset;if (B.nodeType==3){B.splitText(C);if (B==this.endContainer) this.setEnd(B.nextSibling,this.endOffset-this.startOffset);FCKDomTools.InsertAfterNode(B,A);return;}else{B.insertBefore(A,B.childNodes[C]||null);if (B==this.endContainer){this.endOffset++;this.collapsed=false;}}},deleteContents:function(){if (this.collapsed) return;this._ExecContentsAction(0);},extractContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(1,A);return A;},cloneContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(2,A);return A;},_ExecContentsAction:function(A,B){var C=this.startContainer;var D=this.endContainer;var E=this.startOffset;var F=this.endOffset;var G=false;var H=false;if (D.nodeType==3) D=D.splitText(F);else{if (D.childNodes.length>0){if (F>D.childNodes.length-1){D=FCKDomTools.InsertAfterNode(D.lastChild,this._Document.createTextNode(''));H=true;}else D=D.childNodes[F];}};if (C.nodeType==3){C.splitText(E);if (C==D) D=C.nextSibling;}else{if (E==0){C=C.insertBefore(this._Document.createTextNode(''),C.firstChild);G=true;}else if (E>C.childNodes.length-1){C=C.appendChild(this._Document.createTextNode(''));G=true;}else C=C.childNodes[E].previousSibling;};var I=FCKDomTools.GetParents(C);var J=FCKDomTools.GetParents(D);var i,topStart,topEnd;for (i=0;i<I.length;i++){topStart=I[i];topEnd=J[i];if (topStart!=topEnd) break;};var K,levelStartNode,levelClone,currentNode,currentSibling;if (B) K=B.RootNode;for (var j=i;j<I.length;j++){levelStartNode=I[j];if (K&&levelStartNode!=C) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==C));currentNode=levelStartNode.nextSibling;while(currentNode){if (currentNode==J[j]||currentNode==D) break;currentSibling=currentNode.nextSibling;if (A==2) K.appendChild(currentNode.cloneNode(true));else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.appendChild(currentNode);};currentNode=currentSibling;};if (K) K=levelClone;};if (B) K=B.RootNode;for (var k=i;k<J.length;k++){levelStartNode=J[k];if (A>0&&levelStartNode!=D) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==D));if (!I[k]||levelStartNode.parentNode!=I[k].parentNode){currentNode=levelStartNode.previousSibling;while(currentNode){if (currentNode==I[k]||currentNode==C) break;currentSibling=currentNode.previousSibling;if (A==2) K.insertBefore(currentNode.cloneNode(true),K.firstChild);else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.insertBefore(currentNode,K.firstChild);};currentNode=currentSibling;}};if (K) K=levelClone;};if (A==2){var L=this.startContainer;if (L.nodeType==3){L.data+=L.nextSibling.data;L.parentNode.removeChild(L.nextSibling);};var M=this.endContainer;if (M.nodeType==3&&M.nextSibling){M.data+=M.nextSibling.data;M.parentNode.removeChild(M.nextSibling);}}else{if (topStart&&topEnd&&(C.parentNode!=topStart.parentNode||D.parentNode!=topEnd.parentNode)){var N=FCKDomTools.GetIndexOf(topEnd);if (G&&topEnd.parentNode==C.parentNode) N--;this.setStart(topEnd.parentNode,N);};this.collapse(true);};if(G) C.parentNode.removeChild(C);if(H&&D.parentNode) D.parentNode.removeChild(D);},cloneRange:function(){return FCKW3CRange.CreateFromRange(this._Document,this);}};
+var FCKEnterKey=function(A,B,C,D){this.Window=A;this.EnterMode=B||'p';this.ShiftEnterMode=C||'br';var E=new FCKKeystrokeHandler(false);E._EnterKey=this;E.OnKeystroke=FCKEnterKey_OnKeystroke;E.SetKeystrokes([[13,'Enter'],[SHIFT+13,'ShiftEnter'],[9,'Tab'],[8,'Backspace'],[CTRL+8,'CtrlBackspace'],[46,'Delete']]);if (D>0){this.TabText='';while (D-->0) this.TabText+='\xa0';};E.AttachToElement(A.document);};function FCKEnterKey_OnKeystroke(A,B){var C=this._EnterKey;try{switch (B){case 'Enter':return C.DoEnter();break;case 'ShiftEnter':return C.DoShiftEnter();break;case 'Backspace':return C.DoBackspace();break;case 'Delete':return C.DoDelete();break;case 'Tab':return C.DoTab();break;case 'CtrlBackspace':return C.DoCtrlBackspace();break;}}catch (e){};return false;};FCKEnterKey.prototype.DoEnter=function(A,B){FCKUndo.SaveUndoStep();this._HasShift=(B===true);var C=FCKSelection.GetParentElement();var D=new FCKElementPath(C);var E=A||this.EnterMode;if (E=='br'||D.Block&&D.Block.tagName.toLowerCase()=='pre') return this._ExecuteEnterBr();else return this._ExecuteEnterBlock(E);};FCKEnterKey.prototype.DoShiftEnter=function(){return this.DoEnter(this.ShiftEnterMode,true);};FCKEnterKey.prototype.DoBackspace=function(){var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};var C=B.CheckIsCollapsed();if (!C){if (FCKBrowserInfo.IsIE&&this.Window.document.selection.type.toLowerCase()=="control"){var D=this.Window.document.selection.createRange();for (var i=D.length-1;i>=0;i--){var E=D.item(i);E.parentNode.removeChild(E);};return true;};return false;};var F=B.StartBlock;var G=B.EndBlock;if (B.StartBlockLimit==B.EndBlockLimit&&F&&G){if (!C){var H=B.CheckEndOfBlock();B.DeleteContents();if (F!=G){B.SetStart(G,1);B.SetEnd(G,1);};B.Select();A=(F==G);};if (B.CheckStartOfBlock()){var I=B.StartBlock;var J=FCKDomTools.GetPreviousSourceElement(I,true,['BODY',B.StartBlockLimit.nodeName],['UL','OL']);A=this._ExecuteBackspace(B,J,I);}else if (FCKBrowserInfo.IsGeckoLike){B.Select();}};B.Release();return A;};FCKEnterKey.prototype.DoCtrlBackspace=function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(this.Window);A.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(A,this.Window.document.body)){this._FixIESelectAllBug(A);return true;};return false;};FCKEnterKey.prototype._ExecuteBackspace=function(A,B,C){var D=false;if (!B&&C&&C.nodeName.IEquals('LI')&&C.parentNode.parentNode.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};if (B&&B.nodeName.IEquals('LI')){var E=FCKDomTools.GetLastChild(B,['UL','OL']);while (E){B=FCKDomTools.GetLastChild(E,'LI');E=FCKDomTools.GetLastChild(B,['UL','OL']);}};if (B&&C){if (C.nodeName.IEquals('LI')&&!B.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};var F=C.parentNode;var G=B.nodeName.toLowerCase();if (FCKListsLib.EmptyElements[G]!=null||G=='table'){FCKDomTools.RemoveNode(B);D=true;}else{FCKDomTools.RemoveNode(C);while (F.innerHTML.Trim().length==0){var H=F.parentNode;H.removeChild(F);F=H;};FCKDomTools.LTrimNode(C);FCKDomTools.RTrimNode(B);A.SetStart(B,2,true);A.Collapse(true);var I=A.CreateBookmark(true);if (!C.tagName.IEquals(['TABLE'])) FCKDomTools.MoveChildren(C,B);A.SelectBookmark(I);D=true;}};return D;};FCKEnterKey.prototype.DoDelete=function(){FCKUndo.SaveUndoStep();var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};if (B.CheckIsCollapsed()&&B.CheckEndOfBlock(FCKBrowserInfo.IsGeckoLike)){var C=B.StartBlock;var D=FCKTools.GetElementAscensor(C,'td');var E=FCKDomTools.GetNextSourceElement(C,true,[B.StartBlockLimit.nodeName],['UL','OL','TR'],true);if (D){var F=FCKTools.GetElementAscensor(E,'td');if (F!=D) return true;};A=this._ExecuteBackspace(B,C,E);};B.Release();return A;};FCKEnterKey.prototype.DoTab=function(){var A=new FCKDomRange(this.Window);A.MoveToSelection();var B=A._Range.startContainer;while (B){if (B.nodeType==1){var C=B.tagName.toLowerCase();if (C=="tr"||C=="td"||C=="th"||C=="tbody"||C=="table") return false;else break;};B=B.parentNode;};if (this.TabText){A.DeleteContents();A.InsertNode(this.Window.document.createTextNode(this.TabText));A.Collapse(false);A.Select();};return true;};FCKEnterKey.prototype._ExecuteEnterBlock=function(A,B){var C=B||new FCKDomRange(this.Window);var D=C.SplitBlock(A);if (D){var E=D.PreviousBlock;var F=D.NextBlock;var G=D.WasStartOfBlock;var H=D.WasEndOfBlock;if (F){if (F.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(F,F.parentNode);FCKDomTools.MoveNode(F,F.nextSibling,true);}}else if (E&&E.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(E,E.parentNode);C.MoveToElementEditStart(E.nextSibling);FCKDomTools.MoveNode(E,E.previousSibling);};if (!G&&!H){if (F.nodeName.IEquals('li')&&F.firstChild&&F.firstChild.nodeName.IEquals(['ul','ol'])) F.insertBefore(FCKTools.GetElementDocument(F).createTextNode('\xa0'),F.firstChild);if (F) C.MoveToElementEditStart(F);}else{if (G&&H&&E.tagName.toUpperCase()=='LI'){C.MoveToElementStart(E);this._OutdentWithSelection(E,C);C.Release();return true;};var I;if (E){var J=E.tagName.toUpperCase();if (!this._HasShift&&!(/^H[1-6]$/).test(J)){I=FCKDomTools.CloneElement(E);}}else if (F) I=FCKDomTools.CloneElement(F);if (!I) I=this.Window.document.createElement(A);var K=D.ElementPath;if (K){for (var i=0,len=K.Elements.length;i<len;i++){var L=K.Elements[i];if (L==K.Block||L==K.BlockLimit) break;if (FCKListsLib.InlineChildReqElements[L.nodeName.toLowerCase()]){L=FCKDomTools.CloneElement(L);FCKDomTools.MoveChildren(I,L);I.appendChild(L);}}};if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);C.InsertNode(I);if (FCKBrowserInfo.IsIE){C.MoveToElementEditStart(I);C.Select();};C.MoveToElementEditStart(G&&!H?F:I);};if (FCKBrowserInfo.IsSafari) FCKDomTools.ScrollIntoView(F||I,false);else if (FCKBrowserInfo.IsGeckoLike) (F||I).scrollIntoView(false);C.Select();};C.Release();return true;};FCKEnterKey.prototype._ExecuteEnterBr=function(A){var B=new FCKDomRange(this.Window);B.MoveToSelection();if (B.StartBlockLimit==B.EndBlockLimit){B.DeleteContents();B.MoveToSelection();var C=B.CheckStartOfBlock();var D=B.CheckEndOfBlock();var E=B.StartBlock?B.StartBlock.tagName.toUpperCase():'';var F=this._HasShift;var G=false;if (!F&&E=='LI') return this._ExecuteEnterBlock(null,B);if (!F&&D&&(/^H[1-6]$/).test(E)){FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createElement('br'));if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createTextNode(''));B.SetStart(B.StartBlock.nextSibling,FCKBrowserInfo.IsIE?3:1);}else{var H;G=E.IEquals('pre');if (G) H=this.Window.document.createTextNode(FCKBrowserInfo.IsIE?'\r':'\n');else H=this.Window.document.createElement('br');B.InsertNode(H);if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(H,this.Window.document.createTextNode(''));if (D&&FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H.parentNode);if (FCKBrowserInfo.IsIE) B.SetStart(H,4);else B.SetStart(H.nextSibling,1);if (!FCKBrowserInfo.IsIE){var I=null;if (FCKBrowserInfo.IsOpera) I=this.Window.document.createElement('span');else I=this.Window.document.createElement('br');H.parentNode.insertBefore(I,H.nextSibling);if (FCKBrowserInfo.IsSafari) FCKDomTools.ScrollIntoView(I,false);else I.scrollIntoView(false);I.parentNode.removeChild(I);}};B.Collapse(true);B.Select(G);};B.Release();return true;};FCKEnterKey.prototype._OutdentWithSelection=function(A,B){var C=B.CreateBookmark();FCKListHandler.OutdentListItem(A);B.MoveToBookmark(C);B.Select();};FCKEnterKey.prototype._CheckIsAllContentsIncluded=function(A,B){var C=false;var D=false;if (A.StartContainer==B||A.StartContainer==B.firstChild) C=(A._Range.startOffset==0);if (A.EndContainer==B||A.EndContainer==B.lastChild){var E=A.EndContainer.nodeType==3?A.EndContainer.length:A.EndContainer.childNodes.length;D=(A._Range.endOffset==E);};return C&&D;};FCKEnterKey.prototype._FixIESelectAllBug=function(A){var B=this.Window.document;B.body.innerHTML='';var C;if (FCKConfig.EnterMode.IEquals(['div','p'])){C=B.createElement(FCKConfig.EnterMode);B.body.appendChild(C);}else C=B.body;A.MoveToNodeContents(C);A.Collapse(true);A.Select();A.Release();};
+var FCKDocumentProcessor={};FCKDocumentProcessor._Items=[];FCKDocumentProcessor.AppendNew=function(){var A={};this._Items.AddItem(A);return A;};FCKDocumentProcessor.Process=function(A){var B=FCK.IsDirty();var C,i=0;while((C=this._Items[i++])) C.ProcessDocument(A);if (!B) FCK.ResetIsDirty();};var FCKDocumentProcessor_CreateFakeImage=function(A,B){var C=FCKTools.GetElementDocument(B).createElement('IMG');C.className=A;C.src=FCKConfig.FullBasePath+'images/spacer.gif';C.setAttribute('_fckfakelement','true',0);C.setAttribute('_fckrealelement',FCKTempBin.AddElement(B),0);return C;};if (FCKBrowserInfo.IsIE||FCKBrowserInfo.IsOpera){var FCKAnchorsProcessor=FCKDocumentProcessor.AppendNew();FCKAnchorsProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('A');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.name.length>0){if (C.innerHTML!==''){if (FCKBrowserInfo.IsIE) C.className+=' FCK__AnchorC';}else{var D=FCKDocumentProcessor_CreateFakeImage('FCK__Anchor',C.cloneNode(true));D.setAttribute('_fckanchor','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}}}};var FCKPageBreaksProcessor=FCKDocumentProcessor.AppendNew();FCKPageBreaksProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('DIV');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.style.pageBreakAfter=='always'&&C.childNodes.length==1&&C.childNodes[0].style&&C.childNodes[0].style.display=='none'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',C.cloneNode(true));C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};FCKEmbedAndObjectProcessor=(function(){var A=[];var B=function(el){var C=el.cloneNode(true);var D;var E=D=FCKDocumentProcessor_CreateFakeImage('FCK__UnknownObject',C);FCKEmbedAndObjectProcessor.RefreshView(E,el);for (var i=0;i<A.length;i++) D=A[i](el,D)||D;if (D!=E) FCKTempBin.RemoveElement(E.getAttribute('_fckrealelement'));el.parentNode.replaceChild(D,el);};return FCKTools.Merge(FCKDocumentProcessor.AppendNew(),{ProcessDocument:function(doc){FCKTools.RunFunction(function(){var F=doc.getElementsByTagName('object');for (var i=F.length-1;i>=0;i--) B(F[i]);var G=doc.getElementsByTagName('embed');for (var i=G.length-1;i>=0;i--) B(G[i]);});},RefreshView:function(placeHolder,original){if (original.getAttribute('width')>0) placeHolder.style.width=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('width'));if (original.getAttribute('height')>0) placeHolder.style.height=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('height'));},AddCustomHandler:function(func){A.push(func);}});})();FCK.GetRealElement=function(A){var e=FCKTempBin.Elements[A.getAttribute('_fckrealelement')];if (A.getAttribute('_fckflash')){if (A.style.width.length>0) e.width=FCKTools.ConvertStyleSizeToHtml(A.style.width);if (A.style.height.length>0) e.height=FCKTools.ConvertStyleSizeToHtml(A.style.height);};return e;};if (FCKBrowserInfo.IsIE){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('HR');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){var D=A.createElement('hr');D.mergeAttributes(C,true);FCKDomTools.InsertAfterNode(C,D);C.parentNode.removeChild(C);}}};FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('INPUT');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.type=='hidden'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__InputHidden',C.cloneNode(true));D.setAttribute('_fckinputhidden','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};FCKEmbedAndObjectProcessor.AddCustomHandler(function(A,B){if (!(A.nodeName.IEquals('embed')&&(A.type=='application/x-shockwave-flash'||/\.swf($|#|\?)/i.test(A.src)))) return;B.className='FCK__Flash';B.setAttribute('_fckflash','true',0);});
 var FCKSelection=FCK.Selection={GetParentBlock:function(){var A=this.GetParentElement();while (A){if (FCKListsLib.BlockBoundaries[A.nodeName.toLowerCase()]) break;A=A.parentNode;};return A;},ApplyStyle:function(A){FCKStyles.ApplyStyle(new FCKStyle(A));}};
-FCKSelection.GetType=function(){var A='Text';var B;try { B=FCK.EditorWindow.getSelection();} catch (e) {};if (B&&B.rangeCount==1){var C=B.getRangeAt(0);if (C.startContainer==C.endContainer&&(C.endOffset-C.startOffset)==1&&C.startContainer.nodeType==1&&FCKListsLib.StyleObjectElements[C.startContainer.childNodes[C.startOffset].nodeName.toLowerCase()]){A='Control';}};return A;};FCKSelection.GetSelectedElement=function(){var A=null;var B=!!FCK.EditorWindow&&FCK.EditorWindow.getSelection();if (B&&B.anchorNode&&B.anchorNode.nodeType==1){if (this.GetType()=='Control'){A=B.anchorNode.childNodes[B.anchorOffset];if (!A) A=B.anchorNode;else if (A.nodeType!=1) return null;}};return A;};FCKSelection.GetParentElement=function(){if (this.GetType()=='Control') return FCKSelection.GetSelectedElement().parentNode;else{var A=FCK.EditorWindow.getSelection();if (A){if (A.anchorNode&&A.anchorNode==A.focusNode) return A.anchorNode.parentNode;var B=new FCKElementPath(A.anchorNode);var C=new FCKElementPath(A.focusNode);var D=null;var E=null;if (B.Elements.length>C.Elements.length){D=B.Elements;E=C.Elements;}else{D=C.Elements;E=B.Elements;};var F=D.length-E.length;for(var i=0;i<E.length;i++){if (D[F+i]==E[i]) return E[i];};return null;}};return null;};FCKSelection.GetBoundaryParentElement=function(A){if (!FCK.EditorWindow) return null;if (this.GetType()=='Control') return FCKSelection.GetSelectedElement().parentNode;else{var B=FCK.EditorWindow.getSelection();if (B&&B.rangeCount>0){var C=B.getRangeAt(A?0:(B.rangeCount-1));var D=A?C.startContainer:C.endContainer;return (D.nodeType==1?D:D.parentNode);}};return null;};FCKSelection.SelectNode=function(A){var B=FCK.EditorDocument.createRange();B.selectNode(A);var C=FCK.EditorWindow.getSelection();C.removeAllRanges();C.addRange(B);};FCKSelection.Collapse=function(A){var B=FCK.EditorWindow.getSelection();if (A==null||A===true) B.collapseToStart();else B.collapseToEnd();};FCKSelection.HasAncestorNode=function(A){var B=this.GetSelectedElement();if (!B&&FCK.EditorWindow){try		{ B=FCK.EditorWindow.getSelection().getRangeAt(0).startContainer;}catch(e){}};while (B){if (B.nodeType==1&&B.tagName==A) return true;B=B.parentNode;};return false;};FCKSelection.MoveToAncestorNode=function(A){var B;var C=this.GetSelectedElement();if (!C) C=FCK.EditorWindow.getSelection().getRangeAt(0).startContainer;while (C){if (C.nodeName==A) return C;C=C.parentNode;};return null;};FCKSelection.Delete=function(){var A=FCK.EditorWindow.getSelection();for (var i=0;i<A.rangeCount;i++){A.getRangeAt(i).deleteContents();};return A;};
-var FCKTableHandler={};FCKTableHandler.InsertRow=function(A){var B=FCKSelection.MoveToAncestorNode('TR');if (!B) return;var C=B.cloneNode(true);B.parentNode.insertBefore(C,B);FCKTableHandler.ClearRow(A?C:B);};FCKTableHandler.DeleteRows=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();var C=[];for (var i=0;i<B.length;i++){var D=FCKTools.GetElementAscensor(B[i],'TR');C[D.rowIndex]=D;};for (var i=C.length;i>=0;i--){if (C[i]) FCKTableHandler.DeleteRows(C[i]);};return;};var E=FCKTools.GetElementAscensor(A,'TABLE');if (E.rows.length==1){FCKTableHandler.DeleteTable(E);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteTable=function(A){if (!A){A=FCKSelection.GetSelectedElement();if (!A||A.tagName!='TABLE') A=FCKSelection.MoveToAncestorNode('TABLE');};if (!A) return;FCKSelection.SelectNode(A);FCKSelection.Collapse();if (A.parentNode.childNodes.length==1) A.parentNode.parentNode.removeChild(A.parentNode);else A.parentNode.removeChild(A);};FCKTableHandler.InsertColumn=function(A){var B=null;var C=this.GetSelectedCells();if (C&&C.length) B=C[A?0:(C.length-1)];if (!B) return;var D=FCKTools.GetElementAscensor(B,'TABLE');var E=B.cellIndex;for (var i=0;i<D.rows.length;i++){var F=D.rows[i];if (F.cells.length<(E+1)) continue;B=F.cells[E].cloneNode(false);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B);var G=F.cells[E];if (A) F.insertBefore(B,G);else if (G.nextSibling) F.insertBefore(B,G.nextSibling);else F.appendChild(B);}};FCKTableHandler.DeleteColumns=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();for (var i=B.length;i>=0;i--){if (B[i]) FCKTableHandler.DeleteColumns(B[i]);};return;};if (!A) return;var C=FCKTools.GetElementAscensor(A,'TABLE');var D=A.cellIndex;for (var i=C.rows.length-1;i>=0;i--){var E=C.rows[i];if (D==0&&E.cells.length==1){FCKTableHandler.DeleteRows(E);continue;};if (E.cells[D]) E.removeChild(E.cells[D]);}};FCKTableHandler.InsertCell=function(A,B){var C=null;var D=this.GetSelectedCells();if (D&&D.length) C=D[B?0:(D.length-1)];if (!C) return null;var E=FCK.EditorDocument.createElement('TD');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(E);if (!B&&C.cellIndex==C.parentNode.cells.length-1) C.parentNode.appendChild(E);else C.parentNode.insertBefore(E,B?C:C.nextSibling);return E;};FCKTableHandler.DeleteCell=function(A){if (A.parentNode.cells.length==1){FCKTableHandler.DeleteRows(FCKTools.GetElementAscensor(A,'TR'));return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteCells=function(){var A=FCKTableHandler.GetSelectedCells();for (var i=A.length-1;i>=0;i--){FCKTableHandler.DeleteCell(A[i]);}};FCKTableHandler._MarkCells=function(A,B){for (var i=0;i<A.length;i++) A[i][B]=true;};FCKTableHandler._UnmarkCells=function(A,B){for (var i=0;i<A.length;i++){if (FCKBrowserInfo.IsIE) A[i].removeAttribute(B);else delete A[i][B];}};FCKTableHandler._ReplaceCellsByMarker=function(A,B,C){for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){if (A[i][j][B]) A[i][j]=C;}}};FCKTableHandler._GetMarkerGeometry=function(A,B,C,D){var E=0;var F=0;var G=0;var H=0;for (var i=C;A[B][i]&&A[B][i][D];i++) E++;for (var i=C-1;A[B][i]&&A[B][i][D];i--){E++;G++;};for (var i=B;A[i]&&A[i][C]&&A[i][C][D];i++) F++;for (var i=B-1;A[i]&&A[i][C]&&A[i][C][D];i--){F++;H++;};return { 'width':E,'height':F,'x':G,'y':H };};FCKTableHandler.CheckIsSelectionRectangular=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length<1) return false;this._MarkCells(A,'_CellSelected');var B=this._CreateTableMap(A[0].parentNode.parentNode);var C=A[0].parentNode.rowIndex;var D=this._GetCellIndexSpan(B,C,A[0]);var E=this._GetMarkerGeometry(B,C,D,'_CellSelected');var F=D-E.x;var G=C-E.y;if (E.width>=E.height){for (D=F;D<F+E.width;D++){C=G+(D-F) % E.height;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}}else{for (C=G;C<G+E.height;C++){D=F+(C-G) % E.width;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}};this._UnmarkCells(A,'_CellSelected');return true;};FCKTableHandler.MergeCells=function(){var A=this.GetSelectedCells();if (A.length<2) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);this._MarkCells(A,'_SelectedCells');var F=this._GetMarkerGeometry(C,D,E,'_SelectedCells');var G=E-F.x;var H=D-F.y;var I=B.ownerDocument.createDocumentFragment();for (var i=0;i<F.height;i++){var J=0;for (var j=0;j<F.width;j++){var K=C[H+i][G+j];while (K.childNodes.length>0){var L=K.removeChild(K.firstChild);if (L.nodeType!=1||(L.getAttribute('type',2)!='_moz'&&L.getAttribute('_moz_dirty')!=null)){I.appendChild(L);J++;}}};if (J>0) I.appendChild(B.ownerDocument.createElement('br'));};this._ReplaceCellsByMarker(C,'_SelectedCells',B);this._UnmarkCells(A,'_SelectedCells');this._InstallTableMap(C,B.parentNode.parentNode);B.appendChild(I);if (FCKBrowserInfo.IsGeckoLike&&(!B.firstChild)) FCKTools.AppendBogusBr(B);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeRight=function(){var A=this.GetMergeRightTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCK.EditorDocument.createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));D.parentNode.removeChild(D);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeDown=function(){var A=this.GetMergeDownTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=B.ownerDocument.createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));if (E.firstChild) E.insertBefore(D.ownerDocument.createElement('br'),E.firstChild);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.HorizontalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=FCKTableHandler._GetCellIndexSpan(C,D,B);var F=isNaN(B.colSpan)?1:B.colSpan;if (F>1){var G=Math.ceil(F/2);var H=B.ownerDocument.createElement('td');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H);var I=E+G;var J=E+F;var K=isNaN(B.rowSpan)?1:B.rowSpan;for (var r=D;r<D+K;r++){for (var i=I;i<J;i++) C[r][i]=H;}}else{var L=[];for (var i=0;i<C.length;i++){var M=C[i].slice(0,E);if (C[i].length<=E){L.push(M);continue;};if (C[i][E]==B){M.push(B);M.push(B.ownerDocument.createElement('td'));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(M[M.length-1]);}else{M.push(C[i][E]);M.push(C[i][E]);};for (var j=E+1;j<C[i].length;j++) M.push(C[i][j]);L.push(M);};C=L;};this._InstallTableMap(C,B.parentNode.parentNode);};FCKTableHandler.VerticalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=FCKTableHandler._GetCellIndexSpan(C,B.parentNode.rowIndex,B);var E=B.rowSpan;var F=B.parentNode.rowIndex;if (isNaN(E)) E=1;if (E>1){B.rowSpan=Math.ceil(E/2);var G=F+Math.ceil(E/2);var H=null;for (var i=D+1;i<C[G].length;i++){if (C[G][i].parentNode.rowIndex==G){H=C[G][i];break;}};var I=FCK.EditorDocument.createElement('td');I.rowSpan=Math.floor(E/2);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);B.parentNode.parentNode.rows[G].insertBefore(I,H);}else{var G=F+1;var K=FCK.EditorDocument.createElement('tr');B.parentNode.parentNode.insertBefore(K,B.parentNode.parentNode.rows[G]);for (var i=0;i<C[F].length;){var L=C[F][i].colSpan;if (isNaN(L)||L<1) L=1;if (i==D){i+=L;continue;};var M=C[F][i].rowSpan;if (isNaN(M)) M=1;C[F][i].rowSpan=M+1;i+=L;};var I=FCK.EditorDocument.createElement('td');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);K.appendChild(I);}};FCKTableHandler._GetCellIndexSpan=function(A,B,C){if (A.length<B+1) return null;var D=A[B];for (var c=0;c<D.length;c++){if (D[c]==C) return c;};return null;};FCKTableHandler._GetCellLocation=function(A,B){for (var i=0;i<A.length;i++){for (var c=0;c<A[i].length;c++){if (A[i][c]==B) return [i,c];}};return null;};FCKTableHandler._GetColumnCells=function(A,B){var C=[];for (var r=0;r<A.length;r++){var D=A[r][B];if (D&&(C.length==0||C[C.length-1]!=D)) C[C.length]=D;};return C;};FCKTableHandler._CreateTableMap=function(A){var B=A.rows;var r=-1;var C=[];for (var i=0;i<B.length;i++){r++;if (!C[r]) C[r]=[];var c=-1;for (var j=0;j<B[i].cells.length;j++){var D=B[i].cells[j];c++;while (C[r][c]) c++;var E=isNaN(D.colSpan)?1:D.colSpan;var F=isNaN(D.rowSpan)?1:D.rowSpan;for (var G=0;G<F;G++){if (!C[r+G]) C[r+G]=[];for (var H=0;H<E;H++){C[r+G][c+H]=B[i].cells[j];}};c+=E-1;}};return C;};FCKTableHandler._InstallTableMap=function(A,B){while (B.rows.length>0){var C=B.rows[0];C.parentNode.removeChild(C);};for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (D.parentNode) D.parentNode.removeChild(D);D.colSpan=D.rowSpan=1;}};var E=0;for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (!D) continue;if (j>E) E=j;if (D._colScanned===true) continue;if (A[i][j-1]==D) D.colSpan++;if (A[i][j+1]!=D) D._colScanned=true;}};for (var i=0;i<=E;i++){for (var j=0;j<A.length;j++){if (!A[j]) continue;var D=A[j][i];if (!D||D._rowScanned===true) continue;if (A[j-1]&&A[j-1][i]==D) D.rowSpan++;if (!A[j+1]||A[j+1][i]!=D) D._rowScanned=true;}};for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (FCKBrowserInfo.IsIE){D.removeAttribute('_colScanned');D.removeAttribute('_rowScanned');}else{delete D._colScanned;delete D._rowScanned;}}};for (var i=0;i<A.length;i++){var I=B.ownerDocument.createElement('tr');for (var j=0;j<A[i].length;){var D=A[i][j];if (A[i-1]&&A[i-1][j]==D){j+=D.colSpan;continue;};I.appendChild(D);j+=D.colSpan;if (D.colSpan==1) D.removeAttribute('colspan');if (D.rowSpan==1) D.removeAttribute('rowspan');};B.appendChild(I);}};FCKTableHandler._MoveCaretToCell=function (A,B){var C=new FCKDomRange(FCK.EditorWindow);C.MoveToNodeContents(A);C.Collapse(B);C.Select();};FCKTableHandler.ClearRow=function(A){var B=A.cells;for (var i=0;i<B.length;i++){B[i].innerHTML='';if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B[i]);}};FCKTableHandler.GetMergeRightTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=E+(isNaN(B.colSpan)?1:B.colSpan);var G=C[D][F];if (!G) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,D,F,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.height!=I.height||H.y!=I.y) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};FCKTableHandler.GetMergeDownTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=D+(isNaN(B.rowSpan)?1:B.rowSpan);if (!C[F]) return null;var G=C[F][E];if (!G) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,F,E,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.width!=I.width||H.x!=I.x) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};
-FCKTableHandler.GetSelectedCells=function(){var A=[];var B=FCK.EditorWindow.getSelection();if (B.rangeCount==1&&B.anchorNode.nodeType==3){var C=FCKTools.GetElementAscensor(B.anchorNode,'TD,TH');if (C) A[0]=C;return A;};for (var i=0;i<B.rangeCount;i++){var D=B.getRangeAt(i);var E;if (D.startContainer.tagName.Equals('TD','TH')) E=D.startContainer;else E=D.startContainer.childNodes[D.startOffset];if (E.tagName.Equals('TD','TH')) A[A.length]=E;};return A;};
-var FCKXml=function(){this.Error=false;};FCKXml.GetAttribute=function(A,B,C){var D=A.attributes.getNamedItem(B);return D?D.value:C;};FCKXml.TransformToObject=function(A){if (!A) return null;var B={};var C=A.attributes;for (var i=0;i<C.length;i++){var D=C[i];B[D.name]=D.value;};var E=A.childNodes;for (i=0;i<E.length;i++){var F=E[i];if (F.nodeType==1){var G='$'+F.nodeName;var H=B[G];if (!H) H=B[G]=[];H.push(this.TransformToObject(F));}};return B;}
-FCKXml.prototype={LoadUrl:function(A){this.Error=false;var B=this;var C=FCKTools.CreateXmlObject('XmlHttp');C.open("GET",A,false);C.send(null);if (C.status==200||C.status==304) this.DOMDocument=C.responseXML;else if (C.status==0&&C.readyState==4) this.DOMDocument=C.responseXML;else this.DOMDocument=null;if (this.DOMDocument==null||this.DOMDocument.firstChild==null){this.Error=true;if (window.confirm('Error loading "'+A+'"\r\nDo you want to see more info?')) alert('URL requested: "'+A+'"\r\nServer response:\r\nStatus: '+C.status+'\r\nResponse text:\r\n'+C.responseText);}},SelectNodes:function(A,B){if (this.Error) return [];var C=[];var D=this.DOMDocument.evaluate(A,B?B:this.DOMDocument,this.DOMDocument.createNSResolver(this.DOMDocument.documentElement),XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);if (D){var E=D.iterateNext();while(E){C[C.length]=E;E=D.iterateNext();}};return C;},SelectSingleNode:function(A,B){if (this.Error) return null;var C=this.DOMDocument.evaluate(A,B?B:this.DOMDocument,this.DOMDocument.createNSResolver(this.DOMDocument.documentElement),9,null);if (C&&C.singleNodeValue) return C.singleNodeValue;else return null;}};
-var FCKNamedCommand=function(A){this.Name=A;};FCKNamedCommand.prototype.Execute=function(){FCK.ExecuteNamedCommand(this.Name);};FCKNamedCommand.prototype.GetState=function(){return FCK.GetNamedCommandState(this.Name);};
-var FCKStyleCommand=function(){};FCKStyleCommand.prototype={Name:'Style',Execute:function(A,B){FCKUndo.SaveUndoStep();if (B.Selected) FCK.Styles.RemoveStyle(B.Style);else FCK.Styles.ApplyStyle(B.Style);FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (!FCK.EditorDocument) return -1;if (FCKSelection.GetType()=='Control'){var A=FCKSelection.GetSelectedElement();if (!A||!FCKStyles.CheckHasObjectStyle(A.nodeName.toLowerCase())) return -1;};return 0;}};
-var FCKDialogCommand=function(A,B,C,D,E,F,G){this.Name=A;this.Title=B;this.Url=C;this.Width=D;this.Height=E;this.GetStateFunction=F;this.GetStateParam=G;this.Resizable=false;};FCKDialogCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_'+this.Name,this.Title,this.Url,this.Width,this.Height,null,null,this.Resizable);};FCKDialogCommand.prototype.GetState=function(){if (this.GetStateFunction) return this.GetStateFunction(this.GetStateParam);else return 0;};var FCKUndefinedCommand=function(){this.Name='Undefined';};FCKUndefinedCommand.prototype.Execute=function(){alert(FCKLang.NotImplemented);};FCKUndefinedCommand.prototype.GetState=function(){return 0;};var FCKFormatBlockCommand=function(){};FCKFormatBlockCommand.prototype={Name:'FormatBlock',Execute:FCKStyleCommand.prototype.Execute,GetState:function(){return FCK.EditorDocument?0:-1;}};var FCKFontNameCommand=function(){};FCKFontNameCommand.prototype={Name:'FontName',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKFontSizeCommand=function(){};FCKFontSizeCommand.prototype={Name:'FontSize',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKPreviewCommand=function(){this.Name='Preview';};FCKPreviewCommand.prototype.Execute=function(){FCK.Preview();};FCKPreviewCommand.prototype.GetState=function(){return 0;};var FCKSaveCommand=function(){this.Name='Save';};FCKSaveCommand.prototype.Execute=function(){var A=FCK.GetParentForm();if (typeof(A.onsubmit)=='function'){var B=A.onsubmit();if (B!=null&&B===false) return;};if (typeof(A.submit)=='function') A.submit();else A.submit.click();};FCKSaveCommand.prototype.GetState=function(){return 0;};var FCKNewPageCommand=function(){this.Name='NewPage';};FCKNewPageCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();FCK.SetData('');FCKUndo.Typing=true;FCK.Focus();};FCKNewPageCommand.prototype.GetState=function(){return 0;};var FCKSourceCommand=function(){this.Name='Source';};FCKSourceCommand.prototype.Execute=function(){if (FCKConfig.SourcePopup){var A=FCKConfig.ScreenWidth*0.65;var B=FCKConfig.ScreenHeight*0.65;FCKDialog.OpenDialog('FCKDialog_Source',FCKLang.Source,'dialog/fck_source.html',A,B,null,null,true);}else FCK.SwitchEditMode();};FCKSourceCommand.prototype.GetState=function(){return (FCK.EditMode==0?0:1);};var FCKUndoCommand=function(){this.Name='Undo';};FCKUndoCommand.prototype.Execute=function(){FCKUndo.Undo();};FCKUndoCommand.prototype.GetState=function(){return (FCKUndo.CheckUndoState()?0:-1);};var FCKRedoCommand=function(){this.Name='Redo';};FCKRedoCommand.prototype.Execute=function(){FCKUndo.Redo();};FCKRedoCommand.prototype.GetState=function(){return (FCKUndo.CheckRedoState()?0:-1);};var FCKPageBreakCommand=function(){this.Name='PageBreak';};FCKPageBreakCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();var e=FCK.EditorDocument.createElement('DIV');e.style.pageBreakAfter='always';e.innerHTML='<span style="DISPLAY:none">&nbsp;</span>';var A=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',e);var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.SplitBlock();if (C.NextBlock) C.NextBlock.parentNode.insertBefore(A,C.NextBlock);else C.PreviousBlock.parentNode.insertBefore(A,C.PreviousBlock.nextSibling);FCK.Events.FireEvent('OnSelectionChange');};FCKPageBreakCommand.prototype.GetState=function(){return 0;};var FCKUnlinkCommand=function(){this.Name='Unlink';};FCKUnlinkCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (FCKBrowserInfo.IsGeckoLike){var A=FCK.Selection.MoveToAncestorNode('A');if (A) FCKTools.RemoveOuterTags(A);return;};FCK.ExecuteNamedCommand(this.Name);};FCKUnlinkCommand.prototype.GetState=function(){var A=FCK.GetNamedCommandState(this.Name);if (A==0&&FCK.EditMode==0){var B=FCKSelection.MoveToAncestorNode('A');var C=(B&&B.name.length>0&&B.href.length==0);if (C) A=-1;};return A;};var FCKSelectAllCommand=function(){this.Name='SelectAll';};FCKSelectAllCommand.prototype.Execute=function(){if (FCK.EditMode==0){FCK.ExecuteNamedCommand('SelectAll');}else{var A=FCK.EditingArea.Textarea;if (FCKBrowserInfo.IsIE){A.createTextRange().execCommand('SelectAll');}else{A.selectionStart=0;A.selectionEnd=A.value.length;};A.focus();}};FCKSelectAllCommand.prototype.GetState=function(){return 0;};var FCKPasteCommand=function(){this.Name='Paste';};FCKPasteCommand.prototype={Execute:function(){if (FCKBrowserInfo.IsIE) FCK.Paste();else FCK.ExecuteNamedCommand('Paste');},GetState:function(){return FCK.GetNamedCommandState('Paste');}};var FCKRuleCommand=function(){this.Name='Rule';};FCKRuleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();FCK.InsertElement('hr');},GetState:function(){return FCK.GetNamedCommandState('InsertHorizontalRule');}};var FCKCopyCommand=function(){this.Name='Copy';};FCKCopyCommand.prototype={Execute:function(){FCK.ExecuteNamedCommand(this.Name);},GetState:function(){return FCK.GetNamedCommandState('Cut');}};var FCKAnchorDeleteCommand=function(){this.Name='AnchorDelete';};FCKAnchorDeleteCommand.prototype={Execute:function(){if (FCK.Selection.GetType()=='Control'){FCK.Selection.Delete();}else{var A=FCK.Selection.GetSelectedElement();if (A){if (A.tagName=='IMG'&&A.getAttribute('_fckanchor')) oAnchor=FCK.GetRealElement(A);else A=null;};if (!A){oAnchor=FCK.Selection.MoveToAncestorNode('A');if (oAnchor) FCK.Selection.SelectNode(oAnchor);};if (oAnchor.href.length!=0){oAnchor.removeAttribute('name');if (FCKBrowserInfo.IsIE) oAnchor.className=oAnchor.className.replace(FCKRegexLib.FCK_Class,'');return;};if (A){A.parentNode.removeChild(A);return;};if (oAnchor.innerHTML.length==0){oAnchor.parentNode.removeChild(oAnchor);return;};FCKTools.RemoveOuterTags(oAnchor);};if (FCKBrowserInfo.IsGecko) FCK.Selection.Collapse(true);},GetState:function(){return FCK.GetNamedCommandState('Unlink');}};
+FCKSelection.GetType=function(){var A='Text';var B;try { B=this.GetSelection();} catch (e) {};if (B&&B.rangeCount==1){var C=B.getRangeAt(0);if (C.startContainer==C.endContainer&&(C.endOffset-C.startOffset)==1&&C.startContainer.nodeType==1&&FCKListsLib.StyleObjectElements[C.startContainer.childNodes[C.startOffset].nodeName.toLowerCase()]){A='Control';}};return A;};FCKSelection.GetSelectedElement=function(){var A=!!FCK.EditorWindow&&this.GetSelection();if (!A||A.rangeCount<1) return null;var B=A.getRangeAt(0);if (B.startContainer!=B.endContainer||B.startContainer.nodeType!=1||B.startOffset!=B.endOffset-1) return null;var C=B.startContainer.childNodes[B.startOffset];if (C.nodeType!=1) return null;return C;};FCKSelection.GetParentElement=function(){if (this.GetType()=='Control') return FCKSelection.GetSelectedElement().parentNode;else{var A=this.GetSelection();if (A){if (A.anchorNode&&A.anchorNode==A.focusNode) return A.anchorNode.parentNode;var B=new FCKElementPath(A.anchorNode);var C=new FCKElementPath(A.focusNode);var D=null;var E=null;if (B.Elements.length>C.Elements.length){D=B.Elements;E=C.Elements;}else{D=C.Elements;E=B.Elements;};var F=D.length-E.length;for(var i=0;i<E.length;i++){if (D[F+i]==E[i]) return E[i];};return null;}};return null;};FCKSelection.GetBoundaryParentElement=function(A){if (!FCK.EditorWindow) return null;if (this.GetType()=='Control') return FCKSelection.GetSelectedElement().parentNode;else{var B=this.GetSelection();if (B&&B.rangeCount>0){var C=B.getRangeAt(A?0:(B.rangeCount-1));var D=A?C.startContainer:C.endContainer;return (D.nodeType==1?D:D.parentNode);}};return null;};FCKSelection.SelectNode=function(A){var B=FCK.EditorDocument.createRange();B.selectNode(A);var C=this.GetSelection();C.removeAllRanges();C.addRange(B);};FCKSelection.Collapse=function(A){var B=this.GetSelection();if (A==null||A===true) B.collapseToStart();else B.collapseToEnd();};FCKSelection.HasAncestorNode=function(A){var B=this.GetSelectedElement();if (!B&&FCK.EditorWindow){try		{ B=this.GetSelection().getRangeAt(0).startContainer;}catch(e){}};while (B){if (B.nodeType==1&&B.tagName==A) return true;B=B.parentNode;};return false;};FCKSelection.MoveToAncestorNode=function(A){var B;var C=this.GetSelectedElement();if (!C) C=this.GetSelection().getRangeAt(0).startContainer;while (C){if (C.nodeName==A) return C;C=C.parentNode;};return null;};FCKSelection.Delete=function(){var A=this.GetSelection();for (var i=0;i<A.rangeCount;i++){A.getRangeAt(i).deleteContents();};return A;};FCKSelection.GetSelection=function(){return FCK.EditorWindow.getSelection();};FCKSelection.Save=function(){};FCKSelection.Restore=function(){};FCKSelection.Release=function(){};
+var FCKTableHandler={};FCKTableHandler.InsertRow=function(A){var B=FCKSelection.MoveToAncestorNode('TR');if (!B) return;var C=B.cloneNode(true);B.parentNode.insertBefore(C,B);FCKTableHandler.ClearRow(A?C:B);};FCKTableHandler.DeleteRows=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();var C=[];for (var i=0;i<B.length;i++){var D=FCKTools.GetElementAscensor(B[i],'TR');C[D.rowIndex]=D;};for (var i=C.length;i>=0;i--){if (C[i]) FCKTableHandler.DeleteRows(C[i]);};return;};var E=FCKTools.GetElementAscensor(A,'TABLE');if (E.rows.length==1){FCKTableHandler.DeleteTable(E);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteTable=function(A){if (!A){A=FCKSelection.GetSelectedElement();if (!A||A.tagName!='TABLE') A=FCKSelection.MoveToAncestorNode('TABLE');};if (!A) return;FCKSelection.SelectNode(A);FCKSelection.Collapse();if (A.parentNode.childNodes.length==1) A.parentNode.parentNode.removeChild(A.parentNode);else A.parentNode.removeChild(A);};FCKTableHandler.InsertColumn=function(A){var B=null;var C=this.GetSelectedCells();if (C&&C.length) B=C[A?0:(C.length-1)];if (!B) return;var D=FCKTools.GetElementAscensor(B,'TABLE');var E=B.cellIndex;for (var i=0;i<D.rows.length;i++){var F=D.rows[i];if (F.cells.length<(E+1)) continue;B=F.cells[E].cloneNode(false);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B);var G=F.cells[E];if (A) F.insertBefore(B,G);else if (G.nextSibling) F.insertBefore(B,G.nextSibling);else F.appendChild(B);}};FCKTableHandler.DeleteColumns=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();for (var i=B.length;i>=0;i--){if (B[i]) FCKTableHandler.DeleteColumns(B[i]);};return;};if (!A) return;var C=FCKTools.GetElementAscensor(A,'TABLE');var D=A.cellIndex;for (var i=C.rows.length-1;i>=0;i--){var E=C.rows[i];if (D==0&&E.cells.length==1){FCKTableHandler.DeleteRows(E);continue;};if (E.cells[D]) E.removeChild(E.cells[D]);}};FCKTableHandler.InsertCell=function(A,B){var C=null;var D=this.GetSelectedCells();if (D&&D.length) C=D[B?0:(D.length-1)];if (!C) return null;var E=FCK.EditorDocument.createElement('TD');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(E);if (!B&&C.cellIndex==C.parentNode.cells.length-1) C.parentNode.appendChild(E);else C.parentNode.insertBefore(E,B?C:C.nextSibling);return E;};FCKTableHandler.DeleteCell=function(A){if (A.parentNode.cells.length==1){FCKTableHandler.DeleteRows(FCKTools.GetElementAscensor(A,'TR'));return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteCells=function(){var A=FCKTableHandler.GetSelectedCells();for (var i=A.length-1;i>=0;i--){FCKTableHandler.DeleteCell(A[i]);}};FCKTableHandler._MarkCells=function(A,B){for (var i=0;i<A.length;i++) A[i][B]=true;};FCKTableHandler._UnmarkCells=function(A,B){for (var i=0;i<A.length;i++){if (FCKBrowserInfo.IsIE) A[i].removeAttribute(B);else delete A[i][B];}};FCKTableHandler._ReplaceCellsByMarker=function(A,B,C){for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){if (A[i][j][B]) A[i][j]=C;}}};FCKTableHandler._GetMarkerGeometry=function(A,B,C,D){var E=0;var F=0;var G=0;var H=0;for (var i=C;A[B][i]&&A[B][i][D];i++) E++;for (var i=C-1;A[B][i]&&A[B][i][D];i--){E++;G++;};for (var i=B;A[i]&&A[i][C]&&A[i][C][D];i++) F++;for (var i=B-1;A[i]&&A[i][C]&&A[i][C][D];i--){F++;H++;};return { 'width':E,'height':F,'x':G,'y':H };};FCKTableHandler.CheckIsSelectionRectangular=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length<1) return false;this._MarkCells(A,'_CellSelected');var B=this._CreateTableMap(A[0].parentNode.parentNode);var C=A[0].parentNode.rowIndex;var D=this._GetCellIndexSpan(B,C,A[0]);var E=this._GetMarkerGeometry(B,C,D,'_CellSelected');var F=D-E.x;var G=C-E.y;if (E.width>=E.height){for (D=F;D<F+E.width;D++){C=G+(D-F) % E.height;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}}else{for (C=G;C<G+E.height;C++){D=F+(C-G) % E.width;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}};this._UnmarkCells(A,'_CellSelected');return true;};FCKTableHandler.MergeCells=function(){var A=this.GetSelectedCells();if (A.length<2) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);this._MarkCells(A,'_SelectedCells');var F=this._GetMarkerGeometry(C,D,E,'_SelectedCells');var G=E-F.x;var H=D-F.y;var I=FCKTools.GetElementDocument(B).createDocumentFragment();for (var i=0;i<F.height;i++){var J=0;for (var j=0;j<F.width;j++){var K=C[H+i][G+j];while (K.childNodes.length>0){var L=K.removeChild(K.firstChild);if (L.nodeType!=1||(L.getAttribute('type',2)!='_moz'&&L.getAttribute('_moz_dirty')!=null)){I.appendChild(L);J++;}}};if (J>0) I.appendChild(FCKTools.GetElementDocument(B).createElement('br'));};this._ReplaceCellsByMarker(C,'_SelectedCells',B);this._UnmarkCells(A,'_SelectedCells');this._InstallTableMap(C,B.parentNode.parentNode);B.appendChild(I);if (FCKBrowserInfo.IsGeckoLike&&(!B.firstChild)) FCKTools.AppendBogusBr(B);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeRight=function(){var A=this.GetMergeRightTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCK.EditorDocument.createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));D.parentNode.removeChild(D);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeDown=function(){var A=this.GetMergeDownTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCKTools.GetElementDocument(B).createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));if (E.firstChild) E.insertBefore(FCKTools.GetElementDocument(D).createElement('br'),E.firstChild);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.HorizontalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=FCKTableHandler._GetCellIndexSpan(C,D,B);var F=isNaN(B.colSpan)?1:B.colSpan;if (F>1){var G=Math.ceil(F/2);var H=FCKTools.GetElementDocument(B).createElement('td');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H);var I=E+G;var J=E+F;var K=isNaN(B.rowSpan)?1:B.rowSpan;for (var r=D;r<D+K;r++){for (var i=I;i<J;i++) C[r][i]=H;}}else{var L=[];for (var i=0;i<C.length;i++){var M=C[i].slice(0,E);if (C[i].length<=E){L.push(M);continue;};if (C[i][E]==B){M.push(B);M.push(FCKTools.GetElementDocument(B).createElement('td'));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(M[M.length-1]);}else{M.push(C[i][E]);M.push(C[i][E]);};for (var j=E+1;j<C[i].length;j++) M.push(C[i][j]);L.push(M);};C=L;};this._InstallTableMap(C,B.parentNode.parentNode);};FCKTableHandler.VerticalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=FCKTableHandler._GetCellIndexSpan(C,B.parentNode.rowIndex,B);var E=B.rowSpan;var F=B.parentNode.rowIndex;if (isNaN(E)) E=1;if (E>1){B.rowSpan=Math.ceil(E/2);var G=F+Math.ceil(E/2);var H=null;for (var i=D+1;i<C[G].length;i++){if (C[G][i].parentNode.rowIndex==G){H=C[G][i];break;}};var I=FCK.EditorDocument.createElement('td');I.rowSpan=Math.floor(E/2);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);B.parentNode.parentNode.rows[G].insertBefore(I,H);}else{var G=F+1;var K=FCK.EditorDocument.createElement('tr');B.parentNode.parentNode.insertBefore(K,B.parentNode.parentNode.rows[G]);for (var i=0;i<C[F].length;){var L=C[F][i].colSpan;if (isNaN(L)||L<1) L=1;if (i==D){i+=L;continue;};var M=C[F][i].rowSpan;if (isNaN(M)) M=1;C[F][i].rowSpan=M+1;i+=L;};var I=FCK.EditorDocument.createElement('td');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);K.appendChild(I);}};FCKTableHandler._GetCellIndexSpan=function(A,B,C){if (A.length<B+1) return null;var D=A[B];for (var c=0;c<D.length;c++){if (D[c]==C) return c;};return null;};FCKTableHandler._GetCellLocation=function(A,B){for (var i=0;i<A.length;i++){for (var c=0;c<A[i].length;c++){if (A[i][c]==B) return [i,c];}};return null;};FCKTableHandler._GetColumnCells=function(A,B){var C=[];for (var r=0;r<A.length;r++){var D=A[r][B];if (D&&(C.length==0||C[C.length-1]!=D)) C[C.length]=D;};return C;};FCKTableHandler._CreateTableMap=function(A){var B=A.rows;var r=-1;var C=[];for (var i=0;i<B.length;i++){r++;if (!C[r]) C[r]=[];var c=-1;for (var j=0;j<B[i].cells.length;j++){var D=B[i].cells[j];c++;while (C[r][c]) c++;var E=isNaN(D.colSpan)?1:D.colSpan;var F=isNaN(D.rowSpan)?1:D.rowSpan;for (var G=0;G<F;G++){if (!C[r+G]) C[r+G]=[];for (var H=0;H<E;H++){C[r+G][c+H]=B[i].cells[j];}};c+=E-1;}};return C;};FCKTableHandler._InstallTableMap=function(A,B){while (B.rows.length>0){var C=B.rows[0];C.parentNode.removeChild(C);};for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (D.parentNode) D.parentNode.removeChild(D);D.colSpan=D.rowSpan=1;}};var E=0;for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (!D) continue;if (j>E) E=j;if (D._colScanned===true) continue;if (A[i][j-1]==D) D.colSpan++;if (A[i][j+1]!=D) D._colScanned=true;}};for (var i=0;i<=E;i++){for (var j=0;j<A.length;j++){if (!A[j]) continue;var D=A[j][i];if (!D||D._rowScanned===true) continue;if (A[j-1]&&A[j-1][i]==D) D.rowSpan++;if (!A[j+1]||A[j+1][i]!=D) D._rowScanned=true;}};for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (FCKBrowserInfo.IsIE){D.removeAttribute('_colScanned');D.removeAttribute('_rowScanned');}else{delete D._colScanned;delete D._rowScanned;}}};for (var i=0;i<A.length;i++){var I=FCKTools.GetElementDocument(B).createElement('tr');for (var j=0;j<A[i].length;){var D=A[i][j];if (A[i-1]&&A[i-1][j]==D){j+=D.colSpan;continue;};I.appendChild(D);j+=D.colSpan;if (D.colSpan==1) D.removeAttribute('colspan');if (D.rowSpan==1) D.removeAttribute('rowspan');};B.appendChild(I);}};FCKTableHandler._MoveCaretToCell=function (A,B){var C=new FCKDomRange(FCK.EditorWindow);C.MoveToNodeContents(A);C.Collapse(B);C.Select();};FCKTableHandler.ClearRow=function(A){var B=A.cells;for (var i=0;i<B.length;i++){B[i].innerHTML='';if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B[i]);}};FCKTableHandler.GetMergeRightTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=E+(isNaN(B.colSpan)?1:B.colSpan);var G=C[D][F];if (!G) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,D,F,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.height!=I.height||H.y!=I.y) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};FCKTableHandler.GetMergeDownTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=D+(isNaN(B.rowSpan)?1:B.rowSpan);if (!C[F]) return null;var G=C[F][E];if (!G) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,F,E,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.width!=I.width||H.x!=I.x) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};
+FCKTableHandler.GetSelectedCells=function(){var A=[];var B=FCKSelection.GetSelection();if (B.rangeCount==1&&B.anchorNode.nodeType==3){var C=FCKTools.GetElementAscensor(B.anchorNode,'TD,TH');if (C) A[0]=C;return A;};for (var i=0;i<B.rangeCount;i++){var D=B.getRangeAt(i);var E;if (D.startContainer.tagName.Equals('TD','TH')) E=D.startContainer;else E=D.startContainer.childNodes[D.startOffset];if (E.tagName.Equals('TD','TH')) A[A.length]=E;};return A;};
+var FCKXml=function(){this.Error=false;};FCKXml.GetAttribute=function(A,B,C){var D=A.attributes.getNamedItem(B);return D?D.value:C;};FCKXml.TransformToObject=function(A){if (!A) return null;var B={};var C=A.attributes;for (var i=0;i<C.length;i++){var D=C[i];B[D.name]=D.value;};var E=A.childNodes;for (i=0;i<E.length;i++){var F=E[i];if (F.nodeType==1){var G='$'+F.nodeName;var H=B[G];if (!H) H=B[G]=[];H.push(this.TransformToObject(F));}};return B;};
+FCKXml.prototype={LoadUrl:function(A){this.Error=false;var B;var C=FCKTools.CreateXmlObject('XmlHttp');C.open('GET',A,false);C.send(null);if (C.status==200||C.status==304) B=C.responseXML;else if (C.status==0&&C.readyState==4) B=C.responseXML;else B=null;if (B){try{var D=B.firstChild;}catch (e){B=(new DOMParser()).parseFromString(C.responseText,'text/xml');}};if (!B||!B.firstChild){this.Error=true;if (window.confirm('Error loading "'+A+'" (HTTP Status: '+C.status+').\r\nDo you want to see the server response dump?')) alert(C.responseText);};this.DOMDocument=B;},SelectNodes:function(A,B){if (this.Error) return [];var C=[];var D=this.DOMDocument.evaluate(A,B?B:this.DOMDocument,this.DOMDocument.createNSResolver(this.DOMDocument.documentElement),XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);if (D){var E=D.iterateNext();while(E){C[C.length]=E;E=D.iterateNext();}};return C;},SelectSingleNode:function(A,B){if (this.Error) return null;var C=this.DOMDocument.evaluate(A,B?B:this.DOMDocument,this.DOMDocument.createNSResolver(this.DOMDocument.documentElement),9,null);if (C&&C.singleNodeValue) return C.singleNodeValue;else return null;}};
+var FCKNamedCommand=function(A){this.Name=A;};FCKNamedCommand.prototype.Execute=function(){FCK.ExecuteNamedCommand(this.Name);};FCKNamedCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState(this.Name);};
+var FCKStyleCommand=function(){};FCKStyleCommand.prototype={Name:'Style',Execute:function(A,B){FCKUndo.SaveUndoStep();if (B.Selected) FCK.Styles.RemoveStyle(B.Style);else FCK.Styles.ApplyStyle(B.Style);FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorDocument) return -1;if (FCKSelection.GetType()=='Control'){var A=FCKSelection.GetSelectedElement();if (!A||!FCKStyles.CheckHasObjectStyle(A.nodeName.toLowerCase())) return -1;};return 0;}};
+var FCKDialogCommand=function(A,B,C,D,E,F,G,H){this.Name=A;this.Title=B;this.Url=C;this.Width=D;this.Height=E;this.CustomValue=H;this.GetStateFunction=F;this.GetStateParam=G;this.Resizable=false;};FCKDialogCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_'+this.Name,this.Title,this.Url,this.Width,this.Height,this.CustomValue,null,this.Resizable);};FCKDialogCommand.prototype.GetState=function(){if (this.GetStateFunction) return this.GetStateFunction(this.GetStateParam);else return FCK.EditMode==0?0:-1;};var FCKUndefinedCommand=function(){this.Name='Undefined';};FCKUndefinedCommand.prototype.Execute=function(){alert(FCKLang.NotImplemented);};FCKUndefinedCommand.prototype.GetState=function(){return 0;};var FCKFormatBlockCommand=function(){};FCKFormatBlockCommand.prototype={Name:'FormatBlock',Execute:FCKStyleCommand.prototype.Execute,GetState:function(){return FCK.EditorDocument?0:-1;}};var FCKFontNameCommand=function(){};FCKFontNameCommand.prototype={Name:'FontName',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKFontSizeCommand=function(){};FCKFontSizeCommand.prototype={Name:'FontSize',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKPreviewCommand=function(){this.Name='Preview';};FCKPreviewCommand.prototype.Execute=function(){FCK.Preview();};FCKPreviewCommand.prototype.GetState=function(){return 0;};var FCKSaveCommand=function(){this.Name='Save';};FCKSaveCommand.prototype.Execute=function(){var A=FCK.GetParentForm();if (typeof(A.onsubmit)=='function'){var B=A.onsubmit();if (B!=null&&B===false) return;};if (typeof(A.submit)=='function') A.submit();else A.submit.click();};FCKSaveCommand.prototype.GetState=function(){return 0;};var FCKNewPageCommand=function(){this.Name='NewPage';};FCKNewPageCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();FCK.SetData('');FCKUndo.Typing=true;FCK.Focus();};FCKNewPageCommand.prototype.GetState=function(){return 0;};var FCKSourceCommand=function(){this.Name='Source';};FCKSourceCommand.prototype.Execute=function(){if (FCKConfig.SourcePopup){var A=FCKConfig.ScreenWidth*0.65;var B=FCKConfig.ScreenHeight*0.65;FCKDialog.OpenDialog('FCKDialog_Source',FCKLang.Source,'dialog/fck_source.html',A,B,null,null,true);}else FCK.SwitchEditMode();};FCKSourceCommand.prototype.GetState=function(){return (FCK.EditMode==0?0:1);};var FCKUndoCommand=function(){this.Name='Undo';};FCKUndoCommand.prototype.Execute=function(){FCKUndo.Undo();};FCKUndoCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return (FCKUndo.CheckUndoState()?0:-1);};var FCKRedoCommand=function(){this.Name='Redo';};FCKRedoCommand.prototype.Execute=function(){FCKUndo.Redo();};FCKRedoCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return (FCKUndo.CheckRedoState()?0:-1);};var FCKPageBreakCommand=function(){this.Name='PageBreak';};FCKPageBreakCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();var e=FCK.EditorDocument.createElement('DIV');e.style.pageBreakAfter='always';e.innerHTML='<span style="DISPLAY:none">&nbsp;</span>';var A=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',e);var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.SplitBlock();B.InsertNode(A);FCK.Events.FireEvent('OnSelectionChange');};FCKPageBreakCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKUnlinkCommand=function(){this.Name='Unlink';};FCKUnlinkCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (FCKBrowserInfo.IsGeckoLike){var A=FCK.Selection.MoveToAncestorNode('A');if (A) FCKTools.RemoveOuterTags(A);return;};FCK.ExecuteNamedCommand(this.Name);};FCKUnlinkCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;var A=FCK.GetNamedCommandState(this.Name);if (A==0&&FCK.EditMode==0){var B=FCKSelection.MoveToAncestorNode('A');var C=(B&&B.name.length>0&&B.href.length==0);if (C) A=-1;};return A;};var FCKSelectAllCommand=function(){this.Name='SelectAll';};FCKSelectAllCommand.prototype.Execute=function(){if (FCK.EditMode==0){FCK.ExecuteNamedCommand('SelectAll');}else{var A=FCK.EditingArea.Textarea;if (FCKBrowserInfo.IsIE){A.createTextRange().execCommand('SelectAll');}else{A.selectionStart=0;A.selectionEnd=A.value.length;};A.focus();}};FCKSelectAllCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKPasteCommand=function(){this.Name='Paste';};FCKPasteCommand.prototype={Execute:function(){if (FCKBrowserInfo.IsIE) FCK.Paste();else FCK.ExecuteNamedCommand('Paste');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Paste');}};var FCKRuleCommand=function(){this.Name='Rule';};FCKRuleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();FCK.InsertElement('hr');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('InsertHorizontalRule');}};var FCKCutCopyCommand=function(A){this.Name=A?'Cut':'Copy';};FCKCutCopyCommand.prototype={Execute:function(){var A=false;if (FCKBrowserInfo.IsIE){var B=function(){A=true;};var C='on'+this.Name.toLowerCase();FCK.EditorDocument.body.attachEvent(C,B);FCK.ExecuteNamedCommand(this.Name);FCK.EditorDocument.body.detachEvent(C,B);}else{try{FCK.ExecuteNamedCommand(this.Name);A=true;}catch(e){}};if (!A) alert(FCKLang['PasteError'+this.Name]);},GetState:function(){return FCK.EditMode!=0?-1:FCK.GetNamedCommandState('Cut');}};var FCKAnchorDeleteCommand=function(){this.Name='AnchorDelete';};FCKAnchorDeleteCommand.prototype={Execute:function(){if (FCK.Selection.GetType()=='Control'){FCK.Selection.Delete();}else{var A=FCK.Selection.GetSelectedElement();if (A){if (A.tagName=='IMG'&&A.getAttribute('_fckanchor')) oAnchor=FCK.GetRealElement(A);else A=null;};if (!A){oAnchor=FCK.Selection.MoveToAncestorNode('A');if (oAnchor) FCK.Selection.SelectNode(oAnchor);};if (oAnchor.href.length!=0){oAnchor.removeAttribute('name');if (FCKBrowserInfo.IsIE) oAnchor.className=oAnchor.className.replace(FCKRegexLib.FCK_Class,'');return;};if (A){A.parentNode.removeChild(A);return;};if (oAnchor.innerHTML.length==0){oAnchor.parentNode.removeChild(oAnchor);return;};FCKTools.RemoveOuterTags(oAnchor);};if (FCKBrowserInfo.IsGecko) FCK.Selection.Collapse(true);},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Unlink');}};
 var FCKShowBlockCommand=function(A,B){this.Name=A;if (B!=undefined) this._SavedState=B;else this._SavedState=null;};FCKShowBlockCommand.prototype.Execute=function(){var A=this.GetState();if (A==-1) return;var B=FCK.EditorDocument.body;if (A==1) B.className=B.className.replace(/(^| )FCK__ShowBlocks/g,'');else B.className+=' FCK__ShowBlocks';FCK.Events.FireEvent('OnSelectionChange');};FCKShowBlockCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;if (!FCK.EditorDocument) return 0;if (/FCK__ShowBlocks(?:\s|$)/.test(FCK.EditorDocument.body.className)) return 1;return 0;};FCKShowBlockCommand.prototype.SaveState=function(){this._SavedState=this.GetState();};FCKShowBlockCommand.prototype.RestoreState=function(){if (this._SavedState!=null&&this.GetState()!=this._SavedState) this.Execute();};
-var FCKSpellCheckCommand=function(){this.Name='SpellCheck';this.IsEnabled=(FCKConfig.SpellChecker=='SpellerPages');};FCKSpellCheckCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_SpellCheck','Spell Check','dialog/fck_spellerpages.html',440,480);};FCKSpellCheckCommand.prototype.GetState=function(){return this.IsEnabled?0:-1;}
-var FCKTextColorCommand=function(A){this.Name=A=='ForeColor'?'TextColor':'BGColor';this.Type=A;var B;if (FCKBrowserInfo.IsIE) B=window;else if (FCK.ToolbarSet._IFrame) B=FCKTools.GetElementWindow(FCK.ToolbarSet._IFrame);else B=window.parent;this._Panel=new FCKPanel(B);this._Panel.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');this._Panel.MainNode.className='FCK_Panel';this._CreatePanelBody(this._Panel.Document,this._Panel.MainNode);FCKTools.DisableSelection(this._Panel.Document.body);};FCKTextColorCommand.prototype.Execute=function(A,B,C){this._Panel.Show(A,B,C);};FCKTextColorCommand.prototype.SetColor=function(A){FCKUndo.SaveUndoStep();var B=FCKStyles.GetStyle('_FCK_'+(this.Type=='ForeColor'?'Color':'BackColor'));if (!A||A.length==0) FCK.Styles.RemoveStyle(B);else{B.SetVariable('Color',A);FCKStyles.ApplyStyle(B);};FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');};FCKTextColorCommand.prototype.GetState=function(){return 0;};function FCKTextColorCommand_OnMouseOver(){this.className='ColorSelected';};function FCKTextColorCommand_OnMouseOut(){this.className='ColorDeselected';};function FCKTextColorCommand_OnClick(A,B,C){this.className='ColorDeselected';B.SetColor(C);B._Panel.Hide();};function FCKTextColorCommand_AutoOnClick(A,B){this.className='ColorDeselected';B.SetColor('');B._Panel.Hide();};function FCKTextColorCommand_MoreOnClick(A,B){this.className='ColorDeselected';B._Panel.Hide();FCKDialog.OpenDialog('FCKDialog_Color',FCKLang.DlgColorTitle,'dialog/fck_colorselector.html',400,330,FCKTools.Hitch(B,'SetColor'));};FCKTextColorCommand.prototype._CreatePanelBody=function(A,B){function CreateSelectionDiv(){var C=A.createElement("DIV");C.className='ColorDeselected';FCKTools.AddEventListenerEx(C,'mouseover',FCKTextColorCommand_OnMouseOver);FCKTools.AddEventListenerEx(C,'mouseout',FCKTextColorCommand_OnMouseOut);return C;};var D=B.appendChild(A.createElement("TABLE"));D.className='ForceBaseFont';D.style.tableLayout='fixed';D.cellPadding=0;D.cellSpacing=0;D.border=0;D.width=150;var E=D.insertRow(-1).insertCell(-1);E.colSpan=8;var C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table cellspacing="0" cellpadding="0" width="100%" border="0">\n			<tr>\n				<td><div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #000000"></div></div></td>\n				<td nowrap width="100%" align="center">'+FCKLang.ColorAutomatic+'</td>\n			</tr>\n		</table>';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_AutoOnClick,this);if (!FCKBrowserInfo.IsIE) C.style.width='96%';var G=FCKConfig.FontColors.toString().split(',');var H=0;while (H<G.length){var I=D.insertRow(-1);for (var i=0;i<8;i++,H++){if (H<G.length){var J=G[H].split('/');var K='#'+J[0];var L=J[1]||K;};C=I.insertCell(-1).appendChild(CreateSelectionDiv());C.innerHTML='<div class="ColorBoxBorder"><div class="ColorBox" style="background-color: '+K+'"></div></div>';if (H>=G.length) C.style.visibility='hidden';else FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_OnClick,[this,L]);}};if (FCKConfig.EnableMoreFontColors){E=D.insertRow(-1).insertCell(-1);E.colSpan=8;C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td nowrap align="center">'+FCKLang.ColorMoreColors+'</td></tr></table>';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_MoreOnClick,this);};if (!FCKBrowserInfo.IsIE) C.style.width='96%';};
-var FCKPastePlainTextCommand=function(){this.Name='PasteText';};FCKPastePlainTextCommand.prototype.Execute=function(){FCK.PasteAsPlainText();};FCKPastePlainTextCommand.prototype.GetState=function(){return FCK.GetNamedCommandState('Paste');};
-var FCKPasteWordCommand=function(){this.Name='PasteWord';};FCKPasteWordCommand.prototype.Execute=function(){FCK.PasteFromWord();};FCKPasteWordCommand.prototype.GetState=function(){if (FCKConfig.ForcePasteAsPlainText) return -1;else return FCK.GetNamedCommandState('Paste');};
+var FCKSpellCheckCommand=function(){this.Name='SpellCheck';this.IsEnabled=(FCKConfig.SpellChecker=='SpellerPages');};FCKSpellCheckCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_SpellCheck','Spell Check','dialog/fck_spellerpages.html',440,480);};FCKSpellCheckCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return this.IsEnabled?0:-1;};
+var FCKTextColorCommand=function(A){this.Name=A=='ForeColor'?'TextColor':'BGColor';this.Type=A;var B;if (FCKBrowserInfo.IsIE) B=window;else if (FCK.ToolbarSet._IFrame) B=FCKTools.GetElementWindow(FCK.ToolbarSet._IFrame);else B=window.parent;this._Panel=new FCKPanel(B);this._Panel.AppendStyleSheet(FCKConfig.SkinEditorCSS);this._Panel.MainNode.className='FCK_Panel';this._CreatePanelBody(this._Panel.Document,this._Panel.MainNode);FCK.ToolbarSet.ToolbarItems.GetItem(this.Name).RegisterPanel(this._Panel);FCKTools.DisableSelection(this._Panel.Document.body);};FCKTextColorCommand.prototype.Execute=function(A,B,C){this._Panel.Show(A,B,C);};FCKTextColorCommand.prototype.SetColor=function(A){FCKUndo.SaveUndoStep();var B=FCKStyles.GetStyle('_FCK_'+(this.Type=='ForeColor'?'Color':'BackColor'));if (!A||A.length==0) FCK.Styles.RemoveStyle(B);else{B.SetVariable('Color',A);FCKStyles.ApplyStyle(B);};FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');};FCKTextColorCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};function FCKTextColorCommand_OnMouseOver(){this.className='ColorSelected';};function FCKTextColorCommand_OnMouseOut(){this.className='ColorDeselected';};function FCKTextColorCommand_OnClick(A,B,C){this.className='ColorDeselected';B.SetColor(C);B._Panel.Hide();};function FCKTextColorCommand_AutoOnClick(A,B){this.className='ColorDeselected';B.SetColor('');B._Panel.Hide();};function FCKTextColorCommand_MoreOnClick(A,B){this.className='ColorDeselected';B._Panel.Hide();FCKDialog.OpenDialog('FCKDialog_Color',FCKLang.DlgColorTitle,'dialog/fck_colorselector.html',410,320,FCKTools.Bind(B,B.SetColor));};FCKTextColorCommand.prototype._CreatePanelBody=function(A,B){function CreateSelectionDiv(){var C=A.createElement("DIV");C.className='ColorDeselected';FCKTools.AddEventListenerEx(C,'mouseover',FCKTextColorCommand_OnMouseOver);FCKTools.AddEventListenerEx(C,'mouseout',FCKTextColorCommand_OnMouseOut);return C;};var D=B.appendChild(A.createElement("TABLE"));D.className='ForceBaseFont';D.style.tableLayout='fixed';D.cellPadding=0;D.cellSpacing=0;D.border=0;D.width=150;var E=D.insertRow(-1).insertCell(-1);E.colSpan=8;var C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table cellspacing="0" cellpadding="0" width="100%" border="0">\n			<tr>\n				<td><div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #000000"></div></div></td>\n				<td nowrap width="100%" align="center">'+FCKLang.ColorAutomatic+'</td>\n			</tr>\n		</table>';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_AutoOnClick,this);if (!FCKBrowserInfo.IsIE) C.style.width='96%';var G=FCKConfig.FontColors.toString().split(',');var H=0;while (H<G.length){var I=D.insertRow(-1);for (var i=0;i<8;i++,H++){if (H<G.length){var J=G[H].split('/');var K='#'+J[0];var L=J[1]||K;};C=I.insertCell(-1).appendChild(CreateSelectionDiv());C.innerHTML='<div class="ColorBoxBorder"><div class="ColorBox" style="background-color: '+K+'"></div></div>';if (H>=G.length) C.style.visibility='hidden';else FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_OnClick,[this,L]);}};if (FCKConfig.EnableMoreFontColors){E=D.insertRow(-1).insertCell(-1);E.colSpan=8;C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td nowrap align="center">'+FCKLang.ColorMoreColors+'</td></tr></table>';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_MoreOnClick,this);};if (!FCKBrowserInfo.IsIE) C.style.width='96%';};
+var FCKPastePlainTextCommand=function(){this.Name='PasteText';};FCKPastePlainTextCommand.prototype.Execute=function(){FCK.PasteAsPlainText();};FCKPastePlainTextCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Paste');};
+var FCKPasteWordCommand=function(){this.Name='PasteWord';};FCKPasteWordCommand.prototype.Execute=function(){FCK.PasteFromWord();};FCKPasteWordCommand.prototype.GetState=function(){if (FCK.EditMode!=0||FCKConfig.ForcePasteAsPlainText) return -1;else return FCK.GetNamedCommandState('Paste');};
 var FCKTableCommand=function(A){this.Name=A;};FCKTableCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (!FCKBrowserInfo.IsGecko){switch (this.Name){case 'TableMergeRight':return FCKTableHandler.MergeRight();case 'TableMergeDown':return FCKTableHandler.MergeDown();}};switch (this.Name){case 'TableInsertRowAfter':return FCKTableHandler.InsertRow(false);case 'TableInsertRowBefore':return FCKTableHandler.InsertRow(true);case 'TableDeleteRows':return FCKTableHandler.DeleteRows();case 'TableInsertColumnAfter':return FCKTableHandler.InsertColumn(false);case 'TableInsertColumnBefore':return FCKTableHandler.InsertColumn(true);case 'TableDeleteColumns':return FCKTableHandler.DeleteColumns();case 'TableInsertCellAfter':return FCKTableHandler.InsertCell(null,false);case 'TableInsertCellBefore':return FCKTableHandler.InsertCell(null,true);case 'TableDeleteCells':return FCKTableHandler.DeleteCells();case 'TableMergeCells':return FCKTableHandler.MergeCells();case 'TableHorizontalSplitCell':return FCKTableHandler.HorizontalSplitCell();case 'TableVerticalSplitCell':return FCKTableHandler.VerticalSplitCell();case 'TableDelete':return FCKTableHandler.DeleteTable();default:return alert(FCKLang.UnknownCommand.replace(/%1/g,this.Name));}};FCKTableCommand.prototype.GetState=function(){if (FCK.EditorDocument!=null&&FCKSelection.HasAncestorNode('TABLE')){switch (this.Name){case 'TableHorizontalSplitCell':case 'TableVerticalSplitCell':if (FCKTableHandler.GetSelectedCells().length==1) return 0;else return -1;case 'TableMergeCells':if (FCKTableHandler.CheckIsSelectionRectangular()&&FCKTableHandler.GetSelectedCells().length>1) return 0;else return -1;case 'TableMergeRight':return FCKTableHandler.GetMergeRightTarget()?0:-1;case 'TableMergeDown':return FCKTableHandler.GetMergeDownTarget()?0:-1;default:return 0;}}else return -1;};
 var FCKFitWindow=function(){this.Name='FitWindow';};FCKFitWindow.prototype.Execute=function(){var A=window.frameElement;var B=A.style;var C=parent;var D=C.document.documentElement;var E=C.document.body;var F=E.style;var G;if (!this.IsMaximized){if(FCKBrowserInfo.IsIE) C.attachEvent('onresize',FCKFitWindow_Resize);else C.addEventListener('resize',FCKFitWindow_Resize,true);this._ScrollPos=FCKTools.GetScrollPosition(C);G=A;while((G=G.parentNode)){if (G.nodeType==1){G._fckSavedStyles=FCKTools.SaveStyles(G);G.style.zIndex=FCKConfig.FloatingPanelsZIndex-1;}};if (FCKBrowserInfo.IsIE){this.documentElementOverflow=D.style.overflow;D.style.overflow='hidden';F.overflow='hidden';}else{F.overflow='hidden';F.width='0px';F.height='0px';};this._EditorFrameStyles=FCKTools.SaveStyles(A);var H=FCKTools.GetViewPaneSize(C);B.position="absolute";B.zIndex=FCKConfig.FloatingPanelsZIndex-1;B.left="0px";B.top="0px";B.width=H.Width+"px";B.height=H.Height+"px";if (!FCKBrowserInfo.IsIE){B.borderRight=B.borderBottom="9999px solid white";B.backgroundColor="white";};C.scrollTo(0,0);var I=FCKTools.GetWindowPosition(C,A);if (I.x!=0) B.left=(-1*I.x)+"px";if (I.y!=0) B.top=(-1*I.y)+"px";this.IsMaximized=true;}else{if(FCKBrowserInfo.IsIE) C.detachEvent("onresize",FCKFitWindow_Resize);else C.removeEventListener("resize",FCKFitWindow_Resize,true);G=A;while((G=G.parentNode)){if (G._fckSavedStyles){FCKTools.RestoreStyles(G,G._fckSavedStyles);G._fckSavedStyles=null;}};if (FCKBrowserInfo.IsIE) D.style.overflow=this.documentElementOverflow;FCKTools.RestoreStyles(A,this._EditorFrameStyles);C.scrollTo(this._ScrollPos.X,this._ScrollPos.Y);this.IsMaximized=false;};FCKToolbarItems.GetItem('FitWindow').RefreshState();if (FCK.EditMode==0) FCK.EditingArea.MakeEditable();FCK.Focus();};FCKFitWindow.prototype.GetState=function(){if (FCKConfig.ToolbarLocation!='In') return -1;else return (this.IsMaximized?1:0);};function FCKFitWindow_Resize(){var A=FCKTools.GetViewPaneSize(parent);var B=window.frameElement.style;B.width=A.Width+'px';B.height=A.Height+'px';};
-var FCKListCommand=function(A,B){this.Name=A;this.TagName=B;};FCKListCommand.prototype={GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=FCKSelection.GetBoundaryParentElement(true);var B=A;while (B){if (B.nodeName.IEquals(['ul','ol'])) break;B=B.parentNode;};if (B&&B.nodeName.IEquals(this.TagName)) return 1;else return 0;},Execute:function(){FCKUndo.SaveUndoStep();var A=FCK.EditorDocument;var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=this.GetState();if (C==0){FCKDomTools.TrimNode(A.body);if (!A.body.firstChild){var D=A.createElement('p');A.body.appendChild(D);B.MoveToNodeContents(D);}};var E=B.CreateBookmark();var F=[];var G={};var H=new FCKDomRangeIterator(B);var I;H.ForceBrBreak=(C==0);var J=true;var K=null;while (J){while ((I=H.GetNextParagraph())){var L=new FCKElementPath(I);var M=null;var N=false;var O=L.BlockLimit;for (var i=L.Elements.length-1;i>=0;i--){var P=L.Elements[i];if (P.nodeName.IEquals(['ol','ul'])){if (O._FCK_ListGroupObject) O._FCK_ListGroupObject=null;var Q=P._FCK_ListGroupObject;if (Q) Q.contents.push(I);else{Q={ 'root':P,'contents':[I] };F.push(Q);FCKDomTools.SetElementMarker(G,P,'_FCK_ListGroupObject',Q);};N=true;break;}};if (N) continue;var R=O;if (R._FCK_ListGroupObject) R._FCK_ListGroupObject.contents.push(I);else{var Q={ 'root':R,'contents':[I] };FCKDomTools.SetElementMarker(G,R,'_FCK_ListGroupObject',Q);F.push(Q);}};if (FCKBrowserInfo.IsIE) J=false;else{if (K==null){K=[];var T=FCK.EditorWindow.getSelection();if (T&&F.length==0) K.push(T.getRangeAt(0));for (var i=1;T&&i<T.rangeCount;i++) K.push(T.getRangeAt(i));};if (K.length<1) J=false;else{var U=FCKW3CRange.CreateFromRange(A,K.shift());B._Range=U;B._UpdateElementInfo();if (B.StartNode.nodeName.IEquals('td')) B.SetStart(B.StartNode,1);if (B.EndNode.nodeName.IEquals('td')) B.SetEnd(B.EndNode,2);H=new FCKDomRangeIterator(B);H.ForceBrBreak=(C==0);}}};var W=[];while (F.length>0){var Q=F.shift();if (C==0){if (Q.root.nodeName.IEquals(['ul','ol'])) this._ChangeListType(Q,G,W);else this._CreateList(Q,W);}else if (C==1&&Q.root.nodeName.IEquals(['ul','ol'])) this._RemoveList(Q,G);};for (var i=0;i<W.length;i++){var M=W[i];var Z=false;var a=M;while (!Z){a=a.nextSibling;if (a&&a.nodeType==3&&a.nodeValue.search(/^[\n\r\t ]*$/)==0) continue;Z=true;};if (a&&a.nodeName.IEquals(this.TagName)){a.parentNode.removeChild(a);while (a.firstChild) M.appendChild(a.removeChild(a.firstChild));};Z=false;a=M;while (!Z){a=a.previousSibling;if (a&&a.nodeType==3&&a.nodeValue.search(/^[\n\r\t ]*$/)==0) continue;Z=true;};if (a&&a.nodeName.IEquals(this.TagName)){a.parentNode.removeChild(a);while (a.lastChild) M.insertBefore(a.removeChild(a.lastChild),M.firstChild);}};FCKDomTools.ClearAllMarkers(G);B.MoveToBookmark(E);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},_ChangeListType:function(A,B,C){var D=FCKDomTools.ListToArray(A.root,B);var E=[];for (var i=0;i<A.contents.length;i++){var F=A.contents[i];F=FCKTools.GetElementAscensor(F,'li');if (!F||F._FCK_ListItem_Processed) continue;E.push(F);FCKDomTools.SetElementMarker(B,F,'_FCK_ListItem_Processed',true);};var G=A.root.ownerDocument.createElement(this.TagName);for (var i=0;i<E.length;i++){var H=E[i]._FCK_ListArray_Index;D[H].parent=G;};var I=FCKDomTools.ArrayToList(D,B);for (var i=0;i<I.listNode.childNodes.length;i++){if (I.listNode.childNodes[i].nodeName.IEquals(this.TagName)) C.push(I.listNode.childNodes[i]);};A.root.parentNode.replaceChild(I.listNode,A.root);},_CreateList:function(A,B){var C=A.contents;var D=A.root.ownerDocument;var E=[];if (C.length==1&&C[0]==A.root){var F=D.createElement('div');while (C[0].firstChild) F.appendChild(C[0].removeChild(C[0].firstChild));C[0].appendChild(F);C[0]=F;};var G=A.contents[0].parentNode;for (var i=0;i<C.length;i++) G=FCKDomTools.GetCommonParents(G,C[i].parentNode).pop();for (var i=0;i<C.length;i++){var H=C[i];while (H.parentNode){if (H.parentNode==G){E.push(H);break;};H=H.parentNode;}};if (E.length<1) return;var I=E[E.length-1].nextSibling;var J=D.createElement(this.TagName);B.push(J);while (E.length){var K=E.shift();var L=D.createDocumentFragment();while (K.firstChild) L.appendChild(K.removeChild(K.firstChild));K.parentNode.removeChild(K);var M=D.createElement('li');M.appendChild(L);J.appendChild(M);};G.insertBefore(J,I);},_RemoveList:function(A,B){var C=FCKDomTools.ListToArray(A.root,B);var D=[];for (var i=0;i<A.contents.length;i++){var E=A.contents[i];E=FCKTools.GetElementAscensor(E,'li');if (!E||E._FCK_ListItem_Processed) continue;D.push(E);FCKDomTools.SetElementMarker(B,E,'_FCK_ListItem_Processed',true);};var F=null;for (var i=0;i<D.length;i++){var G=D[i]._FCK_ListArray_Index;C[G].indent=-1;F=G;};for (var i=F+1;i<C.length;i++){if (C[i].indent>C[i-1].indent+1){var H=C[i-1].indent+1-C[i].indent;var I=C[i].indent;while (C[i]&&C[i].indent>=I){C[i].indent+=H;i++;};i--;}};var J=FCKDomTools.ArrayToList(C,B);if (A.root.nextSibling==null||A.root.nextSibling.nodeName.IEquals('br')){if (J.listNode.lastChild.nodeName.IEquals('br')) J.listNode.removeChild(J.listNode.lastChild);};A.root.parentNode.replaceChild(J.listNode,A.root);}};
-var FCKJustifyCommand=function(A){this.AlignValue=A;var B=FCKConfig.ContentLangDirection.toLowerCase();this.IsDefaultAlign=(A=='left'&&B=='ltr')||(A=='right'&&B=='rtl');var C=this._CssClassName=(function(){var D=FCKConfig.JustifyClasses;if (D){switch (A){case 'left':return D[0];case 'center':return D[1];case 'right':return D[2];case 'justify':return D[3];}};return null;})();if (C&&C.length>0) this._CssClassRegex=new RegExp('(?:^|\\s+)'+C+'(?=$|\\s)');};FCKJustifyCommand._GetClassNameRegex=function(){var A=FCKJustifyCommand._ClassRegex;if (A!=undefined) return A;var B=[];var C=FCKConfig.JustifyClasses;if (C){for (var i=0;i<4;i++){var D=C[i];if (D&&D.length>0) B.push(D);}};if (B.length>0) A=new RegExp('(?:^|\\s+)(?:'+B.join('|')+')(?=$|\\s)');else A=null;return FCKJustifyCommand._ClassRegex=A;};FCKJustifyCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();var B=this.GetState();if (B==-1) return;var C=A.CreateBookmark();var D=this._CssClassName;var E=new FCKDomRangeIterator(A);var F;while ((F=E.GetNextParagraph())){F.removeAttribute('align');if (D){var G=F.className.replace(FCKJustifyCommand._GetClassNameRegex(),'');if (B==0){if (G.length>0) G+=' ';F.className=G+D;}else if (G.length==0) FCKDomTools.RemoveAttribute(F,'class');}else{var H=F.style;if (B==0) H.textAlign=this.AlignValue;else{H.textAlign='';if (H.cssText.length==0) F.removeAttribute('style');}}};A.MoveToBookmark(C);A.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;var C;if (FCKBrowserInfo.IsIE) C=B.currentStyle.textAlign;else C=FCK.EditorWindow.getComputedStyle(B,'').getPropertyValue('text-align');C=C.replace(/(-moz-|-webkit-|start|auto)/i,'');if ((!C&&this.IsDefaultAlign)||C==this.AlignValue) return 1;return 0;}};
-var FCKIndentCommand=function(A,B){this.Name=A;this.Offset=B;this.IndentCSSProperty=FCKConfig.ContentLangDirection.IEquals('ltr')?'marginLeft':'marginRight';};FCKIndentCommand._InitIndentModeParameters=function(){if (FCKConfig.IndentClasses&&FCKConfig.IndentClasses.length>0){this._UseIndentClasses=true;this._IndentClassMap={};for (var i=0;i<FCKConfig.IndentClasses.length;i++) this._IndentClassMap[FCKConfig.IndentClasses[i]]=i+1;this._ClassNameRegex=new RegExp('(?:^|\\s+)('+FCKConfig.IndentClasses.join('|')+')(?=$|\\s)');}else this._UseIndentClasses=false;};FCKIndentCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();var B=A.CreateBookmark();var C=FCKDomTools.GetCommonParentNode(A.StartNode||A.StartContainer,A.EndNode||A.EndContainer,['ul','ol']);if (C) this._IndentList(A,C);else this._IndentBlock(A);A.MoveToBookmark(B);A.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;if (FCKIndentCommand._UseIndentClasses==undefined) FCKIndentCommand._InitIndentModeParameters();var A=FCKSelection.GetBoundaryParentElement(true);var B=FCKSelection.GetBoundaryParentElement(false);var C=FCKDomTools.GetCommonParentNode(A,B,['ul','ol']);if (C){if (this.Name.IEquals('outdent')) return 0;var D=FCKTools.GetElementAscensor(A,'li');if (!D||!D.previousSibling) return -1;return 0;};if (!FCKIndentCommand._UseIndentClasses&&this.Name.IEquals('indent')) return 0;var E=new FCKElementPath(A);var F=E.Block||E.BlockLimit;if (!F) return -1;if (FCKIndentCommand._UseIndentClasses){var G=F.className.match(FCKIndentCommand._ClassNameRegex);var H=0;if (G!=null){G=G[1];H=FCKIndentCommand._IndentClassMap[G];};if ((this.Name=='outdent'&&H==0)||(this.Name=='indent'&&H==FCKConfig.IndentClasses.length)) return -1;return 0;}else{var I=parseInt(F.style[this.IndentCSSProperty],10);if (isNaN(I)) I=0;if (I<=0) return -1;return 0;}},_IndentBlock:function(A){var B=new FCKDomRangeIterator(A);A.Expand('block_contents');var C=FCKDomTools.GetCommonParents(A.StartContainer,A.EndContainer);var D=C[C.length-1];var E;while ((E=B.GetNextParagraph())){if (!(E==D||E.parentNode==D)) continue;if (FCKIndentCommand._UseIndentClasses){var F=E.className.match(FCKIndentCommand._ClassNameRegex);var G=0;if (F!=null){F=F[1];G=FCKIndentCommand._IndentClassMap[F];};if (this.Name.IEquals('outdent')) G--;else if (this.Name.IEquals('indent')) G++;G=Math.min(G,FCKConfig.IndentClasses.length);G=Math.max(G,0);var H=E.className.replace(FCKIndentCommand._ClassNameRegex,'');if (G<1) E.className=H;else E.className=(H.length>0?H+' ':'')+FCKConfig.IndentClasses[G-1];}else{var I=parseInt(E.style[this.IndentCSSProperty],10);if (isNaN(I)) I=0;I+=this.Offset;I=Math.max(I,0);I=Math.ceil(I/this.Offset)*this.Offset;E.style[this.IndentCSSProperty]=I?I+FCKConfig.IndentUnit:'';if (E.getAttribute('style')=='') E.removeAttribute('style');}}},_IndentList:function(A,B){var C=A.StartContainer;var D=A.EndContainer;while (C&&C.parentNode!=B) C=C.parentNode;while (D&&D.parentNode!=B) D=D.parentNode;if (!C||!D) return;var E=C;var F=[];var G=false;while (G==false){if (E==D) G=true;F.push(E);E=E.nextSibling;};if (F.length<1) return;var H=FCKDomTools.GetParents(B);for (var i=0;i<H.length;i++){if (H[i].nodeName.IEquals(['ul','ol'])){B=H[i];break;}};var I=this.Name.IEquals('indent')?1:-1;var J=F[0];var K=F[F.length-1];var L={};var M=FCKDomTools.ListToArray(B,L);var N=M[K._FCK_ListArray_Index].indent;for (var i=J._FCK_ListArray_Index;i<=K._FCK_ListArray_Index;i++) M[i].indent+=I;for (var i=K._FCK_ListArray_Index+1;i<M.length&&M[i].indent>N;i++) M[i].indent+=I;var O=FCKDomTools.ArrayToList(M);if (O) B.parentNode.replaceChild(O.listNode,B);FCKDomTools.ClearAllMarkers(L);}};
-var FCKBlockQuoteCommand=function(){};FCKBlockQuoteCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=this.GetState();var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.CreateBookmark();if (FCKBrowserInfo.IsIE){var D=B.GetBookmarkNode(C,true);var E=B.GetBookmarkNode(C,false);var F;if (D&&D.parentNode.nodeName.IEquals('blockquote')&&!D.previousSibling){F=D;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]) FCKDomTools.MoveNode(D,F,true);}};if (E&&E.parentNode.nodeName.IEquals('blockquote')&&!E.previousSibling){F=E;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]){if (F.firstChild==D) FCKDomTools.InsertAfterNode(D,E);else FCKDomTools.MoveNode(E,F,true);}}}};var G=new FCKDomRangeIterator(B);var H;if (A==0){G.EnforceRealBlocks=true;var I=[];while ((H=G.GetNextParagraph())) I.push(H);if (I.length<1){para=B.Window.document.createElement(FCKConfig.EnterMode.IEquals('p')?'p':'div');B.InsertNode(para);para.appendChild(B.Window.document.createTextNode('\ufeff'));B.MoveToBookmark(C);B.MoveToNodeContents(para);B.Collapse(true);C=B.CreateBookmark();I.push(para);};var J=I[0].parentNode;var K=[];for (var i=0;i<I.length;i++){H=I[i];J=FCKDomTools.GetCommonParents(H.parentNode,J).pop();};var L=null;while (I.length>0){H=I.shift();while (H.parentNode!=J) H=H.parentNode;if (H!=L) K.push(H);L=H;};while (K.length>0){H=K.shift();if (H.nodeName.IEquals('blockquote')){var M=H.ownerDocument.createDocumentFragment();while (H.firstChild){M.appendChild(H.removeChild(H.firstChild));I.push(M.lastChild);};H.parentNode.replaceChild(M,H);}else I.push(H);};var N=B.Window.document.createElement('blockquote');J.insertBefore(N,I[0]);while (I.length>0){H=I.shift();N.appendChild(H);}}else if (A==1){var O=[];while ((H=G.GetNextParagraph())){var P=null;var Q=null;while (H.parentNode){if (H.parentNode.nodeName.IEquals('blockquote')){P=H.parentNode;Q=H;break;};H=H.parentNode;};if (P&&Q) O.push(Q);};var R=[];while (O.length>0){var S=O.shift();var N=S.parentNode;if (S==S.parentNode.firstChild){N.parentNode.insertBefore(N.removeChild(S),N);if (!N.firstChild) N.parentNode.removeChild(N);}else if (S==S.parentNode.lastChild){N.parentNode.insertBefore(N.removeChild(S),N.nextSibling);if (!N.firstChild) N.parentNode.removeChild(N);}else FCKDomTools.BreakParent(S,S.parentNode,B);R.push(S);};if (FCKConfig.EnterMode.IEquals('br')){while (R.length){var S=R.shift();var W=true;if (S.nodeName.IEquals('div')){var M=S.ownerDocument.createDocumentFragment();var Y=W&&S.previousSibling&&!FCKListsLib.BlockBoundaries[S.previousSibling.nodeName.toLowerCase()];if (W&&Y) M.appendChild(S.ownerDocument.createElement('br'));var Z=S.nextSibling&&!FCKListsLib.BlockBoundaries[S.nextSibling.nodeName.toLowerCase()];while (S.firstChild) M.appendChild(S.removeChild(S.firstChild));if (Z) M.appendChild(S.ownerDocument.createElement('br'));S.parentNode.replaceChild(M,S);W=false;}}}};B.MoveToBookmark(C);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;for (var i=0;i<A.Elements.length;i++){if (A.Elements[i].nodeName.IEquals('blockquote')) return 1;};return 0;}};
-var FCKCoreStyleCommand=function(A){this.Name='CoreStyle';this.StyleName='_FCK_'+A;this.IsActive=false;FCKStyles.AttachStyleStateChange(this.StyleName,this._OnStyleStateChange,this);};FCKCoreStyleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();if (this.IsActive) FCKStyles.RemoveStyle(this.StyleName);else FCKStyles.ApplyStyle(this.StyleName);FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){return this.IsActive?1:0;},_OnStyleStateChange:function(A,B){this.IsActive=B;}};
+var FCKListCommand=function(A,B){this.Name=A;this.TagName=B;};FCKListCommand.prototype={GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=FCKSelection.GetBoundaryParentElement(true);var B=A;while (B){if (B.nodeName.IEquals(['ul','ol'])) break;B=B.parentNode;};if (B&&B.nodeName.IEquals(this.TagName)) return 1;else return 0;},Execute:function(){FCKUndo.SaveUndoStep();var A=FCK.EditorDocument;var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=this.GetState();if (C==0){FCKDomTools.TrimNode(A.body);if (!A.body.firstChild){var D=A.createElement('p');A.body.appendChild(D);B.MoveToNodeContents(D);}};var E=B.CreateBookmark();var F=[];var G={};var H=new FCKDomRangeIterator(B);var I;H.ForceBrBreak=(C==0);var J=true;var K=null;while (J){while ((I=H.GetNextParagraph())){var L=new FCKElementPath(I);var M=null;var N=false;var O=L.BlockLimit;for (var i=L.Elements.length-1;i>=0;i--){var P=L.Elements[i];if (P.nodeName.IEquals(['ol','ul'])){if (O._FCK_ListGroupObject) O._FCK_ListGroupObject=null;var Q=P._FCK_ListGroupObject;if (Q) Q.contents.push(I);else{Q={ 'root':P,'contents':[I] };F.push(Q);FCKDomTools.SetElementMarker(G,P,'_FCK_ListGroupObject',Q);};N=true;break;}};if (N) continue;var R=O;if (R._FCK_ListGroupObject) R._FCK_ListGroupObject.contents.push(I);else{var Q={ 'root':R,'contents':[I] };FCKDomTools.SetElementMarker(G,R,'_FCK_ListGroupObject',Q);F.push(Q);}};if (FCKBrowserInfo.IsIE) J=false;else{if (K==null){K=[];var T=FCKSelection.GetSelection();if (T&&F.length==0) K.push(T.getRangeAt(0));for (var i=1;T&&i<T.rangeCount;i++) K.push(T.getRangeAt(i));};if (K.length<1) J=false;else{var U=FCKW3CRange.CreateFromRange(A,K.shift());B._Range=U;B._UpdateElementInfo();if (B.StartNode.nodeName.IEquals('td')) B.SetStart(B.StartNode,1);if (B.EndNode.nodeName.IEquals('td')) B.SetEnd(B.EndNode,2);H=new FCKDomRangeIterator(B);H.ForceBrBreak=(C==0);}}};var W=[];while (F.length>0){var Q=F.shift();if (C==0){if (Q.root.nodeName.IEquals(['ul','ol'])) this._ChangeListType(Q,G,W);else this._CreateList(Q,W);}else if (C==1&&Q.root.nodeName.IEquals(['ul','ol'])) this._RemoveList(Q,G);};for (var i=0;i<W.length;i++){var M=W[i];var Z=false;var a=M;while (!Z){a=a.nextSibling;if (a&&a.nodeType==3&&a.nodeValue.search(/^[\n\r\t ]*$/)==0) continue;Z=true;};if (a&&a.nodeName.IEquals(this.TagName)){a.parentNode.removeChild(a);while (a.firstChild) M.appendChild(a.removeChild(a.firstChild));};Z=false;a=M;while (!Z){a=a.previousSibling;if (a&&a.nodeType==3&&a.nodeValue.search(/^[\n\r\t ]*$/)==0) continue;Z=true;};if (a&&a.nodeName.IEquals(this.TagName)){a.parentNode.removeChild(a);while (a.lastChild) M.insertBefore(a.removeChild(a.lastChild),M.firstChild);}};FCKDomTools.ClearAllMarkers(G);B.MoveToBookmark(E);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},_ChangeListType:function(A,B,C){var D=FCKDomTools.ListToArray(A.root,B);var E=[];for (var i=0;i<A.contents.length;i++){var F=A.contents[i];F=FCKTools.GetElementAscensor(F,'li');if (!F||F._FCK_ListItem_Processed) continue;E.push(F);FCKDomTools.SetElementMarker(B,F,'_FCK_ListItem_Processed',true);};var G=FCKTools.GetElementDocument(A.root).createElement(this.TagName);for (var i=0;i<E.length;i++){var H=E[i]._FCK_ListArray_Index;D[H].parent=G;};var I=FCKDomTools.ArrayToList(D,B);for (var i=0;i<I.listNode.childNodes.length;i++){if (I.listNode.childNodes[i].nodeName.IEquals(this.TagName)) C.push(I.listNode.childNodes[i]);};A.root.parentNode.replaceChild(I.listNode,A.root);},_CreateList:function(A,B){var C=A.contents;var D=FCKTools.GetElementDocument(A.root);var E=[];if (C.length==1&&C[0]==A.root){var F=D.createElement('div');while (C[0].firstChild) F.appendChild(C[0].removeChild(C[0].firstChild));C[0].appendChild(F);C[0]=F;};var G=A.contents[0].parentNode;for (var i=0;i<C.length;i++) G=FCKDomTools.GetCommonParents(G,C[i].parentNode).pop();for (var i=0;i<C.length;i++){var H=C[i];while (H.parentNode){if (H.parentNode==G){E.push(H);break;};H=H.parentNode;}};if (E.length<1) return;var I=E[E.length-1].nextSibling;var J=D.createElement(this.TagName);B.push(J);while (E.length){var K=E.shift();var L=D.createDocumentFragment();while (K.firstChild) L.appendChild(K.removeChild(K.firstChild));K.parentNode.removeChild(K);var M=D.createElement('li');M.appendChild(L);J.appendChild(M);};G.insertBefore(J,I);},_RemoveList:function(A,B){var C=FCKDomTools.ListToArray(A.root,B);var D=[];for (var i=0;i<A.contents.length;i++){var E=A.contents[i];E=FCKTools.GetElementAscensor(E,'li');if (!E||E._FCK_ListItem_Processed) continue;D.push(E);FCKDomTools.SetElementMarker(B,E,'_FCK_ListItem_Processed',true);};var F=null;for (var i=0;i<D.length;i++){var G=D[i]._FCK_ListArray_Index;C[G].indent=-1;F=G;};for (var i=F+1;i<C.length;i++){if (C[i].indent>C[i-1].indent+1){var H=C[i-1].indent+1-C[i].indent;var I=C[i].indent;while (C[i]&&C[i].indent>=I){C[i].indent+=H;i++;};i--;}};var J=FCKDomTools.ArrayToList(C,B);if (A.root.nextSibling==null||A.root.nextSibling.nodeName.IEquals('br')){if (J.listNode.lastChild.nodeName.IEquals('br')) J.listNode.removeChild(J.listNode.lastChild);};A.root.parentNode.replaceChild(J.listNode,A.root);}};
+var FCKJustifyCommand=function(A){this.AlignValue=A;var B=FCKConfig.ContentLangDirection.toLowerCase();this.IsDefaultAlign=(A=='left'&&B=='ltr')||(A=='right'&&B=='rtl');var C=this._CssClassName=(function(){var D=FCKConfig.JustifyClasses;if (D){switch (A){case 'left':return D[0]||null;case 'center':return D[1]||null;case 'right':return D[2]||null;case 'justify':return D[3]||null;}};return null;})();if (C&&C.length>0) this._CssClassRegex=new RegExp('(?:^|\\s+)'+C+'(?=$|\\s)');};FCKJustifyCommand._GetClassNameRegex=function(){var A=FCKJustifyCommand._ClassRegex;if (A!=undefined) return A;var B=[];var C=FCKConfig.JustifyClasses;if (C){for (var i=0;i<4;i++){var D=C[i];if (D&&D.length>0) B.push(D);}};if (B.length>0) A=new RegExp('(?:^|\\s+)(?:'+B.join('|')+')(?=$|\\s)');else A=null;return FCKJustifyCommand._ClassRegex=A;};FCKJustifyCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();var B=this.GetState();if (B==-1) return;var C=A.CreateBookmark();var D=this._CssClassName;var E=new FCKDomRangeIterator(A);var F;while ((F=E.GetNextParagraph())){F.removeAttribute('align');if (D){var G=F.className.replace(FCKJustifyCommand._GetClassNameRegex(),'');if (B==0){if (G.length>0) G+=' ';F.className=G+D;}else if (G.length==0) FCKDomTools.RemoveAttribute(F,'class');}else{var H=F.style;if (B==0) H.textAlign=this.AlignValue;else{H.textAlign='';if (H.cssText.length==0) F.removeAttribute('style');}}};A.MoveToBookmark(C);A.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;var C;if (FCKBrowserInfo.IsIE) C=B.currentStyle.textAlign;else C=FCK.EditorWindow.getComputedStyle(B,'').getPropertyValue('text-align');C=C.replace(/(-moz-|-webkit-|start|auto)/i,'');if ((!C&&this.IsDefaultAlign)||C==this.AlignValue) return 1;return 0;}};
+var FCKIndentCommand=function(A,B){this.Name=A;this.Offset=B;this.IndentCSSProperty=FCKConfig.ContentLangDirection.IEquals('ltr')?'marginLeft':'marginRight';};FCKIndentCommand._InitIndentModeParameters=function(){if (FCKConfig.IndentClasses&&FCKConfig.IndentClasses.length>0){this._UseIndentClasses=true;this._IndentClassMap={};for (var i=0;i<FCKConfig.IndentClasses.length;i++) this._IndentClassMap[FCKConfig.IndentClasses[i]]=i+1;this._ClassNameRegex=new RegExp('(?:^|\\s+)('+FCKConfig.IndentClasses.join('|')+')(?=$|\\s)');}else this._UseIndentClasses=false;};FCKIndentCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();var B=A.CreateBookmark();var C=FCKDomTools.GetCommonParentNode(A.StartNode||A.StartContainer,A.EndNode||A.EndContainer,['ul','ol']);if (C) this._IndentList(A,C);else this._IndentBlock(A);A.MoveToBookmark(B);A.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;if (FCKIndentCommand._UseIndentClasses==undefined) FCKIndentCommand._InitIndentModeParameters();var A=FCKSelection.GetBoundaryParentElement(true);var B=FCKSelection.GetBoundaryParentElement(false);var C=FCKDomTools.GetCommonParentNode(A,B,['ul','ol']);if (C){if (this.Name.IEquals('outdent')) return 0;var D=FCKTools.GetElementAscensor(A,'li');if (!D||!D.previousSibling) return -1;return 0;};if (!FCKIndentCommand._UseIndentClasses&&this.Name.IEquals('indent')) return 0;var E=new FCKElementPath(A);var F=E.Block||E.BlockLimit;if (!F) return -1;if (FCKIndentCommand._UseIndentClasses){var G=F.className.match(FCKIndentCommand._ClassNameRegex);var H=0;if (G!=null){G=G[1];H=FCKIndentCommand._IndentClassMap[G];};if ((this.Name=='outdent'&&H==0)||(this.Name=='indent'&&H==FCKConfig.IndentClasses.length)) return -1;return 0;}else{var I=parseInt(F.style[this.IndentCSSProperty],10);if (isNaN(I)) I=0;if (I<=0) return -1;return 0;}},_IndentBlock:function(A){var B=new FCKDomRangeIterator(A);B.EnforceRealBlocks=true;A.Expand('block_contents');var C=FCKDomTools.GetCommonParents(A.StartContainer,A.EndContainer);var D=C[C.length-1];var E;while ((E=B.GetNextParagraph())){if (!(E==D||E.parentNode==D)) continue;if (FCKIndentCommand._UseIndentClasses){var F=E.className.match(FCKIndentCommand._ClassNameRegex);var G=0;if (F!=null){F=F[1];G=FCKIndentCommand._IndentClassMap[F];};if (this.Name.IEquals('outdent')) G--;else if (this.Name.IEquals('indent')) G++;G=Math.min(G,FCKConfig.IndentClasses.length);G=Math.max(G,0);var H=E.className.replace(FCKIndentCommand._ClassNameRegex,'');if (G<1) E.className=H;else E.className=(H.length>0?H+' ':'')+FCKConfig.IndentClasses[G-1];}else{var I=parseInt(E.style[this.IndentCSSProperty],10);if (isNaN(I)) I=0;I+=this.Offset;I=Math.max(I,0);I=Math.ceil(I/this.Offset)*this.Offset;E.style[this.IndentCSSProperty]=I?I+FCKConfig.IndentUnit:'';if (E.getAttribute('style')=='') E.removeAttribute('style');}}},_IndentList:function(A,B){var C=A.StartContainer;var D=A.EndContainer;while (C&&C.parentNode!=B) C=C.parentNode;while (D&&D.parentNode!=B) D=D.parentNode;if (!C||!D) return;var E=C;var F=[];var G=false;while (G==false){if (E==D) G=true;F.push(E);E=E.nextSibling;};if (F.length<1) return;var H=FCKDomTools.GetParents(B);for (var i=0;i<H.length;i++){if (H[i].nodeName.IEquals(['ul','ol'])){B=H[i];break;}};var I=this.Name.IEquals('indent')?1:-1;var J=F[0];var K=F[F.length-1];var L={};var M=FCKDomTools.ListToArray(B,L);var N=M[K._FCK_ListArray_Index].indent;for (var i=J._FCK_ListArray_Index;i<=K._FCK_ListArray_Index;i++) M[i].indent+=I;for (var i=K._FCK_ListArray_Index+1;i<M.length&&M[i].indent>N;i++) M[i].indent+=I;var O=FCKDomTools.ArrayToList(M);if (O) B.parentNode.replaceChild(O.listNode,B);FCKDomTools.ClearAllMarkers(L);}};
+var FCKBlockQuoteCommand=function(){};FCKBlockQuoteCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=this.GetState();var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.CreateBookmark();if (FCKBrowserInfo.IsIE){var D=B.GetBookmarkNode(C,true);var E=B.GetBookmarkNode(C,false);var F;if (D&&D.parentNode.nodeName.IEquals('blockquote')&&!D.previousSibling){F=D;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]) FCKDomTools.MoveNode(D,F,true);}};if (E&&E.parentNode.nodeName.IEquals('blockquote')&&!E.previousSibling){F=E;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]){if (F.firstChild==D) FCKDomTools.InsertAfterNode(D,E);else FCKDomTools.MoveNode(E,F,true);}}}};var G=new FCKDomRangeIterator(B);var H;if (A==0){G.EnforceRealBlocks=true;var I=[];while ((H=G.GetNextParagraph())) I.push(H);if (I.length<1){para=B.Window.document.createElement(FCKConfig.EnterMode.IEquals('p')?'p':'div');B.InsertNode(para);para.appendChild(B.Window.document.createTextNode('\ufeff'));B.MoveToBookmark(C);B.MoveToNodeContents(para);B.Collapse(true);C=B.CreateBookmark();I.push(para);};var J=I[0].parentNode;var K=[];for (var i=0;i<I.length;i++){H=I[i];J=FCKDomTools.GetCommonParents(H.parentNode,J).pop();};var L=null;while (I.length>0){H=I.shift();while (H.parentNode!=J) H=H.parentNode;if (H!=L) K.push(H);L=H;};while (K.length>0){H=K.shift();if (H.nodeName.IEquals('blockquote')){var M=FCKTools.GetElementDocument(H).createDocumentFragment();while (H.firstChild){M.appendChild(H.removeChild(H.firstChild));I.push(M.lastChild);};H.parentNode.replaceChild(M,H);}else I.push(H);};var N=B.Window.document.createElement('blockquote');J.insertBefore(N,I[0]);while (I.length>0){H=I.shift();N.appendChild(H);}}else if (A==1){var O=[];while ((H=G.GetNextParagraph())){var P=null;var Q=null;while (H.parentNode){if (H.parentNode.nodeName.IEquals('blockquote')){P=H.parentNode;Q=H;break;};H=H.parentNode;};if (P&&Q) O.push(Q);};var R=[];while (O.length>0){var S=O.shift();var N=S.parentNode;if (S==S.parentNode.firstChild){N.parentNode.insertBefore(N.removeChild(S),N);if (!N.firstChild) N.parentNode.removeChild(N);}else if (S==S.parentNode.lastChild){N.parentNode.insertBefore(N.removeChild(S),N.nextSibling);if (!N.firstChild) N.parentNode.removeChild(N);}else FCKDomTools.BreakParent(S,S.parentNode,B);R.push(S);};if (FCKConfig.EnterMode.IEquals('br')){while (R.length){var S=R.shift();var W=true;if (S.nodeName.IEquals('div')){var M=FCKTools.GetElementDocument(S).createDocumentFragment();var Y=W&&S.previousSibling&&!FCKListsLib.BlockBoundaries[S.previousSibling.nodeName.toLowerCase()];if (W&&Y) M.appendChild(FCKTools.GetElementDocument(S).createElement('br'));var Z=S.nextSibling&&!FCKListsLib.BlockBoundaries[S.nextSibling.nodeName.toLowerCase()];while (S.firstChild) M.appendChild(S.removeChild(S.firstChild));if (Z) M.appendChild(FCKTools.GetElementDocument(S).createElement('br'));S.parentNode.replaceChild(M,S);W=false;}}}};B.MoveToBookmark(C);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;for (var i=0;i<A.Elements.length;i++){if (A.Elements[i].nodeName.IEquals('blockquote')) return 1;};return 0;}};
+var FCKCoreStyleCommand=function(A){this.Name='CoreStyle';this.StyleName='_FCK_'+A;this.IsActive=false;FCKStyles.AttachStyleStateChange(this.StyleName,this._OnStyleStateChange,this);};FCKCoreStyleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();if (this.IsActive) FCKStyles.RemoveStyle(this.StyleName);else FCKStyles.ApplyStyle(this.StyleName);FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0) return -1;return this.IsActive?1:0;},_OnStyleStateChange:function(A,B){this.IsActive=B;}};
 var FCKRemoveFormatCommand=function(){this.Name='RemoveFormat';};FCKRemoveFormatCommand.prototype={Execute:function(){FCKStyles.RemoveAll();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){return FCK.EditorWindow?0:-1;}};
-var FCKCommands=FCK.Commands={};FCKCommands.LoadedCommands={};FCKCommands.RegisterCommand=function(A,B){this.LoadedCommands[A]=B;};FCKCommands.GetCommand=function(A){var B=FCKCommands.LoadedCommands[A];if (B) return B;switch (A){case 'Bold':case 'Italic':case 'Underline':case 'StrikeThrough':case 'Subscript':case 'Superscript':B=new FCKCoreStyleCommand(A);break;case 'RemoveFormat':B=new FCKRemoveFormatCommand();break;case 'DocProps':B=new FCKDialogCommand('DocProps',FCKLang.DocProps,'dialog/fck_docprops.html',400,390,FCKCommands.GetFullPageState);break;case 'Templates':B=new FCKDialogCommand('Templates',FCKLang.DlgTemplatesTitle,'dialog/fck_template.html',380,450);break;case 'Link':B=new FCKDialogCommand('Link',FCKLang.DlgLnkWindowTitle,'dialog/fck_link.html',400,330);break;case 'Unlink':B=new FCKUnlinkCommand();break;case 'Anchor':B=new FCKDialogCommand('Anchor',FCKLang.DlgAnchorTitle,'dialog/fck_anchor.html',370,170);break;case 'AnchorDelete':B=new FCKAnchorDeleteCommand();break;case 'BulletedList':B=new FCKDialogCommand('BulletedList',FCKLang.BulletedListProp,'dialog/fck_listprop.html?UL',370,170);break;case 'NumberedList':B=new FCKDialogCommand('NumberedList',FCKLang.NumberedListProp,'dialog/fck_listprop.html?OL',370,170);break;case 'About':B=new FCKDialogCommand('About',FCKLang.About,'dialog/fck_about.html',400,330);break;case 'Find':B=new FCKDialogCommand('Find',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,250);break;case 'Replace':B=new FCKDialogCommand('Replace',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,250);break;case 'Image':B=new FCKDialogCommand('Image',FCKLang.DlgImgTitle,'dialog/fck_image.html',450,400);break;case 'Flash':B=new FCKDialogCommand('Flash',FCKLang.DlgFlashTitle,'dialog/fck_flash.html',450,400);break;case 'SpecialChar':B=new FCKDialogCommand('SpecialChar',FCKLang.DlgSpecialCharTitle,'dialog/fck_specialchar.html',400,320);break;case 'Smiley':B=new FCKDialogCommand('Smiley',FCKLang.DlgSmileyTitle,'dialog/fck_smiley.html',FCKConfig.SmileyWindowWidth,FCKConfig.SmileyWindowHeight);break;case 'Table':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html',480,250);break;case 'TableProp':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html?Parent',480,250);break;case 'TableCellProp':B=new FCKDialogCommand('TableCell',FCKLang.DlgCellTitle,'dialog/fck_tablecell.html',550,250);break;case 'Style':B=new FCKStyleCommand();break;case 'FontName':B=new FCKFontNameCommand();break;case 'FontSize':B=new FCKFontSizeCommand();break;case 'FontFormat':B=new FCKFormatBlockCommand();break;case 'Source':B=new FCKSourceCommand();break;case 'Preview':B=new FCKPreviewCommand();break;case 'Save':B=new FCKSaveCommand();break;case 'NewPage':B=new FCKNewPageCommand();break;case 'PageBreak':B=new FCKPageBreakCommand();break;case 'Rule':B=new FCKRuleCommand();break;case 'TextColor':B=new FCKTextColorCommand('ForeColor');break;case 'BGColor':B=new FCKTextColorCommand('BackColor');break;case 'Paste':B=new FCKPasteCommand();break;case 'PasteText':B=new FCKPastePlainTextCommand();break;case 'PasteWord':B=new FCKPasteWordCommand();break;case 'JustifyLeft':B=new FCKJustifyCommand('left');break;case 'JustifyCenter':B=new FCKJustifyCommand('center');break;case 'JustifyRight':B=new FCKJustifyCommand('right');break;case 'JustifyFull':B=new FCKJustifyCommand('justify');break;case 'Indent':B=new FCKIndentCommand('indent',FCKConfig.IndentLength);break;case 'Outdent':B=new FCKIndentCommand('outdent',FCKConfig.IndentLength*-1);break;case 'Blockquote':B=new FCKBlockQuoteCommand();break;case 'TableInsertRowAfter':B=new FCKTableCommand('TableInsertRowAfter');break;case 'TableInsertRowBefore':B=new FCKTableCommand('TableInsertRowBefore');break;case 'TableDeleteRows':B=new FCKTableCommand('TableDeleteRows');break;case 'TableInsertColumnAfter':B=new FCKTableCommand('TableInsertColumnAfter');break;case 'TableInsertColumnBefore':B=new FCKTableCommand('TableInsertColumnBefore');break;case 'TableDeleteColumns':B=new FCKTableCommand('TableDeleteColumns');break;case 'TableInsertCellAfter':B=new FCKTableCommand('TableInsertCellAfter');break;case 'TableInsertCellBefore':B=new FCKTableCommand('TableInsertCellBefore');break;case 'TableDeleteCells':B=new FCKTableCommand('TableDeleteCells');break;case 'TableMergeCells':B=new FCKTableCommand('TableMergeCells');break;case 'TableMergeRight':B=new FCKTableCommand('TableMergeRight');break;case 'TableMergeDown':B=new FCKTableCommand('TableMergeDown');break;case 'TableHorizontalSplitCell':B=new FCKTableCommand('TableHorizontalSplitCell');break;case 'TableVerticalSplitCell':B=new FCKTableCommand('TableVerticalSplitCell');break;case 'TableDelete':B=new FCKTableCommand('TableDelete');break;case 'Form':B=new FCKDialogCommand('Form',FCKLang.Form,'dialog/fck_form.html',380,230);break;case 'Checkbox':B=new FCKDialogCommand('Checkbox',FCKLang.Checkbox,'dialog/fck_checkbox.html',380,230);break;case 'Radio':B=new FCKDialogCommand('Radio',FCKLang.RadioButton,'dialog/fck_radiobutton.html',380,230);break;case 'TextField':B=new FCKDialogCommand('TextField',FCKLang.TextField,'dialog/fck_textfield.html',380,230);break;case 'Textarea':B=new FCKDialogCommand('Textarea',FCKLang.Textarea,'dialog/fck_textarea.html',380,230);break;case 'HiddenField':B=new FCKDialogCommand('HiddenField',FCKLang.HiddenField,'dialog/fck_hiddenfield.html',380,230);break;case 'Button':B=new FCKDialogCommand('Button',FCKLang.Button,'dialog/fck_button.html',380,230);break;case 'Select':B=new FCKDialogCommand('Select',FCKLang.SelectionField,'dialog/fck_select.html',400,380);break;case 'ImageButton':B=new FCKDialogCommand('ImageButton',FCKLang.ImageButton,'dialog/fck_image.html?ImageButton',450,400);break;case 'SpellCheck':B=new FCKSpellCheckCommand();break;case 'FitWindow':B=new FCKFitWindow();break;case 'Undo':B=new FCKUndoCommand();break;case 'Redo':B=new FCKRedoCommand();break;case 'Copy':B=new FCKCopyCommand();break;case 'SelectAll':B=new FCKSelectAllCommand();break;case 'InsertOrderedList':B=new FCKListCommand('insertorderedlist','ol');break;case 'InsertUnorderedList':B=new FCKListCommand('insertunorderedlist','ul');break;case 'ShowBlocks':B=new FCKShowBlockCommand('ShowBlocks',FCKConfig.StartupShowBlocks?1:0);break;case 'Undefined':B=new FCKUndefinedCommand();break;default:if (FCKRegexLib.NamedCommands.test(A)) B=new FCKNamedCommand(A);else{alert(FCKLang.UnknownCommand.replace(/%1/g,A));return null;}};FCKCommands.LoadedCommands[A]=B;return B;};FCKCommands.GetFullPageState=function(){return FCKConfig.FullPage?0:-1;};FCKCommands.GetBooleanState=function(A){return A?-1:0;};
-var FCKPanel=function(A){this.IsRTL=(FCKLang.Dir=='rtl');this.IsContextMenu=false;this._LockCounter=0;this._Window=A||window;var B;if (FCKBrowserInfo.IsIE){this._Popup=this._Window.createPopup();B=this.Document=this._Popup.document;FCK.IECleanup.AddItem(this,FCKPanel_Cleanup);}else{var C=this._IFrame=this._Window.document.createElement('iframe');C.src='javascript:void(0)';C.allowTransparency=true;C.frameBorder='0';C.scrolling='no';C.width=C.height=0;FCKDomTools.SetElementStyles(C,{position:'absolute',zIndex:FCKConfig.FloatingPanelsZIndex});if (this._Window==window.parent&&window.frameElement){var D=null;if (FCKBrowserInfo.IsGecko&&FCK&&FCK.EditorDocument) D=[FCK.EditorDocument.body.scrollLeft,FCK.EditorDocument.body.scrollTop];window.frameElement.parentNode.insertBefore(C,window.frameElement);if (D){var E=function(){FCK.EditorDocument.body.scrollLeft=D[0];FCK.EditorDocument.body.scrollTop=D[1];};setTimeout(E,500);}}else this._Window.document.body.appendChild(C);var F=C.contentWindow;B=this.Document=F.document;var G='';if (FCKBrowserInfo.IsSafari) G='<base href="'+window.document.location+'">';B.open();B.write('<html><head>'+G+'<\/head><body style="margin:0px;padding:0px;"><\/body><\/html>');B.close();FCKTools.AddEventListenerEx(F,'focus',FCKPanel_Window_OnFocus,this);FCKTools.AddEventListenerEx(F,'blur',FCKPanel_Window_OnBlur,this);};B.dir=FCKLang.Dir;FCKTools.AddEventListener(B,'contextmenu',FCKTools.CancelEvent);this.MainNode=B.body.appendChild(B.createElement('DIV'));this.MainNode.style.cssFloat=this.IsRTL?'right':'left';};FCKPanel.prototype.AppendStyleSheet=function(A){FCKTools.AppendStyleSheet(this.Document,A);};FCKPanel.prototype.Preload=function(x,y,A){if (this._Popup) this._Popup.show(x,y,0,0,A);};FCKPanel.prototype.Show=function(x,y,A,B,C){var D;var E=this.MainNode;if (this._Popup){this._Popup.show(x,y,0,0,A);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=(x*-1)+A.offsetWidth-D;};this._Popup.show(x,y,D,E.offsetHeight,A);if (this.OnHide){if (this._Timer) CheckPopupOnHide.call(this,true);this._Timer=FCKTools.SetInterval(CheckPopupOnHide,100,this);}}else{if (typeof(FCK.ToolbarSet.CurrentInstance.FocusManager)!='undefined') FCK.ToolbarSet.CurrentInstance.FocusManager.Lock();if (this.ParentPanel){this.ParentPanel.Lock();FCKPanel_Window_OnBlur(null,this.ParentPanel);};if (FCKPanel._OpenedPanel) FCKPanel._OpenedPanel.Hide();FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (!B)	this._IFrame.width=1;if (!C)	this._IFrame.height=1;D=E.offsetWidth||E.firstChild.offsetWidth;var F=FCKTools.GetDocumentPosition(this._Window,A.nodeType==9?(FCKTools.IsStrictMode(A)?A.documentElement:A.body):A);var G=FCKDomTools.GetPositionedAncestor(FCKTools.GetElementWindow(this._IFrame),this._IFrame.parentNode);if (G){var H=FCKTools.GetDocumentPosition(FCKTools.GetElementWindow(G),G);F.x-=H.x;F.y-=H.y;};if (this.IsRTL&&!this.IsContextMenu) x=(x*-1);x+=F.x;y+=F.y;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=x+A.offsetWidth-D;}else{var I=FCKTools.GetViewPaneSize(this._Window);var J=FCKTools.GetScrollPosition(this._Window);var K=I.Height+J.Y;var L=I.Width+J.X;if ((x+D)>L) x-=x+D-L;if ((y+E.offsetHeight)>K) y-=y+E.offsetHeight-K;};if (x<0) x=0;FCKDomTools.SetElementStyles(this._IFrame,{left:x+'px',top:y+'px'});var M=D;var N=E.offsetHeight;this._IFrame.width=M;this._IFrame.height=N;this._IFrame.contentWindow.focus();FCKPanel._OpenedPanel=this;};this._IsOpened=true;FCKTools.RunFunction(this.OnShow,this);};FCKPanel.prototype.Hide=function(A){if (this._Popup) this._Popup.hide();else{if (!this._IsOpened||this._LockCounter>0) return;if (typeof(FCKFocusManager)!='undefined') FCKFocusManager.Unlock();this._IFrame.width=this._IFrame.height=0;this._IsOpened=false;if (this.ParentPanel) this.ParentPanel.Unlock();if (!A) FCKTools.RunFunction(this.OnHide,this);}};FCKPanel.prototype.CheckIsOpened=function(){if (this._Popup) return this._Popup.isOpen;else return this._IsOpened;};FCKPanel.prototype.CreateChildPanel=function(){var A=this._Popup?FCKTools.GetDocumentWindow(this.Document):this._Window;var B=new FCKPanel(A);B.ParentPanel=this;return B;};FCKPanel.prototype.Lock=function(){this._LockCounter++;};FCKPanel.prototype.Unlock=function(){if (--this._LockCounter==0&&!this.HasFocus) this.Hide();};function FCKPanel_Window_OnFocus(e,A){A.HasFocus=true;};function FCKPanel_Window_OnBlur(e,A){A.HasFocus=false;if (A._LockCounter==0) FCKTools.RunFunction(A.Hide,A);};function CheckPopupOnHide(A){if (A||!this._Popup.isOpen){window.clearInterval(this._Timer);this._Timer=null;FCKTools.RunFunction(this.OnHide,this);}};function FCKPanel_Cleanup(){this._Popup=null;this._Window=null;this.Document=null;this.MainNode=null;};
-var FCKIcon=function(A){var B=A?typeof(A):'undefined';switch (B){case 'number':this.Path=FCKConfig.SkinPath+'fck_strip.gif';this.Size=16;this.Position=A;break;case 'undefined':this.Path=FCK_SPACER_PATH;break;case 'string':this.Path=A;break;default:this.Path=A[0];this.Size=A[1];this.Position=A[2];}};FCKIcon.prototype.CreateIconElement=function(A){var B,eIconImage;if (this.Position){var C='-'+((this.Position-1)*this.Size)+'px';if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path;eIconImage.style.top=C;}else{B=A.createElement('IMG');B.src=FCK_SPACER_PATH;B.style.backgroundPosition='0px '+C;B.style.backgroundImage='url("'+this.Path+'")';}}else{if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path?this.Path:FCK_SPACER_PATH;}else{B=A.createElement('IMG');B.src=this.Path?this.Path:FCK_SPACER_PATH;}};B.className='TB_Button_Image';return B;}
+var FCKCommands=FCK.Commands={};FCKCommands.LoadedCommands={};FCKCommands.RegisterCommand=function(A,B){this.LoadedCommands[A]=B;};FCKCommands.GetCommand=function(A){var B=FCKCommands.LoadedCommands[A];if (B) return B;switch (A){case 'Bold':case 'Italic':case 'Underline':case 'StrikeThrough':case 'Subscript':case 'Superscript':B=new FCKCoreStyleCommand(A);break;case 'RemoveFormat':B=new FCKRemoveFormatCommand();break;case 'DocProps':B=new FCKDialogCommand('DocProps',FCKLang.DocProps,'dialog/fck_docprops.html',400,380,FCKCommands.GetFullPageState);break;case 'Templates':B=new FCKDialogCommand('Templates',FCKLang.DlgTemplatesTitle,'dialog/fck_template.html',380,450);break;case 'Link':B=new FCKDialogCommand('Link',FCKLang.DlgLnkWindowTitle,'dialog/fck_link.html',400,300);break;case 'Unlink':B=new FCKUnlinkCommand();break;case 'Anchor':B=new FCKDialogCommand('Anchor',FCKLang.DlgAnchorTitle,'dialog/fck_anchor.html',370,160);break;case 'AnchorDelete':B=new FCKAnchorDeleteCommand();break;case 'BulletedList':B=new FCKDialogCommand('BulletedList',FCKLang.BulletedListProp,'dialog/fck_listprop.html?UL',370,160);break;case 'NumberedList':B=new FCKDialogCommand('NumberedList',FCKLang.NumberedListProp,'dialog/fck_listprop.html?OL',370,160);break;case 'About':B=new FCKDialogCommand('About',FCKLang.About,'dialog/fck_about.html',420,330,function(){ return 0;});break;case 'Find':B=new FCKDialogCommand('Find',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,230,null,null,'Find');break;case 'Replace':B=new FCKDialogCommand('Replace',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,230,null,null,'Replace');break;case 'Image':B=new FCKDialogCommand('Image',FCKLang.DlgImgTitle,'dialog/fck_image.html',450,390);break;case 'Flash':B=new FCKDialogCommand('Flash',FCKLang.DlgFlashTitle,'dialog/fck_flash.html',450,390);break;case 'SpecialChar':B=new FCKDialogCommand('SpecialChar',FCKLang.DlgSpecialCharTitle,'dialog/fck_specialchar.html',400,290);break;case 'Smiley':B=new FCKDialogCommand('Smiley',FCKLang.DlgSmileyTitle,'dialog/fck_smiley.html',FCKConfig.SmileyWindowWidth,FCKConfig.SmileyWindowHeight);break;case 'Table':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html',480,250);break;case 'TableProp':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html?Parent',480,250);break;case 'TableCellProp':B=new FCKDialogCommand('TableCell',FCKLang.DlgCellTitle,'dialog/fck_tablecell.html',550,240);break;case 'Style':B=new FCKStyleCommand();break;case 'FontName':B=new FCKFontNameCommand();break;case 'FontSize':B=new FCKFontSizeCommand();break;case 'FontFormat':B=new FCKFormatBlockCommand();break;case 'Source':B=new FCKSourceCommand();break;case 'Preview':B=new FCKPreviewCommand();break;case 'Save':B=new FCKSaveCommand();break;case 'NewPage':B=new FCKNewPageCommand();break;case 'PageBreak':B=new FCKPageBreakCommand();break;case 'Rule':B=new FCKRuleCommand();break;case 'TextColor':B=new FCKTextColorCommand('ForeColor');break;case 'BGColor':B=new FCKTextColorCommand('BackColor');break;case 'Paste':B=new FCKPasteCommand();break;case 'PasteText':B=new FCKPastePlainTextCommand();break;case 'PasteWord':B=new FCKPasteWordCommand();break;case 'JustifyLeft':B=new FCKJustifyCommand('left');break;case 'JustifyCenter':B=new FCKJustifyCommand('center');break;case 'JustifyRight':B=new FCKJustifyCommand('right');break;case 'JustifyFull':B=new FCKJustifyCommand('justify');break;case 'Indent':B=new FCKIndentCommand('indent',FCKConfig.IndentLength);break;case 'Outdent':B=new FCKIndentCommand('outdent',FCKConfig.IndentLength*-1);break;case 'Blockquote':B=new FCKBlockQuoteCommand();break;case 'TableInsertRowAfter':B=new FCKTableCommand('TableInsertRowAfter');break;case 'TableInsertRowBefore':B=new FCKTableCommand('TableInsertRowBefore');break;case 'TableDeleteRows':B=new FCKTableCommand('TableDeleteRows');break;case 'TableInsertColumnAfter':B=new FCKTableCommand('TableInsertColumnAfter');break;case 'TableInsertColumnBefore':B=new FCKTableCommand('TableInsertColumnBefore');break;case 'TableDeleteColumns':B=new FCKTableCommand('TableDeleteColumns');break;case 'TableInsertCellAfter':B=new FCKTableCommand('TableInsertCellAfter');break;case 'TableInsertCellBefore':B=new FCKTableCommand('TableInsertCellBefore');break;case 'TableDeleteCells':B=new FCKTableCommand('TableDeleteCells');break;case 'TableMergeCells':B=new FCKTableCommand('TableMergeCells');break;case 'TableMergeRight':B=new FCKTableCommand('TableMergeRight');break;case 'TableMergeDown':B=new FCKTableCommand('TableMergeDown');break;case 'TableHorizontalSplitCell':B=new FCKTableCommand('TableHorizontalSplitCell');break;case 'TableVerticalSplitCell':B=new FCKTableCommand('TableVerticalSplitCell');break;case 'TableDelete':B=new FCKTableCommand('TableDelete');break;case 'Form':B=new FCKDialogCommand('Form',FCKLang.Form,'dialog/fck_form.html',380,210);break;case 'Checkbox':B=new FCKDialogCommand('Checkbox',FCKLang.Checkbox,'dialog/fck_checkbox.html',380,200);break;case 'Radio':B=new FCKDialogCommand('Radio',FCKLang.RadioButton,'dialog/fck_radiobutton.html',380,200);break;case 'TextField':B=new FCKDialogCommand('TextField',FCKLang.TextField,'dialog/fck_textfield.html',380,210);break;case 'Textarea':B=new FCKDialogCommand('Textarea',FCKLang.Textarea,'dialog/fck_textarea.html',380,210);break;case 'HiddenField':B=new FCKDialogCommand('HiddenField',FCKLang.HiddenField,'dialog/fck_hiddenfield.html',380,190);break;case 'Button':B=new FCKDialogCommand('Button',FCKLang.Button,'dialog/fck_button.html',380,210);break;case 'Select':B=new FCKDialogCommand('Select',FCKLang.SelectionField,'dialog/fck_select.html',400,340);break;case 'ImageButton':B=new FCKDialogCommand('ImageButton',FCKLang.ImageButton,'dialog/fck_image.html?ImageButton',450,390);break;case 'SpellCheck':B=new FCKSpellCheckCommand();break;case 'FitWindow':B=new FCKFitWindow();break;case 'Undo':B=new FCKUndoCommand();break;case 'Redo':B=new FCKRedoCommand();break;case 'Copy':B=new FCKCutCopyCommand(false);break;case 'Cut':B=new FCKCutCopyCommand(true);break;case 'SelectAll':B=new FCKSelectAllCommand();break;case 'InsertOrderedList':B=new FCKListCommand('insertorderedlist','ol');break;case 'InsertUnorderedList':B=new FCKListCommand('insertunorderedlist','ul');break;case 'ShowBlocks':B=new FCKShowBlockCommand('ShowBlocks',FCKConfig.StartupShowBlocks?1:0);break;case 'Undefined':B=new FCKUndefinedCommand();break;default:if (FCKRegexLib.NamedCommands.test(A)) B=new FCKNamedCommand(A);else{alert(FCKLang.UnknownCommand.replace(/%1/g,A));return null;}};FCKCommands.LoadedCommands[A]=B;return B;};FCKCommands.GetFullPageState=function(){return FCKConfig.FullPage?0:-1;};FCKCommands.GetBooleanState=function(A){return A?-1:0;};
+var FCKPanel=function(A){this.IsRTL=(FCKLang.Dir=='rtl');this.IsContextMenu=false;this._LockCounter=0;this._Window=A||window;var B;if (FCKBrowserInfo.IsIE){this._Popup=this._Window.createPopup();var C=this._Window.document;if (FCK_IS_CUSTOM_DOMAIN&&!FCKBrowserInfo.IsIE7){C.domain=FCK_ORIGINAL_DOMAIN;document.domain=FCK_ORIGINAL_DOMAIN;};B=this.Document=this._Popup.document;if (FCK_IS_CUSTOM_DOMAIN){B.domain=FCK_RUNTIME_DOMAIN;C.domain=FCK_RUNTIME_DOMAIN;document.domain=FCK_RUNTIME_DOMAIN;};FCK.IECleanup.AddItem(this,FCKPanel_Cleanup);}else{var D=this._IFrame=this._Window.document.createElement('iframe');D.src='javascript:void(0)';D.allowTransparency=true;D.frameBorder='0';D.scrolling='no';D.width=D.height=0;FCKDomTools.SetElementStyles(D,{position:'absolute',zIndex:FCKConfig.FloatingPanelsZIndex});this._Window.document.body.appendChild(D);var E=D.contentWindow;B=this.Document=E.document;var F='';if (FCKBrowserInfo.IsSafari) F='<base href="'+window.document.location+'">';B.open();B.write('<html><head>'+F+'<\/head><body style="margin:0px;padding:0px;"><\/body><\/html>');B.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.Panel_Contructor(B,window.document.location);FCKTools.AddEventListenerEx(E,'focus',FCKPanel_Window_OnFocus,this);FCKTools.AddEventListenerEx(E,'blur',FCKPanel_Window_OnBlur,this);};B.dir=FCKLang.Dir;FCKTools.AddEventListener(B,'contextmenu',FCKTools.CancelEvent);this.MainNode=B.body.appendChild(B.createElement('DIV'));this.MainNode.style.cssFloat=this.IsRTL?'right':'left';};FCKPanel.prototype.AppendStyleSheet=function(A){FCKTools.AppendStyleSheet(this.Document,A);};FCKPanel.prototype.Preload=function(x,y,A){if (this._Popup) this._Popup.show(x,y,0,0,A);};FCKPanel.prototype.Show=function(x,y,A,B,C){var D;var E=this.MainNode;if (this._Popup){this._Popup.show(x,y,0,0,A);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=(x*-1)+A.offsetWidth-D;};this._Popup.show(x,y,D,E.offsetHeight,A);if (this.OnHide){if (this._Timer) CheckPopupOnHide.call(this,true);this._Timer=FCKTools.SetInterval(CheckPopupOnHide,100,this);}}else{if (typeof(FCK.ToolbarSet.CurrentInstance.FocusManager)!='undefined') FCK.ToolbarSet.CurrentInstance.FocusManager.Lock();if (this.ParentPanel){this.ParentPanel.Lock();FCKPanel_Window_OnBlur(null,this.ParentPanel);};if (FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac){this._IFrame.scrolling='';FCKTools.RunFunction(function(){ this._IFrame.scrolling='no';},this);};if (FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel&&FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel!=this) FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel.Hide(false,true);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (!B)	this._IFrame.width=1;if (!C)	this._IFrame.height=1;D=E.offsetWidth||E.firstChild.offsetWidth;var F=FCKTools.GetDocumentPosition(this._Window,A.nodeType==9?(FCKTools.IsStrictMode(A)?A.documentElement:A.body):A);var G=FCKDomTools.GetPositionedAncestor(this._IFrame.parentNode);if (G){var H=FCKTools.GetDocumentPosition(FCKTools.GetElementWindow(G),G);F.x-=H.x;F.y-=H.y;};if (this.IsRTL&&!this.IsContextMenu) x=(x*-1);x+=F.x;y+=F.y;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=x+A.offsetWidth-D;}else{var I=FCKTools.GetViewPaneSize(this._Window);var J=FCKTools.GetScrollPosition(this._Window);var K=I.Height+J.Y;var L=I.Width+J.X;if ((x+D)>L) x-=x+D-L;if ((y+E.offsetHeight)>K) y-=y+E.offsetHeight-K;};FCKDomTools.SetElementStyles(this._IFrame,{left:x+'px',top:y+'px'});this._IFrame.contentWindow.focus();this._IsOpened=true;var M=this;this._resizeTimer=setTimeout(function(){var N=E.offsetWidth||E.firstChild.offsetWidth;var O=E.offsetHeight;M._IFrame.width=N;M._IFrame.height=O;},0);FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel=this;};FCKTools.RunFunction(this.OnShow,this);};FCKPanel.prototype.Hide=function(A,B){if (this._Popup) this._Popup.hide();else{if (!this._IsOpened||this._LockCounter>0) return;if (typeof(FCKFocusManager)!='undefined'&&!B) FCKFocusManager.Unlock();this._IFrame.width=this._IFrame.height=0;this._IsOpened=false;if (this._resizeTimer){clearTimeout(this._resizeTimer);this._resizeTimer=null;};if (this.ParentPanel) this.ParentPanel.Unlock();if (!A) FCKTools.RunFunction(this.OnHide,this);}};FCKPanel.prototype.CheckIsOpened=function(){if (this._Popup) return this._Popup.isOpen;else return this._IsOpened;};FCKPanel.prototype.CreateChildPanel=function(){var A=this._Popup?FCKTools.GetDocumentWindow(this.Document):this._Window;var B=new FCKPanel(A);B.ParentPanel=this;return B;};FCKPanel.prototype.Lock=function(){this._LockCounter++;};FCKPanel.prototype.Unlock=function(){if (--this._LockCounter==0&&!this.HasFocus) this.Hide();};function FCKPanel_Window_OnFocus(e,A){A.HasFocus=true;};function FCKPanel_Window_OnBlur(e,A){A.HasFocus=false;if (A._LockCounter==0) FCKTools.RunFunction(A.Hide,A);};function CheckPopupOnHide(A){if (A||!this._Popup.isOpen){window.clearInterval(this._Timer);this._Timer=null;FCKTools.RunFunction(this.OnHide,this);}};function FCKPanel_Cleanup(){this._Popup=null;this._Window=null;this.Document=null;this.MainNode=null;};
+var FCKIcon=function(A){var B=A?typeof(A):'undefined';switch (B){case 'number':this.Path=FCKConfig.SkinPath+'fck_strip.gif';this.Size=16;this.Position=A;break;case 'undefined':this.Path=FCK_SPACER_PATH;break;case 'string':this.Path=A;break;default:this.Path=A[0];this.Size=A[1];this.Position=A[2];}};FCKIcon.prototype.CreateIconElement=function(A){var B,eIconImage;if (this.Position){var C='-'+((this.Position-1)*this.Size)+'px';if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path;eIconImage.style.top=C;}else{B=A.createElement('IMG');B.src=FCK_SPACER_PATH;B.style.backgroundPosition='0px '+C;B.style.backgroundImage='url("'+this.Path+'")';}}else{if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path?this.Path:FCK_SPACER_PATH;}else{B=A.createElement('IMG');B.src=this.Path?this.Path:FCK_SPACER_PATH;}};B.className='TB_Button_Image';return B;};
 var FCKToolbarButtonUI=function(A,B,C,D,E,F){this.Name=A;this.Label=B||A;this.Tooltip=C||this.Label;this.Style=E||0;this.State=F||0;this.Icon=new FCKIcon(D);if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarButtonUI_Cleanup);};FCKToolbarButtonUI.prototype._CreatePaddingElement=function(A){var B=A.createElement('IMG');B.className='TB_Button_Padding';B.src=FCK_SPACER_PATH;return B;};FCKToolbarButtonUI.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this.MainElement=B.createElement('DIV');C.title=this.Tooltip;if (FCKBrowserInfo.IsGecko) C.onmousedown=FCKTools.CancelEvent;FCKTools.AddEventListenerEx(C,'mouseover',FCKToolbarButtonUI_OnMouseOver,this);FCKTools.AddEventListenerEx(C,'mouseout',FCKToolbarButtonUI_OnMouseOut,this);FCKTools.AddEventListenerEx(C,'click',FCKToolbarButtonUI_OnClick,this);this.ChangeState(this.State,true);if (this.Style==0&&!this.ShowArrow){C.appendChild(this.Icon.CreateIconElement(B));}else{var D=C.appendChild(B.createElement('TABLE'));D.cellPadding=0;D.cellSpacing=0;var E=D.insertRow(-1);var F=E.insertCell(-1);if (this.Style==0||this.Style==2) F.appendChild(this.Icon.CreateIconElement(B));else F.appendChild(this._CreatePaddingElement(B));if (this.Style==1||this.Style==2){F=E.insertCell(-1);F.className='TB_Button_Text';F.noWrap=true;F.appendChild(B.createTextNode(this.Label));};if (this.ShowArrow){if (this.Style!=0){E.insertCell(-1).appendChild(this._CreatePaddingElement(B));};F=E.insertCell(-1);var G=F.appendChild(B.createElement('IMG'));G.src=FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif';G.width=5;G.height=3;};F=E.insertCell(-1);F.appendChild(this._CreatePaddingElement(B));};A.appendChild(C);};FCKToolbarButtonUI.prototype.ChangeState=function(A,B){if (!B&&this.State==A) return;var e=this.MainElement;if (!e) return;switch (parseInt(A,10)){case 0:e.className='TB_Button_Off';break;case 1:e.className='TB_Button_On';break;case -1:e.className='TB_Button_Disabled';break;};this.State=A;};function FCKToolbarButtonUI_OnMouseOver(A,B){if (B.State==0) this.className='TB_Button_Off_Over';else if (B.State==1) this.className='TB_Button_On_Over';};function FCKToolbarButtonUI_OnMouseOut(A,B){if (B.State==0) this.className='TB_Button_Off';else if (B.State==1) this.className='TB_Button_On';};function FCKToolbarButtonUI_OnClick(A,B){if (B.OnClick&&B.State!=-1) B.OnClick(B);};function FCKToolbarButtonUI_Cleanup(){this.MainElement=null;};
-var FCKToolbarButton=function(A,B,C,D,E,F,G){this.CommandName=A;this.Label=B;this.Tooltip=C;this.Style=D;this.SourceView=E?true:false;this.ContextSensitive=F?true:false;if (G==null) this.IconPath=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(G)=='number') this.IconPath=[FCKConfig.SkinPath+'fck_strip.gif',16,G];else this.IconPath=G;};FCKToolbarButton.prototype.Create=function(A){this._UIButton=new FCKToolbarButtonUI(this.CommandName,this.Label,this.Tooltip,this.IconPath,this.Style);this._UIButton.OnClick=this.Click;this._UIButton._ToolbarButton=this;this._UIButton.Create(A);};FCKToolbarButton.prototype.RefreshState=function(){var A=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (A==this._UIButton.State) return;this._UIButton.ChangeState(A);};FCKToolbarButton.prototype.Click=function(){var A=this._ToolbarButton||this;FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(A.CommandName).Execute();};FCKToolbarButton.prototype.Enable=function(){this.RefreshState();};FCKToolbarButton.prototype.Disable=function(){this._UIButton.ChangeState(-1);}
-var FCKSpecialCombo=function(A,B,C,D,E){this.FieldWidth=B||100;this.PanelWidth=C||150;this.PanelMaxHeight=D||150;this.Label='&nbsp;';this.Caption=A;this.Tooltip=A;this.Style=2;this.Enabled=true;this.Items={};this._Panel=new FCKPanel(E||window);this._Panel.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');this._PanelBox=this._Panel.MainNode.appendChild(this._Panel.Document.createElement('DIV'));this._PanelBox.className='SC_Panel';this._PanelBox.style.width=this.PanelWidth+'px';this._PanelBox.innerHTML='<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>';this._ItemsHolderEl=this._PanelBox.getElementsByTagName('TD')[0];if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKSpecialCombo_Cleanup);};function FCKSpecialCombo_ItemOnMouseOver(){this.className+=' SC_ItemOver';};function FCKSpecialCombo_ItemOnMouseOut(){this.className=this.originalClass;};function FCKSpecialCombo_ItemOnClick(A,B,C){this.className=this.originalClass;B._Panel.Hide();B.SetLabel(this.FCKItemLabel);if (typeof(B.OnSelect)=='function') B.OnSelect(C,this);};FCKSpecialCombo.prototype.ClearItems=function (){if (this.Items) this.Items={};var A=this._ItemsHolderEl;while (A.firstChild) A.removeChild(A.firstChild);};FCKSpecialCombo.prototype.AddItem=function(A,B,C,D){var E=this._ItemsHolderEl.appendChild(this._Panel.Document.createElement('DIV'));E.className=E.originalClass='SC_Item';E.innerHTML=B;E.FCKItemLabel=C||A;E.Selected=false;if (FCKBrowserInfo.IsIE) E.style.width='100%';if (D) E.style.backgroundColor=D;FCKTools.AddEventListenerEx(E,'mouseover',FCKSpecialCombo_ItemOnMouseOver);FCKTools.AddEventListenerEx(E,'mouseout',FCKSpecialCombo_ItemOnMouseOut);FCKTools.AddEventListenerEx(E,'click',FCKSpecialCombo_ItemOnClick,[this,A]);this.Items[A.toString().toLowerCase()]=E;return E;};FCKSpecialCombo.prototype.SelectItem=function(A){if (typeof A=='string') A=this.Items[A.toString().toLowerCase()];if (A){A.className=A.originalClass='SC_ItemSelected';A.Selected=true;}};FCKSpecialCombo.prototype.SelectItemByLabel=function(A,B){for (var C in this.Items){var D=this.Items[C];if (D.FCKItemLabel==A){D.className=D.originalClass='SC_ItemSelected';D.Selected=true;if (B) this.SetLabel(A);}}};FCKSpecialCombo.prototype.DeselectAll=function(A){for (var i in this.Items){if (!this.Items[i]) continue;this.Items[i].className=this.Items[i].originalClass='SC_Item';this.Items[i].Selected=false;};if (A) this.SetLabel('');};FCKSpecialCombo.prototype.SetLabelById=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];this.SetLabel(B?B.FCKItemLabel:'');};FCKSpecialCombo.prototype.SetLabel=function(A){A=(!A||A.length==0)?'&nbsp;':A;if (A==this.Label) return;this.Label=A;var B=this._LabelEl;if (B){B.innerHTML=A;FCKTools.DisableSelection(B);}};FCKSpecialCombo.prototype.SetEnabled=function(A){this.Enabled=A;if (this._OuterTable) this._OuterTable.className=A?'':'SC_FieldDisabled';};FCKSpecialCombo.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this._OuterTable=A.appendChild(B.createElement('TABLE'));C.cellPadding=0;C.cellSpacing=0;C.insertRow(-1);var D;var E;switch (this.Style){case 0:D='TB_ButtonType_Icon';E=false;break;case 1:D='TB_ButtonType_Text';E=false;break;case 2:E=true;break;};if (this.Caption&&this.Caption.length>0&&E){var F=C.rows[0].insertCell(-1);F.innerHTML=this.Caption;F.className='SC_FieldCaption';};var G=FCKTools.AppendElement(C.rows[0].insertCell(-1),'div');if (E){G.className='SC_Field';G.style.width=this.FieldWidth+'px';G.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldLabel"><label>&nbsp;</label></td><td class="SC_FieldButton">&nbsp;</td></tr></tbody></table>';this._LabelEl=G.getElementsByTagName('label')[0];this._LabelEl.innerHTML=this.Label;}else{G.className='TB_Button_Off';G.innerHTML='<table title="'+this.Tooltip+'" class="'+D+'" cellspacing="0" cellpadding="0" border="0"><tr><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td><td class="TB_Text">'+this.Caption+'</td><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td><td class="TB_ButtonArrow"><img src="'+FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif" width="5" height="3"></td><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td></tr></table>';};FCKTools.AddEventListenerEx(G,'mouseover',FCKSpecialCombo_OnMouseOver,this);FCKTools.AddEventListenerEx(G,'mouseout',FCKSpecialCombo_OnMouseOut,this);FCKTools.AddEventListenerEx(G,'click',FCKSpecialCombo_OnClick,this);FCKTools.DisableSelection(this._Panel.Document.body);};function FCKSpecialCombo_Cleanup(){this._LabelEl=null;this._OuterTable=null;this._ItemsHolderEl=null;this._PanelBox=null;if (this.Items){for (var A in this.Items) this.Items[A]=null;}};function FCKSpecialCombo_OnMouseOver(A,B){if (B.Enabled){switch (B.Style){case 0:this.className='TB_Button_On_Over';break;case 1:this.className='TB_Button_On_Over';break;case 2:this.className='SC_Field SC_FieldOver';break;}}};function FCKSpecialCombo_OnMouseOut(A,B){switch (B.Style){case 0:this.className='TB_Button_Off';break;case 1:this.className='TB_Button_Off';break;case 2:this.className='SC_Field';break;}};function FCKSpecialCombo_OnClick(e,A){if (A.Enabled){var B=A._Panel;var C=A._PanelBox;var D=A._ItemsHolderEl;var E=A.PanelMaxHeight;if (A.OnBeforeClick) A.OnBeforeClick(A);if (FCKBrowserInfo.IsIE) B.Preload(0,this.offsetHeight,this);if (D.offsetHeight>E) C.style.height=E+'px';else C.style.height='';B.Show(0,this.offsetHeight,this);}};
-var FCKToolbarSpecialCombo=function(){this.SourceView=false;this.ContextSensitive=true;};FCKToolbarSpecialCombo.prototype.DefaultLabel='';function FCKToolbarSpecialCombo_OnSelect(A,B){FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).Execute(A,B);};FCKToolbarSpecialCombo.prototype.Create=function(A){this._Combo=new FCKSpecialCombo(this.GetLabel(),this.FieldWidth,this.PanelWidth,this.PanelMaxHeight,FCKBrowserInfo.IsIE?window:FCKTools.GetElementWindow(A).parent);this._Combo.Tooltip=this.Tooltip;this._Combo.Style=this.Style;this.CreateItems(this._Combo);this._Combo.Create(A);this._Combo.CommandName=this.CommandName;this._Combo.OnSelect=FCKToolbarSpecialCombo_OnSelect;};function FCKToolbarSpecialCombo_RefreshActiveItems(A,B){A.DeselectAll();A.SelectItem(B);A.SetLabelById(B);};FCKToolbarSpecialCombo.prototype.RefreshState=function(){var A;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B!=-1){A=1;if (this.RefreshActiveItems) this.RefreshActiveItems(this._Combo,B);else{if (this._LastValue!==B){this._LastValue=B;if (!B||B.length==0){this._Combo.DeselectAll();this._Combo.SetLabel(this.DefaultLabel);}else FCKToolbarSpecialCombo_RefreshActiveItems(this._Combo,B);}}}else A=-1;if (A==this.State) return;if (A==-1){this._Combo.DeselectAll();this._Combo.SetLabel('');};this.State=A;this._Combo.SetEnabled(A!=-1);};FCKToolbarSpecialCombo.prototype.Enable=function(){this.RefreshState();};FCKToolbarSpecialCombo.prototype.Disable=function(){this.State=-1;this._Combo.DeselectAll();this._Combo.SetLabel('');this._Combo.SetEnabled(false);};
-var FCKToolbarStyleCombo=function(A,B){if (A===false) return;this.CommandName='Style';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultStyleLabel||'';};FCKToolbarStyleCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarStyleCombo.prototype.GetLabel=function(){return FCKLang.Style;};FCKToolbarStyleCombo.prototype.GetStyles=function(){var A={};var B=FCK.ToolbarSet.CurrentInstance.Styles.GetStyles();for (var C in B){var D=B[C];if (!D.IsCore) A[C]=D;};return A;};FCKToolbarStyleCombo.prototype.CreateItems=function(A){var B=A._Panel.Document;FCKTools.AppendStyleSheet(B,FCKConfig.ToolbarComboPreviewCSS);FCKTools.AppendStyleString(B,FCKConfig.EditorAreaStyles);B.body.className+=' ForceBaseFont';FCKConfig.ApplyBodyAttributes(B.body);var C=this.GetStyles();for (var D in C){var E=C[D];var F=E.GetType()==2?D:FCKToolbarStyleCombo_BuildPreview(E,E.Label||D);var G=A.AddItem(D,F);G.Style=E;};A.OnBeforeClick=this.StyleCombo_OnBeforeClick;};FCKToolbarStyleCombo.prototype.RefreshActiveItems=function(A){var B=FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);var D=C.Elements;for (var e=0;e<D.length;e++){for (var i in A.Items){var E=A.Items[i];var F=E.Style;if (F.CheckElementRemovable(D[e],true)){A.SetLabel(F.Label||F.Name);return;}}}};A.SetLabel(this.DefaultLabel);};FCKToolbarStyleCombo.prototype.StyleCombo_OnBeforeClick=function(A){A.DeselectAll();var B;var C;var D;var E=FCK.ToolbarSet.CurrentInstance.Selection;if (E.GetType()=='Control'){B=E.GetSelectedElement();D=B.nodeName.toLowerCase();}else{B=E.GetBoundaryParentElement(true);C=new FCKElementPath(B);};for (var i in A.Items){var F=A.Items[i];var G=F.Style;if ((D&&G.Element==D)||(!D&&G.GetType()!=2)){F.style.display='';if ((C&&G.CheckActive(C))||(!C&&G.CheckElementRemovable(B,true))) A.SelectItem(G.Name);}else F.style.display='none';}};function FCKToolbarStyleCombo_BuildPreview(A,B){var C=A.GetType();var D=[];if (C==0) D.push('<div class="BaseFont">');var E=A.Element;if (E=='bdo') E='span';D=['<',E];var F=A._StyleDesc.Attributes;if (F){for (var G in F){D.push(' ',G,'="',A.GetFinalAttributeValue(G),'"');}};if (A._GetStyleText().length>0) D.push(' style="',A.GetFinalStyleValue(),'"');D.push('>',B,'</',E,'>');if (C==0) D.push('</div>');return D.join('');}
+var FCKToolbarButton=function(A,B,C,D,E,F,G){this.CommandName=A;this.Label=B;this.Tooltip=C;this.Style=D;this.SourceView=E?true:false;this.ContextSensitive=F?true:false;if (G==null) this.IconPath=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(G)=='number') this.IconPath=[FCKConfig.SkinPath+'fck_strip.gif',16,G];else this.IconPath=G;};FCKToolbarButton.prototype.Create=function(A){this._UIButton=new FCKToolbarButtonUI(this.CommandName,this.Label,this.Tooltip,this.IconPath,this.Style);this._UIButton.OnClick=this.Click;this._UIButton._ToolbarButton=this;this._UIButton.Create(A);};FCKToolbarButton.prototype.RefreshState=function(){var A=this._UIButton;if (!A) return;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B==A.State) return;A.ChangeState(B);};FCKToolbarButton.prototype.Click=function(){var A=this._ToolbarButton||this;FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(A.CommandName).Execute();};FCKToolbarButton.prototype.Enable=function(){this.RefreshState();};FCKToolbarButton.prototype.Disable=function(){this._UIButton.ChangeState(-1);};
+var FCKSpecialCombo=function(A,B,C,D,E){this.FieldWidth=B||100;this.PanelWidth=C||150;this.PanelMaxHeight=D||150;this.Label='&nbsp;';this.Caption=A;this.Tooltip=A;this.Style=2;this.Enabled=true;this.Items={};this._Panel=new FCKPanel(E||window);this._Panel.AppendStyleSheet(FCKConfig.SkinEditorCSS);this._PanelBox=this._Panel.MainNode.appendChild(this._Panel.Document.createElement('DIV'));this._PanelBox.className='SC_Panel';this._PanelBox.style.width=this.PanelWidth+'px';this._PanelBox.innerHTML='<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>';this._ItemsHolderEl=this._PanelBox.getElementsByTagName('TD')[0];if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKSpecialCombo_Cleanup);};function FCKSpecialCombo_ItemOnMouseOver(){this.className+=' SC_ItemOver';};function FCKSpecialCombo_ItemOnMouseOut(){this.className=this.originalClass;};function FCKSpecialCombo_ItemOnClick(A,B,C){this.className=this.originalClass;B._Panel.Hide();B.SetLabel(this.FCKItemLabel);if (typeof(B.OnSelect)=='function') B.OnSelect(C,this);};FCKSpecialCombo.prototype.ClearItems=function (){if (this.Items) this.Items={};var A=this._ItemsHolderEl;while (A.firstChild) A.removeChild(A.firstChild);};FCKSpecialCombo.prototype.AddItem=function(A,B,C,D){var E=this._ItemsHolderEl.appendChild(this._Panel.Document.createElement('DIV'));E.className=E.originalClass='SC_Item';E.innerHTML=B;E.FCKItemLabel=C||A;E.Selected=false;if (FCKBrowserInfo.IsIE) E.style.width='100%';if (D) E.style.backgroundColor=D;FCKTools.AddEventListenerEx(E,'mouseover',FCKSpecialCombo_ItemOnMouseOver);FCKTools.AddEventListenerEx(E,'mouseout',FCKSpecialCombo_ItemOnMouseOut);FCKTools.AddEventListenerEx(E,'click',FCKSpecialCombo_ItemOnClick,[this,A]);this.Items[A.toString().toLowerCase()]=E;return E;};FCKSpecialCombo.prototype.SelectItem=function(A){if (typeof A=='string') A=this.Items[A.toString().toLowerCase()];if (A){A.className=A.originalClass='SC_ItemSelected';A.Selected=true;}};FCKSpecialCombo.prototype.SelectItemByLabel=function(A,B){for (var C in this.Items){var D=this.Items[C];if (D.FCKItemLabel==A){D.className=D.originalClass='SC_ItemSelected';D.Selected=true;if (B) this.SetLabel(A);}}};FCKSpecialCombo.prototype.DeselectAll=function(A){for (var i in this.Items){if (!this.Items[i]) continue;this.Items[i].className=this.Items[i].originalClass='SC_Item';this.Items[i].Selected=false;};if (A) this.SetLabel('');};FCKSpecialCombo.prototype.SetLabelById=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];this.SetLabel(B?B.FCKItemLabel:'');};FCKSpecialCombo.prototype.SetLabel=function(A){A=(!A||A.length==0)?'&nbsp;':A;if (A==this.Label) return;this.Label=A;var B=this._LabelEl;if (B){B.innerHTML=A;FCKTools.DisableSelection(B);}};FCKSpecialCombo.prototype.SetEnabled=function(A){this.Enabled=A;if (this._OuterTable) this._OuterTable.className=A?'':'SC_FieldDisabled';};FCKSpecialCombo.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this._OuterTable=A.appendChild(B.createElement('TABLE'));C.cellPadding=0;C.cellSpacing=0;C.insertRow(-1);var D;var E;switch (this.Style){case 0:D='TB_ButtonType_Icon';E=false;break;case 1:D='TB_ButtonType_Text';E=false;break;case 2:E=true;break;};if (this.Caption&&this.Caption.length>0&&E){var F=C.rows[0].insertCell(-1);F.innerHTML=this.Caption;F.className='SC_FieldCaption';};var G=FCKTools.AppendElement(C.rows[0].insertCell(-1),'div');if (E){G.className='SC_Field';G.style.width=this.FieldWidth+'px';G.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldLabel"><label>&nbsp;</label></td><td class="SC_FieldButton">&nbsp;</td></tr></tbody></table>';this._LabelEl=G.getElementsByTagName('label')[0];this._LabelEl.innerHTML=this.Label;}else{G.className='TB_Button_Off';G.innerHTML='<table title="'+this.Tooltip+'" class="'+D+'" cellspacing="0" cellpadding="0" border="0"><tr><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td><td class="TB_Text">'+this.Caption+'</td><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td><td class="TB_ButtonArrow"><img src="'+FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif" width="5" height="3"></td><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td></tr></table>';};FCKTools.AddEventListenerEx(G,'mouseover',FCKSpecialCombo_OnMouseOver,this);FCKTools.AddEventListenerEx(G,'mouseout',FCKSpecialCombo_OnMouseOut,this);FCKTools.AddEventListenerEx(G,'click',FCKSpecialCombo_OnClick,this);FCKTools.DisableSelection(this._Panel.Document.body);};function FCKSpecialCombo_Cleanup(){this._LabelEl=null;this._OuterTable=null;this._ItemsHolderEl=null;this._PanelBox=null;if (this.Items){for (var A in this.Items) this.Items[A]=null;}};function FCKSpecialCombo_OnMouseOver(A,B){if (B.Enabled){switch (B.Style){case 0:this.className='TB_Button_On_Over';break;case 1:this.className='TB_Button_On_Over';break;case 2:this.className='SC_Field SC_FieldOver';break;}}};function FCKSpecialCombo_OnMouseOut(A,B){switch (B.Style){case 0:this.className='TB_Button_Off';break;case 1:this.className='TB_Button_Off';break;case 2:this.className='SC_Field';break;}};function FCKSpecialCombo_OnClick(e,A){if (A.Enabled){var B=A._Panel;var C=A._PanelBox;var D=A._ItemsHolderEl;var E=A.PanelMaxHeight;if (A.OnBeforeClick) A.OnBeforeClick(A);if (FCKBrowserInfo.IsIE) B.Preload(0,this.offsetHeight,this);if (D.offsetHeight>E) C.style.height=E+'px';else C.style.height='';B.Show(0,this.offsetHeight,this);}};
+var FCKToolbarSpecialCombo=function(){this.SourceView=false;this.ContextSensitive=true;this.FieldWidth=null;this.PanelWidth=null;this.PanelMaxHeight=null;};FCKToolbarSpecialCombo.prototype.DefaultLabel='';function FCKToolbarSpecialCombo_OnSelect(A,B){FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).Execute(A,B);};FCKToolbarSpecialCombo.prototype.Create=function(A){this._Combo=new FCKSpecialCombo(this.GetLabel(),this.FieldWidth,this.PanelWidth,this.PanelMaxHeight,FCKBrowserInfo.IsIE?window:FCKTools.GetElementWindow(A).parent);this._Combo.Tooltip=this.Tooltip;this._Combo.Style=this.Style;this.CreateItems(this._Combo);this._Combo.Create(A);this._Combo.CommandName=this.CommandName;this._Combo.OnSelect=FCKToolbarSpecialCombo_OnSelect;};function FCKToolbarSpecialCombo_RefreshActiveItems(A,B){A.DeselectAll();A.SelectItem(B);A.SetLabelById(B);};FCKToolbarSpecialCombo.prototype.RefreshState=function(){var A;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B!=-1){A=1;if (this.RefreshActiveItems) this.RefreshActiveItems(this._Combo,B);else{if (this._LastValue!==B){this._LastValue=B;if (!B||B.length==0){this._Combo.DeselectAll();this._Combo.SetLabel(this.DefaultLabel);}else FCKToolbarSpecialCombo_RefreshActiveItems(this._Combo,B);}}}else A=-1;if (A==this.State) return;if (A==-1){this._Combo.DeselectAll();this._Combo.SetLabel('');};this.State=A;this._Combo.SetEnabled(A!=-1);};FCKToolbarSpecialCombo.prototype.Enable=function(){this.RefreshState();};FCKToolbarSpecialCombo.prototype.Disable=function(){this.State=-1;this._Combo.DeselectAll();this._Combo.SetLabel('');this._Combo.SetEnabled(false);};
+var FCKToolbarStyleCombo=function(A,B){if (A===false) return;this.CommandName='Style';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultStyleLabel||'';};FCKToolbarStyleCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarStyleCombo.prototype.GetLabel=function(){return FCKLang.Style;};FCKToolbarStyleCombo.prototype.GetStyles=function(){var A={};var B=FCK.ToolbarSet.CurrentInstance.Styles.GetStyles();for (var C in B){var D=B[C];if (!D.IsCore) A[C]=D;};return A;};FCKToolbarStyleCombo.prototype.CreateItems=function(A){var B=A._Panel.Document;FCKTools.AppendStyleSheet(B,FCKConfig.ToolbarComboPreviewCSS);FCKTools.AppendStyleString(B,FCKConfig.EditorAreaStyles);B.body.className+=' ForceBaseFont';FCKConfig.ApplyBodyAttributes(B.body);var C=this.GetStyles();for (var D in C){var E=C[D];var F=E.GetType()==2?D:FCKToolbarStyleCombo_BuildPreview(E,E.Label||D);var G=A.AddItem(D,F);G.Style=E;};A.OnBeforeClick=this.StyleCombo_OnBeforeClick;};FCKToolbarStyleCombo.prototype.RefreshActiveItems=function(A){var B=FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);var D=C.Elements;for (var e=0;e<D.length;e++){for (var i in A.Items){var E=A.Items[i];var F=E.Style;if (F.CheckElementRemovable(D[e],true)){A.SetLabel(F.Label||F.Name);return;}}}};A.SetLabel(this.DefaultLabel);};FCKToolbarStyleCombo.prototype.StyleCombo_OnBeforeClick=function(A){A.DeselectAll();var B;var C;var D;var E=FCK.ToolbarSet.CurrentInstance.Selection;if (E.GetType()=='Control'){B=E.GetSelectedElement();D=B.nodeName.toLowerCase();}else{B=E.GetBoundaryParentElement(true);C=new FCKElementPath(B);};for (var i in A.Items){var F=A.Items[i];var G=F.Style;if ((D&&G.Element==D)||(!D&&G.GetType()!=2)){F.style.display='';if ((C&&G.CheckActive(C))||(!C&&G.CheckElementRemovable(B,true))) A.SelectItem(G.Name);}else F.style.display='none';}};function FCKToolbarStyleCombo_BuildPreview(A,B){var C=A.GetType();var D=[];if (C==0) D.push('<div class="BaseFont">');var E=A.Element;if (E=='bdo') E='span';D=['<',E];var F=A._StyleDesc.Attributes;if (F){for (var G in F){D.push(' ',G,'="',A.GetFinalAttributeValue(G),'"');}};if (A._GetStyleText().length>0) D.push(' style="',A.GetFinalStyleValue(),'"');D.push('>',B,'</',E,'>');if (C==0) D.push('</div>');return D.join('');};
 var FCKToolbarFontFormatCombo=function(A,B){if (A===false) return;this.CommandName='FontFormat';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.NormalLabel='Normal';this.PanelWidth=190;this.DefaultLabel=FCKConfig.DefaultFontFormatLabel||'';};FCKToolbarFontFormatCombo.prototype=new FCKToolbarStyleCombo(false);FCKToolbarFontFormatCombo.prototype.GetLabel=function(){return FCKLang.FontFormat;};FCKToolbarFontFormatCombo.prototype.GetStyles=function(){var A={};var B=FCKLang['FontFormats'].split(';');var C={p:B[0],pre:B[1],address:B[2],h1:B[3],h2:B[4],h3:B[5],h4:B[6],h5:B[7],h6:B[8],div:B[9]||(B[0]+' (DIV)')};var D=FCKConfig.FontFormats.split(';');for (var i=0;i<D.length;i++){var E=D[i];var F=FCKStyles.GetStyle('_FCK_'+E);if (F){F.Label=C[E];A['_FCK_'+E]=F;}else alert("The FCKConfig.CoreStyles['"+E+"'] setting was not found. Please check the fckconfig.js file");};return A;};FCKToolbarFontFormatCombo.prototype.RefreshActiveItems=function(A){var B=FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);var D=C.Block;if (D){for (var i in A.Items){var E=A.Items[i];var F=E.Style;if (F.CheckElementRemovable(D)){A.SetLabel(F.Label);return;}}}};A.SetLabel(this.DefaultLabel);};FCKToolbarFontFormatCombo.prototype.StyleCombo_OnBeforeClick=function(A){A.DeselectAll();var B=FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);var D=C.Block;for (var i in A.Items){var E=A.Items[i];var F=E.Style;if (F.CheckElementRemovable(D)){A.SelectItem(E);return;}}}};
 var FCKToolbarFontsCombo=function(A,B){this.CommandName='FontName';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultFontLabel||'';};FCKToolbarFontsCombo.prototype=new FCKToolbarFontFormatCombo(false);FCKToolbarFontsCombo.prototype.GetLabel=function(){return FCKLang.Font;};FCKToolbarFontsCombo.prototype.GetStyles=function(){var A=FCKStyles.GetStyle('_FCK_FontFace');if (!A){alert("The FCKConfig.CoreStyles['Size'] setting was not found. Please check the fckconfig.js file");return {};};var B={};var C=FCKConfig.FontNames.split(';');for (var i=0;i<C.length;i++){var D=C[i].split('/');var E=D[0];var F=D[1]||E;var G=FCKTools.CloneObject(A);G.SetVariable('Font',E);G.Label=F;B[F]=G;};return B;};FCKToolbarFontsCombo.prototype.RefreshActiveItems=FCKToolbarStyleCombo.prototype.RefreshActiveItems;FCKToolbarFontsCombo.prototype.StyleCombo_OnBeforeClick=function(A){A.DeselectAll();var B=FCKSelection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);for (var i in A.Items){var D=A.Items[i];var E=D.Style;if (E.CheckActive(C)){A.SelectItem(D);return;}}}};
 var FCKToolbarFontSizeCombo=function(A,B){this.CommandName='FontSize';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultFontSizeLabel||'';this.FieldWidth=70;};FCKToolbarFontSizeCombo.prototype=new FCKToolbarFontFormatCombo(false);FCKToolbarFontSizeCombo.prototype.GetLabel=function(){return FCKLang.FontSize;};FCKToolbarFontSizeCombo.prototype.GetStyles=function(){var A=FCKStyles.GetStyle('_FCK_Size');if (!A){alert("The FCKConfig.CoreStyles['FontFace'] setting was not found. Please check the fckconfig.js file");return {};};var B={};var C=FCKConfig.FontSizes.split(';');for (var i=0;i<C.length;i++){var D=C[i].split('/');var E=D[0];var F=D[1]||E;var G=FCKTools.CloneObject(A);G.SetVariable('Size',E);G.Label=F;B[F]=G;};return B;};FCKToolbarFontSizeCombo.prototype.RefreshActiveItems=FCKToolbarStyleCombo.prototype.RefreshActiveItems;FCKToolbarFontSizeCombo.prototype.StyleCombo_OnBeforeClick=FCKToolbarFontsCombo.prototype.StyleCombo_OnBeforeClick;
-var FCKToolbarPanelButton=function(A,B,C,D,E){this.CommandName=A;var F;if (E==null) F=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(E)=='number') F=[FCKConfig.SkinPath+'fck_strip.gif',16,E];var G=this._UIButton=new FCKToolbarButtonUI(A,B,C,F,D);G._FCKToolbarPanelButton=this;G.ShowArrow=true;G.OnClick=FCKToolbarPanelButton_OnButtonClick;};FCKToolbarPanelButton.prototype.TypeName='FCKToolbarPanelButton';FCKToolbarPanelButton.prototype.Create=function(A){A.className+='Menu';this._UIButton.Create(A);var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName)._Panel;B._FCKToolbarPanelButton=this;var C=B.Document.body.appendChild(B.Document.createElement('div'));C.style.position='absolute';C.style.top='0px';var D=this.LineImg=C.appendChild(B.Document.createElement('IMG'));D.className='TB_ConnectionLine';D.style.position='absolute';D.src=FCK_SPACER_PATH;B.OnHide=FCKToolbarPanelButton_OnPanelHide;};function FCKToolbarPanelButton_OnButtonClick(A){var B=this._FCKToolbarPanelButton;var e=B._UIButton.MainElement;B._UIButton.ChangeState(1);B.LineImg.style.width=(e.offsetWidth-2)+'px';FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(B.CommandName).Execute(0,e.offsetHeight-1,e);};function FCKToolbarPanelButton_OnPanelHide(){var A=this._FCKToolbarPanelButton;A._UIButton.ChangeState(0);};FCKToolbarPanelButton.prototype.RefreshState=FCKToolbarButton.prototype.RefreshState;FCKToolbarPanelButton.prototype.Enable=FCKToolbarButton.prototype.Enable;FCKToolbarPanelButton.prototype.Disable=FCKToolbarButton.prototype.Disable;
+var FCKToolbarPanelButton=function(A,B,C,D,E){this.CommandName=A;var F;if (E==null) F=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(E)=='number') F=[FCKConfig.SkinPath+'fck_strip.gif',16,E];var G=this._UIButton=new FCKToolbarButtonUI(A,B,C,F,D);G._FCKToolbarPanelButton=this;G.ShowArrow=true;G.OnClick=FCKToolbarPanelButton_OnButtonClick;};FCKToolbarPanelButton.prototype.TypeName='FCKToolbarPanelButton';FCKToolbarPanelButton.prototype.Create=function(A){A.className+='Menu';this._UIButton.Create(A);var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName)._Panel;this.RegisterPanel(B);};FCKToolbarPanelButton.prototype.RegisterPanel=function(A){if (A._FCKToolbarPanelButton) return;A._FCKToolbarPanelButton=this;var B=A.Document.body.appendChild(A.Document.createElement('div'));B.style.position='absolute';B.style.top='0px';var C=A._FCKToolbarPanelButtonLineDiv=B.appendChild(A.Document.createElement('IMG'));C.className='TB_ConnectionLine';C.style.position='absolute';C.src=FCK_SPACER_PATH;A.OnHide=FCKToolbarPanelButton_OnPanelHide;};function FCKToolbarPanelButton_OnButtonClick(A){var B=this._FCKToolbarPanelButton;var e=B._UIButton.MainElement;B._UIButton.ChangeState(1);var C=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(B.CommandName);var D=C._Panel;D._FCKToolbarPanelButtonLineDiv.style.width=(e.offsetWidth-2)+'px';C.Execute(0,e.offsetHeight-1,e);};function FCKToolbarPanelButton_OnPanelHide(){var A=this._FCKToolbarPanelButton;A._UIButton.ChangeState(0);};FCKToolbarPanelButton.prototype.RefreshState=FCKToolbarButton.prototype.RefreshState;FCKToolbarPanelButton.prototype.Enable=FCKToolbarButton.prototype.Enable;FCKToolbarPanelButton.prototype.Disable=FCKToolbarButton.prototype.Disable;
 var FCKToolbarItems={};FCKToolbarItems.LoadedItems={};FCKToolbarItems.RegisterItem=function(A,B){this.LoadedItems[A]=B;};FCKToolbarItems.GetItem=function(A){var B=FCKToolbarItems.LoadedItems[A];if (B) return B;switch (A){case 'Source':B=new FCKToolbarButton('Source',FCKLang.Source,null,2,true,true,1);break;case 'DocProps':B=new FCKToolbarButton('DocProps',FCKLang.DocProps,null,null,null,null,2);break;case 'Save':B=new FCKToolbarButton('Save',FCKLang.Save,null,null,true,null,3);break;case 'NewPage':B=new FCKToolbarButton('NewPage',FCKLang.NewPage,null,null,true,null,4);break;case 'Preview':B=new FCKToolbarButton('Preview',FCKLang.Preview,null,null,true,null,5);break;case 'Templates':B=new FCKToolbarButton('Templates',FCKLang.Templates,null,null,null,null,6);break;case 'About':B=new FCKToolbarButton('About',FCKLang.About,null,null,true,null,47);break;case 'Cut':B=new FCKToolbarButton('Cut',FCKLang.Cut,null,null,false,true,7);break;case 'Copy':B=new FCKToolbarButton('Copy',FCKLang.Copy,null,null,false,true,8);break;case 'Paste':B=new FCKToolbarButton('Paste',FCKLang.Paste,null,null,false,true,9);break;case 'PasteText':B=new FCKToolbarButton('PasteText',FCKLang.PasteText,null,null,false,true,10);break;case 'PasteWord':B=new FCKToolbarButton('PasteWord',FCKLang.PasteWord,null,null,false,true,11);break;case 'Print':B=new FCKToolbarButton('Print',FCKLang.Print,null,null,false,true,12);break;case 'SpellCheck':B=new FCKToolbarButton('SpellCheck',FCKLang.SpellCheck,null,null,null,null,13);break;case 'Undo':B=new FCKToolbarButton('Undo',FCKLang.Undo,null,null,false,true,14);break;case 'Redo':B=new FCKToolbarButton('Redo',FCKLang.Redo,null,null,false,true,15);break;case 'SelectAll':B=new FCKToolbarButton('SelectAll',FCKLang.SelectAll,null,null,true,null,18);break;case 'RemoveFormat':B=new FCKToolbarButton('RemoveFormat',FCKLang.RemoveFormat,null,null,false,true,19);break;case 'FitWindow':B=new FCKToolbarButton('FitWindow',FCKLang.FitWindow,null,null,true,true,66);break;case 'Bold':B=new FCKToolbarButton('Bold',FCKLang.Bold,null,null,false,true,20);break;case 'Italic':B=new FCKToolbarButton('Italic',FCKLang.Italic,null,null,false,true,21);break;case 'Underline':B=new FCKToolbarButton('Underline',FCKLang.Underline,null,null,false,true,22);break;case 'StrikeThrough':B=new FCKToolbarButton('StrikeThrough',FCKLang.StrikeThrough,null,null,false,true,23);break;case 'Subscript':B=new FCKToolbarButton('Subscript',FCKLang.Subscript,null,null,false,true,24);break;case 'Superscript':B=new FCKToolbarButton('Superscript',FCKLang.Superscript,null,null,false,true,25);break;case 'OrderedList':B=new FCKToolbarButton('InsertOrderedList',FCKLang.NumberedListLbl,FCKLang.NumberedList,null,false,true,26);break;case 'UnorderedList':B=new FCKToolbarButton('InsertUnorderedList',FCKLang.BulletedListLbl,FCKLang.BulletedList,null,false,true,27);break;case 'Outdent':B=new FCKToolbarButton('Outdent',FCKLang.DecreaseIndent,null,null,false,true,28);break;case 'Indent':B=new FCKToolbarButton('Indent',FCKLang.IncreaseIndent,null,null,false,true,29);break;case 'Blockquote':B=new FCKToolbarButton('Blockquote',FCKLang.Blockquote,null,null,false,true,73);break;case 'Link':B=new FCKToolbarButton('Link',FCKLang.InsertLinkLbl,FCKLang.InsertLink,null,false,true,34);break;case 'Unlink':B=new FCKToolbarButton('Unlink',FCKLang.RemoveLink,null,null,false,true,35);break;case 'Anchor':B=new FCKToolbarButton('Anchor',FCKLang.Anchor,null,null,null,null,36);break;case 'Image':B=new FCKToolbarButton('Image',FCKLang.InsertImageLbl,FCKLang.InsertImage,null,false,true,37);break;case 'Flash':B=new FCKToolbarButton('Flash',FCKLang.InsertFlashLbl,FCKLang.InsertFlash,null,false,true,38);break;case 'Table':B=new FCKToolbarButton('Table',FCKLang.InsertTableLbl,FCKLang.InsertTable,null,false,true,39);break;case 'SpecialChar':B=new FCKToolbarButton('SpecialChar',FCKLang.InsertSpecialCharLbl,FCKLang.InsertSpecialChar,null,false,true,42);break;case 'Smiley':B=new FCKToolbarButton('Smiley',FCKLang.InsertSmileyLbl,FCKLang.InsertSmiley,null,false,true,41);break;case 'PageBreak':B=new FCKToolbarButton('PageBreak',FCKLang.PageBreakLbl,FCKLang.PageBreak,null,false,true,43);break;case 'Rule':B=new FCKToolbarButton('Rule',FCKLang.InsertLineLbl,FCKLang.InsertLine,null,false,true,40);break;case 'JustifyLeft':B=new FCKToolbarButton('JustifyLeft',FCKLang.LeftJustify,null,null,false,true,30);break;case 'JustifyCenter':B=new FCKToolbarButton('JustifyCenter',FCKLang.CenterJustify,null,null,false,true,31);break;case 'JustifyRight':B=new FCKToolbarButton('JustifyRight',FCKLang.RightJustify,null,null,false,true,32);break;case 'JustifyFull':B=new FCKToolbarButton('JustifyFull',FCKLang.BlockJustify,null,null,false,true,33);break;case 'Style':B=new FCKToolbarStyleCombo();break;case 'FontName':B=new FCKToolbarFontsCombo();break;case 'FontSize':B=new FCKToolbarFontSizeCombo();break;case 'FontFormat':B=new FCKToolbarFontFormatCombo();break;case 'TextColor':B=new FCKToolbarPanelButton('TextColor',FCKLang.TextColor,null,null,45);break;case 'BGColor':B=new FCKToolbarPanelButton('BGColor',FCKLang.BGColor,null,null,46);break;case 'Find':B=new FCKToolbarButton('Find',FCKLang.Find,null,null,null,null,16);break;case 'Replace':B=new FCKToolbarButton('Replace',FCKLang.Replace,null,null,null,null,17);break;case 'Form':B=new FCKToolbarButton('Form',FCKLang.Form,null,null,null,null,48);break;case 'Checkbox':B=new FCKToolbarButton('Checkbox',FCKLang.Checkbox,null,null,null,null,49);break;case 'Radio':B=new FCKToolbarButton('Radio',FCKLang.RadioButton,null,null,null,null,50);break;case 'TextField':B=new FCKToolbarButton('TextField',FCKLang.TextField,null,null,null,null,51);break;case 'Textarea':B=new FCKToolbarButton('Textarea',FCKLang.Textarea,null,null,null,null,52);break;case 'HiddenField':B=new FCKToolbarButton('HiddenField',FCKLang.HiddenField,null,null,null,null,56);break;case 'Button':B=new FCKToolbarButton('Button',FCKLang.Button,null,null,null,null,54);break;case 'Select':B=new FCKToolbarButton('Select',FCKLang.SelectionField,null,null,null,null,53);break;case 'ImageButton':B=new FCKToolbarButton('ImageButton',FCKLang.ImageButton,null,null,null,null,55);break;case 'ShowBlocks':B=new FCKToolbarButton('ShowBlocks',FCKLang.ShowBlocks,null,null,null,true,72);break;default:alert(FCKLang.UnknownToolbarItem.replace(/%1/g,A));return null;};FCKToolbarItems.LoadedItems[A]=B;return B;};
-var FCKToolbar=function(){this.Items=[];};FCKToolbar.prototype.AddItem=function(A){return this.Items[this.Items.length]=A;};FCKToolbar.prototype.AddButton=function(A,B,C,D,E,F){if (typeof(D)=='number') D=[this.DefaultIconsStrip,this.DefaultIconSize,D];var G=new FCKToolbarButtonUI(A,B,C,D,E,F);G._FCKToolbar=this;G.OnClick=FCKToolbar_OnItemClick;return this.AddItem(G);};function FCKToolbar_OnItemClick(A){var B=A._FCKToolbar;if (B.OnItemClick) B.OnItemClick(B,A);};FCKToolbar.prototype.AddSeparator=function(){this.AddItem(new FCKToolbarSeparator());};FCKToolbar.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var e=B.createElement('table');e.className='TB_Toolbar';e.style.styleFloat=e.style.cssFloat=(FCKLang.Dir=='ltr'?'left':'right');e.dir=FCKLang.Dir;e.cellPadding=0;e.cellSpacing=0;var C=e.insertRow(-1);var D;if (!this.HideStart){D=C.insertCell(-1);D.appendChild(B.createElement('div')).className='TB_Start';};for (var i=0;i<this.Items.length;i++){this.Items[i].Create(C.insertCell(-1));};if (!this.HideEnd){D=C.insertCell(-1);D.appendChild(B.createElement('div')).className='TB_End';};A.appendChild(e);};var FCKToolbarSeparator=function(){};FCKToolbarSeparator.prototype.Create=function(A){FCKTools.AppendElement(A,'div').className='TB_Separator';}
-var FCKToolbarBreak=function(){};FCKToolbarBreak.prototype.Create=function(A){var B=A.ownerDocument.createElement('div');B.style.clear=B.style.cssFloat=FCKLang.Dir=='rtl'?'right':'left';A.appendChild(B);}
-function FCKToolbarSet_Create(A){var B;var C=A||FCKConfig.ToolbarLocation;switch (C){case 'In':document.getElementById('xToolbarRow').style.display='';B=new FCKToolbarSet(document);break;case 'None':B=new FCKToolbarSet(document);break;default:FCK.Events.AttachEvent('OnBlur',FCK_OnBlur);FCK.Events.AttachEvent('OnFocus',FCK_OnFocus);var D;var E=C.match(/^Out:(.+)\((\w+)\)$/);if (E){D=eval('parent.'+E[1]).document.getElementById(E[2]);}else{E=C.match(/^Out:(\w+)$/);if (E) D=parent.document.getElementById(E[1]);};if (!D){alert('Invalid value for "ToolbarLocation"');return arguments.callee('In');};B=D.__FCKToolbarSet;if (B) break;var F=FCKTools.GetElementDocument(D).createElement('iframe');F.src='javascript:void(0)';F.frameBorder=0;F.width='100%';F.height='10';D.appendChild(F);F.unselectable='on';var G=F.contentWindow.document;var H='';if (FCKBrowserInfo.IsSafari) H='<base href="'+window.document.location+'">';G.open();G.write('<html><head>'+H+'<script type="text/javascript"> var adjust = function() { window.frameElement.height = document.body.scrollHeight ; }; window.onresize = adjust; window.onload = function () {window.setTimeout( adjust, 0 );}</script></head><body style="overflow: hidden">'+document.getElementById('xToolbarSpace').innerHTML+'</body></html>');G.close();FCKTools.AddEventListener(G,'contextmenu',FCKTools.CancelEvent);FCKTools.AppendStyleSheet(G,FCKConfig.SkinPath+'fck_editor.css');B=D.__FCKToolbarSet=new FCKToolbarSet(G);B._IFrame=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(D,FCKToolbarSet_Target_Cleanup);};B.CurrentInstance=FCK;FCK.AttachToOnSelectionChange(B.RefreshItemsState);return B;};function FCK_OnBlur(A){var B=A.ToolbarSet;if (B.CurrentInstance==A) B.Disable();};function FCK_OnFocus(A){var B=A.ToolbarSet;var C=A||FCK;B.CurrentInstance.FocusManager.RemoveWindow(B._IFrame.contentWindow);B.CurrentInstance=C;C.FocusManager.AddWindow(B._IFrame.contentWindow,true);B.Enable();};function FCKToolbarSet_Cleanup(){this._TargetElement=null;this._IFrame=null;};function FCKToolbarSet_Target_Cleanup(){this.__FCKToolbarSet=null;};var FCKToolbarSet=function(A){this._Document=A;this._TargetElement=A.getElementById('xToolbar');var B=A.getElementById('xExpandHandle');var C=A.getElementById('xCollapseHandle');B.title=FCKLang.ToolbarExpand;FCKTools.AddEventListener(B,'click',FCKToolbarSet_Expand_OnClick);C.title=FCKLang.ToolbarCollapse;FCKTools.AddEventListener(C,'click',FCKToolbarSet_Collapse_OnClick);if (!FCKConfig.ToolbarCanCollapse||FCKConfig.ToolbarStartExpanded) this.Expand();else this.Collapse();C.style.display=FCKConfig.ToolbarCanCollapse?'':'none';if (FCKConfig.ToolbarCanCollapse) C.style.display='';else A.getElementById('xTBLeftBorder').style.display='';this.Toolbars=[];this.IsLoaded=false;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarSet_Cleanup);};function FCKToolbarSet_Expand_OnClick(){FCK.ToolbarSet.Expand();};function FCKToolbarSet_Collapse_OnClick(){FCK.ToolbarSet.Collapse();};FCKToolbarSet.prototype.Expand=function(){this._ChangeVisibility(false);};FCKToolbarSet.prototype.Collapse=function(){this._ChangeVisibility(true);};FCKToolbarSet.prototype._ChangeVisibility=function(A){this._Document.getElementById('xCollapsed').style.display=A?'':'none';this._Document.getElementById('xExpanded').style.display=A?'none':'';if (FCKBrowserInfo.IsGecko){FCKTools.RunFunction(window.onresize);}};FCKToolbarSet.prototype.Load=function(A){this.Name=A;this.Items=[];this.ItemsWysiwygOnly=[];this.ItemsContextSensitive=[];this._TargetElement.innerHTML='';var B=FCKConfig.ToolbarSets[A];if (!B){alert(FCKLang.UnknownToolbarSet.replace(/%1/g,A));return;};this.Toolbars=[];for (var x=0;x<B.length;x++){var C=B[x];if (!C) continue;var D;if (typeof(C)=='string'){if (C=='/') D=new FCKToolbarBreak();}else{D=new FCKToolbar();for (var j=0;j<C.length;j++){var E=C[j];if (E=='-') D.AddSeparator();else{var F=FCKToolbarItems.GetItem(E);if (F){D.AddItem(F);this.Items.push(F);if (!F.SourceView) this.ItemsWysiwygOnly.push(F);if (F.ContextSensitive) this.ItemsContextSensitive.push(F);}}}};D.Create(this._TargetElement);this.Toolbars[this.Toolbars.length]=D;};FCKTools.DisableSelection(this._Document.getElementById('xCollapseHandle').parentNode);if (FCK.Status!=2) FCK.Events.AttachEvent('OnStatusChange',this.RefreshModeState);else this.RefreshModeState();this.IsLoaded=true;this.IsEnabled=true;FCKTools.RunFunction(this.OnLoad);};FCKToolbarSet.prototype.Enable=function(){if (this.IsEnabled) return;this.IsEnabled=true;var A=this.Items;for (var i=0;i<A.length;i++) A[i].RefreshState();};FCKToolbarSet.prototype.Disable=function(){if (!this.IsEnabled) return;this.IsEnabled=false;var A=this.Items;for (var i=0;i<A.length;i++) A[i].Disable();};FCKToolbarSet.prototype.RefreshModeState=function(A){if (FCK.Status!=2) return;var B=A?A.ToolbarSet:this;var C=B.ItemsWysiwygOnly;if (FCK.EditMode==0){for (var i=0;i<C.length;i++) C[i].Enable();B.RefreshItemsState(A);}else{B.RefreshItemsState(A);for (var j=0;j<C.length;j++) C[j].Disable();}};FCKToolbarSet.prototype.RefreshItemsState=function(A){var B=(A?A.ToolbarSet:this).ItemsContextSensitive;for (var i=0;i<B.length;i++) B[i].RefreshState();};
-var FCKDialog={};FCKDialog.OpenDialog=function(A,B,C,D,E,F,G,H){var I={};I.Title=B;I.Page=C;I.Editor=window;I.CustomValue=F;var J=FCKConfig.BasePath+'fckdialog.html';this.Show(I,A,J,D,E,G,H);};
-FCKDialog.Show=function(A,B,C,D,E,F,G){var H=(FCKConfig.ScreenHeight-E)/2;var I=(FCKConfig.ScreenWidth-D)/2;var J="location=no,menubar=no,toolbar=no,dependent=yes,dialog=yes,minimizable=no,alwaysRaised=yes,resizable="+(G?'yes':'no')+",width="+D+",height="+E+",top="+H+",left="+I;if (!F) F=window;FCKFocusManager.Lock();var K=F.open('','FCKeditorDialog_'+B,J,true);if (!K){alert(FCKLang.DialogBlocked);FCKFocusManager.Unlock();return;};K.moveTo(I,H);K.resizeTo(D,E);K.focus();K.location.href=C;K.dialogArguments=A;F.FCKLastDialogInfo=A;this.Window=K;try{window.top.parent.addEventListener('mousedown',this.CheckFocus,true);window.top.parent.addEventListener('mouseup',this.CheckFocus,true);window.top.parent.addEventListener('click',this.CheckFocus,true);window.top.parent.addEventListener('focus',this.CheckFocus,true);}catch (e){}};FCKDialog.CheckFocus=function(){if (typeof(FCKDialog)!="object") return false;if (FCKDialog.Window&&!FCKDialog.Window.closed) FCKDialog.Window.focus();else{try{window.top.parent.removeEventListener('onmousedown',FCKDialog.CheckFocus,true);window.top.parent.removeEventListener('mouseup',FCKDialog.CheckFocus,true);window.top.parent.removeEventListener('click',FCKDialog.CheckFocus,true);window.top.parent.removeEventListener('onfocus',FCKDialog.CheckFocus,true);}catch (e){}};return false;};
-var FCKMenuItem=function(A,B,C,D,E){this.Name=B;this.Label=C||B;this.IsDisabled=E;this.Icon=new FCKIcon(D);this.SubMenu=new FCKMenuBlockPanel();this.SubMenu.Parent=A;this.SubMenu.OnClick=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnClick,this);if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuItem_Cleanup);};FCKMenuItem.prototype.AddItem=function(A,B,C,D){this.HasSubMenu=true;return this.SubMenu.AddItem(A,B,C,D);};FCKMenuItem.prototype.AddSeparator=function(){this.SubMenu.AddSeparator();};FCKMenuItem.prototype.Create=function(A){var B=this.HasSubMenu;var C=FCKTools.GetElementDocument(A);var r=this.MainElement=A.insertRow(-1);r.className=this.IsDisabled?'MN_Item_Disabled':'MN_Item';if (!this.IsDisabled){FCKTools.AddEventListenerEx(r,'mouseover',FCKMenuItem_OnMouseOver,[this]);FCKTools.AddEventListenerEx(r,'click',FCKMenuItem_OnClick,[this]);if (!B) FCKTools.AddEventListenerEx(r,'mouseout',FCKMenuItem_OnMouseOut,[this]);};var D=r.insertCell(-1);D.className='MN_Icon';D.appendChild(this.Icon.CreateIconElement(C));D=r.insertCell(-1);D.className='MN_Label';D.noWrap=true;D.appendChild(C.createTextNode(this.Label));D=r.insertCell(-1);if (B){D.className='MN_Arrow';var E=D.appendChild(C.createElement('IMG'));E.src=FCK_IMAGES_PATH+'arrow_'+FCKLang.Dir+'.gif';E.width=4;E.height=7;this.SubMenu.Create();this.SubMenu.Panel.OnHide=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnHide,this);}};FCKMenuItem.prototype.Activate=function(){this.MainElement.className='MN_Item_Over';if (this.HasSubMenu){this.SubMenu.Show(this.MainElement.offsetWidth+2,-2,this.MainElement);};FCKTools.RunFunction(this.OnActivate,this);};FCKMenuItem.prototype.Deactivate=function(){this.MainElement.className='MN_Item';if (this.HasSubMenu) this.SubMenu.Hide();};function FCKMenuItem_SubMenu_OnClick(A,B){FCKTools.RunFunction(B.OnClick,B,[A]);};function FCKMenuItem_SubMenu_OnHide(A){A.Deactivate();};function FCKMenuItem_OnClick(A,B){if (B.HasSubMenu) B.Activate();else{B.Deactivate();FCKTools.RunFunction(B.OnClick,B,[B]);}};function FCKMenuItem_OnMouseOver(A,B){B.Activate();};function FCKMenuItem_OnMouseOut(A,B){B.Deactivate();};function FCKMenuItem_Cleanup(){this.MainElement=null;}
-var FCKMenuBlock=function(){this._Items=[];};FCKMenuBlock.prototype.Count=function(){return this._Items.length;};FCKMenuBlock.prototype.AddItem=function(A,B,C,D){var E=new FCKMenuItem(this,A,B,C,D);E.OnClick=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnClick,this);E.OnActivate=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnActivate,this);this._Items.push(E);return E;};FCKMenuBlock.prototype.AddSeparator=function(){this._Items.push(new FCKMenuSeparator());};FCKMenuBlock.prototype.RemoveAllItems=function(){this._Items=[];var A=this._ItemsTable;if (A){while (A.rows.length>0) A.deleteRow(0);}};FCKMenuBlock.prototype.Create=function(A){if (!this._ItemsTable){if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuBlock_Cleanup);this._Window=FCKTools.GetElementWindow(A);var B=FCKTools.GetElementDocument(A);var C=A.appendChild(B.createElement('table'));C.cellPadding=0;C.cellSpacing=0;FCKTools.DisableSelection(C);var D=C.insertRow(-1).insertCell(-1);D.className='MN_Menu';var E=this._ItemsTable=D.appendChild(B.createElement('table'));E.cellPadding=0;E.cellSpacing=0;};for (var i=0;i<this._Items.length;i++) this._Items[i].Create(this._ItemsTable);};function FCKMenuBlock_Item_OnClick(A,B){if (B.Hide) B.Hide();FCKTools.RunFunction(B.OnClick,B,[A]);};function FCKMenuBlock_Item_OnActivate(A){var B=A._ActiveItem;if (B&&B!=this){if (!FCKBrowserInfo.IsIE&&B.HasSubMenu&&!this.HasSubMenu){A._Window.focus();A.Panel.HasFocus=true;};B.Deactivate();};A._ActiveItem=this;};function FCKMenuBlock_Cleanup(){this._Window=null;this._ItemsTable=null;};var FCKMenuSeparator=function(){};FCKMenuSeparator.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var r=A.insertRow(-1);var C=r.insertCell(-1);C.className='MN_Separator MN_Icon';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';}
-var FCKMenuBlockPanel=function(){FCKMenuBlock.call(this);};FCKMenuBlockPanel.prototype=new FCKMenuBlock();FCKMenuBlockPanel.prototype.Create=function(){var A=this.Panel=(this.Parent&&this.Parent.Panel?this.Parent.Panel.CreateChildPanel():new FCKPanel());A.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');FCKMenuBlock.prototype.Create.call(this,A.MainNode);};FCKMenuBlockPanel.prototype.Show=function(x,y,A){if (!this.Panel.CheckIsOpened()) this.Panel.Show(x,y,A);};FCKMenuBlockPanel.prototype.Hide=function(){if (this.Panel.CheckIsOpened()) this.Panel.Hide();}
-var FCKContextMenu=function(A,B){this.CtrlDisable=false;var C=this._Panel=new FCKPanel(A);C.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');C.IsContextMenu=true;if (FCKBrowserInfo.IsGecko) C.Document.addEventListener('draggesture',function(e) {e.preventDefault();return false;},true);var D=this._MenuBlock=new FCKMenuBlock();D.Panel=C;D.OnClick=FCKTools.CreateEventListener(FCKContextMenu_MenuBlock_OnClick,this);this._Redraw=true;};FCKContextMenu.prototype.SetMouseClickWindow=function(A){if (!FCKBrowserInfo.IsIE){this._Document=A.document;if (FCKBrowserInfo.IsOpera&&!('oncontextmenu' in document.createElement('foo'))){this._Document.addEventListener('mousedown',FCKContextMenu_Document_OnMouseDown,false);this._Document.addEventListener('mouseup',FCKContextMenu_Document_OnMouseUp,false);};this._Document.addEventListener('contextmenu',FCKContextMenu_Document_OnContextMenu,false);}};FCKContextMenu.prototype.AddItem=function(A,B,C,D){var E=this._MenuBlock.AddItem(A,B,C,D);this._Redraw=true;return E;};FCKContextMenu.prototype.AddSeparator=function(){this._MenuBlock.AddSeparator();this._Redraw=true;};FCKContextMenu.prototype.RemoveAllItems=function(){this._MenuBlock.RemoveAllItems();this._Redraw=true;};FCKContextMenu.prototype.AttachToElement=function(A){if (FCKBrowserInfo.IsIE) FCKTools.AddEventListenerEx(A,'contextmenu',FCKContextMenu_AttachedElement_OnContextMenu,this);else A._FCKContextMenu=this;};function FCKContextMenu_Document_OnContextMenu(e){var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;FCKTools.CancelEvent(e);FCKContextMenu_AttachedElement_OnContextMenu(e,A._FCKContextMenu,A);return false;};A=A.parentNode;};return true;};var FCKContextMenu_OverrideButton;function FCKContextMenu_Document_OnMouseDown(e){if(!e||e.button!=2) return false;var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;var B=FCKContextMenu_OverrideButton;if(!B){var C=e.target.ownerDocument;B=FCKContextMenu_OverrideButton=C.createElement('input');B.type='button';var D=C.createElement('p');C.body.appendChild(D);D.appendChild(B);};B.style.cssText='position:absolute;top:'+(e.clientY-2)+'px;left:'+(e.clientX-2)+'px;width:5px;height:5px;opacity:0.01';};A=A.parentNode;};return false;};function FCKContextMenu_Document_OnMouseUp(e){var A=FCKContextMenu_OverrideButton;if (A){var B=A.parentNode;B.parentNode.removeChild(B);FCKContextMenu_OverrideButton=undefined;if(e&&e.button==2){FCKContextMenu_Document_OnContextMenu(e);return false;}}};function FCKContextMenu_AttachedElement_OnContextMenu(A,B,C){if (B.CtrlDisable&&(A.ctrlKey||A.metaKey)) return true;var D=C||this;if (B.OnBeforeOpen) B.OnBeforeOpen.call(B,D);if (B._MenuBlock.Count()==0) return false;if (B._Redraw){B._MenuBlock.Create(B._Panel.MainNode);B._Redraw=false;};FCKTools.DisableSelection(B._Panel.Document.body);var x=0;var y=0;if (FCKBrowserInfo.IsIE){x=A.screenX;y=A.screenY;}else if (FCKBrowserInfo.IsSafari){x=A.clientX;y=A.clientY;}else{x=A.pageX;y=A.pageY;};B._Panel.Show(x,y,A.currentTarget||null);return false;};function FCKContextMenu_MenuBlock_OnClick(A,B){B._Panel.Hide();FCKTools.RunFunction(B.OnItemClick,B,A);};
-FCK.ContextMenu={};FCK.ContextMenu.Listeners=[];FCK.ContextMenu.RegisterListener=function(A){if (A) this.Listeners.push(A);};function FCK_ContextMenu_Init(){var A=FCK.ContextMenu._InnerContextMenu=new FCKContextMenu(FCKBrowserInfo.IsIE?window:window.parent,FCKLang.Dir);A.CtrlDisable=FCKConfig.BrowserContextMenuOnCtrl;A.OnBeforeOpen=FCK_ContextMenu_OnBeforeOpen;A.OnItemClick=FCK_ContextMenu_OnItemClick;var B=FCK.ContextMenu;for (var i=0;i<FCKConfig.ContextMenu.length;i++) B.RegisterListener(FCK_ContextMenu_GetListener(FCKConfig.ContextMenu[i]));};function FCK_ContextMenu_GetListener(A){switch (A){case 'Generic':return {AddItems:function(menu,tag,tagName){menu.AddItem('Cut',FCKLang.Cut,7,FCKCommands.GetCommand('Cut').GetState()==-1);menu.AddItem('Copy',FCKLang.Copy,8,FCKCommands.GetCommand('Copy').GetState()==-1);menu.AddItem('Paste',FCKLang.Paste,9,FCKCommands.GetCommand('Paste').GetState()==-1);}};case 'Table':return {AddItems:function(menu,tag,tagName){var B=(tagName=='TABLE');var C=(!B&&FCKSelection.HasAncestorNode('TABLE'));if (C){menu.AddSeparator();var D=menu.AddItem('Cell',FCKLang.CellCM);D.AddItem('TableInsertCellBefore',FCKLang.InsertCellBefore,69);D.AddItem('TableInsertCellAfter',FCKLang.InsertCellAfter,58);D.AddItem('TableDeleteCells',FCKLang.DeleteCells,59);if (FCKBrowserInfo.IsGecko) D.AddItem('TableMergeCells',FCKLang.MergeCells,60,FCKCommands.GetCommand('TableMergeCells').GetState()==-1);else{D.AddItem('TableMergeRight',FCKLang.MergeRight,60,FCKCommands.GetCommand('TableMergeRight').GetState()==-1);D.AddItem('TableMergeDown',FCKLang.MergeDown,60,FCKCommands.GetCommand('TableMergeDown').GetState()==-1);};D.AddItem('TableHorizontalSplitCell',FCKLang.HorizontalSplitCell,61,FCKCommands.GetCommand('TableHorizontalSplitCell').GetState()==-1);D.AddItem('TableVerticalSplitCell',FCKLang.VerticalSplitCell,61,FCKCommands.GetCommand('TableVerticalSplitCell').GetState()==-1);D.AddSeparator();D.AddItem('TableCellProp',FCKLang.CellProperties,57,FCKCommands.GetCommand('TableCellProp').GetState()==-1);menu.AddSeparator();D=menu.AddItem('Row',FCKLang.RowCM);D.AddItem('TableInsertRowBefore',FCKLang.InsertRowBefore,70);D.AddItem('TableInsertRowAfter',FCKLang.InsertRowAfter,62);D.AddItem('TableDeleteRows',FCKLang.DeleteRows,63);menu.AddSeparator();D=menu.AddItem('Column',FCKLang.ColumnCM);D.AddItem('TableInsertColumnBefore',FCKLang.InsertColumnBefore,71);D.AddItem('TableInsertColumnAfter',FCKLang.InsertColumnAfter,64);D.AddItem('TableDeleteColumns',FCKLang.DeleteColumns,65);};if (B||C){menu.AddSeparator();menu.AddItem('TableDelete',FCKLang.TableDelete);menu.AddItem('TableProp',FCKLang.TableProperties,39);}}};case 'Link':return {AddItems:function(menu,tag,tagName){var E=(tagName=='A'||FCKSelection.HasAncestorNode('A'));if (E||FCK.GetNamedCommandState('Unlink')!=-1){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0&&F.href.length==0);if (G) return;menu.AddSeparator();if (E) menu.AddItem('Link',FCKLang.EditLink,34);menu.AddItem('Unlink',FCKLang.RemoveLink,35);}}};case 'Image':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&!tag.getAttribute('_fckfakelement')){menu.AddSeparator();menu.AddItem('Image',FCKLang.ImageProperties,37);}}};case 'Anchor':return {AddItems:function(menu,tag,tagName){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0);if (G||(tagName=='IMG'&&tag.getAttribute('_fckanchor'))){menu.AddSeparator();menu.AddItem('Anchor',FCKLang.AnchorProp,36);menu.AddItem('AnchorDelete',FCKLang.AnchorDelete);}}};case 'Flash':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckflash')){menu.AddSeparator();menu.AddItem('Flash',FCKLang.FlashProperties,38);}}};case 'Form':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('FORM')){menu.AddSeparator();menu.AddItem('Form',FCKLang.FormProp,48);}}};case 'Checkbox':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='checkbox'){menu.AddSeparator();menu.AddItem('Checkbox',FCKLang.CheckboxProp,49);}}};case 'Radio':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='radio'){menu.AddSeparator();menu.AddItem('Radio',FCKLang.RadioButtonProp,50);}}};case 'TextField':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='text'||tag.type=='password')){menu.AddSeparator();menu.AddItem('TextField',FCKLang.TextFieldProp,51);}}};case 'HiddenField':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckinputhidden')){menu.AddSeparator();menu.AddItem('HiddenField',FCKLang.HiddenFieldProp,56);}}};case 'ImageButton':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='image'){menu.AddSeparator();menu.AddItem('ImageButton',FCKLang.ImageButtonProp,55);}}};case 'Button':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='button'||tag.type=='submit'||tag.type=='reset')){menu.AddSeparator();menu.AddItem('Button',FCKLang.ButtonProp,54);}}};case 'Select':return {AddItems:function(menu,tag,tagName){if (tagName=='SELECT'){menu.AddSeparator();menu.AddItem('Select',FCKLang.SelectionFieldProp,53);}}};case 'Textarea':return {AddItems:function(menu,tag,tagName){if (tagName=='TEXTAREA'){menu.AddSeparator();menu.AddItem('Textarea',FCKLang.TextareaProp,52);}}};case 'BulletedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('UL')){menu.AddSeparator();menu.AddItem('BulletedList',FCKLang.BulletedListProp,27);}}};case 'NumberedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('OL')){menu.AddSeparator();menu.AddItem('NumberedList',FCKLang.NumberedListProp,26);}}};};return null;};function FCK_ContextMenu_OnBeforeOpen(){FCK.Events.FireEvent('OnSelectionChange');var A,sTagName;if ((A=FCKSelection.GetSelectedElement())) sTagName=A.tagName;var B=FCK.ContextMenu._InnerContextMenu;B.RemoveAllItems();var C=FCK.ContextMenu.Listeners;for (var i=0;i<C.length;i++) C[i].AddItems(B,A,sTagName);};function FCK_ContextMenu_OnItemClick(A){FCK.Focus();FCKCommands.GetCommand(A.Name).Execute();};
-var FCKPlugin=function(A,B,C){this.Name=A;this.BasePath=C?C:FCKConfig.PluginsPath;this.Path=this.BasePath+A+'/';if (!B||B.length==0) this.AvailableLangs=[];else this.AvailableLangs=B.split(',');};FCKPlugin.prototype.Load=function(){if (this.AvailableLangs.length>0){var A;if (this.AvailableLangs.IndexOf(FCKLanguageManager.ActiveLanguage.Code)>=0) A=FCKLanguageManager.ActiveLanguage.Code;else A=this.AvailableLangs[0];LoadScript(this.Path+'lang/'+A+'.js');};LoadScript(this.Path+'fckplugin.js');}
-var FCKPlugins=FCK.Plugins={};FCKPlugins.ItemsCount=0;FCKPlugins.Items={};FCKPlugins.Load=function(){var A=FCKPlugins.Items;for (var i=0;i<FCKConfig.Plugins.Items.length;i++){var B=FCKConfig.Plugins.Items[i];var C=A[B[0]]=new FCKPlugin(B[0],B[1],B[2]);FCKPlugins.ItemsCount++;};for (var s in A) A[s].Load();FCKPlugins.Load=null;}
+var FCKToolbar=function(){this.Items=[];};FCKToolbar.prototype.AddItem=function(A){return this.Items[this.Items.length]=A;};FCKToolbar.prototype.AddButton=function(A,B,C,D,E,F){if (typeof(D)=='number') D=[this.DefaultIconsStrip,this.DefaultIconSize,D];var G=new FCKToolbarButtonUI(A,B,C,D,E,F);G._FCKToolbar=this;G.OnClick=FCKToolbar_OnItemClick;return this.AddItem(G);};function FCKToolbar_OnItemClick(A){var B=A._FCKToolbar;if (B.OnItemClick) B.OnItemClick(B,A);};FCKToolbar.prototype.AddSeparator=function(){this.AddItem(new FCKToolbarSeparator());};FCKToolbar.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var e=B.createElement('table');e.className='TB_Toolbar';e.style.styleFloat=e.style.cssFloat=(FCKLang.Dir=='ltr'?'left':'right');e.dir=FCKLang.Dir;e.cellPadding=0;e.cellSpacing=0;var C=e.insertRow(-1);var D;if (!this.HideStart){D=C.insertCell(-1);D.appendChild(B.createElement('div')).className='TB_Start';};for (var i=0;i<this.Items.length;i++){this.Items[i].Create(C.insertCell(-1));};if (!this.HideEnd){D=C.insertCell(-1);D.appendChild(B.createElement('div')).className='TB_End';};A.appendChild(e);};var FCKToolbarSeparator=function(){};FCKToolbarSeparator.prototype.Create=function(A){FCKTools.AppendElement(A,'div').className='TB_Separator';};
+var FCKToolbarBreak=function(){};FCKToolbarBreak.prototype.Create=function(A){var B=A.ownerDocument.createElement('div');B.style.clear=B.style.cssFloat=FCKLang.Dir=='rtl'?'right':'left';A.appendChild(B);};
+function FCKToolbarSet_Create(A){var B;var C=A||FCKConfig.ToolbarLocation;switch (C){case 'In':document.getElementById('xToolbarRow').style.display='';B=new FCKToolbarSet(document);break;case 'None':B=new FCKToolbarSet(document);break;default:FCK.Events.AttachEvent('OnBlur',FCK_OnBlur);FCK.Events.AttachEvent('OnFocus',FCK_OnFocus);var D;var E=C.match(/^Out:(.+)\((\w+)\)$/);if (E){if (FCKBrowserInfo.IsAIR) FCKAdobeAIR.ToolbarSet_GetOutElement(window,E);else D=eval('parent.'+E[1]).document.getElementById(E[2]);}else{E=C.match(/^Out:(\w+)$/);if (E) D=parent.document.getElementById(E[1]);};if (!D){alert('Invalid value for "ToolbarLocation"');return arguments.callee('In');};B=D.__FCKToolbarSet;if (B) break;var F=FCKTools.GetElementDocument(D).createElement('iframe');F.src='javascript:void(0)';F.frameBorder=0;F.width='100%';F.height='10';D.appendChild(F);F.unselectable='on';var G=F.contentWindow.document;var H='';if (FCKBrowserInfo.IsSafari) H='<base href="'+window.document.location+'">';G.open();G.write('<html><head>'+H+'<script type="text/javascript"> var adjust = function() { window.frameElement.height = document.body.scrollHeight ; }; window.onresize = window.onload = function(){var timer = null;var lastHeight = -1;var lastChange = 0;var poller = function(){var currentHeight = document.body.scrollHeight || 0;var currentTime = (new Date()).getTime();if (currentHeight != lastHeight){lastChange = currentTime;adjust();lastHeight = document.body.scrollHeight;}if (lastChange < currentTime - 1000) clearInterval(timer);};timer = setInterval(poller, 100);}</script></head><body style="overflow: hidden">'+document.getElementById('xToolbarSpace').innerHTML+'</body></html>');G.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.ToolbarSet_InitOutFrame(G);FCKTools.AddEventListener(G,'contextmenu',FCKTools.CancelEvent);FCKTools.AppendStyleSheet(G,FCKConfig.SkinEditorCSS);B=D.__FCKToolbarSet=new FCKToolbarSet(G);B._IFrame=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(D,FCKToolbarSet_Target_Cleanup);};B.CurrentInstance=FCK;if (!B.ToolbarItems) B.ToolbarItems=FCKToolbarItems;FCK.AttachToOnSelectionChange(B.RefreshItemsState);return B;};function FCK_OnBlur(A){var B=A.ToolbarSet;if (B.CurrentInstance==A) B.Disable();};function FCK_OnFocus(A){var B=A.ToolbarSet;var C=A||FCK;B.CurrentInstance.FocusManager.RemoveWindow(B._IFrame.contentWindow);B.CurrentInstance=C;C.FocusManager.AddWindow(B._IFrame.contentWindow,true);B.Enable();};function FCKToolbarSet_Cleanup(){this._TargetElement=null;this._IFrame=null;};function FCKToolbarSet_Target_Cleanup(){this.__FCKToolbarSet=null;};var FCKToolbarSet=function(A){this._Document=A;this._TargetElement=A.getElementById('xToolbar');var B=A.getElementById('xExpandHandle');var C=A.getElementById('xCollapseHandle');B.title=FCKLang.ToolbarExpand;FCKTools.AddEventListener(B,'click',FCKToolbarSet_Expand_OnClick);C.title=FCKLang.ToolbarCollapse;FCKTools.AddEventListener(C,'click',FCKToolbarSet_Collapse_OnClick);if (!FCKConfig.ToolbarCanCollapse||FCKConfig.ToolbarStartExpanded) this.Expand();else this.Collapse();C.style.display=FCKConfig.ToolbarCanCollapse?'':'none';if (FCKConfig.ToolbarCanCollapse) C.style.display='';else A.getElementById('xTBLeftBorder').style.display='';this.Toolbars=[];this.IsLoaded=false;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarSet_Cleanup);};function FCKToolbarSet_Expand_OnClick(){FCK.ToolbarSet.Expand();};function FCKToolbarSet_Collapse_OnClick(){FCK.ToolbarSet.Collapse();};FCKToolbarSet.prototype.Expand=function(){this._ChangeVisibility(false);};FCKToolbarSet.prototype.Collapse=function(){this._ChangeVisibility(true);};FCKToolbarSet.prototype._ChangeVisibility=function(A){this._Document.getElementById('xCollapsed').style.display=A?'':'none';this._Document.getElementById('xExpanded').style.display=A?'none':'';if (FCKBrowserInfo.IsGecko){FCKTools.RunFunction(window.onresize);}};FCKToolbarSet.prototype.Load=function(A){this.Name=A;this.Items=[];this.ItemsWysiwygOnly=[];this.ItemsContextSensitive=[];this._TargetElement.innerHTML='';var B=FCKConfig.ToolbarSets[A];if (!B){alert(FCKLang.UnknownToolbarSet.replace(/%1/g,A));return;};this.Toolbars=[];for (var x=0;x<B.length;x++){var C=B[x];if (!C) continue;var D;if (typeof(C)=='string'){if (C=='/') D=new FCKToolbarBreak();}else{D=new FCKToolbar();for (var j=0;j<C.length;j++){var E=C[j];if (E=='-') D.AddSeparator();else{var F=FCKToolbarItems.GetItem(E);if (F){D.AddItem(F);this.Items.push(F);if (!F.SourceView) this.ItemsWysiwygOnly.push(F);if (F.ContextSensitive) this.ItemsContextSensitive.push(F);}}}};D.Create(this._TargetElement);this.Toolbars[this.Toolbars.length]=D;};FCKTools.DisableSelection(this._Document.getElementById('xCollapseHandle').parentNode);if (FCK.Status!=2) FCK.Events.AttachEvent('OnStatusChange',this.RefreshModeState);else this.RefreshModeState();this.IsLoaded=true;this.IsEnabled=true;FCKTools.RunFunction(this.OnLoad);};FCKToolbarSet.prototype.Enable=function(){if (this.IsEnabled) return;this.IsEnabled=true;var A=this.Items;for (var i=0;i<A.length;i++) A[i].RefreshState();};FCKToolbarSet.prototype.Disable=function(){if (!this.IsEnabled) return;this.IsEnabled=false;var A=this.Items;for (var i=0;i<A.length;i++) A[i].Disable();};FCKToolbarSet.prototype.RefreshModeState=function(A){if (FCK.Status!=2) return;var B=A?A.ToolbarSet:this;var C=B.ItemsWysiwygOnly;if (FCK.EditMode==0){for (var i=0;i<C.length;i++) C[i].Enable();B.RefreshItemsState(A);}else{B.RefreshItemsState(A);for (var j=0;j<C.length;j++) C[j].Disable();}};FCKToolbarSet.prototype.RefreshItemsState=function(A){var B=(A?A.ToolbarSet:this).ItemsContextSensitive;for (var i=0;i<B.length;i++) B[i].RefreshState();};
+var FCKDialog=(function(){var A;var B;var C;var D=window.parent;while (D.parent&&D.parent!=D){try{if (D.parent.document.domain!=document.domain) break;if (D.parent.document.getElementsByTagName('frameset').length>0) break;}catch (e){break;};D=D.parent;};var E=D.document;var F=function(){if (!B) B=FCKConfig.FloatingPanelsZIndex+999;return++B;};var G=function(){if (!C) return;var H=FCKTools.IsStrictMode(E)?E.documentElement:E.body;FCKDomTools.SetElementStyles(C,{'width':Math.max(H.scrollWidth,H.clientWidth,E.scrollWidth||0)-1+'px','height':Math.max(H.scrollHeight,H.clientHeight,E.scrollHeight||0)-1+'px'});};var I=function(element){element.style.cssText='margin:0;padding:0;border:0;background-color:transparent;background-image:none;';};return {OpenDialog:function(dialogName,dialogTitle,dialogPage,width,height,customValue,parentWindow,resizable){if (!A) this.DisplayMainCover();var J={Title:dialogTitle,Page:dialogPage,Editor:window,CustomValue:customValue,TopWindow:D};FCK.ToolbarSet.CurrentInstance.Selection.Save();var K=FCKTools.GetViewPaneSize(D);var L=FCKTools.GetScrollPosition(D);var M=Math.max(L.Y+(K.Height-height-20)/2,0);var N=Math.max(L.X+(K.Width-width-20)/2,0);var O=E.createElement('iframe');I(O);O.src=FCKConfig.BasePath+'fckdialog.html';O.frameBorder=0;O.allowTransparency=true;FCKDomTools.SetElementStyles(O,{'position':'absolute','top':M+'px','left':N+'px','width':width+'px','height':height+'px','zIndex':F()});O._DialogArguments=J;E.body.appendChild(O);O._ParentDialog=A;A=O;},OnDialogClose:function(dialogWindow){var O=dialogWindow.frameElement;FCKDomTools.RemoveNode(O);if (O._ParentDialog){A=O._ParentDialog;O._ParentDialog.contentWindow.SetEnabled(true);}else{if (!FCKBrowserInfo.IsIE) FCK.Focus();this.HideMainCover();setTimeout(function(){ A=null;},0);FCK.ToolbarSet.CurrentInstance.Selection.Release();}},DisplayMainCover:function(){C=E.createElement('div');I(C);FCKDomTools.SetElementStyles(C,{'position':'absolute','zIndex':F(),'top':'0px','left':'0px','backgroundColor':FCKConfig.BackgroundBlockerColor});FCKDomTools.SetOpacity(C,FCKConfig.BackgroundBlockerOpacity);if (FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsIE7){var Q=E.createElement('iframe');I(Q);Q.hideFocus=true;Q.frameBorder=0;Q.src=FCKTools.GetVoidUrl();FCKDomTools.SetElementStyles(Q,{'width':'100%','height':'100%','position':'absolute','left':'0px','top':'0px','filter':'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'});C.appendChild(Q);};FCKTools.AddEventListener(D,'resize',G);G();E.body.appendChild(C);FCKFocusManager.Lock();},HideMainCover:function(){FCKDomTools.RemoveNode(C);FCKFocusManager.Unlock();},GetCover:function(){return C;}};})();
+var FCKMenuItem=function(A,B,C,D,E,F){this.Name=B;this.Label=C||B;this.IsDisabled=E;this.Icon=new FCKIcon(D);this.SubMenu=new FCKMenuBlockPanel();this.SubMenu.Parent=A;this.SubMenu.OnClick=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnClick,this);this.CustomData=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuItem_Cleanup);};FCKMenuItem.prototype.AddItem=function(A,B,C,D,E){this.HasSubMenu=true;return this.SubMenu.AddItem(A,B,C,D,E);};FCKMenuItem.prototype.AddSeparator=function(){this.SubMenu.AddSeparator();};FCKMenuItem.prototype.Create=function(A){var B=this.HasSubMenu;var C=FCKTools.GetElementDocument(A);var r=this.MainElement=A.insertRow(-1);r.className=this.IsDisabled?'MN_Item_Disabled':'MN_Item';if (!this.IsDisabled){FCKTools.AddEventListenerEx(r,'mouseover',FCKMenuItem_OnMouseOver,[this]);FCKTools.AddEventListenerEx(r,'click',FCKMenuItem_OnClick,[this]);if (!B) FCKTools.AddEventListenerEx(r,'mouseout',FCKMenuItem_OnMouseOut,[this]);};var D=r.insertCell(-1);D.className='MN_Icon';D.appendChild(this.Icon.CreateIconElement(C));D=r.insertCell(-1);D.className='MN_Label';D.noWrap=true;D.appendChild(C.createTextNode(this.Label));D=r.insertCell(-1);if (B){D.className='MN_Arrow';var E=D.appendChild(C.createElement('IMG'));E.src=FCK_IMAGES_PATH+'arrow_'+FCKLang.Dir+'.gif';E.width=4;E.height=7;this.SubMenu.Create();this.SubMenu.Panel.OnHide=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnHide,this);}};FCKMenuItem.prototype.Activate=function(){this.MainElement.className='MN_Item_Over';if (this.HasSubMenu){this.SubMenu.Show(this.MainElement.offsetWidth+2,-2,this.MainElement);};FCKTools.RunFunction(this.OnActivate,this);};FCKMenuItem.prototype.Deactivate=function(){this.MainElement.className='MN_Item';if (this.HasSubMenu) this.SubMenu.Hide();};function FCKMenuItem_SubMenu_OnClick(A,B){FCKTools.RunFunction(B.OnClick,B,[A]);};function FCKMenuItem_SubMenu_OnHide(A){A.Deactivate();};function FCKMenuItem_OnClick(A,B){if (B.HasSubMenu) B.Activate();else{B.Deactivate();FCKTools.RunFunction(B.OnClick,B,[B]);}};function FCKMenuItem_OnMouseOver(A,B){B.Activate();};function FCKMenuItem_OnMouseOut(A,B){B.Deactivate();};function FCKMenuItem_Cleanup(){this.MainElement=null;};
+var FCKMenuBlock=function(){this._Items=[];};FCKMenuBlock.prototype.Count=function(){return this._Items.length;};FCKMenuBlock.prototype.AddItem=function(A,B,C,D,E){var F=new FCKMenuItem(this,A,B,C,D,E);F.OnClick=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnClick,this);F.OnActivate=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnActivate,this);this._Items.push(F);return F;};FCKMenuBlock.prototype.AddSeparator=function(){this._Items.push(new FCKMenuSeparator());};FCKMenuBlock.prototype.RemoveAllItems=function(){this._Items=[];var A=this._ItemsTable;if (A){while (A.rows.length>0) A.deleteRow(0);}};FCKMenuBlock.prototype.Create=function(A){if (!this._ItemsTable){if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuBlock_Cleanup);this._Window=FCKTools.GetElementWindow(A);var B=FCKTools.GetElementDocument(A);var C=A.appendChild(B.createElement('table'));C.cellPadding=0;C.cellSpacing=0;FCKTools.DisableSelection(C);var D=C.insertRow(-1).insertCell(-1);D.className='MN_Menu';var E=this._ItemsTable=D.appendChild(B.createElement('table'));E.cellPadding=0;E.cellSpacing=0;};for (var i=0;i<this._Items.length;i++) this._Items[i].Create(this._ItemsTable);};function FCKMenuBlock_Item_OnClick(A,B){if (B.Hide) B.Hide();FCKTools.RunFunction(B.OnClick,B,[A]);};function FCKMenuBlock_Item_OnActivate(A){var B=A._ActiveItem;if (B&&B!=this){if (!FCKBrowserInfo.IsIE&&B.HasSubMenu&&!this.HasSubMenu){A._Window.focus();A.Panel.HasFocus=true;};B.Deactivate();};A._ActiveItem=this;};function FCKMenuBlock_Cleanup(){this._Window=null;this._ItemsTable=null;};var FCKMenuSeparator=function(){};FCKMenuSeparator.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var r=A.insertRow(-1);var C=r.insertCell(-1);C.className='MN_Separator MN_Icon';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';};
+var FCKMenuBlockPanel=function(){FCKMenuBlock.call(this);};FCKMenuBlockPanel.prototype=new FCKMenuBlock();FCKMenuBlockPanel.prototype.Create=function(){var A=this.Panel=(this.Parent&&this.Parent.Panel?this.Parent.Panel.CreateChildPanel():new FCKPanel());A.AppendStyleSheet(FCKConfig.SkinEditorCSS);FCKMenuBlock.prototype.Create.call(this,A.MainNode);};FCKMenuBlockPanel.prototype.Show=function(x,y,A){if (!this.Panel.CheckIsOpened()) this.Panel.Show(x,y,A);};FCKMenuBlockPanel.prototype.Hide=function(){if (this.Panel.CheckIsOpened()) this.Panel.Hide();};
+var FCKContextMenu=function(A,B){this.CtrlDisable=false;var C=this._Panel=new FCKPanel(A);C.AppendStyleSheet(FCKConfig.SkinEditorCSS);C.IsContextMenu=true;if (FCKBrowserInfo.IsGecko) C.Document.addEventListener('draggesture',function(e) {e.preventDefault();return false;},true);var D=this._MenuBlock=new FCKMenuBlock();D.Panel=C;D.OnClick=FCKTools.CreateEventListener(FCKContextMenu_MenuBlock_OnClick,this);this._Redraw=true;};FCKContextMenu.prototype.SetMouseClickWindow=function(A){if (!FCKBrowserInfo.IsIE){this._Document=A.document;if (FCKBrowserInfo.IsOpera&&!('oncontextmenu' in document.createElement('foo'))){this._Document.addEventListener('mousedown',FCKContextMenu_Document_OnMouseDown,false);this._Document.addEventListener('mouseup',FCKContextMenu_Document_OnMouseUp,false);};this._Document.addEventListener('contextmenu',FCKContextMenu_Document_OnContextMenu,false);}};FCKContextMenu.prototype.AddItem=function(A,B,C,D,E){var F=this._MenuBlock.AddItem(A,B,C,D,E);this._Redraw=true;return F;};FCKContextMenu.prototype.AddSeparator=function(){this._MenuBlock.AddSeparator();this._Redraw=true;};FCKContextMenu.prototype.RemoveAllItems=function(){this._MenuBlock.RemoveAllItems();this._Redraw=true;};FCKContextMenu.prototype.AttachToElement=function(A){if (FCKBrowserInfo.IsIE) FCKTools.AddEventListenerEx(A,'contextmenu',FCKContextMenu_AttachedElement_OnContextMenu,this);else A._FCKContextMenu=this;};function FCKContextMenu_Document_OnContextMenu(e){var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;FCKTools.CancelEvent(e);FCKContextMenu_AttachedElement_OnContextMenu(e,A._FCKContextMenu,A);return false;};A=A.parentNode;};return true;};var FCKContextMenu_OverrideButton;function FCKContextMenu_Document_OnMouseDown(e){if(!e||e.button!=2) return false;var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;var B=FCKContextMenu_OverrideButton;if(!B){var C=FCKTools.GetElementDocument(e.target);B=FCKContextMenu_OverrideButton=C.createElement('input');B.type='button';var D=C.createElement('p');C.body.appendChild(D);D.appendChild(B);};B.style.cssText='position:absolute;top:'+(e.clientY-2)+'px;left:'+(e.clientX-2)+'px;width:5px;height:5px;opacity:0.01';};A=A.parentNode;};return false;};function FCKContextMenu_Document_OnMouseUp(e){var A=FCKContextMenu_OverrideButton;if (A){var B=A.parentNode;B.parentNode.removeChild(B);FCKContextMenu_OverrideButton=undefined;if(e&&e.button==2){FCKContextMenu_Document_OnContextMenu(e);return false;}};return true;};function FCKContextMenu_AttachedElement_OnContextMenu(A,B,C){if (B.CtrlDisable&&(A.ctrlKey||A.metaKey)) return true;var D=C||this;if (B.OnBeforeOpen) B.OnBeforeOpen.call(B,D);if (B._MenuBlock.Count()==0) return false;if (B._Redraw){B._MenuBlock.Create(B._Panel.MainNode);B._Redraw=false;};FCKTools.DisableSelection(B._Panel.Document.body);var x=0;var y=0;if (FCKBrowserInfo.IsIE){x=A.screenX;y=A.screenY;}else if (FCKBrowserInfo.IsSafari){x=A.clientX;y=A.clientY;}else{x=A.pageX;y=A.pageY;};B._Panel.Show(x,y,A.currentTarget||null);return false;};function FCKContextMenu_MenuBlock_OnClick(A,B){B._Panel.Hide();FCKTools.RunFunction(B.OnItemClick,B,A);};
+FCK.ContextMenu={};FCK.ContextMenu.Listeners=[];FCK.ContextMenu.RegisterListener=function(A){if (A) this.Listeners.push(A);};function FCK_ContextMenu_Init(){var A=FCK.ContextMenu._InnerContextMenu=new FCKContextMenu(FCKBrowserInfo.IsIE?window:window.parent,FCKLang.Dir);A.CtrlDisable=FCKConfig.BrowserContextMenuOnCtrl;A.OnBeforeOpen=FCK_ContextMenu_OnBeforeOpen;A.OnItemClick=FCK_ContextMenu_OnItemClick;var B=FCK.ContextMenu;for (var i=0;i<FCKConfig.ContextMenu.length;i++) B.RegisterListener(FCK_ContextMenu_GetListener(FCKConfig.ContextMenu[i]));};function FCK_ContextMenu_GetListener(A){switch (A){case 'Generic':return {AddItems:function(menu,tag,tagName){menu.AddItem('Cut',FCKLang.Cut,7,FCKCommands.GetCommand('Cut').GetState()==-1);menu.AddItem('Copy',FCKLang.Copy,8,FCKCommands.GetCommand('Copy').GetState()==-1);menu.AddItem('Paste',FCKLang.Paste,9,FCKCommands.GetCommand('Paste').GetState()==-1);}};case 'Table':return {AddItems:function(menu,tag,tagName){var B=(tagName=='TABLE');var C=(!B&&FCKSelection.HasAncestorNode('TABLE'));if (C){menu.AddSeparator();var D=menu.AddItem('Cell',FCKLang.CellCM);D.AddItem('TableInsertCellBefore',FCKLang.InsertCellBefore,69);D.AddItem('TableInsertCellAfter',FCKLang.InsertCellAfter,58);D.AddItem('TableDeleteCells',FCKLang.DeleteCells,59);if (FCKBrowserInfo.IsGecko) D.AddItem('TableMergeCells',FCKLang.MergeCells,60,FCKCommands.GetCommand('TableMergeCells').GetState()==-1);else{D.AddItem('TableMergeRight',FCKLang.MergeRight,60,FCKCommands.GetCommand('TableMergeRight').GetState()==-1);D.AddItem('TableMergeDown',FCKLang.MergeDown,60,FCKCommands.GetCommand('TableMergeDown').GetState()==-1);};D.AddItem('TableHorizontalSplitCell',FCKLang.HorizontalSplitCell,61,FCKCommands.GetCommand('TableHorizontalSplitCell').GetState()==-1);D.AddItem('TableVerticalSplitCell',FCKLang.VerticalSplitCell,61,FCKCommands.GetCommand('TableVerticalSplitCell').GetState()==-1);D.AddSeparator();D.AddItem('TableCellProp',FCKLang.CellProperties,57,FCKCommands.GetCommand('TableCellProp').GetState()==-1);menu.AddSeparator();D=menu.AddItem('Row',FCKLang.RowCM);D.AddItem('TableInsertRowBefore',FCKLang.InsertRowBefore,70);D.AddItem('TableInsertRowAfter',FCKLang.InsertRowAfter,62);D.AddItem('TableDeleteRows',FCKLang.DeleteRows,63);menu.AddSeparator();D=menu.AddItem('Column',FCKLang.ColumnCM);D.AddItem('TableInsertColumnBefore',FCKLang.InsertColumnBefore,71);D.AddItem('TableInsertColumnAfter',FCKLang.InsertColumnAfter,64);D.AddItem('TableDeleteColumns',FCKLang.DeleteColumns,65);};if (B||C){menu.AddSeparator();menu.AddItem('TableDelete',FCKLang.TableDelete);menu.AddItem('TableProp',FCKLang.TableProperties,39);}}};case 'Link':return {AddItems:function(menu,tag,tagName){var E=(tagName=='A'||FCKSelection.HasAncestorNode('A'));if (E||FCK.GetNamedCommandState('Unlink')!=-1){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0&&F.href.length==0);if (G) return;menu.AddSeparator();if (E) menu.AddItem('Link',FCKLang.EditLink,34);menu.AddItem('Unlink',FCKLang.RemoveLink,35);}}};case 'Image':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&!tag.getAttribute('_fckfakelement')){menu.AddSeparator();menu.AddItem('Image',FCKLang.ImageProperties,37);}}};case 'Anchor':return {AddItems:function(menu,tag,tagName){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0);if (G||(tagName=='IMG'&&tag.getAttribute('_fckanchor'))){menu.AddSeparator();menu.AddItem('Anchor',FCKLang.AnchorProp,36);menu.AddItem('AnchorDelete',FCKLang.AnchorDelete);}}};case 'Flash':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckflash')){menu.AddSeparator();menu.AddItem('Flash',FCKLang.FlashProperties,38);}}};case 'Form':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('FORM')){menu.AddSeparator();menu.AddItem('Form',FCKLang.FormProp,48);}}};case 'Checkbox':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='checkbox'){menu.AddSeparator();menu.AddItem('Checkbox',FCKLang.CheckboxProp,49);}}};case 'Radio':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='radio'){menu.AddSeparator();menu.AddItem('Radio',FCKLang.RadioButtonProp,50);}}};case 'TextField':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='text'||tag.type=='password')){menu.AddSeparator();menu.AddItem('TextField',FCKLang.TextFieldProp,51);}}};case 'HiddenField':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckinputhidden')){menu.AddSeparator();menu.AddItem('HiddenField',FCKLang.HiddenFieldProp,56);}}};case 'ImageButton':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='image'){menu.AddSeparator();menu.AddItem('ImageButton',FCKLang.ImageButtonProp,55);}}};case 'Button':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='button'||tag.type=='submit'||tag.type=='reset')){menu.AddSeparator();menu.AddItem('Button',FCKLang.ButtonProp,54);}}};case 'Select':return {AddItems:function(menu,tag,tagName){if (tagName=='SELECT'){menu.AddSeparator();menu.AddItem('Select',FCKLang.SelectionFieldProp,53);}}};case 'Textarea':return {AddItems:function(menu,tag,tagName){if (tagName=='TEXTAREA'){menu.AddSeparator();menu.AddItem('Textarea',FCKLang.TextareaProp,52);}}};case 'BulletedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('UL')){menu.AddSeparator();menu.AddItem('BulletedList',FCKLang.BulletedListProp,27);}}};case 'NumberedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('OL')){menu.AddSeparator();menu.AddItem('NumberedList',FCKLang.NumberedListProp,26);}}};};return null;};function FCK_ContextMenu_OnBeforeOpen(){FCK.Events.FireEvent('OnSelectionChange');var A,sTagName;if ((A=FCKSelection.GetSelectedElement())) sTagName=A.tagName;var B=FCK.ContextMenu._InnerContextMenu;B.RemoveAllItems();var C=FCK.ContextMenu.Listeners;for (var i=0;i<C.length;i++) C[i].AddItems(B,A,sTagName);};function FCK_ContextMenu_OnItemClick(A){FCK.Focus();FCKCommands.GetCommand(A.Name).Execute(A.CustomData);};
+var FCKHtmlIterator=function(A){this._sourceHtml=A;};FCKHtmlIterator.prototype={Next:function(){var A=this._sourceHtml;if (A==null) return null;var B=FCKRegexLib.HtmlTag.exec(A);var C=false;var D="";if (B){if (B.index>0){D=A.substr(0,B.index);this._sourceHtml=A.substr(B.index);}else{C=true;D=B[0];this._sourceHtml=A.substr(B[0].length);}}else{D=A;this._sourceHtml=null;};return { 'isTag':C,'value':D };},Each:function(A){var B;while ((B=this.Next())) A(B.isTag,B.value);}};var FCKHtmlIterator=function(A){this._sourceHtml=A;};FCKHtmlIterator.prototype={Next:function(){var A=this._sourceHtml;if (A==null) return null;var B=FCKRegexLib.HtmlTag.exec(A);var C=false;var D="";if (B){if (B.index>0){D=A.substr(0,B.index);this._sourceHtml=A.substr(B.index);}else{C=true;D=B[0];this._sourceHtml=A.substr(B[0].length);}}else{D=A;this._sourceHtml=null;};return { 'isTag':C,'value':D };},Each:function(A){var B;while ((B=this.Next())) A(B.isTag,B.value);}};
+var FCKPlugin=function(A,B,C){this.Name=A;this.BasePath=C?C:FCKConfig.PluginsPath;this.Path=this.BasePath+A+'/';if (!B||B.length==0) this.AvailableLangs=[];else this.AvailableLangs=B.split(',');};FCKPlugin.prototype.Load=function(){if (this.AvailableLangs.length>0){var A;if (this.AvailableLangs.IndexOf(FCKLanguageManager.ActiveLanguage.Code)>=0) A=FCKLanguageManager.ActiveLanguage.Code;else A=this.AvailableLangs[0];LoadScript(this.Path+'lang/'+A+'.js');};LoadScript(this.Path+'fckplugin.js');};
+var FCKPlugins=FCK.Plugins={};FCKPlugins.ItemsCount=0;FCKPlugins.Items={};FCKPlugins.Load=function(){var A=FCKPlugins.Items;for (var i=0;i<FCKConfig.Plugins.Items.length;i++){var B=FCKConfig.Plugins.Items[i];var C=A[B[0]]=new FCKPlugin(B[0],B[1],B[2]);FCKPlugins.ItemsCount++;};for (var s in A) A[s].Load();FCKPlugins.Load=null;};
Index: /FCKeditor/releases/stable/editor/js/fckeditorcode_ie.js
===================================================================
--- /FCKeditor/releases/stable/editor/js/fckeditorcode_ie.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/js/fckeditorcode_ie.js	(revision 1902)
@@ -1,22 +1,22 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- * 
+ * 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 file has been compressed for better performance. The original source
  * can be found at "editor/_source".
@@ -26,84 +26,84 @@
 String.prototype.Contains=function(A){return (this.indexOf(A)>-1);};String.prototype.Equals=function(){var A=arguments;if (A.length==1&&A[0].pop) A=A[0];for (var i=0;i<A.length;i++){if (this==A[i]) return true;};return false;};String.prototype.IEquals=function(){var A=this.toUpperCase();var B=arguments;if (B.length==1&&B[0].pop) B=B[0];for (var i=0;i<B.length;i++){if (A==B[i].toUpperCase()) return true;};return false;};String.prototype.ReplaceAll=function(A,B){var C=this;for (var i=0;i<A.length;i++){C=C.replace(A[i],B[i]);};return C;};String.prototype.StartsWith=function(A){return (this.substr(0,A.length)==A);};String.prototype.EndsWith=function(A,B){var C=this.length;var D=A.length;if (D>C) return false;if (B){var E=new RegExp(A+'$','i');return E.test(this);}else return (D==0||this.substr(C-D,D)==A);};String.prototype.Remove=function(A,B){var s='';if (A>0) s=this.substring(0,A);if (A+B<this.length) s+=this.substring(A+B,this.length);return s;};String.prototype.Trim=function(){return this.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g,'');};String.prototype.LTrim=function(){return this.replace(/^[ \t\n\r]*/g,'');};String.prototype.RTrim=function(){return this.replace(/[ \t\n\r]*$/g,'');};String.prototype.ReplaceNewLineChars=function(A){return this.replace(/\n/g,A);};String.prototype.Replace=function(A,B,C){if (typeof B=='function'){return this.replace(A,function(){return B.apply(C||this,arguments);});}else return this.replace(A,B);};Array.prototype.AddItem=function(A){var i=this.length;this[i]=A;return i;};Array.prototype.IndexOf=function(A){for (var i=0;i<this.length;i++){if (this[i]==A) return i;};return-1;};
 var	FCKIECleanup=function(A){if (A._FCKCleanupObj) this.Items=A._FCKCleanupObj.Items;else{this.Items=[];A._FCKCleanupObj=this;FCKTools.AddEventListenerEx(A,'unload',FCKIECleanup_Cleanup);}};FCKIECleanup.prototype.AddItem=function(A,B){this.Items.push([A,B]);};function FCKIECleanup_Cleanup(){if (!this._FCKCleanupObj||!window.FCKUnloadFlag) return;var A=this._FCKCleanupObj.Items;while (A.length>0){var B=A.pop();if (B) B[1].call(B[0]);};this._FCKCleanupObj=null;if (CollectGarbage) CollectGarbage();};
-var s=navigator.userAgent.toLowerCase();var FCKBrowserInfo={IsIE:/*@cc_on!@*/false,IsIE7:/*@cc_on!@*/false && ( parseFloat( s.match( /msie ([\d|\.]+)/)[1])>=7),IsGecko:s.Contains('gecko/'),IsSafari:s.Contains(' applewebkit/'),IsOpera:!!window.opera,IsMac:s.Contains('macintosh')};(function(A){A.IsGeckoLike=(A.IsGecko||A.IsSafari||A.IsOpera);if (A.IsGecko){var B=s.match(/gecko\/(\d+)/)[1];A.IsGecko10=((B<20051111)||(/rv:1\.7/.test(s)));A.IsGecko19=/rv:1\.9/.test(s);}else A.IsGecko10=false;})(FCKBrowserInfo);
+var s=navigator.userAgent.toLowerCase();var FCKBrowserInfo={IsIE:/*@cc_on!@*/false,IsIE7:/*@cc_on!@*/false && ( parseInt( s.match( /msie (\d+)/)[1],10)>=7),IsIE6:/*@cc_on!@*/false && ( parseInt( s.match( /msie (\d+)/)[1],10)>=6),IsGecko:s.Contains('gecko/'),IsSafari:s.Contains(' applewebkit/'),IsOpera:!!window.opera,IsAIR:s.Contains(' adobeair/'),IsMac:s.Contains('macintosh')};(function(A){A.IsGeckoLike=(A.IsGecko||A.IsSafari||A.IsOpera);if (A.IsGecko){var B=s.match(/gecko\/(\d+)/)[1];A.IsGecko10=((B<20051111)||(/rv:1\.7/.test(s)));A.IsGecko19=/rv:1\.9/.test(s);}else A.IsGecko10=false;})(FCKBrowserInfo);
 var FCKURLParams={};(function(){var A=document.location.search.substr(1).split('&');for (var i=0;i<A.length;i++){var B=A[i].split('=');var C=decodeURIComponent(B[0]);var D=decodeURIComponent(B[1]);FCKURLParams[C]=D;}})();
 var FCKEvents=function(A){this.Owner=A;this._RegisteredEvents={};};FCKEvents.prototype.AttachEvent=function(A,B){var C;if (!(C=this._RegisteredEvents[A])) this._RegisteredEvents[A]=[B];else{if (C.IndexOf(B)==-1) C.push(B);}};FCKEvents.prototype.FireEvent=function(A,B){var C=true;var D=this._RegisteredEvents[A];if (D){for (var i=0;i<D.length;i++){try{C=(D[i](this.Owner,B)&&C);}catch(e){if (e.number!=-2146823277) throw e;}}};return C;};
 var FCKDataProcessor=function(){};FCKDataProcessor.prototype={ConvertToHtml:function(A){if (FCKConfig.FullPage){FCK.DocTypeDeclaration=A.match(FCKRegexLib.DocTypeTag);if (!FCKRegexLib.HasBodyTag.test(A)) A='<body>'+A+'</body>';if (!FCKRegexLib.HtmlOpener.test(A)) A='<html dir="'+FCKConfig.ContentLangDirection+'">'+A+'</html>';if (!FCKRegexLib.HeadOpener.test(A)) A=A.replace(FCKRegexLib.HtmlOpener,'$&<head><title></title></head>');return A;}else{var B=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"';if (FCKBrowserInfo.IsIE&&FCKConfig.DocType.length>0&&!FCKRegexLib.Html4DocType.test(FCKConfig.DocType)) B+=' style="overflow-y: scroll"';B+='><head><title></title></head><body'+FCKConfig.GetBodyAttributes()+'>'+A+'</body></html>';return B;}},ConvertToDataFormat:function(A,B,C,D){var E=FCKXHtml.GetXHTML(A,!B,D);if (C&&FCKRegexLib.EmptyOutParagraph.test(E)) return '';return E;},FixHtml:function(A){return A;}};
-var FCK={Name:FCKURLParams['InstanceName'],Status:0,EditMode:0,Toolbar:null,HasFocus:false,DataProcessor:new FCKDataProcessor(),AttachToOnSelectionChange:function(A){this.Events.AttachEvent('OnSelectionChange',A);},GetLinkedFieldValue:function(){return this.LinkedField.value;},GetParentForm:function(){return this.LinkedField.form;},StartupValue:'',IsDirty:function(){if (this.EditMode==1) return (this.StartupValue!=this.EditingArea.Textarea.value);else{if (!this.EditorDocument) return false;return (this.StartupValue!=this.EditorDocument.body.innerHTML);}},ResetIsDirty:function(){if (this.EditMode==1) this.StartupValue=this.EditingArea.Textarea.value;else if (this.EditorDocument.body) this.StartupValue=this.EditorDocument.body.innerHTML;},StartEditor:function(){this.TempBaseTag=FCKConfig.BaseHref.length>0?'<base href="'+FCKConfig.BaseHref+'" _fcktemp="true"></base>':'';var A=FCK.KeystrokeHandler=new FCKKeystrokeHandler();A.OnKeystroke=_FCK_KeystrokeHandler_OnKeystroke;A.SetKeystrokes(FCKConfig.Keystrokes);if (FCKBrowserInfo.IsIE7){if ((CTRL+86/*V*/) in A.Keystrokes) A.SetKeystrokes([CTRL+86,true]);if ((SHIFT+45/*INS*/) in A.Keystrokes) A.SetKeystrokes([SHIFT+45,true]);};A.SetKeystrokes([CTRL+8,true]);this.EditingArea=new FCKEditingArea(document.getElementById('xEditingArea'));this.EditingArea.FFSpellChecker=FCKConfig.FirefoxSpellChecker;this.SetData(this.GetLinkedFieldValue(),true);FCKTools.AddEventListener(document,"keydown",this._TabKeyHandler);this.AttachToOnSelectionChange(_FCK_PaddingNodeListener);if (FCKBrowserInfo.IsGecko) this.AttachToOnSelectionChange(this._ExecCheckEmptyBlock);},Focus:function(){FCK.EditingArea.Focus();},SetStatus:function(A){this.Status=A;if (A==1){FCKFocusManager.AddWindow(window,true);if (FCKBrowserInfo.IsIE) FCKFocusManager.AddWindow(window.frameElement,true);if (FCKConfig.StartupFocus) FCK.Focus();};this.Events.FireEvent('OnStatusChange',A);},FixBody:function(){var A=FCKConfig.EnterMode;if (A!='p'&&A!='div') return;var B=this.EditorDocument;if (!B) return;var C=B.body;if (!C) return;FCKDomTools.TrimNode(C);var D=C.firstChild;var E;while (D){var F=false;switch (D.nodeType){case 1:if (!FCKListsLib.BlockElements[D.nodeName.toLowerCase()]&&!D.getAttribute('_fckfakelement')&&D.getAttribute('_moz_dirty')==null) F=true;break;case 3:if (E||D.nodeValue.Trim().length>0) F=true;};if (F){var G=D.parentNode;if (!E) E=G.insertBefore(B.createElement(A),D);E.appendChild(G.removeChild(D));D=E.nextSibling;}else{if (E){FCKDomTools.TrimNode(E);E=null;};D=D.nextSibling;}};if (E) FCKDomTools.TrimNode(E);},GetData:function(A){if (FCK.EditMode==1) return FCK.EditingArea.Textarea.value;this.FixBody();var B=FCK.EditorDocument;if (!B) return null;var C=FCKConfig.FullPage;var D=FCK.DataProcessor.ConvertToDataFormat(C?B.documentElement:B.body,!C,FCKConfig.IgnoreEmptyParagraphValue,A);D=FCK.ProtectEventsRestore(D);if (FCKBrowserInfo.IsIE) D=D.replace(FCKRegexLib.ToReplace,'$1');if (C){if (FCK.DocTypeDeclaration&&FCK.DocTypeDeclaration.length>0) D=FCK.DocTypeDeclaration+'\n'+D;if (FCK.XmlDeclaration&&FCK.XmlDeclaration.length>0) D=FCK.XmlDeclaration+'\n'+D;};return FCKConfig.ProtectedSource.Revert(D);},UpdateLinkedField:function(){var A=FCK.GetXHTML(FCKConfig.FormatOutput);if (FCKConfig.HtmlEncodeOutput) A=FCKTools.HTMLEncode(A);FCK.LinkedField.value=A;FCK.Events.FireEvent('OnAfterLinkedFieldUpdate');},RegisteredDoubleClickHandlers:{},OnDoubleClick:function(A){var B=FCK.RegisteredDoubleClickHandlers[A.tagName];if (B) B(A);},RegisterDoubleClickHandler:function(A,B){FCK.RegisteredDoubleClickHandlers[B.toUpperCase()]=A;},OnAfterSetHTML:function(){FCKDocumentProcessor.Process(FCK.EditorDocument);FCKUndo.SaveUndoStep();FCK.Events.FireEvent('OnSelectionChange');FCK.Events.FireEvent('OnAfterSetHTML');},ProtectUrls:function(A){A=A.replace(FCKRegexLib.ProtectUrlsA,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsImg,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsArea,'$& _fcksavedurl=$1');return A;},ProtectEvents:function(A){return A.replace(FCKRegexLib.TagsWithEvent,_FCK_ProtectEvents_ReplaceTags);},ProtectEventsRestore:function(A){return A.replace(FCKRegexLib.ProtectedEvents,_FCK_ProtectEvents_RestoreEvents);},ProtectTags:function(A){var B=FCKConfig.ProtectedTags;if (FCKBrowserInfo.IsIE) B+=B.length>0?'|ABBR|XML|EMBED':'ABBR|XML|EMBED';var C;if (B.length>0){C=new RegExp('<('+B+')(?!\w|:)','gi');A=A.replace(C,'<FCK:$1');C=new RegExp('<\/('+B+')>','gi');A=A.replace(C,'<\/FCK:$1>');};B='META';if (FCKBrowserInfo.IsIE) B+='|HR';C=new RegExp('<(('+B+')(?=\\s|>|/)[\\s\\S]*?)/?>','gi');A=A.replace(C,'<FCK:$1 />');return A;},SetData:function(A,B){this.EditingArea.Mode=FCK.EditMode;if (FCKBrowserInfo.IsIE&&FCK.EditorDocument){FCK.EditorDocument.detachEvent("onselectionchange",Doc_OnSelectionChange);};if (FCK.EditMode==0){this._ForceResetIsDirty=(B===true);A=FCKConfig.ProtectedSource.Protect(A);A=FCK.DataProcessor.ConvertToHtml(A);A=A.replace(FCKRegexLib.InvalidSelfCloseTags,'$1></$2>');A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);if (FCK.TempBaseTag.length>0&&!FCKRegexLib.HasBaseTag.test(A)) A=A.replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);var C='';if (!FCKConfig.FullPage) C+=_FCK_GetEditorAreaStyleTags();if (FCKBrowserInfo.IsIE) C+=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) C+='<link href="'+FCKConfig.FullBasePath+'css/fck_showtableborders_gecko.css" rel="stylesheet" type="text/css" _fcktemp="true" />';C+='<link href="'+FCKConfig.FullBasePath+'css/fck_internal.css" rel="stylesheet" type="text/css" _fcktemp="true" />';A=A.replace(FCKRegexLib.HeadCloser,C+'$&');this.EditingArea.OnLoad=_FCK_EditingArea_OnLoad;this.EditingArea.Start(A);}else{FCK.EditorWindow=null;FCK.EditorDocument=null;FCKDomTools.PaddingNode=null;this.EditingArea.OnLoad=null;this.EditingArea.Start(A);this.EditingArea.Textarea._FCKShowContextMenu=true;FCK.EnterKeyHandler=null;if (B) this.ResetIsDirty();FCK.KeystrokeHandler.AttachToElement(this.EditingArea.Textarea);this.EditingArea.Textarea.focus();FCK.Events.FireEvent('OnAfterSetHTML');};if (FCKBrowserInfo.IsGecko) window.onresize();},HasFocus:false,RedirectNamedCommands:{},ExecuteNamedCommand:function(A,B,C,D){if (!D) FCKUndo.SaveUndoStep();if (!C&&FCK.RedirectNamedCommands[A]!=null) FCK.ExecuteRedirectedNamedCommand(A,B);else{FCK.Focus();FCK.EditorDocument.execCommand(A,false,B);FCK.Events.FireEvent('OnSelectionChange');};if (!D) FCKUndo.SaveUndoStep();},GetNamedCommandState:function(A){try{if (FCKBrowserInfo.IsSafari&&FCK.EditorWindow&&A.IEquals('Paste')) return 0;if (!FCK.EditorDocument.queryCommandEnabled(A)) return -1;else{return FCK.EditorDocument.queryCommandState(A)?1:0;}}catch (e){return 0;}},GetNamedCommandValue:function(A){var B='';var C=FCK.GetNamedCommandState(A);if (C==-1) return null;try{B=this.EditorDocument.queryCommandValue(A);}catch(e) {};return B?B:'';},Paste:function(A){if (FCK.Status!=2||!FCK.Events.FireEvent('OnPaste')) return false;return A||FCK._ExecPaste();},PasteFromWord:function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');},Preview:function(){var A=FCKConfig.ScreenWidth*0.8;var B=FCKConfig.ScreenHeight*0.7;var C=(FCKConfig.ScreenWidth-A)/2;var D=window.open('',null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+A+',height='+B+',left='+C);var E;if (FCKConfig.FullPage){if (FCK.TempBaseTag.length>0) E=FCK.TempBaseTag+FCK.GetXHTML();else E=FCK.GetXHTML();}else{E=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"><head>'+FCK.TempBaseTag+'<title>'+FCKLang.Preview+'</title>'+_FCK_GetEditorAreaStyleTags()+'</head><body'+FCKConfig.GetBodyAttributes()+'>'+FCK.GetXHTML()+'</body></html>';};D.document.write(E);D.document.close();},SwitchEditMode:function(A){var B=(FCK.EditMode==0);var C=FCK.IsDirty();var D;if (B){FCKCommands.GetCommand('ShowBlocks').SaveState();if (!A&&FCKBrowserInfo.IsIE) FCKUndo.SaveUndoStep();D=FCK.GetXHTML(FCKConfig.FormatSource);if (D==null) return false;}else D=this.EditingArea.Textarea.value;FCK.EditMode=B?1:0;FCK.SetData(D,!C);FCK.Focus();FCKTools.RunFunction(FCK.ToolbarSet.RefreshModeState,FCK.ToolbarSet);return true;},InsertElement:function(A){if (typeof A=='string') A=this.EditorDocument.createElement(A);var B=A.nodeName.toLowerCase();var C=new FCKDomRange(this.EditorWindow);if (FCKListsLib.BlockElements[B]!=null){C.SplitBlock();C.InsertNode(A);var D=FCKDomTools.GetNextSourceElement(A,false,null,['hr','br','param','img','area','input']);if (!D&&FCKConfig.EnterMode!='br'){D=this.EditorDocument.body.appendChild(this.EditorDocument.createElement(FCKConfig.EnterMode));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(D);};if (FCKListsLib.EmptyElements[B]==null) C.MoveToElementEditStart(A);else if (D) C.MoveToElementEditStart(D);else C.MoveToPosition(A,4);if (FCKBrowserInfo.IsGecko){if (D) D.scrollIntoView(false);A.scrollIntoView(false);}}else{C.MoveToSelection();C.DeleteContents();C.InsertNode(A);C.SetStart(A,4);C.SetEnd(A,4);};C.Select();C.Release();this.Focus();return A;},_InsertBlockElement:function(A){},_IsFunctionKey:function(A){if (A>=16&&A<=20) return true;if (A==27||(A>=33&&A<=40)) return true;if (A==45) return true;return false;},_KeyDownListener:function(A){if (!A) A=FCK.EditorWindow.event;if (FCK.EditorWindow){if (!FCK._IsFunctionKey(A.keyCode)&&!(A.ctrlKey||A.metaKey)&&!(A.keyCode==46)) FCK._KeyDownUndo();};return true;},_KeyDownUndo:function(){if (!FCKUndo.Typing){FCKUndo.SaveUndoStep();FCKUndo.Typing=true;FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.TypesCount++;FCKUndo.Changed=1;if (FCKUndo.TypesCount>FCKUndo.MaxTypes){FCKUndo.TypesCount=0;FCKUndo.SaveUndoStep();}},_TabKeyHandler:function(A){if (!A) A=window.event;var B=A.keyCode;if (B==9&&FCK.EditMode!=0){if (FCKBrowserInfo.IsIE){var C=document.selection.createRange();if (C.parentElement()!=FCK.EditingArea.Textarea) return true;C.text='\t';C.select();}else{var a=[];var D=FCK.EditingArea.Textarea;var E=D.selectionStart;var F=D.selectionEnd;a.push(D.value.substr(0,E));a.push('\t');a.push(D.value.substr(F));D.value=a.join('');D.setSelectionRange(E+1,E+1);};if (A.preventDefault) return A.preventDefault();return A.returnValue=false;};return true;}};FCK.Events=new FCKEvents(FCK);FCK.GetHTML=FCK.GetXHTML=FCK.GetData;FCK.SetHTML=FCK.SetData;FCK.InsertElementAndGetIt=FCK.CreateElement=FCK.InsertElement;function _FCK_ProtectEvents_ReplaceTags(A){return A.replace(FCKRegexLib.EventAttributes,_FCK_ProtectEvents_ReplaceEvents);};function _FCK_ProtectEvents_ReplaceEvents(A,B){return ' '+B+'_fckprotectedatt="'+encodeURIComponent(A)+'"';};function _FCK_ProtectEvents_RestoreEvents(A,B){return decodeURIComponent(B);};function _FCK_MouseEventsListener(A){if (!A) A=window.event;if (A.type=='mousedown') FCK.MouseDownFlag=true;else if (A.type=='mouseup') FCK.MouseDownFlag=false;else if (A.type=='mousemove') FCK.Events.FireEvent('OnMouseMove',A);};function _FCK_PaddingNodeListener(){if (FCKConfig.EnterMode.IEquals('br')) return;FCKDomTools.EnforcePaddingNode(FCK.EditorDocument,FCKConfig.EnterMode);if (!FCKBrowserInfo.IsIE&&FCKDomTools.PaddingNode){var A=FCK.EditorWindow.getSelection();if (A&&A.rangeCount==1){var B=A.getRangeAt(0);if (B.collapsed&&B.startContainer==FCK.EditorDocument.body&&B.startOffset==0){B.selectNodeContents(FCKDomTools.PaddingNode);B.collapse(true);A.removeAllRanges();A.addRange(B);}}}else if (FCKDomTools.PaddingNode){var C=FCKSelection.GetParentElement();var D=FCKDomTools.PaddingNode;if (C&&C.nodeName.IEquals('body')){if (FCK.EditorDocument.body.childNodes.length==1&&FCK.EditorDocument.body.firstChild==D){var B=FCK.EditorDocument.body.createTextRange();var F=false;if (!D.childNodes.firstChild){D.appendChild(D.ownerDocument.createTextNode('\ufeff'));F=true;};B.moveToElementText(D);B.select();if (F) B.pasteHTML('');}}}};function _FCK_EditingArea_OnLoad(){FCK.EditorWindow=FCK.EditingArea.Window;FCK.EditorDocument=FCK.EditingArea.Document;FCK.InitializeBehaviors();FCK.MouseDownFlag=false;FCKTools.AddEventListener(FCK.EditorDocument,'mousemove',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mousedown',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mouseup',_FCK_MouseEventsListener);if (FCKBrowserInfo.IsSafari){var A=function(evt){if (!(evt.ctrlKey||evt.metaKey)) return;if (FCK.EditMode!=0) return;switch (evt.keyCode){case 89:FCKUndo.Redo();break;case 90:FCKUndo.Undo();break;}};FCKTools.AddEventListener(FCK.EditorDocument,'keyup',A);};FCK.EnterKeyHandler=new FCKEnterKey(FCK.EditorWindow,FCKConfig.EnterMode,FCKConfig.ShiftEnterMode,FCKConfig.TabSpaces);FCK.KeystrokeHandler.AttachToElement(FCK.EditorDocument);if (FCK._ForceResetIsDirty) FCK.ResetIsDirty();if (FCKBrowserInfo.IsIE&&FCK.HasFocus) FCK.EditorDocument.body.setActive();FCK.OnAfterSetHTML();FCKCommands.GetCommand('ShowBlocks').RestoreState();if (FCK.Status!=0) return;if (FCKConfig.Debug) FCKDebug._GetWindow();FCK.SetStatus(1);};function _FCK_GetEditorAreaStyleTags(){var A='';var B=FCKConfig.EditorAreaCSS;var C=FCKConfig.EditorAreaStyles;for (var i=0;i<B.length;i++) A+='<link href="'+B[i]+'" rel="stylesheet" type="text/css" />';if (C&&C.length>0) A+="<style>"+C+"</style>";return A;};function _FCK_KeystrokeHandler_OnKeystroke(A,B){if (FCK.Status!=2) return false;if (FCK.EditMode==0){switch (B){case 'Paste':return!FCK.Paste();case 'Cut':FCKUndo.SaveUndoStep();return false;}}else{if (B.Equals('Paste','Undo','Redo','SelectAll','Cut')) return false;};var C=FCK.Commands.GetCommand(B);return (C.Execute.apply(C,FCKTools.ArgumentsToArray(arguments,2))!==false);};(function(){var A=window.parent.document;var B=A.getElementById(FCK.Name);var i=0;while (B||i==0){if (B&&B.tagName.toLowerCase().Equals('input','textarea')){FCK.LinkedField=B;break;};B=A.getElementsByName(FCK.Name)[i++];}})();var FCKTempBin={Elements:[],AddElement:function(A){var B=this.Elements.length;this.Elements[B]=A;return B;},RemoveElement:function(A){var e=this.Elements[A];this.Elements[A]=null;return e;},Reset:function(){var i=0;while (i<this.Elements.length) this.Elements[i++]=null;this.Elements.length=0;}};var FCKFocusManager=FCK.FocusManager={IsLocked:false,AddWindow:function(A,B){var C;if (FCKBrowserInfo.IsIE) C=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else if (FCKBrowserInfo.IsSafari) C=A;else C=A.document;FCKTools.AddEventListener(C,'blur',FCKFocusManager_Win_OnBlur);FCKTools.AddEventListener(C,'focus',B?FCKFocusManager_Win_OnFocus_Area:FCKFocusManager_Win_OnFocus);},RemoveWindow:function(A){if (FCKBrowserInfo.IsIE) oTarget=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else oTarget=A.document;FCKTools.RemoveEventListener(oTarget,'blur',FCKFocusManager_Win_OnBlur);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus_Area);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus);},Lock:function(){this.IsLocked=true;},Unlock:function(){if (this._HasPendingBlur) FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);this.IsLocked=false;},_ResetTimer:function(){this._HasPendingBlur=false;if (this._Timer){window.clearTimeout(this._Timer);delete this._Timer;}}};function FCKFocusManager_Win_OnBlur(){if (typeof(FCK)!='undefined'&&FCK.HasFocus){FCKFocusManager._ResetTimer();FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);}};function FCKFocusManager_FireOnBlur(){if (FCKFocusManager.IsLocked) FCKFocusManager._HasPendingBlur=true;else{FCK.HasFocus=false;FCK.Events.FireEvent("OnBlur");}};function FCKFocusManager_Win_OnFocus_Area(){FCK.Focus();FCKFocusManager_Win_OnFocus();};function FCKFocusManager_Win_OnFocus(){FCKFocusManager._ResetTimer();if (!FCK.HasFocus&&!FCKFocusManager.IsLocked){FCK.HasFocus=true;FCK.Events.FireEvent("OnFocus");}};
-FCK.Description="FCKeditor for Internet Explorer 5.5+";FCK._GetBehaviorsStyle=function(){if (!FCK._BehaviorsStyle){var A=FCKConfig.FullBasePath;var B='';var C;C='<style type="text/css" _fcktemp="true">';if (FCKConfig.ShowBorders) B='url('+A+'css/behaviors/showtableborders.htc)';C+='INPUT,TEXTAREA,SELECT,.FCK__Anchor,.FCK__PageBreak,.FCK__InputHidden';if (FCKConfig.DisableObjectResizing){C+=',IMG';B+=' url('+A+'css/behaviors/disablehandles.htc)';};C+=' { behavior: url('+A+'css/behaviors/disablehandles.htc) ; }';if (B.length>0) C+='TABLE { behavior: '+B+' ; }';C+='</style>';FCK._BehaviorsStyle=C;};return FCK._BehaviorsStyle;};function Doc_OnMouseUp(){if (FCK.EditorWindow.event.srcElement.tagName=='HTML'){FCK.Focus();FCK.EditorWindow.event.cancelBubble=true;FCK.EditorWindow.event.returnValue=false;}};function Doc_OnPaste(){var A=FCK.EditorDocument.body;A.detachEvent('onpaste',Doc_OnPaste);var B=FCK.Paste(!FCKConfig.ForcePasteAsPlainText&&!FCKConfig.AutoDetectPasteFromWord);A.attachEvent('onpaste',Doc_OnPaste);return B;};function Doc_OnDblClick(){FCK.OnDoubleClick(FCK.EditorWindow.event.srcElement);FCK.EditorWindow.event.cancelBubble=true;};function Doc_OnSelectionChange(){if (FCK.EditorDocument) FCK.Events.FireEvent("OnSelectionChange");};function Doc_OnDrop(){if (FCK.MouseDownFlag){FCK.MouseDownFlag=false;return;};var A=FCK.EditorWindow.event;if (FCKConfig.ForcePasteAsPlainText){if (FCK._CheckIsPastingEnabled()||FCKConfig.ShowDropDialog) FCK.PasteAsPlainText(A.dataTransfer.getData('Text'));}else{if (FCKConfig.ShowDropDialog) FCKTools.RunFunction(FCKDialog.OpenDialog,FCKDialog,['FCKDialog_Paste',FCKLang.Paste,'dialog/fck_paste.html',400,330,'Security']);};A.returnValue=false;A.cancelBubble=true;};FCK.InitializeBehaviors=function(A){this.EditorDocument.attachEvent('onmouseup',Doc_OnMouseUp);this.EditorDocument.body.attachEvent('onpaste',Doc_OnPaste);this.EditorDocument.body.attachEvent('ondrop',Doc_OnDrop);FCK.ContextMenu._InnerContextMenu.AttachToElement(FCK.EditorDocument.body);this.EditorDocument.attachEvent("onkeydown",FCK._KeyDownListener);this.EditorDocument.attachEvent("ondblclick",Doc_OnDblClick);this.EditorDocument.attachEvent("onselectionchange",Doc_OnSelectionChange);};FCK.InsertHtml=function(A){A=FCKConfig.ProtectedSource.Protect(A);A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);FCK.EditorWindow.focus();FCKUndo.SaveUndoStep();var B=FCK.EditorDocument.selection;if (B.type.toLowerCase()=='control') B.clear();A='<span id="__fakeFCKRemove__">&nbsp;</span>'+A;B.createRange().pasteHTML(A);FCK.EditorDocument.getElementById('__fakeFCKRemove__').removeNode(true);FCKDocumentProcessor.Process(FCK.EditorDocument);this.Events.FireEvent("OnSelectionChange");};FCK.SetInnerHtml=function(A){var B=FCK.EditorDocument;B.body.innerHTML='<div id="__fakeFCKRemove__">&nbsp;</div>'+A;B.getElementById('__fakeFCKRemove__').removeNode(true);};function FCK_PreloadImages(){var A=new FCKImagePreloader();A.AddImages(FCKConfig.PreloadImages);A.AddImages(FCKConfig.SkinPath+'fck_strip.gif');A.OnComplete=LoadToolbarSetup;A.Start();};function Document_OnContextMenu(){return (event.srcElement._FCKShowContextMenu==true);};document.oncontextmenu=Document_OnContextMenu;function FCK_Cleanup(){this.LinkedField=null;this.EditorWindow=null;this.EditorDocument=null;};FCK._ExecPaste=function(){if (FCK._PasteIsRunning) return true;if (FCKConfig.ForcePasteAsPlainText){FCK.PasteAsPlainText();return false;};var A=FCK._CheckIsPastingEnabled(true);if (A===false) FCKTools.RunFunction(FCKDialog.OpenDialog,FCKDialog,['FCKDialog_Paste',FCKLang.Paste,'dialog/fck_paste.html',400,330,'Security']);else{if (FCKConfig.AutoDetectPasteFromWord&&A.length>0){var B=/<\w[^>]*(( class="?MsoNormal"?)|(="mso-))/gi;if (B.test(A)){if (confirm(FCKLang.PasteWordConfirm)){FCK.PasteFromWord();return false;}}};FCK._PasteIsRunning=true;FCK.ExecuteNamedCommand('Paste');delete FCK._PasteIsRunning;};return false;};FCK.PasteAsPlainText=function(A){if (!FCK._CheckIsPastingEnabled()){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteAsText,'dialog/fck_paste.html',400,330,'PlainText');return;};var B=null;if (!A) B=clipboardData.getData("Text");else B=A;if (B&&B.length>0){B=FCKTools.HTMLEncode(B);B=FCKTools.ProcessLineBreaks(window,FCKConfig,B);var C=B.search('</p>');var D=B.search('<p>');if ((C!=-1&&D!=-1&&C<D)||(C!=-1&&D==-1)){var E=B.substr(0,C);B=B.substr(C+4);this.InsertHtml(E);};FCKUndo.SaveLocked=true;this.InsertHtml(B);FCKUndo.SaveLocked=false;}};FCK._CheckIsPastingEnabled=function(A){FCK._PasteIsEnabled=false;document.body.attachEvent('onpaste',FCK_CheckPasting_Listener);var B=FCK.GetClipboardHTML();document.body.detachEvent('onpaste',FCK_CheckPasting_Listener);if (FCK._PasteIsEnabled){if (!A) B=true;}else B=false;delete FCK._PasteIsEnabled;return B;};function FCK_CheckPasting_Listener(){FCK._PasteIsEnabled=true;};FCK.GetClipboardHTML=function(){var A=document.getElementById('___FCKHiddenDiv');if (!A){A=document.createElement('DIV');A.id='___FCKHiddenDiv';var B=A.style;B.position='absolute';B.visibility=B.overflow='hidden';B.width=B.height=1;document.body.appendChild(A);};A.innerHTML='';var C=document.body.createTextRange();C.moveToElementText(A);C.execCommand('Paste');var D=A.innerHTML;A.innerHTML='';return D;};FCK.CreateLink=function(A,B){var C=[];FCK.ExecuteNamedCommand('Unlink',null,false,!!B);if (A.length>0){if (FCKSelection.GetType()=='Control'){var D=this.EditorDocument.createElement('A');D.href=A;var E=FCKSelection.GetSelectedElement();E.parentNode.insertBefore(D,E);E.parentNode.removeChild(E);D.appendChild(E);return [D];};var F='javascript:void(0);/*'+(new Date().getTime())+'*/';FCK.ExecuteNamedCommand('CreateLink',F,false,!!B);var G=this.EditorDocument.links;for (i=0;i<G.length;i++){var D=G[i];if (D.getAttribute('href',2)==F){var I=D.innerHTML;D.href=A;D.innerHTML=I;var J=D.lastChild;if (J&&J.nodeName=='BR'){FCKDomTools.InsertAfterNode(D,D.removeChild(J));};C.push(D);}}};return C;};
-var FCKConfig=FCK.Config={};if (document.location.protocol=='file:'){FCKConfig.BasePath=decodeURIComponent(document.location.pathname.substr(1));FCKConfig.BasePath=FCKConfig.BasePath.replace(/\\/gi, '/');var sFullProtocol=document.location.href.match(/^(file\:\/{2,3})/)[1];if (FCKBrowserInfo.IsOpera) sFullProtocol+='localhost/';FCKConfig.BasePath=sFullProtocol+FCKConfig.BasePath.substring(0,FCKConfig.BasePath.lastIndexOf('/')+1);FCKConfig.FullBasePath=FCKConfig.BasePath;}else{FCKConfig.BasePath=document.location.pathname.substring(0,document.location.pathname.lastIndexOf('/')+1);FCKConfig.FullBasePath=document.location.protocol+'//'+document.location.host+FCKConfig.BasePath;};FCKConfig.EditorPath=FCKConfig.BasePath.replace(/editor\/$/,'');try{FCKConfig.ScreenWidth=screen.width;FCKConfig.ScreenHeight=screen.height;}catch (e){FCKConfig.ScreenWidth=800;FCKConfig.ScreenHeight=600;};FCKConfig.ProcessHiddenField=function(){this.PageConfig={};var A=window.parent.document.getElementById(FCK.Name+'___Config');if (!A) return;var B=A.value.split('&');for (var i=0;i<B.length;i++){if (B[i].length==0) continue;var C=B[i].split('=');var D=decodeURIComponent(C[0]);var E=decodeURIComponent(C[1]);if (D=='CustomConfigurationsPath') FCKConfig[D]=E;else if (E.toLowerCase()=="true") this.PageConfig[D]=true;else if (E.toLowerCase()=="false") this.PageConfig[D]=false;else if (E.length>0&&!isNaN(E)) this.PageConfig[D]=parseInt(E,10);else this.PageConfig[D]=E;}};function FCKConfig_LoadPageConfig(){var A=FCKConfig.PageConfig;for (var B in A) FCKConfig[B]=A[B];};function FCKConfig_PreProcess(){var A=FCKConfig;if (A.AllowQueryStringDebug){try{if ((/fckdebug=true/i).test(window.top.location.search)) A.Debug=true;}catch (e) {/*Ignore it. Much probably we are inside a FRAME where the "top" is in another domain (security error).*/}};if (!A.PluginsPath.EndsWith('/')) A.PluginsPath+='/';if (typeof(A.EditorAreaCSS)=='string') A.EditorAreaCSS=A.EditorAreaCSS.split(',');var B=A.ToolbarComboPreviewCSS;if (!B||B.length==0) A.ToolbarComboPreviewCSS=A.EditorAreaCSS;else if (typeof(B)=='string') A.ToolbarComboPreviewCSS=[B];};FCKConfig.ToolbarSets={};FCKConfig.Plugins={};FCKConfig.Plugins.Items=[];FCKConfig.Plugins.Add=function(A,B,C){FCKConfig.Plugins.Items.AddItem([A,B,C]);};FCKConfig.ProtectedSource={};FCKConfig.ProtectedSource._CodeTag=(new Date()).valueOf();FCKConfig.ProtectedSource.RegexEntries=[/<!--[\s\S]*?-->/g,/<script[\s\S]*?<\/script>/gi,/<noscript[\s\S]*?<\/noscript>/gi,/<object[\s\S]+?<\/object>/gi];FCKConfig.ProtectedSource.Add=function(A){this.RegexEntries.AddItem(A);};FCKConfig.ProtectedSource.Protect=function(A){var B=this._CodeTag;function _Replace(protectedSource){var C=FCKTempBin.AddElement(protectedSource);return '<!--{'+B+C+'}-->';};for (var i=0;i<this.RegexEntries.length;i++){A=A.replace(this.RegexEntries[i],_Replace);};return A;};FCKConfig.ProtectedSource.Revert=function(A,B){function _Replace(m,opener,index){var C=B?FCKTempBin.RemoveElement(index):FCKTempBin.Elements[index];return FCKConfig.ProtectedSource.Revert(C,B);};var D=new RegExp("(<|&lt;)!--\\{"+this._CodeTag+"(\\d+)\\}--(>|&gt;)","g");return A.replace(D,_Replace);};FCKConfig.GetBodyAttributes=function(){var A='';if (this.BodyId&&this.BodyId.length>0) A+=' id="'+this.BodyId+'"';if (this.BodyClass&&this.BodyClass.length>0) A+=' class="'+this.BodyClass+'"';return A;};FCKConfig.ApplyBodyAttributes=function(A){if (this.BodyId&&this.BodyId.length>0) A.id=FCKConfig.BodyId;if (this.BodyClass&&this.BodyClass.length>0) A.className+=' '+FCKConfig.BodyClass;};
-var FCKDebug={};FCKDebug._GetWindow=function(){if (!this.DebugWindow||this.DebugWindow.closed) this.DebugWindow=window.open(FCKConfig.BasePath+'fckdebug.html','FCKeditorDebug','menubar=no,scrollbars=yes,resizable=yes,location=no,toolbar=no,width=600,height=500',true);return this.DebugWindow;};FCKDebug.Output=function(A,B,C){if (!FCKConfig.Debug) return;try{this._GetWindow().Output(A,B);}catch (e) {}};FCKDebug.OutputObject=function(A,B){if (!FCKConfig.Debug) return;try{this._GetWindow().OutputObject(A,B);}catch (e) {}}
-var FCKDomTools={MoveChildren:function(A,B,C){if (A==B) return;var D;if (C){while ((D=A.lastChild)) B.insertBefore(A.removeChild(D),B.firstChild);}else{while ((D=A.firstChild)) B.appendChild(A.removeChild(D));}},MoveNode:function(A,B,C){if (C) B.insertBefore(FCKDomTools.RemoveNode(A),B.firstChild);else B.appendChild(FCKDomTools.RemoveNode(A));},TrimNode:function(A){this.LTrimNode(A);this.RTrimNode(A);},LTrimNode:function(A){var B;while ((B=A.firstChild)){if (B.nodeType==3){var C=B.nodeValue.LTrim();var D=B.nodeValue.length;if (C.length==0){A.removeChild(B);continue;}else if (C.length<D){B.splitText(D-C.length);A.removeChild(A.firstChild);}};break;}},RTrimNode:function(A){var B;while ((B=A.lastChild)){if (B.nodeType==3){var C=B.nodeValue.RTrim();var D=B.nodeValue.length;if (C.length==0){B.parentNode.removeChild(B);continue;}else if (C.length<D){B.splitText(C.length);A.lastChild.parentNode.removeChild(A.lastChild);}};break;};if (!FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsOpera){B=A.lastChild;if (B&&B.nodeType==1&&B.nodeName.toLowerCase()=='br'){B.parentNode.removeChild(B);}}},RemoveNode:function(A,B){if (B){var C;while ((C=A.firstChild)) A.parentNode.insertBefore(A.removeChild(C),A);};return A.parentNode.removeChild(A);},GetFirstChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.firstChild;while(C){if (C.nodeType==1&&C.tagName.Equals.apply(C.tagName,B)) return C;C=C.nextSibling;};return null;},GetLastChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.lastChild;while(C){if (C.nodeType==1&&(!B||C.tagName.Equals(B))) return C;C=C.previousSibling;};return null;},GetPreviousSourceElement:function(A,B,C,D){if (!A) return null;if (C&&A.nodeType==1&&A.nodeName.IEquals(C)) return null;if (A.previousSibling) A=A.previousSibling;else return this.GetPreviousSourceElement(A.parentNode,B,C,D);while (A){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (!D||!A.nodeName.IEquals(D)) return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;if (A.lastChild) A=A.lastChild;else return this.GetPreviousSourceElement(A,B,C,D);};return null;},GetNextSourceElement:function(A,B,C,D,E){while((A=this.GetNextSourceNode(A,E))){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (D&&A.nodeName.IEquals(D)) return this.GetNextSourceElement(A,B,C,D);return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;};return null;},GetNextSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.firstChild) E=A.firstChild;else{if (D&&A==D) return null;E=A.nextSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetNextSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetNextSourceNode(E,false,C,D);return E;},GetPreviousSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.lastChild) E=A.lastChild;else{if (D&&A==D) return null;E=A.previousSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetPreviousSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetPreviousSourceNode(E,false,C,D);return E;},InsertAfterNode:function(A,B){return A.parentNode.insertBefore(B,A.nextSibling);},GetParents:function(A){var B=[];while (A){B.unshift(A);A=A.parentNode;};return B;},GetCommonParents:function(A,B){var C=this.GetParents(A);var D=this.GetParents(B);var E=[];for (var i=0;i<C.length;i++){if (C[i]==D[i]) E.push(C[i]);};return E;},GetCommonParentNode:function(A,B,C){var D={};if (!C.pop) C=[C];while (C.length>0) D[C.pop().toLowerCase()]=1;var E=this.GetCommonParents(A,B);var F=null;while ((F=E.pop())){if (D[F.nodeName.toLowerCase()]) return F;};return null;},GetIndexOf:function(A){var B=A.parentNode?A.parentNode.firstChild:null;var C=-1;while (B){C++;if (B==A) return C;B=B.nextSibling;};return-1;},PaddingNode:null,EnforcePaddingNode:function(A,B){try{if (!A||!A.body) return;}catch (e){return;};this.CheckAndRemovePaddingNode(A,B,true);try{if (A.body.lastChild&&(A.body.lastChild.nodeType!=1||A.body.lastChild.tagName.toLowerCase()==B.toLowerCase())) return;}catch (e){return;};var C=A.createElement(B);if (FCKBrowserInfo.IsGecko&&FCKListsLib.NonEmptyBlockElements[B]) FCKTools.AppendBogusBr(C);this.PaddingNode=C;if (A.body.childNodes.length==1&&A.body.firstChild.nodeType==1&&A.body.firstChild.tagName.toLowerCase()=='br'&&(A.body.firstChild.getAttribute('_moz_dirty')!=null||A.body.firstChild.getAttribute('type')=='_moz')) A.body.replaceChild(C,A.body.firstChild);else A.body.appendChild(C);},CheckAndRemovePaddingNode:function(A,B,C){var D=this.PaddingNode;if (!D) return;try{if (D.parentNode!=A.body||D.tagName.toLowerCase()!=B||(D.childNodes.length>1)||(D.firstChild&&D.firstChild.nodeValue!='\xa0'&&String(D.firstChild.tagName).toLowerCase()!='br')){this.PaddingNode=null;return;}}catch (e){this.PaddingNode=null;return;};if (!C){if (D.parentNode.childNodes.length>1) D.parentNode.removeChild(D);this.PaddingNode=null;}},HasAttribute:function(A,B){if (A.hasAttribute) return A.hasAttribute(B);else{var C=A.attributes[B];return (C!=undefined&&C.specified);}},HasAttributes:function(A){var B=A.attributes;for (var i=0;i<B.length;i++){if (FCKBrowserInfo.IsIE&&B[i].nodeName=='class'){if (A.className.length>0) return true;}else if (B[i].specified) return true;};return false;},RemoveAttribute:function(A,B){if (FCKBrowserInfo.IsIE&&B.toLowerCase()=='class') B='className';return A.removeAttribute(B,0);},GetAttributeValue:function(A,B){var C=B;if (typeof B=='string') B=A.attributes[B];else C=B.nodeName;if (B&&B.specified){if (C=='style') return A.style.cssText;else if (C=='class'||C.indexOf('on')==0) return B.nodeValue;else{return A.getAttribute(C,2);}};return null;},Contains:function(A,B){if (A.contains&&B.nodeType==1) return A.contains(B);while ((B=B.parentNode)){if (B==A) return true;};return false;},BreakParent:function(A,B,C){var D=C||new FCKDomRange(FCKTools.GetElementWindow(A));D.SetStart(A,4);D.SetEnd(B,4);var E=D.ExtractContents();D.InsertNode(A.parentNode.removeChild(A));E.InsertAfterNode(A);D.Release(!!C);},GetNodeAddress:function(A,B){var C=[];while (A&&A!=A.ownerDocument.documentElement){var D=A.parentNode;var E=-1;for(var i=0;i<D.childNodes.length;i++){var F=D.childNodes[i];if (B===true&&F.nodeType==3&&F.previousSibling&&F.previousSibling.nodeType==3) continue;E++;if (D.childNodes[i]==A) break;};C.unshift(E);A=A.parentNode;};return C;},GetNodeFromAddress:function(A,B,C){var D=A.documentElement;for (var i=0;i<B.length;i++){var E=B[i];if (!C){D=D.childNodes[E];continue;};var F=-1;for (var j=0;j<D.childNodes.length;j++){var G=D.childNodes[j];if (C===true&&G.nodeType==3&&G.previousSibling&&G.previousSibling.nodeType==3) continue;F++;if (F==E){D=G;break;}}};return D;},CloneElement:function(A){A=A.cloneNode(false);A.removeAttribute('id',false);return A;},ClearElementJSProperty:function(A,B){if (FCKBrowserInfo.IsIE) A.removeAttribute(B);else delete A[B];},SetElementMarker:function (A,B,C,D){var E=String(parseInt(Math.random()*0xfffffff,10));B._FCKMarkerId=E;B[C]=D;if (!A[E]) A[E]={ 'element':B,'markers':{} };A[E]['markers'][C]=D;},ClearElementMarkers:function(A,B,C){var D=B._FCKMarkerId;if (!D) return;this.ClearElementJSProperty(B,'_FCKMarkerId');for (var j in A[D]['markers']) this.ClearElementJSProperty(B,j);if (C) delete A[D];},ClearAllMarkers:function(A){for (var i in A) this.ClearElementMarkers(A,A[i]['element'],true);},ListToArray:function(A,B,C,D,E){if (!A.nodeName.IEquals(['ul','ol'])) return [];if (!D) D=0;if (!C) C=[];for (var i=0;i<A.childNodes.length;i++){var F=A.childNodes[i];if (!F.nodeName.IEquals('li')) continue;var G={ 'parent':A,'indent':D,'contents':[] };if (!E){G.grandparent=A.parentNode;if (G.grandparent&&G.grandparent.nodeName.IEquals('li')) G.grandparent=G.grandparent.parentNode;}else G.grandparent=E;if (B) this.SetElementMarker(B,F,'_FCK_ListArray_Index',C.length);C.push(G);for (var j=0;j<F.childNodes.length;j++){var H=F.childNodes[j];if (H.nodeName.IEquals(['ul','ol'])) this.ListToArray(H,B,C,D+1,G.grandparent);else G.contents.push(H);}};return C;},ArrayToList:function(A,B,C){if (C==undefined) C=0;if (!A||A.length<C+1) return null;var D=A[C].parent.ownerDocument;var E=D.createDocumentFragment();var F=null;var G=C;var H=Math.max(A[C].indent,0);var I=null;while (true){var J=A[G];if (J.indent==H){if (!F||A[G].parent.nodeName!=F.nodeName){F=A[G].parent.cloneNode(false);E.appendChild(F);};I=D.createElement('li');F.appendChild(I);for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));G++;}else if (J.indent==Math.max(H,0)+1){var K=this.ArrayToList(A,null,G);I.appendChild(K.listNode);G=K.nextIndex;}else if (J.indent==-1&&C==0&&J.grandparent){var I;if (J.grandparent.nodeName.IEquals(['ul','ol'])) I=D.createElement('li');else{if (FCKConfig.EnterMode.IEquals(['div','p'])&&!J.grandparent.nodeName.IEquals('td')) I=D.createElement(FCKConfig.EnterMode);else I=D.createDocumentFragment();};for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));if (I.nodeType==11){if (I.lastChild&&I.lastChild.getAttribute&&I.lastChild.getAttribute('type')=='_moz') I.removeChild(I.lastChild);I.appendChild(D.createElement('br'));};if (I.nodeName.IEquals(FCKConfig.EnterMode)&&I.firstChild){this.TrimNode(I);if (FCKListsLib.BlockBoundaries[I.firstChild.nodeName.toLowerCase()]){var M=D.createDocumentFragment();while (I.firstChild) M.appendChild(I.removeChild(I.firstChild));I=M;}};if (FCKBrowserInfo.IsGeckoLike&&I.nodeName.IEquals(['div','p'])) FCKTools.AppendBogusBr(I);E.appendChild(I);F=null;G++;}else return null;if (A.length<=G||Math.max(A[G].indent,0)<H){break;}};if (B){var N=E.firstChild;while (N){if (N.nodeType==1) this.ClearElementMarkers(B,N);N=this.GetNextSourceNode(N);}};return { 'listNode':E,'nextIndex':G };},GetNextSibling:function(A,B){A=A.nextSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.nextSibling;return A;},GetPreviousSibling:function(A,B){A=A.previousSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.previousSibling;return A;},CheckIsEmptyElement:function(A,B){var C=A.firstChild;var D;while (C){if (C.nodeType==1){if (D||!FCKListsLib.InlineNonEmptyElements[C.nodeName.toLowerCase()]) return false;if (!B||B(C)===true) D=C;}else if (C.nodeType==3&&C.nodeValue.length>0) return false;C=C.nextSibling;};return D?this.CheckIsEmptyElement(D,B):true;},SetElementStyles:function(A,B){var C=A.style;for (var D in B) C[D]=B[D];},GetCurrentElementStyle:function(w,A,B){if (FCKBrowserInfo.IsIE) return A.currentStyle[B];else return w.getComputedStyle(A,'')[B];},GetPositionedAncestor:function(w,A){var B=A;while (B!=B.ownerDocument.documentElement){if (this.GetCurrentElementStyle(w,B,'position')!='static') return B;B=B.parentNode;};return null;},ScrollIntoView:function(A,B){var C=FCKTools.GetElementWindow(A);var D=FCKTools.GetViewPaneSize(C).Height;var E=D*-1;if (B===false){E+=A.offsetHeight;E+=parseInt(this.GetCurrentElementStyle(C,A,'marginBottom')||0,10);};E+=A.offsetTop;while ((A=A.offsetParent)) E+=A.offsetTop||0;var F=FCKTools.GetScrollPosition(C).Y;if (E>0&&E>F) C.scrollTo(0,E);}};
-var FCKTools={};FCKTools.CreateBogusBR=function(A){var B=A.createElement('br');B.setAttribute('type','_moz');return B;};FCKTools.AppendStyleSheet=function(A,B){if (typeof(B)=='string') return this._AppendStyleSheet(A,B);else{var C=[];for (var i=0;i<B.length;i++) C.push(this._AppendStyleSheet(A,B[i]));return C;}};FCKTools.AppendStyleString=function (A,B){this._AppendStyleString(A,B);};FCKTools.GetElementDocument=function (A){return A.ownerDocument||A.document;};FCKTools.GetElementWindow=function(A){return this.GetDocumentWindow(this.GetElementDocument(A));};FCKTools.GetDocumentWindow=function(A){if (FCKBrowserInfo.IsSafari&&!A.parentWindow) this.FixDocumentParentWindow(window.top);return A.parentWindow||A.defaultView;};FCKTools.FixDocumentParentWindow=function(A){if (A.document) A.document.parentWindow=A;for (var i=0;i<A.frames.length;i++) FCKTools.FixDocumentParentWindow(A.frames[i]);};FCKTools.HTMLEncode=function(A){if (!A) return '';A=A.replace(/&/g,'&amp;');A=A.replace(/</g,'&lt;');A=A.replace(/>/g,'&gt;');return A;};FCKTools.HTMLDecode=function(A){if (!A) return '';A=A.replace(/&gt;/g,'>');A=A.replace(/&lt;/g,'<');A=A.replace(/&amp;/g,'&');return A;};FCKTools._ProcessLineBreaksForPMode=function(A,B,C,D,E){var F=0;var G="<p>";var H="</p>";var I="<br />";if (C){G="<li>";H="</li>";F=1;};while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='p'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};var n=B.charAt(i+1);if (n=='\r'){i++;n=B.charAt(i+1);};if (n=='\n'){i++;if (F) E.push(H);E.push(G);F=1;}else E.push(I);}};FCKTools._ProcessLineBreaksForDivMode=function(A,B,C,D,E){var F=0;var G="<div>";var H="</div>";if (C){G="<li>";H="</li>";F=1;};while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='div'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F){if (E[E.length-1]==G){E.push("&nbsp;");};E.push(H);};E.push(G);F=1;};if (F) E.push(H);};FCKTools._ProcessLineBreaksForBrMode=function(A,B,C,D,E){var F=0;var G="<br />";var H="";if (C){G="<li>";H="</li>";F=1;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F&&H.length) E.push (H);E.push(G);F=1;}};FCKTools.ProcessLineBreaks=function(A,B,C){var D=B.EnterMode.toLowerCase();var E=[];var F=0;var G=new A.FCKDomRange(A.FCK.EditorWindow);G.MoveToSelection();var H=G._Range.startContainer;while (H&&H.nodeType!=1) H=H.parentNode;if (H&&H.tagName.toLowerCase()=='li') F=1;if (D=='p') this._ProcessLineBreaksForPMode(A,C,F,H,E);else if (D=='div') this._ProcessLineBreaksForDivMode(A,C,F,H,E);else if (D=='br') this._ProcessLineBreaksForBrMode(A,C,F,H,E);return E.join("");};FCKTools.AddSelectOption=function(A,B,C){var D=FCKTools.GetElementDocument(A).createElement("OPTION");D.text=B;D.value=C;A.options.add(D);return D;};FCKTools.RunFunction=function(A,B,C,D){if (A) this.SetTimeout(A,0,B,C,D);};FCKTools.SetTimeout=function(A,B,C,D,E){return (E||window).setTimeout(function(){if (D) A.apply(C,[].concat(D));else A.apply(C);},B);};FCKTools.SetInterval=function(A,B,C,D,E){return (E||window).setInterval(function(){A.apply(C,D||[]);},B);};FCKTools.ConvertStyleSizeToHtml=function(A){return A.EndsWith('%')?A:parseInt(A,10);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.EndsWith('%')?A:(A+'px');};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.CreateEventListener=function(A,B){var f=function(){var C=[];for (var i=0;i<arguments.length;i++) C.push(arguments[i]);A.apply(this,C.concat(B));};return f;};FCKTools.IsStrictMode=function(A){return ('CSS1Compat'==(A.compatMode||'CSS1Compat'));};FCKTools.ArgumentsToArray=function(A,B,C){B=B||0;C=C||A.length;var D=[];for (var i=B;i<B+C&&i<A.length;i++) D.push(A[i]);return D;};FCKTools.CloneObject=function(A){var B=function() {};B.prototype=A;return new B;};FCKTools.AppendBogusBr=function(A){if (!A) return;var B=this.GetLastItem(A.getElementsByTagName('br'));if (!B||(B.getAttribute('type',2)!='_moz'&&B.getAttribute('_moz_dirty')==null)){var C=this.GetElementDocument(A);if (FCKBrowserInfo.IsOpera) A.appendChild(C.createTextNode(''));else A.appendChild(this.CreateBogusBR(C));}};FCKTools.GetLastItem=function(A){if (A.length>0) return A[A.length-1];return null;};FCKTools.GetDocumentPosition=function(w,A){var x=0;var y=0;var B=A;var C=null;var D=FCKTools.GetElementWindow(B);while (B&&!(D==w&&(B==w.document.body||B==w.document.documentElement))){x+=B.offsetLeft-B.scrollLeft;y+=B.offsetTop-B.scrollTop;if (!FCKBrowserInfo.IsOpera){var E=C;while (E&&E!=B){x-=E.scrollLeft;y-=E.scrollTop;E=E.parentNode;}};C=B;if (B.offsetParent) B=B.offsetParent;else{if (D!=w){B=D.frameElement;C=null;if (B) D=FCKTools.GetElementWindow(B);}else B=null;}};if (FCKDomTools.GetCurrentElementStyle(w,w.document.body,'position')!='static'||(FCKBrowserInfo.IsIE&&FCKDomTools.GetPositionedAncestor(w,A)==null)){x+=w.document.body.offsetLeft;y+=w.document.body.offsetTop;};return { "x":x,"y":y };};FCKTools.GetWindowPosition=function(w,A){var B=this.GetDocumentPosition(w,A);var C=FCKTools.GetScrollPosition(w);B.x-=C.X;B.y-=C.Y;return B;};FCKTools.ProtectFormStyles=function(A){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return [];var B=[];var C=['style','className'];for (var i=0;i<C.length;i++){var D=C[i];if (A.elements.namedItem(D)){var E=A.elements.namedItem(D);B.push([E,E.nextSibling]);A.removeChild(E);}};return B;};FCKTools.RestoreFormStyles=function(A,B){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return;if (B.length>0){for (var i=B.length-1;i>=0;i--){var C=B[i][0];var D=B[i][1];if (D) A.insertBefore(C,D);else A.appendChild(C);}}};FCKTools.GetNextNode=function(A,B){if (A.firstChild) return A.firstChild;else if (A.nextSibling) return A.nextSibling;else{var C=A.parentNode;while (C){if (C==B) return null;if (C.nextSibling) return C.nextSibling;else C=C.parentNode;}};return null;};FCKTools.GetNextTextNode=function(A,B,C){node=this.GetNextNode(A,B);if (C&&node&&C(node)) return null;while (node&&node.nodeType!=3){node=this.GetNextNode(node,B);if (C&&node&&C(node)) return null;};return node;};FCKTools.Merge=function(){var A=arguments;var o=A[0];for (var i=1;i<A.length;i++){var B=A[i];for (var p in B) o[p]=B[p];};return o;};FCKTools.IsArray=function(A){return (A instanceof Array);};FCKTools.AppendLengthProperty=function(A,B){var C=0;for (var n in A) C++;return A[B||'length']=C;};FCKTools.NormalizeCssText=function(A){var B=document.createElement('span');B.style.cssText=A;return B.style.cssText;};FCKTools.Hitch=function(A,B){return function() { A[B].apply(A,arguments);};};
-FCKTools.CancelEvent=function(e){return false;};FCKTools._AppendStyleSheet=function(A,B){return A.createStyleSheet(B).owningElement;};FCKTools._AppendStyleString=function(A,B){var s=A.createStyleSheet("");s.cssText=B;return s;};FCKTools.ClearElementAttributes=function(A){A.clearAttributes();};FCKTools.GetAllChildrenIds=function(A){var B=[];for (var i=0;i<A.all.length;i++){var C=A.all[i].id;if (C&&C.length>0) B[B.length]=C;};return B;};FCKTools.RemoveOuterTags=function(e){e.insertAdjacentHTML('beforeBegin',e.innerHTML);e.parentNode.removeChild(e);};FCKTools.CreateXmlObject=function(A){var B;switch (A){case 'XmlHttp':B=['MSXML2.XmlHttp','Microsoft.XmlHttp'];break;case 'DOMDocument':B=['MSXML2.DOMDocument','Microsoft.XmlDom'];break;};for (var i=0;i<2;i++){try { return new ActiveXObject(B[i]);}catch (e){}};if (FCKLang.NoActiveX){alert(FCKLang.NoActiveX);FCKLang.NoActiveX=null;};return null;};FCKTools.DisableSelection=function(A){A.unselectable='on';var e,i=0;while ((e=A.all[i++])){switch (e.tagName){case 'IFRAME':case 'TEXTAREA':case 'INPUT':case 'SELECT':break;default:e.unselectable='on';}}};FCKTools.GetScrollPosition=function(A){var B=A.document;var C={ X:B.documentElement.scrollLeft,Y:B.documentElement.scrollTop };if (C.X>0||C.Y>0) return C;return { X:B.body.scrollLeft,Y:B.body.scrollTop };};FCKTools.AddEventListener=function(A,B,C){A.attachEvent('on'+B,C);};FCKTools.RemoveEventListener=function(A,B,C){A.detachEvent('on'+B,C);};FCKTools.AddEventListenerEx=function(A,B,C,D){var o={};o.Source=A;o.Params=D||[];o.Listener=function(ev){return C.apply(o.Source,[ev].concat(o.Params));};if (FCK.IECleanup) FCK.IECleanup.AddItem(null,function() { o.Source=null;o.Params=null;});A.attachEvent('on'+B,o.Listener);A=null;D=null;};FCKTools.GetViewPaneSize=function(A){var B;var C=A.document.documentElement;if (C&&C.clientWidth) B=C;else B=A.document.body;if (B) return { Width:B.clientWidth,Height:B.clientHeight };else return { Width:0,Height:0 };};FCKTools.SaveStyles=function(A){var B=FCKTools.ProtectFormStyles(A);var C={};if (A.className.length>0){C.Class=A.className;A.className='';};var D=A.style.cssText;if (D.length>0){C.Inline=D;A.style.cssText='';};FCKTools.RestoreFormStyles(A,B);return C;};FCKTools.RestoreStyles=function(A,B){var C=FCKTools.ProtectFormStyles(A);A.className=B.Class||'';A.style.cssText=B.Inline||'';FCKTools.RestoreFormStyles(A,C);};FCKTools.RegisterDollarFunction=function(A){A.$=A.document.getElementById;};FCKTools.AppendElement=function(A,B){return A.appendChild(this.GetElementDocument(A).createElement(B));};FCKTools.ToLowerCase=function(A){return A.toLowerCase();};
-var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='var FCKeditorAPI = {Version : "2.5.1",VersionBuild : "17566",__Instances : new Object(),GetInstance : function( name ){return this.__Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.__Instances ){var oEditor = FCKeditorAPI.__Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue	: {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if (FCKBrowserInfo.IsSafari||FCKBrowserInfo.IsGecko19){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;};FCKeditorAPI.__Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){if (!window.FCKUnloadFlag) return;delete FCKeditorAPI.__Instances[FCK.Name];};function FCKeditorAPI_ConfirmCleanup(){window.FCKUnloadFlag=true;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);FCKTools.AddEventListener(window,'beforeunload',FCKeditorAPI_ConfirmCleanup);
-var FCKImagePreloader=function(){this._Images=[];};FCKImagePreloader.prototype={AddImages:function(A){if (typeof(A)=='string') A=A.split(';');this._Images=this._Images.concat(A);},Start:function(){var A=this._Images;this._PreloadCount=A.length;for (var i=0;i<A.length;i++){var B=document.createElement('img');FCKTools.AddEventListenerEx(B,'load',_FCKImagePreloader_OnImage,this);FCKTools.AddEventListenerEx(B,'error',_FCKImagePreloader_OnImage,this);B.src=A[i];_FCKImagePreloader_ImageCache.push(B);}}};var _FCKImagePreloader_ImageCache=[];function _FCKImagePreloader_OnImage(A,B){if ((--B._PreloadCount)==0&&B.OnComplete) B.OnComplete();}
-var FCKRegexLib={AposEntity:/&apos;/gi,ObjectElements:/^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i,NamedCommands:/^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i,BeforeBody:/(^[\s\S]*\<body[^\>]*\>)/i,AfterBody:/(\<\/body\>[\s\S]*$)/i,ToReplace:/___fcktoreplace:([\w]+)/ig,MetaHttpEquiv:/http-equiv\s*=\s*["']?([^"' ]+)/i,HasBaseTag:/<base /i,HasBodyTag:/<body[\s|>]/i,HtmlOpener:/<html\s?[^>]*>/i,HeadOpener:/<head\s?[^>]*>/i,HeadCloser:/<\/head\s*>/i,FCK_Class:/\s*FCK__[^ ]*(?=\s+|$)/,ElementName:/(^[a-z_:][\w.\-:]*\w$)|(^[a-z_]$)/,ForceSimpleAmpersand:/___FCKAmp___/g,SpaceNoClose:/\/>/g,EmptyParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/,EmptyOutParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*|&nbsp;)(<\/\1>)?$/,TagBody:/></,GeckoEntitiesMarker:/#\?-\:/g,ProtectUrlsImg:/<img(?=\s).*?\ssrc=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsA:/<a(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsArea:/<area(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,Html4DocType:/HTML 4\.0 Transitional/i,DocTypeTag:/<!DOCTYPE[^>]*>/i,TagsWithEvent:/<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g,EventAttributes:/\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,ProtectedEvents:/\s\w+_fckprotectedatt="([^"]+)"/g,StyleProperties:/\S+\s*:/g,InvalidSelfCloseTags:/(<(?!base|meta|link|hr|br|param|img|area|input)([a-zA-Z0-9:]+)[^>]*)\/>/gi,StyleVariableAttName:/#\(\s*("|')(.+?)\1[^\)]*\s*\)/g,RegExp:/^\/(.*)\/([gim]*)$/};
-var FCKListsLib={BlockElements:{ address:1,blockquote:1,center:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,marquee:1,noscript:1,ol:1,p:1,pre:1,script:1,table:1,ul:1 },NonEmptyBlockElements:{ p:1,div:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,address:1,pre:1,ol:1,ul:1,li:1,td:1,th:1 },InlineChildReqElements:{ abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },InlineNonEmptyElements:{ a:1,abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },EmptyElements:{ base:1,col:1,meta:1,link:1,hr:1,br:1,param:1,img:1,area:1,input:1 },PathBlockElements:{ address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,de:1 },PathBlockLimitElements:{ body:1,div:1,td:1,th:1,caption:1,form:1 },StyleBlockElements:{ address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1 },StyleObjectElements:{ img:1,hr:1,li:1,table:1,tr:1,td:1,embed:1,object:1,ol:1,ul:1 },BlockBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1 },ListBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1,br:1 }};
-var FCKLanguageManager=FCK.Language={AvailableLanguages:{af:'Afrikaans',ar:'Arabic',bg:'Bulgarian',bn:'Bengali/Bangla',bs:'Bosnian',ca:'Catalan',cs:'Czech',da:'Danish',de:'German',el:'Greek',en:'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-uk':'English (United Kingdom)',eo:'Esperanto',es:'Spanish',et:'Estonian',eu:'Basque',fa:'Persian',fi:'Finnish',fo:'Faroese',fr:'French',gl:'Galician',he:'Hebrew',hi:'Hindi',hr:'Croatian',hu:'Hungarian',it:'Italian',ja:'Japanese',km:'Khmer',ko:'Korean',lt:'Lithuanian',lv:'Latvian',mn:'Mongolian',ms:'Malay',nb:'Norwegian Bokmal',nl:'Dutch',no:'Norwegian',pl:'Polish',pt:'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)',ro:'Romanian',ru:'Russian',sk:'Slovak',sl:'Slovenian',sr:'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)',sv:'Swedish',th:'Thai',tr:'Turkish',uk:'Ukrainian',vi:'Vietnamese',zh:'Chinese Traditional','zh-cn':'Chinese Simplified'},GetActiveLanguage:function(){if (FCKConfig.AutoDetectLanguage){var A;if (navigator.userLanguage) A=navigator.userLanguage.toLowerCase();else if (navigator.language) A=navigator.language.toLowerCase();else{return FCKConfig.DefaultLanguage;};if (A.length>=5){A=A.substr(0,5);if (this.AvailableLanguages[A]) return A;};if (A.length>=2){A=A.substr(0,2);if (this.AvailableLanguages[A]) return A;}};return this.DefaultLanguage;},TranslateElements:function(A,B,C,D){var e=A.getElementsByTagName(B);var E,s;for (var i=0;i<e.length;i++){if ((E=e[i].getAttribute('fckLang'))){if ((s=FCKLang[E])){if (D) s=FCKTools.HTMLEncode(s);e[i][C]=s;}}}},TranslatePage:function(A){this.TranslateElements(A,'INPUT','value');this.TranslateElements(A,'SPAN','innerHTML');this.TranslateElements(A,'LABEL','innerHTML');this.TranslateElements(A,'OPTION','innerHTML',true);this.TranslateElements(A,'LEGEND','innerHTML');},Initialize:function(){if (this.AvailableLanguages[FCKConfig.DefaultLanguage]) this.DefaultLanguage=FCKConfig.DefaultLanguage;else this.DefaultLanguage='en';this.ActiveLanguage={};this.ActiveLanguage.Code=this.GetActiveLanguage();this.ActiveLanguage.Name=this.AvailableLanguages[this.ActiveLanguage.Code];}};
+var FCK={Name:FCKURLParams['InstanceName'],Status:0,EditMode:0,Toolbar:null,HasFocus:false,DataProcessor:new FCKDataProcessor(),GetInstanceObject:(function(){var w=window;return function(name){return w[name];}})(),AttachToOnSelectionChange:function(A){this.Events.AttachEvent('OnSelectionChange',A);},GetLinkedFieldValue:function(){return this.LinkedField.value;},GetParentForm:function(){return this.LinkedField.form;},StartupValue:'',IsDirty:function(){if (this.EditMode==1) return (this.StartupValue!=this.EditingArea.Textarea.value);else{if (!this.EditorDocument) return false;return (this.StartupValue!=this.EditorDocument.body.innerHTML);}},ResetIsDirty:function(){if (this.EditMode==1) this.StartupValue=this.EditingArea.Textarea.value;else if (this.EditorDocument.body) this.StartupValue=this.EditorDocument.body.innerHTML;},StartEditor:function(){this.TempBaseTag=FCKConfig.BaseHref.length>0?'<base href="'+FCKConfig.BaseHref+'" _fcktemp="true"></base>':'';var A=FCK.KeystrokeHandler=new FCKKeystrokeHandler();A.OnKeystroke=_FCK_KeystrokeHandler_OnKeystroke;A.SetKeystrokes(FCKConfig.Keystrokes);if (FCKBrowserInfo.IsIE7){if ((CTRL+86/*V*/) in A.Keystrokes) A.SetKeystrokes([CTRL+86,true]);if ((SHIFT+45/*INS*/) in A.Keystrokes) A.SetKeystrokes([SHIFT+45,true]);};A.SetKeystrokes([CTRL+8,true]);this.EditingArea=new FCKEditingArea(document.getElementById('xEditingArea'));this.EditingArea.FFSpellChecker=FCKConfig.FirefoxSpellChecker;this.SetData(this.GetLinkedFieldValue(),true);FCKTools.AddEventListener(document,"keydown",this._TabKeyHandler);this.AttachToOnSelectionChange(_FCK_PaddingNodeListener);if (FCKBrowserInfo.IsGecko) this.AttachToOnSelectionChange(this._ExecCheckEmptyBlock);},Focus:function(){FCK.EditingArea.Focus();},SetStatus:function(A){this.Status=A;if (A==1){FCKFocusManager.AddWindow(window,true);if (FCKBrowserInfo.IsIE) FCKFocusManager.AddWindow(window.frameElement,true);if (FCKConfig.StartupFocus) FCK.Focus();};this.Events.FireEvent('OnStatusChange',A);},FixBody:function(){var A=FCKConfig.EnterMode;if (A!='p'&&A!='div') return;var B=this.EditorDocument;if (!B) return;var C=B.body;if (!C) return;FCKDomTools.TrimNode(C);var D=C.firstChild;var E;while (D){var F=false;switch (D.nodeType){case 1:var G=D.nodeName.toLowerCase();if (!FCKListsLib.BlockElements[G]&&G!='li'&&!D.getAttribute('_fckfakelement')&&D.getAttribute('_moz_dirty')==null) F=true;break;case 3:if (E||D.nodeValue.Trim().length>0) F=true;};if (F){var H=D.parentNode;if (!E) E=H.insertBefore(B.createElement(A),D);E.appendChild(H.removeChild(D));D=E.nextSibling;}else{if (E){FCKDomTools.TrimNode(E);E=null;};D=D.nextSibling;}};if (E) FCKDomTools.TrimNode(E);},GetData:function(A){if (FCK.EditMode==1) return FCK.EditingArea.Textarea.value;this.FixBody();var B=FCK.EditorDocument;if (!B) return null;var C=FCKConfig.FullPage;var D=FCK.DataProcessor.ConvertToDataFormat(C?B.documentElement:B.body,!C,FCKConfig.IgnoreEmptyParagraphValue,A);D=FCK.ProtectEventsRestore(D);if (FCKBrowserInfo.IsIE) D=D.replace(FCKRegexLib.ToReplace,'$1');if (C){if (FCK.DocTypeDeclaration&&FCK.DocTypeDeclaration.length>0) D=FCK.DocTypeDeclaration+'\n'+D;if (FCK.XmlDeclaration&&FCK.XmlDeclaration.length>0) D=FCK.XmlDeclaration+'\n'+D;};return FCKConfig.ProtectedSource.Revert(D);},UpdateLinkedField:function(){var A=FCK.GetXHTML(FCKConfig.FormatOutput);if (FCKConfig.HtmlEncodeOutput) A=FCKTools.HTMLEncode(A);FCK.LinkedField.value=A;FCK.Events.FireEvent('OnAfterLinkedFieldUpdate');},RegisteredDoubleClickHandlers:{},OnDoubleClick:function(A){var B=FCK.RegisteredDoubleClickHandlers[A.tagName.toUpperCase()];if (B){for (var i=0;i<B.length;i++) B[i](A);};B=FCK.RegisteredDoubleClickHandlers['*'];if (B){for (var i=0;i<B.length;i++) B[i](A);}},RegisterDoubleClickHandler:function(A,B){var C=B||'*';C=C.toUpperCase();var D;if (!(D=FCK.RegisteredDoubleClickHandlers[C])) FCK.RegisteredDoubleClickHandlers[C]=[A];else{if (D.IndexOf(A)==-1) D.push(A);}},OnAfterSetHTML:function(){FCKDocumentProcessor.Process(FCK.EditorDocument);FCKUndo.SaveUndoStep();FCK.Events.FireEvent('OnSelectionChange');FCK.Events.FireEvent('OnAfterSetHTML');},ProtectUrls:function(A){A=A.replace(FCKRegexLib.ProtectUrlsA,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsImg,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsArea,'$& _fcksavedurl=$1');return A;},ProtectEvents:function(A){return A.replace(FCKRegexLib.TagsWithEvent,_FCK_ProtectEvents_ReplaceTags);},ProtectEventsRestore:function(A){return A.replace(FCKRegexLib.ProtectedEvents,_FCK_ProtectEvents_RestoreEvents);},ProtectTags:function(A){var B=FCKConfig.ProtectedTags;if (FCKBrowserInfo.IsIE) B+=B.length>0?'|ABBR|XML|EMBED|OBJECT':'ABBR|XML|EMBED|OBJECT';var C;if (B.length>0){C=new RegExp('<('+B+')(?!\w|:)','gi');A=A.replace(C,'<FCK:$1');C=new RegExp('<\/('+B+')>','gi');A=A.replace(C,'<\/FCK:$1>');};B='META';if (FCKBrowserInfo.IsIE) B+='|HR';C=new RegExp('<(('+B+')(?=\\s|>|/)[\\s\\S]*?)/?>','gi');A=A.replace(C,'<FCK:$1 />');return A;},SetData:function(A,B){this.EditingArea.Mode=FCK.EditMode;if (FCKBrowserInfo.IsIE&&FCK.EditorDocument){FCK.EditorDocument.detachEvent("onselectionchange",Doc_OnSelectionChange);};if (FCK.EditMode==0){this._ForceResetIsDirty=(B===true);A=FCKConfig.ProtectedSource.Protect(A);A=FCK.DataProcessor.ConvertToHtml(A);A=A.replace(FCKRegexLib.InvalidSelfCloseTags,'$1></$2>');A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);if (FCK.TempBaseTag.length>0&&!FCKRegexLib.HasBaseTag.test(A)) A=A.replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);var C='';if (!FCKConfig.FullPage) C+=_FCK_GetEditorAreaStyleTags();if (FCKBrowserInfo.IsIE) C+=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) C+=FCKTools.GetStyleHtml(FCK_ShowTableBordersCSS,true);C+=FCKTools.GetStyleHtml(FCK_InternalCSS,true);A=A.replace(FCKRegexLib.HeadCloser,C+'$&');this.EditingArea.OnLoad=_FCK_EditingArea_OnLoad;this.EditingArea.Start(A);}else{FCK.EditorWindow=null;FCK.EditorDocument=null;FCKDomTools.PaddingNode=null;this.EditingArea.OnLoad=null;this.EditingArea.Start(A);this.EditingArea.Textarea._FCKShowContextMenu=true;FCK.EnterKeyHandler=null;if (B) this.ResetIsDirty();FCK.KeystrokeHandler.AttachToElement(this.EditingArea.Textarea);this.EditingArea.Textarea.focus();FCK.Events.FireEvent('OnAfterSetHTML');};if (FCKBrowserInfo.IsGecko) window.onresize();},RedirectNamedCommands:{},ExecuteNamedCommand:function(A,B,C,D){if (!D) FCKUndo.SaveUndoStep();if (!C&&FCK.RedirectNamedCommands[A]!=null) FCK.ExecuteRedirectedNamedCommand(A,B);else{FCK.Focus();FCK.EditorDocument.execCommand(A,false,B);FCK.Events.FireEvent('OnSelectionChange');};if (!D) FCKUndo.SaveUndoStep();},GetNamedCommandState:function(A){try{if (FCKBrowserInfo.IsSafari&&FCK.EditorWindow&&A.IEquals('Paste')) return 0;if (!FCK.EditorDocument.queryCommandEnabled(A)) return -1;else{return FCK.EditorDocument.queryCommandState(A)?1:0;}}catch (e){return 0;}},GetNamedCommandValue:function(A){var B='';var C=FCK.GetNamedCommandState(A);if (C==-1) return null;try{B=this.EditorDocument.queryCommandValue(A);}catch(e) {};return B?B:'';},Paste:function(A){if (FCK.Status!=2||!FCK.Events.FireEvent('OnPaste')) return false;return A||FCK._ExecPaste();},PasteFromWord:function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');},Preview:function(){var A;if (FCKConfig.FullPage){if (FCK.TempBaseTag.length>0) A=FCK.TempBaseTag+FCK.GetXHTML();else A=FCK.GetXHTML();}else{A=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"><head>'+FCK.TempBaseTag+'<title>'+FCKLang.Preview+'</title>'+_FCK_GetEditorAreaStyleTags()+'</head><body'+FCKConfig.GetBodyAttributes()+'>'+FCK.GetXHTML()+'</body></html>';};var B=FCKConfig.ScreenWidth*0.8;var C=FCKConfig.ScreenHeight*0.7;var D=(FCKConfig.ScreenWidth-B)/2;var E='';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=A;E='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.opener._FCKHtmlToLoad );document.close() ;window.opener._FCKHtmlToLoad = null ;})() )';};var F=window.open(E,null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+B+',height='+C+',left='+D);if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){F.document.write(A);F.document.close();}},SwitchEditMode:function(A){var B=(FCK.EditMode==0);var C=FCK.IsDirty();var D;if (B){FCKCommands.GetCommand('ShowBlocks').SaveState();if (!A&&FCKBrowserInfo.IsIE) FCKUndo.SaveUndoStep();D=FCK.GetXHTML(FCKConfig.FormatSource);if (D==null) return false;}else D=this.EditingArea.Textarea.value;FCK.EditMode=B?1:0;FCK.SetData(D,!C);FCK.Focus();FCKTools.RunFunction(FCK.ToolbarSet.RefreshModeState,FCK.ToolbarSet);return true;},InsertElement:function(A){if (typeof A=='string') A=this.EditorDocument.createElement(A);var B=A.nodeName.toLowerCase();FCKSelection.Restore();var C=new FCKDomRange(this.EditorWindow);if (FCKListsLib.BlockElements[B]!=null){C.SplitBlock();C.InsertNode(A);var D=FCKDomTools.GetNextSourceElement(A,false,null,['hr','br','param','img','area','input'],true);if (!D&&FCKConfig.EnterMode!='br'){D=this.EditorDocument.body.appendChild(this.EditorDocument.createElement(FCKConfig.EnterMode));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(D);};if (FCKListsLib.EmptyElements[B]==null) C.MoveToElementEditStart(A);else if (D) C.MoveToElementEditStart(D);else C.MoveToPosition(A,4);if (FCKBrowserInfo.IsGecko){if (D) D.scrollIntoView(false);A.scrollIntoView(false);}}else{C.MoveToSelection();C.DeleteContents();C.InsertNode(A);C.SetStart(A,4);C.SetEnd(A,4);};C.Select();C.Release();this.Focus();return A;},_InsertBlockElement:function(A){},_IsFunctionKey:function(A){if (A>=16&&A<=20) return true;if (A==27||(A>=33&&A<=40)) return true;if (A==45) return true;return false;},_KeyDownListener:function(A){if (!A) A=FCK.EditorWindow.event;if (FCK.EditorWindow){if (!FCK._IsFunctionKey(A.keyCode)&&!(A.ctrlKey||A.metaKey)&&!(A.keyCode==46)) FCK._KeyDownUndo();};return true;},_KeyDownUndo:function(){if (!FCKUndo.Typing){FCKUndo.SaveUndoStep();FCKUndo.Typing=true;FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.TypesCount++;FCKUndo.Changed=1;if (FCKUndo.TypesCount>FCKUndo.MaxTypes){FCKUndo.TypesCount=0;FCKUndo.SaveUndoStep();}},_TabKeyHandler:function(A){if (!A) A=window.event;var B=A.keyCode;if (B==9&&FCK.EditMode!=0){if (FCKBrowserInfo.IsIE){var C=document.selection.createRange();if (C.parentElement()!=FCK.EditingArea.Textarea) return true;C.text='\t';C.select();}else{var a=[];var D=FCK.EditingArea.Textarea;var E=D.selectionStart;var F=D.selectionEnd;a.push(D.value.substr(0,E));a.push('\t');a.push(D.value.substr(F));D.value=a.join('');D.setSelectionRange(E+1,E+1);};if (A.preventDefault) return A.preventDefault();return A.returnValue=false;};return true;}};FCK.Events=new FCKEvents(FCK);FCK.GetHTML=FCK.GetXHTML=FCK.GetData;FCK.SetHTML=FCK.SetData;FCK.InsertElementAndGetIt=FCK.CreateElement=FCK.InsertElement;function _FCK_ProtectEvents_ReplaceTags(A){return A.replace(FCKRegexLib.EventAttributes,_FCK_ProtectEvents_ReplaceEvents);};function _FCK_ProtectEvents_ReplaceEvents(A,B){return ' '+B+'_fckprotectedatt="'+encodeURIComponent(A)+'"';};function _FCK_ProtectEvents_RestoreEvents(A,B){return decodeURIComponent(B);};function _FCK_MouseEventsListener(A){if (!A) A=window.event;if (A.type=='mousedown') FCK.MouseDownFlag=true;else if (A.type=='mouseup') FCK.MouseDownFlag=false;else if (A.type=='mousemove') FCK.Events.FireEvent('OnMouseMove',A);};function _FCK_PaddingNodeListener(){if (FCKConfig.EnterMode.IEquals('br')) return;FCKDomTools.EnforcePaddingNode(FCK.EditorDocument,FCKConfig.EnterMode);if (!FCKBrowserInfo.IsIE&&FCKDomTools.PaddingNode){var A=FCKSelection.GetSelection();if (A&&A.rangeCount==1){var B=A.getRangeAt(0);if (B.collapsed&&B.startContainer==FCK.EditorDocument.body&&B.startOffset==0){B.selectNodeContents(FCKDomTools.PaddingNode);B.collapse(true);A.removeAllRanges();A.addRange(B);}}}else if (FCKDomTools.PaddingNode){var C=FCKSelection.GetParentElement();var D=FCKDomTools.PaddingNode;if (C&&C.nodeName.IEquals('body')){if (FCK.EditorDocument.body.childNodes.length==1&&FCK.EditorDocument.body.firstChild==D){var B=FCK.EditorDocument.body.createTextRange();var F=false;if (!D.childNodes.firstChild){D.appendChild(FCKTools.GetElementDocument(D).createTextNode('\ufeff'));F=true;};B.moveToElementText(D);B.select();if (F) B.pasteHTML('');}}}};function _FCK_EditingArea_OnLoad(){FCK.EditorWindow=FCK.EditingArea.Window;FCK.EditorDocument=FCK.EditingArea.Document;FCK.InitializeBehaviors();FCK.MouseDownFlag=false;FCKTools.AddEventListener(FCK.EditorDocument,'mousemove',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mousedown',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mouseup',_FCK_MouseEventsListener);if (FCKBrowserInfo.IsSafari){var A=function(evt){if (!(evt.ctrlKey||evt.metaKey)) return;if (FCK.EditMode!=0) return;switch (evt.keyCode){case 89:FCKUndo.Redo();break;case 90:FCKUndo.Undo();break;}};FCKTools.AddEventListener(FCK.EditorDocument,'keyup',A);};FCK.EnterKeyHandler=new FCKEnterKey(FCK.EditorWindow,FCKConfig.EnterMode,FCKConfig.ShiftEnterMode,FCKConfig.TabSpaces);FCK.KeystrokeHandler.AttachToElement(FCK.EditorDocument);if (FCK._ForceResetIsDirty) FCK.ResetIsDirty();if (FCKBrowserInfo.IsIE&&FCK.HasFocus) FCK.EditorDocument.body.setActive();FCK.OnAfterSetHTML();FCKCommands.GetCommand('ShowBlocks').RestoreState();if (FCK.Status!=0) return;FCK.SetStatus(1);};function _FCK_GetEditorAreaStyleTags(){return FCKTools.GetStyleHtml(FCKConfig.EditorAreaCSS)+FCKTools.GetStyleHtml(FCKConfig.EditorAreaStyles);};function _FCK_KeystrokeHandler_OnKeystroke(A,B){if (FCK.Status!=2) return false;if (FCK.EditMode==0){switch (B){case 'Paste':return!FCK.Paste();case 'Cut':FCKUndo.SaveUndoStep();return false;}}else{if (B.Equals('Paste','Undo','Redo','SelectAll','Cut')) return false;};var C=FCK.Commands.GetCommand(B);if (C.GetState()==-1) return false;return (C.Execute.apply(C,FCKTools.ArgumentsToArray(arguments,2))!==false);};(function(){var A=window.parent.document;var B=A.getElementById(FCK.Name);var i=0;while (B||i==0){if (B&&B.tagName.toLowerCase().Equals('input','textarea')){FCK.LinkedField=B;break;};B=A.getElementsByName(FCK.Name)[i++];}})();var FCKTempBin={Elements:[],AddElement:function(A){var B=this.Elements.length;this.Elements[B]=A;return B;},RemoveElement:function(A){var e=this.Elements[A];this.Elements[A]=null;return e;},Reset:function(){var i=0;while (i<this.Elements.length) this.Elements[i++]=null;this.Elements.length=0;}};var FCKFocusManager=FCK.FocusManager={IsLocked:false,AddWindow:function(A,B){var C;if (FCKBrowserInfo.IsIE) C=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else if (FCKBrowserInfo.IsSafari) C=A;else C=A.document;FCKTools.AddEventListener(C,'blur',FCKFocusManager_Win_OnBlur);FCKTools.AddEventListener(C,'focus',B?FCKFocusManager_Win_OnFocus_Area:FCKFocusManager_Win_OnFocus);},RemoveWindow:function(A){if (FCKBrowserInfo.IsIE) oTarget=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else oTarget=A.document;FCKTools.RemoveEventListener(oTarget,'blur',FCKFocusManager_Win_OnBlur);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus_Area);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus);},Lock:function(){this.IsLocked=true;},Unlock:function(){if (this._HasPendingBlur) FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);this.IsLocked=false;},_ResetTimer:function(){this._HasPendingBlur=false;if (this._Timer){window.clearTimeout(this._Timer);delete this._Timer;}}};function FCKFocusManager_Win_OnBlur(){if (typeof(FCK)!='undefined'&&FCK.HasFocus){FCKFocusManager._ResetTimer();FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);}};function FCKFocusManager_FireOnBlur(){if (FCKFocusManager.IsLocked) FCKFocusManager._HasPendingBlur=true;else{FCK.HasFocus=false;FCK.Events.FireEvent("OnBlur");}};function FCKFocusManager_Win_OnFocus_Area(){if (FCKFocusManager._IsFocusing) return;FCKFocusManager._IsFocusing=true;FCK.Focus();FCKFocusManager_Win_OnFocus();FCKTools.RunFunction(function(){delete FCKFocusManager._IsFocusing;});};function FCKFocusManager_Win_OnFocus(){FCKFocusManager._ResetTimer();if (!FCK.HasFocus&&!FCKFocusManager.IsLocked){FCK.HasFocus=true;FCK.Events.FireEvent("OnFocus");}};
+FCK.Description="FCKeditor for Internet Explorer 5.5+";FCK._GetBehaviorsStyle=function(){if (!FCK._BehaviorsStyle){var A=FCKConfig.FullBasePath;var B='';var C;C='<style type="text/css" _fcktemp="true">';if (FCKConfig.ShowBorders) B='url('+A+'css/behaviors/showtableborders.htc)';C+='INPUT,TEXTAREA,SELECT,.FCK__Anchor,.FCK__PageBreak,.FCK__InputHidden';if (FCKConfig.DisableObjectResizing){C+=',IMG';B+=' url('+A+'css/behaviors/disablehandles.htc)';};C+=' { behavior: url('+A+'css/behaviors/disablehandles.htc) ; }';if (B.length>0) C+='TABLE { behavior: '+B+' ; }';C+='</style>';FCK._BehaviorsStyle=C;};return FCK._BehaviorsStyle;};function Doc_OnMouseUp(){if (FCK.EditorWindow.event.srcElement.tagName=='HTML'){FCK.Focus();FCK.EditorWindow.event.cancelBubble=true;FCK.EditorWindow.event.returnValue=false;}};function Doc_OnPaste(){var A=FCK.EditorDocument.body;A.detachEvent('onpaste',Doc_OnPaste);var B=FCK.Paste(!FCKConfig.ForcePasteAsPlainText&&!FCKConfig.AutoDetectPasteFromWord);A.attachEvent('onpaste',Doc_OnPaste);return B;};function Doc_OnDblClick(){FCK.OnDoubleClick(FCK.EditorWindow.event.srcElement);FCK.EditorWindow.event.cancelBubble=true;};function Doc_OnSelectionChange(){if (!FCK.IsSelectionChangeLocked&&FCK.EditorDocument) FCK.Events.FireEvent("OnSelectionChange");};function Doc_OnDrop(){if (FCK.MouseDownFlag){FCK.MouseDownFlag=false;return;};if (FCKConfig.ForcePasteAsPlainText){var A=FCK.EditorWindow.event;if (FCK._CheckIsPastingEnabled()||FCKConfig.ShowDropDialog) FCK.PasteAsPlainText(A.dataTransfer.getData('Text'));A.returnValue=false;A.cancelBubble=true;}};FCK.InitializeBehaviors=function(A){this.EditorDocument.attachEvent('onmouseup',Doc_OnMouseUp);this.EditorDocument.body.attachEvent('onpaste',Doc_OnPaste);this.EditorDocument.body.attachEvent('ondrop',Doc_OnDrop);FCK.ContextMenu._InnerContextMenu.AttachToElement(FCK.EditorDocument.body);this.EditorDocument.attachEvent("onkeydown",FCK._KeyDownListener);this.EditorDocument.attachEvent("ondblclick",Doc_OnDblClick);this.EditorDocument.attachEvent("onselectionchange",Doc_OnSelectionChange);FCKTools.AddEventListener(FCK.EditorDocument,'mousedown',Doc_OnMouseDown);};FCK.InsertHtml=function(A){A=FCKConfig.ProtectedSource.Protect(A);A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);FCK.EditorWindow.focus();FCKUndo.SaveUndoStep();var B=FCKSelection.GetSelection();if (B.type.toLowerCase()=='control') B.clear();A='<span id="__fakeFCKRemove__" style="display:none;">fakeFCKRemove</span>'+A;B.createRange().pasteHTML(A);FCK.EditorDocument.getElementById('__fakeFCKRemove__').removeNode(true);FCKDocumentProcessor.Process(FCK.EditorDocument);this.Events.FireEvent("OnSelectionChange");};FCK.SetInnerHtml=function(A){var B=FCK.EditorDocument;B.body.innerHTML='<div id="__fakeFCKRemove__">&nbsp;</div>'+A;B.getElementById('__fakeFCKRemove__').removeNode(true);};function FCK_PreloadImages(){var A=new FCKImagePreloader();A.AddImages(FCKConfig.PreloadImages);A.AddImages(FCKConfig.SkinPath+'fck_strip.gif');A.OnComplete=LoadToolbarSetup;A.Start();};function Document_OnContextMenu(){return (event.srcElement._FCKShowContextMenu==true);};document.oncontextmenu=Document_OnContextMenu;function FCK_Cleanup(){this.LinkedField=null;this.EditorWindow=null;this.EditorDocument=null;};FCK._ExecPaste=function(){if (FCK._PasteIsRunning) return true;if (FCKConfig.ForcePasteAsPlainText){FCK.PasteAsPlainText();return false;};var A=FCK._CheckIsPastingEnabled(true);if (A===false) FCKTools.RunFunction(FCKDialog.OpenDialog,FCKDialog,['FCKDialog_Paste',FCKLang.Paste,'dialog/fck_paste.html',400,330,'Security']);else{if (FCKConfig.AutoDetectPasteFromWord&&A.length>0){var B=/<\w[^>]*(( class="?MsoNormal"?)|(="mso-))/gi;if (B.test(A)){if (confirm(FCKLang.PasteWordConfirm)){FCK.PasteFromWord();return false;}}};FCK._PasteIsRunning=true;FCK.ExecuteNamedCommand('Paste');delete FCK._PasteIsRunning;};return false;};FCK.PasteAsPlainText=function(A){if (!FCK._CheckIsPastingEnabled()){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteAsText,'dialog/fck_paste.html',400,330,'PlainText');return;};var B=null;if (!A) B=clipboardData.getData("Text");else B=A;if (B&&B.length>0){B=FCKTools.HTMLEncode(B);B=FCKTools.ProcessLineBreaks(window,FCKConfig,B);var C=B.search('</p>');var D=B.search('<p>');if ((C!=-1&&D!=-1&&C<D)||(C!=-1&&D==-1)){var E=B.substr(0,C);B=B.substr(C+4);this.InsertHtml(E);};FCKUndo.SaveLocked=true;this.InsertHtml(B);FCKUndo.SaveLocked=false;}};FCK._CheckIsPastingEnabled=function(A){FCK._PasteIsEnabled=false;document.body.attachEvent('onpaste',FCK_CheckPasting_Listener);var B=FCK.GetClipboardHTML();document.body.detachEvent('onpaste',FCK_CheckPasting_Listener);if (FCK._PasteIsEnabled){if (!A) B=true;}else B=false;delete FCK._PasteIsEnabled;return B;};function FCK_CheckPasting_Listener(){FCK._PasteIsEnabled=true;};FCK.GetClipboardHTML=function(){var A=document.getElementById('___FCKHiddenDiv');if (!A){A=document.createElement('DIV');A.id='___FCKHiddenDiv';var B=A.style;B.position='absolute';B.visibility=B.overflow='hidden';B.width=B.height=1;document.body.appendChild(A);};A.innerHTML='';var C=document.body.createTextRange();C.moveToElementText(A);C.execCommand('Paste');var D=A.innerHTML;A.innerHTML='';return D;};FCK.CreateLink=function(A,B){var C=[];FCK.ExecuteNamedCommand('Unlink',null,false,!!B);if (A.length>0){if (FCKSelection.GetType()=='Control'){var D=this.EditorDocument.createElement('A');D.href=A;var E=FCKSelection.GetSelectedElement();E.parentNode.insertBefore(D,E);E.parentNode.removeChild(E);D.appendChild(E);return [D];};var F='javascript:void(0);/*'+(new Date().getTime())+'*/';FCK.ExecuteNamedCommand('CreateLink',F,false,!!B);var G=this.EditorDocument.links;for (i=0;i<G.length;i++){var D=G[i];if (D.getAttribute('href',2)==F){var I=D.innerHTML;D.href=A;D.innerHTML=I;var J=D.lastChild;if (J&&J.nodeName=='BR'){FCKDomTools.InsertAfterNode(D,D.removeChild(J));};C.push(D);}}};return C;};function _FCK_RemoveDisabledAtt(){this.removeAttribute('disabled');};function Doc_OnMouseDown(A){var e=A.srcElement;if (e.nodeName.IEquals('input')&&e.type.IEquals(['radio','checkbox'])&&!e.disabled){e.disabled=true;FCKTools.SetTimeout(_FCK_RemoveDisabledAtt,1,e);}};
+var FCKConfig=FCK.Config={};if (document.location.protocol=='file:'){FCKConfig.BasePath=decodeURIComponent(document.location.pathname.substr(1));FCKConfig.BasePath=FCKConfig.BasePath.replace(/\\/gi, '/');var sFullProtocol=document.location.href.match(/^(file\:\/{2,3})/)[1];if (FCKBrowserInfo.IsOpera) sFullProtocol+='localhost/';FCKConfig.BasePath=sFullProtocol+FCKConfig.BasePath.substring(0,FCKConfig.BasePath.lastIndexOf('/')+1);FCKConfig.FullBasePath=FCKConfig.BasePath;}else{FCKConfig.BasePath=document.location.pathname.substring(0,document.location.pathname.lastIndexOf('/')+1);FCKConfig.FullBasePath=document.location.protocol+'//'+document.location.host+FCKConfig.BasePath;};FCKConfig.EditorPath=FCKConfig.BasePath.replace(/editor\/$/,'');try{FCKConfig.ScreenWidth=screen.width;FCKConfig.ScreenHeight=screen.height;}catch (e){FCKConfig.ScreenWidth=800;FCKConfig.ScreenHeight=600;};FCKConfig.ProcessHiddenField=function(){this.PageConfig={};var A=window.parent.document.getElementById(FCK.Name+'___Config');if (!A) return;var B=A.value.split('&');for (var i=0;i<B.length;i++){if (B[i].length==0) continue;var C=B[i].split('=');var D=decodeURIComponent(C[0]);var E=decodeURIComponent(C[1]);if (D=='CustomConfigurationsPath') FCKConfig[D]=E;else if (E.toLowerCase()=="true") this.PageConfig[D]=true;else if (E.toLowerCase()=="false") this.PageConfig[D]=false;else if (E.length>0&&!isNaN(E)) this.PageConfig[D]=parseInt(E,10);else this.PageConfig[D]=E;}};function FCKConfig_LoadPageConfig(){var A=FCKConfig.PageConfig;for (var B in A) FCKConfig[B]=A[B];};function FCKConfig_PreProcess(){var A=FCKConfig;if (A.AllowQueryStringDebug){try{if ((/fckdebug=true/i).test(window.top.location.search)) A.Debug=true;}catch (e) {/*Ignore it. Much probably we are inside a FRAME where the "top" is in another domain (security error).*/}};if (!A.PluginsPath.EndsWith('/')) A.PluginsPath+='/';var B=A.ToolbarComboPreviewCSS;if (!B||B.length==0) A.ToolbarComboPreviewCSS=A.EditorAreaCSS;A.RemoveAttributesArray=(A.RemoveAttributes||'').split(',');if (!FCKConfig.SkinEditorCSS||FCKConfig.SkinEditorCSS.length==0) FCKConfig.SkinEditorCSS=FCKConfig.SkinPath+'fck_editor.css';if (!FCKConfig.SkinDialogCSS||FCKConfig.SkinDialogCSS.length==0) FCKConfig.SkinDialogCSS=FCKConfig.SkinPath+'fck_dialog.css';};FCKConfig.ToolbarSets={};FCKConfig.Plugins={};FCKConfig.Plugins.Items=[];FCKConfig.Plugins.Add=function(A,B,C){FCKConfig.Plugins.Items.AddItem([A,B,C]);};FCKConfig.ProtectedSource={};FCKConfig.ProtectedSource._CodeTag=(new Date()).valueOf();FCKConfig.ProtectedSource.RegexEntries=[/<!--[\s\S]*?-->/g,/<script[\s\S]*?<\/script>/gi,/<noscript[\s\S]*?<\/noscript>/gi];FCKConfig.ProtectedSource.Add=function(A){this.RegexEntries.AddItem(A);};FCKConfig.ProtectedSource.Protect=function(A){var B=this._CodeTag;function _Replace(protectedSource){var C=FCKTempBin.AddElement(protectedSource);return '<!--{'+B+C+'}-->';};for (var i=0;i<this.RegexEntries.length;i++){A=A.replace(this.RegexEntries[i],_Replace);};return A;};FCKConfig.ProtectedSource.Revert=function(A,B){function _Replace(m,opener,index){var C=B?FCKTempBin.RemoveElement(index):FCKTempBin.Elements[index];return FCKConfig.ProtectedSource.Revert(C,B);};var D=new RegExp("(<|&lt;)!--\\{"+this._CodeTag+"(\\d+)\\}--(>|&gt;)","g");return A.replace(D,_Replace);};FCKConfig.GetBodyAttributes=function(){var A='';if (this.BodyId&&this.BodyId.length>0) A+=' id="'+this.BodyId+'"';if (this.BodyClass&&this.BodyClass.length>0) A+=' class="'+this.BodyClass+'"';return A;};FCKConfig.ApplyBodyAttributes=function(A){if (this.BodyId&&this.BodyId.length>0) A.id=FCKConfig.BodyId;if (this.BodyClass&&this.BodyClass.length>0) A.className+=' '+FCKConfig.BodyClass;};
+var FCKDebug={};FCKDebug._GetWindow=function(){if (!this.DebugWindow||this.DebugWindow.closed) this.DebugWindow=window.open(FCKConfig.BasePath+'fckdebug.html','FCKeditorDebug','menubar=no,scrollbars=yes,resizable=yes,location=no,toolbar=no,width=600,height=500',true);return this.DebugWindow;};FCKDebug.Output=function(A,B,C){if (!FCKConfig.Debug) return;try{this._GetWindow().Output(A,B);}catch (e) {}};FCKDebug.OutputObject=function(A,B){if (!FCKConfig.Debug) return;try{this._GetWindow().OutputObject(A,B);}catch (e) {}};
+var FCKDomTools={MoveChildren:function(A,B,C){if (A==B) return;var D;if (C){while ((D=A.lastChild)) B.insertBefore(A.removeChild(D),B.firstChild);}else{while ((D=A.firstChild)) B.appendChild(A.removeChild(D));}},MoveNode:function(A,B,C){if (C) B.insertBefore(FCKDomTools.RemoveNode(A),B.firstChild);else B.appendChild(FCKDomTools.RemoveNode(A));},TrimNode:function(A){this.LTrimNode(A);this.RTrimNode(A);},LTrimNode:function(A){var B;while ((B=A.firstChild)){if (B.nodeType==3){var C=B.nodeValue.LTrim();var D=B.nodeValue.length;if (C.length==0){A.removeChild(B);continue;}else if (C.length<D){B.splitText(D-C.length);A.removeChild(A.firstChild);}};break;}},RTrimNode:function(A){var B;while ((B=A.lastChild)){if (B.nodeType==3){var C=B.nodeValue.RTrim();var D=B.nodeValue.length;if (C.length==0){B.parentNode.removeChild(B);continue;}else if (C.length<D){B.splitText(C.length);A.lastChild.parentNode.removeChild(A.lastChild);}};break;};if (!FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsOpera){B=A.lastChild;if (B&&B.nodeType==1&&B.nodeName.toLowerCase()=='br'){B.parentNode.removeChild(B);}}},RemoveNode:function(A,B){if (B){var C;while ((C=A.firstChild)) A.parentNode.insertBefore(A.removeChild(C),A);};return A.parentNode.removeChild(A);},GetFirstChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.firstChild;while(C){if (C.nodeType==1&&C.tagName.Equals.apply(C.tagName,B)) return C;C=C.nextSibling;};return null;},GetLastChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.lastChild;while(C){if (C.nodeType==1&&(!B||C.tagName.Equals(B))) return C;C=C.previousSibling;};return null;},GetPreviousSourceElement:function(A,B,C,D){if (!A) return null;if (C&&A.nodeType==1&&A.nodeName.IEquals(C)) return null;if (A.previousSibling) A=A.previousSibling;else return this.GetPreviousSourceElement(A.parentNode,B,C,D);while (A){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (!D||!A.nodeName.IEquals(D)) return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;if (A.lastChild) A=A.lastChild;else return this.GetPreviousSourceElement(A,B,C,D);};return null;},GetNextSourceElement:function(A,B,C,D,E){while((A=this.GetNextSourceNode(A,E))){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (D&&A.nodeName.IEquals(D)) return this.GetNextSourceElement(A,B,C,D);return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;};return null;},GetNextSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.firstChild) E=A.firstChild;else{if (D&&A==D) return null;E=A.nextSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetNextSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetNextSourceNode(E,false,C,D);return E;},GetPreviousSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.lastChild) E=A.lastChild;else{if (D&&A==D) return null;E=A.previousSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetPreviousSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetPreviousSourceNode(E,false,C,D);return E;},InsertAfterNode:function(A,B){return A.parentNode.insertBefore(B,A.nextSibling);},GetParents:function(A){var B=[];while (A){B.unshift(A);A=A.parentNode;};return B;},GetCommonParents:function(A,B){var C=this.GetParents(A);var D=this.GetParents(B);var E=[];for (var i=0;i<C.length;i++){if (C[i]==D[i]) E.push(C[i]);};return E;},GetCommonParentNode:function(A,B,C){var D={};if (!C.pop) C=[C];while (C.length>0) D[C.pop().toLowerCase()]=1;var E=this.GetCommonParents(A,B);var F=null;while ((F=E.pop())){if (D[F.nodeName.toLowerCase()]) return F;};return null;},GetIndexOf:function(A){var B=A.parentNode?A.parentNode.firstChild:null;var C=-1;while (B){C++;if (B==A) return C;B=B.nextSibling;};return-1;},PaddingNode:null,EnforcePaddingNode:function(A,B){try{if (!A||!A.body) return;}catch (e){return;};this.CheckAndRemovePaddingNode(A,B,true);try{if (A.body.lastChild&&(A.body.lastChild.nodeType!=1||A.body.lastChild.tagName.toLowerCase()==B.toLowerCase())) return;}catch (e){return;};var C=A.createElement(B);if (FCKBrowserInfo.IsGecko&&FCKListsLib.NonEmptyBlockElements[B]) FCKTools.AppendBogusBr(C);this.PaddingNode=C;if (A.body.childNodes.length==1&&A.body.firstChild.nodeType==1&&A.body.firstChild.tagName.toLowerCase()=='br'&&(A.body.firstChild.getAttribute('_moz_dirty')!=null||A.body.firstChild.getAttribute('type')=='_moz')) A.body.replaceChild(C,A.body.firstChild);else A.body.appendChild(C);},CheckAndRemovePaddingNode:function(A,B,C){var D=this.PaddingNode;if (!D) return;try{if (D.parentNode!=A.body||D.tagName.toLowerCase()!=B||(D.childNodes.length>1)||(D.firstChild&&D.firstChild.nodeValue!='\xa0'&&String(D.firstChild.tagName).toLowerCase()!='br')){this.PaddingNode=null;return;}}catch (e){this.PaddingNode=null;return;};if (!C){if (D.parentNode.childNodes.length>1) D.parentNode.removeChild(D);this.PaddingNode=null;}},HasAttribute:function(A,B){if (A.hasAttribute) return A.hasAttribute(B);else{var C=A.attributes[B];return (C!=undefined&&C.specified);}},HasAttributes:function(A){var B=A.attributes;for (var i=0;i<B.length;i++){if (FCKBrowserInfo.IsIE&&B[i].nodeName=='class'){if (A.className.length>0) return true;}else if (B[i].specified) return true;};return false;},RemoveAttribute:function(A,B){if (FCKBrowserInfo.IsIE&&B.toLowerCase()=='class') B='className';return A.removeAttribute(B,0);},RemoveAttributes:function (A,B){for (var i=0;i<B.length;i++) this.RemoveAttribute(A,B[i]);},GetAttributeValue:function(A,B){var C=B;if (typeof B=='string') B=A.attributes[B];else C=B.nodeName;if (B&&B.specified){if (C=='style') return A.style.cssText;else if (C=='class'||C.indexOf('on')==0) return B.nodeValue;else{return A.getAttribute(C,2);}};return null;},Contains:function(A,B){if (A.contains&&B.nodeType==1) return A.contains(B);while ((B=B.parentNode)){if (B==A) return true;};return false;},BreakParent:function(A,B,C){var D=C||new FCKDomRange(FCKTools.GetElementWindow(A));D.SetStart(A,4);D.SetEnd(B,4);var E=D.ExtractContents();D.InsertNode(A.parentNode.removeChild(A));E.InsertAfterNode(A);D.Release(!!C);},GetNodeAddress:function(A,B){var C=[];while (A&&A!=FCKTools.GetElementDocument(A).documentElement){var D=A.parentNode;var E=-1;for(var i=0;i<D.childNodes.length;i++){var F=D.childNodes[i];if (B===true&&F.nodeType==3&&F.previousSibling&&F.previousSibling.nodeType==3) continue;E++;if (D.childNodes[i]==A) break;};C.unshift(E);A=A.parentNode;};return C;},GetNodeFromAddress:function(A,B,C){var D=A.documentElement;for (var i=0;i<B.length;i++){var E=B[i];if (!C){D=D.childNodes[E];continue;};var F=-1;for (var j=0;j<D.childNodes.length;j++){var G=D.childNodes[j];if (C===true&&G.nodeType==3&&G.previousSibling&&G.previousSibling.nodeType==3) continue;F++;if (F==E){D=G;break;}}};return D;},CloneElement:function(A){A=A.cloneNode(false);A.removeAttribute('id',false);return A;},ClearElementJSProperty:function(A,B){if (FCKBrowserInfo.IsIE) A.removeAttribute(B);else delete A[B];},SetElementMarker:function (A,B,C,D){var E=String(parseInt(Math.random()*0xfffffff,10));B._FCKMarkerId=E;B[C]=D;if (!A[E]) A[E]={ 'element':B,'markers':{} };A[E]['markers'][C]=D;},ClearElementMarkers:function(A,B,C){var D=B._FCKMarkerId;if (!D) return;this.ClearElementJSProperty(B,'_FCKMarkerId');for (var j in A[D]['markers']) this.ClearElementJSProperty(B,j);if (C) delete A[D];},ClearAllMarkers:function(A){for (var i in A) this.ClearElementMarkers(A,A[i]['element'],true);},ListToArray:function(A,B,C,D,E){if (!A.nodeName.IEquals(['ul','ol'])) return [];if (!D) D=0;if (!C) C=[];for (var i=0;i<A.childNodes.length;i++){var F=A.childNodes[i];if (!F.nodeName.IEquals('li')) continue;var G={ 'parent':A,'indent':D,'contents':[] };if (!E){G.grandparent=A.parentNode;if (G.grandparent&&G.grandparent.nodeName.IEquals('li')) G.grandparent=G.grandparent.parentNode;}else G.grandparent=E;if (B) this.SetElementMarker(B,F,'_FCK_ListArray_Index',C.length);C.push(G);for (var j=0;j<F.childNodes.length;j++){var H=F.childNodes[j];if (H.nodeName.IEquals(['ul','ol'])) this.ListToArray(H,B,C,D+1,G.grandparent);else G.contents.push(H);}};return C;},ArrayToList:function(A,B,C){if (C==undefined) C=0;if (!A||A.length<C+1) return null;var D=FCKTools.GetElementDocument(A[C].parent);var E=D.createDocumentFragment();var F=null;var G=C;var H=Math.max(A[C].indent,0);var I=null;while (true){var J=A[G];if (J.indent==H){if (!F||A[G].parent.nodeName!=F.nodeName){F=A[G].parent.cloneNode(false);E.appendChild(F);};I=D.createElement('li');F.appendChild(I);for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));G++;}else if (J.indent==Math.max(H,0)+1){var K=this.ArrayToList(A,null,G);I.appendChild(K.listNode);G=K.nextIndex;}else if (J.indent==-1&&C==0&&J.grandparent){var I;if (J.grandparent.nodeName.IEquals(['ul','ol'])) I=D.createElement('li');else{if (FCKConfig.EnterMode.IEquals(['div','p'])&&!J.grandparent.nodeName.IEquals('td')) I=D.createElement(FCKConfig.EnterMode);else I=D.createDocumentFragment();};for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));if (I.nodeType==11){if (I.lastChild&&I.lastChild.getAttribute&&I.lastChild.getAttribute('type')=='_moz') I.removeChild(I.lastChild);I.appendChild(D.createElement('br'));};if (I.nodeName.IEquals(FCKConfig.EnterMode)&&I.firstChild){this.TrimNode(I);if (FCKListsLib.BlockBoundaries[I.firstChild.nodeName.toLowerCase()]){var M=D.createDocumentFragment();while (I.firstChild) M.appendChild(I.removeChild(I.firstChild));I=M;}};if (FCKBrowserInfo.IsGeckoLike&&I.nodeName.IEquals(['div','p'])) FCKTools.AppendBogusBr(I);E.appendChild(I);F=null;G++;}else return null;if (A.length<=G||Math.max(A[G].indent,0)<H){break;}};if (B){var N=E.firstChild;while (N){if (N.nodeType==1) this.ClearElementMarkers(B,N);N=this.GetNextSourceNode(N);}};return { 'listNode':E,'nextIndex':G };},GetNextSibling:function(A,B){A=A.nextSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.nextSibling;return A;},GetPreviousSibling:function(A,B){A=A.previousSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.previousSibling;return A;},CheckIsEmptyElement:function(A,B){var C=A.firstChild;var D;while (C){if (C.nodeType==1){if (D||!FCKListsLib.InlineNonEmptyElements[C.nodeName.toLowerCase()]) return false;if (!B||B(C)===true) D=C;}else if (C.nodeType==3&&C.nodeValue.length>0) return false;C=C.nextSibling;};return D?this.CheckIsEmptyElement(D,B):true;},SetElementStyles:function(A,B){var C=A.style;for (var D in B) C[D]=B[D];},SetOpacity:function(A,B){if (FCKBrowserInfo.IsIE){B=Math.round(B*100);A.style.filter=(B>100?'':'progid:DXImageTransform.Microsoft.Alpha(opacity='+B+')');}else A.style.opacity=B;},GetCurrentElementStyle:function(A,B){if (FCKBrowserInfo.IsIE) return A.currentStyle[B];else return A.ownerDocument.defaultView.getComputedStyle(A,'').getPropertyValue(B);},GetPositionedAncestor:function(A){var B=A;while (B!=FCKTools.GetElementDocument(B).documentElement){if (this.GetCurrentElementStyle(B,'position')!='static') return B;if (B==FCKTools.GetElementDocument(B).documentElement&&currentWindow!=w) B=currentWindow.frameElement;else B=B.parentNode;};return null;},ScrollIntoView:function(A,B){var C=FCKTools.GetElementWindow(A);var D=FCKTools.GetViewPaneSize(C).Height;var E=D*-1;if (B===false){E+=A.offsetHeight;E+=parseInt(this.GetCurrentElementStyle(A,'marginBottom')||0,10);};E+=A.offsetTop;while ((A=A.offsetParent)) E+=A.offsetTop||0;var F=FCKTools.GetScrollPosition(C).Y;if (E>0&&E>F) C.scrollTo(0,E);},CheckIsEditable:function(A){var B=A.nodeName.toLowerCase();var C=FCK.DTD[B]||FCK.DTD.span;return (C['#']&&!FCKListsLib.NonEditableElements[B]);}};
+var FCKTools={};FCKTools.CreateBogusBR=function(A){var B=A.createElement('br');B.setAttribute('type','_moz');return B;};FCKTools.FixCssUrls=function(A,B){if (!A||A.length==0) return B;return B.replace(/url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g,function(match,opener,path,closer){if (/^\/|^\w?:/.test(path)) return match;else return 'url('+opener+A+path+closer+')';});};FCKTools._GetUrlFixedCss=function(A,B){var C=A.match(/^([^|]+)\|([\s\S]*)/);if (C) return FCKTools.FixCssUrls(C[1],C[2]);else return A;};FCKTools.AppendStyleSheet=function(A,B){if (!B) return [];if (typeof(B)=='string'){if (/[\\\/\.]\w*$/.test(B)){return this.AppendStyleSheet(A,B.split(','));}else return [this.AppendStyleString(A,FCKTools._GetUrlFixedCss(B))];}else{var C=[];for (var i=0;i<B.length;i++) C.push(this._AppendStyleSheet(A,B[i]));return C;}};FCKTools.GetStyleHtml=(function(){var A=function(styleDef,markTemp){if (styleDef.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<style type="text/css"'+B+'>'+styleDef+'</style>';};var C=function(cssFileUrl,markTemp){if (cssFileUrl.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<link href="'+cssFileUrl+'" type="text/css" rel="stylesheet" '+B+'/>';};return function(cssFileOrArrayOrDef,markTemp){if (!cssFileOrArrayOrDef) return '';if (typeof(cssFileOrArrayOrDef)=='string'){if (/[\\\/\.]\w*$/.test(cssFileOrArrayOrDef)){return this.GetStyleHtml(cssFileOrArrayOrDef.split(','),markTemp);}else return A(this._GetUrlFixedCss(cssFileOrArrayOrDef),markTemp);}else{var E='';for (var i=0;i<cssFileOrArrayOrDef.length;i++) E+=C(cssFileOrArrayOrDef[i],markTemp);return E;}}})();FCKTools.GetElementDocument=function (A){return A.ownerDocument||A.document;};FCKTools.GetElementWindow=function(A){return this.GetDocumentWindow(this.GetElementDocument(A));};FCKTools.GetDocumentWindow=function(A){if (FCKBrowserInfo.IsSafari&&!A.parentWindow) this.FixDocumentParentWindow(window.top);return A.parentWindow||A.defaultView;};FCKTools.FixDocumentParentWindow=function(A){if (A.document) A.document.parentWindow=A;for (var i=0;i<A.frames.length;i++) FCKTools.FixDocumentParentWindow(A.frames[i]);};FCKTools.HTMLEncode=function(A){if (!A) return '';A=A.replace(/&/g,'&amp;');A=A.replace(/</g,'&lt;');A=A.replace(/>/g,'&gt;');return A;};FCKTools.HTMLDecode=function(A){if (!A) return '';A=A.replace(/&gt;/g,'>');A=A.replace(/&lt;/g,'<');A=A.replace(/&amp;/g,'&');return A;};FCKTools._ProcessLineBreaksForPMode=function(A,B,C,D,E){var F=0;var G="<p>";var H="</p>";var I="<br />";if (C){G="<li>";H="</li>";F=1;};while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='p'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};var n=B.charAt(i+1);if (n=='\r'){i++;n=B.charAt(i+1);};if (n=='\n'){i++;if (F) E.push(H);E.push(G);F=1;}else E.push(I);}};FCKTools._ProcessLineBreaksForDivMode=function(A,B,C,D,E){var F=0;var G="<div>";var H="</div>";if (C){G="<li>";H="</li>";F=1;};while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='div'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F){if (E[E.length-1]==G){E.push("&nbsp;");};E.push(H);};E.push(G);F=1;};if (F) E.push(H);};FCKTools._ProcessLineBreaksForBrMode=function(A,B,C,D,E){var F=0;var G="<br />";var H="";if (C){G="<li>";H="</li>";F=1;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F&&H.length) E.push (H);E.push(G);F=1;}};FCKTools.ProcessLineBreaks=function(A,B,C){var D=B.EnterMode.toLowerCase();var E=[];var F=0;var G=new A.FCKDomRange(A.FCK.EditorWindow);G.MoveToSelection();var H=G._Range.startContainer;while (H&&H.nodeType!=1) H=H.parentNode;if (H&&H.tagName.toLowerCase()=='li') F=1;if (D=='p') this._ProcessLineBreaksForPMode(A,C,F,H,E);else if (D=='div') this._ProcessLineBreaksForDivMode(A,C,F,H,E);else if (D=='br') this._ProcessLineBreaksForBrMode(A,C,F,H,E);return E.join("");};FCKTools.AddSelectOption=function(A,B,C){var D=FCKTools.GetElementDocument(A).createElement("OPTION");D.text=B;D.value=C;A.options.add(D);return D;};FCKTools.RunFunction=function(A,B,C,D){if (A) this.SetTimeout(A,0,B,C,D);};FCKTools.SetTimeout=function(A,B,C,D,E){return (E||window).setTimeout(function(){if (D) A.apply(C,[].concat(D));else A.apply(C);},B);};FCKTools.SetInterval=function(A,B,C,D,E){return (E||window).setInterval(function(){A.apply(C,D||[]);},B);};FCKTools.ConvertStyleSizeToHtml=function(A){return A.EndsWith('%')?A:parseInt(A,10);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.EndsWith('%')?A:(A+'px');};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.CreateEventListener=function(A,B){var f=function(){var C=[];for (var i=0;i<arguments.length;i++) C.push(arguments[i]);A.apply(this,C.concat(B));};return f;};FCKTools.IsStrictMode=function(A){return ('CSS1Compat'==(A.compatMode||(FCKBrowserInfo.IsSafari?'CSS1Compat':null)));};FCKTools.ArgumentsToArray=function(A,B,C){B=B||0;C=C||A.length;var D=[];for (var i=B;i<B+C&&i<A.length;i++) D.push(A[i]);return D;};FCKTools.CloneObject=function(A){var B=function() {};B.prototype=A;return new B;};FCKTools.AppendBogusBr=function(A){if (!A) return;var B=this.GetLastItem(A.getElementsByTagName('br'));if (!B||(B.getAttribute('type',2)!='_moz'&&B.getAttribute('_moz_dirty')==null)){var C=this.GetElementDocument(A);if (FCKBrowserInfo.IsOpera) A.appendChild(C.createTextNode(''));else A.appendChild(this.CreateBogusBR(C));}};FCKTools.GetLastItem=function(A){if (A.length>0) return A[A.length-1];return null;};FCKTools.GetDocumentPosition=function(w,A){var x=0;var y=0;var B=A;var C=null;var D=FCKTools.GetElementWindow(B);while (B&&!(D==w&&(B==w.document.body||B==w.document.documentElement))){x+=B.offsetLeft-B.scrollLeft;y+=B.offsetTop-B.scrollTop;if (!FCKBrowserInfo.IsOpera){var E=C;while (E&&E!=B){x-=E.scrollLeft;y-=E.scrollTop;E=E.parentNode;}};C=B;if (B.offsetParent) B=B.offsetParent;else{if (D!=w){B=D.frameElement;C=null;if (B) D=B.contentWindow.parent;}else B=null;}};if (FCKDomTools.GetCurrentElementStyle(w.document.body,'position')!='static'||(FCKBrowserInfo.IsIE&&FCKDomTools.GetPositionedAncestor(A)==null)){x+=w.document.body.offsetLeft;y+=w.document.body.offsetTop;};return { "x":x,"y":y };};FCKTools.GetWindowPosition=function(w,A){var B=this.GetDocumentPosition(w,A);var C=FCKTools.GetScrollPosition(w);B.x-=C.X;B.y-=C.Y;return B;};FCKTools.ProtectFormStyles=function(A){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return [];var B=[];var C=['style','className'];for (var i=0;i<C.length;i++){var D=C[i];if (A.elements.namedItem(D)){var E=A.elements.namedItem(D);B.push([E,E.nextSibling]);A.removeChild(E);}};return B;};FCKTools.RestoreFormStyles=function(A,B){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return;if (B.length>0){for (var i=B.length-1;i>=0;i--){var C=B[i][0];var D=B[i][1];if (D) A.insertBefore(C,D);else A.appendChild(C);}}};FCKTools.GetNextNode=function(A,B){if (A.firstChild) return A.firstChild;else if (A.nextSibling) return A.nextSibling;else{var C=A.parentNode;while (C){if (C==B) return null;if (C.nextSibling) return C.nextSibling;else C=C.parentNode;}};return null;};FCKTools.GetNextTextNode=function(A,B,C){node=this.GetNextNode(A,B);if (C&&node&&C(node)) return null;while (node&&node.nodeType!=3){node=this.GetNextNode(node,B);if (C&&node&&C(node)) return null;};return node;};FCKTools.Merge=function(){var A=arguments;var o=A[0];for (var i=1;i<A.length;i++){var B=A[i];for (var p in B) o[p]=B[p];};return o;};FCKTools.IsArray=function(A){return (A instanceof Array);};FCKTools.AppendLengthProperty=function(A,B){var C=0;for (var n in A) C++;return A[B||'length']=C;};FCKTools.NormalizeCssText=function(A){var B=document.createElement('span');B.style.cssText=A;return B.style.cssText;};FCKTools.Bind=function(A,B){return function(){ return B.apply(A,arguments);};};FCKTools.GetVoidUrl=function(){if (FCK_IS_CUSTOM_DOMAIN) return "javascript: void( function(){document.open();document.write('<html><head><title></title></head><body></body></html>');document.domain = '"+FCK_RUNTIME_DOMAIN+"';document.close();}() ) ;";if (FCKBrowserInfo.IsIE){if (FCKBrowserInfo.IsIE7||!FCKBrowserInfo.IsIE6) return "";else return "javascript: '';";};return "javascript: void(0);";};
+FCKTools.CancelEvent=function(e){return false;};FCKTools._AppendStyleSheet=function(A,B){return A.createStyleSheet(B).owningElement;};FCKTools.AppendStyleString=function(A,B){if (!B) return null;var s=A.createStyleSheet("");s.cssText=B;return s;};FCKTools.ClearElementAttributes=function(A){A.clearAttributes();};FCKTools.GetAllChildrenIds=function(A){var B=[];for (var i=0;i<A.all.length;i++){var C=A.all[i].id;if (C&&C.length>0) B[B.length]=C;};return B;};FCKTools.RemoveOuterTags=function(e){e.insertAdjacentHTML('beforeBegin',e.innerHTML);e.parentNode.removeChild(e);};FCKTools.CreateXmlObject=function(A){var B;switch (A){case 'XmlHttp':try { return new XMLHttpRequest();} catch (e) {};B=['MSXML2.XmlHttp','Microsoft.XmlHttp'];break;case 'DOMDocument':B=['MSXML2.DOMDocument','Microsoft.XmlDom'];break;};for (var i=0;i<2;i++){try { return new ActiveXObject(B[i]);}catch (e){}};if (FCKLang.NoActiveX){alert(FCKLang.NoActiveX);FCKLang.NoActiveX=null;};return null;};FCKTools.DisableSelection=function(A){A.unselectable='on';var e,i=0;while ((e=A.all[i++])){switch (e.tagName){case 'IFRAME':case 'TEXTAREA':case 'INPUT':case 'SELECT':break;default:e.unselectable='on';}}};FCKTools.GetScrollPosition=function(A){var B=A.document;var C={ X:B.documentElement.scrollLeft,Y:B.documentElement.scrollTop };if (C.X>0||C.Y>0) return C;return { X:B.body.scrollLeft,Y:B.body.scrollTop };};FCKTools.AddEventListener=function(A,B,C){A.attachEvent('on'+B,C);};FCKTools.RemoveEventListener=function(A,B,C){A.detachEvent('on'+B,C);};FCKTools.AddEventListenerEx=function(A,B,C,D){var o={};o.Source=A;o.Params=D||[];o.Listener=function(ev){return C.apply(o.Source,[ev].concat(o.Params));};if (FCK.IECleanup) FCK.IECleanup.AddItem(null,function() { o.Source=null;o.Params=null;});A.attachEvent('on'+B,o.Listener);A=null;D=null;};FCKTools.GetViewPaneSize=function(A){var B;var C=A.document.documentElement;if (C&&C.clientWidth) B=C;else B=A.document.body;if (B) return { Width:B.clientWidth,Height:B.clientHeight };else return { Width:0,Height:0 };};FCKTools.SaveStyles=function(A){var B=FCKTools.ProtectFormStyles(A);var C={};if (A.className.length>0){C.Class=A.className;A.className='';};var D=A.style.cssText;if (D.length>0){C.Inline=D;A.style.cssText='';};FCKTools.RestoreFormStyles(A,B);return C;};FCKTools.RestoreStyles=function(A,B){var C=FCKTools.ProtectFormStyles(A);A.className=B.Class||'';A.style.cssText=B.Inline||'';FCKTools.RestoreFormStyles(A,C);};FCKTools.RegisterDollarFunction=function(A){A.$=A.document.getElementById;};FCKTools.AppendElement=function(A,B){return A.appendChild(this.GetElementDocument(A).createElement(B));};FCKTools.ToLowerCase=function(A){return A.toLowerCase();};
+var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='window.FCKeditorAPI = {Version : "2.6",VersionBuild : "18638",Instances : new Object(),GetInstance : function( name ){return this.Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.Instances ){var oEditor = FCKeditorAPI.Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue	: {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if(FCKBrowserInfo.IsAIR){FCKAdobeAIR.FCKeditorAPI_Evaluate(A,B);}else if (FCKBrowserInfo.IsSafari||FCKBrowserInfo.IsGecko19){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;FCKeditorAPI.__Instances=FCKeditorAPI.Instances;};FCKeditorAPI.Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){if (!window.FCKUnloadFlag) return;delete FCKeditorAPI.Instances[FCK.Name];};function FCKeditorAPI_ConfirmCleanup(){window.FCKUnloadFlag=true;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);FCKTools.AddEventListener(window,'beforeunload',FCKeditorAPI_ConfirmCleanup);
+var FCKImagePreloader=function(){this._Images=[];};FCKImagePreloader.prototype={AddImages:function(A){if (typeof(A)=='string') A=A.split(';');this._Images=this._Images.concat(A);},Start:function(){var A=this._Images;this._PreloadCount=A.length;for (var i=0;i<A.length;i++){var B=document.createElement('img');FCKTools.AddEventListenerEx(B,'load',_FCKImagePreloader_OnImage,this);FCKTools.AddEventListenerEx(B,'error',_FCKImagePreloader_OnImage,this);B.src=A[i];_FCKImagePreloader_ImageCache.push(B);}}};var _FCKImagePreloader_ImageCache=[];function _FCKImagePreloader_OnImage(A,B){if ((--B._PreloadCount)==0&&B.OnComplete) B.OnComplete();};
+var FCKRegexLib={AposEntity:/&apos;/gi,ObjectElements:/^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i,NamedCommands:/^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i,BeforeBody:/(^[\s\S]*\<body[^\>]*\>)/i,AfterBody:/(\<\/body\>[\s\S]*$)/i,ToReplace:/___fcktoreplace:([\w]+)/ig,MetaHttpEquiv:/http-equiv\s*=\s*["']?([^"' ]+)/i,HasBaseTag:/<base /i,HasBodyTag:/<body[\s|>]/i,HtmlOpener:/<html\s?[^>]*>/i,HeadOpener:/<head\s?[^>]*>/i,HeadCloser:/<\/head\s*>/i,FCK_Class:/\s*FCK__[^ ]*(?=\s+|$)/,ElementName:/(^[a-z_:][\w.\-:]*\w$)|(^[a-z_]$)/,ForceSimpleAmpersand:/___FCKAmp___/g,SpaceNoClose:/\/>/g,EmptyParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/,EmptyOutParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*|&nbsp;)(<\/\1>)?$/,TagBody:/></,GeckoEntitiesMarker:/#\?-\:/g,ProtectUrlsImg:/<img(?=\s).*?\ssrc=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsA:/<a(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsArea:/<area(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,Html4DocType:/HTML 4\.0 Transitional/i,DocTypeTag:/<!DOCTYPE[^>]*>/i,TagsWithEvent:/<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g,EventAttributes:/\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,ProtectedEvents:/\s\w+_fckprotectedatt="([^"]+)"/g,StyleProperties:/\S+\s*:/g,InvalidSelfCloseTags:/(<(?!base|meta|link|hr|br|param|img|area|input)([a-zA-Z0-9:]+)[^>]*)\/>/gi,StyleVariableAttName:/#\(\s*("|')(.+?)\1[^\)]*\s*\)/g,RegExp:/^\/(.*)\/([gim]*)$/,HtmlTag:/<[^\s<>](?:"[^"]*"|'[^']*'|[^<])*>/};
+var FCKListsLib={BlockElements:{ address:1,blockquote:1,center:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,marquee:1,noscript:1,ol:1,p:1,pre:1,script:1,table:1,ul:1 },NonEmptyBlockElements:{ p:1,div:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,address:1,pre:1,ol:1,ul:1,li:1,td:1,th:1 },InlineChildReqElements:{ abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },InlineNonEmptyElements:{ a:1,abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },EmptyElements:{ base:1,col:1,meta:1,link:1,hr:1,br:1,param:1,img:1,area:1,input:1 },PathBlockElements:{ address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,de:1 },PathBlockLimitElements:{ body:1,div:1,td:1,th:1,caption:1,form:1 },StyleBlockElements:{ address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1 },StyleObjectElements:{ img:1,hr:1,li:1,table:1,tr:1,td:1,embed:1,object:1,ol:1,ul:1 },NonEditableElements:{ button:1,option:1,script:1,iframe:1,textarea:1,object:1,embed:1,map:1,applet:1 },BlockBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1 },ListBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1,br:1 }};
+var FCKLanguageManager=FCK.Language={AvailableLanguages:{af:'Afrikaans',ar:'Arabic',bg:'Bulgarian',bn:'Bengali/Bangla',bs:'Bosnian',ca:'Catalan',cs:'Czech',da:'Danish',de:'German',el:'Greek',en:'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-uk':'English (United Kingdom)',eo:'Esperanto',es:'Spanish',et:'Estonian',eu:'Basque',fa:'Persian',fi:'Finnish',fo:'Faroese',fr:'French','fr-ca':'French (Canada)',gl:'Galician',he:'Hebrew',hi:'Hindi',hr:'Croatian',hu:'Hungarian',it:'Italian',ja:'Japanese',km:'Khmer',ko:'Korean',lt:'Lithuanian',lv:'Latvian',mn:'Mongolian',ms:'Malay',nb:'Norwegian Bokmal',nl:'Dutch',no:'Norwegian',pl:'Polish',pt:'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)',ro:'Romanian',ru:'Russian',sk:'Slovak',sl:'Slovenian',sr:'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)',sv:'Swedish',th:'Thai',tr:'Turkish',uk:'Ukrainian',vi:'Vietnamese',zh:'Chinese Traditional','zh-cn':'Chinese Simplified'},GetActiveLanguage:function(){if (FCKConfig.AutoDetectLanguage){var A;if (navigator.userLanguage) A=navigator.userLanguage.toLowerCase();else if (navigator.language) A=navigator.language.toLowerCase();else{return FCKConfig.DefaultLanguage;};if (A.length>=5){A=A.substr(0,5);if (this.AvailableLanguages[A]) return A;};if (A.length>=2){A=A.substr(0,2);if (this.AvailableLanguages[A]) return A;}};return this.DefaultLanguage;},TranslateElements:function(A,B,C,D){var e=A.getElementsByTagName(B);var E,s;for (var i=0;i<e.length;i++){if ((E=e[i].getAttribute('fckLang'))){if ((s=FCKLang[E])){if (D) s=FCKTools.HTMLEncode(s);e[i][C]=s;}}}},TranslatePage:function(A){this.TranslateElements(A,'INPUT','value');this.TranslateElements(A,'SPAN','innerHTML');this.TranslateElements(A,'LABEL','innerHTML');this.TranslateElements(A,'OPTION','innerHTML',true);this.TranslateElements(A,'LEGEND','innerHTML');},Initialize:function(){if (this.AvailableLanguages[FCKConfig.DefaultLanguage]) this.DefaultLanguage=FCKConfig.DefaultLanguage;else this.DefaultLanguage='en';this.ActiveLanguage={};this.ActiveLanguage.Code=this.GetActiveLanguage();this.ActiveLanguage.Name=this.AvailableLanguages[this.ActiveLanguage.Code];}};
 var FCKXHtmlEntities={};FCKXHtmlEntities.Initialize=function(){if (FCKXHtmlEntities.Entities) return;var A='';var B,e;if (FCKConfig.ProcessHTMLEntities){FCKXHtmlEntities.Entities={' ':'nbsp','¡':'iexcl','¢':'cent','£':'pound','¤':'curren','¥':'yen','¦':'brvbar','§':'sect','¨':'uml','©':'copy','ª':'ordf','«':'laquo','¬':'not','­':'shy','®':'reg','¯':'macr','°':'deg','±':'plusmn','²':'sup2','³':'sup3','´':'acute','µ':'micro','¶':'para','·':'middot','¸':'cedil','¹':'sup1','º':'ordm','»':'raquo','¼':'frac14','½':'frac12','¾':'frac34','¿':'iquest','×':'times','÷':'divide','ƒ':'fnof','•':'bull','…':'hellip','′':'prime','″':'Prime','‾':'oline','⁄':'frasl','℘':'weierp','ℑ':'image','ℜ':'real','™':'trade','ℵ':'alefsym','←':'larr','↑':'uarr','→':'rarr','↓':'darr','↔':'harr','↵':'crarr','⇐':'lArr','⇑':'uArr','⇒':'rArr','⇓':'dArr','⇔':'hArr','∀':'forall','∂':'part','∃':'exist','∅':'empty','∇':'nabla','∈':'isin','∉':'notin','∋':'ni','∏':'prod','∑':'sum','−':'minus','∗':'lowast','√':'radic','∝':'prop','∞':'infin','∠':'ang','∧':'and','∨':'or','∩':'cap','∪':'cup','∫':'int','∴':'there4','∼':'sim','≅':'cong','≈':'asymp','≠':'ne','≡':'equiv','≤':'le','≥':'ge','⊂':'sub','⊃':'sup','⊄':'nsub','⊆':'sube','⊇':'supe','⊕':'oplus','⊗':'otimes','⊥':'perp','⋅':'sdot','\u2308':'lceil','\u2309':'rceil','\u230a':'lfloor','\u230b':'rfloor','\u2329':'lang','\u232a':'rang','◊':'loz','♠':'spades','♣':'clubs','♥':'hearts','♦':'diams','"':'quot','ˆ':'circ','˜':'tilde',' ':'ensp',' ':'emsp',' ':'thinsp','‌':'zwnj','‍':'zwj','‎':'lrm','‏':'rlm','–':'ndash','—':'mdash','‘':'lsquo','’':'rsquo','‚':'sbquo','“':'ldquo','”':'rdquo','„':'bdquo','†':'dagger','‡':'Dagger','‰':'permil','‹':'lsaquo','›':'rsaquo','€':'euro'};for (e in FCKXHtmlEntities.Entities) A+=e;if (FCKConfig.IncludeLatinEntities){B={'À':'Agrave','Á':'Aacute','Â':'Acirc','Ã':'Atilde','Ä':'Auml','Å':'Aring','Æ':'AElig','Ç':'Ccedil','È':'Egrave','É':'Eacute','Ê':'Ecirc','Ë':'Euml','Ì':'Igrave','Í':'Iacute','Î':'Icirc','Ï':'Iuml','Ð':'ETH','Ñ':'Ntilde','Ò':'Ograve','Ó':'Oacute','Ô':'Ocirc','Õ':'Otilde','Ö':'Ouml','Ø':'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','ø':'oslash','ù':'ugrave','ú':'uacute','û':'ucirc','ü':'uuml','ý':'yacute','þ':'thorn','ÿ':'yuml','Œ':'OElig','œ':'oelig','Š':'Scaron','š':'scaron','Ÿ':'Yuml'};for (e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;};if (FCKConfig.IncludeGreekEntities){B={'Α':'Alpha','Β':'Beta','Γ':'Gamma','Δ':'Delta','Ε':'Epsilon','Ζ':'Zeta','Η':'Eta','Θ':'Theta','Ι':'Iota','Κ':'Kappa','Λ':'Lambda','Μ':'Mu','Ν':'Nu','Ξ':'Xi','Ο':'Omicron','Π':'Pi','Ρ':'Rho','Σ':'Sigma','Τ':'Tau','Υ':'Upsilon','Φ':'Phi','Χ':'Chi','Ψ':'Psi','Ω':'Omega','α':'alpha','β':'beta','γ':'gamma','δ':'delta','ε':'epsilon','ζ':'zeta','η':'eta','θ':'theta','ι':'iota','κ':'kappa','λ':'lambda','μ':'mu','ν':'nu','ξ':'xi','ο':'omicron','π':'pi','ρ':'rho','ς':'sigmaf','σ':'sigma','τ':'tau','υ':'upsilon','φ':'phi','χ':'chi','ψ':'psi','ω':'omega','\u03d1':'thetasym','\u03d2':'upsih','\u03d6':'piv'};for (e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;}}else{FCKXHtmlEntities.Entities={};A=' ';};var C='['+A+']';if (FCKConfig.ProcessNumericEntities) C='[^ -~]|'+C;var D=FCKConfig.AdditionalNumericEntities;if (D&&D.length>0) C+='|'+FCKConfig.AdditionalNumericEntities;FCKXHtmlEntities.EntitiesRegex=new RegExp(C,'g');};
-var FCKXHtml={};FCKXHtml.CurrentJobNum=0;FCKXHtml.GetXHTML=function(A,B,C){FCKDomTools.CheckAndRemovePaddingNode(A.ownerDocument,FCKConfig.EnterMode);FCKXHtmlEntities.Initialize();this._NbspEntity=(FCKConfig.ProcessHTMLEntities?'nbsp':'#160');var D=FCK.IsDirty();FCKXHtml.SpecialBlocks=[];this.XML=FCKTools.CreateXmlObject('DOMDocument');this.MainNode=this.XML.appendChild(this.XML.createElement('xhtml'));FCKXHtml.CurrentJobNum++;if (B) this._AppendNode(this.MainNode,A);else this._AppendChildNodes(this.MainNode,A,false);var E=this._GetMainXmlString();this.XML=null;if (FCKBrowserInfo.IsSafari) E=E.replace(/^<xhtml.*?>/,'<xhtml>');E=E.substr(7,E.length-15).Trim();E=E.replace(FCKRegexLib.SpaceNoClose,' />');if (FCKConfig.ForceSimpleAmpersand) E=E.replace(FCKRegexLib.ForceSimpleAmpersand,'&');if (C) E=FCKCodeFormatter.Format(E);for (var i=0;i<FCKXHtml.SpecialBlocks.length;i++){var F=new RegExp('___FCKsi___'+i);E=E.replace(F,FCKXHtml.SpecialBlocks[i]);};E=E.replace(FCKRegexLib.GeckoEntitiesMarker,'&');if (!D) FCK.ResetIsDirty();FCKDomTools.EnforcePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);return E;};FCKXHtml._AppendAttribute=function(A,B,C){try{if (C==undefined||C==null) C='';else if (C.replace){if (FCKConfig.ForceSimpleAmpersand) C=C.replace(/&/g,'___FCKAmp___');C=C.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity);};var D=this.XML.createAttribute(B);D.value=C;A.attributes.setNamedItem(D);}catch (e){}};FCKXHtml._AppendChildNodes=function(A,B,C){var D=B.firstChild;while (D){this._AppendNode(A,D);D=D.nextSibling;};if (C&&B.tagName&&B.tagName.toLowerCase()!='pre'){FCKDomTools.TrimNode(A);if (FCKConfig.FillEmptyBlocks){var E=A.lastChild;if (E&&E.nodeType==1&&E.nodeName=='br') this._AppendEntity(A,this._NbspEntity);}};if (A.childNodes.length==0){if (C&&FCKConfig.FillEmptyBlocks){this._AppendEntity(A,this._NbspEntity);return A;};var F=A.nodeName;if (FCKListsLib.InlineChildReqElements[F]) return null;if (!FCKListsLib.EmptyElements[F]) A.appendChild(this.XML.createTextNode(''));};return A;};FCKXHtml._AppendNode=function(A,B){if (!B) return false;switch (B.nodeType){case 1:if (FCKBrowserInfo.IsGecko&&B.tagName.toLowerCase()=='br'&&B.parentNode.tagName.toLowerCase()=='pre'){var C='\r';if (B==B.parentNode.firstChild) C+='\r';return FCKXHtml._AppendNode(A,this.XML.createTextNode(C));};if (B.getAttribute('_fckfakelement')) return FCKXHtml._AppendNode(A,FCK.GetRealElement(B));if (FCKBrowserInfo.IsGecko&&B.nextSibling&&(B.hasAttribute('_moz_editor_bogus_node')||B.getAttribute('type')=='_moz')) return false;if (B.getAttribute('_fcktemp')) return false;var D=B.tagName.toLowerCase();if (FCKBrowserInfo.IsIE){if (B.scopeName&&B.scopeName!='HTML'&&B.scopeName!='FCK') D=B.scopeName.toLowerCase()+':'+D;}else{if (D.StartsWith('fck:')) D=D.Remove(0,4);};if (!FCKRegexLib.ElementName.test(D)) return false;if (B._fckxhtmljob&&B._fckxhtmljob==FCKXHtml.CurrentJobNum) return false;var E=this.XML.createElement(D);FCKXHtml._AppendAttributes(A,B,E,D);B._fckxhtmljob=FCKXHtml.CurrentJobNum;var F=FCKXHtml.TagProcessors[D];if (F) E=F(E,B,A);else E=this._AppendChildNodes(E,B,Boolean(FCKListsLib.NonEmptyBlockElements[D]));if (!E) return false;A.appendChild(E);break;case 3:if (B.parentNode&&B.parentNode.nodeName.IEquals('pre')) return this._AppendTextNode(A,B.nodeValue);return this._AppendTextNode(A,B.nodeValue.ReplaceNewLineChars(' '));case 8:if (FCKBrowserInfo.IsIE&&!B.innerHTML) break;try { A.appendChild(this.XML.createComment(B.nodeValue));}catch (e) {/*Do nothing... probably this is a wrong format comment.*/};break;default:A.appendChild(this.XML.createComment("Element not supported - Type: "+B.nodeType+" Name: "+B.nodeName));break;};return true;};FCKXHtml._AppendSpecialItem=function(A){return '___FCKsi___'+FCKXHtml.SpecialBlocks.AddItem(A);};FCKXHtml._AppendEntity=function(A,B){A.appendChild(this.XML.createTextNode('#?-:'+B+';'));};FCKXHtml._AppendTextNode=function(A,B){var C=B.length>0;if (C) A.appendChild(this.XML.createTextNode(B.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity)));return C;};function FCKXHtml_GetEntity(A){var B=FCKXHtmlEntities.Entities[A]||('#'+A.charCodeAt(0));return '#?-:'+B+';';};FCKXHtml.TagProcessors={a:function(A,B){if (B.innerHTML.Trim().length==0&&!B.name) return false;var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);};A=FCKXHtml._AppendChildNodes(A,B,false);return A;},area:function(A,B){var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (!A.attributes.getNamedItem('coords')){var D=B.getAttribute('coords',2);if (D&&D!='0,0,0') FCKXHtml._AppendAttribute(A,'coords',D);};if (!A.attributes.getNamedItem('shape')){var E=B.getAttribute('shape',2);if (E&&E.length>0) FCKXHtml._AppendAttribute(A,'shape',E.toLowerCase());}};return A;},body:function(A,B){A=FCKXHtml._AppendChildNodes(A,B,false);A.removeAttribute('spellcheck');return A;},iframe:function(A,B){var C=B.innerHTML;if (FCKBrowserInfo.IsGecko) C=FCKTools.HTMLDecode(C);C=C.replace(/\s_fcksavedurl="[^"]*"/g,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},img:function(A,B){if (!A.attributes.getNamedItem('alt')) FCKXHtml._AppendAttribute(A,'alt','');var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'src',C);return A;},ol:function(A,B,C){if (B.innerHTML.Trim().length==0) return false;var D=C.lastChild;if (D&&D.nodeType==3) D=D.previousSibling;if (D&&D.nodeName.toUpperCase()=='LI'){B._fckxhtmljob=null;FCKXHtml._AppendNode(D,B);return false;};A=FCKXHtml._AppendChildNodes(A,B);return A;},pre:function (A,B){var C=B.firstChild;if (C&&C.nodeType==3) A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem('\r\n')));FCKXHtml._AppendChildNodes(A,B,true);return A;},script:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/javascript');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.text)));return A;},span:function(A,B){if (B.innerHTML.length==0) return false;A=FCKXHtml._AppendChildNodes(A,B,false);return A;},style:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/css');var C=B.innerHTML;if (FCKBrowserInfo.IsIE) C=C.replace(/^(\r\n|\n|\r)/,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},title:function(A,B){A.appendChild(FCKXHtml.XML.createTextNode(FCK.EditorDocument.title));return A;}};FCKXHtml.TagProcessors.ul=FCKXHtml.TagProcessors.ol;
-FCKXHtml._GetMainXmlString=function(){return this.MainNode.xml;};FCKXHtml._AppendAttributes=function(A,B,C,D){var E=B.attributes;for (var n=0;n<E.length;n++){var F=E[n];if (F.specified){var G=F.nodeName.toLowerCase();var H;if (G.StartsWith('_fck')) continue;else if (G=='style'){var I=FCKTools.ProtectFormStyles(B);H=B.style.cssText.replace(FCKRegexLib.StyleProperties,FCKTools.ToLowerCase);FCKTools.RestoreFormStyles(B,I);}else if (G=='class'){H=F.nodeValue.replace(FCKRegexLib.FCK_Class,'');if (H.length==0) continue;}else if (G.indexOf('on')==0) H=F.nodeValue;else if (D=='body'&&G=='contenteditable') continue;else if (F.nodeValue===true) H=G;else{try{H=B.getAttribute(G,2);}catch (e) {}};this._AppendAttribute(C,G,H||F.nodeValue);}}};FCKXHtml.TagProcessors['div']=function(A,B){if (B.align.length>0) FCKXHtml._AppendAttribute(A,'align',B.align);A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['font']=function(A,B){if (A.attributes.length==0) A=FCKXHtml.XML.createDocumentFragment();A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['form']=function(A,B){if (B.acceptCharset&&B.acceptCharset.length>0&&B.acceptCharset!='UNKNOWN') FCKXHtml._AppendAttribute(A,'accept-charset',B.acceptCharset);var C=B.attributes['name'];if (C&&C.value.length>0) FCKXHtml._AppendAttribute(A,'name',C.value);A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['input']=function(A,B){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);if (B.value&&!A.attributes.getNamedItem('value')) FCKXHtml._AppendAttribute(A,'value',B.value);if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text');return A;};FCKXHtml.TagProcessors['label']=function(A,B){if (B.htmlFor.length>0) FCKXHtml._AppendAttribute(A,'for',B.htmlFor);A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['map']=function(A,B){if (!A.attributes.getNamedItem('name')){var C=B.name;if (C) FCKXHtml._AppendAttribute(A,'name',C);};A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['meta']=function(A,B){var C=A.attributes.getNamedItem('http-equiv');if (C==null||C.value.length==0){var D=B.outerHTML.match(FCKRegexLib.MetaHttpEquiv);if (D){D=D[1];FCKXHtml._AppendAttribute(A,'http-equiv',D);}};return A;};FCKXHtml.TagProcessors['option']=function(A,B){if (B.selected&&!A.attributes.getNamedItem('selected')) FCKXHtml._AppendAttribute(A,'selected','selected');A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['textarea']=FCKXHtml.TagProcessors['select']=function(A,B){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);A=FCKXHtml._AppendChildNodes(A,B);return A;}
-var FCKCodeFormatter={};FCKCodeFormatter.Init=function(){var A=this.Regex={};A.BlocksOpener=/\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.BlocksCloser=/\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.NewLineTags=/\<(BR|HR)[^\>]*\>/gi;A.MainTags=/\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi;A.LineSplitter=/\s*\n+\s*/g;A.IncreaseIndent=/^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \/\>]/i;A.DecreaseIndent=/^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \>]/i;A.FormatIndentatorRemove=new RegExp('^'+FCKConfig.FormatIndentator);A.ProtectedTags=/(<PRE[^>]*>)([\s\S]*?)(<\/PRE>)/gi;};FCKCodeFormatter._ProtectData=function(A,B,C,D){return B+'___FCKpd___'+FCKCodeFormatter.ProtectedData.AddItem(C)+D;};FCKCodeFormatter.Format=function(A){if (!this.Regex) this.Init();FCKCodeFormatter.ProtectedData=[];var B=A.replace(this.Regex.ProtectedTags,FCKCodeFormatter._ProtectData);B=B.replace(this.Regex.BlocksOpener,'\n$&');B=B.replace(this.Regex.BlocksCloser,'$&\n');B=B.replace(this.Regex.NewLineTags,'$&\n');B=B.replace(this.Regex.MainTags,'\n$&\n');var C='';var D=B.split(this.Regex.LineSplitter);B='';for (var i=0;i<D.length;i++){var E=D[i];if (E.length==0) continue;if (this.Regex.DecreaseIndent.test(E)) C=C.replace(this.Regex.FormatIndentatorRemove,'');B+=C+E+'\n';if (this.Regex.IncreaseIndent.test(E)) C+=FCKConfig.FormatIndentator;};for (var j=0;j<FCKCodeFormatter.ProtectedData.length;j++){var F=new RegExp('___FCKpd___'+j);B=B.replace(F,FCKCodeFormatter.ProtectedData[j].replace(/\$/g,'$$$$'));};return B.Trim();}
-var FCKUndo={};FCKUndo.SavedData=[];FCKUndo.CurrentIndex=-1;FCKUndo.TypesCount=0;FCKUndo.Changed=false;FCKUndo.MaxTypes=25;FCKUndo.Typing=false;FCKUndo.SaveLocked=false;FCKUndo._GetBookmark=function(){var A=new FCKDomRange(FCK.EditorWindow);try{A.MoveToSelection();}catch (e){return null;};if (FCKBrowserInfo.IsIE){var B=A.CreateBookmark();var C=FCK.EditorDocument.body.innerHTML;A.MoveToBookmark(B);return [B,C];};return A.CreateBookmark2();};FCKUndo._SelectBookmark=function(A){if (!A) return;var B=new FCKDomRange(FCK.EditorWindow);if (A instanceof Object){if (FCKBrowserInfo.IsIE) B.MoveToBookmark(A[0]);else B.MoveToBookmark2(A);try{B.Select();}catch (e){B.MoveToPosition(FCK.EditorDocument.body,4);B.Select();}}};FCKUndo._CompareCursors=function(A,B){for (var i=0;i<Math.min(A.length,B.length);i++){if (A[i]<B[i]) return-1;else if (A[i]>B[i]) return 1;};if (A.length<B.length) return-1;else if (A.length>B.length) return 1;return 0;};FCKUndo._CheckIsBookmarksEqual=function(A,B){if (!(A&&B)) return false;if (FCKBrowserInfo.IsIE){var C=A[1].search(A[0].StartId);var D=B[1].search(B[0].StartId);var E=A[1].search(A[0].EndId);var F=B[1].search(B[0].EndId);return C==D&&E==F;}else{return this._CompareCursors(A.Start,B.Start)==0&&this._CompareCursors(A.End,B.End)==0;}};FCKUndo.SaveUndoStep=function(){if (FCK.EditMode!=0||this.SaveLocked) return;if (this.SavedData.length) this.Changed=true;var A=FCK.EditorDocument.body.innerHTML;var B=this._GetBookmark();this.SavedData=this.SavedData.slice(0,this.CurrentIndex+1);if (this.CurrentIndex>0&&A==this.SavedData[this.CurrentIndex][0]&&this._CheckIsBookmarksEqual(B,this.SavedData[this.CurrentIndex][1])) return;else if (this.CurrentIndex==0&&this.SavedData.length&&A==this.SavedData[0][0]){this.SavedData[0][1]=B;return;};if (this.CurrentIndex+1>=FCKConfig.MaxUndoLevels) this.SavedData.shift();else this.CurrentIndex++;this.SavedData[this.CurrentIndex]=[A,B];FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.CheckUndoState=function(){return (this.Changed||this.CurrentIndex>0);};FCKUndo.CheckRedoState=function(){return (this.CurrentIndex<(this.SavedData.length-1));};FCKUndo.Undo=function(){if (this.CheckUndoState()){if (this.CurrentIndex==(this.SavedData.length-1)){this.SaveUndoStep();};this._ApplyUndoLevel(--this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo.Redo=function(){if (this.CheckRedoState()){this._ApplyUndoLevel(++this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo._ApplyUndoLevel=function(A){var B=this.SavedData[A];if (!B) return;if (FCKBrowserInfo.IsIE){if (B[1]&&B[1][1]) FCK.SetInnerHtml(B[1][1]);else FCK.SetInnerHtml(B[0]);}else FCK.EditorDocument.body.innerHTML=B[0];this._SelectBookmark(B[1]);this.TypesCount=0;this.Changed=false;this.Typing=false;};
-var FCKEditingArea=function(A){this.TargetElement=A;this.Mode=0;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKEditingArea_Cleanup);};FCKEditingArea.prototype.Start=function(A,B){var C=this.TargetElement;var D=FCKTools.GetElementDocument(C);var E;while((E=C.firstChild)){if (E.contentWindow) E.contentWindow.document.body.innerHTML='';C.removeChild(E);};if (this.Mode==0){var F=this.IFrame=D.createElement('iframe');if (!FCKBrowserInfo.IsGecko) F.src='javascript:void(0)';F.frameBorder=0;F.width=F.height='100%';C.appendChild(F);if (FCKBrowserInfo.IsIE) A=A.replace(/(<base[^>]*?)\s*\/?>(?!\s*<\/base>)/gi,'$1></base>');else if (!B){var G=A.match(FCKRegexLib.BeforeBody);var H=A.match(FCKRegexLib.AfterBody);if (G&&H){var I=A.substr(G[1].length,A.length-G[1].length-H[1].length);A=G[1]+'&nbsp;'+H[1];if (FCKBrowserInfo.IsGecko&&(I.length==0||FCKRegexLib.EmptyParagraph.test(I))) I='<br type="_moz">';this._BodyHTML=I;}else this._BodyHTML=A;};this.Window=F.contentWindow;var J=this.Document=this.Window.document;J.open();J.write(A);J.close();if (FCKBrowserInfo.IsGecko10&&!B){this.Start(A,true);return;};this.Window._FCKEditingArea=this;if (FCKBrowserInfo.IsGecko10) this.Window.setTimeout(FCKEditingArea_CompleteStart,500);else FCKEditingArea_CompleteStart.call(this.Window);}else{var K=this.Textarea=D.createElement('textarea');K.className='SourceField';K.dir='ltr';FCKDomTools.SetElementStyles(K,{width:'100%',height:'100%',border:'none',resize:'none',outline:'none'});C.appendChild(K);K.value=A;FCKTools.RunFunction(this.OnLoad);}};function FCKEditingArea_CompleteStart(){if (!this.document.body){this.setTimeout(FCKEditingArea_CompleteStart,50);return;};var A=this._FCKEditingArea;A.MakeEditable();FCKTools.RunFunction(A.OnLoad);};FCKEditingArea.prototype.MakeEditable=function(){var A=this.Document;if (FCKBrowserInfo.IsIE){A.body.disabled=true;A.body.contentEditable=true;A.body.removeAttribute("disabled");}else{try{A.body.spellcheck=(this.FFSpellChecker!==false);if (this._BodyHTML){A.body.innerHTML=this._BodyHTML;this._BodyHTML=null;};A.designMode='on';A.execCommand('enableObjectResizing',false,!FCKConfig.DisableObjectResizing);A.execCommand('enableInlineTableEditing',false,!FCKConfig.DisableFFTableHandles);}catch (e){FCKTools.AddEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);}}};function FCKEditingArea_Document_AttributeNodeModified(A){var B=A.currentTarget.contentWindow._FCKEditingArea;if (B._timer) window.clearTimeout(B._timer);B._timer=FCKTools.SetTimeout(FCKEditingArea_MakeEditableByMutation,1000,B);};function FCKEditingArea_MakeEditableByMutation(){delete this._timer;FCKTools.RemoveEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);this.MakeEditable();};FCKEditingArea.prototype.Focus=function(){try{if (this.Mode==0){if (FCKBrowserInfo.IsIE&&this.Document.hasFocus()) this._EnsureFocusIE();this.Window.focus();if (FCKBrowserInfo.IsIE) this._EnsureFocusIE();}else{var A=FCKTools.GetElementDocument(this.Textarea);if ((!A.hasFocus||A.hasFocus())&&A.activeElement==this.Textarea) return;this.Textarea.focus();}}catch(e) {}};FCKEditingArea.prototype._EnsureFocusIE=function(){this.Document.body.setActive();var A=this.Document.selection.createRange();var B=A.parentElement();var C=B.nodeName.toLowerCase();if (B.childNodes.length>0||!(FCKListsLib.BlockElements[C]||FCKListsLib.NonEmptyBlockElements[C])){return;};A.moveEnd("character",1);A.select();if (A.boundingWidth>0){A.moveEnd("character",-1);A.select();}};function FCKEditingArea_Cleanup(){if (this.Document) this.Document.body.innerHTML="";this.TargetElement=null;this.IFrame=null;this.Document=null;this.Textarea=null;if (this.Window){this.Window._FCKEditingArea=null;this.Window=null;}};
+var FCKXHtml={};FCKXHtml.CurrentJobNum=0;FCKXHtml.GetXHTML=function(A,B,C){FCKDomTools.CheckAndRemovePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);FCKXHtmlEntities.Initialize();this._NbspEntity=(FCKConfig.ProcessHTMLEntities?'nbsp':'#160');var D=FCK.IsDirty();FCKXHtml.SpecialBlocks=[];this.XML=FCKTools.CreateXmlObject('DOMDocument');this.MainNode=this.XML.appendChild(this.XML.createElement('xhtml'));FCKXHtml.CurrentJobNum++;if (B) this._AppendNode(this.MainNode,A);else this._AppendChildNodes(this.MainNode,A,false);var E=this._GetMainXmlString();this.XML=null;if (FCKBrowserInfo.IsSafari) E=E.replace(/^<xhtml.*?>/,'<xhtml>');E=E.substr(7,E.length-15).Trim();E=E.replace(FCKRegexLib.SpaceNoClose,' />');if (FCKConfig.ForceSimpleAmpersand) E=E.replace(FCKRegexLib.ForceSimpleAmpersand,'&');if (C) E=FCKCodeFormatter.Format(E);for (var i=0;i<FCKXHtml.SpecialBlocks.length;i++){var F=new RegExp('___FCKsi___'+i);E=E.replace(F,FCKXHtml.SpecialBlocks[i]);};E=E.replace(FCKRegexLib.GeckoEntitiesMarker,'&');if (!D) FCK.ResetIsDirty();FCKDomTools.EnforcePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);return E;};FCKXHtml._AppendAttribute=function(A,B,C){try{if (C==undefined||C==null) C='';else if (C.replace){if (FCKConfig.ForceSimpleAmpersand) C=C.replace(/&/g,'___FCKAmp___');C=C.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity);};var D=this.XML.createAttribute(B);D.value=C;A.attributes.setNamedItem(D);}catch (e){}};FCKXHtml._AppendChildNodes=function(A,B,C){var D=B.firstChild;while (D){this._AppendNode(A,D);D=D.nextSibling;};if (C&&B.tagName&&B.tagName.toLowerCase()!='pre'){FCKDomTools.TrimNode(A);if (FCKConfig.FillEmptyBlocks){var E=A.lastChild;if (E&&E.nodeType==1&&E.nodeName=='br') this._AppendEntity(A,this._NbspEntity);}};if (A.childNodes.length==0){if (C&&FCKConfig.FillEmptyBlocks){this._AppendEntity(A,this._NbspEntity);return A;};var F=A.nodeName;if (FCKListsLib.InlineChildReqElements[F]) return null;if (!FCKListsLib.EmptyElements[F]) A.appendChild(this.XML.createTextNode(''));};return A;};FCKXHtml._AppendNode=function(A,B){if (!B) return false;switch (B.nodeType){case 1:if (FCKBrowserInfo.IsGecko&&B.tagName.toLowerCase()=='br'&&B.parentNode.tagName.toLowerCase()=='pre'){var C='\r';if (B==B.parentNode.firstChild) C+='\r';return FCKXHtml._AppendNode(A,this.XML.createTextNode(C));};if (B.getAttribute('_fckfakelement')) return FCKXHtml._AppendNode(A,FCK.GetRealElement(B));if (FCKBrowserInfo.IsGecko&&B.nextSibling&&(B.hasAttribute('_moz_editor_bogus_node')||B.getAttribute('type')=='_moz')) return false;if (B.getAttribute('_fcktemp')) return false;var D=B.tagName.toLowerCase();if (FCKBrowserInfo.IsIE){if (B.scopeName&&B.scopeName!='HTML'&&B.scopeName!='FCK') D=B.scopeName.toLowerCase()+':'+D;}else{if (D.StartsWith('fck:')) D=D.Remove(0,4);};if (!FCKRegexLib.ElementName.test(D)) return false;if (B._fckxhtmljob&&B._fckxhtmljob==FCKXHtml.CurrentJobNum) return false;var E=this.XML.createElement(D);FCKXHtml._AppendAttributes(A,B,E,D);B._fckxhtmljob=FCKXHtml.CurrentJobNum;var F=FCKXHtml.TagProcessors[D];if (F) E=F(E,B,A);else E=this._AppendChildNodes(E,B,Boolean(FCKListsLib.NonEmptyBlockElements[D]));if (!E) return false;A.appendChild(E);break;case 3:if (B.parentNode&&B.parentNode.nodeName.IEquals('pre')) return this._AppendTextNode(A,B.nodeValue);return this._AppendTextNode(A,B.nodeValue.ReplaceNewLineChars(' '));case 8:if (FCKBrowserInfo.IsIE&&!B.innerHTML) break;try { A.appendChild(this.XML.createComment(B.nodeValue));}catch (e) {/*Do nothing... probably this is a wrong format comment.*/};break;default:A.appendChild(this.XML.createComment("Element not supported - Type: "+B.nodeType+" Name: "+B.nodeName));break;};return true;};FCKXHtml._AppendSpecialItem=function(A){return '___FCKsi___'+FCKXHtml.SpecialBlocks.AddItem(A);};FCKXHtml._AppendEntity=function(A,B){A.appendChild(this.XML.createTextNode('#?-:'+B+';'));};FCKXHtml._AppendTextNode=function(A,B){var C=B.length>0;if (C) A.appendChild(this.XML.createTextNode(B.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity)));return C;};function FCKXHtml_GetEntity(A){var B=FCKXHtmlEntities.Entities[A]||('#'+A.charCodeAt(0));return '#?-:'+B+';';};FCKXHtml.TagProcessors={a:function(A,B){if (B.innerHTML.Trim().length==0&&!B.name) return false;var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);};A=FCKXHtml._AppendChildNodes(A,B,false);return A;},area:function(A,B){var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (!A.attributes.getNamedItem('coords')){var D=B.getAttribute('coords',2);if (D&&D!='0,0,0') FCKXHtml._AppendAttribute(A,'coords',D);};if (!A.attributes.getNamedItem('shape')){var E=B.getAttribute('shape',2);if (E&&E.length>0) FCKXHtml._AppendAttribute(A,'shape',E.toLowerCase());}};return A;},body:function(A,B){A=FCKXHtml._AppendChildNodes(A,B,false);A.removeAttribute('spellcheck');return A;},iframe:function(A,B){var C=B.innerHTML;if (FCKBrowserInfo.IsGecko) C=FCKTools.HTMLDecode(C);C=C.replace(/\s_fcksavedurl="[^"]*"/g,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},img:function(A,B){if (!A.attributes.getNamedItem('alt')) FCKXHtml._AppendAttribute(A,'alt','');var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'src',C);return A;},li:function(A,B,C){if (C.nodeName.IEquals(['ul','ol'])) return FCKXHtml._AppendChildNodes(A,B,true);var D=FCKXHtml.XML.createElement('ul');B._fckxhtmljob=null;do{FCKXHtml._AppendNode(D,B);do{B=FCKDomTools.GetNextSibling(B);} while (B&&B.nodeType==3&&B.nodeValue.Trim().length==0)}	while (B&&B.nodeName.toLowerCase()=='li') return D;},ol:function(A,B,C){if (B.innerHTML.Trim().length==0) return false;var D=C.lastChild;if (D&&D.nodeType==3) D=D.previousSibling;if (D&&D.nodeName.toUpperCase()=='LI'){B._fckxhtmljob=null;FCKXHtml._AppendNode(D,B);return false;};A=FCKXHtml._AppendChildNodes(A,B);return A;},pre:function (A,B){var C=B.firstChild;if (C&&C.nodeType==3) A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem('\r\n')));FCKXHtml._AppendChildNodes(A,B,true);return A;},script:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/javascript');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.text)));return A;},span:function(A,B){if (B.innerHTML.length==0) return false;A=FCKXHtml._AppendChildNodes(A,B,false);return A;},style:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/css');var C=B.innerHTML;if (FCKBrowserInfo.IsIE) C=C.replace(/^(\r\n|\n|\r)/,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},title:function(A,B){A.appendChild(FCKXHtml.XML.createTextNode(FCK.EditorDocument.title));return A;}};FCKXHtml.TagProcessors.ul=FCKXHtml.TagProcessors.ol;
+FCKXHtml._GetMainXmlString=function(){return this.MainNode.xml;};FCKXHtml._AppendAttributes=function(A,B,C,D){var E=B.attributes;for (var n=0;n<E.length;n++){var F=E[n];if (F.specified){var G=F.nodeName.toLowerCase();var H;if (G.StartsWith('_fck')) continue;else if (G=='style'){var I=FCKTools.ProtectFormStyles(B);H=B.style.cssText.replace(FCKRegexLib.StyleProperties,FCKTools.ToLowerCase);FCKTools.RestoreFormStyles(B,I);}else if (G=='class'){H=F.nodeValue.replace(FCKRegexLib.FCK_Class,'');if (H.length==0) continue;}else if (G.indexOf('on')==0) H=F.nodeValue;else if (D=='body'&&G=='contenteditable') continue;else if (F.nodeValue===true) H=G;else{try{H=B.getAttribute(G,2);}catch (e) {}};this._AppendAttribute(C,G,H||F.nodeValue);}}};FCKXHtml.TagProcessors['div']=function(A,B){if (B.align.length>0) FCKXHtml._AppendAttribute(A,'align',B.align);A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['font']=function(A,B){if (A.attributes.length==0) A=FCKXHtml.XML.createDocumentFragment();A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['form']=function(A,B){if (B.acceptCharset&&B.acceptCharset.length>0&&B.acceptCharset!='UNKNOWN') FCKXHtml._AppendAttribute(A,'accept-charset',B.acceptCharset);var C=B.attributes['name'];if (C&&C.value.length>0) FCKXHtml._AppendAttribute(A,'name',C.value);A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['input']=function(A,B){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);if (B.value&&!A.attributes.getNamedItem('value')) FCKXHtml._AppendAttribute(A,'value',B.value);if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text');return A;};FCKXHtml.TagProcessors['label']=function(A,B){if (B.htmlFor.length>0) FCKXHtml._AppendAttribute(A,'for',B.htmlFor);A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['map']=function(A,B){if (!A.attributes.getNamedItem('name')){var C=B.name;if (C) FCKXHtml._AppendAttribute(A,'name',C);};A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['meta']=function(A,B){var C=A.attributes.getNamedItem('http-equiv');if (C==null||C.value.length==0){var D=B.outerHTML.match(FCKRegexLib.MetaHttpEquiv);if (D){D=D[1];FCKXHtml._AppendAttribute(A,'http-equiv',D);}};return A;};FCKXHtml.TagProcessors['option']=function(A,B){if (B.selected&&!A.attributes.getNamedItem('selected')) FCKXHtml._AppendAttribute(A,'selected','selected');A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['textarea']=FCKXHtml.TagProcessors['select']=function(A,B){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);A=FCKXHtml._AppendChildNodes(A,B);return A;};
+var FCKCodeFormatter={};FCKCodeFormatter.Init=function(){var A=this.Regex={};A.BlocksOpener=/\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.BlocksCloser=/\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.NewLineTags=/\<(BR|HR)[^\>]*\>/gi;A.MainTags=/\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi;A.LineSplitter=/\s*\n+\s*/g;A.IncreaseIndent=/^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \/\>]/i;A.DecreaseIndent=/^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \>]/i;A.FormatIndentatorRemove=new RegExp('^'+FCKConfig.FormatIndentator);A.ProtectedTags=/(<PRE[^>]*>)([\s\S]*?)(<\/PRE>)/gi;};FCKCodeFormatter._ProtectData=function(A,B,C,D){return B+'___FCKpd___'+FCKCodeFormatter.ProtectedData.AddItem(C)+D;};FCKCodeFormatter.Format=function(A){if (!this.Regex) this.Init();FCKCodeFormatter.ProtectedData=[];var B=A.replace(this.Regex.ProtectedTags,FCKCodeFormatter._ProtectData);B=B.replace(this.Regex.BlocksOpener,'\n$&');B=B.replace(this.Regex.BlocksCloser,'$&\n');B=B.replace(this.Regex.NewLineTags,'$&\n');B=B.replace(this.Regex.MainTags,'\n$&\n');var C='';var D=B.split(this.Regex.LineSplitter);B='';for (var i=0;i<D.length;i++){var E=D[i];if (E.length==0) continue;if (this.Regex.DecreaseIndent.test(E)) C=C.replace(this.Regex.FormatIndentatorRemove,'');B+=C+E+'\n';if (this.Regex.IncreaseIndent.test(E)) C+=FCKConfig.FormatIndentator;};for (var j=0;j<FCKCodeFormatter.ProtectedData.length;j++){var F=new RegExp('___FCKpd___'+j);B=B.replace(F,FCKCodeFormatter.ProtectedData[j].replace(/\$/g,'$$$$'));};return B.Trim();};
+var FCKUndo={};FCKUndo.SavedData=[];FCKUndo.CurrentIndex=-1;FCKUndo.TypesCount=0;FCKUndo.Changed=false;FCKUndo.MaxTypes=25;FCKUndo.Typing=false;FCKUndo.SaveLocked=false;FCKUndo._GetBookmark=function(){FCKSelection.Restore();var A=new FCKDomRange(FCK.EditorWindow);try{A.MoveToSelection();}catch (e){return null;};if (FCKBrowserInfo.IsIE){var B=A.CreateBookmark();var C=FCK.EditorDocument.body.innerHTML;A.MoveToBookmark(B);return [B,C];};return A.CreateBookmark2();};FCKUndo._SelectBookmark=function(A){if (!A) return;var B=new FCKDomRange(FCK.EditorWindow);if (A instanceof Object){if (FCKBrowserInfo.IsIE) B.MoveToBookmark(A[0]);else B.MoveToBookmark2(A);try{B.Select();}catch (e){B.MoveToPosition(FCK.EditorDocument.body,4);B.Select();}}};FCKUndo._CompareCursors=function(A,B){for (var i=0;i<Math.min(A.length,B.length);i++){if (A[i]<B[i]) return-1;else if (A[i]>B[i]) return 1;};if (A.length<B.length) return-1;else if (A.length>B.length) return 1;return 0;};FCKUndo._CheckIsBookmarksEqual=function(A,B){if (!(A&&B)) return false;if (FCKBrowserInfo.IsIE){var C=A[1].search(A[0].StartId);var D=B[1].search(B[0].StartId);var E=A[1].search(A[0].EndId);var F=B[1].search(B[0].EndId);return C==D&&E==F;}else{return this._CompareCursors(A.Start,B.Start)==0&&this._CompareCursors(A.End,B.End)==0;}};FCKUndo.SaveUndoStep=function(){if (FCK.EditMode!=0||this.SaveLocked) return;if (this.SavedData.length) this.Changed=true;var A=FCK.EditorDocument.body.innerHTML;var B=this._GetBookmark();this.SavedData=this.SavedData.slice(0,this.CurrentIndex+1);if (this.CurrentIndex>0&&A==this.SavedData[this.CurrentIndex][0]&&this._CheckIsBookmarksEqual(B,this.SavedData[this.CurrentIndex][1])) return;else if (this.CurrentIndex==0&&this.SavedData.length&&A==this.SavedData[0][0]){this.SavedData[0][1]=B;return;};if (this.CurrentIndex+1>=FCKConfig.MaxUndoLevels) this.SavedData.shift();else this.CurrentIndex++;this.SavedData[this.CurrentIndex]=[A,B];FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.CheckUndoState=function(){return (this.Changed||this.CurrentIndex>0);};FCKUndo.CheckRedoState=function(){return (this.CurrentIndex<(this.SavedData.length-1));};FCKUndo.Undo=function(){if (this.CheckUndoState()){if (this.CurrentIndex==(this.SavedData.length-1)){this.SaveUndoStep();};this._ApplyUndoLevel(--this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo.Redo=function(){if (this.CheckRedoState()){this._ApplyUndoLevel(++this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo._ApplyUndoLevel=function(A){var B=this.SavedData[A];if (!B) return;if (FCKBrowserInfo.IsIE){if (B[1]&&B[1][1]) FCK.SetInnerHtml(B[1][1]);else FCK.SetInnerHtml(B[0]);}else FCK.EditorDocument.body.innerHTML=B[0];this._SelectBookmark(B[1]);this.TypesCount=0;this.Changed=false;this.Typing=false;};
+var FCKEditingArea=function(A){this.TargetElement=A;this.Mode=0;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKEditingArea_Cleanup);};FCKEditingArea.prototype.Start=function(A,B){var C=this.TargetElement;var D=FCKTools.GetElementDocument(C);while(C.firstChild) C.removeChild(C.firstChild);if (this.Mode==0){if (FCK_IS_CUSTOM_DOMAIN) A='<script>document.domain="'+FCK_RUNTIME_DOMAIN+'";</script>'+A;if (FCKBrowserInfo.IsIE) A=A.replace(/(<base[^>]*?)\s*\/?>(?!\s*<\/base>)/gi,'$1></base>');else if (!B){var E=A.match(FCKRegexLib.BeforeBody);var F=A.match(FCKRegexLib.AfterBody);if (E&&F){var G=A.substr(E[1].length,A.length-E[1].length-F[1].length);A=E[1]+'&nbsp;'+F[1];if (FCKBrowserInfo.IsGecko&&(G.length==0||FCKRegexLib.EmptyParagraph.test(G))) G='<br type="_moz">';this._BodyHTML=G;}else this._BodyHTML=A;};var H=this.IFrame=D.createElement('iframe');var I='<script type="text/javascript" _fcktemp="true">window.onerror=function(){return true;};</script>';H.frameBorder=0;H.width=H.height='100%';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=I+A;H.src='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.parent._FCKHtmlToLoad );document.close() ;window.parent._FCKHtmlToLoad = null ;})() )';}else if (!FCKBrowserInfo.IsGecko){H.src='javascript:void(0)';};C.appendChild(H);this.Window=H.contentWindow;if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){var J=this.Window.document;J.open();J.write(I+A);J.close();};if (FCKBrowserInfo.IsAIR) FCKAdobeAIR.EditingArea_Start(J,A);if (FCKBrowserInfo.IsGecko10&&!B){this.Start(A,true);return;};if (H.readyState&&H.readyState!='completed'){var K=this;(H.onreadystatechange=function(){if (H.readyState=='complete'){H.onreadystatechange=null;K.Window._FCKEditingArea=K;FCKEditingArea_CompleteStart.call(K.Window);}})();}else{this.Window._FCKEditingArea=this;if (FCKBrowserInfo.IsGecko10) this.Window.setTimeout(FCKEditingArea_CompleteStart,500);else FCKEditingArea_CompleteStart.call(this.Window);}}else{var L=this.Textarea=D.createElement('textarea');L.className='SourceField';L.dir='ltr';FCKDomTools.SetElementStyles(L,{width:'100%',height:'100%',border:'none',resize:'none',outline:'none'});C.appendChild(L);L.value=A;FCKTools.RunFunction(this.OnLoad);}};function FCKEditingArea_CompleteStart(){if (!this.document.body){this.setTimeout(FCKEditingArea_CompleteStart,50);return;};var A=this._FCKEditingArea;A.Document=A.Window.document;A.MakeEditable();FCKTools.RunFunction(A.OnLoad);};FCKEditingArea.prototype.MakeEditable=function(){var A=this.Document;if (FCKBrowserInfo.IsIE){A.body.disabled=true;A.body.contentEditable=true;A.body.removeAttribute("disabled");}else{try{A.body.spellcheck=(this.FFSpellChecker!==false);if (this._BodyHTML){A.body.innerHTML=this._BodyHTML;this._BodyHTML=null;};A.designMode='on';A.execCommand('enableObjectResizing',false,!FCKConfig.DisableObjectResizing);A.execCommand('enableInlineTableEditing',false,!FCKConfig.DisableFFTableHandles);}catch (e){FCKTools.AddEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);}}};function FCKEditingArea_Document_AttributeNodeModified(A){var B=A.currentTarget.contentWindow._FCKEditingArea;if (B._timer) window.clearTimeout(B._timer);B._timer=FCKTools.SetTimeout(FCKEditingArea_MakeEditableByMutation,1000,B);};function FCKEditingArea_MakeEditableByMutation(){delete this._timer;FCKTools.RemoveEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);this.MakeEditable();};FCKEditingArea.prototype.Focus=function(){try{if (this.Mode==0){if (FCKBrowserInfo.IsIE) this._FocusIE();else this.Window.focus();}else{var A=FCKTools.GetElementDocument(this.Textarea);if ((!A.hasFocus||A.hasFocus())&&A.activeElement==this.Textarea) return;this.Textarea.focus();}}catch(e) {}};FCKEditingArea.prototype._FocusIE=function(){this.Document.body.setActive();this.Window.focus();var A=this.Document.selection.createRange();var B=A.parentElement();var C=B.nodeName.toLowerCase();if (B.childNodes.length>0||!(FCKListsLib.BlockElements[C]||FCKListsLib.NonEmptyBlockElements[C])){return;};A=new FCKDomRange(this.Window);A.MoveToElementEditStart(B);A.Select();};function FCKEditingArea_Cleanup(){if (this.Document) this.Document.body.innerHTML="";this.TargetElement=null;this.IFrame=null;this.Document=null;this.Textarea=null;if (this.Window){this.Window._FCKEditingArea=null;this.Window=null;}};
 var FCKKeystrokeHandler=function(A){this.Keystrokes={};this.CancelCtrlDefaults=(A!==false);};FCKKeystrokeHandler.prototype.AttachToElement=function(A){FCKTools.AddEventListenerEx(A,'keydown',_FCKKeystrokeHandler_OnKeyDown,this);if (FCKBrowserInfo.IsGecko10||FCKBrowserInfo.IsOpera||(FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac)) FCKTools.AddEventListenerEx(A,'keypress',_FCKKeystrokeHandler_OnKeyPress,this);};FCKKeystrokeHandler.prototype.SetKeystrokes=function(){for (var i=0;i<arguments.length;i++){var A=arguments[i];if (!A) continue;if (typeof(A[0])=='object') this.SetKeystrokes.apply(this,A);else{if (A.length==1) delete this.Keystrokes[A[0]];else this.Keystrokes[A[0]]=A[1]===true?true:A;}}};function _FCKKeystrokeHandler_OnKeyDown(A,B){var C=A.keyCode||A.which;var D=0;if (A.ctrlKey||A.metaKey) D+=CTRL;if (A.shiftKey) D+=SHIFT;if (A.altKey) D+=ALT;var E=C+D;var F=B._CancelIt=false;var G=B.Keystrokes[E];if (G){if (G===true||!(B.OnKeystroke&&B.OnKeystroke.apply(B,G))) return true;F=true;};if (F||(B.CancelCtrlDefaults&&D==CTRL&&(C<33||C>40))){B._CancelIt=true;if (A.preventDefault) return A.preventDefault();A.returnValue=false;A.cancelBubble=true;return false;};return true;};function _FCKKeystrokeHandler_OnKeyPress(A,B){if (B._CancelIt){if (A.preventDefault) return A.preventDefault();return false;};return true;};
-FCK.DTD=(function(){X=FCKTools.Merge;var A,L,J,M,N,O,D,H,P,K,Q,F,G,C,B,E,I;A={isindex:1,fieldset:1};B={input:1,button:1,select:1,textarea:1,label:1};C=X({a:1},B);D=X({iframe:1},C);E={hr:1,ul:1,menu:1,div:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1};F={ins:1,del:1,script:1};G=X({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1},F);H=X({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1},G);I=X({p:1},H);J=X({iframe:1},H,B);K={img:1,noscript:1,br:1,kbd:1,center:1,button:1,basefont:1,h5:1,h4:1,samp:1,h6:1,ol:1,h1:1,h3:1,h2:1,form:1,font:1,'#':1,select:1,menu:1,ins:1,abbr:1,label:1,code:1,table:1,script:1,cite:1,input:1,iframe:1,strong:1,textarea:1,noframes:1,big:1,small:1,span:1,hr:1,sub:1,bdo:1,'var':1,div:1,object:1,sup:1,strike:1,dir:1,map:1,dl:1,applet:1,del:1,isindex:1,fieldset:1,ul:1,b:1,acronym:1,a:1,blockquote:1,i:1,u:1,s:1,tt:1,address:1,q:1,pre:1,p:1,em:1,dfn:1};L=X({a:1},J);M={tr:1};N={'#':1};O=X({param:1},K);P=X({form:1},A,D,E,I);Q={li:1};return {col:{},tr:{td:1,th:1},img:{},colgroup:{col:1},noscript:P,td:P,br:{},th:P,center:P,kbd:L,button:X(I,E),basefont:{},h5:L,h4:L,samp:L,h6:L,ol:Q,h1:L,h3:L,option:N,h2:L,form:X(A,D,E,I),select:{optgroup:1,option:1},font:J,ins:P,menu:Q,abbr:L,label:L,table:{thead:1,col:1,tbody:1,tr:1,colgroup:1,caption:1,tfoot:1},code:L,script:N,tfoot:M,cite:L,li:P,input:{},iframe:P,strong:J,textarea:N,noframes:P,big:J,small:J,span:J,hr:{},dt:L,sub:J,optgroup:{option:1},param:{},bdo:L,'var':J,div:P,object:O,sup:J,dd:P,strike:J,area:{},dir:Q,map:X({area:1,form:1,p:1},A,F,E),applet:O,dl:{dt:1,dd:1},del:P,isindex:{},fieldset:X({legend:1},K),thead:M,ul:Q,acronym:L,b:J,a:J,blockquote:P,caption:L,i:J,u:J,tbody:M,s:L,address:X(D,I),tt:J,legend:L,q:L,pre:X(G,C),p:L,em:J,dfn:L};})();
-var FCKStyle=function(A){this.Element=(A.Element||'span').toLowerCase();this._StyleDesc=A;};FCKStyle.prototype={GetType:function(){var A=this.GetType_$;if (A!=undefined) return A;var B=this.Element;if (B=='#'||FCKListsLib.StyleBlockElements[B]) A=0;else if (FCKListsLib.StyleObjectElements[B]) A=2;else A=1;return (this.GetType_$=A);},ApplyToSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.ApplyToRange(B,true);},ApplyToRange:function(A,B){switch (this.GetType()){case 0:this.ApplyToRange=this._ApplyBlockStyle;break;case 1:this.ApplyToRange=this._ApplyInlineStyle;break;default:return;};this.ApplyToRange(A,B);},ApplyToObject:function(A){if (!A) return;this.BuildElement(null,A);},RemoveFromSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.RemoveFromRange(B,true);},RemoveFromRange:function(A,B){var C;var D=this._GetAttribsForComparison();var E=this._GetOverridesForComparison();if (A.CheckIsCollapsed()){var C=A.CreateBookmark(true);var G=A.GetBookmarkNode(C,true);var H=new FCKElementPath(G.parentNode);var I=[];var J=!FCKDomTools.GetNextSibling(G);var K=J||!FCKDomTools.GetPreviousSibling(G);var L;var M=-1;for (var i=0;i<H.Elements.length;i++){var N=H.Elements[i];if (this.CheckElementRemovable(N)){if (K&&!FCKDomTools.CheckIsEmptyElement(N,function(el){return (el!=G);})){L=N;M=I.length-1;}else{var O=N.nodeName.toLowerCase();if (O==this.Element){for (var P in D){if (FCKDomTools.HasAttribute(N,P)){switch (P){case 'style':this._RemoveStylesFromElement(N);break;case 'class':if (FCKDomTools.GetAttributeValue(N,P)!=this.GetFinalAttributeValue(P)) continue;default:FCKDomTools.RemoveAttribute(N,P);}}}};this._RemoveOverrides(N,E[O]);this._RemoveNoAttribElement(N);}}else if (K) I.push(N);K=K&&((J&&!FCKDomTools.GetNextSibling(N))||(!J&&!FCKDomTools.GetPreviousSibling(N)));if (L&&(!K||(i==H.Elements.length-1))){var Q=FCKDomTools.RemoveNode(G);for (var j=0;j<=M;j++){var R=FCKDomTools.CloneElement(I[j]);R.appendChild(Q);Q=R;};if (J) FCKDomTools.InsertAfterNode(L,Q);else L.parentNode.insertBefore(Q,L);K=false;L=null;}};if (B) A.SelectBookmark(C);return;};A.Expand('inline_elements');var C=A.CreateBookmark(true);var T=A.GetBookmarkNode(C,true);var U=A.GetBookmarkNode(C,false);A.Release(true);var H=new FCKElementPath(T);var X=H.Elements;var N;for (var i=1;i<X.length;i++){N=X[i];if (N==H.Block||N==H.BlockLimit) break;if (this.CheckElementRemovable(N)) FCKDomTools.BreakParent(T,N,A);};H=new FCKElementPath(U);X=H.Elements;for (var i=1;i<X.length;i++){N=X[i];if (N==H.Block||N==H.BlockLimit) break;b=N.nodeName.toLowerCase();if (this.CheckElementRemovable(N)) FCKDomTools.BreakParent(U,N,A);};var Z=FCKDomTools.GetNextSourceNode(T,true);while (Z){var a=FCKDomTools.GetNextSourceNode(Z);if (Z.nodeType==1){var b=Z.nodeName.toLowerCase();var c=(b==this.Element);if (c){for (var P in D){if (FCKDomTools.HasAttribute(Z,P)){switch (P){case 'style':this._RemoveStylesFromElement(Z);break;case 'class':if (FCKDomTools.GetAttributeValue(Z,P)!=this.GetFinalAttributeValue(P)) continue;default:FCKDomTools.RemoveAttribute(Z,P);}}}}else c=!!E[b];if (c){this._RemoveOverrides(Z,E[b]);this._RemoveNoAttribElement(Z);}};if (a==U) break;Z=a;};this._FixBookmarkStart(T);if (B) A.SelectBookmark(C);},CheckElementRemovable:function(A,B){if (!A) return false;var C=A.nodeName.toLowerCase();if (C==this.Element){if (!B&&!FCKDomTools.HasAttributes(A)) return true;var D=this._GetAttribsForComparison();var E=(D._length==0);for (var F in D){if (F=='_length') continue;if (this._CompareAttributeValues(F,FCKDomTools.GetAttributeValue(A,F),(this.GetFinalAttributeValue(F)||''))){E=true;if (!B) break;}else{E=false;if (B) return false;}};if (E) return true;};var G=this._GetOverridesForComparison()[C];if (G){if (!(D=G.Attributes)) return true;for (var i=0;i<D.length;i++){var H=D[i][0];if (FCKDomTools.HasAttribute(A,H)){var I=D[i][1];if (I==null||(typeof I=='string'&&FCKDomTools.GetAttributeValue(A,H)==I)||I.test(FCKDomTools.GetAttributeValue(A,H))) return true;}}};return false;},CheckActive:function(A){switch (this.GetType()){case 0:return this.CheckElementRemovable(A.Block||A.BlockLimit);case 1:var B=A.Elements;for (var i=0;i<B.length;i++){var C=B[i];if (C==A.Block||C==A.BlockLimit) continue;if (this.CheckElementRemovable(C,true)) return true;}};return false;},RemoveFromElement:function(A){var B=this._GetAttribsForComparison();var C=this._GetOverridesForComparison();var D=A.getElementsByTagName(this.Element);for (var i=D.length-1;i>=0;i--){var E=D[i];for (var F in B){if (FCKDomTools.HasAttribute(E,F)){switch (F){case 'style':this._RemoveStylesFromElement(E);break;case 'class':if (FCKDomTools.GetAttributeValue(E,F)!=this.GetFinalAttributeValue(F)) continue;default:FCKDomTools.RemoveAttribute(E,F);}}};this._RemoveOverrides(E,C[this.Element]);this._RemoveNoAttribElement(E);};for (var G in C){if (G!=this.Element){D=A.getElementsByTagName(G);for (var i=D.length-1;i>=0;i--){var E=D[i];this._RemoveOverrides(E,C[G]);this._RemoveNoAttribElement(E);}}}},_RemoveStylesFromElement:function(A){var B=A.style.cssText;var C=this.GetFinalStyleValue();if (B.length>0&&C.length==0) return;C='(^|;)\\s*('+C.replace(/\s*([^ ]+):.*?(;|$)/g,'$1|').replace(/\|$/,'')+'):[^;]+';var D=new RegExp(C,'gi');B=B.replace(D,'').Trim();if (B.length==0||B==';') FCKDomTools.RemoveAttribute(A,'style');else A.style.cssText=B.replace(D,'');},_RemoveOverrides:function(A,B){var C=B&&B.Attributes;if (C){for (var i=0;i<C.length;i++){var D=C[i][0];if (FCKDomTools.HasAttribute(A,D)){var E=C[i][1];if (E==null||(E.test&&E.test(FCKDomTools.GetAttributeValue(A,D)))||(typeof E=='string'&&FCKDomTools.GetAttributeValue(A,D)==E)) FCKDomTools.RemoveAttribute(A,D);}}}},_RemoveNoAttribElement:function(A){if (!FCKDomTools.HasAttributes(A)){var B=A.firstChild;var C=A.lastChild;FCKDomTools.RemoveNode(A,true);this._MergeSiblings(B);if (B!=C) this._MergeSiblings(C);}},BuildElement:function(A,B){var C=B||A.createElement(this.Element);var D=this._StyleDesc.Attributes;var E;if (D){for (var F in D){E=this.GetFinalAttributeValue(F);if (F.toLowerCase()=='class') C.className=E;else C.setAttribute(F,E);}};if (this._GetStyleText().length>0) C.style.cssText=this.GetFinalStyleValue();return C;},_CompareAttributeValues:function(A,B,C){if (A=='style'&&B&&C){B=B.replace(/;$/,'').toLowerCase();C=C.replace(/;$/,'').toLowerCase();};return (B==C)},GetFinalAttributeValue:function(A){var B=this._StyleDesc.Attributes;var B=B?B[A]:null;if (!B&&A=='style') return this.GetFinalStyleValue();if (B&&this._Variables) B=B.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);return B;},GetFinalStyleValue:function(){var A=this._GetStyleText();if (A.length>0&&this._Variables){A=A.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);A=FCKTools.NormalizeCssText(A);};return A;},_GetVariableReplace:function(){return this._Variables[arguments[2]]||arguments[0];},SetVariable:function(A,B){var C=this._Variables;if (!C) C=this._Variables={};this._Variables[A]=B;},_ApplyBlockStyle:function(A,B){var C;if (B) C=A.CreateBookmark(true);var D=new FCKDomRangeIterator(A);D.EnforceRealBlocks=true;var E;while((E=D.GetNextParagraph())){var F=E.parentNode.insertBefore(this.BuildElement(A.Window.document),E);FCKDomTools.MoveChildren(E,F);FCKDomTools.RemoveNode(E);};if (B) A.SelectBookmark(C);},_ApplyInlineStyle:function(A,B){var C=A.Window.document;if (A.CheckIsCollapsed()){var D=this.BuildElement(C);A.InsertNode(D);A.MoveToPosition(D,2);A.Select();return;};var E=this.Element;var F=FCK.DTD[E]||FCK.DTD.span;var G=this._GetAttribsForComparison();var H;A.Expand('inline_elements');var I=A.CreateBookmark(true);var J=A.GetBookmarkNode(I,true);var K=A.GetBookmarkNode(I,false);A.Release(true);var L=FCKDomTools.GetNextSourceNode(J,true);while (L){var M=false;var N=L.nodeType;var O=N==1?L.nodeName.toLowerCase():null;if (!O||F[O]){if ((FCK.DTD[L.parentNode.nodeName.toLowerCase()]||FCK.DTD.span)[E]||!FCK.DTD[E]){if (!A.CheckHasRange()) A.SetStart(L,3);if (N!=1||L.childNodes.length==0){var P=L;var Q=P.parentNode;while (P==Q.lastChild&&F[Q.nodeName.toLowerCase()]){P=Q;};A.SetEnd(P,4);if (P==P.parentNode.lastChild&&!F[P.parentNode.nodeName.toLowerCase()]) M=true;}else{A.SetEnd(L,3);}}else M=true;}else M=true;L=FCKDomTools.GetNextSourceNode(L);if (L==K){L=null;M=true;};if (M&&A.CheckHasRange()&&!A.CheckIsCollapsed()){H=this.BuildElement(C);A.ExtractContents().AppendTo(H);if (H.innerHTML.RTrim().length>0){A.InsertNode(H);this.RemoveFromElement(H);this._MergeSiblings(H,this._GetAttribsForComparison());if (!FCKBrowserInfo.IsIE) H.normalize();};A.Release(true);}};this._FixBookmarkStart(J);if (B) A.SelectBookmark(I);},_FixBookmarkStart:function(A){var B;while ((B=A.nextSibling)){if (B.nodeType==1&&FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){if (!B.firstChild) FCKDomTools.RemoveNode(B);else FCKDomTools.MoveNode(A,B,true);continue;};if (B.nodeType==3&&B.length==0){FCKDomTools.RemoveNode(B);continue;};break;}},_MergeSiblings:function(A,B){if (!A||A.nodeType!=1||!FCKListsLib.InlineNonEmptyElements[A.nodeName.toLowerCase()]) return;this._MergeNextSibling(A,B);this._MergePreviousSibling(A,B);},_MergeNextSibling:function(A,B){var C=A.nextSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.nextSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.lastChild;if (D) FCKDomTools.MoveNode(A.nextSibling,A);FCKDomTools.MoveChildren(C,A);FCKDomTools.RemoveNode(C);if (E) this._MergeNextSibling(E);}}},_MergePreviousSibling:function(A,B){var C=A.previousSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.previousSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.firstChild;if (D) FCKDomTools.MoveNode(A.previousSibling,A,true);FCKDomTools.MoveChildren(C,A,true);FCKDomTools.RemoveNode(C);if (E) this._MergePreviousSibling(E);}}},_GetStyleText:function(){var A=this._StyleDesc.Styles;var B=(this._StyleDesc.Attributes?this._StyleDesc.Attributes['style']||'':'');if (B.length>0) B+=';';for (var C in A) B+=C+':'+A[C]+';';if (B.length>0&&!(/#\(/.test(B))){B=FCKTools.NormalizeCssText(B);};return (this._GetStyleText=function() { return B;})();},_GetAttribsForComparison:function(){var A=this._GetAttribsForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Attributes;if (B){for (var C in B){A[C.toLowerCase()]=B[C].toLowerCase();}};if (this._GetStyleText().length>0){A['style']=this._GetStyleText().toLowerCase();};FCKTools.AppendLengthProperty(A,'_length');return (this._GetAttribsForComparison_$=A);},_GetOverridesForComparison:function(){var A=this._GetOverridesForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Overrides;if (B){if (!FCKTools.IsArray(B)) B=[B];for (var i=0;i<B.length;i++){var C=B[i];var D;var E;var F;if (typeof C=='string') D=C.toLowerCase();else{D=C.Element?C.Element.toLowerCase():this.Element;F=C.Attributes;};E=A[D]||(A[D]={});if (F){var G=(E.Attributes=E.Attributes||[]);for (var H in F){G.push([H.toLowerCase(),F[H]]);}}}};return (this._GetOverridesForComparison_$=A);},_CreateElementAttribsForComparison:function(A){var B={};var C=0;for (var i=0;i<A.attributes.length;i++){var D=A.attributes[i];if (D.specified){B[D.nodeName.toLowerCase()]=FCKDomTools.GetAttributeValue(A,D).toLowerCase();C++;}};B._length=C;return B;},_CheckAttributesMatch:function(A,B){var C=A.attributes;var D=0;for (var i=0;i<C.length;i++){var E=C[i];if (E.specified){var F=E.nodeName.toLowerCase();var G=B[F];if (!G) break;if (G!=FCKDomTools.GetAttributeValue(A,E).toLowerCase()) break;D++;}};return (D==B._length);}};
-var FCKStyles=FCK.Styles={_Callbacks:{},_ObjectStyles:{},ApplyStyle:function(A){if (typeof A=='string') A=this.GetStyles()[A];if (A){if (A.GetType()==2) A.ApplyToObject(FCKSelection.GetSelectedElement());else A.ApplyToSelection(FCK.EditorWindow);FCK.Events.FireEvent('OnSelectionChange');}},RemoveStyle:function(A){if (typeof A=='string') A=this.GetStyles()[A];if (A){A.RemoveFromSelection(FCK.EditorWindow);FCK.Events.FireEvent('OnSelectionChange');}},AttachStyleStateChange:function(A,B,C){var D=this._Callbacks[A];if (!D) D=this._Callbacks[A]=[];D.push([B,C]);},CheckSelectionChanges:function(){var A=FCKSelection.GetBoundaryParentElement(true);if (!A) return;var B=new FCKElementPath(A);var C=this.GetStyles();for (var D in C){var E=this._Callbacks[D];if (E){var F=C[D];var G=F.CheckActive(B);if (F._LastState!=G){F._LastState=G;for (var i=0;i<E.length;i++){var H=E[i][0];var I=E[i][1];H.call(I||window,D,G);}}}}},CheckStyleInSelection:function(A){return false;},_GetRemoveFormatTagsRegex:function (){var A=new RegExp('^(?:'+FCKConfig.RemoveFormatTags.replace(/,/g,'|')+')$','i');return (this._GetRemoveFormatTagsRegex=function(){return A;})&&A;},RemoveAll:function(){var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();if (A.CheckIsCollapsed()) return;A.Expand('inline_elements');var B=A.CreateBookmark(true);var C=A.GetBookmarkNode(B,true);var D=A.GetBookmarkNode(B,false);A.Release(true);var E=this._GetRemoveFormatTagsRegex();var F=new FCKElementPath(C);var G=F.Elements;var H;for (var i=1;i<G.length;i++){H=G[i];if (H==F.Block||H==F.BlockLimit) break;if (E.test(H.nodeName)) FCKDomTools.BreakParent(C,H,A);};F=new FCKElementPath(D);G=F.Elements;for (var i=1;i<G.length;i++){H=G[i];if (H==F.Block||H==F.BlockLimit) break;elementName=H.nodeName.toLowerCase();if (E.test(H.nodeName)) FCKDomTools.BreakParent(D,H,A);};var I=FCKDomTools.GetNextSourceNode(C,true,1);while (I){if (I==D) break;var J=FCKDomTools.GetNextSourceNode(I,false,1);if (E.test(I.nodeName)) FCKDomTools.RemoveNode(I,true);I=J;};A.SelectBookmark(B);FCK.Events.FireEvent('OnSelectionChange');},GetStyle:function(A){return this.GetStyles()[A];},GetStyles:function(){var A=this._GetStyles;if (!A){A=this._GetStyles=FCKTools.Merge(this._LoadStylesCore(),this._LoadStylesCustom(),this._LoadStylesXml());};return A;},CheckHasObjectStyle:function(A){return!!this._ObjectStyles[A];},_LoadStylesCore:function(){var A={};var B=FCKConfig.CoreStyles;for (var C in B){var D=A['_FCK_'+C]=new FCKStyle(B[C]);D.IsCore=true;};return A;},_LoadStylesCustom:function(){var A={};var B=FCKConfig.CustomStyles;if (B){for (var C in B){var D=A[C]=new FCKStyle(B[C]);D.Name=C;}};return A;},_LoadStylesXml:function(){var A={};var B=FCKConfig.StylesXmlPath;if (!B||B.length==0) return A;var C=new FCKXml();C.LoadUrl(B);var D=FCKXml.TransformToObject(C.SelectSingleNode('Styles'));var E=D.$Style;if (!E) return A;for (var i=0;i<E.length;i++){var F=E[i];var G=(F.element||'').toLowerCase();if (G.length==0) throw('The element name is required. Error loading "'+B+'"');var H={Element:G,Attributes:{},Styles:{},Overrides:[]};var I=F.$Attribute||[];for (var j=0;j<I.length;j++){H.Attributes[I[j].name]=I[j].value;};var J=F.$Style||[];for (j=0;j<J.length;j++){H.Styles[J[j].name]=J[j].value;};var K=F.$Override;if (K){for (j=0;j<K.length;j++){var L=K[j];var M={Element:L.element};var N=L.$Attribute;if (N){M.Attributes={};for (var k=0;k<N.length;k++){var O=N[k].value||null;if (O){var P=O&&FCKRegexLib.RegExp.exec(O);if (P) O=new RegExp(P[1],P[2]||'');};M.Attributes[N[k].name]=O;}};H.Overrides.push(M);}};var Q=new FCKStyle(H);Q.Name=F.name||G;if (Q.GetType()==2) this._ObjectStyles[G]=true;A[Q.Name]=Q;};return A;}};
+FCK.DTD=(function(){var X=FCKTools.Merge;var A,L,J,M,N,O,D,H,P,K,Q,F,G,C,B,E,I;A={isindex:1,fieldset:1};B={input:1,button:1,select:1,textarea:1,label:1};C=X({a:1},B);D=X({iframe:1},C);E={hr:1,ul:1,menu:1,div:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1};F={ins:1,del:1,script:1};G=X({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1},F);H=X({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1},G);I=X({p:1},H);J=X({iframe:1},H,B);K={img:1,noscript:1,br:1,kbd:1,center:1,button:1,basefont:1,h5:1,h4:1,samp:1,h6:1,ol:1,h1:1,h3:1,h2:1,form:1,font:1,'#':1,select:1,menu:1,ins:1,abbr:1,label:1,code:1,table:1,script:1,cite:1,input:1,iframe:1,strong:1,textarea:1,noframes:1,big:1,small:1,span:1,hr:1,sub:1,bdo:1,'var':1,div:1,object:1,sup:1,strike:1,dir:1,map:1,dl:1,applet:1,del:1,isindex:1,fieldset:1,ul:1,b:1,acronym:1,a:1,blockquote:1,i:1,u:1,s:1,tt:1,address:1,q:1,pre:1,p:1,em:1,dfn:1};L=X({a:1},J);M={tr:1};N={'#':1};O=X({param:1},K);P=X({form:1},A,D,E,I);Q={li:1};return {col:{},tr:{td:1,th:1},img:{},colgroup:{col:1},noscript:P,td:P,br:{},th:P,center:P,kbd:L,button:X(I,E),basefont:{},h5:L,h4:L,samp:L,h6:L,ol:Q,h1:L,h3:L,option:N,h2:L,form:X(A,D,E,I),select:{optgroup:1,option:1},font:J,ins:P,menu:Q,abbr:L,label:L,table:{thead:1,col:1,tbody:1,tr:1,colgroup:1,caption:1,tfoot:1},code:L,script:N,tfoot:M,cite:L,li:P,input:{},iframe:P,strong:J,textarea:N,noframes:P,big:J,small:J,span:J,hr:{},dt:L,sub:J,optgroup:{option:1},param:{},bdo:L,'var':J,div:P,object:O,sup:J,dd:P,strike:J,area:{},dir:Q,map:X({area:1,form:1,p:1},A,F,E),applet:O,dl:{dt:1,dd:1},del:P,isindex:{},fieldset:X({legend:1},K),thead:M,ul:Q,acronym:L,b:J,a:J,blockquote:P,caption:L,i:J,u:J,tbody:M,s:L,address:X(D,I),tt:J,legend:L,q:L,pre:X(G,C),p:L,em:J,dfn:L};})();
+var FCKStyle=function(A){this.Element=(A.Element||'span').toLowerCase();this._StyleDesc=A;};FCKStyle.prototype={GetType:function(){var A=this.GetType_$;if (A!=undefined) return A;var B=this.Element;if (B=='#'||FCKListsLib.StyleBlockElements[B]) A=0;else if (FCKListsLib.StyleObjectElements[B]) A=2;else A=1;return (this.GetType_$=A);},ApplyToSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.ApplyToRange(B,true);},ApplyToRange:function(A,B,C){switch (this.GetType()){case 0:this.ApplyToRange=this._ApplyBlockStyle;break;case 1:this.ApplyToRange=this._ApplyInlineStyle;break;default:return;};this.ApplyToRange(A,B,C);},ApplyToObject:function(A){if (!A) return;this.BuildElement(null,A);},RemoveFromSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.RemoveFromRange(B,true);},RemoveFromRange:function(A,B,C){var D;var E=this._GetAttribsForComparison();var F=this._GetOverridesForComparison();if (A.CheckIsCollapsed()){var D=A.CreateBookmark(true);var H=A.GetBookmarkNode(D,true);var I=new FCKElementPath(H.parentNode);var J=[];var K=!FCKDomTools.GetNextSibling(H);var L=K||!FCKDomTools.GetPreviousSibling(H);var M;var N=-1;for (var i=0;i<I.Elements.length;i++){var O=I.Elements[i];if (this.CheckElementRemovable(O)){if (L&&!FCKDomTools.CheckIsEmptyElement(O,function(el){return (el!=H);})){M=O;N=J.length-1;}else{var P=O.nodeName.toLowerCase();if (P==this.Element){for (var Q in E){if (FCKDomTools.HasAttribute(O,Q)){switch (Q){case 'style':this._RemoveStylesFromElement(O);break;case 'class':if (FCKDomTools.GetAttributeValue(O,Q)!=this.GetFinalAttributeValue(Q)) continue;default:FCKDomTools.RemoveAttribute(O,Q);}}}};this._RemoveOverrides(O,F[P]);if (this.GetType()==1) this._RemoveNoAttribElement(O);}}else if (L) J.push(O);L=L&&((K&&!FCKDomTools.GetNextSibling(O))||(!K&&!FCKDomTools.GetPreviousSibling(O)));if (M&&(!L||(i==I.Elements.length-1))){var R=FCKDomTools.RemoveNode(H);for (var j=0;j<=N;j++){var S=FCKDomTools.CloneElement(J[j]);S.appendChild(R);R=S;};if (K) FCKDomTools.InsertAfterNode(M,R);else M.parentNode.insertBefore(R,M);L=false;M=null;}};if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);return;};A.Expand('inline_elements');D=A.CreateBookmark(true);var T=A.GetBookmarkNode(D,true);var U=A.GetBookmarkNode(D,false);A.Release(true);var I=new FCKElementPath(T);var X=I.Elements;var O;for (var i=1;i<X.length;i++){O=X[i];if (O==I.Block||O==I.BlockLimit) break;if (this.CheckElementRemovable(O)) FCKDomTools.BreakParent(T,O,A);};I=new FCKElementPath(U);X=I.Elements;for (var i=1;i<X.length;i++){O=X[i];if (O==I.Block||O==I.BlockLimit) break;b=O.nodeName.toLowerCase();if (this.CheckElementRemovable(O)) FCKDomTools.BreakParent(U,O,A);};var Z=FCKDomTools.GetNextSourceNode(T,true);while (Z){var a=FCKDomTools.GetNextSourceNode(Z);if (Z.nodeType==1){var b=Z.nodeName.toLowerCase();var c=(b==this.Element);if (c){for (var Q in E){if (FCKDomTools.HasAttribute(Z,Q)){switch (Q){case 'style':this._RemoveStylesFromElement(Z);break;case 'class':if (FCKDomTools.GetAttributeValue(Z,Q)!=this.GetFinalAttributeValue(Q)) continue;default:FCKDomTools.RemoveAttribute(Z,Q);}}}}else c=!!F[b];if (c){this._RemoveOverrides(Z,F[b]);this._RemoveNoAttribElement(Z);}};if (a==U) break;Z=a;};this._FixBookmarkStart(T);if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);},CheckElementRemovable:function(A,B){if (!A) return false;var C=A.nodeName.toLowerCase();if (C==this.Element){if (!B&&!FCKDomTools.HasAttributes(A)) return true;var D=this._GetAttribsForComparison();var E=(D._length==0);for (var F in D){if (F=='_length') continue;if (this._CompareAttributeValues(F,FCKDomTools.GetAttributeValue(A,F),(this.GetFinalAttributeValue(F)||''))){E=true;if (!B) break;}else{E=false;if (B) return false;}};if (E) return true;};var G=this._GetOverridesForComparison()[C];if (G){if (!(D=G.Attributes)) return true;for (var i=0;i<D.length;i++){var H=D[i][0];if (FCKDomTools.HasAttribute(A,H)){var I=D[i][1];if (I==null||(typeof I=='string'&&FCKDomTools.GetAttributeValue(A,H)==I)||I.test(FCKDomTools.GetAttributeValue(A,H))) return true;}}};return false;},CheckActive:function(A){switch (this.GetType()){case 0:return this.CheckElementRemovable(A.Block||A.BlockLimit,true);case 1:var B=A.Elements;for (var i=0;i<B.length;i++){var C=B[i];if (C==A.Block||C==A.BlockLimit) continue;if (this.CheckElementRemovable(C,true)) return true;}};return false;},RemoveFromElement:function(A){var B=this._GetAttribsForComparison();var C=this._GetOverridesForComparison();var D=A.getElementsByTagName(this.Element);for (var i=D.length-1;i>=0;i--){var E=D[i];for (var F in B){if (FCKDomTools.HasAttribute(E,F)){switch (F){case 'style':this._RemoveStylesFromElement(E);break;case 'class':if (FCKDomTools.GetAttributeValue(E,F)!=this.GetFinalAttributeValue(F)) continue;default:FCKDomTools.RemoveAttribute(E,F);}}};this._RemoveOverrides(E,C[this.Element]);this._RemoveNoAttribElement(E);};for (var G in C){if (G!=this.Element){D=A.getElementsByTagName(G);for (var i=D.length-1;i>=0;i--){var E=D[i];this._RemoveOverrides(E,C[G]);this._RemoveNoAttribElement(E);}}}},_RemoveStylesFromElement:function(A){var B=A.style.cssText;var C=this.GetFinalStyleValue();if (B.length>0&&C.length==0) return;C='(^|;)\\s*('+C.replace(/\s*([^ ]+):.*?(;|$)/g,'$1|').replace(/\|$/,'')+'):[^;]+';var D=new RegExp(C,'gi');B=B.replace(D,'').Trim();if (B.length==0||B==';') FCKDomTools.RemoveAttribute(A,'style');else A.style.cssText=B.replace(D,'');},_RemoveOverrides:function(A,B){var C=B&&B.Attributes;if (C){for (var i=0;i<C.length;i++){var D=C[i][0];if (FCKDomTools.HasAttribute(A,D)){var E=C[i][1];if (E==null||(E.test&&E.test(FCKDomTools.GetAttributeValue(A,D)))||(typeof E=='string'&&FCKDomTools.GetAttributeValue(A,D)==E)) FCKDomTools.RemoveAttribute(A,D);}}}},_RemoveNoAttribElement:function(A){if (!FCKDomTools.HasAttributes(A)){var B=A.firstChild;var C=A.lastChild;FCKDomTools.RemoveNode(A,true);this._MergeSiblings(B);if (B!=C) this._MergeSiblings(C);}},BuildElement:function(A,B){var C=B||A.createElement(this.Element);var D=this._StyleDesc.Attributes;var E;if (D){for (var F in D){E=this.GetFinalAttributeValue(F);if (F.toLowerCase()=='class') C.className=E;else C.setAttribute(F,E);}};if (this._GetStyleText().length>0) C.style.cssText=this.GetFinalStyleValue();return C;},_CompareAttributeValues:function(A,B,C){if (A=='style'&&B&&C){B=B.replace(/;$/,'').toLowerCase();C=C.replace(/;$/,'').toLowerCase();};return (B==C||((B===null||B==='')&&(C===null||C==='')))},GetFinalAttributeValue:function(A){var B=this._StyleDesc.Attributes;var B=B?B[A]:null;if (!B&&A=='style') return this.GetFinalStyleValue();if (B&&this._Variables) B=B.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);return B;},GetFinalStyleValue:function(){var A=this._GetStyleText();if (A.length>0&&this._Variables){A=A.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);A=FCKTools.NormalizeCssText(A);};return A;},_GetVariableReplace:function(){return this._Variables[arguments[2]]||arguments[0];},SetVariable:function(A,B){var C=this._Variables;if (!C) C=this._Variables={};this._Variables[A]=B;},_FromPre:function(A,B,C){var D=B.innerHTML;D=D.replace(/(\r\n|\r)/g,'\n');D=D.replace(/^[ \t]*\n/,'');D=D.replace(/\n$/,'');D=D.replace(/^[ \t]+|[ \t]+$/g,function(match,offset,s){if (match.length==1) return '&nbsp;';else if (offset==0) return new Array(match.length).join('&nbsp;')+' ';else return ' '+new Array(match.length).join('&nbsp;');});var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag){value=value.replace(/\n/g,'<BR>');value=value.replace(/[ \t]{2,}/g,function (match){return new Array(match.length).join('&nbsp;')+' ';});};F.push(value);});C.innerHTML=F.join('');return C;},_ToPre:function(A,B,C){var D=B.innerHTML.Trim();D=D.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,'<BR />');var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag) value=value.replace(/([ \t\n\r]+|&nbsp;)/g,' ');else if (isTag&&value=='<BR />') value='\n';F.push(value);});if (FCKBrowserInfo.IsIE){var G=A.createElement('div');G.appendChild(C);C.outerHTML='<PRE>\n'+F.join('')+'</PRE>';C=G.removeChild(G.firstChild);}else C.innerHTML=F.join('');return C;},_ApplyBlockStyle:function(A,B,C){var D;if (B) D=A.CreateBookmark();var E=new FCKDomRangeIterator(A);E.EnforceRealBlocks=true;var F;var G=A.Window.document;var H=[];var I=[];while((F=E.GetNextParagraph())){var J=this.BuildElement(G);var K=J.nodeName.IEquals('pre');var L=F.nodeName.IEquals('pre');if (K&&!L){J=this._ToPre(G,F,J);H.push(J);}else if (!K&&L){J=this._FromPre(G,F,J);I.push(J);}else FCKDomTools.MoveChildren(F,J);F.parentNode.insertBefore(J,F);FCKDomTools.RemoveNode(F);};for (var i=0;i<H.length-1;i++){if (FCKDomTools.GetNextSourceElement(H[i],true,[],[],true)!=H[i+1]) continue;H[i+1].innerHTML=H[i].innerHTML+'\n\n'+H[i+1].innerHTML;FCKDomTools.RemoveNode(H[i]);};for (var i=0;i<I.length;i++){var M=I[i];var N=null;for (var j=0;j<M.childNodes.length;j++){var O=M.childNodes[j];if (O.nodeName.IEquals('br')&&j!=0&&j!=M.childNodes.length-2&&O.nextSibling&&O.nextSibling.nodeName.IEquals('br')){FCKDomTools.RemoveNode(O.nextSibling);FCKDomTools.RemoveNode(O);j--;N=FCKDomTools.InsertAfterNode(N||M,G.createElement(M.nodeName));continue;};if (N){FCKDomTools.MoveNode(O,N);j--;}}};if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);},_ApplyInlineStyle:function(A,B,C){var D=A.Window.document;if (A.CheckIsCollapsed()){var E=this.BuildElement(D);A.InsertNode(E);A.MoveToPosition(E,2);A.Select();return;};var F=this.Element;var G=FCK.DTD[F]||FCK.DTD.span;var H=this._GetAttribsForComparison();var I;A.Expand('inline_elements');var J=A.CreateBookmark(true);var K=A.GetBookmarkNode(J,true);var L=A.GetBookmarkNode(J,false);A.Release(true);var M=FCKDomTools.GetNextSourceNode(K,true);while (M){var N=false;var O=M.nodeType;var P=O==1?M.nodeName.toLowerCase():null;if (!P||G[P]){if ((FCK.DTD[M.parentNode.nodeName.toLowerCase()]||FCK.DTD.span)[F]||!FCK.DTD[F]){if (!A.CheckHasRange()) A.SetStart(M,3);if (O!=1||M.childNodes.length==0){var Q=M;var R=Q.parentNode;while (Q==R.lastChild&&G[R.nodeName.toLowerCase()]){Q=R;};A.SetEnd(Q,4);if (Q==Q.parentNode.lastChild&&!G[Q.parentNode.nodeName.toLowerCase()]) N=true;}else{A.SetEnd(M,3);}}else N=true;}else N=true;M=FCKDomTools.GetNextSourceNode(M);if (M==L){M=null;N=true;};if (N&&A.CheckHasRange()&&!A.CheckIsCollapsed()){I=this.BuildElement(D);A.ExtractContents().AppendTo(I);if (I.innerHTML.RTrim().length>0){A.InsertNode(I);this.RemoveFromElement(I);this._MergeSiblings(I,this._GetAttribsForComparison());if (!FCKBrowserInfo.IsIE) I.normalize();};A.Release(true);}};this._FixBookmarkStart(K);if (B) A.SelectBookmark(J);if (C) A.MoveToBookmark(J);},_FixBookmarkStart:function(A){var B;while ((B=A.nextSibling)){if (B.nodeType==1&&FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){if (!B.firstChild) FCKDomTools.RemoveNode(B);else FCKDomTools.MoveNode(A,B,true);continue;};if (B.nodeType==3&&B.length==0){FCKDomTools.RemoveNode(B);continue;};break;}},_MergeSiblings:function(A,B){if (!A||A.nodeType!=1||!FCKListsLib.InlineNonEmptyElements[A.nodeName.toLowerCase()]) return;this._MergeNextSibling(A,B);this._MergePreviousSibling(A,B);},_MergeNextSibling:function(A,B){var C=A.nextSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.nextSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.lastChild;if (D) FCKDomTools.MoveNode(A.nextSibling,A);FCKDomTools.MoveChildren(C,A);FCKDomTools.RemoveNode(C);if (E) this._MergeNextSibling(E);}}},_MergePreviousSibling:function(A,B){var C=A.previousSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.previousSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.firstChild;if (D) FCKDomTools.MoveNode(A.previousSibling,A,true);FCKDomTools.MoveChildren(C,A,true);FCKDomTools.RemoveNode(C);if (E) this._MergePreviousSibling(E);}}},_GetStyleText:function(){var A=this._StyleDesc.Styles;var B=(this._StyleDesc.Attributes?this._StyleDesc.Attributes['style']||'':'');if (B.length>0) B+=';';for (var C in A) B+=C+':'+A[C]+';';if (B.length>0&&!(/#\(/.test(B))){B=FCKTools.NormalizeCssText(B);};return (this._GetStyleText=function() { return B;})();},_GetAttribsForComparison:function(){var A=this._GetAttribsForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Attributes;if (B){for (var C in B){A[C.toLowerCase()]=B[C].toLowerCase();}};if (this._GetStyleText().length>0){A['style']=this._GetStyleText().toLowerCase();};FCKTools.AppendLengthProperty(A,'_length');return (this._GetAttribsForComparison_$=A);},_GetOverridesForComparison:function(){var A=this._GetOverridesForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Overrides;if (B){if (!FCKTools.IsArray(B)) B=[B];for (var i=0;i<B.length;i++){var C=B[i];var D;var E;var F;if (typeof C=='string') D=C.toLowerCase();else{D=C.Element?C.Element.toLowerCase():this.Element;F=C.Attributes;};E=A[D]||(A[D]={});if (F){var G=(E.Attributes=E.Attributes||[]);for (var H in F){G.push([H.toLowerCase(),F[H]]);}}}};return (this._GetOverridesForComparison_$=A);},_CreateElementAttribsForComparison:function(A){var B={};var C=0;for (var i=0;i<A.attributes.length;i++){var D=A.attributes[i];if (D.specified){B[D.nodeName.toLowerCase()]=FCKDomTools.GetAttributeValue(A,D).toLowerCase();C++;}};B._length=C;return B;},_CheckAttributesMatch:function(A,B){var C=A.attributes;var D=0;for (var i=0;i<C.length;i++){var E=C[i];if (E.specified){var F=E.nodeName.toLowerCase();var G=B[F];if (!G) break;if (G!=FCKDomTools.GetAttributeValue(A,E).toLowerCase()) break;D++;}};return (D==B._length);}};
+var FCKStyles=FCK.Styles={_Callbacks:{},_ObjectStyles:{},ApplyStyle:function(A){if (typeof A=='string') A=this.GetStyles()[A];if (A){if (A.GetType()==2) A.ApplyToObject(FCKSelection.GetSelectedElement());else A.ApplyToSelection(FCK.EditorWindow);FCK.Events.FireEvent('OnSelectionChange');}},RemoveStyle:function(A){if (typeof A=='string') A=this.GetStyles()[A];if (A){A.RemoveFromSelection(FCK.EditorWindow);FCK.Events.FireEvent('OnSelectionChange');}},AttachStyleStateChange:function(A,B,C){var D=this._Callbacks[A];if (!D) D=this._Callbacks[A]=[];D.push([B,C]);},CheckSelectionChanges:function(){var A=FCKSelection.GetBoundaryParentElement(true);if (!A) return;var B=new FCKElementPath(A);var C=this.GetStyles();for (var D in C){var E=this._Callbacks[D];if (E){var F=C[D];var G=F.CheckActive(B);if (G!=(F._LastState||null)){F._LastState=G;for (var i=0;i<E.length;i++){var H=E[i][0];var I=E[i][1];H.call(I||window,D,G);}}}}},CheckStyleInSelection:function(A){return false;},_GetRemoveFormatTagsRegex:function (){var A=new RegExp('^(?:'+FCKConfig.RemoveFormatTags.replace(/,/g,'|')+')$','i');return (this._GetRemoveFormatTagsRegex=function(){return A;})&&A;},RemoveAll:function(){var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();if (A.CheckIsCollapsed()) return;A.Expand('inline_elements');var B=A.CreateBookmark(true);var C=A.GetBookmarkNode(B,true);var D=A.GetBookmarkNode(B,false);A.Release(true);var E=this._GetRemoveFormatTagsRegex();var F=new FCKElementPath(C);var G=F.Elements;var H;for (var i=1;i<G.length;i++){H=G[i];if (H==F.Block||H==F.BlockLimit) break;if (E.test(H.nodeName)) FCKDomTools.BreakParent(C,H,A);};F=new FCKElementPath(D);G=F.Elements;for (var i=1;i<G.length;i++){H=G[i];if (H==F.Block||H==F.BlockLimit) break;elementName=H.nodeName.toLowerCase();if (E.test(H.nodeName)) FCKDomTools.BreakParent(D,H,A);};var I=FCKDomTools.GetNextSourceNode(C,true,1);while (I){if (I==D) break;var J=FCKDomTools.GetNextSourceNode(I,false,1);if (E.test(I.nodeName)) FCKDomTools.RemoveNode(I,true);else FCKDomTools.RemoveAttributes(I,FCKConfig.RemoveAttributesArray);I=J;};A.SelectBookmark(B);FCK.Events.FireEvent('OnSelectionChange');},GetStyle:function(A){return this.GetStyles()[A];},GetStyles:function(){var A=this._GetStyles;if (!A){A=this._GetStyles=FCKTools.Merge(this._LoadStylesCore(),this._LoadStylesCustom(),this._LoadStylesXml());};return A;},CheckHasObjectStyle:function(A){return!!this._ObjectStyles[A];},_LoadStylesCore:function(){var A={};var B=FCKConfig.CoreStyles;for (var C in B){var D=A['_FCK_'+C]=new FCKStyle(B[C]);D.IsCore=true;};return A;},_LoadStylesCustom:function(){var A={};var B=FCKConfig.CustomStyles;if (B){for (var C in B){var D=A[C]=new FCKStyle(B[C]);D.Name=C;}};return A;},_LoadStylesXml:function(){var A={};var B=FCKConfig.StylesXmlPath;if (!B||B.length==0) return A;var C=new FCKXml();C.LoadUrl(B);var D=FCKXml.TransformToObject(C.SelectSingleNode('Styles'));var E=D.$Style;if (!E) return A;for (var i=0;i<E.length;i++){var F=E[i];var G=(F.element||'').toLowerCase();if (G.length==0) throw('The element name is required. Error loading "'+B+'"');var H={Element:G,Attributes:{},Styles:{},Overrides:[]};var I=F.$Attribute||[];for (var j=0;j<I.length;j++){H.Attributes[I[j].name]=I[j].value;};var J=F.$Style||[];for (j=0;j<J.length;j++){H.Styles[J[j].name]=J[j].value;};var K=F.$Override;if (K){for (j=0;j<K.length;j++){var L=K[j];var M={Element:L.element};var N=L.$Attribute;if (N){M.Attributes={};for (var k=0;k<N.length;k++){var O=N[k].value||null;if (O){var P=O&&FCKRegexLib.RegExp.exec(O);if (P) O=new RegExp(P[1],P[2]||'');};M.Attributes[N[k].name]=O;}};H.Overrides.push(M);}};var Q=new FCKStyle(H);Q.Name=F.name||G;if (Q.GetType()==2) this._ObjectStyles[G]=true;A[Q.Name]=Q;};return A;}};
 var FCKListHandler={OutdentListItem:function(A){var B=A.parentNode;if (B.tagName.toUpperCase().Equals('UL','OL')){var C=FCKTools.GetElementDocument(A);var D=new FCKDocumentFragment(C);var E=D.RootNode;var F=false;var G=FCKDomTools.GetFirstChild(A,['UL','OL']);if (G){F=true;var H;while ((H=G.firstChild)) E.appendChild(G.removeChild(H));FCKDomTools.RemoveNode(G);};var I;var J=false;while ((I=A.nextSibling)){if (!F&&I.nodeType==1&&I.nodeName.toUpperCase()=='LI') J=F=true;E.appendChild(I.parentNode.removeChild(I));if (!J&&I.nodeType==1&&I.nodeName.toUpperCase().Equals('UL','OL')) FCKDomTools.RemoveNode(I,true);};var K=B.parentNode.tagName.toUpperCase();var L=(K=='LI');if (L||K.Equals('UL','OL')){if (F){var G=B.cloneNode(false);D.AppendTo(G);A.appendChild(G);}else if (L) D.InsertAfterNode(B.parentNode);else D.InsertAfterNode(B);if (L) FCKDomTools.InsertAfterNode(B.parentNode,B.removeChild(A));else FCKDomTools.InsertAfterNode(B,B.removeChild(A));}else{if (F){var N=B.cloneNode(false);D.AppendTo(N);FCKDomTools.InsertAfterNode(B,N);};var O=C.createElement(FCKConfig.EnterMode=='p'?'p':'div');FCKDomTools.MoveChildren(B.removeChild(A),O);FCKDomTools.InsertAfterNode(B,O);if (FCKConfig.EnterMode=='br'){if (FCKBrowserInfo.IsGecko) O.parentNode.insertBefore(FCKTools.CreateBogusBR(C),O);else FCKDomTools.InsertAfterNode(O,FCKTools.CreateBogusBR(C));FCKDomTools.RemoveNode(O,true);}};if (this.CheckEmptyList(B)) FCKDomTools.RemoveNode(B,true);}},CheckEmptyList:function(A){return (FCKDomTools.GetFirstChild(A,'LI')==null);},CheckListHasContents:function(A){var B=A.firstChild;while (B){switch (B.nodeType){case 1:if (!B.nodeName.IEquals('UL','LI')) return true;break;case 3:if (B.nodeValue.Trim().length>0) return true;};B=B.nextSibling;};return false;}};
-var FCKElementPath=function(A){var B=null;var C=null;var D=[];var e=A;while (e){if (e.nodeType==1){if (!this.LastElement) this.LastElement=e;var E=e.nodeName.toLowerCase();if (!C){if (!B&&FCKListsLib.PathBlockElements[E]!=null) B=e;if (FCKListsLib.PathBlockLimitElements[E]!=null){if (!B&&E=='div'&&!FCKElementPath._CheckHasBlock(e)) B=e;else C=e;}};D.push(e);if (E=='body') break;};e=e.parentNode;};this.Block=B;this.BlockLimit=C;this.Elements=D;};FCKElementPath._CheckHasBlock=function(A){var B=A.childNodes;for (var i=0,count=B.length;i<count;i++){var C=B[i];if (C.nodeType==1&&FCKListsLib.BlockElements[C.nodeName.toLowerCase()]) return true;};return false;};
-var FCKDomRange=function(A){this.Window=A;this._Cache={};};FCKDomRange.prototype={_UpdateElementInfo:function(){var A=this._Range;if (!A) this.Release(true);else{var B=A.startContainer;var C=A.endContainer;var D=new FCKElementPath(B);this.StartNode=B.nodeType==3?B:B.childNodes[A.startOffset];this.StartContainer=B;this.StartBlock=D.Block;this.StartBlockLimit=D.BlockLimit;if (B!=C) D=new FCKElementPath(C);var E=C;if (A.endOffset==0){while (E&&!E.previousSibling) E=E.parentNode;if (E) E=E.previousSibling;}else if (E.nodeType==1) E=E.childNodes[A.endOffset-1];this.EndNode=E;this.EndContainer=C;this.EndBlock=D.Block;this.EndBlockLimit=D.BlockLimit;};this._Cache={};},CreateRange:function(){return new FCKW3CRange(this.Window.document);},DeleteContents:function(){if (this._Range){this._Range.deleteContents();this._UpdateElementInfo();}},ExtractContents:function(){if (this._Range){var A=this._Range.extractContents();this._UpdateElementInfo();return A;}},CheckIsCollapsed:function(){if (this._Range) return this._Range.collapsed;},Collapse:function(A){if (this._Range) this._Range.collapse(A);this._UpdateElementInfo();},Clone:function(){var A=FCKTools.CloneObject(this);if (this._Range) A._Range=this._Range.cloneRange();return A;},MoveToNodeContents:function(A){if (!this._Range) this._Range=this.CreateRange();this._Range.selectNodeContents(A);this._UpdateElementInfo();},MoveToElementStart:function(A){this.SetStart(A,1);this.SetEnd(A,1);},MoveToElementEditStart:function(A){var B;while ((B=A.firstChild)&&B.nodeType==1&&FCKListsLib.EmptyElements[B.nodeName.toLowerCase()]==null) A=B;this.MoveToElementStart(A);},InsertNode:function(A){if (this._Range) this._Range.insertNode(A);},CheckIsEmpty:function(){if (this.CheckIsCollapsed()) return true;var A=this.Window.document.createElement('div');this._Range.cloneContents().AppendTo(A);FCKDomTools.TrimNode(A);return (A.innerHTML.length==0);},CheckStartOfBlock:function(){var A=this._Cache;var B=A.IsStartOfBlock;if (B!=undefined) return B;var C=this.StartBlock||this.StartBlockLimit;var D=this._Range.startContainer;var E=this._Range.startOffset;var F;if (E>0){if (D.nodeType==3){var G=D.nodeValue.substr(0,E).Trim();if (G.length!=0) return A.IsStartOfBlock=false;}else F=D.childNodes[E-1];};if (!F) F=FCKDomTools.GetPreviousSourceNode(D,true,null,C);while (F){switch (F.nodeType){case 1:if (!FCKListsLib.InlineChildReqElements[F.nodeName.toLowerCase()]) return A.IsStartOfBlock=false;break;case 3:if (F.nodeValue.Trim().length>0) return A.IsStartOfBlock=false;};F=FCKDomTools.GetPreviousSourceNode(F,false,null,C);};return A.IsStartOfBlock=true;},CheckEndOfBlock:function(A){var B=this._Cache.IsEndOfBlock;if (B!=undefined) return B;var C=this.EndBlock||this.EndBlockLimit;var D=this._Range.endContainer;var E=this._Range.endOffset;var F;if (D.nodeType==3){var G=D.nodeValue;if (E<G.length){G=G.substr(E);if (G.Trim().length!=0) return this._Cache.IsEndOfBlock=false;}}else F=D.childNodes[E];if (!F) F=FCKDomTools.GetNextSourceNode(D,true,null,C);var H=false;while (F){switch (F.nodeType){case 1:var I=F.nodeName.toLowerCase();if (FCKListsLib.InlineChildReqElements[I]) break;if (I=='br'&&!H){H=true;break;};return this._Cache.IsEndOfBlock=false;case 3:if (F.nodeValue.Trim().length>0) return this._Cache.IsEndOfBlock=false;};F=FCKDomTools.GetNextSourceNode(F,false,null,C);};if (A) this.Select();return this._Cache.IsEndOfBlock=true;},CreateBookmark:function(A){var B={StartId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'S',EndId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'E'};var C=this.Window.document;var D;var E;var F;if (!this.CheckIsCollapsed()){E=C.createElement('span');E.style.display='none';E.id=B.EndId;E.setAttribute('_fck_bookmark',true);E.innerHTML='&nbsp;';F=this.Clone();F.Collapse(false);F.InsertNode(E);};D=C.createElement('span');D.style.display='none';D.id=B.StartId;D.setAttribute('_fck_bookmark',true);D.innerHTML='&nbsp;';F=this.Clone();F.Collapse(true);F.InsertNode(D);if (A){B.StartNode=D;B.EndNode=E;};if (E){this.SetStart(D,4);this.SetEnd(E,3);}else this.MoveToPosition(D,4);return B;},GetBookmarkNode:function(A,B){var C=this.Window.document;if (B) return A.StartNode||C.getElementById(A.StartId);else return A.EndNode||C.getElementById(A.EndId);},MoveToBookmark:function(A,B){var C=this.GetBookmarkNode(A,true);var D=this.GetBookmarkNode(A,false);this.SetStart(C,3);if (!B) FCKDomTools.RemoveNode(C);if (D){this.SetEnd(D,3);if (!B) FCKDomTools.RemoveNode(D);}else this.Collapse(true);this._UpdateElementInfo();},CreateBookmark2:function(){if (!this._Range) return { "Start":0,"End":0 };var A={"Start":[this._Range.startOffset],"End":[this._Range.endOffset]};var B=this._Range.startContainer.previousSibling;var C=this._Range.endContainer.previousSibling;var D=this._Range.startContainer;var E=this._Range.endContainer;while (B&&B.nodeType==3){A.Start[0]+=B.length;D=B;B=B.previousSibling;};while (C&&C.nodeType==3){A.End[0]+=C.length;E=C;C=C.previousSibling;};if (D.nodeType==1&&D.childNodes[A.Start[0]]&&D.childNodes[A.Start[0]].nodeType==3){var F=D.childNodes[A.Start[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};D=F;A.Start[0]=G;};if (E.nodeType==1&&E.childNodes[A.End[0]]&&E.childNodes[A.End[0]].nodeType==3){var F=E.childNodes[A.End[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};E=F;A.End[0]=G;};A.Start=FCKDomTools.GetNodeAddress(D,true).concat(A.Start);A.End=FCKDomTools.GetNodeAddress(E,true).concat(A.End);return A;},MoveToBookmark2:function(A){var B=FCKDomTools.GetNodeFromAddress(this.Window.document,A.Start.slice(0,-1),true);var C=FCKDomTools.GetNodeFromAddress(this.Window.document,A.End.slice(0,-1),true);this.Release(true);this._Range=new FCKW3CRange(this.Window.document);var D=A.Start[A.Start.length-1];var E=A.End[A.End.length-1];while (B.nodeType==3&&D>B.length){if (!B.nextSibling||B.nextSibling.nodeType!=3) break;D-=B.length;B=B.nextSibling;};while (C.nodeType==3&&E>C.length){if (!C.nextSibling||C.nextSibling.nodeType!=3) break;E-=C.length;C=C.nextSibling;};this._Range.setStart(B,D);this._Range.setEnd(C,E);this._UpdateElementInfo();},MoveToPosition:function(A,B){this.SetStart(A,B);this.Collapse(true);},SetStart:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setStart(A,0);break;case 2:D.setStart(A,A.childNodes.length);break;case 3:D.setStartBefore(A);break;case 4:D.setStartAfter(A);};if (!C) this._UpdateElementInfo();},SetEnd:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setEnd(A,0);break;case 2:D.setEnd(A,A.childNodes.length);break;case 3:D.setEndBefore(A);break;case 4:D.setEndAfter(A);};if (!C) this._UpdateElementInfo();},Expand:function(A){var B,oSibling;switch (A){case 'inline_elements':if (this._Range.startOffset==0){B=this._Range.startContainer;if (B.nodeType!=1) B=B.previousSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setStartBefore(B);if (B!=B.parentNode.firstChild) break;B=B.parentNode;}}};B=this._Range.endContainer;var C=this._Range.endOffset;if ((B.nodeType==3&&C>=B.nodeValue.length)||(B.nodeType==1&&C>=B.childNodes.length)||(B.nodeType!=1&&B.nodeType!=3)){if (B.nodeType!=1) B=B.nextSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setEndAfter(B);if (B!=B.parentNode.lastChild) break;B=B.parentNode;}}};break;case 'block_contents':case 'list_contents':var D=FCKListsLib.BlockBoundaries;if (A=='list_contents'||FCKConfig.EnterMode=='br') D=FCKListsLib.ListBoundaries;if (this.StartBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents') this.SetStart(this.StartBlock,1);else{B=this._Range.startContainer;if (B.nodeType==1){var E=B.childNodes[this._Range.startOffset];if (E) B=FCKDomTools.GetPreviousSourceNode(E,true);else B=B.lastChild||B;};while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setStartBefore(B);B=B.previousSibling||B.parentNode;}};if (this.EndBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents'&&this.EndBlock.nodeName.toLowerCase()!='li') this.SetEnd(this.EndBlock,2);else{B=this._Range.endContainer;if (B.nodeType==1) B=B.childNodes[this._Range.endOffset]||B.lastChild;while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setEndAfter(B);B=B.nextSibling||B.parentNode;};if (B&&B.nodeName.toLowerCase()=='br') this._Range.setEndAfter(B);};this._UpdateElementInfo();}},SplitBlock:function(){if (!this._Range) this.MoveToSelection();if (this.StartBlockLimit==this.EndBlockLimit){var A=this.StartBlock;var B=this.EndBlock;var C=null;if (FCKConfig.EnterMode!='br'){if (!A){A=this.FixBlock(true);B=this.EndBlock;};if (!B) B=this.FixBlock(false);};var D=(A!=null&&this.CheckStartOfBlock());var E=(B!=null&&this.CheckEndOfBlock());if (!this.CheckIsEmpty()) this.DeleteContents();if (A&&B&&A==B){if (E){C=new FCKElementPath(this.StartContainer);this.MoveToPosition(B,4);B=null;}else if (D){C=new FCKElementPath(this.StartContainer);this.MoveToPosition(A,3);A=null;}else{this.SetEnd(A,2);var F=this.ExtractContents();B=A.cloneNode(false);B.removeAttribute('id',false);F.AppendTo(B);FCKDomTools.InsertAfterNode(A,B);this.MoveToPosition(A,4);if (FCKBrowserInfo.IsGecko&&!A.nodeName.IEquals(['ul','ol'])) FCKTools.AppendBogusBr(A);}};return {PreviousBlock:A,NextBlock:B,WasStartOfBlock:D,WasEndOfBlock:E,ElementPath:C};};return null;},FixBlock:function(A){var B=this.CreateBookmark();this.Collapse(A);this.Expand('block_contents');var C=this.Window.document.createElement(FCKConfig.EnterMode);this.ExtractContents().AppendTo(C);FCKDomTools.TrimNode(C);this.InsertNode(C);this.MoveToBookmark(B);return C;},Release:function(A){if (!A) this.Window=null;this.StartNode=null;this.StartContainer=null;this.StartBlock=null;this.StartBlockLimit=null;this.EndNode=null;this.EndContainer=null;this.EndBlock=null;this.EndBlockLimit=null;this._Range=null;this._Cache=null;},CheckHasRange:function(){return!!this._Range;},GetTouchedStartNode:function(){var A=this._Range;var B=A.startContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.startOffset]||B;},GetTouchedEndNode:function(){var A=this._Range;var B=A.endContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.endOffset-1]||B;}};
+var FCKElementPath=function(A){var B=null;var C=null;var D=[];var e=A;while (e){if (e.nodeType==1){if (!this.LastElement) this.LastElement=e;var E=e.nodeName.toLowerCase();if (FCKBrowserInfo.IsIE&&e.scopeName!='HTML') E=e.scopeName.toLowerCase()+':'+E;if (!C){if (!B&&FCKListsLib.PathBlockElements[E]!=null) B=e;if (FCKListsLib.PathBlockLimitElements[E]!=null){if (!B&&E=='div'&&!FCKElementPath._CheckHasBlock(e)) B=e;else C=e;}};D.push(e);if (E=='body') break;};e=e.parentNode;};this.Block=B;this.BlockLimit=C;this.Elements=D;};FCKElementPath._CheckHasBlock=function(A){var B=A.childNodes;for (var i=0,count=B.length;i<count;i++){var C=B[i];if (C.nodeType==1&&FCKListsLib.BlockElements[C.nodeName.toLowerCase()]) return true;};return false;};
+var FCKDomRange=function(A){this.Window=A;this._Cache={};};FCKDomRange.prototype={_UpdateElementInfo:function(){var A=this._Range;if (!A) this.Release(true);else{var B=A.startContainer;var C=A.endContainer;var D=new FCKElementPath(B);this.StartNode=B.nodeType==3?B:B.childNodes[A.startOffset];this.StartContainer=B;this.StartBlock=D.Block;this.StartBlockLimit=D.BlockLimit;if (B!=C) D=new FCKElementPath(C);var E=C;if (A.endOffset==0){while (E&&!E.previousSibling) E=E.parentNode;if (E) E=E.previousSibling;}else if (E.nodeType==1) E=E.childNodes[A.endOffset-1];this.EndNode=E;this.EndContainer=C;this.EndBlock=D.Block;this.EndBlockLimit=D.BlockLimit;};this._Cache={};},CreateRange:function(){return new FCKW3CRange(this.Window.document);},DeleteContents:function(){if (this._Range){this._Range.deleteContents();this._UpdateElementInfo();}},ExtractContents:function(){if (this._Range){var A=this._Range.extractContents();this._UpdateElementInfo();return A;};return null;},CheckIsCollapsed:function(){if (this._Range) return this._Range.collapsed;return false;},Collapse:function(A){if (this._Range) this._Range.collapse(A);this._UpdateElementInfo();},Clone:function(){var A=FCKTools.CloneObject(this);if (this._Range) A._Range=this._Range.cloneRange();return A;},MoveToNodeContents:function(A){if (!this._Range) this._Range=this.CreateRange();this._Range.selectNodeContents(A);this._UpdateElementInfo();},MoveToElementStart:function(A){this.SetStart(A,1);this.SetEnd(A,1);},MoveToElementEditStart:function(A){var B;while (A&&A.nodeType==1){if (FCKDomTools.CheckIsEditable(A)) B=A;else if (B) break;A=A.firstChild;};if (B) this.MoveToElementStart(B);},InsertNode:function(A){if (this._Range) this._Range.insertNode(A);},CheckIsEmpty:function(){if (this.CheckIsCollapsed()) return true;var A=this.Window.document.createElement('div');this._Range.cloneContents().AppendTo(A);FCKDomTools.TrimNode(A);return (A.innerHTML.length==0);},CheckStartOfBlock:function(){var A=this._Cache;var B=A.IsStartOfBlock;if (B!=undefined) return B;var C=this.StartBlock||this.StartBlockLimit;var D=this._Range.startContainer;var E=this._Range.startOffset;var F;if (E>0){if (D.nodeType==3){var G=D.nodeValue.substr(0,E).Trim();if (G.length!=0) return A.IsStartOfBlock=false;}else F=D.childNodes[E-1];};if (!F) F=FCKDomTools.GetPreviousSourceNode(D,true,null,C);while (F){switch (F.nodeType){case 1:if (!FCKListsLib.InlineChildReqElements[F.nodeName.toLowerCase()]) return A.IsStartOfBlock=false;break;case 3:if (F.nodeValue.Trim().length>0) return A.IsStartOfBlock=false;};F=FCKDomTools.GetPreviousSourceNode(F,false,null,C);};return A.IsStartOfBlock=true;},CheckEndOfBlock:function(A){var B=this._Cache.IsEndOfBlock;if (B!=undefined) return B;var C=this.EndBlock||this.EndBlockLimit;var D=this._Range.endContainer;var E=this._Range.endOffset;var F;if (D.nodeType==3){var G=D.nodeValue;if (E<G.length){G=G.substr(E);if (G.Trim().length!=0) return this._Cache.IsEndOfBlock=false;}}else F=D.childNodes[E];if (!F) F=FCKDomTools.GetNextSourceNode(D,true,null,C);var H=false;while (F){switch (F.nodeType){case 1:var I=F.nodeName.toLowerCase();if (FCKListsLib.InlineChildReqElements[I]) break;if (I=='br'&&!H){H=true;break;};return this._Cache.IsEndOfBlock=false;case 3:if (F.nodeValue.Trim().length>0) return this._Cache.IsEndOfBlock=false;};F=FCKDomTools.GetNextSourceNode(F,false,null,C);};if (A) this.Select();return this._Cache.IsEndOfBlock=true;},CreateBookmark:function(A){var B={StartId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'S',EndId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'E'};var C=this.Window.document;var D;var E;var F;if (!this.CheckIsCollapsed()){E=C.createElement('span');E.style.display='none';E.id=B.EndId;E.setAttribute('_fck_bookmark',true);E.innerHTML='&nbsp;';F=this.Clone();F.Collapse(false);F.InsertNode(E);};D=C.createElement('span');D.style.display='none';D.id=B.StartId;D.setAttribute('_fck_bookmark',true);D.innerHTML='&nbsp;';F=this.Clone();F.Collapse(true);F.InsertNode(D);if (A){B.StartNode=D;B.EndNode=E;};if (E){this.SetStart(D,4);this.SetEnd(E,3);}else this.MoveToPosition(D,4);return B;},GetBookmarkNode:function(A,B){var C=this.Window.document;if (B) return A.StartNode||C.getElementById(A.StartId);else return A.EndNode||C.getElementById(A.EndId);},MoveToBookmark:function(A,B){var C=this.GetBookmarkNode(A,true);var D=this.GetBookmarkNode(A,false);this.SetStart(C,3);if (!B) FCKDomTools.RemoveNode(C);if (D){this.SetEnd(D,3);if (!B) FCKDomTools.RemoveNode(D);}else this.Collapse(true);this._UpdateElementInfo();},CreateBookmark2:function(){if (!this._Range) return { "Start":0,"End":0 };var A={"Start":[this._Range.startOffset],"End":[this._Range.endOffset]};var B=this._Range.startContainer.previousSibling;var C=this._Range.endContainer.previousSibling;var D=this._Range.startContainer;var E=this._Range.endContainer;while (B&&B.nodeType==3){A.Start[0]+=B.length;D=B;B=B.previousSibling;};while (C&&C.nodeType==3){A.End[0]+=C.length;E=C;C=C.previousSibling;};if (D.nodeType==1&&D.childNodes[A.Start[0]]&&D.childNodes[A.Start[0]].nodeType==3){var F=D.childNodes[A.Start[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};D=F;A.Start[0]=G;};if (E.nodeType==1&&E.childNodes[A.End[0]]&&E.childNodes[A.End[0]].nodeType==3){var F=E.childNodes[A.End[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};E=F;A.End[0]=G;};A.Start=FCKDomTools.GetNodeAddress(D,true).concat(A.Start);A.End=FCKDomTools.GetNodeAddress(E,true).concat(A.End);return A;},MoveToBookmark2:function(A){var B=FCKDomTools.GetNodeFromAddress(this.Window.document,A.Start.slice(0,-1),true);var C=FCKDomTools.GetNodeFromAddress(this.Window.document,A.End.slice(0,-1),true);this.Release(true);this._Range=new FCKW3CRange(this.Window.document);var D=A.Start[A.Start.length-1];var E=A.End[A.End.length-1];while (B.nodeType==3&&D>B.length){if (!B.nextSibling||B.nextSibling.nodeType!=3) break;D-=B.length;B=B.nextSibling;};while (C.nodeType==3&&E>C.length){if (!C.nextSibling||C.nextSibling.nodeType!=3) break;E-=C.length;C=C.nextSibling;};this._Range.setStart(B,D);this._Range.setEnd(C,E);this._UpdateElementInfo();},MoveToPosition:function(A,B){this.SetStart(A,B);this.Collapse(true);},SetStart:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setStart(A,0);break;case 2:D.setStart(A,A.childNodes.length);break;case 3:D.setStartBefore(A);break;case 4:D.setStartAfter(A);};if (!C) this._UpdateElementInfo();},SetEnd:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setEnd(A,0);break;case 2:D.setEnd(A,A.childNodes.length);break;case 3:D.setEndBefore(A);break;case 4:D.setEndAfter(A);};if (!C) this._UpdateElementInfo();},Expand:function(A){var B,oSibling;switch (A){case 'inline_elements':if (this._Range.startOffset==0){B=this._Range.startContainer;if (B.nodeType!=1) B=B.previousSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setStartBefore(B);if (B!=B.parentNode.firstChild) break;B=B.parentNode;}}};B=this._Range.endContainer;var C=this._Range.endOffset;if ((B.nodeType==3&&C>=B.nodeValue.length)||(B.nodeType==1&&C>=B.childNodes.length)||(B.nodeType!=1&&B.nodeType!=3)){if (B.nodeType!=1) B=B.nextSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setEndAfter(B);if (B!=B.parentNode.lastChild) break;B=B.parentNode;}}};break;case 'block_contents':case 'list_contents':var D=FCKListsLib.BlockBoundaries;if (A=='list_contents'||FCKConfig.EnterMode=='br') D=FCKListsLib.ListBoundaries;if (this.StartBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents') this.SetStart(this.StartBlock,1);else{B=this._Range.startContainer;if (B.nodeType==1){var E=B.childNodes[this._Range.startOffset];if (E) B=FCKDomTools.GetPreviousSourceNode(E,true);else B=B.lastChild||B;};while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setStartBefore(B);B=B.previousSibling||B.parentNode;}};if (this.EndBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents'&&this.EndBlock.nodeName.toLowerCase()!='li') this.SetEnd(this.EndBlock,2);else{B=this._Range.endContainer;if (B.nodeType==1) B=B.childNodes[this._Range.endOffset]||B.lastChild;while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setEndAfter(B);B=B.nextSibling||B.parentNode;};if (B&&B.nodeName.toLowerCase()=='br') this._Range.setEndAfter(B);};this._UpdateElementInfo();}},SplitBlock:function(A){var B=A||FCKConfig.EnterMode;if (!this._Range) this.MoveToSelection();if (this.StartBlockLimit==this.EndBlockLimit){var C=this.StartBlock;var D=this.EndBlock;var E=null;if (B!='br'){if (!C){C=this.FixBlock(true,B);D=this.EndBlock;};if (!D) D=this.FixBlock(false,B);};var F=(C!=null&&this.CheckStartOfBlock());var G=(D!=null&&this.CheckEndOfBlock());if (!this.CheckIsEmpty()) this.DeleteContents();if (C&&D&&C==D){if (G){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(D,4);D=null;}else if (F){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(C,3);C=null;}else{this.SetEnd(C,2);var H=this.ExtractContents();D=C.cloneNode(false);D.removeAttribute('id',false);H.AppendTo(D);FCKDomTools.InsertAfterNode(C,D);this.MoveToPosition(C,4);if (FCKBrowserInfo.IsGecko&&!C.nodeName.IEquals(['ul','ol'])) FCKTools.AppendBogusBr(C);}};return {PreviousBlock:C,NextBlock:D,WasStartOfBlock:F,WasEndOfBlock:G,ElementPath:E};};return null;},FixBlock:function(A,B){var C=this.CreateBookmark();this.Collapse(A);this.Expand('block_contents');var D=this.Window.document.createElement(B);this.ExtractContents().AppendTo(D);FCKDomTools.TrimNode(D);this.InsertNode(D);this.MoveToBookmark(C);return D;},Release:function(A){if (!A) this.Window=null;this.StartNode=null;this.StartContainer=null;this.StartBlock=null;this.StartBlockLimit=null;this.EndNode=null;this.EndContainer=null;this.EndBlock=null;this.EndBlockLimit=null;this._Range=null;this._Cache=null;},CheckHasRange:function(){return!!this._Range;},GetTouchedStartNode:function(){var A=this._Range;var B=A.startContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.startOffset]||B;},GetTouchedEndNode:function(){var A=this._Range;var B=A.endContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.endOffset-1]||B;}};
 FCKDomRange.prototype.MoveToSelection=function(){this.Release(true);this._Range=new FCKW3CRange(this.Window.document);var A=this.Window.document.selection;if (A.type!='Control'){var B=this._GetSelectionMarkerTag(true);var C=this._GetSelectionMarkerTag(false);if (!B&&!C){this._Range.setStart(this.Window.document.body,0);this._UpdateElementInfo();return;};this._Range.setStart(B.parentNode,FCKDomTools.GetIndexOf(B));B.parentNode.removeChild(B);this._Range.setEnd(C.parentNode,FCKDomTools.GetIndexOf(C));C.parentNode.removeChild(C);this._UpdateElementInfo();}else{var D=A.createRange().item(0);if (D){this._Range.setStartBefore(D);this._Range.setEndAfter(D);this._UpdateElementInfo();}}};FCKDomRange.prototype.Select=function(A){if (this._Range) this.SelectBookmark(this.CreateBookmark(true),A);};FCKDomRange.prototype.SelectBookmark=function(A,B){var C=this.CheckIsCollapsed();var D;var E;var F=this.GetBookmarkNode(A,true);if (!F) return;var G;if (!C) G=this.GetBookmarkNode(A,false);var H=this.Window.document.body.createTextRange();H.moveToElementText(F);H.moveStart('character',1);if (G){var I=this.Window.document.body.createTextRange();I.moveToElementText(G);H.setEndPoint('EndToEnd',I);H.moveEnd('character',-1);}else{D=(B||!F.previousSibling||F.previousSibling.nodeName.toLowerCase()=='br')&&!F.nextSibing;E=this.Window.document.createElement('span');E.innerHTML='&#65279;';F.parentNode.insertBefore(E,F);if (D){F.parentNode.insertBefore(this.Window.document.createTextNode('\ufeff'),F);}};if (!this._Range) this._Range=this.CreateRange();this._Range.setStartBefore(F);F.parentNode.removeChild(F);if (C){if (D){H.moveStart('character',-1);H.select();this.Window.document.selection.clear();}else H.select();FCKDomTools.RemoveNode(E);}else{this._Range.setEndBefore(G);G.parentNode.removeChild(G);H.select();}};FCKDomRange.prototype._GetSelectionMarkerTag=function(A){var B=this.Window.document;var C=B.selection;var D;try{D=C.createRange();}catch (e){return null;};if (D.parentElement().document!=B) return null;D.collapse(A===true);var E='fck_dom_range_temp_'+(new Date()).valueOf()+'_'+Math.floor(Math.random()*1000);D.pasteHTML('<span id="'+E+'"></span>');return B.getElementById(E);};
-var FCKDomRangeIterator=function(A){this.Range=A;this.ForceBrBreak=false;this.EnforceRealBlocks=false;};FCKDomRangeIterator.CreateFromSelection=function(A){var B=new FCKDomRange(A);B.MoveToSelection();return new FCKDomRangeIterator(B);};FCKDomRangeIterator.prototype={GetNextParagraph:function(){var A;var B;var C;var D;var E;var F=this.ForceBrBreak?FCKListsLib.ListBoundaries:FCKListsLib.BlockBoundaries;if (!this._LastNode){var B=this.Range.Clone();B.Expand(this.ForceBrBreak?'list_contents':'block_contents');this._NextNode=B.GetTouchedStartNode();this._LastNode=B.GetTouchedEndNode();B=null;};var H=this._NextNode;var I=this._LastNode;while (H){var J=false;var K=(H.nodeType!=1);var L=false;if (!K){var M=H.nodeName.toLowerCase();if (F[M]){if (M=='br') K=true;else if (!B&&H.childNodes.length==0&&M!='hr'){A=H;C=H==I;break;};if (B) B.SetEnd(H,3,true);J=true;}else{if (H.firstChild){if (!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};H=H.firstChild;continue;};K=true;}}else if (H.nodeType==3){if (/^[\r\n\t ]+$/.test(H.nodeValue)) K=false;};if (K&&!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};C=((!J||K)&&H==I);if (B&&!J){while (!H.nextSibling&&!C){var N=H.parentNode;if (F[N.nodeName.toLowerCase()]){J=true;C=C||(N==I);break;};H=N;K=true;C=(H==I);L=true;}};if (K) B.SetEnd(H,4,true);if ((J||C)&&B){B._UpdateElementInfo();if (B.StartNode==B.EndNode&&B.StartNode.parentNode==B.StartBlockLimit&&B.StartNode.getAttribute&&B.StartNode.getAttribute('_fck_bookmark')) B=null;else break;};if (C) break;H=FCKDomTools.GetNextSourceNode(H,L,null,I);};if (!A){if (!B){this._NextNode=null;return null;};A=B.StartBlock;if (!A&&!this.EnforceRealBlocks&&B.StartBlockLimit.nodeName.IEquals('DIV','TH','TD')&&B.CheckStartOfBlock()&&B.CheckEndOfBlock()){A=B.StartBlockLimit;}else if (!A||(this.EnforceRealBlocks&&A.nodeName.toLowerCase()=='li')){A=this.Range.Window.document.createElement(FCKConfig.EnterMode=='p'?'p':'div');B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);B.InsertNode(A);D=true;E=true;}else if (A.nodeName.toLowerCase()!='li'){if (!B.CheckStartOfBlock()||!B.CheckEndOfBlock()){A=A.cloneNode(false);B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);var O=B.SplitBlock();D=!O.WasStartOfBlock;E=!O.WasEndOfBlock;FCKDebug.Output('removePreviousBr='+D+',removeLastBr='+E);B.InsertNode(A);}}else if (!C){this._NextNode=A==I?null:FCKDomTools.GetNextSourceNode(B.EndNode,true,null,I);return A;}};if (D){var P=A.previousSibling;if (P&&P.nodeType==1){if (P.nodeName.toLowerCase()=='br') P.parentNode.removeChild(P);else if (P.lastChild&&P.lastChild.nodeName.IEquals('br')) P.removeChild(P.lastChild);}};if (E){var Q=A.lastChild;if (Q&&Q.nodeType==1&&Q.nodeName.toLowerCase()=='br') A.removeChild(Q);};this._NextNode=(C||A==I)?null:FCKDomTools.GetNextSourceNode(A,true,null,I);return A;}};
+var FCKDomRangeIterator=function(A){this.Range=A;this.ForceBrBreak=false;this.EnforceRealBlocks=false;};FCKDomRangeIterator.CreateFromSelection=function(A){var B=new FCKDomRange(A);B.MoveToSelection();return new FCKDomRangeIterator(B);};FCKDomRangeIterator.prototype={GetNextParagraph:function(){var A;var B;var C;var D;var E;var F=this.ForceBrBreak?FCKListsLib.ListBoundaries:FCKListsLib.BlockBoundaries;if (!this._LastNode){var B=this.Range.Clone();B.Expand(this.ForceBrBreak?'list_contents':'block_contents');this._NextNode=B.GetTouchedStartNode();this._LastNode=B.GetTouchedEndNode();B=null;};var H=this._NextNode;var I=this._LastNode;this._NextNode=null;while (H){var J=false;var K=(H.nodeType!=1);var L=false;if (!K){var M=H.nodeName.toLowerCase();if (F[M]&&(!FCKBrowserInfo.IsIE||H.scopeName=='HTML')){if (M=='br') K=true;else if (!B&&H.childNodes.length==0&&M!='hr'){A=H;C=H==I;break;};if (B){B.SetEnd(H,3,true);if (M!='br') this._NextNode=H;};J=true;}else{if (H.firstChild){if (!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};H=H.firstChild;continue;};K=true;}}else if (H.nodeType==3){if (/^[\r\n\t ]+$/.test(H.nodeValue)) K=false;};if (K&&!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};C=((!J||K)&&H==I);if (B&&!J){while (!H.nextSibling&&!C){var N=H.parentNode;if (F[N.nodeName.toLowerCase()]){J=true;C=C||(N==I);break;};H=N;K=true;C=(H==I);L=true;}};if (K) B.SetEnd(H,4,true);if ((J||C)&&B){B._UpdateElementInfo();if (B.StartNode==B.EndNode&&B.StartNode.parentNode==B.StartBlockLimit&&B.StartNode.getAttribute&&B.StartNode.getAttribute('_fck_bookmark')) B=null;else break;};if (C) break;H=FCKDomTools.GetNextSourceNode(H,L,null,I);};if (!A){if (!B){this._NextNode=null;return null;};A=B.StartBlock;if (!A&&!this.EnforceRealBlocks&&B.StartBlockLimit.nodeName.IEquals('DIV','TH','TD')&&B.CheckStartOfBlock()&&B.CheckEndOfBlock()){A=B.StartBlockLimit;}else if (!A||(this.EnforceRealBlocks&&A.nodeName.toLowerCase()=='li')){A=this.Range.Window.document.createElement(FCKConfig.EnterMode=='p'?'p':'div');B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);B.InsertNode(A);D=true;E=true;}else if (A.nodeName.toLowerCase()!='li'){if (!B.CheckStartOfBlock()||!B.CheckEndOfBlock()){A=A.cloneNode(false);B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);var O=B.SplitBlock();D=!O.WasStartOfBlock;E=!O.WasEndOfBlock;B.InsertNode(A);}}else if (!C){this._NextNode=A==I?null:FCKDomTools.GetNextSourceNode(B.EndNode,true,null,I);return A;}};if (D){var P=A.previousSibling;if (P&&P.nodeType==1){if (P.nodeName.toLowerCase()=='br') P.parentNode.removeChild(P);else if (P.lastChild&&P.lastChild.nodeName.IEquals('br')) P.removeChild(P.lastChild);}};if (E){var Q=A.lastChild;if (Q&&Q.nodeType==1&&Q.nodeName.toLowerCase()=='br') A.removeChild(Q);};if (!this._NextNode) this._NextNode=(C||A==I)?null:FCKDomTools.GetNextSourceNode(A,true,null,I);return A;}};
 var FCKDocumentFragment=function(A){this._Document=A;this.RootNode=A.createElement('div');};FCKDocumentFragment.prototype={AppendTo:function(A){FCKDomTools.MoveChildren(this.RootNode,A);},AppendHtml:function(A){var B=this._Document.createElement('div');B.innerHTML=A;FCKDomTools.MoveChildren(B,this.RootNode);},InsertAfterNode:function(A){var B=this.RootNode;var C;while((C=B.lastChild)) FCKDomTools.InsertAfterNode(A,B.removeChild(C));}};
-var FCKW3CRange=function(A){this._Document=A;this.startContainer=null;this.startOffset=null;this.endContainer=null;this.endOffset=null;this.collapsed=true;};FCKW3CRange.CreateRange=function(A){return new FCKW3CRange(A);};FCKW3CRange.CreateFromRange=function(A,B){var C=FCKW3CRange.CreateRange(A);C.setStart(B.startContainer,B.startOffset);C.setEnd(B.endContainer,B.endOffset);return C;};FCKW3CRange.prototype={_UpdateCollapsed:function(){this.collapsed=(this.startContainer==this.endContainer&&this.startOffset==this.endOffset);},setStart:function(A,B){this.startContainer=A;this.startOffset=B;if (!this.endContainer){this.endContainer=A;this.endOffset=B;};this._UpdateCollapsed();},setEnd:function(A,B){this.endContainer=A;this.endOffset=B;if (!this.startContainer){this.startContainer=A;this.startOffset=B;};this._UpdateCollapsed();},setStartAfter:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setStartBefore:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A));},setEndAfter:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setEndBefore:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A));},collapse:function(A){if (A){this.endContainer=this.startContainer;this.endOffset=this.startOffset;}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset;};this.collapsed=true;},selectNodeContents:function(A){this.setStart(A,0);this.setEnd(A,A.nodeType==3?A.data.length:A.childNodes.length);},insertNode:function(A){var B=this.startContainer;var C=this.startOffset;if (B.nodeType==3){B.splitText(C);if (B==this.endContainer) this.setEnd(B.nextSibling,this.endOffset-this.startOffset);FCKDomTools.InsertAfterNode(B,A);return;}else{B.insertBefore(A,B.childNodes[C]||null);if (B==this.endContainer){this.endOffset++;this.collapsed=false;}}},deleteContents:function(){if (this.collapsed) return;this._ExecContentsAction(0);},extractContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(1,A);return A;},cloneContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(2,A);return A;},_ExecContentsAction:function(A,B){var C=this.startContainer;var D=this.endContainer;var E=this.startOffset;var F=this.endOffset;var G=false;var H=false;if (D.nodeType==3) D=D.splitText(F);else{if (D.childNodes.length>0){if (F>D.childNodes.length-1){D=FCKDomTools.InsertAfterNode(D.lastChild,this._Document.createTextNode(''));H=true;}else D=D.childNodes[F];}};if (C.nodeType==3){C.splitText(E);if (C==D) D=C.nextSibling;}else{if (C.childNodes.length>0&&E<=C.childNodes.length-1){if (E==0){C=C.insertBefore(this._Document.createTextNode(''),C.firstChild);G=true;}else C=C.childNodes[E].previousSibling;}};var I=FCKDomTools.GetParents(C);var J=FCKDomTools.GetParents(D);var i,topStart,topEnd;for (i=0;i<I.length;i++){topStart=I[i];topEnd=J[i];if (topStart!=topEnd) break;};var K,levelStartNode,levelClone,currentNode,currentSibling;if (B) K=B.RootNode;for (var j=i;j<I.length;j++){levelStartNode=I[j];if (K&&levelStartNode!=C) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==C));currentNode=levelStartNode.nextSibling;while(currentNode){if (currentNode==J[j]||currentNode==D) break;currentSibling=currentNode.nextSibling;if (A==2) K.appendChild(currentNode.cloneNode(true));else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.appendChild(currentNode);};currentNode=currentSibling;};if (K) K=levelClone;};if (B) K=B.RootNode;for (var k=i;k<J.length;k++){levelStartNode=J[k];if (A>0&&levelStartNode!=D) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==D));if (!I[k]||levelStartNode.parentNode!=I[k].parentNode){currentNode=levelStartNode.previousSibling;while(currentNode){if (currentNode==I[k]||currentNode==C) break;currentSibling=currentNode.previousSibling;if (A==2) K.insertBefore(currentNode.cloneNode(true),K.firstChild);else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.insertBefore(currentNode,K.firstChild);};currentNode=currentSibling;}};if (K) K=levelClone;};if (A==2){var L=this.startContainer;if (L.nodeType==3){L.data+=L.nextSibling.data;L.parentNode.removeChild(L.nextSibling);};var M=this.endContainer;if (M.nodeType==3&&M.nextSibling){M.data+=M.nextSibling.data;M.parentNode.removeChild(M.nextSibling);}}else{if (topStart&&topEnd&&(C.parentNode!=topStart.parentNode||D.parentNode!=topEnd.parentNode)){var N=FCKDomTools.GetIndexOf(topEnd);if (G&&topEnd.parentNode==C.parentNode) N--;this.setStart(topEnd.parentNode,N);};this.collapse(true);};if(G) C.parentNode.removeChild(C);if(H&&D.parentNode) D.parentNode.removeChild(D);},cloneRange:function(){return FCKW3CRange.CreateFromRange(this._Document,this);}};
-var FCKEnterKey=function(A,B,C,D){this.Window=A;this.EnterMode=B||'p';this.ShiftEnterMode=C||'br';var E=new FCKKeystrokeHandler(false);E._EnterKey=this;E.OnKeystroke=FCKEnterKey_OnKeystroke;E.SetKeystrokes([[13,'Enter'],[SHIFT+13,'ShiftEnter'],[9,'Tab'],[8,'Backspace'],[CTRL+8,'CtrlBackspace'],[46,'Delete']]);if (D>0){this.TabText='';while (D-->0) this.TabText+='\xa0';};E.AttachToElement(A.document);};function FCKEnterKey_OnKeystroke(A,B){var C=this._EnterKey;try{switch (B){case 'Enter':return C.DoEnter();break;case 'ShiftEnter':return C.DoShiftEnter();break;case 'Backspace':return C.DoBackspace();break;case 'Delete':return C.DoDelete();break;case 'Tab':return C.DoTab();break;case 'CtrlBackspace':return C.DoCtrlBackspace();break;}}catch (e){};return false;};FCKEnterKey.prototype.DoEnter=function(A,B){FCKUndo.SaveUndoStep();this._HasShift=(B===true);var C=FCKSelection.GetParentElement();var D=new FCKElementPath(C);var E=A||this.EnterMode;if (E=='br'||D.Block&&D.Block.tagName.toLowerCase()=='pre') return this._ExecuteEnterBr();else return this._ExecuteEnterBlock(E);};FCKEnterKey.prototype.DoShiftEnter=function(){return this.DoEnter(this.ShiftEnterMode,true);};FCKEnterKey.prototype.DoBackspace=function(){var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};var C=B.CheckIsCollapsed();if (!C){if (FCKBrowserInfo.IsIE&&this.Window.document.selection.type.toLowerCase()=="control"){var D=this.Window.document.selection.createRange();for (var i=D.length-1;i>=0;i--){var E=D.item(i);E.parentNode.removeChild(E);};return true;};return false;};var F=B.StartBlock;var G=B.EndBlock;if (B.StartBlockLimit==B.EndBlockLimit&&F&&G){if (!C){var H=B.CheckEndOfBlock();B.DeleteContents();if (F!=G){B.SetStart(G,1);B.SetEnd(G,1);};B.Select();A=(F==G);};if (B.CheckStartOfBlock()){var I=B.StartBlock;var J=FCKDomTools.GetPreviousSourceElement(I,true,['BODY',B.StartBlockLimit.nodeName],['UL','OL']);A=this._ExecuteBackspace(B,J,I);}else if (FCKBrowserInfo.IsGeckoLike){B.Select();}};B.Release();return A;};FCKEnterKey.prototype.DoCtrlBackspace=function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(this.Window);A.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(A,this.Window.document.body)){this._FixIESelectAllBug(A);return true;};return false;};FCKEnterKey.prototype._ExecuteBackspace=function(A,B,C){var D=false;if (!B&&C&&C.nodeName.IEquals('LI')&&C.parentNode.parentNode.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};if (B&&B.nodeName.IEquals('LI')){var E=FCKDomTools.GetLastChild(B,['UL','OL']);while (E){B=FCKDomTools.GetLastChild(E,'LI');E=FCKDomTools.GetLastChild(B,['UL','OL']);}};if (B&&C){if (C.nodeName.IEquals('LI')&&!B.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};var F=C.parentNode;var G=B.nodeName.toLowerCase();if (FCKListsLib.EmptyElements[G]!=null||G=='table'){FCKDomTools.RemoveNode(B);D=true;}else{FCKDomTools.RemoveNode(C);while (F.innerHTML.Trim().length==0){var H=F.parentNode;H.removeChild(F);F=H;};FCKDomTools.LTrimNode(C);FCKDomTools.RTrimNode(B);A.SetStart(B,2,true);A.Collapse(true);var I=A.CreateBookmark(true);if (!C.tagName.IEquals(['TABLE'])) FCKDomTools.MoveChildren(C,B);A.SelectBookmark(I);D=true;}};return D;};FCKEnterKey.prototype.DoDelete=function(){FCKUndo.SaveUndoStep();var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};if (B.CheckIsCollapsed()&&B.CheckEndOfBlock(FCKBrowserInfo.IsGeckoLike)){var C=B.StartBlock;var D=FCKTools.GetElementAscensor(C,'td');var E=FCKDomTools.GetNextSourceElement(C,true,[B.StartBlockLimit.nodeName],['UL','OL','TR'],true);if (D){var F=FCKTools.GetElementAscensor(E,'td');if (F!=D) return true;};A=this._ExecuteBackspace(B,C,E);};B.Release();return A;};FCKEnterKey.prototype.DoTab=function(){var A=new FCKDomRange(this.Window);A.MoveToSelection();var B=A._Range.startContainer;while (B){if (B.nodeType==1){var C=B.tagName.toLowerCase();if (C=="tr"||C=="td"||C=="th"||C=="tbody"||C=="table") return false;else break;};B=B.parentNode;};if (this.TabText){A.DeleteContents();A.InsertNode(this.Window.document.createTextNode(this.TabText));A.Collapse(false);A.Select();};return true;};FCKEnterKey.prototype._ExecuteEnterBlock=function(A,B){var C=B||new FCKDomRange(this.Window);var D=C.SplitBlock();if (D){var E=D.PreviousBlock;var F=D.NextBlock;var G=D.WasStartOfBlock;var H=D.WasEndOfBlock;if (!D.WasStartOfBlock&&!D.WasEndOfBlock){if (F.nodeName.IEquals('li')&&F.firstChild&&F.firstChild.nodeName.IEquals(['ul','ol'])) F.insertBefore(F.ownerDocument.createTextNode('\xa0'),F.firstChild);if (F) C.MoveToElementEditStart(F);}else{if (G&&H&&E.tagName.toUpperCase()=='LI'){C.MoveToElementStart(E);this._OutdentWithSelection(E,C);C.Release();return true;};var I;if (E){var J=E.tagName.toUpperCase();if (!this._HasShift&&!(/^H[1-6]$/).test(J)){I=FCKDomTools.CloneElement(E);}}else if (F) I=FCKDomTools.CloneElement(F);if (!I) I=this.Window.document.createElement(A);var K=D.ElementPath;if (K){for (var i=0,len=K.Elements.length;i<len;i++){var L=K.Elements[i];if (L==K.Block||L==K.BlockLimit) break;if (FCKListsLib.InlineChildReqElements[L.nodeName.toLowerCase()]){L=FCKDomTools.CloneElement(L);FCKDomTools.MoveChildren(I,L);I.appendChild(L);}}};if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);C.InsertNode(I);if (FCKBrowserInfo.IsIE){C.MoveToNodeContents(I);C.Select();};C.MoveToElementEditStart(G&&!H?F:I);};if (FCKBrowserInfo.IsSafari) FCKDomTools.ScrollIntoView(F||I,false);else if (FCKBrowserInfo.IsGeckoLike) (F||I).scrollIntoView(false);C.Select();};C.Release();return true;};FCKEnterKey.prototype._ExecuteEnterBr=function(A){var B=new FCKDomRange(this.Window);B.MoveToSelection();if (B.StartBlockLimit==B.EndBlockLimit){B.DeleteContents();B.MoveToSelection();var C=B.CheckStartOfBlock();var D=B.CheckEndOfBlock();var E=B.StartBlock?B.StartBlock.tagName.toUpperCase():'';var F=this._HasShift;var G=false;if (!F&&E=='LI') return this._ExecuteEnterBlock(null,B);if (!F&&D&&(/^H[1-6]$/).test(E)){FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createElement('br'));if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createTextNode(''));B.SetStart(B.StartBlock.nextSibling,FCKBrowserInfo.IsIE?3:1);}else{var H;G=E.IEquals('pre');if (G) H=this.Window.document.createTextNode(FCKBrowserInfo.IsIE?'\r':'\n');else H=this.Window.document.createElement('br');B.InsertNode(H);if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(H,this.Window.document.createTextNode(''));if (D&&FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H.parentNode);if (FCKBrowserInfo.IsIE) B.SetStart(H,4);else B.SetStart(H.nextSibling,1);if (!FCKBrowserInfo.IsIE){var I=null;if (FCKBrowserInfo.IsOpera) I=this.Window.document.createElement('span');else I=this.Window.document.createElement('br');H.parentNode.insertBefore(I,H.nextSibling);if (FCKBrowserInfo.IsSafari) FCKDomTools.ScrollIntoView(I,false);else I.scrollIntoView(false);I.parentNode.removeChild(I);}};B.Collapse(true);B.Select(G);};B.Release();return true;};FCKEnterKey.prototype._OutdentWithSelection=function(A,B){var C=B.CreateBookmark();FCKListHandler.OutdentListItem(A);B.MoveToBookmark(C);B.Select();};FCKEnterKey.prototype._CheckIsAllContentsIncluded=function(A,B){var C=false;var D=false;if (A.StartContainer==B||A.StartContainer==B.firstChild) C=(A._Range.startOffset==0);if (A.EndContainer==B||A.EndContainer==B.lastChild){var E=A.EndContainer.nodeType==3?A.EndContainer.length:A.EndContainer.childNodes.length;D=(A._Range.endOffset==E);};return C&&D;};FCKEnterKey.prototype._FixIESelectAllBug=function(A){var B=this.Window.document;B.body.innerHTML='';var C;if (FCKConfig.EnterMode.IEquals(['div','p'])){C=B.createElement(FCKConfig.EnterMode);B.body.appendChild(C);}else C=B.body;A.MoveToNodeContents(C);A.Collapse(true);A.Select();A.Release();};
-var FCKDocumentProcessor={};FCKDocumentProcessor._Items=[];FCKDocumentProcessor.AppendNew=function(){var A={};this._Items.AddItem(A);return A;};FCKDocumentProcessor.Process=function(A){var B,i=0;while((B=this._Items[i++])) B.ProcessDocument(A);};var FCKDocumentProcessor_CreateFakeImage=function(A,B){var C=FCK.EditorDocument.createElement('IMG');C.className=A;C.src=FCKConfig.FullBasePath+'images/spacer.gif';C.setAttribute('_fckfakelement','true',0);C.setAttribute('_fckrealelement',FCKTempBin.AddElement(B),0);return C;};if (FCKBrowserInfo.IsIE||FCKBrowserInfo.IsOpera){var FCKAnchorsProcessor=FCKDocumentProcessor.AppendNew();FCKAnchorsProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('A');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.name.length>0){if (C.innerHTML!==''){if (FCKBrowserInfo.IsIE) C.className+=' FCK__AnchorC';}else{var D=FCKDocumentProcessor_CreateFakeImage('FCK__Anchor',C.cloneNode(true));D.setAttribute('_fckanchor','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}}}};var FCKPageBreaksProcessor=FCKDocumentProcessor.AppendNew();FCKPageBreaksProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('DIV');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.style.pageBreakAfter=='always'&&C.childNodes.length==1&&C.childNodes[0].style&&C.childNodes[0].style.display=='none'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',C.cloneNode(true));C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};var FCKFlashProcessor=FCKDocumentProcessor.AppendNew();FCKFlashProcessor.ProcessDocument=function(A){var B=FCK.IsDirty();var C=A.getElementsByTagName('EMBED');var D;var i=C.length-1;while (i>=0&&(D=C[i--])){var E=D.attributes['type'];if ((D.src&&D.src.EndsWith('.swf',true))||(E&&E.nodeValue=='application/x-shockwave-flash')){var F=D.cloneNode(true);var G=FCKDocumentProcessor_CreateFakeImage('FCK__Flash',F);G.setAttribute('_fckflash','true',0);FCKFlashProcessor.RefreshView(G,D);D.parentNode.insertBefore(G,D);D.parentNode.removeChild(D);}};if (!B) FCK.ResetIsDirty();};FCKFlashProcessor.RefreshView=function(A,B){if (B.getAttribute('width')>0) A.style.width=FCKTools.ConvertHtmlSizeToStyle(B.getAttribute('width'));if (B.getAttribute('height')>0) A.style.height=FCKTools.ConvertHtmlSizeToStyle(B.getAttribute('height'));};FCK.GetRealElement=function(A){var e=FCKTempBin.Elements[A.getAttribute('_fckrealelement')];if (A.getAttribute('_fckflash')){if (A.style.width.length>0) e.width=FCKTools.ConvertStyleSizeToHtml(A.style.width);if (A.style.height.length>0) e.height=FCKTools.ConvertStyleSizeToHtml(A.style.height);};return e;};if (FCKBrowserInfo.IsIE){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('HR');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){var D=A.createElement('hr');D.mergeAttributes(C,true);FCKDomTools.InsertAfterNode(C,D);C.parentNode.removeChild(C);}}};FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('INPUT');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.type=='hidden'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__InputHidden',C.cloneNode(true));D.setAttribute('_fckinputhidden','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}}
+var FCKW3CRange=function(A){this._Document=A;this.startContainer=null;this.startOffset=null;this.endContainer=null;this.endOffset=null;this.collapsed=true;};FCKW3CRange.CreateRange=function(A){return new FCKW3CRange(A);};FCKW3CRange.CreateFromRange=function(A,B){var C=FCKW3CRange.CreateRange(A);C.setStart(B.startContainer,B.startOffset);C.setEnd(B.endContainer,B.endOffset);return C;};FCKW3CRange.prototype={_UpdateCollapsed:function(){this.collapsed=(this.startContainer==this.endContainer&&this.startOffset==this.endOffset);},setStart:function(A,B){this.startContainer=A;this.startOffset=B;if (!this.endContainer){this.endContainer=A;this.endOffset=B;};this._UpdateCollapsed();},setEnd:function(A,B){this.endContainer=A;this.endOffset=B;if (!this.startContainer){this.startContainer=A;this.startOffset=B;};this._UpdateCollapsed();},setStartAfter:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setStartBefore:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A));},setEndAfter:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setEndBefore:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A));},collapse:function(A){if (A){this.endContainer=this.startContainer;this.endOffset=this.startOffset;}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset;};this.collapsed=true;},selectNodeContents:function(A){this.setStart(A,0);this.setEnd(A,A.nodeType==3?A.data.length:A.childNodes.length);},insertNode:function(A){var B=this.startContainer;var C=this.startOffset;if (B.nodeType==3){B.splitText(C);if (B==this.endContainer) this.setEnd(B.nextSibling,this.endOffset-this.startOffset);FCKDomTools.InsertAfterNode(B,A);return;}else{B.insertBefore(A,B.childNodes[C]||null);if (B==this.endContainer){this.endOffset++;this.collapsed=false;}}},deleteContents:function(){if (this.collapsed) return;this._ExecContentsAction(0);},extractContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(1,A);return A;},cloneContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(2,A);return A;},_ExecContentsAction:function(A,B){var C=this.startContainer;var D=this.endContainer;var E=this.startOffset;var F=this.endOffset;var G=false;var H=false;if (D.nodeType==3) D=D.splitText(F);else{if (D.childNodes.length>0){if (F>D.childNodes.length-1){D=FCKDomTools.InsertAfterNode(D.lastChild,this._Document.createTextNode(''));H=true;}else D=D.childNodes[F];}};if (C.nodeType==3){C.splitText(E);if (C==D) D=C.nextSibling;}else{if (E==0){C=C.insertBefore(this._Document.createTextNode(''),C.firstChild);G=true;}else if (E>C.childNodes.length-1){C=C.appendChild(this._Document.createTextNode(''));G=true;}else C=C.childNodes[E].previousSibling;};var I=FCKDomTools.GetParents(C);var J=FCKDomTools.GetParents(D);var i,topStart,topEnd;for (i=0;i<I.length;i++){topStart=I[i];topEnd=J[i];if (topStart!=topEnd) break;};var K,levelStartNode,levelClone,currentNode,currentSibling;if (B) K=B.RootNode;for (var j=i;j<I.length;j++){levelStartNode=I[j];if (K&&levelStartNode!=C) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==C));currentNode=levelStartNode.nextSibling;while(currentNode){if (currentNode==J[j]||currentNode==D) break;currentSibling=currentNode.nextSibling;if (A==2) K.appendChild(currentNode.cloneNode(true));else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.appendChild(currentNode);};currentNode=currentSibling;};if (K) K=levelClone;};if (B) K=B.RootNode;for (var k=i;k<J.length;k++){levelStartNode=J[k];if (A>0&&levelStartNode!=D) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==D));if (!I[k]||levelStartNode.parentNode!=I[k].parentNode){currentNode=levelStartNode.previousSibling;while(currentNode){if (currentNode==I[k]||currentNode==C) break;currentSibling=currentNode.previousSibling;if (A==2) K.insertBefore(currentNode.cloneNode(true),K.firstChild);else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.insertBefore(currentNode,K.firstChild);};currentNode=currentSibling;}};if (K) K=levelClone;};if (A==2){var L=this.startContainer;if (L.nodeType==3){L.data+=L.nextSibling.data;L.parentNode.removeChild(L.nextSibling);};var M=this.endContainer;if (M.nodeType==3&&M.nextSibling){M.data+=M.nextSibling.data;M.parentNode.removeChild(M.nextSibling);}}else{if (topStart&&topEnd&&(C.parentNode!=topStart.parentNode||D.parentNode!=topEnd.parentNode)){var N=FCKDomTools.GetIndexOf(topEnd);if (G&&topEnd.parentNode==C.parentNode) N--;this.setStart(topEnd.parentNode,N);};this.collapse(true);};if(G) C.parentNode.removeChild(C);if(H&&D.parentNode) D.parentNode.removeChild(D);},cloneRange:function(){return FCKW3CRange.CreateFromRange(this._Document,this);}};
+var FCKEnterKey=function(A,B,C,D){this.Window=A;this.EnterMode=B||'p';this.ShiftEnterMode=C||'br';var E=new FCKKeystrokeHandler(false);E._EnterKey=this;E.OnKeystroke=FCKEnterKey_OnKeystroke;E.SetKeystrokes([[13,'Enter'],[SHIFT+13,'ShiftEnter'],[9,'Tab'],[8,'Backspace'],[CTRL+8,'CtrlBackspace'],[46,'Delete']]);if (D>0){this.TabText='';while (D-->0) this.TabText+='\xa0';};E.AttachToElement(A.document);};function FCKEnterKey_OnKeystroke(A,B){var C=this._EnterKey;try{switch (B){case 'Enter':return C.DoEnter();break;case 'ShiftEnter':return C.DoShiftEnter();break;case 'Backspace':return C.DoBackspace();break;case 'Delete':return C.DoDelete();break;case 'Tab':return C.DoTab();break;case 'CtrlBackspace':return C.DoCtrlBackspace();break;}}catch (e){};return false;};FCKEnterKey.prototype.DoEnter=function(A,B){FCKUndo.SaveUndoStep();this._HasShift=(B===true);var C=FCKSelection.GetParentElement();var D=new FCKElementPath(C);var E=A||this.EnterMode;if (E=='br'||D.Block&&D.Block.tagName.toLowerCase()=='pre') return this._ExecuteEnterBr();else return this._ExecuteEnterBlock(E);};FCKEnterKey.prototype.DoShiftEnter=function(){return this.DoEnter(this.ShiftEnterMode,true);};FCKEnterKey.prototype.DoBackspace=function(){var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};var C=B.CheckIsCollapsed();if (!C){if (FCKBrowserInfo.IsIE&&this.Window.document.selection.type.toLowerCase()=="control"){var D=this.Window.document.selection.createRange();for (var i=D.length-1;i>=0;i--){var E=D.item(i);E.parentNode.removeChild(E);};return true;};return false;};var F=B.StartBlock;var G=B.EndBlock;if (B.StartBlockLimit==B.EndBlockLimit&&F&&G){if (!C){var H=B.CheckEndOfBlock();B.DeleteContents();if (F!=G){B.SetStart(G,1);B.SetEnd(G,1);};B.Select();A=(F==G);};if (B.CheckStartOfBlock()){var I=B.StartBlock;var J=FCKDomTools.GetPreviousSourceElement(I,true,['BODY',B.StartBlockLimit.nodeName],['UL','OL']);A=this._ExecuteBackspace(B,J,I);}else if (FCKBrowserInfo.IsGeckoLike){B.Select();}};B.Release();return A;};FCKEnterKey.prototype.DoCtrlBackspace=function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(this.Window);A.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(A,this.Window.document.body)){this._FixIESelectAllBug(A);return true;};return false;};FCKEnterKey.prototype._ExecuteBackspace=function(A,B,C){var D=false;if (!B&&C&&C.nodeName.IEquals('LI')&&C.parentNode.parentNode.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};if (B&&B.nodeName.IEquals('LI')){var E=FCKDomTools.GetLastChild(B,['UL','OL']);while (E){B=FCKDomTools.GetLastChild(E,'LI');E=FCKDomTools.GetLastChild(B,['UL','OL']);}};if (B&&C){if (C.nodeName.IEquals('LI')&&!B.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};var F=C.parentNode;var G=B.nodeName.toLowerCase();if (FCKListsLib.EmptyElements[G]!=null||G=='table'){FCKDomTools.RemoveNode(B);D=true;}else{FCKDomTools.RemoveNode(C);while (F.innerHTML.Trim().length==0){var H=F.parentNode;H.removeChild(F);F=H;};FCKDomTools.LTrimNode(C);FCKDomTools.RTrimNode(B);A.SetStart(B,2,true);A.Collapse(true);var I=A.CreateBookmark(true);if (!C.tagName.IEquals(['TABLE'])) FCKDomTools.MoveChildren(C,B);A.SelectBookmark(I);D=true;}};return D;};FCKEnterKey.prototype.DoDelete=function(){FCKUndo.SaveUndoStep();var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};if (B.CheckIsCollapsed()&&B.CheckEndOfBlock(FCKBrowserInfo.IsGeckoLike)){var C=B.StartBlock;var D=FCKTools.GetElementAscensor(C,'td');var E=FCKDomTools.GetNextSourceElement(C,true,[B.StartBlockLimit.nodeName],['UL','OL','TR'],true);if (D){var F=FCKTools.GetElementAscensor(E,'td');if (F!=D) return true;};A=this._ExecuteBackspace(B,C,E);};B.Release();return A;};FCKEnterKey.prototype.DoTab=function(){var A=new FCKDomRange(this.Window);A.MoveToSelection();var B=A._Range.startContainer;while (B){if (B.nodeType==1){var C=B.tagName.toLowerCase();if (C=="tr"||C=="td"||C=="th"||C=="tbody"||C=="table") return false;else break;};B=B.parentNode;};if (this.TabText){A.DeleteContents();A.InsertNode(this.Window.document.createTextNode(this.TabText));A.Collapse(false);A.Select();};return true;};FCKEnterKey.prototype._ExecuteEnterBlock=function(A,B){var C=B||new FCKDomRange(this.Window);var D=C.SplitBlock(A);if (D){var E=D.PreviousBlock;var F=D.NextBlock;var G=D.WasStartOfBlock;var H=D.WasEndOfBlock;if (F){if (F.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(F,F.parentNode);FCKDomTools.MoveNode(F,F.nextSibling,true);}}else if (E&&E.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(E,E.parentNode);C.MoveToElementEditStart(E.nextSibling);FCKDomTools.MoveNode(E,E.previousSibling);};if (!G&&!H){if (F.nodeName.IEquals('li')&&F.firstChild&&F.firstChild.nodeName.IEquals(['ul','ol'])) F.insertBefore(FCKTools.GetElementDocument(F).createTextNode('\xa0'),F.firstChild);if (F) C.MoveToElementEditStart(F);}else{if (G&&H&&E.tagName.toUpperCase()=='LI'){C.MoveToElementStart(E);this._OutdentWithSelection(E,C);C.Release();return true;};var I;if (E){var J=E.tagName.toUpperCase();if (!this._HasShift&&!(/^H[1-6]$/).test(J)){I=FCKDomTools.CloneElement(E);}}else if (F) I=FCKDomTools.CloneElement(F);if (!I) I=this.Window.document.createElement(A);var K=D.ElementPath;if (K){for (var i=0,len=K.Elements.length;i<len;i++){var L=K.Elements[i];if (L==K.Block||L==K.BlockLimit) break;if (FCKListsLib.InlineChildReqElements[L.nodeName.toLowerCase()]){L=FCKDomTools.CloneElement(L);FCKDomTools.MoveChildren(I,L);I.appendChild(L);}}};if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);C.InsertNode(I);if (FCKBrowserInfo.IsIE){C.MoveToElementEditStart(I);C.Select();};C.MoveToElementEditStart(G&&!H?F:I);};if (FCKBrowserInfo.IsSafari) FCKDomTools.ScrollIntoView(F||I,false);else if (FCKBrowserInfo.IsGeckoLike) (F||I).scrollIntoView(false);C.Select();};C.Release();return true;};FCKEnterKey.prototype._ExecuteEnterBr=function(A){var B=new FCKDomRange(this.Window);B.MoveToSelection();if (B.StartBlockLimit==B.EndBlockLimit){B.DeleteContents();B.MoveToSelection();var C=B.CheckStartOfBlock();var D=B.CheckEndOfBlock();var E=B.StartBlock?B.StartBlock.tagName.toUpperCase():'';var F=this._HasShift;var G=false;if (!F&&E=='LI') return this._ExecuteEnterBlock(null,B);if (!F&&D&&(/^H[1-6]$/).test(E)){FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createElement('br'));if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createTextNode(''));B.SetStart(B.StartBlock.nextSibling,FCKBrowserInfo.IsIE?3:1);}else{var H;G=E.IEquals('pre');if (G) H=this.Window.document.createTextNode(FCKBrowserInfo.IsIE?'\r':'\n');else H=this.Window.document.createElement('br');B.InsertNode(H);if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(H,this.Window.document.createTextNode(''));if (D&&FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H.parentNode);if (FCKBrowserInfo.IsIE) B.SetStart(H,4);else B.SetStart(H.nextSibling,1);if (!FCKBrowserInfo.IsIE){var I=null;if (FCKBrowserInfo.IsOpera) I=this.Window.document.createElement('span');else I=this.Window.document.createElement('br');H.parentNode.insertBefore(I,H.nextSibling);if (FCKBrowserInfo.IsSafari) FCKDomTools.ScrollIntoView(I,false);else I.scrollIntoView(false);I.parentNode.removeChild(I);}};B.Collapse(true);B.Select(G);};B.Release();return true;};FCKEnterKey.prototype._OutdentWithSelection=function(A,B){var C=B.CreateBookmark();FCKListHandler.OutdentListItem(A);B.MoveToBookmark(C);B.Select();};FCKEnterKey.prototype._CheckIsAllContentsIncluded=function(A,B){var C=false;var D=false;if (A.StartContainer==B||A.StartContainer==B.firstChild) C=(A._Range.startOffset==0);if (A.EndContainer==B||A.EndContainer==B.lastChild){var E=A.EndContainer.nodeType==3?A.EndContainer.length:A.EndContainer.childNodes.length;D=(A._Range.endOffset==E);};return C&&D;};FCKEnterKey.prototype._FixIESelectAllBug=function(A){var B=this.Window.document;B.body.innerHTML='';var C;if (FCKConfig.EnterMode.IEquals(['div','p'])){C=B.createElement(FCKConfig.EnterMode);B.body.appendChild(C);}else C=B.body;A.MoveToNodeContents(C);A.Collapse(true);A.Select();A.Release();};
+var FCKDocumentProcessor={};FCKDocumentProcessor._Items=[];FCKDocumentProcessor.AppendNew=function(){var A={};this._Items.AddItem(A);return A;};FCKDocumentProcessor.Process=function(A){var B=FCK.IsDirty();var C,i=0;while((C=this._Items[i++])) C.ProcessDocument(A);if (!B) FCK.ResetIsDirty();};var FCKDocumentProcessor_CreateFakeImage=function(A,B){var C=FCKTools.GetElementDocument(B).createElement('IMG');C.className=A;C.src=FCKConfig.FullBasePath+'images/spacer.gif';C.setAttribute('_fckfakelement','true',0);C.setAttribute('_fckrealelement',FCKTempBin.AddElement(B),0);return C;};if (FCKBrowserInfo.IsIE||FCKBrowserInfo.IsOpera){var FCKAnchorsProcessor=FCKDocumentProcessor.AppendNew();FCKAnchorsProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('A');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.name.length>0){if (C.innerHTML!==''){if (FCKBrowserInfo.IsIE) C.className+=' FCK__AnchorC';}else{var D=FCKDocumentProcessor_CreateFakeImage('FCK__Anchor',C.cloneNode(true));D.setAttribute('_fckanchor','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}}}};var FCKPageBreaksProcessor=FCKDocumentProcessor.AppendNew();FCKPageBreaksProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('DIV');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.style.pageBreakAfter=='always'&&C.childNodes.length==1&&C.childNodes[0].style&&C.childNodes[0].style.display=='none'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',C.cloneNode(true));C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};FCKEmbedAndObjectProcessor=(function(){var A=[];var B=function(el){var C=el.cloneNode(true);var D;var E=D=FCKDocumentProcessor_CreateFakeImage('FCK__UnknownObject',C);FCKEmbedAndObjectProcessor.RefreshView(E,el);for (var i=0;i<A.length;i++) D=A[i](el,D)||D;if (D!=E) FCKTempBin.RemoveElement(E.getAttribute('_fckrealelement'));el.parentNode.replaceChild(D,el);};return FCKTools.Merge(FCKDocumentProcessor.AppendNew(),{ProcessDocument:function(doc){FCKTools.RunFunction(function(){var F=doc.getElementsByTagName('object');for (var i=F.length-1;i>=0;i--) B(F[i]);var G=doc.getElementsByTagName('embed');for (var i=G.length-1;i>=0;i--) B(G[i]);});},RefreshView:function(placeHolder,original){if (original.getAttribute('width')>0) placeHolder.style.width=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('width'));if (original.getAttribute('height')>0) placeHolder.style.height=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('height'));},AddCustomHandler:function(func){A.push(func);}});})();FCK.GetRealElement=function(A){var e=FCKTempBin.Elements[A.getAttribute('_fckrealelement')];if (A.getAttribute('_fckflash')){if (A.style.width.length>0) e.width=FCKTools.ConvertStyleSizeToHtml(A.style.width);if (A.style.height.length>0) e.height=FCKTools.ConvertStyleSizeToHtml(A.style.height);};return e;};if (FCKBrowserInfo.IsIE){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('HR');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){var D=A.createElement('hr');D.mergeAttributes(C,true);FCKDomTools.InsertAfterNode(C,D);C.parentNode.removeChild(C);}}};FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('INPUT');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.type=='hidden'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__InputHidden',C.cloneNode(true));D.setAttribute('_fckinputhidden','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};FCKEmbedAndObjectProcessor.AddCustomHandler(function(A,B){if (!(A.nodeName.IEquals('embed')&&(A.type=='application/x-shockwave-flash'||/\.swf($|#|\?)/i.test(A.src)))) return;B.className='FCK__Flash';B.setAttribute('_fckflash','true',0);});
 var FCKSelection=FCK.Selection={GetParentBlock:function(){var A=this.GetParentElement();while (A){if (FCKListsLib.BlockBoundaries[A.nodeName.toLowerCase()]) break;A=A.parentNode;};return A;},ApplyStyle:function(A){FCKStyles.ApplyStyle(new FCKStyle(A));}};
-FCKSelection.GetType=function(){try{var A=FCK.EditorDocument.selection.type;if (A=='Control'||A=='Text') return A;if (FCK.EditorDocument.selection.createRange().parentElement) return 'Text';}catch(e){};return 'None';};FCKSelection.GetSelectedElement=function(){if (this.GetType()=='Control'){var A=FCK.EditorDocument.selection.createRange();if (A&&A.item) return FCK.EditorDocument.selection.createRange().item(0);};return null;};FCKSelection.GetParentElement=function(){switch (this.GetType()){case 'Control':var A=FCKSelection.GetSelectedElement();return A?A.parentElement:null;case 'None':return null;default:return FCK.EditorDocument.selection.createRange().parentElement();}};FCKSelection.GetBoundaryParentElement=function(A){switch (this.GetType()){case 'Control':var B=FCKSelection.GetSelectedElement();return B?B.parentElement:null;case 'None':return null;default:var C=FCK.EditorDocument;var D=C.selection.createRange();D.collapse(A!==false);var B=D.parentElement();return FCKTools.GetElementDocument(B)==C?B:null;}};FCKSelection.SelectNode=function(A){FCK.Focus();FCK.EditorDocument.selection.empty();var B;try{B=FCK.EditorDocument.body.createControlRange();B.addElement(A);}catch(e){B=FCK.EditorDocument.body.createTextRange();B.moveToElementText(A);};B.select();};FCKSelection.Collapse=function(A){FCK.Focus();if (this.GetType()=='Text'){var B=FCK.EditorDocument.selection.createRange();B.collapse(A==null||A===true);B.select();}};FCKSelection.HasAncestorNode=function(A){var B;if (FCK.EditorDocument.selection.type=="Control"){B=this.GetSelectedElement();}else{var C=FCK.EditorDocument.selection.createRange();B=C.parentElement();};while (B){if (B.tagName==A) return true;B=B.parentNode;};return false;};FCKSelection.MoveToAncestorNode=function(A){var B,oRange;if (!FCK.EditorDocument) return null;if (FCK.EditorDocument.selection.type=="Control"){oRange=FCK.EditorDocument.selection.createRange();for (i=0;i<oRange.length;i++){if (oRange(i).parentNode){B=oRange(i).parentNode;break;}}}else{oRange=FCK.EditorDocument.selection.createRange();B=oRange.parentElement();};while (B&&B.nodeName!=A) B=B.parentNode;return B;};FCKSelection.Delete=function(){var A=FCK.EditorDocument.selection;if (A.type.toLowerCase()!="none"){A.clear();};return A;};
-var FCKTableHandler={};FCKTableHandler.InsertRow=function(A){var B=FCKSelection.MoveToAncestorNode('TR');if (!B) return;var C=B.cloneNode(true);B.parentNode.insertBefore(C,B);FCKTableHandler.ClearRow(A?C:B);};FCKTableHandler.DeleteRows=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();var C=[];for (var i=0;i<B.length;i++){var D=FCKTools.GetElementAscensor(B[i],'TR');C[D.rowIndex]=D;};for (var i=C.length;i>=0;i--){if (C[i]) FCKTableHandler.DeleteRows(C[i]);};return;};var E=FCKTools.GetElementAscensor(A,'TABLE');if (E.rows.length==1){FCKTableHandler.DeleteTable(E);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteTable=function(A){if (!A){A=FCKSelection.GetSelectedElement();if (!A||A.tagName!='TABLE') A=FCKSelection.MoveToAncestorNode('TABLE');};if (!A) return;FCKSelection.SelectNode(A);FCKSelection.Collapse();if (A.parentNode.childNodes.length==1) A.parentNode.parentNode.removeChild(A.parentNode);else A.parentNode.removeChild(A);};FCKTableHandler.InsertColumn=function(A){var B=null;var C=this.GetSelectedCells();if (C&&C.length) B=C[A?0:(C.length-1)];if (!B) return;var D=FCKTools.GetElementAscensor(B,'TABLE');var E=B.cellIndex;for (var i=0;i<D.rows.length;i++){var F=D.rows[i];if (F.cells.length<(E+1)) continue;B=F.cells[E].cloneNode(false);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B);var G=F.cells[E];if (A) F.insertBefore(B,G);else if (G.nextSibling) F.insertBefore(B,G.nextSibling);else F.appendChild(B);}};FCKTableHandler.DeleteColumns=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();for (var i=B.length;i>=0;i--){if (B[i]) FCKTableHandler.DeleteColumns(B[i]);};return;};if (!A) return;var C=FCKTools.GetElementAscensor(A,'TABLE');var D=A.cellIndex;for (var i=C.rows.length-1;i>=0;i--){var E=C.rows[i];if (D==0&&E.cells.length==1){FCKTableHandler.DeleteRows(E);continue;};if (E.cells[D]) E.removeChild(E.cells[D]);}};FCKTableHandler.InsertCell=function(A,B){var C=null;var D=this.GetSelectedCells();if (D&&D.length) C=D[B?0:(D.length-1)];if (!C) return null;var E=FCK.EditorDocument.createElement('TD');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(E);if (!B&&C.cellIndex==C.parentNode.cells.length-1) C.parentNode.appendChild(E);else C.parentNode.insertBefore(E,B?C:C.nextSibling);return E;};FCKTableHandler.DeleteCell=function(A){if (A.parentNode.cells.length==1){FCKTableHandler.DeleteRows(FCKTools.GetElementAscensor(A,'TR'));return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteCells=function(){var A=FCKTableHandler.GetSelectedCells();for (var i=A.length-1;i>=0;i--){FCKTableHandler.DeleteCell(A[i]);}};FCKTableHandler._MarkCells=function(A,B){for (var i=0;i<A.length;i++) A[i][B]=true;};FCKTableHandler._UnmarkCells=function(A,B){for (var i=0;i<A.length;i++){if (FCKBrowserInfo.IsIE) A[i].removeAttribute(B);else delete A[i][B];}};FCKTableHandler._ReplaceCellsByMarker=function(A,B,C){for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){if (A[i][j][B]) A[i][j]=C;}}};FCKTableHandler._GetMarkerGeometry=function(A,B,C,D){var E=0;var F=0;var G=0;var H=0;for (var i=C;A[B][i]&&A[B][i][D];i++) E++;for (var i=C-1;A[B][i]&&A[B][i][D];i--){E++;G++;};for (var i=B;A[i]&&A[i][C]&&A[i][C][D];i++) F++;for (var i=B-1;A[i]&&A[i][C]&&A[i][C][D];i--){F++;H++;};return { 'width':E,'height':F,'x':G,'y':H };};FCKTableHandler.CheckIsSelectionRectangular=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length<1) return false;this._MarkCells(A,'_CellSelected');var B=this._CreateTableMap(A[0].parentNode.parentNode);var C=A[0].parentNode.rowIndex;var D=this._GetCellIndexSpan(B,C,A[0]);var E=this._GetMarkerGeometry(B,C,D,'_CellSelected');var F=D-E.x;var G=C-E.y;if (E.width>=E.height){for (D=F;D<F+E.width;D++){C=G+(D-F) % E.height;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}}else{for (C=G;C<G+E.height;C++){D=F+(C-G) % E.width;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}};this._UnmarkCells(A,'_CellSelected');return true;};FCKTableHandler.MergeCells=function(){var A=this.GetSelectedCells();if (A.length<2) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);this._MarkCells(A,'_SelectedCells');var F=this._GetMarkerGeometry(C,D,E,'_SelectedCells');var G=E-F.x;var H=D-F.y;var I=B.ownerDocument.createDocumentFragment();for (var i=0;i<F.height;i++){var J=0;for (var j=0;j<F.width;j++){var K=C[H+i][G+j];while (K.childNodes.length>0){var L=K.removeChild(K.firstChild);if (L.nodeType!=1||(L.getAttribute('type',2)!='_moz'&&L.getAttribute('_moz_dirty')!=null)){I.appendChild(L);J++;}}};if (J>0) I.appendChild(B.ownerDocument.createElement('br'));};this._ReplaceCellsByMarker(C,'_SelectedCells',B);this._UnmarkCells(A,'_SelectedCells');this._InstallTableMap(C,B.parentNode.parentNode);B.appendChild(I);if (FCKBrowserInfo.IsGeckoLike&&(!B.firstChild)) FCKTools.AppendBogusBr(B);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeRight=function(){var A=this.GetMergeRightTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCK.EditorDocument.createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));D.parentNode.removeChild(D);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeDown=function(){var A=this.GetMergeDownTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=B.ownerDocument.createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));if (E.firstChild) E.insertBefore(D.ownerDocument.createElement('br'),E.firstChild);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.HorizontalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=FCKTableHandler._GetCellIndexSpan(C,D,B);var F=isNaN(B.colSpan)?1:B.colSpan;if (F>1){var G=Math.ceil(F/2);var H=B.ownerDocument.createElement('td');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H);var I=E+G;var J=E+F;var K=isNaN(B.rowSpan)?1:B.rowSpan;for (var r=D;r<D+K;r++){for (var i=I;i<J;i++) C[r][i]=H;}}else{var L=[];for (var i=0;i<C.length;i++){var M=C[i].slice(0,E);if (C[i].length<=E){L.push(M);continue;};if (C[i][E]==B){M.push(B);M.push(B.ownerDocument.createElement('td'));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(M[M.length-1]);}else{M.push(C[i][E]);M.push(C[i][E]);};for (var j=E+1;j<C[i].length;j++) M.push(C[i][j]);L.push(M);};C=L;};this._InstallTableMap(C,B.parentNode.parentNode);};FCKTableHandler.VerticalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=FCKTableHandler._GetCellIndexSpan(C,B.parentNode.rowIndex,B);var E=B.rowSpan;var F=B.parentNode.rowIndex;if (isNaN(E)) E=1;if (E>1){B.rowSpan=Math.ceil(E/2);var G=F+Math.ceil(E/2);var H=null;for (var i=D+1;i<C[G].length;i++){if (C[G][i].parentNode.rowIndex==G){H=C[G][i];break;}};var I=FCK.EditorDocument.createElement('td');I.rowSpan=Math.floor(E/2);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);B.parentNode.parentNode.rows[G].insertBefore(I,H);}else{var G=F+1;var K=FCK.EditorDocument.createElement('tr');B.parentNode.parentNode.insertBefore(K,B.parentNode.parentNode.rows[G]);for (var i=0;i<C[F].length;){var L=C[F][i].colSpan;if (isNaN(L)||L<1) L=1;if (i==D){i+=L;continue;};var M=C[F][i].rowSpan;if (isNaN(M)) M=1;C[F][i].rowSpan=M+1;i+=L;};var I=FCK.EditorDocument.createElement('td');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);K.appendChild(I);}};FCKTableHandler._GetCellIndexSpan=function(A,B,C){if (A.length<B+1) return null;var D=A[B];for (var c=0;c<D.length;c++){if (D[c]==C) return c;};return null;};FCKTableHandler._GetCellLocation=function(A,B){for (var i=0;i<A.length;i++){for (var c=0;c<A[i].length;c++){if (A[i][c]==B) return [i,c];}};return null;};FCKTableHandler._GetColumnCells=function(A,B){var C=[];for (var r=0;r<A.length;r++){var D=A[r][B];if (D&&(C.length==0||C[C.length-1]!=D)) C[C.length]=D;};return C;};FCKTableHandler._CreateTableMap=function(A){var B=A.rows;var r=-1;var C=[];for (var i=0;i<B.length;i++){r++;if (!C[r]) C[r]=[];var c=-1;for (var j=0;j<B[i].cells.length;j++){var D=B[i].cells[j];c++;while (C[r][c]) c++;var E=isNaN(D.colSpan)?1:D.colSpan;var F=isNaN(D.rowSpan)?1:D.rowSpan;for (var G=0;G<F;G++){if (!C[r+G]) C[r+G]=[];for (var H=0;H<E;H++){C[r+G][c+H]=B[i].cells[j];}};c+=E-1;}};return C;};FCKTableHandler._InstallTableMap=function(A,B){while (B.rows.length>0){var C=B.rows[0];C.parentNode.removeChild(C);};for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (D.parentNode) D.parentNode.removeChild(D);D.colSpan=D.rowSpan=1;}};var E=0;for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (!D) continue;if (j>E) E=j;if (D._colScanned===true) continue;if (A[i][j-1]==D) D.colSpan++;if (A[i][j+1]!=D) D._colScanned=true;}};for (var i=0;i<=E;i++){for (var j=0;j<A.length;j++){if (!A[j]) continue;var D=A[j][i];if (!D||D._rowScanned===true) continue;if (A[j-1]&&A[j-1][i]==D) D.rowSpan++;if (!A[j+1]||A[j+1][i]!=D) D._rowScanned=true;}};for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (FCKBrowserInfo.IsIE){D.removeAttribute('_colScanned');D.removeAttribute('_rowScanned');}else{delete D._colScanned;delete D._rowScanned;}}};for (var i=0;i<A.length;i++){var I=B.ownerDocument.createElement('tr');for (var j=0;j<A[i].length;){var D=A[i][j];if (A[i-1]&&A[i-1][j]==D){j+=D.colSpan;continue;};I.appendChild(D);j+=D.colSpan;if (D.colSpan==1) D.removeAttribute('colspan');if (D.rowSpan==1) D.removeAttribute('rowspan');};B.appendChild(I);}};FCKTableHandler._MoveCaretToCell=function (A,B){var C=new FCKDomRange(FCK.EditorWindow);C.MoveToNodeContents(A);C.Collapse(B);C.Select();};FCKTableHandler.ClearRow=function(A){var B=A.cells;for (var i=0;i<B.length;i++){B[i].innerHTML='';if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B[i]);}};FCKTableHandler.GetMergeRightTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=E+(isNaN(B.colSpan)?1:B.colSpan);var G=C[D][F];if (!G) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,D,F,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.height!=I.height||H.y!=I.y) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};FCKTableHandler.GetMergeDownTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=D+(isNaN(B.rowSpan)?1:B.rowSpan);if (!C[F]) return null;var G=C[F][E];if (!G) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,F,E,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.width!=I.width||H.x!=I.x) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};
-FCKTableHandler.GetSelectedCells=function(){if (FCKSelection.GetType()=='Control'){var A=FCKSelection.MoveToAncestorNode('TD');return A?[A]:[];};var B=[];var C=FCK.EditorDocument.selection.createRange();var D=FCKSelection.GetParentElement();if (D&&D.tagName.Equals('TD','TH')) B[0]=D;else{D=FCKSelection.MoveToAncestorNode('TABLE');if (D){for (var i=0;i<D.cells.length;i++){var E=FCK.EditorDocument.body.createTextRange();E.moveToElementText(D.cells[i]);if (C.inRange(E)||(C.compareEndPoints('StartToStart',E)>=0&&C.compareEndPoints('StartToEnd',E)<=0)||(C.compareEndPoints('EndToStart',E)>=0&&C.compareEndPoints('EndToEnd',E)<=0)){B[B.length]=D.cells[i];}}}};return B;};
-var FCKXml=function(){this.Error=false;};FCKXml.GetAttribute=function(A,B,C){var D=A.attributes.getNamedItem(B);return D?D.value:C;};FCKXml.TransformToObject=function(A){if (!A) return null;var B={};var C=A.attributes;for (var i=0;i<C.length;i++){var D=C[i];B[D.name]=D.value;};var E=A.childNodes;for (i=0;i<E.length;i++){var F=E[i];if (F.nodeType==1){var G='$'+F.nodeName;var H=B[G];if (!H) H=B[G]=[];H.push(this.TransformToObject(F));}};return B;}
+FCKSelection.GetType=function(){try{var A=FCKSelection.GetSelection().type;if (A=='Control'||A=='Text') return A;if (this.GetSelection().createRange().parentElement) return 'Text';}catch(e){};return 'None';};FCKSelection.GetSelectedElement=function(){if (this.GetType()=='Control'){var A=this.GetSelection().createRange();if (A&&A.item) return this.GetSelection().createRange().item(0);};return null;};FCKSelection.GetParentElement=function(){switch (this.GetType()){case 'Control':var A=FCKSelection.GetSelectedElement();return A?A.parentElement:null;case 'None':return null;default:return this.GetSelection().createRange().parentElement();}};FCKSelection.GetBoundaryParentElement=function(A){switch (this.GetType()){case 'Control':var B=FCKSelection.GetSelectedElement();return B?B.parentElement:null;case 'None':return null;default:var C=FCK.EditorDocument;var D=C.selection.createRange();D.collapse(A!==false);var B=D.parentElement();return FCKTools.GetElementDocument(B)==C?B:null;}};FCKSelection.SelectNode=function(A){FCK.Focus();this.GetSelection().empty();var B;try{B=FCK.EditorDocument.body.createControlRange();B.addElement(A);}catch(e){B=FCK.EditorDocument.body.createTextRange();B.moveToElementText(A);};B.select();};FCKSelection.Collapse=function(A){FCK.Focus();if (this.GetType()=='Text'){var B=this.GetSelection().createRange();B.collapse(A==null||A===true);B.select();}};FCKSelection.HasAncestorNode=function(A){var B;if (this.GetSelection().type=="Control"){B=this.GetSelectedElement();}else{var C=this.GetSelection().createRange();B=C.parentElement();};while (B){if (B.tagName==A) return true;B=B.parentNode;};return false;};FCKSelection.MoveToAncestorNode=function(A){var B,oRange;if (!FCK.EditorDocument) return null;if (this.GetSelection().type=="Control"){oRange=this.GetSelection().createRange();for (i=0;i<oRange.length;i++){if (oRange(i).parentNode){B=oRange(i).parentNode;break;}}}else{oRange=this.GetSelection().createRange();B=oRange.parentElement();};while (B&&B.nodeName!=A) B=B.parentNode;return B;};FCKSelection.Delete=function(){var A=this.GetSelection();if (A.type.toLowerCase()!="none"){A.clear();};return A;};FCKSelection.GetSelection=function(){this.Restore();return FCK.EditorDocument.selection;};FCKSelection.Save=function(){FCK.Focus();var A=FCK.EditorDocument;if (!A) return;var B=A.selection;var C;if (B){C=B.createRange();if (C){if (C.parentElement&&FCKTools.GetElementDocument(C.parentElement())!=A) C=null;else if (C.item&&FCKTools.GetElementDocument(C.item(0))!=A) C=null;}};this.SelectionData=C;};FCKSelection._GetSelectionDocument=function(A){var B=A.createRange();if (!B) return null;else if (B.item) return FCKTools.GetElementDocument(B.item(0));else return FCKTools.GetElementDocument(B.parentElement());};FCKSelection.Restore=function(){if (this.SelectionData){FCK.IsSelectionChangeLocked=true;try{if (this._GetSelectionDocument(FCK.EditorDocument.selection)==FCK.EditorDocument) return;this.SelectionData.select();}catch (e) {};FCK.IsSelectionChangeLocked=false;}};FCKSelection.Release=function(){delete this.SelectionData;};
+var FCKTableHandler={};FCKTableHandler.InsertRow=function(A){var B=FCKSelection.MoveToAncestorNode('TR');if (!B) return;var C=B.cloneNode(true);B.parentNode.insertBefore(C,B);FCKTableHandler.ClearRow(A?C:B);};FCKTableHandler.DeleteRows=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();var C=[];for (var i=0;i<B.length;i++){var D=FCKTools.GetElementAscensor(B[i],'TR');C[D.rowIndex]=D;};for (var i=C.length;i>=0;i--){if (C[i]) FCKTableHandler.DeleteRows(C[i]);};return;};var E=FCKTools.GetElementAscensor(A,'TABLE');if (E.rows.length==1){FCKTableHandler.DeleteTable(E);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteTable=function(A){if (!A){A=FCKSelection.GetSelectedElement();if (!A||A.tagName!='TABLE') A=FCKSelection.MoveToAncestorNode('TABLE');};if (!A) return;FCKSelection.SelectNode(A);FCKSelection.Collapse();if (A.parentNode.childNodes.length==1) A.parentNode.parentNode.removeChild(A.parentNode);else A.parentNode.removeChild(A);};FCKTableHandler.InsertColumn=function(A){var B=null;var C=this.GetSelectedCells();if (C&&C.length) B=C[A?0:(C.length-1)];if (!B) return;var D=FCKTools.GetElementAscensor(B,'TABLE');var E=B.cellIndex;for (var i=0;i<D.rows.length;i++){var F=D.rows[i];if (F.cells.length<(E+1)) continue;B=F.cells[E].cloneNode(false);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B);var G=F.cells[E];if (A) F.insertBefore(B,G);else if (G.nextSibling) F.insertBefore(B,G.nextSibling);else F.appendChild(B);}};FCKTableHandler.DeleteColumns=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();for (var i=B.length;i>=0;i--){if (B[i]) FCKTableHandler.DeleteColumns(B[i]);};return;};if (!A) return;var C=FCKTools.GetElementAscensor(A,'TABLE');var D=A.cellIndex;for (var i=C.rows.length-1;i>=0;i--){var E=C.rows[i];if (D==0&&E.cells.length==1){FCKTableHandler.DeleteRows(E);continue;};if (E.cells[D]) E.removeChild(E.cells[D]);}};FCKTableHandler.InsertCell=function(A,B){var C=null;var D=this.GetSelectedCells();if (D&&D.length) C=D[B?0:(D.length-1)];if (!C) return null;var E=FCK.EditorDocument.createElement('TD');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(E);if (!B&&C.cellIndex==C.parentNode.cells.length-1) C.parentNode.appendChild(E);else C.parentNode.insertBefore(E,B?C:C.nextSibling);return E;};FCKTableHandler.DeleteCell=function(A){if (A.parentNode.cells.length==1){FCKTableHandler.DeleteRows(FCKTools.GetElementAscensor(A,'TR'));return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteCells=function(){var A=FCKTableHandler.GetSelectedCells();for (var i=A.length-1;i>=0;i--){FCKTableHandler.DeleteCell(A[i]);}};FCKTableHandler._MarkCells=function(A,B){for (var i=0;i<A.length;i++) A[i][B]=true;};FCKTableHandler._UnmarkCells=function(A,B){for (var i=0;i<A.length;i++){if (FCKBrowserInfo.IsIE) A[i].removeAttribute(B);else delete A[i][B];}};FCKTableHandler._ReplaceCellsByMarker=function(A,B,C){for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){if (A[i][j][B]) A[i][j]=C;}}};FCKTableHandler._GetMarkerGeometry=function(A,B,C,D){var E=0;var F=0;var G=0;var H=0;for (var i=C;A[B][i]&&A[B][i][D];i++) E++;for (var i=C-1;A[B][i]&&A[B][i][D];i--){E++;G++;};for (var i=B;A[i]&&A[i][C]&&A[i][C][D];i++) F++;for (var i=B-1;A[i]&&A[i][C]&&A[i][C][D];i--){F++;H++;};return { 'width':E,'height':F,'x':G,'y':H };};FCKTableHandler.CheckIsSelectionRectangular=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length<1) return false;this._MarkCells(A,'_CellSelected');var B=this._CreateTableMap(A[0].parentNode.parentNode);var C=A[0].parentNode.rowIndex;var D=this._GetCellIndexSpan(B,C,A[0]);var E=this._GetMarkerGeometry(B,C,D,'_CellSelected');var F=D-E.x;var G=C-E.y;if (E.width>=E.height){for (D=F;D<F+E.width;D++){C=G+(D-F) % E.height;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}}else{for (C=G;C<G+E.height;C++){D=F+(C-G) % E.width;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}};this._UnmarkCells(A,'_CellSelected');return true;};FCKTableHandler.MergeCells=function(){var A=this.GetSelectedCells();if (A.length<2) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);this._MarkCells(A,'_SelectedCells');var F=this._GetMarkerGeometry(C,D,E,'_SelectedCells');var G=E-F.x;var H=D-F.y;var I=FCKTools.GetElementDocument(B).createDocumentFragment();for (var i=0;i<F.height;i++){var J=0;for (var j=0;j<F.width;j++){var K=C[H+i][G+j];while (K.childNodes.length>0){var L=K.removeChild(K.firstChild);if (L.nodeType!=1||(L.getAttribute('type',2)!='_moz'&&L.getAttribute('_moz_dirty')!=null)){I.appendChild(L);J++;}}};if (J>0) I.appendChild(FCKTools.GetElementDocument(B).createElement('br'));};this._ReplaceCellsByMarker(C,'_SelectedCells',B);this._UnmarkCells(A,'_SelectedCells');this._InstallTableMap(C,B.parentNode.parentNode);B.appendChild(I);if (FCKBrowserInfo.IsGeckoLike&&(!B.firstChild)) FCKTools.AppendBogusBr(B);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeRight=function(){var A=this.GetMergeRightTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCK.EditorDocument.createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));D.parentNode.removeChild(D);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeDown=function(){var A=this.GetMergeDownTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCKTools.GetElementDocument(B).createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));if (E.firstChild) E.insertBefore(FCKTools.GetElementDocument(D).createElement('br'),E.firstChild);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.HorizontalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=FCKTableHandler._GetCellIndexSpan(C,D,B);var F=isNaN(B.colSpan)?1:B.colSpan;if (F>1){var G=Math.ceil(F/2);var H=FCKTools.GetElementDocument(B).createElement('td');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H);var I=E+G;var J=E+F;var K=isNaN(B.rowSpan)?1:B.rowSpan;for (var r=D;r<D+K;r++){for (var i=I;i<J;i++) C[r][i]=H;}}else{var L=[];for (var i=0;i<C.length;i++){var M=C[i].slice(0,E);if (C[i].length<=E){L.push(M);continue;};if (C[i][E]==B){M.push(B);M.push(FCKTools.GetElementDocument(B).createElement('td'));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(M[M.length-1]);}else{M.push(C[i][E]);M.push(C[i][E]);};for (var j=E+1;j<C[i].length;j++) M.push(C[i][j]);L.push(M);};C=L;};this._InstallTableMap(C,B.parentNode.parentNode);};FCKTableHandler.VerticalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=FCKTableHandler._GetCellIndexSpan(C,B.parentNode.rowIndex,B);var E=B.rowSpan;var F=B.parentNode.rowIndex;if (isNaN(E)) E=1;if (E>1){B.rowSpan=Math.ceil(E/2);var G=F+Math.ceil(E/2);var H=null;for (var i=D+1;i<C[G].length;i++){if (C[G][i].parentNode.rowIndex==G){H=C[G][i];break;}};var I=FCK.EditorDocument.createElement('td');I.rowSpan=Math.floor(E/2);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);B.parentNode.parentNode.rows[G].insertBefore(I,H);}else{var G=F+1;var K=FCK.EditorDocument.createElement('tr');B.parentNode.parentNode.insertBefore(K,B.parentNode.parentNode.rows[G]);for (var i=0;i<C[F].length;){var L=C[F][i].colSpan;if (isNaN(L)||L<1) L=1;if (i==D){i+=L;continue;};var M=C[F][i].rowSpan;if (isNaN(M)) M=1;C[F][i].rowSpan=M+1;i+=L;};var I=FCK.EditorDocument.createElement('td');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);K.appendChild(I);}};FCKTableHandler._GetCellIndexSpan=function(A,B,C){if (A.length<B+1) return null;var D=A[B];for (var c=0;c<D.length;c++){if (D[c]==C) return c;};return null;};FCKTableHandler._GetCellLocation=function(A,B){for (var i=0;i<A.length;i++){for (var c=0;c<A[i].length;c++){if (A[i][c]==B) return [i,c];}};return null;};FCKTableHandler._GetColumnCells=function(A,B){var C=[];for (var r=0;r<A.length;r++){var D=A[r][B];if (D&&(C.length==0||C[C.length-1]!=D)) C[C.length]=D;};return C;};FCKTableHandler._CreateTableMap=function(A){var B=A.rows;var r=-1;var C=[];for (var i=0;i<B.length;i++){r++;if (!C[r]) C[r]=[];var c=-1;for (var j=0;j<B[i].cells.length;j++){var D=B[i].cells[j];c++;while (C[r][c]) c++;var E=isNaN(D.colSpan)?1:D.colSpan;var F=isNaN(D.rowSpan)?1:D.rowSpan;for (var G=0;G<F;G++){if (!C[r+G]) C[r+G]=[];for (var H=0;H<E;H++){C[r+G][c+H]=B[i].cells[j];}};c+=E-1;}};return C;};FCKTableHandler._InstallTableMap=function(A,B){while (B.rows.length>0){var C=B.rows[0];C.parentNode.removeChild(C);};for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (D.parentNode) D.parentNode.removeChild(D);D.colSpan=D.rowSpan=1;}};var E=0;for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (!D) continue;if (j>E) E=j;if (D._colScanned===true) continue;if (A[i][j-1]==D) D.colSpan++;if (A[i][j+1]!=D) D._colScanned=true;}};for (var i=0;i<=E;i++){for (var j=0;j<A.length;j++){if (!A[j]) continue;var D=A[j][i];if (!D||D._rowScanned===true) continue;if (A[j-1]&&A[j-1][i]==D) D.rowSpan++;if (!A[j+1]||A[j+1][i]!=D) D._rowScanned=true;}};for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (FCKBrowserInfo.IsIE){D.removeAttribute('_colScanned');D.removeAttribute('_rowScanned');}else{delete D._colScanned;delete D._rowScanned;}}};for (var i=0;i<A.length;i++){var I=FCKTools.GetElementDocument(B).createElement('tr');for (var j=0;j<A[i].length;){var D=A[i][j];if (A[i-1]&&A[i-1][j]==D){j+=D.colSpan;continue;};I.appendChild(D);j+=D.colSpan;if (D.colSpan==1) D.removeAttribute('colspan');if (D.rowSpan==1) D.removeAttribute('rowspan');};B.appendChild(I);}};FCKTableHandler._MoveCaretToCell=function (A,B){var C=new FCKDomRange(FCK.EditorWindow);C.MoveToNodeContents(A);C.Collapse(B);C.Select();};FCKTableHandler.ClearRow=function(A){var B=A.cells;for (var i=0;i<B.length;i++){B[i].innerHTML='';if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B[i]);}};FCKTableHandler.GetMergeRightTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=E+(isNaN(B.colSpan)?1:B.colSpan);var G=C[D][F];if (!G) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,D,F,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.height!=I.height||H.y!=I.y) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};FCKTableHandler.GetMergeDownTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B.parentNode.parentNode);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=D+(isNaN(B.rowSpan)?1:B.rowSpan);if (!C[F]) return null;var G=C[F][E];if (!G) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,F,E,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.width!=I.width||H.x!=I.x) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};
+FCKTableHandler.GetSelectedCells=function(){if (FCKSelection.GetType()=='Control'){var A=FCKSelection.MoveToAncestorNode('TD');return A?[A]:[];};var B=[];var C=FCKSelection.GetSelection().createRange();var D=FCKSelection.GetParentElement();if (D&&D.tagName.Equals('TD','TH')) B[0]=D;else{D=FCKSelection.MoveToAncestorNode('TABLE');if (D){for (var i=0;i<D.cells.length;i++){var E=FCK.EditorDocument.body.createTextRange();E.moveToElementText(D.cells[i]);if (C.inRange(E)||(C.compareEndPoints('StartToStart',E)>=0&&C.compareEndPoints('StartToEnd',E)<=0)||(C.compareEndPoints('EndToStart',E)>=0&&C.compareEndPoints('EndToEnd',E)<=0)){B[B.length]=D.cells[i];}}}};return B;};
+var FCKXml=function(){this.Error=false;};FCKXml.GetAttribute=function(A,B,C){var D=A.attributes.getNamedItem(B);return D?D.value:C;};FCKXml.TransformToObject=function(A){if (!A) return null;var B={};var C=A.attributes;for (var i=0;i<C.length;i++){var D=C[i];B[D.name]=D.value;};var E=A.childNodes;for (i=0;i<E.length;i++){var F=E[i];if (F.nodeType==1){var G='$'+F.nodeName;var H=B[G];if (!H) H=B[G]=[];H.push(this.TransformToObject(F));}};return B;};
 FCKXml.prototype={LoadUrl:function(A){this.Error=false;var B=FCKTools.CreateXmlObject('XmlHttp');if (!B){this.Error=true;return;};B.open("GET",A,false);B.send(null);if (B.status==200||B.status==304) this.DOMDocument=B.responseXML;else if (B.status==0&&B.readyState==4){this.DOMDocument=FCKTools.CreateXmlObject('DOMDocument');this.DOMDocument.async=false;this.DOMDocument.resolveExternals=false;this.DOMDocument.loadXML(B.responseText);}else{this.DOMDocument=null;};if (this.DOMDocument==null||this.DOMDocument.firstChild==null){this.Error=true;if (window.confirm('Error loading "'+A+'"\r\nDo you want to see more info?')) alert('URL requested: "'+A+'"\r\nServer response:\r\nStatus: '+B.status+'\r\nResponse text:\r\n'+B.responseText);}},SelectNodes:function(A,B){if (this.Error) return [];if (B) return B.selectNodes(A);else return this.DOMDocument.selectNodes(A);},SelectSingleNode:function(A,B){if (this.Error) return null;if (B) return B.selectSingleNode(A);else return this.DOMDocument.selectSingleNode(A);}};
-var FCKNamedCommand=function(A){this.Name=A;};FCKNamedCommand.prototype.Execute=function(){FCK.ExecuteNamedCommand(this.Name);};FCKNamedCommand.prototype.GetState=function(){return FCK.GetNamedCommandState(this.Name);};
-var FCKStyleCommand=function(){};FCKStyleCommand.prototype={Name:'Style',Execute:function(A,B){FCKUndo.SaveUndoStep();if (B.Selected) FCK.Styles.RemoveStyle(B.Style);else FCK.Styles.ApplyStyle(B.Style);FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (!FCK.EditorDocument) return -1;if (FCKSelection.GetType()=='Control'){var A=FCKSelection.GetSelectedElement();if (!A||!FCKStyles.CheckHasObjectStyle(A.nodeName.toLowerCase())) return -1;};return 0;}};
-var FCKDialogCommand=function(A,B,C,D,E,F,G){this.Name=A;this.Title=B;this.Url=C;this.Width=D;this.Height=E;this.GetStateFunction=F;this.GetStateParam=G;this.Resizable=false;};FCKDialogCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_'+this.Name,this.Title,this.Url,this.Width,this.Height,null,null,this.Resizable);};FCKDialogCommand.prototype.GetState=function(){if (this.GetStateFunction) return this.GetStateFunction(this.GetStateParam);else return 0;};var FCKUndefinedCommand=function(){this.Name='Undefined';};FCKUndefinedCommand.prototype.Execute=function(){alert(FCKLang.NotImplemented);};FCKUndefinedCommand.prototype.GetState=function(){return 0;};var FCKFormatBlockCommand=function(){};FCKFormatBlockCommand.prototype={Name:'FormatBlock',Execute:FCKStyleCommand.prototype.Execute,GetState:function(){return FCK.EditorDocument?0:-1;}};var FCKFontNameCommand=function(){};FCKFontNameCommand.prototype={Name:'FontName',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKFontSizeCommand=function(){};FCKFontSizeCommand.prototype={Name:'FontSize',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKPreviewCommand=function(){this.Name='Preview';};FCKPreviewCommand.prototype.Execute=function(){FCK.Preview();};FCKPreviewCommand.prototype.GetState=function(){return 0;};var FCKSaveCommand=function(){this.Name='Save';};FCKSaveCommand.prototype.Execute=function(){var A=FCK.GetParentForm();if (typeof(A.onsubmit)=='function'){var B=A.onsubmit();if (B!=null&&B===false) return;};if (typeof(A.submit)=='function') A.submit();else A.submit.click();};FCKSaveCommand.prototype.GetState=function(){return 0;};var FCKNewPageCommand=function(){this.Name='NewPage';};FCKNewPageCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();FCK.SetData('');FCKUndo.Typing=true;FCK.Focus();};FCKNewPageCommand.prototype.GetState=function(){return 0;};var FCKSourceCommand=function(){this.Name='Source';};FCKSourceCommand.prototype.Execute=function(){if (FCKConfig.SourcePopup){var A=FCKConfig.ScreenWidth*0.65;var B=FCKConfig.ScreenHeight*0.65;FCKDialog.OpenDialog('FCKDialog_Source',FCKLang.Source,'dialog/fck_source.html',A,B,null,null,true);}else FCK.SwitchEditMode();};FCKSourceCommand.prototype.GetState=function(){return (FCK.EditMode==0?0:1);};var FCKUndoCommand=function(){this.Name='Undo';};FCKUndoCommand.prototype.Execute=function(){FCKUndo.Undo();};FCKUndoCommand.prototype.GetState=function(){return (FCKUndo.CheckUndoState()?0:-1);};var FCKRedoCommand=function(){this.Name='Redo';};FCKRedoCommand.prototype.Execute=function(){FCKUndo.Redo();};FCKRedoCommand.prototype.GetState=function(){return (FCKUndo.CheckRedoState()?0:-1);};var FCKPageBreakCommand=function(){this.Name='PageBreak';};FCKPageBreakCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();var e=FCK.EditorDocument.createElement('DIV');e.style.pageBreakAfter='always';e.innerHTML='<span style="DISPLAY:none">&nbsp;</span>';var A=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',e);var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.SplitBlock();if (C.NextBlock) C.NextBlock.parentNode.insertBefore(A,C.NextBlock);else C.PreviousBlock.parentNode.insertBefore(A,C.PreviousBlock.nextSibling);FCK.Events.FireEvent('OnSelectionChange');};FCKPageBreakCommand.prototype.GetState=function(){return 0;};var FCKUnlinkCommand=function(){this.Name='Unlink';};FCKUnlinkCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (FCKBrowserInfo.IsGeckoLike){var A=FCK.Selection.MoveToAncestorNode('A');if (A) FCKTools.RemoveOuterTags(A);return;};FCK.ExecuteNamedCommand(this.Name);};FCKUnlinkCommand.prototype.GetState=function(){var A=FCK.GetNamedCommandState(this.Name);if (A==0&&FCK.EditMode==0){var B=FCKSelection.MoveToAncestorNode('A');var C=(B&&B.name.length>0&&B.href.length==0);if (C) A=-1;};return A;};var FCKSelectAllCommand=function(){this.Name='SelectAll';};FCKSelectAllCommand.prototype.Execute=function(){if (FCK.EditMode==0){FCK.ExecuteNamedCommand('SelectAll');}else{var A=FCK.EditingArea.Textarea;if (FCKBrowserInfo.IsIE){A.createTextRange().execCommand('SelectAll');}else{A.selectionStart=0;A.selectionEnd=A.value.length;};A.focus();}};FCKSelectAllCommand.prototype.GetState=function(){return 0;};var FCKPasteCommand=function(){this.Name='Paste';};FCKPasteCommand.prototype={Execute:function(){if (FCKBrowserInfo.IsIE) FCK.Paste();else FCK.ExecuteNamedCommand('Paste');},GetState:function(){return FCK.GetNamedCommandState('Paste');}};var FCKRuleCommand=function(){this.Name='Rule';};FCKRuleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();FCK.InsertElement('hr');},GetState:function(){return FCK.GetNamedCommandState('InsertHorizontalRule');}};var FCKCopyCommand=function(){this.Name='Copy';};FCKCopyCommand.prototype={Execute:function(){FCK.ExecuteNamedCommand(this.Name);},GetState:function(){return FCK.GetNamedCommandState('Cut');}};var FCKAnchorDeleteCommand=function(){this.Name='AnchorDelete';};FCKAnchorDeleteCommand.prototype={Execute:function(){if (FCK.Selection.GetType()=='Control'){FCK.Selection.Delete();}else{var A=FCK.Selection.GetSelectedElement();if (A){if (A.tagName=='IMG'&&A.getAttribute('_fckanchor')) oAnchor=FCK.GetRealElement(A);else A=null;};if (!A){oAnchor=FCK.Selection.MoveToAncestorNode('A');if (oAnchor) FCK.Selection.SelectNode(oAnchor);};if (oAnchor.href.length!=0){oAnchor.removeAttribute('name');if (FCKBrowserInfo.IsIE) oAnchor.className=oAnchor.className.replace(FCKRegexLib.FCK_Class,'');return;};if (A){A.parentNode.removeChild(A);return;};if (oAnchor.innerHTML.length==0){oAnchor.parentNode.removeChild(oAnchor);return;};FCKTools.RemoveOuterTags(oAnchor);};if (FCKBrowserInfo.IsGecko) FCK.Selection.Collapse(true);},GetState:function(){return FCK.GetNamedCommandState('Unlink');}};
+var FCKNamedCommand=function(A){this.Name=A;};FCKNamedCommand.prototype.Execute=function(){FCK.ExecuteNamedCommand(this.Name);};FCKNamedCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState(this.Name);};
+var FCKStyleCommand=function(){};FCKStyleCommand.prototype={Name:'Style',Execute:function(A,B){FCKUndo.SaveUndoStep();if (B.Selected) FCK.Styles.RemoveStyle(B.Style);else FCK.Styles.ApplyStyle(B.Style);FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorDocument) return -1;if (FCKSelection.GetType()=='Control'){var A=FCKSelection.GetSelectedElement();if (!A||!FCKStyles.CheckHasObjectStyle(A.nodeName.toLowerCase())) return -1;};return 0;}};
+var FCKDialogCommand=function(A,B,C,D,E,F,G,H){this.Name=A;this.Title=B;this.Url=C;this.Width=D;this.Height=E;this.CustomValue=H;this.GetStateFunction=F;this.GetStateParam=G;this.Resizable=false;};FCKDialogCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_'+this.Name,this.Title,this.Url,this.Width,this.Height,this.CustomValue,null,this.Resizable);};FCKDialogCommand.prototype.GetState=function(){if (this.GetStateFunction) return this.GetStateFunction(this.GetStateParam);else return FCK.EditMode==0?0:-1;};var FCKUndefinedCommand=function(){this.Name='Undefined';};FCKUndefinedCommand.prototype.Execute=function(){alert(FCKLang.NotImplemented);};FCKUndefinedCommand.prototype.GetState=function(){return 0;};var FCKFormatBlockCommand=function(){};FCKFormatBlockCommand.prototype={Name:'FormatBlock',Execute:FCKStyleCommand.prototype.Execute,GetState:function(){return FCK.EditorDocument?0:-1;}};var FCKFontNameCommand=function(){};FCKFontNameCommand.prototype={Name:'FontName',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKFontSizeCommand=function(){};FCKFontSizeCommand.prototype={Name:'FontSize',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKPreviewCommand=function(){this.Name='Preview';};FCKPreviewCommand.prototype.Execute=function(){FCK.Preview();};FCKPreviewCommand.prototype.GetState=function(){return 0;};var FCKSaveCommand=function(){this.Name='Save';};FCKSaveCommand.prototype.Execute=function(){var A=FCK.GetParentForm();if (typeof(A.onsubmit)=='function'){var B=A.onsubmit();if (B!=null&&B===false) return;};if (typeof(A.submit)=='function') A.submit();else A.submit.click();};FCKSaveCommand.prototype.GetState=function(){return 0;};var FCKNewPageCommand=function(){this.Name='NewPage';};FCKNewPageCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();FCK.SetData('');FCKUndo.Typing=true;FCK.Focus();};FCKNewPageCommand.prototype.GetState=function(){return 0;};var FCKSourceCommand=function(){this.Name='Source';};FCKSourceCommand.prototype.Execute=function(){if (FCKConfig.SourcePopup){var A=FCKConfig.ScreenWidth*0.65;var B=FCKConfig.ScreenHeight*0.65;FCKDialog.OpenDialog('FCKDialog_Source',FCKLang.Source,'dialog/fck_source.html',A,B,null,null,true);}else FCK.SwitchEditMode();};FCKSourceCommand.prototype.GetState=function(){return (FCK.EditMode==0?0:1);};var FCKUndoCommand=function(){this.Name='Undo';};FCKUndoCommand.prototype.Execute=function(){FCKUndo.Undo();};FCKUndoCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return (FCKUndo.CheckUndoState()?0:-1);};var FCKRedoCommand=function(){this.Name='Redo';};FCKRedoCommand.prototype.Execute=function(){FCKUndo.Redo();};FCKRedoCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return (FCKUndo.CheckRedoState()?0:-1);};var FCKPageBreakCommand=function(){this.Name='PageBreak';};FCKPageBreakCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();var e=FCK.EditorDocument.createElement('DIV');e.style.pageBreakAfter='always';e.innerHTML='<span style="DISPLAY:none">&nbsp;</span>';var A=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',e);var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.SplitBlock();B.InsertNode(A);FCK.Events.FireEvent('OnSelectionChange');};FCKPageBreakCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKUnlinkCommand=function(){this.Name='Unlink';};FCKUnlinkCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (FCKBrowserInfo.IsGeckoLike){var A=FCK.Selection.MoveToAncestorNode('A');if (A) FCKTools.RemoveOuterTags(A);return;};FCK.ExecuteNamedCommand(this.Name);};FCKUnlinkCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;var A=FCK.GetNamedCommandState(this.Name);if (A==0&&FCK.EditMode==0){var B=FCKSelection.MoveToAncestorNode('A');var C=(B&&B.name.length>0&&B.href.length==0);if (C) A=-1;};return A;};var FCKSelectAllCommand=function(){this.Name='SelectAll';};FCKSelectAllCommand.prototype.Execute=function(){if (FCK.EditMode==0){FCK.ExecuteNamedCommand('SelectAll');}else{var A=FCK.EditingArea.Textarea;if (FCKBrowserInfo.IsIE){A.createTextRange().execCommand('SelectAll');}else{A.selectionStart=0;A.selectionEnd=A.value.length;};A.focus();}};FCKSelectAllCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKPasteCommand=function(){this.Name='Paste';};FCKPasteCommand.prototype={Execute:function(){if (FCKBrowserInfo.IsIE) FCK.Paste();else FCK.ExecuteNamedCommand('Paste');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Paste');}};var FCKRuleCommand=function(){this.Name='Rule';};FCKRuleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();FCK.InsertElement('hr');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('InsertHorizontalRule');}};var FCKCutCopyCommand=function(A){this.Name=A?'Cut':'Copy';};FCKCutCopyCommand.prototype={Execute:function(){var A=false;if (FCKBrowserInfo.IsIE){var B=function(){A=true;};var C='on'+this.Name.toLowerCase();FCK.EditorDocument.body.attachEvent(C,B);FCK.ExecuteNamedCommand(this.Name);FCK.EditorDocument.body.detachEvent(C,B);}else{try{FCK.ExecuteNamedCommand(this.Name);A=true;}catch(e){}};if (!A) alert(FCKLang['PasteError'+this.Name]);},GetState:function(){return FCK.EditMode!=0?-1:FCK.GetNamedCommandState('Cut');}};var FCKAnchorDeleteCommand=function(){this.Name='AnchorDelete';};FCKAnchorDeleteCommand.prototype={Execute:function(){if (FCK.Selection.GetType()=='Control'){FCK.Selection.Delete();}else{var A=FCK.Selection.GetSelectedElement();if (A){if (A.tagName=='IMG'&&A.getAttribute('_fckanchor')) oAnchor=FCK.GetRealElement(A);else A=null;};if (!A){oAnchor=FCK.Selection.MoveToAncestorNode('A');if (oAnchor) FCK.Selection.SelectNode(oAnchor);};if (oAnchor.href.length!=0){oAnchor.removeAttribute('name');if (FCKBrowserInfo.IsIE) oAnchor.className=oAnchor.className.replace(FCKRegexLib.FCK_Class,'');return;};if (A){A.parentNode.removeChild(A);return;};if (oAnchor.innerHTML.length==0){oAnchor.parentNode.removeChild(oAnchor);return;};FCKTools.RemoveOuterTags(oAnchor);};if (FCKBrowserInfo.IsGecko) FCK.Selection.Collapse(true);},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Unlink');}};
 var FCKShowBlockCommand=function(A,B){this.Name=A;if (B!=undefined) this._SavedState=B;else this._SavedState=null;};FCKShowBlockCommand.prototype.Execute=function(){var A=this.GetState();if (A==-1) return;var B=FCK.EditorDocument.body;if (A==1) B.className=B.className.replace(/(^| )FCK__ShowBlocks/g,'');else B.className+=' FCK__ShowBlocks';FCK.Events.FireEvent('OnSelectionChange');};FCKShowBlockCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;if (!FCK.EditorDocument) return 0;if (/FCK__ShowBlocks(?:\s|$)/.test(FCK.EditorDocument.body.className)) return 1;return 0;};FCKShowBlockCommand.prototype.SaveState=function(){this._SavedState=this.GetState();};FCKShowBlockCommand.prototype.RestoreState=function(){if (this._SavedState!=null&&this.GetState()!=this._SavedState) this.Execute();};
-var FCKSpellCheckCommand=function(){this.Name='SpellCheck';this.IsEnabled=(FCKConfig.SpellChecker=='ieSpell'||FCKConfig.SpellChecker=='SpellerPages');};FCKSpellCheckCommand.prototype.Execute=function(){switch (FCKConfig.SpellChecker){case 'ieSpell':this._RunIeSpell();break;case 'SpellerPages':FCKDialog.OpenDialog('FCKDialog_SpellCheck','Spell Check','dialog/fck_spellerpages.html',440,480);break;}};FCKSpellCheckCommand.prototype._RunIeSpell=function(){try{var A=new ActiveXObject("ieSpell.ieSpellExtension");A.CheckAllLinkedDocuments(FCK.EditorDocument);}catch(e){if(e.number==-2146827859){if (confirm(FCKLang.IeSpellDownload)) window.open(FCKConfig.IeSpellDownloadUrl,'IeSpellDownload');}else alert('Error Loading ieSpell: '+e.message+' ('+e.number+')');}};FCKSpellCheckCommand.prototype.GetState=function(){return this.IsEnabled?0:-1;}
-var FCKTextColorCommand=function(A){this.Name=A=='ForeColor'?'TextColor':'BGColor';this.Type=A;var B;if (FCKBrowserInfo.IsIE) B=window;else if (FCK.ToolbarSet._IFrame) B=FCKTools.GetElementWindow(FCK.ToolbarSet._IFrame);else B=window.parent;this._Panel=new FCKPanel(B);this._Panel.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');this._Panel.MainNode.className='FCK_Panel';this._CreatePanelBody(this._Panel.Document,this._Panel.MainNode);FCKTools.DisableSelection(this._Panel.Document.body);};FCKTextColorCommand.prototype.Execute=function(A,B,C){this._Panel.Show(A,B,C);};FCKTextColorCommand.prototype.SetColor=function(A){FCKUndo.SaveUndoStep();var B=FCKStyles.GetStyle('_FCK_'+(this.Type=='ForeColor'?'Color':'BackColor'));if (!A||A.length==0) FCK.Styles.RemoveStyle(B);else{B.SetVariable('Color',A);FCKStyles.ApplyStyle(B);};FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');};FCKTextColorCommand.prototype.GetState=function(){return 0;};function FCKTextColorCommand_OnMouseOver(){this.className='ColorSelected';};function FCKTextColorCommand_OnMouseOut(){this.className='ColorDeselected';};function FCKTextColorCommand_OnClick(A,B,C){this.className='ColorDeselected';B.SetColor(C);B._Panel.Hide();};function FCKTextColorCommand_AutoOnClick(A,B){this.className='ColorDeselected';B.SetColor('');B._Panel.Hide();};function FCKTextColorCommand_MoreOnClick(A,B){this.className='ColorDeselected';B._Panel.Hide();FCKDialog.OpenDialog('FCKDialog_Color',FCKLang.DlgColorTitle,'dialog/fck_colorselector.html',400,330,FCKTools.Hitch(B,'SetColor'));};FCKTextColorCommand.prototype._CreatePanelBody=function(A,B){function CreateSelectionDiv(){var C=A.createElement("DIV");C.className='ColorDeselected';FCKTools.AddEventListenerEx(C,'mouseover',FCKTextColorCommand_OnMouseOver);FCKTools.AddEventListenerEx(C,'mouseout',FCKTextColorCommand_OnMouseOut);return C;};var D=B.appendChild(A.createElement("TABLE"));D.className='ForceBaseFont';D.style.tableLayout='fixed';D.cellPadding=0;D.cellSpacing=0;D.border=0;D.width=150;var E=D.insertRow(-1).insertCell(-1);E.colSpan=8;var C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table cellspacing="0" cellpadding="0" width="100%" border="0">\n			<tr>\n				<td><div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #000000"></div></div></td>\n				<td nowrap width="100%" align="center">'+FCKLang.ColorAutomatic+'</td>\n			</tr>\n		</table>';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_AutoOnClick,this);if (!FCKBrowserInfo.IsIE) C.style.width='96%';var G=FCKConfig.FontColors.toString().split(',');var H=0;while (H<G.length){var I=D.insertRow(-1);for (var i=0;i<8;i++,H++){if (H<G.length){var J=G[H].split('/');var K='#'+J[0];var L=J[1]||K;};C=I.insertCell(-1).appendChild(CreateSelectionDiv());C.innerHTML='<div class="ColorBoxBorder"><div class="ColorBox" style="background-color: '+K+'"></div></div>';if (H>=G.length) C.style.visibility='hidden';else FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_OnClick,[this,L]);}};if (FCKConfig.EnableMoreFontColors){E=D.insertRow(-1).insertCell(-1);E.colSpan=8;C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td nowrap align="center">'+FCKLang.ColorMoreColors+'</td></tr></table>';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_MoreOnClick,this);};if (!FCKBrowserInfo.IsIE) C.style.width='96%';};
-var FCKPastePlainTextCommand=function(){this.Name='PasteText';};FCKPastePlainTextCommand.prototype.Execute=function(){FCK.PasteAsPlainText();};FCKPastePlainTextCommand.prototype.GetState=function(){return FCK.GetNamedCommandState('Paste');};
-var FCKPasteWordCommand=function(){this.Name='PasteWord';};FCKPasteWordCommand.prototype.Execute=function(){FCK.PasteFromWord();};FCKPasteWordCommand.prototype.GetState=function(){if (FCKConfig.ForcePasteAsPlainText) return -1;else return FCK.GetNamedCommandState('Paste');};
+var FCKSpellCheckCommand=function(){this.Name='SpellCheck';this.IsEnabled=(FCKConfig.SpellChecker=='ieSpell'||FCKConfig.SpellChecker=='SpellerPages');};FCKSpellCheckCommand.prototype.Execute=function(){switch (FCKConfig.SpellChecker){case 'ieSpell':this._RunIeSpell();break;case 'SpellerPages':FCKDialog.OpenDialog('FCKDialog_SpellCheck','Spell Check','dialog/fck_spellerpages.html',440,480);break;}};FCKSpellCheckCommand.prototype._RunIeSpell=function(){try{var A=new ActiveXObject("ieSpell.ieSpellExtension");A.CheckAllLinkedDocuments(FCK.EditorDocument);}catch(e){if(e.number==-2146827859){if (confirm(FCKLang.IeSpellDownload)) window.open(FCKConfig.IeSpellDownloadUrl,'IeSpellDownload');}else alert('Error Loading ieSpell: '+e.message+' ('+e.number+')');}};FCKSpellCheckCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return this.IsEnabled?0:-1;};
+var FCKTextColorCommand=function(A){this.Name=A=='ForeColor'?'TextColor':'BGColor';this.Type=A;var B;if (FCKBrowserInfo.IsIE) B=window;else if (FCK.ToolbarSet._IFrame) B=FCKTools.GetElementWindow(FCK.ToolbarSet._IFrame);else B=window.parent;this._Panel=new FCKPanel(B);this._Panel.AppendStyleSheet(FCKConfig.SkinEditorCSS);this._Panel.MainNode.className='FCK_Panel';this._CreatePanelBody(this._Panel.Document,this._Panel.MainNode);FCK.ToolbarSet.ToolbarItems.GetItem(this.Name).RegisterPanel(this._Panel);FCKTools.DisableSelection(this._Panel.Document.body);};FCKTextColorCommand.prototype.Execute=function(A,B,C){this._Panel.Show(A,B,C);};FCKTextColorCommand.prototype.SetColor=function(A){FCKUndo.SaveUndoStep();var B=FCKStyles.GetStyle('_FCK_'+(this.Type=='ForeColor'?'Color':'BackColor'));if (!A||A.length==0) FCK.Styles.RemoveStyle(B);else{B.SetVariable('Color',A);FCKStyles.ApplyStyle(B);};FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');};FCKTextColorCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};function FCKTextColorCommand_OnMouseOver(){this.className='ColorSelected';};function FCKTextColorCommand_OnMouseOut(){this.className='ColorDeselected';};function FCKTextColorCommand_OnClick(A,B,C){this.className='ColorDeselected';B.SetColor(C);B._Panel.Hide();};function FCKTextColorCommand_AutoOnClick(A,B){this.className='ColorDeselected';B.SetColor('');B._Panel.Hide();};function FCKTextColorCommand_MoreOnClick(A,B){this.className='ColorDeselected';B._Panel.Hide();FCKDialog.OpenDialog('FCKDialog_Color',FCKLang.DlgColorTitle,'dialog/fck_colorselector.html',410,320,FCKTools.Bind(B,B.SetColor));};FCKTextColorCommand.prototype._CreatePanelBody=function(A,B){function CreateSelectionDiv(){var C=A.createElement("DIV");C.className='ColorDeselected';FCKTools.AddEventListenerEx(C,'mouseover',FCKTextColorCommand_OnMouseOver);FCKTools.AddEventListenerEx(C,'mouseout',FCKTextColorCommand_OnMouseOut);return C;};var D=B.appendChild(A.createElement("TABLE"));D.className='ForceBaseFont';D.style.tableLayout='fixed';D.cellPadding=0;D.cellSpacing=0;D.border=0;D.width=150;var E=D.insertRow(-1).insertCell(-1);E.colSpan=8;var C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table cellspacing="0" cellpadding="0" width="100%" border="0">\n			<tr>\n				<td><div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #000000"></div></div></td>\n				<td nowrap width="100%" align="center">'+FCKLang.ColorAutomatic+'</td>\n			</tr>\n		</table>';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_AutoOnClick,this);if (!FCKBrowserInfo.IsIE) C.style.width='96%';var G=FCKConfig.FontColors.toString().split(',');var H=0;while (H<G.length){var I=D.insertRow(-1);for (var i=0;i<8;i++,H++){if (H<G.length){var J=G[H].split('/');var K='#'+J[0];var L=J[1]||K;};C=I.insertCell(-1).appendChild(CreateSelectionDiv());C.innerHTML='<div class="ColorBoxBorder"><div class="ColorBox" style="background-color: '+K+'"></div></div>';if (H>=G.length) C.style.visibility='hidden';else FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_OnClick,[this,L]);}};if (FCKConfig.EnableMoreFontColors){E=D.insertRow(-1).insertCell(-1);E.colSpan=8;C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td nowrap align="center">'+FCKLang.ColorMoreColors+'</td></tr></table>';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_MoreOnClick,this);};if (!FCKBrowserInfo.IsIE) C.style.width='96%';};
+var FCKPastePlainTextCommand=function(){this.Name='PasteText';};FCKPastePlainTextCommand.prototype.Execute=function(){FCK.PasteAsPlainText();};FCKPastePlainTextCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Paste');};
+var FCKPasteWordCommand=function(){this.Name='PasteWord';};FCKPasteWordCommand.prototype.Execute=function(){FCK.PasteFromWord();};FCKPasteWordCommand.prototype.GetState=function(){if (FCK.EditMode!=0||FCKConfig.ForcePasteAsPlainText) return -1;else return FCK.GetNamedCommandState('Paste');};
 var FCKTableCommand=function(A){this.Name=A;};FCKTableCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (!FCKBrowserInfo.IsGecko){switch (this.Name){case 'TableMergeRight':return FCKTableHandler.MergeRight();case 'TableMergeDown':return FCKTableHandler.MergeDown();}};switch (this.Name){case 'TableInsertRowAfter':return FCKTableHandler.InsertRow(false);case 'TableInsertRowBefore':return FCKTableHandler.InsertRow(true);case 'TableDeleteRows':return FCKTableHandler.DeleteRows();case 'TableInsertColumnAfter':return FCKTableHandler.InsertColumn(false);case 'TableInsertColumnBefore':return FCKTableHandler.InsertColumn(true);case 'TableDeleteColumns':return FCKTableHandler.DeleteColumns();case 'TableInsertCellAfter':return FCKTableHandler.InsertCell(null,false);case 'TableInsertCellBefore':return FCKTableHandler.InsertCell(null,true);case 'TableDeleteCells':return FCKTableHandler.DeleteCells();case 'TableMergeCells':return FCKTableHandler.MergeCells();case 'TableHorizontalSplitCell':return FCKTableHandler.HorizontalSplitCell();case 'TableVerticalSplitCell':return FCKTableHandler.VerticalSplitCell();case 'TableDelete':return FCKTableHandler.DeleteTable();default:return alert(FCKLang.UnknownCommand.replace(/%1/g,this.Name));}};FCKTableCommand.prototype.GetState=function(){if (FCK.EditorDocument!=null&&FCKSelection.HasAncestorNode('TABLE')){switch (this.Name){case 'TableHorizontalSplitCell':case 'TableVerticalSplitCell':if (FCKTableHandler.GetSelectedCells().length==1) return 0;else return -1;case 'TableMergeCells':if (FCKTableHandler.CheckIsSelectionRectangular()&&FCKTableHandler.GetSelectedCells().length>1) return 0;else return -1;case 'TableMergeRight':return FCKTableHandler.GetMergeRightTarget()?0:-1;case 'TableMergeDown':return FCKTableHandler.GetMergeDownTarget()?0:-1;default:return 0;}}else return -1;};
 var FCKFitWindow=function(){this.Name='FitWindow';};FCKFitWindow.prototype.Execute=function(){var A=window.frameElement;var B=A.style;var C=parent;var D=C.document.documentElement;var E=C.document.body;var F=E.style;var G;if (!this.IsMaximized){if(FCKBrowserInfo.IsIE) C.attachEvent('onresize',FCKFitWindow_Resize);else C.addEventListener('resize',FCKFitWindow_Resize,true);this._ScrollPos=FCKTools.GetScrollPosition(C);G=A;while((G=G.parentNode)){if (G.nodeType==1){G._fckSavedStyles=FCKTools.SaveStyles(G);G.style.zIndex=FCKConfig.FloatingPanelsZIndex-1;}};if (FCKBrowserInfo.IsIE){this.documentElementOverflow=D.style.overflow;D.style.overflow='hidden';F.overflow='hidden';}else{F.overflow='hidden';F.width='0px';F.height='0px';};this._EditorFrameStyles=FCKTools.SaveStyles(A);var H=FCKTools.GetViewPaneSize(C);B.position="absolute";B.zIndex=FCKConfig.FloatingPanelsZIndex-1;B.left="0px";B.top="0px";B.width=H.Width+"px";B.height=H.Height+"px";if (!FCKBrowserInfo.IsIE){B.borderRight=B.borderBottom="9999px solid white";B.backgroundColor="white";};C.scrollTo(0,0);var I=FCKTools.GetWindowPosition(C,A);if (I.x!=0) B.left=(-1*I.x)+"px";if (I.y!=0) B.top=(-1*I.y)+"px";this.IsMaximized=true;}else{if(FCKBrowserInfo.IsIE) C.detachEvent("onresize",FCKFitWindow_Resize);else C.removeEventListener("resize",FCKFitWindow_Resize,true);G=A;while((G=G.parentNode)){if (G._fckSavedStyles){FCKTools.RestoreStyles(G,G._fckSavedStyles);G._fckSavedStyles=null;}};if (FCKBrowserInfo.IsIE) D.style.overflow=this.documentElementOverflow;FCKTools.RestoreStyles(A,this._EditorFrameStyles);C.scrollTo(this._ScrollPos.X,this._ScrollPos.Y);this.IsMaximized=false;};FCKToolbarItems.GetItem('FitWindow').RefreshState();if (FCK.EditMode==0) FCK.EditingArea.MakeEditable();FCK.Focus();};FCKFitWindow.prototype.GetState=function(){if (FCKConfig.ToolbarLocation!='In') return -1;else return (this.IsMaximized?1:0);};function FCKFitWindow_Resize(){var A=FCKTools.GetViewPaneSize(parent);var B=window.frameElement.style;B.width=A.Width+'px';B.height=A.Height+'px';};
-var FCKListCommand=function(A,B){this.Name=A;this.TagName=B;};FCKListCommand.prototype={GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=FCKSelection.GetBoundaryParentElement(true);var B=A;while (B){if (B.nodeName.IEquals(['ul','ol'])) break;B=B.parentNode;};if (B&&B.nodeName.IEquals(this.TagName)) return 1;else return 0;},Execute:function(){FCKUndo.SaveUndoStep();var A=FCK.EditorDocument;var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=this.GetState();if (C==0){FCKDomTools.TrimNode(A.body);if (!A.body.firstChild){var D=A.createElement('p');A.body.appendChild(D);B.MoveToNodeContents(D);}};var E=B.CreateBookmark();var F=[];var G={};var H=new FCKDomRangeIterator(B);var I;H.ForceBrBreak=(C==0);var J=true;var K=null;while (J){while ((I=H.GetNextParagraph())){var L=new FCKElementPath(I);var M=null;var N=false;var O=L.BlockLimit;for (var i=L.Elements.length-1;i>=0;i--){var P=L.Elements[i];if (P.nodeName.IEquals(['ol','ul'])){if (O._FCK_ListGroupObject) O._FCK_ListGroupObject=null;var Q=P._FCK_ListGroupObject;if (Q) Q.contents.push(I);else{Q={ 'root':P,'contents':[I] };F.push(Q);FCKDomTools.SetElementMarker(G,P,'_FCK_ListGroupObject',Q);};N=true;break;}};if (N) continue;var R=O;if (R._FCK_ListGroupObject) R._FCK_ListGroupObject.contents.push(I);else{var Q={ 'root':R,'contents':[I] };FCKDomTools.SetElementMarker(G,R,'_FCK_ListGroupObject',Q);F.push(Q);}};if (FCKBrowserInfo.IsIE) J=false;else{if (K==null){K=[];var T=FCK.EditorWindow.getSelection();if (T&&F.length==0) K.push(T.getRangeAt(0));for (var i=1;T&&i<T.rangeCount;i++) K.push(T.getRangeAt(i));};if (K.length<1) J=false;else{var U=FCKW3CRange.CreateFromRange(A,K.shift());B._Range=U;B._UpdateElementInfo();if (B.StartNode.nodeName.IEquals('td')) B.SetStart(B.StartNode,1);if (B.EndNode.nodeName.IEquals('td')) B.SetEnd(B.EndNode,2);H=new FCKDomRangeIterator(B);H.ForceBrBreak=(C==0);}}};var W=[];while (F.length>0){var Q=F.shift();if (C==0){if (Q.root.nodeName.IEquals(['ul','ol'])) this._ChangeListType(Q,G,W);else this._CreateList(Q,W);}else if (C==1&&Q.root.nodeName.IEquals(['ul','ol'])) this._RemoveList(Q,G);};for (var i=0;i<W.length;i++){var M=W[i];var Z=false;var a=M;while (!Z){a=a.nextSibling;if (a&&a.nodeType==3&&a.nodeValue.search(/^[\n\r\t ]*$/)==0) continue;Z=true;};if (a&&a.nodeName.IEquals(this.TagName)){a.parentNode.removeChild(a);while (a.firstChild) M.appendChild(a.removeChild(a.firstChild));};Z=false;a=M;while (!Z){a=a.previousSibling;if (a&&a.nodeType==3&&a.nodeValue.search(/^[\n\r\t ]*$/)==0) continue;Z=true;};if (a&&a.nodeName.IEquals(this.TagName)){a.parentNode.removeChild(a);while (a.lastChild) M.insertBefore(a.removeChild(a.lastChild),M.firstChild);}};FCKDomTools.ClearAllMarkers(G);B.MoveToBookmark(E);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},_ChangeListType:function(A,B,C){var D=FCKDomTools.ListToArray(A.root,B);var E=[];for (var i=0;i<A.contents.length;i++){var F=A.contents[i];F=FCKTools.GetElementAscensor(F,'li');if (!F||F._FCK_ListItem_Processed) continue;E.push(F);FCKDomTools.SetElementMarker(B,F,'_FCK_ListItem_Processed',true);};var G=A.root.ownerDocument.createElement(this.TagName);for (var i=0;i<E.length;i++){var H=E[i]._FCK_ListArray_Index;D[H].parent=G;};var I=FCKDomTools.ArrayToList(D,B);for (var i=0;i<I.listNode.childNodes.length;i++){if (I.listNode.childNodes[i].nodeName.IEquals(this.TagName)) C.push(I.listNode.childNodes[i]);};A.root.parentNode.replaceChild(I.listNode,A.root);},_CreateList:function(A,B){var C=A.contents;var D=A.root.ownerDocument;var E=[];if (C.length==1&&C[0]==A.root){var F=D.createElement('div');while (C[0].firstChild) F.appendChild(C[0].removeChild(C[0].firstChild));C[0].appendChild(F);C[0]=F;};var G=A.contents[0].parentNode;for (var i=0;i<C.length;i++) G=FCKDomTools.GetCommonParents(G,C[i].parentNode).pop();for (var i=0;i<C.length;i++){var H=C[i];while (H.parentNode){if (H.parentNode==G){E.push(H);break;};H=H.parentNode;}};if (E.length<1) return;var I=E[E.length-1].nextSibling;var J=D.createElement(this.TagName);B.push(J);while (E.length){var K=E.shift();var L=D.createDocumentFragment();while (K.firstChild) L.appendChild(K.removeChild(K.firstChild));K.parentNode.removeChild(K);var M=D.createElement('li');M.appendChild(L);J.appendChild(M);};G.insertBefore(J,I);},_RemoveList:function(A,B){var C=FCKDomTools.ListToArray(A.root,B);var D=[];for (var i=0;i<A.contents.length;i++){var E=A.contents[i];E=FCKTools.GetElementAscensor(E,'li');if (!E||E._FCK_ListItem_Processed) continue;D.push(E);FCKDomTools.SetElementMarker(B,E,'_FCK_ListItem_Processed',true);};var F=null;for (var i=0;i<D.length;i++){var G=D[i]._FCK_ListArray_Index;C[G].indent=-1;F=G;};for (var i=F+1;i<C.length;i++){if (C[i].indent>C[i-1].indent+1){var H=C[i-1].indent+1-C[i].indent;var I=C[i].indent;while (C[i]&&C[i].indent>=I){C[i].indent+=H;i++;};i--;}};var J=FCKDomTools.ArrayToList(C,B);if (A.root.nextSibling==null||A.root.nextSibling.nodeName.IEquals('br')){if (J.listNode.lastChild.nodeName.IEquals('br')) J.listNode.removeChild(J.listNode.lastChild);};A.root.parentNode.replaceChild(J.listNode,A.root);}};
-var FCKJustifyCommand=function(A){this.AlignValue=A;var B=FCKConfig.ContentLangDirection.toLowerCase();this.IsDefaultAlign=(A=='left'&&B=='ltr')||(A=='right'&&B=='rtl');var C=this._CssClassName=(function(){var D=FCKConfig.JustifyClasses;if (D){switch (A){case 'left':return D[0];case 'center':return D[1];case 'right':return D[2];case 'justify':return D[3];}};return null;})();if (C&&C.length>0) this._CssClassRegex=new RegExp('(?:^|\\s+)'+C+'(?=$|\\s)');};FCKJustifyCommand._GetClassNameRegex=function(){var A=FCKJustifyCommand._ClassRegex;if (A!=undefined) return A;var B=[];var C=FCKConfig.JustifyClasses;if (C){for (var i=0;i<4;i++){var D=C[i];if (D&&D.length>0) B.push(D);}};if (B.length>0) A=new RegExp('(?:^|\\s+)(?:'+B.join('|')+')(?=$|\\s)');else A=null;return FCKJustifyCommand._ClassRegex=A;};FCKJustifyCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();var B=this.GetState();if (B==-1) return;var C=A.CreateBookmark();var D=this._CssClassName;var E=new FCKDomRangeIterator(A);var F;while ((F=E.GetNextParagraph())){F.removeAttribute('align');if (D){var G=F.className.replace(FCKJustifyCommand._GetClassNameRegex(),'');if (B==0){if (G.length>0) G+=' ';F.className=G+D;}else if (G.length==0) FCKDomTools.RemoveAttribute(F,'class');}else{var H=F.style;if (B==0) H.textAlign=this.AlignValue;else{H.textAlign='';if (H.cssText.length==0) F.removeAttribute('style');}}};A.MoveToBookmark(C);A.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;var C;if (FCKBrowserInfo.IsIE) C=B.currentStyle.textAlign;else C=FCK.EditorWindow.getComputedStyle(B,'').getPropertyValue('text-align');C=C.replace(/(-moz-|-webkit-|start|auto)/i,'');if ((!C&&this.IsDefaultAlign)||C==this.AlignValue) return 1;return 0;}};
-var FCKIndentCommand=function(A,B){this.Name=A;this.Offset=B;this.IndentCSSProperty=FCKConfig.ContentLangDirection.IEquals('ltr')?'marginLeft':'marginRight';};FCKIndentCommand._InitIndentModeParameters=function(){if (FCKConfig.IndentClasses&&FCKConfig.IndentClasses.length>0){this._UseIndentClasses=true;this._IndentClassMap={};for (var i=0;i<FCKConfig.IndentClasses.length;i++) this._IndentClassMap[FCKConfig.IndentClasses[i]]=i+1;this._ClassNameRegex=new RegExp('(?:^|\\s+)('+FCKConfig.IndentClasses.join('|')+')(?=$|\\s)');}else this._UseIndentClasses=false;};FCKIndentCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();var B=A.CreateBookmark();var C=FCKDomTools.GetCommonParentNode(A.StartNode||A.StartContainer,A.EndNode||A.EndContainer,['ul','ol']);if (C) this._IndentList(A,C);else this._IndentBlock(A);A.MoveToBookmark(B);A.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;if (FCKIndentCommand._UseIndentClasses==undefined) FCKIndentCommand._InitIndentModeParameters();var A=FCKSelection.GetBoundaryParentElement(true);var B=FCKSelection.GetBoundaryParentElement(false);var C=FCKDomTools.GetCommonParentNode(A,B,['ul','ol']);if (C){if (this.Name.IEquals('outdent')) return 0;var D=FCKTools.GetElementAscensor(A,'li');if (!D||!D.previousSibling) return -1;return 0;};if (!FCKIndentCommand._UseIndentClasses&&this.Name.IEquals('indent')) return 0;var E=new FCKElementPath(A);var F=E.Block||E.BlockLimit;if (!F) return -1;if (FCKIndentCommand._UseIndentClasses){var G=F.className.match(FCKIndentCommand._ClassNameRegex);var H=0;if (G!=null){G=G[1];H=FCKIndentCommand._IndentClassMap[G];};if ((this.Name=='outdent'&&H==0)||(this.Name=='indent'&&H==FCKConfig.IndentClasses.length)) return -1;return 0;}else{var I=parseInt(F.style[this.IndentCSSProperty],10);if (isNaN(I)) I=0;if (I<=0) return -1;return 0;}},_IndentBlock:function(A){var B=new FCKDomRangeIterator(A);A.Expand('block_contents');var C=FCKDomTools.GetCommonParents(A.StartContainer,A.EndContainer);var D=C[C.length-1];var E;while ((E=B.GetNextParagraph())){if (!(E==D||E.parentNode==D)) continue;if (FCKIndentCommand._UseIndentClasses){var F=E.className.match(FCKIndentCommand._ClassNameRegex);var G=0;if (F!=null){F=F[1];G=FCKIndentCommand._IndentClassMap[F];};if (this.Name.IEquals('outdent')) G--;else if (this.Name.IEquals('indent')) G++;G=Math.min(G,FCKConfig.IndentClasses.length);G=Math.max(G,0);var H=E.className.replace(FCKIndentCommand._ClassNameRegex,'');if (G<1) E.className=H;else E.className=(H.length>0?H+' ':'')+FCKConfig.IndentClasses[G-1];}else{var I=parseInt(E.style[this.IndentCSSProperty],10);if (isNaN(I)) I=0;I+=this.Offset;I=Math.max(I,0);I=Math.ceil(I/this.Offset)*this.Offset;E.style[this.IndentCSSProperty]=I?I+FCKConfig.IndentUnit:'';if (E.getAttribute('style')=='') E.removeAttribute('style');}}},_IndentList:function(A,B){var C=A.StartContainer;var D=A.EndContainer;while (C&&C.parentNode!=B) C=C.parentNode;while (D&&D.parentNode!=B) D=D.parentNode;if (!C||!D) return;var E=C;var F=[];var G=false;while (G==false){if (E==D) G=true;F.push(E);E=E.nextSibling;};if (F.length<1) return;var H=FCKDomTools.GetParents(B);for (var i=0;i<H.length;i++){if (H[i].nodeName.IEquals(['ul','ol'])){B=H[i];break;}};var I=this.Name.IEquals('indent')?1:-1;var J=F[0];var K=F[F.length-1];var L={};var M=FCKDomTools.ListToArray(B,L);var N=M[K._FCK_ListArray_Index].indent;for (var i=J._FCK_ListArray_Index;i<=K._FCK_ListArray_Index;i++) M[i].indent+=I;for (var i=K._FCK_ListArray_Index+1;i<M.length&&M[i].indent>N;i++) M[i].indent+=I;var O=FCKDomTools.ArrayToList(M);if (O) B.parentNode.replaceChild(O.listNode,B);FCKDomTools.ClearAllMarkers(L);}};
-var FCKBlockQuoteCommand=function(){};FCKBlockQuoteCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=this.GetState();var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.CreateBookmark();if (FCKBrowserInfo.IsIE){var D=B.GetBookmarkNode(C,true);var E=B.GetBookmarkNode(C,false);var F;if (D&&D.parentNode.nodeName.IEquals('blockquote')&&!D.previousSibling){F=D;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]) FCKDomTools.MoveNode(D,F,true);}};if (E&&E.parentNode.nodeName.IEquals('blockquote')&&!E.previousSibling){F=E;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]){if (F.firstChild==D) FCKDomTools.InsertAfterNode(D,E);else FCKDomTools.MoveNode(E,F,true);}}}};var G=new FCKDomRangeIterator(B);var H;if (A==0){G.EnforceRealBlocks=true;var I=[];while ((H=G.GetNextParagraph())) I.push(H);if (I.length<1){para=B.Window.document.createElement(FCKConfig.EnterMode.IEquals('p')?'p':'div');B.InsertNode(para);para.appendChild(B.Window.document.createTextNode('\ufeff'));B.MoveToBookmark(C);B.MoveToNodeContents(para);B.Collapse(true);C=B.CreateBookmark();I.push(para);};var J=I[0].parentNode;var K=[];for (var i=0;i<I.length;i++){H=I[i];J=FCKDomTools.GetCommonParents(H.parentNode,J).pop();};var L=null;while (I.length>0){H=I.shift();while (H.parentNode!=J) H=H.parentNode;if (H!=L) K.push(H);L=H;};while (K.length>0){H=K.shift();if (H.nodeName.IEquals('blockquote')){var M=H.ownerDocument.createDocumentFragment();while (H.firstChild){M.appendChild(H.removeChild(H.firstChild));I.push(M.lastChild);};H.parentNode.replaceChild(M,H);}else I.push(H);};var N=B.Window.document.createElement('blockquote');J.insertBefore(N,I[0]);while (I.length>0){H=I.shift();N.appendChild(H);}}else if (A==1){var O=[];while ((H=G.GetNextParagraph())){var P=null;var Q=null;while (H.parentNode){if (H.parentNode.nodeName.IEquals('blockquote')){P=H.parentNode;Q=H;break;};H=H.parentNode;};if (P&&Q) O.push(Q);};var R=[];while (O.length>0){var S=O.shift();var N=S.parentNode;if (S==S.parentNode.firstChild){N.parentNode.insertBefore(N.removeChild(S),N);if (!N.firstChild) N.parentNode.removeChild(N);}else if (S==S.parentNode.lastChild){N.parentNode.insertBefore(N.removeChild(S),N.nextSibling);if (!N.firstChild) N.parentNode.removeChild(N);}else FCKDomTools.BreakParent(S,S.parentNode,B);R.push(S);};if (FCKConfig.EnterMode.IEquals('br')){while (R.length){var S=R.shift();var W=true;if (S.nodeName.IEquals('div')){var M=S.ownerDocument.createDocumentFragment();var Y=W&&S.previousSibling&&!FCKListsLib.BlockBoundaries[S.previousSibling.nodeName.toLowerCase()];if (W&&Y) M.appendChild(S.ownerDocument.createElement('br'));var Z=S.nextSibling&&!FCKListsLib.BlockBoundaries[S.nextSibling.nodeName.toLowerCase()];while (S.firstChild) M.appendChild(S.removeChild(S.firstChild));if (Z) M.appendChild(S.ownerDocument.createElement('br'));S.parentNode.replaceChild(M,S);W=false;}}}};B.MoveToBookmark(C);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;for (var i=0;i<A.Elements.length;i++){if (A.Elements[i].nodeName.IEquals('blockquote')) return 1;};return 0;}};
-var FCKCoreStyleCommand=function(A){this.Name='CoreStyle';this.StyleName='_FCK_'+A;this.IsActive=false;FCKStyles.AttachStyleStateChange(this.StyleName,this._OnStyleStateChange,this);};FCKCoreStyleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();if (this.IsActive) FCKStyles.RemoveStyle(this.StyleName);else FCKStyles.ApplyStyle(this.StyleName);FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){return this.IsActive?1:0;},_OnStyleStateChange:function(A,B){this.IsActive=B;}};
+var FCKListCommand=function(A,B){this.Name=A;this.TagName=B;};FCKListCommand.prototype={GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=FCKSelection.GetBoundaryParentElement(true);var B=A;while (B){if (B.nodeName.IEquals(['ul','ol'])) break;B=B.parentNode;};if (B&&B.nodeName.IEquals(this.TagName)) return 1;else return 0;},Execute:function(){FCKUndo.SaveUndoStep();var A=FCK.EditorDocument;var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=this.GetState();if (C==0){FCKDomTools.TrimNode(A.body);if (!A.body.firstChild){var D=A.createElement('p');A.body.appendChild(D);B.MoveToNodeContents(D);}};var E=B.CreateBookmark();var F=[];var G={};var H=new FCKDomRangeIterator(B);var I;H.ForceBrBreak=(C==0);var J=true;var K=null;while (J){while ((I=H.GetNextParagraph())){var L=new FCKElementPath(I);var M=null;var N=false;var O=L.BlockLimit;for (var i=L.Elements.length-1;i>=0;i--){var P=L.Elements[i];if (P.nodeName.IEquals(['ol','ul'])){if (O._FCK_ListGroupObject) O._FCK_ListGroupObject=null;var Q=P._FCK_ListGroupObject;if (Q) Q.contents.push(I);else{Q={ 'root':P,'contents':[I] };F.push(Q);FCKDomTools.SetElementMarker(G,P,'_FCK_ListGroupObject',Q);};N=true;break;}};if (N) continue;var R=O;if (R._FCK_ListGroupObject) R._FCK_ListGroupObject.contents.push(I);else{var Q={ 'root':R,'contents':[I] };FCKDomTools.SetElementMarker(G,R,'_FCK_ListGroupObject',Q);F.push(Q);}};if (FCKBrowserInfo.IsIE) J=false;else{if (K==null){K=[];var T=FCKSelection.GetSelection();if (T&&F.length==0) K.push(T.getRangeAt(0));for (var i=1;T&&i<T.rangeCount;i++) K.push(T.getRangeAt(i));};if (K.length<1) J=false;else{var U=FCKW3CRange.CreateFromRange(A,K.shift());B._Range=U;B._UpdateElementInfo();if (B.StartNode.nodeName.IEquals('td')) B.SetStart(B.StartNode,1);if (B.EndNode.nodeName.IEquals('td')) B.SetEnd(B.EndNode,2);H=new FCKDomRangeIterator(B);H.ForceBrBreak=(C==0);}}};var W=[];while (F.length>0){var Q=F.shift();if (C==0){if (Q.root.nodeName.IEquals(['ul','ol'])) this._ChangeListType(Q,G,W);else this._CreateList(Q,W);}else if (C==1&&Q.root.nodeName.IEquals(['ul','ol'])) this._RemoveList(Q,G);};for (var i=0;i<W.length;i++){var M=W[i];var Z=false;var a=M;while (!Z){a=a.nextSibling;if (a&&a.nodeType==3&&a.nodeValue.search(/^[\n\r\t ]*$/)==0) continue;Z=true;};if (a&&a.nodeName.IEquals(this.TagName)){a.parentNode.removeChild(a);while (a.firstChild) M.appendChild(a.removeChild(a.firstChild));};Z=false;a=M;while (!Z){a=a.previousSibling;if (a&&a.nodeType==3&&a.nodeValue.search(/^[\n\r\t ]*$/)==0) continue;Z=true;};if (a&&a.nodeName.IEquals(this.TagName)){a.parentNode.removeChild(a);while (a.lastChild) M.insertBefore(a.removeChild(a.lastChild),M.firstChild);}};FCKDomTools.ClearAllMarkers(G);B.MoveToBookmark(E);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},_ChangeListType:function(A,B,C){var D=FCKDomTools.ListToArray(A.root,B);var E=[];for (var i=0;i<A.contents.length;i++){var F=A.contents[i];F=FCKTools.GetElementAscensor(F,'li');if (!F||F._FCK_ListItem_Processed) continue;E.push(F);FCKDomTools.SetElementMarker(B,F,'_FCK_ListItem_Processed',true);};var G=FCKTools.GetElementDocument(A.root).createElement(this.TagName);for (var i=0;i<E.length;i++){var H=E[i]._FCK_ListArray_Index;D[H].parent=G;};var I=FCKDomTools.ArrayToList(D,B);for (var i=0;i<I.listNode.childNodes.length;i++){if (I.listNode.childNodes[i].nodeName.IEquals(this.TagName)) C.push(I.listNode.childNodes[i]);};A.root.parentNode.replaceChild(I.listNode,A.root);},_CreateList:function(A,B){var C=A.contents;var D=FCKTools.GetElementDocument(A.root);var E=[];if (C.length==1&&C[0]==A.root){var F=D.createElement('div');while (C[0].firstChild) F.appendChild(C[0].removeChild(C[0].firstChild));C[0].appendChild(F);C[0]=F;};var G=A.contents[0].parentNode;for (var i=0;i<C.length;i++) G=FCKDomTools.GetCommonParents(G,C[i].parentNode).pop();for (var i=0;i<C.length;i++){var H=C[i];while (H.parentNode){if (H.parentNode==G){E.push(H);break;};H=H.parentNode;}};if (E.length<1) return;var I=E[E.length-1].nextSibling;var J=D.createElement(this.TagName);B.push(J);while (E.length){var K=E.shift();var L=D.createDocumentFragment();while (K.firstChild) L.appendChild(K.removeChild(K.firstChild));K.parentNode.removeChild(K);var M=D.createElement('li');M.appendChild(L);J.appendChild(M);};G.insertBefore(J,I);},_RemoveList:function(A,B){var C=FCKDomTools.ListToArray(A.root,B);var D=[];for (var i=0;i<A.contents.length;i++){var E=A.contents[i];E=FCKTools.GetElementAscensor(E,'li');if (!E||E._FCK_ListItem_Processed) continue;D.push(E);FCKDomTools.SetElementMarker(B,E,'_FCK_ListItem_Processed',true);};var F=null;for (var i=0;i<D.length;i++){var G=D[i]._FCK_ListArray_Index;C[G].indent=-1;F=G;};for (var i=F+1;i<C.length;i++){if (C[i].indent>C[i-1].indent+1){var H=C[i-1].indent+1-C[i].indent;var I=C[i].indent;while (C[i]&&C[i].indent>=I){C[i].indent+=H;i++;};i--;}};var J=FCKDomTools.ArrayToList(C,B);if (A.root.nextSibling==null||A.root.nextSibling.nodeName.IEquals('br')){if (J.listNode.lastChild.nodeName.IEquals('br')) J.listNode.removeChild(J.listNode.lastChild);};A.root.parentNode.replaceChild(J.listNode,A.root);}};
+var FCKJustifyCommand=function(A){this.AlignValue=A;var B=FCKConfig.ContentLangDirection.toLowerCase();this.IsDefaultAlign=(A=='left'&&B=='ltr')||(A=='right'&&B=='rtl');var C=this._CssClassName=(function(){var D=FCKConfig.JustifyClasses;if (D){switch (A){case 'left':return D[0]||null;case 'center':return D[1]||null;case 'right':return D[2]||null;case 'justify':return D[3]||null;}};return null;})();if (C&&C.length>0) this._CssClassRegex=new RegExp('(?:^|\\s+)'+C+'(?=$|\\s)');};FCKJustifyCommand._GetClassNameRegex=function(){var A=FCKJustifyCommand._ClassRegex;if (A!=undefined) return A;var B=[];var C=FCKConfig.JustifyClasses;if (C){for (var i=0;i<4;i++){var D=C[i];if (D&&D.length>0) B.push(D);}};if (B.length>0) A=new RegExp('(?:^|\\s+)(?:'+B.join('|')+')(?=$|\\s)');else A=null;return FCKJustifyCommand._ClassRegex=A;};FCKJustifyCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();var B=this.GetState();if (B==-1) return;var C=A.CreateBookmark();var D=this._CssClassName;var E=new FCKDomRangeIterator(A);var F;while ((F=E.GetNextParagraph())){F.removeAttribute('align');if (D){var G=F.className.replace(FCKJustifyCommand._GetClassNameRegex(),'');if (B==0){if (G.length>0) G+=' ';F.className=G+D;}else if (G.length==0) FCKDomTools.RemoveAttribute(F,'class');}else{var H=F.style;if (B==0) H.textAlign=this.AlignValue;else{H.textAlign='';if (H.cssText.length==0) F.removeAttribute('style');}}};A.MoveToBookmark(C);A.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;var C;if (FCKBrowserInfo.IsIE) C=B.currentStyle.textAlign;else C=FCK.EditorWindow.getComputedStyle(B,'').getPropertyValue('text-align');C=C.replace(/(-moz-|-webkit-|start|auto)/i,'');if ((!C&&this.IsDefaultAlign)||C==this.AlignValue) return 1;return 0;}};
+var FCKIndentCommand=function(A,B){this.Name=A;this.Offset=B;this.IndentCSSProperty=FCKConfig.ContentLangDirection.IEquals('ltr')?'marginLeft':'marginRight';};FCKIndentCommand._InitIndentModeParameters=function(){if (FCKConfig.IndentClasses&&FCKConfig.IndentClasses.length>0){this._UseIndentClasses=true;this._IndentClassMap={};for (var i=0;i<FCKConfig.IndentClasses.length;i++) this._IndentClassMap[FCKConfig.IndentClasses[i]]=i+1;this._ClassNameRegex=new RegExp('(?:^|\\s+)('+FCKConfig.IndentClasses.join('|')+')(?=$|\\s)');}else this._UseIndentClasses=false;};FCKIndentCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();var B=A.CreateBookmark();var C=FCKDomTools.GetCommonParentNode(A.StartNode||A.StartContainer,A.EndNode||A.EndContainer,['ul','ol']);if (C) this._IndentList(A,C);else this._IndentBlock(A);A.MoveToBookmark(B);A.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;if (FCKIndentCommand._UseIndentClasses==undefined) FCKIndentCommand._InitIndentModeParameters();var A=FCKSelection.GetBoundaryParentElement(true);var B=FCKSelection.GetBoundaryParentElement(false);var C=FCKDomTools.GetCommonParentNode(A,B,['ul','ol']);if (C){if (this.Name.IEquals('outdent')) return 0;var D=FCKTools.GetElementAscensor(A,'li');if (!D||!D.previousSibling) return -1;return 0;};if (!FCKIndentCommand._UseIndentClasses&&this.Name.IEquals('indent')) return 0;var E=new FCKElementPath(A);var F=E.Block||E.BlockLimit;if (!F) return -1;if (FCKIndentCommand._UseIndentClasses){var G=F.className.match(FCKIndentCommand._ClassNameRegex);var H=0;if (G!=null){G=G[1];H=FCKIndentCommand._IndentClassMap[G];};if ((this.Name=='outdent'&&H==0)||(this.Name=='indent'&&H==FCKConfig.IndentClasses.length)) return -1;return 0;}else{var I=parseInt(F.style[this.IndentCSSProperty],10);if (isNaN(I)) I=0;if (I<=0) return -1;return 0;}},_IndentBlock:function(A){var B=new FCKDomRangeIterator(A);B.EnforceRealBlocks=true;A.Expand('block_contents');var C=FCKDomTools.GetCommonParents(A.StartContainer,A.EndContainer);var D=C[C.length-1];var E;while ((E=B.GetNextParagraph())){if (!(E==D||E.parentNode==D)) continue;if (FCKIndentCommand._UseIndentClasses){var F=E.className.match(FCKIndentCommand._ClassNameRegex);var G=0;if (F!=null){F=F[1];G=FCKIndentCommand._IndentClassMap[F];};if (this.Name.IEquals('outdent')) G--;else if (this.Name.IEquals('indent')) G++;G=Math.min(G,FCKConfig.IndentClasses.length);G=Math.max(G,0);var H=E.className.replace(FCKIndentCommand._ClassNameRegex,'');if (G<1) E.className=H;else E.className=(H.length>0?H+' ':'')+FCKConfig.IndentClasses[G-1];}else{var I=parseInt(E.style[this.IndentCSSProperty],10);if (isNaN(I)) I=0;I+=this.Offset;I=Math.max(I,0);I=Math.ceil(I/this.Offset)*this.Offset;E.style[this.IndentCSSProperty]=I?I+FCKConfig.IndentUnit:'';if (E.getAttribute('style')=='') E.removeAttribute('style');}}},_IndentList:function(A,B){var C=A.StartContainer;var D=A.EndContainer;while (C&&C.parentNode!=B) C=C.parentNode;while (D&&D.parentNode!=B) D=D.parentNode;if (!C||!D) return;var E=C;var F=[];var G=false;while (G==false){if (E==D) G=true;F.push(E);E=E.nextSibling;};if (F.length<1) return;var H=FCKDomTools.GetParents(B);for (var i=0;i<H.length;i++){if (H[i].nodeName.IEquals(['ul','ol'])){B=H[i];break;}};var I=this.Name.IEquals('indent')?1:-1;var J=F[0];var K=F[F.length-1];var L={};var M=FCKDomTools.ListToArray(B,L);var N=M[K._FCK_ListArray_Index].indent;for (var i=J._FCK_ListArray_Index;i<=K._FCK_ListArray_Index;i++) M[i].indent+=I;for (var i=K._FCK_ListArray_Index+1;i<M.length&&M[i].indent>N;i++) M[i].indent+=I;var O=FCKDomTools.ArrayToList(M);if (O) B.parentNode.replaceChild(O.listNode,B);FCKDomTools.ClearAllMarkers(L);}};
+var FCKBlockQuoteCommand=function(){};FCKBlockQuoteCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=this.GetState();var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.CreateBookmark();if (FCKBrowserInfo.IsIE){var D=B.GetBookmarkNode(C,true);var E=B.GetBookmarkNode(C,false);var F;if (D&&D.parentNode.nodeName.IEquals('blockquote')&&!D.previousSibling){F=D;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]) FCKDomTools.MoveNode(D,F,true);}};if (E&&E.parentNode.nodeName.IEquals('blockquote')&&!E.previousSibling){F=E;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]){if (F.firstChild==D) FCKDomTools.InsertAfterNode(D,E);else FCKDomTools.MoveNode(E,F,true);}}}};var G=new FCKDomRangeIterator(B);var H;if (A==0){G.EnforceRealBlocks=true;var I=[];while ((H=G.GetNextParagraph())) I.push(H);if (I.length<1){para=B.Window.document.createElement(FCKConfig.EnterMode.IEquals('p')?'p':'div');B.InsertNode(para);para.appendChild(B.Window.document.createTextNode('\ufeff'));B.MoveToBookmark(C);B.MoveToNodeContents(para);B.Collapse(true);C=B.CreateBookmark();I.push(para);};var J=I[0].parentNode;var K=[];for (var i=0;i<I.length;i++){H=I[i];J=FCKDomTools.GetCommonParents(H.parentNode,J).pop();};var L=null;while (I.length>0){H=I.shift();while (H.parentNode!=J) H=H.parentNode;if (H!=L) K.push(H);L=H;};while (K.length>0){H=K.shift();if (H.nodeName.IEquals('blockquote')){var M=FCKTools.GetElementDocument(H).createDocumentFragment();while (H.firstChild){M.appendChild(H.removeChild(H.firstChild));I.push(M.lastChild);};H.parentNode.replaceChild(M,H);}else I.push(H);};var N=B.Window.document.createElement('blockquote');J.insertBefore(N,I[0]);while (I.length>0){H=I.shift();N.appendChild(H);}}else if (A==1){var O=[];while ((H=G.GetNextParagraph())){var P=null;var Q=null;while (H.parentNode){if (H.parentNode.nodeName.IEquals('blockquote')){P=H.parentNode;Q=H;break;};H=H.parentNode;};if (P&&Q) O.push(Q);};var R=[];while (O.length>0){var S=O.shift();var N=S.parentNode;if (S==S.parentNode.firstChild){N.parentNode.insertBefore(N.removeChild(S),N);if (!N.firstChild) N.parentNode.removeChild(N);}else if (S==S.parentNode.lastChild){N.parentNode.insertBefore(N.removeChild(S),N.nextSibling);if (!N.firstChild) N.parentNode.removeChild(N);}else FCKDomTools.BreakParent(S,S.parentNode,B);R.push(S);};if (FCKConfig.EnterMode.IEquals('br')){while (R.length){var S=R.shift();var W=true;if (S.nodeName.IEquals('div')){var M=FCKTools.GetElementDocument(S).createDocumentFragment();var Y=W&&S.previousSibling&&!FCKListsLib.BlockBoundaries[S.previousSibling.nodeName.toLowerCase()];if (W&&Y) M.appendChild(FCKTools.GetElementDocument(S).createElement('br'));var Z=S.nextSibling&&!FCKListsLib.BlockBoundaries[S.nextSibling.nodeName.toLowerCase()];while (S.firstChild) M.appendChild(S.removeChild(S.firstChild));if (Z) M.appendChild(FCKTools.GetElementDocument(S).createElement('br'));S.parentNode.replaceChild(M,S);W=false;}}}};B.MoveToBookmark(C);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;for (var i=0;i<A.Elements.length;i++){if (A.Elements[i].nodeName.IEquals('blockquote')) return 1;};return 0;}};
+var FCKCoreStyleCommand=function(A){this.Name='CoreStyle';this.StyleName='_FCK_'+A;this.IsActive=false;FCKStyles.AttachStyleStateChange(this.StyleName,this._OnStyleStateChange,this);};FCKCoreStyleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();if (this.IsActive) FCKStyles.RemoveStyle(this.StyleName);else FCKStyles.ApplyStyle(this.StyleName);FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0) return -1;return this.IsActive?1:0;},_OnStyleStateChange:function(A,B){this.IsActive=B;}};
 var FCKRemoveFormatCommand=function(){this.Name='RemoveFormat';};FCKRemoveFormatCommand.prototype={Execute:function(){FCKStyles.RemoveAll();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){return FCK.EditorWindow?0:-1;}};
-var FCKCommands=FCK.Commands={};FCKCommands.LoadedCommands={};FCKCommands.RegisterCommand=function(A,B){this.LoadedCommands[A]=B;};FCKCommands.GetCommand=function(A){var B=FCKCommands.LoadedCommands[A];if (B) return B;switch (A){case 'Bold':case 'Italic':case 'Underline':case 'StrikeThrough':case 'Subscript':case 'Superscript':B=new FCKCoreStyleCommand(A);break;case 'RemoveFormat':B=new FCKRemoveFormatCommand();break;case 'DocProps':B=new FCKDialogCommand('DocProps',FCKLang.DocProps,'dialog/fck_docprops.html',400,390,FCKCommands.GetFullPageState);break;case 'Templates':B=new FCKDialogCommand('Templates',FCKLang.DlgTemplatesTitle,'dialog/fck_template.html',380,450);break;case 'Link':B=new FCKDialogCommand('Link',FCKLang.DlgLnkWindowTitle,'dialog/fck_link.html',400,330);break;case 'Unlink':B=new FCKUnlinkCommand();break;case 'Anchor':B=new FCKDialogCommand('Anchor',FCKLang.DlgAnchorTitle,'dialog/fck_anchor.html',370,170);break;case 'AnchorDelete':B=new FCKAnchorDeleteCommand();break;case 'BulletedList':B=new FCKDialogCommand('BulletedList',FCKLang.BulletedListProp,'dialog/fck_listprop.html?UL',370,170);break;case 'NumberedList':B=new FCKDialogCommand('NumberedList',FCKLang.NumberedListProp,'dialog/fck_listprop.html?OL',370,170);break;case 'About':B=new FCKDialogCommand('About',FCKLang.About,'dialog/fck_about.html',400,330);break;case 'Find':B=new FCKDialogCommand('Find',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,250);break;case 'Replace':B=new FCKDialogCommand('Replace',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,250);break;case 'Image':B=new FCKDialogCommand('Image',FCKLang.DlgImgTitle,'dialog/fck_image.html',450,400);break;case 'Flash':B=new FCKDialogCommand('Flash',FCKLang.DlgFlashTitle,'dialog/fck_flash.html',450,400);break;case 'SpecialChar':B=new FCKDialogCommand('SpecialChar',FCKLang.DlgSpecialCharTitle,'dialog/fck_specialchar.html',400,320);break;case 'Smiley':B=new FCKDialogCommand('Smiley',FCKLang.DlgSmileyTitle,'dialog/fck_smiley.html',FCKConfig.SmileyWindowWidth,FCKConfig.SmileyWindowHeight);break;case 'Table':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html',480,250);break;case 'TableProp':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html?Parent',480,250);break;case 'TableCellProp':B=new FCKDialogCommand('TableCell',FCKLang.DlgCellTitle,'dialog/fck_tablecell.html',550,250);break;case 'Style':B=new FCKStyleCommand();break;case 'FontName':B=new FCKFontNameCommand();break;case 'FontSize':B=new FCKFontSizeCommand();break;case 'FontFormat':B=new FCKFormatBlockCommand();break;case 'Source':B=new FCKSourceCommand();break;case 'Preview':B=new FCKPreviewCommand();break;case 'Save':B=new FCKSaveCommand();break;case 'NewPage':B=new FCKNewPageCommand();break;case 'PageBreak':B=new FCKPageBreakCommand();break;case 'Rule':B=new FCKRuleCommand();break;case 'TextColor':B=new FCKTextColorCommand('ForeColor');break;case 'BGColor':B=new FCKTextColorCommand('BackColor');break;case 'Paste':B=new FCKPasteCommand();break;case 'PasteText':B=new FCKPastePlainTextCommand();break;case 'PasteWord':B=new FCKPasteWordCommand();break;case 'JustifyLeft':B=new FCKJustifyCommand('left');break;case 'JustifyCenter':B=new FCKJustifyCommand('center');break;case 'JustifyRight':B=new FCKJustifyCommand('right');break;case 'JustifyFull':B=new FCKJustifyCommand('justify');break;case 'Indent':B=new FCKIndentCommand('indent',FCKConfig.IndentLength);break;case 'Outdent':B=new FCKIndentCommand('outdent',FCKConfig.IndentLength*-1);break;case 'Blockquote':B=new FCKBlockQuoteCommand();break;case 'TableInsertRowAfter':B=new FCKTableCommand('TableInsertRowAfter');break;case 'TableInsertRowBefore':B=new FCKTableCommand('TableInsertRowBefore');break;case 'TableDeleteRows':B=new FCKTableCommand('TableDeleteRows');break;case 'TableInsertColumnAfter':B=new FCKTableCommand('TableInsertColumnAfter');break;case 'TableInsertColumnBefore':B=new FCKTableCommand('TableInsertColumnBefore');break;case 'TableDeleteColumns':B=new FCKTableCommand('TableDeleteColumns');break;case 'TableInsertCellAfter':B=new FCKTableCommand('TableInsertCellAfter');break;case 'TableInsertCellBefore':B=new FCKTableCommand('TableInsertCellBefore');break;case 'TableDeleteCells':B=new FCKTableCommand('TableDeleteCells');break;case 'TableMergeCells':B=new FCKTableCommand('TableMergeCells');break;case 'TableMergeRight':B=new FCKTableCommand('TableMergeRight');break;case 'TableMergeDown':B=new FCKTableCommand('TableMergeDown');break;case 'TableHorizontalSplitCell':B=new FCKTableCommand('TableHorizontalSplitCell');break;case 'TableVerticalSplitCell':B=new FCKTableCommand('TableVerticalSplitCell');break;case 'TableDelete':B=new FCKTableCommand('TableDelete');break;case 'Form':B=new FCKDialogCommand('Form',FCKLang.Form,'dialog/fck_form.html',380,230);break;case 'Checkbox':B=new FCKDialogCommand('Checkbox',FCKLang.Checkbox,'dialog/fck_checkbox.html',380,230);break;case 'Radio':B=new FCKDialogCommand('Radio',FCKLang.RadioButton,'dialog/fck_radiobutton.html',380,230);break;case 'TextField':B=new FCKDialogCommand('TextField',FCKLang.TextField,'dialog/fck_textfield.html',380,230);break;case 'Textarea':B=new FCKDialogCommand('Textarea',FCKLang.Textarea,'dialog/fck_textarea.html',380,230);break;case 'HiddenField':B=new FCKDialogCommand('HiddenField',FCKLang.HiddenField,'dialog/fck_hiddenfield.html',380,230);break;case 'Button':B=new FCKDialogCommand('Button',FCKLang.Button,'dialog/fck_button.html',380,230);break;case 'Select':B=new FCKDialogCommand('Select',FCKLang.SelectionField,'dialog/fck_select.html',400,380);break;case 'ImageButton':B=new FCKDialogCommand('ImageButton',FCKLang.ImageButton,'dialog/fck_image.html?ImageButton',450,400);break;case 'SpellCheck':B=new FCKSpellCheckCommand();break;case 'FitWindow':B=new FCKFitWindow();break;case 'Undo':B=new FCKUndoCommand();break;case 'Redo':B=new FCKRedoCommand();break;case 'Copy':B=new FCKCopyCommand();break;case 'SelectAll':B=new FCKSelectAllCommand();break;case 'InsertOrderedList':B=new FCKListCommand('insertorderedlist','ol');break;case 'InsertUnorderedList':B=new FCKListCommand('insertunorderedlist','ul');break;case 'ShowBlocks':B=new FCKShowBlockCommand('ShowBlocks',FCKConfig.StartupShowBlocks?1:0);break;case 'Undefined':B=new FCKUndefinedCommand();break;default:if (FCKRegexLib.NamedCommands.test(A)) B=new FCKNamedCommand(A);else{alert(FCKLang.UnknownCommand.replace(/%1/g,A));return null;}};FCKCommands.LoadedCommands[A]=B;return B;};FCKCommands.GetFullPageState=function(){return FCKConfig.FullPage?0:-1;};FCKCommands.GetBooleanState=function(A){return A?-1:0;};
-var FCKPanel=function(A){this.IsRTL=(FCKLang.Dir=='rtl');this.IsContextMenu=false;this._LockCounter=0;this._Window=A||window;var B;if (FCKBrowserInfo.IsIE){this._Popup=this._Window.createPopup();B=this.Document=this._Popup.document;FCK.IECleanup.AddItem(this,FCKPanel_Cleanup);}else{var C=this._IFrame=this._Window.document.createElement('iframe');C.src='javascript:void(0)';C.allowTransparency=true;C.frameBorder='0';C.scrolling='no';C.width=C.height=0;FCKDomTools.SetElementStyles(C,{position:'absolute',zIndex:FCKConfig.FloatingPanelsZIndex});if (this._Window==window.parent&&window.frameElement){var D=null;if (FCKBrowserInfo.IsGecko&&FCK&&FCK.EditorDocument) D=[FCK.EditorDocument.body.scrollLeft,FCK.EditorDocument.body.scrollTop];window.frameElement.parentNode.insertBefore(C,window.frameElement);if (D){var E=function(){FCK.EditorDocument.body.scrollLeft=D[0];FCK.EditorDocument.body.scrollTop=D[1];};setTimeout(E,500);}}else this._Window.document.body.appendChild(C);var F=C.contentWindow;B=this.Document=F.document;var G='';if (FCKBrowserInfo.IsSafari) G='<base href="'+window.document.location+'">';B.open();B.write('<html><head>'+G+'<\/head><body style="margin:0px;padding:0px;"><\/body><\/html>');B.close();FCKTools.AddEventListenerEx(F,'focus',FCKPanel_Window_OnFocus,this);FCKTools.AddEventListenerEx(F,'blur',FCKPanel_Window_OnBlur,this);};B.dir=FCKLang.Dir;FCKTools.AddEventListener(B,'contextmenu',FCKTools.CancelEvent);this.MainNode=B.body.appendChild(B.createElement('DIV'));this.MainNode.style.cssFloat=this.IsRTL?'right':'left';};FCKPanel.prototype.AppendStyleSheet=function(A){FCKTools.AppendStyleSheet(this.Document,A);};FCKPanel.prototype.Preload=function(x,y,A){if (this._Popup) this._Popup.show(x,y,0,0,A);};FCKPanel.prototype.Show=function(x,y,A,B,C){var D;var E=this.MainNode;if (this._Popup){this._Popup.show(x,y,0,0,A);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=(x*-1)+A.offsetWidth-D;};this._Popup.show(x,y,D,E.offsetHeight,A);if (this.OnHide){if (this._Timer) CheckPopupOnHide.call(this,true);this._Timer=FCKTools.SetInterval(CheckPopupOnHide,100,this);}}else{if (typeof(FCK.ToolbarSet.CurrentInstance.FocusManager)!='undefined') FCK.ToolbarSet.CurrentInstance.FocusManager.Lock();if (this.ParentPanel){this.ParentPanel.Lock();FCKPanel_Window_OnBlur(null,this.ParentPanel);};if (FCKPanel._OpenedPanel) FCKPanel._OpenedPanel.Hide();FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (!B)	this._IFrame.width=1;if (!C)	this._IFrame.height=1;D=E.offsetWidth||E.firstChild.offsetWidth;var F=FCKTools.GetDocumentPosition(this._Window,A.nodeType==9?(FCKTools.IsStrictMode(A)?A.documentElement:A.body):A);var G=FCKDomTools.GetPositionedAncestor(FCKTools.GetElementWindow(this._IFrame),this._IFrame.parentNode);if (G){var H=FCKTools.GetDocumentPosition(FCKTools.GetElementWindow(G),G);F.x-=H.x;F.y-=H.y;};if (this.IsRTL&&!this.IsContextMenu) x=(x*-1);x+=F.x;y+=F.y;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=x+A.offsetWidth-D;}else{var I=FCKTools.GetViewPaneSize(this._Window);var J=FCKTools.GetScrollPosition(this._Window);var K=I.Height+J.Y;var L=I.Width+J.X;if ((x+D)>L) x-=x+D-L;if ((y+E.offsetHeight)>K) y-=y+E.offsetHeight-K;};if (x<0) x=0;FCKDomTools.SetElementStyles(this._IFrame,{left:x+'px',top:y+'px'});var M=D;var N=E.offsetHeight;this._IFrame.width=M;this._IFrame.height=N;this._IFrame.contentWindow.focus();FCKPanel._OpenedPanel=this;};this._IsOpened=true;FCKTools.RunFunction(this.OnShow,this);};FCKPanel.prototype.Hide=function(A){if (this._Popup) this._Popup.hide();else{if (!this._IsOpened||this._LockCounter>0) return;if (typeof(FCKFocusManager)!='undefined') FCKFocusManager.Unlock();this._IFrame.width=this._IFrame.height=0;this._IsOpened=false;if (this.ParentPanel) this.ParentPanel.Unlock();if (!A) FCKTools.RunFunction(this.OnHide,this);}};FCKPanel.prototype.CheckIsOpened=function(){if (this._Popup) return this._Popup.isOpen;else return this._IsOpened;};FCKPanel.prototype.CreateChildPanel=function(){var A=this._Popup?FCKTools.GetDocumentWindow(this.Document):this._Window;var B=new FCKPanel(A);B.ParentPanel=this;return B;};FCKPanel.prototype.Lock=function(){this._LockCounter++;};FCKPanel.prototype.Unlock=function(){if (--this._LockCounter==0&&!this.HasFocus) this.Hide();};function FCKPanel_Window_OnFocus(e,A){A.HasFocus=true;};function FCKPanel_Window_OnBlur(e,A){A.HasFocus=false;if (A._LockCounter==0) FCKTools.RunFunction(A.Hide,A);};function CheckPopupOnHide(A){if (A||!this._Popup.isOpen){window.clearInterval(this._Timer);this._Timer=null;FCKTools.RunFunction(this.OnHide,this);}};function FCKPanel_Cleanup(){this._Popup=null;this._Window=null;this.Document=null;this.MainNode=null;};
-var FCKIcon=function(A){var B=A?typeof(A):'undefined';switch (B){case 'number':this.Path=FCKConfig.SkinPath+'fck_strip.gif';this.Size=16;this.Position=A;break;case 'undefined':this.Path=FCK_SPACER_PATH;break;case 'string':this.Path=A;break;default:this.Path=A[0];this.Size=A[1];this.Position=A[2];}};FCKIcon.prototype.CreateIconElement=function(A){var B,eIconImage;if (this.Position){var C='-'+((this.Position-1)*this.Size)+'px';if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path;eIconImage.style.top=C;}else{B=A.createElement('IMG');B.src=FCK_SPACER_PATH;B.style.backgroundPosition='0px '+C;B.style.backgroundImage='url("'+this.Path+'")';}}else{if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path?this.Path:FCK_SPACER_PATH;}else{B=A.createElement('IMG');B.src=this.Path?this.Path:FCK_SPACER_PATH;}};B.className='TB_Button_Image';return B;}
+var FCKCommands=FCK.Commands={};FCKCommands.LoadedCommands={};FCKCommands.RegisterCommand=function(A,B){this.LoadedCommands[A]=B;};FCKCommands.GetCommand=function(A){var B=FCKCommands.LoadedCommands[A];if (B) return B;switch (A){case 'Bold':case 'Italic':case 'Underline':case 'StrikeThrough':case 'Subscript':case 'Superscript':B=new FCKCoreStyleCommand(A);break;case 'RemoveFormat':B=new FCKRemoveFormatCommand();break;case 'DocProps':B=new FCKDialogCommand('DocProps',FCKLang.DocProps,'dialog/fck_docprops.html',400,380,FCKCommands.GetFullPageState);break;case 'Templates':B=new FCKDialogCommand('Templates',FCKLang.DlgTemplatesTitle,'dialog/fck_template.html',380,450);break;case 'Link':B=new FCKDialogCommand('Link',FCKLang.DlgLnkWindowTitle,'dialog/fck_link.html',400,300);break;case 'Unlink':B=new FCKUnlinkCommand();break;case 'Anchor':B=new FCKDialogCommand('Anchor',FCKLang.DlgAnchorTitle,'dialog/fck_anchor.html',370,160);break;case 'AnchorDelete':B=new FCKAnchorDeleteCommand();break;case 'BulletedList':B=new FCKDialogCommand('BulletedList',FCKLang.BulletedListProp,'dialog/fck_listprop.html?UL',370,160);break;case 'NumberedList':B=new FCKDialogCommand('NumberedList',FCKLang.NumberedListProp,'dialog/fck_listprop.html?OL',370,160);break;case 'About':B=new FCKDialogCommand('About',FCKLang.About,'dialog/fck_about.html',420,330,function(){ return 0;});break;case 'Find':B=new FCKDialogCommand('Find',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,230,null,null,'Find');break;case 'Replace':B=new FCKDialogCommand('Replace',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,230,null,null,'Replace');break;case 'Image':B=new FCKDialogCommand('Image',FCKLang.DlgImgTitle,'dialog/fck_image.html',450,390);break;case 'Flash':B=new FCKDialogCommand('Flash',FCKLang.DlgFlashTitle,'dialog/fck_flash.html',450,390);break;case 'SpecialChar':B=new FCKDialogCommand('SpecialChar',FCKLang.DlgSpecialCharTitle,'dialog/fck_specialchar.html',400,290);break;case 'Smiley':B=new FCKDialogCommand('Smiley',FCKLang.DlgSmileyTitle,'dialog/fck_smiley.html',FCKConfig.SmileyWindowWidth,FCKConfig.SmileyWindowHeight);break;case 'Table':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html',480,250);break;case 'TableProp':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html?Parent',480,250);break;case 'TableCellProp':B=new FCKDialogCommand('TableCell',FCKLang.DlgCellTitle,'dialog/fck_tablecell.html',550,240);break;case 'Style':B=new FCKStyleCommand();break;case 'FontName':B=new FCKFontNameCommand();break;case 'FontSize':B=new FCKFontSizeCommand();break;case 'FontFormat':B=new FCKFormatBlockCommand();break;case 'Source':B=new FCKSourceCommand();break;case 'Preview':B=new FCKPreviewCommand();break;case 'Save':B=new FCKSaveCommand();break;case 'NewPage':B=new FCKNewPageCommand();break;case 'PageBreak':B=new FCKPageBreakCommand();break;case 'Rule':B=new FCKRuleCommand();break;case 'TextColor':B=new FCKTextColorCommand('ForeColor');break;case 'BGColor':B=new FCKTextColorCommand('BackColor');break;case 'Paste':B=new FCKPasteCommand();break;case 'PasteText':B=new FCKPastePlainTextCommand();break;case 'PasteWord':B=new FCKPasteWordCommand();break;case 'JustifyLeft':B=new FCKJustifyCommand('left');break;case 'JustifyCenter':B=new FCKJustifyCommand('center');break;case 'JustifyRight':B=new FCKJustifyCommand('right');break;case 'JustifyFull':B=new FCKJustifyCommand('justify');break;case 'Indent':B=new FCKIndentCommand('indent',FCKConfig.IndentLength);break;case 'Outdent':B=new FCKIndentCommand('outdent',FCKConfig.IndentLength*-1);break;case 'Blockquote':B=new FCKBlockQuoteCommand();break;case 'TableInsertRowAfter':B=new FCKTableCommand('TableInsertRowAfter');break;case 'TableInsertRowBefore':B=new FCKTableCommand('TableInsertRowBefore');break;case 'TableDeleteRows':B=new FCKTableCommand('TableDeleteRows');break;case 'TableInsertColumnAfter':B=new FCKTableCommand('TableInsertColumnAfter');break;case 'TableInsertColumnBefore':B=new FCKTableCommand('TableInsertColumnBefore');break;case 'TableDeleteColumns':B=new FCKTableCommand('TableDeleteColumns');break;case 'TableInsertCellAfter':B=new FCKTableCommand('TableInsertCellAfter');break;case 'TableInsertCellBefore':B=new FCKTableCommand('TableInsertCellBefore');break;case 'TableDeleteCells':B=new FCKTableCommand('TableDeleteCells');break;case 'TableMergeCells':B=new FCKTableCommand('TableMergeCells');break;case 'TableMergeRight':B=new FCKTableCommand('TableMergeRight');break;case 'TableMergeDown':B=new FCKTableCommand('TableMergeDown');break;case 'TableHorizontalSplitCell':B=new FCKTableCommand('TableHorizontalSplitCell');break;case 'TableVerticalSplitCell':B=new FCKTableCommand('TableVerticalSplitCell');break;case 'TableDelete':B=new FCKTableCommand('TableDelete');break;case 'Form':B=new FCKDialogCommand('Form',FCKLang.Form,'dialog/fck_form.html',380,210);break;case 'Checkbox':B=new FCKDialogCommand('Checkbox',FCKLang.Checkbox,'dialog/fck_checkbox.html',380,200);break;case 'Radio':B=new FCKDialogCommand('Radio',FCKLang.RadioButton,'dialog/fck_radiobutton.html',380,200);break;case 'TextField':B=new FCKDialogCommand('TextField',FCKLang.TextField,'dialog/fck_textfield.html',380,210);break;case 'Textarea':B=new FCKDialogCommand('Textarea',FCKLang.Textarea,'dialog/fck_textarea.html',380,210);break;case 'HiddenField':B=new FCKDialogCommand('HiddenField',FCKLang.HiddenField,'dialog/fck_hiddenfield.html',380,190);break;case 'Button':B=new FCKDialogCommand('Button',FCKLang.Button,'dialog/fck_button.html',380,210);break;case 'Select':B=new FCKDialogCommand('Select',FCKLang.SelectionField,'dialog/fck_select.html',400,340);break;case 'ImageButton':B=new FCKDialogCommand('ImageButton',FCKLang.ImageButton,'dialog/fck_image.html?ImageButton',450,390);break;case 'SpellCheck':B=new FCKSpellCheckCommand();break;case 'FitWindow':B=new FCKFitWindow();break;case 'Undo':B=new FCKUndoCommand();break;case 'Redo':B=new FCKRedoCommand();break;case 'Copy':B=new FCKCutCopyCommand(false);break;case 'Cut':B=new FCKCutCopyCommand(true);break;case 'SelectAll':B=new FCKSelectAllCommand();break;case 'InsertOrderedList':B=new FCKListCommand('insertorderedlist','ol');break;case 'InsertUnorderedList':B=new FCKListCommand('insertunorderedlist','ul');break;case 'ShowBlocks':B=new FCKShowBlockCommand('ShowBlocks',FCKConfig.StartupShowBlocks?1:0);break;case 'Undefined':B=new FCKUndefinedCommand();break;default:if (FCKRegexLib.NamedCommands.test(A)) B=new FCKNamedCommand(A);else{alert(FCKLang.UnknownCommand.replace(/%1/g,A));return null;}};FCKCommands.LoadedCommands[A]=B;return B;};FCKCommands.GetFullPageState=function(){return FCKConfig.FullPage?0:-1;};FCKCommands.GetBooleanState=function(A){return A?-1:0;};
+var FCKPanel=function(A){this.IsRTL=(FCKLang.Dir=='rtl');this.IsContextMenu=false;this._LockCounter=0;this._Window=A||window;var B;if (FCKBrowserInfo.IsIE){this._Popup=this._Window.createPopup();var C=this._Window.document;if (FCK_IS_CUSTOM_DOMAIN&&!FCKBrowserInfo.IsIE7){C.domain=FCK_ORIGINAL_DOMAIN;document.domain=FCK_ORIGINAL_DOMAIN;};B=this.Document=this._Popup.document;if (FCK_IS_CUSTOM_DOMAIN){B.domain=FCK_RUNTIME_DOMAIN;C.domain=FCK_RUNTIME_DOMAIN;document.domain=FCK_RUNTIME_DOMAIN;};FCK.IECleanup.AddItem(this,FCKPanel_Cleanup);}else{var D=this._IFrame=this._Window.document.createElement('iframe');D.src='javascript:void(0)';D.allowTransparency=true;D.frameBorder='0';D.scrolling='no';D.width=D.height=0;FCKDomTools.SetElementStyles(D,{position:'absolute',zIndex:FCKConfig.FloatingPanelsZIndex});this._Window.document.body.appendChild(D);var E=D.contentWindow;B=this.Document=E.document;var F='';if (FCKBrowserInfo.IsSafari) F='<base href="'+window.document.location+'">';B.open();B.write('<html><head>'+F+'<\/head><body style="margin:0px;padding:0px;"><\/body><\/html>');B.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.Panel_Contructor(B,window.document.location);FCKTools.AddEventListenerEx(E,'focus',FCKPanel_Window_OnFocus,this);FCKTools.AddEventListenerEx(E,'blur',FCKPanel_Window_OnBlur,this);};B.dir=FCKLang.Dir;FCKTools.AddEventListener(B,'contextmenu',FCKTools.CancelEvent);this.MainNode=B.body.appendChild(B.createElement('DIV'));this.MainNode.style.cssFloat=this.IsRTL?'right':'left';};FCKPanel.prototype.AppendStyleSheet=function(A){FCKTools.AppendStyleSheet(this.Document,A);};FCKPanel.prototype.Preload=function(x,y,A){if (this._Popup) this._Popup.show(x,y,0,0,A);};FCKPanel.prototype.Show=function(x,y,A,B,C){var D;var E=this.MainNode;if (this._Popup){this._Popup.show(x,y,0,0,A);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=(x*-1)+A.offsetWidth-D;};this._Popup.show(x,y,D,E.offsetHeight,A);if (this.OnHide){if (this._Timer) CheckPopupOnHide.call(this,true);this._Timer=FCKTools.SetInterval(CheckPopupOnHide,100,this);}}else{if (typeof(FCK.ToolbarSet.CurrentInstance.FocusManager)!='undefined') FCK.ToolbarSet.CurrentInstance.FocusManager.Lock();if (this.ParentPanel){this.ParentPanel.Lock();FCKPanel_Window_OnBlur(null,this.ParentPanel);};if (FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac){this._IFrame.scrolling='';FCKTools.RunFunction(function(){ this._IFrame.scrolling='no';},this);};if (FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel&&FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel!=this) FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel.Hide(false,true);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (!B)	this._IFrame.width=1;if (!C)	this._IFrame.height=1;D=E.offsetWidth||E.firstChild.offsetWidth;var F=FCKTools.GetDocumentPosition(this._Window,A.nodeType==9?(FCKTools.IsStrictMode(A)?A.documentElement:A.body):A);var G=FCKDomTools.GetPositionedAncestor(this._IFrame.parentNode);if (G){var H=FCKTools.GetDocumentPosition(FCKTools.GetElementWindow(G),G);F.x-=H.x;F.y-=H.y;};if (this.IsRTL&&!this.IsContextMenu) x=(x*-1);x+=F.x;y+=F.y;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=x+A.offsetWidth-D;}else{var I=FCKTools.GetViewPaneSize(this._Window);var J=FCKTools.GetScrollPosition(this._Window);var K=I.Height+J.Y;var L=I.Width+J.X;if ((x+D)>L) x-=x+D-L;if ((y+E.offsetHeight)>K) y-=y+E.offsetHeight-K;};FCKDomTools.SetElementStyles(this._IFrame,{left:x+'px',top:y+'px'});this._IFrame.contentWindow.focus();this._IsOpened=true;var M=this;this._resizeTimer=setTimeout(function(){var N=E.offsetWidth||E.firstChild.offsetWidth;var O=E.offsetHeight;M._IFrame.width=N;M._IFrame.height=O;},0);FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel=this;};FCKTools.RunFunction(this.OnShow,this);};FCKPanel.prototype.Hide=function(A,B){if (this._Popup) this._Popup.hide();else{if (!this._IsOpened||this._LockCounter>0) return;if (typeof(FCKFocusManager)!='undefined'&&!B) FCKFocusManager.Unlock();this._IFrame.width=this._IFrame.height=0;this._IsOpened=false;if (this._resizeTimer){clearTimeout(this._resizeTimer);this._resizeTimer=null;};if (this.ParentPanel) this.ParentPanel.Unlock();if (!A) FCKTools.RunFunction(this.OnHide,this);}};FCKPanel.prototype.CheckIsOpened=function(){if (this._Popup) return this._Popup.isOpen;else return this._IsOpened;};FCKPanel.prototype.CreateChildPanel=function(){var A=this._Popup?FCKTools.GetDocumentWindow(this.Document):this._Window;var B=new FCKPanel(A);B.ParentPanel=this;return B;};FCKPanel.prototype.Lock=function(){this._LockCounter++;};FCKPanel.prototype.Unlock=function(){if (--this._LockCounter==0&&!this.HasFocus) this.Hide();};function FCKPanel_Window_OnFocus(e,A){A.HasFocus=true;};function FCKPanel_Window_OnBlur(e,A){A.HasFocus=false;if (A._LockCounter==0) FCKTools.RunFunction(A.Hide,A);};function CheckPopupOnHide(A){if (A||!this._Popup.isOpen){window.clearInterval(this._Timer);this._Timer=null;FCKTools.RunFunction(this.OnHide,this);}};function FCKPanel_Cleanup(){this._Popup=null;this._Window=null;this.Document=null;this.MainNode=null;};
+var FCKIcon=function(A){var B=A?typeof(A):'undefined';switch (B){case 'number':this.Path=FCKConfig.SkinPath+'fck_strip.gif';this.Size=16;this.Position=A;break;case 'undefined':this.Path=FCK_SPACER_PATH;break;case 'string':this.Path=A;break;default:this.Path=A[0];this.Size=A[1];this.Position=A[2];}};FCKIcon.prototype.CreateIconElement=function(A){var B,eIconImage;if (this.Position){var C='-'+((this.Position-1)*this.Size)+'px';if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path;eIconImage.style.top=C;}else{B=A.createElement('IMG');B.src=FCK_SPACER_PATH;B.style.backgroundPosition='0px '+C;B.style.backgroundImage='url("'+this.Path+'")';}}else{if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path?this.Path:FCK_SPACER_PATH;}else{B=A.createElement('IMG');B.src=this.Path?this.Path:FCK_SPACER_PATH;}};B.className='TB_Button_Image';return B;};
 var FCKToolbarButtonUI=function(A,B,C,D,E,F){this.Name=A;this.Label=B||A;this.Tooltip=C||this.Label;this.Style=E||0;this.State=F||0;this.Icon=new FCKIcon(D);if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarButtonUI_Cleanup);};FCKToolbarButtonUI.prototype._CreatePaddingElement=function(A){var B=A.createElement('IMG');B.className='TB_Button_Padding';B.src=FCK_SPACER_PATH;return B;};FCKToolbarButtonUI.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this.MainElement=B.createElement('DIV');C.title=this.Tooltip;if (FCKBrowserInfo.IsGecko) C.onmousedown=FCKTools.CancelEvent;FCKTools.AddEventListenerEx(C,'mouseover',FCKToolbarButtonUI_OnMouseOver,this);FCKTools.AddEventListenerEx(C,'mouseout',FCKToolbarButtonUI_OnMouseOut,this);FCKTools.AddEventListenerEx(C,'click',FCKToolbarButtonUI_OnClick,this);this.ChangeState(this.State,true);if (this.Style==0&&!this.ShowArrow){C.appendChild(this.Icon.CreateIconElement(B));}else{var D=C.appendChild(B.createElement('TABLE'));D.cellPadding=0;D.cellSpacing=0;var E=D.insertRow(-1);var F=E.insertCell(-1);if (this.Style==0||this.Style==2) F.appendChild(this.Icon.CreateIconElement(B));else F.appendChild(this._CreatePaddingElement(B));if (this.Style==1||this.Style==2){F=E.insertCell(-1);F.className='TB_Button_Text';F.noWrap=true;F.appendChild(B.createTextNode(this.Label));};if (this.ShowArrow){if (this.Style!=0){E.insertCell(-1).appendChild(this._CreatePaddingElement(B));};F=E.insertCell(-1);var G=F.appendChild(B.createElement('IMG'));G.src=FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif';G.width=5;G.height=3;};F=E.insertCell(-1);F.appendChild(this._CreatePaddingElement(B));};A.appendChild(C);};FCKToolbarButtonUI.prototype.ChangeState=function(A,B){if (!B&&this.State==A) return;var e=this.MainElement;if (!e) return;switch (parseInt(A,10)){case 0:e.className='TB_Button_Off';break;case 1:e.className='TB_Button_On';break;case -1:e.className='TB_Button_Disabled';break;};this.State=A;};function FCKToolbarButtonUI_OnMouseOver(A,B){if (B.State==0) this.className='TB_Button_Off_Over';else if (B.State==1) this.className='TB_Button_On_Over';};function FCKToolbarButtonUI_OnMouseOut(A,B){if (B.State==0) this.className='TB_Button_Off';else if (B.State==1) this.className='TB_Button_On';};function FCKToolbarButtonUI_OnClick(A,B){if (B.OnClick&&B.State!=-1) B.OnClick(B);};function FCKToolbarButtonUI_Cleanup(){this.MainElement=null;};
-var FCKToolbarButton=function(A,B,C,D,E,F,G){this.CommandName=A;this.Label=B;this.Tooltip=C;this.Style=D;this.SourceView=E?true:false;this.ContextSensitive=F?true:false;if (G==null) this.IconPath=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(G)=='number') this.IconPath=[FCKConfig.SkinPath+'fck_strip.gif',16,G];else this.IconPath=G;};FCKToolbarButton.prototype.Create=function(A){this._UIButton=new FCKToolbarButtonUI(this.CommandName,this.Label,this.Tooltip,this.IconPath,this.Style);this._UIButton.OnClick=this.Click;this._UIButton._ToolbarButton=this;this._UIButton.Create(A);};FCKToolbarButton.prototype.RefreshState=function(){var A=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (A==this._UIButton.State) return;this._UIButton.ChangeState(A);};FCKToolbarButton.prototype.Click=function(){var A=this._ToolbarButton||this;FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(A.CommandName).Execute();};FCKToolbarButton.prototype.Enable=function(){this.RefreshState();};FCKToolbarButton.prototype.Disable=function(){this._UIButton.ChangeState(-1);}
-var FCKSpecialCombo=function(A,B,C,D,E){this.FieldWidth=B||100;this.PanelWidth=C||150;this.PanelMaxHeight=D||150;this.Label='&nbsp;';this.Caption=A;this.Tooltip=A;this.Style=2;this.Enabled=true;this.Items={};this._Panel=new FCKPanel(E||window);this._Panel.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');this._PanelBox=this._Panel.MainNode.appendChild(this._Panel.Document.createElement('DIV'));this._PanelBox.className='SC_Panel';this._PanelBox.style.width=this.PanelWidth+'px';this._PanelBox.innerHTML='<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>';this._ItemsHolderEl=this._PanelBox.getElementsByTagName('TD')[0];if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKSpecialCombo_Cleanup);};function FCKSpecialCombo_ItemOnMouseOver(){this.className+=' SC_ItemOver';};function FCKSpecialCombo_ItemOnMouseOut(){this.className=this.originalClass;};function FCKSpecialCombo_ItemOnClick(A,B,C){this.className=this.originalClass;B._Panel.Hide();B.SetLabel(this.FCKItemLabel);if (typeof(B.OnSelect)=='function') B.OnSelect(C,this);};FCKSpecialCombo.prototype.ClearItems=function (){if (this.Items) this.Items={};var A=this._ItemsHolderEl;while (A.firstChild) A.removeChild(A.firstChild);};FCKSpecialCombo.prototype.AddItem=function(A,B,C,D){var E=this._ItemsHolderEl.appendChild(this._Panel.Document.createElement('DIV'));E.className=E.originalClass='SC_Item';E.innerHTML=B;E.FCKItemLabel=C||A;E.Selected=false;if (FCKBrowserInfo.IsIE) E.style.width='100%';if (D) E.style.backgroundColor=D;FCKTools.AddEventListenerEx(E,'mouseover',FCKSpecialCombo_ItemOnMouseOver);FCKTools.AddEventListenerEx(E,'mouseout',FCKSpecialCombo_ItemOnMouseOut);FCKTools.AddEventListenerEx(E,'click',FCKSpecialCombo_ItemOnClick,[this,A]);this.Items[A.toString().toLowerCase()]=E;return E;};FCKSpecialCombo.prototype.SelectItem=function(A){if (typeof A=='string') A=this.Items[A.toString().toLowerCase()];if (A){A.className=A.originalClass='SC_ItemSelected';A.Selected=true;}};FCKSpecialCombo.prototype.SelectItemByLabel=function(A,B){for (var C in this.Items){var D=this.Items[C];if (D.FCKItemLabel==A){D.className=D.originalClass='SC_ItemSelected';D.Selected=true;if (B) this.SetLabel(A);}}};FCKSpecialCombo.prototype.DeselectAll=function(A){for (var i in this.Items){if (!this.Items[i]) continue;this.Items[i].className=this.Items[i].originalClass='SC_Item';this.Items[i].Selected=false;};if (A) this.SetLabel('');};FCKSpecialCombo.prototype.SetLabelById=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];this.SetLabel(B?B.FCKItemLabel:'');};FCKSpecialCombo.prototype.SetLabel=function(A){A=(!A||A.length==0)?'&nbsp;':A;if (A==this.Label) return;this.Label=A;var B=this._LabelEl;if (B){B.innerHTML=A;FCKTools.DisableSelection(B);}};FCKSpecialCombo.prototype.SetEnabled=function(A){this.Enabled=A;if (this._OuterTable) this._OuterTable.className=A?'':'SC_FieldDisabled';};FCKSpecialCombo.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this._OuterTable=A.appendChild(B.createElement('TABLE'));C.cellPadding=0;C.cellSpacing=0;C.insertRow(-1);var D;var E;switch (this.Style){case 0:D='TB_ButtonType_Icon';E=false;break;case 1:D='TB_ButtonType_Text';E=false;break;case 2:E=true;break;};if (this.Caption&&this.Caption.length>0&&E){var F=C.rows[0].insertCell(-1);F.innerHTML=this.Caption;F.className='SC_FieldCaption';};var G=FCKTools.AppendElement(C.rows[0].insertCell(-1),'div');if (E){G.className='SC_Field';G.style.width=this.FieldWidth+'px';G.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldLabel"><label>&nbsp;</label></td><td class="SC_FieldButton">&nbsp;</td></tr></tbody></table>';this._LabelEl=G.getElementsByTagName('label')[0];this._LabelEl.innerHTML=this.Label;}else{G.className='TB_Button_Off';G.innerHTML='<table title="'+this.Tooltip+'" class="'+D+'" cellspacing="0" cellpadding="0" border="0"><tr><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td><td class="TB_Text">'+this.Caption+'</td><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td><td class="TB_ButtonArrow"><img src="'+FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif" width="5" height="3"></td><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td></tr></table>';};FCKTools.AddEventListenerEx(G,'mouseover',FCKSpecialCombo_OnMouseOver,this);FCKTools.AddEventListenerEx(G,'mouseout',FCKSpecialCombo_OnMouseOut,this);FCKTools.AddEventListenerEx(G,'click',FCKSpecialCombo_OnClick,this);FCKTools.DisableSelection(this._Panel.Document.body);};function FCKSpecialCombo_Cleanup(){this._LabelEl=null;this._OuterTable=null;this._ItemsHolderEl=null;this._PanelBox=null;if (this.Items){for (var A in this.Items) this.Items[A]=null;}};function FCKSpecialCombo_OnMouseOver(A,B){if (B.Enabled){switch (B.Style){case 0:this.className='TB_Button_On_Over';break;case 1:this.className='TB_Button_On_Over';break;case 2:this.className='SC_Field SC_FieldOver';break;}}};function FCKSpecialCombo_OnMouseOut(A,B){switch (B.Style){case 0:this.className='TB_Button_Off';break;case 1:this.className='TB_Button_Off';break;case 2:this.className='SC_Field';break;}};function FCKSpecialCombo_OnClick(e,A){if (A.Enabled){var B=A._Panel;var C=A._PanelBox;var D=A._ItemsHolderEl;var E=A.PanelMaxHeight;if (A.OnBeforeClick) A.OnBeforeClick(A);if (FCKBrowserInfo.IsIE) B.Preload(0,this.offsetHeight,this);if (D.offsetHeight>E) C.style.height=E+'px';else C.style.height='';B.Show(0,this.offsetHeight,this);}};
-var FCKToolbarSpecialCombo=function(){this.SourceView=false;this.ContextSensitive=true;};FCKToolbarSpecialCombo.prototype.DefaultLabel='';function FCKToolbarSpecialCombo_OnSelect(A,B){FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).Execute(A,B);};FCKToolbarSpecialCombo.prototype.Create=function(A){this._Combo=new FCKSpecialCombo(this.GetLabel(),this.FieldWidth,this.PanelWidth,this.PanelMaxHeight,FCKBrowserInfo.IsIE?window:FCKTools.GetElementWindow(A).parent);this._Combo.Tooltip=this.Tooltip;this._Combo.Style=this.Style;this.CreateItems(this._Combo);this._Combo.Create(A);this._Combo.CommandName=this.CommandName;this._Combo.OnSelect=FCKToolbarSpecialCombo_OnSelect;};function FCKToolbarSpecialCombo_RefreshActiveItems(A,B){A.DeselectAll();A.SelectItem(B);A.SetLabelById(B);};FCKToolbarSpecialCombo.prototype.RefreshState=function(){var A;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B!=-1){A=1;if (this.RefreshActiveItems) this.RefreshActiveItems(this._Combo,B);else{if (this._LastValue!==B){this._LastValue=B;if (!B||B.length==0){this._Combo.DeselectAll();this._Combo.SetLabel(this.DefaultLabel);}else FCKToolbarSpecialCombo_RefreshActiveItems(this._Combo,B);}}}else A=-1;if (A==this.State) return;if (A==-1){this._Combo.DeselectAll();this._Combo.SetLabel('');};this.State=A;this._Combo.SetEnabled(A!=-1);};FCKToolbarSpecialCombo.prototype.Enable=function(){this.RefreshState();};FCKToolbarSpecialCombo.prototype.Disable=function(){this.State=-1;this._Combo.DeselectAll();this._Combo.SetLabel('');this._Combo.SetEnabled(false);};
-var FCKToolbarStyleCombo=function(A,B){if (A===false) return;this.CommandName='Style';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultStyleLabel||'';};FCKToolbarStyleCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarStyleCombo.prototype.GetLabel=function(){return FCKLang.Style;};FCKToolbarStyleCombo.prototype.GetStyles=function(){var A={};var B=FCK.ToolbarSet.CurrentInstance.Styles.GetStyles();for (var C in B){var D=B[C];if (!D.IsCore) A[C]=D;};return A;};FCKToolbarStyleCombo.prototype.CreateItems=function(A){var B=A._Panel.Document;FCKTools.AppendStyleSheet(B,FCKConfig.ToolbarComboPreviewCSS);FCKTools.AppendStyleString(B,FCKConfig.EditorAreaStyles);B.body.className+=' ForceBaseFont';FCKConfig.ApplyBodyAttributes(B.body);var C=this.GetStyles();for (var D in C){var E=C[D];var F=E.GetType()==2?D:FCKToolbarStyleCombo_BuildPreview(E,E.Label||D);var G=A.AddItem(D,F);G.Style=E;};A.OnBeforeClick=this.StyleCombo_OnBeforeClick;};FCKToolbarStyleCombo.prototype.RefreshActiveItems=function(A){var B=FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);var D=C.Elements;for (var e=0;e<D.length;e++){for (var i in A.Items){var E=A.Items[i];var F=E.Style;if (F.CheckElementRemovable(D[e],true)){A.SetLabel(F.Label||F.Name);return;}}}};A.SetLabel(this.DefaultLabel);};FCKToolbarStyleCombo.prototype.StyleCombo_OnBeforeClick=function(A){A.DeselectAll();var B;var C;var D;var E=FCK.ToolbarSet.CurrentInstance.Selection;if (E.GetType()=='Control'){B=E.GetSelectedElement();D=B.nodeName.toLowerCase();}else{B=E.GetBoundaryParentElement(true);C=new FCKElementPath(B);};for (var i in A.Items){var F=A.Items[i];var G=F.Style;if ((D&&G.Element==D)||(!D&&G.GetType()!=2)){F.style.display='';if ((C&&G.CheckActive(C))||(!C&&G.CheckElementRemovable(B,true))) A.SelectItem(G.Name);}else F.style.display='none';}};function FCKToolbarStyleCombo_BuildPreview(A,B){var C=A.GetType();var D=[];if (C==0) D.push('<div class="BaseFont">');var E=A.Element;if (E=='bdo') E='span';D=['<',E];var F=A._StyleDesc.Attributes;if (F){for (var G in F){D.push(' ',G,'="',A.GetFinalAttributeValue(G),'"');}};if (A._GetStyleText().length>0) D.push(' style="',A.GetFinalStyleValue(),'"');D.push('>',B,'</',E,'>');if (C==0) D.push('</div>');return D.join('');}
+var FCKToolbarButton=function(A,B,C,D,E,F,G){this.CommandName=A;this.Label=B;this.Tooltip=C;this.Style=D;this.SourceView=E?true:false;this.ContextSensitive=F?true:false;if (G==null) this.IconPath=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(G)=='number') this.IconPath=[FCKConfig.SkinPath+'fck_strip.gif',16,G];else this.IconPath=G;};FCKToolbarButton.prototype.Create=function(A){this._UIButton=new FCKToolbarButtonUI(this.CommandName,this.Label,this.Tooltip,this.IconPath,this.Style);this._UIButton.OnClick=this.Click;this._UIButton._ToolbarButton=this;this._UIButton.Create(A);};FCKToolbarButton.prototype.RefreshState=function(){var A=this._UIButton;if (!A) return;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B==A.State) return;A.ChangeState(B);};FCKToolbarButton.prototype.Click=function(){var A=this._ToolbarButton||this;FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(A.CommandName).Execute();};FCKToolbarButton.prototype.Enable=function(){this.RefreshState();};FCKToolbarButton.prototype.Disable=function(){this._UIButton.ChangeState(-1);};
+var FCKSpecialCombo=function(A,B,C,D,E){this.FieldWidth=B||100;this.PanelWidth=C||150;this.PanelMaxHeight=D||150;this.Label='&nbsp;';this.Caption=A;this.Tooltip=A;this.Style=2;this.Enabled=true;this.Items={};this._Panel=new FCKPanel(E||window);this._Panel.AppendStyleSheet(FCKConfig.SkinEditorCSS);this._PanelBox=this._Panel.MainNode.appendChild(this._Panel.Document.createElement('DIV'));this._PanelBox.className='SC_Panel';this._PanelBox.style.width=this.PanelWidth+'px';this._PanelBox.innerHTML='<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>';this._ItemsHolderEl=this._PanelBox.getElementsByTagName('TD')[0];if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKSpecialCombo_Cleanup);};function FCKSpecialCombo_ItemOnMouseOver(){this.className+=' SC_ItemOver';};function FCKSpecialCombo_ItemOnMouseOut(){this.className=this.originalClass;};function FCKSpecialCombo_ItemOnClick(A,B,C){this.className=this.originalClass;B._Panel.Hide();B.SetLabel(this.FCKItemLabel);if (typeof(B.OnSelect)=='function') B.OnSelect(C,this);};FCKSpecialCombo.prototype.ClearItems=function (){if (this.Items) this.Items={};var A=this._ItemsHolderEl;while (A.firstChild) A.removeChild(A.firstChild);};FCKSpecialCombo.prototype.AddItem=function(A,B,C,D){var E=this._ItemsHolderEl.appendChild(this._Panel.Document.createElement('DIV'));E.className=E.originalClass='SC_Item';E.innerHTML=B;E.FCKItemLabel=C||A;E.Selected=false;if (FCKBrowserInfo.IsIE) E.style.width='100%';if (D) E.style.backgroundColor=D;FCKTools.AddEventListenerEx(E,'mouseover',FCKSpecialCombo_ItemOnMouseOver);FCKTools.AddEventListenerEx(E,'mouseout',FCKSpecialCombo_ItemOnMouseOut);FCKTools.AddEventListenerEx(E,'click',FCKSpecialCombo_ItemOnClick,[this,A]);this.Items[A.toString().toLowerCase()]=E;return E;};FCKSpecialCombo.prototype.SelectItem=function(A){if (typeof A=='string') A=this.Items[A.toString().toLowerCase()];if (A){A.className=A.originalClass='SC_ItemSelected';A.Selected=true;}};FCKSpecialCombo.prototype.SelectItemByLabel=function(A,B){for (var C in this.Items){var D=this.Items[C];if (D.FCKItemLabel==A){D.className=D.originalClass='SC_ItemSelected';D.Selected=true;if (B) this.SetLabel(A);}}};FCKSpecialCombo.prototype.DeselectAll=function(A){for (var i in this.Items){if (!this.Items[i]) continue;this.Items[i].className=this.Items[i].originalClass='SC_Item';this.Items[i].Selected=false;};if (A) this.SetLabel('');};FCKSpecialCombo.prototype.SetLabelById=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];this.SetLabel(B?B.FCKItemLabel:'');};FCKSpecialCombo.prototype.SetLabel=function(A){A=(!A||A.length==0)?'&nbsp;':A;if (A==this.Label) return;this.Label=A;var B=this._LabelEl;if (B){B.innerHTML=A;FCKTools.DisableSelection(B);}};FCKSpecialCombo.prototype.SetEnabled=function(A){this.Enabled=A;if (this._OuterTable) this._OuterTable.className=A?'':'SC_FieldDisabled';};FCKSpecialCombo.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this._OuterTable=A.appendChild(B.createElement('TABLE'));C.cellPadding=0;C.cellSpacing=0;C.insertRow(-1);var D;var E;switch (this.Style){case 0:D='TB_ButtonType_Icon';E=false;break;case 1:D='TB_ButtonType_Text';E=false;break;case 2:E=true;break;};if (this.Caption&&this.Caption.length>0&&E){var F=C.rows[0].insertCell(-1);F.innerHTML=this.Caption;F.className='SC_FieldCaption';};var G=FCKTools.AppendElement(C.rows[0].insertCell(-1),'div');if (E){G.className='SC_Field';G.style.width=this.FieldWidth+'px';G.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldLabel"><label>&nbsp;</label></td><td class="SC_FieldButton">&nbsp;</td></tr></tbody></table>';this._LabelEl=G.getElementsByTagName('label')[0];this._LabelEl.innerHTML=this.Label;}else{G.className='TB_Button_Off';G.innerHTML='<table title="'+this.Tooltip+'" class="'+D+'" cellspacing="0" cellpadding="0" border="0"><tr><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td><td class="TB_Text">'+this.Caption+'</td><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td><td class="TB_ButtonArrow"><img src="'+FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif" width="5" height="3"></td><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td></tr></table>';};FCKTools.AddEventListenerEx(G,'mouseover',FCKSpecialCombo_OnMouseOver,this);FCKTools.AddEventListenerEx(G,'mouseout',FCKSpecialCombo_OnMouseOut,this);FCKTools.AddEventListenerEx(G,'click',FCKSpecialCombo_OnClick,this);FCKTools.DisableSelection(this._Panel.Document.body);};function FCKSpecialCombo_Cleanup(){this._LabelEl=null;this._OuterTable=null;this._ItemsHolderEl=null;this._PanelBox=null;if (this.Items){for (var A in this.Items) this.Items[A]=null;}};function FCKSpecialCombo_OnMouseOver(A,B){if (B.Enabled){switch (B.Style){case 0:this.className='TB_Button_On_Over';break;case 1:this.className='TB_Button_On_Over';break;case 2:this.className='SC_Field SC_FieldOver';break;}}};function FCKSpecialCombo_OnMouseOut(A,B){switch (B.Style){case 0:this.className='TB_Button_Off';break;case 1:this.className='TB_Button_Off';break;case 2:this.className='SC_Field';break;}};function FCKSpecialCombo_OnClick(e,A){if (A.Enabled){var B=A._Panel;var C=A._PanelBox;var D=A._ItemsHolderEl;var E=A.PanelMaxHeight;if (A.OnBeforeClick) A.OnBeforeClick(A);if (FCKBrowserInfo.IsIE) B.Preload(0,this.offsetHeight,this);if (D.offsetHeight>E) C.style.height=E+'px';else C.style.height='';B.Show(0,this.offsetHeight,this);}};
+var FCKToolbarSpecialCombo=function(){this.SourceView=false;this.ContextSensitive=true;this.FieldWidth=null;this.PanelWidth=null;this.PanelMaxHeight=null;};FCKToolbarSpecialCombo.prototype.DefaultLabel='';function FCKToolbarSpecialCombo_OnSelect(A,B){FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).Execute(A,B);};FCKToolbarSpecialCombo.prototype.Create=function(A){this._Combo=new FCKSpecialCombo(this.GetLabel(),this.FieldWidth,this.PanelWidth,this.PanelMaxHeight,FCKBrowserInfo.IsIE?window:FCKTools.GetElementWindow(A).parent);this._Combo.Tooltip=this.Tooltip;this._Combo.Style=this.Style;this.CreateItems(this._Combo);this._Combo.Create(A);this._Combo.CommandName=this.CommandName;this._Combo.OnSelect=FCKToolbarSpecialCombo_OnSelect;};function FCKToolbarSpecialCombo_RefreshActiveItems(A,B){A.DeselectAll();A.SelectItem(B);A.SetLabelById(B);};FCKToolbarSpecialCombo.prototype.RefreshState=function(){var A;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B!=-1){A=1;if (this.RefreshActiveItems) this.RefreshActiveItems(this._Combo,B);else{if (this._LastValue!==B){this._LastValue=B;if (!B||B.length==0){this._Combo.DeselectAll();this._Combo.SetLabel(this.DefaultLabel);}else FCKToolbarSpecialCombo_RefreshActiveItems(this._Combo,B);}}}else A=-1;if (A==this.State) return;if (A==-1){this._Combo.DeselectAll();this._Combo.SetLabel('');};this.State=A;this._Combo.SetEnabled(A!=-1);};FCKToolbarSpecialCombo.prototype.Enable=function(){this.RefreshState();};FCKToolbarSpecialCombo.prototype.Disable=function(){this.State=-1;this._Combo.DeselectAll();this._Combo.SetLabel('');this._Combo.SetEnabled(false);};
+var FCKToolbarStyleCombo=function(A,B){if (A===false) return;this.CommandName='Style';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultStyleLabel||'';};FCKToolbarStyleCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarStyleCombo.prototype.GetLabel=function(){return FCKLang.Style;};FCKToolbarStyleCombo.prototype.GetStyles=function(){var A={};var B=FCK.ToolbarSet.CurrentInstance.Styles.GetStyles();for (var C in B){var D=B[C];if (!D.IsCore) A[C]=D;};return A;};FCKToolbarStyleCombo.prototype.CreateItems=function(A){var B=A._Panel.Document;FCKTools.AppendStyleSheet(B,FCKConfig.ToolbarComboPreviewCSS);FCKTools.AppendStyleString(B,FCKConfig.EditorAreaStyles);B.body.className+=' ForceBaseFont';FCKConfig.ApplyBodyAttributes(B.body);var C=this.GetStyles();for (var D in C){var E=C[D];var F=E.GetType()==2?D:FCKToolbarStyleCombo_BuildPreview(E,E.Label||D);var G=A.AddItem(D,F);G.Style=E;};A.OnBeforeClick=this.StyleCombo_OnBeforeClick;};FCKToolbarStyleCombo.prototype.RefreshActiveItems=function(A){var B=FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);var D=C.Elements;for (var e=0;e<D.length;e++){for (var i in A.Items){var E=A.Items[i];var F=E.Style;if (F.CheckElementRemovable(D[e],true)){A.SetLabel(F.Label||F.Name);return;}}}};A.SetLabel(this.DefaultLabel);};FCKToolbarStyleCombo.prototype.StyleCombo_OnBeforeClick=function(A){A.DeselectAll();var B;var C;var D;var E=FCK.ToolbarSet.CurrentInstance.Selection;if (E.GetType()=='Control'){B=E.GetSelectedElement();D=B.nodeName.toLowerCase();}else{B=E.GetBoundaryParentElement(true);C=new FCKElementPath(B);};for (var i in A.Items){var F=A.Items[i];var G=F.Style;if ((D&&G.Element==D)||(!D&&G.GetType()!=2)){F.style.display='';if ((C&&G.CheckActive(C))||(!C&&G.CheckElementRemovable(B,true))) A.SelectItem(G.Name);}else F.style.display='none';}};function FCKToolbarStyleCombo_BuildPreview(A,B){var C=A.GetType();var D=[];if (C==0) D.push('<div class="BaseFont">');var E=A.Element;if (E=='bdo') E='span';D=['<',E];var F=A._StyleDesc.Attributes;if (F){for (var G in F){D.push(' ',G,'="',A.GetFinalAttributeValue(G),'"');}};if (A._GetStyleText().length>0) D.push(' style="',A.GetFinalStyleValue(),'"');D.push('>',B,'</',E,'>');if (C==0) D.push('</div>');return D.join('');};
 var FCKToolbarFontFormatCombo=function(A,B){if (A===false) return;this.CommandName='FontFormat';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.NormalLabel='Normal';this.PanelWidth=190;this.DefaultLabel=FCKConfig.DefaultFontFormatLabel||'';};FCKToolbarFontFormatCombo.prototype=new FCKToolbarStyleCombo(false);FCKToolbarFontFormatCombo.prototype.GetLabel=function(){return FCKLang.FontFormat;};FCKToolbarFontFormatCombo.prototype.GetStyles=function(){var A={};var B=FCKLang['FontFormats'].split(';');var C={p:B[0],pre:B[1],address:B[2],h1:B[3],h2:B[4],h3:B[5],h4:B[6],h5:B[7],h6:B[8],div:B[9]||(B[0]+' (DIV)')};var D=FCKConfig.FontFormats.split(';');for (var i=0;i<D.length;i++){var E=D[i];var F=FCKStyles.GetStyle('_FCK_'+E);if (F){F.Label=C[E];A['_FCK_'+E]=F;}else alert("The FCKConfig.CoreStyles['"+E+"'] setting was not found. Please check the fckconfig.js file");};return A;};FCKToolbarFontFormatCombo.prototype.RefreshActiveItems=function(A){var B=FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);var D=C.Block;if (D){for (var i in A.Items){var E=A.Items[i];var F=E.Style;if (F.CheckElementRemovable(D)){A.SetLabel(F.Label);return;}}}};A.SetLabel(this.DefaultLabel);};FCKToolbarFontFormatCombo.prototype.StyleCombo_OnBeforeClick=function(A){A.DeselectAll();var B=FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);var D=C.Block;for (var i in A.Items){var E=A.Items[i];var F=E.Style;if (F.CheckElementRemovable(D)){A.SelectItem(E);return;}}}};
 var FCKToolbarFontsCombo=function(A,B){this.CommandName='FontName';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultFontLabel||'';};FCKToolbarFontsCombo.prototype=new FCKToolbarFontFormatCombo(false);FCKToolbarFontsCombo.prototype.GetLabel=function(){return FCKLang.Font;};FCKToolbarFontsCombo.prototype.GetStyles=function(){var A=FCKStyles.GetStyle('_FCK_FontFace');if (!A){alert("The FCKConfig.CoreStyles['Size'] setting was not found. Please check the fckconfig.js file");return {};};var B={};var C=FCKConfig.FontNames.split(';');for (var i=0;i<C.length;i++){var D=C[i].split('/');var E=D[0];var F=D[1]||E;var G=FCKTools.CloneObject(A);G.SetVariable('Font',E);G.Label=F;B[F]=G;};return B;};FCKToolbarFontsCombo.prototype.RefreshActiveItems=FCKToolbarStyleCombo.prototype.RefreshActiveItems;FCKToolbarFontsCombo.prototype.StyleCombo_OnBeforeClick=function(A){A.DeselectAll();var B=FCKSelection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);for (var i in A.Items){var D=A.Items[i];var E=D.Style;if (E.CheckActive(C)){A.SelectItem(D);return;}}}};
 var FCKToolbarFontSizeCombo=function(A,B){this.CommandName='FontSize';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultFontSizeLabel||'';this.FieldWidth=70;};FCKToolbarFontSizeCombo.prototype=new FCKToolbarFontFormatCombo(false);FCKToolbarFontSizeCombo.prototype.GetLabel=function(){return FCKLang.FontSize;};FCKToolbarFontSizeCombo.prototype.GetStyles=function(){var A=FCKStyles.GetStyle('_FCK_Size');if (!A){alert("The FCKConfig.CoreStyles['FontFace'] setting was not found. Please check the fckconfig.js file");return {};};var B={};var C=FCKConfig.FontSizes.split(';');for (var i=0;i<C.length;i++){var D=C[i].split('/');var E=D[0];var F=D[1]||E;var G=FCKTools.CloneObject(A);G.SetVariable('Size',E);G.Label=F;B[F]=G;};return B;};FCKToolbarFontSizeCombo.prototype.RefreshActiveItems=FCKToolbarStyleCombo.prototype.RefreshActiveItems;FCKToolbarFontSizeCombo.prototype.StyleCombo_OnBeforeClick=FCKToolbarFontsCombo.prototype.StyleCombo_OnBeforeClick;
-var FCKToolbarPanelButton=function(A,B,C,D,E){this.CommandName=A;var F;if (E==null) F=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(E)=='number') F=[FCKConfig.SkinPath+'fck_strip.gif',16,E];var G=this._UIButton=new FCKToolbarButtonUI(A,B,C,F,D);G._FCKToolbarPanelButton=this;G.ShowArrow=true;G.OnClick=FCKToolbarPanelButton_OnButtonClick;};FCKToolbarPanelButton.prototype.TypeName='FCKToolbarPanelButton';FCKToolbarPanelButton.prototype.Create=function(A){A.className+='Menu';this._UIButton.Create(A);var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName)._Panel;B._FCKToolbarPanelButton=this;var C=B.Document.body.appendChild(B.Document.createElement('div'));C.style.position='absolute';C.style.top='0px';var D=this.LineImg=C.appendChild(B.Document.createElement('IMG'));D.className='TB_ConnectionLine';D.style.position='absolute';D.src=FCK_SPACER_PATH;B.OnHide=FCKToolbarPanelButton_OnPanelHide;};function FCKToolbarPanelButton_OnButtonClick(A){var B=this._FCKToolbarPanelButton;var e=B._UIButton.MainElement;B._UIButton.ChangeState(1);B.LineImg.style.width=(e.offsetWidth-2)+'px';FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(B.CommandName).Execute(0,e.offsetHeight-1,e);};function FCKToolbarPanelButton_OnPanelHide(){var A=this._FCKToolbarPanelButton;A._UIButton.ChangeState(0);};FCKToolbarPanelButton.prototype.RefreshState=FCKToolbarButton.prototype.RefreshState;FCKToolbarPanelButton.prototype.Enable=FCKToolbarButton.prototype.Enable;FCKToolbarPanelButton.prototype.Disable=FCKToolbarButton.prototype.Disable;
+var FCKToolbarPanelButton=function(A,B,C,D,E){this.CommandName=A;var F;if (E==null) F=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(E)=='number') F=[FCKConfig.SkinPath+'fck_strip.gif',16,E];var G=this._UIButton=new FCKToolbarButtonUI(A,B,C,F,D);G._FCKToolbarPanelButton=this;G.ShowArrow=true;G.OnClick=FCKToolbarPanelButton_OnButtonClick;};FCKToolbarPanelButton.prototype.TypeName='FCKToolbarPanelButton';FCKToolbarPanelButton.prototype.Create=function(A){A.className+='Menu';this._UIButton.Create(A);var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName)._Panel;this.RegisterPanel(B);};FCKToolbarPanelButton.prototype.RegisterPanel=function(A){if (A._FCKToolbarPanelButton) return;A._FCKToolbarPanelButton=this;var B=A.Document.body.appendChild(A.Document.createElement('div'));B.style.position='absolute';B.style.top='0px';var C=A._FCKToolbarPanelButtonLineDiv=B.appendChild(A.Document.createElement('IMG'));C.className='TB_ConnectionLine';C.style.position='absolute';C.src=FCK_SPACER_PATH;A.OnHide=FCKToolbarPanelButton_OnPanelHide;};function FCKToolbarPanelButton_OnButtonClick(A){var B=this._FCKToolbarPanelButton;var e=B._UIButton.MainElement;B._UIButton.ChangeState(1);var C=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(B.CommandName);var D=C._Panel;D._FCKToolbarPanelButtonLineDiv.style.width=(e.offsetWidth-2)+'px';C.Execute(0,e.offsetHeight-1,e);};function FCKToolbarPanelButton_OnPanelHide(){var A=this._FCKToolbarPanelButton;A._UIButton.ChangeState(0);};FCKToolbarPanelButton.prototype.RefreshState=FCKToolbarButton.prototype.RefreshState;FCKToolbarPanelButton.prototype.Enable=FCKToolbarButton.prototype.Enable;FCKToolbarPanelButton.prototype.Disable=FCKToolbarButton.prototype.Disable;
 var FCKToolbarItems={};FCKToolbarItems.LoadedItems={};FCKToolbarItems.RegisterItem=function(A,B){this.LoadedItems[A]=B;};FCKToolbarItems.GetItem=function(A){var B=FCKToolbarItems.LoadedItems[A];if (B) return B;switch (A){case 'Source':B=new FCKToolbarButton('Source',FCKLang.Source,null,2,true,true,1);break;case 'DocProps':B=new FCKToolbarButton('DocProps',FCKLang.DocProps,null,null,null,null,2);break;case 'Save':B=new FCKToolbarButton('Save',FCKLang.Save,null,null,true,null,3);break;case 'NewPage':B=new FCKToolbarButton('NewPage',FCKLang.NewPage,null,null,true,null,4);break;case 'Preview':B=new FCKToolbarButton('Preview',FCKLang.Preview,null,null,true,null,5);break;case 'Templates':B=new FCKToolbarButton('Templates',FCKLang.Templates,null,null,null,null,6);break;case 'About':B=new FCKToolbarButton('About',FCKLang.About,null,null,true,null,47);break;case 'Cut':B=new FCKToolbarButton('Cut',FCKLang.Cut,null,null,false,true,7);break;case 'Copy':B=new FCKToolbarButton('Copy',FCKLang.Copy,null,null,false,true,8);break;case 'Paste':B=new FCKToolbarButton('Paste',FCKLang.Paste,null,null,false,true,9);break;case 'PasteText':B=new FCKToolbarButton('PasteText',FCKLang.PasteText,null,null,false,true,10);break;case 'PasteWord':B=new FCKToolbarButton('PasteWord',FCKLang.PasteWord,null,null,false,true,11);break;case 'Print':B=new FCKToolbarButton('Print',FCKLang.Print,null,null,false,true,12);break;case 'SpellCheck':B=new FCKToolbarButton('SpellCheck',FCKLang.SpellCheck,null,null,null,null,13);break;case 'Undo':B=new FCKToolbarButton('Undo',FCKLang.Undo,null,null,false,true,14);break;case 'Redo':B=new FCKToolbarButton('Redo',FCKLang.Redo,null,null,false,true,15);break;case 'SelectAll':B=new FCKToolbarButton('SelectAll',FCKLang.SelectAll,null,null,true,null,18);break;case 'RemoveFormat':B=new FCKToolbarButton('RemoveFormat',FCKLang.RemoveFormat,null,null,false,true,19);break;case 'FitWindow':B=new FCKToolbarButton('FitWindow',FCKLang.FitWindow,null,null,true,true,66);break;case 'Bold':B=new FCKToolbarButton('Bold',FCKLang.Bold,null,null,false,true,20);break;case 'Italic':B=new FCKToolbarButton('Italic',FCKLang.Italic,null,null,false,true,21);break;case 'Underline':B=new FCKToolbarButton('Underline',FCKLang.Underline,null,null,false,true,22);break;case 'StrikeThrough':B=new FCKToolbarButton('StrikeThrough',FCKLang.StrikeThrough,null,null,false,true,23);break;case 'Subscript':B=new FCKToolbarButton('Subscript',FCKLang.Subscript,null,null,false,true,24);break;case 'Superscript':B=new FCKToolbarButton('Superscript',FCKLang.Superscript,null,null,false,true,25);break;case 'OrderedList':B=new FCKToolbarButton('InsertOrderedList',FCKLang.NumberedListLbl,FCKLang.NumberedList,null,false,true,26);break;case 'UnorderedList':B=new FCKToolbarButton('InsertUnorderedList',FCKLang.BulletedListLbl,FCKLang.BulletedList,null,false,true,27);break;case 'Outdent':B=new FCKToolbarButton('Outdent',FCKLang.DecreaseIndent,null,null,false,true,28);break;case 'Indent':B=new FCKToolbarButton('Indent',FCKLang.IncreaseIndent,null,null,false,true,29);break;case 'Blockquote':B=new FCKToolbarButton('Blockquote',FCKLang.Blockquote,null,null,false,true,73);break;case 'Link':B=new FCKToolbarButton('Link',FCKLang.InsertLinkLbl,FCKLang.InsertLink,null,false,true,34);break;case 'Unlink':B=new FCKToolbarButton('Unlink',FCKLang.RemoveLink,null,null,false,true,35);break;case 'Anchor':B=new FCKToolbarButton('Anchor',FCKLang.Anchor,null,null,null,null,36);break;case 'Image':B=new FCKToolbarButton('Image',FCKLang.InsertImageLbl,FCKLang.InsertImage,null,false,true,37);break;case 'Flash':B=new FCKToolbarButton('Flash',FCKLang.InsertFlashLbl,FCKLang.InsertFlash,null,false,true,38);break;case 'Table':B=new FCKToolbarButton('Table',FCKLang.InsertTableLbl,FCKLang.InsertTable,null,false,true,39);break;case 'SpecialChar':B=new FCKToolbarButton('SpecialChar',FCKLang.InsertSpecialCharLbl,FCKLang.InsertSpecialChar,null,false,true,42);break;case 'Smiley':B=new FCKToolbarButton('Smiley',FCKLang.InsertSmileyLbl,FCKLang.InsertSmiley,null,false,true,41);break;case 'PageBreak':B=new FCKToolbarButton('PageBreak',FCKLang.PageBreakLbl,FCKLang.PageBreak,null,false,true,43);break;case 'Rule':B=new FCKToolbarButton('Rule',FCKLang.InsertLineLbl,FCKLang.InsertLine,null,false,true,40);break;case 'JustifyLeft':B=new FCKToolbarButton('JustifyLeft',FCKLang.LeftJustify,null,null,false,true,30);break;case 'JustifyCenter':B=new FCKToolbarButton('JustifyCenter',FCKLang.CenterJustify,null,null,false,true,31);break;case 'JustifyRight':B=new FCKToolbarButton('JustifyRight',FCKLang.RightJustify,null,null,false,true,32);break;case 'JustifyFull':B=new FCKToolbarButton('JustifyFull',FCKLang.BlockJustify,null,null,false,true,33);break;case 'Style':B=new FCKToolbarStyleCombo();break;case 'FontName':B=new FCKToolbarFontsCombo();break;case 'FontSize':B=new FCKToolbarFontSizeCombo();break;case 'FontFormat':B=new FCKToolbarFontFormatCombo();break;case 'TextColor':B=new FCKToolbarPanelButton('TextColor',FCKLang.TextColor,null,null,45);break;case 'BGColor':B=new FCKToolbarPanelButton('BGColor',FCKLang.BGColor,null,null,46);break;case 'Find':B=new FCKToolbarButton('Find',FCKLang.Find,null,null,null,null,16);break;case 'Replace':B=new FCKToolbarButton('Replace',FCKLang.Replace,null,null,null,null,17);break;case 'Form':B=new FCKToolbarButton('Form',FCKLang.Form,null,null,null,null,48);break;case 'Checkbox':B=new FCKToolbarButton('Checkbox',FCKLang.Checkbox,null,null,null,null,49);break;case 'Radio':B=new FCKToolbarButton('Radio',FCKLang.RadioButton,null,null,null,null,50);break;case 'TextField':B=new FCKToolbarButton('TextField',FCKLang.TextField,null,null,null,null,51);break;case 'Textarea':B=new FCKToolbarButton('Textarea',FCKLang.Textarea,null,null,null,null,52);break;case 'HiddenField':B=new FCKToolbarButton('HiddenField',FCKLang.HiddenField,null,null,null,null,56);break;case 'Button':B=new FCKToolbarButton('Button',FCKLang.Button,null,null,null,null,54);break;case 'Select':B=new FCKToolbarButton('Select',FCKLang.SelectionField,null,null,null,null,53);break;case 'ImageButton':B=new FCKToolbarButton('ImageButton',FCKLang.ImageButton,null,null,null,null,55);break;case 'ShowBlocks':B=new FCKToolbarButton('ShowBlocks',FCKLang.ShowBlocks,null,null,null,true,72);break;default:alert(FCKLang.UnknownToolbarItem.replace(/%1/g,A));return null;};FCKToolbarItems.LoadedItems[A]=B;return B;};
-var FCKToolbar=function(){this.Items=[];};FCKToolbar.prototype.AddItem=function(A){return this.Items[this.Items.length]=A;};FCKToolbar.prototype.AddButton=function(A,B,C,D,E,F){if (typeof(D)=='number') D=[this.DefaultIconsStrip,this.DefaultIconSize,D];var G=new FCKToolbarButtonUI(A,B,C,D,E,F);G._FCKToolbar=this;G.OnClick=FCKToolbar_OnItemClick;return this.AddItem(G);};function FCKToolbar_OnItemClick(A){var B=A._FCKToolbar;if (B.OnItemClick) B.OnItemClick(B,A);};FCKToolbar.prototype.AddSeparator=function(){this.AddItem(new FCKToolbarSeparator());};FCKToolbar.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var e=B.createElement('table');e.className='TB_Toolbar';e.style.styleFloat=e.style.cssFloat=(FCKLang.Dir=='ltr'?'left':'right');e.dir=FCKLang.Dir;e.cellPadding=0;e.cellSpacing=0;var C=e.insertRow(-1);var D;if (!this.HideStart){D=C.insertCell(-1);D.appendChild(B.createElement('div')).className='TB_Start';};for (var i=0;i<this.Items.length;i++){this.Items[i].Create(C.insertCell(-1));};if (!this.HideEnd){D=C.insertCell(-1);D.appendChild(B.createElement('div')).className='TB_End';};A.appendChild(e);};var FCKToolbarSeparator=function(){};FCKToolbarSeparator.prototype.Create=function(A){FCKTools.AppendElement(A,'div').className='TB_Separator';}
+var FCKToolbar=function(){this.Items=[];};FCKToolbar.prototype.AddItem=function(A){return this.Items[this.Items.length]=A;};FCKToolbar.prototype.AddButton=function(A,B,C,D,E,F){if (typeof(D)=='number') D=[this.DefaultIconsStrip,this.DefaultIconSize,D];var G=new FCKToolbarButtonUI(A,B,C,D,E,F);G._FCKToolbar=this;G.OnClick=FCKToolbar_OnItemClick;return this.AddItem(G);};function FCKToolbar_OnItemClick(A){var B=A._FCKToolbar;if (B.OnItemClick) B.OnItemClick(B,A);};FCKToolbar.prototype.AddSeparator=function(){this.AddItem(new FCKToolbarSeparator());};FCKToolbar.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var e=B.createElement('table');e.className='TB_Toolbar';e.style.styleFloat=e.style.cssFloat=(FCKLang.Dir=='ltr'?'left':'right');e.dir=FCKLang.Dir;e.cellPadding=0;e.cellSpacing=0;var C=e.insertRow(-1);var D;if (!this.HideStart){D=C.insertCell(-1);D.appendChild(B.createElement('div')).className='TB_Start';};for (var i=0;i<this.Items.length;i++){this.Items[i].Create(C.insertCell(-1));};if (!this.HideEnd){D=C.insertCell(-1);D.appendChild(B.createElement('div')).className='TB_End';};A.appendChild(e);};var FCKToolbarSeparator=function(){};FCKToolbarSeparator.prototype.Create=function(A){FCKTools.AppendElement(A,'div').className='TB_Separator';};
 var FCKToolbarBreak=function(){};FCKToolbarBreak.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A).createElement('div');B.className='TB_Break';B.style.clear=FCKLang.Dir=='rtl'?'left':'right';A.appendChild(B);};
-function FCKToolbarSet_Create(A){var B;var C=A||FCKConfig.ToolbarLocation;switch (C){case 'In':document.getElementById('xToolbarRow').style.display='';B=new FCKToolbarSet(document);break;case 'None':B=new FCKToolbarSet(document);break;default:FCK.Events.AttachEvent('OnBlur',FCK_OnBlur);FCK.Events.AttachEvent('OnFocus',FCK_OnFocus);var D;var E=C.match(/^Out:(.+)\((\w+)\)$/);if (E){D=eval('parent.'+E[1]).document.getElementById(E[2]);}else{E=C.match(/^Out:(\w+)$/);if (E) D=parent.document.getElementById(E[1]);};if (!D){alert('Invalid value for "ToolbarLocation"');return arguments.callee('In');};B=D.__FCKToolbarSet;if (B) break;var F=FCKTools.GetElementDocument(D).createElement('iframe');F.src='javascript:void(0)';F.frameBorder=0;F.width='100%';F.height='10';D.appendChild(F);F.unselectable='on';var G=F.contentWindow.document;var H='';if (FCKBrowserInfo.IsSafari) H='<base href="'+window.document.location+'">';G.open();G.write('<html><head>'+H+'<script type="text/javascript"> var adjust = function() { window.frameElement.height = document.body.scrollHeight ; }; window.onresize = adjust; window.onload = function () {window.setTimeout( adjust, 0 );}</script></head><body style="overflow: hidden">'+document.getElementById('xToolbarSpace').innerHTML+'</body></html>');G.close();FCKTools.AddEventListener(G,'contextmenu',FCKTools.CancelEvent);FCKTools.AppendStyleSheet(G,FCKConfig.SkinPath+'fck_editor.css');B=D.__FCKToolbarSet=new FCKToolbarSet(G);B._IFrame=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(D,FCKToolbarSet_Target_Cleanup);};B.CurrentInstance=FCK;FCK.AttachToOnSelectionChange(B.RefreshItemsState);return B;};function FCK_OnBlur(A){var B=A.ToolbarSet;if (B.CurrentInstance==A) B.Disable();};function FCK_OnFocus(A){var B=A.ToolbarSet;var C=A||FCK;B.CurrentInstance.FocusManager.RemoveWindow(B._IFrame.contentWindow);B.CurrentInstance=C;C.FocusManager.AddWindow(B._IFrame.contentWindow,true);B.Enable();};function FCKToolbarSet_Cleanup(){this._TargetElement=null;this._IFrame=null;};function FCKToolbarSet_Target_Cleanup(){this.__FCKToolbarSet=null;};var FCKToolbarSet=function(A){this._Document=A;this._TargetElement=A.getElementById('xToolbar');var B=A.getElementById('xExpandHandle');var C=A.getElementById('xCollapseHandle');B.title=FCKLang.ToolbarExpand;FCKTools.AddEventListener(B,'click',FCKToolbarSet_Expand_OnClick);C.title=FCKLang.ToolbarCollapse;FCKTools.AddEventListener(C,'click',FCKToolbarSet_Collapse_OnClick);if (!FCKConfig.ToolbarCanCollapse||FCKConfig.ToolbarStartExpanded) this.Expand();else this.Collapse();C.style.display=FCKConfig.ToolbarCanCollapse?'':'none';if (FCKConfig.ToolbarCanCollapse) C.style.display='';else A.getElementById('xTBLeftBorder').style.display='';this.Toolbars=[];this.IsLoaded=false;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarSet_Cleanup);};function FCKToolbarSet_Expand_OnClick(){FCK.ToolbarSet.Expand();};function FCKToolbarSet_Collapse_OnClick(){FCK.ToolbarSet.Collapse();};FCKToolbarSet.prototype.Expand=function(){this._ChangeVisibility(false);};FCKToolbarSet.prototype.Collapse=function(){this._ChangeVisibility(true);};FCKToolbarSet.prototype._ChangeVisibility=function(A){this._Document.getElementById('xCollapsed').style.display=A?'':'none';this._Document.getElementById('xExpanded').style.display=A?'none':'';if (FCKBrowserInfo.IsGecko){FCKTools.RunFunction(window.onresize);}};FCKToolbarSet.prototype.Load=function(A){this.Name=A;this.Items=[];this.ItemsWysiwygOnly=[];this.ItemsContextSensitive=[];this._TargetElement.innerHTML='';var B=FCKConfig.ToolbarSets[A];if (!B){alert(FCKLang.UnknownToolbarSet.replace(/%1/g,A));return;};this.Toolbars=[];for (var x=0;x<B.length;x++){var C=B[x];if (!C) continue;var D;if (typeof(C)=='string'){if (C=='/') D=new FCKToolbarBreak();}else{D=new FCKToolbar();for (var j=0;j<C.length;j++){var E=C[j];if (E=='-') D.AddSeparator();else{var F=FCKToolbarItems.GetItem(E);if (F){D.AddItem(F);this.Items.push(F);if (!F.SourceView) this.ItemsWysiwygOnly.push(F);if (F.ContextSensitive) this.ItemsContextSensitive.push(F);}}}};D.Create(this._TargetElement);this.Toolbars[this.Toolbars.length]=D;};FCKTools.DisableSelection(this._Document.getElementById('xCollapseHandle').parentNode);if (FCK.Status!=2) FCK.Events.AttachEvent('OnStatusChange',this.RefreshModeState);else this.RefreshModeState();this.IsLoaded=true;this.IsEnabled=true;FCKTools.RunFunction(this.OnLoad);};FCKToolbarSet.prototype.Enable=function(){if (this.IsEnabled) return;this.IsEnabled=true;var A=this.Items;for (var i=0;i<A.length;i++) A[i].RefreshState();};FCKToolbarSet.prototype.Disable=function(){if (!this.IsEnabled) return;this.IsEnabled=false;var A=this.Items;for (var i=0;i<A.length;i++) A[i].Disable();};FCKToolbarSet.prototype.RefreshModeState=function(A){if (FCK.Status!=2) return;var B=A?A.ToolbarSet:this;var C=B.ItemsWysiwygOnly;if (FCK.EditMode==0){for (var i=0;i<C.length;i++) C[i].Enable();B.RefreshItemsState(A);}else{B.RefreshItemsState(A);for (var j=0;j<C.length;j++) C[j].Disable();}};FCKToolbarSet.prototype.RefreshItemsState=function(A){var B=(A?A.ToolbarSet:this).ItemsContextSensitive;for (var i=0;i<B.length;i++) B[i].RefreshState();};
-var FCKDialog={};FCKDialog.OpenDialog=function(A,B,C,D,E,F,G,H){var I={};I.Title=B;I.Page=C;I.Editor=window;I.CustomValue=F;var J=FCKConfig.BasePath+'fckdialog.html';this.Show(I,A,J,D,E,G,H);};
-FCKDialog.Show=function(A,B,C,D,E,F,G){if (!F) F=window;var H='help:no;scroll:no;status:no;resizable:'+(G?'yes':'no')+';dialogWidth:'+D+'px;dialogHeight:'+E+'px';FCKFocusManager.Lock();var I='B';try{A.DialogName=B;I=F.showModalDialog(C,A,H);}catch(e) {};if ('B'===I) alert(FCKLang.DialogBlocked);FCKFocusManager.Unlock();};
-var FCKMenuItem=function(A,B,C,D,E){this.Name=B;this.Label=C||B;this.IsDisabled=E;this.Icon=new FCKIcon(D);this.SubMenu=new FCKMenuBlockPanel();this.SubMenu.Parent=A;this.SubMenu.OnClick=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnClick,this);if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuItem_Cleanup);};FCKMenuItem.prototype.AddItem=function(A,B,C,D){this.HasSubMenu=true;return this.SubMenu.AddItem(A,B,C,D);};FCKMenuItem.prototype.AddSeparator=function(){this.SubMenu.AddSeparator();};FCKMenuItem.prototype.Create=function(A){var B=this.HasSubMenu;var C=FCKTools.GetElementDocument(A);var r=this.MainElement=A.insertRow(-1);r.className=this.IsDisabled?'MN_Item_Disabled':'MN_Item';if (!this.IsDisabled){FCKTools.AddEventListenerEx(r,'mouseover',FCKMenuItem_OnMouseOver,[this]);FCKTools.AddEventListenerEx(r,'click',FCKMenuItem_OnClick,[this]);if (!B) FCKTools.AddEventListenerEx(r,'mouseout',FCKMenuItem_OnMouseOut,[this]);};var D=r.insertCell(-1);D.className='MN_Icon';D.appendChild(this.Icon.CreateIconElement(C));D=r.insertCell(-1);D.className='MN_Label';D.noWrap=true;D.appendChild(C.createTextNode(this.Label));D=r.insertCell(-1);if (B){D.className='MN_Arrow';var E=D.appendChild(C.createElement('IMG'));E.src=FCK_IMAGES_PATH+'arrow_'+FCKLang.Dir+'.gif';E.width=4;E.height=7;this.SubMenu.Create();this.SubMenu.Panel.OnHide=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnHide,this);}};FCKMenuItem.prototype.Activate=function(){this.MainElement.className='MN_Item_Over';if (this.HasSubMenu){this.SubMenu.Show(this.MainElement.offsetWidth+2,-2,this.MainElement);};FCKTools.RunFunction(this.OnActivate,this);};FCKMenuItem.prototype.Deactivate=function(){this.MainElement.className='MN_Item';if (this.HasSubMenu) this.SubMenu.Hide();};function FCKMenuItem_SubMenu_OnClick(A,B){FCKTools.RunFunction(B.OnClick,B,[A]);};function FCKMenuItem_SubMenu_OnHide(A){A.Deactivate();};function FCKMenuItem_OnClick(A,B){if (B.HasSubMenu) B.Activate();else{B.Deactivate();FCKTools.RunFunction(B.OnClick,B,[B]);}};function FCKMenuItem_OnMouseOver(A,B){B.Activate();};function FCKMenuItem_OnMouseOut(A,B){B.Deactivate();};function FCKMenuItem_Cleanup(){this.MainElement=null;}
-var FCKMenuBlock=function(){this._Items=[];};FCKMenuBlock.prototype.Count=function(){return this._Items.length;};FCKMenuBlock.prototype.AddItem=function(A,B,C,D){var E=new FCKMenuItem(this,A,B,C,D);E.OnClick=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnClick,this);E.OnActivate=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnActivate,this);this._Items.push(E);return E;};FCKMenuBlock.prototype.AddSeparator=function(){this._Items.push(new FCKMenuSeparator());};FCKMenuBlock.prototype.RemoveAllItems=function(){this._Items=[];var A=this._ItemsTable;if (A){while (A.rows.length>0) A.deleteRow(0);}};FCKMenuBlock.prototype.Create=function(A){if (!this._ItemsTable){if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuBlock_Cleanup);this._Window=FCKTools.GetElementWindow(A);var B=FCKTools.GetElementDocument(A);var C=A.appendChild(B.createElement('table'));C.cellPadding=0;C.cellSpacing=0;FCKTools.DisableSelection(C);var D=C.insertRow(-1).insertCell(-1);D.className='MN_Menu';var E=this._ItemsTable=D.appendChild(B.createElement('table'));E.cellPadding=0;E.cellSpacing=0;};for (var i=0;i<this._Items.length;i++) this._Items[i].Create(this._ItemsTable);};function FCKMenuBlock_Item_OnClick(A,B){if (B.Hide) B.Hide();FCKTools.RunFunction(B.OnClick,B,[A]);};function FCKMenuBlock_Item_OnActivate(A){var B=A._ActiveItem;if (B&&B!=this){if (!FCKBrowserInfo.IsIE&&B.HasSubMenu&&!this.HasSubMenu){A._Window.focus();A.Panel.HasFocus=true;};B.Deactivate();};A._ActiveItem=this;};function FCKMenuBlock_Cleanup(){this._Window=null;this._ItemsTable=null;};var FCKMenuSeparator=function(){};FCKMenuSeparator.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var r=A.insertRow(-1);var C=r.insertCell(-1);C.className='MN_Separator MN_Icon';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';}
-var FCKMenuBlockPanel=function(){FCKMenuBlock.call(this);};FCKMenuBlockPanel.prototype=new FCKMenuBlock();FCKMenuBlockPanel.prototype.Create=function(){var A=this.Panel=(this.Parent&&this.Parent.Panel?this.Parent.Panel.CreateChildPanel():new FCKPanel());A.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');FCKMenuBlock.prototype.Create.call(this,A.MainNode);};FCKMenuBlockPanel.prototype.Show=function(x,y,A){if (!this.Panel.CheckIsOpened()) this.Panel.Show(x,y,A);};FCKMenuBlockPanel.prototype.Hide=function(){if (this.Panel.CheckIsOpened()) this.Panel.Hide();}
-var FCKContextMenu=function(A,B){this.CtrlDisable=false;var C=this._Panel=new FCKPanel(A);C.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');C.IsContextMenu=true;if (FCKBrowserInfo.IsGecko) C.Document.addEventListener('draggesture',function(e) {e.preventDefault();return false;},true);var D=this._MenuBlock=new FCKMenuBlock();D.Panel=C;D.OnClick=FCKTools.CreateEventListener(FCKContextMenu_MenuBlock_OnClick,this);this._Redraw=true;};FCKContextMenu.prototype.SetMouseClickWindow=function(A){if (!FCKBrowserInfo.IsIE){this._Document=A.document;if (FCKBrowserInfo.IsOpera&&!('oncontextmenu' in document.createElement('foo'))){this._Document.addEventListener('mousedown',FCKContextMenu_Document_OnMouseDown,false);this._Document.addEventListener('mouseup',FCKContextMenu_Document_OnMouseUp,false);};this._Document.addEventListener('contextmenu',FCKContextMenu_Document_OnContextMenu,false);}};FCKContextMenu.prototype.AddItem=function(A,B,C,D){var E=this._MenuBlock.AddItem(A,B,C,D);this._Redraw=true;return E;};FCKContextMenu.prototype.AddSeparator=function(){this._MenuBlock.AddSeparator();this._Redraw=true;};FCKContextMenu.prototype.RemoveAllItems=function(){this._MenuBlock.RemoveAllItems();this._Redraw=true;};FCKContextMenu.prototype.AttachToElement=function(A){if (FCKBrowserInfo.IsIE) FCKTools.AddEventListenerEx(A,'contextmenu',FCKContextMenu_AttachedElement_OnContextMenu,this);else A._FCKContextMenu=this;};function FCKContextMenu_Document_OnContextMenu(e){var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;FCKTools.CancelEvent(e);FCKContextMenu_AttachedElement_OnContextMenu(e,A._FCKContextMenu,A);return false;};A=A.parentNode;};return true;};var FCKContextMenu_OverrideButton;function FCKContextMenu_Document_OnMouseDown(e){if(!e||e.button!=2) return false;var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;var B=FCKContextMenu_OverrideButton;if(!B){var C=e.target.ownerDocument;B=FCKContextMenu_OverrideButton=C.createElement('input');B.type='button';var D=C.createElement('p');C.body.appendChild(D);D.appendChild(B);};B.style.cssText='position:absolute;top:'+(e.clientY-2)+'px;left:'+(e.clientX-2)+'px;width:5px;height:5px;opacity:0.01';};A=A.parentNode;};return false;};function FCKContextMenu_Document_OnMouseUp(e){var A=FCKContextMenu_OverrideButton;if (A){var B=A.parentNode;B.parentNode.removeChild(B);FCKContextMenu_OverrideButton=undefined;if(e&&e.button==2){FCKContextMenu_Document_OnContextMenu(e);return false;}}};function FCKContextMenu_AttachedElement_OnContextMenu(A,B,C){if (B.CtrlDisable&&(A.ctrlKey||A.metaKey)) return true;var D=C||this;if (B.OnBeforeOpen) B.OnBeforeOpen.call(B,D);if (B._MenuBlock.Count()==0) return false;if (B._Redraw){B._MenuBlock.Create(B._Panel.MainNode);B._Redraw=false;};FCKTools.DisableSelection(B._Panel.Document.body);var x=0;var y=0;if (FCKBrowserInfo.IsIE){x=A.screenX;y=A.screenY;}else if (FCKBrowserInfo.IsSafari){x=A.clientX;y=A.clientY;}else{x=A.pageX;y=A.pageY;};B._Panel.Show(x,y,A.currentTarget||null);return false;};function FCKContextMenu_MenuBlock_OnClick(A,B){B._Panel.Hide();FCKTools.RunFunction(B.OnItemClick,B,A);};
-FCK.ContextMenu={};FCK.ContextMenu.Listeners=[];FCK.ContextMenu.RegisterListener=function(A){if (A) this.Listeners.push(A);};function FCK_ContextMenu_Init(){var A=FCK.ContextMenu._InnerContextMenu=new FCKContextMenu(FCKBrowserInfo.IsIE?window:window.parent,FCKLang.Dir);A.CtrlDisable=FCKConfig.BrowserContextMenuOnCtrl;A.OnBeforeOpen=FCK_ContextMenu_OnBeforeOpen;A.OnItemClick=FCK_ContextMenu_OnItemClick;var B=FCK.ContextMenu;for (var i=0;i<FCKConfig.ContextMenu.length;i++) B.RegisterListener(FCK_ContextMenu_GetListener(FCKConfig.ContextMenu[i]));};function FCK_ContextMenu_GetListener(A){switch (A){case 'Generic':return {AddItems:function(menu,tag,tagName){menu.AddItem('Cut',FCKLang.Cut,7,FCKCommands.GetCommand('Cut').GetState()==-1);menu.AddItem('Copy',FCKLang.Copy,8,FCKCommands.GetCommand('Copy').GetState()==-1);menu.AddItem('Paste',FCKLang.Paste,9,FCKCommands.GetCommand('Paste').GetState()==-1);}};case 'Table':return {AddItems:function(menu,tag,tagName){var B=(tagName=='TABLE');var C=(!B&&FCKSelection.HasAncestorNode('TABLE'));if (C){menu.AddSeparator();var D=menu.AddItem('Cell',FCKLang.CellCM);D.AddItem('TableInsertCellBefore',FCKLang.InsertCellBefore,69);D.AddItem('TableInsertCellAfter',FCKLang.InsertCellAfter,58);D.AddItem('TableDeleteCells',FCKLang.DeleteCells,59);if (FCKBrowserInfo.IsGecko) D.AddItem('TableMergeCells',FCKLang.MergeCells,60,FCKCommands.GetCommand('TableMergeCells').GetState()==-1);else{D.AddItem('TableMergeRight',FCKLang.MergeRight,60,FCKCommands.GetCommand('TableMergeRight').GetState()==-1);D.AddItem('TableMergeDown',FCKLang.MergeDown,60,FCKCommands.GetCommand('TableMergeDown').GetState()==-1);};D.AddItem('TableHorizontalSplitCell',FCKLang.HorizontalSplitCell,61,FCKCommands.GetCommand('TableHorizontalSplitCell').GetState()==-1);D.AddItem('TableVerticalSplitCell',FCKLang.VerticalSplitCell,61,FCKCommands.GetCommand('TableVerticalSplitCell').GetState()==-1);D.AddSeparator();D.AddItem('TableCellProp',FCKLang.CellProperties,57,FCKCommands.GetCommand('TableCellProp').GetState()==-1);menu.AddSeparator();D=menu.AddItem('Row',FCKLang.RowCM);D.AddItem('TableInsertRowBefore',FCKLang.InsertRowBefore,70);D.AddItem('TableInsertRowAfter',FCKLang.InsertRowAfter,62);D.AddItem('TableDeleteRows',FCKLang.DeleteRows,63);menu.AddSeparator();D=menu.AddItem('Column',FCKLang.ColumnCM);D.AddItem('TableInsertColumnBefore',FCKLang.InsertColumnBefore,71);D.AddItem('TableInsertColumnAfter',FCKLang.InsertColumnAfter,64);D.AddItem('TableDeleteColumns',FCKLang.DeleteColumns,65);};if (B||C){menu.AddSeparator();menu.AddItem('TableDelete',FCKLang.TableDelete);menu.AddItem('TableProp',FCKLang.TableProperties,39);}}};case 'Link':return {AddItems:function(menu,tag,tagName){var E=(tagName=='A'||FCKSelection.HasAncestorNode('A'));if (E||FCK.GetNamedCommandState('Unlink')!=-1){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0&&F.href.length==0);if (G) return;menu.AddSeparator();if (E) menu.AddItem('Link',FCKLang.EditLink,34);menu.AddItem('Unlink',FCKLang.RemoveLink,35);}}};case 'Image':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&!tag.getAttribute('_fckfakelement')){menu.AddSeparator();menu.AddItem('Image',FCKLang.ImageProperties,37);}}};case 'Anchor':return {AddItems:function(menu,tag,tagName){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0);if (G||(tagName=='IMG'&&tag.getAttribute('_fckanchor'))){menu.AddSeparator();menu.AddItem('Anchor',FCKLang.AnchorProp,36);menu.AddItem('AnchorDelete',FCKLang.AnchorDelete);}}};case 'Flash':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckflash')){menu.AddSeparator();menu.AddItem('Flash',FCKLang.FlashProperties,38);}}};case 'Form':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('FORM')){menu.AddSeparator();menu.AddItem('Form',FCKLang.FormProp,48);}}};case 'Checkbox':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='checkbox'){menu.AddSeparator();menu.AddItem('Checkbox',FCKLang.CheckboxProp,49);}}};case 'Radio':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='radio'){menu.AddSeparator();menu.AddItem('Radio',FCKLang.RadioButtonProp,50);}}};case 'TextField':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='text'||tag.type=='password')){menu.AddSeparator();menu.AddItem('TextField',FCKLang.TextFieldProp,51);}}};case 'HiddenField':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckinputhidden')){menu.AddSeparator();menu.AddItem('HiddenField',FCKLang.HiddenFieldProp,56);}}};case 'ImageButton':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='image'){menu.AddSeparator();menu.AddItem('ImageButton',FCKLang.ImageButtonProp,55);}}};case 'Button':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='button'||tag.type=='submit'||tag.type=='reset')){menu.AddSeparator();menu.AddItem('Button',FCKLang.ButtonProp,54);}}};case 'Select':return {AddItems:function(menu,tag,tagName){if (tagName=='SELECT'){menu.AddSeparator();menu.AddItem('Select',FCKLang.SelectionFieldProp,53);}}};case 'Textarea':return {AddItems:function(menu,tag,tagName){if (tagName=='TEXTAREA'){menu.AddSeparator();menu.AddItem('Textarea',FCKLang.TextareaProp,52);}}};case 'BulletedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('UL')){menu.AddSeparator();menu.AddItem('BulletedList',FCKLang.BulletedListProp,27);}}};case 'NumberedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('OL')){menu.AddSeparator();menu.AddItem('NumberedList',FCKLang.NumberedListProp,26);}}};};return null;};function FCK_ContextMenu_OnBeforeOpen(){FCK.Events.FireEvent('OnSelectionChange');var A,sTagName;if ((A=FCKSelection.GetSelectedElement())) sTagName=A.tagName;var B=FCK.ContextMenu._InnerContextMenu;B.RemoveAllItems();var C=FCK.ContextMenu.Listeners;for (var i=0;i<C.length;i++) C[i].AddItems(B,A,sTagName);};function FCK_ContextMenu_OnItemClick(A){FCK.Focus();FCKCommands.GetCommand(A.Name).Execute();};
-var FCKPlugin=function(A,B,C){this.Name=A;this.BasePath=C?C:FCKConfig.PluginsPath;this.Path=this.BasePath+A+'/';if (!B||B.length==0) this.AvailableLangs=[];else this.AvailableLangs=B.split(',');};FCKPlugin.prototype.Load=function(){if (this.AvailableLangs.length>0){var A;if (this.AvailableLangs.IndexOf(FCKLanguageManager.ActiveLanguage.Code)>=0) A=FCKLanguageManager.ActiveLanguage.Code;else A=this.AvailableLangs[0];LoadScript(this.Path+'lang/'+A+'.js');};LoadScript(this.Path+'fckplugin.js');}
-var FCKPlugins=FCK.Plugins={};FCKPlugins.ItemsCount=0;FCKPlugins.Items={};FCKPlugins.Load=function(){var A=FCKPlugins.Items;for (var i=0;i<FCKConfig.Plugins.Items.length;i++){var B=FCKConfig.Plugins.Items[i];var C=A[B[0]]=new FCKPlugin(B[0],B[1],B[2]);FCKPlugins.ItemsCount++;};for (var s in A) A[s].Load();FCKPlugins.Load=null;}
+function FCKToolbarSet_Create(A){var B;var C=A||FCKConfig.ToolbarLocation;switch (C){case 'In':document.getElementById('xToolbarRow').style.display='';B=new FCKToolbarSet(document);break;case 'None':B=new FCKToolbarSet(document);break;default:FCK.Events.AttachEvent('OnBlur',FCK_OnBlur);FCK.Events.AttachEvent('OnFocus',FCK_OnFocus);var D;var E=C.match(/^Out:(.+)\((\w+)\)$/);if (E){if (FCKBrowserInfo.IsAIR) FCKAdobeAIR.ToolbarSet_GetOutElement(window,E);else D=eval('parent.'+E[1]).document.getElementById(E[2]);}else{E=C.match(/^Out:(\w+)$/);if (E) D=parent.document.getElementById(E[1]);};if (!D){alert('Invalid value for "ToolbarLocation"');return arguments.callee('In');};B=D.__FCKToolbarSet;if (B) break;var F=FCKTools.GetElementDocument(D).createElement('iframe');F.src='javascript:void(0)';F.frameBorder=0;F.width='100%';F.height='10';D.appendChild(F);F.unselectable='on';var G=F.contentWindow.document;var H='';if (FCKBrowserInfo.IsSafari) H='<base href="'+window.document.location+'">';G.open();G.write('<html><head>'+H+'<script type="text/javascript"> var adjust = function() { window.frameElement.height = document.body.scrollHeight ; }; window.onresize = window.onload = function(){var timer = null;var lastHeight = -1;var lastChange = 0;var poller = function(){var currentHeight = document.body.scrollHeight || 0;var currentTime = (new Date()).getTime();if (currentHeight != lastHeight){lastChange = currentTime;adjust();lastHeight = document.body.scrollHeight;}if (lastChange < currentTime - 1000) clearInterval(timer);};timer = setInterval(poller, 100);}</script></head><body style="overflow: hidden">'+document.getElementById('xToolbarSpace').innerHTML+'</body></html>');G.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.ToolbarSet_InitOutFrame(G);FCKTools.AddEventListener(G,'contextmenu',FCKTools.CancelEvent);FCKTools.AppendStyleSheet(G,FCKConfig.SkinEditorCSS);B=D.__FCKToolbarSet=new FCKToolbarSet(G);B._IFrame=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(D,FCKToolbarSet_Target_Cleanup);};B.CurrentInstance=FCK;if (!B.ToolbarItems) B.ToolbarItems=FCKToolbarItems;FCK.AttachToOnSelectionChange(B.RefreshItemsState);return B;};function FCK_OnBlur(A){var B=A.ToolbarSet;if (B.CurrentInstance==A) B.Disable();};function FCK_OnFocus(A){var B=A.ToolbarSet;var C=A||FCK;B.CurrentInstance.FocusManager.RemoveWindow(B._IFrame.contentWindow);B.CurrentInstance=C;C.FocusManager.AddWindow(B._IFrame.contentWindow,true);B.Enable();};function FCKToolbarSet_Cleanup(){this._TargetElement=null;this._IFrame=null;};function FCKToolbarSet_Target_Cleanup(){this.__FCKToolbarSet=null;};var FCKToolbarSet=function(A){this._Document=A;this._TargetElement=A.getElementById('xToolbar');var B=A.getElementById('xExpandHandle');var C=A.getElementById('xCollapseHandle');B.title=FCKLang.ToolbarExpand;FCKTools.AddEventListener(B,'click',FCKToolbarSet_Expand_OnClick);C.title=FCKLang.ToolbarCollapse;FCKTools.AddEventListener(C,'click',FCKToolbarSet_Collapse_OnClick);if (!FCKConfig.ToolbarCanCollapse||FCKConfig.ToolbarStartExpanded) this.Expand();else this.Collapse();C.style.display=FCKConfig.ToolbarCanCollapse?'':'none';if (FCKConfig.ToolbarCanCollapse) C.style.display='';else A.getElementById('xTBLeftBorder').style.display='';this.Toolbars=[];this.IsLoaded=false;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarSet_Cleanup);};function FCKToolbarSet_Expand_OnClick(){FCK.ToolbarSet.Expand();};function FCKToolbarSet_Collapse_OnClick(){FCK.ToolbarSet.Collapse();};FCKToolbarSet.prototype.Expand=function(){this._ChangeVisibility(false);};FCKToolbarSet.prototype.Collapse=function(){this._ChangeVisibility(true);};FCKToolbarSet.prototype._ChangeVisibility=function(A){this._Document.getElementById('xCollapsed').style.display=A?'':'none';this._Document.getElementById('xExpanded').style.display=A?'none':'';if (FCKBrowserInfo.IsGecko){FCKTools.RunFunction(window.onresize);}};FCKToolbarSet.prototype.Load=function(A){this.Name=A;this.Items=[];this.ItemsWysiwygOnly=[];this.ItemsContextSensitive=[];this._TargetElement.innerHTML='';var B=FCKConfig.ToolbarSets[A];if (!B){alert(FCKLang.UnknownToolbarSet.replace(/%1/g,A));return;};this.Toolbars=[];for (var x=0;x<B.length;x++){var C=B[x];if (!C) continue;var D;if (typeof(C)=='string'){if (C=='/') D=new FCKToolbarBreak();}else{D=new FCKToolbar();for (var j=0;j<C.length;j++){var E=C[j];if (E=='-') D.AddSeparator();else{var F=FCKToolbarItems.GetItem(E);if (F){D.AddItem(F);this.Items.push(F);if (!F.SourceView) this.ItemsWysiwygOnly.push(F);if (F.ContextSensitive) this.ItemsContextSensitive.push(F);}}}};D.Create(this._TargetElement);this.Toolbars[this.Toolbars.length]=D;};FCKTools.DisableSelection(this._Document.getElementById('xCollapseHandle').parentNode);if (FCK.Status!=2) FCK.Events.AttachEvent('OnStatusChange',this.RefreshModeState);else this.RefreshModeState();this.IsLoaded=true;this.IsEnabled=true;FCKTools.RunFunction(this.OnLoad);};FCKToolbarSet.prototype.Enable=function(){if (this.IsEnabled) return;this.IsEnabled=true;var A=this.Items;for (var i=0;i<A.length;i++) A[i].RefreshState();};FCKToolbarSet.prototype.Disable=function(){if (!this.IsEnabled) return;this.IsEnabled=false;var A=this.Items;for (var i=0;i<A.length;i++) A[i].Disable();};FCKToolbarSet.prototype.RefreshModeState=function(A){if (FCK.Status!=2) return;var B=A?A.ToolbarSet:this;var C=B.ItemsWysiwygOnly;if (FCK.EditMode==0){for (var i=0;i<C.length;i++) C[i].Enable();B.RefreshItemsState(A);}else{B.RefreshItemsState(A);for (var j=0;j<C.length;j++) C[j].Disable();}};FCKToolbarSet.prototype.RefreshItemsState=function(A){var B=(A?A.ToolbarSet:this).ItemsContextSensitive;for (var i=0;i<B.length;i++) B[i].RefreshState();};
+var FCKDialog=(function(){var A;var B;var C;var D=window.parent;while (D.parent&&D.parent!=D){try{if (D.parent.document.domain!=document.domain) break;if (D.parent.document.getElementsByTagName('frameset').length>0) break;}catch (e){break;};D=D.parent;};var E=D.document;var F=function(){if (!B) B=FCKConfig.FloatingPanelsZIndex+999;return++B;};var G=function(){if (!C) return;var H=FCKTools.IsStrictMode(E)?E.documentElement:E.body;FCKDomTools.SetElementStyles(C,{'width':Math.max(H.scrollWidth,H.clientWidth,E.scrollWidth||0)-1+'px','height':Math.max(H.scrollHeight,H.clientHeight,E.scrollHeight||0)-1+'px'});};var I=function(element){element.style.cssText='margin:0;padding:0;border:0;background-color:transparent;background-image:none;';};return {OpenDialog:function(dialogName,dialogTitle,dialogPage,width,height,customValue,parentWindow,resizable){if (!A) this.DisplayMainCover();var J={Title:dialogTitle,Page:dialogPage,Editor:window,CustomValue:customValue,TopWindow:D};FCK.ToolbarSet.CurrentInstance.Selection.Save();var K=FCKTools.GetViewPaneSize(D);var L=FCKTools.GetScrollPosition(D);var M=Math.max(L.Y+(K.Height-height-20)/2,0);var N=Math.max(L.X+(K.Width-width-20)/2,0);var O=E.createElement('iframe');I(O);O.src=FCKConfig.BasePath+'fckdialog.html';O.frameBorder=0;O.allowTransparency=true;FCKDomTools.SetElementStyles(O,{'position':'absolute','top':M+'px','left':N+'px','width':width+'px','height':height+'px','zIndex':F()});O._DialogArguments=J;E.body.appendChild(O);O._ParentDialog=A;A=O;},OnDialogClose:function(dialogWindow){var O=dialogWindow.frameElement;FCKDomTools.RemoveNode(O);if (O._ParentDialog){A=O._ParentDialog;O._ParentDialog.contentWindow.SetEnabled(true);}else{if (!FCKBrowserInfo.IsIE) FCK.Focus();this.HideMainCover();setTimeout(function(){ A=null;},0);FCK.ToolbarSet.CurrentInstance.Selection.Release();}},DisplayMainCover:function(){C=E.createElement('div');I(C);FCKDomTools.SetElementStyles(C,{'position':'absolute','zIndex':F(),'top':'0px','left':'0px','backgroundColor':FCKConfig.BackgroundBlockerColor});FCKDomTools.SetOpacity(C,FCKConfig.BackgroundBlockerOpacity);if (FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsIE7){var Q=E.createElement('iframe');I(Q);Q.hideFocus=true;Q.frameBorder=0;Q.src=FCKTools.GetVoidUrl();FCKDomTools.SetElementStyles(Q,{'width':'100%','height':'100%','position':'absolute','left':'0px','top':'0px','filter':'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'});C.appendChild(Q);};FCKTools.AddEventListener(D,'resize',G);G();E.body.appendChild(C);FCKFocusManager.Lock();},HideMainCover:function(){FCKDomTools.RemoveNode(C);FCKFocusManager.Unlock();},GetCover:function(){return C;}};})();
+var FCKMenuItem=function(A,B,C,D,E,F){this.Name=B;this.Label=C||B;this.IsDisabled=E;this.Icon=new FCKIcon(D);this.SubMenu=new FCKMenuBlockPanel();this.SubMenu.Parent=A;this.SubMenu.OnClick=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnClick,this);this.CustomData=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuItem_Cleanup);};FCKMenuItem.prototype.AddItem=function(A,B,C,D,E){this.HasSubMenu=true;return this.SubMenu.AddItem(A,B,C,D,E);};FCKMenuItem.prototype.AddSeparator=function(){this.SubMenu.AddSeparator();};FCKMenuItem.prototype.Create=function(A){var B=this.HasSubMenu;var C=FCKTools.GetElementDocument(A);var r=this.MainElement=A.insertRow(-1);r.className=this.IsDisabled?'MN_Item_Disabled':'MN_Item';if (!this.IsDisabled){FCKTools.AddEventListenerEx(r,'mouseover',FCKMenuItem_OnMouseOver,[this]);FCKTools.AddEventListenerEx(r,'click',FCKMenuItem_OnClick,[this]);if (!B) FCKTools.AddEventListenerEx(r,'mouseout',FCKMenuItem_OnMouseOut,[this]);};var D=r.insertCell(-1);D.className='MN_Icon';D.appendChild(this.Icon.CreateIconElement(C));D=r.insertCell(-1);D.className='MN_Label';D.noWrap=true;D.appendChild(C.createTextNode(this.Label));D=r.insertCell(-1);if (B){D.className='MN_Arrow';var E=D.appendChild(C.createElement('IMG'));E.src=FCK_IMAGES_PATH+'arrow_'+FCKLang.Dir+'.gif';E.width=4;E.height=7;this.SubMenu.Create();this.SubMenu.Panel.OnHide=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnHide,this);}};FCKMenuItem.prototype.Activate=function(){this.MainElement.className='MN_Item_Over';if (this.HasSubMenu){this.SubMenu.Show(this.MainElement.offsetWidth+2,-2,this.MainElement);};FCKTools.RunFunction(this.OnActivate,this);};FCKMenuItem.prototype.Deactivate=function(){this.MainElement.className='MN_Item';if (this.HasSubMenu) this.SubMenu.Hide();};function FCKMenuItem_SubMenu_OnClick(A,B){FCKTools.RunFunction(B.OnClick,B,[A]);};function FCKMenuItem_SubMenu_OnHide(A){A.Deactivate();};function FCKMenuItem_OnClick(A,B){if (B.HasSubMenu) B.Activate();else{B.Deactivate();FCKTools.RunFunction(B.OnClick,B,[B]);}};function FCKMenuItem_OnMouseOver(A,B){B.Activate();};function FCKMenuItem_OnMouseOut(A,B){B.Deactivate();};function FCKMenuItem_Cleanup(){this.MainElement=null;};
+var FCKMenuBlock=function(){this._Items=[];};FCKMenuBlock.prototype.Count=function(){return this._Items.length;};FCKMenuBlock.prototype.AddItem=function(A,B,C,D,E){var F=new FCKMenuItem(this,A,B,C,D,E);F.OnClick=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnClick,this);F.OnActivate=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnActivate,this);this._Items.push(F);return F;};FCKMenuBlock.prototype.AddSeparator=function(){this._Items.push(new FCKMenuSeparator());};FCKMenuBlock.prototype.RemoveAllItems=function(){this._Items=[];var A=this._ItemsTable;if (A){while (A.rows.length>0) A.deleteRow(0);}};FCKMenuBlock.prototype.Create=function(A){if (!this._ItemsTable){if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuBlock_Cleanup);this._Window=FCKTools.GetElementWindow(A);var B=FCKTools.GetElementDocument(A);var C=A.appendChild(B.createElement('table'));C.cellPadding=0;C.cellSpacing=0;FCKTools.DisableSelection(C);var D=C.insertRow(-1).insertCell(-1);D.className='MN_Menu';var E=this._ItemsTable=D.appendChild(B.createElement('table'));E.cellPadding=0;E.cellSpacing=0;};for (var i=0;i<this._Items.length;i++) this._Items[i].Create(this._ItemsTable);};function FCKMenuBlock_Item_OnClick(A,B){if (B.Hide) B.Hide();FCKTools.RunFunction(B.OnClick,B,[A]);};function FCKMenuBlock_Item_OnActivate(A){var B=A._ActiveItem;if (B&&B!=this){if (!FCKBrowserInfo.IsIE&&B.HasSubMenu&&!this.HasSubMenu){A._Window.focus();A.Panel.HasFocus=true;};B.Deactivate();};A._ActiveItem=this;};function FCKMenuBlock_Cleanup(){this._Window=null;this._ItemsTable=null;};var FCKMenuSeparator=function(){};FCKMenuSeparator.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var r=A.insertRow(-1);var C=r.insertCell(-1);C.className='MN_Separator MN_Icon';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';};
+var FCKMenuBlockPanel=function(){FCKMenuBlock.call(this);};FCKMenuBlockPanel.prototype=new FCKMenuBlock();FCKMenuBlockPanel.prototype.Create=function(){var A=this.Panel=(this.Parent&&this.Parent.Panel?this.Parent.Panel.CreateChildPanel():new FCKPanel());A.AppendStyleSheet(FCKConfig.SkinEditorCSS);FCKMenuBlock.prototype.Create.call(this,A.MainNode);};FCKMenuBlockPanel.prototype.Show=function(x,y,A){if (!this.Panel.CheckIsOpened()) this.Panel.Show(x,y,A);};FCKMenuBlockPanel.prototype.Hide=function(){if (this.Panel.CheckIsOpened()) this.Panel.Hide();};
+var FCKContextMenu=function(A,B){this.CtrlDisable=false;var C=this._Panel=new FCKPanel(A);C.AppendStyleSheet(FCKConfig.SkinEditorCSS);C.IsContextMenu=true;if (FCKBrowserInfo.IsGecko) C.Document.addEventListener('draggesture',function(e) {e.preventDefault();return false;},true);var D=this._MenuBlock=new FCKMenuBlock();D.Panel=C;D.OnClick=FCKTools.CreateEventListener(FCKContextMenu_MenuBlock_OnClick,this);this._Redraw=true;};FCKContextMenu.prototype.SetMouseClickWindow=function(A){if (!FCKBrowserInfo.IsIE){this._Document=A.document;if (FCKBrowserInfo.IsOpera&&!('oncontextmenu' in document.createElement('foo'))){this._Document.addEventListener('mousedown',FCKContextMenu_Document_OnMouseDown,false);this._Document.addEventListener('mouseup',FCKContextMenu_Document_OnMouseUp,false);};this._Document.addEventListener('contextmenu',FCKContextMenu_Document_OnContextMenu,false);}};FCKContextMenu.prototype.AddItem=function(A,B,C,D,E){var F=this._MenuBlock.AddItem(A,B,C,D,E);this._Redraw=true;return F;};FCKContextMenu.prototype.AddSeparator=function(){this._MenuBlock.AddSeparator();this._Redraw=true;};FCKContextMenu.prototype.RemoveAllItems=function(){this._MenuBlock.RemoveAllItems();this._Redraw=true;};FCKContextMenu.prototype.AttachToElement=function(A){if (FCKBrowserInfo.IsIE) FCKTools.AddEventListenerEx(A,'contextmenu',FCKContextMenu_AttachedElement_OnContextMenu,this);else A._FCKContextMenu=this;};function FCKContextMenu_Document_OnContextMenu(e){var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;FCKTools.CancelEvent(e);FCKContextMenu_AttachedElement_OnContextMenu(e,A._FCKContextMenu,A);return false;};A=A.parentNode;};return true;};var FCKContextMenu_OverrideButton;function FCKContextMenu_Document_OnMouseDown(e){if(!e||e.button!=2) return false;var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;var B=FCKContextMenu_OverrideButton;if(!B){var C=FCKTools.GetElementDocument(e.target);B=FCKContextMenu_OverrideButton=C.createElement('input');B.type='button';var D=C.createElement('p');C.body.appendChild(D);D.appendChild(B);};B.style.cssText='position:absolute;top:'+(e.clientY-2)+'px;left:'+(e.clientX-2)+'px;width:5px;height:5px;opacity:0.01';};A=A.parentNode;};return false;};function FCKContextMenu_Document_OnMouseUp(e){var A=FCKContextMenu_OverrideButton;if (A){var B=A.parentNode;B.parentNode.removeChild(B);FCKContextMenu_OverrideButton=undefined;if(e&&e.button==2){FCKContextMenu_Document_OnContextMenu(e);return false;}};return true;};function FCKContextMenu_AttachedElement_OnContextMenu(A,B,C){if (B.CtrlDisable&&(A.ctrlKey||A.metaKey)) return true;var D=C||this;if (B.OnBeforeOpen) B.OnBeforeOpen.call(B,D);if (B._MenuBlock.Count()==0) return false;if (B._Redraw){B._MenuBlock.Create(B._Panel.MainNode);B._Redraw=false;};FCKTools.DisableSelection(B._Panel.Document.body);var x=0;var y=0;if (FCKBrowserInfo.IsIE){x=A.screenX;y=A.screenY;}else if (FCKBrowserInfo.IsSafari){x=A.clientX;y=A.clientY;}else{x=A.pageX;y=A.pageY;};B._Panel.Show(x,y,A.currentTarget||null);return false;};function FCKContextMenu_MenuBlock_OnClick(A,B){B._Panel.Hide();FCKTools.RunFunction(B.OnItemClick,B,A);};
+FCK.ContextMenu={};FCK.ContextMenu.Listeners=[];FCK.ContextMenu.RegisterListener=function(A){if (A) this.Listeners.push(A);};function FCK_ContextMenu_Init(){var A=FCK.ContextMenu._InnerContextMenu=new FCKContextMenu(FCKBrowserInfo.IsIE?window:window.parent,FCKLang.Dir);A.CtrlDisable=FCKConfig.BrowserContextMenuOnCtrl;A.OnBeforeOpen=FCK_ContextMenu_OnBeforeOpen;A.OnItemClick=FCK_ContextMenu_OnItemClick;var B=FCK.ContextMenu;for (var i=0;i<FCKConfig.ContextMenu.length;i++) B.RegisterListener(FCK_ContextMenu_GetListener(FCKConfig.ContextMenu[i]));};function FCK_ContextMenu_GetListener(A){switch (A){case 'Generic':return {AddItems:function(menu,tag,tagName){menu.AddItem('Cut',FCKLang.Cut,7,FCKCommands.GetCommand('Cut').GetState()==-1);menu.AddItem('Copy',FCKLang.Copy,8,FCKCommands.GetCommand('Copy').GetState()==-1);menu.AddItem('Paste',FCKLang.Paste,9,FCKCommands.GetCommand('Paste').GetState()==-1);}};case 'Table':return {AddItems:function(menu,tag,tagName){var B=(tagName=='TABLE');var C=(!B&&FCKSelection.HasAncestorNode('TABLE'));if (C){menu.AddSeparator();var D=menu.AddItem('Cell',FCKLang.CellCM);D.AddItem('TableInsertCellBefore',FCKLang.InsertCellBefore,69);D.AddItem('TableInsertCellAfter',FCKLang.InsertCellAfter,58);D.AddItem('TableDeleteCells',FCKLang.DeleteCells,59);if (FCKBrowserInfo.IsGecko) D.AddItem('TableMergeCells',FCKLang.MergeCells,60,FCKCommands.GetCommand('TableMergeCells').GetState()==-1);else{D.AddItem('TableMergeRight',FCKLang.MergeRight,60,FCKCommands.GetCommand('TableMergeRight').GetState()==-1);D.AddItem('TableMergeDown',FCKLang.MergeDown,60,FCKCommands.GetCommand('TableMergeDown').GetState()==-1);};D.AddItem('TableHorizontalSplitCell',FCKLang.HorizontalSplitCell,61,FCKCommands.GetCommand('TableHorizontalSplitCell').GetState()==-1);D.AddItem('TableVerticalSplitCell',FCKLang.VerticalSplitCell,61,FCKCommands.GetCommand('TableVerticalSplitCell').GetState()==-1);D.AddSeparator();D.AddItem('TableCellProp',FCKLang.CellProperties,57,FCKCommands.GetCommand('TableCellProp').GetState()==-1);menu.AddSeparator();D=menu.AddItem('Row',FCKLang.RowCM);D.AddItem('TableInsertRowBefore',FCKLang.InsertRowBefore,70);D.AddItem('TableInsertRowAfter',FCKLang.InsertRowAfter,62);D.AddItem('TableDeleteRows',FCKLang.DeleteRows,63);menu.AddSeparator();D=menu.AddItem('Column',FCKLang.ColumnCM);D.AddItem('TableInsertColumnBefore',FCKLang.InsertColumnBefore,71);D.AddItem('TableInsertColumnAfter',FCKLang.InsertColumnAfter,64);D.AddItem('TableDeleteColumns',FCKLang.DeleteColumns,65);};if (B||C){menu.AddSeparator();menu.AddItem('TableDelete',FCKLang.TableDelete);menu.AddItem('TableProp',FCKLang.TableProperties,39);}}};case 'Link':return {AddItems:function(menu,tag,tagName){var E=(tagName=='A'||FCKSelection.HasAncestorNode('A'));if (E||FCK.GetNamedCommandState('Unlink')!=-1){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0&&F.href.length==0);if (G) return;menu.AddSeparator();if (E) menu.AddItem('Link',FCKLang.EditLink,34);menu.AddItem('Unlink',FCKLang.RemoveLink,35);}}};case 'Image':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&!tag.getAttribute('_fckfakelement')){menu.AddSeparator();menu.AddItem('Image',FCKLang.ImageProperties,37);}}};case 'Anchor':return {AddItems:function(menu,tag,tagName){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0);if (G||(tagName=='IMG'&&tag.getAttribute('_fckanchor'))){menu.AddSeparator();menu.AddItem('Anchor',FCKLang.AnchorProp,36);menu.AddItem('AnchorDelete',FCKLang.AnchorDelete);}}};case 'Flash':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckflash')){menu.AddSeparator();menu.AddItem('Flash',FCKLang.FlashProperties,38);}}};case 'Form':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('FORM')){menu.AddSeparator();menu.AddItem('Form',FCKLang.FormProp,48);}}};case 'Checkbox':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='checkbox'){menu.AddSeparator();menu.AddItem('Checkbox',FCKLang.CheckboxProp,49);}}};case 'Radio':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='radio'){menu.AddSeparator();menu.AddItem('Radio',FCKLang.RadioButtonProp,50);}}};case 'TextField':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='text'||tag.type=='password')){menu.AddSeparator();menu.AddItem('TextField',FCKLang.TextFieldProp,51);}}};case 'HiddenField':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckinputhidden')){menu.AddSeparator();menu.AddItem('HiddenField',FCKLang.HiddenFieldProp,56);}}};case 'ImageButton':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='image'){menu.AddSeparator();menu.AddItem('ImageButton',FCKLang.ImageButtonProp,55);}}};case 'Button':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='button'||tag.type=='submit'||tag.type=='reset')){menu.AddSeparator();menu.AddItem('Button',FCKLang.ButtonProp,54);}}};case 'Select':return {AddItems:function(menu,tag,tagName){if (tagName=='SELECT'){menu.AddSeparator();menu.AddItem('Select',FCKLang.SelectionFieldProp,53);}}};case 'Textarea':return {AddItems:function(menu,tag,tagName){if (tagName=='TEXTAREA'){menu.AddSeparator();menu.AddItem('Textarea',FCKLang.TextareaProp,52);}}};case 'BulletedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('UL')){menu.AddSeparator();menu.AddItem('BulletedList',FCKLang.BulletedListProp,27);}}};case 'NumberedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('OL')){menu.AddSeparator();menu.AddItem('NumberedList',FCKLang.NumberedListProp,26);}}};};return null;};function FCK_ContextMenu_OnBeforeOpen(){FCK.Events.FireEvent('OnSelectionChange');var A,sTagName;if ((A=FCKSelection.GetSelectedElement())) sTagName=A.tagName;var B=FCK.ContextMenu._InnerContextMenu;B.RemoveAllItems();var C=FCK.ContextMenu.Listeners;for (var i=0;i<C.length;i++) C[i].AddItems(B,A,sTagName);};function FCK_ContextMenu_OnItemClick(A){FCK.Focus();FCKCommands.GetCommand(A.Name).Execute(A.CustomData);};
+var FCKHtmlIterator=function(A){this._sourceHtml=A;};FCKHtmlIterator.prototype={Next:function(){var A=this._sourceHtml;if (A==null) return null;var B=FCKRegexLib.HtmlTag.exec(A);var C=false;var D="";if (B){if (B.index>0){D=A.substr(0,B.index);this._sourceHtml=A.substr(B.index);}else{C=true;D=B[0];this._sourceHtml=A.substr(B[0].length);}}else{D=A;this._sourceHtml=null;};return { 'isTag':C,'value':D };},Each:function(A){var B;while ((B=this.Next())) A(B.isTag,B.value);}};var FCKHtmlIterator=function(A){this._sourceHtml=A;};FCKHtmlIterator.prototype={Next:function(){var A=this._sourceHtml;if (A==null) return null;var B=FCKRegexLib.HtmlTag.exec(A);var C=false;var D="";if (B){if (B.index>0){D=A.substr(0,B.index);this._sourceHtml=A.substr(B.index);}else{C=true;D=B[0];this._sourceHtml=A.substr(B[0].length);}}else{D=A;this._sourceHtml=null;};return { 'isTag':C,'value':D };},Each:function(A){var B;while ((B=this.Next())) A(B.isTag,B.value);}};
+var FCKPlugin=function(A,B,C){this.Name=A;this.BasePath=C?C:FCKConfig.PluginsPath;this.Path=this.BasePath+A+'/';if (!B||B.length==0) this.AvailableLangs=[];else this.AvailableLangs=B.split(',');};FCKPlugin.prototype.Load=function(){if (this.AvailableLangs.length>0){var A;if (this.AvailableLangs.IndexOf(FCKLanguageManager.ActiveLanguage.Code)>=0) A=FCKLanguageManager.ActiveLanguage.Code;else A=this.AvailableLangs[0];LoadScript(this.Path+'lang/'+A+'.js');};LoadScript(this.Path+'fckplugin.js');};
+var FCKPlugins=FCK.Plugins={};FCKPlugins.ItemsCount=0;FCKPlugins.Items={};FCKPlugins.Load=function(){var A=FCKPlugins.Items;for (var i=0;i<FCKConfig.Plugins.Items.length;i++){var B=FCKConfig.Plugins.Items[i];var C=A[B[0]]=new FCKPlugin(B[0],B[1],B[2]);FCKPlugins.ItemsCount++;};for (var s in A) A[s].Load();FCKPlugins.Load=null;};
Index: /FCKeditor/releases/stable/editor/lang/_translationstatus.txt
===================================================================
--- /FCKeditor/releases/stable/editor/lang/_translationstatus.txt	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/_translationstatus.txt	(revision 1902)
@@ -1,5 +1,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -22,55 +22,56 @@
  */
 
-af.js      Found: 397   Missing: 15
-ar.js      Found: 412   Missing: 0
-bg.js      Found: 374   Missing: 38
-bn.js      Found: 381   Missing: 31
-bs.js      Found: 226   Missing: 186
-ca.js      Found: 412   Missing: 0
-cs.js      Found: 412   Missing: 0
-da.js      Found: 382   Missing: 30
-de.js      Found: 412   Missing: 0
-el.js      Found: 397   Missing: 15
-en-au.js   Found: 412   Missing: 0
-en-ca.js   Found: 412   Missing: 0
-en-uk.js   Found: 412   Missing: 0
-eo.js      Found: 346   Missing: 66
-es.js      Found: 412   Missing: 0
-et.js      Found: 412   Missing: 0
-eu.js      Found: 382   Missing: 30
-fa.js      Found: 398   Missing: 14
-fi.js      Found: 412   Missing: 0
-fo.js      Found: 397   Missing: 15
-fr.js      Found: 412   Missing: 0
-gl.js      Found: 382   Missing: 30
-he.js      Found: 412   Missing: 0
-hi.js      Found: 412   Missing: 0
-hr.js      Found: 412   Missing: 0
-hu.js      Found: 412   Missing: 0
-it.js      Found: 397   Missing: 15
-ja.js      Found: 412   Missing: 0
-km.js      Found: 371   Missing: 41
-ko.js      Found: 369   Missing: 43
-lt.js      Found: 377   Missing: 35
-lv.js      Found: 382   Missing: 30
-mn.js      Found: 226   Missing: 186
-ms.js      Found: 352   Missing: 60
-nb.js      Found: 396   Missing: 16
-nl.js      Found: 412   Missing: 0
-no.js      Found: 396   Missing: 16
-pl.js      Found: 412   Missing: 0
-pt-br.js   Found: 412   Missing: 0
-pt.js      Found: 382   Missing: 30
-ro.js      Found: 411   Missing: 1
-ru.js      Found: 412   Missing: 0
-sk.js      Found: 397   Missing: 15
-sl.js      Found: 412   Missing: 0
-sr-latn.js Found: 369   Missing: 43
-sr.js      Found: 369   Missing: 43
-sv.js      Found: 397   Missing: 15
-th.js      Found: 394   Missing: 18
-tr.js      Found: 397   Missing: 15
-uk.js      Found: 398   Missing: 14
-vi.js      Found: 397   Missing: 15
-zh-cn.js   Found: 412   Missing: 0
-zh.js      Found: 412   Missing: 0
+af.js      Found: 396   Missing: 15
+ar.js      Found: 411   Missing: 0
+bg.js      Found: 373   Missing: 38
+bn.js      Found: 380   Missing: 31
+bs.js      Found: 226   Missing: 185
+ca.js      Found: 411   Missing: 0
+cs.js      Found: 411   Missing: 0
+da.js      Found: 381   Missing: 30
+de.js      Found: 411   Missing: 0
+el.js      Found: 396   Missing: 15
+en-au.js   Found: 411   Missing: 0
+en-ca.js   Found: 411   Missing: 0
+en-uk.js   Found: 411   Missing: 0
+eo.js      Found: 346   Missing: 65
+es.js      Found: 411   Missing: 0
+et.js      Found: 411   Missing: 0
+eu.js      Found: 411   Missing: 0
+fa.js      Found: 397   Missing: 14
+fi.js      Found: 411   Missing: 0
+fo.js      Found: 396   Missing: 15
+fr-ca.js   Found: 411   Missing: 0
+fr.js      Found: 411   Missing: 0
+gl.js      Found: 381   Missing: 30
+he.js      Found: 411   Missing: 0
+hi.js      Found: 411   Missing: 0
+hr.js      Found: 411   Missing: 0
+hu.js      Found: 411   Missing: 0
+it.js      Found: 396   Missing: 15
+ja.js      Found: 411   Missing: 0
+km.js      Found: 370   Missing: 41
+ko.js      Found: 390   Missing: 21
+lt.js      Found: 376   Missing: 35
+lv.js      Found: 381   Missing: 30
+mn.js      Found: 411   Missing: 0
+ms.js      Found: 352   Missing: 59
+nb.js      Found: 395   Missing: 16
+nl.js      Found: 411   Missing: 0
+no.js      Found: 395   Missing: 16
+pl.js      Found: 411   Missing: 0
+pt-br.js   Found: 411   Missing: 0
+pt.js      Found: 381   Missing: 30
+ro.js      Found: 410   Missing: 1
+ru.js      Found: 411   Missing: 0
+sk.js      Found: 396   Missing: 15
+sl.js      Found: 411   Missing: 0
+sr-latn.js Found: 368   Missing: 43
+sr.js      Found: 368   Missing: 43
+sv.js      Found: 396   Missing: 15
+th.js      Found: 393   Missing: 18
+tr.js      Found: 396   Missing: 15
+uk.js      Found: 397   Missing: 14
+vi.js      Found: 396   Missing: 15
+zh-cn.js   Found: 411   Missing: 0
+zh.js      Found: 411   Missing: 0
Index: /FCKeditor/releases/stable/editor/lang/af.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/af.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/af.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignoreer karakter soort defenisies",
 DlgPasteRemoveStyles	: "Verweider Styl defenisies",
-DlgPasteCleanBox		: "Maak Box Skoon",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/ar.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/ar.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/ar.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "تجاهل تعريفات أسماء الخطوط",
 DlgPasteRemoveStyles	: "إزالة تعريفات الأنماط",
-DlgPasteCleanBox		: "نظّف محتوى الصندوق",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/bg.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/bg.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/bg.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Игнорирай шрифтовите дефиниции",
 DlgPasteRemoveStyles	: "Изтрий стиловите дефиниции",
-DlgPasteCleanBox		: "Изчисти",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/bn.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/bn.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/bn.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "ফন্ট ফেস ডেফিনেশন ইগনোর করুন",
 DlgPasteRemoveStyles	: "স্টাইল ডেফিনেশন সরিয়ে দিন",
-DlgPasteCleanBox		: "বাক্স পরিষ্কার করুন",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/bs.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/bs.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/bs.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignore Font Face definitions",	//MISSING
 DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
-DlgPasteCleanBox		: "Clean Up Box",	//MISSING
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/ca.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/ca.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/ca.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -27,11 +27,11 @@
 Dir					: "ltr",
 
-ToolbarCollapse		: "Col·lapsa la barra",
-ToolbarExpand		: "Amplia la barra",
+ToolbarCollapse		: "Redueix la barra d'eines",
+ToolbarExpand		: "Amplia la barra d'eines",
 
 // Toolbar Items and Context Menu
 Save				: "Desa",
 NewPage				: "Nova Pàgina",
-Preview				: "Vista Prèvia",
+Preview				: "Visualització prèvia",
 Cut					: "Retalla",
 Copy				: "Copia",
@@ -59,5 +59,5 @@
 InsertSmileyLbl		: "Icona",
 InsertSmiley		: "Insereix icona",
-About				: "Quant a FCKeditor",
+About				: "Quant a l'FCKeditor",
 Bold				: "Negreta",
 Italic				: "Cursiva",
@@ -66,17 +66,17 @@
 Subscript			: "Subíndex",
 Superscript			: "Superíndex",
-LeftJustify			: "Aliniament esquerra",
-CenterJustify		: "Aliniament centrat",
-RightJustify		: "Aliniament dreta",
-BlockJustify		: "Justifica",
-DecreaseIndent		: "Sagna el text",
-IncreaseIndent		: "Treu el sagnat del text",
+LeftJustify			: "Alinia a l'esquerra",
+CenterJustify		: "Centrat",
+RightJustify		: "Alinia a la dreta",
+BlockJustify		: "Justificat",
+DecreaseIndent		: "Redueix el sagnat",
+IncreaseIndent		: "Augmenta el sagnat",
 Blockquote			: "Bloc de cita",
 Undo				: "Desfés",
 Redo				: "Refés",
 NumberedListLbl		: "Llista numerada",
-NumberedList		: "Aplica o elimina la llista numerada",
+NumberedList		: "Numeració activada/desactivada",
 BulletedListLbl		: "Llista de pics",
-BulletedList		: "Aplica o elimina la llista de pics",
+BulletedList		: "Pics activats/descativats",
 ShowTableBorders	: "Mostra les vores de les taules",
 ShowDetails			: "Mostra detalls",
@@ -144,5 +144,5 @@
 FormProp			: "Propietats del formulari",
 
-FontFormats			: "Normal;Formatejat;Adreça;Encapçalament 1;Encapçalament 2;Encapçalament 3;Encapçalament 4;Encapçalament 5;Encapçalament 6",
+FontFormats			: "Normal;Formatejat;Adreça;Encapçalament 1;Encapçalament 2;Encapçalament 3;Encapçalament 4;Encapçalament 5;Encapçalament 6;Normal (DIV)",
 
 // Alerts and Messages
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignora definicions de font",
 DlgPasteRemoveStyles	: "Elimina definicions d'estil",
-DlgPasteCleanBox		: "Neteja camp",
 
 // Color Picker
@@ -376,5 +375,5 @@
 // Speller Pages Dialog
 DlgSpellNotInDic		: "No és al diccionari",
-DlgSpellChangeTo		: "Canvia a",
+DlgSpellChangeTo		: "Reemplaça amb",
 DlgSpellBtnIgnore		: "Ignora",
 DlgSpellBtnIgnoreAll	: "Ignora-les totes",
@@ -382,12 +381,12 @@
 DlgSpellBtnReplaceAll	: "Canvia-les totes",
 DlgSpellBtnUndo			: "Desfés",
-DlgSpellNoSuggestions	: "Cap sugerència",
-DlgSpellProgress		: "Comprovació ortogràfica en progrés",
-DlgSpellNoMispell		: "Comprovació ortogràfica completada",
-DlgSpellNoChanges		: "Comprovació ortogràfica: cap paraulada canviada",
-DlgSpellOneChange		: "Comprovació ortogràfica: una paraula canviada",
-DlgSpellManyChanges		: "Comprovació ortogràfica %1 paraules canviades",
-
-IeSpellDownload			: "Comprovació ortogràfica no instal·lada. Voleu descarregar-ho ara?",
+DlgSpellNoSuggestions	: "Cap suggeriment",
+DlgSpellProgress		: "Verificació ortogràfica en curs...",
+DlgSpellNoMispell		: "Verificació ortogràfica acabada: no hi ha cap paraula mal escrita",
+DlgSpellNoChanges		: "Verificació ortogràfica: no s'ha canviat cap paraula",
+DlgSpellOneChange		: "Verificació ortogràfica: s'ha canviat una paraula",
+DlgSpellManyChanges		: "Verificació ortogràfica: s'han canviat %1 paraules",
+
+IeSpellDownload			: "Verificació ortogràfica no instal·lada. Voleu descarregar-ho ara?",
 
 // Button Dialog
@@ -432,6 +431,6 @@
 DlgTextName			: "Nom",
 DlgTextValue		: "Valor",
-DlgTextCharWidth	: "Amplada de caràcter",
-DlgTextMaxChars		: "Màxim de caràcters",
+DlgTextCharWidth	: "Amplada",
+DlgTextMaxChars		: "Nombre màxim de caràcters",
 DlgTextType			: "Tipus",
 DlgTextTypeText		: "Text",
@@ -453,6 +452,6 @@
 DlgLstTypeLCase		: "Lletres minúscules (a, b, c)",
 DlgLstTypeUCase		: "Lletres majúscules (A, B, C)",
-DlgLstTypeSRoman	: "Números romans minúscules (i, ii, iii)",
-DlgLstTypeLRoman	: "Números romans majúscules (I, II, III)",
+DlgLstTypeSRoman	: "Números romans en minúscules (i, ii, iii)",
+DlgLstTypeLRoman	: "Números romans en majúscules (I, II, III)",
 
 // Document Properties Dialog
@@ -503,5 +502,5 @@
 Templates			: "Plantilles",
 DlgTemplatesTitle	: "Contingut plantilles",
-DlgTemplatesSelMsg	: "Si us plau, seleccioneu la plantilla per obrir en l'editor<br>(el contingut actual no serà enregistrat):",
+DlgTemplatesSelMsg	: "Si us plau, seleccioneu la plantilla per obrir a l'editor<br>(el contingut actual no serà enregistrat):",
 DlgTemplatesLoading	: "Carregant la llista de plantilles. Si us plau, espereu...",
 DlgTemplatesNoTpl	: "(No hi ha plantilles definides)",
Index: /FCKeditor/releases/stable/editor/lang/cs.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/cs.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/cs.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignorovat písmo",
 DlgPasteRemoveStyles	: "Odstranit styly",
-DlgPasteCleanBox		: "Vyčistit",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/da.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/da.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/da.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignorer font definitioner",
 DlgPasteRemoveStyles	: "Ignorer typografi",
-DlgPasteCleanBox		: "Slet indhold",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/de.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/de.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/de.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignoriere Schriftart-Definitionen",
 DlgPasteRemoveStyles	: "Entferne Style-Definitionen",
-DlgPasteCleanBox		: "Inhalt aufräumen",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/el.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/el.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/el.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Αγνόηση προδιαγραφών γραμματοσειράς",
 DlgPasteRemoveStyles	: "Αφαίρεση προδιαγραφών στύλ",
-DlgPasteCleanBox		: "Κουτί εκαθάρισης",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/en-au.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/en-au.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/en-au.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignore Font Face definitions",
 DlgPasteRemoveStyles	: "Remove Styles definitions",
-DlgPasteCleanBox		: "Clean Up Box",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/en-ca.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/en-ca.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/en-ca.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignore Font Face definitions",
 DlgPasteRemoveStyles	: "Remove Styles definitions",
-DlgPasteCleanBox		: "Clean Up Box",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/en-uk.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/en-uk.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/en-uk.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignore Font Face definitions",
 DlgPasteRemoveStyles	: "Remove Styles definitions",
-DlgPasteCleanBox		: "Clean Up Box",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/en.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/en.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/en.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignore Font Face definitions",
 DlgPasteRemoveStyles	: "Remove Styles definitions",
-DlgPasteCleanBox		: "Clean Up Box",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/eo.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/eo.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/eo.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignore Font Face definitions",	//MISSING
 DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
-DlgPasteCleanBox		: "Clean Up Box",	//MISSING
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/es.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/es.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/es.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignorar definiciones de fuentes",
 DlgPasteRemoveStyles	: "Remover definiciones de estilo",
-DlgPasteCleanBox		: "Borrar el contenido del cuadro",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/et.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/et.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/et.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignoreeri kirja definitsioone",
 DlgPasteRemoveStyles	: "Eemalda stiilide definitsioonid",
-DlgPasteCleanBox		: "Puhasta kast",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/eu.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/eu.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/eu.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -47,5 +47,5 @@
 RemoveLink			: "Kendu Esteka",
 Anchor				: "Aingura",
-AnchorDelete		: "Remove Anchor",	//MISSING
+AnchorDelete		: "Ezabatu Aingura",
 InsertImageLbl		: "Irudia",
 InsertImage			: "Txertatu/Editatu Irudia",
@@ -73,5 +73,5 @@
 DecreaseIndent		: "Txikitu Koska",
 IncreaseIndent		: "Handitu Koska",
-Blockquote			: "Blockquote",	//MISSING
+Blockquote			: "Aipamen blokea",
 Undo				: "Desegin",
 Redo				: "Berregin",
@@ -107,5 +107,5 @@
 
 FitWindow		: "Maximizatu editorearen tamaina",
-ShowBlocks		: "Show Blocks",	//MISSING
+ShowBlocks		: "Blokeak erakutsi",
 
 // Context Menu
@@ -114,18 +114,18 @@
 RowCM				: "Errenkada",
 ColumnCM			: "Zutabea",
-InsertRowAfter		: "Insert Row After",	//MISSING
-InsertRowBefore		: "Insert Row Before",	//MISSING
+InsertRowAfter		: "Txertatu Lerroa Ostean",
+InsertRowBefore		: "Txertatu Lerroa Aurretik",
 DeleteRows			: "Ezabatu Errenkadak",
-InsertColumnAfter	: "Insert Column After",	//MISSING
-InsertColumnBefore	: "Insert Column Before",	//MISSING
+InsertColumnAfter	: "Txertatu Zutabea Ostean",
+InsertColumnBefore	: "Txertatu Zutabea Aurretik",
 DeleteColumns		: "Ezabatu Zutabeak",
-InsertCellAfter		: "Insert Cell After",	//MISSING
-InsertCellBefore	: "Insert Cell Before",	//MISSING
+InsertCellAfter		: "Txertatu Gelaxka Ostean",
+InsertCellBefore	: "Txertatu Gelaxka Aurretik",
 DeleteCells			: "Kendu Gelaxkak",
 MergeCells			: "Batu Gelaxkak",
-MergeRight			: "Merge Right",	//MISSING
-MergeDown			: "Merge Down",	//MISSING
-HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
-VerticalSplitCell	: "Split Cell Vertically",	//MISSING
+MergeRight			: "Elkartu Eskumara",
+MergeDown			: "Elkartu Behera",
+HorizontalSplitCell	: "Banatu Gelaxkak Horizontalki",
+VerticalSplitCell	: "Banatu Gelaxkak Bertikalki",
 TableDelete			: "Ezabatu Taula",
 CellProperties		: "Gelaxkaren Ezaugarriak",
@@ -273,5 +273,5 @@
 DlnLnkMsgNoEMail	: "Mesedez ePosta helbidea idatzi",
 DlnLnkMsgNoAnchor	: "Mesedez aingura bat aukeratu",
-DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+DlnLnkMsgInvPopName	: "Popup lehioaren izenak karaktere alfabetiko batekin hasi behar du eta eta ezin du zuriunerik izan",
 
 // Color Dialog
@@ -334,5 +334,5 @@
 
 // Find and Replace Dialog
-DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+DlgFindAndReplaceTitle	: "Bilatu eta Ordeztu",
 
 // Find Dialog
@@ -358,8 +358,7 @@
 
 DlgPasteMsg2	: "Mesedez teklatua erabilita (<STRONG>Ctrl+V</STRONG>) ondorego eremuan testua itsatsi eta <STRONG>OK</STRONG> sakatu.",
-DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteSec		: "Nabigatzailearen segurtasun ezarpenak direla eta, editoreak ezin du arbela zuzenean erabili. Leiho honetan berriro itsatsi behar duzu.",
 DlgPasteIgnoreFont		: "Letra Motaren definizioa ezikusi",
 DlgPasteRemoveStyles	: "Estilo definizioak kendu",
-DlgPasteCleanBox		: "Testu-eremua Garbitu",
 
 // Color Picker
@@ -395,7 +394,7 @@
 DlgButtonText		: "Testua (Balorea)",
 DlgButtonType		: "Mota",
-DlgButtonTypeBtn	: "Button",	//MISSING
-DlgButtonTypeSbm	: "Submit",	//MISSING
-DlgButtonTypeRst	: "Reset",	//MISSING
+DlgButtonTypeBtn	: "Botoia",
+DlgButtonTypeSbm	: "Bidali",
+DlgButtonTypeRst	: "Garbitu",
 
 // Checkbox and Radio Button Dialogs
@@ -446,5 +445,5 @@
 BulletedListProp	: "Buletdun Zerrendaren Ezarpenak",
 NumberedListProp	: "Zenbakidun Zerrendaren Ezarpenak",
-DlgLstStart			: "Start",	//MISSING
+DlgLstStart			: "Hasiera",
 DlgLstType			: "Mota",
 DlgLstTypeCircle	: "Zirkulua",
@@ -469,14 +468,14 @@
 DlgDocLangCode		: "Hizkuntzaren Kodea",
 DlgDocCharSet		: "Karaktere Multzoaren Kodeketa",
-DlgDocCharSetCE		: "Central European",	//MISSING
-DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
-DlgDocCharSetCR		: "Cyrillic",	//MISSING
-DlgDocCharSetGR		: "Greek",	//MISSING
-DlgDocCharSetJP		: "Japanese",	//MISSING
-DlgDocCharSetKR		: "Korean",	//MISSING
-DlgDocCharSetTR		: "Turkish",	//MISSING
-DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
-DlgDocCharSetWE		: "Western European",	//MISSING
-DlgDocCharSetOther	: "Beste Karaktere Multzoaren Kodeketa",
+DlgDocCharSetCE		: "Erdialdeko Europakoa",
+DlgDocCharSetCT		: "Txinatar Tradizionala (Big5)",
+DlgDocCharSetCR		: "Zirilikoa",
+DlgDocCharSetGR		: "Grekoa",
+DlgDocCharSetJP		: "Japoniarra",
+DlgDocCharSetKR		: "Korearra",
+DlgDocCharSetTR		: "Turkiarra",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Mendebaldeko Europakoa",
+DlgDocCharSetOther	: "Beste Karaktere Multzoko Kodeketa",
 
 DlgDocDocType		: "Document Type Goiburua",
@@ -507,5 +506,5 @@
 DlgTemplatesLoading	: "Txantiloiak kargatzen. Itxaron mesedez...",
 DlgTemplatesNoTpl	: "(Ez dago definitutako txantiloirik)",
-DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+DlgTemplatesReplace	: "Ordeztu oraingo edukiak",
 
 // About Dialog
Index: /FCKeditor/releases/stable/editor/lang/fa.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/fa.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/fa.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "چشم‌پوشی از تعاریف نوع قلم",
 DlgPasteRemoveStyles	: "چشم‌پوشی از تعاریف سبک (style)",
-DlgPasteCleanBox		: "پاک‌کردن ناحیه",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/fi.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/fi.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/fi.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Jätä huomioimatta fonttimääritykset",
 DlgPasteRemoveStyles	: "Poista tyylimääritykset",
-DlgPasteCleanBox		: "Tyhjennä",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/fo.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/fo.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/fo.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Forfjóna Font definitiónirnar",
 DlgPasteRemoveStyles	: "Strika Styles definitiónir",
-DlgPasteCleanBox		: "Reinskanarkassi",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/fr-ca.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/fr-ca.js	(revision 1902)
+++ /FCKeditor/releases/stable/editor/lang/fr-ca.js	(revision 1902)
@@ -0,0 +1,515 @@
+﻿/*
+ * 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 ==
+ *
+ * Canadian French language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Masquer Outils",
+ToolbarExpand		: "Afficher Outils",
+
+// Toolbar Items and Context Menu
+Save				: "Sauvegarder",
+NewPage				: "Nouvelle page",
+Preview				: "Previsualiser",
+Cut					: "Couper",
+Copy				: "Copier",
+Paste				: "Coller",
+PasteText			: "Coller en tant que texte",
+PasteWord			: "Coller en tant que Word (formaté)",
+Print				: "Imprimer",
+SelectAll			: "Tout sélectionner",
+RemoveFormat		: "Supprimer le formatage",
+InsertLinkLbl		: "Lien",
+InsertLink			: "Insérer/modifier le lien",
+RemoveLink			: "Supprimer le lien",
+Anchor				: "Insérer/modifier l'ancre",
+AnchorDelete		: "Supprimer l'ancre",
+InsertImageLbl		: "Image",
+InsertImage			: "Insérer/modifier l'image",
+InsertFlashLbl		: "Animation Flash",
+InsertFlash			: "Insérer/modifier l'animation Flash",
+InsertTableLbl		: "Tableau",
+InsertTable			: "Insérer/modifier le tableau",
+InsertLineLbl		: "Séparateur",
+InsertLine			: "Insérer un séparateur",
+InsertSpecialCharLbl: "Caractères spéciaux",
+InsertSpecialChar	: "Insérer un caractère spécial",
+InsertSmileyLbl		: "Emoticon",
+InsertSmiley		: "Insérer un Emoticon",
+About				: "A propos de FCKeditor",
+Bold				: "Gras",
+Italic				: "Italique",
+Underline			: "Souligné",
+StrikeThrough		: "Barrer",
+Subscript			: "Indice",
+Superscript			: "Exposant",
+LeftJustify			: "Aligner à gauche",
+CenterJustify		: "Centrer",
+RightJustify		: "Aligner à Droite",
+BlockJustify		: "Texte justifié",
+DecreaseIndent		: "Diminuer le retrait",
+IncreaseIndent		: "Augmenter le retrait",
+Blockquote			: "Citation",
+Undo				: "Annuler",
+Redo				: "Refaire",
+NumberedListLbl		: "Liste numérotée",
+NumberedList		: "Insérer/supprimer la liste numérotée",
+BulletedListLbl		: "Liste à puces",
+BulletedList		: "Insérer/supprimer la liste à puces",
+ShowTableBorders	: "Afficher les bordures du tableau",
+ShowDetails			: "Afficher les caractères invisibles",
+Style				: "Style",
+FontFormat			: "Format",
+Font				: "Police",
+FontSize			: "Taille",
+TextColor			: "Couleur de caractère",
+BGColor				: "Couleur de fond",
+Source				: "Source",
+Find				: "Chercher",
+Replace				: "Remplacer",
+SpellCheck			: "Orthographe",
+UniversalKeyboard	: "Clavier universel",
+PageBreakLbl		: "Saut de page",
+PageBreak			: "Insérer un saut de page",
+
+Form			: "Formulaire",
+Checkbox		: "Case à cocher",
+RadioButton		: "Bouton radio",
+TextField		: "Champ texte",
+Textarea		: "Zone de texte",
+HiddenField		: "Champ caché",
+Button			: "Bouton",
+SelectionField	: "Champ de sélection",
+ImageButton		: "Bouton image",
+
+FitWindow		: "Edition pleine page",
+ShowBlocks		: "Afficher les blocs",
+
+// Context Menu
+EditLink			: "Modifier le lien",
+CellCM				: "Cellule",
+RowCM				: "Ligne",
+ColumnCM			: "Colonne",
+InsertRowAfter		: "Insérer une ligne après",
+InsertRowBefore		: "Insérer une ligne avant",
+DeleteRows			: "Supprimer des lignes",
+InsertColumnAfter	: "Insérer une colonne après",
+InsertColumnBefore	: "Insérer une colonne avant",
+DeleteColumns		: "Supprimer des colonnes",
+InsertCellAfter		: "Insérer une cellule après",
+InsertCellBefore	: "Insérer une cellule avant",
+DeleteCells			: "Supprimer des cellules",
+MergeCells			: "Fusionner les cellules",
+MergeRight			: "Fusionner à droite",
+MergeDown			: "Fusionner en bas",
+HorizontalSplitCell	: "Scinder la cellule horizontalement",
+VerticalSplitCell	: "Scinder la cellule verticalement",
+TableDelete			: "Supprimer le tableau",
+CellProperties		: "Propriétés de cellule",
+TableProperties		: "Propriétés du tableau",
+ImageProperties		: "Propriétés de l'image",
+FlashProperties		: "Propriétés de l'animation Flash",
+
+AnchorProp			: "Propriétés de l'ancre",
+ButtonProp			: "Propriétés du bouton",
+CheckboxProp		: "Propriétés de la case à cocher",
+HiddenFieldProp		: "Propriétés du champ caché",
+RadioButtonProp		: "Propriétés du bouton radio",
+ImageButtonProp		: "Propriétés du bouton image",
+TextFieldProp		: "Propriétés du champ texte",
+SelectionFieldProp	: "Propriétés de la liste/du menu",
+TextareaProp		: "Propriétés de la zone de texte",
+FormProp			: "Propriétés du formulaire",
+
+FontFormats			: "Normal;Formaté;Adresse;En-tête 1;En-tête 2;En-tête 3;En-tête 4;En-tête 5;En-tête 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Calcul XHTML. Veuillez patienter...",
+Done				: "Terminé",
+PasteWordConfirm	: "Le texte à coller semble provenir de Word. Désirez-vous le nettoyer avant de coller?",
+NotCompatiblePaste	: "Cette commande nécessite Internet Explorer version 5.5 et plus. Souhaitez-vous coller sans nettoyage?",
+UnknownToolbarItem	: "Élément de barre d'outil inconnu \"%1\"",
+UnknownCommand		: "Nom de commande inconnu \"%1\"",
+NotImplemented		: "Commande indisponible",
+UnknownToolbarSet	: "La barre d'outils \"%1\" n'existe pas",
+NoActiveX			: "Les paramètres de sécurité de votre navigateur peuvent limiter quelques fonctionnalités de l'éditeur. Veuillez activer l'option \"Exécuter les contrôles ActiveX et les plug-ins\". Il se peut que vous rencontriez des erreurs et remarquiez quelques limitations.",
+BrowseServerBlocked : "Le navigateur n'a pas pu être ouvert. Assurez-vous que les bloqueurs de popups soient désactivés.",
+DialogBlocked		: "La fenêtre de dialogue n'a pas pu s'ouvrir. Assurez-vous que les bloqueurs de popups soient désactivés.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Annuler",
+DlgBtnClose			: "Fermer",
+DlgBtnBrowseServer	: "Parcourir le serveur",
+DlgAdvancedTag		: "Avancée",
+DlgOpOther			: "<autre>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Veuillez saisir l'URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<Par défaut>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Sens d'écriture",
+DlgGenLangDirLtr	: "De gauche à droite (LTR)",
+DlgGenLangDirRtl	: "De droite à gauche (RTL)",
+DlgGenLangCode		: "Code langue",
+DlgGenAccessKey		: "Équivalent clavier",
+DlgGenName			: "Nom",
+DlgGenTabIndex		: "Ordre de tabulation",
+DlgGenLongDescr		: "URL de description longue",
+DlgGenClass			: "Classes de feuilles de style",
+DlgGenTitle			: "Titre",
+DlgGenContType		: "Type de contenu",
+DlgGenLinkCharset	: "Encodage de caractère",
+DlgGenStyle			: "Style",
+
+// Image Dialog
+DlgImgTitle			: "Propriétés de l'image",
+DlgImgInfoTab		: "Informations sur l'image",
+DlgImgBtnUpload		: "Envoyer sur le serveur",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Télécharger",
+DlgImgAlt			: "Texte de remplacement",
+DlgImgWidth			: "Largeur",
+DlgImgHeight		: "Hauteur",
+DlgImgLockRatio		: "Garder les proportions",
+DlgBtnResetSize		: "Taille originale",
+DlgImgBorder		: "Bordure",
+DlgImgHSpace		: "Espacement horizontal",
+DlgImgVSpace		: "Espacement vertical",
+DlgImgAlign			: "Alignement",
+DlgImgAlignLeft		: "Gauche",
+DlgImgAlignAbsBottom: "Abs Bas",
+DlgImgAlignAbsMiddle: "Abs Milieu",
+DlgImgAlignBaseline	: "Bas du texte",
+DlgImgAlignBottom	: "Bas",
+DlgImgAlignMiddle	: "Milieu",
+DlgImgAlignRight	: "Droite",
+DlgImgAlignTextTop	: "Haut du texte",
+DlgImgAlignTop		: "Haut",
+DlgImgPreview		: "Prévisualisation",
+DlgImgAlertUrl		: "Veuillez saisir l'URL de l'image",
+DlgImgLinkTab		: "Lien",
+
+// Flash Dialog
+DlgFlashTitle		: "Propriétés de l'animation Flash",
+DlgFlashChkPlay		: "Lecture automatique",
+DlgFlashChkLoop		: "Boucle",
+DlgFlashChkMenu		: "Activer le menu Flash",
+DlgFlashScale		: "Affichage",
+DlgFlashScaleAll	: "Par défaut (tout montrer)",
+DlgFlashScaleNoBorder	: "Sans bordure",
+DlgFlashScaleFit	: "Ajuster aux dimensions",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Propriétés du lien",
+DlgLnkInfoTab		: "Informations sur le lien",
+DlgLnkTargetTab		: "Destination",
+
+DlgLnkType			: "Type de lien",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Ancre dans cette page",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocole",
+DlgLnkProtoOther	: "<autre>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Sélectionner une ancre",
+DlgLnkAnchorByName	: "Par nom",
+DlgLnkAnchorById	: "Par id",
+DlgLnkNoAnchors		: "(Pas d'ancre disponible dans le document)",
+DlgLnkEMail			: "Adresse E-Mail",
+DlgLnkEMailSubject	: "Sujet du message",
+DlgLnkEMailBody		: "Corps du message",
+DlgLnkUpload		: "Télécharger",
+DlgLnkBtnUpload		: "Envoyer sur le serveur",
+
+DlgLnkTarget		: "Destination",
+DlgLnkTargetFrame	: "<Cadre>",
+DlgLnkTargetPopup	: "<fenêtre popup>",
+DlgLnkTargetBlank	: "Nouvelle fenêtre (_blank)",
+DlgLnkTargetParent	: "Fenêtre mère (_parent)",
+DlgLnkTargetSelf	: "Même fenêtre (_self)",
+DlgLnkTargetTop		: "Fenêtre supérieure (_top)",
+DlgLnkTargetFrameName	: "Nom du cadre de destination",
+DlgLnkPopWinName	: "Nom de la fenêtre popup",
+DlgLnkPopWinFeat	: "Caractéristiques de la fenêtre popup",
+DlgLnkPopResize		: "Taille modifiable",
+DlgLnkPopLocation	: "Barre d'adresses",
+DlgLnkPopMenu		: "Barre de menu",
+DlgLnkPopScroll		: "Barres de défilement",
+DlgLnkPopStatus		: "Barre d'état",
+DlgLnkPopToolbar	: "Barre d'outils",
+DlgLnkPopFullScrn	: "Plein écran (IE)",
+DlgLnkPopDependent	: "Dépendante (Netscape)",
+DlgLnkPopWidth		: "Largeur",
+DlgLnkPopHeight		: "Hauteur",
+DlgLnkPopLeft		: "Position à partir de la gauche",
+DlgLnkPopTop		: "Position à partir du haut",
+
+DlnLnkMsgNoUrl		: "Veuillez saisir l'URL",
+DlnLnkMsgNoEMail	: "Veuillez saisir l'adresse e-mail",
+DlnLnkMsgNoAnchor	: "Veuillez sélectionner une ancre",
+DlnLnkMsgInvPopName	: "Le nom de la fenêtre popup doit commencer par une lettre et ne doit pas contenir d'espace",
+
+// Color Dialog
+DlgColorTitle		: "Sélectionner",
+DlgColorBtnClear	: "Effacer",
+DlgColorHighlight	: "Prévisualisation",
+DlgColorSelected	: "Sélectionné",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Insérer un Emoticon",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Insérer un caractère spécial",
+
+// Table Dialog
+DlgTableTitle		: "Propriétés du tableau",
+DlgTableRows		: "Lignes",
+DlgTableColumns		: "Colonnes",
+DlgTableBorder		: "Taille de la bordure",
+DlgTableAlign		: "Alignement",
+DlgTableAlignNotSet	: "<Par défaut>",
+DlgTableAlignLeft	: "Gauche",
+DlgTableAlignCenter	: "Centré",
+DlgTableAlignRight	: "Droite",
+DlgTableWidth		: "Largeur",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "pourcentage",
+DlgTableHeight		: "Hauteur",
+DlgTableCellSpace	: "Espacement",
+DlgTableCellPad		: "Contour",
+DlgTableCaption		: "Titre",
+DlgTableSummary		: "Résumé",
+
+// Table Cell Dialog
+DlgCellTitle		: "Propriétés de la cellule",
+DlgCellWidth		: "Largeur",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "pourcentage",
+DlgCellHeight		: "Hauteur",
+DlgCellWordWrap		: "Retour à la ligne",
+DlgCellWordWrapNotSet	: "<Par défaut>",
+DlgCellWordWrapYes	: "Oui",
+DlgCellWordWrapNo	: "Non",
+DlgCellHorAlign		: "Alignement horizontal",
+DlgCellHorAlignNotSet	: "<Par défaut>",
+DlgCellHorAlignLeft	: "Gauche",
+DlgCellHorAlignCenter	: "Centré",
+DlgCellHorAlignRight: "Droite",
+DlgCellVerAlign		: "Alignement vertical",
+DlgCellVerAlignNotSet	: "<Par défaut>",
+DlgCellVerAlignTop	: "Haut",
+DlgCellVerAlignMiddle	: "Milieu",
+DlgCellVerAlignBottom	: "Bas",
+DlgCellVerAlignBaseline	: "Bas du texte",
+DlgCellRowSpan		: "Lignes fusionnées",
+DlgCellCollSpan		: "Colonnes fusionnées",
+DlgCellBackColor	: "Couleur de fond",
+DlgCellBorderColor	: "Couleur de bordure",
+DlgCellBtnSelect	: "Sélectionner...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Chercher et Remplacer",
+
+// Find Dialog
+DlgFindTitle		: "Chercher",
+DlgFindFindBtn		: "Chercher",
+DlgFindNotFoundMsg	: "Le texte indiqué est introuvable.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Remplacer",
+DlgReplaceFindLbl		: "Rechercher:",
+DlgReplaceReplaceLbl	: "Remplacer par:",
+DlgReplaceCaseChk		: "Respecter la casse",
+DlgReplaceReplaceBtn	: "Remplacer",
+DlgReplaceReplAllBtn	: "Tout remplacer",
+DlgReplaceWordChk		: "Mot entier",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Les paramètres de sécurité de votre navigateur empêchent l'éditeur de couper automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+X).",
+PasteErrorCopy	: "Les paramètres de sécurité de votre navigateur empêchent l'éditeur de copier automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+C).",
+
+PasteAsText		: "Coller comme texte",
+PasteFromWord	: "Coller à partir de Word",
+
+DlgPasteMsg2	: "Veuillez coller dans la zone ci-dessous en utilisant le clavier (<STRONG>Ctrl+V</STRONG>) et appuyer sur <STRONG>OK</STRONG>.",
+DlgPasteSec		: "A cause des paramètres de sécurité de votre navigateur, l'éditeur ne peut accéder au presse-papier directement. Vous devez coller à nouveau le contenu dans cette fenêtre.",
+DlgPasteIgnoreFont		: "Ignorer les polices de caractères",
+DlgPasteRemoveStyles	: "Supprimer les styles",
+
+// Color Picker
+ColorAutomatic	: "Automatique",
+ColorMoreColors	: "Plus de couleurs...",
+
+// Document Properties
+DocProps		: "Propriétés du document",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Propriétés de l'ancre",
+DlgAnchorName		: "Nom de l'ancre",
+DlgAnchorErrorName	: "Veuillez saisir le nom de l'ancre",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Pas dans le dictionnaire",
+DlgSpellChangeTo		: "Changer en",
+DlgSpellBtnIgnore		: "Ignorer",
+DlgSpellBtnIgnoreAll	: "Ignorer tout",
+DlgSpellBtnReplace		: "Remplacer",
+DlgSpellBtnReplaceAll	: "Remplacer tout",
+DlgSpellBtnUndo			: "Annuler",
+DlgSpellNoSuggestions	: "- Pas de suggestion -",
+DlgSpellProgress		: "Vérification d'orthographe en cours...",
+DlgSpellNoMispell		: "Vérification d'orthographe terminée: pas d'erreur trouvée",
+DlgSpellNoChanges		: "Vérification d'orthographe terminée: Pas de modifications",
+DlgSpellOneChange		: "Vérification d'orthographe terminée: Un mot modifié",
+DlgSpellManyChanges		: "Vérification d'orthographe terminée: %1 mots modifiés",
+
+IeSpellDownload			: "Le Correcteur d'orthographe n'est pas installé. Souhaitez-vous le télécharger maintenant?",
+
+// Button Dialog
+DlgButtonText		: "Texte (Valeur)",
+DlgButtonType		: "Type",
+DlgButtonTypeBtn	: "Bouton",
+DlgButtonTypeSbm	: "Soumettre",
+DlgButtonTypeRst	: "Réinitialiser",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nom",
+DlgCheckboxValue	: "Valeur",
+DlgCheckboxSelected	: "Sélectionné",
+
+// Form Dialog
+DlgFormName		: "Nom",
+DlgFormAction	: "Action",
+DlgFormMethod	: "Méthode",
+
+// Select Field Dialog
+DlgSelectName		: "Nom",
+DlgSelectValue		: "Valeur",
+DlgSelectSize		: "Taille",
+DlgSelectLines		: "lignes",
+DlgSelectChkMulti	: "Sélection multiple",
+DlgSelectOpAvail	: "Options disponibles",
+DlgSelectOpText		: "Texte",
+DlgSelectOpValue	: "Valeur",
+DlgSelectBtnAdd		: "Ajouter",
+DlgSelectBtnModify	: "Modifier",
+DlgSelectBtnUp		: "Monter",
+DlgSelectBtnDown	: "Descendre",
+DlgSelectBtnSetValue : "Valeur sélectionnée",
+DlgSelectBtnDelete	: "Supprimer",
+
+// Textarea Dialog
+DlgTextareaName	: "Nom",
+DlgTextareaCols	: "Colonnes",
+DlgTextareaRows	: "Lignes",
+
+// Text Field Dialog
+DlgTextName			: "Nom",
+DlgTextValue		: "Valeur",
+DlgTextCharWidth	: "Largeur en caractères",
+DlgTextMaxChars		: "Nombre maximum de caractères",
+DlgTextType			: "Type",
+DlgTextTypeText		: "Texte",
+DlgTextTypePass		: "Mot de passe",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nom",
+DlgHiddenValue	: "Valeur",
+
+// Bulleted List Dialog
+BulletedListProp	: "Propriétés de liste à puces",
+NumberedListProp	: "Propriétés de liste numérotée",
+DlgLstStart			: "Début",
+DlgLstType			: "Type",
+DlgLstTypeCircle	: "Cercle",
+DlgLstTypeDisc		: "Disque",
+DlgLstTypeSquare	: "Carré",
+DlgLstTypeNumbers	: "Nombres (1, 2, 3)",
+DlgLstTypeLCase		: "Lettres minuscules (a, b, c)",
+DlgLstTypeUCase		: "Lettres majuscules (A, B, C)",
+DlgLstTypeSRoman	: "Chiffres romains minuscules (i, ii, iii)",
+DlgLstTypeLRoman	: "Chiffres romains majuscules (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Général",
+DlgDocBackTab		: "Fond",
+DlgDocColorsTab		: "Couleurs et Marges",
+DlgDocMetaTab		: "Méta-Données",
+
+DlgDocPageTitle		: "Titre de la page",
+DlgDocLangDir		: "Sens d'écriture",
+DlgDocLangDirLTR	: "De la gauche vers la droite (LTR)",
+DlgDocLangDirRTL	: "De la droite vers la gauche (RTL)",
+DlgDocLangCode		: "Code langue",
+DlgDocCharSet		: "Encodage de caractère",
+DlgDocCharSetCE		: "Europe Centrale",
+DlgDocCharSetCT		: "Chinois Traditionnel (Big5)",
+DlgDocCharSetCR		: "Cyrillique",
+DlgDocCharSetGR		: "Grecque",
+DlgDocCharSetJP		: "Japonais",
+DlgDocCharSetKR		: "Coréen",
+DlgDocCharSetTR		: "Turcque",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Occidental",
+DlgDocCharSetOther	: "Autre encodage de caractère",
+
+DlgDocDocType		: "Type de document",
+DlgDocDocTypeOther	: "Autre type de document",
+DlgDocIncXHTML		: "Inclure les déclarations XHTML",
+DlgDocBgColor		: "Couleur de fond",
+DlgDocBgImage		: "Image de fond",
+DlgDocBgNoScroll	: "Image fixe sans défilement",
+DlgDocCText			: "Texte",
+DlgDocCLink			: "Lien",
+DlgDocCVisited		: "Lien visité",
+DlgDocCActive		: "Lien activé",
+DlgDocMargins		: "Marges",
+DlgDocMaTop			: "Haut",
+DlgDocMaLeft		: "Gauche",
+DlgDocMaRight		: "Droite",
+DlgDocMaBottom		: "Bas",
+DlgDocMeIndex		: "Mots-clés (séparés par des virgules)",
+DlgDocMeDescr		: "Description",
+DlgDocMeAuthor		: "Auteur",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Prévisualisation",
+
+// Templates Dialog
+Templates			: "Modèles",
+DlgTemplatesTitle	: "Modèles de contenu",
+DlgTemplatesSelMsg	: "Sélectionner le modèle à ouvrir dans l'éditeur<br>(le contenu actuel sera remplacé):",
+DlgTemplatesLoading	: "Chargement de la liste des modèles. Veuillez patienter...",
+DlgTemplatesNoTpl	: "(Aucun modèle disponible)",
+DlgTemplatesReplace	: "Remplacer tout le contenu actuel",
+
+// About Dialog
+DlgAboutAboutTab	: "Á propos de",
+DlgAboutBrowserInfoTab	: "Navigateur",
+DlgAboutLicenseTab	: "License",
+DlgAboutVersion		: "Version",
+DlgAboutInfo		: "Pour plus d'informations, visiter"
+};
Index: /FCKeditor/releases/stable/editor/lang/fr.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/fr.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/fr.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -247,5 +247,5 @@
 
 DlgLnkTarget		: "Destination",
-DlgLnkTargetFrame	: "<cadre>",
+DlgLnkTargetFrame	: "<Cadre>",
 DlgLnkTargetPopup	: "<fenêtre popup>",
 DlgLnkTargetBlank	: "Nouvelle fenêtre (_blank)",
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignorer les polices de caractères",
 DlgPasteRemoveStyles	: "Supprimer les styles",
-DlgPasteCleanBox		: "Effacer le contenu",
 
 // Color Picker
@@ -472,5 +471,5 @@
 DlgDocCharSetCR		: "Cyrillique",
 DlgDocCharSetGR		: "Grec",
-DlgDocCharSetJP		: "Japanais",
+DlgDocCharSetJP		: "Japonais",
 DlgDocCharSetKR		: "Coréen",
 DlgDocCharSetTR		: "Turc",
@@ -511,6 +510,6 @@
 DlgAboutAboutTab	: "A propos de",
 DlgAboutBrowserInfoTab	: "Navigateur",
-DlgAboutLicenseTab	: "License",
-DlgAboutVersion		: "version",
+DlgAboutLicenseTab	: "Licence",
+DlgAboutVersion		: "Version",
 DlgAboutInfo		: "Pour plus d'informations, aller à"
 };
Index: /FCKeditor/releases/stable/editor/lang/gl.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/gl.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/gl.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignorar as definicións de Tipografía",
 DlgPasteRemoveStyles	: "Eliminar as definicións de Estilos",
-DlgPasteCleanBox		: "Limpar o Cadro",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/he.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/he.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/he.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "התעלם מהגדרות סוג פונט",
 DlgPasteRemoveStyles	: "הסר הגדרות סגנון",
-DlgPasteCleanBox		: "ניקוי קופסה",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/hi.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/hi.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/hi.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "फ़ॉन्ट परिभाषा निकालें",
 DlgPasteRemoveStyles	: "स्टाइल परिभाषा निकालें",
-DlgPasteCleanBox		: "बॉक्स साफ़ करें",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/hr.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/hr.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/hr.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Zanemari definiciju vrste fonta",
 DlgPasteRemoveStyles	: "Ukloni definicije stilova",
-DlgPasteCleanBox		: "Očisti okvir",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/hu.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/hu.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/hu.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Betű formázások megszüntetése",
 DlgPasteRemoveStyles	: "Stílusok eltávolítása",
-DlgPasteCleanBox		: "Törlés",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/it.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/it.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/it.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignora le definizioni di Font",
 DlgPasteRemoveStyles	: "Rimuovi le definizioni di Stile",
-DlgPasteCleanBox		: "Svuota area di testo",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/ja.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/ja.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/ja.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "FontタグのFace属性を無視します。",
 DlgPasteRemoveStyles	: "スタイル定義を削除します。",
-DlgPasteCleanBox		: "入力エリアクリア",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/km.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/km.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/km.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "មិនគិតអំពីប្រភេទពុម្ភអក្សរ",
 DlgPasteRemoveStyles	: "លប់ម៉ូត",
-DlgPasteCleanBox		: "លប់អត្ថបទចេញពីប្រអប់",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/ko.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/ko.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/ko.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -105,27 +105,27 @@
 ImageButton		: "이미지버튼",
 
-FitWindow		: "Maximize the editor size",	//MISSING
+FitWindow		: "에디터 최대화",
 ShowBlocks		: "Show Blocks",	//MISSING
 
 // Context Menu
 EditLink			: "링크 수정",
-CellCM				: "Cell",	//MISSING
-RowCM				: "Row",	//MISSING
-ColumnCM			: "Column",	//MISSING
-InsertRowAfter		: "Insert Row After",	//MISSING
-InsertRowBefore		: "Insert Row Before",	//MISSING
+CellCM				: "셀/칸(Cell)",
+RowCM				: "행(Row)",
+ColumnCM			: "열(Column)",
+InsertRowAfter		: "뒤에 행 삽입",
+InsertRowBefore		: "앞에 행 삽입",
 DeleteRows			: "가로줄 삭제",
-InsertColumnAfter	: "Insert Column After",	//MISSING
-InsertColumnBefore	: "Insert Column Before",	//MISSING
+InsertColumnAfter	: "뒤에 열 삽입",
+InsertColumnBefore	: "앞에 열 삽입",
 DeleteColumns		: "세로줄 삭제",
-InsertCellAfter		: "Insert Cell After",	//MISSING
-InsertCellBefore	: "Insert Cell Before",	//MISSING
+InsertCellAfter		: "뒤에 셀/칸 삽입",
+InsertCellBefore	: "앞에 셀/칸 삽입",
 DeleteCells			: "셀 삭제",
 MergeCells			: "셀 합치기",
-MergeRight			: "Merge Right",	//MISSING
-MergeDown			: "Merge Down",	//MISSING
-HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
-VerticalSplitCell	: "Split Cell Vertically",	//MISSING
-TableDelete			: "Delete Table",	//MISSING
+MergeRight			: "오른쪽 뭉치기",
+MergeDown			: "왼쪽 뭉치기",
+HorizontalSplitCell	: "수평 나누기",
+VerticalSplitCell	: "수직 나누기",
+TableDelete			: "표 삭제",
 CellProperties		: "셀 속성",
 TableProperties		: "표 속성",
@@ -155,7 +155,7 @@
 NotImplemented		: "기능이 실행되지 않았습니다.",
 UnknownToolbarSet	: "툴바 설정이 없습니다. : \"%1\"",
-NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
-BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
-DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+NoActiveX			: "브러우저의 보안 설정으로 인해 몇몇 기능의 작동에 장애가 있을 수 있습니다. \"액티브-액스 기능과 플러그 인\" 옵션을 허용하여 주시지 않으면 오류가 발생할 수 있습니다.",
+BrowseServerBlocked : "브러우저 요소가 열리지 않습니다. 팝업차단 설정이 꺼져있는지 확인하여 주십시오.",
+DialogBlocked		: "윈도우 대화창을 열 수 없습니다. 팝업차단 설정이 꺼져있는지 확인하여 주십시오.",
 
 // Dialogs
@@ -208,5 +208,5 @@
 DlgImgAlignMiddle	: "중간",
 DlgImgAlignRight	: "오른쪽",
-DlgImgAlignTextTop	: "글자위(Text Top)",
+DlgImgAlignTextTop	: "글자상단",
 DlgImgAlignTop		: "위",
 DlgImgPreview		: "미리보기",
@@ -272,5 +272,5 @@
 DlnLnkMsgNoEMail	: "이메일주소를 입력하십시요.",
 DlnLnkMsgNoAnchor	: "책갈피명을 입력하십시요.",
-DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+DlnLnkMsgInvPopName	: "팝업창의 타이틀은 공백을 허용하지 않습니다.",
 
 // Color Dialog
@@ -333,5 +333,5 @@
 
 // Find and Replace Dialog
-DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+DlgFindAndReplaceTitle	: "찾기 & 바꾸기",
 
 // Find Dialog
@@ -357,8 +357,7 @@
 
 DlgPasteMsg2	: "키보드의 (<STRONG>Ctrl+V</STRONG>) 를 이용해서 상자안에 붙여넣고 <STRONG>OK</STRONG> 를 누르세요.",
-DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteSec		: "브러우저 보안 설정으로 인해, 클립보드의 자료를 직접 접근할 수 없습니다. 이 창에 다시 붙여넣기 하십시오.",
 DlgPasteIgnoreFont		: "폰트 설정 무시",
 DlgPasteRemoveStyles	: "스타일 정의 제거",
-DlgPasteCleanBox		: "글상자 제거",
 
 // Color Picker
@@ -506,5 +505,5 @@
 DlgTemplatesLoading	: "템플릿 목록을 불러오는중입니다. 잠시만 기다려주십시요.",
 DlgTemplatesNoTpl	: "(템플릿이 없습니다.)",
-DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+DlgTemplatesReplace	: "현재 내용 바꾸기",
 
 // About Dialog
@@ -513,4 +512,4 @@
 DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "버전",
-DlgAboutInfo		: "For further information go to"
+DlgAboutInfo		: "더 많은 정보를 보시려면 다음 사이트로 가십시오."
 };
Index: /FCKeditor/releases/stable/editor/lang/lt.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/lt.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/lt.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignoruoti šriftų nustatymus",
 DlgPasteRemoveStyles	: "Pašalinti stilių nustatymus",
-DlgPasteCleanBox		: "Trinti įvedimo lauką",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/lv.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/lv.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/lv.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignorēt iepriekš norādītos fontus",
 DlgPasteRemoveStyles	: "Noņemt norādītos stilus",
-DlgPasteCleanBox		: "Apstrādāt laukuma saturu",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/mn.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/mn.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/mn.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -45,10 +45,10 @@
 InsertLink			: "Линк Оруулах/Засварлах",
 RemoveLink			: "Линк авч хаях",
-Anchor				: "Insert/Edit Anchor",	//MISSING
-AnchorDelete		: "Remove Anchor",	//MISSING
+Anchor				: "Холбоос Оруулах/Засварлах",
+AnchorDelete		: "Холбоос Авах",
 InsertImageLbl		: "Зураг",
 InsertImage			: "Зураг Оруулах/Засварлах",
-InsertFlashLbl		: "Flash",	//MISSING
-InsertFlash			: "Insert/Edit Flash",	//MISSING
+InsertFlashLbl		: "Флаш",
+InsertFlash			: "Флаш Оруулах/Засварлах",
 InsertTableLbl		: "Хүснэгт",
 InsertTable			: "Хүснэгт Оруулах/Засварлах",
@@ -72,5 +72,5 @@
 DecreaseIndent		: "Догол мөр нэмэх",
 IncreaseIndent		: "Догол мөр хасах",
-Blockquote			: "Blockquote",	//MISSING
+Blockquote			: "Хайрцаглах",
 Undo				: "Хүчингүй болгох",
 Redo				: "Өмнөх үйлдлээ сэргээх",
@@ -90,57 +90,57 @@
 Find				: "Хайх",
 Replace				: "Солих",
-SpellCheck			: "Check Spelling",	//MISSING
-UniversalKeyboard	: "Universal Keyboard",	//MISSING
-PageBreakLbl		: "Page Break",	//MISSING
-PageBreak			: "Insert Page Break",	//MISSING
-
-Form			: "Form",	//MISSING
-Checkbox		: "Checkbox",	//MISSING
-RadioButton		: "Radio Button",	//MISSING
-TextField		: "Text Field",	//MISSING
-Textarea		: "Textarea",	//MISSING
-HiddenField		: "Hidden Field",	//MISSING
-Button			: "Button",	//MISSING
-SelectionField	: "Selection Field",	//MISSING
-ImageButton		: "Image Button",	//MISSING
-
-FitWindow		: "Maximize the editor size",	//MISSING
-ShowBlocks		: "Show Blocks",	//MISSING
+SpellCheck			: "Үгийн дүрэх шалгах",
+UniversalKeyboard	: "Униварсал гар",
+PageBreakLbl		: "Хуудас тусгаарлах",
+PageBreak			: "Хуудас тусгаарлагч оруулах",
+
+Form			: "Форм",
+Checkbox		: "Чекбокс",
+RadioButton		: "Радио товч",
+TextField		: "Техт талбар",
+Textarea		: "Техт орчин",
+HiddenField		: "Нууц талбар",
+Button			: "Товч",
+SelectionField	: "Сонгогч талбар",
+ImageButton		: "Зурагтай товч",
+
+FitWindow		: "editor-н хэмжээг томруулах",
+ShowBlocks		: "Block-уудыг үзүүлэх",
 
 // Context Menu
 EditLink			: "Холбоос засварлах",
-CellCM				: "Cell",	//MISSING
-RowCM				: "Row",	//MISSING
-ColumnCM			: "Column",	//MISSING
-InsertRowAfter		: "Insert Row After",	//MISSING
-InsertRowBefore		: "Insert Row Before",	//MISSING
+CellCM				: "Нүх/зай",
+RowCM				: "Мөр",
+ColumnCM			: "Багана",
+InsertRowAfter		: "Мөр дараа нь оруулах",
+InsertRowBefore		: "Мөр өмнө нь оруулах",
 DeleteRows			: "Мөр устгах",
-InsertColumnAfter	: "Insert Column After",	//MISSING
-InsertColumnBefore	: "Insert Column Before",	//MISSING
+InsertColumnAfter	: "Багана дараа нь оруулах",
+InsertColumnBefore	: "Багана өмнө нь оруулах",
 DeleteColumns		: "Багана устгах",
-InsertCellAfter		: "Insert Cell After",	//MISSING
-InsertCellBefore	: "Insert Cell Before",	//MISSING
+InsertCellAfter		: "Нүх/зай дараа нь оруулах",
+InsertCellBefore	: "Нүх/зай өмнө нь оруулах",
 DeleteCells			: "Нүх устгах",
 MergeCells			: "Нүх нэгтэх",
-MergeRight			: "Merge Right",	//MISSING
-MergeDown			: "Merge Down",	//MISSING
-HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
-VerticalSplitCell	: "Split Cell Vertically",	//MISSING
-TableDelete			: "Delete Table",	//MISSING
-CellProperties		: "Хоосон зайн шинж чанар",
+MergeRight			: "Баруун тийш нэгтгэх",
+MergeDown			: "Доош нэгтгэх",
+HorizontalSplitCell	: "Нүх/зайг босоогоор нь тусгаарлах",
+VerticalSplitCell	: "Нүх/зайг хөндлөнгөөр нь тусгаарлах",
+TableDelete			: "Хүснэгт устгах",
+CellProperties		: "Нүх/зай зайн шинж чанар",
 TableProperties		: "Хүснэгт",
 ImageProperties		: "Зураг",
-FlashProperties		: "Flash Properties",	//MISSING
-
-AnchorProp			: "Anchor Properties",	//MISSING
-ButtonProp			: "Button Properties",	//MISSING
-CheckboxProp		: "Checkbox Properties",	//MISSING
-HiddenFieldProp		: "Hidden Field Properties",	//MISSING
-RadioButtonProp		: "Radio Button Properties",	//MISSING
-ImageButtonProp		: "Image Button Properties",	//MISSING
-TextFieldProp		: "Text Field Properties",	//MISSING
-SelectionFieldProp	: "Selection Field Properties",	//MISSING
-TextareaProp		: "Textarea Properties",	//MISSING
-FormProp			: "Form Properties",	//MISSING
+FlashProperties		: "Флаш шинж чанар",
+
+AnchorProp			: "Холбоос шинж чанар",
+ButtonProp			: "Товчны шинж чанар",
+CheckboxProp		: "Чекбоксны шинж чанар",
+HiddenFieldProp		: "Нууц талбарын шинж чанар",
+RadioButtonProp		: "Радио товчны шинж чанар",
+ImageButtonProp		: "Зурган товчны шинж чанар",
+TextFieldProp		: "Текст талбарын шинж чанар",
+SelectionFieldProp	: "Согогч талбарын шинж чанар",
+TextareaProp		: "Текст орчны шинж чанар",
+FormProp			: "Форм шинж чанар",
 
 FontFormats			: "Хэвийн;Formatted;Хаяг;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Paragraph (DIV)",
@@ -155,7 +155,7 @@
 NotImplemented		: "Зөвшөөрөгдөхгүй комманд",
 UnknownToolbarSet	: "Багажны хэсэгт \"%1\" оноох, үүсээгүй байна",
-NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
-BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
-DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+NoActiveX			: "Таны үзүүлэгч/browser-н хамгаалалтын тохиргоо editor-н зарим боломжийг хязгаарлаж байна. Та \"Run ActiveX controls ба plug-ins\" сонголыг идвэхитэй болго.",
+BrowseServerBlocked : "Нөөц үзүүгч нээж чадсангүй. Бүх popup blocker-г disabled болгоно уу.",
+DialogBlocked		: "Харилцах цонхонд энийг нээхэд боломжгүй ээ. Бүх popup blocker-г disabled болгоно уу.",
 
 // Dialogs
@@ -163,9 +163,9 @@
 DlgBtnCancel		: "Болих",
 DlgBtnClose			: "Хаах",
-DlgBtnBrowseServer	: "Browse Server",	//MISSING
+DlgBtnBrowseServer	: "Сервер харуулах",
 DlgAdvancedTag		: "Нэмэлт",
-DlgOpOther			: "<Other>",	//MISSING
-DlgInfoTab			: "Info",	//MISSING
-DlgAlertUrl			: "Please insert the URL",	//MISSING
+DlgOpOther			: "<Бусад>",
+DlgInfoTab			: "Мэдээлэл",
+DlgAlertUrl			: "URL оруулна уу",
 
 // General Dialogs Labels
@@ -195,5 +195,5 @@
 DlgImgWidth			: "Өргөн",
 DlgImgHeight		: "Өндөр",
-DlgImgLockRatio		: "Lock Ratio",
+DlgImgLockRatio		: "Радио түгжих",
 DlgBtnResetSize		: "хэмжээ дахин оноох",
 DlgImgBorder		: "Хүрээ",
@@ -212,15 +212,15 @@
 DlgImgPreview		: "Уридчлан харах",
 DlgImgAlertUrl		: "Зурагны URL-ын төрлийн сонгоно уу",
-DlgImgLinkTab		: "Link",	//MISSING
+DlgImgLinkTab		: "Линк",
 
 // Flash Dialog
-DlgFlashTitle		: "Flash Properties",	//MISSING
-DlgFlashChkPlay		: "Auto Play",	//MISSING
-DlgFlashChkLoop		: "Loop",	//MISSING
-DlgFlashChkMenu		: "Enable Flash Menu",	//MISSING
-DlgFlashScale		: "Scale",	//MISSING
-DlgFlashScaleAll	: "Show all",	//MISSING
-DlgFlashScaleNoBorder	: "No Border",	//MISSING
-DlgFlashScaleFit	: "Exact Fit",	//MISSING
+DlgFlashTitle		: "Флаш  шинж чанар",
+DlgFlashChkPlay		: "Автоматаар тоглох",
+DlgFlashChkLoop		: "Давтах",
+DlgFlashChkMenu		: "Флаш цэс идвэхжүүлэх",
+DlgFlashScale		: "Өргөгтгөх",
+DlgFlashScaleAll	: "Бүгдийг харуулах",
+DlgFlashScaleNoBorder	: "Хүрээгүй",
+DlgFlashScaleFit	: "Яг тааруулах",
 
 // Link Dialog
@@ -241,5 +241,5 @@
 DlgLnkNoAnchors		: "(Баримт бичиг холбоосгүй байна)",
 DlgLnkEMail			: "E-Mail Хаяг",
-DlgLnkEMailSubject	: "Message Subject",
+DlgLnkEMailSubject	: "Message гарчиг",
 DlgLnkEMailBody		: "Message-ийн агуулга",
 DlgLnkUpload		: "Хуулах",
@@ -253,5 +253,5 @@
 DlgLnkTargetSelf	: "Төстэй цонх (_self)",
 DlgLnkTargetTop		: "Хамгийн түрүүн байх цонх (_top)",
-DlgLnkTargetFrameName	: "Target Frame Name",	//MISSING
+DlgLnkTargetFrameName	: "Очих фремын нэр",
 DlgLnkPopWinName	: "Popup цонхны нэр",
 DlgLnkPopWinFeat	: "Popup цонхны онцлог",
@@ -272,5 +272,5 @@
 DlnLnkMsgNoEMail	: "Е-mail хаягаа төрөлжүүлнэ үү",
 DlnLnkMsgNoAnchor	: "Холбоосоо сонгоно уу",
-DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+DlnLnkMsgInvPopName	: "popup нэр нь үсгэн тэмдэгтээр эхэлсэн байх ба хоосон зай агуулаагүй байх ёстой.",
 
 // Color Dialog
@@ -300,8 +300,8 @@
 DlgTableWidthPc		: "хувь",
 DlgTableHeight		: "Өндөр",
-DlgTableCellSpace	: "Нүх хоорондын зай",
-DlgTableCellPad		: "Нүх доторлох",
+DlgTableCellSpace	: "Нүх хоорондын зай (spacing)",
+DlgTableCellPad		: "Нүх доторлох(padding)",
 DlgTableCaption		: "Тайлбар",
-DlgTableSummary		: "Summary",	//MISSING
+DlgTableSummary		: "Тайлбар",
 
 // Table Cell Dialog
@@ -326,6 +326,6 @@
 DlgCellVerAlignBottom	: "Доод тал",
 DlgCellVerAlignBaseline	: "Baseline",
-DlgCellRowSpan		: "Нийт мөр",
-DlgCellCollSpan		: "Нийт багана",
+DlgCellRowSpan		: "Нийт мөр (span)",
+DlgCellCollSpan		: "Нийт багана (span)",
 DlgCellBackColor	: "Фонны өнгө",
 DlgCellBorderColor	: "Хүрээний өнгө",
@@ -333,5 +333,5 @@
 
 // Find and Replace Dialog
-DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+DlgFindAndReplaceTitle	: "Хай мөн Дарж бич",
 
 // Find Dialog
@@ -356,9 +356,8 @@
 PasteFromWord	: "Word-оос буулгах",
 
-DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.",	//MISSING
-DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
-DlgPasteIgnoreFont		: "Ignore Font Face definitions",	//MISSING
-DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
-DlgPasteCleanBox		: "Clean Up Box",	//MISSING
+DlgPasteMsg2	: "(<strong>Ctrl+V</strong>) товчийг ашиглан paste хийнэ үү. Мөн <strong>OK</strong> дар.",
+DlgPasteSec		: "Таны үзүүлэгч/browser/-н хамгаалалтын тохиргооноос болоод editor clipboard өгөгдөлрүү шууд хандах боломжгүй. Энэ цонход дахин paste хийхийг оролд.",
+DlgPasteIgnoreFont		: "Тодорхойлогдсон Font Face зөвшөөрнө",
+DlgPasteRemoveStyles	: "Тодорхойлогдсон загварыг авах",
 
 // Color Picker
@@ -367,149 +366,149 @@
 
 // Document Properties
-DocProps		: "Document Properties",	//MISSING
+DocProps		: "Баримт бичиг шинж чанар",
 
 // Anchor Dialog
-DlgAnchorTitle		: "Anchor Properties",	//MISSING
-DlgAnchorName		: "Anchor Name",	//MISSING
-DlgAnchorErrorName	: "Please type the anchor name",	//MISSING
+DlgAnchorTitle		: "Холбоос шинж чанар",
+DlgAnchorName		: "Холбоос нэр",
+DlgAnchorErrorName	: "Холбоос төрөл оруулна уу",
 
 // Speller Pages Dialog
-DlgSpellNotInDic		: "Not in dictionary",	//MISSING
-DlgSpellChangeTo		: "Change to",	//MISSING
-DlgSpellBtnIgnore		: "Ignore",	//MISSING
-DlgSpellBtnIgnoreAll	: "Ignore All",	//MISSING
-DlgSpellBtnReplace		: "Replace",	//MISSING
-DlgSpellBtnReplaceAll	: "Replace All",	//MISSING
-DlgSpellBtnUndo			: "Undo",	//MISSING
-DlgSpellNoSuggestions	: "- No suggestions -",	//MISSING
-DlgSpellProgress		: "Spell check in progress...",	//MISSING
-DlgSpellNoMispell		: "Spell check complete: No misspellings found",	//MISSING
-DlgSpellNoChanges		: "Spell check complete: No words changed",	//MISSING
-DlgSpellOneChange		: "Spell check complete: One word changed",	//MISSING
-DlgSpellManyChanges		: "Spell check complete: %1 words changed",	//MISSING
-
-IeSpellDownload			: "Spell checker not installed. Do you want to download it now?",	//MISSING
+DlgSpellNotInDic		: "Толь бичиггүй",
+DlgSpellChangeTo		: "Өөрчлөх",
+DlgSpellBtnIgnore		: "Зөвшөөрөх",
+DlgSpellBtnIgnoreAll	: "Бүгдийг зөвшөөрөх",
+DlgSpellBtnReplace		: "Дарж бичих",
+DlgSpellBtnReplaceAll	: "Бүгдийг Дарж бичих",
+DlgSpellBtnUndo			: "Буцаах",
+DlgSpellNoSuggestions	: "- Тайлбаргүй -",
+DlgSpellProgress		: "Дүрэм шалгаж байгаа үйл явц...",
+DlgSpellNoMispell		: "Дүрэм шалгаад дууссан: Алдаа олдсонгүй",
+DlgSpellNoChanges		: "Дүрэм шалгаад дууссан: үг өөрчлөгдөөгүй",
+DlgSpellOneChange		: "Дүрэм шалгаад дууссан: 1 үг өөрчлөгдсөн",
+DlgSpellManyChanges		: "Дүрэм шалгаад дууссан: %1 үг өөрчлөгдсөн",
+
+IeSpellDownload			: "Дүрэм шалгагч суугаагүй байна. Татаж авахыг хүсч байна уу?",
 
 // Button Dialog
-DlgButtonText		: "Text (Value)",	//MISSING
-DlgButtonType		: "Type",	//MISSING
-DlgButtonTypeBtn	: "Button",	//MISSING
-DlgButtonTypeSbm	: "Submit",	//MISSING
-DlgButtonTypeRst	: "Reset",	//MISSING
+DlgButtonText		: "Тэкст (Утга)",
+DlgButtonType		: "Төрөл",
+DlgButtonTypeBtn	: "Товч",
+DlgButtonTypeSbm	: "Submit",
+DlgButtonTypeRst	: "Болих",
 
 // Checkbox and Radio Button Dialogs
-DlgCheckboxName		: "Name",	//MISSING
-DlgCheckboxValue	: "Value",	//MISSING
-DlgCheckboxSelected	: "Selected",	//MISSING
+DlgCheckboxName		: "Нэр",
+DlgCheckboxValue	: "Утга",
+DlgCheckboxSelected	: "Сонгогдсон",
 
 // Form Dialog
-DlgFormName		: "Name",	//MISSING
-DlgFormAction	: "Action",	//MISSING
-DlgFormMethod	: "Method",	//MISSING
+DlgFormName		: "Нэр",
+DlgFormAction	: "Үйлдэл",
+DlgFormMethod	: "Арга",
 
 // Select Field Dialog
-DlgSelectName		: "Name",	//MISSING
-DlgSelectValue		: "Value",	//MISSING
-DlgSelectSize		: "Size",	//MISSING
-DlgSelectLines		: "lines",	//MISSING
-DlgSelectChkMulti	: "Allow multiple selections",	//MISSING
-DlgSelectOpAvail	: "Available Options",	//MISSING
-DlgSelectOpText		: "Text",	//MISSING
-DlgSelectOpValue	: "Value",	//MISSING
-DlgSelectBtnAdd		: "Add",	//MISSING
-DlgSelectBtnModify	: "Modify",	//MISSING
-DlgSelectBtnUp		: "Up",	//MISSING
-DlgSelectBtnDown	: "Down",	//MISSING
-DlgSelectBtnSetValue : "Set as selected value",	//MISSING
-DlgSelectBtnDelete	: "Delete",	//MISSING
+DlgSelectName		: "Нэр",
+DlgSelectValue		: "Утга",
+DlgSelectSize		: "Хэмжээ",
+DlgSelectLines		: "Мөр",
+DlgSelectChkMulti	: "Олон сонголт зөвшөөрөх",
+DlgSelectOpAvail	: "Идвэхтэй сонголт",
+DlgSelectOpText		: "Тэкст",
+DlgSelectOpValue	: "Утга",
+DlgSelectBtnAdd		: "Нэмэх",
+DlgSelectBtnModify	: "Өөрчлөх",
+DlgSelectBtnUp		: "Дээш",
+DlgSelectBtnDown	: "Доош",
+DlgSelectBtnSetValue : "Сонгогдсан утга оноох",
+DlgSelectBtnDelete	: "Устгах",
 
 // Textarea Dialog
-DlgTextareaName	: "Name",	//MISSING
-DlgTextareaCols	: "Columns",	//MISSING
-DlgTextareaRows	: "Rows",	//MISSING
+DlgTextareaName	: "Нэр",
+DlgTextareaCols	: "Багана",
+DlgTextareaRows	: "Мөр",
 
 // Text Field Dialog
-DlgTextName			: "Name",	//MISSING
-DlgTextValue		: "Value",	//MISSING
-DlgTextCharWidth	: "Character Width",	//MISSING
-DlgTextMaxChars		: "Maximum Characters",	//MISSING
-DlgTextType			: "Type",	//MISSING
-DlgTextTypeText		: "Text",	//MISSING
-DlgTextTypePass		: "Password",	//MISSING
+DlgTextName			: "Нэр",
+DlgTextValue		: "Утга",
+DlgTextCharWidth	: "Тэмдэгтын өргөн",
+DlgTextMaxChars		: "Хамгийн их тэмдэгт",
+DlgTextType			: "Төрөл",
+DlgTextTypeText		: "Текст",
+DlgTextTypePass		: "Нууц үг",
 
 // Hidden Field Dialog
-DlgHiddenName	: "Name",	//MISSING
-DlgHiddenValue	: "Value",	//MISSING
+DlgHiddenName	: "Нэр",
+DlgHiddenValue	: "Утга",
 
 // Bulleted List Dialog
-BulletedListProp	: "Bulleted List Properties",	//MISSING
-NumberedListProp	: "Numbered List Properties",	//MISSING
-DlgLstStart			: "Start",	//MISSING
-DlgLstType			: "Type",	//MISSING
-DlgLstTypeCircle	: "Circle",	//MISSING
-DlgLstTypeDisc		: "Disc",	//MISSING
-DlgLstTypeSquare	: "Square",	//MISSING
-DlgLstTypeNumbers	: "Numbers (1, 2, 3)",	//MISSING
-DlgLstTypeLCase		: "Lowercase Letters (a, b, c)",	//MISSING
-DlgLstTypeUCase		: "Uppercase Letters (A, B, C)",	//MISSING
-DlgLstTypeSRoman	: "Small Roman Numerals (i, ii, iii)",	//MISSING
-DlgLstTypeLRoman	: "Large Roman Numerals (I, II, III)",	//MISSING
+BulletedListProp	: "Bulleted жагсаалын шинж чанар",
+NumberedListProp	: "Дугаарласан жагсаалын шинж чанар",
+DlgLstStart			: "Эхлэх",
+DlgLstType			: "Төрөл",
+DlgLstTypeCircle	: "Тойрог",
+DlgLstTypeDisc		: "Тайлбар",
+DlgLstTypeSquare	: "Square",
+DlgLstTypeNumbers	: "Тоо (1, 2, 3)",
+DlgLstTypeLCase		: "Жижиг үсэг (a, b, c)",
+DlgLstTypeUCase		: "Том үсэг (A, B, C)",
+DlgLstTypeSRoman	: "Жижиг Ром тоо (i, ii, iii)",
+DlgLstTypeLRoman	: "Том Ром тоо (I, II, III)",
 
 // Document Properties Dialog
-DlgDocGeneralTab	: "General",	//MISSING
-DlgDocBackTab		: "Background",	//MISSING
-DlgDocColorsTab		: "Colors and Margins",	//MISSING
-DlgDocMetaTab		: "Meta Data",	//MISSING
-
-DlgDocPageTitle		: "Page Title",	//MISSING
-DlgDocLangDir		: "Language Direction",	//MISSING
-DlgDocLangDirLTR	: "Left to Right (LTR)",	//MISSING
-DlgDocLangDirRTL	: "Right to Left (RTL)",	//MISSING
-DlgDocLangCode		: "Language Code",	//MISSING
-DlgDocCharSet		: "Character Set Encoding",	//MISSING
-DlgDocCharSetCE		: "Central European",	//MISSING
-DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
-DlgDocCharSetCR		: "Cyrillic",	//MISSING
-DlgDocCharSetGR		: "Greek",	//MISSING
-DlgDocCharSetJP		: "Japanese",	//MISSING
-DlgDocCharSetKR		: "Korean",	//MISSING
-DlgDocCharSetTR		: "Turkish",	//MISSING
-DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
-DlgDocCharSetWE		: "Western European",	//MISSING
-DlgDocCharSetOther	: "Other Character Set Encoding",	//MISSING
-
-DlgDocDocType		: "Document Type Heading",	//MISSING
-DlgDocDocTypeOther	: "Other Document Type Heading",	//MISSING
-DlgDocIncXHTML		: "Include XHTML Declarations",	//MISSING
-DlgDocBgColor		: "Background Color",	//MISSING
-DlgDocBgImage		: "Background Image URL",	//MISSING
-DlgDocBgNoScroll	: "Nonscrolling Background",	//MISSING
-DlgDocCText			: "Text",	//MISSING
-DlgDocCLink			: "Link",	//MISSING
-DlgDocCVisited		: "Visited Link",	//MISSING
-DlgDocCActive		: "Active Link",	//MISSING
-DlgDocMargins		: "Page Margins",	//MISSING
-DlgDocMaTop			: "Top",	//MISSING
-DlgDocMaLeft		: "Left",	//MISSING
-DlgDocMaRight		: "Right",	//MISSING
-DlgDocMaBottom		: "Bottom",	//MISSING
-DlgDocMeIndex		: "Document Indexing Keywords (comma separated)",	//MISSING
-DlgDocMeDescr		: "Document Description",	//MISSING
-DlgDocMeAuthor		: "Author",	//MISSING
-DlgDocMeCopy		: "Copyright",	//MISSING
-DlgDocPreview		: "Preview",	//MISSING
+DlgDocGeneralTab	: "Ерөнхий",
+DlgDocBackTab		: "Фоно",
+DlgDocColorsTab		: "Захын зай ба Өнгө",
+DlgDocMetaTab		: "Meta өгөгдөл",
+
+DlgDocPageTitle		: "Хуудасны гарчиг",
+DlgDocLangDir		: "Хэлний чиглэл",
+DlgDocLangDirLTR	: "Зүүнээс баруунруу (LTR)",
+DlgDocLangDirRTL	: "Баруунаас зүүнрүү (RTL)",
+DlgDocLangCode		: "Хэлний код",
+DlgDocCharSet		: "Encoding тэмдэгт",
+DlgDocCharSetCE		: "Төв европ",
+DlgDocCharSetCT		: "Хятадын уламжлалт (Big5)",
+DlgDocCharSetCR		: "Крил",
+DlgDocCharSetGR		: "Гред",
+DlgDocCharSetJP		: "Япон",
+DlgDocCharSetKR		: "Солонгос",
+DlgDocCharSetTR		: "Tурк",
+DlgDocCharSetUN		: "Юникод (UTF-8)",
+DlgDocCharSetWE		: "Баруун европ",
+DlgDocCharSetOther	: "Encoding-д өөр тэмдэгт оноох",
+
+DlgDocDocType		: "Баримт бичгийн төрөл Heading",
+DlgDocDocTypeOther	: "Бусад баримт бичгийн төрөл Heading",
+DlgDocIncXHTML		: "XHTML агуулж зарлах",
+DlgDocBgColor		: "Фоно өнгө",
+DlgDocBgImage		: "Фоно зурагны URL",
+DlgDocBgNoScroll	: "Гүйдэггүй фоно",
+DlgDocCText			: "Текст",
+DlgDocCLink			: "Линк",
+DlgDocCVisited		: "Зочилсон линк",
+DlgDocCActive		: "Идвэхитэй линк",
+DlgDocMargins		: "Хуудасны захын зай",
+DlgDocMaTop			: "Дээд тал",
+DlgDocMaLeft		: "Зүүн тал",
+DlgDocMaRight		: "Баруун тал",
+DlgDocMaBottom		: "Доод тал",
+DlgDocMeIndex		: "Баримт бичгийн индекс түлхүүр үг (таслалаар тусгаарлагдана)",
+DlgDocMeDescr		: "Баримт бичгийн тайлбар",
+DlgDocMeAuthor		: "Зохиогч",
+DlgDocMeCopy		: "Зохиогчийн эрх",
+DlgDocPreview		: "Харах",
 
 // Templates Dialog
-Templates			: "Templates",	//MISSING
-DlgTemplatesTitle	: "Content Templates",	//MISSING
-DlgTemplatesSelMsg	: "Please select the template to open in the editor<br />(the actual contents will be lost):",	//MISSING
-DlgTemplatesLoading	: "Loading templates list. Please wait...",	//MISSING
-DlgTemplatesNoTpl	: "(No templates defined)",	//MISSING
-DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+Templates			: "Загварууд",
+DlgTemplatesTitle	: "Загварын агуулга",
+DlgTemplatesSelMsg	: "Загварыг нээж editor-рүү сонгож оруулна уу<br />(Одоогийн агууллагыг устаж магадгүй):",
+DlgTemplatesLoading	: "Загваруудыг ачааллаж байна. Түр хүлээнэ үү...",
+DlgTemplatesNoTpl	: "(Загвар тодорхойлогдоогүй байна)",
+DlgTemplatesReplace	: "Одоогийн агууллагыг дарж бичих",
 
 // About Dialog
-DlgAboutAboutTab	: "About",	//MISSING
-DlgAboutBrowserInfoTab	: "Browser Info",	//MISSING
-DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutAboutTab	: "Тухай",
+DlgAboutBrowserInfoTab	: "Мэдээлэл үзүүлэгч",
+DlgAboutLicenseTab	: "Лиценз",
 DlgAboutVersion		: "Хувилбар",
 DlgAboutInfo		: "Мэдээллээр туслах"
Index: /FCKeditor/releases/stable/editor/lang/ms.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/ms.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/ms.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignore Font Face definitions",	//MISSING
 DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
-DlgPasteCleanBox		: "Clean Up Box",	//MISSING
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/nb.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/nb.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/nb.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Fjern skrifttyper",
 DlgPasteRemoveStyles	: "Fjern stildefinisjoner",
-DlgPasteCleanBox		: "Tøm boksen",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/nl.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/nl.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/nl.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Negeer \"Font Face\"-definities",
 DlgPasteRemoveStyles	: "Verwijder \"Style\"-definities",
-DlgPasteCleanBox		: "Vak opschonen",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/no.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/no.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/no.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Fjern skrifttyper",
 DlgPasteRemoveStyles	: "Fjern stildefinisjoner",
-DlgPasteCleanBox		: "Tøm boksen",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/pl.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/pl.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/pl.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignoruj definicje 'Font Face'",
 DlgPasteRemoveStyles	: "Usuń definicje Stylów",
-DlgPasteCleanBox		: "Wyczyść",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/pt-br.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/pt-br.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/pt-br.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignorar definições de fonte",
 DlgPasteRemoveStyles	: "Remove definições de estilo",
-DlgPasteCleanBox		: "Limpar Box",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/pt.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/pt.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/pt.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignorar da definições do Tipo de Letra ",
 DlgPasteRemoveStyles	: "Remover as definições de Estilos",
-DlgPasteCleanBox		: "Caixa de Limpeza",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/ro.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/ro.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/ro.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignoră definiţiile Font Face",
 DlgPasteRemoveStyles	: "Şterge definiţiile stilurilor",
-DlgPasteCleanBox		: "Şterge căsuţa",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/ru.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/ru.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/ru.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Игнорировать определения гарнитуры",
 DlgPasteRemoveStyles	: "Убрать определения стилей",
-DlgPasteCleanBox		: "Очистить",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/sk.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/sk.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/sk.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignorovať nastavenia typu písma",
 DlgPasteRemoveStyles	: "Odstrániť formátovanie",
-DlgPasteCleanBox		: "Vyčistiť schránku",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/sl.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/sl.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/sl.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Prezri obliko pisave",
 DlgPasteRemoveStyles	: "Odstrani nastavitve stila",
-DlgPasteCleanBox		: "Počisti okvir",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/sr-latn.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/sr-latn.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/sr-latn.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignoriši definicije fontova",
 DlgPasteRemoveStyles	: "Ukloni definicije stilova",
-DlgPasteCleanBox		: "Obriši sve",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/sr.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/sr.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/sr.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Игнориши Font Face дефиниције",
 DlgPasteRemoveStyles	: "Уклони дефиниције стилова",
-DlgPasteCleanBox		: "Обриши све",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/sv.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/sv.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/sv.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ignorera typsnittsdefinitioner",
 DlgPasteRemoveStyles	: "Radera Stildefinitioner",
-DlgPasteCleanBox		: "Töm rutans innehåll",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/th.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/th.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/th.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "ไม่สนใจ Font Face definitions",
 DlgPasteRemoveStyles	: "ลบ Styles definitions",
-DlgPasteCleanBox		: "ล้างข้อมูลใน Box",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/tr.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/tr.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/tr.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Yazı Tipi tanımlarını yoksay",
 DlgPasteRemoveStyles	: "Biçem Tanımlarını çıkar",
-DlgPasteCleanBox		: "Temizlik Kutusu",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/uk.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/uk.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/uk.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Ігнорувати налаштування шрифтів",
 DlgPasteRemoveStyles	: "Видалити налаштування стилів",
-DlgPasteCleanBox		: "Очистити область",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/vi.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/vi.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/vi.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "Chấp nhận các định dạng phông",
 DlgPasteRemoveStyles	: "Gỡ bỏ các định dạng Styles",
-DlgPasteCleanBox		: "Xóa nội dung",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/zh-cn.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/zh-cn.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/zh-cn.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "忽略 Font 标签",
 DlgPasteRemoveStyles	: "清理 CSS 样式",
-DlgPasteCleanBox		: "清空上面内容",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/lang/zh.js
===================================================================
--- /FCKeditor/releases/stable/editor/lang/zh.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/lang/zh.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -360,5 +360,4 @@
 DlgPasteIgnoreFont		: "移除字型設定",
 DlgPasteRemoveStyles	: "移除樣式設定",
-DlgPasteCleanBox		: "清除文字區域",
 
 // Color Picker
Index: /FCKeditor/releases/stable/editor/plugins/autogrow/fckplugin.js
===================================================================
--- /FCKeditor/releases/stable/editor/plugins/autogrow/fckplugin.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/plugins/autogrow/fckplugin.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -64,4 +64,11 @@
 
 		window.frameElement.height = iMainFrameSize ;
+
+		// Gecko browsers use an onresize handler to update the innermost
+		// IFRAME's height. If the document is modified before the onresize
+		// is triggered, the plugin will miscalculate the new height. Thus,
+		// forcibly trigger onresize. #1336
+		if ( typeof window.onresize == 'function' )
+			window.onresize() ;
 	}
 }
Index: /FCKeditor/releases/stable/editor/plugins/bbcode/_sample/sample.config.js
===================================================================
--- /FCKeditor/releases/stable/editor/plugins/bbcode/_sample/sample.config.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/plugins/bbcode/_sample/sample.config.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/plugins/bbcode/_sample/sample.html
===================================================================
--- /FCKeditor/releases/stable/editor/plugins/bbcode/_sample/sample.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/plugins/bbcode/_sample/sample.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/plugins/bbcode/fckplugin.js
===================================================================
--- /FCKeditor/releases/stable/editor/plugins/bbcode/fckplugin.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/plugins/bbcode/fckplugin.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/plugins/dragresizetable/fckplugin.js
===================================================================
--- /FCKeditor/releases/stable/editor/plugins/dragresizetable/fckplugin.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/plugins/dragresizetable/fckplugin.js	(revision 1902)
@@ -11,4 +11,5 @@
 	"_LastX" : null,
 	"_TableMap" : null,
+	"_doc" : document,
 	"_IsInsideNode" : function( w, domNode, pos )
 	{
@@ -100,5 +101,5 @@
 		// Calculate maximum and minimum x-coordinate delta.
 		var borderIndex = FCKDragTableHandler._GetResizeBarPosition() ;
-		var offset = FCKTools.GetDocumentPosition( window, FCK.EditingArea.IFrame ) ;
+		var offset = FCKDragTableHandler._GetIframeOffset();
 		var table = FCKTools.GetElementAscensor( FCKDragTableHandler._LeftCell, "table" );
 		var minX = null ;
@@ -308,7 +309,7 @@
 		var mouseX = evt.clientX ;
 		var mouseY = evt.clientY ;
-		if ( node.ownerDocument == document )
-		{
-			var offset = FCKTools.GetDocumentPosition( window, FCK.EditingArea.IFrame ) ;
+		if ( FCKTools.GetElementDocument( node ) == document )
+		{
+			var offset = this._GetIframeOffset() ;
 			mouseX -= offset.x ;
 			mouseY -= offset.y ;
@@ -372,7 +373,7 @@
 		// Convert mouse coordinates in reference to the outer iframe.
 		var node = evt.srcElement || evt.target ;
-		if ( node.ownerDocument == FCK.EditorDocument )
-		{
-			var offset = FCKTools.GetDocumentPosition( window, FCK.EditingArea.IFrame ) ;
+		if ( FCKTools.GetElementDocument( node ) == FCK.EditorDocument )
+		{
+			var offset = this._GetIframeOffset() ;
 			mouse.x += offset.x ;
 			mouse.y += offset.y ;
@@ -393,5 +394,5 @@
 		if ( this._ResizeBar == null )
 		{
-			this._ResizeBar = document.createElement( "div" ) ;
+			this._ResizeBar = this._doc.createElement( "div" ) ;
 			var paddingBar = this._ResizeBar ;
 			var paddingStyles = { 'position' : 'absolute', 'cursor' : 'e-resize' } ;
@@ -401,5 +402,7 @@
 				paddingStyles.opacity = 0.10 ;
 			FCKDomTools.SetElementStyles( paddingBar, paddingStyles ) ;
-			document.body.appendChild( paddingBar ) ;
+			this._avoidStyles( paddingBar );
+			paddingBar.setAttribute('_fcktemp', true);
+			this._doc.body.appendChild( paddingBar ) ;
 			FCKTools.AddEventListener( paddingBar, "mousemove", this._ResizeBarMouseMoveListener ) ;
 			FCKTools.AddEventListener( paddingBar, "mousedown", this._ResizeBarMouseDownListener ) ;
@@ -409,5 +412,6 @@
 			// IE doesn't let the tranparent part of the padding block to receive mouse events unless there's something inside.
 			// So we need to create a spacer image to fill the block up.
-			var filler = document.createElement( "img" ) ;
+			var filler = this._doc.createElement( "img" ) ;
+			filler.setAttribute('_fcktemp', true);
 			filler.border = 0 ;
 			filler.src = FCKConfig.BasePath + "images/spacer.gif" ;
@@ -430,6 +434,6 @@
 
 		var paddingBar = this._ResizeBar ;
-		var offset = FCKTools.GetDocumentPosition( window, FCK.EditingArea.IFrame ) ;
-		var tablePos = FCKTools.GetWindowPosition( w, table ) ;
+		var offset = this._GetIframeOffset() ;
+		var tablePos = this._GetTablePosition( w, table ) ;
 		var barHeight = table.offsetHeight ;
 		var barTop = offset.y + tablePos.y ;
@@ -472,5 +476,7 @@
 		if ( paddingBar.getElementsByTagName( "div" ).length < 1 )
 		{
-			visibleBar = document.createElement( "div" ) ;
+			visibleBar = this._doc.createElement( "div" ) ;
+			this._avoidStyles( visibleBar );
+			visibleBar.setAttribute('_fcktemp', true);
 			paddingBar.appendChild( visibleBar ) ;
 		}
@@ -498,5 +504,23 @@
 					left	: '-100000px'
 				} ) ;
+	},
+	"_GetIframeOffset" : function ()
+	{
+		return FCKTools.GetDocumentPosition( window, FCK.EditingArea.IFrame ) ;
+	},
+	"_GetTablePosition" : function ( w, table )
+	{
+		return FCKTools.GetWindowPosition( w, table ) ;
+	},
+	"_avoidStyles" : function( element )
+	{
+		FCKDomTools.SetElementStyles( element,
+			{
+				padding		: '0',
+				backgroundImage	: 'none',
+				border		: '0'
+			} ) ;
 	}
+
 };
 
Index: /FCKeditor/releases/stable/editor/plugins/placeholder/fck_placeholder.html
===================================================================
--- /FCKeditor/releases/stable/editor/plugins/placeholder/fck_placeholder.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/plugins/placeholder/fck_placeholder.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -27,7 +27,9 @@
 		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 		<meta content="noindex, nofollow" name="robots">
+		<script src="../../dialog/common/fck_dialog_common.js" type="text/javascript"></script>
 		<script language="javascript">
 
-var oEditor = window.parent.InnerDialogLoaded() ;
+var dialog = window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
 var FCKLang = oEditor.FCKLang ;
 var FCKPlaceholders = oEditor.FCKPlaceholders ;
@@ -41,8 +43,11 @@
 
 	// Show the "Ok" button.
-	window.parent.SetOkButton( true ) ;
+	dialog.SetOkButton( true ) ;
+
+	// Select text field on load.
+	SelectField( 'txtName' ) ;
 }
 
-var eSelected = oEditor.FCKSelection.GetSelectedElement() ;
+var eSelected = dialog.Selection.GetSelectedElement() ;
 
 function LoadSelected()
Index: /FCKeditor/releases/stable/editor/plugins/placeholder/fckplugin.js
===================================================================
--- /FCKeditor/releases/stable/editor/plugins/placeholder/fckplugin.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/plugins/placeholder/fckplugin.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -23,5 +23,5 @@
 
 // Register the related command.
-FCKCommands.RegisterCommand( 'Placeholder', new FCKDialogCommand( 'Placeholder', FCKLang.PlaceholderDlgTitle, FCKPlugins.Items['placeholder'].Path + 'fck_placeholder.html', 340, 170 ) ) ;
+FCKCommands.RegisterCommand( 'Placeholder', new FCKDialogCommand( 'Placeholder', FCKLang.PlaceholderDlgTitle, FCKPlugins.Items['placeholder'].Path + 'fck_placeholder.html', 340, 160 ) ) ;
 
 // Create the "Plaholder" toolbar button.
Index: /FCKeditor/releases/stable/editor/plugins/placeholder/lang/de.js
===================================================================
--- /FCKeditor/releases/stable/editor/plugins/placeholder/lang/de.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/plugins/placeholder/lang/de.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/plugins/placeholder/lang/en.js
===================================================================
--- /FCKeditor/releases/stable/editor/plugins/placeholder/lang/en.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/plugins/placeholder/lang/en.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/plugins/placeholder/lang/es.js
===================================================================
--- /FCKeditor/releases/stable/editor/plugins/placeholder/lang/es.js	(revision 1902)
+++ /FCKeditor/releases/stable/editor/plugins/placeholder/lang/es.js	(revision 1902)
@@ -0,0 +1,27 @@
+﻿/*
+ * 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 ==
+ *
+ * Placholder Spanish language file.
+ */
+FCKLang.PlaceholderBtn			= 'Insertar/Editar contenedor' ;
+FCKLang.PlaceholderDlgTitle		= 'Propiedades del contenedor ' ;
+FCKLang.PlaceholderDlgName		= 'Nombre de contenedor' ;
+FCKLang.PlaceholderErrNoName	= 'Por favor escriba el nombre de contenedor' ;
+FCKLang.PlaceholderErrNameInUse	= 'El nombre especificado ya esta en uso' ;
Index: /FCKeditor/releases/stable/editor/plugins/placeholder/lang/fr.js
===================================================================
--- /FCKeditor/releases/stable/editor/plugins/placeholder/lang/fr.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/plugins/placeholder/lang/fr.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/plugins/placeholder/lang/it.js
===================================================================
--- /FCKeditor/releases/stable/editor/plugins/placeholder/lang/it.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/plugins/placeholder/lang/it.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/plugins/placeholder/lang/pl.js
===================================================================
--- /FCKeditor/releases/stable/editor/plugins/placeholder/lang/pl.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/plugins/placeholder/lang/pl.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/plugins/simplecommands/fckplugin.js
===================================================================
--- /FCKeditor/releases/stable/editor/plugins/simplecommands/fckplugin.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/plugins/simplecommands/fckplugin.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/plugins/tablecommands/fckplugin.js
===================================================================
--- /FCKeditor/releases/stable/editor/plugins/tablecommands/fckplugin.js	(revision 1901)
+++ /FCKeditor/releases/stable/editor/plugins/tablecommands/fckplugin.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/skins/_fckviewstrips.html
===================================================================
--- /FCKeditor/releases/stable/editor/skins/_fckviewstrips.html	(revision 1901)
+++ /FCKeditor/releases/stable/editor/skins/_fckviewstrips.html	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/editor/skins/default/fck_dialog.css
===================================================================
--- /FCKeditor/releases/stable/editor/skins/default/fck_dialog.css	(revision 1901)
+++ /FCKeditor/releases/stable/editor/skins/default/fck_dialog.css	(revision 1902)
@@ -1,5 +1,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -22,7 +22,13 @@
  */
 
+html, body
+{
+	background-color: transparent;
+	margin: 0px;
+	padding: 0px;
+}
+
 body
 {
-	margin: 0px;
 	padding: 10px;
 }
@@ -41,6 +47,14 @@
 .PopupBody
 {
-	margin: 0px;
+	height: 100%;
+	width: 100%;
+	overflow: hidden;
+	background-color: transparent;
 	padding: 0px;
+}
+
+#header
+{
+	cursor: move;
 }
 
@@ -56,4 +70,8 @@
 .PopupButtons
 {
+	position: absolute;
+	right: 0px;
+	left: 0px;
+	bottom: 0px;
 	border-top: #d5d59d 1px solid;
 	background-color: #e3e3c7;
@@ -75,5 +93,5 @@
 .DarkBackground
 {
-	background-color: #d7d79f;
+	background-color: #eaead1;
 }
 
@@ -96,5 +114,5 @@
 .PopupTabEmptyArea
 {
-	padding-left: 10px ;
+	padding-left: 10px;
 	border-bottom: #d5d59d 1px solid;
 }
@@ -119,5 +137,5 @@
 .PopupTabSelected
 {
-	font-weight:bold;
+	font-weight: bold;
 	cursor: default;
 	padding-top: 4px;
@@ -134,6 +152,251 @@
 }
 
-#tdBrowse 
+#tdBrowse
 {
 	vertical-align: bottom;
 }
+
+/**
+ * Dialog frame related styles.
+ */
+
+.contents
+{
+	position: absolute;
+	top: 2px;
+	left: 16px;
+	right: 16px;
+	bottom: 20px;
+	background-color: #f1f1e3;
+	overflow: hidden;
+	z-index: 1;
+}
+
+.tl, .tr, .tc, .bl, .br, .bc
+{
+	position: absolute;
+	background-image: url(images/sprites.png);
+	background-repeat: no-repeat;
+}
+
+* html .tl, * html .tr, * html .tc, * html .bl, * html .br, * html .bc
+{
+	background-image: url(images/sprites.gif);
+}
+
+.ml, .mr
+{
+	position: absolute;
+	background-image: url(images/dialog.sides.png);
+	background-repeat: repeat-y;
+}
+
+* html .ml, * html .mr
+{
+	background-image: url(images/dialog.sides.gif);
+}
+
+.rtl .ml, .rtl .mr
+{
+	position: absolute;
+	background-image: url(images/dialog.sides.rtl.png);
+	background-repeat: repeat-y;
+}
+
+* html .rtl .ml, * html .rtl .mr
+{
+	background-image: url(images/dialog.sides.gif);
+}
+
+.tl
+{
+	top: 0px;
+	left: 0px;
+	width: 16px;
+	height: 16px;
+	background-position: -16px -16px;
+}
+
+.rtl .tl
+{
+	background-position: -16px -397px;
+}
+
+.tr
+{
+	top: 0px;
+	right: 0px;
+	width: 16px;
+	height: 16px;
+	background-position: -16px -76px;
+}
+
+.rtl .tr
+{
+	background-position: -16px -457px;
+}
+
+.tc
+{
+	top: 0px;
+	right: 16px;
+	left: 16px;
+	height: 16px;
+	background-position: 0px -136px;
+	background-repeat: repeat-x;
+}
+
+.ml
+{
+	top: 16px;
+	left: 0px;
+	width: 16px;
+	bottom: 51px;
+	background-position: 0px 0px;
+}
+
+.mr
+{
+	top: 16px;
+	right: 0px;
+	width: 16px;
+	bottom: 51px;
+	background-position: -16px 0px;
+}
+
+.bl
+{
+	bottom: 0px;
+	left: 0px;
+	width: 30px;
+	height: 51px;
+	background-position: -16px -196px;
+}
+
+.rtl .bl
+{
+	background-position: -16px -517px;
+}
+
+.br
+{
+	bottom: 0px;
+	right: 0px;
+	width: 30px;
+	height: 51px;
+	background-position: -16px -263px;
+}
+
+.rtl .br
+{
+	background-position: -16px -584px;
+}
+
+.bc
+{
+	bottom: 0px;
+	right: 30px;
+	left: 30px;
+	height: 51px;
+	background-position: 0px -330px;
+	background-repeat: repeat-x;
+}
+
+/* For IE6. Do not change it. */
+* html .blocker
+{
+	position: absolute;
+	width: 100%;
+	height: 100%;
+	z-index: 12;
+	filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
+}
+
+/* The layer used to cover the dialog when opening a child dialog. */
+.cover
+{
+	position: absolute;
+	top: 0px;
+	left: 14px;
+	right: 14px;
+	bottom: 18px;
+	z-index: 11;
+}
+
+#closeButton
+{
+	position: absolute;
+	right: 0px;
+	top: 0px;
+	margin-top: 5px;
+	margin-right: 10px;
+	width: 20px;
+	height: 20px;
+	cursor: pointer;
+	background-image: url(images/sprites.png);
+	background-repeat: no-repeat;
+	background-position: -16px -651px;
+}
+
+* html #closeButton
+{
+	cursor: hand;
+	background-image: url(images/sprites.gif);
+}
+
+.rtl #closeButton
+{
+	right: auto;
+	left: 10px;
+	margin-right: 0px;
+}
+
+#closeButton:hover
+{
+	background-position: -16px -687px;
+}
+
+#throbberBlock
+{
+	z-index: 10;
+}
+
+#throbberBlock div
+{
+	float: left;
+	width: 8px;
+	height: 9px;
+	margin-left: 2px;
+	margin-right: 2px;
+	font-size: 1px;	/* IE6 */
+}
+
+/*
+	Color Gradient Generator:
+	http://www.herethere.net/~samson/php/color_gradient/?cbegin=737357&cend=E3E3C7&steps=4
+*/
+
+.throbber_1
+{
+	background-color: #737357;
+}
+
+.throbber_2
+{
+	background-color: #8f8f73;
+}
+
+.throbber_3
+{
+	background-color: #abab8f;
+}
+
+.throbber_4
+{
+	background-color: #c7c7ab;
+}
+
+.throbber_5
+{
+	background-color: #e3e3c7;
+}
Index: /FCKeditor/releases/stable/editor/skins/default/fck_dialog_ie6.js
===================================================================
--- /FCKeditor/releases/stable/editor/skins/default/fck_dialog_ie6.js	(revision 1902)
+++ /FCKeditor/releases/stable/editor/skins/default/fck_dialog_ie6.js	(revision 1902)
@@ -0,0 +1,110 @@
+﻿/*
+ * 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 ==
+ */
+
+(function()
+{
+	// IE6 doens't handle absolute positioning properly (it is always in quirks
+	// mode). This function fixes the sizes and positions of many elements that
+	// compose the skin (this is skin specific).
+	var fixSizes = window.DoResizeFixes = function()
+	{
+		var fckDlg = window.document.body ;
+
+		for ( var i = 0 ; i < fckDlg.childNodes.length ; i++ )
+		{
+			var child = fckDlg.childNodes[i] ;
+			switch ( child.className )
+			{
+				case 'contents' :
+					child.style.width = Math.max( 0, fckDlg.offsetWidth - 16 - 16 ) ;	// -left -right
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 20 - 2 ) ;	// -bottom -top
+					break ;
+
+				case 'blocker' :
+				case 'cover' :
+					child.style.width = Math.max( 0, fckDlg.offsetWidth - 16 - 16 + 4 ) ;	// -left -right + 4
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 20 - 2 + 4 ) ;	// -bottom -top + 4
+					break ;
+
+				case 'tr' :
+					child.style.left = Math.max( 0, fckDlg.clientWidth - 16 ) ;
+					break ;
+
+				case 'tc' :
+					child.style.width = Math.max( 0, fckDlg.clientWidth - 16 - 16 ) ;
+					break ;
+
+				case 'ml' :
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 16 - 51 ) ;
+					break ;
+
+				case 'mr' :
+					child.style.left = Math.max( 0, fckDlg.clientWidth - 16 ) ;
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 16 - 51 ) ;
+					break ;
+
+				case 'bl' :
+					child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
+					break ;
+
+				case 'br' :
+					child.style.left = Math.max( 0, fckDlg.clientWidth - 30 ) ;
+					child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
+					break ;
+
+				case 'bc' :
+					child.style.width = Math.max( 0, fckDlg.clientWidth - 30 - 30 ) ;
+					child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
+					break ;
+			}
+		}
+	}
+
+	var closeButtonOver = function()
+	{
+		this.style.backgroundPosition = '-16px -687px' ;
+	} ;
+
+	var closeButtonOut = function()
+	{
+		this.style.backgroundPosition = '-16px -651px' ;
+	} ;
+
+	var fixCloseButton = function()
+	{
+		var closeButton = document.getElementById ( 'closeButton' ) ;
+
+		closeButton.onmouseover	= closeButtonOver ;
+		closeButton.onmouseout	= closeButtonOut ;
+	}
+
+	var onLoad = function()
+	{
+		fixSizes() ;
+		fixCloseButton() ;
+
+		window.attachEvent( 'onresize', fixSizes ) ;
+		window.detachEvent( 'onload', onLoad ) ;
+	}
+
+	window.attachEvent( 'onload', onLoad ) ;
+
+})() ;
Index: /FCKeditor/releases/stable/editor/skins/default/fck_editor.css
===================================================================
--- /FCKeditor/releases/stable/editor/skins/default/fck_editor.css	(revision 1901)
+++ /FCKeditor/releases/stable/editor/skins/default/fck_editor.css	(revision 1902)
@@ -1,5 +1,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -410,5 +410,5 @@
 }
 
-.SC_FieldDisabled .SC_FieldButton, .SC_FieldDisabled .SC_FieldCaption
+.SC_FieldDisabled .SC_FieldButton, .SC_FieldDisabled .SC_FieldCaption, .SC_FieldDisabled .TB_ButtonType_Text
 {
     opacity: 0.30; /* Safari, Opera and Mozilla */
Index: /FCKeditor/releases/stable/editor/skins/office2003/fck_dialog.css
===================================================================
--- /FCKeditor/releases/stable/editor/skins/office2003/fck_dialog.css	(revision 1901)
+++ /FCKeditor/releases/stable/editor/skins/office2003/fck_dialog.css	(revision 1902)
@@ -1,5 +1,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -22,9 +22,14 @@
  */
 
+html, body
+{
+	background-color: transparent;
+	margin: 0px;
+	padding: 0px;
+}
+
 body
 {
-	margin: 0px;
 	padding: 10px;
-	background-color: #f7f8fd;
 }
 
@@ -42,6 +47,14 @@
 .PopupBody
 {
-	margin: 0px;
+	height: 100%;
+	width: 100%;
+	overflow: hidden;
+	background-color: transparent;
 	padding: 0px;
+}
+
+#header
+{
+	cursor: move;
 }
 
@@ -57,4 +70,8 @@
 .PopupButtons
 {
+	position: absolute;
+	right: 0px;
+	left: 0px;
+	bottom: 0px;
 	border-top: #466ca6 1px solid;
 	background-color: #8cb2fd;
@@ -76,5 +93,5 @@
 .DarkBackground
 {
-	background-color: #d7d79f;
+	background-color: #eaf2f8;
 }
 
@@ -120,5 +137,5 @@
 .PopupTabSelected
 {
-	font-weight:bold;
+	font-weight: bold;
 	cursor: default;
 	padding-top: 4px;
@@ -135,6 +152,251 @@
 }
 
-#tdBrowse 
+#tdBrowse
 {
 	vertical-align: bottom;
 }
+
+/**
+ * Dialog frame related styles.
+ */
+
+.contents
+{
+	position: absolute;
+	top: 2px;
+	left: 16px;
+	right: 16px;
+	bottom: 20px;
+	background-color: #f7f8fD;
+	overflow: hidden;
+	z-index: 1;
+}
+
+.tl, .tr, .tc, .bl, .br, .bc
+{
+	position: absolute;
+	background-image: url(images/sprites.png);
+	background-repeat: no-repeat;
+}
+
+* html .tl, * html .tr, * html .tc, * html .bl, * html .br, * html .bc
+{
+	background-image: url(images/sprites.gif);
+}
+
+.ml, .mr
+{
+	position: absolute;
+	background-image: url(images/dialog.sides.png);
+	background-repeat: repeat-y;
+}
+
+* html .ml, * html .mr
+{
+	background-image: url(images/dialog.sides.gif);
+}
+
+.rtl .ml, .rtl .mr
+{
+	position: absolute;
+	background-image: url(images/dialog.sides.rtl.png);
+	background-repeat: repeat-y;
+}
+
+* html .rtl .ml, * html .rtl .mr
+{
+	background-image: url(images/dialog.sides.gif);
+}
+
+.tl
+{
+	top: 0px;
+	left: 0px;
+	width: 16px;
+	height: 16px;
+	background-position: -16px -16px;
+}
+
+.rtl .tl
+{
+	background-position: -16px -397px;
+}
+
+.tr
+{
+	top: 0px;
+	right: 0px;
+	width: 16px;
+	height: 16px;
+	background-position: -16px -76px;
+}
+
+.rtl .tr
+{
+	background-position: -16px -457px;
+}
+
+.tc
+{
+	top: 0px;
+	right: 16px;
+	left: 16px;
+	height: 16px;
+	background-position: 0px -136px;
+	background-repeat: repeat-x;
+}
+
+.ml
+{
+	top: 16px;
+	left: 0px;
+	width: 16px;
+	bottom: 51px;
+	background-position: 0px 0px;
+}
+
+.mr
+{
+	top: 16px;
+	right: 0px;
+	width: 16px;
+	bottom: 51px;
+	background-position: -16px 0px;
+}
+
+.bl
+{
+	bottom: 0px;
+	left: 0px;
+	width: 30px;
+	height: 51px;
+	background-position: -16px -196px;
+}
+
+.rtl .bl
+{
+	background-position: -16px -517px;
+}
+
+.br
+{
+	bottom: 0px;
+	right: 0px;
+	width: 30px;
+	height: 51px;
+	background-position: -16px -263px;
+}
+
+.rtl .br
+{
+	background-position: -16px -584px;
+}
+
+.bc
+{
+	bottom: 0px;
+	right: 30px;
+	left: 30px;
+	height: 51px;
+	background-position: 0px -330px;
+	background-repeat: repeat-x;
+}
+
+/* For IE6. Do not change it. */
+* html .blocker
+{
+	position: absolute;
+	width: 100%;
+	height: 100%;
+	z-index: 12;
+	filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
+}
+
+/* The layer used to cover the dialog when opening a child dialog. */
+.cover
+{
+	position: absolute;
+	top: 0px;
+	left: 14px;
+	right: 14px;
+	bottom: 18px;
+	z-index: 11;
+}
+
+#closeButton
+{
+	position: absolute;
+	right: 0px;
+	top: 0px;
+	margin-top: 5px;
+	margin-right: 10px;
+	width: 20px;
+	height: 20px;
+	cursor: pointer;
+	background-image: url(images/sprites.png);
+	background-repeat: no-repeat;
+	background-position: -16px -651px;
+}
+
+* html #closeButton
+{
+	cursor: hand;
+	background-image: url(images/sprites.gif);
+}
+
+.rtl #closeButton
+{
+	right: auto;
+	left: 10px;
+	margin-right: 0px;
+}
+
+#closeButton:hover
+{
+	background-position: -16px -687px;
+}
+
+#throbberBlock
+{
+	z-index: 10;
+}
+
+#throbberBlock div
+{
+	float: left;
+	width: 8px;
+	height: 9px;
+	margin-left: 2px;
+	margin-right: 2px;
+	font-size: 1px;	/* IE6 */
+}
+
+/*
+	Color Gradient Generator:
+	http://www.herethere.net/~samson/php/color_gradient/?cbegin=0E3460&cend=8cb2fd&steps=4
+*/
+
+.throbber_1
+{
+	background-color: #0E3460;
+}
+
+.throbber_2
+{
+	background-color: #2D5387;
+}
+
+.throbber_3
+{
+	background-color: #4D73AE;
+}
+
+.throbber_4
+{
+	background-color: #6C92D5;
+}
+
+.throbber_5
+{
+	background-color: #8CB2FD;
+}
Index: /FCKeditor/releases/stable/editor/skins/office2003/fck_dialog_ie6.js
===================================================================
--- /FCKeditor/releases/stable/editor/skins/office2003/fck_dialog_ie6.js	(revision 1902)
+++ /FCKeditor/releases/stable/editor/skins/office2003/fck_dialog_ie6.js	(revision 1902)
@@ -0,0 +1,110 @@
+﻿/*
+ * 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 ==
+ */
+
+(function()
+{
+	// IE6 doens't handle absolute positioning properly (it is always in quirks
+	// mode). This function fixes the sizes and positions of many elements that
+	// compose the skin (this is skin specific).
+	var fixSizes = window.DoResizeFixes = function()
+	{
+		var fckDlg = window.document.body ;
+
+		for ( var i = 0 ; i < fckDlg.childNodes.length ; i++ )
+		{
+			var child = fckDlg.childNodes[i] ;
+			switch ( child.className )
+			{
+				case 'contents' :
+					child.style.width = Math.max( 0, fckDlg.offsetWidth - 16 - 16 ) ;	// -left -right
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 20 - 2 ) ;	// -bottom -top
+					break ;
+
+				case 'blocker' :
+				case 'cover' :
+					child.style.width = Math.max( 0, fckDlg.offsetWidth - 16 - 16 + 4 ) ;	// -left -right + 4
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 20 - 2 + 4 ) ;	// -bottom -top + 4
+					break ;
+
+				case 'tr' :
+					child.style.left = Math.max( 0, fckDlg.clientWidth - 16 ) ;
+					break ;
+
+				case 'tc' :
+					child.style.width = Math.max( 0, fckDlg.clientWidth - 16 - 16 ) ;
+					break ;
+
+				case 'ml' :
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 16 - 51 ) ;
+					break ;
+
+				case 'mr' :
+					child.style.left = Math.max( 0, fckDlg.clientWidth - 16 ) ;
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 16 - 51 ) ;
+					break ;
+
+				case 'bl' :
+					child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
+					break ;
+
+				case 'br' :
+					child.style.left = Math.max( 0, fckDlg.clientWidth - 30 ) ;
+					child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
+					break ;
+
+				case 'bc' :
+					child.style.width = Math.max( 0, fckDlg.clientWidth - 30 - 30 ) ;
+					child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
+					break ;
+			}
+		}
+	}
+
+	var closeButtonOver = function()
+	{
+		this.style.backgroundPosition = '-16px -687px' ;
+	} ;
+
+	var closeButtonOut = function()
+	{
+		this.style.backgroundPosition = '-16px -651px' ;
+	} ;
+
+	var fixCloseButton = function()
+	{
+		var closeButton = document.getElementById ( 'closeButton' ) ;
+
+		closeButton.onmouseover	= closeButtonOver ;
+		closeButton.onmouseout	= closeButtonOut ;
+	}
+
+	var onLoad = function()
+	{
+		fixSizes() ;
+		fixCloseButton() ;
+
+		window.attachEvent( 'onresize', fixSizes ) ;
+		window.detachEvent( 'onload', onLoad ) ;
+	}
+
+	window.attachEvent( 'onload', onLoad ) ;
+
+})() ;
Index: /FCKeditor/releases/stable/editor/skins/office2003/fck_editor.css
===================================================================
--- /FCKeditor/releases/stable/editor/skins/office2003/fck_editor.css	(revision 1901)
+++ /FCKeditor/releases/stable/editor/skins/office2003/fck_editor.css	(revision 1902)
@@ -1,5 +1,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -422,5 +422,5 @@
 }
 
-.SC_FieldDisabled .SC_FieldButton, .SC_FieldDisabled .SC_FieldCaption
+.SC_FieldDisabled .SC_FieldButton, .SC_FieldDisabled .SC_FieldCaption, .SC_FieldDisabled .TB_ButtonType_Text
 {
     opacity: 0.30; /* Safari, Opera and Mozilla */
Index: /FCKeditor/releases/stable/editor/skins/silver/fck_dialog.css
===================================================================
--- /FCKeditor/releases/stable/editor/skins/silver/fck_dialog.css	(revision 1901)
+++ /FCKeditor/releases/stable/editor/skins/silver/fck_dialog.css	(revision 1902)
@@ -1,5 +1,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -22,9 +22,14 @@
  */
 
+html, body
+{
+	background-color: transparent;
+	margin: 0px;
+	padding: 0px;
+}
+
 body
 {
-	margin: 0px;
 	padding: 10px;
-	background-color: #f7f7f7;
 }
 
@@ -42,22 +47,31 @@
 .PopupBody
 {
-	margin: 0px;
+	height: 100%;
+	width: 100%;
+	overflow: hidden;
+	background-color: transparent;
 	padding: 0px;
 }
 
+#header
+{
+	cursor: move;
+}
+
 .PopupTitle
 {
-	padding-right: 10px;
-	padding-left: 10px;
 	font-weight: bold;
 	font-size: 14pt;
-	padding-bottom: 3px;
 	color: #504845;
-	padding-top: 3px;
 	background-color: #dedede;
+	padding: 3px 10px 3px 10px;
 }
 
 .PopupButtons
 {
+	position: absolute;
+	right: 0px;
+	left: 0px;
+	bottom: 0px;
 	border-top: #cec6b5 1px solid;
 	background-color: #DEDEDE;
@@ -79,5 +93,5 @@
 .DarkBackground
 {
-	background-color: #d7d79f;
+	background-color: #f2f2f2;
 }
 
@@ -138,6 +152,251 @@
 }
 
-#tdBrowse 
+#tdBrowse
 {
 	vertical-align: bottom;
 }
+
+/**
+ * Dialog frame related styles.
+ */
+
+.contents
+{
+	position: absolute;
+	top: 2px;
+	left: 16px;
+	right: 16px;
+	bottom: 20px;
+	background-color: #f7f7f7;
+	overflow: hidden;
+	z-index: 1;
+}
+
+.tl, .tr, .tc, .bl, .br, .bc
+{
+	position: absolute;
+	background-image: url(images/sprites.png);
+	background-repeat: no-repeat;
+}
+
+* html .tl, * html .tr, * html .tc, * html .bl, * html .br, * html .bc
+{
+	background-image: url(images/sprites.gif);
+}
+
+.ml, .mr
+{
+	position: absolute;
+	background-image: url(images/dialog.sides.png);
+	background-repeat: repeat-y;
+}
+
+* html .ml, * html .mr
+{
+	background-image: url(images/dialog.sides.gif);
+}
+
+.rtl .ml, .rtl .mr
+{
+	position: absolute;
+	background-image: url(images/dialog.sides.rtl.png);
+	background-repeat: repeat-y;
+}
+
+* html .rtl .ml, * html .rtl .mr
+{
+	background-image: url(images/dialog.sides.gif);
+}
+
+.tl
+{
+	top: 0px;
+	left: 0px;
+	width: 16px;
+	height: 16px;
+	background-position: -16px -16px;
+}
+
+.rtl .tl
+{
+	background-position: -16px -397px;
+}
+
+.tr
+{
+	top: 0px;
+	right: 0px;
+	width: 16px;
+	height: 16px;
+	background-position: -16px -76px;
+}
+
+.rtl .tr
+{
+	background-position: -16px -457px;
+}
+
+.tc
+{
+	top: 0px;
+	right: 16px;
+	left: 16px;
+	height: 16px;
+	background-position: 0px -136px;
+	background-repeat: repeat-x;
+}
+
+.ml
+{
+	top: 16px;
+	left: 0px;
+	width: 16px;
+	bottom: 51px;
+	background-position: 0px 0px;
+}
+
+.mr
+{
+	top: 16px;
+	right: 0px;
+	width: 16px;
+	bottom: 51px;
+	background-position: -16px 0px;
+}
+
+.bl
+{
+	bottom: 0px;
+	left: 0px;
+	width: 30px;
+	height: 51px;
+	background-position: -16px -196px;
+}
+
+.rtl .bl
+{
+	background-position: -16px -517px;
+}
+
+.br
+{
+	bottom: 0px;
+	right: 0px;
+	width: 30px;
+	height: 51px;
+	background-position: -16px -263px;
+}
+
+.rtl .br
+{
+	background-position: -16px -584px;
+}
+
+.bc
+{
+	bottom: 0px;
+	right: 30px;
+	left: 30px;
+	height: 51px;
+	background-position: 0px -330px;
+	background-repeat: repeat-x;
+}
+
+/* For IE6. Do not change it. */
+* html .blocker
+{
+	position: absolute;
+	width: 100%;
+	height: 100%;
+	z-index: 12;
+	filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
+}
+
+/* The layer used to cover the dialog when opening a child dialog. */
+.cover
+{
+	position: absolute;
+	top: 0px;
+	left: 14px;
+	right: 14px;
+	bottom: 18px;
+	z-index: 11;
+}
+
+#closeButton
+{
+	position: absolute;
+	right: 0px;
+	top: 0px;
+	margin-top: 5px;
+	margin-right: 10px;
+	width: 20px;
+	height: 20px;
+	cursor: pointer;
+	background-image: url(images/sprites.png);
+	background-repeat: no-repeat;
+	background-position: -16px -651px;
+}
+
+* html #closeButton
+{
+	cursor: hand;
+	background-image: url(images/sprites.gif);
+}
+
+.rtl #closeButton
+{
+	right: auto;
+	left: 10px;
+	margin-right: 0px;
+}
+
+#closeButton:hover
+{
+	background-position: -16px -687px;
+}
+
+#throbberBlock
+{
+	z-index: 10;
+}
+
+#throbberBlock div
+{
+	float: left;
+	width: 8px;
+	height: 9px;
+	margin-left: 2px;
+	margin-right: 2px;
+	font-size: 1px;	/* IE6 */
+}
+
+/*
+	Color Gradient Generator:
+	http://www.herethere.net/~samson/php/color_gradient/?cbegin=504845&cend=DEDEDE&steps=4
+*/
+
+.throbber_1
+{
+	background-color: #504845;
+}
+
+.throbber_2
+{
+	background-color: #736D6B;
+}
+
+.throbber_3
+{
+	background-color: #979391;
+}
+
+.throbber_4
+{
+	background-color: #BAB8B7;
+}
+
+.throbber_5
+{
+	background-color: #DEDEDE;
+}
Index: /FCKeditor/releases/stable/editor/skins/silver/fck_dialog_ie6.js
===================================================================
--- /FCKeditor/releases/stable/editor/skins/silver/fck_dialog_ie6.js	(revision 1902)
+++ /FCKeditor/releases/stable/editor/skins/silver/fck_dialog_ie6.js	(revision 1902)
@@ -0,0 +1,110 @@
+﻿/*
+ * 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 ==
+ */
+
+(function()
+{
+	// IE6 doens't handle absolute positioning properly (it is always in quirks
+	// mode). This function fixes the sizes and positions of many elements that
+	// compose the skin (this is skin specific).
+	var fixSizes = window.DoResizeFixes = function()
+	{
+		var fckDlg = window.document.body ;
+
+		for ( var i = 0 ; i < fckDlg.childNodes.length ; i++ )
+		{
+			var child = fckDlg.childNodes[i] ;
+			switch ( child.className )
+			{
+				case 'contents' :
+					child.style.width = Math.max( 0, fckDlg.offsetWidth - 16 - 16 ) ;	// -left -right
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 20 - 2 ) ;	// -bottom -top
+					break ;
+
+				case 'blocker' :
+				case 'cover' :
+					child.style.width = Math.max( 0, fckDlg.offsetWidth - 16 - 16 + 4 ) ;	// -left -right + 4
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 20 - 2 + 4 ) ;	// -bottom -top + 4
+					break ;
+
+				case 'tr' :
+					child.style.left = Math.max( 0, fckDlg.clientWidth - 16 ) ;
+					break ;
+
+				case 'tc' :
+					child.style.width = Math.max( 0, fckDlg.clientWidth - 16 - 16 ) ;
+					break ;
+
+				case 'ml' :
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 16 - 51 ) ;
+					break ;
+
+				case 'mr' :
+					child.style.left = Math.max( 0, fckDlg.clientWidth - 16 ) ;
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 16 - 51 ) ;
+					break ;
+
+				case 'bl' :
+					child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
+					break ;
+
+				case 'br' :
+					child.style.left = Math.max( 0, fckDlg.clientWidth - 30 ) ;
+					child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
+					break ;
+
+				case 'bc' :
+					child.style.width = Math.max( 0, fckDlg.clientWidth - 30 - 30 ) ;
+					child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
+					break ;
+			}
+		}
+	}
+
+	var closeButtonOver = function()
+	{
+		this.style.backgroundPosition = '-16px -687px' ;
+	} ;
+
+	var closeButtonOut = function()
+	{
+		this.style.backgroundPosition = '-16px -651px' ;
+	} ;
+
+	var fixCloseButton = function()
+	{
+		var closeButton = document.getElementById ( 'closeButton' ) ;
+
+		closeButton.onmouseover	= closeButtonOver ;
+		closeButton.onmouseout	= closeButtonOut ;
+	}
+
+	var onLoad = function()
+	{
+		fixSizes() ;
+		fixCloseButton() ;
+
+		window.attachEvent( 'onresize', fixSizes ) ;
+		window.detachEvent( 'onload', onLoad ) ;
+	}
+
+	window.attachEvent( 'onload', onLoad ) ;
+
+})() ;
Index: /FCKeditor/releases/stable/editor/skins/silver/fck_editor.css
===================================================================
--- /FCKeditor/releases/stable/editor/skins/silver/fck_editor.css	(revision 1901)
+++ /FCKeditor/releases/stable/editor/skins/silver/fck_editor.css	(revision 1902)
@@ -1,5 +1,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -419,5 +419,5 @@
 }
 
-.SC_FieldDisabled .SC_FieldButton, .SC_FieldDisabled .SC_FieldCaption
+.SC_FieldDisabled .SC_FieldButton, .SC_FieldDisabled .SC_FieldCaption, .SC_FieldDisabled .TB_ButtonType_Text
 {
     opacity: 0.30; /* Safari, Opera and Mozilla */
Index: /FCKeditor/releases/stable/fckconfig.js
===================================================================
--- /FCKeditor/releases/stable/fckconfig.js	(revision 1901)
+++ /FCKeditor/releases/stable/fckconfig.js	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -44,4 +44,7 @@
 
 FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/default/' ;
+FCKConfig.SkinEditorCSS = '' ;	// FCKConfig.SkinPath + "|<minified css>" ;
+FCKConfig.SkinDialogCSS = '' ;	// FCKConfig.SkinPath + "|<minified css>" ;
+
 FCKConfig.PreloadImages = [ FCKConfig.SkinPath + 'images/toolbar.start.gif', FCKConfig.SkinPath + 'images/toolbar.buttonarrow.gif' ] ;
 
@@ -123,4 +126,5 @@
 	[ CTRL + 70 /*F*/, true ],
 	[ CTRL + 83 /*S*/, true ],
+	[ CTRL + 84 /*T*/, true ],
 	[ CTRL + 88 /*X*/, true ],
 	[ CTRL + 86 /*V*/, 'Paste' ],
@@ -136,6 +140,5 @@
 	[ CTRL + 85 /*U*/, 'Underline' ],
 	[ CTRL + SHIFT + 83 /*S*/, 'Save' ],
-	[ CTRL + ALT + 13 /*ENTER*/, 'FitWindow' ],
-	[ CTRL + 9 /*TAB*/, 'Source' ]
+	[ CTRL + ALT + 13 /*ENTER*/, 'FitWindow' ]
 ] ;
 
@@ -190,5 +193,8 @@
 FCKConfig.RemoveFormatTags = 'b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var' ;
 
-FCKConfig.CustomStyles = 
+// Attributes that will be removed
+FCKConfig.RemoveAttributes = 'class,style,lang,width,height,align,hspace,valign' ;
+
+FCKConfig.CustomStyles =
 {
 	'Red Title'	: { Element : 'h3', Styles : { 'color' : 'Red' } }
@@ -196,14 +202,14 @@
 
 // Do not add, rename or remove styles here. Only apply definition changes.
-FCKConfig.CoreStyles = 
+FCKConfig.CoreStyles =
 {
 	// Basic Inline Styles.
-	'Bold'			: { Element : 'b', Overrides : 'strong' },
-	'Italic'		: { Element : 'i', Overrides : 'em' },
+	'Bold'			: { Element : 'strong', Overrides : 'b' },
+	'Italic'		: { Element : 'em', Overrides : 'i' },
 	'Underline'		: { Element : 'u' },
 	'StrikeThrough'	: { Element : 'strike' },
 	'Subscript'		: { Element : 'sub' },
 	'Superscript'	: { Element : 'sup' },
-	
+
 	// Basic Block Styles (Font Format Combo).
 	'p'				: { Element : 'p' },
@@ -217,28 +223,30 @@
 	'h5'			: { Element : 'h5' },
 	'h6'			: { Element : 'h6' },
-	
+
 	// Other formatting features.
-	'FontFace' : 
-	{ 
-		Element		: 'span', 
-		Styles		: { 'font-family' : '#("Font")' }, 
+	'FontFace' :
+	{
+		Element		: 'span',
+		Styles		: { 'font-family' : '#("Font")' },
 		Overrides	: [ { Element : 'font', Attributes : { 'face' : null } } ]
 	},
-	
+
 	'Size' :
-	{ 
-		Element		: 'span', 
-		Styles		: { 'font-size' : '#("Size","fontSize")' }, 
+	{
+		Element		: 'span',
+		Styles		: { 'font-size' : '#("Size","fontSize")' },
 		Overrides	: [ { Element : 'font', Attributes : { 'size' : null } } ]
 	},
-	
+
 	'Color' :
-	{ 
-		Element		: 'span', 
-		Styles		: { 'color' : '#("Color","color")' }, 
+	{
+		Element		: 'span',
+		Styles		: { 'color' : '#("Color","color")' },
 		Overrides	: [ { Element : 'font', Attributes : { 'color' : null } } ]
 	},
-	
-	'BackColor'		: { Element : 'span', Styles : { 'background-color' : '#("Color","color")' } }
+
+	'BackColor'		: { Element : 'span', Styles : { 'background-color' : '#("Color","color")' } },
+
+	'SelectionHighlight' : { Element : 'span', Styles : { 'background-color' : 'navy', 'color' : 'white' } }
 };
 
@@ -270,15 +278,15 @@
 
 FCKConfig.LinkBrowser = true ;
-FCKConfig.LinkBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Connector=../../connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ;
+FCKConfig.LinkBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Connector=' + encodeURIComponent( FCKConfig.BasePath + 'filemanager/connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ) ;
 FCKConfig.LinkBrowserWindowWidth	= FCKConfig.ScreenWidth * 0.7 ;		// 70%
 FCKConfig.LinkBrowserWindowHeight	= FCKConfig.ScreenHeight * 0.7 ;	// 70%
 
 FCKConfig.ImageBrowser = true ;
-FCKConfig.ImageBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Image&Connector=../../connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ;
+FCKConfig.ImageBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Image&Connector=' + encodeURIComponent( FCKConfig.BasePath + 'filemanager/connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ) ;
 FCKConfig.ImageBrowserWindowWidth  = FCKConfig.ScreenWidth * 0.7 ;	// 70% ;
 FCKConfig.ImageBrowserWindowHeight = FCKConfig.ScreenHeight * 0.7 ;	// 70% ;
 
 FCKConfig.FlashBrowser = true ;
-FCKConfig.FlashBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Flash&Connector=../../connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ;
+FCKConfig.FlashBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Flash&Connector=' + encodeURIComponent( FCKConfig.BasePath + 'filemanager/connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ) ;
 FCKConfig.FlashBrowserWindowWidth  = FCKConfig.ScreenWidth * 0.7 ;	//70% ;
 FCKConfig.FlashBrowserWindowHeight = FCKConfig.ScreenHeight * 0.7 ;	//70% ;
@@ -303,4 +311,6 @@
 FCKConfig.SmileyColumns = 8 ;
 FCKConfig.SmileyWindowWidth		= 320 ;
-FCKConfig.SmileyWindowHeight	= 240 ;
-
+FCKConfig.SmileyWindowHeight	= 210 ;
+
+FCKConfig.BackgroundBlockerColor = '#ffffff' ;
+FCKConfig.BackgroundBlockerOpacity = 0.50 ;
Index: /FCKeditor/releases/stable/fckeditor.afp
===================================================================
--- /FCKeditor/releases/stable/fckeditor.afp	(revision 1901)
+++ /FCKeditor/releases/stable/fckeditor.afp	(revision 1902)
@@ -1,5 +1,5 @@
 <%
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -63,5 +63,5 @@
 		HtmlValue = THIS.cValue		&& HTMLSPECIALCHARS()
 
-		html = [<div>]
+		html = []
 		IF THIS.IsCompatible()
 			lcLink = THIS.BasePath+[editor/fckeditor.html?InstanceName=]+THIS.cInstanceName
@@ -94,6 +94,4 @@
 			html = html + [<textarea name="]+THIS.cInstanceName +[" rows="4" cols="40" style="width: ]+WidthCSS+[ height: ]+HeightCSS+[">]+HtmlValue+[</textarea>]
 		ENDIF
-
-		html = html + [</div>]
 
 		RETURN (html)
Index: /FCKeditor/releases/stable/fckeditor.asp
===================================================================
--- /FCKeditor/releases/stable/fckeditor.asp	(revision 1901)
+++ /FCKeditor/releases/stable/fckeditor.asp	(revision 1902)
@@ -1,5 +1,5 @@
 ﻿<!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -132,5 +132,5 @@
 		End If
 
-		CreateHtml = "<div>" & html & "</div>"
+		CreateHtml = html
 
 	End Function
@@ -169,15 +169,15 @@
 		' The locale of the asp server makes the conversion of a boolean to string different to "true" or "false"
 		' so we must do it manually
-    If vartype(valueToEncode) = vbBoolean then 
+    If vartype(valueToEncode) = vbBoolean then
 			If valueToEncode=True Then
 				EncodeConfig="True"
 			Else
 				EncodeConfig="False"
-			End If 
+			End If
 		Else
 			EncodeConfig = Replace( valueToEncode, "&", "%26" )
 			EncodeConfig = Replace( EncodeConfig , "=", "%3D" )
 			EncodeConfig = Replace( EncodeConfig , """", "%22" )
-		End if                           
+		End if
 
 	End Function
Index: /FCKeditor/releases/stable/fckeditor.cfc
===================================================================
--- /FCKeditor/releases/stable/fckeditor.cfc	(revision 1901)
+++ /FCKeditor/releases/stable/fckeditor.cfc	(revision 1902)
@@ -3,5 +3,5 @@
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -113,17 +113,19 @@
 >
 	<cfset var result = "" />
-
-	<cfscript>
-	// append unit "px" for numeric width and/or height values
-	if( isNumeric( this.width ) )
-		this.width = this.width & "px";
-	if( isNumeric( this.height ) )
-		this.height = this.height & "px";
-	</cfscript>
-
-	<cfscript>
-	result = result & "<div>" & chr(13) & chr(10);
-	result = result & "<textarea name=""#this.instanceName#"" rows=""4"" cols=""40"" style=""WIDTH: #this.width#; HEIGHT: #this.height#"">#HTMLEditFormat(this.value)#</textarea>" & chr(13) & chr(10);
-	result = result & "</div>" & chr(13) & chr(10);
+	<cfset var sWidthCSS = "" />
+	<cfset var sHeightCSS = "" />
+
+	<cfscript>
+	if( Find( "%", this.width ) gt 0)
+		sWidthCSS = this.width;
+	else
+		sWidthCSS = this.width & "px";
+
+	if( Find( "%", this.width ) gt 0)
+		sHeightCSS = this.height;
+	else
+		sHeightCSS = this.height & "px";
+
+	result = "<textarea name=""#this.instanceName#"" rows=""4"" cols=""40"" style=""width: #sWidthCSS#; height: #sHeightCSS#"">#HTMLEditFormat(this.value)#</textarea>" & chr(13) & chr(10);
 	</cfscript>
 	<cfreturn result />
@@ -154,9 +156,7 @@
 
 	<cfscript>
-	result = result & "<div>" & chr(13) & chr(10);
 	result = result & "<input type=""hidden"" id=""#this.instanceName#"" name=""#this.instanceName#"" value=""#HTMLEditFormat(this.value)#"" style=""display:none"" />" & chr(13) & chr(10);
 	result = result & "<input type=""hidden"" id=""#this.instanceName#___Config"" value=""#GetConfigFieldString()#"" style=""display:none"" />" & chr(13) & chr(10);
 	result = result & "<iframe id=""#this.instanceName#___Frame"" src=""#sURL#"" width=""#this.width#"" height=""#this.height#"" frameborder=""0"" scrolling=""no""></iframe>" & chr(13) & chr(10);
-	result = result & "</div>" & chr(13) & chr(10);
 	</cfscript>
 	<cfreturn result />
Index: /FCKeditor/releases/stable/fckeditor.cfm
===================================================================
--- /FCKeditor/releases/stable/fckeditor.cfm	(revision 1901)
+++ /FCKeditor/releases/stable/fckeditor.cfm	(revision 1902)
@@ -2,5 +2,5 @@
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -131,9 +131,7 @@
 
 	<cfoutput>
-	<div>
 	<input type="hidden" id="#attributes.instanceName#" name="#attributes.instanceName#" value="#HTMLEditFormat(attributes.value)#" style="display:none" />
 	<input type="hidden" id="#attributes.instanceName#___Config" value="#sConfig#" style="display:none" />
 	<iframe id="#attributes.instanceName#___Frame" src="#sURL#" width="#attributes.width#" height="#attributes.height#" frameborder="0" scrolling="no"></iframe>
-	</div>
 	</cfoutput>
 
@@ -154,7 +152,5 @@
 	<!--- Fixed Bug ##1075166. hk@lwd.de 20041206 --->
 	<cfoutput>
-	<div>
 	<textarea name="#attributes.instanceName#" rows="4" cols="40" style="WIDTH: #attributes.width#; HEIGHT: #attributes.height#">#HTMLEditFormat(attributes.value)#</textarea>
-	</div>
 	</cfoutput>
 
Index: /FCKeditor/releases/stable/fckeditor.js
===================================================================
--- /FCKeditor/releases/stable/fckeditor.js	(revision 1901)
+++ /FCKeditor/releases/stable/fckeditor.js	(revision 1902)
@@ -1,5 +1,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -60,6 +60,6 @@
 FCKeditor.MinWidth = 750 ;
 
-FCKeditor.prototype.Version			= '2.5.1' ;
-FCKeditor.prototype.VersionBuild	= '17566' ;
+FCKeditor.prototype.Version			= '2.6' ;
+FCKeditor.prototype.VersionBuild	= '18638' ;
 
 FCKeditor.prototype.Create = function()
@@ -77,5 +77,5 @@
 	}
 
-	var sHtml = '<div>' ;
+	var sHtml = '' ;
 
 	if ( !this.CheckBrowser || this._IsCompatibleBrowser() )
@@ -91,6 +91,4 @@
 		sHtml += '<textarea name="' + this.InstanceName + '" rows="4" cols="40" style="width:' + sWidth + ';height:' + sHeight + '">' + this._HTMLEncode( this.Value ) + '<\/textarea>' ;
 	}
-
-	sHtml += '</div>' ;
 
 	return sHtml ;
@@ -206,11 +204,11 @@
 	{
 		var editor = new FCKeditor( textarea.name ) ;
-		
+
 		editor.Width = Math.max( textarea.offsetWidth, FCKeditor.MinWidth ) ;
 		editor.Height = Math.max( textarea.offsetHeight, FCKeditor.MinHeight ) ;
-		
+
 		return editor ;
 	}
-	
+
 	/**
 	 * Replace all <textarea> elements available in the document with FCKeditor
@@ -245,5 +243,5 @@
 			if ( !name || name.length == 0 )
 				continue ;
-			
+
 			if ( typeof arguments[0] == 'string' )
 			{
@@ -290,5 +288,11 @@
 	// Opera 9.50+
 	if ( window.opera && window.opera.version && parseFloat( window.opera.version() ) >= 9.5 )
-			return true ;
+		return true ;
+
+	// Adobe AIR
+	// Checked before Safari because AIR have the WebKit rich text editor
+	// features from Safari 3.0.4, but the version reported is 420.
+	if ( sAgent.indexOf( ' adobeair/' ) != -1 )
+		return ( sAgent.match( / adobeair\/(\d+)/ )[1] >= 1 ) ;	// Build must be at least v1
 
 	// Safari 3+
Index: /FCKeditor/releases/stable/fckeditor.lasso
===================================================================
--- /FCKeditor/releases/stable/fckeditor.lasso	(revision 1901)
+++ /FCKeditor/releases/stable/fckeditor.lasso	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -65,15 +65,11 @@
 			if(self->isCompatibleBrowser);
 				local('out' = '
-					<div>
 						<input type="hidden" id="' + self->instancename + '" name="' + self->instancename + '" value="' + encode_html(self->initialvalue) + '" style="display:none" />
 						' + self->parseConfig + '
 						<iframe id="' + self->instancename + '___Frame" src="' + self->basepath + 'editor/fckeditor.html?InstanceName=' + self->instancename + '&Toolbar=' + self->toolbarset + '" width="' + self->width + '" height="' + self->height + '" frameborder="0" scrolling="no"></iframe>
-					</div>
 				');
 			else;
 				local('out' = '
-					<div>
 						<textarea name="' + self->instancename + '" rows="4" cols="40" style="width: ' + self->width + '; height: ' + self->height + '">' + encode_html(self->initialvalue) + '</textarea>
-					</div>
 				');
 			/if;
@@ -83,8 +79,8 @@
 		define_tag('isCompatibleBrowser');
 			local('result' = false);
-			if (client_browser->Find("MSIE") && !client_browser->Find("mac") && !client_browser->Find("Opera"));    
+			if (client_browser->Find("MSIE") && !client_browser->Find("mac") && !client_browser->Find("Opera"));
 				#result = client_browser->Substring(client_browser->Find("MSIE")+5,3)>=5.5;
 			/if;
-			if (client_browser->Find("Gecko/"));    
+			if (client_browser->Find("Gecko/"));
 				#result = client_browser->Substring(client_browser->Find("Gecko/")+6,8)>=20030210;
 			/if;
Index: /FCKeditor/releases/stable/fckeditor.php
===================================================================
--- /FCKeditor/releases/stable/fckeditor.php	(revision 1901)
+++ /FCKeditor/releases/stable/fckeditor.php	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -26,17 +26,25 @@
  */
 
+/**
+ * Check if browser is compatible with FCKeditor.
+ * Return true if is compatible.
+ *
+ * @return boolean
+ */
 function FCKeditor_IsCompatibleBrowser()
 {
-	global $HTTP_USER_AGENT ;
-
-	if ( !isset( $_SERVER ) ) {
+	if ( isset( $_SERVER ) ) {
+		$sAgent = $_SERVER['HTTP_USER_AGENT'] ;
+	}
+	else {
 		global $HTTP_SERVER_VARS ;
-	    $_SERVER = $HTTP_SERVER_VARS ;
+		if ( isset( $HTTP_SERVER_VARS ) ) {
+			$sAgent = $HTTP_SERVER_VARS['HTTP_USER_AGENT'] ;
+		}
+		else {
+			global $HTTP_USER_AGENT ;
+			$sAgent = $HTTP_USER_AGENT ;
+		}
 	}
-		
-	if ( isset( $HTTP_USER_AGENT ) )
-		$sAgent = $HTTP_USER_AGENT ;
-	else
-		$sAgent = $_SERVER['HTTP_USER_AGENT'] ;
 
 	if ( strpos($sAgent, 'MSIE') !== false && strpos($sAgent, 'mac') === false && strpos($sAgent, 'Opera') === false )
@@ -61,5 +69,5 @@
 	}
 	else
-		return false ;	
+		return false ;
 }
 
@@ -68,4 +76,2 @@
 else
 	include_once( 'fckeditor_php5.php' ) ;
-
-?>
Index: /FCKeditor/releases/stable/fckeditor.pl
===================================================================
--- /FCKeditor/releases/stable/fckeditor.pl	(revision 1901)
+++ /FCKeditor/releases/stable/fckeditor.pl	(revision 1902)
@@ -1,5 +1,5 @@
 #####
 #  FCKeditor - The text editor for Internet - http://www.fckeditor.net
-#  Copyright (C) 2003-2007 Frederico Caldeira Knabben
+#  Copyright (C) 2003-2008 Frederico Caldeira Knabben
 #
 #  == BEGIN LICENSE ==
@@ -64,5 +64,5 @@
 
 	$HtmlValue = &specialchar_cnv($Value);
-	$Html = '<div>' ;
+	$Html = '' ;
 	if(&IsCompatible()) {
 		$Link = $BasePath . "editor/fckeditor.html?InstanceName=$InstanceName";
@@ -94,5 +94,4 @@
 		$Html .= "<textarea name=\"$InstanceName\" rows=\"4\" cols=\"40\" style=\"width: $WidthCSS; height: $HeightCSS\">$HtmlValue</textarea>";
 	}
-	$Html .= '</div>';
 	return($Html);
 }
Index: /FCKeditor/releases/stable/fckeditor.py
===================================================================
--- /FCKeditor/releases/stable/fckeditor.py	(revision 1901)
+++ /FCKeditor/releases/stable/fckeditor.py	(revision 1902)
@@ -1,5 +1,5 @@
 """
 FCKeditor - The text editor for Internet - http://www.fckeditor.net
-Copyright (C) 2003-2007 Frederico Caldeira Knabben
+Copyright (C) 2003-2008 Frederico Caldeira Knabben
 
 == BEGIN LICENSE ==
@@ -58,5 +58,5 @@
 	def CreateHtml(self):
 		HtmlValue = escape(self.Value)
-		Html = "<div>"
+		Html = ""
 
 		if (self.IsCompatible()):
@@ -106,5 +106,4 @@
 					HtmlValue
 					)
-		Html += "</div>"
 		return Html
 
@@ -160,3 +159,2 @@
 					sParams += "%s=%s" % (k, v)
 		return sParams
-
Index: /FCKeditor/releases/stable/fckeditor_php4.php
===================================================================
--- /FCKeditor/releases/stable/fckeditor_php4.php	(revision 1901)
+++ /FCKeditor/releases/stable/fckeditor_php4.php	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -28,13 +28,58 @@
 class FCKeditor
 {
+	/**
+	 * Name of the FCKeditor instance.
+	 *
+	 * @access protected
+	 * @var string
+	 */
 	var $InstanceName ;
+	/**
+	 * Path to FCKeditor relative to the document root.
+	 *
+	 * @var string
+	 */
 	var $BasePath ;
+	/**
+	 * Width of the FCKeditor.
+	 * Examples: 100%, 600
+	 *
+	 * @var mixed
+	 */
 	var $Width ;
+	/**
+	 * Height of the FCKeditor.
+	 * Examples: 400, 50%
+	 *
+	 * @var mixed
+	 */
 	var $Height ;
+	/**
+	 * Name of the toolbar to load.
+	 *
+	 * @var string
+	 */
 	var $ToolbarSet ;
+	/**
+	 * Initial value.
+	 *
+	 * @var string
+	 */
 	var $Value ;
+	/**
+	 * This is where additional configuration can be passed.
+	 * Example:
+	 * $oFCKeditor->Config['EnterMode'] = 'br';
+	 *
+	 * @var array
+	 */
 	var $Config ;
 
-	// PHP 4 Constructor
+	/**
+	 * Main Constructor.
+	 * Refer to the _samples/php directory for examples.
+	 *
+	 * @param string $instanceName
+	 */
 	function FCKeditor( $instanceName )
 	{
@@ -49,4 +94,8 @@
 	}
 
+	/**
+	 * Display FCKeditor.
+	 *
+	 */
 	function Create()
 	{
@@ -54,13 +103,18 @@
 	}
 
+	/**
+	 * Return the HTML code required to run FCKeditor.
+	 *
+	 * @return string
+	 */
 	function CreateHtml()
 	{
 		$HtmlValue = htmlspecialchars( $this->Value ) ;
 
-		$Html = '<div>' ;
-		
+		$Html = '' ;
+
 		if ( !isset( $_GET ) ) {
 			global $HTTP_GET_VARS ;
-		    $_GET = $HTTP_GET_VARS ;
+			$_GET = $HTTP_GET_VARS ;
 		}
 
@@ -101,9 +155,12 @@
 		}
 
-		$Html .= '</div>' ;
-
 		return $Html ;
 	}
 
+	/**
+	 * Returns true if browser is compatible with FCKeditor.
+	 *
+	 * @return boolean
+	 */
 	function IsCompatible()
 	{
@@ -111,4 +168,10 @@
 	}
 
+	/**
+	 * Get settings from Config array as a single string.
+	 *
+	 * @access protected
+	 * @return string
+	 */
 	function GetConfigFieldString()
 	{
@@ -134,4 +197,12 @@
 	}
 
+	/**
+	 * Encode characters that may break the configuration string
+	 * generated by GetConfigFieldString().
+	 *
+	 * @access protected
+	 * @param string $valueToEncode
+	 * @return string
+	 */
 	function EncodeConfig( $valueToEncode )
 	{
@@ -144,4 +215,2 @@
 	}
 }
-
-?>
Index: /FCKeditor/releases/stable/fckeditor_php5.php
===================================================================
--- /FCKeditor/releases/stable/fckeditor_php5.php	(revision 1901)
+++ /FCKeditor/releases/stable/fckeditor_php5.php	(revision 1902)
@@ -2,5 +2,5 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -28,14 +28,59 @@
 class FCKeditor
 {
-	var $InstanceName ;
-	var $BasePath ;
-	var $Width ;
-	var $Height ;
-	var $ToolbarSet ;
-	var $Value ;
-	var $Config ;
-
-	// PHP 5 Constructor (by Marcus Bointon <coolbru@users.sourceforge.net>)
-	function __construct( $instanceName )
+	/**
+	 * Name of the FCKeditor instance.
+	 *
+	 * @access protected
+	 * @var string
+	 */
+	public $InstanceName ;
+	/**
+	 * Path to FCKeditor relative to the document root.
+	 *
+	 * @var string
+	 */
+	public $BasePath ;
+	/**
+	 * Width of the FCKeditor.
+	 * Examples: 100%, 600
+	 *
+	 * @var mixed
+	 */
+	public $Width ;
+	/**
+	 * Height of the FCKeditor.
+	 * Examples: 400, 50%
+	 *
+	 * @var mixed
+	 */
+	public $Height ;
+	/**
+	 * Name of the toolbar to load.
+	 *
+	 * @var string
+	 */
+	public $ToolbarSet ;
+	/**
+	 * Initial value.
+	 *
+	 * @var string
+	 */
+	public $Value ;
+	/**
+	 * This is where additional configuration can be passed.
+	 * Example:
+	 * $oFCKeditor->Config['EnterMode'] = 'br';
+	 *
+	 * @var array
+	 */
+	public $Config ;
+
+	/**
+	 * Main Constructor.
+	 * Refer to the _samples/php directory for examples.
+	 *
+	 * @param string $instanceName
+	 */
+	public function __construct( $instanceName )
  	{
 		$this->InstanceName	= $instanceName ;
@@ -49,14 +94,23 @@
 	}
 
-	function Create()
+	/**
+	 * Display FCKeditor.
+	 *
+	 */
+	public function Create()
 	{
 		echo $this->CreateHtml() ;
 	}
 
-	function CreateHtml()
+	/**
+	 * Return the HTML code required to run FCKeditor.
+	 *
+	 * @return string
+	 */
+	public function CreateHtml()
 	{
 		$HtmlValue = htmlspecialchars( $this->Value ) ;
 
-		$Html = '<div>' ;
+		$Html = '' ;
 
 		if ( $this->IsCompatible() )
@@ -96,15 +150,24 @@
 		}
 
-		$Html .= '</div>' ;
-
 		return $Html ;
 	}
 
-	function IsCompatible()
+	/**
+	 * Returns true if browser is compatible with FCKeditor.
+	 *
+	 * @return boolean
+	 */
+	public function IsCompatible()
 	{
 		return FCKeditor_IsCompatibleBrowser() ;
 	}
 
-	function GetConfigFieldString()
+	/**
+	 * Get settings from Config array as a single string.
+	 *
+	 * @access protected
+	 * @return string
+	 */
+	public function GetConfigFieldString()
 	{
 		$sParams = '' ;
@@ -129,5 +192,13 @@
 	}
 
-	function EncodeConfig( $valueToEncode )
+	/**
+	 * Encode characters that may break the configuration string
+	 * generated by GetConfigFieldString().
+	 *
+	 * @access protected
+	 * @param string $valueToEncode
+	 * @return string
+	 */
+	public function EncodeConfig( $valueToEncode )
 	{
 		$chars = array(
@@ -139,4 +210,2 @@
 	}
 }
-
-?>
Index: /FCKeditor/releases/stable/fckpackager.xml
===================================================================
--- /FCKeditor/releases/stable/fckpackager.xml	(revision 1901)
+++ /FCKeditor/releases/stable/fckpackager.xml	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -28,22 +28,22 @@
 	<Header><![CDATA[/*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- * 
+ * 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 file has been compressed for better performance. The original source
  * can be found at "editor/_source".
@@ -99,5 +99,5 @@
 		<File path="editor/_source/classes/fckstyle.js" />
 		<File path="editor/_source/internals/fckstyles.js" />
-			  
+
 		<File path="editor/_source/internals/fcklisthandler.js" />
 		<File path="editor/_source/classes/fckelementpath.js" />
@@ -152,5 +152,4 @@
 		<File path="editor/_source/internals/fcktoolbarset.js" />
 		<File path="editor/_source/internals/fckdialog.js" />
-		<File path="editor/_source/internals/fckdialog_ie.js" />
 
 		<File path="editor/_source/classes/fckmenuitem.js" />
@@ -159,4 +158,5 @@
 		<File path="editor/_source/classes/fckcontextmenu.js" />
 		<File path="editor/_source/internals/fck_contextmenu.js" />
+		<File path="editor/_source/classes/fckhtmliterator.js" />
 
 		<File path="editor/_source/classes/fckplugin.js" />
@@ -248,5 +248,4 @@
 		<File path="editor/_source/internals/fcktoolbarset.js" />
 		<File path="editor/_source/internals/fckdialog.js" />
-		<File path="editor/_source/internals/fckdialog_gecko.js" />
 
 		<File path="editor/_source/classes/fckmenuitem.js" />
@@ -255,4 +254,5 @@
 		<File path="editor/_source/classes/fckcontextmenu.js" />
 		<File path="editor/_source/internals/fck_contextmenu.js" />
+		<File path="editor/_source/classes/fckhtmliterator.js" />
 
 		<File path="editor/_source/classes/fckplugin.js" />
Index: /FCKeditor/releases/stable/fckstyles.xml
===================================================================
--- /FCKeditor/releases/stable/fckstyles.xml	(revision 1901)
+++ /FCKeditor/releases/stable/fckstyles.xml	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
@@ -69,7 +69,4 @@
 	</Style>
 
-	<Style name="Strong Emphasis" element="strong" />
-	<Style name="Emphasis" element="em" />
-
 	<Style name="Big" element="big" />
 	<Style name="Small" element="small" />
Index: /FCKeditor/releases/stable/fcktemplates.xml
===================================================================
--- /FCKeditor/releases/stable/fcktemplates.xml	(revision 1901)
+++ /FCKeditor/releases/stable/fcktemplates.xml	(revision 1902)
@@ -2,5 +2,5 @@
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/fckutils.cfm
===================================================================
--- /FCKeditor/releases/stable/fckutils.cfm	(revision 1901)
+++ /FCKeditor/releases/stable/fckutils.cfm	(revision 1902)
@@ -1,5 +1,5 @@
 <!---
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
Index: /FCKeditor/releases/stable/license.txt
===================================================================
--- /FCKeditor/releases/stable/license.txt	(revision 1901)
+++ /FCKeditor/releases/stable/license.txt	(revision 1902)
@@ -1,4 +1,4 @@
 FCKeditor - The text editor for Internet - http://www.fckeditor.net
-Copyright (C) 2003-2007 Frederico Caldeira Knabben
+Copyright (C) 2003-2008 Frederico Caldeira Knabben
 
 Licensed under the terms of any of the following licenses at your
@@ -1245,3 +1245,2 @@
      use the text of this Exhibit A rather than the text found in the
      Original Code Source Code for Your Modifications.]
-
