Rev 1372 | Blame | Compare with Previous | Last modification | View Log | RSS feed
/** 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: fcktools.js* Utility functions.** File Authors:* Frederico Caldeira Knabben (fredck@fckeditor.net)*/var FCKTools = new Object() ;FCKTools.AppendStyleSheet = function( documentElement, cssFileUrlOrArray ){if ( typeof( cssFileUrlOrArray ) == 'string' )return this._AppendStyleSheet( documentElement, cssFileUrlOrArray ) ;else{for ( var i = 0 ; i < cssFileUrlOrArray.length ; i++ )this._AppendStyleSheet( documentElement, cssFileUrlOrArray[i] ) ;}}/*** Gets the value of the hidden INPUT element that is associated to the editor.* This element has its ID set to the editor's instance name so the user refers* to the instance name when getting the posted data.*/FCKTools.GetLinkedFieldValue = function(){return FCK.LinkedField.value ;}/*** Attachs a function call to the submit event of the linked field form. This* function us generally used to update the linked field value before* submitting the form.*/FCKTools.AttachToLinkedFieldFormSubmit = function( functionPointer ){// Gets the linked field formvar oForm = FCK.LinkedField.form ;// Return now if no form is availableif (!oForm) return ;// Attaches the functionPointer call to the onsubmit eventif ( FCKBrowserInfo.IsIE )oForm.attachEvent( "onsubmit", functionPointer ) ;elseoForm.addEventListener( 'submit', functionPointer, false ) ;//**// Attaches the functionPointer call to the submit method// This is done because IE doesn't fire onsubmit when the submit method is called// BEGIN --// Creates a Array in the form object that will hold all Attached function call// (in the case there are more than one editor in the same page)if (! oForm.updateFCKeditor) oForm.updateFCKeditor = new Array() ;// Adds the function pointer to the array of functions to call when "submit" is calledoForm.updateFCKeditor[oForm.updateFCKeditor.length] = functionPointer ;// Switches the original submit method with a new one that first call all functions// on the above array and the call the original submit// IE sees it oForm.submit function as an 'object'.if (! oForm.originalSubmit && ( typeof( oForm.submit ) == 'function' || ( !oForm.submit.tagName && !oForm.submit.length ) ) ){// Creates a copy of the original submitoForm.originalSubmit = oForm.submit ;// Creates our replacement for the submitoForm.submit = FCKTools_SubmitReplacer ;}// END --}function FCKTools_SubmitReplacer(){if (this.updateFCKeditor){// Calls all functions in the functions arrayfor (var i = 0 ; i < this.updateFCKeditor.length ; i++)this.updateFCKeditor[i]() ;}// Calls the original "submit"this.originalSubmit() ;}// Get the window object where the element is placed in.FCKTools.GetElementWindow = function( element ){return this.GetDocumentWindow( this.GetElementDocument( element ) ) ;}FCKTools.GetDocumentWindow = function( doc ){// With Safari, there is not way to retrieve the window from the document, so we must fix it.if ( FCKBrowserInfo.IsSafari && !doc.parentWindow )this.FixDocumentParentWindow( window.top ) ;return doc.parentWindow || doc.defaultView ;}/*This is a Safari specific function that fix the reference to the parentwindow from the document object.*/FCKTools.FixDocumentParentWindow = function( targetWindow ){targetWindow.document.parentWindow = targetWindow ;for ( var i = 0 ; i < targetWindow.frames.length ; i++ )FCKTools.FixDocumentParentWindow( targetWindow.frames[i] ) ;}FCKTools.GetParentWindow = function( document ){return document.contentWindow ? document.contentWindow : document.parentWindow ;}FCKTools.HTMLEncode = function( text ){if ( !text )return '' ;text = text.replace( /&/g, '&' ) ;text = text.replace( /</g, '<' ) ;text = text.replace( />/g, '>' ) ;return text ;}/*** Adds an option to a SELECT element.*/FCKTools.AddSelectOption = function( selectElement, optionText, optionValue ){var oOption = FCKTools.GetElementDocument( selectElement ).createElement( "OPTION" ) ;oOption.text = optionText ;oOption.value = optionValue ;selectElement.options.add(oOption) ;return oOption ;}FCKTools.RunFunction = function( func, thisObject, paramsArray, timerWindow ){if ( func )this.SetTimeout( func, 0, thisObject, paramsArray, timerWindow ) ;}FCKTools.SetTimeout = function( func, milliseconds, thisObject, paramsArray, timerWindow ){return ( timerWindow || window ).setTimeout(function(){if ( paramsArray )func.apply( thisObject, [].concat( paramsArray ) ) ;elsefunc.apply( thisObject ) ;},milliseconds ) ;}FCKTools.SetInterval = function( func, milliseconds, thisObject, paramsArray, timerWindow ){return ( timerWindow || window ).setInterval(function(){func.apply( thisObject, paramsArray || [] ) ;},milliseconds ) ;}FCKTools.ConvertStyleSizeToHtml = function( size ){return size.endsWith( '%' ) ? size : parseInt( size ) ;}FCKTools.ConvertHtmlSizeToStyle = function( size ){return size.endsWith( '%' ) ? size : ( size + 'px' ) ;}// START iCM MODIFICATIONS// Amended to accept a list of one or more ascensor tag names// Amended to check the element itself before working back up through the parent hierarchyFCKTools.GetElementAscensor = function( element, ascensorTagNames ){// var e = element.parentNode ;var e = element ;var lstTags = "," + ascensorTagNames.toUpperCase() + "," ;while ( e ){if ( lstTags.indexOf( "," + e.nodeName.toUpperCase() + "," ) != -1 )return e ;e = e.parentNode ;}return null ;}// END iCM MODIFICATIONSFCKTools.CreateEventListener = function( func, params ){var f = function(){var aAllParams = [] ;for ( var i = 0 ; i < arguments.length ; i++ )aAllParams.push( arguments[i] ) ;func.apply( this, aAllParams.concat( params ) ) ;}return f ;}FCKTools.GetElementDocument = function ( element ){return element.ownerDocument || element.document ;}