import rt 3.8.7
[freeside.git] / rt / share / html / NoAuth / RichText / FCKeditor / editor / _source / fckeditorapi.js
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/fckeditorapi.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/fckeditorapi.js
new file mode 100644 (file)
index 0000000..2d8f0bd
--- /dev/null
@@ -0,0 +1,179 @@
+/*\r
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net\r
+ * Copyright (C) 2003-2009 Frederico Caldeira Knabben\r
+ *\r
+ * == BEGIN LICENSE ==\r
+ *\r
+ * Licensed under the terms of any of the following licenses at your\r
+ * choice:\r
+ *\r
+ *  - GNU General Public License Version 2 or later (the "GPL")\r
+ *    http://www.gnu.org/licenses/gpl.html\r
+ *\r
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")\r
+ *    http://www.gnu.org/licenses/lgpl.html\r
+ *\r
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")\r
+ *    http://www.mozilla.org/MPL/MPL-1.1.html\r
+ *\r
+ * == END LICENSE ==\r
+ *\r
+ * Create the FCKeditorAPI object that is available as a global object in\r
+ * the page where the editor is placed in.\r
+ */\r
+\r
+var FCKeditorAPI ;\r
+\r
+function InitializeAPI()\r
+{\r
+       var oParentWindow = window.parent ;\r
+\r
+       if ( !( FCKeditorAPI = oParentWindow.FCKeditorAPI ) )\r
+       {\r
+               // Make the FCKeditorAPI object available in the parent window. Use\r
+               // eval so this core runs in the parent's scope and so it will still be\r
+               // available if the editor instance is removed ("Can't execute code\r
+               // from a freed script" error).\r
+\r
+               // Note: we check the existence of oEditor.GetParentForm because some external\r
+               // code (like JSON) can extend the Object prototype and we get then extra oEditor\r
+               // objects that aren't really FCKeditor instances.\r
+               var sScript =\r
+                       'window.FCKeditorAPI = {' +\r
+                               'Version : "2.6.4",' +\r
+                               'VersionBuild : "21629",' +\r
+                               'Instances : window.FCKeditorAPI && window.FCKeditorAPI.Instances || {},' +\r
+\r
+                               'GetInstance : function( name )' +\r
+                               '{' +\r
+                                       'return this.Instances[ name ];' +\r
+                               '},' +\r
+\r
+                               '_FormSubmit : function()' +\r
+                               '{' +\r
+                                       'for ( var name in FCKeditorAPI.Instances )' +\r
+                                       '{' +\r
+                                               'var oEditor = FCKeditorAPI.Instances[ name ] ;' +\r
+                                               'if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )' +\r
+                                                       'oEditor.UpdateLinkedField() ;' +\r
+                                       '}' +\r
+                                       'this._FCKOriginalSubmit() ;' +\r
+                               '},' +\r
+\r
+                               '_FunctionQueue : window.FCKeditorAPI && window.FCKeditorAPI._FunctionQueue || {' +\r
+                                       'Functions : new Array(),' +\r
+                                       'IsRunning : false,' +\r
+\r
+                                       'Add : function( f )' +\r
+                                       '{' +\r
+                                               'this.Functions.push( f );' +\r
+                                               'if ( !this.IsRunning )' +\r
+                                                       'this.StartNext();' +\r
+                                       '},' +\r
+\r
+                                       'StartNext : function()' +\r
+                                       '{' +\r
+                                               'var aQueue = this.Functions ;' +\r
+                                               'if ( aQueue.length > 0 )' +\r
+                                               '{' +\r
+                                                       'this.IsRunning = true;' +\r
+                                                       'aQueue[0].call();' +\r
+                                               '}' +\r
+                                               'else ' +\r
+                                                       'this.IsRunning = false;' +\r
+                                       '},' +\r
+\r
+                                       'Remove : function( f )' +\r
+                                       '{' +\r
+                                               'var aQueue = this.Functions;' +\r
+                                               'var i = 0, fFunc;' +\r
+                                               'while( (fFunc = aQueue[ i ]) )' +\r
+                                               '{' +\r
+                                                       'if ( fFunc == f )' +\r
+                                                               'aQueue.splice( i,1 );' +\r
+                                                       'i++ ;' +\r
+                                               '}' +\r
+                                               'this.StartNext();' +\r
+                                       '}' +\r
+                               '}' +\r
+                       '}' ;\r
+\r
+               // In IE, the "eval" function is not always available (it works with\r
+               // the JavaScript samples, but not with the ASP ones, for example).\r
+               // So, let's use the execScript instead.\r
+               if ( oParentWindow.execScript )\r
+                       oParentWindow.execScript( sScript, 'JavaScript' ) ;\r
+               else\r
+               {\r
+                       if ( FCKBrowserInfo.IsGecko10 )\r
+                       {\r
+                               // FF 1.0.4 gives an error with the request bellow. The\r
+                               // following seams to work well.\r
+                               eval.call( oParentWindow, sScript ) ;\r
+                       }\r
+                       else if( FCKBrowserInfo.IsAIR )\r
+                       {\r
+                               FCKAdobeAIR.FCKeditorAPI_Evaluate( oParentWindow, sScript ) ;\r
+                       }\r
+                       else if ( FCKBrowserInfo.IsSafari )\r
+                       {\r
+                               // oParentWindow.eval in Safari executes in the calling window\r
+                               // environment, instead of the parent one. The following should\r
+                               // make it work.\r
+                               var oParentDocument = oParentWindow.document ;\r
+                               var eScript = oParentDocument.createElement('script') ;\r
+                               eScript.appendChild( oParentDocument.createTextNode( sScript ) ) ;\r
+                               oParentDocument.documentElement.appendChild( eScript ) ;\r
+                       }\r
+                       else\r
+                               oParentWindow.eval( sScript ) ;\r
+               }\r
+\r
+               FCKeditorAPI = oParentWindow.FCKeditorAPI ;\r
+\r
+               // The __Instances properly has been changed to the public Instances,\r
+               // but we should still have the "deprecated" version of it.\r
+               FCKeditorAPI.__Instances = FCKeditorAPI.Instances ;\r
+       }\r
+\r
+       // Add the current instance to the FCKeditorAPI's instances collection.\r
+       FCKeditorAPI.Instances[ FCK.Name ] = FCK ;\r
+}\r
+\r
+// Attach to the form onsubmit event and to the form.submit().\r
+function _AttachFormSubmitToAPI()\r
+{\r
+       // Get the linked field form.\r
+       var oForm = FCK.GetParentForm() ;\r
+\r
+       if ( oForm )\r
+       {\r
+               // Attach to the onsubmit event.\r
+               FCKTools.AddEventListener( oForm, 'submit', FCK.UpdateLinkedField ) ;\r
+\r
+               // IE sees oForm.submit function as an 'object'.\r
+               if ( !oForm._FCKOriginalSubmit && ( typeof( oForm.submit ) == 'function' || ( !oForm.submit.tagName && !oForm.submit.length ) ) )\r
+               {\r
+                       // Save the original submit.\r
+                       oForm._FCKOriginalSubmit = oForm.submit ;\r
+\r
+                       // Create our replacement for the submit.\r
+                       oForm.submit = FCKeditorAPI._FormSubmit ;\r
+               }\r
+       }\r
+}\r
+\r
+function FCKeditorAPI_Cleanup()\r
+{\r
+       if ( window.FCKConfig && FCKConfig.MsWebBrowserControlCompat\r
+                       && !window.FCKUnloadFlag )\r
+               return ;\r
+       delete FCKeditorAPI.Instances[ FCK.Name ] ;\r
+}\r
+function FCKeditorAPI_ConfirmCleanup()\r
+{\r
+       if ( window.FCKConfig && FCKConfig.MsWebBrowserControlCompat )\r
+               window.FCKUnloadFlag = true ;\r
+}\r
+FCKTools.AddEventListener( window, 'unload', FCKeditorAPI_Cleanup ) ;\r
+FCKTools.AddEventListener( window, 'beforeunload', FCKeditorAPI_ConfirmCleanup) ;\r