Rev 1987 | Blame | Compare with Previous | Last modification | View Log | RSS feed
/** 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 awaydoc.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.BasePath + 'css/fck_internal.css' ;window.FCK_ShowTableBordersCSS = FCKConfig.BasePath + 'css/fck_showtableborders_gecko.css' ;_Original_FCK_StartEditor.apply( this, arguments ) ;}})();}