2014-05-07 13:06:24 +08:00
// 4.0.17 (2014-02-xx)
2015-01-08 00:36:28 +08:00
! function ( e , t ) { "use strict" ; function n ( e , t ) { for ( var n , r = [ ] , i = 0 ; i < e . length ; ++ i ) { if ( n = s [ e [ i ] ] || o ( e [ i ] ) , ! n ) throw "module definition dependecy not found: " + e [ i ] ; r . push ( n ) } t . apply ( null , r ) } function r ( e , r , i ) { if ( "string" != typeof e ) throw "invalid module definition, module id must be defined and be a string" ; if ( r === t ) throw "invalid module definition, dependencies must be specified" ; if ( i === t ) throw "invalid module definition, definition function must be specified" ; n ( r , function ( ) { s [ e ] = i . apply ( null , arguments ) } ) } function i ( e ) { return ! ! s [ e ] } function o ( t ) { for ( var n = e , r = t . split ( /[.\/]/ ) , i = 0 ; i < r . length ; ++ i ) { if ( ! n [ r [ i ] ] ) return ; n = n [ r [ i ] ] } return n } function a ( n ) { for ( var r = 0 ; r < n . length ; r ++ ) { for ( var i = e , o = n [ r ] , a = o . split ( /[.\/]/ ) , l = 0 ; l < a . length - 1 ; ++ l ) i [ a [ l ] ] === t && ( i [ a [ l ] ] = { } ) , i = i [ a [ l ] ] ; i [ a [ a . length - 1 ] ] = s [ o ] } } var s = { } , l = "tinymce/dom/Sizzle" , c = "tinymce/html/Styles" , d = "tinymce/dom/EventUtils" , u = "tinymce/dom/TreeWalker" , f = "tinymce/util/Tools" , p = "tinymce/dom/Range" , m = "tinymce/html/Entities" , h = "tinymce/Env" , g = "tinymce/dom/DOMUtils" , v = "tinymce/dom/ScriptLoader" , y = "tinymce/AddOnManager" , b = "tinymce/html/Node" , C = "tinymce/html/Schema" , x = "tinymce/html/SaxParser" , w = "tinymce/html/DomParser" , _ = "tinymce/html/Writer" , N = "tinymce/html/Serializer" , k = "tinymce/dom/Serializer" , E = "tinymce/dom/TridentSelection" , S = "tinymce/util/VK" , T = "tinymce/dom/ControlSelection" , R = "tinymce/dom/Selection" , A = "tinymce/dom/RangeUtils" , B = "tinymce/Formatter" , L = "tinymce/UndoManager" , H = "tinymce/EnterKey" , M = "tinymce/ForceBlocks" , D = "tinymce/EditorCommands" , P = "tinymce/util/URI" , O = "tinymce/util/Class" , I = "tinymce/ui/Selector" , F = "tinymce/ui/Collection" , z = "tinymce/ui/DomUtils" , W = "tinymce/ui/Control" , V = "tinymce/ui/Factory" , U = "tinymce/ui/Container" , q = "tinymce/ui/DragHelper" , j = "tinymce/ui/Scrollable" , K = "tinymce/ui/Panel" , Y = "tinymce/ui/Movable" , G = "tinymce/ui/Resizable" , X = "tinymce/ui/FloatPanel" , J = "tinymce/ui/KeyboardNavigation" , Q = "tinymce/ui/Window" , Z = "tinymce/ui/MessageBox" , et = "tinymce/WindowManager" , tt = "tinymce/util/Quirks" , nt = "tinymce/util/Observable" , rt = "tinymce/Shortcuts" , it = "tinymce/Editor" , ot = "tinymce/util/I18n" , at = "tinymce/FocusManager" , st = "tinymce/EditorManager" , lt = "tinymce/LegacyInput" , ct = "tinymce/util/XHR" , dt = "tinymce/util/JSON" , ut = "tinymce/util/JSONRequest" , ft = "tinymce/util/JSONP" , pt = "tinymce/util/LocalStorage" , mt = "tinymce/Compat" , ht = "tinymce/ui/Layout" , gt = "tinymce/ui/AbsoluteLayout" , vt = "tinymce/ui/Tooltip" , yt = "tinymce/ui/Widget" , bt = "tinymce/ui/Button" , Ct = "tinymce/ui/ButtonGroup" , xt = "tinymce/ui/Checkbox" , wt = "tinymce/ui/PanelButton" , _t = "tinymce/ui/ColorButton" , Nt = "tinymce/ui/ComboBox" , kt = "tinymce/ui/Path" , Et = "tinymce/ui/ElementPath" , St = "tinymce/ui/FormItem" , Tt = "tinymce/ui/Form" , Rt = "tinymce/ui/FieldSet" , At = "tinymce/ui/FilePicker" , Bt = "tinymce/ui/FitLayout" , Lt = "tinymce/ui/FlexLayout" , Ht = "tinymce/ui/FlowLayout" , Mt = "tinymce/ui/FormatControls" , Dt = "tinymce/ui/GridLayout" , Pt = "tinymce/ui/Iframe" , Ot = "tinymce/ui/Label" , It = "tinymce/ui/Toolbar" , Ft = "tinymce/ui/MenuBar" , zt = "tinymce/ui/MenuButton" , Wt = "tinymce/ui/ListBox" , Vt = "tinymce/ui/MenuItem" , Ut = "tinymce/ui/Menu" , qt = "tinymce/ui/Radio" , $t = "tinymce/ui/ResizeHandle" , jt = "tinymce/ui/Spacer" , Kt = "tinymce/ui/SplitButton" , Yt = "tinymce/ui/StackLayout" , Gt = "tinymce/ui/TabPanel" , Xt = "tinymce/ui/TextBox" , Jt = "tinymce/ui/Throbber" ; r ( l , [ ] , function ( ) { if ( ! window . jQuery ) throw new Error ( "Load jQuery first" ) ; return jQuery . find } ) , r ( c , [ ] , function ( ) { return function ( e , t ) { function n ( e , t , n , r ) { function i ( e ) { return e = parseInt ( e , 10 ) . toString ( 16 ) , e . length > 1 ? e : "0" + e } return "#" + i ( t ) + i ( n ) + i ( r ) } var r = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi , i = /(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi , o = /\s*([^:]+):\s*([^;]+);?/g , a = /\s+$/ , s , l , c = { } , d , u = "\ufeff" ; for ( e = e || { } , d = ( "\\\" \\' \\; \\: ; : " + u ) . split ( " " ) , l = 0 ; l < d . length ; l ++ ) c [ d [ l ] ] = u + l , c [ u + l ] = d [ l ] ; return { toHex : function ( e ) { return e . replace ( r , n ) } , parse : function ( t ) { function s ( e , t ) { var n , r , i , o ; "none" === m [ "border-image" ] && delete m [ "border-image" ] , n = m [ e + "-top" + t ] , n && ( r = m [ e + "-right" + t ] , n == r && ( i = m [ e + "-bottom" + t ] , r == i && ( o = m [ e + "-left" + t ] , i == o && ( m [ e + t ] = o , delete m [ e + " - to
} ) ) } , addClass : function ( e , t ) { return this . run ( e , function ( e ) { var n ; return t ? this . hasClass ( e , t ) ? e . className : ( n = this . removeClass ( e , t ) , e . className = n = ( "" !== n ? n + " " : "" ) + t , n ) : 0 } ) } , removeClass : function ( e , t ) { var n = this , r ; return n . run ( e , function ( e ) { var i ; return n . hasClass ( e , t ) ? ( r || ( r = new RegExp ( "(^|\\s+)" + t + "(\\s+|$)" , "g" ) ) , i = e . className . replace ( r , " " ) , i = p ( " " != i ? i : "" ) , e . className = i , i || ( e . removeAttribute ( "class" ) , e . removeAttribute ( "className" ) ) , i ) : e . className } ) } , hasClass : function ( e , t ) { return e = this . get ( e ) , e && t ? - 1 !== ( " " + e . className + " " ) . indexOf ( " " + t + " " ) : ! 1 } , toggleClass : function ( e , n , r ) { r = r === t ? ! this . hasClass ( e , n ) : r , this . hasClass ( e , n ) !== r && ( r ? this . addClass ( e , n ) : this . removeClass ( e , n ) ) } , show : function ( e ) { return this . setStyle ( e , "display" , "block" ) } , hide : function ( e ) { return this . setStyle ( e , "display" , "none" ) } , isHidden : function ( e ) { return e = this . get ( e ) , ! e || "none" == e . style . display || "none" == this . getStyle ( e , "display" ) } , uniqueId : function ( e ) { return ( e ? e : "mce_" ) + this . counter ++ } , setHTML : function ( e , t ) { var n = this ; return n . run ( e , function ( e ) { if ( g ) { for ( ; e . firstChild ; ) e . removeChild ( e . firstChild ) ; try { e . innerHTML = "<br />" + t , e . removeChild ( e . firstChild ) } catch ( r ) { var i = n . create ( "div" ) ; i . innerHTML = "<br />" + t , d ( f ( i . childNodes ) , function ( t , n ) { n && e . canHaveHTML && e . appendChild ( t ) } ) } } else e . innerHTML = t ; return t } ) } , getOuterHTML : function ( e ) { var t , n = this ; return ( e = n . get ( e ) ) ? 1 === e . nodeType && n . hasOuterHTML ? e . outerHTML : ( t = ( e . ownerDocument || n . doc ) . createElement ( "body" ) , t . appendChild ( e . cloneNode ( ! 0 ) ) , t . innerHTML ) : null } , setOuterHTML : function ( e , t , n ) { var r = this ; return r . run ( e , function ( e ) { function i ( ) { var i , o ; for ( o = n . createElement ( "body" ) , o . innerHTML = t , i = o . lastChild ; i ; ) r . insertAfter ( i . cloneNode ( ! 0 ) , e ) , i = i . previousSibling ; r . remove ( e ) } if ( 1 == e . nodeType ) if ( n = n || e . ownerDocument || r . doc , g ) try { 1 == e . nodeType && r . hasOuterHTML ? e . outerHTML = t : i ( ) } catch ( o ) { i ( ) } else i ( ) } ) } , decode : a . decode , encode : a . encodeAllRaw , insertAfter : function ( e , t ) { return t = this . get ( t ) , this . run ( e , function ( e ) { var n , r ; return n = t . parentNode , r = t . nextSibling , r ? n . insertBefore ( e , r ) : n . appendChild ( e ) , e } ) } , replace : function ( e , t , n ) { var r = this ; return r . run ( t , function ( t ) { return u ( t , "array" ) && ( e = e . cloneNode ( ! 0 ) ) , n && d ( f ( t . childNodes ) , function ( t ) { e . appendChild ( t ) } ) , t . parentNode . replaceChild ( e , t ) } ) } , rename : function ( e , t ) { var n = this , r ; return e . nodeName != t . toUpperCase ( ) && ( r = n . create ( t ) , d ( n . getAttribs ( e ) , function ( t ) { n . setAttrib ( r , t . nodeName , n . getAttrib ( e , t . nodeName ) ) } ) , n . replace ( r , e , 1 ) ) , r || e } , findCommonAncestor : function ( e , t ) { for ( var n = e , r ; n ; ) { for ( r = t ; r && n != r ; ) r = r . parentNode ; if ( n == r ) break ; n = n . parentNode } return ! n && e . ownerDocument ? e . ownerDocument . documentElement : n } , toHex : function ( e ) { return this . styles . toHex ( l . trim ( e ) ) } , run : function ( e , t , n ) { var r = this , i ; return "string" == typeof e && ( e = r . get ( e ) ) , e ? ( n = n || this , e . nodeType || ! e . length && 0 !== e . length ? t . call ( n , e ) : ( i = [ ] , d ( e , function ( e , o ) { e && ( "string" == typeof e && ( e = r . get ( e ) ) , i . push ( t . call ( n , e , o ) ) ) } ) , i ) ) : ! 1 } , getAttribs : function ( e ) { var t ; if ( e = this . get ( e ) , ! e ) return [ ] ; if ( g ) { if ( t = [ ] , "OBJECT" == e . nodeName ) return e . attributes ; "OPTION" === e . nodeName && this . getAttrib ( e , "selected" ) && t . push ( { specified : 1 , nodeName : "selected" } ) ; var n = /<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi ; return e . cloneNode ( ! 1 ) . outerHTML . replace ( n , "" ) . replace ( /[\w:\-]+/gi , function ( e ) { t . push ( { specified : 1 , nodeName : e } ) } ) , t } return e . attributes } , isEmpty : function ( e , t ) { var n = this , r , o , a , s , l , c = 0 ; if ( e = e . firstChild ) { s = new i ( e , e . parentNode ) , t = t || n . schema ? n . schema . getNonEmptyElements ( ) : null ; do { if ( a = e . nodeType , 1 === a ) { if ( e . getAttribute ( "data-mce-bogus" ) ) continue ; if ( l = e . nodeName . toLowerCase ( ) , t && t [ l ] ) { if ( "br" === l ) { c ++ ; continue } return ! 1 } for ( o = n . getAttribs ( e ) , r = e . attributes . length ; r -- ; ) if ( l = e . attributes [ r ] . nodeName , "name" === l || "data-mce-bookmark" === l ) return ! 1 } if ( 8 == a ) return ! 1 ; if ( 3 === a && ! y . test ( e . nodeValue ) ) return ! 1 } while ( e = s . next ( ) ) } return 1 >= c } , createRng : function ( ) { var e = this . doc ; return e . createRange ? e . createRange ( ) : new o ( this ) } , nodeIndex : function ( e , t ) { var n = 0 , r , i , o ; if ( e ) for ( r = e . nodeType , e = e . previousSibling , i = e ; e ; e = e . previousSibling ) o = e . nodeType , ( ! t || 3 != o || o != r && e . nodeValue . length ) && ( n ++ , r = o ) ; return n } , split : function ( e , t , n ) { function r ( e ) { function t ( e ) { var t = e . previo
return t = t || { } , i = t . indent , o = n ( t . indent _before || "" ) , a = n ( t . indent _after || "" ) , s = e . getEncodeFunc ( t . entity _encoding || "raw" , t . entities ) , l = "html" == t . element _format , { start : function ( e , t , n ) { var c , d , u , f ; if ( i && o [ e ] && r . length > 0 && ( f = r [ r . length - 1 ] , f . length > 0 && "\n" !== f && r . push ( "\n" ) ) , r . push ( "<" , e ) , t ) for ( c = 0 , d = t . length ; d > c ; c ++ ) u = t [ c ] , r . push ( " " , u . name , '="' , s ( u . value , ! 0 ) , '"' ) ; r [ r . length ] = ! n || l ? ">" : " />" , n && i && a [ e ] && r . length > 0 && ( f = r [ r . length - 1 ] , f . length > 0 && "\n" !== f && r . push ( "\n" ) ) } , end : function ( e ) { var t ; r . push ( "</" , e , ">" ) , i && a [ e ] && r . length > 0 && ( t = r [ r . length - 1 ] , t . length > 0 && "\n" !== t && r . push ( "\n" ) ) } , text : function ( e , t ) { e . length > 0 && ( r [ r . length ] = t ? e : s ( e ) ) } , cdata : function ( e ) { r . push ( "<![CDATA[" , e , "]]>" ) } , comment : function ( e ) { r . push ( "<!--" , e , "-->" ) } , pi : function ( e , t ) { t ? r . push ( "<?" , e , " " , t , "?>" ) : r . push ( "<?" , e , "?>" ) , i && r . push ( "\n" ) } , doctype : function ( e ) { r . push ( "<!DOCTYPE" , e , ">" , i ? "\n" : "" ) } , reset : function ( ) { r . length = 0 } , getContent : function ( ) { return r . join ( "" ) . replace ( /\n$/ , "" ) } } } } ) , r ( N , [ _ , C ] , function ( e , t ) { return function ( n , r ) { var i = this , o = new e ( n ) ; n = n || { } , n . validate = "validate" in n ? n . validate : ! 0 , i . schema = r = r || new t , i . writer = o , i . serialize = function ( e ) { function t ( e ) { var n = i [ e . type ] , s , l , c , d , u , f , p , m , h ; if ( n ) n ( e ) ; else { if ( s = e . name , l = e . shortEnded , c = e . attributes , a && c && c . length > 1 ) { for ( f = [ ] , f . map = { } , h = r . getElementRule ( e . name ) , p = 0 , m = h . attributesOrder . length ; m > p ; p ++ ) d = h . attributesOrder [ p ] , d in c . map && ( u = c . map [ d ] , f . map [ d ] = u , f . push ( { name : d , value : u } ) ) ; for ( p = 0 , m = c . length ; m > p ; p ++ ) d = c [ p ] . name , d in f . map || ( u = c . map [ d ] , f . map [ d ] = u , f . push ( { name : d , value : u } ) ) ; c = f } if ( o . start ( e . name , c , l ) , ! l ) { if ( e = e . firstChild ) do t ( e ) ; while ( e = e . next ) ; o . end ( s ) } } } var i , a ; return a = n . validate , i = { 3 : function ( e ) { o . text ( e . value , e . raw ) } , 8 : function ( e ) { o . comment ( e . value ) } , 7 : function ( e ) { o . pi ( e . name , e . value ) } , 10 : function ( e ) { o . doctype ( e . value ) } , 4 : function ( e ) { o . cdata ( e . value ) } , 11 : function ( e ) { if ( e = e . firstChild ) do t ( e ) ; while ( e = e . next ) } } , o . reset ( ) , 1 != e . type || n . inner ? i [ 11 ] ( e ) : t ( e ) , o . getContent ( ) } } } ) , r ( k , [ g , w , m , N , b , C , h , f ] , function ( e , t , n , r , i , o , a , s ) { var l = s . each , c = s . trim , d = e . DOM ; return function ( e , i ) { var s , u , f ; return i && ( s = i . dom , u = i . schema ) , s = s || d , u = u || new o ( e ) , e . entity _encoding = e . entity _encoding || "named" , e . remove _trailing _brs = "remove_trailing_brs" in e ? e . remove _trailing _brs : ! 0 , f = new t ( e , u ) , f . addAttributeFilter ( "src,href,style" , function ( t , n ) { for ( var r = t . length , i , o , a = "data-mce-" + n , l = e . url _converter , c = e . url _converter _scope , d ; r -- ; ) i = t [ r ] , o = i . attributes . map [ a ] , o !== d ? ( i . attr ( n , o . length > 0 ? o : null ) , i . attr ( a , null ) ) : ( o = i . attributes . map [ n ] , "style" === n ? o = s . serializeStyle ( s . parseStyle ( o ) , i . name ) : l && ( o = l . call ( c , o , n , i . name ) ) , i . attr ( n , o . length > 0 ? o : null ) ) } ) , f . addAttributeFilter ( "class" , function ( e ) { for ( var t = e . length , n , r ; t -- ; ) n = e [ t ] , r = n . attr ( "class" ) . replace ( /(?:^|\s)mce-item-\w+(?!\S)/g , "" ) , n . attr ( "class" , r . length > 0 ? r : null ) } ) , f . addAttributeFilter ( "data-mce-type" , function ( e , t , n ) { for ( var r = e . length , i ; r -- ; ) i = e [ r ] , "bookmark" !== i . attributes . map [ "data-mce-type" ] || n . cleanup || i . remove ( ) } ) , f . addAttributeFilter ( "data-mce-expando" , function ( e , t ) { for ( var n = e . length ; n -- ; ) e [ n ] . attr ( t , null ) } ) , f . addNodeFilter ( "noscript" , function ( e ) { for ( var t = e . length , r ; t -- ; ) r = e [ t ] . firstChild , r && ( r . value = n . decode ( r . value ) ) } ) , f . addNodeFilter ( "script,style" , function ( e , t ) { function n ( e ) { return e . replace ( /(<!--\[CDATA\[|\]\]-->)/g , "\n" ) . replace ( /^[\r\n]*|[\r\n]*$/g , "" ) . replace ( /^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi , "" ) . replace ( /\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g , "" ) } for ( var r = e . length , i , o ; r -- ; ) if ( i = e [ r ] , o = i . firstChild ? i . firstChild . value : "" , "script" === t ) { var a = ( i . attr ( "type" ) || "text/javascript" ) . replace ( /^mce\-/ , "" ) ; i . attr ( "type" , "text/javascript" === a ? null : a ) , o . length > 0 && ( i . firstChild . value = "// <![CDATA[\n" + n ( o ) + "\n// ]]>" ) } else o . length > 0 && ( i . firstChild . value = "<!--\n" + n ( o ) + "\n-->" ) } ) , f . addNodeFilter ( "#comment" , function ( e ) { for ( var t = e . length , n ; t -- ; ) n = e [ t ] , 0 === n . value . indexOf ( "[CDATA[" ) ? ( n . name = "#cdata" , n . type = 4 , n . value = n . value . replace ( /^\[CDATA\[|\]\]$/g , "" ) ) : 0 === n . value . indexOf ( "mce:protected " ) && ( n . name = "#text" , n . type = 3 , n . raw = ! 0 ,
for ( var e = 1 ; 6 >= e ; e ++ ) r . addShortcut ( "ctrl+" + e , "" , [ "FormatBlock" , ! 1 , "h" + e ] ) ; r . addShortcut ( "ctrl+7" , "" , [ "FormatBlock" , ! 1 , "p" ] ) , r . addShortcut ( "ctrl+8" , "" , [ "FormatBlock" , ! 1 , "div" ] ) , r . addShortcut ( "ctrl+9" , "" , [ "FormatBlock" , ! 1 , "address" ] ) } function c ( e ) { return e ? O [ e ] : O } function d ( e , t ) { e && ( "string" != typeof e ? et ( e , function ( e , t ) { d ( t , e ) } ) : ( t = t . length ? t : [ t ] , et ( t , function ( e ) { e . deep === X && ( e . deep = ! e . selector ) , e . split === X && ( e . split = ! e . selector || e . inline ) , e . remove === X && e . selector && ! e . inline && ( e . remove = "none" ) , e . selector && e . inline && ( e . mixed = ! 0 , e . block _expand = ! 0 ) , "string" == typeof e . classes && ( e . classes = e . classes . split ( /\s+/ ) ) } ) , O [ e ] = t ) ) } function u ( e ) { var t ; return r . dom . getParent ( e , function ( e ) { return t = r . dom . getStyle ( e , "text-decoration" ) , t && "none" !== t } ) , t } function f ( e ) { var t ; 1 === e . nodeType && e . parentNode && 1 === e . parentNode . nodeType && ( t = u ( e . parentNode ) , r . dom . getStyle ( e , "color" ) && t ? r . dom . setStyle ( e , "text-decoration" , t ) : r . dom . getStyle ( e , "textdecoration" ) === t && r . dom . setStyle ( e , "text-decoration" , null ) ) } function p ( t , n , o ) { function s ( e , t ) { t = t || h , e && ( t . onformat && t . onformat ( e , t , n , o ) , et ( t . styles , function ( t , r ) { I . setStyle ( e , r , k ( t , n ) ) } ) , et ( t . attributes , function ( t , r ) { I . setAttrib ( e , r , k ( t , n ) ) } ) , et ( t . classes , function ( t ) { t = k ( t , n ) , I . hasClass ( e , t ) || I . addClass ( e , t ) } ) ) } function l ( ) { function t ( t , n ) { var r = new e ( n ) ; for ( o = r . current ( ) ; o ; o = r . prev ( ) ) if ( o . childNodes . length > 1 || o == t || "BR" == o . tagName ) return o } var n = r . selection . getRng ( ) , i = n . startContainer , a = n . endContainer ; if ( i != a && 0 === n . endOffset ) { var s = t ( i , a ) , l = 3 == s . nodeType ? s . length : s . childNodes . length ; n . setEnd ( s , l ) } return n } function d ( e , t , n , r , i ) { var o = [ ] , a = - 1 , s , l = - 1 , c = - 1 , d ; return et ( e . childNodes , function ( e , t ) { return "UL" === e . nodeName || "OL" === e . nodeName ? ( a = t , s = e , ! 1 ) : void 0 } ) , et ( e . childNodes , function ( e , n ) { "SPAN" === e . nodeName && "bookmark" == I . getAttrib ( e , "data-mce-type" ) && ( e . id == t . id + "_start" ? l = n : e . id == t . id + "_end" && ( c = n ) ) } ) , 0 >= a || a > l && c > a ? ( et ( tt ( e . childNodes ) , i ) , 0 ) : ( d = I . clone ( n , K ) , et ( tt ( e . childNodes ) , function ( e , t ) { ( a > l && a > t || l > a && t > a ) && ( o . push ( e ) , e . parentNode . removeChild ( e ) ) } ) , a > l ? e . insertBefore ( d , s ) : l > a && e . insertBefore ( d , s . nextSibling ) , r . push ( d ) , et ( o , function ( e ) { d . appendChild ( e ) } ) , d ) } function u ( e , r , o ) { var l = [ ] , c , u , f = ! 0 ; c = h . inline || h . block , u = I . create ( c ) , s ( u ) , z . walk ( e , function ( e ) { function p ( e ) { var y , C , x , _ , N ; return N = f , y = e . nodeName . toLowerCase ( ) , C = e . parentNode . nodeName . toLowerCase ( ) , 1 === e . nodeType && J ( e ) && ( N = f , f = "true" === J ( e ) , _ = ! 0 ) , w ( y , "br" ) ? ( v = 0 , void ( h . block && I . remove ( e ) ) ) : h . wrapper && g ( e , t , n ) ? void ( v = 0 ) : f && ! _ && h . block && ! h . wrapper && i ( y ) && W ( C , c ) ? ( e = I . rename ( e , c ) , s ( e ) , l . push ( e ) , void ( v = 0 ) ) : h . selector && ( et ( m , function ( t ) { "collapsed" in t && t . collapsed !== b || I . is ( e , t . selector ) && ! a ( e ) && ( s ( e , t ) , x = ! 0 ) } ) , ! h . inline || x ) ? void ( v = 0 ) : void ( ! f || _ || ! W ( c , y ) || ! W ( C , c ) || ! o && 3 === e . nodeType && 1 === e . nodeValue . length && 65279 === e . nodeValue . charCodeAt ( 0 ) || a ( e ) || h . inline && V ( e ) ? "li" == y && r ? v = d ( e , r , u , l , p ) : ( v = 0 , et ( tt ( e . childNodes ) , p ) , _ && ( f = N ) , v = 0 ) : ( v || ( v = I . clone ( u , K ) , e . parentNode . insertBefore ( v , e ) , l . push ( v ) ) , v . appendChild ( e ) ) ) } var v ; et ( e , p ) } ) , h . wrap _links === ! 1 && et ( l , function ( e ) { function t ( e ) { var n , r , i ; if ( "A" === e . nodeName ) { for ( r = I . clone ( u , K ) , l . push ( r ) , i = tt ( e . childNodes ) , n = 0 ; n < i . length ; n ++ ) r . appendChild ( i [ n ] ) ; e . appendChild ( r ) } et ( tt ( e . childNodes ) , t ) } t ( e ) } ) , et ( l , function ( e ) { function r ( e ) { var t = 0 ; return et ( e . childNodes , function ( e ) { E ( e ) || L ( e ) || t ++ } ) , t } function i ( e ) { var t , n ; return et ( e . childNodes , function ( e ) { return 1 != e . nodeType || L ( e ) || a ( e ) ? void 0 : ( t = e , K ) } ) , t && x ( t , h ) && ( n = I . clone ( t , K ) , s ( n ) , I . replace ( n , e , Y ) , I . remove ( t , 1 ) ) , n || e } var o ; if ( o = r ( e ) , ( l . length > 1 || ! V ( e ) ) && 0 === o ) return void I . remove ( e , 1 ) ; if ( h . inline || h . wrapper ) { if ( h . exact || 1 !== o || ( e = i ( e ) ) , et ( m , function ( t ) { et ( I . select ( t . inline , e ) , function ( e ) { var r ; if ( t . wrap _links === ! 1 ) { r = e . parentNode ; do if ( "A" === r . nodeName ) return ; while ( r = r . parentNode ) } R ( t , n , e , t . exact ? e : null ) } ) } ) , g ( e . parentNode , t , n ) ) return I . remove ( e , 1 ) , e = 0 , Y ; h . merge _with _parents && I . getParent ( e . parentNode , function ( r ) { return g ( r , t , n ) ? ( I . remove ( e , 1 ) , e = 0 , Y ) : void 0 } ) , e && h . merge _siblings !== ! 1 && ( e = H ( B ( e ) , e ) , e = H ( e , B ( e , Y ) ) ) } } ) } var m = c ( t ) , h = m [ 0 ] , v , y , b = ! o && F . isCollapsed ( ) ; if ( h ) if ( o ) o . nodeType ? ( y = I . createRng ( ) , y . setStartBefore ( o ) , y . setEndAfter ( o ) , u ( T ( y , m ) , null , ! 0 ) ) : u ( o , null , ! 0 ) ; else if ( b
var b = { context : l . nodeName . toLowerCase ( ) } ; if ( u = a . parse ( i , b ) , h = u . lastChild , "mce_marker" == h . attr ( "id" ) ) for ( p = h , h = h . prev ; h ; h = h . walk ( ! 0 ) ) if ( 3 == h . type || ! x . isBlock ( h . name ) ) { h . parent . insert ( p , h , "br" === h . name ) ; break } if ( b . invalid ) { for ( w . setContent ( v ) , l = w . getNode ( ) , c = n . getBody ( ) , 9 == l . nodeType ? l = h = c : h = l ; h !== c ; ) l = h , h = h . parentNode ; i = l == c ? c . innerHTML : x . getOuterHTML ( l ) , i = s . serialize ( a . parse ( i . replace ( /<span (id="mce_marker"|id=mce_marker).+?<\/span>/i , function ( ) { return s . serialize ( u ) } ) ) ) , i = i . replace ( /<pre([^>]*?)>([\s\S]*?)<\/pre>/g , function ( e , t , n ) { return n = n . replace ( /(<([^>]+)>)/gi , "" ) . replace ( /\s+$/ , "" ) , "<pre " + t + ">" + n + "</pre>" } ) , l == c ? x . setHTML ( c , i ) : x . setOuterHTML ( l , i ) } else i = s . serialize ( u ) , h = l . firstChild , g = l . lastChild , ! h || h === g && "BR" === h . nodeName ? x . setHTML ( l , i ) : w . setContent ( i ) ; p = x . get ( "mce_marker" ) , w . scrollIntoView ( p ) , m = x . createRng ( ) ; try { h = p . previousSibling , h && 3 == h . nodeType ? ( m . setStart ( h , h . nodeValue . length ) , d || ( g = p . nextSibling , g && 3 == g . nodeType && ( h . appendData ( g . data ) , g . parentNode . removeChild ( g ) ) ) ) : ( m . setStartBefore ( p ) , m . setEndBefore ( p ) ) , x . remove ( p ) , w . setRng ( m ) , n . fire ( "SetContent" , f ) , n . addVisual ( ) } catch ( C ) { } } , mceInsertRawHTML : function ( t , r , i ) { var o , a , s , l , c , u , f , p , m , h , g ; o = n . parser , a = new e ( { } , n . schema ) , g = '<span id="mce_marker" data-mce-type="bookmark"></span>' , u = { content : i , format : "html" , selection : ! 0 } , n . fire ( "BeforeSetContent" , u ) , i = u . content , - 1 == i . indexOf ( "{$caret}" ) && ( i += "{$caret}" ) , i = i . replace ( /\{\$caret\}/ , g ) ; var v = n . getBody ( ) ; x . isBlock ( v . firstChild ) && x . isEmpty ( v . firstChild ) && ( v . firstChild . appendChild ( x . doc . createTextNode ( "\xa0" ) ) , w . select ( v . firstChild , ! 0 ) , x . remove ( v . firstChild . lastChild ) ) , w . isCollapsed ( ) || n . getDoc ( ) . execCommand ( "Delete" , ! 1 , null ) , s = w . getNode ( ) ; var y = { context : s . nodeName . toLowerCase ( ) } ; if ( c = o . parse ( i , y ) , m = c . lastChild , "mce_marker" == m . attr ( "id" ) ) for ( f = m , m = m . prev ; m ; m = m . walk ( ! 0 ) ) if ( 3 == m . type || ! x . isBlock ( m . name ) ) { m . parent . insert ( f , m , "br" === m . name ) ; break } if ( y . invalid ) { for ( w . setContent ( g ) , s = w . getNode ( ) , l = n . getBody ( ) , 9 == s . nodeType ? s = m = l : m = s ; m !== l ; ) s = m , m = m . parentNode ; i = s == l ? l . innerHTML : x . getOuterHTML ( s ) , s == l ? x . setHTML ( l , i ) : x . setOuterHTML ( s , i ) } else m = s . firstChild , h = s . lastChild , ! m || m === h && "BR" === m . nodeName ? x . setHTML ( s , i ) : w . setContent ( i ) ; f = x . get ( "mce_marker" ) , w . scrollIntoView ( f ) , p = x . createRng ( ) , m = f . previousSibling , m && 3 == m . nodeType ? ( p . setStart ( m , m . nodeValue . length ) , d || ( h = f . nextSibling , h && 3 == h . nodeType && ( m . appendData ( h . data ) , h . parentNode . removeChild ( h ) ) ) ) : ( p . setStartBefore ( f ) , p . setEndBefore ( f ) ) , x . remove ( f ) , w . setRng ( p ) , n . fire ( "SetContent" , u ) , n . addVisual ( ) } , mceToggleFormat : function ( e , t , n ) { y ( n ) } , mceSetContent : function ( e , t , r ) { n . setContent ( r ) } , "Indent,Outdent" : function ( e ) { var t , n , r ; t = N . indentation , n = /[a-z%]+$/i . exec ( t ) , t = parseInt ( t , 10 ) , p ( "InsertUnorderedList" ) || p ( "InsertOrderedList" ) ? g ( e ) : ( N . forced _root _block || x . getParent ( w . getNode ( ) , x . isBlock ) || k . apply ( "div" ) , i ( w . getSelectedBlocks ( ) , function ( i ) { var o ; "LI" != i . nodeName && ( o = "rtl" == x . getStyle ( i , "direction" , ! 0 ) ? "paddingRight" : "paddingLeft" , "outdent" == e ? ( r = Math . max ( 0 , parseInt ( i . style [ o ] || 0 , 10 ) - t ) , x . setStyle ( i , o , r ? r + n : "" ) ) : ( r = parseInt ( i . style [ o ] || 0 , 10 ) + t + n , x . setStyle ( i , o , r ) ) ) } ) ) } , mceRepaint : function ( ) { if ( c ) try { b ( u ) , w . getSel ( ) && w . getSel ( ) . selectAllChildren ( n . getBody ( ) ) , w . collapse ( u ) , C ( ) } catch ( e ) { } } , InsertHorizontalRule : function ( ) { n . execCommand ( "mceInsertContent" , ! 1 , "<hr />" ) } , mceToggleVisualAid : function ( ) { n . hasVisual = ! n . hasVisual , n . addVisual ( ) } , mceReplaceContent : function ( e , t , r ) { n . execCommand ( "mceInsertContent" , ! 1 , r . replace ( /\{\$selection\}/g , w . getContent ( { format : "text" } ) ) ) } , mceInsertLink : function ( e , t , n ) { var r ; "string" == typeof n && ( n = { href : n } ) , r = x . getParent ( w . getNode ( ) , "a" ) , n . href = n . href . replace ( " " , "%20" ) , r && n . href || k . remove ( "link" ) , n . href && k . apply ( "link" , n , r ) } , selectAll : function ( ) { var e = x . getRoot ( ) , t = x . createRng ( ) ; w . getRng ( ) . setStart ? ( t . setStart ( e , 0 ) , t . setEnd ( e , e . childNodes . length ) , w . setRng ( t ) ) : g ( "SelectAll" ) } , mceNewDocument : function ( ) { n . setContent ( "" ) } } ) , h ( { "JustifyLeft,JustifyCenter,JustifyRight,JustifyFull" : function ( e ) { var t = "align" + e . substring ( 7 ) , n = w . isCollapsed ( ) ? [ x . getParent ( w . getNode ( ) , x . isBlock ) ] : w . getSelectedBlocks ( ) , r = a ( n , function ( e ) { return ! ! k . matchNode ( e , t ) } ) ; return - 1 !== s ( r , u ) } ,
} return { testMoveRel : function ( n , r ) { for ( var i = e . getViewPort ( ) , o = 0 ; o < r . length ; o ++ ) { var a = t ( this , n , r [ o ] ) ; if ( this . _fixed ) { if ( a . x > 0 && a . x + a . w < i . w && a . y > 0 && a . y + a . h < i . h ) return r [ o ] } else if ( a . x > i . x && a . x + a . w < i . w + i . x && a . y > i . y && a . y + a . h < i . h + i . y ) return r [ o ] } return r [ 0 ] } , moveRel : function ( e , n ) { "string" != typeof n && ( n = this . testMoveRel ( e , n ) ) ; var r = t ( this , e , n ) ; return this . moveTo ( r . x , r . y ) } , moveBy : function ( e , t ) { var n = this , r = n . layoutRect ( ) ; return n . moveTo ( r . x + e , r . y + t ) , n } , moveTo : function ( t , n ) { function r ( e , t , n ) { return 0 > e ? 0 : e + n > t ? ( e = t - n , 0 > e ? 0 : e ) : e } var i = this ; if ( i . settings . constrainToViewport ) { var o = e . getViewPort ( window ) , a = i . layoutRect ( ) ; t = r ( t , o . w + o . x , a . w ) , n = r ( n , o . h + o . y , a . h ) } return i . _rendered ? i . layoutRect ( { x : t , y : n } ) . repaint ( ) : ( i . settings . x = t , i . settings . y = n ) , i . fire ( "move" , { x : t , y : n } ) , i } } } ) , r ( G , [ z ] , function ( e ) { return { resizeToContent : function ( ) { this . _layoutRect . autoResize = ! 0 , this . _lastRect = null , this . reflow ( ) } , resizeTo : function ( t , n ) { if ( 1 >= t || 1 >= n ) { var r = e . getWindowSize ( ) ; t = 1 >= t ? t * r . w : t , n = 1 >= n ? n * r . h : n } return this . _layoutRect . autoResize = ! 1 , this . layoutRect ( { minW : t , minH : n , w : t , h : n } ) . reflow ( ) } , resizeBy : function ( e , t ) { var n = this , r = n . layoutRect ( ) ; return n . resizeTo ( r . w + e , r . h + t ) } } } ) , r ( X , [ K , Y , G , z ] , function ( e , t , n , r ) { function i ( e ) { var t ; for ( t = s . length ; t -- ; ) s [ t ] === e && s . splice ( t , 1 ) ; for ( t = l . length ; t -- ; ) l [ t ] === e && l . splice ( t , 1 ) } var o , a , s = [ ] , l = [ ] , c , d = e . extend ( { Mixins : [ t , n ] , init : function ( e ) { function t ( ) { var e , t = d . zIndex || 65535 , n ; if ( l . length ) for ( e = 0 ; e < l . length ; e ++ ) l [ e ] . modal && ( t ++ , n = l [ e ] ) , l [ e ] . getEl ( ) . style . zIndex = t , l [ e ] . zIndex = t , t ++ ; var i = document . getElementById ( u . classPrefix + "modal-block" ) ; n ? r . css ( i , "z-index" , n . zIndex - 1 ) : i && ( i . parentNode . removeChild ( i ) , c = ! 1 ) , d . currentZIndex = t } function n ( e , t ) { for ( ; e ; ) { if ( e == t ) return ! 0 ; e = e . parent ( ) } } function i ( e ) { function t ( t , n ) { for ( var r , i = 0 ; i < s . length ; i ++ ) if ( s [ i ] != e ) for ( r = s [ i ] . parent ( ) ; r && ( r = r . parent ( ) ) ; ) r == e && s [ i ] . fixed ( t ) . moveBy ( 0 , n ) . repaint ( ) } var n = r . getViewPort ( ) . y ; e . settings . autofix && ( e . _fixed ? e . _autoFixY > n && ( e . fixed ( ! 1 ) . layoutRect ( { y : e . _autoFixY } ) . repaint ( ) , t ( ! 1 , e . _autoFixY - n ) ) : ( e . _autoFixY = e . layoutRect ( ) . y , e . _autoFixY < n && ( e . fixed ( ! 0 ) . layoutRect ( { y : 0 } ) . repaint ( ) , t ( ! 0 , n - e . _autoFixY ) ) ) ) } var u = this ; u . _super ( e ) , u . _eventsRoot = u , u . addClass ( "floatpanel" ) , e . autohide && ( o || ( o = function ( e ) { var t , r = u . getParentCtrl ( e . target ) ; for ( t = s . length ; t -- ; ) { var i = s [ t ] ; if ( i . settings . autohide ) { if ( r && ( n ( r , i ) || i . parent ( ) === r ) ) continue ; e = i . fire ( "autohide" , { target : e . target } ) , e . isDefaultPrevented ( ) || i . hide ( ) } } } , r . on ( document , "click" , o ) ) , s . push ( u ) ) , e . autofix && ( a || ( a = function ( ) { var e ; for ( e = s . length ; e -- ; ) i ( s [ e ] ) } , r . on ( window , "scroll" , a ) ) , u . on ( "move" , function ( ) { i ( this ) } ) ) , u . on ( "postrender show" , function ( e ) { if ( e . control == u ) { var n , i = u . classPrefix ; u . modal && ! c && ( n = r . createFragment ( '<div id="' + i + 'modal-block" class="' + i + "reset " + i + 'fade"></div>' ) , n = n . firstChild , u . getContainerElm ( ) . appendChild ( n ) , setTimeout ( function ( ) { r . addClass ( n , i + "in" ) , r . addClass ( u . getEl ( ) , i + "in" ) } , 0 ) , c = ! 0 ) , l . push ( u ) , t ( ) } } ) , u . on ( "close hide" , function ( e ) { if ( e . control == u ) { for ( var n = l . length ; n -- ; ) l [ n ] === u && l . splice ( n , 1 ) ; t ( ) } } ) , u . on ( "show" , function ( ) { u . parents ( ) . each ( function ( e ) { return e . _fixed ? ( u . fixed ( ! 0 ) , ! 1 ) : void 0 } ) } ) , e . popover && ( u . _preBodyHtml = '<div class="' + u . classPrefix + 'arrow"></div>' , u . addClass ( "popover" ) . addClass ( "bottom" ) . addClass ( u . isRtl ( ) ? "end" : "start" ) ) } , fixed : function ( e ) { var t = this ; if ( t . _fixed != e ) { if ( t . _rendered ) { var n = r . getViewPort ( ) ; e ? t . layoutRect ( ) . y -= n . y : t . layoutRect ( ) . y += n . y } t . toggleClass ( "fixed" , e ) , t . _fixed = e } return t } , show : function ( ) { var e = this , t , n = e . _super ( ) ; for ( t = s . length ; t -- && s [ t ] !== e ; ) ; return - 1 === t && s . push ( e ) , n } , hide : function ( ) { return i ( this ) , this . _super ( ) } , hideAll : function ( ) { d . hideAll ( ) } , close : function ( ) { var e = this ; return e . fire ( "close" ) , e . remove ( ) } , remove : function ( ) { i ( this ) , this . _super ( ) } } ) ; return d . hideAll = function ( ) { for ( var e = s . length ; e -- ; ) { var t = s [ e ] ; t . settings . autohide && ( t . fire ( "cancel" , { } , ! 1 ) , t . hide ( ) , s . splice ( e , 1 ) ) } } , d } ) , r ( J , [ z ] , function ( e ) { return function ( t ) { function n ( ) { if ( ! m ) if ( m = [ ] , u . find ) u . find ( "*" ) . each ( function ( e ) { e . canFocus && m . push ( e . getEl ( ) ) } ) ; else for ( var e = u . getEl ( ) . getElementsByTagName ( "*" ) , t = 0 ; t < e . length ; t ++ ) e [ t ] . id && e [ t ] && m . push ( e [ t ] ) } function r ( ) { return docume
} } ) , n . parser = new v ( o , n . schema ) , n . parser . addAttributeFilter ( "src,href,style" , function ( e , t ) { for ( var r = e . length , i , o = n . dom , a , s ; r -- ; ) i = e [ r ] , a = i . attr ( t ) , s = "data-mce-" + t , i . attributes . map [ s ] || ( "style" === t ? i . attr ( s , o . serializeStyle ( o . parseStyle ( a ) , i . name ) ) : i . attr ( s , n . convertURL ( a , t , i . name ) ) ) } ) , n . parser . addNodeFilter ( "script" , function ( e ) { for ( var t = e . length , n ; t -- ; ) n = e [ t ] , n . attr ( "type" , "mce-" + ( n . attr ( "type" ) || "text/javascript" ) ) } ) , n . parser . addNodeFilter ( "#cdata" , function ( e ) { for ( var t = e . length , n ; t -- ; ) n = e [ t ] , n . type = 8 , n . name = "#comment" , n . value = "[CDATA[" + n . value + "]]" } ) , n . parser . addNodeFilter ( "p,h1,h2,h3,h4,h5,h6,div" , function ( e ) { for ( var t = e . length , i , o = n . schema . getNonEmptyElements ( ) ; t -- ; ) i = e [ t ] , i . isEmpty ( o ) && ( i . empty ( ) . append ( new r ( "br" , 1 ) ) . shortEnded = ! 0 ) } ) , n . serializer = new i ( o , n ) , n . selection = new a ( n . dom , n . getWin ( ) , n . serializer , n ) , n . formatter = new s ( n ) , n . undoManager = new l ( n ) , n . forceBlocks = new d ( n ) , n . enterKey = new c ( n ) , n . editorCommands = new u ( n ) , n . fire ( "PreInit" ) , o . browser _spellcheck || o . gecko _spellcheck || ( p . body . spellcheck = ! 1 , k . setAttrib ( m , "spellcheck" , "false" ) ) , n . fire ( "PostRender" ) , n . quirks = y ( n ) , o . directionality && ( m . dir = o . directionality ) , o . nowrap && ( m . style . whiteSpace = "nowrap" ) , o . protect && n . on ( "BeforeSetContent" , function ( e ) { R ( o . protect , function ( t ) { e . content = e . content . replace ( t , function ( e ) { return "<!--mce:protected " + escape ( e ) + "-->" } ) } ) } ) , n . on ( "SetContent" , function ( ) { n . addVisual ( n . getBody ( ) ) } ) , o . padd _empty _editor && n . on ( "PostProcess" , function ( e ) { e . content = e . content . replace ( /^(<p[^>]*>( | |\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/ , "" ) } ) , n . load ( { initial : ! 0 , format : "html" } ) , n . startContent = n . getContent ( { format : "raw" } ) , n . initialized = ! 0 , R ( n . _pendingNativeEvents , function ( e ) { n . dom . bind ( _ ( n , e ) , e , function ( e ) { n . fire ( e . type , e ) } ) } ) , n . fire ( "init" ) , n . focus ( ! 0 ) , n . nodeChanged ( { initial : ! 0 } ) , n . execCallback ( "init_instance_callback" , n ) , n . contentStyles . length > 0 && ( h = "" , R ( n . contentStyles , function ( e ) { h += e + "\r\n" } ) , n . dom . addStyle ( h ) ) , R ( n . contentCSS , function ( e ) { n . loadedCSS [ e ] || ( n . dom . loadCSS ( e ) , n . loadedCSS [ e ] = ! 0 ) } ) , o . auto _focus && setTimeout ( function ( ) { var e = n . editorManager . get ( o . auto _focus ) ; e . selection . select ( e . getBody ( ) , 1 ) , e . selection . collapse ( 1 ) , e . getBody ( ) . focus ( ) , e . getWin ( ) . focus ( ) } , 100 ) , f = p = m = null } , focus : function ( e ) { var t , n = this , r = n . selection , i = n . settings . content _editable , o , a , s = n . getDoc ( ) , l ; e || ( o = r . getRng ( ) , o . item && ( a = o . item ( 0 ) ) , n . _refreshContentEditable ( ) , i || ( b . opera || n . getBody ( ) . focus ( ) , n . getWin ( ) . focus ( ) ) , ( D || i ) && ( l = n . getBody ( ) , l . setActive && b . ie < 11 ? l . setActive ( ) : l . focus ( ) , i && r . normalize ( ) ) , a && a . ownerDocument == s && ( o = s . body . createControlRange ( ) , o . addElement ( a ) , o . select ( ) ) ) , n . editorManager . activeEditor != n && ( ( t = n . editorManager . activeEditor ) && t . fire ( "deactivate" , { relatedTarget : n } ) , n . fire ( "activate" , { relatedTarget : t } ) ) , n . editorManager . activeEditor = n } , execCallback : function ( e ) { var t = this , n = t . settings [ e ] , r ; if ( n ) return t . callbackLookup && ( r = t . callbackLookup [ e ] ) && ( n = r . func , r = r . scope ) , "string" == typeof n && ( r = n . replace ( /\.\w+$/ , "" ) , r = r ? H ( r ) : 0 , n = H ( n ) , t . callbackLookup = t . callbackLookup || { } , t . callbackLookup [ e ] = { func : n , scope : r } ) , n . apply ( r || t , Array . prototype . slice . call ( arguments , 1 ) ) } , translate : function ( e ) { var t = this . settings . language || "en" , n = this . editorManager . i18n ; return e ? n . data [ t + "." + e ] || e . replace ( /\{\#([^\}]+)\}/g , function ( e , r ) { return n . data [ t + "." + r ] || "{#" + r + "}" } ) : "" } , getLang : function ( e , n ) { return this . editorManager . i18n . data [ ( this . settings . language || "en" ) + "." + e ] || ( n !== t ? n : "{#" + e + "}" ) } , getParam : function ( e , t , n ) { var r = e in this . settings ? this . settings [ e ] : t , i ; return "hash" === n ? ( i = { } , "string" == typeof r ? R ( r . split ( r . indexOf ( "=" ) > 0 ? /[;,](?![^=;,]*(?:[;,]|$))/ : "," ) , function ( e ) { e = e . split ( "=" ) , i [ L ( e [ 0 ] ) ] = L ( e . length > 1 ? e [ 1 ] : e ) } ) : i = r , i ) : r } , nodeChanged : function ( ) { var e = this , t = e . selection , n , r , i ; e . initialized && ! e . settings . disable _nodechange && ( i = e . getBody ( ) , n = t . getStart ( ) || i , n = P && n . ownerDocument != e . getDoc ( ) ? e . getBody ( ) : n , "IMG" == n . nodeName && t . isCollapsed ( ) && ( n = n . parentNode ) , r = [ ] , e . dom . getParent ( n , function ( e ) { return e === i ? ! 0 : void r . push ( e ) } ) , e . fire ( "NodeChange" , { element : n , parents : r } ) ) } , addButton : function ( e , t ) { var n = this ; t . cmd && ( t . onclick = function ( ) { n . execCommand ( t . cmd ) } ) , t . text || t . icon || ( t . ic
} } ) } ) , r ( Tt , [ U , St ] , function ( e , t ) { return e . extend ( { Defaults : { containerCls : "form" , layout : "flex" , direction : "column" , align : "stretch" , flex : 1 , padding : 20 , labelGap : 30 , spacing : 10 , callbacks : { submit : function ( ) { this . submit ( ) } } } , preRender : function ( ) { var e = this , n = e . items ( ) ; n . each ( function ( n ) { var r , i = n . settings . label ; i && ( r = new t ( { layout : "flex" , autoResize : "overflow" , defaults : { flex : 1 } , items : [ { type : "label" , text : i , flex : 0 , forId : n . _id } ] } ) , r . type = "formitem" , "undefined" == typeof n . settings . flex && ( n . settings . flex = 1 ) , e . replace ( n , r ) , r . add ( n ) ) } ) } , recalcLabels : function ( ) { var e = this , t = 0 , n = [ ] , r , i ; if ( e . settings . labelGapCalc !== ! 1 ) for ( e . items ( ) . filter ( "formitem" ) . each ( function ( e ) { var r = e . items ( ) [ 0 ] , i = r . getEl ( ) . clientWidth ; t = i > t ? i : t , n . push ( r ) } ) , i = e . settings . labelGap || 0 , r = n . length ; r -- ; ) n [ r ] . settings . minWidth = t + i } , visible : function ( e ) { var t = this . _super ( e ) ; return e === ! 0 && this . _rendered && this . recalcLabels ( ) , t } , submit : function ( ) { return this . fire ( "submit" , { data : this . toJSON ( ) } ) } , postRender : function ( ) { var e = this ; e . _super ( ) , e . recalcLabels ( ) , e . fromJSON ( e . settings . data ) } } ) } ) , r ( Rt , [ Tt ] , function ( e ) { return e . extend ( { Defaults : { containerCls : "fieldset" , layout : "flex" , direction : "column" , align : "stretch" , flex : 1 , padding : "25 15 5 15" , labelGap : 30 , spacing : 10 , border : 1 } , renderHtml : function ( ) { var e = this , t = e . _layout , n = e . classPrefix ; return e . preRender ( ) , t . preRender ( e ) , '<fieldset id="' + e . _id + '" class="' + e . classes ( ) + '" hideFocus="1" tabIndex="-1">' + ( e . settings . title ? '<legend id="' + e . _id + '-title" class="' + n + 'fieldset-title">' + e . settings . title + "</legend>" : "" ) + '<div id="' + e . _id + '-body" class="' + e . classes ( "body" ) + '">' + ( e . settings . html || "" ) + t . renderHtml ( e ) + "</div></fieldset>" } } ) } ) , r ( At , [ Nt ] , function ( e ) { return e . extend ( { init : function ( e ) { var t = this , n = tinymce . activeEditor , r ; e . spellcheck = ! 1 , r = n . settings . file _browser _callback , r && ( e . icon = "browse" , e . onaction = function ( ) { r ( t . getEl ( "inp" ) . id , t . getEl ( "inp" ) . value , e . filetype , window ) } ) , t . _super ( e ) } } ) } ) , r ( Bt , [ gt ] , function ( e ) { return e . extend ( { recalc : function ( e ) { var t = e . layoutRect ( ) , n = e . paddingBox ( ) ; e . items ( ) . filter ( ":visible" ) . each ( function ( e ) { e . layoutRect ( { x : n . left , y : n . top , w : t . innerW - n . right - n . left , h : t . innerH - n . top - n . bottom } ) , e . recalc && e . recalc ( ) } ) } } ) } ) , r ( Lt , [ gt ] , function ( e ) { return e . extend ( { recalc : function ( e ) { var t , n , r , i , o , a , s , l , c , d , u , f , p , m , h , g , v = [ ] , y , b , C , x , w , _ , N , k , E , S , T , R , A , B , L , H , M , D , P , O , I , F , z , W , V = Math . max , U = Math . min ; for ( r = e . items ( ) . filter ( ":visible" ) , i = e . layoutRect ( ) , o = e . _paddingBox , a = e . settings , f = e . isRtl ( ) ? a . direction || "row-reversed" : a . direction , s = a . align , l = e . isRtl ( ) ? a . pack || "end" : a . pack , c = a . spacing || 0 , ( "row-reversed" == f || "column-reverse" == f ) && ( r = r . set ( r . toArray ( ) . reverse ( ) ) , f = f . split ( "-" ) [ 0 ] ) , "column" == f ? ( E = "y" , N = "h" , k = "minH" , S = "maxH" , R = "innerH" , T = "top" , A = "bottom" , B = "deltaH" , L = "contentH" , I = "left" , D = "w" , H = "x" , M = "innerW" , P = "minW" , O = "maxW" , F = "right" , z = "deltaW" , W = "contentW" ) : ( E = "x" , N = "w" , k = "minW" , S = "maxW" , R = "innerW" , T = "left" , A = "right" , B = "deltaW" , L = "contentW" , I = "top" , D = "h" , H = "y" , M = "innerH" , P = "minH" , O = "maxH" , F = "bottom" , z = "deltaH" , W = "contentH" ) , u = i [ R ] - o [ T ] - o [ T ] , _ = d = 0 , t = 0 , n = r . length ; n > t ; t ++ ) p = r [ t ] , m = p . layoutRect ( ) , h = p . settings , g = h . flex , u -= n - 1 > t ? c : 0 , g > 0 && ( d += g , m [ S ] && v . push ( p ) , m . flex = g ) , u -= m [ k ] , y = o [ I ] + m [ P ] + o [ F ] , y > _ && ( _ = y ) ; if ( x = { } , x [ k ] = 0 > u ? i [ k ] - u + i [ B ] : i [ R ] - u + i [ B ] , x [ P ] = _ + i [ z ] , x [ L ] = i [ R ] - u , x [ W ] = _ , x . minW = U ( x . minW , i . maxW ) , x . minH = U ( x . minH , i . maxH ) , x . minW = V ( x . minW , i . startMinWidth ) , x . minH = V ( x . minH , i . startMinHeight ) , ! i . autoResize || x . minW == i . minW && x . minH == i . minH ) { for ( C = u / d , t = 0 , n = v . length ; n > t ; t ++ ) p = v [ t ] , m = p . layoutRect ( ) , b = m [ S ] , y = m [ k ] + Math . ceil ( m . flex * C ) , y > b ? ( u -= m [ S ] - m [ k ] , d -= m . flex , m . flex = 0 , m . maxFlexSize = b ) : m . maxFlexSize = 0 ; for ( C = u / d , w = o [ T ] , x = { } , 0 === d && ( "end" == l ? w = u + o [ T ] : "center" == l ? ( w = Math . round ( i [ R ] / 2 - ( i [ R ] - u ) / 2 ) + o [ T ] , 0 > w && ( w = o [ T ] ) ) : "justify" == l && ( w = o [ T ] , c = Math . floor ( u / ( r . length - 1 ) ) ) ) , x [ H ] = o [ I ] , t = 0 , n = r . length ; n > t ; t ++ ) p = r [ t ] , m = p . layoutRect ( ) , y = m . maxFlexSize || m [ k ] , "center" === s ? x [ H ] = Math . round ( i [ M ] / 2 - m [ D ] / 2 ) : "stretch" === s ? ( x [ D ] = V ( m [ P ] || 0 , i [ M ] - o [ I ] - o [ F ] ) , x [ H ] = o [ I ] ) : "end" === s && ( x [ H ] = i [ M ] - m [ D ] - o . top ) , m . flex > 0 && ( y += Math . ceil ( m . flex * C ) ) , x [ N ] = y , x [ E ] = w , p . layoutRect ( x ) , p . recalc && p . recalc ( ) , w += y + c } else if ( x . w = x . minW , x . h = x . minH , e . layoutRect ( x ) , this . recalc ( e ) , null === e . _lastRect ) { var q = e .