/* * FCKeditor - The text editor for internet * Copyright (C) 2003-2006 Frederico Caldeira Knabben * * Licensed under the terms of the GNU Lesser General Public License: * http://www.opensource.org/licenses/lgpl-license.php * * For further information visit: * http://www.fckeditor.net/ * * "Support Open Source software. What about a donation today?" * * File Name: fckeditorapi.js * Create the FCKeditorAPI object that is available as a global object in * the page where the editor is placed in. * * File Authors: * Frederico Caldeira Knabben (fredck@fckeditor.net) */ var FCKeditorAPI ; function InitializeAPI() { if ( !( FCKeditorAPI = window.parent.FCKeditorAPI ) ) { // Make the FCKeditorAPI object available in the parent window. Use // eval so it is independent from this window and so it will still be // available if the editor instance is removed ("Can't execute code // from a freed script" error). var sScript = '\ var FCKeditorAPI = {\ Version : \'2.3.2\',\ VersionBuild : \'1082\',\ __Instances : new Object(),\ GetInstance : function( instanceName )\ {\ return this.__Instances[ instanceName ] ;\ },\ _FunctionQueue : {\ Functions : new Array(),\ IsRunning : false,\ Add : function( functionToAdd )\ {\ this.Functions.push( functionToAdd ) ;\ 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( func )\ {\ var aQueue = this.Functions ;\ var i = 0, fFunc ;\ while( fFunc = aQueue[ i ] )\ {\ if ( fFunc == func )\ aQueue.splice( i,1 ) ;\ i++ ;\ }\ this.StartNext() ;\ }\ }\ }' ; // In IE, the "eval" function is not always available (it works with // the JavaScript samples, but not with the ASP ones, for example). // So, let's use the execScript instead. if ( window.parent.execScript ) window.parent.execScript( sScript, 'JavaScript' ) ; else { if ( FCKBrowserInfo.IsGecko10 ) { // FF 1.0.4 gives an error with the above request. The // following seams to work well. It could become to official // implementation for all browsers, but we need to check it. eval.call( window.parent, sScript ) ; } else window.parent.eval( sScript ) ; } FCKeditorAPI = window.parent.FCKeditorAPI ; } // Add the current instance to the FCKeditorAPI's instances collection. FCKeditorAPI.__Instances[ FCK.Name ] = FCK ; } function FCKeditorAPI_Cleanup() { FCKeditorAPI.__Instances[ FCK.Name ] = null ; } FCKTools.AddEventListener( window, 'unload', FCKeditorAPI_Cleanup ) ;