2022-11-14 17:31:15 +00:00
/ *
* 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 ==
*
* This file has been compressed for better performance . The original source
* can be found at "editor/_source" .
* /
var FCK _STATUS _NOTLOADED = window . parent . FCK _STATUS _NOTLOADED = 0 ; var FCK _STATUS _ACTIVE = window . parent . FCK _STATUS _ACTIVE = 1 ; var FCK _STATUS _COMPLETE = window . parent . FCK _STATUS _COMPLETE = 2 ; var FCK _TRISTATE _OFF = window . parent . FCK _TRISTATE _OFF = 0 ; var FCK _TRISTATE _ON = window . parent . FCK _TRISTATE _ON = 1 ; var FCK _TRISTATE _DISABLED = window . parent . FCK _TRISTATE _DISABLED = - 1 ; var FCK _UNKNOWN = window . parent . FCK _UNKNOWN = - 9 ; var FCK _TOOLBARITEM _ONLYICON = window . parent . FCK _TOOLBARITEM _ONLYICON = 0 ; var FCK _TOOLBARITEM _ONLYTEXT = window . parent . FCK _TOOLBARITEM _ONLYTEXT = 1 ; var FCK _TOOLBARITEM _ICONTEXT = window . parent . FCK _TOOLBARITEM _ICONTEXT = 2 ; var FCK _EDITMODE _WYSIWYG = window . parent . FCK _EDITMODE _WYSIWYG = 0 ; var FCK _EDITMODE _SOURCE = window . parent . FCK _EDITMODE _SOURCE = 1 ; var FCK _IMAGES _PATH = 'images/' ; var FCK _SPACER _PATH = 'images/spacer.gif' ; var CTRL = 1000 ; var SHIFT = 2000 ; var ALT = 4000 ; var FCK _STYLE _BLOCK = 0 ; var FCK _STYLE _INLINE = 1 ; var FCK _STYLE _OBJECT = 2 ;
String . prototype . Contains = function ( A ) { return ( this . indexOf ( A ) > - 1 ) ; } ; String . prototype . Equals = function ( ) { var A = arguments ; if ( A . length == 1 && A [ 0 ] . pop ) A = A [ 0 ] ; for ( var i = 0 ; i < A . length ; i ++ ) { if ( this == A [ i ] ) return true ; } ; return false ; } ; String . prototype . IEquals = function ( ) { var A = this . toUpperCase ( ) ; var B = arguments ; if ( B . length == 1 && B [ 0 ] . pop ) B = B [ 0 ] ; for ( var i = 0 ; i < B . length ; i ++ ) { if ( A == B [ i ] . toUpperCase ( ) ) return true ; } ; return false ; } ; String . prototype . ReplaceAll = function ( A , B ) { var C = this ; for ( var i = 0 ; i < A . length ; i ++ ) { C = C . replace ( A [ i ] , B [ i ] ) ; } ; return C ; } ; String . prototype . StartsWith = function ( A ) { return ( this . substr ( 0 , A . length ) == A ) ; } ; String . prototype . EndsWith = function ( A , B ) { var C = this . length ; var D = A . length ; if ( D > C ) return false ; if ( B ) { var E = new RegExp ( A + '$' , 'i' ) ; return E . test ( this ) ; } else return ( D == 0 || this . substr ( C - D , D ) == A ) ; } ; String . prototype . Remove = function ( A , B ) { var s = '' ; if ( A > 0 ) s = this . substring ( 0 , A ) ; if ( A + B < this . length ) s += this . substring ( A + B , this . length ) ; return s ; } ; String . prototype . Trim = function ( ) { return this . replace ( /(^[ \t\n\r]*)|([ \t\n\r]*$)/g , '' ) ; } ; String . prototype . LTrim = function ( ) { return this . replace ( /^[ \t\n\r]*/g , '' ) ; } ; String . prototype . RTrim = function ( ) { return this . replace ( /[ \t\n\r]*$/g , '' ) ; } ; String . prototype . ReplaceNewLineChars = function ( A ) { return this . replace ( /\n/g , A ) ; } ; String . prototype . Replace = function ( A , B , C ) { if ( typeof B == 'function' ) { return this . replace ( A , function ( ) { return B . apply ( C || this , arguments ) ; } ) ; } else return this . replace ( A , B ) ; } ; Array . prototype . AddItem = function ( A ) { var i = this . length ; this [ i ] = A ; return i ; } ; Array . prototype . IndexOf = function ( A ) { for ( var i = 0 ; i < this . length ; i ++ ) { if ( this [ i ] == A ) return i ; } ; return - 1 ; } ;
var FCKIECleanup = function ( A ) { if ( A . _FCKCleanupObj ) this . Items = A . _FCKCleanupObj . Items ; else { this . Items = [ ] ; A . _FCKCleanupObj = this ; FCKTools . AddEventListenerEx ( A , 'unload' , FCKIECleanup _Cleanup ) ; } } ; FCKIECleanup . prototype . AddItem = function ( A , B ) { this . Items . push ( [ A , B ] ) ; } ; function FCKIECleanup _Cleanup ( ) { if ( ! this . _FCKCleanupObj || ( FCKConfig . MsWebBrowserControlCompat && ! window . FCKUnloadFlag ) ) return ; var A = this . _FCKCleanupObj . Items ; while ( A . length > 0 ) { var B = A . pop ( ) ; if ( B ) B [ 1 ] . call ( B [ 0 ] ) ; } ; this . _FCKCleanupObj = null ; if ( CollectGarbage ) CollectGarbage ( ) ; } ;
var s = navigator . userAgent . toLowerCase ( ) ; var FCKBrowserInfo = { IsIE : /*@cc_on!@*/ false , IsIE7 : /*@cc_on!@*/ false && ( parseInt ( s . match ( /msie (\d+)/ ) [ 1 ] , 10 ) >= 7 ) , IsIE6 : /*@cc_on!@*/ false && ( parseInt ( s . match ( /msie (\d+)/ ) [ 1 ] , 10 ) >= 6 ) , IsSafari : s . Contains ( ' applewebkit/' ) , IsOpera : ! ! window . opera , IsAIR : s . Contains ( ' adobeair/' ) , IsMac : s . Contains ( 'macintosh' ) } ; ( function ( A ) { A . IsGecko = ( navigator . product == 'Gecko' ) && ! A . IsSafari && ! A . IsOpera ; A . IsGeckoLike = ( A . IsGecko || A . IsSafari || A . IsOpera ) ; if ( A . IsGecko ) { var B = s . match ( /rv:(\d+\.\d+)/ ) ; var C = B && parseFloat ( B [ 1 ] ) ; if ( C ) { A . IsGecko10 = ( C < 1.8 ) ; A . IsGecko19 = ( C > 1.8 ) ; } } } ) ( FCKBrowserInfo ) ;
var FCKURLParams = { } ; ( function ( ) { var A = document . location . search . substr ( 1 ) . split ( '&' ) ; for ( var i = 0 ; i < A . length ; i ++ ) { var B = A [ i ] . split ( '=' ) ; var C = decodeURIComponent ( B [ 0 ] ) ; var D = decodeURIComponent ( B [ 1 ] ) ; FCKURLParams [ C ] = D ; } } ) ( ) ;
var FCKEvents = function ( A ) { this . Owner = A ; this . _RegisteredEvents = { } ; } ; FCKEvents . prototype . AttachEvent = function ( A , B ) { var C ; if ( ! ( C = this . _RegisteredEvents [ A ] ) ) this . _RegisteredEvents [ A ] = [ B ] ; else { if ( C . IndexOf ( B ) == - 1 ) C . push ( B ) ; } } ; FCKEvents . prototype . FireEvent = function ( A , B ) { var C = true ; var D = this . _RegisteredEvents [ A ] ; if ( D ) { for ( var i = 0 ; i < D . length ; i ++ ) { try { C = ( D [ i ] ( this . Owner , B ) && C ) ; } catch ( e ) { if ( e . number != - 2146823277 ) throw e ; } } } ; return C ; } ;
var FCKDataProcessor = function ( ) { } ; FCKDataProcessor . prototype = { ConvertToHtml : function ( A ) { if ( FCKConfig . FullPage ) { FCK . DocTypeDeclaration = A . match ( FCKRegexLib . DocTypeTag ) ; if ( ! FCKRegexLib . HasBodyTag . test ( A ) ) A = '<body>' + A + '</body>' ; if ( ! FCKRegexLib . HtmlOpener . test ( A ) ) A = '<html dir="' + FCKConfig . ContentLangDirection + '">' + A + '</html>' ; if ( ! FCKRegexLib . HeadOpener . test ( A ) ) A = A . replace ( FCKRegexLib . HtmlOpener , '$&<head><title></title></head>' ) ; return A ; } else { var B = FCKConfig . DocType + '<html dir="' + FCKConfig . ContentLangDirection + '"' ; if ( FCKBrowserInfo . IsIE && FCKConfig . DocType . length > 0 && ! FCKRegexLib . Html4DocType . test ( FCKConfig . DocType ) ) B += ' style="overflow-y: scroll"' ; B += '><head><title></title></head><body' + FCKConfig . GetBodyAttributes ( ) + '>' + A + '</body></html>' ; return B ; } } , ConvertToDataFormat : function ( A , B , C , D ) { var E = FCKXHtml . GetXHTML ( A , ! B , D ) ; if ( C && FCKRegexLib . EmptyOutParagraph . test ( E ) ) return '' ; return E ; } , FixHtml : function ( A ) { return A ; } } ;
var FCK = { Name : FCKURLParams [ 'InstanceName' ] , Status : 0 , EditMode : 0 , Toolbar : null , HasFocus : false , DataProcessor : new FCKDataProcessor ( ) , GetInstanceObject : ( function ( ) { var w = window ; return function ( name ) { return w [ name ] ; } } ) ( ) , AttachToOnSelectionChange : function ( A ) { this . Events . AttachEvent ( 'OnSelectionChange' , A ) ; } , GetLinkedFieldValue : function ( ) { return this . LinkedField . value ; } , GetParentForm : function ( ) { return this . LinkedField . form ; } , StartupValue : '' , IsDirty : function ( ) { if ( this . EditMode == 1 ) return ( this . StartupValue != this . EditingArea . Textarea . value ) ; else { if ( ! this . EditorDocument ) return false ; return ( this . StartupValue != this . EditorDocument . body . innerHTML ) ; } } , ResetIsDirty : function ( ) { if ( this . EditMode == 1 ) this . StartupValue = this . EditingArea . Textarea . value ; else if ( this . EditorDocument . body ) this . StartupValue = this . EditorDocument . body . innerHTML ; } , StartEditor : function ( ) { this . TempBaseTag = FCKConfig . BaseHref . length > 0 ? '<base href="' + FCKConfig . BaseHref + '" _fcktemp="true"></base>' : '' ; var A = FCK . KeystrokeHandler = new FCKKeystrokeHandler ( ) ; A . OnKeystroke = _FCK _KeystrokeHandler _OnKeystroke ; A . SetKeystrokes ( FCKConfig . Keystrokes ) ; if ( FCKBrowserInfo . IsIE7 ) { if ( ( CTRL + 86 ) in A . Keystrokes ) A . SetKeystrokes ( [ CTRL + 86 , true ] ) ; if ( ( SHIFT + 45 ) in A . Keystrokes ) A . SetKeystrokes ( [ SHIFT + 45 , true ] ) ; } ; A . SetKeystrokes ( [ CTRL + 8 , true ] ) ; this . EditingArea = new FCKEditingArea ( document . getElementById ( 'xEditingArea' ) ) ; this . EditingArea . FFSpellChecker = FCKConfig . FirefoxSpellChecker ; this . SetData ( this . GetLinkedFieldValue ( ) , true ) ; FCKTools . AddEventListener ( document , "keydown" , this . _TabKeyHandler ) ; this . AttachToOnSelectionChange ( _FCK _PaddingNodeListener ) ; if ( FCKBrowserInfo . IsGecko ) this . AttachToOnSelectionChange ( this . _ExecCheckEmptyBlock ) ; } , Focus : function ( ) { FCK . EditingArea . Focus ( ) ; } , SetStatus : function ( A ) { this . Status = A ; if ( A == 1 ) { FCKFocusManager . AddWindow ( window , true ) ; if ( FCKBrowserInfo . IsIE ) FCKFocusManager . AddWindow ( window . frameElement , true ) ; if ( FCKConfig . StartupFocus ) FCK . Focus ( ) ; } ; this . Events . FireEvent ( 'OnStatusChange' , A ) ; } , FixBody : function ( ) { var A = FCKConfig . EnterMode ; if ( A != 'p' && A != 'div' ) return ; var B = this . EditorDocument ; if ( ! B ) return ; var C = B . body ; if ( ! C ) return ; FCKDomTools . TrimNode ( C ) ; var D = C . firstChild ; var E ; while ( D ) { var F = false ; switch ( D . nodeType ) { case 1 : var G = D . nodeName . toLowerCase ( ) ; if ( ! FCKListsLib . BlockElements [ G ] && G != 'li' && ! D . getAttribute ( '_fckfakelement' ) && D . getAttribute ( '_moz_dirty' ) == null ) F = true ; break ; case 3 : if ( E || D . nodeValue . Trim ( ) . length > 0 ) F = true ; break ; case 8 : if ( E ) F = true ; break ; } ; if ( F ) { var H = D . parentNode ; if ( ! E ) E = H . insertBefore ( B . createElement ( A ) , D ) ; E . appendChild ( H . removeChild ( D ) ) ; D = E . nextSibling ; } else { if ( E ) { FCKDomTools . TrimNode ( E ) ; E = null ; } ; D = D . nextSibling ; } } ; if ( E ) FCKDomTools . TrimNode ( E ) ; } , GetData : function ( A ) { if ( FCK . EditMode == 1 ) return FCK . EditingArea . Textarea . value ; this . FixBody ( ) ; var B = FCK . EditorDocument ; if ( ! B ) return null ; var C = FCKConfig . FullPage ; var D = FCK . DataProcessor . ConvertToDataFormat ( C ? B . documentElement : B . body , ! C , FCKConfig . IgnoreEmptyParagraphValue , A ) ; D = FCK . ProtectEventsRestore ( D ) ; if ( FCKBrowserInfo . IsIE ) D = D . replace ( FCKRegexLib . ToReplace , '$1' ) ; if ( C ) { if ( FCK . DocTypeDeclaration && FCK . DocTypeDeclaration . length > 0 ) D = FCK . DocTypeDeclaration + '\n' + D ; if ( FCK . XmlDeclaration && FCK . XmlDeclaration . length > 0 ) D = FCK . XmlDeclaration + '\n' + D ; } ; return FCKConfig . ProtectedSource . Revert ( D ) ; } , UpdateLinkedField : function ( ) { var A = FCK . GetXHTML ( FCKConfig . FormatOutput ) ; if ( FCKConfig . HtmlEncodeOutput ) A = FCKTools . HTMLEncode ( A ) ; FCK . LinkedField . value = A ; FCK . Events . FireEvent ( 'OnAfterLinkedFieldUpdate' ) ; } , RegisteredDoubleClickHandlers : { } , OnDoubleClick : function ( A ) { var B = FCK . RegisteredDoubleClickHandlers [ A . tagName . toUpperCase ( ) ] ; if ( B ) { for ( var i = 0 ; i < B . length ; i ++ ) B [ i ] ( A ) ; } ; B = FCK . RegisteredDoubleClickHandlers [ '*' ] ; if ( B ) { for ( var i = 0 ; i < B . length ; i ++ ) B [ i ] ( A ) ; } } , RegisterDoubleClickHandler : function ( A , B ) { var C = B || '*' ; C = C . toUpperCase ( ) ; var D ; if ( ! ( D = FCK . RegisteredDoubleClickHandlers [ C ] ) ) FCK . RegisteredDoubleClickHandlers [ C ] = [ A ] ; else { if ( D . IndexOf ( A ) == - 1 ) D . push ( A ) ; } } , OnAfterSetHTML : function ( ) { FCKDocumentProcessor . Process ( FCK . EditorDocument ) ; FCKUndo . SaveUndoStep ( ) ; FCK . Events . FireEvent ( 'OnSelectionChange' ) ; FCK .
FCK . Description = "FCKeditor for Internet Explorer 5.5+" ; FCK . _GetBehaviorsStyle = function ( ) { if ( ! FCK . _BehaviorsStyle ) { var A = FCKConfig . BasePath ; var B = '' ; var C ; C = '<style type="text/css" _fcktemp="true">' ; if ( FCKConfig . ShowBorders ) B = 'url(' + A + 'css/behaviors/showtableborders.htc)' ; C += 'INPUT,TEXTAREA,SELECT,.FCK__Anchor,.FCK__PageBreak,.FCK__InputHidden' ; if ( FCKConfig . DisableObjectResizing ) { C += ',IMG' ; B += ' url(' + A + 'css/behaviors/disablehandles.htc)' ; } ; C += ' { behavior: url(' + A + 'css/behaviors/disablehandles.htc) ; }' ; if ( B . length > 0 ) C += 'TABLE { behavior: ' + B + ' ; }' ; C += '</style>' ; FCK . _BehaviorsStyle = C ; } ; return FCK . _BehaviorsStyle ; } ; function Doc _OnMouseUp ( ) { if ( FCK . EditorWindow . event . srcElement . tagName == 'HTML' ) { FCK . Focus ( ) ; FCK . EditorWindow . event . cancelBubble = true ; FCK . EditorWindow . event . returnValue = false ; } } ; function Doc _OnPaste ( ) { var A = FCK . EditorDocument . body ; A . detachEvent ( 'onpaste' , Doc _OnPaste ) ; var B = FCK . Paste ( ! FCKConfig . ForcePasteAsPlainText && ! FCKConfig . AutoDetectPasteFromWord ) ; A . attachEvent ( 'onpaste' , Doc _OnPaste ) ; return B ; } ; function Doc _OnDblClick ( ) { FCK . OnDoubleClick ( FCK . EditorWindow . event . srcElement ) ; FCK . EditorWindow . event . cancelBubble = true ; } ; function Doc _OnSelectionChange ( ) { if ( ! FCK . IsSelectionChangeLocked && FCK . EditorDocument ) FCK . Events . FireEvent ( "OnSelectionChange" ) ; } ; function Doc _OnDrop ( ) { if ( FCK . MouseDownFlag ) { FCK . MouseDownFlag = false ; return ; } ; if ( FCKConfig . ForcePasteAsPlainText ) { var A = FCK . EditorWindow . event ; if ( FCK . _CheckIsPastingEnabled ( ) || FCKConfig . ShowDropDialog ) FCK . PasteAsPlainText ( A . dataTransfer . getData ( 'Text' ) ) ; A . returnValue = false ; A . cancelBubble = true ; } } ; FCK . InitializeBehaviors = function ( A ) { this . EditorDocument . attachEvent ( 'onmouseup' , Doc _OnMouseUp ) ; this . EditorDocument . body . attachEvent ( 'onpaste' , Doc _OnPaste ) ; this . EditorDocument . body . attachEvent ( 'ondrop' , Doc _OnDrop ) ; FCK . ContextMenu . _InnerContextMenu . AttachToElement ( FCK . EditorDocument . body ) ; this . EditorDocument . attachEvent ( "onkeydown" , FCK . _KeyDownListener ) ; this . EditorDocument . attachEvent ( "ondblclick" , Doc _OnDblClick ) ; this . EditorDocument . attachEvent ( "onbeforedeactivate" , function ( ) { FCKSelection . Save ( true ) ; } ) ; this . EditorDocument . attachEvent ( "onselectionchange" , Doc _OnSelectionChange ) ; FCKTools . AddEventListener ( FCK . EditorDocument , 'mousedown' , Doc _OnMouseDown ) ; } ; FCK . InsertHtml = function ( A ) { A = FCKConfig . ProtectedSource . Protect ( A ) ; A = FCK . ProtectEvents ( A ) ; A = FCK . ProtectUrls ( A ) ; A = FCK . ProtectTags ( A ) ; FCKSelection . Restore ( ) ; FCK . EditorWindow . focus ( ) ; FCKUndo . SaveUndoStep ( ) ; var B = FCKSelection . GetSelection ( ) ; if ( B . type . toLowerCase ( ) == 'control' ) B . clear ( ) ; A = '<span id="__fakeFCKRemove__" style="display:none;">fakeFCKRemove</span>' + A ; B . createRange ( ) . pasteHTML ( A ) ; FCK . EditorDocument . getElementById ( '__fakeFCKRemove__' ) . removeNode ( true ) ; FCKDocumentProcessor . Process ( FCK . EditorDocument ) ; this . Events . FireEvent ( "OnSelectionChange" ) ; } ; FCK . SetInnerHtml = function ( A ) { var B = FCK . EditorDocument ; B . body . innerHTML = '<div id="__fakeFCKRemove__"> </div>' + A ; B . getElementById ( '__fakeFCKRemove__' ) . removeNode ( true ) ; } ; function FCK _PreloadImages ( ) { var A = new FCKImagePreloader ( ) ; A . AddImages ( FCKConfig . PreloadImages ) ; A . AddImages ( FCKConfig . SkinPath + 'fck_strip.gif' ) ; A . OnComplete = LoadToolbarSetup ; A . Start ( ) ; } ; function Document _OnContextMenu ( ) { return ( event . srcElement . _FCKShowContextMenu == true ) ; } ; document . oncontextmenu = Document _OnContextMenu ; function FCK _Cleanup ( ) { this . LinkedField = null ; this . EditorWindow = null ; this . EditorDocument = null ; } ; FCK . _ExecPaste = function ( ) { if ( FCK . _PasteIsRunning ) return true ; if ( FCKConfig . ForcePasteAsPlainText ) { FCK . PasteAsPlainText ( ) ; return false ; } ; var A = FCK . _CheckIsPastingEnabled ( true ) ; if ( A === false ) FCKTools . RunFunction ( FCKDialog . OpenDialog , FCKDialog , [ 'FCKDialog_Paste' , FCKLang . Paste , 'dialog/fck_paste.html' , 400 , 330 , 'Security' ] ) ; else { if ( FCKConfig . AutoDetectPasteFromWord && A . length > 0 ) { var B = /<\w[^>]*(( class="?MsoNormal"?)|(="mso-))/gi ; if ( B . test ( A ) ) { if ( confirm ( FCKLang . PasteWordConfirm ) ) { FCK . PasteFromWord ( ) ; return false ; } } } ; FCK . _PasteIsRunning = true ; FCK . ExecuteNamedCommand ( 'Paste' ) ; delete FCK . _PasteIsRunning ; } ; return false ; } ; FCK . PasteAsPlainText = function ( A ) { if ( ! FCK . _CheckIsPastingEnabled ( ) ) { FCKDialog . OpenDialog
var FCKConfig = FCK . Config = { } ; if ( document . location . protocol == 'file:' ) { FCKConfig . BasePath = decodeURIComponent ( document . location . pathname . substr ( 1 ) ) ; FCKConfig . BasePath = FCKConfig . BasePath . replace ( /\\/gi , '/' ) ; var sFullProtocol = document . location . href . match ( /^(file\:\/{2,3})/ ) [ 1 ] ; if ( FCKBrowserInfo . IsOpera ) sFullProtocol += 'localhost/' ; FCKConfig . BasePath = sFullProtocol + FCKConfig . BasePath . substring ( 0 , FCKConfig . BasePath . lastIndexOf ( '/' ) + 1 ) ; } else FCKConfig . BasePath = document . location . protocol + '//' + document . location . host + document . location . pathname . substring ( 0 , document . location . pathname . lastIndexOf ( '/' ) + 1 ) ; FCKConfig . FullBasePath = FCKConfig . BasePath ; FCKConfig . EditorPath = FCKConfig . BasePath . replace ( /editor\/$/ , '' ) ; try { FCKConfig . ScreenWidth = screen . width ; FCKConfig . ScreenHeight = screen . height ; } catch ( e ) { FCKConfig . ScreenWidth = 800 ; FCKConfig . ScreenHeight = 600 ; } ; FCKConfig . ProcessHiddenField = function ( ) { this . PageConfig = { } ; var A = window . parent . document . getElementById ( FCK . Name + '___Config' ) ; if ( ! A ) return ; var B = A . value . split ( '&' ) ; for ( var i = 0 ; i < B . length ; i ++ ) { if ( B [ i ] . length == 0 ) continue ; var C = B [ i ] . split ( '=' ) ; var D = decodeURIComponent ( C [ 0 ] ) ; var E = decodeURIComponent ( C [ 1 ] ) ; if ( D == 'CustomConfigurationsPath' ) FCKConfig [ D ] = E ; else if ( E . toLowerCase ( ) == "true" ) this . PageConfig [ D ] = true ; else if ( E . toLowerCase ( ) == "false" ) this . PageConfig [ D ] = false ; else if ( E . length > 0 && ! isNaN ( E ) ) this . PageConfig [ D ] = parseInt ( E , 10 ) ; else this . PageConfig [ D ] = E ; } } ; function FCKConfig _LoadPageConfig ( ) { var A = FCKConfig . PageConfig ; for ( var B in A ) FCKConfig [ B ] = A [ B ] ; } ; function FCKConfig _PreProcess ( ) { var A = FCKConfig ; if ( A . AllowQueryStringDebug ) { try { if ( ( /fckdebug=true/i ) . test ( window . top . location . search ) ) A . Debug = true ; } catch ( e ) { } } ; if ( ! A . PluginsPath . EndsWith ( '/' ) ) A . PluginsPath += '/' ; var B = A . ToolbarComboPreviewCSS ; if ( ! B || B . length == 0 ) A . ToolbarComboPreviewCSS = A . EditorAreaCSS ; A . RemoveAttributesArray = ( A . RemoveAttributes || '' ) . split ( ',' ) ; if ( ! FCKConfig . SkinEditorCSS || FCKConfig . SkinEditorCSS . length == 0 ) FCKConfig . SkinEditorCSS = FCKConfig . SkinPath + 'fck_editor.css' ; if ( ! FCKConfig . SkinDialogCSS || FCKConfig . SkinDialogCSS . length == 0 ) FCKConfig . SkinDialogCSS = FCKConfig . SkinPath + 'fck_dialog.css' ; } ; FCKConfig . ToolbarSets = { } ; FCKConfig . Plugins = { } ; FCKConfig . Plugins . Items = [ ] ; FCKConfig . Plugins . Add = function ( A , B , C ) { FCKConfig . Plugins . Items . AddItem ( [ A , B , C ] ) ; } ; FCKConfig . ProtectedSource = { } ; FCKConfig . ProtectedSource . _CodeTag = ( new Date ( ) ) . valueOf ( ) ; FCKConfig . ProtectedSource . RegexEntries = [ /<!--[\s\S]*?-->/g , /<script[\s\S]*?<\/script>/gi , /<noscript[\s\S]*?<\/noscript>/gi ] ; FCKConfig . ProtectedSource . Add = function ( A ) { this . RegexEntries . AddItem ( A ) ; } ; FCKConfig . ProtectedSource . Protect = function ( A ) { var B = this . _CodeTag ; function _Replace ( protectedSource ) { var C = FCKTempBin . AddElement ( protectedSource ) ; return '<!--{' + B + C + '}-->' ; } ; for ( var i = 0 ; i < this . RegexEntries . length ; i ++ ) { A = A . replace ( this . RegexEntries [ i ] , _Replace ) ; } ; return A ; } ; FCKConfig . ProtectedSource . Revert = function ( A , B ) { function _Replace ( m , opener , index ) { var C = B ? FCKTempBin . RemoveElement ( index ) : FCKTempBin . Elements [ index ] ; return FCKConfig . ProtectedSource . Revert ( C , B ) ; } ; var D = new RegExp ( "(<|<)!--\\{" + this . _CodeTag + "(\\d+)\\}--(>|>)" , "g" ) ; return A . replace ( D , _Replace ) ; } ; FCKConfig . GetBodyAttributes = function ( ) { var A = '' ; if ( this . BodyId && this . BodyId . length > 0 ) A += ' id="' + this . BodyId + '"' ; if ( this . BodyClass && this . BodyClass . length > 0 ) A += ' class="' + this . BodyClass + '"' ; return A ; } ; FCKConfig . ApplyBodyAttributes = function ( A ) { if ( this . BodyId && this . BodyId . length > 0 ) A . id = FCKConfig . BodyId ; if ( this . BodyClass && this . BodyClass . length > 0 ) A . className += ' ' + FCKConfig . BodyClass ; } ;
var FCKDebug = { Output : function ( ) { } , OutputObject : function ( ) { } } ;
var FCKDomTools = { MoveChildren : function ( A , B , C ) { if ( A == B ) return ; var D ; if ( C ) { while ( ( D = A . lastChild ) ) B . insertBefore ( A . removeChild ( D ) , B . firstChild ) ; } else { while ( ( D = A . firstChild ) ) B . appendChild ( A . removeChild ( D ) ) ; } } , MoveNode : function ( A , B , C ) { if ( C ) B . insertBefore ( FCKDomTools . RemoveNode ( A ) , B . firstChild ) ; else B . appendChild ( FCKDomTools . RemoveNode ( A ) ) ; } , TrimNode : function ( A ) { this . LTrimNode ( A ) ; this . RTrimNode ( A ) ; } , LTrimNode : function ( A ) { var B ; while ( ( B = A . firstChild ) ) { if ( B . nodeType == 3 ) { var C = B . nodeValue . LTrim ( ) ; var D = B . nodeValue . length ; if ( C . length == 0 ) { A . removeChild ( B ) ; continue ; } else if ( C . length < D ) { B . splitText ( D - C . length ) ; A . removeChild ( A . firstChild ) ; } } ; break ; } } , RTrimNode : function ( A ) { var B ; while ( ( B = A . lastChild ) ) { if ( B . nodeType == 3 ) { var C = B . nodeValue . RTrim ( ) ; var D = B . nodeValue . length ; if ( C . length == 0 ) { B . parentNode . removeChild ( B ) ; continue ; } else if ( C . length < D ) { B . splitText ( C . length ) ; A . lastChild . parentNode . removeChild ( A . lastChild ) ; } } ; break ; } ; if ( ! FCKBrowserInfo . IsIE && ! FCKBrowserInfo . IsOpera ) { B = A . lastChild ; if ( B && B . nodeType == 1 && B . nodeName . toLowerCase ( ) == 'br' ) { B . parentNode . removeChild ( B ) ; } } } , RemoveNode : function ( A , B ) { if ( B ) { var C ; while ( ( C = A . firstChild ) ) A . parentNode . insertBefore ( A . removeChild ( C ) , A ) ; } ; return A . parentNode . removeChild ( A ) ; } , GetFirstChild : function ( A , B ) { if ( typeof ( B ) == 'string' ) B = [ B ] ; var C = A . firstChild ; while ( C ) { if ( C . nodeType == 1 && C . tagName . Equals . apply ( C . tagName , B ) ) return C ; C = C . nextSibling ; } ; return null ; } , GetLastChild : function ( A , B ) { if ( typeof ( B ) == 'string' ) B = [ B ] ; var C = A . lastChild ; while ( C ) { if ( C . nodeType == 1 && ( ! B || C . tagName . Equals ( B ) ) ) return C ; C = C . previousSibling ; } ; return null ; } , GetPreviousSourceElement : function ( A , B , C , D ) { if ( ! A ) return null ; if ( C && A . nodeType == 1 && A . nodeName . IEquals ( C ) ) return null ; if ( A . previousSibling ) A = A . previousSibling ; else return this . GetPreviousSourceElement ( A . parentNode , B , C , D ) ; while ( A ) { if ( A . nodeType == 1 ) { if ( C && A . nodeName . IEquals ( C ) ) break ; if ( ! D || ! A . nodeName . IEquals ( D ) ) return A ; } else if ( B && A . nodeType == 3 && A . nodeValue . RTrim ( ) . length > 0 ) break ; if ( A . lastChild ) A = A . lastChild ; else return this . GetPreviousSourceElement ( A , B , C , D ) ; } ; return null ; } , GetNextSourceElement : function ( A , B , C , D , E ) { while ( ( A = this . GetNextSourceNode ( A , E ) ) ) { if ( A . nodeType == 1 ) { if ( C && A . nodeName . IEquals ( C ) ) break ; if ( D && A . nodeName . IEquals ( D ) ) return this . GetNextSourceElement ( A , B , C , D ) ; return A ; } else if ( B && A . nodeType == 3 && A . nodeValue . RTrim ( ) . length > 0 ) break ; } ; return null ; } , GetNextSourceNode : function ( A , B , C , D ) { if ( ! A ) return null ; var E ; if ( ! B && A . firstChild ) E = A . firstChild ; else { if ( D && A == D ) return null ; E = A . nextSibling ; if ( ! E && ( ! D || D != A . parentNode ) ) return this . GetNextSourceNode ( A . parentNode , true , C , D ) ; } ; if ( C && E && E . nodeType != C ) return this . GetNextSourceNode ( E , false , C , D ) ; return E ; } , GetPreviousSourceNode : function ( A , B , C , D ) { if ( ! A ) return null ; var E ; if ( ! B && A . lastChild ) E = A . lastChild ; else { if ( D && A == D ) return null ; E = A . previousSibling ; if ( ! E && ( ! D || D != A . parentNode ) ) return this . GetPreviousSourceNode ( A . parentNode , true , C , D ) ; } ; if ( C && E && E . nodeType != C ) return this . GetPreviousSourceNode ( E , false , C , D ) ; return E ; } , InsertAfterNode : function ( A , B ) { return A . parentNode . insertBefore ( B , A . nextSibling ) ; } , GetParents : function ( A ) { var B = [ ] ; while ( A ) { B . unshift ( A ) ; A = A . parentNode ; } ; return B ; } , GetCommonParents : function ( A , B ) { var C = this . GetParents ( A ) ; var D = this . GetParents ( B ) ; var E = [ ] ; for ( var i = 0 ; i < C . length ; i ++ ) { if ( C [ i ] == D [ i ] ) E . push ( C [ i ] ) ; } ; return E ; } , GetCommonParentNode : function ( A , B , C ) { var D = { } ; if ( ! C . pop ) C = [ C ] ; while ( C . length > 0 ) D [ C . pop ( ) . toLowerCase ( ) ] = 1 ; var E = this . GetCommonParents ( A , B ) ; var F = null ; while ( ( F = E . pop ( ) ) ) { if ( D [ F . nodeName . toLowerCase ( ) ] ) return F ; } ; return null ; } , GetIndexOf : function ( A ) { var B = A . parentNode ? A . parentNode . firstChild : null ; var C = - 1 ; while ( B ) { C ++ ; if ( B == A ) return C ; B = B . nextSibling ; } ; return - 1 ; } , PaddingNode : null , EnforcePaddingNode : function ( A , B ) { try { if ( ! A || ! A . body ) return ; } catch ( e ) { return ; } ; this . CheckAndRemovePaddingNode ( A , B , true ) ; try { if ( A . body . lastChild && ( A . body . lastChild . nodeType != 1 || A . body . lastChild . tagName . toLowerCase ( ) == B . toLowerCase ( ) ) ) return ; } catch ( e ) { return ; } ; var C = A . createElement ( B ) ; if ( FCKBrowserInfo . IsGecko && FCKListsLib . NonEmptyBlockElements [ B ] ) FCK
var FCKTools = { } ; FCKTools . CreateBogusBR = function ( A ) { var B = A . createElement ( 'br' ) ; B . setAttribute ( 'type' , '_moz' ) ; return B ; } ; FCKTools . FixCssUrls = function ( A , B ) { if ( ! A || A . length == 0 ) return B ; return B . replace ( /url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g , function ( match , opener , path , closer ) { if ( /^\/|^\w?:/ . test ( path ) ) return match ; else return 'url(' + opener + A + path + closer + ')' ; } ) ; } ; FCKTools . _GetUrlFixedCss = function ( A , B ) { var C = A . match ( /^([^|]+)\|([\s\S]*)/ ) ; if ( C ) return FCKTools . FixCssUrls ( C [ 1 ] , C [ 2 ] ) ; else return A ; } ; FCKTools . AppendStyleSheet = function ( A , B ) { if ( ! B ) return [ ] ; if ( typeof ( B ) == 'string' ) { if ( /[\\\/\.][^{}]*$/ . test ( B ) ) { return this . AppendStyleSheet ( A , B . split ( ',' ) ) ; } else return [ this . AppendStyleString ( A , FCKTools . _GetUrlFixedCss ( B ) ) ] ; } else { var C = [ ] ; for ( var i = 0 ; i < B . length ; i ++ ) C . push ( this . _AppendStyleSheet ( A , B [ i ] ) ) ; return C ; } } ; FCKTools . GetStyleHtml = ( function ( ) { var A = function ( styleDef , markTemp ) { if ( styleDef . length == 0 ) return '' ; var B = markTemp ? ' _fcktemp="true"' : '' ; return '<style type="text/css"' + B + '>' + styleDef + '</style>' ; } ; var C = function ( cssFileUrl , markTemp ) { if ( cssFileUrl . length == 0 ) return '' ; var B = markTemp ? ' _fcktemp="true"' : '' ; return '<link href="' + cssFileUrl + '" type="text/css" rel="stylesheet" ' + B + '/>' ; } ; return function ( cssFileOrArrayOrDef , markTemp ) { if ( ! cssFileOrArrayOrDef ) return '' ; if ( typeof ( cssFileOrArrayOrDef ) == 'string' ) { if ( /[\\\/\.][^{}]*$/ . test ( cssFileOrArrayOrDef ) ) { return this . GetStyleHtml ( cssFileOrArrayOrDef . split ( ',' ) , markTemp ) ; } else return A ( this . _GetUrlFixedCss ( cssFileOrArrayOrDef ) , markTemp ) ; } else { var E = '' ; for ( var i = 0 ; i < cssFileOrArrayOrDef . length ; i ++ ) E += C ( cssFileOrArrayOrDef [ i ] , markTemp ) ; return E ; } } } ) ( ) ; FCKTools . GetElementDocument = function ( A ) { return A . ownerDocument || A . document ; } ; FCKTools . GetElementWindow = function ( A ) { return this . GetDocumentWindow ( this . GetElementDocument ( A ) ) ; } ; FCKTools . GetDocumentWindow = function ( A ) { if ( FCKBrowserInfo . IsSafari && ! A . parentWindow ) this . FixDocumentParentWindow ( window . top ) ; return A . parentWindow || A . defaultView ; } ; FCKTools . FixDocumentParentWindow = function ( A ) { if ( A . document ) A . document . parentWindow = A ; for ( var i = 0 ; i < A . frames . length ; i ++ ) FCKTools . FixDocumentParentWindow ( A . frames [ i ] ) ; } ; FCKTools . HTMLEncode = function ( A ) { if ( ! A ) return '' ; A = A . replace ( /&/g , '&' ) ; A = A . replace ( /</g , '<' ) ; A = A . replace ( />/g , '>' ) ; return A ; } ; FCKTools . HTMLDecode = function ( A ) { if ( ! A ) return '' ; A = A . replace ( />/g , '>' ) ; A = A . replace ( /</g , '<' ) ; A = A . replace ( /&/g , '&' ) ; return A ; } ; FCKTools . _ProcessLineBreaksForPMode = function ( A , B , C , D , E ) { var F = 0 ; var G = "<p>" ; var H = "</p>" ; var I = "<br />" ; if ( C ) { G = "<li>" ; H = "</li>" ; F = 1 ; } while ( D && D != A . FCK . EditorDocument . body ) { if ( D . tagName . toLowerCase ( ) == 'p' ) { F = 1 ; break ; } ; D = D . parentNode ; } ; for ( var i = 0 ; i < B . length ; i ++ ) { var c = B . charAt ( i ) ; if ( c == '\r' ) continue ; if ( c != '\n' ) { E . push ( c ) ; continue ; } ; var n = B . charAt ( i + 1 ) ; if ( n == '\r' ) { i ++ ; n = B . charAt ( i + 1 ) ; } ; if ( n == '\n' ) { i ++ ; if ( F ) E . push ( H ) ; E . push ( G ) ; F = 1 ; } else E . push ( I ) ; } } ; FCKTools . _ProcessLineBreaksForDivMode = function ( A , B , C , D , E ) { var F = 0 ; var G = "<div>" ; var H = "</div>" ; if ( C ) { G = "<li>" ; H = "</li>" ; F = 1 ; } while ( D && D != A . FCK . EditorDocument . body ) { if ( D . tagName . toLowerCase ( ) == 'div' ) { F = 1 ; break ; } ; D = D . parentNode ; } ; for ( var i = 0 ; i < B . length ; i ++ ) { var c = B . charAt ( i ) ; if ( c == '\r' ) continue ; if ( c != '\n' ) { E . push ( c ) ; continue ; } ; if ( F ) { if ( E [ E . length - 1 ] == G ) { E . push ( " " ) ; } ; E . push ( H ) ; } ; E . push ( G ) ; F = 1 ; } ; if ( F ) E . push ( H ) ; } ; FCKTools . _ProcessLineBreaksForBrMode = function ( A , B , C , D , E ) { var F = 0 ; var G = "<br />" ; var H = "" ; if ( C ) { G = "<li>" ; H = "</li>" ; F = 1 ; } ; for ( var i = 0 ; i < B . length ; i ++ ) { var c = B . charAt ( i ) ; if ( c == '\r' ) continue ; if ( c != '\n' ) { E . push ( c ) ; continue ; } ; if ( F && H . length ) E . push ( H ) ; E . push ( G ) ; F = 1 ; } } ; FCKTools . ProcessLineBreaks = function ( A , B , C ) { var D = B . EnterMode . toLowerCase ( ) ; var E = [ ] ; var F = 0 ; var G = new A . FCKDomRange ( A . FCK . EditorWindow ) ; G . MoveToSelection ( ) ; var H = G . _Range . startContainer ; while ( H && H . nodeType != 1 ) H = H . parentNode ; if ( H && H . tagName . toLowerCase ( ) == 'li' ) F = 1 ; if ( D == 'p' ) this . _ProcessLineBreaksForPMode ( A , C , F , H , E ) ; else if ( D == 'div' ) this . _ProcessLineBreaksForDivMode ( A , C , F , H , E ) ; else if ( D == 'br' ) this . _ProcessLineBreaksForBrMode ( A , C , F , H , E ) ; return E . join ( "" ) ; } ; FCKTools . AddSelectOption = function ( A , B , C ) { var
FCKTools . CancelEvent = function ( e ) { return false ; } ; FCKTools . _AppendStyleSheet = function ( A , B ) { return A . createStyleSheet ( B ) . owningElement ; } ; FCKTools . AppendStyleString = function ( A , B ) { if ( ! B ) return null ; var s = A . createStyleSheet ( "" ) ; s . cssText = B ; return s ; } ; FCKTools . ClearElementAttributes = function ( A ) { A . clearAttributes ( ) ; } ; FCKTools . GetAllChildrenIds = function ( A ) { var B = [ ] ; for ( var i = 0 ; i < A . all . length ; i ++ ) { var C = A . all [ i ] . id ; if ( C && C . length > 0 ) B [ B . length ] = C ; } ; return B ; } ; FCKTools . RemoveOuterTags = function ( e ) { e . insertAdjacentHTML ( 'beforeBegin' , e . innerHTML ) ; e . parentNode . removeChild ( e ) ; } ; FCKTools . CreateXmlObject = function ( A ) { var B ; switch ( A ) { case 'XmlHttp' : if ( document . location . protocol != 'file:' ) try { return new XMLHttpRequest ( ) ; } catch ( e ) { } ; B = [ 'MSXML2.XmlHttp' , 'Microsoft.XmlHttp' ] ; break ; case 'DOMDocument' : B = [ 'MSXML2.DOMDocument' , 'Microsoft.XmlDom' ] ; break ; } ; for ( var i = 0 ; i < 2 ; i ++ ) { try { return new ActiveXObject ( B [ i ] ) ; } catch ( e ) { } } ; if ( FCKLang . NoActiveX ) { alert ( FCKLang . NoActiveX ) ; FCKLang . NoActiveX = null ; } ; return null ; } ; FCKTools . DisableSelection = function ( A ) { A . unselectable = 'on' ; var e , i = 0 ; while ( ( e = A . all [ i ++ ] ) ) { switch ( e . tagName ) { case 'IFRAME' : case 'TEXTAREA' : case 'INPUT' : case 'SELECT' : break ; default : e . unselectable = 'on' ; } } } ; FCKTools . GetScrollPosition = function ( A ) { var B = A . document ; var C = { X : B . documentElement . scrollLeft , Y : B . documentElement . scrollTop } ; if ( C . X > 0 || C . Y > 0 ) return C ; return { X : B . body . scrollLeft , Y : B . body . scrollTop } ; } ; FCKTools . AddEventListener = function ( A , B , C ) { A . attachEvent ( 'on' + B , C ) ; } ; FCKTools . RemoveEventListener = function ( A , B , C ) { A . detachEvent ( 'on' + B , C ) ; } ; FCKTools . AddEventListenerEx = function ( A , B , C , D ) { var o = { } ; o . Source = A ; o . Params = D || [ ] ; o . Listener = function ( ev ) { return C . apply ( o . Source , [ ev ] . concat ( o . Params ) ) ; } ; if ( FCK . IECleanup ) FCK . IECleanup . AddItem ( null , function ( ) { o . Source = null ; o . Params = null ; } ) ; A . attachEvent ( 'on' + B , o . Listener ) ; A = null ; D = null ; } ; FCKTools . GetViewPaneSize = function ( A ) { var B ; var C = A . document . documentElement ; if ( C && C . clientWidth ) B = C ; else B = A . document . body ; if ( B ) return { Width : B . clientWidth , Height : B . clientHeight } ; else return { Width : 0 , Height : 0 } ; } ; FCKTools . SaveStyles = function ( A ) { var B = FCKTools . ProtectFormStyles ( A ) ; var C = { } ; if ( A . className . length > 0 ) { C . Class = A . className ; A . className = '' ; } ; var D = A . style . cssText ; if ( D . length > 0 ) { C . Inline = D ; A . style . cssText = '' ; } ; FCKTools . RestoreFormStyles ( A , B ) ; return C ; } ; FCKTools . RestoreStyles = function ( A , B ) { var C = FCKTools . ProtectFormStyles ( A ) ; A . className = B . Class || '' ; A . style . cssText = B . Inline || '' ; FCKTools . RestoreFormStyles ( A , C ) ; } ; FCKTools . RegisterDollarFunction = function ( A ) { A . $ = function ( v ) { return A . document . getElementById ( v ) ; } } ;
FCKTools . AppendElement = function ( A , B ) { return A . appendChild ( this . GetElementDocument ( A ) . createElement ( B ) ) ; } ; FCKTools . ToLowerCase = function ( A ) { return A . toLowerCase ( ) ; } ;
var FCKeditorAPI ; function InitializeAPI ( ) { var A = window . parent ; if ( ! ( FCKeditorAPI = A . FCKeditorAPI ) ) { var B = 'window.FCKeditorAPI = {Version : "2.6.3",VersionBuild : "19836",Instances : new Object(),GetInstance : function( name ){return this.Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.Instances ){var oEditor = FCKeditorAPI.Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue : {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );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( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}' ; if ( A . execScript ) A . execScript ( B , 'JavaScript' ) ; else { if ( FCKBrowserInfo . IsGecko10 ) { eval . call ( A , B ) ; } else if ( FCKBrowserInfo . IsAIR ) { FCKAdobeAIR . FCKeditorAPI _Evaluate ( A , B ) ; } else if ( FCKBrowserInfo . IsSafari ) { var C = A . document ; var D = C . createElement ( 'script' ) ; D . appendChild ( C . createTextNode ( B ) ) ; C . documentElement . appendChild ( D ) ; } else A . eval ( B ) ; } ; FCKeditorAPI = A . FCKeditorAPI ; FCKeditorAPI . _ _Instances = FCKeditorAPI . Instances ; } ; FCKeditorAPI . Instances [ FCK . Name ] = FCK ; } ; function _AttachFormSubmitToAPI ( ) { var A = FCK . GetParentForm ( ) ; if ( A ) { FCKTools . AddEventListener ( A , 'submit' , FCK . UpdateLinkedField ) ; if ( ! A . _FCKOriginalSubmit && ( typeof ( A . submit ) == 'function' || ( ! A . submit . tagName && ! A . submit . length ) ) ) { A . _FCKOriginalSubmit = A . submit ; A . submit = FCKeditorAPI . _FormSubmit ; } } } ; function FCKeditorAPI _Cleanup ( ) { if ( window . FCKConfig && FCKConfig . MsWebBrowserControlCompat && ! window . FCKUnloadFlag ) return ; delete FCKeditorAPI . Instances [ FCK . Name ] ; } ; function FCKeditorAPI _ConfirmCleanup ( ) { if ( window . FCKConfig && FCKConfig . MsWebBrowserControlCompat ) window . FCKUnloadFlag = true ; } ; FCKTools . AddEventListener ( window , 'unload' , FCKeditorAPI _Cleanup ) ; FCKTools . AddEventListener ( window , 'beforeunload' , FCKeditorAPI _ConfirmCleanup ) ;
var FCKImagePreloader = function ( ) { this . _Images = [ ] ; } ; FCKImagePreloader . prototype = { AddImages : function ( A ) { if ( typeof ( A ) == 'string' ) A = A . split ( ';' ) ; this . _Images = this . _Images . concat ( A ) ; } , Start : function ( ) { var A = this . _Images ; this . _PreloadCount = A . length ; for ( var i = 0 ; i < A . length ; i ++ ) { var B = document . createElement ( 'img' ) ; FCKTools . AddEventListenerEx ( B , 'load' , _FCKImagePreloader _OnImage , this ) ; FCKTools . AddEventListenerEx ( B , 'error' , _FCKImagePreloader _OnImage , this ) ; B . src = A [ i ] ; _FCKImagePreloader _ImageCache . push ( B ) ; } } } ; var _FCKImagePreloader _ImageCache = [ ] ; function _FCKImagePreloader _OnImage ( A , B ) { if ( ( -- B . _PreloadCount ) == 0 && B . OnComplete ) B . OnComplete ( ) ; } ;
var FCKRegexLib = { AposEntity : /'/gi , ObjectElements : /^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i , NamedCommands : /^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i , BeforeBody : /(^[\s\S]*\<body[^\>]*\>)/i , AfterBody : /(\<\/body\>[\s\S]*$)/i , ToReplace : /___fcktoreplace:([\w]+)/ig , MetaHttpEquiv : /http-equiv\s*=\s*["']?([^"' ]+)/i , HasBaseTag : /<base /i , HasBodyTag : /<body[\s|>]/i , HtmlOpener : /<html\s?[^>]*>/i , HeadOpener : /<head\s?[^>]*>/i , HeadCloser : /<\/head\s*>/i , FCK _Class : /\s*FCK__[^ ]*(?=\s+|$)/ , ElementName : /(^[a-z_:][\w.\-:]*\w$)|(^[a-z_]$)/ , ForceSimpleAmpersand : /___FCKAmp___/g , SpaceNoClose : /\/>/g , EmptyParagraph : /^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/ , EmptyOutParagraph : /^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*| )(<\/\1>)?$/ , TagBody : /></ , GeckoEntitiesMarker : /#\?-\:/g , ProtectUrlsImg : /<img(?=\s).*?\ssrc=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi , ProtectUrlsA : /<a(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi , ProtectUrlsArea : /<area(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi , Html4DocType : /HTML 4\.0 Transitional/i , DocTypeTag : /<!DOCTYPE[^>]*>/i , HtmlDocType : /DTD HTML/ , TagsWithEvent : /<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g , EventAttributes : /\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g , ProtectedEvents : /\s\w+_fckprotectedatt="([^"]+)"/g , StyleProperties : /\S+\s*:/g , InvalidSelfCloseTags : /(<(?!base|meta|link|hr|br|param|img|area|input)([a-zA-Z0-9:]+)[^>]*)\/>/gi , StyleVariableAttName : /#\(\s*("|')(.+?)\1[^\)]*\s*\)/g , RegExp : /^\/(.*)\/([gim]*)$/ , HtmlTag : /<[^\s<>](?:"[^"]*"|'[^']*'|[^<])*>/ } ;
var FCKListsLib = { BlockElements : { address : 1 , blockquote : 1 , center : 1 , div : 1 , dl : 1 , fieldset : 1 , form : 1 , h1 : 1 , h2 : 1 , h3 : 1 , h4 : 1 , h5 : 1 , h6 : 1 , hr : 1 , marquee : 1 , noscript : 1 , ol : 1 , p : 1 , pre : 1 , script : 1 , table : 1 , ul : 1 } , NonEmptyBlockElements : { p : 1 , div : 1 , form : 1 , h1 : 1 , h2 : 1 , h3 : 1 , h4 : 1 , h5 : 1 , h6 : 1 , address : 1 , pre : 1 , ol : 1 , ul : 1 , li : 1 , td : 1 , th : 1 } , InlineChildReqElements : { abbr : 1 , acronym : 1 , b : 1 , bdo : 1 , big : 1 , cite : 1 , code : 1 , del : 1 , dfn : 1 , em : 1 , font : 1 , i : 1 , ins : 1 , label : 1 , kbd : 1 , q : 1 , samp : 1 , small : 1 , span : 1 , strike : 1 , strong : 1 , sub : 1 , sup : 1 , tt : 1 , u : 1 , 'var' : 1 } , InlineNonEmptyElements : { a : 1 , abbr : 1 , acronym : 1 , b : 1 , bdo : 1 , big : 1 , cite : 1 , code : 1 , del : 1 , dfn : 1 , em : 1 , font : 1 , i : 1 , ins : 1 , label : 1 , kbd : 1 , q : 1 , samp : 1 , small : 1 , span : 1 , strike : 1 , strong : 1 , sub : 1 , sup : 1 , tt : 1 , u : 1 , 'var' : 1 } , EmptyElements : { base : 1 , col : 1 , meta : 1 , link : 1 , hr : 1 , br : 1 , param : 1 , img : 1 , area : 1 , input : 1 } , PathBlockElements : { address : 1 , blockquote : 1 , dl : 1 , h1 : 1 , h2 : 1 , h3 : 1 , h4 : 1 , h5 : 1 , h6 : 1 , p : 1 , pre : 1 , li : 1 , dt : 1 , de : 1 } , PathBlockLimitElements : { body : 1 , div : 1 , td : 1 , th : 1 , caption : 1 , form : 1 } , StyleBlockElements : { address : 1 , div : 1 , h1 : 1 , h2 : 1 , h3 : 1 , h4 : 1 , h5 : 1 , h6 : 1 , p : 1 , pre : 1 } , StyleObjectElements : { img : 1 , hr : 1 , li : 1 , table : 1 , tr : 1 , td : 1 , embed : 1 , object : 1 , ol : 1 , ul : 1 } , NonEditableElements : { button : 1 , option : 1 , script : 1 , iframe : 1 , textarea : 1 , object : 1 , embed : 1 , map : 1 , applet : 1 } , BlockBoundaries : { p : 1 , div : 1 , h1 : 1 , h2 : 1 , h3 : 1 , h4 : 1 , h5 : 1 , h6 : 1 , hr : 1 , address : 1 , pre : 1 , ol : 1 , ul : 1 , li : 1 , dt : 1 , de : 1 , table : 1 , thead : 1 , tbody : 1 , tfoot : 1 , tr : 1 , th : 1 , td : 1 , caption : 1 , col : 1 , colgroup : 1 , blockquote : 1 , body : 1 } , ListBoundaries : { p : 1 , div : 1 , h1 : 1 , h2 : 1 , h3 : 1 , h4 : 1 , h5 : 1 , h6 : 1 , hr : 1 , address : 1 , pre : 1 , ol : 1 , ul : 1 , li : 1 , dt : 1 , de : 1 , table : 1 , thead : 1 , tbody : 1 , tfoot : 1 , tr : 1 , th : 1 , td : 1 , caption : 1 , col : 1 , colgroup : 1 , blockquote : 1 , body : 1 , br : 1 } } ;
var FCKLanguageManager = FCK . Language = { AvailableLanguages : { af : 'Afrikaans' , ar : 'Arabic' , bg : 'Bulgarian' , bn : 'Bengali/Bangla' , bs : 'Bosnian' , ca : 'Catalan' , cs : 'Czech' , da : 'Danish' , de : 'German' , el : 'Greek' , en : 'English' , 'en-au' : 'English (Australia)' , 'en-ca' : 'English (Canadian)' , 'en-uk' : 'English (United Kingdom)' , eo : 'Esperanto' , es : 'Spanish' , et : 'Estonian' , eu : 'Basque' , fa : 'Persian' , fi : 'Finnish' , fo : 'Faroese' , fr : 'French' , 'fr-ca' : 'French (Canada)' , gl : 'Galician' , gu : 'Gujarati' , he : 'Hebrew' , hi : 'Hindi' , hr : 'Croatian' , hu : 'Hungarian' , it : 'Italian' , ja : 'Japanese' , km : 'Khmer' , ko : 'Korean' , lt : 'Lithuanian' , lv : 'Latvian' , mn : 'Mongolian' , ms : 'Malay' , nb : 'Norwegian Bokmal' , nl : 'Dutch' , no : 'Norwegian' , pl : 'Polish' , pt : 'Portuguese (Portugal)' , 'pt-br' : 'Portuguese (Brazil)' , ro : 'Romanian' , ru : 'Russian' , sk : 'Slovak' , sl : 'Slovenian' , sr : 'Serbian (Cyrillic)' , 'sr-latn' : 'Serbian (Latin)' , sv : 'Swedish' , th : 'Thai' , tr : 'Turkish' , uk : 'Ukrainian' , vi : 'Vietnamese' , zh : 'Chinese Traditional' , 'zh-cn' : 'Chinese Simplified' } , GetActiveLanguage : function ( ) { if ( FCKConfig . AutoDetectLanguage ) { var A ; if ( navigator . userLanguage ) A = navigator . userLanguage . toLowerCase ( ) ; else if ( navigator . language ) A = navigator . language . toLowerCase ( ) ; else { return FCKConfig . DefaultLanguage ; } ; if ( A . length >= 5 ) { A = A . substr ( 0 , 5 ) ; if ( this . AvailableLanguages [ A ] ) return A ; } ; if ( A . length >= 2 ) { A = A . substr ( 0 , 2 ) ; if ( this . AvailableLanguages [ A ] ) return A ; } } ; return this . DefaultLanguage ; } , TranslateElements : function ( A , B , C , D ) { var e = A . getElementsByTagName ( B ) ; var E , s ; for ( var i = 0 ; i < e . length ; i ++ ) { if ( ( E = e [ i ] . getAttribute ( 'fckLang' ) ) ) { if ( ( s = FCKLang [ E ] ) ) { if ( D ) s = FCKTools . HTMLEncode ( s ) ; e [ i ] [ C ] = s ; } } } } , TranslatePage : function ( A ) { this . TranslateElements ( A , 'INPUT' , 'value' ) ; this . TranslateElements ( A , 'SPAN' , 'innerHTML' ) ; this . TranslateElements ( A , 'LABEL' , 'innerHTML' ) ; this . TranslateElements ( A , 'OPTION' , 'innerHTML' , true ) ; this . TranslateElements ( A , 'LEGEND' , 'innerHTML' ) ; } , Initialize : function ( ) { if ( this . AvailableLanguages [ FCKConfig . DefaultLanguage ] ) this . DefaultLanguage = FCKConfig . DefaultLanguage ; else this . DefaultLanguage = 'en' ; this . ActiveLanguage = { } ; this . ActiveLanguage . Code = this . GetActiveLanguage ( ) ; this . ActiveLanguage . Name = this . AvailableLanguages [ this . ActiveLanguage . Code ] ; } } ;
var FCKXHtmlEntities = { } ; FCKXHtmlEntities . Initialize = function ( ) { if ( FCKXHtmlEntities . Entities ) return ; var A = '' ; var B , e ; if ( FCKConfig . ProcessHTMLEntities ) { FCKXHtmlEntities . Entities = { '聽' : 'nbsp' , '隆' : 'iexcl' , '垄' : 'cent' , '拢' : 'pound' , '陇' : 'curren' , '楼' : 'yen' , '娄' : 'brvbar' , '搂' : 'sect' , '篓' : 'uml' , '漏' : 'copy' , '陋' : 'ordf' , '芦' : 'laquo' , '卢' : 'not' , '颅' : 'shy' , '庐' : 'reg' , '炉' : 'macr' , '掳' : 'deg' , '卤' : 'plusmn' , '虏' : 'sup2' , '鲁' : 'sup3' , '麓' : 'acute' , '碌' : 'micro' , '露' : 'para' , '路' : 'middot' , '赂' : 'cedil' , '鹿' : 'sup1' , '潞' : 'ordm' , '禄' : 'raquo' , '录' : 'frac14' , '陆' : 'frac12' , '戮' : 'frac34' , '驴' : 'iquest' , '脳' : 'times' , '梅' : 'divide' , '茠' : 'fnof' , '鈥?:' bull ',' 鈥 ? : 'hellip' , '鈥?:' prime ',' 鈥 ? : 'Prime' , '鈥?:' oline ',' 鈦 ? : 'frasl' , '鈩?:' weierp ',' 鈩 ? : 'image' , '鈩?:' real ',' 鈩 ? : 'trade' , '鈩?:' alefsym ',' 鈫 ? : 'larr' , '鈫?:' uarr ',' 鈫 ? : 'rarr' , '鈫?:' darr ',' 鈫 ? : 'harr' , '鈫?:' crarr ',' 鈬 ? : 'lArr' , '鈬?:' uArr ',' 鈬 ? : 'rArr' , '鈬?:' dArr ',' 鈬 ? : 'hArr' , '鈭€' : 'forall' , '鈭?:' part ',' 鈭 ? : 'exist' , '鈭?:' empty ',' 鈭 ? : 'nabla' , '鈭?:' isin ',' 鈭 ? : 'notin' , '鈭?:' ni ',' 鈭 ? : 'prod' , '鈭?:' sum ',' 鈭 ? : 'minus' , '鈭?:' lowast ',' 鈭 ? : 'radic' , '鈭?:' prop ',' 鈭 ? : 'infin' , '鈭?:' ang ',' 鈭 ? : 'and' , '鈭?:' or ',' 鈭 ? : 'cap' , '鈭?:' cup ',' 鈭 ? : 'int' , '鈭?:' there4 ',' 鈭 ? : 'sim' , '鈮?:' cong ',' 鈮 ? : 'asymp' , '鈮?:' ne ',' 鈮 ? : 'equiv' , '鈮?:' le ',' 鈮 ? : 'ge' , '鈯?:' sub ',' 鈯 ? : 'sup' , '鈯?:' nsub ',' 鈯 ? : 'sube' , '鈯?:' supe ',' 鈯 ? : 'oplus' , '鈯?:' otimes ',' 鈯 ? : 'perp' , '鈰?:' sdot ',' \u2308 ':' lceil ',' \u2309 ':' rceil ',' \u230a ':' lfloor ',' \u230b ':' rfloor ',' \u2329 ':' lang ',' \u232a ':' rang ',' 鈼 ? : 'loz' , '鈾?:' spades ',' 鈾 ? : 'clubs' , '鈾?:' hearts ',' 鈾 ? : 'diams' , '"' : 'quot' , '藛' : 'circ' , '藴' : 'tilde' , '鈥?:' ensp ',' 鈥 ? : 'emsp' , '鈥?:' thinsp ',' 鈥 ? : 'zwnj' , '鈥?:' zwj ',' 鈥 ? : 'lrm' , '鈥?:' rlm ',' 鈥 ? : 'ndash' , '鈥?:' mdash ',' 鈥 ? : 'lsquo' , '鈥?:' rsquo ',' 鈥 ? : 'sbquo' , '鈥?:' ldquo ',' 鈥 ? : 'rdquo' , '鈥?:' bdquo ',' 鈥 ? : 'dagger' , '鈥?:' Dagger ',' 鈥 ? : 'permil' , '鈥?:' lsaquo ',' 鈥 ? : 'rsaquo' , '鈧?:' euro '};for (e in FCKXHtmlEntities.Entities) A+=e;if (FCKConfig.IncludeLatinEntities){B={' 脌 ':' Agrave ',' 脕 ':' Aacute ',' 脗 ':' Acirc ',' 脙 ':' Atilde ',' 脛 ':' Auml ',' 脜 ':' Aring ',' 脝 ':' AElig ',' 脟 ':' Ccedil ',' 脠 ':' Egrave ',' 脡 ':' Eacute ',' 脢 ':' Ecirc ',' 脣 ':' Euml ',' 脤 ':' Igrave ',' 脥 ':' Iacute ',' 脦 ':' Icirc ',' 脧 ':' Iuml ',' 脨 ':' ETH ',' 脩 ':' Ntilde ',' 脪 ':' Ograve ',' 脫 ':' Oacute ',' 脭 ':' Ocirc ',' 脮 ':' Otilde ',' 脰 ':' Ouml ',' 脴 ':' Oslash ',' 脵 ':' Ugrave ',' 脷 ':' Uacute ',' 脹 ':' Ucirc ',' 脺 ':' Uuml ',' 脻 ':' Yacute ',' 脼 ':' THORN ',' 脽 ':' szlig ',' 脿 ':' agrave ',' 谩 ':' aacute ',' 芒 ':' acirc ',' 茫 ':' atilde ',' 盲 ':' auml ',' 氓 ':' aring ',' 忙 ':' aelig ',' 莽 ':' ccedil ',' 猫 ':' egrave ',' 茅 ':' eacute ',' 锚 ':' ecirc ',' 毛 ':' euml ',' 矛 ':' igrave ',' 铆 ':' iacute ',' 卯 ':' icirc ',' 茂 ':' iuml ',' 冒 ':' eth ',' 帽 ':' ntilde ',' 貌 ':' ograve ',' 贸 ':' oacute ',' 么 ':' ocirc ',' 玫 ':' otilde ',' 枚 ':' ouml ',' 酶 ':' oslash ',' 霉 ':' ugrave ',' 煤 ':' uacute ',' 没 ':' ucirc ',' 眉 ':' uuml ',' 媒 ':' yacute ',' 镁 ':' thorn ',' 每 ':' yuml ',' 艗 ':' OElig ',' 艙 ':' oelig ',' 艩 ':' Scaron ',' 拧 ':' scaron ',' 鸥 ':' Yuml '};for (e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;};if (FCKConfig.IncludeGreekEntities){B={' 螒 ':' Alpha ',' 螔 ':' Beta ',' 螕 ':' Gamma ',' 螖 ':' Delta ',' 螘 ':' Epsilon ',' 螙 ':' Zeta ',' 螚 ':' Eta ',' 螛 ':' Theta ',' 螜 ':' Iota ',' 螝 ':' Kappa ',' 螞 ':' Lambda ',' 螠 ':' Mu ',' 螡 ':' Nu ',' 螢 ':' Xi ',' 螣 ':' Omicron ',' 螤 ':' Pi ',' 巍 ':' Rho ',' 危 ':' Sigma ',' 韦 ':' Tau ',' 违 ':' Upsilon ',' 桅 ':' Phi ',' 围 ':' Chi ',' 唯 ':' Psi ',' 惟 ':' Omega ',' 伪 ':' alpha ',' 尾 ':' beta ',' 纬 ':' gamma ',' 未 ':' delta ',' 蔚 ':' epsilon ',' 味 ':' zeta ',' 畏 ':' eta ',' 胃 ':' theta ',' 喂 ':' iota ',' 魏 ':' kappa ',' 位 ':' lambda ',' 渭 ':' mu ',' 谓 ':' nu ',' 尉 ':' xi ',' 慰 ':' omicron ',' 蟺 ':' pi ',' 蟻 ':' rho ',' 蟼 ':' sigmaf ',' 蟽 ':' sigma ',' 蟿 ':' tau ',' 蠀 ':' upsilon ',' 蠁 ':' phi ',' 蠂 ':' chi ',' 蠄 ':' psi ',' 蠅 ':' omega ',' \u03d1 ':' thetasym ',' \u03d2 ':' upsih ',' \u03d6 ':' piv '};for (e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;}}else{FCKXHtmlEntities.Entities={};A=' 聽 ';};var C=' [ '+A+' ] ';if (FCKConfig.ProcessNumericEntities) C=' [ ^ - ~ ] | '+C;var D=FCKConfig.AdditionalNumericEntities;if (D&&D.length>0) C+=' | ' + FCKConfig . AdditionalNumericEntities ; FCKXHtmlEntities . Entitie
var FCKXHtml = { } ; FCKXHtml . CurrentJobNum = 0 ; FCKXHtml . GetXHTML = function ( A , B , C ) { FCKDomTools . CheckAndRemovePaddingNode ( FCKTools . GetElementDocument ( A ) , FCKConfig . EnterMode ) ; FCKXHtmlEntities . Initialize ( ) ; this . _NbspEntity = ( FCKConfig . ProcessHTMLEntities ? 'nbsp' : '#160' ) ; var D = FCK . IsDirty ( ) ; FCKXHtml . SpecialBlocks = [ ] ; this . XML = FCKTools . CreateXmlObject ( 'DOMDocument' ) ; this . MainNode = this . XML . appendChild ( this . XML . createElement ( 'xhtml' ) ) ; FCKXHtml . CurrentJobNum ++ ; if ( B ) this . _AppendNode ( this . MainNode , A ) ; else this . _AppendChildNodes ( this . MainNode , A , false ) ; var E = this . _GetMainXmlString ( ) ; this . XML = null ; if ( FCKBrowserInfo . IsSafari ) E = E . replace ( /^<xhtml.*?>/ , '<xhtml>' ) ; E = E . substr ( 7 , E . length - 15 ) . Trim ( ) ; if ( FCKConfig . DocType . length > 0 && FCKRegexLib . HtmlDocType . test ( FCKConfig . DocType ) ) E = E . replace ( FCKRegexLib . SpaceNoClose , '>' ) ; else E = E . replace ( FCKRegexLib . SpaceNoClose , ' />' ) ; if ( FCKConfig . ForceSimpleAmpersand ) E = E . replace ( FCKRegexLib . ForceSimpleAmpersand , '&' ) ; if ( C ) E = FCKCodeFormatter . Format ( E ) ; for ( var i = 0 ; i < FCKXHtml . SpecialBlocks . length ; i ++ ) { var F = new RegExp ( '___FCKsi___' + i ) ; E = E . replace ( F , FCKXHtml . SpecialBlocks [ i ] ) ; } ; E = E . replace ( FCKRegexLib . GeckoEntitiesMarker , '&' ) ; if ( ! D ) FCK . ResetIsDirty ( ) ; FCKDomTools . EnforcePaddingNode ( FCKTools . GetElementDocument ( A ) , FCKConfig . EnterMode ) ; return E ; } ; FCKXHtml . _AppendAttribute = function ( A , B , C ) { try { if ( C == undefined || C == null ) C = '' ; else if ( C . replace ) { if ( FCKConfig . ForceSimpleAmpersand ) C = C . replace ( /&/g , '___FCKAmp___' ) ; C = C . replace ( FCKXHtmlEntities . EntitiesRegex , FCKXHtml _GetEntity ) ; } ; var D = this . XML . createAttribute ( B ) ; D . value = C ; A . attributes . setNamedItem ( D ) ; } catch ( e ) { } } ; FCKXHtml . _AppendChildNodes = function ( A , B , C ) { var D = B . firstChild ; while ( D ) { this . _AppendNode ( A , D ) ; D = D . nextSibling ; } ; if ( C && B . tagName && B . tagName . toLowerCase ( ) != 'pre' ) { FCKDomTools . TrimNode ( A ) ; if ( FCKConfig . FillEmptyBlocks ) { var E = A . lastChild ; if ( E && E . nodeType == 1 && E . nodeName == 'br' ) this . _AppendEntity ( A , this . _NbspEntity ) ; } } ; if ( A . childNodes . length == 0 ) { if ( C && FCKConfig . FillEmptyBlocks ) { this . _AppendEntity ( A , this . _NbspEntity ) ; return A ; } ; var F = A . nodeName ; if ( FCKListsLib . InlineChildReqElements [ F ] ) return null ; if ( ! FCKListsLib . EmptyElements [ F ] ) A . appendChild ( this . XML . createTextNode ( '' ) ) ; } ; return A ; } ; FCKXHtml . _AppendNode = function ( A , B ) { if ( ! B ) return false ; switch ( B . nodeType ) { case 1 : if ( FCKBrowserInfo . IsGecko && B . tagName . toLowerCase ( ) == 'br' && B . parentNode . tagName . toLowerCase ( ) == 'pre' ) { var C = '\r' ; if ( B == B . parentNode . firstChild ) C += '\r' ; return FCKXHtml . _AppendNode ( A , this . XML . createTextNode ( C ) ) ; } ; if ( B . getAttribute ( '_fckfakelement' ) ) return FCKXHtml . _AppendNode ( A , FCK . GetRealElement ( B ) ) ; if ( FCKBrowserInfo . IsGecko && ( B . hasAttribute ( '_moz_editor_bogus_node' ) || B . getAttribute ( 'type' ) == '_moz' ) ) { if ( B . nextSibling ) return false ; else { B . removeAttribute ( '_moz_editor_bogus_node' ) ; B . removeAttribute ( 'type' ) ; } } ; if ( B . getAttribute ( '_fcktemp' ) ) return false ; var D = B . tagName . toLowerCase ( ) ; if ( FCKBrowserInfo . IsIE ) { if ( B . scopeName && B . scopeName != 'HTML' && B . scopeName != 'FCK' ) D = B . scopeName . toLowerCase ( ) + ':' + D ; } else { if ( D . StartsWith ( 'fck:' ) ) D = D . Remove ( 0 , 4 ) ; } ; if ( ! FCKRegexLib . ElementName . test ( D ) ) return false ; if ( B . _fckxhtmljob && B . _fckxhtmljob == FCKXHtml . CurrentJobNum ) return false ; var E = this . XML . createElement ( D ) ; FCKXHtml . _AppendAttributes ( A , B , E , D ) ; B . _fckxhtmljob = FCKXHtml . CurrentJobNum ; var F = FCKXHtml . TagProcessors [ D ] ; if ( F ) E = F ( E , B , A ) ; else E = this . _AppendChildNodes ( E , B , Boolean ( FCKListsLib . NonEmptyBlockElements [ D ] ) ) ; if ( ! E ) return false ; A . appendChild ( E ) ; break ; case 3 : if ( B . parentNode && B . parentNode . nodeName . IEquals ( 'pre' ) ) return this . _AppendTextNode ( A , B . nodeValue ) ; return this . _AppendTextNode ( A , B . nodeValue . ReplaceNewLineChars ( ' ' ) ) ; case 8 : if ( FCKBrowserInfo . IsIE && ! B . innerHTML ) break ; try { A . appendChild ( this . XML . createComment ( B . nodeValue ) ) ; } catch ( e ) { } ; break ; default : A . appendChild ( this . XML . createComment ( "Element not supported - Type: " + B . nodeType + " Name: " + B . nodeName ) ) ; break ; } ; return true ; } ; FCKXHtml . _AppendSpecialItem = function ( A ) { return '___FCKsi___' + FCKXHtml . SpecialBlocks . AddItem ( A ) ; } ; FCKXHtml . _AppendEntity = function ( A , B ) { A . appendChild ( this . XML . createTextNode ( '#?-:' + B + ';' ) ) ; } ; FCKXHtml . _AppendTextNode = function ( A , B
FCKXHtml . _GetMainXmlString = function ( ) { return this . MainNode . xml ; } ; FCKXHtml . _AppendAttributes = function ( A , B , C , D ) { var E = B . attributes , bHasStyle ; for ( var n = 0 ; n < E . length ; n ++ ) { var F = E [ n ] ; if ( F . specified ) { var G = F . nodeName . toLowerCase ( ) ; var H ; if ( G . StartsWith ( '_fck' ) ) continue ; else if ( G == 'style' ) { bHasStyle = true ; continue ; } else if ( G == 'class' ) { H = F . nodeValue . replace ( FCKRegexLib . FCK _Class , '' ) ; if ( H . length == 0 ) continue ; } else if ( G . indexOf ( 'on' ) == 0 ) H = F . nodeValue ; else if ( D == 'body' && G == 'contenteditable' ) continue ; else if ( F . nodeValue === true ) H = G ; else { try { H = B . getAttribute ( G , 2 ) ; } catch ( e ) { } } ; this . _AppendAttribute ( C , G , H || F . nodeValue ) ; } } ; if ( bHasStyle || B . style . cssText . length > 0 ) { var I = FCKTools . ProtectFormStyles ( B ) ; var J = B . style . cssText . replace ( FCKRegexLib . StyleProperties , FCKTools . ToLowerCase ) ; FCKTools . RestoreFormStyles ( B , I ) ; this . _AppendAttribute ( C , 'style' , J ) ; } } ; FCKXHtml . TagProcessors [ 'div' ] = function ( A , B ) { if ( B . align . length > 0 ) FCKXHtml . _AppendAttribute ( A , 'align' , B . align ) ; A = FCKXHtml . _AppendChildNodes ( A , B , true ) ; return A ; } ; FCKXHtml . TagProcessors [ 'font' ] = function ( A , B ) { if ( A . attributes . length == 0 ) A = FCKXHtml . XML . createDocumentFragment ( ) ; A = FCKXHtml . _AppendChildNodes ( A , B ) ; return A ; } ; FCKXHtml . TagProcessors [ 'form' ] = function ( A , B ) { if ( B . acceptCharset && B . acceptCharset . length > 0 && B . acceptCharset != 'UNKNOWN' ) FCKXHtml . _AppendAttribute ( A , 'accept-charset' , B . acceptCharset ) ; var C = B . attributes [ 'name' ] ; if ( C && C . value . length > 0 ) FCKXHtml . _AppendAttribute ( A , 'name' , C . value ) ; A = FCKXHtml . _AppendChildNodes ( A , B , true ) ; return A ; } ; FCKXHtml . TagProcessors [ 'input' ] = function ( A , B ) { if ( B . name ) FCKXHtml . _AppendAttribute ( A , 'name' , B . name ) ; if ( B . value && ! A . attributes . getNamedItem ( 'value' ) ) FCKXHtml . _AppendAttribute ( A , 'value' , B . value ) ; if ( ! A . attributes . getNamedItem ( 'type' ) ) FCKXHtml . _AppendAttribute ( A , 'type' , 'text' ) ; return A ; } ; FCKXHtml . TagProcessors [ 'label' ] = function ( A , B ) { if ( B . htmlFor . length > 0 ) FCKXHtml . _AppendAttribute ( A , 'for' , B . htmlFor ) ; A = FCKXHtml . _AppendChildNodes ( A , B ) ; return A ; } ; FCKXHtml . TagProcessors [ 'map' ] = function ( A , B ) { if ( ! A . attributes . getNamedItem ( 'name' ) ) { var C = B . name ; if ( C ) FCKXHtml . _AppendAttribute ( A , 'name' , C ) ; } ; A = FCKXHtml . _AppendChildNodes ( A , B , true ) ; return A ; } ; FCKXHtml . TagProcessors [ 'meta' ] = function ( A , B ) { var C = A . attributes . getNamedItem ( 'http-equiv' ) ; if ( C == null || C . value . length == 0 ) { var D = B . outerHTML . match ( FCKRegexLib . MetaHttpEquiv ) ; if ( D ) { D = D [ 1 ] ; FCKXHtml . _AppendAttribute ( A , 'http-equiv' , D ) ; } } ; return A ; } ; FCKXHtml . TagProcessors [ 'option' ] = function ( A , B ) { if ( B . selected && ! A . attributes . getNamedItem ( 'selected' ) ) FCKXHtml . _AppendAttribute ( A , 'selected' , 'selected' ) ; A = FCKXHtml . _AppendChildNodes ( A , B ) ; return A ; } ; FCKXHtml . TagProcessors [ 'textarea' ] = FCKXHtml . TagProcessors [ 'select' ] = function ( A , B ) { if ( B . name ) FCKXHtml . _AppendAttribute ( A , 'name' , B . name ) ; A = FCKXHtml . _AppendChildNodes ( A , B ) ; return A ; } ;
var FCKCodeFormatter = { } ; FCKCodeFormatter . Init = function ( ) { var A = this . Regex = { } ; A . BlocksOpener = /\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi ; A . BlocksCloser = /\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi ; A . NewLineTags = /\<(BR|HR)[^\>]*\>/gi ; A . MainTags = /\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi ; A . LineSplitter = /\s*\n+\s*/g ; A . IncreaseIndent = /^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \/\>]/i ; A . DecreaseIndent = /^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \>]/i ; A . FormatIndentatorRemove = new RegExp ( '^' + FCKConfig . FormatIndentator ) ; A . ProtectedTags = /(<PRE[^>]*>)([\s\S]*?)(<\/PRE>)/gi ; } ; FCKCodeFormatter . _ProtectData = function ( A , B , C , D ) { return B + '___FCKpd___' + FCKCodeFormatter . ProtectedData . AddItem ( C ) + D ; } ; FCKCodeFormatter . Format = function ( A ) { if ( ! this . Regex ) this . Init ( ) ; FCKCodeFormatter . ProtectedData = [ ] ; var B = A . replace ( this . Regex . ProtectedTags , FCKCodeFormatter . _ProtectData ) ; B = B . replace ( this . Regex . BlocksOpener , '\n$&' ) ; B = B . replace ( this . Regex . BlocksCloser , '$&\n' ) ; B = B . replace ( this . Regex . NewLineTags , '$&\n' ) ; B = B . replace ( this . Regex . MainTags , '\n$&\n' ) ; var C = '' ; var D = B . split ( this . Regex . LineSplitter ) ; B = '' ; for ( var i = 0 ; i < D . length ; i ++ ) { var E = D [ i ] ; if ( E . length == 0 ) continue ; if ( this . Regex . DecreaseIndent . test ( E ) ) C = C . replace ( this . Regex . FormatIndentatorRemove , '' ) ; B += C + E + '\n' ; if ( this . Regex . IncreaseIndent . test ( E ) ) C += FCKConfig . FormatIndentator ; } ; for ( var j = 0 ; j < FCKCodeFormatter . ProtectedData . length ; j ++ ) { var F = new RegExp ( '___FCKpd___' + j ) ; B = B . replace ( F , FCKCodeFormatter . ProtectedData [ j ] . replace ( /\$/g , '$$$$' ) ) ; } ; return B . Trim ( ) ; } ;
var FCKUndo = { } ; FCKUndo . SavedData = [ ] ; FCKUndo . CurrentIndex = - 1 ; FCKUndo . TypesCount = 0 ; FCKUndo . Changed = false ; FCKUndo . MaxTypes = 25 ; FCKUndo . Typing = false ; FCKUndo . SaveLocked = false ; FCKUndo . _GetBookmark = function ( ) { FCKSelection . Restore ( ) ; var A = new FCKDomRange ( FCK . EditorWindow ) ; try { A . MoveToSelection ( ) ; } catch ( e ) { return null ; } ; if ( FCKBrowserInfo . IsIE ) { var B = A . CreateBookmark ( ) ; var C = FCK . EditorDocument . body . innerHTML ; A . MoveToBookmark ( B ) ; return [ B , C ] ; } ; return A . CreateBookmark2 ( ) ; } ; FCKUndo . _SelectBookmark = function ( A ) { if ( ! A ) return ; var B = new FCKDomRange ( FCK . EditorWindow ) ; if ( A instanceof Object ) { if ( FCKBrowserInfo . IsIE ) B . MoveToBookmark ( A [ 0 ] ) ; else B . MoveToBookmark2 ( A ) ; try { B . Select ( ) ; } catch ( e ) { B . MoveToPosition ( FCK . EditorDocument . body , 4 ) ; B . Select ( ) ; } } } ; FCKUndo . _CompareCursors = function ( A , B ) { for ( var i = 0 ; i < Math . min ( A . length , B . length ) ; i ++ ) { if ( A [ i ] < B [ i ] ) return - 1 ; else if ( A [ i ] > B [ i ] ) return 1 ; } ; if ( A . length < B . length ) return - 1 ; else if ( A . length > B . length ) return 1 ; return 0 ; } ; FCKUndo . _CheckIsBookmarksEqual = function ( A , B ) { if ( ! ( A && B ) ) return false ; if ( FCKBrowserInfo . IsIE ) { var C = A [ 1 ] . search ( A [ 0 ] . StartId ) ; var D = B [ 1 ] . search ( B [ 0 ] . StartId ) ; var E = A [ 1 ] . search ( A [ 0 ] . EndId ) ; var F = B [ 1 ] . search ( B [ 0 ] . EndId ) ; return C == D && E == F ; } else { return this . _CompareCursors ( A . Start , B . Start ) == 0 && this . _CompareCursors ( A . End , B . End ) == 0 ; } } ; FCKUndo . SaveUndoStep = function ( ) { if ( FCK . EditMode != 0 || this . SaveLocked ) return ; if ( this . SavedData . length ) this . Changed = true ; var A = FCK . EditorDocument . body . innerHTML ; var B = this . _GetBookmark ( ) ; this . SavedData = this . SavedData . slice ( 0 , this . CurrentIndex + 1 ) ; if ( this . CurrentIndex > 0 && A == this . SavedData [ this . CurrentIndex ] [ 0 ] && this . _CheckIsBookmarksEqual ( B , this . SavedData [ this . CurrentIndex ] [ 1 ] ) ) return ; else if ( this . CurrentIndex == 0 && this . SavedData . length && A == this . SavedData [ 0 ] [ 0 ] ) { this . SavedData [ 0 ] [ 1 ] = B ; return ; } ; if ( this . CurrentIndex + 1 >= FCKConfig . MaxUndoLevels ) this . SavedData . shift ( ) ; else this . CurrentIndex ++ ; this . SavedData [ this . CurrentIndex ] = [ A , B ] ; FCK . Events . FireEvent ( "OnSelectionChange" ) ; } ; FCKUndo . CheckUndoState = function ( ) { return ( this . Changed || this . CurrentIndex > 0 ) ; } ; FCKUndo . CheckRedoState = function ( ) { return ( this . CurrentIndex < ( this . SavedData . length - 1 ) ) ; } ; FCKUndo . Undo = function ( ) { if ( this . CheckUndoState ( ) ) { if ( this . CurrentIndex == ( this . SavedData . length - 1 ) ) { this . SaveUndoStep ( ) ; } ; this . _ApplyUndoLevel ( -- this . CurrentIndex ) ; FCK . Events . FireEvent ( "OnSelectionChange" ) ; } } ; FCKUndo . Redo = function ( ) { if ( this . CheckRedoState ( ) ) { this . _ApplyUndoLevel ( ++ this . CurrentIndex ) ; FCK . Events . FireEvent ( "OnSelectionChange" ) ; } } ; FCKUndo . _ApplyUndoLevel = function ( A ) { var B = this . SavedData [ A ] ; if ( ! B ) return ; if ( FCKBrowserInfo . IsIE ) { if ( B [ 1 ] && B [ 1 ] [ 1 ] ) FCK . SetInnerHtml ( B [ 1 ] [ 1 ] ) ; else FCK . SetInnerHtml ( B [ 0 ] ) ; } else FCK . EditorDocument . body . innerHTML = B [ 0 ] ; this . _SelectBookmark ( B [ 1 ] ) ; this . TypesCount = 0 ; this . Changed = false ; this . Typing = false ; } ;
var FCKEditingArea = function ( A ) { this . TargetElement = A ; this . Mode = 0 ; if ( FCK . IECleanup ) FCK . IECleanup . AddItem ( this , FCKEditingArea _Cleanup ) ; } ; FCKEditingArea . prototype . Start = function ( A , B ) { var C = this . TargetElement ; var D = FCKTools . GetElementDocument ( C ) ; while ( C . firstChild ) C . removeChild ( C . firstChild ) ; if ( this . Mode == 0 ) { if ( FCK _IS _CUSTOM _DOMAIN ) A = '<script>document.domain="' + FCK _RUNTIME _DOMAIN + '";</script>' + A ; if ( FCKBrowserInfo . IsIE ) A = A . replace ( /(<base[^>]*?)\s*\/?>(?!\s*<\/base>)/gi , '$1></base>' ) ; else if ( ! B ) { var E = A . match ( FCKRegexLib . BeforeBody ) ; var F = A . match ( FCKRegexLib . AfterBody ) ; if ( E && F ) { var G = A . substr ( E [ 1 ] . length , A . length - E [ 1 ] . length - F [ 1 ] . length ) ; A = E [ 1 ] + ' ' + F [ 1 ] ; if ( FCKBrowserInfo . IsGecko && ( G . length == 0 || FCKRegexLib . EmptyParagraph . test ( G ) ) ) G = '<br type="_moz">' ; this . _BodyHTML = G ; } else this . _BodyHTML = A ; } ; var H = this . IFrame = D . createElement ( 'iframe' ) ; var I = '<script type="text/javascript" _fcktemp="true">window.onerror=function(){return true;};</script>' ; H . frameBorder = 0 ; H . style . width = H . style . height = '100%' ; if ( FCK _IS _CUSTOM _DOMAIN && FCKBrowserInfo . IsIE ) { window . _FCKHtmlToLoad = A . replace ( /<head>/i , '<head>' + I ) ; H . src = 'javascript:void( (function(){document.open() ;document.domain="' + document . domain + '" ;document.write( window.parent._FCKHtmlToLoad );document.close() ;window.parent._FCKHtmlToLoad = null ;})() )' ; } else if ( ! FCKBrowserInfo . IsGecko ) { H . src = 'javascript:void(0)' ; } ; C . appendChild ( H ) ; this . Window = H . contentWindow ; if ( ! FCK _IS _CUSTOM _DOMAIN || ! FCKBrowserInfo . IsIE ) { var J = this . Window . document ; J . open ( ) ; J . write ( A . replace ( /<head>/i , '<head>' + I ) ) ; J . close ( ) ; } ; if ( FCKBrowserInfo . IsAIR ) FCKAdobeAIR . EditingArea _Start ( J , A ) ; if ( FCKBrowserInfo . IsGecko10 && ! B ) { this . Start ( A , true ) ; return ; } ; if ( H . readyState && H . readyState != 'completed' ) { var K = this ; setTimeout ( function ( ) { try { K . Window . document . documentElement . doScroll ( "left" ) ; } catch ( e ) { setTimeout ( arguments . callee , 0 ) ; return ; } ; K . Window . _FCKEditingArea = K ; FCKEditingArea _CompleteStart . call ( K . Window ) ; } , 0 ) ; } else { this . Window . _FCKEditingArea = this ; if ( FCKBrowserInfo . IsGecko10 ) this . Window . setTimeout ( FCKEditingArea _CompleteStart , 500 ) ; else FCKEditingArea _CompleteStart . call ( this . Window ) ; } } else { var L = this . Textarea = D . createElement ( 'textarea' ) ; L . className = 'SourceField' ; L . dir = 'ltr' ; FCKDomTools . SetElementStyles ( L , { width : '100%' , height : '100%' , border : 'none' , resize : 'none' , outline : 'none' } ) ; C . appendChild ( L ) ; L . value = A ; FCKTools . RunFunction ( this . OnLoad ) ; } } ; function FCKEditingArea _CompleteStart ( ) { if ( ! this . document . body ) { this . setTimeout ( FCKEditingArea _CompleteStart , 50 ) ; return ; } ; var A = this . _FCKEditingArea ; A . Document = A . Window . document ; A . MakeEditable ( ) ; FCKTools . RunFunction ( A . OnLoad ) ; } ; FCKEditingArea . prototype . MakeEditable = function ( ) { var A = this . Document ; if ( FCKBrowserInfo . IsIE ) { A . body . disabled = true ; A . body . contentEditable = true ; A . body . removeAttribute ( "disabled" ) ; } else { try { A . body . spellcheck = ( this . FFSpellChecker !== false ) ; if ( this . _BodyHTML ) { A . body . innerHTML = this . _BodyHTML ; A . body . offsetLeft ; this . _BodyHTML = null ; } ; A . designMode = 'on' ; A . execCommand ( 'enableObjectResizing' , false , ! FCKConfig . DisableObjectResizing ) ; A . execCommand ( 'enableInlineTableEditing' , false , ! FCKConfig . DisableFFTableHandles ) ; } catch ( e ) { FCKTools . AddEventListener ( this . Window . frameElement , 'DOMAttrModified' , FCKEditingArea _Document _AttributeNodeModified ) ; } } } ; function FCKEditingArea _Document _AttributeNodeModified ( A ) { var B = A . currentTarget . contentWindow . _FCKEditingArea ; if ( B . _timer ) window . clearTimeout ( B . _timer ) ; B . _timer = FCKTools . SetTimeout ( FCKEditingArea _MakeEditableByMutation , 1000 , B ) ; } ; function FCKEditingArea _MakeEditableByMutation ( ) { delete this . _timer ; FCKTools . RemoveEventListener ( this . Window . frameElement , 'DOMAttrModified' , FCKEditingArea _Document _AttributeNodeModified ) ; this . MakeEditable ( ) ; } ; FCKEditingArea . prototype . Focus = function ( ) { try { if ( this . Mode == 0 ) { if ( FCKBrowserInfo . IsIE ) this . _FocusIE ( ) ; else this . Window . focus ( ) ; } else { var A = FCKTools . GetElementDocument ( this . Textarea ) ; if ( ( ! A . hasFocus || A . hasFocus ( ) ) && A . activeElement == this . Textarea ) return ; this . Textarea . focus ( ) ; } } catch ( e ) { } } ; FCKEditingArea . prototype . _FocusIE = function ( ) { this . Document . body . setActive ( ) ; this . Window . focus ( ) ; var A = this . Docum
var FCKKeystrokeHandler = function ( A ) { this . Keystrokes = { } ; this . CancelCtrlDefaults = ( A !== false ) ; } ; FCKKeystrokeHandler . prototype . AttachToElement = function ( A ) { FCKTools . AddEventListenerEx ( A , 'keydown' , _FCKKeystrokeHandler _OnKeyDown , this ) ; if ( FCKBrowserInfo . IsGecko10 || FCKBrowserInfo . IsOpera || ( FCKBrowserInfo . IsGecko && FCKBrowserInfo . IsMac ) ) FCKTools . AddEventListenerEx ( A , 'keypress' , _FCKKeystrokeHandler _OnKeyPress , this ) ; } ; FCKKeystrokeHandler . prototype . SetKeystrokes = function ( ) { for ( var i = 0 ; i < arguments . length ; i ++ ) { var A = arguments [ i ] ; if ( ! A ) continue ; if ( typeof ( A [ 0 ] ) == 'object' ) this . SetKeystrokes . apply ( this , A ) ; else { if ( A . length == 1 ) delete this . Keystrokes [ A [ 0 ] ] ; else this . Keystrokes [ A [ 0 ] ] = A [ 1 ] === true ? true : A ; } } } ; function _FCKKeystrokeHandler _OnKeyDown ( A , B ) { var C = A . keyCode || A . which ; var D = 0 ; if ( A . ctrlKey || A . metaKey ) D += CTRL ; if ( A . shiftKey ) D += SHIFT ; if ( A . altKey ) D += ALT ; var E = C + D ; var F = B . _CancelIt = false ; var G = B . Keystrokes [ E ] ; if ( G ) { if ( G === true || ! ( B . OnKeystroke && B . OnKeystroke . apply ( B , G ) ) ) return true ; F = true ; } ; if ( F || ( B . CancelCtrlDefaults && D == CTRL && ( C < 33 || C > 40 ) ) ) { B . _CancelIt = true ; if ( A . preventDefault ) return A . preventDefault ( ) ; A . returnValue = false ; A . cancelBubble = true ; return false ; } ; return true ; } ; function _FCKKeystrokeHandler _OnKeyPress ( A , B ) { if ( B . _CancelIt ) { if ( A . preventDefault ) return A . preventDefault ( ) ; return false ; } ; return true ; } ;
FCK . DTD = ( function ( ) { var X = FCKTools . Merge ; var A , L , J , M , N , O , D , H , P , K , Q , F , G , C , B , E , I ; A = { isindex : 1 , fieldset : 1 } ; B = { input : 1 , button : 1 , select : 1 , textarea : 1 , label : 1 } ; C = X ( { a : 1 } , B ) ; D = X ( { iframe : 1 } , C ) ; E = { hr : 1 , ul : 1 , menu : 1 , div : 1 , blockquote : 1 , noscript : 1 , table : 1 , center : 1 , address : 1 , dir : 1 , pre : 1 , h5 : 1 , dl : 1 , h4 : 1 , noframes : 1 , h6 : 1 , ol : 1 , h1 : 1 , h3 : 1 , h2 : 1 } ; F = { ins : 1 , del : 1 , script : 1 } ; G = X ( { b : 1 , acronym : 1 , bdo : 1 , 'var' : 1 , '#' : 1 , abbr : 1 , code : 1 , br : 1 , i : 1 , cite : 1 , kbd : 1 , u : 1 , strike : 1 , s : 1 , tt : 1 , strong : 1 , q : 1 , samp : 1 , em : 1 , dfn : 1 , span : 1 } , F ) ; H = X ( { sub : 1 , img : 1 , object : 1 , sup : 1 , basefont : 1 , map : 1 , applet : 1 , font : 1 , big : 1 , small : 1 } , G ) ; I = X ( { p : 1 } , H ) ; J = X ( { iframe : 1 } , H , B ) ; K = { img : 1 , noscript : 1 , br : 1 , kbd : 1 , center : 1 , button : 1 , basefont : 1 , h5 : 1 , h4 : 1 , samp : 1 , h6 : 1 , ol : 1 , h1 : 1 , h3 : 1 , h2 : 1 , form : 1 , font : 1 , '#' : 1 , select : 1 , menu : 1 , ins : 1 , abbr : 1 , label : 1 , code : 1 , table : 1 , script : 1 , cite : 1 , input : 1 , iframe : 1 , strong : 1 , textarea : 1 , noframes : 1 , big : 1 , small : 1 , span : 1 , hr : 1 , sub : 1 , bdo : 1 , 'var' : 1 , div : 1 , object : 1 , sup : 1 , strike : 1 , dir : 1 , map : 1 , dl : 1 , applet : 1 , del : 1 , isindex : 1 , fieldset : 1 , ul : 1 , b : 1 , acronym : 1 , a : 1 , blockquote : 1 , i : 1 , u : 1 , s : 1 , tt : 1 , address : 1 , q : 1 , pre : 1 , p : 1 , em : 1 , dfn : 1 } ; L = X ( { a : 1 } , J ) ; M = { tr : 1 } ; N = { '#' : 1 } ; O = X ( { param : 1 } , K ) ; P = X ( { form : 1 } , A , D , E , I ) ; Q = { li : 1 } ; return { col : { } , tr : { td : 1 , th : 1 } , img : { } , colgroup : { col : 1 } , noscript : P , td : P , br : { } , th : P , center : P , kbd : L , button : X ( I , E ) , basefont : { } , h5 : L , h4 : L , samp : L , h6 : L , ol : Q , h1 : L , h3 : L , option : N , h2 : L , form : X ( A , D , E , I ) , select : { optgroup : 1 , option : 1 } , font : J , ins : P , menu : Q , abbr : L , label : L , table : { thead : 1 , col : 1 , tbody : 1 , tr : 1 , colgroup : 1 , caption : 1 , tfoot : 1 } , code : L , script : N , tfoot : M , cite : L , li : P , input : { } , iframe : P , strong : J , textarea : N , noframes : P , big : J , small : J , span : J , hr : { } , dt : L , sub : J , optgroup : { option : 1 } , param : { } , bdo : L , 'var' : J , div : P , object : O , sup : J , dd : P , strike : J , area : { } , dir : Q , map : X ( { area : 1 , form : 1 , p : 1 } , A , F , E ) , applet : O , dl : { dt : 1 , dd : 1 } , del : P , isindex : { } , fieldset : X ( { legend : 1 } , K ) , thead : M , ul : Q , acronym : L , b : J , a : J , blockquote : P , caption : L , i : J , u : J , tbody : M , s : L , address : X ( D , I ) , tt : J , legend : L , q : L , pre : X ( G , C ) , p : L , em : J , dfn : L } ; } ) ( ) ;
var FCKStyle = function ( A ) { this . Element = ( A . Element || 'span' ) . toLowerCase ( ) ; this . _StyleDesc = A ; } ; FCKStyle . prototype = { GetType : function ( ) { var A = this . GetType _$ ; if ( A != undefined ) return A ; var B = this . Element ; if ( B == '#' || FCKListsLib . StyleBlockElements [ B ] ) A = 0 ; else if ( FCKListsLib . StyleObjectElements [ B ] ) A = 2 ; else A = 1 ; return ( this . GetType _$ = A ) ; } , ApplyToSelection : function ( A ) { var B = new FCKDomRange ( A ) ; B . MoveToSelection ( ) ; this . ApplyToRange ( B , true ) ; } , ApplyToRange : function ( A , B , C ) { switch ( this . GetType ( ) ) { case 0 : this . ApplyToRange = this . _ApplyBlockStyle ; break ; case 1 : this . ApplyToRange = this . _ApplyInlineStyle ; break ; default : return ; } ; this . ApplyToRange ( A , B , C ) ; } , ApplyToObject : function ( A ) { if ( ! A ) return ; this . BuildElement ( null , A ) ; } , RemoveFromSelection : function ( A ) { var B = new FCKDomRange ( A ) ; B . MoveToSelection ( ) ; this . RemoveFromRange ( B , true ) ; } , RemoveFromRange : function ( A , B , C ) { var D ; var E = this . _GetAttribsForComparison ( ) ; var F = this . _GetOverridesForComparison ( ) ; if ( A . CheckIsCollapsed ( ) ) { var D = A . CreateBookmark ( true ) ; var H = A . GetBookmarkNode ( D , true ) ; var I = new FCKElementPath ( H . parentNode ) ; var J = [ ] ; var K = ! FCKDomTools . GetNextSibling ( H ) ; var L = K || ! FCKDomTools . GetPreviousSibling ( H ) ; var M ; var N = - 1 ; for ( var i = 0 ; i < I . Elements . length ; i ++ ) { var O = I . Elements [ i ] ; if ( this . CheckElementRemovable ( O ) ) { if ( L && ! FCKDomTools . CheckIsEmptyElement ( O , function ( el ) { return ( el != H ) ; } ) ) { M = O ; N = J . length - 1 ; } else { var P = O . nodeName . toLowerCase ( ) ; if ( P == this . Element ) { for ( var Q in E ) { if ( FCKDomTools . HasAttribute ( O , Q ) ) { switch ( Q ) { case 'style' : this . _RemoveStylesFromElement ( O ) ; break ; case 'class' : if ( FCKDomTools . GetAttributeValue ( O , Q ) != this . GetFinalAttributeValue ( Q ) ) continue ; default : FCKDomTools . RemoveAttribute ( O , Q ) ; } } } } ; this . _RemoveOverrides ( O , F [ P ] ) ; if ( this . GetType ( ) == 1 ) this . _RemoveNoAttribElement ( O ) ; } } else if ( L ) J . push ( O ) ; L = L && ( ( K && ! FCKDomTools . GetNextSibling ( O ) ) || ( ! K && ! FCKDomTools . GetPreviousSibling ( O ) ) ) ; if ( M && ( ! L || ( i == I . Elements . length - 1 ) ) ) { var R = FCKDomTools . RemoveNode ( H ) ; for ( var j = 0 ; j <= N ; j ++ ) { var S = FCKDomTools . CloneElement ( J [ j ] ) ; S . appendChild ( R ) ; R = S ; } ; if ( K ) FCKDomTools . InsertAfterNode ( M , R ) ; else M . parentNode . insertBefore ( R , M ) ; L = false ; M = null ; } } ; if ( B ) A . SelectBookmark ( D ) ; if ( C ) A . MoveToBookmark ( D ) ; return ; } ; A . Expand ( 'inline_elements' ) ; D = A . CreateBookmark ( true ) ; var T = A . GetBookmarkNode ( D , true ) ; var U = A . GetBookmarkNode ( D , false ) ; A . Release ( true ) ; var I = new FCKElementPath ( T ) ; var X = I . Elements ; var O ; for ( var i = 1 ; i < X . length ; i ++ ) { O = X [ i ] ; if ( O == I . Block || O == I . BlockLimit ) break ; if ( this . CheckElementRemovable ( O ) ) FCKDomTools . BreakParent ( T , O , A ) ; } ; I = new FCKElementPath ( U ) ; X = I . Elements ; for ( var i = 1 ; i < X . length ; i ++ ) { O = X [ i ] ; if ( O == I . Block || O == I . BlockLimit ) break ; b = O . nodeName . toLowerCase ( ) ; if ( this . CheckElementRemovable ( O ) ) FCKDomTools . BreakParent ( U , O , A ) ; } ; var Z = FCKDomTools . GetNextSourceNode ( T , true ) ; while ( Z ) { var a = FCKDomTools . GetNextSourceNode ( Z ) ; if ( Z . nodeType == 1 ) { var b = Z . nodeName . toLowerCase ( ) ; var c = ( b == this . Element ) ; if ( c ) { for ( var Q in E ) { if ( FCKDomTools . HasAttribute ( Z , Q ) ) { switch ( Q ) { case 'style' : this . _RemoveStylesFromElement ( Z ) ; break ; case 'class' : if ( FCKDomTools . GetAttributeValue ( Z , Q ) != this . GetFinalAttributeValue ( Q ) ) continue ; default : FCKDomTools . RemoveAttribute ( Z , Q ) ; } } } } else c = ! ! F [ b ] ; if ( c ) { this . _RemoveOverrides ( Z , F [ b ] ) ; this . _RemoveNoAttribElement ( Z ) ; } } ; if ( a == U ) break ; Z = a ; } ; this . _FixBookmarkStart ( T ) ; if ( B ) A . SelectBookmark ( D ) ; if ( C ) A . MoveToBookmark ( D ) ; } , CheckElementRemovable : function ( A , B ) { if ( ! A ) return false ; var C = A . nodeName . toLowerCase ( ) ; if ( C == this . Element ) { if ( ! B && ! FCKDomTools . HasAttributes ( A ) ) return true ; var D = this . _GetAttribsForComparison ( ) ; var E = ( D . _length == 0 ) ; for ( var F in D ) { if ( F == '_length' ) continue ; if ( this . _CompareAttributeValues ( F , FCKDomTools . GetAttributeValue ( A , F ) , ( this . GetFinalAttributeValue ( F ) || '' ) ) ) { E = true ; if ( ! B ) break ; } else { E = false ; if ( B ) return false ; } } ; if ( E ) return true ; } ; var G = this . _GetOverridesForComparison ( ) [ C ] ; if ( G ) { if ( ! ( D = G . Attributes ) ) return true ; for ( var i = 0 ; i < D . length ; i ++ ) { var H = D [ i ] [ 0 ] ; if ( FCKDomTools . HasAttribute ( A , H ) ) { var I = D [ i ] [ 1 ] ; if ( I == null || ( typeof I == 'string' && FCKDomTools . GetAttributeValue ( A , H ) == I ) || I . test ( FCKDomTools . GetAttributeValue ( A , H ) ) ) return true ; } } } ; return false ; } ,
var FCKStyles = FCK . Styles = { _Callbacks : { } , _ObjectStyles : { } , ApplyStyle : function ( A ) { if ( typeof A == 'string' ) A = this . GetStyles ( ) [ A ] ; if ( A ) { if ( A . GetType ( ) == 2 ) A . ApplyToObject ( FCKSelection . GetSelectedElement ( ) ) ; else A . ApplyToSelection ( FCK . EditorWindow ) ; FCK . Events . FireEvent ( 'OnSelectionChange' ) ; } } , RemoveStyle : function ( A ) { if ( typeof A == 'string' ) A = this . GetStyles ( ) [ A ] ; if ( A ) { A . RemoveFromSelection ( FCK . EditorWindow ) ; FCK . Events . FireEvent ( 'OnSelectionChange' ) ; } } , AttachStyleStateChange : function ( A , B , C ) { var D = this . _Callbacks [ A ] ; if ( ! D ) D = this . _Callbacks [ A ] = [ ] ; D . push ( [ B , C ] ) ; } , CheckSelectionChanges : function ( ) { var A = FCKSelection . GetBoundaryParentElement ( true ) ; if ( ! A ) return ; var B = new FCKElementPath ( A ) ; var C = this . GetStyles ( ) ; for ( var D in C ) { var E = this . _Callbacks [ D ] ; if ( E ) { var F = C [ D ] ; var G = F . CheckActive ( B ) ; if ( G != ( F . _LastState || null ) ) { F . _LastState = G ; for ( var i = 0 ; i < E . length ; i ++ ) { var H = E [ i ] [ 0 ] ; var I = E [ i ] [ 1 ] ; H . call ( I || window , D , G ) ; } } } } } , CheckStyleInSelection : function ( A ) { return false ; } , _GetRemoveFormatTagsRegex : function ( ) { var A = new RegExp ( '^(?:' + FCKConfig . RemoveFormatTags . replace ( /,/g , '|' ) + ')$' , 'i' ) ; return ( this . _GetRemoveFormatTagsRegex = function ( ) { return A ; } ) && A ; } , RemoveAll : function ( ) { var A = new FCKDomRange ( FCK . EditorWindow ) ; A . MoveToSelection ( ) ; if ( A . CheckIsCollapsed ( ) ) return ; A . Expand ( 'inline_elements' ) ; var B = A . CreateBookmark ( true ) ; var C = A . GetBookmarkNode ( B , true ) ; var D = A . GetBookmarkNode ( B , false ) ; A . Release ( true ) ; var E = this . _GetRemoveFormatTagsRegex ( ) ; var F = new FCKElementPath ( C ) ; var G = F . Elements ; var H ; for ( var i = 1 ; i < G . length ; i ++ ) { H = G [ i ] ; if ( H == F . Block || H == F . BlockLimit ) break ; if ( E . test ( H . nodeName ) ) FCKDomTools . BreakParent ( C , H , A ) ; } ; F = new FCKElementPath ( D ) ; G = F . Elements ; for ( var i = 1 ; i < G . length ; i ++ ) { H = G [ i ] ; if ( H == F . Block || H == F . BlockLimit ) break ; elementName = H . nodeName . toLowerCase ( ) ; if ( E . test ( H . nodeName ) ) FCKDomTools . BreakParent ( D , H , A ) ; } ; var I = FCKDomTools . GetNextSourceNode ( C , true , 1 ) ; while ( I ) { if ( I == D ) break ; var J = FCKDomTools . GetNextSourceNode ( I , false , 1 ) ; if ( E . test ( I . nodeName ) ) FCKDomTools . RemoveNode ( I , true ) ; else FCKDomTools . RemoveAttributes ( I , FCKConfig . RemoveAttributesArray ) ; I = J ; } ; A . SelectBookmark ( B ) ; FCK . Events . FireEvent ( 'OnSelectionChange' ) ; } , GetStyle : function ( A ) { return this . GetStyles ( ) [ A ] ; } , GetStyles : function ( ) { var A = this . _GetStyles ; if ( ! A ) { A = this . _GetStyles = FCKTools . Merge ( this . _LoadStylesCore ( ) , this . _LoadStylesCustom ( ) , this . _LoadStylesXml ( ) ) ; } ; return A ; } , CheckHasObjectStyle : function ( A ) { return ! ! this . _ObjectStyles [ A ] ; } , _LoadStylesCore : function ( ) { var A = { } ; var B = FCKConfig . CoreStyles ; for ( var C in B ) { var D = A [ '_FCK_' + C ] = new FCKStyle ( B [ C ] ) ; D . IsCore = true ; } ; return A ; } , _LoadStylesCustom : function ( ) { var A = { } ; var B = FCKConfig . CustomStyles ; if ( B ) { for ( var C in B ) { var D = A [ C ] = new FCKStyle ( B [ C ] ) ; D . Name = C ; } } ; return A ; } , _LoadStylesXml : function ( ) { var A = { } ; var B = FCKConfig . StylesXmlPath ; if ( ! B || B . length == 0 ) return A ; var C = new FCKXml ( ) ; C . LoadUrl ( B ) ; var D = FCKXml . TransformToObject ( C . SelectSingleNode ( 'Styles' ) ) ; var E = D . $Style ; if ( ! E ) return A ; for ( var i = 0 ; i < E . length ; i ++ ) { var F = E [ i ] ; var G = ( F . element || '' ) . toLowerCase ( ) ; if ( G . length == 0 ) throw ( 'The element name is required. Error loading "' + B + '"' ) ; var H = { Element : G , Attributes : { } , Styles : { } , Overrides : [ ] } ; var I = F . $Attribute || [ ] ; for ( var j = 0 ; j < I . length ; j ++ ) { H . Attributes [ I [ j ] . name ] = I [ j ] . value ; } ; var J = F . $Style || [ ] ; for ( j = 0 ; j < J . length ; j ++ ) { H . Styles [ J [ j ] . name ] = J [ j ] . value ; } ; var K = F . $Override ; if ( K ) { for ( j = 0 ; j < K . length ; j ++ ) { var L = K [ j ] ; var M = { Element : L . element } ; var N = L . $Attribute ; if ( N ) { M . Attributes = { } ; for ( var k = 0 ; k < N . length ; k ++ ) { var O = N [ k ] . value || null ; if ( O ) { var P = O && FCKRegexLib . RegExp . exec ( O ) ; if ( P ) O = new RegExp ( P [ 1 ] , P [ 2 ] || '' ) ; } ; M . Attributes [ N [ k ] . name ] = O ; } } ; H . Overrides . push ( M ) ; } } ; var Q = new FCKStyle ( H ) ; Q . Name = F . name || G ; if ( Q . GetType ( ) == 2 ) this . _ObjectStyles [ G ] = true ; A [ Q . Name ] = Q ; } ; return A ; } } ;
var FCKListHandler = { OutdentListItem : function ( A ) { var B = A . parentNode ; if ( B . tagName . toUpperCase ( ) . Equals ( 'UL' , 'OL' ) ) { var C = FCKTools . GetElementDocument ( A ) ; var D = new FCKDocumentFragment ( C ) ; var E = D . RootNode ; var F = false ; var G = FCKDomTools . GetFirstChild ( A , [ 'UL' , 'OL' ] ) ; if ( G ) { F = true ; var H ; while ( ( H = G . firstChild ) ) E . appendChild ( G . removeChild ( H ) ) ; FCKDomTools . RemoveNode ( G ) ; } ; var I ; var J = false ; while ( ( I = A . nextSibling ) ) { if ( ! F && I . nodeType == 1 && I . nodeName . toUpperCase ( ) == 'LI' ) J = F = true ; E . appendChild ( I . parentNode . removeChild ( I ) ) ; if ( ! J && I . nodeType == 1 && I . nodeName . toUpperCase ( ) . Equals ( 'UL' , 'OL' ) ) FCKDomTools . RemoveNode ( I , true ) ; } ; var K = B . parentNode . tagName . toUpperCase ( ) ; var L = ( K == 'LI' ) ; if ( L || K . Equals ( 'UL' , 'OL' ) ) { if ( F ) { var G = B . cloneNode ( false ) ; D . AppendTo ( G ) ; A . appendChild ( G ) ; } else if ( L ) D . InsertAfterNode ( B . parentNode ) ; else D . InsertAfterNode ( B ) ; if ( L ) FCKDomTools . InsertAfterNode ( B . parentNode , B . removeChild ( A ) ) ; else FCKDomTools . InsertAfterNode ( B , B . removeChild ( A ) ) ; } else { if ( F ) { var N = B . cloneNode ( false ) ; D . AppendTo ( N ) ; FCKDomTools . InsertAfterNode ( B , N ) ; } ; var O = C . createElement ( FCKConfig . EnterMode == 'p' ? 'p' : 'div' ) ; FCKDomTools . MoveChildren ( B . removeChild ( A ) , O ) ; FCKDomTools . InsertAfterNode ( B , O ) ; if ( FCKConfig . EnterMode == 'br' ) { if ( FCKBrowserInfo . IsGecko ) O . parentNode . insertBefore ( FCKTools . CreateBogusBR ( C ) , O ) ; else FCKDomTools . InsertAfterNode ( O , FCKTools . CreateBogusBR ( C ) ) ; FCKDomTools . RemoveNode ( O , true ) ; } } ; if ( this . CheckEmptyList ( B ) ) FCKDomTools . RemoveNode ( B , true ) ; } } , CheckEmptyList : function ( A ) { return ( FCKDomTools . GetFirstChild ( A , 'LI' ) == null ) ; } , CheckListHasContents : function ( A ) { var B = A . firstChild ; while ( B ) { switch ( B . nodeType ) { case 1 : if ( ! B . nodeName . IEquals ( 'UL' , 'LI' ) ) return true ; break ; case 3 : if ( B . nodeValue . Trim ( ) . length > 0 ) return true ; } ; B = B . nextSibling ; } ; return false ; } } ;
var FCKElementPath = function ( A ) { var B = null ; var C = null ; var D = [ ] ; var e = A ; while ( e ) { if ( e . nodeType == 1 ) { if ( ! this . LastElement ) this . LastElement = e ; var E = e . nodeName . toLowerCase ( ) ; if ( FCKBrowserInfo . IsIE && e . scopeName != 'HTML' ) E = e . scopeName . toLowerCase ( ) + ':' + E ; if ( ! C ) { if ( ! B && FCKListsLib . PathBlockElements [ E ] != null ) B = e ; if ( FCKListsLib . PathBlockLimitElements [ E ] != null ) { if ( ! B && E == 'div' && ! FCKElementPath . _CheckHasBlock ( e ) ) B = e ; else C = e ; } } ; D . push ( e ) ; if ( E == 'body' ) break ; } ; e = e . parentNode ; } ; this . Block = B ; this . BlockLimit = C ; this . Elements = D ; } ; FCKElementPath . _CheckHasBlock = function ( A ) { var B = A . childNodes ; for ( var i = 0 , count = B . length ; i < count ; i ++ ) { var C = B [ i ] ; if ( C . nodeType == 1 && FCKListsLib . BlockElements [ C . nodeName . toLowerCase ( ) ] ) return true ; } ; return false ; } ;
var FCKDomRange = function ( A ) { this . Window = A ; this . _Cache = { } ; } ; FCKDomRange . prototype = { _UpdateElementInfo : function ( ) { var A = this . _Range ; if ( ! A ) this . Release ( true ) ; else { var B = A . startContainer ; var C = new FCKElementPath ( B ) ; this . StartNode = B . nodeType == 3 ? B : B . childNodes [ A . startOffset ] ; this . StartContainer = B ; this . StartBlock = C . Block ; this . StartBlockLimit = C . BlockLimit ; if ( A . collapsed ) { this . EndNode = this . StartNode ; this . EndContainer = this . StartContainer ; this . EndBlock = this . StartBlock ; this . EndBlockLimit = this . StartBlockLimit ; } else { var D = A . endContainer ; if ( B != D ) C = new FCKElementPath ( D ) ; var E = D ; if ( A . endOffset == 0 ) { while ( E && ! E . previousSibling ) E = E . parentNode ; if ( E ) E = E . previousSibling ; } else if ( E . nodeType == 1 ) E = E . childNodes [ A . endOffset - 1 ] ; this . EndNode = E ; this . EndContainer = D ; this . EndBlock = C . Block ; this . EndBlockLimit = C . BlockLimit ; } } ; this . _Cache = { } ; } , CreateRange : function ( ) { return new FCKW3CRange ( this . Window . document ) ; } , DeleteContents : function ( ) { if ( this . _Range ) { this . _Range . deleteContents ( ) ; this . _UpdateElementInfo ( ) ; } } , ExtractContents : function ( ) { if ( this . _Range ) { var A = this . _Range . extractContents ( ) ; this . _UpdateElementInfo ( ) ; return A ; } ; return null ; } , CheckIsCollapsed : function ( ) { if ( this . _Range ) return this . _Range . collapsed ; return false ; } , Collapse : function ( A ) { if ( this . _Range ) this . _Range . collapse ( A ) ; this . _UpdateElementInfo ( ) ; } , Clone : function ( ) { var A = FCKTools . CloneObject ( this ) ; if ( this . _Range ) A . _Range = this . _Range . cloneRange ( ) ; return A ; } , MoveToNodeContents : function ( A ) { if ( ! this . _Range ) this . _Range = this . CreateRange ( ) ; this . _Range . selectNodeContents ( A ) ; this . _UpdateElementInfo ( ) ; } , MoveToElementStart : function ( A ) { this . SetStart ( A , 1 ) ; this . SetEnd ( A , 1 ) ; } , MoveToElementEditStart : function ( A ) { var B ; while ( A && A . nodeType == 1 ) { if ( FCKDomTools . CheckIsEditable ( A ) ) B = A ; else if ( B ) break ; A = A . firstChild ; } ; if ( B ) this . MoveToElementStart ( B ) ; } , InsertNode : function ( A ) { if ( this . _Range ) this . _Range . insertNode ( A ) ; } , CheckIsEmpty : function ( ) { if ( this . CheckIsCollapsed ( ) ) return true ; var A = this . Window . document . createElement ( 'div' ) ; this . _Range . cloneContents ( ) . AppendTo ( A ) ; FCKDomTools . TrimNode ( A ) ; return ( A . innerHTML . length == 0 ) ; } , CheckStartOfBlock : function ( ) { var A = this . _Cache ; var B = A . IsStartOfBlock ; if ( B != undefined ) return B ; var C = this . StartBlock || this . StartBlockLimit ; var D = this . _Range . startContainer ; var E = this . _Range . startOffset ; var F ; if ( E > 0 ) { if ( D . nodeType == 3 ) { var G = D . nodeValue . substr ( 0 , E ) . Trim ( ) ; if ( G . length != 0 ) return A . IsStartOfBlock = false ; } else F = D . childNodes [ E - 1 ] ; } ; if ( ! F ) F = FCKDomTools . GetPreviousSourceNode ( D , true , null , C ) ; while ( F ) { switch ( F . nodeType ) { case 1 : if ( ! FCKListsLib . InlineChildReqElements [ F . nodeName . toLowerCase ( ) ] ) return A . IsStartOfBlock = false ; break ; case 3 : if ( F . nodeValue . Trim ( ) . length > 0 ) return A . IsStartOfBlock = false ; } ; F = FCKDomTools . GetPreviousSourceNode ( F , false , null , C ) ; } ; return A . IsStartOfBlock = true ; } , CheckEndOfBlock : function ( A ) { var B = this . _Cache . IsEndOfBlock ; if ( B != undefined ) return B ; var C = this . EndBlock || this . EndBlockLimit ; var D = this . _Range . endContainer ; var E = this . _Range . endOffset ; var F ; if ( D . nodeType == 3 ) { var G = D . nodeValue ; if ( E < G . length ) { G = G . substr ( E ) ; if ( G . Trim ( ) . length != 0 ) return this . _Cache . IsEndOfBlock = false ; } } else F = D . childNodes [ E ] ; if ( ! F ) F = FCKDomTools . GetNextSourceNode ( D , true , null , C ) ; var H = false ; while ( F ) { switch ( F . nodeType ) { case 1 : var I = F . nodeName . toLowerCase ( ) ; if ( FCKListsLib . InlineChildReqElements [ I ] ) break ; if ( I == 'br' && ! H ) { H = true ; break ; } ; return this . _Cache . IsEndOfBlock = false ; case 3 : if ( F . nodeValue . Trim ( ) . length > 0 ) return this . _Cache . IsEndOfBlock = false ; } ; F = FCKDomTools . GetNextSourceNode ( F , false , null , C ) ; } ; if ( A ) this . Select ( ) ; return this . _Cache . IsEndOfBlock = true ; } , CreateBookmark : function ( A ) { var B = { StartId : ( new Date ( ) ) . valueOf ( ) + Math . floor ( Math . random ( ) * 1000 ) + 'S' , EndId : ( new Date ( ) ) . valueOf ( ) + Math . floor ( Math . random ( ) * 1000 ) + 'E' } ; var C = this . Window . document ; var D ; var E ; var F ; if ( ! this . CheckIsCollapsed ( ) ) { E = C . createElement ( 'span' ) ; E . style . display = 'none' ; E . id = B . EndId ; E . setAttribute ( '_fck_bookmark' , true ) ; E . innerHTML = ' ' ; F = this . Clone ( ) ; F . Collapse ( false ) ; F . InsertNode ( E ) ; } ; D = C . createElement ( 'span' ) ; D . style . display = 'none' ; D . id = B . StartId ; D . setAttribute ( '_fck_bookmark' , true )
FCKDomRange . prototype . MoveToSelection = function ( ) { this . Release ( true ) ; this . _Range = new FCKW3CRange ( this . Window . document ) ; var A = this . Window . document . selection ; if ( A . type != 'Control' ) { var B = this . _GetSelectionMarkerTag ( true ) ; var C = this . _GetSelectionMarkerTag ( false ) ; if ( ! B && ! C ) { this . _Range . setStart ( this . Window . document . body , 0 ) ; this . _UpdateElementInfo ( ) ; return ; } ; this . _Range . setStart ( B . parentNode , FCKDomTools . GetIndexOf ( B ) ) ; B . parentNode . removeChild ( B ) ; this . _Range . setEnd ( C . parentNode , FCKDomTools . GetIndexOf ( C ) ) ; C . parentNode . removeChild ( C ) ; this . _UpdateElementInfo ( ) ; } else { var D = A . createRange ( ) . item ( 0 ) ; if ( D ) { this . _Range . setStartBefore ( D ) ; this . _Range . setEndAfter ( D ) ; this . _UpdateElementInfo ( ) ; } } } ; FCKDomRange . prototype . Select = function ( A ) { if ( this . _Range ) this . SelectBookmark ( this . CreateBookmark ( true ) , A ) ; } ; FCKDomRange . prototype . SelectBookmark = function ( A , B ) { var C = this . CheckIsCollapsed ( ) ; var D ; var E ; var F = this . GetBookmarkNode ( A , true ) ; if ( ! F ) return ; var G ; if ( ! C ) G = this . GetBookmarkNode ( A , false ) ; var H = this . Window . document . body . createTextRange ( ) ; H . moveToElementText ( F ) ; H . moveStart ( 'character' , 1 ) ; if ( G ) { var I = this . Window . document . body . createTextRange ( ) ; I . moveToElementText ( G ) ; H . setEndPoint ( 'EndToEnd' , I ) ; H . moveEnd ( 'character' , - 1 ) ; } else { D = ( B || ! F . previousSibling || F . previousSibling . nodeName . toLowerCase ( ) == 'br' ) && ! F . nextSibing ; E = this . Window . document . createElement ( 'span' ) ; E . innerHTML = '' ; F . parentNode . insertBefore ( E , F ) ; if ( D ) { F . parentNode . insertBefore ( this . Window . document . createTextNode ( '\ufeff' ) , F ) ; } } ; if ( ! this . _Range ) this . _Range = this . CreateRange ( ) ; this . _Range . setStartBefore ( F ) ; F . parentNode . removeChild ( F ) ; if ( C ) { if ( D ) { H . moveStart ( 'character' , - 1 ) ; H . select ( ) ; this . Window . document . selection . clear ( ) ; } else H . select ( ) ; FCKDomTools . RemoveNode ( E ) ; } else { this . _Range . setEndBefore ( G ) ; G . parentNode . removeChild ( G ) ; H . select ( ) ; } } ; FCKDomRange . prototype . _GetSelectionMarkerTag = function ( A ) { var B = this . Window . document ; var C = B . selection ; var D ; try { D = C . createRange ( ) ; } catch ( e ) { return null ; } ; if ( D . parentElement ( ) . document != B ) return null ; D . collapse ( A === true ) ; var E = 'fck_dom_range_temp_' + ( new Date ( ) ) . valueOf ( ) + '_' + Math . floor ( Math . random ( ) * 1000 ) ; D . pasteHTML ( '<span id="' + E + '"></span>' ) ; return B . getElementById ( E ) ; } ;
var FCKDomRangeIterator = function ( A ) { this . Range = A ; this . ForceBrBreak = false ; this . EnforceRealBlocks = false ; } ; FCKDomRangeIterator . CreateFromSelection = function ( A ) { var B = new FCKDomRange ( A ) ; B . MoveToSelection ( ) ; return new FCKDomRangeIterator ( B ) ; } ; FCKDomRangeIterator . prototype = { GetNextParagraph : function ( ) { var A ; var B ; var C ; var D ; var E ; var F = this . ForceBrBreak ? FCKListsLib . ListBoundaries : FCKListsLib . BlockBoundaries ; if ( ! this . _LastNode ) { var B = this . Range . Clone ( ) ; B . Expand ( this . ForceBrBreak ? 'list_contents' : 'block_contents' ) ; this . _NextNode = B . GetTouchedStartNode ( ) ; this . _LastNode = B . GetTouchedEndNode ( ) ; B = null ; } ; var H = this . _NextNode ; var I = this . _LastNode ; this . _NextNode = null ; while ( H ) { var J = false ; var K = ( H . nodeType != 1 ) ; var L = false ; if ( ! K ) { var M = H . nodeName . toLowerCase ( ) ; if ( F [ M ] && ( ! FCKBrowserInfo . IsIE || H . scopeName == 'HTML' ) ) { if ( M == 'br' ) K = true ; else if ( ! B && H . childNodes . length == 0 && M != 'hr' ) { A = H ; C = H == I ; break ; } ; if ( B ) { B . SetEnd ( H , 3 , true ) ; if ( M != 'br' ) this . _NextNode = FCKDomTools . GetNextSourceNode ( H , true , null , I ) ; } ; J = true ; } else { if ( H . firstChild ) { if ( ! B ) { B = new FCKDomRange ( this . Range . Window ) ; B . SetStart ( H , 3 , true ) ; } ; H = H . firstChild ; continue ; } ; K = true ; } } else if ( H . nodeType == 3 ) { if ( /^[\r\n\t ]+$/ . test ( H . nodeValue ) ) K = false ; } ; if ( K && ! B ) { B = new FCKDomRange ( this . Range . Window ) ; B . SetStart ( H , 3 , true ) ; } ; C = ( ( ! J || K ) && H == I ) ; if ( B && ! J ) { while ( ! H . nextSibling && ! C ) { var N = H . parentNode ; if ( F [ N . nodeName . toLowerCase ( ) ] ) { J = true ; C = C || ( N == I ) ; break ; } ; H = N ; K = true ; C = ( H == I ) ; L = true ; } } ; if ( K ) B . SetEnd ( H , 4 , true ) ; if ( ( J || C ) && B ) { B . _UpdateElementInfo ( ) ; if ( B . StartNode == B . EndNode && B . StartNode . parentNode == B . StartBlockLimit && B . StartNode . getAttribute && B . StartNode . getAttribute ( '_fck_bookmark' ) ) B = null ; else break ; } ; if ( C ) break ; H = FCKDomTools . GetNextSourceNode ( H , L , null , I ) ; } ; if ( ! A ) { if ( ! B ) { this . _NextNode = null ; return null ; } ; A = B . StartBlock ; if ( ! A && ! this . EnforceRealBlocks && B . StartBlockLimit . nodeName . IEquals ( 'DIV' , 'TH' , 'TD' ) && B . CheckStartOfBlock ( ) && B . CheckEndOfBlock ( ) ) { A = B . StartBlockLimit ; } else if ( ! A || ( this . EnforceRealBlocks && A . nodeName . toLowerCase ( ) == 'li' ) ) { A = this . Range . Window . document . createElement ( FCKConfig . EnterMode == 'p' ? 'p' : 'div' ) ; B . ExtractContents ( ) . AppendTo ( A ) ; FCKDomTools . TrimNode ( A ) ; B . InsertNode ( A ) ; D = true ; E = true ; } else if ( A . nodeName . toLowerCase ( ) != 'li' ) { if ( ! B . CheckStartOfBlock ( ) || ! B . CheckEndOfBlock ( ) ) { A = A . cloneNode ( false ) ; B . ExtractContents ( ) . AppendTo ( A ) ; FCKDomTools . TrimNode ( A ) ; var O = B . SplitBlock ( ) ; D = ! O . WasStartOfBlock ; E = ! O . WasEndOfBlock ; B . InsertNode ( A ) ; } } else if ( ! C ) { this . _NextNode = A == I ? null : FCKDomTools . GetNextSourceNode ( B . EndNode , true , null , I ) ; return A ; } } ; if ( D ) { var P = A . previousSibling ; if ( P && P . nodeType == 1 ) { if ( P . nodeName . toLowerCase ( ) == 'br' ) P . parentNode . removeChild ( P ) ; else if ( P . lastChild && P . lastChild . nodeName . IEquals ( 'br' ) ) P . removeChild ( P . lastChild ) ; } } ; if ( E ) { var Q = A . lastChild ; if ( Q && Q . nodeType == 1 && Q . nodeName . toLowerCase ( ) == 'br' ) A . removeChild ( Q ) ; } ; if ( ! this . _NextNode ) this . _NextNode = ( C || A == I ) ? null : FCKDomTools . GetNextSourceNode ( A , true , null , I ) ; return A ; } } ;
var FCKDocumentFragment = function ( A ) { this . _Document = A ; this . RootNode = A . createElement ( 'div' ) ; } ; FCKDocumentFragment . prototype = { AppendTo : function ( A ) { FCKDomTools . MoveChildren ( this . RootNode , A ) ; } , AppendHtml : function ( A ) { var B = this . _Document . createElement ( 'div' ) ; B . innerHTML = A ; FCKDomTools . MoveChildren ( B , this . RootNode ) ; } , InsertAfterNode : function ( A ) { var B = this . RootNode ; var C ; while ( ( C = B . lastChild ) ) FCKDomTools . InsertAfterNode ( A , B . removeChild ( C ) ) ; } } ;
var FCKW3CRange = function ( A ) { this . _Document = A ; this . startContainer = null ; this . startOffset = null ; this . endContainer = null ; this . endOffset = null ; this . collapsed = true ; } ; FCKW3CRange . CreateRange = function ( A ) { return new FCKW3CRange ( A ) ; } ; FCKW3CRange . CreateFromRange = function ( A , B ) { var C = FCKW3CRange . CreateRange ( A ) ; C . setStart ( B . startContainer , B . startOffset ) ; C . setEnd ( B . endContainer , B . endOffset ) ; return C ; } ; FCKW3CRange . prototype = { _UpdateCollapsed : function ( ) { this . collapsed = ( this . startContainer == this . endContainer && this . startOffset == this . endOffset ) ; } , setStart : function ( A , B ) { this . startContainer = A ; this . startOffset = B ; if ( ! this . endContainer ) { this . endContainer = A ; this . endOffset = B ; } ; this . _UpdateCollapsed ( ) ; } , setEnd : function ( A , B ) { this . endContainer = A ; this . endOffset = B ; if ( ! this . startContainer ) { this . startContainer = A ; this . startOffset = B ; } ; this . _UpdateCollapsed ( ) ; } , setStartAfter : function ( A ) { this . setStart ( A . parentNode , FCKDomTools . GetIndexOf ( A ) + 1 ) ; } , setStartBefore : function ( A ) { this . setStart ( A . parentNode , FCKDomTools . GetIndexOf ( A ) ) ; } , setEndAfter : function ( A ) { this . setEnd ( A . parentNode , FCKDomTools . GetIndexOf ( A ) + 1 ) ; } , setEndBefore : function ( A ) { this . setEnd ( A . parentNode , FCKDomTools . GetIndexOf ( A ) ) ; } , collapse : function ( A ) { if ( A ) { this . endContainer = this . startContainer ; this . endOffset = this . startOffset ; } else { this . startContainer = this . endContainer ; this . startOffset = this . endOffset ; } ; this . collapsed = true ; } , selectNodeContents : function ( A ) { this . setStart ( A , 0 ) ; this . setEnd ( A , A . nodeType == 3 ? A . data . length : A . childNodes . length ) ; } , insertNode : function ( A ) { var B = this . startContainer ; var C = this . startOffset ; if ( B . nodeType == 3 ) { B . splitText ( C ) ; if ( B == this . endContainer ) this . setEnd ( B . nextSibling , this . endOffset - this . startOffset ) ; FCKDomTools . InsertAfterNode ( B , A ) ; return ; } else { B . insertBefore ( A , B . childNodes [ C ] || null ) ; if ( B == this . endContainer ) { this . endOffset ++ ; this . collapsed = false ; } } } , deleteContents : function ( ) { if ( this . collapsed ) return ; this . _ExecContentsAction ( 0 ) ; } , extractContents : function ( ) { var A = new FCKDocumentFragment ( this . _Document ) ; if ( ! this . collapsed ) this . _ExecContentsAction ( 1 , A ) ; return A ; } , cloneContents : function ( ) { var A = new FCKDocumentFragment ( this . _Document ) ; if ( ! this . collapsed ) this . _ExecContentsAction ( 2 , A ) ; return A ; } , _ExecContentsAction : function ( A , B ) { var C = this . startContainer ; var D = this . endContainer ; var E = this . startOffset ; var F = this . endOffset ; var G = false ; var H = false ; if ( D . nodeType == 3 ) D = D . splitText ( F ) ; else { if ( D . childNodes . length > 0 ) { if ( F > D . childNodes . length - 1 ) { D = FCKDomTools . InsertAfterNode ( D . lastChild , this . _Document . createTextNode ( '' ) ) ; H = true ; } else D = D . childNodes [ F ] ; } } ; if ( C . nodeType == 3 ) { C . splitText ( E ) ; if ( C == D ) D = C . nextSibling ; } else { if ( E == 0 ) { C = C . insertBefore ( this . _Document . createTextNode ( '' ) , C . firstChild ) ; G = true ; } else if ( E > C . childNodes . length - 1 ) { C = C . appendChild ( this . _Document . createTextNode ( '' ) ) ; G = true ; } else C = C . childNodes [ E ] . previousSibling ; } ; var I = FCKDomTools . GetParents ( C ) ; var J = FCKDomTools . GetParents ( D ) ; var i , topStart , topEnd ; for ( i = 0 ; i < I . length ; i ++ ) { topStart = I [ i ] ; topEnd = J [ i ] ; if ( topStart != topEnd ) break ; } ; var K , levelStartNode , levelClone , currentNode , currentSibling ; if ( B ) K = B . RootNode ; for ( var j = i ; j < I . length ; j ++ ) { levelStartNode = I [ j ] ; if ( K && levelStartNode != C ) levelClone = K . appendChild ( levelStartNode . cloneNode ( levelStartNode == C ) ) ; currentNode = levelStartNode . nextSibling ; while ( currentNode ) { if ( currentNode == J [ j ] || currentNode == D ) break ; currentSibling = currentNode . nextSibling ; if ( A == 2 ) K . appendChild ( currentNode . cloneNode ( true ) ) ; else { currentNode . parentNode . removeChild ( currentNode ) ; if ( A == 1 ) K . appendChild ( currentNode ) ; } ; currentNode = currentSibling ; } ; if ( K ) K = levelClone ; } ; if ( B ) K = B . RootNode ; for ( var k = i ; k < J . length ; k ++ ) { levelStartNode = J [ k ] ; if ( A > 0 && levelStartNode != D ) levelClone = K . appendChild ( levelStartNode . cloneNode ( levelStartNode == D ) ) ; if ( ! I [ k ] || levelStartNode . parentNode != I [ k ] . parentNode ) { currentNode = levelStartNode . previousSibling ; while ( currentNode ) { if ( currentNode == I [ k ] || currentNode == C ) break ; currentSibling = currentNode . previousSibling ; if ( A == 2 ) K . insertBefore ( currentNode . cloneNode ( true ) , K . firstChild ) ; else { currentNode . parentNode . removeChild ( currentNode ) ; if ( A == 1 ) K . insertBefore ( currentNode , K . firstChild ) ; } ; current
var FCKEnterKey = function ( A , B , C , D ) { this . Window = A ; this . EnterMode = B || 'p' ; this . ShiftEnterMode = C || 'br' ; var E = new FCKKeystrokeHandler ( false ) ; E . _EnterKey = this ; E . OnKeystroke = FCKEnterKey _OnKeystroke ; E . SetKeystrokes ( [ [ 13 , 'Enter' ] , [ SHIFT + 13 , 'ShiftEnter' ] , [ 8 , 'Backspace' ] , [ CTRL + 8 , 'CtrlBackspace' ] , [ 46 , 'Delete' ] ] ) ; this . TabText = '' ; if ( D > 0 || FCKBrowserInfo . IsSafari ) { while ( D -- ) this . TabText += '\xa0' ; E . SetKeystrokes ( [ 9 , 'Tab' ] ) ; } ; E . AttachToElement ( A . document ) ; } ; function FCKEnterKey _OnKeystroke ( A , B ) { var C = this . _EnterKey ; try { switch ( B ) { case 'Enter' : return C . DoEnter ( ) ; break ; case 'ShiftEnter' : return C . DoShiftEnter ( ) ; break ; case 'Backspace' : return C . DoBackspace ( ) ; break ; case 'Delete' : return C . DoDelete ( ) ; break ; case 'Tab' : return C . DoTab ( ) ; break ; case 'CtrlBackspace' : return C . DoCtrlBackspace ( ) ; break ; } } catch ( e ) { } ; return false ; } ; FCKEnterKey . prototype . DoEnter = function ( A , B ) { FCKUndo . SaveUndoStep ( ) ; this . _HasShift = ( B === true ) ; var C = FCKSelection . GetParentElement ( ) ; var D = new FCKElementPath ( C ) ; var E = A || this . EnterMode ; if ( E == 'br' || D . Block && D . Block . tagName . toLowerCase ( ) == 'pre' ) return this . _ExecuteEnterBr ( ) ; else return this . _ExecuteEnterBlock ( E ) ; } ; FCKEnterKey . prototype . DoShiftEnter = function ( ) { return this . DoEnter ( this . ShiftEnterMode , true ) ; } ; FCKEnterKey . prototype . DoBackspace = function ( ) { var A = false ; var B = new FCKDomRange ( this . Window ) ; B . MoveToSelection ( ) ; if ( FCKBrowserInfo . IsIE && this . _CheckIsAllContentsIncluded ( B , this . Window . document . body ) ) { this . _FixIESelectAllBug ( B ) ; return true ; } ; var C = B . CheckIsCollapsed ( ) ; if ( ! C ) { if ( FCKBrowserInfo . IsIE && this . Window . document . selection . type . toLowerCase ( ) == "control" ) { var D = this . Window . document . selection . createRange ( ) ; for ( var i = D . length - 1 ; i >= 0 ; i -- ) { var E = D . item ( i ) ; E . parentNode . removeChild ( E ) ; } ; return true ; } ; return false ; } ; if ( FCKBrowserInfo . IsIE ) { var F = FCKDomTools . GetPreviousSourceElement ( B . StartNode , true ) ; if ( F && F . nodeName . toLowerCase ( ) == 'br' ) { var G = B . Clone ( ) ; G . SetStart ( F , 4 ) ; if ( G . CheckIsEmpty ( ) ) { F . parentNode . removeChild ( F ) ; return true ; } } } ; var H = B . StartBlock ; var I = B . EndBlock ; if ( B . StartBlockLimit == B . EndBlockLimit && H && I ) { if ( ! C ) { var J = B . CheckEndOfBlock ( ) ; B . DeleteContents ( ) ; if ( H != I ) { B . SetStart ( I , 1 ) ; B . SetEnd ( I , 1 ) ; } ; B . Select ( ) ; A = ( H == I ) ; } ; if ( B . CheckStartOfBlock ( ) ) { var K = B . StartBlock ; var L = FCKDomTools . GetPreviousSourceElement ( K , true , [ 'BODY' , B . StartBlockLimit . nodeName ] , [ 'UL' , 'OL' ] ) ; A = this . _ExecuteBackspace ( B , L , K ) ; } else if ( FCKBrowserInfo . IsGeckoLike ) { B . Select ( ) ; } } ; B . Release ( ) ; return A ; } ; FCKEnterKey . prototype . DoCtrlBackspace = function ( ) { FCKUndo . SaveUndoStep ( ) ; var A = new FCKDomRange ( this . Window ) ; A . MoveToSelection ( ) ; if ( FCKBrowserInfo . IsIE && this . _CheckIsAllContentsIncluded ( A , this . Window . document . body ) ) { this . _FixIESelectAllBug ( A ) ; return true ; } ; return false ; } ; FCKEnterKey . prototype . _ExecuteBackspace = function ( A , B , C ) { var D = false ; if ( ! B && C && C . nodeName . IEquals ( 'LI' ) && C . parentNode . parentNode . nodeName . IEquals ( 'LI' ) ) { this . _OutdentWithSelection ( C , A ) ; return true ; } ; if ( B && B . nodeName . IEquals ( 'LI' ) ) { var E = FCKDomTools . GetLastChild ( B , [ 'UL' , 'OL' ] ) ; while ( E ) { B = FCKDomTools . GetLastChild ( E , 'LI' ) ; E = FCKDomTools . GetLastChild ( B , [ 'UL' , 'OL' ] ) ; } } ; if ( B && C ) { if ( C . nodeName . IEquals ( 'LI' ) && ! B . nodeName . IEquals ( 'LI' ) ) { this . _OutdentWithSelection ( C , A ) ; return true ; } ; var F = C . parentNode ; var G = B . nodeName . toLowerCase ( ) ; if ( FCKListsLib . EmptyElements [ G ] != null || G == 'table' ) { FCKDomTools . RemoveNode ( B ) ; D = true ; } else { FCKDomTools . RemoveNode ( C ) ; while ( F . innerHTML . Trim ( ) . length == 0 ) { var H = F . parentNode ; H . removeChild ( F ) ; F = H ; } ; FCKDomTools . LTrimNode ( C ) ; FCKDomTools . RTrimNode ( B ) ; A . SetStart ( B , 2 , true ) ; A . Collapse ( true ) ; var I = A . CreateBookmark ( true ) ; if ( ! C . tagName . IEquals ( [ 'TABLE' ] ) ) FCKDomTools . MoveChildren ( C , B ) ; A . SelectBookmark ( I ) ; D = true ; } } ; return D ; } ; FCKEnterKey . prototype . DoDelete = function ( ) { FCKUndo . SaveUndoStep ( ) ; var A = false ; var B = new FCKDomRange ( this . Window ) ; B . MoveToSelection ( ) ; if ( FCKBrowserInfo . IsIE && this . _CheckIsAllContentsIncluded ( B , this . Window . document . body ) ) { this . _FixIESelectAllBug ( B ) ; return true ; } ; if ( B . CheckIsCollapsed ( ) && B . CheckEndOfBlock ( FCKBrowserInfo . IsGeckoLike ) ) { var C = B . StartBlock ; var D = FCKTools . GetElementAscensor ( C , 'td' ) ; var E = FCKDomTools . GetNextSourceElement ( C , true , [ B . StartBlockLimit . nod
var FCKDocumentProcessor = { } ; FCKDocumentProcessor . _Items = [ ] ; FCKDocumentProcessor . AppendNew = function ( ) { var A = { } ; this . _Items . AddItem ( A ) ; return A ; } ; FCKDocumentProcessor . Process = function ( A ) { var B = FCK . IsDirty ( ) ; var C , i = 0 ; while ( ( C = this . _Items [ i ++ ] ) ) C . ProcessDocument ( A ) ; if ( ! B ) FCK . ResetIsDirty ( ) ; } ; var FCKDocumentProcessor _CreateFakeImage = function ( A , B ) { var C = FCKTools . GetElementDocument ( B ) . createElement ( 'IMG' ) ; C . className = A ; C . src = FCKConfig . BasePath + 'images/spacer.gif' ; C . setAttribute ( '_fckfakelement' , 'true' , 0 ) ; C . setAttribute ( '_fckrealelement' , FCKTempBin . AddElement ( B ) , 0 ) ; return C ; } ; if ( FCKBrowserInfo . IsIE || FCKBrowserInfo . IsOpera ) { var FCKAnchorsProcessor = FCKDocumentProcessor . AppendNew ( ) ; FCKAnchorsProcessor . ProcessDocument = function ( A ) { var B = A . getElementsByTagName ( 'A' ) ; var C ; var i = B . length - 1 ; while ( i >= 0 && ( C = B [ i -- ] ) ) { if ( C . name . length > 0 ) { if ( C . innerHTML !== '' ) { if ( FCKBrowserInfo . IsIE ) C . className += ' FCK__AnchorC' ; } else { var D = FCKDocumentProcessor _CreateFakeImage ( 'FCK__Anchor' , C . cloneNode ( true ) ) ; D . setAttribute ( '_fckanchor' , 'true' , 0 ) ; C . parentNode . insertBefore ( D , C ) ; C . parentNode . removeChild ( C ) ; } } } } } ; var FCKPageBreaksProcessor = FCKDocumentProcessor . AppendNew ( ) ; FCKPageBreaksProcessor . ProcessDocument = function ( A ) { var B = A . getElementsByTagName ( 'DIV' ) ; var C ; var i = B . length - 1 ; while ( i >= 0 && ( C = B [ i -- ] ) ) { if ( C . style . pageBreakAfter == 'always' && C . childNodes . length == 1 && C . childNodes [ 0 ] . style && C . childNodes [ 0 ] . style . display == 'none' ) { var D = FCKDocumentProcessor _CreateFakeImage ( 'FCK__PageBreak' , C . cloneNode ( true ) ) ; C . parentNode . insertBefore ( D , C ) ; C . parentNode . removeChild ( C ) ; } } } ; FCKEmbedAndObjectProcessor = ( function ( ) { var A = [ ] ; var B = function ( el ) { var C = el . cloneNode ( true ) ; var D ; var E = D = FCKDocumentProcessor _CreateFakeImage ( 'FCK__UnknownObject' , C ) ; FCKEmbedAndObjectProcessor . RefreshView ( E , el ) ; for ( var i = 0 ; i < A . length ; i ++ ) D = A [ i ] ( el , D ) || D ; if ( D != E ) FCKTempBin . RemoveElement ( E . getAttribute ( '_fckrealelement' ) ) ; el . parentNode . replaceChild ( D , el ) ; } ; var F = function ( elementName , doc ) { var G = doc . getElementsByTagName ( elementName ) ; for ( var i = G . length - 1 ; i >= 0 ; i -- ) B ( G [ i ] ) ; } ; var H = function ( doc ) { F ( 'object' , doc ) ; F ( 'embed' , doc ) ; } ; return FCKTools . Merge ( FCKDocumentProcessor . AppendNew ( ) , { ProcessDocument : function ( doc ) { if ( FCKBrowserInfo . IsGecko ) FCKTools . RunFunction ( H , this , [ doc ] ) ; else H ( doc ) ; } , RefreshView : function ( placeHolder , original ) { if ( original . getAttribute ( 'width' ) > 0 ) placeHolder . style . width = FCKTools . ConvertHtmlSizeToStyle ( original . getAttribute ( 'width' ) ) ; if ( original . getAttribute ( 'height' ) > 0 ) placeHolder . style . height = FCKTools . ConvertHtmlSizeToStyle ( original . getAttribute ( 'height' ) ) ; } , AddCustomHandler : function ( func ) { A . push ( func ) ; } } ) ; } ) ( ) ; FCK . GetRealElement = function ( A ) { var e = FCKTempBin . Elements [ A . getAttribute ( '_fckrealelement' ) ] ; if ( A . getAttribute ( '_fckflash' ) ) { if ( A . style . width . length > 0 ) e . width = FCKTools . ConvertStyleSizeToHtml ( A . style . width ) ; if ( A . style . height . length > 0 ) e . height = FCKTools . ConvertStyleSizeToHtml ( A . style . height ) ; } ; return e ; } ; if ( FCKBrowserInfo . IsIE ) { FCKDocumentProcessor . AppendNew ( ) . ProcessDocument = function ( A ) { var B = A . getElementsByTagName ( 'HR' ) ; var C ; var i = B . length - 1 ; while ( i >= 0 && ( C = B [ i -- ] ) ) { var D = A . createElement ( 'hr' ) ; D . mergeAttributes ( C , true ) ; FCKDomTools . InsertAfterNode ( C , D ) ; C . parentNode . removeChild ( C ) ; } } } ; FCKDocumentProcessor . AppendNew ( ) . ProcessDocument = function ( A ) { var B = A . getElementsByTagName ( 'INPUT' ) ; var C ; var i = B . length - 1 ; while ( i >= 0 && ( C = B [ i -- ] ) ) { if ( C . type == 'hidden' ) { var D = FCKDocumentProcessor _CreateFakeImage ( 'FCK__InputHidden' , C . cloneNode ( true ) ) ; D . setAttribute ( '_fckinputhidden' , 'true' , 0 ) ; C . parentNode . insertBefore ( D , C ) ; C . parentNode . removeChild ( C ) ; } } } ; FCKEmbedAndObjectProcessor . AddCustomHandler ( function ( A , B ) { if ( ! ( A . nodeName . IEquals ( 'embed' ) && ( A . type == 'application/x-shockwave-flash' || /\.swf($|#|\?)/i . test ( A . src ) ) ) ) return ; B . className = 'FCK__Flash' ; B . setAttribute ( '_fckflash' , 'true' , 0 ) ; } ) ; if ( FCKBrowserInfo . IsSafari ) { FCKDocumentProcessor . AppendNew ( ) . ProcessDocument = function ( A ) { var B = A . getElementsByClassName ? A . getElementsByClassName ( 'Apple-style-span' ) : Array . prototype . filter . call ( A . getElementsByTagName ( 'span' ) , function ( item ) { return item . className == 'Apple-style-span' ; } ) ; for ( var i =
var FCKSelection = FCK . Selection = { GetParentBlock : function ( ) { var A = this . GetParentElement ( ) ; while ( A ) { if ( FCKListsLib . BlockBoundaries [ A . nodeName . toLowerCase ( ) ] ) break ; A = A . parentNode ; } ; return A ; } , ApplyStyle : function ( A ) { FCKStyles . ApplyStyle ( new FCKStyle ( A ) ) ; } } ;
FCKSelection . GetType = function ( ) { try { var A = FCKSelection . GetSelection ( ) . type ; if ( A == 'Control' || A == 'Text' ) return A ; if ( this . GetSelection ( ) . createRange ( ) . parentElement ) return 'Text' ; } catch ( e ) { } ; return 'None' ; } ; FCKSelection . GetSelectedElement = function ( ) { if ( this . GetType ( ) == 'Control' ) { var A = this . GetSelection ( ) . createRange ( ) ; if ( A && A . item ) return this . GetSelection ( ) . createRange ( ) . item ( 0 ) ; } ; return null ; } ; FCKSelection . GetParentElement = function ( ) { switch ( this . GetType ( ) ) { case 'Control' : var A = FCKSelection . GetSelectedElement ( ) ; return A ? A . parentElement : null ; case 'None' : return null ; default : return this . GetSelection ( ) . createRange ( ) . parentElement ( ) ; } } ; FCKSelection . GetBoundaryParentElement = function ( A ) { switch ( this . GetType ( ) ) { case 'Control' : var B = FCKSelection . GetSelectedElement ( ) ; return B ? B . parentElement : null ; case 'None' : return null ; default : var C = FCK . EditorDocument ; var D = C . selection . createRange ( ) ; D . collapse ( A !== false ) ; var B = D . parentElement ( ) ; return FCKTools . GetElementDocument ( B ) == C ? B : null ; } } ; FCKSelection . SelectNode = function ( A ) { FCK . Focus ( ) ; this . GetSelection ( ) . empty ( ) ; var B ; try { B = FCK . EditorDocument . body . createControlRange ( ) ; B . addElement ( A ) ; } catch ( e ) { B = FCK . EditorDocument . body . createTextRange ( ) ; B . moveToElementText ( A ) ; } ; B . select ( ) ; } ; FCKSelection . Collapse = function ( A ) { FCK . Focus ( ) ; if ( this . GetType ( ) == 'Text' ) { var B = this . GetSelection ( ) . createRange ( ) ; B . collapse ( A == null || A === true ) ; B . select ( ) ; } } ; FCKSelection . HasAncestorNode = function ( A ) { var B ; if ( this . GetSelection ( ) . type == "Control" ) { B = this . GetSelectedElement ( ) ; } else { var C = this . GetSelection ( ) . createRange ( ) ; B = C . parentElement ( ) ; } while ( B ) { if ( B . nodeName . IEquals ( A ) ) return true ; B = B . parentNode ; } ; return false ; } ; FCKSelection . MoveToAncestorNode = function ( A ) { var B , oRange ; if ( ! FCK . EditorDocument ) return null ; if ( this . GetSelection ( ) . type == "Control" ) { oRange = this . GetSelection ( ) . createRange ( ) ; for ( i = 0 ; i < oRange . length ; i ++ ) { if ( oRange ( i ) . parentNode ) { B = oRange ( i ) . parentNode ; break ; } } } else { oRange = this . GetSelection ( ) . createRange ( ) ; B = oRange . parentElement ( ) ; } while ( B && B . nodeName != A ) B = B . parentNode ; return B ; } ; FCKSelection . Delete = function ( ) { var A = this . GetSelection ( ) ; if ( A . type . toLowerCase ( ) != "none" ) { A . clear ( ) ; } ; return A ; } ; FCKSelection . GetSelection = function ( ) { this . Restore ( ) ; return FCK . EditorDocument . selection ; } ; FCKSelection . Save = function ( A ) { if ( ! A ) FCK . Focus ( ) ; var B = FCK . EditorDocument ; if ( ! B ) return ; var C = B . selection ; var D ; if ( C ) { D = C . createRange ( ) ; if ( D ) { if ( D . parentElement && FCKTools . GetElementDocument ( D . parentElement ( ) ) != B ) D = null ; else if ( D . item && FCKTools . GetElementDocument ( D . item ( 0 ) ) != B ) D = null ; } } ; this . SelectionData = D ; } ; FCKSelection . _GetSelectionDocument = function ( A ) { var B = A . createRange ( ) ; if ( ! B ) return null ; else if ( B . item ) return FCKTools . GetElementDocument ( B . item ( 0 ) ) ; else return FCKTools . GetElementDocument ( B . parentElement ( ) ) ; } ; FCKSelection . Restore = function ( ) { if ( this . SelectionData ) { FCK . IsSelectionChangeLocked = true ; try { if ( String ( this . _GetSelectionDocument ( FCK . EditorDocument . selection ) . body . contentEditable ) == 'true' ) { FCK . IsSelectionChangeLocked = false ; return ; } ; this . SelectionData . select ( ) ; } catch ( e ) { } ; FCK . IsSelectionChangeLocked = false ; } } ; FCKSelection . Release = function ( ) { delete this . SelectionData ; } ;
var FCKTableHandler = { } ; FCKTableHandler . InsertRow = function ( A ) { var B = FCKSelection . MoveToAncestorNode ( 'TR' ) ; if ( ! B ) return ; var C = B . cloneNode ( true ) ; B . parentNode . insertBefore ( C , B ) ; FCKTableHandler . ClearRow ( A ? C : B ) ; } ; FCKTableHandler . DeleteRows = function ( A ) { if ( ! A ) { var B = FCKTableHandler . GetSelectedCells ( ) ; var C = [ ] ; for ( var i = 0 ; i < B . length ; i ++ ) { var D = FCKTools . GetElementAscensor ( B [ i ] , 'TR' ) ; C [ D . rowIndex ] = D ; } ; for ( var i = C . length ; i >= 0 ; i -- ) { if ( C [ i ] ) FCKTableHandler . DeleteRows ( C [ i ] ) ; } ; return ; } ; var E = FCKTools . GetElementAscensor ( A , 'TABLE' ) ; if ( E . rows . length == 1 ) { FCKTableHandler . DeleteTable ( E ) ; return ; } ; A . parentNode . removeChild ( A ) ; } ; FCKTableHandler . DeleteTable = function ( A ) { if ( ! A ) { A = FCKSelection . GetSelectedElement ( ) ; if ( ! A || A . tagName != 'TABLE' ) A = FCKSelection . MoveToAncestorNode ( 'TABLE' ) ; } ; if ( ! A ) return ; FCKSelection . SelectNode ( A ) ; FCKSelection . Collapse ( ) ; if ( A . parentNode . childNodes . length == 1 ) A . parentNode . parentNode . removeChild ( A . parentNode ) ; else A . parentNode . removeChild ( A ) ; } ; FCKTableHandler . InsertColumn = function ( A ) { var B = null ; var C = this . GetSelectedCells ( ) ; if ( C && C . length ) B = C [ A ? 0 : ( C . length - 1 ) ] ; if ( ! B ) return ; var D = FCKTools . GetElementAscensor ( B , 'TABLE' ) ; var E = B . cellIndex ; for ( var i = 0 ; i < D . rows . length ; i ++ ) { var F = D . rows [ i ] ; if ( F . cells . length < ( E + 1 ) ) continue ; B = F . cells [ E ] . cloneNode ( false ) ; if ( FCKBrowserInfo . IsGeckoLike ) FCKTools . AppendBogusBr ( B ) ; var G = F . cells [ E ] ; if ( A ) F . insertBefore ( B , G ) ; else if ( G . nextSibling ) F . insertBefore ( B , G . nextSibling ) ; else F . appendChild ( B ) ; } } ; FCKTableHandler . DeleteColumns = function ( A ) { if ( ! A ) { var B = FCKTableHandler . GetSelectedCells ( ) ; for ( var i = B . length ; i >= 0 ; i -- ) { if ( B [ i ] ) FCKTableHandler . DeleteColumns ( B [ i ] ) ; } ; return ; } ; if ( ! A ) return ; var C = FCKTools . GetElementAscensor ( A , 'TABLE' ) ; var D = A . cellIndex ; for ( var i = C . rows . length - 1 ; i >= 0 ; i -- ) { var E = C . rows [ i ] ; if ( D == 0 && E . cells . length == 1 ) { FCKTableHandler . DeleteRows ( E ) ; continue ; } ; if ( E . cells [ D ] ) E . removeChild ( E . cells [ D ] ) ; } } ; FCKTableHandler . InsertCell = function ( A , B ) { var C = null ; var D = this . GetSelectedCells ( ) ; if ( D && D . length ) C = D [ B ? 0 : ( D . length - 1 ) ] ; if ( ! C ) return null ; var E = FCK . EditorDocument . createElement ( 'TD' ) ; if ( FCKBrowserInfo . IsGeckoLike ) FCKTools . AppendBogusBr ( E ) ; if ( ! B && C . cellIndex == C . parentNode . cells . length - 1 ) C . parentNode . appendChild ( E ) ; else C . parentNode . insertBefore ( E , B ? C : C . nextSibling ) ; return E ; } ; FCKTableHandler . DeleteCell = function ( A ) { if ( A . parentNode . cells . length == 1 ) { FCKTableHandler . DeleteRows ( FCKTools . GetElementAscensor ( A , 'TR' ) ) ; return ; } ; A . parentNode . removeChild ( A ) ; } ; FCKTableHandler . DeleteCells = function ( ) { var A = FCKTableHandler . GetSelectedCells ( ) ; for ( var i = A . length - 1 ; i >= 0 ; i -- ) { FCKTableHandler . DeleteCell ( A [ i ] ) ; } } ; FCKTableHandler . _MarkCells = function ( A , B ) { for ( var i = 0 ; i < A . length ; i ++ ) A [ i ] [ B ] = true ; } ; FCKTableHandler . _UnmarkCells = function ( A , B ) { for ( var i = 0 ; i < A . length ; i ++ ) { if ( FCKBrowserInfo . IsIE ) A [ i ] . removeAttribute ( B ) ; else delete A [ i ] [ B ] ; } } ; FCKTableHandler . _ReplaceCellsByMarker = function ( A , B , C ) { for ( var i = 0 ; i < A . length ; i ++ ) { for ( var j = 0 ; j < A [ i ] . length ; j ++ ) { if ( A [ i ] [ j ] [ B ] ) A [ i ] [ j ] = C ; } } } ; FCKTableHandler . _GetMarkerGeometry = function ( A , B , C , D ) { var E = 0 ; var F = 0 ; var G = 0 ; var H = 0 ; for ( var i = C ; A [ B ] [ i ] && A [ B ] [ i ] [ D ] ; i ++ ) E ++ ; for ( var i = C - 1 ; A [ B ] [ i ] && A [ B ] [ i ] [ D ] ; i -- ) { E ++ ; G ++ ; } ; for ( var i = B ; A [ i ] && A [ i ] [ C ] && A [ i ] [ C ] [ D ] ; i ++ ) F ++ ; for ( var i = B - 1 ; A [ i ] && A [ i ] [ C ] && A [ i ] [ C ] [ D ] ; i -- ) { F ++ ; H ++ ; } ; return { 'width' : E , 'height' : F , 'x' : G , 'y' : H } ; } ; FCKTableHandler . CheckIsSelectionRectangular = function ( ) { var A = FCKTableHandler . GetSelectedCells ( ) ; if ( A . length < 1 ) return false ; this . _MarkCells ( A , '_CellSelected' ) ; var B = this . _CreateTableMap ( A [ 0 ] . parentNode . parentNode ) ; var C = A [ 0 ] . parentNode . rowIndex ; var D = this . _GetCellIndexSpan ( B , C , A [ 0 ] ) ; var E = this . _GetMarkerGeometry ( B , C , D , '_CellSelected' ) ; var F = D - E . x ; var G = C - E . y ; if ( E . width >= E . height ) { for ( D = F ; D < F + E . width ; D ++ ) { C = G + ( D - F ) % E . height ; if ( ! B [ C ] || ! B [ C ] [ D ] ) { this . _UnmarkCells ( A , '_CellSelected' ) ; return false ; } ; var g = this . _GetMarkerGeometry ( B , C , D , '_CellSelected' ) ; if ( g . width != E . width || g . height != E . height ) { this . _UnmarkCells ( A , '_CellSelected' ) ; return false ; } } } else { for ( C = G ; C < G + E . height ; C ++ ) { D = F + ( C - G ) % E . width ; if ( ! B [ C ] || ! B [ C ] [ D ] ) { this . _UnmarkCells ( A , '_CellSelected' ) ; return false ; } ; var g = this . _GetMarke
FCKTableHandler . GetSelectedCells = function ( ) { if ( FCKSelection . GetType ( ) == 'Control' ) { var A = FCKSelection . MoveToAncestorNode ( 'TD' ) ; return A ? [ A ] : [ ] ; } ; var B = [ ] ; var C = FCKSelection . GetSelection ( ) . createRange ( ) ; var D = FCKSelection . GetParentElement ( ) ; if ( D && D . tagName . Equals ( 'TD' , 'TH' ) ) B [ 0 ] = D ; else { D = FCKSelection . MoveToAncestorNode ( 'TABLE' ) ; if ( D ) { for ( var i = 0 ; i < D . cells . length ; i ++ ) { var E = FCK . EditorDocument . body . createTextRange ( ) ; E . moveToElementText ( D . cells [ i ] ) ; if ( C . inRange ( E ) || ( C . compareEndPoints ( 'StartToStart' , E ) >= 0 && C . compareEndPoints ( 'StartToEnd' , E ) <= 0 ) || ( C . compareEndPoints ( 'EndToStart' , E ) >= 0 && C . compareEndPoints ( 'EndToEnd' , E ) <= 0 ) ) { B [ B . length ] = D . cells [ i ] ; } } } } ; return B ; } ;
var FCKXml = function ( ) { this . Error = false ; } ; FCKXml . GetAttribute = function ( A , B , C ) { var D = A . attributes . getNamedItem ( B ) ; return D ? D . value : C ; } ; FCKXml . TransformToObject = function ( A ) { if ( ! A ) return null ; var B = { } ; var C = A . attributes ; for ( var i = 0 ; i < C . length ; i ++ ) { var D = C [ i ] ; B [ D . name ] = D . value ; } ; var E = A . childNodes ; for ( i = 0 ; i < E . length ; i ++ ) { var F = E [ i ] ; if ( F . nodeType == 1 ) { var G = '$' + F . nodeName ; var H = B [ G ] ; if ( ! H ) H = B [ G ] = [ ] ; H . push ( this . TransformToObject ( F ) ) ; } } ; return B ; } ;
FCKXml . prototype = { LoadUrl : function ( A ) { this . Error = false ; var B = FCKTools . CreateXmlObject ( 'XmlHttp' ) ; if ( ! B ) { this . Error = true ; return ; } ; B . open ( "GET" , A , false ) ; B . send ( null ) ; if ( B . status == 200 || B . status == 304 || ( B . status == 0 && B . readyState == 4 ) ) { this . DOMDocument = B . responseXML ; if ( ! this . DOMDocument || this . DOMDocument . firstChild == null ) { this . DOMDocument = FCKTools . CreateXmlObject ( 'DOMDocument' ) ; this . DOMDocument . async = false ; this . DOMDocument . resolveExternals = false ; this . DOMDocument . loadXML ( B . responseText ) ; } } else { this . DOMDocument = null ; } ; if ( this . DOMDocument == null || this . DOMDocument . firstChild == null ) { this . Error = true ; if ( window . confirm ( 'Error loading "' + A + '"\r\nDo you want to see more info?' ) ) alert ( 'URL requested: "' + A + '"\r\nServer response:\r\nStatus: ' + B . status + '\r\nResponse text:\r\n' + B . responseText ) ; } } , SelectNodes : function ( A , B ) { if ( this . Error ) return [ ] ; if ( B ) return B . selectNodes ( A ) ; else return this . DOMDocument . selectNodes ( A ) ; } , SelectSingleNode : function ( A , B ) { if ( this . Error ) return null ; if ( B ) return B . selectSingleNode ( A ) ; else return this . DOMDocument . selectSingleNode ( A ) ; } } ;
var FCKNamedCommand = function ( A ) { this . Name = A ; } ; FCKNamedCommand . prototype . Execute = function ( ) { FCK . ExecuteNamedCommand ( this . Name ) ; } ; FCKNamedCommand . prototype . GetState = function ( ) { if ( FCK . EditMode != 0 ) return - 1 ; return FCK . GetNamedCommandState ( this . Name ) ; } ;
var FCKStyleCommand = function ( ) { } ; FCKStyleCommand . prototype = { Name : 'Style' , Execute : function ( A , B ) { FCKUndo . SaveUndoStep ( ) ; if ( B . Selected ) FCK . Styles . RemoveStyle ( B . Style ) ; else FCK . Styles . ApplyStyle ( B . Style ) ; FCKUndo . SaveUndoStep ( ) ; FCK . Focus ( ) ; FCK . Events . FireEvent ( 'OnSelectionChange' ) ; } , GetState : function ( ) { if ( FCK . EditMode != 0 || ! FCK . EditorDocument ) return - 1 ; if ( FCKSelection . GetType ( ) == 'Control' ) { var A = FCKSelection . GetSelectedElement ( ) ; if ( ! A || ! FCKStyles . CheckHasObjectStyle ( A . nodeName . toLowerCase ( ) ) ) return - 1 ; } ; return 0 ; } } ;
var FCKDialogCommand = function ( A , B , C , D , E , F , G , H ) { this . Name = A ; this . Title = B ; this . Url = C ; this . Width = D ; this . Height = E ; this . CustomValue = H ; this . GetStateFunction = F ; this . GetStateParam = G ; this . Resizable = false ; } ; FCKDialogCommand . prototype . Execute = function ( ) { FCKDialog . OpenDialog ( 'FCKDialog_' + this . Name , this . Title , this . Url , this . Width , this . Height , this . CustomValue , null , this . Resizable ) ; } ; FCKDialogCommand . prototype . GetState = function ( ) { if ( this . GetStateFunction ) return this . GetStateFunction ( this . GetStateParam ) ; else return FCK . EditMode == 0 ? 0 : - 1 ; } ; var FCKUndefinedCommand = function ( ) { this . Name = 'Undefined' ; } ; FCKUndefinedCommand . prototype . Execute = function ( ) { alert ( FCKLang . NotImplemented ) ; } ; FCKUndefinedCommand . prototype . GetState = function ( ) { return 0 ; } ; var FCKFormatBlockCommand = function ( ) { } ; FCKFormatBlockCommand . prototype = { Name : 'FormatBlock' , Execute : FCKStyleCommand . prototype . Execute , GetState : function ( ) { return FCK . EditorDocument ? 0 : - 1 ; } } ; var FCKFontNameCommand = function ( ) { } ; FCKFontNameCommand . prototype = { Name : 'FontName' , Execute : FCKStyleCommand . prototype . Execute , GetState : FCKFormatBlockCommand . prototype . GetState } ; var FCKFontSizeCommand = function ( ) { } ; FCKFontSizeCommand . prototype = { Name : 'FontSize' , Execute : FCKStyleCommand . prototype . Execute , GetState : FCKFormatBlockCommand . prototype . GetState } ; var FCKPreviewCommand = function ( ) { this . Name = 'Preview' ; } ; FCKPreviewCommand . prototype . Execute = function ( ) { FCK . Preview ( ) ; } ; FCKPreviewCommand . prototype . GetState = function ( ) { return 0 ; } ; var FCKSaveCommand = function ( ) { this . Name = 'Save' ; } ; FCKSaveCommand . prototype . Execute = function ( ) { var A = FCK . GetParentForm ( ) ; if ( typeof ( A . onsubmit ) == 'function' ) { var B = A . onsubmit ( ) ; if ( B != null && B === false ) return ; } ; if ( typeof ( A . submit ) == 'function' ) A . submit ( ) ; else A . submit . click ( ) ; } ; FCKSaveCommand . prototype . GetState = function ( ) { return 0 ; } ; var FCKNewPageCommand = function ( ) { this . Name = 'NewPage' ; } ; FCKNewPageCommand . prototype . Execute = function ( ) { FCKUndo . SaveUndoStep ( ) ; FCK . SetData ( '' ) ; FCKUndo . Typing = true ; FCK . Focus ( ) ; } ; FCKNewPageCommand . prototype . GetState = function ( ) { return 0 ; } ; var FCKSourceCommand = function ( ) { this . Name = 'Source' ; } ; FCKSourceCommand . prototype . Execute = function ( ) { if ( FCKConfig . SourcePopup ) { var A = FCKConfig . ScreenWidth * 0.65 ; var B = FCKConfig . ScreenHeight * 0.65 ; FCKDialog . OpenDialog ( 'FCKDialog_Source' , FCKLang . Source , 'dialog/fck_source.html' , A , B , null , null , true ) ; } else FCK . SwitchEditMode ( ) ; } ; FCKSourceCommand . prototype . GetState = function ( ) { return ( FCK . EditMode == 0 ? 0 : 1 ) ; } ; var FCKUndoCommand = function ( ) { this . Name = 'Undo' ; } ; FCKUndoCommand . prototype . Execute = function ( ) { FCKUndo . Undo ( ) ; } ; FCKUndoCommand . prototype . GetState = function ( ) { if ( FCK . EditMode != 0 ) return - 1 ; return ( FCKUndo . CheckUndoState ( ) ? 0 : - 1 ) ; } ; var FCKRedoCommand = function ( ) { this . Name = 'Redo' ; } ; FCKRedoCommand . prototype . Execute = function ( ) { FCKUndo . Redo ( ) ; } ; FCKRedoCommand . prototype . GetState = function ( ) { if ( FCK . EditMode != 0 ) return - 1 ; return ( FCKUndo . CheckRedoState ( ) ? 0 : - 1 ) ; } ; var FCKPageBreakCommand = function ( ) { this . Name = 'PageBreak' ; } ; FCKPageBreakCommand . prototype . Execute = function ( ) { FCKUndo . SaveUndoStep ( ) ; var e = FCK . EditorDocument . createElement ( 'DIV' ) ; e . style . pageBreakAfter = 'always' ; e . innerHTML = '<span style="DISPLAY:none"> </span>' ; var A = FCKDocumentProcessor _CreateFakeImage ( 'FCK__PageBreak' , e ) ; var B = new FCKDomRange ( FCK . EditorWindow ) ; B . MoveToSelection ( ) ; var C = B . SplitBlock ( ) ; B . InsertNode ( A ) ; FCK . Events . FireEvent ( 'OnSelectionChange' ) ; } ; FCKPageBreakCommand . prototype . GetState = function ( ) { if ( FCK . EditMode != 0 ) return - 1 ; return 0 ; } ; var FCKUnlinkCommand = function ( ) { this . Name = 'Unlink' ; } ; FCKUnlinkCommand . prototype . Execute = function ( ) { FCKUndo . SaveUndoStep ( ) ; if ( FCKBrowserInfo . IsGeckoLike ) { var A = FCK . Selection . MoveToAncestorNode ( 'A' ) ; if ( A ) FCKTools . RemoveOuterTags ( A ) ; return ; } ; FCK . ExecuteNamedCommand ( this . Name ) ; } ; FCKUnlinkCommand . prototype . GetState = function ( ) { if ( FCK . EditMode != 0 ) return - 1 ; var A = FCK . GetNamedCommandState ( this . Name ) ; if ( A == 0 && FCK . EditMode == 0 ) { var B = FCKSelection . MoveToAncestorNode ( 'A' ) ; var C = ( B && B . name . length > 0 && B . href . length == 0 ) ; if ( C ) A = - 1 ; } ; return A ; } ; FCKVisitLinkCommand = function ( ) { this . Name = 'VisitLink' ; } ; FCKVisitLinkCommand . prototype = { GetState : function ( ) { if ( FCK . EditMode != 0 ) return
var FCKShowBlockCommand = function ( A , B ) { this . Name = A ; if ( B != undefined ) this . _SavedState = B ; else this . _SavedState = null ; } ; FCKShowBlockCommand . prototype . Execute = function ( ) { var A = this . GetState ( ) ; if ( A == - 1 ) return ; var B = FCK . EditorDocument . body ; if ( A == 1 ) B . className = B . className . replace ( /(^| )FCK__ShowBlocks/g , '' ) ; else B . className += ' FCK__ShowBlocks' ; if ( FCKBrowserInfo . IsIE ) { try { FCK . EditorDocument . selection . createRange ( ) . select ( ) ; } catch ( e ) { } } else { var C = FCK . EditorWindow . getSelection ( ) . focusNode ; if ( C . nodeType != 1 ) C = C . parentNode ; FCKDomTools . ScrollIntoView ( C , false ) ; } ; FCK . Events . FireEvent ( 'OnSelectionChange' ) ; } ; FCKShowBlockCommand . prototype . GetState = function ( ) { if ( FCK . EditMode != 0 ) return - 1 ; if ( ! FCK . EditorDocument ) return 0 ; if ( /FCK__ShowBlocks(?:\s|$)/ . test ( FCK . EditorDocument . body . className ) ) return 1 ; return 0 ; } ; FCKShowBlockCommand . prototype . SaveState = function ( ) { this . _SavedState = this . GetState ( ) ; } ; FCKShowBlockCommand . prototype . RestoreState = function ( ) { if ( this . _SavedState != null && this . GetState ( ) != this . _SavedState ) this . Execute ( ) ; } ;
var FCKSpellCheckCommand = function ( ) { this . Name = 'SpellCheck' ; this . IsEnabled = ( FCKConfig . SpellChecker == 'ieSpell' || FCKConfig . SpellChecker == 'SpellerPages' ) ; } ; FCKSpellCheckCommand . prototype . Execute = function ( ) { switch ( FCKConfig . SpellChecker ) { case 'ieSpell' : this . _RunIeSpell ( ) ; break ; case 'SpellerPages' : FCKDialog . OpenDialog ( 'FCKDialog_SpellCheck' , 'Spell Check' , 'dialog/fck_spellerpages.html' , 440 , 480 ) ; break ; } } ; FCKSpellCheckCommand . prototype . _RunIeSpell = function ( ) { try { var A = new ActiveXObject ( "ieSpell.ieSpellExtension" ) ; A . CheckAllLinkedDocuments ( FCK . EditorDocument ) ; } catch ( e ) { if ( e . number == - 2146827859 ) { if ( confirm ( FCKLang . IeSpellDownload ) ) window . open ( FCKConfig . IeSpellDownloadUrl , 'IeSpellDownload' ) ; } else alert ( 'Error Loading ieSpell: ' + e . message + ' (' + e . number + ')' ) ; } } ; FCKSpellCheckCommand . prototype . GetState = function ( ) { if ( FCK . EditMode != 0 ) return - 1 ; return this . IsEnabled ? 0 : - 1 ; } ;
var FCKTextColorCommand = function ( A ) { this . Name = A == 'ForeColor' ? 'TextColor' : 'BGColor' ; this . Type = A ; var B ; if ( FCKBrowserInfo . IsIE ) B = window ; else if ( FCK . ToolbarSet . _IFrame ) B = FCKTools . GetElementWindow ( FCK . ToolbarSet . _IFrame ) ; else B = window . parent ; this . _Panel = new FCKPanel ( B ) ; this . _Panel . AppendStyleSheet ( FCKConfig . SkinEditorCSS ) ; this . _Panel . MainNode . className = 'FCK_Panel' ; this . _CreatePanelBody ( this . _Panel . Document , this . _Panel . MainNode ) ; FCK . ToolbarSet . ToolbarItems . GetItem ( this . Name ) . RegisterPanel ( this . _Panel ) ; FCKTools . DisableSelection ( this . _Panel . Document . body ) ; } ; FCKTextColorCommand . prototype . Execute = function ( A , B , C ) { this . _Panel . Show ( A , B , C ) ; } ; FCKTextColorCommand . prototype . SetColor = function ( A ) { FCKUndo . SaveUndoStep ( ) ; var B = FCKStyles . GetStyle ( '_FCK_' + ( this . Type == 'ForeColor' ? 'Color' : 'BackColor' ) ) ; if ( ! A || A . length == 0 ) FCK . Styles . RemoveStyle ( B ) ; else { B . SetVariable ( 'Color' , A ) ; FCKStyles . ApplyStyle ( B ) ; } ; FCKUndo . SaveUndoStep ( ) ; FCK . Focus ( ) ; FCK . Events . FireEvent ( 'OnSelectionChange' ) ; } ; FCKTextColorCommand . prototype . GetState = function ( ) { if ( FCK . EditMode != 0 ) return - 1 ; return 0 ; } ; function FCKTextColorCommand _OnMouseOver ( ) { this . className = 'ColorSelected' ; } ; function FCKTextColorCommand _OnMouseOut ( ) { this . className = 'ColorDeselected' ; } ; function FCKTextColorCommand _OnClick ( A , B , C ) { this . className = 'ColorDeselected' ; B . SetColor ( C ) ; B . _Panel . Hide ( ) ; } ; function FCKTextColorCommand _AutoOnClick ( A , B ) { this . className = 'ColorDeselected' ; B . SetColor ( '' ) ; B . _Panel . Hide ( ) ; } ; function FCKTextColorCommand _MoreOnClick ( A , B ) { this . className = 'ColorDeselected' ; B . _Panel . Hide ( ) ; FCKDialog . OpenDialog ( 'FCKDialog_Color' , FCKLang . DlgColorTitle , 'dialog/fck_colorselector.html' , 410 , 320 , FCKTools . Bind ( B , B . SetColor ) ) ; } ; FCKTextColorCommand . prototype . _CreatePanelBody = function ( A , B ) { function CreateSelectionDiv ( ) { var C = A . createElement ( "DIV" ) ; C . className = 'ColorDeselected' ; FCKTools . AddEventListenerEx ( C , 'mouseover' , FCKTextColorCommand _OnMouseOver ) ; FCKTools . AddEventListenerEx ( C , 'mouseout' , FCKTextColorCommand _OnMouseOut ) ; return C ; } ; var D = B . appendChild ( A . createElement ( "TABLE" ) ) ; D . className = 'ForceBaseFont' ; D . style . tableLayout = 'fixed' ; D . cellPadding = 0 ; D . cellSpacing = 0 ; D . border = 0 ; D . width = 150 ; var E = D . insertRow ( - 1 ) . insertCell ( - 1 ) ; E . colSpan = 8 ; var C = E . appendChild ( CreateSelectionDiv ( ) ) ; C . innerHTML = '<table cellspacing="0" cellpadding="0" width="100%" border="0">\n <tr>\n <td><div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #000000"></div></div></td>\n <td nowrap width="100%" align="center">' + FCKLang . ColorAutomatic + '</td>\n </tr>\n </table>' ; FCKTools . AddEventListenerEx ( C , 'click' , FCKTextColorCommand _AutoOnClick , this ) ; if ( ! FCKBrowserInfo . IsIE ) C . style . width = '96%' ; var G = FCKConfig . FontColors . toString ( ) . split ( ',' ) ; var H = 0 ; while ( H < G . length ) { var I = D . insertRow ( - 1 ) ; for ( var i = 0 ; i < 8 ; i ++ , H ++ ) { if ( H < G . length ) { var J = G [ H ] . split ( '/' ) ; var K = '#' + J [ 0 ] ; var L = J [ 1 ] || K ; } ; C = I . insertCell ( - 1 ) . appendChild ( CreateSelectionDiv ( ) ) ; C . innerHTML = '<div class="ColorBoxBorder"><div class="ColorBox" style="background-color: ' + K + '"></div></div>' ; if ( H >= G . length ) C . style . visibility = 'hidden' ; else FCKTools . AddEventListenerEx ( C , 'click' , FCKTextColorCommand _OnClick , [ this , L ] ) ; } } ; if ( FCKConfig . EnableMoreFontColors ) { E = D . insertRow ( - 1 ) . insertCell ( - 1 ) ; E . colSpan = 8 ; C = E . appendChild ( CreateSelectionDiv ( ) ) ; C . innerHTML = '<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td nowrap align="center">' + FCKLang . ColorMoreColors + '</td></tr></table>' ; FCKTools . AddEventListenerEx ( C , 'click' , FCKTextColorCommand _MoreOnClick , this ) ; } ; if ( ! FCKBrowserInfo . IsIE ) C . style . width = '96%' ; } ;
var FCKPastePlainTextCommand = function ( ) { this . Name = 'PasteText' ; } ; FCKPastePlainTextCommand . prototype . Execute = function ( ) { FCK . PasteAsPlainText ( ) ; } ; FCKPastePlainTextCommand . prototype . GetState = function ( ) { if ( FCK . EditMode != 0 ) return - 1 ; return FCK . GetNamedCommandState ( 'Paste' ) ; } ;
var FCKPasteWordCommand = function ( ) { this . Name = 'PasteWord' ; } ; FCKPasteWordCommand . prototype . Execute = function ( ) { FCK . PasteFromWord ( ) ; } ; FCKPasteWordCommand . prototype . GetState = function ( ) { if ( FCK . EditMode != 0 || FCKConfig . ForcePasteAsPlainText ) return - 1 ; else return FCK . GetNamedCommandState ( 'Paste' ) ; } ;
var FCKTableCommand = function ( A ) { this . Name = A ; } ; FCKTableCommand . prototype . Execute = function ( ) { FCKUndo . SaveUndoStep ( ) ; if ( ! FCKBrowserInfo . IsGecko ) { switch ( this . Name ) { case 'TableMergeRight' : return FCKTableHandler . MergeRight ( ) ; case 'TableMergeDown' : return FCKTableHandler . MergeDown ( ) ; } } ; switch ( this . Name ) { case 'TableInsertRowAfter' : return FCKTableHandler . InsertRow ( false ) ; case 'TableInsertRowBefore' : return FCKTableHandler . InsertRow ( true ) ; case 'TableDeleteRows' : return FCKTableHandler . DeleteRows ( ) ; case 'TableInsertColumnAfter' : return FCKTableHandler . InsertColumn ( false ) ; case 'TableInsertColumnBefore' : return FCKTableHandler . InsertColumn ( true ) ; case 'TableDeleteColumns' : return FCKTableHandler . DeleteColumns ( ) ; case 'TableInsertCellAfter' : return FCKTableHandler . InsertCell ( null , false ) ; case 'TableInsertCellBefore' : return FCKTableHandler . InsertCell ( null , true ) ; case 'TableDeleteCells' : return FCKTableHandler . DeleteCells ( ) ; case 'TableMergeCells' : return FCKTableHandler . MergeCells ( ) ; case 'TableHorizontalSplitCell' : return FCKTableHandler . HorizontalSplitCell ( ) ; case 'TableVerticalSplitCell' : return FCKTableHandler . VerticalSplitCell ( ) ; case 'TableDelete' : return FCKTableHandler . DeleteTable ( ) ; default : return alert ( FCKLang . UnknownCommand . replace ( /%1/g , this . Name ) ) ; } } ; FCKTableCommand . prototype . GetState = function ( ) { if ( FCK . EditorDocument != null && FCKSelection . HasAncestorNode ( 'TABLE' ) ) { switch ( this . Name ) { case 'TableHorizontalSplitCell' : case 'TableVerticalSplitCell' : if ( FCKTableHandler . GetSelectedCells ( ) . length == 1 ) return 0 ; else return - 1 ; case 'TableMergeCells' : if ( FCKTableHandler . CheckIsSelectionRectangular ( ) && FCKTableHandler . GetSelectedCells ( ) . length > 1 ) return 0 ; else return - 1 ; case 'TableMergeRight' : return FCKTableHandler . GetMergeRightTarget ( ) ? 0 : - 1 ; case 'TableMergeDown' : return FCKTableHandler . GetMergeDownTarget ( ) ? 0 : - 1 ; default : return 0 ; } } else return - 1 ; } ;
var FCKFitWindow = function ( ) { this . Name = 'FitWindow' ; } ; FCKFitWindow . prototype . Execute = function ( ) { var A = window . frameElement ; var B = A . style ; var C = parent ; var D = C . document . documentElement ; var E = C . document . body ; var F = E . style ; var G ; var H = new FCKDomRange ( FCK . EditorWindow ) ; H . MoveToSelection ( ) ; var I = FCKTools . GetScrollPosition ( FCK . EditorWindow ) ; if ( ! this . IsMaximized ) { if ( FCKBrowserInfo . IsIE ) C . attachEvent ( 'onresize' , FCKFitWindow _Resize ) ; else C . addEventListener ( 'resize' , FCKFitWindow _Resize , true ) ; this . _ScrollPos = FCKTools . GetScrollPosition ( C ) ; G = A ; while ( ( G = G . parentNode ) ) { if ( G . nodeType == 1 ) { G . _fckSavedStyles = FCKTools . SaveStyles ( G ) ; G . style . zIndex = FCKConfig . FloatingPanelsZIndex - 1 ; } } ; if ( FCKBrowserInfo . IsIE ) { this . documentElementOverflow = D . style . overflow ; D . style . overflow = 'hidden' ; F . overflow = 'hidden' ; } else { F . overflow = 'hidden' ; F . width = '0px' ; F . height = '0px' ; } ; this . _EditorFrameStyles = FCKTools . SaveStyles ( A ) ; var J = FCKTools . GetViewPaneSize ( C ) ; B . position = "absolute" ; A . offsetLeft ; B . zIndex = FCKConfig . FloatingPanelsZIndex - 1 ; B . left = "0px" ; B . top = "0px" ; B . width = J . Width + "px" ; B . height = J . Height + "px" ; if ( ! FCKBrowserInfo . IsIE ) { B . borderRight = B . borderBottom = "9999px solid white" ; B . backgroundColor = "white" ; } ; C . scrollTo ( 0 , 0 ) ; var K = FCKTools . GetWindowPosition ( C , A ) ; if ( K . x != 0 ) B . left = ( - 1 * K . x ) + "px" ; if ( K . y != 0 ) B . top = ( - 1 * K . y ) + "px" ; this . IsMaximized = true ; } else { if ( FCKBrowserInfo . IsIE ) C . detachEvent ( "onresize" , FCKFitWindow _Resize ) ; else C . removeEventListener ( "resize" , FCKFitWindow _Resize , true ) ; G = A ; while ( ( G = G . parentNode ) ) { if ( G . _fckSavedStyles ) { FCKTools . RestoreStyles ( G , G . _fckSavedStyles ) ; G . _fckSavedStyles = null ; } } ; if ( FCKBrowserInfo . IsIE ) D . style . overflow = this . documentElementOverflow ; FCKTools . RestoreStyles ( A , this . _EditorFrameStyles ) ; C . scrollTo ( this . _ScrollPos . X , this . _ScrollPos . Y ) ; this . IsMaximized = false ; } ; FCKToolbarItems . GetItem ( 'FitWindow' ) . RefreshState ( ) ; if ( FCK . EditMode == 0 ) FCK . EditingArea . MakeEditable ( ) ; FCK . Focus ( ) ; H . Select ( ) ; FCK . EditorWindow . scrollTo ( I . X , I . Y ) ; } ; FCKFitWindow . prototype . GetState = function ( ) { if ( FCKConfig . ToolbarLocation != 'In' ) return - 1 ; else return ( this . IsMaximized ? 1 : 0 ) ; } ; function FCKFitWindow _Resize ( ) { var A = FCKTools . GetViewPaneSize ( parent ) ; var B = window . frameElement . style ; B . width = A . Width + 'px' ; B . height = A . Height + 'px' ; } ;
var FCKListCommand = function ( A , B ) { this . Name = A ; this . TagName = B ; } ; FCKListCommand . prototype = { GetState : function ( ) { if ( FCK . EditMode != 0 || ! FCK . EditorWindow ) return - 1 ; var A = FCKSelection . GetBoundaryParentElement ( true ) ; var B = A ; while ( B ) { if ( B . nodeName . IEquals ( [ 'ul' , 'ol' ] ) ) break ; B = B . parentNode ; } ; if ( B && B . nodeName . IEquals ( this . TagName ) ) return 1 ; else return 0 ; } , Execute : function ( ) { FCKUndo . SaveUndoStep ( ) ; var A = FCK . EditorDocument ; var B = new FCKDomRange ( FCK . EditorWindow ) ; B . MoveToSelection ( ) ; var C = this . GetState ( ) ; if ( C == 0 ) { FCKDomTools . TrimNode ( A . body ) ; if ( ! A . body . firstChild ) { var D = A . createElement ( 'p' ) ; A . body . appendChild ( D ) ; B . MoveToNodeContents ( D ) ; } } ; var E = B . CreateBookmark ( ) ; var F = [ ] ; var G = { } ; var H = new FCKDomRangeIterator ( B ) ; var I ; H . ForceBrBreak = ( C == 0 ) ; var J = true ; var K = null ; while ( J ) { while ( ( I = H . GetNextParagraph ( ) ) ) { var L = new FCKElementPath ( I ) ; var M = null ; var N = false ; var O = L . BlockLimit ; for ( var i = L . Elements . length - 1 ; i >= 0 ; i -- ) { var P = L . Elements [ i ] ; if ( P . nodeName . IEquals ( [ 'ol' , 'ul' ] ) ) { if ( O . _FCK _ListGroupObject ) O . _FCK _ListGroupObject = null ; var Q = P . _FCK _ListGroupObject ; if ( Q ) Q . contents . push ( I ) ; else { Q = { 'root' : P , 'contents' : [ I ] } ; F . push ( Q ) ; FCKDomTools . SetElementMarker ( G , P , '_FCK_ListGroupObject' , Q ) ; } ; N = true ; break ; } } ; if ( N ) continue ; var R = O ; if ( R . _FCK _ListGroupObject ) R . _FCK _ListGroupObject . contents . push ( I ) ; else { var Q = { 'root' : R , 'contents' : [ I ] } ; FCKDomTools . SetElementMarker ( G , R , '_FCK_ListGroupObject' , Q ) ; F . push ( Q ) ; } } ; if ( FCKBrowserInfo . IsIE ) J = false ; else { if ( K == null ) { K = [ ] ; var T = FCKSelection . GetSelection ( ) ; if ( T && F . length == 0 ) K . push ( T . getRangeAt ( 0 ) ) ; for ( var i = 1 ; T && i < T . rangeCount ; i ++ ) K . push ( T . getRangeAt ( i ) ) ; } ; if ( K . length < 1 ) J = false ; else { var U = FCKW3CRange . CreateFromRange ( A , K . shift ( ) ) ; B . _Range = U ; B . _UpdateElementInfo ( ) ; if ( B . StartNode . nodeName . IEquals ( 'td' ) ) B . SetStart ( B . StartNode , 1 ) ; if ( B . EndNode . nodeName . IEquals ( 'td' ) ) B . SetEnd ( B . EndNode , 2 ) ; H = new FCKDomRangeIterator ( B ) ; H . ForceBrBreak = ( C == 0 ) ; } } } ; var W = [ ] ; while ( F . length > 0 ) { var Q = F . shift ( ) ; if ( C == 0 ) { if ( Q . root . nodeName . IEquals ( [ 'ul' , 'ol' ] ) ) this . _ChangeListType ( Q , G , W ) ; else this . _CreateList ( Q , W ) ; } else if ( C == 1 && Q . root . nodeName . IEquals ( [ 'ul' , 'ol' ] ) ) this . _RemoveList ( Q , G ) ; } ; for ( var i = 0 ; i < W . length ; i ++ ) { var M = W [ i ] ; var Z = false ; var a = M ; while ( ! Z ) { a = a . nextSibling ; if ( a && a . nodeType == 3 && a . nodeValue . search ( /^[\n\r\t ]*$/ ) == 0 ) continue ; Z = true ; } ; if ( a && a . nodeName . IEquals ( this . TagName ) ) { a . parentNode . removeChild ( a ) ; while ( a . firstChild ) M . appendChild ( a . removeChild ( a . firstChild ) ) ; } ; Z = false ; a = M ; while ( ! Z ) { a = a . previousSibling ; if ( a && a . nodeType == 3 && a . nodeValue . search ( /^[\n\r\t ]*$/ ) == 0 ) continue ; Z = true ; } ; if ( a && a . nodeName . IEquals ( this . TagName ) ) { a . parentNode . removeChild ( a ) ; while ( a . lastChild ) M . insertBefore ( a . removeChild ( a . lastChild ) , M . firstChild ) ; } } ; FCKDomTools . ClearAllMarkers ( G ) ; B . MoveToBookmark ( E ) ; B . Select ( ) ; FCK . Focus ( ) ; FCK . Events . FireEvent ( 'OnSelectionChange' ) ; } , _ChangeListType : function ( A , B , C ) { var D = FCKDomTools . ListToArray ( A . root , B ) ; var E = [ ] ; for ( var i = 0 ; i < A . contents . length ; i ++ ) { var F = A . contents [ i ] ; F = FCKTools . GetElementAscensor ( F , 'li' ) ; if ( ! F || F . _FCK _ListItem _Processed ) continue ; E . push ( F ) ; FCKDomTools . SetElementMarker ( B , F , '_FCK_ListItem_Processed' , true ) ; } ; var G = FCKTools . GetElementDocument ( A . root ) . createElement ( this . TagName ) ; for ( var i = 0 ; i < E . length ; i ++ ) { var H = E [ i ] . _FCK _ListArray _Index ; D [ H ] . parent = G ; } ; var I = FCKDomTools . ArrayToList ( D , B ) ; for ( var i = 0 ; i < I . listNode . childNodes . length ; i ++ ) { if ( I . listNode . childNodes [ i ] . nodeName . IEquals ( this . TagName ) ) C . push ( I . listNode . childNodes [ i ] ) ; } ; A . root . parentNode . replaceChild ( I . listNode , A . root ) ; } , _CreateList : function ( A , B ) { var C = A . contents ; var D = FCKTools . GetElementDocument ( A . root ) ; var E = [ ] ; if ( C . length == 1 && C [ 0 ] == A . root ) { var F = D . createElement ( 'div' ) ; while ( C [ 0 ] . firstChild ) F . appendChild ( C [ 0 ] . removeChild ( C [ 0 ] . firstChild ) ) ; C [ 0 ] . appendChild ( F ) ; C [ 0 ] = F ; } ; var G = A . contents [ 0 ] . parentNode ; for ( var i = 0 ; i < C . length ; i ++ ) G = FCKDomTools . GetCommonParents ( G , C [ i ] . parentNode ) . pop ( ) ; for ( var i = 0 ; i < C . length ; i ++ ) { var H = C [ i ] ; while ( H . parentNode ) { if ( H . parentNode == G ) { E . push ( H ) ; break ; } ; H = H . parentNode ; } } ; if ( E . length < 1 ) return ; var I = E [ E . length - 1 ] . nextSibling ; var J = D . createElement ( this . TagName ) ; B . push ( J ) ; while ( E .
var FCKJustifyCommand = function ( A ) { this . AlignValue = A ; var B = FCKConfig . ContentLangDirection . toLowerCase ( ) ; this . IsDefaultAlign = ( A == 'left' && B == 'ltr' ) || ( A == 'right' && B == 'rtl' ) ; var C = this . _CssClassName = ( function ( ) { var D = FCKConfig . JustifyClasses ; if ( D ) { switch ( A ) { case 'left' : return D [ 0 ] || null ; case 'center' : return D [ 1 ] || null ; case 'right' : return D [ 2 ] || null ; case 'justify' : return D [ 3 ] || null ; } } ; return null ; } ) ( ) ; if ( C && C . length > 0 ) this . _CssClassRegex = new RegExp ( '(?:^|\\s+)' + C + '(?=$|\\s)' ) ; } ; FCKJustifyCommand . _GetClassNameRegex = function ( ) { var A = FCKJustifyCommand . _ClassRegex ; if ( A != undefined ) return A ; var B = [ ] ; var C = FCKConfig . JustifyClasses ; if ( C ) { for ( var i = 0 ; i < 4 ; i ++ ) { var D = C [ i ] ; if ( D && D . length > 0 ) B . push ( D ) ; } } ; if ( B . length > 0 ) A = new RegExp ( '(?:^|\\s+)(?:' + B . join ( '|' ) + ')(?=$|\\s)' ) ; else A = null ; return FCKJustifyCommand . _ClassRegex = A ; } ; FCKJustifyCommand . prototype = { Execute : function ( ) { FCKUndo . SaveUndoStep ( ) ; var A = new FCKDomRange ( FCK . EditorWindow ) ; A . MoveToSelection ( ) ; var B = this . GetState ( ) ; if ( B == - 1 ) return ; var C = A . CreateBookmark ( ) ; var D = this . _CssClassName ; var E = new FCKDomRangeIterator ( A ) ; var F ; while ( ( F = E . GetNextParagraph ( ) ) ) { F . removeAttribute ( 'align' ) ; if ( D ) { var G = F . className . replace ( FCKJustifyCommand . _GetClassNameRegex ( ) , '' ) ; if ( B == 0 ) { if ( G . length > 0 ) G += ' ' ; F . className = G + D ; } else if ( G . length == 0 ) FCKDomTools . RemoveAttribute ( F , 'class' ) ; } else { var H = F . style ; if ( B == 0 ) H . textAlign = this . AlignValue ; else { H . textAlign = '' ; if ( H . cssText . length == 0 ) F . removeAttribute ( 'style' ) ; } } } ; A . MoveToBookmark ( C ) ; A . Select ( ) ; FCK . Focus ( ) ; FCK . Events . FireEvent ( 'OnSelectionChange' ) ; } , GetState : function ( ) { if ( FCK . EditMode != 0 || ! FCK . EditorWindow ) return - 1 ; var A = new FCKElementPath ( FCKSelection . GetBoundaryParentElement ( true ) ) ; var B = A . Block || A . BlockLimit ; if ( ! B || B . nodeName . toLowerCase ( ) == 'body' ) return 0 ; var C ; if ( FCKBrowserInfo . IsIE ) C = B . currentStyle . textAlign ; else C = FCK . EditorWindow . getComputedStyle ( B , '' ) . getPropertyValue ( 'text-align' ) ; C = C . replace ( /(-moz-|-webkit-|start|auto)/i , '' ) ; if ( ( ! C && this . IsDefaultAlign ) || C == this . AlignValue ) return 1 ; return 0 ; } } ;
var FCKIndentCommand = function ( A , B ) { this . Name = A ; this . Offset = B ; this . IndentCSSProperty = FCKConfig . ContentLangDirection . IEquals ( 'ltr' ) ? 'marginLeft' : 'marginRight' ; } ; FCKIndentCommand . _InitIndentModeParameters = function ( ) { if ( FCKConfig . IndentClasses && FCKConfig . IndentClasses . length > 0 ) { this . _UseIndentClasses = true ; this . _IndentClassMap = { } ; for ( var i = 0 ; i < FCKConfig . IndentClasses . length ; i ++ ) this . _IndentClassMap [ FCKConfig . IndentClasses [ i ] ] = i + 1 ; this . _ClassNameRegex = new RegExp ( '(?:^|\\s+)(' + FCKConfig . IndentClasses . join ( '|' ) + ')(?=$|\\s)' ) ; } else this . _UseIndentClasses = false ; } ; FCKIndentCommand . prototype = { Execute : function ( ) { FCKUndo . SaveUndoStep ( ) ; var A = new FCKDomRange ( FCK . EditorWindow ) ; A . MoveToSelection ( ) ; var B = A . CreateBookmark ( ) ; var C = FCKDomTools . GetCommonParentNode ( A . StartNode || A . StartContainer , A . EndNode || A . EndContainer , [ 'ul' , 'ol' ] ) ; if ( C ) this . _IndentList ( A , C ) ; else this . _IndentBlock ( A ) ; A . MoveToBookmark ( B ) ; A . Select ( ) ; FCK . Focus ( ) ; FCK . Events . FireEvent ( 'OnSelectionChange' ) ; } , GetState : function ( ) { if ( FCK . EditMode != 0 || ! FCK . EditorWindow ) return - 1 ; if ( FCKIndentCommand . _UseIndentClasses == undefined ) FCKIndentCommand . _InitIndentModeParameters ( ) ; var A = FCKSelection . GetBoundaryParentElement ( true ) ; var B = FCKSelection . GetBoundaryParentElement ( false ) ; var C = FCKDomTools . GetCommonParentNode ( A , B , [ 'ul' , 'ol' ] ) ; if ( C ) { if ( this . Name . IEquals ( 'outdent' ) ) return 0 ; var D = FCKTools . GetElementAscensor ( A , 'li' ) ; if ( ! D || ! D . previousSibling ) return - 1 ; return 0 ; } ; if ( ! FCKIndentCommand . _UseIndentClasses && this . Name . IEquals ( 'indent' ) ) return 0 ; var E = new FCKElementPath ( A ) ; var F = E . Block || E . BlockLimit ; if ( ! F ) return - 1 ; if ( FCKIndentCommand . _UseIndentClasses ) { var G = F . className . match ( FCKIndentCommand . _ClassNameRegex ) ; var H = 0 ; if ( G != null ) { G = G [ 1 ] ; H = FCKIndentCommand . _IndentClassMap [ G ] ; } ; if ( ( this . Name == 'outdent' && H == 0 ) || ( this . Name == 'indent' && H == FCKConfig . IndentClasses . length ) ) return - 1 ; return 0 ; } else { var I = parseInt ( F . style [ this . IndentCSSProperty ] , 10 ) ; if ( isNaN ( I ) ) I = 0 ; if ( I <= 0 ) return - 1 ; return 0 ; } } , _IndentBlock : function ( A ) { var B = new FCKDomRangeIterator ( A ) ; B . EnforceRealBlocks = true ; A . Expand ( 'block_contents' ) ; var C = FCKDomTools . GetCommonParents ( A . StartContainer , A . EndContainer ) ; var D = C [ C . length - 1 ] ; var E ; while ( ( E = B . GetNextParagraph ( ) ) ) { if ( ! ( E == D || E . parentNode == D ) ) continue ; if ( FCKIndentCommand . _UseIndentClasses ) { var F = E . className . match ( FCKIndentCommand . _ClassNameRegex ) ; var G = 0 ; if ( F != null ) { F = F [ 1 ] ; G = FCKIndentCommand . _IndentClassMap [ F ] ; } ; if ( this . Name . IEquals ( 'outdent' ) ) G -- ; else if ( this . Name . IEquals ( 'indent' ) ) G ++ ; G = Math . min ( G , FCKConfig . IndentClasses . length ) ; G = Math . max ( G , 0 ) ; var H = E . className . replace ( FCKIndentCommand . _ClassNameRegex , '' ) ; if ( G < 1 ) E . className = H ; else E . className = ( H . length > 0 ? H + ' ' : '' ) + FCKConfig . IndentClasses [ G - 1 ] ; } else { var I = parseInt ( E . style [ this . IndentCSSProperty ] , 10 ) ; if ( isNaN ( I ) ) I = 0 ; I += this . Offset ; I = Math . max ( I , 0 ) ; I = Math . ceil ( I / this . Offset ) * this . Offset ; E . style [ this . IndentCSSProperty ] = I ? I + FCKConfig . IndentUnit : '' ; if ( E . getAttribute ( 'style' ) == '' ) E . removeAttribute ( 'style' ) ; } } } , _IndentList : function ( A , B ) { var C = A . StartContainer ; var D = A . EndContainer ; while ( C && C . parentNode != B ) C = C . parentNode ; while ( D && D . parentNode != B ) D = D . parentNode ; if ( ! C || ! D ) return ; var E = C ; var F = [ ] ; var G = false ; while ( G == false ) { if ( E == D ) G = true ; F . push ( E ) ; E = E . nextSibling ; } ; if ( F . length < 1 ) return ; var H = FCKDomTools . GetParents ( B ) ; for ( var i = 0 ; i < H . length ; i ++ ) { if ( H [ i ] . nodeName . IEquals ( [ 'ul' , 'ol' ] ) ) { B = H [ i ] ; break ; } } ; var I = this . Name . IEquals ( 'indent' ) ? 1 : - 1 ; var J = F [ 0 ] ; var K = F [ F . length - 1 ] ; var L = { } ; var M = FCKDomTools . ListToArray ( B , L ) ; var N = M [ K . _FCK _ListArray _Index ] . indent ; for ( var i = J . _FCK _ListArray _Index ; i <= K . _FCK _ListArray _Index ; i ++ ) M [ i ] . indent += I ; for ( var i = K . _FCK _ListArray _Index + 1 ; i < M . length && M [ i ] . indent > N ; i ++ ) M [ i ] . indent += I ; var O = FCKDomTools . ArrayToList ( M ) ; if ( O ) B . parentNode . replaceChild ( O . listNode , B ) ; FCKDomTools . ClearAllMarkers ( L ) ; } } ;
var FCKBlockQuoteCommand = function ( ) { } ; FCKBlockQuoteCommand . prototype = { Execute : function ( ) { FCKUndo . SaveUndoStep ( ) ; var A = this . GetState ( ) ; var B = new FCKDomRange ( FCK . EditorWindow ) ; B . MoveToSelection ( ) ; var C = B . CreateBookmark ( ) ; if ( FCKBrowserInfo . IsIE ) { var D = B . GetBookmarkNode ( C , true ) ; var E = B . GetBookmarkNode ( C , false ) ; var F ; if ( D && D . parentNode . nodeName . IEquals ( 'blockquote' ) && ! D . previousSibling ) { F = D ; while ( ( F = F . nextSibling ) ) { if ( FCKListsLib . BlockElements [ F . nodeName . toLowerCase ( ) ] ) FCKDomTools . MoveNode ( D , F , true ) ; } } ; if ( E && E . parentNode . nodeName . IEquals ( 'blockquote' ) && ! E . previousSibling ) { F = E ; while ( ( F = F . nextSibling ) ) { if ( FCKListsLib . BlockElements [ F . nodeName . toLowerCase ( ) ] ) { if ( F . firstChild == D ) FCKDomTools . InsertAfterNode ( D , E ) ; else FCKDomTools . MoveNode ( E , F , true ) ; } } } } ; var G = new FCKDomRangeIterator ( B ) ; var H ; if ( A == 0 ) { G . EnforceRealBlocks = true ; var I = [ ] ; while ( ( H = G . GetNextParagraph ( ) ) ) I . push ( H ) ; if ( I . length < 1 ) { para = B . Window . document . createElement ( FCKConfig . EnterMode . IEquals ( 'p' ) ? 'p' : 'div' ) ; B . InsertNode ( para ) ; para . appendChild ( B . Window . document . createTextNode ( '\ufeff' ) ) ; B . MoveToBookmark ( C ) ; B . MoveToNodeContents ( para ) ; B . Collapse ( true ) ; C = B . CreateBookmark ( ) ; I . push ( para ) ; } ; var J = I [ 0 ] . parentNode ; var K = [ ] ; for ( var i = 0 ; i < I . length ; i ++ ) { H = I [ i ] ; J = FCKDomTools . GetCommonParents ( H . parentNode , J ) . pop ( ) ; } ; var L = null ; while ( I . length > 0 ) { H = I . shift ( ) ; while ( H . parentNode != J ) H = H . parentNode ; if ( H != L ) K . push ( H ) ; L = H ; } while ( K . length > 0 ) { H = K . shift ( ) ; if ( H . nodeName . IEquals ( 'blockquote' ) ) { var M = FCKTools . GetElementDocument ( H ) . createDocumentFragment ( ) ; while ( H . firstChild ) { M . appendChild ( H . removeChild ( H . firstChild ) ) ; I . push ( M . lastChild ) ; } ; H . parentNode . replaceChild ( M , H ) ; } else I . push ( H ) ; } ; var N = B . Window . document . createElement ( 'blockquote' ) ; J . insertBefore ( N , I [ 0 ] ) ; while ( I . length > 0 ) { H = I . shift ( ) ; N . appendChild ( H ) ; } } else if ( A == 1 ) { var O = [ ] ; while ( ( H = G . GetNextParagraph ( ) ) ) { var P = null ; var Q = null ; while ( H . parentNode ) { if ( H . parentNode . nodeName . IEquals ( 'blockquote' ) ) { P = H . parentNode ; Q = H ; break ; } ; H = H . parentNode ; } ; if ( P && Q ) O . push ( Q ) ; } ; var R = [ ] ; while ( O . length > 0 ) { var S = O . shift ( ) ; var N = S . parentNode ; if ( S == S . parentNode . firstChild ) { N . parentNode . insertBefore ( N . removeChild ( S ) , N ) ; if ( ! N . firstChild ) N . parentNode . removeChild ( N ) ; } else if ( S == S . parentNode . lastChild ) { N . parentNode . insertBefore ( N . removeChild ( S ) , N . nextSibling ) ; if ( ! N . firstChild ) N . parentNode . removeChild ( N ) ; } else FCKDomTools . BreakParent ( S , S . parentNode , B ) ; R . push ( S ) ; } ; if ( FCKConfig . EnterMode . IEquals ( 'br' ) ) { while ( R . length ) { var S = R . shift ( ) ; var W = true ; if ( S . nodeName . IEquals ( 'div' ) ) { var M = FCKTools . GetElementDocument ( S ) . createDocumentFragment ( ) ; var Y = W && S . previousSibling && ! FCKListsLib . BlockBoundaries [ S . previousSibling . nodeName . toLowerCase ( ) ] ; if ( W && Y ) M . appendChild ( FCKTools . GetElementDocument ( S ) . createElement ( 'br' ) ) ; var Z = S . nextSibling && ! FCKListsLib . BlockBoundaries [ S . nextSibling . nodeName . toLowerCase ( ) ] ; while ( S . firstChild ) M . appendChild ( S . removeChild ( S . firstChild ) ) ; if ( Z ) M . appendChild ( FCKTools . GetElementDocument ( S ) . createElement ( 'br' ) ) ; S . parentNode . replaceChild ( M , S ) ; W = false ; } } } } ; B . MoveToBookmark ( C ) ; B . Select ( ) ; FCK . Focus ( ) ; FCK . Events . FireEvent ( 'OnSelectionChange' ) ; } , GetState : function ( ) { if ( FCK . EditMode != 0 || ! FCK . EditorWindow ) return - 1 ; var A = new FCKElementPath ( FCKSelection . GetBoundaryParentElement ( true ) ) ; var B = A . Block || A . BlockLimit ; if ( ! B || B . nodeName . toLowerCase ( ) == 'body' ) return 0 ; for ( var i = 0 ; i < A . Elements . length ; i ++ ) { if ( A . Elements [ i ] . nodeName . IEquals ( 'blockquote' ) ) return 1 ; } ; return 0 ; } } ;
var FCKCoreStyleCommand = function ( A ) { this . Name = 'CoreStyle' ; this . StyleName = '_FCK_' + A ; this . IsActive = false ; FCKStyles . AttachStyleStateChange ( this . StyleName , this . _OnStyleStateChange , this ) ; } ; FCKCoreStyleCommand . prototype = { Execute : function ( ) { FCKUndo . SaveUndoStep ( ) ; if ( this . IsActive ) FCKStyles . RemoveStyle ( this . StyleName ) ; else FCKStyles . ApplyStyle ( this . StyleName ) ; FCK . Focus ( ) ; FCK . Events . FireEvent ( 'OnSelectionChange' ) ; } , GetState : function ( ) { if ( FCK . EditMode != 0 ) return - 1 ; return this . IsActive ? 1 : 0 ; } , _OnStyleStateChange : function ( A , B ) { this . IsActive = B ; } } ;
var FCKRemoveFormatCommand = function ( ) { this . Name = 'RemoveFormat' ; } ; FCKRemoveFormatCommand . prototype = { Execute : function ( ) { FCKStyles . RemoveAll ( ) ; FCK . Focus ( ) ; FCK . Events . FireEvent ( 'OnSelectionChange' ) ; } , GetState : function ( ) { return FCK . EditorWindow ? 0 : - 1 ; } } ;
var FCKCommands = FCK . Commands = { } ; FCKCommands . LoadedCommands = { } ; FCKCommands . RegisterCommand = function ( A , B ) { this . LoadedCommands [ A ] = B ; } ; FCKCommands . GetCommand = function ( A ) { var B = FCKCommands . LoadedCommands [ A ] ; if ( B ) return B ; switch ( A ) { case 'Bold' : case 'Italic' : case 'Underline' : case 'StrikeThrough' : case 'Subscript' : case 'Superscript' : B = new FCKCoreStyleCommand ( A ) ; break ; case 'RemoveFormat' : B = new FCKRemoveFormatCommand ( ) ; break ; case 'DocProps' : B = new FCKDialogCommand ( 'DocProps' , FCKLang . DocProps , 'dialog/fck_docprops.html' , 400 , 380 , FCKCommands . GetFullPageState ) ; break ; case 'Templates' : B = new FCKDialogCommand ( 'Templates' , FCKLang . DlgTemplatesTitle , 'dialog/fck_template.html' , 380 , 450 ) ; break ; case 'Link' : B = new FCKDialogCommand ( 'Link' , FCKLang . DlgLnkWindowTitle , 'dialog/fck_link.html' , 400 , 300 ) ; break ; case 'Unlink' : B = new FCKUnlinkCommand ( ) ; break ; case 'VisitLink' : B = new FCKVisitLinkCommand ( ) ; break ; case 'Anchor' : B = new FCKDialogCommand ( 'Anchor' , FCKLang . DlgAnchorTitle , 'dialog/fck_anchor.html' , 370 , 160 ) ; break ; case 'AnchorDelete' : B = new FCKAnchorDeleteCommand ( ) ; break ; case 'BulletedList' : B = new FCKDialogCommand ( 'BulletedList' , FCKLang . BulletedListProp , 'dialog/fck_listprop.html?UL' , 370 , 160 ) ; break ; case 'NumberedList' : B = new FCKDialogCommand ( 'NumberedList' , FCKLang . NumberedListProp , 'dialog/fck_listprop.html?OL' , 370 , 160 ) ; break ; case 'About' : B = new FCKDialogCommand ( 'About' , FCKLang . About , 'dialog/fck_about.html' , 420 , 330 , function ( ) { return 0 ; } ) ; break ; case 'Find' : B = new FCKDialogCommand ( 'Find' , FCKLang . DlgFindAndReplaceTitle , 'dialog/fck_replace.html' , 340 , 230 , null , null , 'Find' ) ; break ; case 'Replace' : B = new FCKDialogCommand ( 'Replace' , FCKLang . DlgFindAndReplaceTitle , 'dialog/fck_replace.html' , 340 , 230 , null , null , 'Replace' ) ; break ; case 'Image' : B = new FCKDialogCommand ( 'Image' , FCKLang . DlgImgTitle , 'dialog/fck_image.html' , 450 , 390 ) ; break ; case 'Flash' : B = new FCKDialogCommand ( 'Flash' , FCKLang . DlgFlashTitle , 'dialog/fck_flash.html' , 450 , 390 ) ; break ; case 'UpFileBtn' : B = new FCKDialogCommand ( 'UpFileBtn' , FCKLang . UpFileBtn , 'dialog/fck_UpFileBtn.html' , 400 , 300 ) ; break ; case 'SpecialChar' : B = new FCKDialogCommand ( 'SpecialChar' , FCKLang . DlgSpecialCharTitle , 'dialog/fck_specialchar.html' , 400 , 290 ) ; break ; case 'Smiley' : B = new FCKDialogCommand ( 'Smiley' , FCKLang . DlgSmileyTitle , 'dialog/fck_smiley.html' , FCKConfig . SmileyWindowWidth , FCKConfig . SmileyWindowHeight ) ; break ; case 'Table' : B = new FCKDialogCommand ( 'Table' , FCKLang . DlgTableTitle , 'dialog/fck_table.html' , 480 , 250 ) ; break ; case 'TableProp' : B = new FCKDialogCommand ( 'Table' , FCKLang . DlgTableTitle , 'dialog/fck_table.html?Parent' , 480 , 250 ) ; break ; case 'TableCellProp' : B = new FCKDialogCommand ( 'TableCell' , FCKLang . DlgCellTitle , 'dialog/fck_tablecell.html' , 550 , 240 ) ; break ; case 'Style' : B = new FCKStyleCommand ( ) ; break ; case 'FontName' : B = new FCKFontNameCommand ( ) ; break ; case 'FontSize' : B = new FCKFontSizeCommand ( ) ; break ; case 'FontFormat' : B = new FCKFormatBlockCommand ( ) ; break ; case 'Source' : B = new FCKSourceCommand ( ) ; break ; case 'Preview' : B = new FCKPreviewCommand ( ) ; break ; case 'Save' : B = new FCKSaveCommand ( ) ; break ; case 'NewPage' : B = new FCKNewPageCommand ( ) ; break ; case 'PageBreak' : B = new FCKPageBreakCommand ( ) ; break ; case 'Rule' : B = new FCKRuleCommand ( ) ; break ; case 'Nbsp' : B = new FCKNbsp ( ) ; break ; case 'TextColor' : B = new FCKTextColorCommand ( 'ForeColor' ) ; break ; case 'BGColor' : B = new FCKTextColorCommand ( 'BackColor' ) ; break ; case 'Paste' : B = new FCKPasteCommand ( ) ; break ; case 'PasteText' : B = new FCKPastePlainTextCommand ( ) ; break ; case 'PasteWord' : B = new FCKPasteWordCommand ( ) ; break ; case 'JustifyLeft' : B = new FCKJustifyCommand ( 'left' ) ; break ; case 'JustifyCenter' : B = new FCKJustifyCommand ( 'center' ) ; break ; case 'JustifyRight' : B = new FCKJustifyCommand ( 'right' ) ; break ; case 'JustifyFull' : B = new FCKJustifyCommand ( 'justify' ) ; break ; case 'Indent' : B = new FCKIndentCommand ( 'indent' , FCKConfig . IndentLength ) ; break ; case 'Outdent' : B = new FCKIndentCommand ( 'outdent' , FCKConfig . IndentLength * - 1 ) ; break ; case 'Blockquote' : B = new FCKBlockQuoteCommand ( ) ; break ; case 'CreateDiv' : B = new FCKDialogCommand ( 'CreateDiv' , FCKLang . CreateDiv , 'dialog/fck_div.html' , 380 , 210 , null , null , true ) ; break ; case 'EditDiv' : B = new FCKDialogCommand ( 'EditDiv' , FCKLang . EditDiv , 'dialog/fck_div.html' , 380 , 210 , null , null , false )
var FCKPanel = function ( A ) { this . IsRTL = ( FCKLang . Dir == 'rtl' ) ; this . IsContextMenu = false ; this . _LockCounter = 0 ; this . _Window = A || window ; var B ; if ( FCKBrowserInfo . IsIE ) { this . _Popup = this . _Window . createPopup ( ) ; var C = this . _Window . document ; if ( FCK _IS _CUSTOM _DOMAIN && ! FCKBrowserInfo . IsIE7 ) { C . domain = FCK _ORIGINAL _DOMAIN ; document . domain = FCK _ORIGINAL _DOMAIN ; } ; B = this . Document = this . _Popup . document ; if ( FCK _IS _CUSTOM _DOMAIN ) { B . domain = FCK _RUNTIME _DOMAIN ; C . domain = FCK _RUNTIME _DOMAIN ; document . domain = FCK _RUNTIME _DOMAIN ; } ; FCK . IECleanup . AddItem ( this , FCKPanel _Cleanup ) ; } else { var D = this . _IFrame = this . _Window . document . createElement ( 'iframe' ) ; FCKTools . ResetStyles ( D ) ; D . src = 'javascript:void(0)' ; D . allowTransparency = true ; D . frameBorder = '0' ; D . scrolling = 'no' ; D . style . width = D . style . height = '0px' ; FCKDomTools . SetElementStyles ( D , { position : 'absolute' , zIndex : FCKConfig . FloatingPanelsZIndex } ) ; this . _Window . document . body . appendChild ( D ) ; var E = D . contentWindow ; B = this . Document = E . document ; var F = '' ; if ( FCKBrowserInfo . IsSafari ) F = '<base href="' + window . document . location + '">' ; B . open ( ) ; B . write ( '<html><head>' + F + '<\/head><body style="margin:0px;padding:0px;"><\/body><\/html>' ) ; B . close ( ) ; if ( FCKBrowserInfo . IsAIR ) FCKAdobeAIR . Panel _Contructor ( B , window . document . location ) ; FCKTools . AddEventListenerEx ( E , 'focus' , FCKPanel _Window _OnFocus , this ) ; FCKTools . AddEventListenerEx ( E , 'blur' , FCKPanel _Window _OnBlur , this ) ; } ; B . dir = FCKLang . Dir ; FCKTools . AddEventListener ( B , 'contextmenu' , FCKTools . CancelEvent ) ; this . MainNode = B . body . appendChild ( B . createElement ( 'DIV' ) ) ; this . MainNode . style . cssFloat = this . IsRTL ? 'right' : 'left' ; } ; FCKPanel . prototype . AppendStyleSheet = function ( A ) { FCKTools . AppendStyleSheet ( this . Document , A ) ; } ; FCKPanel . prototype . Preload = function ( x , y , A ) { if ( this . _Popup ) this . _Popup . show ( x , y , 0 , 0 , A ) ; } ; FCKPanel . prototype . Show = function ( x , y , A , B , C ) { var D ; var E = this . MainNode ; if ( this . _Popup ) { this . _Popup . show ( x , y , 0 , 0 , A ) ; FCKDomTools . SetElementStyles ( E , { B : B ? B + 'px' : '' , C : C ? C + 'px' : '' } ) ; D = E . offsetWidth ; if ( this . IsRTL ) { if ( this . IsContextMenu ) x = x - D + 1 ; else if ( A ) x = ( x * - 1 ) + A . offsetWidth - D ; } ; this . _Popup . show ( x , y , D , E . offsetHeight , A ) ; if ( this . OnHide ) { if ( this . _Timer ) CheckPopupOnHide . call ( this , true ) ; this . _Timer = FCKTools . SetInterval ( CheckPopupOnHide , 100 , this ) ; } } else { if ( typeof ( FCK . ToolbarSet . CurrentInstance . FocusManager ) != 'undefined' ) FCK . ToolbarSet . CurrentInstance . FocusManager . Lock ( ) ; if ( this . ParentPanel ) { this . ParentPanel . Lock ( ) ; FCKPanel _Window _OnBlur ( null , this . ParentPanel ) ; } ; if ( FCKBrowserInfo . IsGecko && FCKBrowserInfo . IsMac ) { this . _IFrame . scrolling = '' ; FCKTools . RunFunction ( function ( ) { this . _IFrame . scrolling = 'no' ; } , this ) ; } ; if ( FCK . ToolbarSet . CurrentInstance . GetInstanceObject ( 'FCKPanel' ) . _OpenedPanel && FCK . ToolbarSet . CurrentInstance . GetInstanceObject ( 'FCKPanel' ) . _OpenedPanel != this ) FCK . ToolbarSet . CurrentInstance . GetInstanceObject ( 'FCKPanel' ) . _OpenedPanel . Hide ( false , true ) ; FCKDomTools . SetElementStyles ( E , { B : B ? B + 'px' : '' , C : C ? C + 'px' : '' } ) ; D = E . offsetWidth ; if ( ! B ) this . _IFrame . width = 1 ; if ( ! C ) this . _IFrame . height = 1 ; D = E . offsetWidth || E . firstChild . offsetWidth ; var F = FCKTools . GetDocumentPosition ( this . _Window , A . nodeType == 9 ? ( FCKTools . IsStrictMode ( A ) ? A . documentElement : A . body ) : A ) ; var G = FCKDomTools . GetPositionedAncestor ( this . _IFrame . parentNode ) ; if ( G ) { var H = FCKTools . GetDocumentPosition ( FCKTools . GetElementWindow ( G ) , G ) ; F . x -= H . x ; F . y -= H . y ; } ; if ( this . IsRTL && ! this . IsContextMenu ) x = ( x * - 1 ) ; x += F . x ; y += F . y ; if ( this . IsRTL ) { if ( this . IsContextMenu ) x = x - D + 1 ; else if ( A ) x = x + A . offsetWidth - D ; } else { var I = FCKTools . GetViewPaneSize ( this . _Window ) ; var J = FCKTools . GetScrollPosition ( this . _Window ) ; var K = I . Height + J . Y ; var L = I . Width + J . X ; if ( ( x + D ) > L ) x -= x + D - L ; if ( ( y + E . offsetHeight ) > K ) y -= y + E . offsetHeight - K ; } ; FCKDomTools . SetElementStyles ( this . _IFrame , { left : x + 'px' , top : y + 'px' } ) ; this . _IFrame . contentWindow . focus ( ) ; this . _IsOpened = true ; var M = this ; this . _resizeTimer = setTimeout ( function ( ) { var N = E . offsetWidth || E . firstChild . offsetWidth ; var O = E . offsetHeight ; M . _IFrame . style . width = N + 'px' ; M . _IFrame . style . height = O + 'px' ; } , 0 ) ; FCK . ToolbarSet . CurrentInstance . GetInstanceObject ( 'FCKPanel' ) . _OpenedPanel = this ; } ; FCKTools . RunFunction ( this . OnShow , this ) ; } ; FCKPanel . prototype . Hide = function ( A , B ) { if ( this . _Popup ) this . _Popup
var FCKIcon = function ( A ) { var B = A ? typeof ( A ) : 'undefined' ; switch ( B ) { case 'number' : this . Path = FCKConfig . SkinPath + 'fck_strip.gif' ; this . Size = 16 ; this . Position = A ; break ; case 'undefined' : this . Path = FCK _SPACER _PATH ; break ; case 'string' : this . Path = A ; break ; default : this . Path = A [ 0 ] ; this . Size = A [ 1 ] ; this . Position = A [ 2 ] ; } } ; FCKIcon . prototype . CreateIconElement = function ( A ) { var B , eIconImage ; if ( this . Position ) { var C = '-' + ( ( this . Position - 1 ) * this . Size ) + 'px' ; if ( FCKBrowserInfo . IsIE ) { B = A . createElement ( 'DIV' ) ; eIconImage = B . appendChild ( A . createElement ( 'IMG' ) ) ; eIconImage . src = this . Path ; eIconImage . style . top = C ; } else { B = A . createElement ( 'IMG' ) ; B . src = FCK _SPACER _PATH ; B . style . backgroundPosition = '0px ' + C ; B . style . backgroundImage = 'url("' + this . Path + '")' ; } } else { if ( FCKBrowserInfo . IsIE ) { B = A . createElement ( 'DIV' ) ; eIconImage = B . appendChild ( A . createElement ( 'IMG' ) ) ; eIconImage . src = this . Path ? this . Path : FCK _SPACER _PATH ; } else { B = A . createElement ( 'IMG' ) ; B . src = this . Path ? this . Path : FCK _SPACER _PATH ; } } ; B . className = 'TB_Button_Image' ; return B ; } ;
var FCKToolbarButtonUI = function ( A , B , C , D , E , F ) { this . Name = A ; this . Label = B || A ; this . Tooltip = C || this . Label ; this . Style = E || 0 ; this . State = F || 0 ; this . Icon = new FCKIcon ( D ) ; if ( FCK . IECleanup ) FCK . IECleanup . AddItem ( this , FCKToolbarButtonUI _Cleanup ) ; } ; FCKToolbarButtonUI . prototype . _CreatePaddingElement = function ( A ) { var B = A . createElement ( 'IMG' ) ; B . className = 'TB_Button_Padding' ; B . src = FCK _SPACER _PATH ; return B ; } ; FCKToolbarButtonUI . prototype . Create = function ( A ) { var B = FCKTools . GetElementDocument ( A ) ; var C = this . MainElement = B . createElement ( 'DIV' ) ; C . title = this . Tooltip ; if ( FCKBrowserInfo . IsGecko ) C . onmousedown = FCKTools . CancelEvent ; FCKTools . AddEventListenerEx ( C , 'mouseover' , FCKToolbarButtonUI _OnMouseOver , this ) ; FCKTools . AddEventListenerEx ( C , 'mouseout' , FCKToolbarButtonUI _OnMouseOut , this ) ; FCKTools . AddEventListenerEx ( C , 'click' , FCKToolbarButtonUI _OnClick , this ) ; this . ChangeState ( this . State , true ) ; if ( this . Style == 0 && ! this . ShowArrow ) { C . appendChild ( this . Icon . CreateIconElement ( B ) ) ; } else { var D = C . appendChild ( B . createElement ( 'TABLE' ) ) ; D . cellPadding = 0 ; D . cellSpacing = 0 ; var E = D . insertRow ( - 1 ) ; var F = E . insertCell ( - 1 ) ; if ( this . Style == 0 || this . Style == 2 ) F . appendChild ( this . Icon . CreateIconElement ( B ) ) ; else F . appendChild ( this . _CreatePaddingElement ( B ) ) ; if ( this . Style == 1 || this . Style == 2 ) { F = E . insertCell ( - 1 ) ; F . className = 'TB_Button_Text' ; F . noWrap = true ; F . appendChild ( B . createTextNode ( this . Label ) ) ; } ; if ( this . ShowArrow ) { if ( this . Style != 0 ) { E . insertCell ( - 1 ) . appendChild ( this . _CreatePaddingElement ( B ) ) ; } ; F = E . insertCell ( - 1 ) ; var G = F . appendChild ( B . createElement ( 'IMG' ) ) ; G . src = FCKConfig . SkinPath + 'images/toolbar.buttonarrow.gif' ; G . width = 5 ; G . height = 3 ; } ; F = E . insertCell ( - 1 ) ; F . appendChild ( this . _CreatePaddingElement ( B ) ) ; } ; A . appendChild ( C ) ; } ; FCKToolbarButtonUI . prototype . ChangeState = function ( A , B ) { if ( ! B && this . State == A ) return ; var e = this . MainElement ; if ( ! e ) return ; switch ( parseInt ( A , 10 ) ) { case 0 : e . className = 'TB_Button_Off' ; break ; case 1 : e . className = 'TB_Button_On' ; break ; case - 1 : e . className = 'TB_Button_Disabled' ; break ; } ; this . State = A ; } ; function FCKToolbarButtonUI _OnMouseOver ( A , B ) { if ( B . State == 0 ) this . className = 'TB_Button_Off_Over' ; else if ( B . State == 1 ) this . className = 'TB_Button_On_Over' ; } ; function FCKToolbarButtonUI _OnMouseOut ( A , B ) { if ( B . State == 0 ) this . className = 'TB_Button_Off' ; else if ( B . State == 1 ) this . className = 'TB_Button_On' ; } ; function FCKToolbarButtonUI _OnClick ( A , B ) { if ( B . OnClick && B . State != - 1 ) B . OnClick ( B ) ; } ; function FCKToolbarButtonUI _Cleanup ( ) { this . MainElement = null ; } ;
var FCKToolbarButton = function ( A , B , C , D , E , F , G ) { this . CommandName = A ; this . Label = B ; this . Tooltip = C ; this . Style = D ; this . SourceView = E ? true : false ; this . ContextSensitive = F ? true : false ; if ( G == null ) this . IconPath = FCKConfig . SkinPath + 'toolbar/' + A . toLowerCase ( ) + '.gif' ; else if ( typeof ( G ) == 'number' ) this . IconPath = [ FCKConfig . SkinPath + 'fck_strip.gif' , 16 , G ] ; else this . IconPath = G ; } ; FCKToolbarButton . prototype . Create = function ( A ) { this . _UIButton = new FCKToolbarButtonUI ( this . CommandName , this . Label , this . Tooltip , this . IconPath , this . Style ) ; this . _UIButton . OnClick = this . Click ; this . _UIButton . _ToolbarButton = this ; this . _UIButton . Create ( A ) ; } ; FCKToolbarButton . prototype . RefreshState = function ( ) { var A = this . _UIButton ; if ( ! A ) return ; var B = FCK . ToolbarSet . CurrentInstance . Commands . GetCommand ( this . CommandName ) . GetState ( ) ; if ( B == A . State ) return ; A . ChangeState ( B ) ; } ; FCKToolbarButton . prototype . Click = function ( ) { var A = this . _ToolbarButton || this ; FCK . ToolbarSet . CurrentInstance . Commands . GetCommand ( A . CommandName ) . Execute ( ) ; } ; FCKToolbarButton . prototype . Enable = function ( ) { this . RefreshState ( ) ; } ; FCKToolbarButton . prototype . Disable = function ( ) { this . _UIButton . ChangeState ( - 1 ) ; } ;
var FCKSpecialCombo = function ( A , B , C , D , E ) { this . FieldWidth = B || 100 ; this . PanelWidth = C || 150 ; this . PanelMaxHeight = D || 150 ; this . Label = ' ' ; this . Caption = A ; this . Tooltip = A ; this . Style = 2 ; this . Enabled = true ; this . Items = { } ; this . _Panel = new FCKPanel ( E || window ) ; this . _Panel . AppendStyleSheet ( FCKConfig . SkinEditorCSS ) ; this . _PanelBox = this . _Panel . MainNode . appendChild ( this . _Panel . Document . createElement ( 'DIV' ) ) ; this . _PanelBox . className = 'SC_Panel' ; this . _PanelBox . style . width = this . PanelWidth + 'px' ; this . _PanelBox . innerHTML = '<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>' ; this . _ItemsHolderEl = this . _PanelBox . getElementsByTagName ( 'TD' ) [ 0 ] ; if ( FCK . IECleanup ) FCK . IECleanup . AddItem ( this , FCKSpecialCombo _Cleanup ) ; } ; function FCKSpecialCombo _ItemOnMouseOver ( ) { this . className += ' SC_ItemOver' ; } ; function FCKSpecialCombo _ItemOnMouseOut ( ) { this . className = this . originalClass ; } ; function FCKSpecialCombo _ItemOnClick ( A , B , C ) { this . className = this . originalClass ; B . _Panel . Hide ( ) ; B . SetLabel ( this . FCKItemLabel ) ; if ( typeof ( B . OnSelect ) == 'function' ) B . OnSelect ( C , this ) ; } ; FCKSpecialCombo . prototype . ClearItems = function ( ) { if ( this . Items ) this . Items = { } ; var A = this . _ItemsHolderEl ; while ( A . firstChild ) A . removeChild ( A . firstChild ) ; } ; FCKSpecialCombo . prototype . AddItem = function ( A , B , C , D ) { var E = this . _ItemsHolderEl . appendChild ( this . _Panel . Document . createElement ( 'DIV' ) ) ; E . className = E . originalClass = 'SC_Item' ; E . innerHTML = B ; E . FCKItemLabel = C || A ; E . Selected = false ; if ( FCKBrowserInfo . IsIE ) E . style . width = '100%' ; if ( D ) E . style . backgroundColor = D ; FCKTools . AddEventListenerEx ( E , 'mouseover' , FCKSpecialCombo _ItemOnMouseOver ) ; FCKTools . AddEventListenerEx ( E , 'mouseout' , FCKSpecialCombo _ItemOnMouseOut ) ; FCKTools . AddEventListenerEx ( E , 'click' , FCKSpecialCombo _ItemOnClick , [ this , A ] ) ; this . Items [ A . toString ( ) . toLowerCase ( ) ] = E ; return E ; } ; FCKSpecialCombo . prototype . SelectItem = function ( A ) { if ( typeof A == 'string' ) A = this . Items [ A . toString ( ) . toLowerCase ( ) ] ; if ( A ) { A . className = A . originalClass = 'SC_ItemSelected' ; A . Selected = true ; } } ; FCKSpecialCombo . prototype . SelectItemByLabel = function ( A , B ) { for ( var C in this . Items ) { var D = this . Items [ C ] ; if ( D . FCKItemLabel == A ) { D . className = D . originalClass = 'SC_ItemSelected' ; D . Selected = true ; if ( B ) this . SetLabel ( A ) ; } } } ; FCKSpecialCombo . prototype . DeselectAll = function ( A ) { for ( var i in this . Items ) { if ( ! this . Items [ i ] ) continue ; this . Items [ i ] . className = this . Items [ i ] . originalClass = 'SC_Item' ; this . Items [ i ] . Selected = false ; } ; if ( A ) this . SetLabel ( '' ) ; } ; FCKSpecialCombo . prototype . SetLabelById = function ( A ) { A = A ? A . toString ( ) . toLowerCase ( ) : '' ; var B = this . Items [ A ] ; this . SetLabel ( B ? B . FCKItemLabel : '' ) ; } ; FCKSpecialCombo . prototype . SetLabel = function ( A ) { A = ( ! A || A . length == 0 ) ? ' ' : A ; if ( A == this . Label ) return ; this . Label = A ; var B = this . _LabelEl ; if ( B ) { B . innerHTML = A ; FCKTools . DisableSelection ( B ) ; } } ; FCKSpecialCombo . prototype . SetEnabled = function ( A ) { this . Enabled = A ; if ( this . _OuterTable ) this . _OuterTable . className = A ? '' : 'SC_FieldDisabled' ; } ; FCKSpecialCombo . prototype . Create = function ( A ) { var B = FCKTools . GetElementDocument ( A ) ; var C = this . _OuterTable = A . appendChild ( B . createElement ( 'TABLE' ) ) ; C . cellPadding = 0 ; C . cellSpacing = 0 ; C . insertRow ( - 1 ) ; var D ; var E ; switch ( this . Style ) { case 0 : D = 'TB_ButtonType_Icon' ; E = false ; break ; case 1 : D = 'TB_ButtonType_Text' ; E = false ; break ; case 2 : E = true ; break ; } ; if ( this . Caption && this . Caption . length > 0 && E ) { var F = C . rows [ 0 ] . insertCell ( - 1 ) ; F . innerHTML = this . Caption ; F . className = 'SC_FieldCaption' ; } ; var G = FCKTools . AppendElement ( C . rows [ 0 ] . insertCell ( - 1 ) , 'div' ) ; if ( E ) { G . className = 'SC_Field' ; G . style . width = this . FieldWidth + 'px' ; G . innerHTML = '<table width="100%" cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldLabel"><label> </label></td><td class="SC_FieldButton"> </td></tr></tbody></table>' ; this . _LabelEl = G . getElementsByTagName ( 'label' ) [ 0 ] ; this . _LabelEl . innerHTML = this . Label ; } else { G . className = 'TB_Button_Off' ; G . innerHTML = '<table title="' + this . Tooltip + '" class="' + D + '" cellspacing="0" cellpadding="0" border="0"><tr><td><img class="TB_Button_Padding" src="' + FCK _SPACER _PATH + '" /></td><td class="TB_Text">' + this . Caption + ' < / t d > < t d > < i m g c l a s s = " T B _ B u t t o n _ P a d d i n
var FCKToolbarSpecialCombo = function ( ) { this . SourceView = false ; this . ContextSensitive = true ; this . FieldWidth = null ; this . PanelWidth = null ; this . PanelMaxHeight = null ; } ; FCKToolbarSpecialCombo . prototype . DefaultLabel = '' ; function FCKToolbarSpecialCombo _OnSelect ( A , B ) { FCK . ToolbarSet . CurrentInstance . Commands . GetCommand ( this . CommandName ) . Execute ( A , B ) ; } ; FCKToolbarSpecialCombo . prototype . Create = function ( A ) { this . _Combo = new FCKSpecialCombo ( this . GetLabel ( ) , this . FieldWidth , this . PanelWidth , this . PanelMaxHeight , FCKBrowserInfo . IsIE ? window : FCKTools . GetElementWindow ( A ) . parent ) ; this . _Combo . Tooltip = this . Tooltip ; this . _Combo . Style = this . Style ; this . CreateItems ( this . _Combo ) ; this . _Combo . Create ( A ) ; this . _Combo . CommandName = this . CommandName ; this . _Combo . OnSelect = FCKToolbarSpecialCombo _OnSelect ; } ; function FCKToolbarSpecialCombo _RefreshActiveItems ( A , B ) { A . DeselectAll ( ) ; A . SelectItem ( B ) ; A . SetLabelById ( B ) ; } ; FCKToolbarSpecialCombo . prototype . RefreshState = function ( ) { var A ; var B = FCK . ToolbarSet . CurrentInstance . Commands . GetCommand ( this . CommandName ) . GetState ( ) ; if ( B != - 1 ) { A = 1 ; if ( this . RefreshActiveItems ) this . RefreshActiveItems ( this . _Combo , B ) ; else { if ( this . _LastValue !== B ) { this . _LastValue = B ; if ( ! B || B . length == 0 ) { this . _Combo . DeselectAll ( ) ; this . _Combo . SetLabel ( this . DefaultLabel ) ; } else FCKToolbarSpecialCombo _RefreshActiveItems ( this . _Combo , B ) ; } } } else A = - 1 ; if ( A == this . State ) return ; if ( A == - 1 ) { this . _Combo . DeselectAll ( ) ; this . _Combo . SetLabel ( '' ) ; } ; this . State = A ; this . _Combo . SetEnabled ( A != - 1 ) ; } ; FCKToolbarSpecialCombo . prototype . Enable = function ( ) { this . RefreshState ( ) ; } ; FCKToolbarSpecialCombo . prototype . Disable = function ( ) { this . State = - 1 ; this . _Combo . DeselectAll ( ) ; this . _Combo . SetLabel ( '' ) ; this . _Combo . SetEnabled ( false ) ; } ;
var FCKToolbarStyleCombo = function ( A , B ) { if ( A === false ) return ; this . CommandName = 'Style' ; this . Label = this . GetLabel ( ) ; this . Tooltip = A ? A : this . Label ; this . Style = B ? B : 2 ; this . DefaultLabel = FCKConfig . DefaultStyleLabel || '' ; } ; FCKToolbarStyleCombo . prototype = new FCKToolbarSpecialCombo ; FCKToolbarStyleCombo . prototype . GetLabel = function ( ) { return FCKLang . Style ; } ; FCKToolbarStyleCombo . prototype . GetStyles = function ( ) { var A = { } ; var B = FCK . ToolbarSet . CurrentInstance . Styles . GetStyles ( ) ; for ( var C in B ) { var D = B [ C ] ; if ( ! D . IsCore ) A [ C ] = D ; } ; return A ; } ; FCKToolbarStyleCombo . prototype . CreateItems = function ( A ) { var B = A . _Panel . Document ; FCKTools . AppendStyleSheet ( B , FCKConfig . ToolbarComboPreviewCSS ) ; FCKTools . AppendStyleString ( B , FCKConfig . EditorAreaStyles ) ; B . body . className += ' ForceBaseFont' ; FCKConfig . ApplyBodyAttributes ( B . body ) ; var C = this . GetStyles ( ) ; for ( var D in C ) { var E = C [ D ] ; var F = E . GetType ( ) == 2 ? D : FCKToolbarStyleCombo _BuildPreview ( E , E . Label || D ) ; var G = A . AddItem ( D , F ) ; G . Style = E ; } ; A . OnBeforeClick = this . StyleCombo _OnBeforeClick ; } ; FCKToolbarStyleCombo . prototype . RefreshActiveItems = function ( A ) { var B = FCK . ToolbarSet . CurrentInstance . Selection . GetBoundaryParentElement ( true ) ; if ( B ) { var C = new FCKElementPath ( B ) ; var D = C . Elements ; for ( var e = 0 ; e < D . length ; e ++ ) { for ( var i in A . Items ) { var E = A . Items [ i ] ; var F = E . Style ; if ( F . CheckElementRemovable ( D [ e ] , true ) ) { A . SetLabel ( F . Label || F . Name ) ; return ; } } } } ; A . SetLabel ( this . DefaultLabel ) ; } ; FCKToolbarStyleCombo . prototype . StyleCombo _OnBeforeClick = function ( A ) { A . DeselectAll ( ) ; var B ; var C ; var D ; var E = FCK . ToolbarSet . CurrentInstance . Selection ; if ( E . GetType ( ) == 'Control' ) { B = E . GetSelectedElement ( ) ; D = B . nodeName . toLowerCase ( ) ; } else { B = E . GetBoundaryParentElement ( true ) ; C = new FCKElementPath ( B ) ; } ; for ( var i in A . Items ) { var F = A . Items [ i ] ; var G = F . Style ; if ( ( D && G . Element == D ) || ( ! D && G . GetType ( ) != 2 ) ) { F . style . display = '' ; if ( ( C && G . CheckActive ( C ) ) || ( ! C && G . CheckElementRemovable ( B , true ) ) ) A . SelectItem ( G . Name ) ; } else F . style . display = 'none' ; } } ; function FCKToolbarStyleCombo _BuildPreview ( A , B ) { var C = A . GetType ( ) ; var D = [ ] ; if ( C == 0 ) D . push ( '<div class="BaseFont">' ) ; var E = A . Element ; if ( E == 'bdo' ) E = 'span' ; D = [ '<' , E ] ; var F = A . _StyleDesc . Attributes ; if ( F ) { for ( var G in F ) { D . push ( ' ' , G , '="' , A . GetFinalAttributeValue ( G ) , '"' ) ; } } ; if ( A . _GetStyleText ( ) . length > 0 ) D . push ( ' style="' , A . GetFinalStyleValue ( ) , '"' ) ; D . push ( '>' , B , '</' , E , '>' ) ; if ( C == 0 ) D . push ( '</div>' ) ; return D . join ( '' ) ; } ;
var FCKToolbarFontFormatCombo = function ( A , B ) { if ( A === false ) return ; this . CommandName = 'FontFormat' ; this . Label = this . GetLabel ( ) ; this . Tooltip = A ? A : this . Label ; this . Style = B ? B : 2 ; this . NormalLabel = 'Normal' ; this . PanelWidth = 190 ; this . DefaultLabel = FCKConfig . DefaultFontFormatLabel || '' ; } ; FCKToolbarFontFormatCombo . prototype = new FCKToolbarStyleCombo ( false ) ; FCKToolbarFontFormatCombo . prototype . GetLabel = function ( ) { return FCKLang . FontFormat ; } ; FCKToolbarFontFormatCombo . prototype . GetStyles = function ( ) { var A = { } ; var B = FCKLang [ 'FontFormats' ] . split ( ';' ) ; var C = { p : B [ 0 ] , pre : B [ 1 ] , address : B [ 2 ] , h1 : B [ 3 ] , h2 : B [ 4 ] , h3 : B [ 5 ] , h4 : B [ 6 ] , h5 : B [ 7 ] , h6 : B [ 8 ] , div : B [ 9 ] || ( B [ 0 ] + ' (DIV)' ) } ; var D = FCKConfig . FontFormats . split ( ';' ) ; for ( var i = 0 ; i < D . length ; i ++ ) { var E = D [ i ] ; var F = FCKStyles . GetStyle ( '_FCK_' + E ) ; if ( F ) { F . Label = C [ E ] ; A [ '_FCK_' + E ] = F ; } else alert ( "The FCKConfig.CoreStyles['" + E + "'] setting was not found. Please check the fckconfig.js file" ) ; } ; return A ; } ; FCKToolbarFontFormatCombo . prototype . RefreshActiveItems = function ( A ) { var B = FCK . ToolbarSet . CurrentInstance . Selection . GetBoundaryParentElement ( true ) ; if ( B ) { var C = new FCKElementPath ( B ) ; var D = C . Block ; if ( D ) { for ( var i in A . Items ) { var E = A . Items [ i ] ; var F = E . Style ; if ( F . CheckElementRemovable ( D ) ) { A . SetLabel ( F . Label ) ; return ; } } } } ; A . SetLabel ( this . DefaultLabel ) ; } ; FCKToolbarFontFormatCombo . prototype . StyleCombo _OnBeforeClick = function ( A ) { A . DeselectAll ( ) ; var B = FCK . ToolbarSet . CurrentInstance . Selection . GetBoundaryParentElement ( true ) ; if ( B ) { var C = new FCKElementPath ( B ) ; var D = C . Block ; for ( var i in A . Items ) { var E = A . Items [ i ] ; var F = E . Style ; if ( F . CheckElementRemovable ( D ) ) { A . SelectItem ( E ) ; return ; } } } } ;
var FCKToolbarFontsCombo = function ( A , B ) { this . CommandName = 'FontName' ; this . Label = this . GetLabel ( ) ; this . Tooltip = A ? A : this . Label ; this . Style = B ? B : 2 ; this . DefaultLabel = FCKConfig . DefaultFontLabel || '' ; } ; FCKToolbarFontsCombo . prototype = new FCKToolbarFontFormatCombo ( false ) ; FCKToolbarFontsCombo . prototype . GetLabel = function ( ) { return FCKLang . Font ; } ; FCKToolbarFontsCombo . prototype . GetStyles = function ( ) { var A = FCKStyles . GetStyle ( '_FCK_FontFace' ) ; if ( ! A ) { alert ( "The FCKConfig.CoreStyles['Size'] setting was not found. Please check the fckconfig.js file" ) ; return { } ; } ; var B = { } ; var C = FCKConfig . FontNames . split ( ';' ) ; for ( var i = 0 ; i < C . length ; i ++ ) { var D = C [ i ] . split ( '/' ) ; var E = D [ 0 ] ; var F = D [ 1 ] || E ; var G = FCKTools . CloneObject ( A ) ; G . SetVariable ( 'Font' , E ) ; G . Label = F ; B [ F ] = G ; } ; return B ; } ; FCKToolbarFontsCombo . prototype . RefreshActiveItems = FCKToolbarStyleCombo . prototype . RefreshActiveItems ; FCKToolbarFontsCombo . prototype . StyleCombo _OnBeforeClick = function ( A ) { A . DeselectAll ( ) ; var B = FCKSelection . GetBoundaryParentElement ( true ) ; if ( B ) { var C = new FCKElementPath ( B ) ; for ( var i in A . Items ) { var D = A . Items [ i ] ; var E = D . Style ; if ( E . CheckActive ( C ) ) { A . SelectItem ( D ) ; return ; } } } } ;
var FCKToolbarFontSizeCombo = function ( A , B ) { this . CommandName = 'FontSize' ; this . Label = this . GetLabel ( ) ; this . Tooltip = A ? A : this . Label ; this . Style = B ? B : 2 ; this . DefaultLabel = FCKConfig . DefaultFontSizeLabel || '' ; this . FieldWidth = 70 ; } ; FCKToolbarFontSizeCombo . prototype = new FCKToolbarFontFormatCombo ( false ) ; FCKToolbarFontSizeCombo . prototype . GetLabel = function ( ) { return FCKLang . FontSize ; } ; FCKToolbarFontSizeCombo . prototype . GetStyles = function ( ) { var A = FCKStyles . GetStyle ( '_FCK_Size' ) ; if ( ! A ) { alert ( "The FCKConfig.CoreStyles['FontFace'] setting was not found. Please check the fckconfig.js file" ) ; return { } ; } ; var B = { } ; var C = FCKConfig . FontSizes . split ( ';' ) ; for ( var i = 0 ; i < C . length ; i ++ ) { var D = C [ i ] . split ( '/' ) ; var E = D [ 0 ] ; var F = D [ 1 ] || E ; var G = FCKTools . CloneObject ( A ) ; G . SetVariable ( 'Size' , E ) ; G . Label = F ; B [ F ] = G ; } ; return B ; } ; FCKToolbarFontSizeCombo . prototype . RefreshActiveItems = FCKToolbarStyleCombo . prototype . RefreshActiveItems ; FCKToolbarFontSizeCombo . prototype . StyleCombo _OnBeforeClick = FCKToolbarFontsCombo . prototype . StyleCombo _OnBeforeClick ;
var FCKToolbarPanelButton = function ( A , B , C , D , E ) { this . CommandName = A ; var F ; if ( E == null ) F = FCKConfig . SkinPath + 'toolbar/' + A . toLowerCase ( ) + '.gif' ; else if ( typeof ( E ) == 'number' ) F = [ FCKConfig . SkinPath + 'fck_strip.gif' , 16 , E ] ; var G = this . _UIButton = new FCKToolbarButtonUI ( A , B , C , F , D ) ; G . _FCKToolbarPanelButton = this ; G . ShowArrow = true ; G . OnClick = FCKToolbarPanelButton _OnButtonClick ; } ; FCKToolbarPanelButton . prototype . TypeName = 'FCKToolbarPanelButton' ; FCKToolbarPanelButton . prototype . Create = function ( A ) { A . className += 'Menu' ; this . _UIButton . Create ( A ) ; var B = FCK . ToolbarSet . CurrentInstance . Commands . GetCommand ( this . CommandName ) . _Panel ; this . RegisterPanel ( B ) ; } ; FCKToolbarPanelButton . prototype . RegisterPanel = function ( A ) { if ( A . _FCKToolbarPanelButton ) return ; A . _FCKToolbarPanelButton = this ; var B = A . Document . body . appendChild ( A . Document . createElement ( 'div' ) ) ; B . style . position = 'absolute' ; B . style . top = '0px' ; var C = A . _FCKToolbarPanelButtonLineDiv = B . appendChild ( A . Document . createElement ( 'IMG' ) ) ; C . className = 'TB_ConnectionLine' ; C . style . position = 'absolute' ; C . src = FCK _SPACER _PATH ; A . OnHide = FCKToolbarPanelButton _OnPanelHide ; } ; function FCKToolbarPanelButton _OnButtonClick ( A ) { var B = this . _FCKToolbarPanelButton ; var e = B . _UIButton . MainElement ; B . _UIButton . ChangeState ( 1 ) ; var C = FCK . ToolbarSet . CurrentInstance . Commands . GetCommand ( B . CommandName ) ; var D = C . _Panel ; D . _FCKToolbarPanelButtonLineDiv . style . width = ( e . offsetWidth - 2 ) + 'px' ; C . Execute ( 0 , e . offsetHeight - 1 , e ) ; } ; function FCKToolbarPanelButton _OnPanelHide ( ) { var A = this . _FCKToolbarPanelButton ; A . _UIButton . ChangeState ( 0 ) ; } ; FCKToolbarPanelButton . prototype . RefreshState = FCKToolbarButton . prototype . RefreshState ; FCKToolbarPanelButton . prototype . Enable = FCKToolbarButton . prototype . Enable ; FCKToolbarPanelButton . prototype . Disable = FCKToolbarButton . prototype . Disable ;
var FCKToolbarItems = { } ; FCKToolbarItems . LoadedItems = { } ; FCKToolbarItems . RegisterItem = function ( A , B ) { this . LoadedItems [ A ] = B ; } ; FCKToolbarItems . GetItem = function ( A ) { var B = FCKToolbarItems . LoadedItems [ A ] ; if ( B ) return B ; switch ( A ) { case 'Source' : B = new FCKToolbarButton ( 'Source' , FCKLang . Source , null , 2 , true , true , 1 ) ; break ; case 'DocProps' : B = new FCKToolbarButton ( 'DocProps' , FCKLang . DocProps , null , null , null , null , 2 ) ; break ; case 'Save' : B = new FCKToolbarButton ( 'Save' , FCKLang . Save , null , null , true , null , 3 ) ; break ; case 'NewPage' : B = new FCKToolbarButton ( 'NewPage' , FCKLang . NewPage , null , null , true , null , 4 ) ; break ; case 'Preview' : B = new FCKToolbarButton ( 'Preview' , FCKLang . Preview , null , null , true , null , 5 ) ; break ; case 'Templates' : B = new FCKToolbarButton ( 'Templates' , FCKLang . Templates , null , null , null , null , 6 ) ; break ; case 'About' : B = new FCKToolbarButton ( 'About' , FCKLang . About , null , null , true , null , 47 ) ; break ; case 'Cut' : B = new FCKToolbarButton ( 'Cut' , FCKLang . Cut , null , null , false , true , 7 ) ; break ; case 'Copy' : B = new FCKToolbarButton ( 'Copy' , FCKLang . Copy , null , null , false , true , 8 ) ; break ; case 'Paste' : B = new FCKToolbarButton ( 'Paste' , FCKLang . Paste , null , null , false , true , 9 ) ; break ; case 'PasteText' : B = new FCKToolbarButton ( 'PasteText' , FCKLang . PasteText , null , null , false , true , 10 ) ; break ; case 'PasteWord' : B = new FCKToolbarButton ( 'PasteWord' , FCKLang . PasteWord , null , null , false , true , 11 ) ; break ; case 'Print' : B = new FCKToolbarButton ( 'Print' , FCKLang . Print , null , null , false , true , 12 ) ; break ; case 'SpellCheck' : B = new FCKToolbarButton ( 'SpellCheck' , FCKLang . SpellCheck , null , null , null , null , 13 ) ; break ; case 'Undo' : B = new FCKToolbarButton ( 'Undo' , FCKLang . Undo , null , null , false , true , 14 ) ; break ; case 'Redo' : B = new FCKToolbarButton ( 'Redo' , FCKLang . Redo , null , null , false , true , 15 ) ; break ; case 'SelectAll' : B = new FCKToolbarButton ( 'SelectAll' , FCKLang . SelectAll , null , null , true , null , 18 ) ; break ; case 'RemoveFormat' : B = new FCKToolbarButton ( 'RemoveFormat' , FCKLang . RemoveFormat , null , null , false , true , 19 ) ; break ; case 'FitWindow' : B = new FCKToolbarButton ( 'FitWindow' , FCKLang . FitWindow , null , null , true , true , 66 ) ; break ; case 'Bold' : B = new FCKToolbarButton ( 'Bold' , FCKLang . Bold , null , null , false , true , 20 ) ; break ; case 'Italic' : B = new FCKToolbarButton ( 'Italic' , FCKLang . Italic , null , null , false , true , 21 ) ; break ; case 'Underline' : B = new FCKToolbarButton ( 'Underline' , FCKLang . Underline , null , null , false , true , 22 ) ; break ; case 'StrikeThrough' : B = new FCKToolbarButton ( 'StrikeThrough' , FCKLang . StrikeThrough , null , null , false , true , 23 ) ; break ; case 'Subscript' : B = new FCKToolbarButton ( 'Subscript' , FCKLang . Subscript , null , null , false , true , 24 ) ; break ; case 'Superscript' : B = new FCKToolbarButton ( 'Superscript' , FCKLang . Superscript , null , null , false , true , 25 ) ; break ; case 'OrderedList' : B = new FCKToolbarButton ( 'InsertOrderedList' , FCKLang . NumberedListLbl , FCKLang . NumberedList , null , false , true , 26 ) ; break ; case 'UnorderedList' : B = new FCKToolbarButton ( 'InsertUnorderedList' , FCKLang . BulletedListLbl , FCKLang . BulletedList , null , false , true , 27 ) ; break ; case 'Outdent' : B = new FCKToolbarButton ( 'Outdent' , FCKLang . DecreaseIndent , null , null , false , true , 28 ) ; break ; case 'Indent' : B = new FCKToolbarButton ( 'Indent' , FCKLang . IncreaseIndent , null , null , false , true , 29 ) ; break ; case 'Blockquote' : B = new FCKToolbarButton ( 'Blockquote' , FCKLang . Blockquote , null , null , false , true , 73 ) ; break ; case 'CreateDiv' : B = new FCKToolbarButton ( 'CreateDiv' , FCKLang . CreateDiv , null , null , false , true , 74 ) ; break ; case 'Link' : B = new FCKToolbarButton ( 'Link' , FCKLang . InsertLinkLbl , FCKLang . InsertLink , null , false , true , 34 ) ; break ; case 'Unlink' : B = new FCKToolbarButton ( 'Unlink' , FCKLang . RemoveLink , null , null , false , true , 35 ) ; break ; case 'Anchor' : B = new FCKToolbarButton ( 'Anchor' , FCKLang . Anchor , null , null , null , null , 36 ) ; break ; case 'Image' : B = new FCKToolbarButton ( 'Image' , FCKLang . InsertImageLbl , FCKLang . InsertImage , null , false , true , 37 ) ; break ; case 'Flash' : B = new FCKToolbarButton ( 'Flash' , FCKLang . InsertFlashLbl , FCKLang . InsertFlash , null , false , true , 38 ) ; break ; case 'UpFileBtn' : B = new FCKToolbarButton ( 'UpFileBtn' , FCKLang . UpFileBtn , FCKLang . UpFileBtn , null , false , true , 4 ) ; break ; case 'Table' : B = new FCKToolbarButton ( 'Table' , FCKLang . InsertTableLbl , FCKLang . InsertTable , null , false , true , 39 ) ; break ; case 'SpecialChar' : B = new FCKToolbarButton ( 'SpecialChar' , FCKLang . InsertSpecialC
var FCKToolbar = function ( ) { this . Items = [ ] ; } ; FCKToolbar . prototype . AddItem = function ( A ) { return this . Items [ this . Items . length ] = A ; } ; FCKToolbar . prototype . AddButton = function ( A , B , C , D , E , F ) { if ( typeof ( D ) == 'number' ) D = [ this . DefaultIconsStrip , this . DefaultIconSize , D ] ; var G = new FCKToolbarButtonUI ( A , B , C , D , E , F ) ; G . _FCKToolbar = this ; G . OnClick = FCKToolbar _OnItemClick ; return this . AddItem ( G ) ; } ; function FCKToolbar _OnItemClick ( A ) { var B = A . _FCKToolbar ; if ( B . OnItemClick ) B . OnItemClick ( B , A ) ; } ; FCKToolbar . prototype . AddSeparator = function ( ) { this . AddItem ( new FCKToolbarSeparator ( ) ) ; } ; FCKToolbar . prototype . Create = function ( A ) { var B = FCKTools . GetElementDocument ( A ) ; var e = B . createElement ( 'table' ) ; e . className = 'TB_Toolbar' ; e . style . styleFloat = e . style . cssFloat = ( FCKLang . Dir == 'ltr' ? 'left' : 'right' ) ; e . dir = FCKLang . Dir ; e . cellPadding = 0 ; e . cellSpacing = 0 ; var C = e . insertRow ( - 1 ) ; var D ; if ( ! this . HideStart ) { D = C . insertCell ( - 1 ) ; D . appendChild ( B . createElement ( 'div' ) ) . className = 'TB_Start' ; } ; for ( var i = 0 ; i < this . Items . length ; i ++ ) { this . Items [ i ] . Create ( C . insertCell ( - 1 ) ) ; } ; if ( ! this . HideEnd ) { D = C . insertCell ( - 1 ) ; D . appendChild ( B . createElement ( 'div' ) ) . className = 'TB_End' ; } ; A . appendChild ( e ) ; } ; var FCKToolbarSeparator = function ( ) { } ; FCKToolbarSeparator . prototype . Create = function ( A ) { FCKTools . AppendElement ( A , 'div' ) . className = 'TB_Separator' ; } ;
var FCKToolbarBreak = function ( ) { } ; FCKToolbarBreak . prototype . Create = function ( A ) { var B = FCKTools . GetElementDocument ( A ) . createElement ( 'div' ) ; B . className = 'TB_Break' ; B . style . clear = FCKLang . Dir == 'rtl' ? 'left' : 'right' ; A . appendChild ( B ) ; } ;
function FCKToolbarSet _Create ( A ) { var B ; var C = A || FCKConfig . ToolbarLocation ; switch ( C ) { case 'In' : document . getElementById ( 'xToolbarRow' ) . style . display = '' ; B = new FCKToolbarSet ( document ) ; break ; case 'None' : B = new FCKToolbarSet ( document ) ; break ; default : FCK . Events . AttachEvent ( 'OnBlur' , FCK _OnBlur ) ; FCK . Events . AttachEvent ( 'OnFocus' , FCK _OnFocus ) ; var D ; var E = C . match ( /^Out:(.+)\((\w+)\)$/ ) ; if ( E ) { if ( FCKBrowserInfo . IsAIR ) FCKAdobeAIR . ToolbarSet _GetOutElement ( window , E ) ; else D = eval ( 'parent.' + E [ 1 ] ) . document . getElementById ( E [ 2 ] ) ; } else { E = C . match ( /^Out:(\w+)$/ ) ; if ( E ) D = parent . document . getElementById ( E [ 1 ] ) ; } ; if ( ! D ) { alert ( 'Invalid value for "ToolbarLocation"' ) ; return arguments . callee ( 'In' ) ; } ; B = D . _ _FCKToolbarSet ; if ( B ) break ; var F = FCKTools . GetElementDocument ( D ) . createElement ( 'iframe' ) ; F . src = 'javascript:void(0)' ; F . frameBorder = 0 ; F . width = '100%' ; F . height = '10' ; D . appendChild ( F ) ; F . unselectable = 'on' ; var G = F . contentWindow . document ; var H = '' ; if ( FCKBrowserInfo . IsSafari ) H = '<base href="' + window . document . location + '">' ; G . open ( ) ; G . write ( '<html><head>' + H + '<script type="text/javascript"> var adjust = function() { window.frameElement.height = document.body.scrollHeight ; }; window.onresize = window.onload = function(){var timer = null;var lastHeight = -1;var lastChange = 0;var poller = function(){var currentHeight = document.body.scrollHeight || 0;var currentTime = (new Date()).getTime();if (currentHeight != lastHeight){lastChange = currentTime;adjust();lastHeight = document.body.scrollHeight;}if (lastChange < currentTime - 1000) clearInterval(timer);};timer = setInterval(poller, 100);}</script></head><body style="overflow: hidden">' + document . getElementById ( 'xToolbarSpace' ) . innerHTML + '</body></html>' ) ; G . close ( ) ; if ( FCKBrowserInfo . IsAIR ) FCKAdobeAIR . ToolbarSet _InitOutFrame ( G ) ; FCKTools . AddEventListener ( G , 'contextmenu' , FCKTools . CancelEvent ) ; FCKTools . AppendStyleSheet ( G , FCKConfig . SkinEditorCSS ) ; B = D . _ _FCKToolbarSet = new FCKToolbarSet ( G ) ; B . _IFrame = F ; if ( FCK . IECleanup ) FCK . IECleanup . AddItem ( D , FCKToolbarSet _Target _Cleanup ) ; } ; B . CurrentInstance = FCK ; if ( ! B . ToolbarItems ) B . ToolbarItems = FCKToolbarItems ; FCK . AttachToOnSelectionChange ( B . RefreshItemsState ) ; return B ; } ; function FCK _OnBlur ( A ) { var B = A . ToolbarSet ; if ( B . CurrentInstance == A ) B . Disable ( ) ; } ; function FCK _OnFocus ( A ) { var B = A . ToolbarSet ; var C = A || FCK ; B . CurrentInstance . FocusManager . RemoveWindow ( B . _IFrame . contentWindow ) ; B . CurrentInstance = C ; C . FocusManager . AddWindow ( B . _IFrame . contentWindow , true ) ; B . Enable ( ) ; } ; function FCKToolbarSet _Cleanup ( ) { this . _TargetElement = null ; this . _IFrame = null ; } ; function FCKToolbarSet _Target _Cleanup ( ) { this . _ _FCKToolbarSet = null ; } ; var FCKToolbarSet = function ( A ) { this . _Document = A ; this . _TargetElement = A . getElementById ( 'xToolbar' ) ; var B = A . getElementById ( 'xExpandHandle' ) ; var C = A . getElementById ( 'xCollapseHandle' ) ; B . title = FCKLang . ToolbarExpand ; FCKTools . AddEventListener ( B , 'click' , FCKToolbarSet _Expand _OnClick ) ; C . title = FCKLang . ToolbarCollapse ; FCKTools . AddEventListener ( C , 'click' , FCKToolbarSet _Collapse _OnClick ) ; if ( ! FCKConfig . ToolbarCanCollapse || FCKConfig . ToolbarStartExpanded ) this . Expand ( ) ; else this . Collapse ( ) ; C . style . display = FCKConfig . ToolbarCanCollapse ? '' : 'none' ; if ( FCKConfig . ToolbarCanCollapse ) C . style . display = '' ; else A . getElementById ( 'xTBLeftBorder' ) . style . display = '' ; this . Toolbars = [ ] ; this . IsLoaded = false ; if ( FCK . IECleanup ) FCK . IECleanup . AddItem ( this , FCKToolbarSet _Cleanup ) ; } ; function FCKToolbarSet _Expand _OnClick ( ) { FCK . ToolbarSet . Expand ( ) ; } ; function FCKToolbarSet _Collapse _OnClick ( ) { FCK . ToolbarSet . Collapse ( ) ; } ; FCKToolbarSet . prototype . Expand = function ( ) { this . _ChangeVisibility ( false ) ; } ; FCKToolbarSet . prototype . Collapse = function ( ) { this . _ChangeVisibility ( true ) ; } ; FCKToolbarSet . prototype . _ChangeVisibility = function ( A ) { this . _Document . getElementById ( 'xCollapsed' ) . style . display = A ? '' : 'none' ; this . _Document . getElementById ( 'xExpanded' ) . style . display = A ? 'none' : '' ; if ( FCKBrowserInfo . IsGecko ) { FCKTools . RunFunction ( window . onresize ) ; } } ; FCKToolbarSet . prototype . Load = function ( A ) { this . Name = A ; this . Items = [ ] ; this . ItemsWysiwygOnly = [ ] ; this . ItemsContextSensitive = [ ] ; this . _TargetElement . innerHTML = '' ; var B = FCKConfig . ToolbarSets [ A ] ; if ( ! B ) { alert ( FCKLang . Unknown
var FCKDialog = ( function ( ) { var A ; var B ; var C ; var D = window . parent ; while ( D . parent && D . parent != D ) { try { if ( D . parent . document . domain != document . domain ) break ; if ( D . parent . document . getElementsByTagName ( 'frameset' ) . length > 0 ) break ; } catch ( e ) { break ; } ; D = D . parent ; } ; var E = D . document ; var F = function ( ) { if ( ! B ) B = FCKConfig . FloatingPanelsZIndex + 999 ; return ++ B ; } ; var G = function ( ) { if ( ! C ) return ; var H = FCKTools . IsStrictMode ( E ) ? E . documentElement : E . body ; FCKDomTools . SetElementStyles ( C , { 'width' : Math . max ( H . scrollWidth , H . clientWidth , E . scrollWidth || 0 ) - 1 + 'px' , 'height' : Math . max ( H . scrollHeight , H . clientHeight , E . scrollHeight || 0 ) - 1 + 'px' } ) ; } ; return { OpenDialog : function ( dialogName , dialogTitle , dialogPage , width , height , customValue , parentWindow , resizable ) { if ( ! A ) this . DisplayMainCover ( ) ; var I = { Title : dialogTitle , Page : dialogPage , Editor : window , CustomValue : customValue , TopWindow : D } ; FCK . ToolbarSet . CurrentInstance . Selection . Save ( ) ; var J = FCKTools . GetViewPaneSize ( D ) ; var K = { 'X' : 0 , 'Y' : 0 } ; var L = FCKBrowserInfo . IsIE && ( ! FCKBrowserInfo . IsIE7 || ! FCKTools . IsStrictMode ( D . document ) ) ; if ( L ) K = FCKTools . GetScrollPosition ( D ) ; var M = Math . max ( K . Y + ( J . Height - height - 20 ) / 2 , 0 ) ; var N = Math . max ( K . X + ( J . Width - width - 20 ) / 2 , 0 ) ; var O = E . createElement ( 'iframe' ) ; FCKTools . ResetStyles ( O ) ; O . src = FCKConfig . BasePath + 'fckdialog.html' ; O . frameBorder = 0 ; O . allowTransparency = true ; FCKDomTools . SetElementStyles ( O , { 'position' : ( L ) ? 'absolute' : 'fixed' , 'top' : M + 'px' , 'left' : N + 'px' , 'width' : width + 'px' , 'height' : height + 'px' , 'zIndex' : F ( ) } ) ; O . _DialogArguments = I ; E . body . appendChild ( O ) ; O . _ParentDialog = A ; A = O ; } , OnDialogClose : function ( dialogWindow ) { var O = dialogWindow . frameElement ; FCKDomTools . RemoveNode ( O ) ; if ( O . _ParentDialog ) { A = O . _ParentDialog ; O . _ParentDialog . contentWindow . SetEnabled ( true ) ; } else { if ( ! FCKBrowserInfo . IsIE ) FCK . Focus ( ) ; this . HideMainCover ( ) ; setTimeout ( function ( ) { A = null ; } , 0 ) ; FCK . ToolbarSet . CurrentInstance . Selection . Release ( ) ; } } , DisplayMainCover : function ( ) { C = E . createElement ( 'div' ) ; FCKTools . ResetStyles ( C ) ; FCKDomTools . SetElementStyles ( C , { 'position' : 'absolute' , 'zIndex' : F ( ) , 'top' : '0px' , 'left' : '0px' , 'backgroundColor' : FCKConfig . BackgroundBlockerColor } ) ; FCKDomTools . SetOpacity ( C , FCKConfig . BackgroundBlockerOpacity ) ; if ( FCKBrowserInfo . IsIE && ! FCKBrowserInfo . IsIE7 ) { var Q = E . createElement ( 'iframe' ) ; FCKTools . ResetStyles ( Q ) ; Q . hideFocus = true ; Q . frameBorder = 0 ; Q . src = FCKTools . GetVoidUrl ( ) ; FCKDomTools . SetElementStyles ( Q , { 'width' : '100%' , 'height' : '100%' , 'position' : 'absolute' , 'left' : '0px' , 'top' : '0px' , 'filter' : 'progid:DXImageTransform.Microsoft.Alpha(opacity=0)' } ) ; C . appendChild ( Q ) ; } ; FCKTools . AddEventListener ( D , 'resize' , G ) ; G ( ) ; E . body . appendChild ( C ) ; FCKFocusManager . Lock ( ) ; var R = FCK . ToolbarSet . CurrentInstance . GetInstanceObject ( 'frameElement' ) ; R . _fck _originalTabIndex = R . tabIndex ; R . tabIndex = - 1 ; } , HideMainCover : function ( ) { FCKDomTools . RemoveNode ( C ) ; FCKFocusManager . Unlock ( ) ; var R = FCK . ToolbarSet . CurrentInstance . GetInstanceObject ( 'frameElement' ) ; R . tabIndex = R . _fck _originalTabIndex ; FCKDomTools . ClearElementJSProperty ( R , '_fck_originalTabIndex' ) ; } , GetCover : function ( ) { return C ; } } ; } ) ( ) ;
var FCKMenuItem = function ( A , B , C , D , E , F ) { this . Name = B ; this . Label = C || B ; this . IsDisabled = E ; this . Icon = new FCKIcon ( D ) ; this . SubMenu = new FCKMenuBlockPanel ( ) ; this . SubMenu . Parent = A ; this . SubMenu . OnClick = FCKTools . CreateEventListener ( FCKMenuItem _SubMenu _OnClick , this ) ; this . CustomData = F ; if ( FCK . IECleanup ) FCK . IECleanup . AddItem ( this , FCKMenuItem _Cleanup ) ; } ; FCKMenuItem . prototype . AddItem = function ( A , B , C , D , E ) { this . HasSubMenu = true ; return this . SubMenu . AddItem ( A , B , C , D , E ) ; } ; FCKMenuItem . prototype . AddSeparator = function ( ) { this . SubMenu . AddSeparator ( ) ; } ; FCKMenuItem . prototype . Create = function ( A ) { var B = this . HasSubMenu ; var C = FCKTools . GetElementDocument ( A ) ; var r = this . MainElement = A . insertRow ( - 1 ) ; r . className = this . IsDisabled ? 'MN_Item_Disabled' : 'MN_Item' ; if ( ! this . IsDisabled ) { FCKTools . AddEventListenerEx ( r , 'mouseover' , FCKMenuItem _OnMouseOver , [ this ] ) ; FCKTools . AddEventListenerEx ( r , 'click' , FCKMenuItem _OnClick , [ this ] ) ; if ( ! B ) FCKTools . AddEventListenerEx ( r , 'mouseout' , FCKMenuItem _OnMouseOut , [ this ] ) ; } ; var D = r . insertCell ( - 1 ) ; D . className = 'MN_Icon' ; D . appendChild ( this . Icon . CreateIconElement ( C ) ) ; D = r . insertCell ( - 1 ) ; D . className = 'MN_Label' ; D . noWrap = true ; D . appendChild ( C . createTextNode ( this . Label ) ) ; D = r . insertCell ( - 1 ) ; if ( B ) { D . className = 'MN_Arrow' ; var E = D . appendChild ( C . createElement ( 'IMG' ) ) ; E . src = FCK _IMAGES _PATH + 'arrow_' + FCKLang . Dir + '.gif' ; E . width = 4 ; E . height = 7 ; this . SubMenu . Create ( ) ; this . SubMenu . Panel . OnHide = FCKTools . CreateEventListener ( FCKMenuItem _SubMenu _OnHide , this ) ; } } ; FCKMenuItem . prototype . Activate = function ( ) { this . MainElement . className = 'MN_Item_Over' ; if ( this . HasSubMenu ) { this . SubMenu . Show ( this . MainElement . offsetWidth + 2 , - 2 , this . MainElement ) ; } ; FCKTools . RunFunction ( this . OnActivate , this ) ; } ; FCKMenuItem . prototype . Deactivate = function ( ) { this . MainElement . className = 'MN_Item' ; if ( this . HasSubMenu ) this . SubMenu . Hide ( ) ; } ; function FCKMenuItem _SubMenu _OnClick ( A , B ) { FCKTools . RunFunction ( B . OnClick , B , [ A ] ) ; } ; function FCKMenuItem _SubMenu _OnHide ( A ) { A . Deactivate ( ) ; } ; function FCKMenuItem _OnClick ( A , B ) { if ( B . HasSubMenu ) B . Activate ( ) ; else { B . Deactivate ( ) ; FCKTools . RunFunction ( B . OnClick , B , [ B ] ) ; } } ; function FCKMenuItem _OnMouseOver ( A , B ) { B . Activate ( ) ; } ; function FCKMenuItem _OnMouseOut ( A , B ) { B . Deactivate ( ) ; } ; function FCKMenuItem _Cleanup ( ) { this . MainElement = null ; } ;
var FCKMenuBlock = function ( ) { this . _Items = [ ] ; } ; FCKMenuBlock . prototype . Count = function ( ) { return this . _Items . length ; } ; FCKMenuBlock . prototype . AddItem = function ( A , B , C , D , E ) { var F = new FCKMenuItem ( this , A , B , C , D , E ) ; F . OnClick = FCKTools . CreateEventListener ( FCKMenuBlock _Item _OnClick , this ) ; F . OnActivate = FCKTools . CreateEventListener ( FCKMenuBlock _Item _OnActivate , this ) ; this . _Items . push ( F ) ; return F ; } ; FCKMenuBlock . prototype . AddSeparator = function ( ) { this . _Items . push ( new FCKMenuSeparator ( ) ) ; } ; FCKMenuBlock . prototype . RemoveAllItems = function ( ) { this . _Items = [ ] ; var A = this . _ItemsTable ; if ( A ) { while ( A . rows . length > 0 ) A . deleteRow ( 0 ) ; } } ; FCKMenuBlock . prototype . Create = function ( A ) { if ( ! this . _ItemsTable ) { if ( FCK . IECleanup ) FCK . IECleanup . AddItem ( this , FCKMenuBlock _Cleanup ) ; this . _Window = FCKTools . GetElementWindow ( A ) ; var B = FCKTools . GetElementDocument ( A ) ; var C = A . appendChild ( B . createElement ( 'table' ) ) ; C . cellPadding = 0 ; C . cellSpacing = 0 ; FCKTools . DisableSelection ( C ) ; var D = C . insertRow ( - 1 ) . insertCell ( - 1 ) ; D . className = 'MN_Menu' ; var E = this . _ItemsTable = D . appendChild ( B . createElement ( 'table' ) ) ; E . cellPadding = 0 ; E . cellSpacing = 0 ; } ; for ( var i = 0 ; i < this . _Items . length ; i ++ ) this . _Items [ i ] . Create ( this . _ItemsTable ) ; } ; function FCKMenuBlock _Item _OnClick ( A , B ) { if ( B . Hide ) B . Hide ( ) ; FCKTools . RunFunction ( B . OnClick , B , [ A ] ) ; } ; function FCKMenuBlock _Item _OnActivate ( A ) { var B = A . _ActiveItem ; if ( B && B != this ) { if ( ! FCKBrowserInfo . IsIE && B . HasSubMenu && ! this . HasSubMenu ) { A . _Window . focus ( ) ; A . Panel . HasFocus = true ; } ; B . Deactivate ( ) ; } ; A . _ActiveItem = this ; } ; function FCKMenuBlock _Cleanup ( ) { this . _Window = null ; this . _ItemsTable = null ; } ; var FCKMenuSeparator = function ( ) { } ; FCKMenuSeparator . prototype . Create = function ( A ) { var B = FCKTools . GetElementDocument ( A ) ; var r = A . insertRow ( - 1 ) ; var C = r . insertCell ( - 1 ) ; C . className = 'MN_Separator MN_Icon' ; C = r . insertCell ( - 1 ) ; C . className = 'MN_Separator' ; C . appendChild ( B . createElement ( 'DIV' ) ) . className = 'MN_Separator_Line' ; C = r . insertCell ( - 1 ) ; C . className = 'MN_Separator' ; C . appendChild ( B . createElement ( 'DIV' ) ) . className = 'MN_Separator_Line' ; } ;
var FCKMenuBlockPanel = function ( ) { FCKMenuBlock . call ( this ) ; } ; FCKMenuBlockPanel . prototype = new FCKMenuBlock ( ) ; FCKMenuBlockPanel . prototype . Create = function ( ) { var A = this . Panel = ( this . Parent && this . Parent . Panel ? this . Parent . Panel . CreateChildPanel ( ) : new FCKPanel ( ) ) ; A . AppendStyleSheet ( FCKConfig . SkinEditorCSS ) ; FCKMenuBlock . prototype . Create . call ( this , A . MainNode ) ; } ; FCKMenuBlockPanel . prototype . Show = function ( x , y , A ) { if ( ! this . Panel . CheckIsOpened ( ) ) this . Panel . Show ( x , y , A ) ; } ; FCKMenuBlockPanel . prototype . Hide = function ( ) { if ( this . Panel . CheckIsOpened ( ) ) this . Panel . Hide ( ) ; } ;
var FCKContextMenu = function ( A , B ) { this . CtrlDisable = false ; var C = this . _Panel = new FCKPanel ( A ) ; C . AppendStyleSheet ( FCKConfig . SkinEditorCSS ) ; C . IsContextMenu = true ; if ( FCKBrowserInfo . IsGecko ) C . Document . addEventListener ( 'draggesture' , function ( e ) { e . preventDefault ( ) ; return false ; } , true ) ; var D = this . _MenuBlock = new FCKMenuBlock ( ) ; D . Panel = C ; D . OnClick = FCKTools . CreateEventListener ( FCKContextMenu _MenuBlock _OnClick , this ) ; this . _Redraw = true ; } ; FCKContextMenu . prototype . SetMouseClickWindow = function ( A ) { if ( ! FCKBrowserInfo . IsIE ) { this . _Document = A . document ; if ( FCKBrowserInfo . IsOpera && ! ( 'oncontextmenu' in document . createElement ( 'foo' ) ) ) { this . _Document . addEventListener ( 'mousedown' , FCKContextMenu _Document _OnMouseDown , false ) ; this . _Document . addEventListener ( 'mouseup' , FCKContextMenu _Document _OnMouseUp , false ) ; } ; this . _Document . addEventListener ( 'contextmenu' , FCKContextMenu _Document _OnContextMenu , false ) ; } } ; FCKContextMenu . prototype . AddItem = function ( A , B , C , D , E ) { var F = this . _MenuBlock . AddItem ( A , B , C , D , E ) ; this . _Redraw = true ; return F ; } ; FCKContextMenu . prototype . AddSeparator = function ( ) { this . _MenuBlock . AddSeparator ( ) ; this . _Redraw = true ; } ; FCKContextMenu . prototype . RemoveAllItems = function ( ) { this . _MenuBlock . RemoveAllItems ( ) ; this . _Redraw = true ; } ; FCKContextMenu . prototype . AttachToElement = function ( A ) { if ( FCKBrowserInfo . IsIE ) FCKTools . AddEventListenerEx ( A , 'contextmenu' , FCKContextMenu _AttachedElement _OnContextMenu , this ) ; else A . _FCKContextMenu = this ; } ; function FCKContextMenu _Document _OnContextMenu ( e ) { if ( FCKConfig . BrowserContextMenu ) return true ; var A = e . target ; while ( A ) { if ( A . _FCKContextMenu ) { if ( A . _FCKContextMenu . CtrlDisable && ( e . ctrlKey || e . metaKey ) ) return true ; FCKTools . CancelEvent ( e ) ; FCKContextMenu _AttachedElement _OnContextMenu ( e , A . _FCKContextMenu , A ) ; return false ; } ; A = A . parentNode ; } ; return true ; } ; var FCKContextMenu _OverrideButton ; function FCKContextMenu _Document _OnMouseDown ( e ) { if ( ! e || e . button != 2 ) return false ; if ( FCKConfig . BrowserContextMenu ) return true ; var A = e . target ; while ( A ) { if ( A . _FCKContextMenu ) { if ( A . _FCKContextMenu . CtrlDisable && ( e . ctrlKey || e . metaKey ) ) return true ; var B = FCKContextMenu _OverrideButton ; if ( ! B ) { var C = FCKTools . GetElementDocument ( e . target ) ; B = FCKContextMenu _OverrideButton = C . createElement ( 'input' ) ; B . type = 'button' ; var D = C . createElement ( 'p' ) ; C . body . appendChild ( D ) ; D . appendChild ( B ) ; } ; B . style . cssText = 'position:absolute;top:' + ( e . clientY - 2 ) + 'px;left:' + ( e . clientX - 2 ) + 'px;width:5px;height:5px;opacity:0.01' ; } ; A = A . parentNode ; } ; return false ; } ; function FCKContextMenu _Document _OnMouseUp ( e ) { if ( FCKConfig . BrowserContextMenu ) return true ; var A = FCKContextMenu _OverrideButton ; if ( A ) { var B = A . parentNode ; B . parentNode . removeChild ( B ) ; FCKContextMenu _OverrideButton = undefined ; if ( e && e . button == 2 ) { FCKContextMenu _Document _OnContextMenu ( e ) ; return false ; } } ; return true ; } ; function FCKContextMenu _AttachedElement _OnContextMenu ( A , B , C ) { if ( ( B . CtrlDisable && ( A . ctrlKey || A . metaKey ) ) || FCKConfig . BrowserContextMenu ) return true ; var D = C || this ; if ( B . OnBeforeOpen ) B . OnBeforeOpen . call ( B , D ) ; if ( B . _MenuBlock . Count ( ) == 0 ) return false ; if ( B . _Redraw ) { B . _MenuBlock . Create ( B . _Panel . MainNode ) ; B . _Redraw = false ; } ; FCKTools . DisableSelection ( B . _Panel . Document . body ) ; var x = 0 ; var y = 0 ; if ( FCKBrowserInfo . IsIE ) { x = A . screenX ; y = A . screenY ; } else if ( FCKBrowserInfo . IsSafari ) { x = A . clientX ; y = A . clientY ; } else { x = A . pageX ; y = A . pageY ; } ; B . _Panel . Show ( x , y , A . currentTarget || null ) ; return false ; } ; function FCKContextMenu _MenuBlock _OnClick ( A , B ) { B . _Panel . Hide ( ) ; FCKTools . RunFunction ( B . OnItemClick , B , A ) ; } ;
FCK . ContextMenu = { } ; FCK . ContextMenu . Listeners = [ ] ; FCK . ContextMenu . RegisterListener = function ( A ) { if ( A ) this . Listeners . push ( A ) ; } ; function FCK _ContextMenu _Init ( ) { var A = FCK . ContextMenu . _InnerContextMenu = new FCKContextMenu ( FCKBrowserInfo . IsIE ? window : window . parent , FCKLang . Dir ) ; A . CtrlDisable = FCKConfig . BrowserContextMenuOnCtrl ; A . OnBeforeOpen = FCK _ContextMenu _OnBeforeOpen ; A . OnItemClick = FCK _ContextMenu _OnItemClick ; var B = FCK . ContextMenu ; for ( var i = 0 ; i < FCKConfig . ContextMenu . length ; i ++ ) B . RegisterListener ( FCK _ContextMenu _GetListener ( FCKConfig . ContextMenu [ i ] ) ) ; } ; function FCK _ContextMenu _GetListener ( A ) { switch ( A ) { case 'Generic' : return { AddItems : function ( menu , tag , tagName ) { menu . AddItem ( 'Cut' , FCKLang . Cut , 7 , FCKCommands . GetCommand ( 'Cut' ) . GetState ( ) == - 1 ) ; menu . AddItem ( 'Copy' , FCKLang . Copy , 8 , FCKCommands . GetCommand ( 'Copy' ) . GetState ( ) == - 1 ) ; menu . AddItem ( 'Paste' , FCKLang . Paste , 9 , FCKCommands . GetCommand ( 'Paste' ) . GetState ( ) == - 1 ) ; } } ; case 'Table' : return { AddItems : function ( menu , tag , tagName ) { var B = ( tagName == 'TABLE' ) ; var C = ( ! B && FCKSelection . HasAncestorNode ( 'TABLE' ) ) ; if ( C ) { menu . AddSeparator ( ) ; var D = menu . AddItem ( 'Cell' , FCKLang . CellCM ) ; D . AddItem ( 'TableInsertCellBefore' , FCKLang . InsertCellBefore , 69 ) ; D . AddItem ( 'TableInsertCellAfter' , FCKLang . InsertCellAfter , 58 ) ; D . AddItem ( 'TableDeleteCells' , FCKLang . DeleteCells , 59 ) ; if ( FCKBrowserInfo . IsGecko ) D . AddItem ( 'TableMergeCells' , FCKLang . MergeCells , 60 , FCKCommands . GetCommand ( 'TableMergeCells' ) . GetState ( ) == - 1 ) ; else { D . AddItem ( 'TableMergeRight' , FCKLang . MergeRight , 60 , FCKCommands . GetCommand ( 'TableMergeRight' ) . GetState ( ) == - 1 ) ; D . AddItem ( 'TableMergeDown' , FCKLang . MergeDown , 60 , FCKCommands . GetCommand ( 'TableMergeDown' ) . GetState ( ) == - 1 ) ; } ; D . AddItem ( 'TableHorizontalSplitCell' , FCKLang . HorizontalSplitCell , 61 , FCKCommands . GetCommand ( 'TableHorizontalSplitCell' ) . GetState ( ) == - 1 ) ; D . AddItem ( 'TableVerticalSplitCell' , FCKLang . VerticalSplitCell , 61 , FCKCommands . GetCommand ( 'TableVerticalSplitCell' ) . GetState ( ) == - 1 ) ; D . AddSeparator ( ) ; D . AddItem ( 'TableCellProp' , FCKLang . CellProperties , 57 , FCKCommands . GetCommand ( 'TableCellProp' ) . GetState ( ) == - 1 ) ; menu . AddSeparator ( ) ; D = menu . AddItem ( 'Row' , FCKLang . RowCM ) ; D . AddItem ( 'TableInsertRowBefore' , FCKLang . InsertRowBefore , 70 ) ; D . AddItem ( 'TableInsertRowAfter' , FCKLang . InsertRowAfter , 62 ) ; D . AddItem ( 'TableDeleteRows' , FCKLang . DeleteRows , 63 ) ; menu . AddSeparator ( ) ; D = menu . AddItem ( 'Column' , FCKLang . ColumnCM ) ; D . AddItem ( 'TableInsertColumnBefore' , FCKLang . InsertColumnBefore , 71 ) ; D . AddItem ( 'TableInsertColumnAfter' , FCKLang . InsertColumnAfter , 64 ) ; D . AddItem ( 'TableDeleteColumns' , FCKLang . DeleteColumns , 65 ) ; } ; if ( B || C ) { menu . AddSeparator ( ) ; menu . AddItem ( 'TableDelete' , FCKLang . TableDelete ) ; menu . AddItem ( 'TableProp' , FCKLang . TableProperties , 39 ) ; } } } ; case 'Link' : return { AddItems : function ( menu , tag , tagName ) { var E = ( tagName == 'A' || FCKSelection . HasAncestorNode ( 'A' ) ) ; if ( E || FCK . GetNamedCommandState ( 'Unlink' ) != - 1 ) { var F = FCKSelection . MoveToAncestorNode ( 'A' ) ; var G = ( F && F . name . length > 0 && F . href . length == 0 ) ; if ( G ) return ; menu . AddSeparator ( ) ; menu . AddItem ( 'VisitLink' , FCKLang . VisitLink ) ; menu . AddSeparator ( ) ; if ( E ) menu . AddItem ( 'Link' , FCKLang . EditLink , 34 ) ; menu . AddItem ( 'Unlink' , FCKLang . RemoveLink , 35 ) ; } } } ; case 'Image' : return { AddItems : function ( menu , tag , tagName ) { if ( tagName == 'IMG' && ! tag . getAttribute ( '_fckfakelement' ) ) { menu . AddSeparator ( ) ; menu . AddItem ( 'Image' , FCKLang . ImageProperties , 37 ) ; } } } ; case 'Anchor' : return { AddItems : function ( menu , tag , tagName ) { var F = FCKSelection . MoveToAncestorNode ( 'A' ) ; var G = ( F && F . name . length > 0 ) ; if ( G || ( tagName == 'IMG' && tag . getAttribute ( '_fckanchor' ) ) ) { menu . AddSeparator ( ) ; menu . AddItem ( 'Anchor' , FCKLang . AnchorProp , 36 ) ; menu . AddItem ( 'AnchorDelete' , FCKLang . AnchorDelete ) ; } } } ; case 'Flash' : return { AddItems : function ( menu , tag , tagName ) { if ( tagName == 'IMG' && tag . getAttribute ( '_fckflash' ) ) { menu . AddSeparator ( ) ; menu . AddItem ( 'Flash' , FCKLang . FlashProperties , 38 ) ; } } } ; case 'Form' : return { AddItems : function ( menu , tag , tagName ) { if ( FCKSelection . HasAncestorNode ( 'FORM' ) ) { menu . AddSeparator ( ) ; menu . AddItem ( 'Form' , FCKLang . FormProp , 48 ) ; } } } ; case 'Checkbox' : return { AddItems : function ( menu , tag , tagName ) { if ( tagName == 'INPUT' && tag . type == 'checkbox' ) { menu . AddSeparator ( ) ; menu . AddItem ( 'Checkbox' , FCKLang . CheckboxProp ,
var FCKHtmlIterator = function ( A ) { this . _sourceHtml = A ; } ; FCKHtmlIterator . prototype = { Next : function ( ) { var A = this . _sourceHtml ; if ( A == null ) return null ; var B = FCKRegexLib . HtmlTag . exec ( A ) ; var C = false ; var D = "" ; if ( B ) { if ( B . index > 0 ) { D = A . substr ( 0 , B . index ) ; this . _sourceHtml = A . substr ( B . index ) ; } else { C = true ; D = B [ 0 ] ; this . _sourceHtml = A . substr ( B [ 0 ] . length ) ; } } else { D = A ; this . _sourceHtml = null ; } ; return { 'isTag' : C , 'value' : D } ; } , Each : function ( A ) { var B ; while ( ( B = this . Next ( ) ) ) A ( B . isTag , B . value ) ; } } ; var FCKHtmlIterator = function ( A ) { this . _sourceHtml = A ; } ; FCKHtmlIterator . prototype = { Next : function ( ) { var A = this . _sourceHtml ; if ( A == null ) return null ; var B = FCKRegexLib . HtmlTag . exec ( A ) ; var C = false ; var D = "" ; if ( B ) { if ( B . index > 0 ) { D = A . substr ( 0 , B . index ) ; this . _sourceHtml = A . substr ( B . index ) ; } else { C = true ; D = B [ 0 ] ; this . _sourceHtml = A . substr ( B [ 0 ] . length ) ; } } else { D = A ; this . _sourceHtml = null ; } ; return { 'isTag' : C , 'value' : D } ; } , Each : function ( A ) { var B ; while ( ( B = this . Next ( ) ) ) A ( B . isTag , B . value ) ; } } ;
var FCKPlugin = function ( A , B , C ) { this . Name = A ; this . BasePath = C ? C : FCKConfig . PluginsPath ; this . Path = this . BasePath + A + '/' ; if ( ! B || B . length == 0 ) this . AvailableLangs = [ ] ; else this . AvailableLangs = B . split ( ',' ) ; } ; FCKPlugin . prototype . Load = function ( ) { if ( this . AvailableLangs . length > 0 ) { var A ; if ( this . AvailableLangs . IndexOf ( FCKLanguageManager . ActiveLanguage . Code ) >= 0 ) A = FCKLanguageManager . ActiveLanguage . Code ; else A = this . AvailableLangs [ 0 ] ; LoadScript ( this . Path + 'lang/' + A + '.js' ) ; } ; LoadScript ( this . Path + 'fckplugin.js' ) ; } ;
var FCKPlugins = FCK . Plugins = { } ; FCKPlugins . ItemsCount = 0 ; FCKPlugins . Items = { } ; FCKPlugins . Load = function ( ) { var A = FCKPlugins . Items ; for ( var i = 0 ; i < FCKConfig . Plugins . Items . length ; i ++ ) { var B = FCKConfig . Plugins . Items [ i ] ; var C = A [ B [ 0 ] ] = new FCKPlugin ( B [ 0 ] , B [ 1 ] , B [ 2 ] ) ; FCKPlugins . ItemsCount ++ ; } ; for ( var s in A ) A [ s ] . Load ( ) ; FCKPlugins . Load = null ; } ;