2024-03-22 15:50:26 +08:00
/ * !
* UEditor
* version : ueditor
* build : Wed Dec 26 2018 17 : 25 : 05 GMT + 0800 ( CST )
* /
2024-05-24 11:08:29 +08:00
! function ( ) {
function getListener ( a , b , c ) { var d ; return b = b . toLowerCase ( ) , ( d = a . _ _allListeners || c && ( a . _ _allListeners = { } ) ) && ( d [ b ] || c && ( d [ b ] = [ ] ) ) } function getDomNode ( a , b , c , d , e , f ) { var g , h = d && a [ b ] ; for ( ! h && ( h = a [ c ] ) ; ! h && ( g = ( g || a ) . parentNode ) ; ) { if ( "BODY" == g . tagName || f && ! f ( g ) ) return null ; h = g [ c ] } return h && e && ! e ( h ) ? getDomNode ( h , b , c , ! 1 , e ) : h } UEDITOR _CONFIG = window . UEDITOR _CONFIG || { } ; var baidu = window . baidu || { } ; window . baidu = baidu , window . UE = baidu . editor = window . UE || { } , UE . plugins = { } , UE . commands = { } , UE . instants = { } , UE . I18N = { } , UE . _customizeUI = { } , UE . version = "1.4.3" ; var dom = UE . dom = { } , browser = UE . browser = function ( ) { var a = navigator . userAgent . toLowerCase ( ) , b = window . opera , c = { ie : /(msie\s|trident.*rv:)([\w.]+)/ . test ( a ) , opera : ! ! b && b . version , webkit : a . indexOf ( " applewebkit/" ) > - 1 , mac : a . indexOf ( "macintosh" ) > - 1 , quirks : "BackCompat" == document . compatMode } ; c . gecko = "Gecko" == navigator . product && ! c . webkit && ! c . opera && ! c . ie ; var d = 0 ; if ( c . ie ) { var e = a . match ( /(?:msie\s([\w.]+))/ ) , f = a . match ( /(?:trident.*rv:([\w.]+))/ ) ; d = e && f && e [ 1 ] && f [ 1 ] ? Math . max ( 1 * e [ 1 ] , 1 * f [ 1 ] ) : e && e [ 1 ] ? 1 * e [ 1 ] : f && f [ 1 ] ? 1 * f [ 1 ] : 0 , c . ie11Compat = 11 == document . documentMode , c . ie9Compat = 9 == document . documentMode , c . ie8 = ! ! document . documentMode , c . ie8Compat = 8 == document . documentMode , c . ie7Compat = 7 == d && ! document . documentMode || 7 == document . documentMode , c . ie6Compat = d < 7 || c . quirks , c . ie9above = d > 8 , c . ie9below = d < 9 , c . ie11above = d > 10 , c . ie11below = d < 11 } if ( c . gecko ) { var g = a . match ( /rv:([\d\.]+)/ ) ; g && ( g = g [ 1 ] . split ( "." ) , d = 1e4 * g [ 0 ] + 100 * ( g [ 1 ] || 0 ) + 1 * ( g [ 2 ] || 0 ) ) } return /chrome\/(\d+\.\d)/i . test ( a ) && ( c . chrome = + RegExp . $1 ) , /(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i . test ( a ) && ! /chrome/i . test ( a ) && ( c . safari = + ( RegExp . $1 || RegExp . $2 ) ) , c . opera && ( d = parseFloat ( b . version ( ) ) ) , c . webkit && ( d = parseFloat ( a . match ( / applewebkit\/(\d+)/ ) [ 1 ] ) ) , c . version = d , c . isCompatible = ! c . mobile && ( c . ie && d >= 6 || c . gecko && d >= 10801 || c . opera && d >= 9.5 || c . air && d >= 1 || c . webkit && d >= 522 || ! 1 ) , c } ( ) , ie = browser . ie , webkit = browser . webkit , gecko = browser . gecko , opera = browser . opera , utils = UE . utils = { each : function ( a , b , c ) { if ( null != a ) if ( a . length === + a . length ) { for ( var d = 0 , e = a . length ; d < e ; d ++ ) if ( b . call ( c , a [ d ] , d , a ) === ! 1 ) return ! 1 } else for ( var f in a ) if ( a . hasOwnProperty ( f ) && b . call ( c , a [ f ] , f , a ) === ! 1 ) return ! 1 } , makeInstance : function ( a ) { var b = new Function ; return b . prototype = a , a = new b , b . prototype = null , a } , extend : function ( a , b , c ) { if ( b ) for ( var d in b ) c && a . hasOwnProperty ( d ) || ( a [ d ] = b [ d ] ) ; return a } , extend2 : function ( a ) { for ( var b = arguments , c = 1 ; c < b . length ; c ++ ) { var d = b [ c ] ; for ( var e in d ) a . hasOwnProperty ( e ) || ( a [ e ] = d [ e ] ) } return a } , inherits : function ( a , b ) { var c = a . prototype , d = utils . makeInstance ( b . prototype ) ; return utils . extend ( d , c , ! 0 ) , a . prototype = d , d . constructor = a } , bind : function ( a , b ) { return function ( ) { return a . apply ( b , arguments ) } } , defer : function ( a , b , c ) { var d ; return function ( ) { c && clearTimeout ( d ) , d = setTimeout ( a , b ) } } , indexOf : function ( a , b , c ) { var d = - 1 ; return c = this . isNumber ( c ) ? c : 0 , this . each ( a , function ( a , e ) { if ( e >= c && a === b ) return d = e , ! 1 } ) , d } , removeItem : function ( a , b ) { for ( var c = 0 , d = a . length ; c < d ; c ++ ) a [ c ] === b && ( a . splice ( c , 1 ) , c -- ) } , trim : function ( a ) { return a . replace ( /(^[ \t\n\r]+)|([ \t\n\r]+$)/g , "" ) } , listToMap : function ( a ) { if ( ! a ) return { } ; a = utils . isArray ( a ) ? a : a . split ( "," ) ; for ( var b , c = 0 , d = { } ; b = a [ c ++ ] ; ) d [ b . toUpperCase ( ) ] = d [ b ] = 1 ; return d } , unhtml : function ( a , b ) { return a ? a . replace ( b || /[&<">'](?:(amp|lt|quot|gt|#39|nbsp|#\d+);)?/g , function ( a , b ) { return b ? a : { "<" : "<" , "&" : "&" , '"' : """ , ">" : ">" , "'" : "'" } [ a ] } ) : "" } , unhtmlForUrl : function ( a , b ) { return a ? a . replace ( b || /[<">']/g , function ( a )
function a ( a ) { a . collapsed = a . startContainer && a . endContainer && a . startContainer === a . endContainer && a . startOffset == a . endOffset } function b ( a ) { return ! a . collapsed && 1 == a . startContainer . nodeType && a . startContainer === a . endContainer && a . endOffset - a . startOffset == 1 } function c ( b , c , d , e ) { return 1 == c . nodeType && ( dtd . $empty [ c . tagName ] || dtd . $nonChild [ c . tagName ] ) && ( d = domUtils . getNodeIndex ( c ) + ( b ? 0 : 1 ) , c = c . parentNode ) , b ? ( e . startContainer = c , e . startOffset = d , e . endContainer || e . collapse ( ! 0 ) ) : ( e . endContainer = c , e . endOffset = d , e . startContainer || e . collapse ( ! 1 ) ) , a ( e ) , e } function d ( a , b ) { var c , d , e = a . startContainer , f = a . endContainer , g = a . startOffset , h = a . endOffset , i = a . document , j = i . createDocumentFragment ( ) ; if ( 1 == e . nodeType && ( e = e . childNodes [ g ] || ( c = e . appendChild ( i . createTextNode ( "" ) ) ) ) , 1 == f . nodeType && ( f = f . childNodes [ h ] || ( d = f . appendChild ( i . createTextNode ( "" ) ) ) ) , e === f && 3 == e . nodeType ) return j . appendChild ( i . createTextNode ( e . substringData ( g , h - g ) ) ) , b && ( e . deleteData ( g , h - g ) , a . collapse ( ! 0 ) ) , j ; for ( var k , l , m = j , n = domUtils . findParents ( e , ! 0 ) , o = domUtils . findParents ( f , ! 0 ) , p = 0 ; n [ p ] == o [ p ] ; ) p ++ ; for ( var q , r = p ; q = n [ r ] ; r ++ ) { for ( k = q . nextSibling , q == e ? c || ( 3 == a . startContainer . nodeType ? ( m . appendChild ( i . createTextNode ( e . nodeValue . slice ( g ) ) ) , b && e . deleteData ( g , e . nodeValue . length - g ) ) : m . appendChild ( b ? e : e . cloneNode ( ! 0 ) ) ) : ( l = q . cloneNode ( ! 1 ) , m . appendChild ( l ) ) ; k && k !== f && k !== o [ r ] ; ) q = k . nextSibling , m . appendChild ( b ? k : k . cloneNode ( ! 0 ) ) , k = q ; m = l } m = j , n [ p ] || ( m . appendChild ( n [ p - 1 ] . cloneNode ( ! 1 ) ) , m = m . firstChild ) ; for ( var s , r = p ; s = o [ r ] ; r ++ ) { if ( k = s . previousSibling , s == f ? d || 3 != a . endContainer . nodeType || ( m . appendChild ( i . createTextNode ( f . substringData ( 0 , h ) ) ) , b && f . deleteData ( 0 , h ) ) : ( l = s . cloneNode ( ! 1 ) , m . appendChild ( l ) ) , r != p || ! n [ p ] ) for ( ; k && k !== e ; ) s = k . previousSibling , m . insertBefore ( b ? k : k . cloneNode ( ! 0 ) , m . firstChild ) , k = s ; m = l } return b && a . setStartBefore ( o [ p ] ? n [ p ] ? o [ p ] : n [ p - 1 ] : o [ p - 1 ] ) . collapse ( ! 0 ) , c && domUtils . remove ( c ) , d && domUtils . remove ( d ) , j } function e ( a , b ) {
try {
if ( g && domUtils . inDoc ( g , a ) ) if ( g . nodeValue . replace ( fillCharReg , "" ) . length ) g . nodeValue = g . nodeValue . replace ( fillCharReg , "" ) ; else {
var c = g . parentNode ; for ( domUtils . remove ( g ) ; c && domUtils . isEmptyInlineElement ( c ) && ( browser . safari ? ! ( domUtils . getPosition ( c , b ) & domUtils . POSITION _CONTAINS ) : ! c . contains ( b ) ) ; ) g = c . parentNode , domUtils . remove ( c ) , c = g ;
}
} catch ( d ) { }
} function f ( a , b ) { var c ; for ( a = a [ b ] ; a && domUtils . isFillChar ( a ) ; ) c = a [ b ] , domUtils . remove ( a ) , a = c } var g , h = 0 , i = domUtils . fillChar , j = dom . Range = function ( a ) { var b = this ; b . startContainer = b . startOffset = b . endContainer = b . endOffset = null , b . document = a , b . collapsed = ! 0 } ; j . prototype = { cloneContents : function ( ) { return this . collapsed ? null : d ( this , 0 ) } , deleteContents : function ( ) { var a ; return this . collapsed || d ( this , 1 ) , browser . webkit && ( a = this . startContainer , 3 != a . nodeType || a . nodeValue . length || ( this . setStartBefore ( a ) . collapse ( ! 0 ) , domUtils . remove ( a ) ) ) , this } , extractContents : function ( ) { return this . collapsed ? null : d ( this , 2 ) } , setStart : function ( a , b ) { return c ( ! 0 , a , b , this ) } , setEnd : function ( a , b ) { return c ( ! 1 , a , b , this ) } , setStartAfter : function ( a ) { return this . setStart ( a . parentNode , domUtils . getNodeIndex ( a ) + 1 ) } , setStartBefore : function ( a ) { return this . setStart ( a . parentNode , domUtils . getNodeIndex ( a ) ) } , setEndAfter : function ( a ) { return this . setEnd ( a . parentNode , domUtils . getNodeIndex ( a ) + 1 ) } , setEndBefore : function ( a ) { return this . setEnd ( a . parentNode , domUtils . getNodeIndex ( a ) ) } , setStartAtFirst : function ( a ) { return this . setStart ( a , 0 ) } , setStartAtLast : function ( a ) { return this . setStart ( a , 3 == a . nodeType ? a . nodeValue . length : a . childNodes . length ) } , setEndAtFirst : function ( a ) { return this . setEnd ( a , 0 ) } , setEndAtLast : function ( a ) { return this . setEnd ( a , 3 == a . nodeType ? a . nodeValue . length : a . childNodes . length ) } , selectNode : function ( a ) { return this . setStartBefore ( a ) . setEndAfter ( a ) } , selectNodeContents : function ( a ) { return this . setStart ( a , 0 ) . setEndAtLast ( a ) } , cloneRange : function ( ) { var a = this ; return new j ( a . document ) . setStart ( a . startContainer , a . startOffset ) . setEnd ( a . endContainer , a . endOffset ) } , collapse : function ( a ) { var b = this ; return a ? ( b . endContainer = b . startContainer , b . endOffset = b . startOffset ) : ( b . startContainer = b . endContainer , b . startOffset = b . endOffset ) , b . collapsed = ! 0 , b } , shrinkBoundary : function ( a ) { function b ( a ) { return 1 == a . nodeType && ! domUtils . isBookmarkNode ( a ) && ! dtd . $empty [ a . tagName ] && ! dtd . $nonChild [ a . tagName ] } for ( var c , d = this , e = d . collapsed ; 1 == d . startContainer . nodeType && ( c = d . startContainer . childNodes [ d . startOffset ] ) && b ( c ) ; ) d . setStart ( c , 0 ) ; if ( e ) return d . collapse ( ! 0 ) ; if ( ! a ) for ( ; 1 == d . endContainer . nodeType && d . endOffset > 0 && ( c = d . endContainer . childNodes [ d . endOffset - 1 ] ) && b ( c ) ; ) d . setEnd ( c , c . childNodes . length ) ; return d } , getCommonAncestor : function ( a , c ) { var d = this , e = d . startContainer , f = d . endContainer ; return e === f ? a && b ( this ) && ( e = e . childNodes [ d . startOffset ] , 1 == e . nodeType ) ? e : c && 3 == e . nodeType ? e . parentNode : e : domUtils . getCommonAncestor ( e , f ) } , trimBoundary : function ( a ) { this . txtToElmBoundary ( ) ; var b = this . startContainer , c = this . startOffset , d = this . collapsed , e = this . endContainer ; if ( 3 == b . nodeType ) { if ( 0 == c ) this . setStartBefore ( b ) ; else if ( c >= b . nodeValue . length ) this . setStartAfter ( b ) ; else { var f = domUtils . split ( b , c ) ; b === e ? this . setEnd ( f , this . endOffset - c ) : b . parentNode === e && ( this . endOffset += 1 ) , this . setStartBefore ( f ) } if ( d ) return this . collapse ( ! 0 ) } return a || ( c = this . endOffset , e = this . endContainer , 3 == e . nodeType && ( 0 == c ? this . setEndBefore ( e ) : ( c < e . nodeValue . length && domUtils . split ( e , c ) , this . setEndAfter ( e ) ) ) ) , this } , txtToElmBoundary : function ( a ) { function b ( a , b ) { var c = a [ b + "Container" ] , d = a [ b + "Offset" ] ; 3 == c . nodeType && ( d ? d >= c . nodeValue . length && a [ "set" + b . replace ( /(\w)/ , function ( a ) { return a . toUpperCase ( ) } ) + "After" ] ( c ) : a [ "set" + b . replace ( /(\w)/ , function ( a ) { return a . toUpperCase ( ) } ) + "Before" ] ( c ) ) } return ! a && this . collapsed || ( b ( this , "start" ) , b ( this , "end" ) ) , this } , insertNode : function ( a ) { var b = a , c = 1 ; 11 == a . nodeType && ( b = a . firstChild , c = a . childNodes . length ) , this . trimBoundary ( ! 0 ) ; var d = this . startContainer , e = this . startOffset , f = d . childNodes [ e ] ; return f ? d . insertBefore ( a , f ) :
} ( ) , function ( ) { function a ( a , b ) { var c = domUtils . getNodeIndex ; a = a . duplicate ( ) , a . collapse ( b ) ; var d = a . parentElement ( ) ; if ( ! d . hasChildNodes ( ) ) return { container : d , offset : 0 } ; for ( var e , f , g = d . children , h = a . duplicate ( ) , i = 0 , j = g . length - 1 , k = - 1 ; i <= j ; ) { k = Math . floor ( ( i + j ) / 2 ) , e = g [ k ] , h . moveToElementText ( e ) ; var l = h . compareEndPoints ( "StartToStart" , a ) ; if ( l > 0 ) j = k - 1 ; else { if ( ! ( l < 0 ) ) return { container : d , offset : c ( e ) } ; i = k + 1 } } if ( k == - 1 ) { if ( h . moveToElementText ( d ) , h . setEndPoint ( "StartToStart" , a ) , f = h . text . replace ( /(\r\n|\r)/g , "\n" ) . length , g = d . childNodes , ! f ) return e = g [ g . length - 1 ] , { container : e , offset : e . nodeValue . length } ; for ( var m = g . length ; f > 0 ; ) f -= g [ -- m ] . nodeValue . length ; return { container : g [ m ] , offset : - f } } if ( h . collapse ( l > 0 ) , h . setEndPoint ( l > 0 ? "StartToStart" : "EndToStart" , a ) , f = h . text . replace ( /(\r\n|\r)/g , "\n" ) . length , ! f ) return dtd . $empty [ e . tagName ] || dtd . $nonChild [ e . tagName ] ? { container : d , offset : c ( e ) + ( l > 0 ? 0 : 1 ) } : { container : e , offset : l > 0 ? 0 : e . childNodes . length } ; for ( ; f > 0 ; ) try { var n = e ; e = e [ l > 0 ? "previousSibling" : "nextSibling" ] , f -= e . nodeValue . length } catch ( o ) { return { container : d , offset : c ( n ) } } return { container : e , offset : l > 0 ? - f : e . nodeValue . length + f } } function b ( b , c ) { if ( b . item ) c . selectNode ( b . item ( 0 ) ) ; else { var d = a ( b , ! 0 ) ; c . setStart ( d . container , d . offset ) , 0 != b . compareEndPoints ( "StartToEnd" , b ) && ( d = a ( b , ! 1 ) , c . setEnd ( d . container , d . offset ) ) } return c } function c ( a ) { var b ; try { b = a . getNative ( ) . createRange ( ) } catch ( c ) { return null } var d = b . item ? b . item ( 0 ) : b . parentElement ( ) ; return ( d . ownerDocument || d ) === a . document ? b : null } var d = dom . Selection = function ( a ) { var b , d = this ; d . document = a , browser . ie9below && ( b = domUtils . getWindow ( a ) . frameElement , domUtils . on ( b , "beforedeactivate" , function ( ) { d . _bakIERange = d . getIERange ( ) } ) , domUtils . on ( b , "activate" , function ( ) { try { ! c ( d ) && d . _bakIERange && d . _bakIERange . select ( ) } catch ( a ) { } d . _bakIERange = null } ) ) , b = a = null } ; d . prototype = { rangeInBody : function ( a , b ) { var c = browser . ie9below || b ? a . item ? a . item ( ) : a . parentElement ( ) : a . startContainer ; return c === this . document . body || domUtils . inDoc ( c , this . document ) } , getNative : function ( ) { var a = this . document ; try { return a ? browser . ie9below ? a . selection : domUtils . getWindow ( a ) . getSelection ( ) : null } catch ( b ) { return null } } , getIERange : function ( ) { var a = c ( this ) ; return ! a && this . _bakIERange ? this . _bakIERange : a } , cache : function ( ) { this . clear ( ) , this . _cachedRange = this . getRange ( ) , this . _cachedStartElement = this . getStart ( ) , this . _cachedStartElementPath = this . getStartElementPath ( ) } , getStartElementPath : function ( ) { if ( this . _cachedStartElementPath ) return this . _cachedStartElementPath ; var a = this . getStart ( ) ; return a ? domUtils . findParents ( a , ! 0 , null , ! 0 ) : [ ] } , clear : function ( ) { this . _cachedStartElementPath = this . _cachedRange = this . _cachedStartElement = null } , isFocus : function ( ) { try { if ( browser . ie9below ) { var a = c ( this ) ; return ! ( ! a || ! this . rangeInBody ( a ) ) } return ! ! this . getNative ( ) . rangeCount } catch ( b ) { return ! 1 } } , getRange : function ( ) { function a ( a ) { for ( var b = c . document . body . firstChild , d = a . collapsed ; b && b . firstChild ; ) a . setStart ( b , 0 ) , b = b . firstChild ; a . startContainer || a . setStart ( c . document . body , 0 ) , d && a . collapse ( ! 0 ) } var c = this ; if ( null != c . _cachedRange ) return this . _cachedRange ; var d = new baidu . editor . dom . Range ( c . document ) ; if ( browser . ie9below ) { var e = c . getIERange ( ) ; if ( e ) try { b ( e , d ) } catch ( f ) { a ( d ) } else a ( d ) } else { var g = c . getNative ( ) ; if ( g && g . rangeCount ) { var h = g . getRangeAt ( 0 ) , i = g . getRangeAt ( g . rangeCount - 1 ) ; d . setStart ( h . startContainer , h . startOffset ) . setEnd ( i . endContainer , i . endOffset ) , d . collapsed && domUtils . isBody ( d . startContainer ) && ! d . startOffset && a ( d ) } else { if ( this . _bakRange && domUtils . inDoc ( this . _bakRange . startContainer , this . document ) ) return this . _bakRange ; a ( d
function a ( a , b ) { var c ; if ( b . textarea ) if ( utils . isString ( b . textarea ) ) { for ( var d , e = 0 , f = domUtils . getElementsByTagName ( a , "textarea" ) ; d = f [ e ++ ] ; ) if ( d . id == "ueditor_textarea_" + b . options . textarea ) { c = d ; break } } else c = b . textarea ; c || ( a . appendChild ( c = domUtils . createElement ( document , "textarea" , { name : b . options . textarea , id : "ueditor_textarea_" + b . options . textarea , style : "display:none" } ) ) , b . textarea = c ) , ! c . getAttribute ( "name" ) && c . setAttribute ( "name" , b . options . textarea ) , c . value = b . hasContents ( ) ? b . options . allHtmlEnabled ? b . getAllHtml ( ) : b . getContent ( null , null , ! 0 ) : "" } function b ( a ) { for ( var b in a ) return b } function c ( a ) { a . langIsReady = ! 0 , a . fireEvent ( "langReady" ) } var d , e = 0 , f = UE . Editor = function ( a ) { var d = this ; d . uid = e ++ , EventBase . call ( d ) , d . commands = { } , d . options = utils . extend ( utils . clone ( a || { } ) , UEDITOR _CONFIG , ! 0 ) , d . shortcutkeys = { } , d . inputRules = [ ] , d . outputRules = [ ] , d . setOpt ( f . defaultOptions ( d ) ) , d . loadServerConfig ( ) , utils . isEmptyObject ( UE . I18N ) ? utils . loadFile ( document , { src : d . options . langPath + d . options . lang + "/" + d . options . lang + ".js" , tag : "script" , type : "text/javascript" , defer : "defer" } , function ( ) { UE . plugin . load ( d ) , c ( d ) } ) : ( d . options . lang = b ( UE . I18N ) , UE . plugin . load ( d ) , c ( d ) ) , UE . instants [ "ueditorInstant" + d . uid ] = d } ; f . prototype = {
registerCommand : function ( a , b ) { this . commands [ a ] = b } , ready : function ( a ) { var b = this ; a && ( b . isReady ? a . apply ( b ) : b . addListener ( "ready" , a ) ) } , setOpt : function ( a , b ) { var c = { } ; utils . isString ( a ) ? c [ a ] = b : c = a , utils . extend ( this . options , c , ! 0 ) } , getOpt : function ( a ) { return this . options [ a ] } , destroy : function ( ) { var a = this ; a . fireEvent ( "destroy" ) ; var b = a . container . parentNode , c = a . textarea ; c ? c . style . display = "" : ( c = document . createElement ( "textarea" ) , b . parentNode . insertBefore ( c , b ) ) , c . style . width = a . iframe . offsetWidth + "px" , c . style . height = a . iframe . offsetHeight + "px" , c . value = a . getContent ( ) , c . id = a . key , b . innerHTML = "" , domUtils . remove ( b ) ; var d = a . key ; for ( var e in a ) a . hasOwnProperty ( e ) && delete this [ e ] ; UE . delEditor ( d ) } , render : function ( a ) { var b = this , c = b . options , d = function ( b ) { return parseInt ( domUtils . getComputedStyle ( a , b ) ) } ; if ( utils . isString ( a ) && ( a = document . getElementById ( a ) ) , a ) { c . initialFrameWidth ? c . minFrameWidth = c . initialFrameWidth : c . minFrameWidth = c . initialFrameWidth = a . offsetWidth , c . initialFrameHeight ? c . minFrameHeight = c . initialFrameHeight : c . initialFrameHeight = c . minFrameHeight = a . offsetHeight , a . style . width = /%$/ . test ( c . initialFrameWidth ) ? "100%" : c . initialFrameWidth - d ( "padding-left" ) - d ( "padding-right" ) + "px" , a . style . height = /%$/ . test ( c . initialFrameHeight ) ? "100%" : c . initialFrameHeight - d ( "padding-top" ) - d ( "padding-bottom" ) + "px" , a . style . zIndex = c . zIndex ; var e = ( ie && browser . version < 9 ? "" : "<!DOCTYPE html>" ) + "<html xmlns='http://www.w3.org/1999/xhtml' class='view' ><head><style type='text/css'>.view{padding:0;word-wrap:break-word;cursor:text;height:90%;}\nbody{margin:8px;font-family:sans-serif;font-size:16px;}p{margin:5px 0;}</style>" + ( c . iframeCssUrl ? "<link rel='stylesheet' type='text/css' href='" + utils . unhtml ( c . iframeCssUrl ) + "'/>" : "" ) + ( c . initialStyle ? "<style>" + c . initialStyle + "</style>" : "" ) + "</head><body class='view' ></body><script type='text/javascript' " + ( ie ? "defer='defer'" : "" ) + " id='_initialScript'>setTimeout(function(){editor = window.parent.UE.instants['ueditorInstant" + b . uid + "'];editor._setup(document);},0);var _tmpScript = document.getElementById('_initialScript');_tmpScript.parentNode.removeChild(_tmpScript);</script></html>" ; a . appendChild ( domUtils . createElement ( document , "iframe" , { id : "ueditor_" + b . uid , width : "100%" , height : "100%" , frameborder : "0" , src : "javascript:void(function(){document.open();" + ( c . customDomain && document . domain != location . hostname ? 'document.domain="' + document . domain + '";' : "" ) + 'document.write("' + e + '");document.close();}())' } ) ) , a . style . overflow = "hidden" , setTimeout ( function ( ) { /%$/ . test ( c . initialFrameWidth ) && ( c . minFrameWidth = c . initialFrameWidth = a . offsetWidth ) , /%$/ . test ( c . initialFrameHeight ) && ( c . minFrameHeight = c . initialFrameHeight = a . offsetHeight , a . style . height = c . initialFrameHeight + "px" ) } ) } } , _setup : function ( b ) { var c = this , d = c . options ; ie ? ( b . body . disabled = ! 0 , b . body . contentEditable = ! 0 , b . body . disabled = ! 1 ) : b . body . contentEditable = ! 0 , b . body . spellcheck = ! 1 , c . document = b , c . window = b . defaultView || b . parentWindow , c . iframe = c . window . frameElement , c . body = b . body , c . selection = new dom . Selection ( b ) ; var e ; browser . gecko && ( e = this . selection . getNative ( ) ) && e . removeAllRanges ( ) , this . _initEvents ( ) ; for ( var f = this . iframe . parentNode ; ! domUtils . isBody ( f ) ; f = f . parentNode ) if ( "FORM" == f . tagName ) { c . form = f , c . options . autoSyncData ? domUtils . on ( c . window , "blur" , function ( ) { a ( f , c ) } ) : domUtils . on ( f , "submit" , function ( ) { a ( this , c ) } ) ; break } if ( d . initialContent ) if ( d . autoClearinitialContent ) { var g = c . execCommand ; c . execCommand = function ( ) { return c . fireEvent ( "firstBeforeExecCommand" ) , g . apply ( c , arguments ) } , this . _setDefaultContent ( d . initialContent ) } else this . setContent ( d . initialContent , ! 1 , ! 0 ) ; domUtils . isEmptyNode ( c . body ) && ( c . body . innerHTML = "<p>" + ( browser . ie ? "" : "<br/>" ) + "</p>" ) , d . focus && setTimeout ( function ( ) { c
return this . setShow ( ) ;
} , setHide : function ( ) { var a = this ; a . lastBk || ( a . lastBk = a . selection . getRange ( ) . createBookmark ( ! 0 ) ) , a . container . style . display = "none" } , hide : function ( ) { return this . setHide ( ) } , getLang : function ( a ) { if ( ! this . options ) return "" ; var b = UE . I18N [ this . options . lang ] ; if ( ! b ) throw Error ( "not import language file" ) ; a = ( a || "" ) . split ( "." ) ; for ( var c , d = 0 ; ( c = a [ d ++ ] ) && ( b = b [ c ] , b ) ; ) ; return b } , getContentLength : function ( a , b ) { var c = this . getContent ( ! 1 , ! 1 , ! 0 ) . length ; if ( a ) { b = ( b || [ ] ) . concat ( [ "hr" , "img" , "iframe" ] ) , c = this . getContentTxt ( ) . replace ( /[\t\r\n]+/g , "" ) . length ; for ( var d , e = 0 ; d = b [ e ++ ] ; ) c += this . document . getElementsByTagName ( d ) . length } return c } , addInputRule : function ( a ) { this . inputRules . push ( a ) } , filterInputRule : function ( a ) { for ( var b , c = 0 ; b = this . inputRules [ c ++ ] ; ) b . call ( this , a ) } , addOutputRule : function ( a ) { this . outputRules . push ( a ) } , filterOutputRule : function ( a ) { for ( var b , c = 0 ; b = this . outputRules [ c ++ ] ; ) b . call ( this , a ) } , getActionUrl : function ( a ) { var b = this . getOpt ( a ) || a , c = this . getOpt ( "imageUrl" ) , d = this . getOpt ( "serverUrl" ) ; return ! d && c && ( d = c . replace ( /^(.*[\/]).+([\.].+)$/ , "$1controller$2" ) ) , d ? ( d = d + ( d . indexOf ( "?" ) == - 1 ? "?" : "&" ) + "action=" + ( b || "" ) , utils . formatUrl ( d ) ) : "" }
} , utils . inherits ( f , EventBase )
} ( ) , UE . Editor . defaultOptions = function ( a ) { var b = a . options . UEDITOR _HOME _URL ; return { isShow : ! 0 , initialContent : "" , initialStyle : "" , autoClearinitialContent : ! 1 , iframeCssUrl : b + "themes/iframe.css" , textarea : "editorValue" , focus : ! 1 , focusInEnd : ! 0 , autoClearEmptyNode : ! 0 , fullscreen : ! 1 , readonly : ! 1 , zIndex : 999 , imagePopup : ! 0 , enterTag : "p" , customDomain : ! 1 , lang : "zh-cn" , langPath : b + "lang/" , theme : "default" , themePath : b + "themes/" , allHtmlEnabled : ! 1 , scaleEnabled : ! 1 , tableNativeEditInFF : ! 1 , autoSyncData : ! 0 , fileNameFormat : "{time}{rand:6}" } } , function ( ) { UE . Editor . prototype . loadServerConfig = function ( ) { function showErrorMsg ( a ) { console && console . error ( a ) } var me = this ; setTimeout ( function ( ) { try { me . options . imageUrl && me . setOpt ( "serverUrl" , me . options . imageUrl . replace ( /^(.*[\/]).+([\.].+)$/ , "$1controller$2" ) ) ; var configUrl = me . getActionUrl ( "config" ) , isJsonp = utils . isCrossDomainUrl ( configUrl ) ; me . _serverConfigLoaded = ! 1 , configUrl && UE . ajax . request ( configUrl , { method : "GET" , dataType : isJsonp ? "jsonp" : "" , onsuccess : function ( r ) { try { var config = isJsonp ? r : eval ( "(" + r . responseText + ")" ) ; utils . extend ( me . options , config ) , me . fireEvent ( "serverConfigLoaded" ) , me . _serverConfigLoaded = ! 0 } catch ( e ) { showErrorMsg ( me . getLang ( "loadconfigFormatError" ) ) } } , onerror : function ( ) { showErrorMsg ( me . getLang ( "loadconfigHttpError" ) ) } } ) } catch ( e ) { showErrorMsg ( me . getLang ( "loadconfigError" ) ) } } ) } , UE . Editor . prototype . isServerConfigLoaded = function ( ) { var a = this ; return a . _serverConfigLoaded || ! 1 } , UE . Editor . prototype . afterConfigReady = function ( a ) { if ( a && utils . isFunction ( a ) ) { var b = this , c = function ( ) { a . apply ( b , arguments ) , b . removeListener ( "serverConfigLoaded" , c ) } ; b . isServerConfigLoaded ( ) ? a . call ( b , "serverConfigLoaded" ) : b . addListener ( "serverConfigLoaded" , c ) } } } ( ) , UE . ajax = function ( ) { function a ( a ) { var b = [ ] ; for ( var c in a ) if ( "method" != c && "timeout" != c && "async" != c && "dataType" != c && "callback" != c && void 0 != a [ c ] && null != a [ c ] ) if ( "function" != ( typeof a [ c ] ) . toLowerCase ( ) && "object" != ( typeof a [ c ] ) . toLowerCase ( ) ) b . push ( encodeURIComponent ( c ) + "=" + encodeURIComponent ( a [ c ] ) ) ; else if ( utils . isArray ( a [ c ] ) ) for ( var d = 0 ; d < a [ c ] . length ; d ++ ) b . push ( encodeURIComponent ( c ) + "[]=" + encodeURIComponent ( a [ c ] [ d ] ) ) ; return b . join ( "&" ) } function b ( b , c ) { var d = f ( ) , e = ! 1 , g = { method : "POST" , timeout : 5e3 , async : ! 0 , data : { } , onsuccess : function ( ) { } , onerror : function ( ) { } } ; if ( "object" == typeof b && ( c = b , b = c . url ) , d && b ) { var h = c ? utils . extend ( g , c ) : g , i = a ( h ) ; utils . isEmptyObject ( h . data ) || ( i += ( i ? "&" : "" ) + a ( h . data ) ) ; var j = setTimeout ( function ( ) { 4 != d . readyState && ( e = ! 0 , d . abort ( ) , clearTimeout ( j ) ) } , h . timeout ) , k = h . method . toUpperCase ( ) , l = b + ( b . indexOf ( "?" ) == - 1 ? "?" : "&" ) + ( "POST" == k ? "" : i + "&noCache=" + + new Date ) ; d . open ( k , l , h . async ) , d . onreadystatechange = function ( ) { 4 == d . readyState && ( e || 200 != d . status ? h . onerror ( d ) : h . onsuccess ( d ) ) } , "POST" == k ? ( d . setRequestHeader ( "Content-Type" , "application/x-www-form-urlencoded" ) , d . send ( i ) ) : d . send ( null ) } } function c ( b , c ) { function d ( a , b , c ) { a . setAttribute ( "type" , "text/javascript" ) , a . setAttribute ( "defer" , "defer" ) , c && a . setAttribute ( "charset" , c ) , a . setAttribute ( "src" , b ) , document . getElementsByTagName ( "head" ) [ 0 ] . appendChild ( a ) } function e ( a ) { return function ( ) { try { if ( a ) k . onerror && k . onerror ( ) ; else try { clearTimeout ( g ) , i . apply ( window , arguments ) } catch ( b ) { } } catch ( c ) { k . onerror && k . onerror . call ( window , c ) } finally { k . oncomplete && k . oncomplete . apply ( window , arguments ) , j . parentNode && j . parentNode . removeChild ( j ) , window [ f ] = null ; try { delete window [ f ] } catch ( b ) { } } } } var f , g , h , i = c . onsuccess || function ( ) { } , j = document . createElement ( "SCRIPT" ) , k = c || { } , l = k . charset , m = k . jsonp || "callback" , n = k . timeOut || 0 , o = new RegExp ( "(\\?|&)" + m + "=([^&]*)" ) ; utils . isFunction ( i ) ? ( f = "bd__editor__" + Math . floor ( 2147483648 * Math . rando
function a ( a ) { var b = { } , c = a . split ( ";" ) ; return utils . each ( c , function ( a ) { var c = a . indexOf ( ":" ) , d = utils . trim ( a . substr ( 0 , c ) ) . toLowerCase ( ) ; d && ( b [ d ] = utils . trim ( a . substr ( c + 1 ) || "" ) ) } ) , b } function b ( a ) { if ( a ) { var b = [ ] ; for ( var c in a ) a . hasOwnProperty ( c ) && b . push ( c + ":" + a [ c ] + "; " ) ; utils . cssRule ( e , b . length ? "body{" + b . join ( "" ) + "}" : "" , d . document ) } else utils . cssRule ( e , "" , d . document ) } var c , d = this , e = "editor_background" , f = new RegExp ( "body[\\s]*\\{(.+)\\}" , "i" ) , g = d . hasContents ; return d . hasContents = function ( ) { return ! ! d . queryCommandValue ( "background" ) || g . apply ( d , arguments ) } , {
bindEvents : {
getAllHtml : function ( a , b ) { var c = this . body , e = domUtils . getComputedStyle ( c , "background-image" ) , f = "" ; f = e . indexOf ( d . options . imagePath ) > 0 ? e . substring ( e . indexOf ( d . options . imagePath ) , e . length - 1 ) . replace ( /"|\(|\)/gi , "" ) : "none" != e ? e . replace ( /url\("?|"?\)/gi , "" ) : "" ; var g = '<style type="text/css">body{' , h = { "background-color" : domUtils . getComputedStyle ( c , "background-color" ) || "#ffffff" , "background-image" : f ? "url(" + f + ")" : "" , "background-repeat" : domUtils . getComputedStyle ( c , "background-repeat" ) || "" , "background-position" : browser . ie ? domUtils . getComputedStyle ( c , "background-position-x" ) + " " + domUtils . getComputedStyle ( c , "background-position-y" ) : domUtils . getComputedStyle ( c , "background-position" ) , height : domUtils . getComputedStyle ( c , "height" ) } ; for ( var i in h ) h . hasOwnProperty ( i ) && ( g += i + ":" + h [ i ] + "; " ) ; g += "}</style> " , b . push ( g ) } , aftersetcontent : function ( ) { 0 == c && b ( ) }
} , inputRule : function ( d ) { c = ! 1 , utils . each ( d . getNodesByTagName ( "p" ) , function ( d ) { var e = d . getAttr ( "data-background" ) ; e && ( c = ! 0 , b ( a ( e ) ) , d . parentNode . removeChild ( d ) ) } ) } , outputRule : function ( a ) { var b = this , c = ( utils . cssRule ( e , b . document ) || "" ) . replace ( /[\n\r]+/g , "" ) . match ( f ) ; c && a . appendChild ( UE . uNode . createElement ( '<p style="display:none;" data-background="' + utils . trim ( c [ 1 ] . replace ( /"/g , "" ) . replace ( /[\s]+/g , " " ) ) + '"><br/></p>' ) ) } , commands : { background : { execCommand : function ( a , c ) { b ( c ) } , queryCommandValue : function ( ) { var b = this , c = ( utils . cssRule ( e , b . document ) || "" ) . replace ( /[\n\r]+/g , "" ) . match ( f ) ; return c ? a ( c [ 1 ] ) : null } , notNeedUndo : ! 0 } }
}
} ) , UE . commands . imagefloat = { execCommand : function ( a , b ) { var c = this , d = c . selection . getRange ( ) ; if ( ! d . collapsed ) { var e = d . getClosedNode ( ) ; if ( e && "IMG" == e . tagName ) switch ( b ) { case "left" : case "right" : case "none" : for ( var f , g , h , i = e . parentNode ; dtd . $inline [ i . tagName ] || "A" == i . tagName ; ) i = i . parentNode ; if ( f = i , "P" == f . tagName && "center" == domUtils . getStyle ( f , "text-align" ) ) { if ( ! domUtils . isBody ( f ) && 1 == domUtils . getChildCount ( f , function ( a ) { return ! domUtils . isBr ( a ) && ! domUtils . isWhitespace ( a ) } ) ) if ( g = f . previousSibling , h = f . nextSibling , g && h && 1 == g . nodeType && 1 == h . nodeType && g . tagName == h . tagName && domUtils . isBlockElm ( g ) ) { for ( g . appendChild ( f . firstChild ) ; h . firstChild ; ) g . appendChild ( h . firstChild ) ; domUtils . remove ( f ) , domUtils . remove ( h ) } else domUtils . setStyle ( f , "text-align" , "" ) ; d . selectNode ( e ) . select ( ) } domUtils . setStyle ( e , "float" , "none" == b ? "" : b ) , "none" == b && domUtils . removeAttributes ( e , "align" ) ; break ; case "center" : if ( "center" != c . queryCommandValue ( "imagefloat" ) ) { for ( i = e . parentNode , domUtils . setStyle ( e , "float" , "" ) , domUtils . removeAttributes ( e , "align" ) , f = e ; i && 1 == domUtils . getChildCount ( i , function ( a ) { return ! domUtils . isBr ( a ) && ! domUtils . isWhitespace ( a ) } ) && ( dtd . $inline [ i . tagName ] || "A" == i . tagName ) ; ) f = i , i = i . parentNode ; d . setStartBefore ( f ) . setCursor ( ! 1 ) , i = c . document . createElement ( "div" ) , i . appendChild ( f ) , domUtils . setStyle ( f , "float" , "" ) , c . execCommand ( "insertHtml" , '<p id="_img_parent_tmp" style="text-align:center">' + i . innerHTML + "</p>" ) , f = c . document . getElementById ( "_img_parent_tmp" ) , f . removeAttribute ( "id" ) , f = f . firstChild , d . selectNode ( f ) . select ( ) , h = f . parentNode . nextSibling , h && domUtils . isEmptyNode ( h ) && domUtils . remove ( h ) } } } } , queryCommandValue : function ( ) { var a , b , c = this . selection . getRange ( ) ; return c . collapsed ? "none" : ( a = c . getClosedNode ( ) , a && 1 == a . nodeType && "IMG" == a . tagName ? ( b = domUtils . getComputedStyle ( a , "float" ) || a . getAttribute ( "align" ) , "none" == b && ( b = "center" == domUtils . getComputedStyle ( a . parentNode , "text-align" ) ? "center" : b ) , { left : 1 , right : 1 , center : 1 } [ b ] ? b : "none" ) : "none" ) } , queryCommandState : function ( ) { var a , b = this . selection . getRange ( ) ; return b . collapsed ? - 1 : ( a = b . getClosedNode ( ) , a && 1 == a . nodeType && "IMG" == a . tagName ? 0 : - 1 ) } } , UE . commands . insertimage = { execCommand : function ( a , b ) { function c ( a ) { utils . each ( "width,height,border,hspace,vspace" . split ( "," ) , function ( b ) { a [ b ] && ( a [ b ] = parseInt ( a [ b ] , 10 ) || 0 ) } ) , utils . each ( "src,_src" . split ( "," ) , function ( b ) { a [ b ] && ( a [ b ] = utils . unhtmlForUrl ( a [ b ] ) ) } ) , utils . each ( "title,alt" . split ( "," ) , function ( b ) { a [ b ] && ( a [ b ] = utils . unhtml ( a [ b ] ) ) } ) } if ( b = utils . isArray ( b ) ? b : [ b ] , b . length ) { var d = this , e = d . selection . getRange ( ) , f = e . getClosedNode ( ) ; if ( d . fireEvent ( "beforeinsertimage" , b ) !== ! 0 ) { if ( ! f || ! /img/i . test ( f . tagName ) || "edui-faked-video" == f . className && f . className . indexOf ( "edui-upload-video" ) == - 1 || f . getAttribute ( "word_img" ) ) { var g , h = [ ] , i = "" ; if ( g = b [ 0 ] , 1 == b . length ) c ( g ) , i = '<img src="' + g . src + '" ' + ( g . _src ? ' _src="' + g . _src + '" ' : "" ) + ( g . width ? 'width="' + g . width + '" ' : "" ) + ( g . height ? ' height="' + g . height + '" ' : "" ) + ( "left" == g . floatStyle || "right" == g . floatStyle ? ' style="float:' + g . floatStyle + ';"' : "" ) + ( g . title && "" != g . title ? ' title="' + g . title + '"' : "" ) + ( g . border && "0" != g . border ? ' border="' + g . border + '"' : "" ) + ( g . alt && "" != g . alt ? ' alt="' + g . alt + '"' : "" ) + ( g . hspace && "0" != g . hspace ? ' hspace = "' + g . hspace + '"' : "" ) + ( g . vspace && "0" != g . vspace ? ' vspace = "' + g . vspace + '"' : "" ) + "/>" , "center" == g . floatStyle && ( i = '<p style="text-align: center">' + i + "</p>" ) , h . push ( i ) ; else for ( var j = 0 ; g = b [ j ++ ] ; ) c ( g ) , i = "<p " + ( "center" == g . floatStyle ? 'style="text-align: center" ' : "" ) + '><img src="' + g . src + '" ' + ( g . width ? 'width="' + g . width + '" ' : "" ) + ( g . _src ? ' _src="' + g . _src + '" ' : "" ) + ( g . height ? ' height="'
var a = this ; a . ready ( function ( ) { utils . cssRule ( "pre" , "pre{margin:.5em 0;padding:.4em .6em;border-radius:8px;background:#f8f8f8;}" , a . document ) } ) , a . setOpt ( "insertcode" , { as3 : "ActionScript3" , bash : "Bash/Shell" , cpp : "C/C++" , css : "Css" , cf : "CodeFunction" , "c#" : "C#" , delphi : "Delphi" , diff : "Diff" , erlang : "Erlang" , groovy : "Groovy" , html : "Html" , java : "Java" , jfx : "JavaFx" , js : "Javascript" , pl : "Perl" , php : "Php" , plain : "Plain Text" , ps : "PowerShell" , python : "Python" , ruby : "Ruby" , scala : "Scala" , sql : "Sql" , vb : "Vb" , xml : "Xml" } ) , a . commands . insertcode = { execCommand : function ( a , b ) { var c = this , d = c . selection . getRange ( ) , e = domUtils . findParentByTagName ( d . startContainer , "pre" , ! 0 ) ; if ( e ) e . className = "brush:" + b + ";toolbar:false;" ; else { var f = "" ; if ( d . collapsed ) f = browser . ie && browser . ie11below ? browser . version <= 8 ? " " : "" : "<br/>" ; else { var g = d . extractContents ( ) , h = c . document . createElement ( "div" ) ; h . appendChild ( g ) , utils . each ( UE . filterNode ( UE . htmlparser ( h . innerHTML . replace ( /[\r\t]/g , "" ) ) , c . options . filterTxtRules ) . children , function ( a ) { if ( browser . ie && browser . ie11below && browser . version > 8 ) "element" == a . type ? "br" == a . tagName ? f += "\n" : dtd . $empty [ a . tagName ] || ( utils . each ( a . children , function ( b ) { "element" == b . type ? "br" == b . tagName ? f += "\n" : dtd . $empty [ a . tagName ] || ( f += b . innerText ( ) ) : f += b . data } ) , /\n$/ . test ( f ) || ( f += "\n" ) ) : f += a . data + "\n" , ! a . nextSibling ( ) && /\n$/ . test ( f ) && ( f = f . replace ( /\n$/ , "" ) ) ; else if ( browser . ie && browser . ie11below ) "element" == a . type ? "br" == a . tagName ? f += "<br>" : dtd . $empty [ a . tagName ] || ( utils . each ( a . children , function ( b ) { "element" == b . type ? "br" == b . tagName ? f += "<br>" : dtd . $empty [ a . tagName ] || ( f += b . innerText ( ) ) : f += b . data } ) , /br>$/ . test ( f ) || ( f += "<br>" ) ) : f += a . data + "<br>" , ! a . nextSibling ( ) && /<br>$/ . test ( f ) && ( f = f . replace ( /<br>$/ , "" ) ) ; else if ( f += "element" == a . type ? dtd . $empty [ a . tagName ] ? "" : a . innerText ( ) : a . data , ! /br\/?\s*>$/ . test ( f ) ) { if ( ! a . nextSibling ( ) ) return ; f += "<br>" } } ) } c . execCommand ( "inserthtml" , '<pre id="coder"class="brush:' + b + ';toolbar:false">' + f + "</pre>" , ! 0 ) , e = c . document . getElementById ( "coder" ) , domUtils . removeAttributes ( e , "id" ) ; var i = e . previousSibling ; i && ( 3 == i . nodeType && 1 == i . nodeValue . length && browser . ie && 6 == browser . version || domUtils . isEmptyBlock ( i ) ) && domUtils . remove ( i ) ; var d = c . selection . getRange ( ) ; domUtils . isEmptyBlock ( e ) ? d . setStart ( e , 0 ) . setCursor ( ! 1 , ! 0 ) : d . selectNodeContents ( e ) . select ( ) } } , queryCommandValue : function ( ) { var a = this . selection . getStartElementPath ( ) , b = "" ; return utils . each ( a , function ( a ) { if ( "PRE" == a . nodeName ) { var c = a . className . match ( /brush:([^;]+)/ ) ; return b = c && c [ 1 ] ? c [ 1 ] : "" , ! 1 } } ) , b } } , a . addInputRule ( function ( a ) { utils . each ( a . getNodesByTagName ( "pre" ) , function ( a ) { var b = a . getNodesByTagName ( "br" ) ; if ( b . length ) return void ( browser . ie && browser . ie11below && browser . version > 8 && utils . each ( b , function ( a ) { var b = UE . uNode . createText ( "\n" ) ; a . parentNode . insertBefore ( b , a ) , a . parentNode . removeChild ( a ) } ) ) ; if ( ! ( browser . ie && browser . ie11below && browser . version > 8 ) ) { var c = a . innerText ( ) . split ( /\n/ ) ; a . innerHTML ( "" ) , utils . each ( c , function ( b ) { b . length && a . appendChild ( UE . uNode . createText ( b ) ) , a . appendChild ( UE . uNode . createElement ( "br" ) ) } ) } } ) } ) , a . addOutputRule ( function ( a ) { utils . each ( a . getNodesByTagName ( "pre" ) , function ( a ) { var b = "" ; utils . each ( a . children , function ( a ) { b += "text" == a . type ? a . data . replace ( /[ ]/g , " " ) . replace ( /\n$/ , "" ) : "br" == a . tagName ? "\n" : dtd . $empty [ a . tagName ] ? a . innerText ( ) : "" } ) , a . innerText ( b . replace ( /( |\n)+$/ , "" ) ) } ) } ) , a . notNeedCodeQuery = { help : 1 , undo : 1 , redo : 1 , source : 1 , print : 1 , searchreplace : 1 , fullscreen : 1 , preview : 1 , insertparagraph : 1 , elementpath : 1 , insertcode : 1 , inserthtml : 1 , selectall : 1 } ; a . queryCommandState ; a . queryCommandState = function ( a ) { var b = this ; return ! b . notNeedCodeQuery [ a . toLowerCase ( ) ] && b . selection && b . queryComm
var b = a . selection . getRange ( ) , c = domUtils . findParentByTagName ( b . startContainer , "pre" , ! 0 ) ; if ( c ) {
if ( a . fireEvent ( "saveScene" ) , b . collapsed || b . deleteContents ( ) , ! browser . ie || browser . ie9above ) {
var c , d = a . document . createElement ( "br" ) ; b . insertNode ( d ) . setStartAfter ( d ) . collapse ( ! 0 ) ;
var e = d . nextSibling ; e || browser . ie && ! ( browser . version > 10 ) ? b . setStartAfter ( d ) : b . insertNode ( d . cloneNode ( ! 1 ) ) , c = d . previousSibling ; for ( var f ; c ; ) if ( f = c , c = c . previousSibling , ! c || "BR" == c . nodeName ) { c = f ; break } if ( c ) { for ( var g = "" ; c && "BR" != c . nodeName && new RegExp ( "^[\\s" + domUtils . fillChar + "]*$" ) . test ( c . nodeValue ) ; ) g += c . nodeValue , c = c . nextSibling ; if ( "BR" != c . nodeName ) { var h = c . nodeValue . match ( new RegExp ( "^([\\s" + domUtils . fillChar + "]+)" ) ) ; h && h [ 1 ] && ( g += h [ 1 ] ) } g && ( g = a . document . createTextNode ( g ) , b . insertNode ( g ) . setStartAfter ( g ) ) } b . collapse ( ! 0 ) . select ( ! 0 )
} else if ( browser . version > 8 ) { var i = a . document . createTextNode ( "\n" ) , j = b . startContainer ; if ( 0 == b . startOffset ) { var k = j . previousSibling ; if ( k ) { b . insertNode ( i ) ; var l = a . document . createTextNode ( " " ) ; b . setStartAfter ( i ) . insertNode ( l ) . setStart ( l , 0 ) . collapse ( ! 0 ) . select ( ! 0 ) } } else { b . insertNode ( i ) . setStartAfter ( i ) ; var l = a . document . createTextNode ( " " ) ; j = b . startContainer . childNodes [ b . startOffset ] , j && ! /^\n/ . test ( j . nodeValue ) && b . setStartBefore ( i ) , b . insertNode ( l ) . setStart ( l , 0 ) . collapse ( ! 0 ) . select ( ! 0 ) } } else { var d = a . document . createElement ( "br" ) ; b . insertNode ( d ) , b . insertNode ( a . document . createTextNode ( domUtils . fillChar ) ) , b . setStartAfter ( d ) , c = d . previousSibling ; for ( var f ; c ; ) if ( f = c , c = c . previousSibling , ! c || "BR" == c . nodeName ) { c = f ; break } if ( c ) { for ( var g = "" ; c && "BR" != c . nodeName && new RegExp ( "^[ " + domUtils . fillChar + "]*$" ) . test ( c . nodeValue ) ; ) g += c . nodeValue , c = c . nextSibling ; if ( "BR" != c . nodeName ) { var h = c . nodeValue . match ( new RegExp ( "^([ " + domUtils . fillChar + "]+)" ) ) ; h && h [ 1 ] && ( g += h [ 1 ] ) } g = a . document . createTextNode ( g ) , b . insertNode ( g ) . setStartAfter ( g ) } b . collapse ( ! 0 ) . select ( ) } return a . fireEvent ( "saveScene" ) , ! 0
}
} ) , a . addListener ( "tabkeydown" , function ( b , c ) { var d = a . selection . getRange ( ) , e = domUtils . findParentByTagName ( d . startContainer , "pre" , ! 0 ) ; if ( e ) { if ( a . fireEvent ( "saveScene" ) , c . shiftKey ) ; else if ( d . collapsed ) { var f = a . document . createTextNode ( " " ) ; d . insertNode ( f ) . setStartAfter ( f ) . collapse ( ! 0 ) . select ( ! 0 ) } else { for ( var g = d . createBookmark ( ) , h = g . start . previousSibling ; h ; ) { if ( e . firstChild === h && ! domUtils . isBr ( h ) ) { e . insertBefore ( a . document . createTextNode ( " " ) , h ) ; break } if ( domUtils . isBr ( h ) ) { e . insertBefore ( a . document . createTextNode ( " " ) , h . nextSibling ) ; break } h = h . previousSibling } var i = g . end ; for ( h = g . start . nextSibling , e . firstChild === g . start && e . insertBefore ( a . document . createTextNode ( " " ) , h . nextSibling ) ; h && h !== i ; ) { if ( domUtils . isBr ( h ) && h . nextSibling ) { if ( h . nextSibling === i ) break ; e . insertBefore ( a . document . createTextNode ( " " ) , h . nextSibling ) } h = h . nextSibling } d . moveToBookmark ( g ) . select ( ) } return a . fireEvent ( "saveScene" ) , ! 0 } } ) , a . addListener ( "beforeinserthtml" , function ( a , b ) { var c = this , d = c . selection . getRange ( ) , e = domUtils . findParentByTagName ( d . startContainer , "pre" , ! 0 ) ; if ( e ) { d . collapsed || d . deleteContents ( ) ; var f = "" ; if ( browser . ie && browser . version > 8 ) { utils . each ( UE . filterNode ( UE . htmlparser ( b ) , c . options . filterTxtRules ) . children , function ( a ) { "element" == a . type ? "br" == a . tagName ? f += "\n" : dtd . $empty [ a . tagName ] || ( utils . each ( a . children , function ( b ) { "element" == b . type ? "br" == b . tagName ? f += "\n" : dtd . $empty [ a . tagName ] || ( f += b . innerText ( ) ) : f += b . data } ) , /\n$/ . test ( f ) || ( f += "\n" ) ) : f += a . data + "\n" , ! a . nextSibling ( ) && /\n$/ . test ( f ) && ( f = f . replace ( /\n$/ , "" ) ) } ) ; var g = c . document . createTextNode ( utils . html ( f . replace ( / /g , " " ) ) ) ; d . insertNode ( g ) . selectNode ( g ) . select ( ) } else { var h = c . document . createDocumentFragment ( ) ; utils . each ( UE . filterNode ( UE . htmlparser ( b ) , c . options . filterTxtRules ) . children , function ( a ) { "element" == a . type ? "br" == a . tagName ? h . appendChild ( c . document . createElement ( "br" ) ) : dtd . $empty [ a . tagName ] || ( utils . each ( a . children , function ( b ) { "element" == b . type ? "br" == b . tagName ? h . appendChild ( c . document . createElement ( "br" ) ) : dtd . $empty [ a . tagName ] || h . appendChild ( c . document . createTextNode ( utils . html ( b . innerText ( ) . replace ( / /g , " " ) ) ) ) : h . appendChild ( c . document . createTextNode ( utils . html ( b . data . replace ( / /g , " " ) ) ) ) } ) , "BR" != h . lastChild . nodeName && h . appendChild ( c . document . createElement ( "br" ) ) ) : h . appendChild ( c . document . createTextNode ( utils . html ( a . data . replace ( / /g , " " ) ) ) ) , a . nextSibling ( ) || "BR" != h . lastChild . nodeName || h . removeChild ( h . lastChild ) } ) , d . insertNode ( h ) . select ( ) } return ! 0 } } ) , a . addListener ( "keydown" , function ( a , b ) { var c = this , d = b . keyCode || b . which ; if ( 40 == d ) { var e , f = c . selection . getRange ( ) , g = f . startContainer ; if ( f . collapsed && ( e = domUtils . findParentByTagName ( f . startContainer , "pre" , ! 0 ) ) && ! e . nextSibling ) { for ( var h = e . lastChild ; h && "BR" == h . nodeName ; ) h = h . previousSibling ; ( h === g || f . startContainer === e && f . startOffset == e . childNodes . length ) && ( c . execCommand ( "insertparagraph" ) , domUtils . preventDefault ( b ) ) } } } ) , a . addListener ( "delkeydown" , function ( b , c ) { var d = this . selection . getRange ( ) ; d . txtToElmBoundary ( ! 0 ) ; var e = d . startContainer ; if ( domUtils . isTagNode ( e , "pre" ) && d . collapsed && domUtils . isStartInblock ( d ) ) { var f = a . document . createElement ( "p" ) ; return domUtils . fillNode ( a . document , f ) , e . parentNode . insertBefore ( f , e ) , domUtils . remove ( e ) , d . setStart ( f , 0 ) . setCursor ( ! 1 , ! 0 ) , domUtils . preventDefault ( c ) , ! 0 } } )
} , UE . commands . cleardoc = { execCommand : function ( a ) { var b = this , c = b . options . enterTag , d = b . selection . getRange ( ) ; "br" == c ? ( b . body . innerHTML = "<br/>" , d . setStart ( b . body , 0 ) . setCursor ( ) ) : ( b . body . innerHTML = "<p>" + ( ie ? "" : "<br/>" ) + "</p>" , d . setStart ( b . body . firstChild , 0 ) . setCursor ( ! 1 , ! 0 ) ) , setTimeout ( function ( ) { b . fireEvent ( "clearDoc" ) } , 0 ) } } , UE . plugin . register ( "anchor" , function ( ) { return { bindEvents : { ready : function ( ) { utils . cssRule ( "anchor" , ".anchorclass{background: url('" + this . options . themePath + this . options . theme + "/images/anchor.gif') no-repeat scroll left center transparent;cursor: auto;display: inline-block;height: 16px;width: 15px;}" , this . document ) } } , outputRule : function ( a ) { utils . each ( a . getNodesByTagName ( "img" ) , function ( a ) { var b ; ( b = a . getAttr ( "anchorname" ) ) && ( a . tagName = "a" , a . setAttr ( { anchorname : "" , name : b , "class" : "" } ) ) } ) } , inputRule : function ( a ) { utils . each ( a . getNodesByTagName ( "a" ) , function ( a ) { var b ; ( b = a . getAttr ( "name" ) ) && ! a . getAttr ( "href" ) && ( a . tagName = "img" , a . setAttr ( { anchorname : a . getAttr ( "name" ) , "class" : "anchorclass" } ) , a . setAttr ( "name" ) ) } ) } , commands : { anchor : { execCommand : function ( a , b ) { var c = this . selection . getRange ( ) , d = c . getClosedNode ( ) ; if ( d && d . getAttribute ( "anchorname" ) ) b ? d . setAttribute ( "anchorname" , b ) : ( c . setStartBefore ( d ) . setCursor ( ) , domUtils . remove ( d ) ) ; else if ( b ) { var e = this . document . createElement ( "img" ) ; c . collapse ( ! 0 ) , domUtils . setAttributes ( e , { anchorname : b , "class" : "anchorclass" } ) , c . insertNode ( e ) . setStartAfter ( e ) . setCursor ( ! 1 , ! 0 ) } } } } } } ) , UE . plugins . wordcount = function ( ) { var a = this ; a . setOpt ( "wordCount" , ! 0 ) , a . addListener ( "contentchange" , function ( ) { a . fireEvent ( "wordcount" ) } ) ; var b ; a . addListener ( "ready" , function ( ) { var a = this ; domUtils . on ( a . body , "keyup" , function ( c ) { var d = c . keyCode || c . which , e = { 16 : 1 , 18 : 1 , 20 : 1 , 37 : 1 , 38 : 1 , 39 : 1 , 40 : 1 } ; d in e || ( clearTimeout ( b ) , b = setTimeout ( function ( ) { a . fireEvent ( "wordcount" ) } , 200 ) ) } ) } ) } , UE . plugins . pagebreak = function ( ) { function a ( a ) { if ( domUtils . isEmptyBlock ( a ) ) { for ( var b , d = a . firstChild ; d && 1 == d . nodeType && domUtils . isEmptyBlock ( d ) ; ) b = d , d = d . firstChild ; ! b && ( b = a ) , domUtils . fillNode ( c . document , b ) } } function b ( a ) { return a && 1 == a . nodeType && "HR" == a . tagName && "pagebreak" == a . className } var c = this , d = [ "td" ] ; c . setOpt ( "pageBreakTag" , "_ueditor_page_break_tag_" ) , c . ready ( function ( ) { utils . cssRule ( "pagebreak" , ".pagebreak{display:block;clear:both !important;cursor:default !important;width: 100% !important;margin:0;}" , c . document ) } ) , c . addInputRule ( function ( a ) { a . traversal ( function ( a ) { if ( "text" == a . type && a . data == c . options . pageBreakTag ) { var b = UE . uNode . createElement ( '<hr class="pagebreak" noshade="noshade" size="5" style="-webkit-user-select: none;">' ) ; a . parentNode . insertBefore ( b , a ) , a . parentNode . removeChild ( a ) } } ) } ) , c . addOutputRule ( function ( a ) { utils . each ( a . getNodesByTagName ( "hr" ) , function ( a ) { if ( "pagebreak" == a . getAttr ( "class" ) ) { var b = UE . uNode . createText ( c . options . pageBreakTag ) ; a . parentNode . insertBefore ( b , a ) , a . parentNode . removeChild ( a ) } } ) } ) , c . commands . pagebreak = { execCommand : function ( ) { var e = c . selection . getRange ( ) , f = c . document . createElement ( "hr" ) ; domUtils . setAttributes ( f , { "class" : "pagebreak" , noshade : "noshade" , size : "5" } ) , domUtils . unSelectable ( f ) ; var g , h = domUtils . findParentByTagName ( e . startContainer , d , ! 0 ) , i = [ ] ; if ( h ) switch ( h . tagName ) { case "TD" : if ( g = h . parentNode , g . previousSibling ) g . parentNode . insertBefore ( f , g ) , i = domUtils . findParents ( f ) ; else { var j = domUtils . findParentByTagName ( g , "table" ) ; j . parentNode . insertBefore ( f , j ) , i = domUtils . findParents ( f , ! 0 ) } g = i [ 1 ] , f !== g && domUtils . breakParent ( f , g ) , c . fireEvent ( "afteradjusttable" , c . document ) } else { if ( ! e . collapsed ) { e . deleteContents ( ) ; for ( var k = e . startContainer ; ! domUtils . isBody ( k ) && domUtils . isBlockElm ( k ) && domUtils . isEmptyNode ( k ) ; ) e . setStartBefore ( k ) . collapse ( ! 0 ) , domUtils . remove ( k ) , k = e . startContainer
function a ( a ) { var b = [ ] ; for ( var c in a ) b . push ( c ) ; return b } function b ( a ) { var b = a . className ; return domUtils . hasClass ( a , /custom_/ ) ? b . match ( /custom_(\w+)/ ) [ 1 ] : domUtils . getStyle ( a , "list-style-type" ) } function c ( a , c ) { utils . each ( domUtils . getElementsByTagName ( a , "ol ul" ) , function ( f ) { if ( domUtils . inDoc ( f , a ) ) { var g = f . parentNode ; if ( g . tagName == f . tagName ) { var h = b ( f ) || ( "OL" == f . tagName ? "decimal" : "disc" ) , i = b ( g ) || ( "OL" == g . tagName ? "decimal" : "disc" ) ; if ( h == i ) { var l = utils . indexOf ( k [ f . tagName ] , h ) ; l = l + 1 == k [ f . tagName ] . length ? 0 : l + 1 , e ( f , k [ f . tagName ] [ l ] ) } } var m = 0 , n = 2 ; domUtils . hasClass ( f , /custom_/ ) ? /[ou]l/i . test ( g . tagName ) && domUtils . hasClass ( g , /custom_/ ) || ( n = 1 ) : /[ou]l/i . test ( g . tagName ) && domUtils . hasClass ( g , /custom_/ ) && ( n = 3 ) ; var o = domUtils . getStyle ( f , "list-style-type" ) ; o && ( f . style . cssText = "list-style-type:" + o ) , f . className = utils . trim ( f . className . replace ( /list-paddingleft-\w+/ , "" ) ) + " list-paddingleft-" + n , utils . each ( domUtils . getElementsByTagName ( f , "li" ) , function ( a ) { if ( a . style . cssText && ( a . style . cssText = "" ) , ! a . firstChild ) return void domUtils . remove ( a ) ; if ( a . parentNode === f ) { if ( m ++ , domUtils . hasClass ( f , /custom_/ ) ) { var c = 1 , d = b ( f ) ; if ( "OL" == f . tagName ) { if ( d ) switch ( d ) { case "cn" : case "cn1" : case "cn2" : m > 10 && ( m % 10 == 0 || m > 10 && m < 20 ) ? c = 2 : m > 20 && ( c = 3 ) ; break ; case "num2" : m > 9 && ( c = 2 ) } a . className = "list-" + j [ d ] + m + " list-" + d + "-paddingleft-" + c } else a . className = "list-" + j [ d ] + " list-" + d + "-paddingleft" } else a . className = a . className . replace ( /list-[\w\-]+/gi , "" ) ; var e = a . getAttribute ( "class" ) ; null === e || e . replace ( /\s/g , "" ) || domUtils . removeAttributes ( a , "class" ) } } ) , ! c && d ( f , f . tagName . toLowerCase ( ) , b ( f ) || domUtils . getStyle ( f , "list-style-type" ) , ! 0 ) } } ) } function d ( a , d , e , f ) { var g = a . nextSibling ; g && 1 == g . nodeType && g . tagName . toLowerCase ( ) == d && ( b ( g ) || domUtils . getStyle ( g , "list-style-type" ) || ( "ol" == d ? "decimal" : "disc" ) ) == e && ( domUtils . moveChild ( g , a ) , 0 == g . childNodes . length && domUtils . remove ( g ) ) , g && domUtils . isFillChar ( g ) && domUtils . remove ( g ) ; var h = a . previousSibling ; h && 1 == h . nodeType && h . tagName . toLowerCase ( ) == d && ( b ( h ) || domUtils . getStyle ( h , "list-style-type" ) || ( "ol" == d ? "decimal" : "disc" ) ) == e && domUtils . moveChild ( a , h ) , h && domUtils . isFillChar ( h ) && domUtils . remove ( h ) , ! f && domUtils . isEmptyBlock ( a ) && domUtils . remove ( a ) , b ( a ) && c ( a . ownerDocument , ! 0 ) } function e ( a , b ) { j [ b ] && ( a . className = "custom_" + b ) ; try { domUtils . setStyle ( a , "list-style-type" , b ) } catch ( c ) { } } function f ( a ) { var b = a . previousSibling ; b && domUtils . isEmptyBlock ( b ) && domUtils . remove ( b ) , b = a . nextSibling , b && domUtils . isEmptyBlock ( b ) && domUtils . remove ( b ) } function g ( a ) { for ( ; a && ! domUtils . isBody ( a ) ; ) { if ( "TABLE" == a . nodeName ) return null ; if ( "LI" == a . nodeName ) return a ; a = a . parentNode } } var h = this , i = { TD : 1 , PRE : 1 , BLOCKQUOTE : 1 } , j = { cn : "cn-1-" , cn1 : "cn-2-" , cn2 : "cn-3-" , num : "num-1-" , num1 : "num-2-" , num2 : "num-3-" , dash : "dash" , dot : "dot" } ; h . setOpt ( { autoTransWordToList : ! 1 , insertorderedlist : { num : "" , num1 : "" , num2 : "" , cn : "" , cn1 : "" , cn2 : "" , decimal : "" , "lower-alpha" : "" , "lower-roman" : "" , "upper-alpha" : "" , "upper-roman" : "" } , insertunorderedlist : { circle : "" , disc : "" , square : "" , dash : "" , dot : "" } , listDefaultPaddingLeft : "30" , listiconpath : "http://bs.baidu.com/listicon/" , maxListLevel : - 1 , disablePInList : ! 1 } ) ; var k = { OL : a ( h . options . insertorderedlist ) , UL : a ( h . options . insertunorderedlist ) } , l = h . options . listiconpath ; for ( var m in j ) h . options . insertorderedlist . hasOwnProperty ( m ) || h . options . insertunorderedlist . hasOwnProperty ( m ) || delete j [ m ] ; h . ready ( function ( ) { var a = [ ] ; for ( var b in j ) { if ( "dash" == b || "dot" == b ) a . push ( "li.list-" + j [ b ] + "{background-image:url(" + l + j [ b ] + ".gif)}" ) , a . push ( "ul.custom_" + b + "{list-style:none;}ul.custom_" + b + " li{background-position:0 3px;background-repeat:no-repeat}" ) ; els
function c ( ) { b . preventDefault ? b . preventDefault ( ) : b . returnValue = ! 1 , h . fireEvent ( "contentchange" ) , h . undoManger && h . undoManger . save ( ) } function d ( a , b ) { for ( ; a && ! domUtils . isBody ( a ) ; ) { if ( b ( a ) ) return null ; if ( 1 == a . nodeType && /[ou]l/i . test ( a . tagName ) ) return a ; a = a . parentNode } return null } var e = b . keyCode || b . which ; if ( 13 == e && ! b . shiftKey ) {
var g = h . selection . getRange ( ) , i = domUtils . findParent ( g . startContainer , function ( a ) { return domUtils . isBlockElm ( a ) } , ! 0 ) , j = domUtils . findParentByTagName ( g . startContainer , "li" , ! 0 ) ; if ( i && "PRE" != i . tagName && ! j ) { var k = i . innerHTML . replace ( new RegExp ( domUtils . fillChar , "g" ) , "" ) ; /^\s*1\s*\.[^\d]/ . test ( k ) && ( i . innerHTML = k . replace ( /^\s*1\s*\./ , "" ) , g . setStartAtLast ( i ) . collapse ( ! 0 ) . select ( ) , h . _ _hasEnterExecCommand = ! 0 , h . execCommand ( "insertorderedlist" ) , h . _ _hasEnterExecCommand = ! 1 ) } var l = h . selection . getRange ( ) , m = d ( l . startContainer , function ( a ) { return "TABLE" == a . tagName } ) , n = l . collapsed ? m : d ( l . endContainer , function ( a ) { return "TABLE" == a . tagName } ) ; if ( m && n && m === n ) {
if ( ! l . collapsed ) {
if ( m = domUtils . findParentByTagName ( l . startContainer , "li" , ! 0 ) , n = domUtils . findParentByTagName ( l . endContainer , "li" , ! 0 ) , ! m || ! n || m !== n ) { var o = l . cloneRange ( ) , p = o . collapse ( ! 1 ) . createBookmark ( ) ; l . deleteContents ( ) , o . moveToBookmark ( p ) ; var j = domUtils . findParentByTagName ( o . startContainer , "li" , ! 0 ) ; return f ( j ) , o . select ( ) , void c ( ) } if ( l . deleteContents ( ) , j = domUtils . findParentByTagName ( l . startContainer , "li" , ! 0 ) , j && domUtils . isEmptyBlock ( j ) ) return v = j . previousSibling , next = j . nextSibling , s = h . document . createElement ( "p" ) , domUtils . fillNode ( h . document , s ) , q = j . parentNode , v && next ? ( l . setStart ( next , 0 ) . collapse ( ! 0 ) . select ( ! 0 ) , domUtils . remove ( j ) ) : ( ( v || next ) && v ? j . parentNode . parentNode . insertBefore ( s , q . nextSibling ) : q . parentNode . insertBefore ( s , q ) , domUtils . remove ( j ) , q . firstChild || domUtils . remove ( q ) ,
l . setStart ( s , 0 ) . setCursor ( ) ) , void c ( )
} if ( j = domUtils . findParentByTagName ( l . startContainer , "li" , ! 0 ) ) { if ( domUtils . isEmptyBlock ( j ) ) { p = l . createBookmark ( ) ; var q = j . parentNode ; if ( j !== q . lastChild ? ( domUtils . breakParent ( j , q ) , f ( j ) ) : ( q . parentNode . insertBefore ( j , q . nextSibling ) , domUtils . isEmptyNode ( q ) && domUtils . remove ( q ) ) , ! dtd . $list [ j . parentNode . tagName ] ) if ( domUtils . isBlockElm ( j . firstChild ) ) domUtils . remove ( j , ! 0 ) ; else { for ( s = h . document . createElement ( "p" ) , j . parentNode . insertBefore ( s , j ) ; j . firstChild ; ) s . appendChild ( j . firstChild ) ; domUtils . remove ( j ) } l . moveToBookmark ( p ) . select ( ) } else { var r = j . firstChild ; if ( ! r || ! domUtils . isBlockElm ( r ) ) { var s = h . document . createElement ( "p" ) ; for ( ! j . firstChild && domUtils . fillNode ( h . document , s ) ; j . firstChild ; ) s . appendChild ( j . firstChild ) ; j . appendChild ( s ) , r = s } var t = h . document . createElement ( "span" ) ; l . insertNode ( t ) , domUtils . breakParent ( t , j ) ; var u = t . nextSibling ; r = u . firstChild , r || ( s = h . document . createElement ( "p" ) , domUtils . fillNode ( h . document , s ) , u . appendChild ( s ) , r = s ) , domUtils . isEmptyNode ( r ) && ( r . innerHTML = "" , domUtils . fillNode ( h . document , r ) ) , l . setStart ( r , 0 ) . collapse ( ! 0 ) . shrinkBoundary ( ) . select ( ) , domUtils . remove ( t ) ; var v = u . previousSibling ; v && domUtils . isEmptyBlock ( v ) && ( v . innerHTML = "<p></p>" , domUtils . fillNode ( h . document , v . firstChild ) ) } c ( ) }
}
} if ( 8 == e && ( l = h . selection . getRange ( ) , l . collapsed && domUtils . isStartInblock ( l ) && ( o = l . cloneRange ( ) . trimBoundary ( ) , j = domUtils . findParentByTagName ( l . startContainer , "li" , ! 0 ) , j && domUtils . isStartInblock ( o ) ) ) ) { if ( m = domUtils . findParentByTagName ( l . startContainer , "p" , ! 0 ) , m && m !== j . firstChild ) { var q = domUtils . findParentByTagName ( m , [ "ol" , "ul" ] ) ; return domUtils . breakParent ( m , q ) , f ( m ) , h . fireEvent ( "contentchange" ) , l . setStart ( m , 0 ) . setCursor ( ! 1 , ! 0 ) , h . fireEvent ( "saveScene" ) , void domUtils . preventDefault ( b ) } if ( j && ( v = j . previousSibling ) ) { if ( 46 == e && j . childNodes . length ) return ; if ( dtd . $list [ v . tagName ] && ( v = v . lastChild ) , h . undoManger && h . undoManger . save ( ) , r = j . firstChild , domUtils . isBlockElm ( r ) ) if ( domUtils . isEmptyNode ( r ) ) for ( v . appendChild ( r ) , l . setStart ( r , 0 ) . setCursor ( ! 1 , ! 0 ) ; j . firstChild ; ) v . appendChild ( j . firstChild ) ; else t = h . document . createElement ( "span" ) , l . insertNode ( t ) , domUtils . isEmptyBlock ( v ) && ( v . innerHTML = "" ) , domUtils . moveChild ( j , v ) , l . setStartBefore ( t ) . collapse ( ! 0 ) . select ( ! 0 ) , domUtils . remove ( t ) ; else if ( domUtils . isEmptyNode ( j ) ) { var s = h . document . createElement ( "p" ) ; v . appendChild ( s ) , l . setStart ( s , 0 ) . setCursor ( ) } else for ( l . setEnd ( v , v . childNodes . length ) . collapse ( ) . select ( ! 0 ) ; j . firstChild ; ) v . appendChild ( j . firstChild ) ; return domUtils . remove ( j ) , h . fireEvent ( "contentchange" ) , h . fireEvent ( "saveScene" ) , void domUtils . preventDefault ( b ) } if ( j && ! j . previousSibling ) { var q = j . parentNode , p = l . createBookmark ( ) ; if ( domUtils . isTagNode ( q . parentNode , "ol ul" ) ) q . parentNode . insertBefore ( j , q ) , domUtils . isEmptyNode ( q ) && domUtils . remove ( q ) ; else { for ( ; j . firstChild ; ) q . parentNode . insertBefore ( j . firstChild , q ) ; domUtils . remove ( j ) , domUtils . isEmptyNode ( q ) && domUtils . remove ( q ) } return l . moveToBookmark ( p ) . setCursor ( ! 1 , ! 0 ) , h . fireEvent ( "contentchange" ) , h . fireEvent ( "saveScene" ) , void domUtils . preventDefault ( b ) } }
} ) , h . addListener ( "keyup" , function ( a , c ) { var e = c . keyCode || c . which ; if ( 8 == e ) { var f , g = h . selection . getRange ( ) ; ( f = domUtils . findParentByTagName ( g . startContainer , [ "ol" , "ul" ] , ! 0 ) ) && d ( f , f . tagName . toLowerCase ( ) , b ( f ) || domUtils . getComputedStyle ( f , "list-style-type" ) , ! 0 ) } } ) , h . addListener ( "tabkeydown" , function ( ) { function a ( a ) { if ( h . options . maxListLevel != - 1 ) { for ( var b = a . parentNode , c = 0 ; /[ou]l/i . test ( b . tagName ) ; ) c ++ , b = b . parentNode ; if ( c >= h . options . maxListLevel ) return ! 0 } } var c = h . selection . getRange ( ) , f = domUtils . findParentByTagName ( c . startContainer , "li" , ! 0 ) ; if ( f ) { var g ; if ( ! c . collapsed ) { h . fireEvent ( "saveScene" ) , g = c . createBookmark ( ) ; for ( var i , j , l = 0 , m = domUtils . findParents ( f ) ; j = m [ l ++ ] ; ) if ( domUtils . isTagNode ( j , "ol ul" ) ) { i = j ; break } var n = f ; if ( g . end ) for ( ; n && ! ( domUtils . getPosition ( n , g . end ) & domUtils . POSITION _FOLLOWING ) ; ) if ( a ( n ) ) n = domUtils . getNextDomNode ( n , ! 1 , null , function ( a ) { return a !== i } ) ; else { var o = n . parentNode , p = h . document . createElement ( o . tagName ) , q = utils . indexOf ( k [ p . tagName ] , b ( o ) || domUtils . getComputedStyle ( o , "list-style-type" ) ) , r = q + 1 == k [ p . tagName ] . length ? 0 : q + 1 , s = k [ p . tagName ] [ r ] ; for ( e ( p , s ) , o . insertBefore ( p , n ) ; n && ! ( domUtils . getPosition ( n , g . end ) & domUtils . POSITION _FOLLOWING ) ; ) { if ( f = n . nextSibling , p . appendChild ( n ) , ! f || domUtils . isTagNode ( f , "ol ul" ) ) { if ( f ) for ( ; ( f = f . firstChild ) && "LI" != f . tagName ; ) ; else f = domUtils . getNextDomNode ( n , ! 1 , null , function ( a ) { return a !== i } ) ; break } n = f } d ( p , p . tagName . toLowerCase ( ) , s ) , n = f } return h . fireEvent ( "contentchange" ) , c . moveToBookmark ( g ) . select ( ) , ! 0 } if ( a ( f ) ) return ! 0 ; var o = f . parentNode , p = h . document . createElement ( o . tagName ) , q = utils . indexOf ( k [ p . tagName ] , b ( o ) || domUtils . getComputedStyle ( o , "list-style-type" ) ) ; q = q + 1 == k [ p . tagName ] . length ? 0 : q + 1 ; var s = k [ p . tagName ] [ q ] ; if ( e ( p , s ) , domUtils . isStartInblock ( c ) ) return h . fireEvent ( "saveScene" ) , g = c . createBookmark ( ) , o . insertBefore ( p , f ) , p . appendChild ( f ) , d ( p , p . tagName . toLowerCase ( ) , s ) , h . fireEvent ( "contentchange" ) , c . moveToBookmark ( g ) . select ( ! 0 ) , ! 0 } } ) , h . commands . insertorderedlist = h . commands . insertunorderedlist = { execCommand : function ( a , c ) { c || ( c = "insertorderedlist" == a . toLowerCase ( ) ? "decimal" : "disc" ) ; var f = this , h = this . selection . getRange ( ) , j = function ( a ) { return 1 == a . nodeType ? "br" != a . tagName . toLowerCase ( ) : ! domUtils . isWhitespace ( a ) } , k = "insertorderedlist" == a . toLowerCase ( ) ? "ol" : "ul" , l = f . document . createDocumentFragment ( ) ; h . adjustmentBoundary ( ) . shrinkBoundary ( ) ; var m , n , o , p , q = h . createBookmark ( ! 0 ) , r = g ( f . document . getElementById ( q . start ) ) , s = 0 , t = g ( f . document . getElementById ( q . end ) ) , u = 0 ; if ( r || t ) { if ( r && ( m = r . parentNode ) , q . end || ( t = r ) , t && ( n = t . parentNode ) , m === n ) { for ( ; r !== t ; ) { if ( p = r , r = r . nextSibling , ! domUtils . isBlockElm ( p . firstChild ) ) { for ( var v = f . document . createElement ( "p" ) ; p . firstChild ; ) v . appendChild ( p . firstChild ) ; p . appendChild ( v ) } l . appendChild ( p ) } if ( p = f . document . createElement ( "span" ) , m . insertBefore ( p , t ) , ! domUtils . isBlockElm ( t . firstChild ) ) { for ( v = f . document . createElement ( "p" ) ; t . firstChild ; ) v . appendChild ( t . firstChild ) ; t . appendChild ( v ) } l . appendChild ( t ) , domUtils . breakParent ( p , m ) , domUtils . isEmptyNode ( p . previousSibling ) && domUtils . remove ( p . previousSibling ) , domUtils . isEmptyNode ( p . nextSibling ) && domUtils . remove ( p . nextSibling ) ; var w = b ( m ) || domUtils . getComputedStyle ( m , "list-style-type" ) || ( "insertorderedlist" == a . toLowerCase ( ) ? "decimal" : "disc" ) ; if ( m . tagName . toLowerCase ( ) == k && w == c ) { for ( var x , y = 0 , z = f . document . createDocumentFragment ( ) ; x = l . firstChild ; ) if ( domUtils . isTagNode ( x , "ol ul" ) ) z . appendChild ( x ) ; else for ( ; x . firstChild ; ) z . appendChild ( x . firstChild ) , domUtils . remove ( x ) ; p . parentNode . insertBefore ( z , p ) } else o = f . document . createElement ( k ) , e ( o , c ) , o . appendChild ( l ) , p . parentNode . insertBefore ( o , p ) ; return domUtils . remove ( p ) , o && d ( o , k , c ) , void h . moveToBookmark ( q ) . select ( ) } if ( r ) { fo
} , function ( ) { var a = { textarea : function ( a , b ) { var c = b . ownerDocument . createElement ( "textarea" ) ; return c . style . cssText = "position:absolute;resize:none;width:100%;height:100%;border:0;padding:0;margin:0;overflow-y:auto;" , browser . ie && browser . version < 8 && ( c . style . width = b . offsetWidth + "px" , c . style . height = b . offsetHeight + "px" , b . onresize = function ( ) { c . style . width = b . offsetWidth + "px" , c . style . height = b . offsetHeight + "px" } ) , b . appendChild ( c ) , { setContent : function ( a ) { c . value = a } , getContent : function ( ) { return c . value } , select : function ( ) { var a ; browser . ie ? ( a = c . createTextRange ( ) , a . collapse ( ! 0 ) , a . select ( ) ) : ( c . setSelectionRange ( 0 , 0 ) , c . focus ( ) ) } , dispose : function ( ) { b . removeChild ( c ) , b . onresize = null , c = null , b = null } } } , codemirror : function ( a , b ) { var c = window . CodeMirror ( b , { mode : "text/html" , tabMode : "indent" , lineNumbers : ! 0 , lineWrapping : ! 0 } ) , d = c . getWrapperElement ( ) ; return d . style . cssText = 'position:absolute;left:0;top:0;width:100%;height:100%;font-family:consolas,"Courier new",monospace;font-size:13px;' , c . getScrollerElement ( ) . style . cssText = "position:absolute;left:0;top:0;width:100%;height:100%;" , c . refresh ( ) , { getCodeMirror : function ( ) { return c } , setContent : function ( a ) { c . setValue ( a ) } , getContent : function ( ) { return c . getValue ( ) } , select : function ( ) { c . focus ( ) } , dispose : function ( ) { b . removeChild ( d ) , d = null , c = null } } } } ; UE . plugins . source = function ( ) { function b ( b ) { return a [ "codemirror" == f . sourceEditor && window . CodeMirror ? "codemirror" : "textarea" ] ( e , b ) } var c , d , e = this , f = this . options , g = ! 1 ; f . sourceEditor = browser . ie ? "textarea" : f . sourceEditor || "codemirror" , e . setOpt ( { sourceEditorFirst : ! 1 } ) ; var h , i , j ; e . commands . source = { execCommand : function ( ) { if ( g = ! g ) { j = e . selection . getRange ( ) . createAddress ( ! 1 , ! 0 ) , e . undoManger && e . undoManger . save ( ! 0 ) , browser . gecko && ( e . body . contentEditable = ! 1 ) , h = e . iframe . style . cssText , e . iframe . style . cssText += "position:absolute;left:-32768px;top:-32768px;" , e . fireEvent ( "beforegetcontent" ) ; var a = UE . htmlparser ( e . body . innerHTML ) ; e . filterOutputRule ( a ) , a . traversal ( function ( a ) { if ( "element" == a . type ) switch ( a . tagName ) { case "td" : case "th" : case "caption" : a . children && 1 == a . children . length && "br" == a . firstChild ( ) . tagName && a . removeChild ( a . firstChild ( ) ) ; break ; case "pre" : a . innerText ( a . innerText ( ) . replace ( / /g , " " ) ) } } ) , e . fireEvent ( "aftergetcontent" ) ; var f = a . toHtml ( ! 0 ) ; c = b ( e . iframe . parentNode ) , c . setContent ( f ) , d = e . setContent , e . setContent = function ( a ) { var b = UE . htmlparser ( a ) ; e . filterInputRule ( b ) , a = b . toHtml ( ) , c . setContent ( a ) } , setTimeout ( function ( ) { c . select ( ) , e . addListener ( "fullscreenchanged" , function ( ) { try { c . getCodeMirror ( ) . refresh ( ) } catch ( a ) { } } ) } ) , i = e . getContent , e . getContent = function ( ) { return c . getContent ( ) || "<p>" + ( browser . ie ? "" : "<br/>" ) + "</p>" } } else { e . iframe . style . cssText = h ; var k = c . getContent ( ) || "<p>" + ( browser . ie ? "" : "<br/>" ) + "</p>" ; k = k . replace ( new RegExp ( "[\\r\\t\\n ]*</?(\\w+)\\s*(?:[^>]*)>" , "g" ) , function ( a , b ) { return b && ! dtd . $inlineWithA [ b . toLowerCase ( ) ] ? a . replace ( /(^[\n\r\t ]*)|([\n\r\t ]*$)/g , "" ) : a . replace ( /(^[\n\r\t]*)|([\n\r\t]*$)/g , "" ) } ) , e . setContent = d , e . setContent ( k ) , c . dispose ( ) , c = null , e . getContent = i ; var l = e . body . firstChild ; if ( l || ( e . body . innerHTML = "<p>" + ( browser . ie ? "" : "<br/>" ) + "</p>" , l = e . body . firstChild ) , e . undoManger && e . undoManger . save ( ! 0 ) , browser . gecko ) { var m = document . createElement ( "input" ) ; m . style . cssText = "position:absolute;left:0;top:-32768px" , document . body . appendChild ( m ) , e . body . contentEditable = ! 1 , setTimeout ( function ( ) { domUtils . setViewportOffset ( m , { left : - 32768 , top : 0 } ) , m . focus ( ) , setTimeout ( function ( ) { e . body . contentEditable = ! 0 , e . selection . getRange ( ) . moveToAddress ( j ) . select ( ! 0 ) , domUtils . remove ( m ) } ) } ) } else try { e . selection . getRange ( ) . moveToAddress ( j ) . select ( ! 0 ) } catch ( n ) { } } this . fireEvent ( "sourcemodechanged" , g ) } , queryCommandState : function ( ) { re
function a ( ) { var a = this ; clearTimeout ( e ) , f || ( ! a . queryCommandState || a . queryCommandState && 1 != a . queryCommandState ( "source" ) ) && ( e = setTimeout ( function ( ) { for ( var b = a . body . lastChild ; b && 1 != b . nodeType ; ) b = b . previousSibling ; b && 1 == b . nodeType && ( b . style . clear = "both" , d = Math . max ( domUtils . getXY ( b ) . y + b . offsetHeight + 25 , Math . max ( h . minFrameHeight , h . initialFrameHeight ) ) , d != g && ( d !== parseInt ( a . iframe . parentNode . style . height ) && ( a . iframe . parentNode . style . height = d + "px" ) , a . body . style . height = d + "px" , g = d ) , domUtils . removeStyle ( b , "clear" ) ) } , 50 ) ) } var b = this ; if ( b . autoHeightEnabled = b . options . autoHeightEnabled !== ! 1 , b . autoHeightEnabled ) {
var c , d , e , f , g = 0 , h = b . options ; b . addListener ( "fullscreenchanged" , function ( a , b ) { f = b } ) , b . addListener ( "destroy" , function ( ) { b . removeListener ( "contentchange afterinserthtml keyup mouseup" , a ) } ) , b . enableAutoHeight = function ( ) { var b = this ; if ( b . autoHeightEnabled ) { var d = b . document ; b . autoHeightEnabled = ! 0 , c = d . body . style . overflowY , d . body . style . overflowY = "hidden" , b . addListener ( "contentchange afterinserthtml keyup mouseup" , a ) , setTimeout ( function ( ) { a . call ( b ) } , browser . gecko ? 100 : 0 ) , b . fireEvent ( "autoheightchanged" , b . autoHeightEnabled ) } } , b . disableAutoHeight = function ( ) { b . body . style . overflowY = c || "" , b . removeListener ( "contentchange" , a ) , b . removeListener ( "keyup" , a ) , b . removeListener ( "mouseup" , a ) , b . autoHeightEnabled = ! 1 , b . fireEvent ( "autoheightchanged" , b . autoHeightEnabled ) } , b . on ( "setHeight" , function ( ) { b . disableAutoHeight ( ) } ) , b . addListener ( "ready" , function ( ) {
b . enableAutoHeight ( ) ; var c ; domUtils . on ( browser . ie ? b . body : b . document , browser . webkit ? "dragover" : "drop" , function ( ) {
clearTimeout ( c ) , c = setTimeout ( function ( ) { a . call ( b ) } , 100 )
} ) ; var d ; window . onscroll = function ( ) { null === d ? d = this . scrollY : 0 == this . scrollY && 0 != d && ( b . window . scrollTo ( 0 , 0 ) , d = null ) }
} )
}
} , UE . plugins . autofloat = function ( ) { function a ( ) { return UE . ui ? 1 : ( alert ( g . autofloatMsg ) , 0 ) } function b ( ) { var a = document . body . style ; a . backgroundImage = 'url("about:blank")' , a . backgroundAttachment = "fixed" } function c ( ) { var a = domUtils . getXY ( k ) , b = domUtils . getComputedStyle ( k , "position" ) , c = domUtils . getComputedStyle ( k , "left" ) ; k . style . width = k . offsetWidth + "px" , k . style . zIndex = 1 * f . options . zIndex + 1 , k . parentNode . insertBefore ( q , k ) , o || p && browser . ie ? ( "absolute" != k . style . position && ( k . style . position = "absolute" ) , k . style . top = ( document . body . scrollTop || document . documentElement . scrollTop ) - l + i + "px" ) : ( browser . ie7Compat && r && ( r = ! 1 , k . style . left = domUtils . getXY ( k ) . x - document . documentElement . getBoundingClientRect ( ) . left + 2 + "px" ) , "fixed" != k . style . position && ( k . style . position = "fixed" , k . style . top = i + "px" , ( "absolute" == b || "relative" == b ) && parseFloat ( c ) && ( k . style . left = a . x + "px" ) ) ) } function d ( ) { r = ! 0 , q . parentNode && q . parentNode . removeChild ( q ) , k . style . cssText = j } function e ( ) { var a = m ( f . container ) , b = f . options . toolbarTopOffset || 0 ; a . top < 0 && a . bottom - k . offsetHeight > b ? c ( ) : d ( ) } var f = this , g = f . getLang ( ) ; f . setOpt ( { topOffset : 0 } ) ; var h = f . options . autoFloatEnabled !== ! 1 , i = f . options . topOffset ; if ( h ) { var j , k , l , m , n = UE . ui . uiUtils , o = browser . ie && browser . version <= 6 , p = browser . quirks , q = document . createElement ( "div" ) , r = ! 0 , s = utils . defer ( function ( ) { e ( ) } , browser . ie ? 200 : 100 , ! 0 ) ; f . addListener ( "destroy" , function ( ) { domUtils . un ( window , [ "scroll" , "resize" ] , e ) , f . removeListener ( "keydown" , s ) } ) , f . addListener ( "ready" , function ( ) { if ( a ( f ) ) { if ( ! f . ui ) return ; m = n . getClientRect , k = f . ui . getDom ( "toolbarbox" ) , l = m ( k ) . top , j = k . style . cssText , q . style . height = k . offsetHeight + "px" , o && b ( ) , domUtils . on ( window , [ "scroll" , "resize" ] , e ) , f . addListener ( "keydown" , s ) , f . addListener ( "beforefullscreenchange" , function ( a , b ) { b && d ( ) } ) , f . addListener ( "fullscreenchanged" , function ( a , b ) { b || e ( ) } ) , f . addListener ( "sourcemodechanged" , function ( a , b ) { setTimeout ( function ( ) { e ( ) } , 0 ) } ) , f . addListener ( "clearDoc" , function ( ) { setTimeout ( function ( ) { e ( ) } , 0 ) } ) } } ) } } , UE . plugins . video = function ( ) { function a ( a , b , d , e , f , g , h ) { a = utils . unhtmlForUrl ( a ) , f = utils . unhtml ( f ) , g = utils . unhtml ( g ) . trim ( ) , b = parseInt ( b , 10 ) || 0 , d = parseInt ( d , 10 ) || 0 ; var i ; switch ( h ) { case "image" : i = "<img " + ( e ? 'id="' + e + '"' : "" ) + ' width="' + b + '" height="' + d + '" _url="' + a + '" class="' + g . replace ( /\bvideo-js\b/ , "" ) + '" src="' + c . options . UEDITOR _HOME _URL + 'themes/default/images/spacer.gif" style="background:url(' + c . options . UEDITOR _HOME _URL + "themes/default/images/videologo.gif) no-repeat center center; border:1px solid gray;" + ( f ? "float:" + f + ";" : "" ) + '" />' ; break ; case "embed" : i = '<embed type="application/x-shockwave-flash" class="' + g + '" pluginspage="http://www.macromedia.com/go/getflashplayer" src="' + utils . html ( a ) + '" width="' + b + '" height="' + d + '"' + ( f ? ' style="float:' + f + '"' : "" ) + ' wmode="transparent" play="true" loop="false" menu="false" allowscriptaccess="never" allowfullscreen="true" >' ; break ; case "video" : var j = a . substr ( a . lastIndexOf ( "." ) + 1 ) ; "ogv" == j && ( j = "ogg" ) , i = "<video" + ( e ? ' id="' + e + '"' : "" ) + ' class="' + g + ' video-js" ' + ( f ? ' style="float:' + f + '"' : "" ) + ' controls preload="none" width="' + b + '" height="' + d + '" src="' + a + '" data-setup="{}"><source src="' + a + '" type="video/' + j + '" /></video>' } return i } function b ( b , c ) { utils . each ( b . getNodesByTagName ( c ? "img" : "embed video" ) , function ( b ) { var d = b . getAttr ( "class" ) ; if ( d && d . indexOf ( "edui-faked-video" ) != - 1 ) { var e = a ( c ? b . getAttr ( "_url" ) : b . getAttr ( "src" ) , b . getAttr ( "width" ) , b . getAttr ( "height" ) , null , b . getStyle ( "float" ) || "" , d , c ? "embed" : "image" ) ; b . parentNode . replaceChild ( UE . uNode . createElement ( e ) , b ) } if ( d && d . indexOf ( "edui-upload-video" ) != - 1 ) { var e = a ( c ? b . getAttr ( "_url" ) : b . getA
function a ( a , c ) { var d = domUtils . getElementsByTagName ( a , "td th" ) ; utils . each ( d , function ( a ) { a . removeAttribute ( "width" ) } ) , a . setAttribute ( "width" , b ( c , ! 0 , g ( c , a ) ) ) ; var e = [ ] ; setTimeout ( function ( ) { utils . each ( d , function ( a ) { 1 == a . colSpan && e . push ( a . offsetWidth ) } ) , utils . each ( d , function ( a , b ) { 1 == a . colSpan && a . setAttribute ( "width" , e [ b ] + "" ) } ) } , 0 ) } function b ( a , b , c ) { var d = a . body ; return d . offsetWidth - ( b ? 2 * parseInt ( domUtils . getComputedStyle ( d , "margin-left" ) , 10 ) : 0 ) - 2 * c . tableBorder - ( a . options . offsetWidth || 0 ) } function c ( a ) { var b = e ( a ) . cell ; if ( b ) { var c = h ( b ) ; return c . selectedTds . length ? c . selectedTds : [ b ] } return [ ] } var d = UE . UETable , e = function ( a ) { return d . getTableItemsByRange ( a ) } , f = function ( a ) { return d . getUETableBySelected ( a ) } , g = function ( a , b ) { return d . getDefaultValue ( a , b ) } , h = function ( a ) { return d . getUETable ( a ) } ; UE . commands . inserttable = { queryCommandState : function ( ) { return e ( this ) . table ? - 1 : 0 } , execCommand : function ( a , b ) { function c ( a , b ) { for ( var c = [ ] , d = a . numRows , e = a . numCols , f = 0 ; f < d ; f ++ ) { c . push ( "<tr" + ( 0 == f ? ' class="firstRow"' : "" ) + ">" ) ; for ( var g = 0 ; g < e ; g ++ ) c . push ( '<td width="' + b + '" vAlign="' + a . tdvalign + '" >' + ( browser . ie && browser . version < 11 ? domUtils . fillChar : "<br/>" ) + "</td>" ) ; c . push ( "</tr>" ) } return "<table><tbody>" + c . join ( "" ) + "</tbody></table>" } b || ( b = utils . extend ( { } , { numCols : this . options . defaultCols , numRows : this . options . defaultRows , tdvalign : this . options . tdvalign } ) ) ; var d = this , e = this . selection . getRange ( ) , f = e . startContainer , h = domUtils . findParent ( f , function ( a ) { return domUtils . isBlockElm ( a ) } , ! 0 ) || d . body , i = g ( d ) , j = h . offsetWidth , k = Math . floor ( j / b . numCols - 2 * i . tdPadding - i . tdBorder ) ; ! b . tdvalign && ( b . tdvalign = d . options . tdvalign ) , d . execCommand ( "inserthtml" , c ( b , k ) ) } } , UE . commands . insertparagraphbeforetable = { queryCommandState : function ( ) { return e ( this ) . cell ? 0 : - 1 } , execCommand : function ( ) { var a = e ( this ) . table ; if ( a ) { var b = this . document . createElement ( "p" ) ; b . innerHTML = browser . ie ? " " : "<br />" , a . parentNode . insertBefore ( b , a ) , this . selection . getRange ( ) . setStart ( b , 0 ) . setCursor ( ) } } } , UE . commands . deletetable = { queryCommandState : function ( ) { var a = this . selection . getRange ( ) ; return domUtils . findParentByTagName ( a . startContainer , "table" , ! 0 ) ? 0 : - 1 } , execCommand : function ( a , b ) { var c = this . selection . getRange ( ) ; if ( b = b || domUtils . findParentByTagName ( c . startContainer , "table" , ! 0 ) ) { var d = b . nextSibling ; d || ( d = domUtils . createElement ( this . document , "p" , { innerHTML : browser . ie ? domUtils . fillChar : "<br/>" } ) , b . parentNode . insertBefore ( d , b ) ) , domUtils . remove ( b ) , c = this . selection . getRange ( ) , 3 == d . nodeType ? c . setStartBefore ( d ) : c . setStart ( d , 0 ) , c . setCursor ( ! 1 , ! 0 ) , this . fireEvent ( "tablehasdeleted" ) } } } , UE . commands . cellalign = { queryCommandState : function ( ) { return c ( this ) . length ? 0 : - 1 } , execCommand : function ( a , b ) { var d = c ( this ) ; if ( d . length ) for ( var e , f = 0 ; e = d [ f ++ ] ; ) e . setAttribute ( "align" , b ) } } , UE . commands . cellvalign = { queryCommandState : function ( ) { return c ( this ) . length ? 0 : - 1 } , execCommand : function ( a , b ) { var d = c ( this ) ; if ( d . length ) for ( var e , f = 0 ; e = d [ f ++ ] ; ) e . setAttribute ( "vAlign" , b ) } } , UE . commands . insertcaption = { queryCommandState : function ( ) { var a = e ( this ) . table ; return a && 0 == a . getElementsByTagName ( "caption" ) . length ? 1 : - 1 } , execCommand : function ( ) { var a = e ( this ) . table ; if ( a ) { var b = this . document . createElement ( "caption" ) ; b . innerHTML = browser . ie ? domUtils . fillChar : "<br/>" , a . insertBefore ( b , a . firstChild ) ; var c = this . selection . getRange ( ) ; c . setStart ( b , 0 ) . setCursor ( ) } } } , UE . commands . deletecaption = { queryCommandState : function ( ) { var a = this . selection . getRange ( ) , b = domUtils . findParentByTagName ( a . startContainer , "table" ) ; return b ? 0 == b . getElementsByTagName ( "caption" ) . length ? - 1 : 1 : - 1 } , execCommand : function ( ) { var a = this . selection . getRange ( ) , b = domUtil
queryCommandState : function ( ) {
var a = e ( this ) , b = a . cell ; return b && h ( a . table ) . colsNum < this . options . maxColNum ? 0 : - 1 ;
} , execCommand : function ( ) { var a = this . selection . getRange ( ) , b = a . createBookmark ( ! 0 ) , c = e ( this ) . cell , d = h ( c ) , f = d . getCellInfo ( c ) ; if ( d . selectedTds . length ) for ( var g = d . cellsRange , i = 0 , j = g . endColIndex - g . beginColIndex + 1 ; i < j ; i ++ ) d . insertCol ( g . endColIndex + 1 , c ) ; else d . insertCol ( f . colIndex + f . colSpan , c ) ; a . moveToBookmark ( b ) . select ( ) }
} , UE . commands . deletecol = { queryCommandState : function ( ) { var a = e ( this ) ; return a . cell ? 0 : - 1 } , execCommand : function ( ) { var a = e ( this ) . cell , b = h ( a ) , c = b . cellsRange , d = b . getCellInfo ( a ) , f = b . getHSideCell ( a ) , g = b . getHSideCell ( a , ! 0 ) ; if ( utils . isEmptyObject ( c ) ) b . deleteCol ( d . colIndex ) ; else for ( var i = c . beginColIndex ; i < c . endColIndex + 1 ; i ++ ) b . deleteCol ( c . beginColIndex ) ; var j = b . table , k = this . selection . getRange ( ) ; if ( j . getElementsByTagName ( "td" ) . length ) domUtils . inDoc ( a , this . document ) ? k . setStart ( a , 0 ) . setCursor ( ! 1 , ! 0 ) : g && domUtils . inDoc ( g , this . document ) ? k . selectNodeContents ( g ) . setCursor ( ! 1 , ! 0 ) : f && domUtils . inDoc ( f , this . document ) && k . selectNodeContents ( f ) . setCursor ( ! 0 , ! 0 ) ; else { var l = j . nextSibling ; domUtils . remove ( j ) , l && k . setStart ( l , 0 ) . setCursor ( ! 1 , ! 0 ) } } } , UE . commands . splittocells = { queryCommandState : function ( ) { var a = e ( this ) , b = a . cell ; if ( ! b ) return - 1 ; var c = h ( a . table ) ; return c . selectedTds . length > 0 ? - 1 : b && ( b . colSpan > 1 || b . rowSpan > 1 ) ? 0 : - 1 } , execCommand : function ( ) { var a = this . selection . getRange ( ) , b = a . createBookmark ( ! 0 ) , c = e ( this ) . cell , d = h ( c ) ; d . splitToCells ( c ) , a . moveToBookmark ( b ) . select ( ) } } , UE . commands . splittorows = { queryCommandState : function ( ) { var a = e ( this ) , b = a . cell ; if ( ! b ) return - 1 ; var c = h ( a . table ) ; return c . selectedTds . length > 0 ? - 1 : b && b . rowSpan > 1 ? 0 : - 1 } , execCommand : function ( ) { var a = this . selection . getRange ( ) , b = a . createBookmark ( ! 0 ) , c = e ( this ) . cell , d = h ( c ) ; d . splitToRows ( c ) , a . moveToBookmark ( b ) . select ( ) } } , UE . commands . splittocols = { queryCommandState : function ( ) { var a = e ( this ) , b = a . cell ; if ( ! b ) return - 1 ; var c = h ( a . table ) ; return c . selectedTds . length > 0 ? - 1 : b && b . colSpan > 1 ? 0 : - 1 } , execCommand : function ( ) { var a = this . selection . getRange ( ) , b = a . createBookmark ( ! 0 ) , c = e ( this ) . cell , d = h ( c ) ; d . splitToCols ( c ) , a . moveToBookmark ( b ) . select ( ) } } , UE . commands . adaptbytext = UE . commands . adaptbywindow = { queryCommandState : function ( ) { return e ( this ) . table ? 0 : - 1 } , execCommand : function ( b ) { var c = e ( this ) , d = c . table ; if ( d ) if ( "adaptbywindow" == b ) a ( d , this ) ; else { var f = domUtils . getElementsByTagName ( d , "td th" ) ; utils . each ( f , function ( a ) { a . removeAttribute ( "width" ) } ) , d . removeAttribute ( "width" ) } } } , UE . commands . averagedistributecol = { queryCommandState : function ( ) { var a = f ( this ) ; return a && ( a . isFullRow ( ) || a . isFullCol ( ) ) ? 0 : - 1 } , execCommand : function ( a ) { function b ( ) { var a , b = e . table , c = 0 , f = 0 , h = g ( d , b ) ; if ( e . isFullRow ( ) ) c = b . offsetWidth , f = e . colsNum ; else for ( var i , j = e . cellsRange . beginColIndex , k = e . cellsRange . endColIndex , l = j ; l <= k ; ) i = e . selectedTds [ l ] , c += i . offsetWidth , l += i . colSpan , f += 1 ; return a = Math . ceil ( c / f ) - 2 * h . tdBorder - 2 * h . tdPadding } function c ( a ) { utils . each ( domUtils . getElementsByTagName ( e . table , "th" ) , function ( a ) { a . setAttribute ( "width" , "" ) } ) ; var b = e . isFullRow ( ) ? domUtils . getElementsByTagName ( e . table , "td" ) : e . selectedTds ; utils . each ( b , function ( b ) { 1 == b . colSpan && b . setAttribute ( "width" , a ) } ) } var d = this , e = f ( d ) ; e && e . selectedTds . length && c ( b ( ) ) } } , UE . commands . averagedistributerow = { queryCommandState : function ( ) { var a = f ( this ) ; return a ? a . selectedTds && /th/gi . test ( a . selectedTds [ 0 ] . tagName ) ? - 1 : a . isFullRow ( ) || a . isFullCol ( ) ? 0 : - 1 : - 1 } , execCommand : function ( a ) { function b ( ) { var a , b , c = 0 , f = e . table , h = g ( d , f ) , i = parseInt ( domUtils . getComputedStyle ( f . getElementsByTagName ( "td" ) [ 0 ] , "padding-top" ) ) ; if ( e . isFullCol ( ) ) { var j , k , l = domUtils . getElementsByTagName ( f , "caption" ) , m = domUtils . getElementsByTagName ( f , "th" ) ; l . length > 0 && ( j = l [ 0 ] . offsetHeight ) , m . length > 0 && ( k = m [ 0 ] . offsetHeight ) , c = f . offsetHeight - ( j || 0 ) - ( k || 0 ) , b = 0 == m . length ? e . rowsNum : e . rowsNum - 1 } else { for ( var n = e . cellsRange . beginRowIndex , o = e . cellsRange . endRowIndex , p = 0 , q = domUtils . getElementsByTagName ( f , "tr" ) , r = n ; r <= o ; r ++ ) c += q [ r ] . offsetHeight , p += 1 ; b = p } return a = browser . ie && browser . v
} ( ) , UE . plugins . table = function ( ) { function a ( a ) { } function b ( a , b ) { c ( a , "width" , ! 0 ) , c ( a , "height" , ! 0 ) } function c ( a , b , c ) { a . style [ b ] && ( c && a . setAttribute ( b , parseInt ( a . style [ b ] , 10 ) ) , a . style [ b ] = "" ) } function d ( a ) { if ( "TD" == a . tagName || "TH" == a . tagName ) return a ; var b ; return ( b = domUtils . findParentByTagName ( a , "td" , ! 0 ) || domUtils . findParentByTagName ( a , "th" , ! 0 ) ) ? b : null } function e ( a ) { var b = new RegExp ( domUtils . fillChar , "g" ) ; if ( a [ browser . ie ? "innerText" : "textContent" ] . replace ( /^\s*$/ , "" ) . replace ( b , "" ) . length > 0 ) return 0 ; for ( var c in dtd . $isNotEmpty ) if ( a . getElementsByTagName ( c ) . length ) return 0 ; return 1 } function f ( a ) { return a . pageX || a . pageY ? { x : a . pageX , y : a . pageY } : { x : a . clientX + N . document . body . scrollLeft - N . document . body . clientLeft , y : a . clientY + N . document . body . scrollTop - N . document . body . clientTop } } function g ( b ) { if ( ! A ( ) ) try { var c , e = d ( b . target || b . srcElement ) ; if ( R && ( N . body . style . webkitUserSelect = "none" , ( Math . abs ( V . x - b . clientX ) > T || Math . abs ( V . y - b . clientY ) > T ) && ( t ( ) , R = ! 1 , U = 0 , v ( b ) ) ) , ca && ha ) return U = 0 , N . body . style . webkitUserSelect = "none" , N . selection . getNative ( ) [ browser . ie9below ? "empty" : "removeAllRanges" ] ( ) , c = f ( b ) , m ( N , ! 0 , ca , c , e ) , void ( "h" == ca ? ga . style . left = k ( ha , b ) + "px" : "v" == ca && ( ga . style . top = l ( ha , b ) + "px" ) ) ; if ( e ) { if ( N . fireEvent ( "excludetable" , e ) === ! 0 ) return ; c = f ( b ) ; var g = n ( e , c ) , i = domUtils . findParentByTagName ( e , "table" , ! 0 ) ; if ( j ( i , e , b , ! 0 ) ) { if ( N . fireEvent ( "excludetable" , i ) === ! 0 ) return ; N . body . style . cursor = "url(" + N . options . cursorpath + "h.png),pointer" } else if ( j ( i , e , b ) ) { if ( N . fireEvent ( "excludetable" , i ) === ! 0 ) return ; N . body . style . cursor = "url(" + N . options . cursorpath + "v.png),pointer" } else { N . body . style . cursor = "text" ; /\d/ . test ( g ) && ( g = g . replace ( /\d/ , "" ) , e = Y ( e ) . getPreviewCell ( e , "v" == g ) ) , m ( N , ! ! e && ! ! g , e ? g : "" , c , e ) } } else h ( ! 1 , i , N ) } catch ( o ) { a ( o ) } } function h ( a , b , c ) { if ( a ) i ( b , c ) ; else { if ( fa ) return ; la = setTimeout ( function ( ) { ! fa && ea && ea . parentNode && ea . parentNode . removeChild ( ea ) } , 2e3 ) } } function i ( a , b ) { function c ( c , d ) { clearTimeout ( g ) , g = setTimeout ( function ( ) { b . fireEvent ( "tableClicked" , a , d ) } , 300 ) } function d ( c ) { clearTimeout ( g ) ; var d = Y ( a ) , e = a . rows [ 0 ] . cells [ 0 ] , f = d . getLastCell ( ) , h = d . getCellsRange ( e , f ) ; b . selection . getRange ( ) . setStart ( e , 0 ) . setCursor ( ! 1 , ! 0 ) , d . setSelected ( h ) } var e = domUtils . getXY ( a ) , f = a . ownerDocument ; if ( ea && ea . parentNode ) return ea ; ea = f . createElement ( "div" ) , ea . contentEditable = ! 1 , ea . innerHTML = "" , ea . style . cssText = "width:15px;height:15px;background-image:url(" + b . options . UEDITOR _HOME _URL + "dialogs/table/dragicon.png);position: absolute;cursor:move;top:" + ( e . y - 15 ) + "px;left:" + e . x + "px;" , domUtils . unSelectable ( ea ) , ea . onmouseover = function ( a ) { fa = ! 0 } , ea . onmouseout = function ( a ) { fa = ! 1 } , domUtils . on ( ea , "click" , function ( a , b ) { c ( b , this ) } ) , domUtils . on ( ea , "dblclick" , function ( a , b ) { d ( b ) } ) , domUtils . on ( ea , "dragstart" , function ( a , b ) { domUtils . preventDefault ( b ) } ) ; var g ; f . body . appendChild ( ea ) } function j ( a , b , c , d ) { var e = f ( c ) , g = n ( b , e ) ; if ( d ) { var h = a . getElementsByTagName ( "caption" ) [ 0 ] , i = h ? h . offsetHeight : 0 ; return "v1" == g && e . y - domUtils . getXY ( a ) . y - i < 8 } return "h1" == g && e . x - domUtils . getXY ( a ) . x < 8 } function k ( a , b ) { var c = Y ( a ) ; if ( c ) { var d = c . getSameEndPosCells ( a , "x" ) [ 0 ] , e = c . getSameStartPosXCells ( a ) [ 0 ] , g = f ( b ) . x , h = ( d ? domUtils . getXY ( d ) . x : domUtils . getXY ( c . table ) . x ) + 20 , i = e ? domUtils . getXY ( e ) . x + e . offsetWidth - 20 : N . body . offsetWidth + 5 || parseInt ( domUtils . getComputedStyle ( N . body , "width" ) , 10 ) ; return h += Q , i -= Q , g < h ? h : g > i ? i : g } } function l ( b , c ) { try { var d = domUtils . getXY ( b ) . y , e = f ( c ) . y ; return e < d ? d : e } catch ( g ) { a ( g ) } } function m ( b , c , d , e , f ) { try { b . body . style . cursor = "h" == d ? "col-resize" : "v" == d ? "row-resize" : "text" , browser . ie && ( ! d || ia || Z ( b ) ? I ( b ) : ( H ( b , b . documen
var c = this . table , d = c . rows , e = [ ] , f = "TH" === d [ 0 ] . cells [ 0 ] . tagName , g = 0 ; if ( this . selectedTds . length ) {
for ( var h = this . cellsRange , i = h . endRowIndex + 1 , j = h . beginRowIndex ; j < i ; j ++ ) e [ j ] = d [ j ] ;
e . splice ( 0 , h . beginRowIndex ) , g = h . endRowIndex + 1 === this . rowsNum ? 0 : h . endRowIndex + 1
} else for ( var j = 0 , i = d . length ; j < i ; j ++ ) e [ j ] = d [ j ] ; var k = { reversecurrent : function ( a , b ) { return 1 } , orderbyasc : function ( a , b ) { var c = a . innerText || a . textContent , d = b . innerText || b . textContent ; return c . localeCompare ( d ) } , reversebyasc : function ( a , b ) { var c = a . innerHTML , d = b . innerHTML ; return d . localeCompare ( c ) } , orderbynum : function ( a , b ) { var c = a [ browser . ie ? "innerText" : "textContent" ] . match ( /\d+/ ) , d = b [ browser . ie ? "innerText" : "textContent" ] . match ( /\d+/ ) ; return c && ( c = + c [ 0 ] ) , d && ( d = + d [ 0 ] ) , ( c || 0 ) - ( d || 0 ) } , reversebynum : function ( a , b ) { var c = a [ browser . ie ? "innerText" : "textContent" ] . match ( /\d+/ ) , d = b [ browser . ie ? "innerText" : "textContent" ] . match ( /\d+/ ) ; return c && ( c = + c [ 0 ] ) , d && ( d = + d [ 0 ] ) , ( d || 0 ) - ( c || 0 ) } } ; c . setAttribute ( "data-sort-type" , b && "string" == typeof b && k [ b ] ? b : "" ) , f && e . splice ( 0 , 1 ) , e = utils . sort ( e , function ( c , d ) { var e ; return e = b && "function" == typeof b ? b . call ( this , c . cells [ a ] , d . cells [ a ] ) : b && "number" == typeof b ? 1 : b && "string" == typeof b && k [ b ] ? k [ b ] . call ( this , c . cells [ a ] , d . cells [ a ] ) : k . orderbyasc . call ( this , c . cells [ a ] , d . cells [ a ] ) } ) ; for ( var l = c . ownerDocument . createDocumentFragment ( ) , m = 0 , i = e . length ; m < i ; m ++ ) l . appendChild ( e [ m ] ) ; var n = c . getElementsByTagName ( "tbody" ) [ 0 ] ; g ? n . insertBefore ( l , d [ g - h . endRowIndex + h . beginRowIndex - 1 ] ) : n . appendChild ( l )
} , UE . plugins . tablesort = function ( ) { var a = this , b = UE . UETable , c = function ( a ) { return b . getUETable ( a ) } , d = function ( a ) { return b . getTableItemsByRange ( a ) } ; a . ready ( function ( ) { utils . cssRule ( "tablesort" , "table.sortEnabled tr.firstRow th,table.sortEnabled tr.firstRow td{padding-right:20px;background-repeat: no-repeat;background-position: center right; background-image:url(" + a . options . themePath + a . options . theme + "/images/sortable.png);}" , a . document ) , a . addListener ( "afterexeccommand" , function ( a , b ) { "mergeright" != b && "mergedown" != b && "mergecells" != b || this . execCommand ( "disablesort" ) } ) } ) , UE . commands . sorttable = { queryCommandState : function ( ) { var a = this , b = d ( a ) ; if ( ! b . cell ) return - 1 ; for ( var c , e = b . table , f = e . getElementsByTagName ( "td" ) , g = 0 ; c = f [ g ++ ] ; ) if ( 1 != c . rowSpan || 1 != c . colSpan ) return - 1 ; return 0 } , execCommand : function ( a , b ) { var e = this , f = e . selection . getRange ( ) , g = f . createBookmark ( ! 0 ) , h = d ( e ) , i = h . cell , j = c ( h . table ) , k = j . getCellInfo ( i ) ; j . sortTable ( k . cellIndex , b ) , f . moveToBookmark ( g ) ; try { f . select ( ) } catch ( l ) { } } } , UE . commands . enablesort = UE . commands . disablesort = { queryCommandState : function ( a ) { var b = d ( this ) . table ; if ( b && "enablesort" == a ) for ( var c = domUtils . getElementsByTagName ( b , "th td" ) , e = 0 ; e < c . length ; e ++ ) if ( c [ e ] . getAttribute ( "colspan" ) > 1 || c [ e ] . getAttribute ( "rowspan" ) > 1 ) return - 1 ; return b ? "enablesort" == a ^ "sortEnabled" != b . getAttribute ( "data-sort" ) ? - 1 : 0 : - 1 } , execCommand : function ( a ) { var b = d ( this ) . table ; b . setAttribute ( "data-sort" , "enablesort" == a ? "sortEnabled" : "sortDisabled" ) , "enablesort" == a ? domUtils . addClass ( b , "sortEnabled" ) : domUtils . removeClasses ( b , "sortEnabled" ) } } } , UE . plugins . contextmenu = function ( ) { var a = this ; if ( a . setOpt ( "enableContextMenu" , ! 0 ) , a . getOpt ( "enableContextMenu" ) !== ! 1 ) { var b , c = a . getLang ( "contextMenu" ) , d = a . options . contextMenu || [ { label : c . selectall , cmdName : "selectall" } , { label : c . cleardoc , cmdName : "cleardoc" , exec : function ( ) { confirm ( c . confirmclear ) && this . execCommand ( "cleardoc" ) } } , "-" , { label : c . unlink , cmdName : "unlink" } , "-" , { group : c . paragraph , icon : "justifyjustify" , subMenu : [ { label : c . justifyleft , cmdName : "justify" , value : "left" } , { label : c . justifyright , cmdName : "justify" , value : "right" } , { label : c . justifycenter , cmdName : "justify" , value : "center" } , { label : c . justifyjustify , cmdName : "justify" , value : "justify" } ] } , "-" , { group : c . table , icon : "table" , subMenu : [ { label : c . inserttable , cmdName : "inserttable" } , { label : c . deletetable , cmdName : "deletetable" } , "-" , { label : c . deleterow , cmdName : "deleterow" } , { label : c . deletecol , cmdName : "deletecol" } , { label : c . insertcol , cmdName : "insertcol" } , { label : c . insertcolnext , cmdName : "insertcolnext" } , { label : c . insertrow , cmdName : "insertrow" } , { label : c . insertrownext , cmdName : "insertrownext" } , "-" , { label : c . insertcaption , cmdName : "insertcaption" } , { label : c . deletecaption , cmdName : "deletecaption" } , { label : c . inserttitle , cmdName : "inserttitle" } , { label : c . deletetitle , cmdName : "deletetitle" } , { label : c . inserttitlecol , cmdName : "inserttitlecol" } , { label : c . deletetitlecol , cmdName : "deletetitlecol" } , "-" , { label : c . mergecells , cmdName : "mergecells" } , { label : c . mergeright , cmdName : "mergeright" } , { label : c . mergedown , cmdName : "mergedown" } , "-" , { label : c . splittorows , cmdName : "splittorows" } , { label : c . splittocols , cmdName : "splittocols" } , { label : c . splittocells , cmdName : "splittocells" } , "-" , { label : c . averageDiseRow , cmdName : "averagedistributerow" } , { label : c . averageDisCol , cmdName : "averagedistributecol" } , "-" , { label : c . edittd , cmdName : "edittd" , exec : function ( ) { UE . ui . edittd && new UE . ui . edittd ( this ) , this . getDialog ( "edittd" ) . open ( ) } } , { label : c . edittable , cmdName : "edittable" , exec : function ( ) { UE . ui . edittable && new UE . ui . edittable ( this ) , this . getDialog ( "edittable" ) . open ( ) } } , { label : c . setbordervisible , cmdName : "setbordervisible" } ] } , { group : c . tablesort , icon : "tablesort" , subMe
function a ( a ) { var b = null , c = 0 ; if ( a . rows . length < 2 ) return ! 1 ; if ( a . rows [ 0 ] . cells . length < 2 ) return ! 1 ; b = a . rows [ 0 ] . cells , c = b . length ; for ( var d , e = 0 ; d = b [ e ] ; e ++ ) if ( "th" !== d . tagName . toLowerCase ( ) ) return ! 1 ; for ( var f , e = 1 ; f = a . rows [ e ] ; e ++ ) { if ( f . cells . length != c ) return ! 1 ; if ( "th" !== f . cells [ 0 ] . tagName . toLowerCase ( ) ) return ! 1 ; for ( var d , g = 1 ; d = f . cells [ g ] ; g ++ ) { var h = utils . trim ( d . innerText || d . textContent || "" ) ; if ( h = h . replace ( new RegExp ( UE . dom . domUtils . fillChar , "g" ) , "" ) . replace ( /^\s+|\s+$/g , "" ) , ! /^\d*\.?\d+$/ . test ( h ) ) return ! 1 } } return ! 0 } var b = this ; return {
bindEvents : { chartserror : function ( ) { } } , commands : {
charts : {
execCommand : function ( c , d ) {
var e = domUtils . findParentByTagName ( this . selection . getRange ( ) . startContainer , "table" , ! 0 ) , f = [ ] , g = { } ; if ( ! e ) return ! 1 ; if ( ! a ( e ) ) return b . fireEvent ( "chartserror" ) , ! 1 ; g . title = d . title || "" , g . subTitle = d . subTitle || "" , g . xTitle = d . xTitle || "" , g . yTitle = d . yTitle || "" , g . suffix = d . suffix || "" , g . tip = d . tip || "" , g . dataFormat = d . tableDataFormat || "" , g . chartType = d . chartType || 0 ; for ( var h in g ) g . hasOwnProperty ( h ) && f . push ( h + ":" + g [ h ] ) ;
e . setAttribute ( "data-chart" , f . join ( ";" ) ) , domUtils . addClass ( e , "edui-charts-table" )
} , queryCommandState : function ( b , c ) { var d = domUtils . findParentByTagName ( this . selection . getRange ( ) . startContainer , "table" , ! 0 ) ; return d && a ( d ) ? 0 : - 1 }
}
} , inputRule : function ( a ) { utils . each ( a . getNodesByTagName ( "table" ) , function ( a ) { void 0 !== a . getAttr ( "data-chart" ) && a . setAttr ( "style" ) } ) } , outputRule : function ( a ) { utils . each ( a . getNodesByTagName ( "table" ) , function ( a ) { void 0 !== a . getAttr ( "data-chart" ) && a . setAttr ( "style" , "display: none;" ) } ) }
}
} ) , UE . plugin . register ( "section" , function ( ) { function a ( a ) { this . tag = "" , this . level = - 1 , this . dom = null , this . nextSection = null , this . previousSection = null , this . parentSection = null , this . startAddress = [ ] , this . endAddress = [ ] , this . children = [ ] } function b ( b ) { var c = new a ; return utils . extend ( c , b ) } function c ( a , b ) { for ( var c = b , d = 0 ; d < a . length ; d ++ ) { if ( ! c . childNodes ) return null ; c = c . childNodes [ a [ d ] ] } return c } var d = this ; return { bindMultiEvents : { type : "aftersetcontent afterscencerestore" , handler : function ( ) { d . fireEvent ( "updateSections" ) } } , bindEvents : { ready : function ( ) { d . fireEvent ( "updateSections" ) , domUtils . on ( d . body , "drop paste" , function ( ) { d . fireEvent ( "updateSections" ) } ) } , afterexeccommand : function ( a , b ) { "paragraph" == b && d . fireEvent ( "updateSections" ) } , keyup : function ( a , b ) { var c = this , d = c . selection . getRange ( ) ; if ( 1 != d . collapsed ) c . fireEvent ( "updateSections" ) ; else { var e = b . keyCode || b . which ; 13 != e && 8 != e && 46 != e || c . fireEvent ( "updateSections" ) } } } , commands : { getsections : { execCommand : function ( a , c ) { function d ( a ) { for ( var b = 0 ; b < f . length ; b ++ ) if ( f [ b ] ( a ) ) return b ; return - 1 } function e ( a , c ) { for ( var f , g , i , k = null , l = a . childNodes , m = 0 , n = l . length ; m < n ; m ++ ) if ( i = l [ m ] , f = d ( i ) , f >= 0 ) { var o = h . selection . getRange ( ) . selectNode ( i ) . createAddress ( ! 0 ) . startAddress , p = b ( { tag : i . tagName , title : i . innerText || i . textContent || "" , level : f , dom : i , startAddress : utils . clone ( o , [ ] ) , endAddress : utils . clone ( o , [ ] ) , children : [ ] } ) ; for ( j . nextSection = p , p . previousSection = j , g = j ; f <= g . level ; ) g = g . parentSection ; p . parentSection = g , g . children . push ( p ) , k = j = p } else 1 === i . nodeType && e ( i , c ) , k && k . endAddress [ k . endAddress . length - 1 ] ++ } for ( var f = c || [ "h1" , "h2" , "h3" , "h4" , "h5" , "h6" ] , g = 0 ; g < f . length ; g ++ ) "string" == typeof f [ g ] ? f [ g ] = function ( a ) { return function ( b ) { return b . tagName == a . toUpperCase ( ) } } ( f [ g ] ) : "function" != typeof f [ g ] && ( f [ g ] = function ( a ) { return null } ) ; var h = this , i = b ( { level : - 1 , title : "root" } ) , j = i ; return e ( h . body , i ) , i } , notNeedUndo : ! 0 } , movesection : { execCommand : function ( a , b , d , e ) { function f ( a , b , c ) { for ( var d = ! 1 , e = ! 1 , f = 0 ; f < a . length && ! ( f >= c . length ) ; f ++ ) { if ( c [ f ] > a [ f ] ) { d = ! 0 ; break } if ( c [ f ] < a [ f ] ) break } for ( var f = 0 ; f < b . length && ! ( f >= c . length ) ; f ++ ) { if ( c [ f ] < a [ f ] ) { e = ! 0 ; break } if ( c [ f ] > a [ f ] ) break } return d && e } var g , h , i = this ; if ( b && d && d . level != - 1 && ( g = e ? d . endAddress : d . startAddress , h = c ( g , i . body ) , g && h && ! f ( b . startAddress , b . endAddress , g ) ) ) { var j , k , l = c ( b . startAddress , i . body ) , m = c ( b . endAddress , i . body ) ; if ( e ) for ( j = m ; j && ! ( domUtils . getPosition ( l , j ) & domUtils . POSITION _FOLLOWING ) && ( k = j . previousSibling , domUtils . insertAfter ( h , j ) , j != l ) ; ) j = k ; else for ( j = l ; j && ! ( domUtils . getPosition ( j , m ) & domUtils . POSITION _FOLLOWING ) && ( k = j . nextSibling , h . parentNode . insertBefore ( j , h ) , j != m ) ; ) j = k ; i . fireEvent ( "updateSections" ) } } } , deletesection : { execCommand : function ( a , b , c ) { function d ( a ) { for ( var b = e . body , c = 0 ; c < a . length ; c ++ ) { if ( ! b . childNodes ) return null ; b = b . childNodes [ a [ c ] ] } return b } var e = this ; if ( b ) { var f , g = d ( b . startAddress ) , h = d ( b . endAddress ) , i = g ; if ( c ) domUtils . remove ( i ) ; else for ( ; i && domUtils . inDoc ( h , e . document ) && ! ( domUtils . getPosition ( i , h ) & domUtils . POSITION _FOLLOWING ) ; ) f = i . nextSibling , domUtils . remove ( i ) , i = f ; e . fireEvent ( "updateSections" ) } } } , selectsection : { execCommand : function ( a , b ) { if ( ! b && ! b . dom ) return ! 1 ; var c = this , d = c . selection . getRange ( ) , e = { startAddress : utils . clone ( b . startAddress , [ ] ) , endAddress : utils . clone ( b . endAddress , [ ] ) } ; return e . endAddress [ e . endAddress . length - 1 ] ++ , d . moveToAddress ( e ) . select ( ) . scrollToView ( ) , ! 0 } , notNeedUndo : ! 0 } , scrolltosection : { execCommand : function ( a , b ) { if ( ! b && ! b . dom ) return ! 1 ; var c = this , d = c . selection . getRange ( ) , e = { startAddress : b . startAddress , endAddress : b . endAddress } ;
var a = baidu . editor . utils , b = baidu . editor . ui . Popup , c = baidu . editor . ui . TablePicker , d = baidu . editor . ui . SplitButton , e = baidu . editor . ui . TableButton = function ( a ) { this . initOptions ( a ) , this . initTableButton ( ) } ; e . prototype = {
initTableButton : function ( ) {
var a = this ; this . popup = new b ( {
content : new c ( {
editor : a . editor , onpicktable : function ( b , c , d ) {
a . _onPickTable ( c , d )
}
} ) , editor : a . editor
} ) , this . initSplitButton ( )
} , _onPickTable : function ( a , b ) { this . fireEvent ( "picktable" , a , b ) !== ! 1 && this . popup . hide ( ) }
} , a . inherits ( e , d )
} ( ) , function ( ) { var a = baidu . editor . utils , b = baidu . editor . ui . UIBase , c = baidu . editor . ui . AutoTypeSetPicker = function ( a ) { this . initOptions ( a ) , this . initAutoTypeSetPicker ( ) } ; c . prototype = { initAutoTypeSetPicker : function ( ) { this . initUIBase ( ) } , getHtmlTpl : function ( ) { var a = this . editor , b = a . options . autotypeset , c = a . getLang ( "autoTypeSet" ) , d = "textAlignValue" + a . uid , e = "imageBlockLineValue" + a . uid , f = "symbolConverValue" + a . uid ; return '<div id="##" class="edui-autotypesetpicker %%"><div class="edui-autotypesetpicker-body"><table ><tr><td nowrap><input type="checkbox" name="mergeEmptyline" ' + ( b . mergeEmptyline ? "checked" : "" ) + ">" + c . mergeLine + '</td><td colspan="2"><input type="checkbox" name="removeEmptyline" ' + ( b . removeEmptyline ? "checked" : "" ) + ">" + c . delLine + '</td></tr><tr><td nowrap><input type="checkbox" name="removeClass" ' + ( b . removeClass ? "checked" : "" ) + ">" + c . removeFormat + '</td><td colspan="2"><input type="checkbox" name="indent" ' + ( b . indent ? "checked" : "" ) + ">" + c . indent + '</td></tr><tr><td nowrap><input type="checkbox" name="textAlign" ' + ( b . textAlign ? "checked" : "" ) + ">" + c . alignment + '</td><td colspan="2" id="' + d + '"><input type="radio" name="' + d + '" value="left" ' + ( b . textAlign && "left" == b . textAlign ? "checked" : "" ) + ">" + a . getLang ( "justifyleft" ) + '<input type="radio" name="' + d + '" value="center" ' + ( b . textAlign && "center" == b . textAlign ? "checked" : "" ) + ">" + a . getLang ( "justifycenter" ) + '<input type="radio" name="' + d + '" value="right" ' + ( b . textAlign && "right" == b . textAlign ? "checked" : "" ) + ">" + a . getLang ( "justifyright" ) + '</td></tr><tr><td nowrap><input type="checkbox" name="imageBlockLine" ' + ( b . imageBlockLine ? "checked" : "" ) + ">" + c . imageFloat + '</td><td nowrap id="' + e + '"><input type="radio" name="' + e + '" value="none" ' + ( b . imageBlockLine && "none" == b . imageBlockLine ? "checked" : "" ) + ">" + a . getLang ( "default" ) + '<input type="radio" name="' + e + '" value="left" ' + ( b . imageBlockLine && "left" == b . imageBlockLine ? "checked" : "" ) + ">" + a . getLang ( "justifyleft" ) + '<input type="radio" name="' + e + '" value="center" ' + ( b . imageBlockLine && "center" == b . imageBlockLine ? "checked" : "" ) + ">" + a . getLang ( "justifycenter" ) + '<input type="radio" name="' + e + '" value="right" ' + ( b . imageBlockLine && "right" == b . imageBlockLine ? "checked" : "" ) + ">" + a . getLang ( "justifyright" ) + '</td></tr><tr><td nowrap><input type="checkbox" name="clearFontSize" ' + ( b . clearFontSize ? "checked" : "" ) + ">" + c . removeFontsize + '</td><td colspan="2"><input type="checkbox" name="clearFontFamily" ' + ( b . clearFontFamily ? "checked" : "" ) + ">" + c . removeFontFamily + '</td></tr><tr><td nowrap colspan="3"><input type="checkbox" name="removeEmptyNode" ' + ( b . removeEmptyNode ? "checked" : "" ) + ">" + c . removeHtml + '</td></tr><tr><td nowrap colspan="3"><input type="checkbox" name="pasteFilter" ' + ( b . pasteFilter ? "checked" : "" ) + ">" + c . pasteFilter + '</td></tr><tr><td nowrap><input type="checkbox" name="symbolConver" ' + ( b . bdc2sb || b . tobdc ? "checked" : "" ) + ">" + c . symbol + '</td><td id="' + f + '"><input type="radio" name="bdc" value="bdc2sb" ' + ( b . bdc2sb ? "checked" : "" ) + ">" + c . bdc2sb + '<input type="radio" name="bdc" value="tobdc" ' + ( b . tobdc ? "checked" : "" ) + ">" + c . tobdc + '</td><td nowrap align="right"><button >' + c . run + "</button></td></tr></table></div></div>" } , _UIBase _render : b . prototype . render } , a . inherits ( c , b ) } ( ) , function ( ) { function a ( a ) { for ( var c , d = { } , e = a . getDom ( ) , f = a . editor . uid , g = null , h = null , i = domUtils . getElementsByTagName ( e , "input" ) , j = i . length - 1 ; c = i [ j -- ] ; ) if ( g = c . getAttribute ( "type" ) , "checkbox" == g ) if ( h = c . getAttribute ( "name" ) , d [ h ] && delete d [ h ] , c . checked ) { var k = document . getElementById ( h + "Value" + f ) ; if ( k ) { if ( /input/gi . test ( k . tagName ) ) d [ h ] = k . value ; else for ( var l , m = k . getElementsByTagName ( "input" ) , n = m . length - 1 ; l = m [ n -- ] ; ) if ( l . checked ) { d [ h ] = l . value ; break } } else d [ h ] = ! 0 } else d [ h ] = ! 1 ; else d [
var a = baidu . editor . utils , b = baidu . editor . ui , c = b . Dialog ; b . buttons = { } , b . Dialog = function ( a ) { var b = new c ( a ) ; return b . addListener ( "hide" , function ( ) { if ( b . editor ) { var a = b . editor ; try { if ( browser . gecko ) { var c = a . window . scrollY , d = a . window . scrollX ; a . body . focus ( ) , a . window . scrollTo ( d , c ) } else a . focus ( ) } catch ( e ) { } } } ) , b } ; for ( var d , e = { anchor : "~/dialogs/anchor/anchor.html" , insertimage : "~/dialogs/image/image.html" , link : "~/dialogs/link/link.html" , spechars : "~/dialogs/spechars/spechars.html" , searchreplace : "~/dialogs/searchreplace/searchreplace.html" , map : "~/dialogs/map/map.html" , gmap : "~/dialogs/gmap/gmap.html" , insertvideo : "~/dialogs/video/video.html" , help : "~/dialogs/help/help.html" , preview : "~/dialogs/preview/preview.html" , emotion : "~/dialogs/emotion/emotion.html" , wordimage : "~/dialogs/wordimage/wordimage.html" , attachment : "~/dialogs/attachment/attachment.html" , insertframe : "~/dialogs/insertframe/insertframe.html" , edittip : "~/dialogs/table/edittip.html" , edittable : "~/dialogs/table/edittable.html" , edittd : "~/dialogs/table/edittd.html" , webapp : "~/dialogs/webapp/webapp.html" , snapscreen : "~/dialogs/snapscreen/snapscreen.html" , scrawl : "~/dialogs/scrawl/scrawl.html" , music : "~/dialogs/music/music.html" , template : "~/dialogs/template/template.html" , background : "~/dialogs/background/background.html" , charts : "~/dialogs/charts/charts.html" } , f = [ "undo" , "redo" , "formatmatch" , "bold" , "italic" , "underline" , "fontborder" , "touppercase" , "tolowercase" , "strikethrough" , "subscript" , "superscript" , "source" , "indent" , "outdent" , "blockquote" , "pasteplain" , "pagebreak" , "selectall" , "print" , "horizontal" , "removeformat" , "time" , "date" , "unlink" , "insertparagraphbeforetable" , "insertrow" , "insertcol" , "mergeright" , "mergedown" , "deleterow" , "deletecol" , "splittorows" , "splittocols" , "splittocells" , "mergecells" , "deletetable" , "drafts" ] , g = 0 ; d = f [ g ++ ] ; ) d = d . toLowerCase ( ) , b [ d ] = function ( a ) { return function ( c ) { var d = new b . Button ( { className : "edui-for-" + a , title : c . options . labelMap [ a ] || c . getLang ( "labelMap." + a ) || "" , onclick : function ( ) { c . execCommand ( a ) } , theme : c . options . theme , showText : ! 1 } ) ; return b . buttons [ a ] = d , c . addListener ( "selectionchange" , function ( b , e , f ) { var g = c . queryCommandState ( a ) ; g == - 1 ? ( d . setDisabled ( ! 0 ) , d . setChecked ( ! 1 ) ) : f || ( d . setDisabled ( ! 1 ) , d . setChecked ( g ) ) } ) , d } } ( d ) ; b . cleardoc = function ( a ) { var c = new b . Button ( { className : "edui-for-cleardoc" , title : a . options . labelMap . cleardoc || a . getLang ( "labelMap.cleardoc" ) || "" , theme : a . options . theme , onclick : function ( ) { confirm ( a . getLang ( "confirmClear" ) ) && a . execCommand ( "cleardoc" ) } } ) ; return b . buttons . cleardoc = c , a . addListener ( "selectionchange" , function ( ) { c . setDisabled ( a . queryCommandState ( "cleardoc" ) == - 1 ) } ) , c } ; var h = { justify : [ "left" , "right" , "center" , "justify" ] , imagefloat : [ "none" , "left" , "center" , "right" ] , directionality : [ "ltr" , "rtl" ] } ; for ( var i in h ) ! function ( a , c ) { for ( var d , e = 0 ; d = c [ e ++ ] ; ) ! function ( c ) { b [ a . replace ( "float" , "" ) + c ] = function ( d ) { var e = new b . Button ( { className : "edui-for-" + a . replace ( "float" , "" ) + c , title : d . options . labelMap [ a . replace ( "float" , "" ) + c ] || d . getLang ( "labelMap." + a . replace ( "float" , "" ) + c ) || "" , theme : d . options . theme , onclick : function ( ) { d . execCommand ( a , c ) } } ) ; return b . buttons [ a ] = e , d . addListener ( "selectionchange" , function ( b , f , g ) { e . setDisabled ( d . queryCommandState ( a ) == - 1 ) , e . setChecked ( d . queryCommandValue ( a ) == c && ! g ) } ) , e } } ( d ) } ( i , h [ i ] ) ; for ( var d , g = 0 ; d = [ "backcolor" , "forecolor" ] [ g ++ ] ; ) b [ d ] = function ( a ) {
return function ( c ) {
var d = new b . ColorButton ( {
className : "edui-for-" + a , color : "default" , title : c . options . labelMap [ a ] || c . getLang ( "labelMap." + a ) || "" , editor : c , onpickcolor : function ( b , d ) {
c . execCommand ( a , d )
} , onpicknocolor : function ( ) { c . execCommand ( a , "default" ) , this . setColor ( "transparent" ) , this . color = "default" } , onbuttonclick : function ( ) { c . execCommand ( a , this . color ) }
} ) ; return b . buttons [ a ] = d , c . addListener ( "selectionchange" , function ( ) { d . setDisabled ( c . queryCommandState ( a ) == - 1 ) } ) , d
}
} ( d ) ; var j = { noOk : [ "searchreplace" , "help" , "spechars" , "webapp" , "preview" ] , ok : [ "attachment" , "anchor" , "link" , "insertimage" , "map" , "gmap" , "insertframe" , "wordimage" , "insertvideo" , "insertframe" , "edittip" , "edittable" , "edittd" , "scrawl" , "template" , "music" , "background" , "charts" ] } ; for ( var i in j ) ! function ( c , d ) { for ( var f , g = 0 ; f = d [ g ++ ] ; ) browser . opera && "searchreplace" === f || ! function ( d ) { b [ d ] = function ( f , g , h ) { g = g || ( f . options . iframeUrlMap || { } ) [ d ] || e [ d ] , h = f . options . labelMap [ d ] || f . getLang ( "labelMap." + d ) || "" ; var i ; g && ( i = new b . Dialog ( a . extend ( { iframeUrl : f . ui . mapUrl ( g ) , editor : f , className : "edui-for-" + d , title : h , holdScroll : "insertimage" === d , fullscreen : /charts|preview/ . test ( d ) , closeDialog : f . getLang ( "closeDialog" ) } , "ok" == c ? { buttons : [ { className : "edui-okbutton" , label : f . getLang ( "ok" ) , editor : f , onclick : function ( ) { i . close ( ! 0 ) } } , { className : "edui-cancelbutton" , label : f . getLang ( "cancel" ) , editor : f , onclick : function ( ) { i . close ( ! 1 ) } } ] } : { } ) ) , f . ui . _dialogs [ d + "Dialog" ] = i ) ; var j = new b . Button ( { className : "edui-for-" + d , title : h , onclick : function ( ) { if ( i ) switch ( d ) { case "wordimage" : var a = f . execCommand ( "wordimage" ) ; a && a . length && ( i . render ( ) , i . open ( ) ) ; break ; case "scrawl" : f . queryCommandState ( "scrawl" ) != - 1 && ( i . render ( ) , i . open ( ) ) ; break ; default : i . render ( ) , i . open ( ) } } , theme : f . options . theme , disabled : "scrawl" == d && f . queryCommandState ( "scrawl" ) == - 1 || "charts" == d } ) ; return b . buttons [ d ] = j , f . addListener ( "selectionchange" , function ( ) { var a = { edittable : 1 } ; if ( ! ( d in a ) ) { var b = f . queryCommandState ( d ) ; j . getDom ( ) && ( j . setDisabled ( b == - 1 ) , j . setChecked ( b ) ) } } ) , j } } ( f . toLowerCase ( ) ) } ( i , j [ i ] ) ; b . snapscreen = function ( a , c , d ) { d = a . options . labelMap . snapscreen || a . getLang ( "labelMap.snapscreen" ) || "" ; var f = new b . Button ( { className : "edui-for-snapscreen" , title : d , onclick : function ( ) { a . execCommand ( "snapscreen" ) } , theme : a . options . theme } ) ; if ( b . buttons . snapscreen = f , c = c || ( a . options . iframeUrlMap || { } ) . snapscreen || e . snapscreen ) { var g = new b . Dialog ( { iframeUrl : a . ui . mapUrl ( c ) , editor : a , className : "edui-for-snapscreen" , title : d , buttons : [ { className : "edui-okbutton" , label : a . getLang ( "ok" ) , editor : a , onclick : function ( ) { g . close ( ! 0 ) } } , { className : "edui-cancelbutton" , label : a . getLang ( "cancel" ) , editor : a , onclick : function ( ) { g . close ( ! 1 ) } } ] } ) ; g . render ( ) , a . ui . _dialogs . snapscreenDialog = g } return a . addListener ( "selectionchange" , function ( ) { f . setDisabled ( a . queryCommandState ( "snapscreen" ) == - 1 ) } ) , f } , b . insertcode = function ( c , d , e ) { d = c . options . insertcode || [ ] , e = c . options . labelMap . insertcode || c . getLang ( "labelMap.insertcode" ) || "" ; var f = [ ] ; a . each ( d , function ( a , b ) { f . push ( { label : a , value : b , theme : c . options . theme , renderLabelHtml : function ( ) { return '<div class="edui-label %%-label" >' + ( this . label || "" ) + "</div>" } } ) } ) ; var g = new b . Combox ( { editor : c , items : f , onselect : function ( a , b ) { c . execCommand ( "insertcode" , this . items [ b ] . value ) } , onbuttonclick : function ( ) { this . showPopup ( ) } , title : e , initValue : e , className : "edui-for-insertcode" , indexByValue : function ( a ) { if ( a ) for ( var b , c = 0 ; b = this . items [ c ] ; c ++ ) if ( b . value . indexOf ( a ) != - 1 ) return c ; return - 1 } } ) ; return b . buttons . insertcode = g , c . addListener ( "selectionchange" , function ( a , b , d ) { if ( ! d ) { var f = c . queryCommandState ( "insertcode" ) ; if ( f == - 1 ) g . setDisabled ( ! 0 ) ; else { g . setDisabled ( ! 1 ) ; var h = c . queryCommandValue ( "insertcode" ) ; if ( ! h ) return void g . setValue ( e ) ; h && ( h = h . replace ( /['"]/g , "" ) . split ( "," ) [ 0 ] ) , g . setValue ( h ) } } } ) , g } , b . fontfamily = function ( c , d , e ) { if ( d = c . options . fontfamily || [ ] , e = c . options . labelMap . fontfamily || c . getLang ( "labelMap.fontfamily" ) || "" , d . length ) { for ( var f , g = 0 , h = [ ] ; f = d [ g ] ; g ++ ) { var i = c . getLang ( "fontfamily" ) [ f . name ] || "" ; ! function ( b , d ) { h . push ( { label : b , value : d , theme : c . options . theme , renderLabelHtml : function ( ) { return ' < div class = " edui - label % % - la
} ( ) , function ( ) { function a ( a ) { this . initOptions ( a ) , this . initEditorUI ( ) } var b = baidu . editor . utils , c = baidu . editor . ui . uiUtils , d = baidu . editor . ui . UIBase , e = baidu . editor . dom . domUtils , f = [ ] ; a . prototype = { uiName : "editor" , initEditorUI : function ( ) { function a ( a , b ) { a . setOpt ( { wordCount : ! 0 , maximumWords : 1e4 , wordCountMsg : a . options . wordCountMsg || a . getLang ( "wordCountMsg" ) , wordOverFlowMsg : a . options . wordOverFlowMsg || a . getLang ( "wordOverFlowMsg" ) } ) ; var c = a . options , d = c . maximumWords , e = c . wordCountMsg , f = c . wordOverFlowMsg , g = b . getDom ( "wordcount" ) ; if ( c . wordCount ) { var h = a . getContentLength ( ! 0 ) ; h > d ? ( g . innerHTML = f , a . fireEvent ( "wordcountoverflow" ) ) : g . innerHTML = e . replace ( "{#leave}" , d - h ) . replace ( "{#count}" , h ) } } this . editor . ui = this , this . _dialogs = { } , this . initUIBase ( ) , this . _initToolbars ( ) ; var b = this . editor , c = this ; b . addListener ( "ready" , function ( ) { function d ( ) { a ( b , c ) , e . un ( b . document , "click" , arguments . callee ) } b . getDialog = function ( a ) { return b . ui . _dialogs [ a + "Dialog" ] } , e . on ( b . window , "scroll" , function ( a ) { baidu . editor . ui . Popup . postHide ( a ) } ) , b . ui . _actualFrameWidth = b . options . initialFrameWidth , UE . browser . ie && 6 === UE . browser . version && b . container . ownerDocument . execCommand ( "BackgroundImageCache" , ! 1 , ! 0 ) , b . options . elementPathEnabled && ( b . ui . getDom ( "elementpath" ) . innerHTML = '<div class="edui-editor-breadcrumb">' + b . getLang ( "elementPathTip" ) + ":</div>" ) , b . options . wordCount && ( e . on ( b . document , "click" , d ) , b . ui . getDom ( "wordcount" ) . innerHTML = b . getLang ( "wordCountTip" ) ) , b . ui . _scale ( ) , b . options . scaleEnabled ? ( b . autoHeightEnabled && b . disableAutoHeight ( ) , c . enableScale ( ) ) : c . disableScale ( ) , b . options . elementPathEnabled || b . options . wordCount || b . options . scaleEnabled || ( b . ui . getDom ( "elementpath" ) . style . display = "none" , b . ui . getDom ( "wordcount" ) . style . display = "none" , b . ui . getDom ( "scale" ) . style . display = "none" ) , b . selection . isFocus ( ) && b . fireEvent ( "selectionchange" , ! 1 , ! 0 ) } ) , b . addListener ( "mousedown" , function ( a , b ) { var c = b . target || b . srcElement ; baidu . editor . ui . Popup . postHide ( b , c ) , baidu . editor . ui . ShortCutMenu . postHide ( b ) } ) , b . addListener ( "delcells" , function ( ) { UE . ui . edittip && new UE . ui . edittip ( b ) , b . getDialog ( "edittip" ) . open ( ) } ) ; var d , f , g = ! 1 ; b . addListener ( "afterpaste" , function ( ) { b . queryCommandState ( "pasteplain" ) || ( baidu . editor . ui . PastePicker && ( d = new baidu . editor . ui . Popup ( { content : new baidu . editor . ui . PastePicker ( { editor : b } ) , editor : b , className : "edui-wordpastepop" } ) , d . render ( ) ) , g = ! 0 ) } ) , b . addListener ( "afterinserthtml" , function ( ) { clearTimeout ( f ) , f = setTimeout ( function ( ) { if ( d && ( g || b . ui . _isTransfer ) ) { if ( d . isHidden ( ) ) { var a = e . createElement ( b . document , "span" , { style : "line-height:0px;" , innerHTML : "\ufeff" } ) , c = b . selection . getRange ( ) ; c . insertNode ( a ) ; var f = getDomNode ( a , "firstChild" , "previousSibling" ) ; f && d . showAnchor ( 3 == f . nodeType ? f . parentNode : f ) , e . remove ( a ) } else d . show ( ) ; delete b . ui . _isTransfer , g = ! 1 } } , 200 ) } ) , b . addListener ( "contextmenu" , function ( a , b ) { baidu . editor . ui . Popup . postHide ( b ) } ) , b . addListener ( "keydown" , function ( a , b ) { d && d . dispose ( b ) ; var c = b . keyCode || b . which ; b . altKey && 90 == c && UE . ui . buttons . fullscreen . onclick ( ) } ) , b . addListener ( "wordcount" , function ( b ) { a ( this , c ) } ) , b . addListener ( "selectionchange" , function ( ) { b . options . elementPathEnabled && c [ ( b . queryCommandState ( "elementpath" ) == - 1 ? "dis" : "en" ) + "ableElementPath" ] ( ) , b . options . scaleEnabled && c [ ( b . queryCommandState ( "scale" ) == - 1 ? "dis" : "en" ) + "ableScale" ] ( ) } ) ; var h = new baidu . editor . ui . Popup ( { editor : b , content : "" , className : "edui-bubble" , _onEditButtonClick : function ( ) { this . hide ( ) , b . ui . _dialogs . linkDialog . open ( ) } , _onImgEditButtonClick : function ( a ) { this . hide ( ) , b . ui . _dialogs [ a ] && b . ui . _dialogs [ a ] . open ( ) } , _onImgSetFloat : function ( a ) { this . hide ( ) , b . execCommand ( "imagefloat" , a ) } , _setIframeAlign : function ( a ) { var b = h . anchorEl , c = b . cloneNode ( ! 0 ) ; switch ( a ) { case - 2 : c . setAttribute ( "align" , "" ) ; break ; case - 1 : c . setAtt
} ( ) ;