+++ /dev/null
-/*\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
- * Utility functions. (IE version).\r
- */\r
-\r
-FCKTools.CancelEvent = function( e )\r
-{\r
- return false ;\r
-}\r
-\r
-// Appends one or more CSS files to a document.\r
-FCKTools._AppendStyleSheet = function( documentElement, cssFileUrl )\r
-{\r
- return documentElement.createStyleSheet( cssFileUrl ).owningElement ;\r
-}\r
-\r
-// Appends a CSS style string to a document.\r
-FCKTools.AppendStyleString = function( documentElement, cssStyles )\r
-{\r
- if ( !cssStyles )\r
- return null ;\r
-\r
- var s = documentElement.createStyleSheet( "" ) ;\r
- s.cssText = cssStyles ;\r
- return s ;\r
-}\r
-\r
-// Removes all attributes and values from the element.\r
-FCKTools.ClearElementAttributes = function( element )\r
-{\r
- element.clearAttributes() ;\r
-}\r
-\r
-FCKTools.GetAllChildrenIds = function( parentElement )\r
-{\r
- var aIds = new Array() ;\r
- for ( var i = 0 ; i < parentElement.all.length ; i++ )\r
- {\r
- var sId = parentElement.all[i].id ;\r
- if ( sId && sId.length > 0 )\r
- aIds[ aIds.length ] = sId ;\r
- }\r
- return aIds ;\r
-}\r
-\r
-FCKTools.RemoveOuterTags = function( e )\r
-{\r
- e.insertAdjacentHTML( 'beforeBegin', e.innerHTML ) ;\r
- e.parentNode.removeChild( e ) ;\r
-}\r
-\r
-FCKTools.CreateXmlObject = function( object )\r
-{\r
- var aObjs ;\r
-\r
- switch ( object )\r
- {\r
- case 'XmlHttp' :\r
- // Try the native XMLHttpRequest introduced with IE7.\r
- if ( document.location.protocol != 'file:' )\r
- try { return new XMLHttpRequest() ; } catch (e) {}\r
-\r
- aObjs = [ 'MSXML2.XmlHttp', 'Microsoft.XmlHttp' ] ;\r
- break ;\r
-\r
- case 'DOMDocument' :\r
- aObjs = [ 'MSXML2.DOMDocument', 'Microsoft.XmlDom' ] ;\r
- break ;\r
- }\r
-\r
- for ( var i = 0 ; i < 2 ; i++ )\r
- {\r
- try { return new ActiveXObject( aObjs[i] ) ; }\r
- catch (e)\r
- {}\r
- }\r
-\r
- if ( FCKLang.NoActiveX )\r
- {\r
- alert( FCKLang.NoActiveX ) ;\r
- FCKLang.NoActiveX = null ;\r
- }\r
- return null ;\r
-}\r
-\r
-FCKTools.DisableSelection = function( element )\r
-{\r
- element.unselectable = 'on' ;\r
-\r
- var e, i = 0 ;\r
- // The extra () is to avoid a warning with strict error checking. This is ok.\r
- while ( (e = element.all[ i++ ]) )\r
- {\r
- switch ( e.tagName )\r
- {\r
- case 'IFRAME' :\r
- case 'TEXTAREA' :\r
- case 'INPUT' :\r
- case 'SELECT' :\r
- /* Ignore the above tags */\r
- break ;\r
- default :\r
- e.unselectable = 'on' ;\r
- }\r
- }\r
-}\r
-\r
-FCKTools.GetScrollPosition = function( relativeWindow )\r
-{\r
- var oDoc = relativeWindow.document ;\r
-\r
- // Try with the doc element.\r
- var oPos = { X : oDoc.documentElement.scrollLeft, Y : oDoc.documentElement.scrollTop } ;\r
-\r
- if ( oPos.X > 0 || oPos.Y > 0 )\r
- return oPos ;\r
-\r
- // If no scroll, try with the body.\r
- return { X : oDoc.body.scrollLeft, Y : oDoc.body.scrollTop } ;\r
-}\r
-\r
-FCKTools.AddEventListener = function( sourceObject, eventName, listener )\r
-{\r
- sourceObject.attachEvent( 'on' + eventName, listener ) ;\r
-}\r
-\r
-FCKTools.RemoveEventListener = function( sourceObject, eventName, listener )\r
-{\r
- sourceObject.detachEvent( 'on' + eventName, listener ) ;\r
-}\r
-\r
-// Listeners attached with this function cannot be detached.\r
-FCKTools.AddEventListenerEx = function( sourceObject, eventName, listener, paramsArray )\r
-{\r
- // Ok... this is a closures party, but is the only way to make it clean of memory leaks.\r
- var o = new Object() ;\r
- o.Source = sourceObject ;\r
- o.Params = paramsArray || [] ; // Memory leak if we have DOM objects here.\r
- o.Listener = function( ev )\r
- {\r
- return listener.apply( o.Source, [ ev ].concat( o.Params ) ) ;\r
- }\r
-\r
- if ( FCK.IECleanup )\r
- FCK.IECleanup.AddItem( null, function() { o.Source = null ; o.Params = null ; } ) ;\r
-\r
- sourceObject.attachEvent( 'on' + eventName, o.Listener ) ;\r
-\r
- sourceObject = null ; // Memory leak cleaner (because of the above closure).\r
- paramsArray = null ; // Memory leak cleaner (because of the above closure).\r
-}\r
-\r
-// Returns and object with the "Width" and "Height" properties.\r
-FCKTools.GetViewPaneSize = function( win )\r
-{\r
- var oSizeSource ;\r
-\r
- var oDoc = win.document.documentElement ;\r
- if ( oDoc && oDoc.clientWidth ) // IE6 Strict Mode\r
- oSizeSource = oDoc ;\r
- else\r
- oSizeSource = win.document.body ; // Other IEs\r
-\r
- if ( oSizeSource )\r
- return { Width : oSizeSource.clientWidth, Height : oSizeSource.clientHeight } ;\r
- else\r
- return { Width : 0, Height : 0 } ;\r
-}\r
-\r
-FCKTools.SaveStyles = function( element )\r
-{\r
- var data = FCKTools.ProtectFormStyles( element ) ;\r
-\r
- var oSavedStyles = new Object() ;\r
-\r
- if ( element.className.length > 0 )\r
- {\r
- oSavedStyles.Class = element.className ;\r
- element.className = '' ;\r
- }\r
-\r
- var sInlineStyle = element.style.cssText ;\r
-\r
- if ( sInlineStyle.length > 0 )\r
- {\r
- oSavedStyles.Inline = sInlineStyle ;\r
- element.style.cssText = '' ;\r
- }\r
-\r
- FCKTools.RestoreFormStyles( element, data ) ;\r
- return oSavedStyles ;\r
-}\r
-\r
-FCKTools.RestoreStyles = function( element, savedStyles )\r
-{\r
- var data = FCKTools.ProtectFormStyles( element ) ;\r
- element.className = savedStyles.Class || '' ;\r
- element.style.cssText = savedStyles.Inline || '' ;\r
- FCKTools.RestoreFormStyles( element, data ) ;\r
-}\r
-\r
-FCKTools.RegisterDollarFunction = function( targetWindow )\r
-{\r
- targetWindow.$ = targetWindow.document.getElementById ;\r
-}\r
-\r
-FCKTools.AppendElement = function( target, elementName )\r
-{\r
- return target.appendChild( this.GetElementDocument( target ).createElement( elementName ) ) ;\r
-}\r
-\r
-// This function may be used by Regex replacements.\r
-FCKTools.ToLowerCase = function( strValue )\r
-{\r
- return strValue.toLowerCase() ;\r
-}\r