2016-01-17 11:29:46 +08:00
/* KindEditor 4.1.10 (2013-11-23), Copyright (C) kindsoft.net, Licence: http://www.kindsoft.net/license.php */ ( function ( b , d ) { function f ( a ) { if ( ! a ) return ! 1 ; return Object . prototype . toString . call ( a ) === "[object Array]" } function j ( a ) { if ( ! a ) return ! 1 ; return Object . prototype . toString . call ( a ) === "[object Function]" } function e ( a , c ) { for ( var g = 0 , b = c . length ; g < b ; g ++ ) if ( a === c [ g ] ) return g ; return - 1 } function h ( a , c ) { if ( f ( a ) ) for ( var g = 0 , b = a . length ; g < b ; g ++ ) { if ( c . call ( a [ g ] , g , a [ g ] ) === ! 1 ) break } else for ( g in a ) if ( a . hasOwnProperty ( g ) && c . call ( a [ g ] , g , a [ g ] ) === ! 1 ) break } function m ( a ) { return a . replace ( /(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g , "" ) }
function n ( a , c , g ) { g = g === d ? "," : g ; return ( g + c + g ) . indexOf ( g + a + g ) >= 0 } function o ( a , c ) { c = c || "px" ; return a && /^\d+$/ . test ( a ) ? a + c : a } function l ( a ) { var c ; return a && ( c = /(\d+)/ . exec ( a ) ) ? parseInt ( c [ 1 ] , 10 ) : 0 } function s ( a ) { return a . replace ( /&/g , "&" ) . replace ( /</g , "<" ) . replace ( />/g , ">" ) . replace ( /"/g , """ ) } function v ( a ) { return a . replace ( /</g , "<" ) . replace ( />/g , ">" ) . replace ( /"/g , '"' ) . replace ( /&/g , "&" ) } function p ( a ) { var c = a . split ( "-" ) , a = "" ; h ( c , function ( c , b ) { a += c > 0 ? b . charAt ( 0 ) . toUpperCase ( ) +
b . substr ( 1 ) : b } ) ; return a } function r ( a ) { function c ( a ) { a = parseInt ( a , 10 ) . toString ( 16 ) . toUpperCase ( ) ; return a . length > 1 ? a : "0" + a } return a . replace ( /rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/ig , function ( a , b , d , k ) { return "#" + c ( b ) + c ( d ) + c ( k ) } ) } function z ( a , c ) { var c = c === d ? "," : c , g = { } , b = f ( a ) ? a : a . split ( c ) , t ; h ( b , function ( a , c ) { if ( t = /^(\d+)\.\.(\d+)$/ . exec ( c ) ) for ( var b = parseInt ( t [ 1 ] , 10 ) ; b <= parseInt ( t [ 2 ] , 10 ) ; b ++ ) g [ b . toString ( ) ] = ! 0 ; else g [ c ] = ! 0 } ) ; return g } function D ( a , c ) { return Array . prototype . slice . call ( a , c || 0 ) } function q ( a ,
c ) { return a === d ? c : a } function A ( a , c , g ) { g || ( g = c , c = null ) ; var b ; if ( c ) { var d = function ( ) { } ; d . prototype = c . prototype ; b = new d ; h ( g , function ( a , c ) { b [ a ] = c } ) } else b = g ; b . constructor = a ; a . prototype = b ; a . parent = c ? c . prototype : null } function B ( a ) { var c ; if ( c = /\{[\s\S]*\}|\[[\s\S]*\]/ . exec ( a ) ) a = c [ 0 ] ; c = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g ; c . lastIndex = 0 ; c . test ( a ) && ( a = a . replace ( c , function ( a ) { return "\\u" + ( "0000" + a . charCodeAt ( 0 ) . toString ( 16 ) ) . slice ( - 4 ) } ) ) ;
if ( /^[\],:{}\s]*$/ . test ( a . replace ( /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g , "@" ) . replace ( /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g , "]" ) . replace ( /(?:^|:|,)(?:\s*\[)+/g , "" ) ) ) return eval ( "(" + a + ")" ) ; throw "JSON parse error" ; } function G ( a , c , g ) { a . addEventListener ? a . addEventListener ( c , g , fb ) : a . attachEvent && a . attachEvent ( "on" + c , g ) } function C ( a , c , g ) { a . removeEventListener ? a . removeEventListener ( c , g , fb ) : a . detachEvent && a . detachEvent ( "on" + c , g ) } function u ( a , c ) { this . init ( a , c ) } function I ( a ) { try { delete a [ ma ] } catch ( c ) { a . removeAttribute &&
a . removeAttribute ( ma ) } } function E ( a , c , g ) { if ( c . indexOf ( "," ) >= 0 ) h ( c . split ( "," ) , function ( ) { E ( a , this , g ) } ) ; else { var b = a [ ma ] || null ; b || ( a [ ma ] = ++ gb , b = gb ) ; L [ b ] === d && ( L [ b ] = { } ) ; var t = L [ b ] [ c ] ; t && t . length > 0 ? C ( a , c , t [ 0 ] ) : ( L [ b ] [ c ] = [ ] , L [ b ] . el = a ) ; t = L [ b ] [ c ] ; t . length === 0 && ( t [ 0 ] = function ( c ) { var g = c ? new u ( a , c ) : d ; h ( t , function ( c , b ) { c > 0 && b && b . call ( a , g ) } ) } ) ; e ( g , t ) < 0 && t . push ( g ) ; G ( a , c , t [ 0 ] ) } } function T ( a , c , g ) { if ( c && c . indexOf ( "," ) >= 0 ) h ( c . split ( "," ) , function ( ) { T ( a , this , g ) } ) ; else { var b = a [ ma ] || null ; if ( b ) if ( c === d ) b in L && ( h ( L [ b ] ,
function ( c , g ) { c != "el" && g . length > 0 && C ( a , c , g [ 0 ] ) } ) , delete L [ b ] , I ( a ) ) ; else if ( L [ b ] ) { var t = L [ b ] [ c ] ; if ( t && t . length > 0 ) { g === d ? ( C ( a , c , t [ 0 ] ) , delete L [ b ] [ c ] ) : ( h ( t , function ( a , c ) { a > 0 && c === g && t . splice ( a , 1 ) } ) , t . length == 1 && ( C ( a , c , t [ 0 ] ) , delete L [ b ] [ c ] ) ) ; var k = 0 ; h ( L [ b ] , function ( ) { k ++ } ) ; k < 2 && ( delete L [ b ] , I ( a ) ) } } } } function qa ( a , c ) { if ( c . indexOf ( "," ) >= 0 ) h ( c . split ( "," ) , function ( ) { qa ( a , this ) } ) ; else { var g = a [ ma ] || null ; if ( g ) { var b = L [ g ] [ c ] ; if ( L [ g ] && b && b . length > 0 ) b [ 0 ] ( ) } } } function $ ( a , c , g ) { c = /^\d{2,}$/ . test ( c ) ? c : c . toUpperCase ( ) . charCodeAt ( 0 ) ;
E ( a , "keydown" , function ( b ) { b . ctrlKey && b . which == c && ! b . shiftKey && ! b . altKey && ( g . call ( a ) , b . stop ( ) ) } ) } function M ( a ) { for ( var c = { } , g = /\s*([\w\-]+)\s*:([^;]*)(;|$)/g , b ; b = g . exec ( a ) ; ) { var d = m ( b [ 1 ] . toLowerCase ( ) ) ; b = m ( r ( b [ 2 ] ) ) ; c [ d ] = b } return c } function K ( a ) { for ( var c = { } , g = /\s+(?:([\w\-:]+)|(?:([\w\-:]+)=([^\s"'<>]+))|(?:([\w\-:"]+)="([^"]*)")|(?:([\w\-:"]+)='([^']*)'))(?=(?:\s|\/|>)+)/g , b ; b = g . exec ( a ) ; ) { var d = ( b [ 1 ] || b [ 2 ] || b [ 4 ] || b [ 6 ] ) . toLowerCase ( ) ; c [ d ] = ( b [ 2 ] ? b [ 3 ] : b [ 4 ] ? b [ 5 ] : b [ 7 ] ) || "" } return c } function O ( a , c ) { return a =
/\s+class\s*=/ . test ( a ) ? a . replace ( /(\s+class=["']?)([^"']*)(["']?[\s>])/ , function ( a , b , d , k ) { return ( " " + d + " " ) . indexOf ( " " + c + " " ) < 0 ? d === "" ? b + c + k : b + d + " " + c + k : a } ) : a . substr ( 0 , a . length - 1 ) + ' class="' + c + '">' } function Q ( a ) { var c = "" ; h ( M ( a ) , function ( a , b ) { c += a + ":" + b + ";" } ) ; return c } function R ( a , c , g , b ) { function t ( a ) { for ( var a = a . split ( "/" ) , c = [ ] , g = 0 , b = a . length ; g < b ; g ++ ) { var d = a [ g ] ; d == ".." ? c . length > 0 && c . pop ( ) : d !== "" && d != "." && c . push ( d ) } return "/" + c . join ( "/" ) } function k ( c , g ) { if ( a . substr ( 0 , c . length ) === c ) { for ( var d = [ ] , t =
0 ; t < g ; t ++ ) d . push ( ".." ) ; t = "." ; d . length > 0 && ( t += "/" + d . join ( "/" ) ) ; b == "/" && ( t += "/" ) ; return t + a . substr ( c . length ) } else if ( i = /^(.*)\// . exec ( c ) ) return k ( i [ 1 ] , ++ g ) } c = q ( c , "" ) . toLowerCase ( ) ; a . substr ( 0 , 5 ) != "data:" && ( a = a . replace ( /([^:])\/\//g , "$1/" ) ) ; if ( e ( c , [ "absolute" , "relative" , "domain" ] ) < 0 ) return a ; g = g || location . protocol + "//" + location . host ; if ( b === d ) var w = location . pathname . match ( /^(\/.*)\// ) , b = w ? w [ 1 ] : "" ; var i ; if ( i = /^(\w+:\/\/[^\/]*)/ . exec ( a ) ) { if ( i [ 1 ] !== g ) return a } else if ( /^\w+:/ . test ( a ) ) return a ; /^\// . test ( a ) ?
a = g + t ( a . substr ( 1 ) ) : /^\w+:\/\// . test ( a ) || ( a = g + t ( b + "/" + a ) ) ; c === "relative" ? a = k ( g + b , 0 ) . substr ( 2 ) : c === "absolute" && a . substr ( 0 , g . length ) === g && ( a = a . substr ( g . length ) ) ; return a } function H ( a , c , g , b , d ) { a == null && ( a = "" ) ; var g = g || "" , b = q ( b , ! 1 ) , d = q ( d , "\t" ) , k = "xx-small,x-small,small,medium,large,x-large,xx-large" . split ( "," ) , a = a . replace ( /(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/ig , function ( a , c , g , b ) { return c + g . replace ( /<(?:br|br\s[^>]*)>/ig , "\n" ) + b } ) , a = a . replace ( /<(?:br|br\s[^>]*)\s*\/?>\s*<\/p>/ig , "</p>" ) , a = a . replace ( /(<(?:p|p\s[^>]*)>)\s*(<\/p>)/ig ,
"$1<br />$2" ) , a = a . replace ( /\u200B/g , "" ) , a = a . replace ( /\u00A9/g , "©" ) , a = a . replace ( /\u00AE/g , "®" ) , a = a . replace ( /<[^>]+/g , function ( a ) { return a . replace ( /\s+/g , " " ) } ) , w = { } ; c && ( h ( c , function ( a , c ) { for ( var g = a . split ( "," ) , b = 0 , d = g . length ; b < d ; b ++ ) w [ g [ b ] ] = z ( c ) } ) , w . script || ( a = a . replace ( /(<(?:script|script\s[^>]*)>)([\s\S]*?)(<\/script>)/ig , "" ) ) , w . style || ( a = a . replace ( /(<(?:style|style\s[^>]*)>)([\s\S]*?)(<\/style>)/ig , "" ) ) ) ; var i = [ ] , a = a . replace ( /(\s*)<(\/)?([\w\-:]+)((?:\s+|(?:\s+[\w\-:]+)|(?:\s+[\w\-:]+=[^\s"'<>]+)|(?:\s+[\w\-:"]+="[^"]*")|(?:\s+[\w\-:"]+='[^']*'))*)(\/)?>(\s*)/g ,
function ( a , f , n , l , o , j , s ) { var f = f || "" , n = n || "" , m = l . toLowerCase ( ) , r = o || "" , l = j ? " " + j : "" , s = s || "" ; if ( c && ! w [ m ] ) return "" ; l === "" && hb [ m ] && ( l = " /" ) ; ib [ m ] && ( f && ( f = " " ) , s && ( s = " " ) ) ; Ma [ m ] && ( n ? s = "\n" : f = "\n" ) ; b && m == "br" && ( s = "\n" ) ; if ( jb [ m ] && ! Ma [ m ] ) if ( b ) { n && i . length > 0 && i [ i . length - 1 ] === m ? i . pop ( ) : i . push ( m ) ; s = f = "\n" ; o = 0 ; for ( j = n ? i . length : i . length - 1 ; o < j ; o ++ ) f += d , n || ( s += d ) ; l ? i . pop ( ) : n || ( s += d ) } else f = s = "" ; if ( r !== "" ) { var p = K ( a ) ; if ( m === "font" ) { var v = { } , q = "" ; h ( p , function ( a , c ) { if ( a === "color" ) v . color = c , delete p [ a ] ; a === "size" &&
( v [ "font-size" ] = k [ parseInt ( c , 10 ) - 1 ] || "" , delete p [ a ] ) ; a === "face" && ( v [ "font-family" ] = c , delete p [ a ] ) ; a === "style" && ( q = c ) } ) ; q && ! /;$/ . test ( q ) && ( q += ";" ) ; h ( v , function ( a , c ) { c !== "" && ( /\s/ . test ( c ) && ( c = "'" + c + "'" ) , q += a + ":" + c + ";" ) } ) ; p . style = q } h ( p , function ( a , b ) { Lb [ a ] && ( p [ a ] = a ) ; e ( a , [ "src" , "href" ] ) >= 0 && ( p [ a ] = R ( b , g ) ) ; ( c && a !== "style" && ! w [ m ] [ "*" ] && ! w [ m ] [ a ] || m === "body" && a === "contenteditable" || /^kindeditor_\d+$/ . test ( a ) ) && delete p [ a ] ; if ( a === "style" && b !== "" ) { var d = M ( b ) ; h ( d , function ( a ) { c && ! w [ m ] . style && ! w [ m ] [ "." + a ] && delete d [ a ] } ) ;
var V = "" ; h ( d , function ( a , c ) { V += a + ":" + c + ";" } ) ; p . style = V } } ) ; r = "" ; h ( p , function ( a , c ) { a === "style" && c === "" || ( c = c . replace ( /"/g , """ ) , r += " " + a + '="' + c + '"' ) } ) } m === "font" && ( m = "span" ) ; return f + "<" + n + m + r + l + ">" + s } ) , a = a . replace ( /(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/ig , function ( a , c , g , b ) { return c + g . replace ( /\n/g , '<span id="__kindeditor_pre_newline__">\n' ) + b } ) , a = a . replace ( /\n\s*\n/g , "\n" ) , a = a . replace ( /<span id="__kindeditor_pre_newline__">\n/g , "\n" ) ; return m ( a ) } function U ( a , c ) { a = a . replace ( /<meta[\s\S]*?>/ig ,
"" ) . replace ( /<![\s\S]*?>/ig , "" ) . replace ( /<style[^>]*>[\s\S]*?<\/style>/ig , "" ) . replace ( /<script[^>]*>[\s\S]*?<\/script>/ig , "" ) . replace ( /<w:[^>]+>[\s\S]*?<\/w:[^>]+>/ig , "" ) . replace ( /<o:[^>]+>[\s\S]*?<\/o:[^>]+>/ig , "" ) . replace ( /<xml>[\s\S]*?<\/xml>/ig , "" ) . replace ( /<(?:table|td)[^>]*>/ig , function ( a ) { return a . replace ( /border-bottom:([#\w\s]+)/ig , "border:$1" ) } ) ; return H ( a , c ) } function W ( a ) { if ( /\.(rm|rmvb)(\?|$)/i . test ( a ) ) return "audio/x-pn-realaudio-plugin" ; if ( /\.(swf|flv)(\?|$)/i . test ( a ) ) return "application/x-shockwave-flash" ;
return "video/x-ms-asf-plugin" } function S ( a ) { return K ( unescape ( a ) ) } function Na ( a ) { var c = "<embed " ; h ( a , function ( a , b ) { c += a + '="' + b + '" ' } ) ; c += "/>" ; return c } function kb ( a , c ) { var g = c . width , b = c . height , d = c . type || W ( c . src ) , k = Na ( c ) , w = "" ; /\D/ . test ( g ) ? w += "width:" + g + ";" : g > 0 && ( w += "width:" + g + "px;" ) ; /\D/ . test ( b ) ? w += "height:" + b + ";" : b > 0 && ( w += "height:" + b + "px;" ) ; g = /realaudio/i . test ( d ) ? "ke-rm" : /flash/i . test ( d ) ? "ke-flash" : "ke-media" ; g = '<img class="' + g + '" src="' + a + '" ' ; w !== "" && ( g += 'style="' + w + '" ' ) ; g += 'data-ke-tag="' + escape ( k ) +
'" alt="" />' ; return g } function Da ( a , c ) { if ( a . nodeType == 9 && c . nodeType != 9 ) return ! 0 ; for ( ; c = c . parentNode ; ) if ( c == a ) return ! 0 ; return ! 1 } function Ea ( a , c ) { var c = c . toLowerCase ( ) , g = null ; if ( ! Mb && a . nodeName . toLowerCase ( ) != "script" ) { var b = a . ownerDocument . createElement ( "div" ) ; b . appendChild ( a . cloneNode ( ! 1 ) ) ; b = K ( v ( b . innerHTML ) ) ; c in b && ( g = b [ c ] ) } else try { g = a . getAttribute ( c , 2 ) } catch ( d ) { g = a . getAttribute ( c , 1 ) } c === "style" && g !== null && ( g = Q ( g ) ) ; return g } function Fa ( a , c ) { function g ( a ) { if ( typeof a != "string" ) return a ; return a . replace ( /([^\w\-])/g ,
"\\$1" ) } function b ( a , c ) { return a === "*" || a . toLowerCase ( ) === g ( c . toLowerCase ( ) ) } function d ( a , c , g ) { var t = [ ] ; ( a = ( g . ownerDocument || g ) . getElementById ( a . replace ( /\\/g , "" ) ) ) && b ( c , a . nodeName ) && Da ( g , a ) && t . push ( a ) ; return t } function k ( a , c , g ) { var d = g . ownerDocument || g , t = [ ] , k , w , i ; if ( g . getElementsByClassName ) { d = g . getElementsByClassName ( a . replace ( /\\/g , "" ) ) ; k = 0 ; for ( w = d . length ; k < w ; k ++ ) i = d [ k ] , b ( c , i . nodeName ) && t . push ( i ) } else if ( d . querySelectorAll ) { d = d . querySelectorAll ( ( g . nodeName !== "#document" ? g . nodeName + " " : "" ) + c + "." +
a ) ; k = 0 ; for ( w = d . length ; k < w ; k ++ ) i = d [ k ] , Da ( g , i ) && t . push ( i ) } else { d = g . getElementsByTagName ( c ) ; a = " " + a + " " ; k = 0 ; for ( w = d . length ; k < w ; k ++ ) if ( i = d [ k ] , i . nodeType == 1 ) ( c = i . className ) && ( " " + c + " " ) . indexOf ( a ) > - 1 && t . push ( i ) } return t } function w ( a , c , b , d ) { for ( var t = [ ] , b = d . getElementsByTagName ( b ) , V = 0 , k = b . length ; V < k ; V ++ ) d = b [ V ] , d . nodeType == 1 && ( c === null ? Ea ( d , a ) !== null && t . push ( d ) : c === g ( Ea ( d , a ) ) && t . push ( d ) ) ; return t } function i ( a , c ) { var g = [ ] , e , f = ( e = /^((?:\\.|[^.#\s\[<>])+)/ . exec ( a ) ) ? e [ 1 ] : "*" ; if ( e = /#((?:[\w\-]|\\.)+)$/ . exec ( a ) ) g =
d ( e [ 1 ] , f , c ) ; else if ( e = /\.((?:[\w\-]|\\.)+)$/ . exec ( a ) ) g = k ( e [ 1 ] , f , c ) ; else if ( e = /\[((?:[\w\-]|\\.)+)\]/ . exec ( a ) ) g = w ( e [ 1 ] . toLowerCase ( ) , null , f , c ) ; else if ( e = /\[((?:[\w\-]|\\.)+)\s*=\s*['"]?((?:\\.|[^'"]+)+)['"]?\]/ . exec ( a ) ) { g = e [ 1 ] . toLowerCase ( ) ; e = e [ 2 ] ; if ( g === "id" ) f = d ( e , f , c ) ; else if ( g === "class" ) f = k ( e , f , c ) ; else if ( g === "name" ) { g = [ ] ; e = ( c . ownerDocument || c ) . getElementsByName ( e . replace ( /\\/g , "" ) ) ; for ( var Z , h = 0 , l = e . length ; h < l ; h ++ ) Z = e [ h ] , b ( f , Z . nodeName ) && Da ( c , Z ) && Z . getAttribute ( "name" ) !== null && g . push ( Z ) ; f = g } else f =
w ( g , e , f , c ) ; g = f } else { f = c . getElementsByTagName ( f ) ; Z = 0 ; for ( h = f . length ; Z < h ; Z ++ ) e = f [ Z ] , e . nodeType == 1 && g . push ( e ) } return g } var f = a . split ( "," ) ; if ( f . length > 1 ) { var n = [ ] ; h ( f , function ( ) { h ( Fa ( this , c ) , function ( ) { e ( this , n ) < 0 && n . push ( this ) } ) } ) ; return n } for ( var c = c || document , f = [ ] , l , o = /((?:\\.|[^\s>])+|[\s>])/g ; l = o . exec ( a ) ; ) l [ 1 ] !== " " && f . push ( l [ 1 ] ) ; l = [ ] ; if ( f . length == 1 ) return i ( f [ 0 ] , c ) ; var o = ! 1 , m , s , j , r , p , v , q , B , E , u ; v = 0 ; for ( lenth = f . length ; v < lenth ; v ++ ) if ( m = f [ v ] , m === ">" ) o = ! 0 ; else { if ( v > 0 ) { s = [ ] ; q = 0 ; for ( E = l . length ; q < E ; q ++ ) { r =
l [ q ] ; j = i ( m , r ) ; B = 0 ; for ( u = j . length ; B < u ; B ++ ) p = j [ B ] , o ? r === p . parentNode && s . push ( p ) : s . push ( p ) } l = s } else l = i ( m , c ) ; if ( l . length === 0 ) return [ ] } return l } function ia ( a ) { if ( ! a ) return document ; return a . ownerDocument || a . document || a } function ja ( a ) { if ( ! a ) return b ; a = ia ( a ) ; return a . parentWindow || a . defaultView } function Nb ( a , c ) { if ( a . nodeType == 1 ) { var g = ia ( a ) ; try { a . innerHTML = '<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />' + c ; var b = g . getElementById ( "__kindeditor_temp_tag__" ) ; b . parentNode . removeChild ( b ) } catch ( d ) { i ( a ) . empty ( ) ,
i ( "@" + c , g ) . each ( function ( ) { a . appendChild ( this ) } ) } } } function Oa ( a , c , g ) { F && N < 8 && c . toLowerCase ( ) == "class" && ( c = "className" ) ; a . setAttribute ( c , "" + g ) } function Pa ( a ) { if ( ! a || ! a . nodeName ) return "" ; return a . nodeName . toLowerCase ( ) } function Ob ( a , c ) { var g = ja ( a ) , b = p ( c ) , d = "" ; g . getComputedStyle ? ( g = g . getComputedStyle ( a , null ) , d = g [ b ] || g . getPropertyValue ( c ) || a . style [ b ] ) : a . currentStyle && ( d = a . currentStyle [ b ] || a . style [ b ] ) ; return d } function X ( a ) { a = a || document ; return da ? a . body : a . documentElement } function na ( a ) { var a = a || document ,
c ; F || Pb || Qa ? ( c = X ( a ) . scrollLeft , a = X ( a ) . scrollTop ) : ( c = ja ( a ) . scrollX , a = ja ( a ) . scrollY ) ; return { x : c , y : a } } function P ( a ) { this . init ( a ) } function lb ( a ) { a . collapsed = a . startContainer === a . endContainer && a . startOffset === a . endOffset ; return a } function Ra ( a , c , g ) { function b ( d , t , V ) { var k = d . nodeValue . length , i ; c && ( i = d . cloneNode ( ! 0 ) , i = t > 0 ? i . splitText ( t ) : i , V < k && i . splitText ( V - t ) ) ; if ( g ) { var w = d ; t > 0 && ( w = d . splitText ( t ) , a . setStart ( d , t ) ) ; V < k && ( d = w . splitText ( V - t ) , a . setEnd ( d , 0 ) ) ; e . push ( w ) } return i } function d ( ) { g && a . up ( ) . collapse ( ! 0 ) ;
for ( var c = 0 , b = e . length ; c < b ; c ++ ) { var t = e [ c ] ; t . parentNode && t . parentNode . removeChild ( t ) } } function k ( d , t ) { for ( var m = d . firstChild , s ; m ; ) { s = ( new aa ( i ) ) . selectNode ( m ) ; h = s . compareBoundaryPoints ( ra , a ) ; h >= 0 && l <= 0 && ( l = s . compareBoundaryPoints ( sa , a ) ) ; l >= 0 && n <= 0 && ( n = s . compareBoundaryPoints ( oa , a ) ) ; n >= 0 && o <= 0 && ( o = s . compareBoundaryPoints ( ta , a ) ) ; if ( o >= 0 ) return ! 1 ; s = m . nextSibling ; if ( h > 0 ) if ( m . nodeType == 1 ) if ( l >= 0 && n <= 0 ) c && t . appendChild ( m . cloneNode ( ! 0 ) ) , g && e . push ( m ) ; else { var j ; c && ( j = m . cloneNode ( ! 1 ) , t . appendChild ( j ) ) ; if ( k ( m ,
j ) === ! 1 ) return ! 1 } else if ( m . nodeType == 3 && ( m = m == f . startContainer ? b ( m , f . startOffset , m . nodeValue . length ) : m == f . endContainer ? b ( m , 0 , f . endOffset ) : b ( m , 0 , m . nodeValue . length ) , c ) ) try { t . appendChild ( m ) } catch ( r ) { } m = s } } var i = a . doc , e = [ ] , f = a . cloneRange ( ) . down ( ) , h = - 1 , l = - 1 , n = - 1 , o = - 1 , m = a . commonAncestor ( ) , s = i . createDocumentFragment ( ) ; if ( m . nodeType == 3 ) return m = b ( m , a . startOffset , a . endOffset ) , c && s . appendChild ( m ) , d ( ) , c ? s : a ; k ( m , s ) ; g && a . up ( ) . collapse ( ! 0 ) ; for ( var m = 0 , j = e . length ; m < j ; m ++ ) { var r = e [ m ] ; r . parentNode && r . parentNode . removeChild ( r ) } return c ?
s : a } function ua ( a , c ) { for ( var g = c ; g ; ) { var b = i ( g ) ; if ( b . name == "marquee" || b . name == "select" ) return ; g = g . parentNode } try { a . moveToElementText ( c ) } catch ( d ) { } } function mb ( a , c ) { var g = a . parentElement ( ) . ownerDocument , b = a . duplicate ( ) ; b . collapse ( c ) ; var d = b . parentElement ( ) , k = d . childNodes ; if ( k . length === 0 ) return { node : d . parentNode , offset : i ( d ) . index ( ) } ; var w = g , e = 0 , f = - 1 , h = a . duplicate ( ) ; ua ( h , d ) ; for ( var l = 0 , n = k . length ; l < n ; l ++ ) { var o = k [ l ] , f = h . compareEndPoints ( "StartToStart" , b ) ; if ( f === 0 ) return { node : o . parentNode , offset : l } ; if ( o . nodeType ==
1 ) { var m = a . duplicate ( ) , s , j = i ( o ) , r = o ; j . isControl ( ) && ( s = g . createElement ( "span" ) , j . after ( s ) , r = s , e += j . text ( ) . replace ( /\r\n|\n|\r/g , "" ) . length ) ; ua ( m , r ) ; h . setEndPoint ( "StartToEnd" , m ) ; f > 0 ? e += m . text . replace ( /\r\n|\n|\r/g , "" ) . length : e = 0 ; s && i ( s ) . remove ( ) } else o . nodeType == 3 && ( h . moveStart ( "character" , o . nodeValue . length ) , e += o . nodeValue . length ) ; f < 0 && ( w = o ) } if ( f < 0 && w . nodeType == 1 ) return { node : d , offset : i ( d . lastChild ) . index ( ) + 1 } ; if ( f > 0 ) for ( ; w . nextSibling && w . nodeType == 1 ; ) w = w . nextSibling ; h = a . duplicate ( ) ; ua ( h , d ) ; h . setEndPoint ( "StartToEnd" ,
b ) ; e -= h . text . replace ( /\r\n|\n|\r/g , "" ) . length ; if ( f > 0 && w . nodeType == 3 ) for ( g = w . previousSibling ; g && g . nodeType == 3 ; ) e -= g . nodeValue . length , g = g . previousSibling ; return { node : w , offset : e } } function nb ( a , c ) { var g = a . ownerDocument || a , b = g . body . createTextRange ( ) ; if ( g == a ) return b . collapse ( ! 0 ) , b ; if ( a . nodeType == 1 && a . childNodes . length > 0 ) { var d = a . childNodes , k ; c === 0 ? ( k = d [ 0 ] , d = ! 0 ) : ( k = d [ c - 1 ] , d = ! 1 ) ; if ( ! k ) return b ; if ( i ( k ) . name === "head" ) return c === 1 && ( d = ! 0 ) , c === 2 && ( d = ! 1 ) , b . collapse ( d ) , b ; if ( k . nodeType == 1 ) { var w = i ( k ) , e ; w . isControl ( ) &&
( e = g . createElement ( "span" ) , d ? w . before ( e ) : w . after ( e ) , k = e ) ; ua ( b , k ) ; b . collapse ( d ) ; e && i ( e ) . remove ( ) ; return b } a = k ; c = d ? 0 : k . nodeValue . length } g = g . createElement ( "span" ) ; i ( a ) . before ( g ) ; ua ( b , g ) ; b . moveStart ( "character" , c ) ; i ( g ) . remove ( ) ; return b } function ob ( a ) { function c ( a ) { if ( i ( a . node ) . name == "tr" ) a . node = a . node . cells [ a . offset ] , a . offset = 0 } var g ; if ( Y ) { if ( a . item ) return g = ia ( a . item ( 0 ) ) , g = new aa ( g ) , g . selectNode ( a . item ( 0 ) ) , g ; g = a . parentElement ( ) . ownerDocument ; var b = mb ( a , ! 0 ) , a = mb ( a , ! 1 ) ; c ( b ) ; c ( a ) ; g = new aa ( g ) ; g . setStart ( b . node ,
b . offset ) ; g . setEnd ( a . node , a . offset ) ; return g } b = a . startContainer ; g = b . ownerDocument || b ; g = new aa ( g ) ; g . setStart ( b , a . startOffset ) ; g . setEnd ( a . endContainer , a . endOffset ) ; return g } function aa ( a ) { this . init ( a ) } function Sa ( a ) { if ( ! a . nodeName ) return a . constructor === aa ? a : ob ( a ) ; return new aa ( a ) } function ea ( a , c , g ) { try { a . execCommand ( c , ! 1 , g ) } catch ( b ) { } } function pb ( a , c ) { var g = "" ; try { g = a . queryCommandValue ( c ) } catch ( b ) { } typeof g !== "string" && ( g = "" ) ; return g } function Ta ( a ) { var c = ja ( a ) ; return Y ? a . selection : c . getSelection ( ) }
function qb ( a ) { var c = { } , g , b ; h ( a , function ( a , d ) { g = a . split ( "," ) ; for ( var i = 0 , e = g . length ; i < e ; i ++ ) b = g [ i ] , c [ b ] = d } ) ; return c } function Ua ( a , c ) { return rb ( a , c , "*" ) || rb ( a , c ) } function rb ( a , c , g ) { g = g || a . name ; if ( a . type !== 1 ) return ! 1 ; c = qb ( c ) ; if ( ! c [ g ] ) return ! 1 ; for ( var g = c [ g ] . split ( "," ) , c = 0 , b = g . length ; c < b ; c ++ ) { var d = g [ c ] ; if ( d === "*" ) return ! 0 ; var k = /^(\.?)([^=]+)(?:=([^=]*))?$/ . exec ( d ) , i = k [ 1 ] ? "css" : "attr" , d = k [ 2 ] , k = k [ 3 ] || "" ; if ( k === "" && a [ i ] ( d ) !== "" ) return ! 0 ; if ( k !== "" && a [ i ] ( d ) === k ) return ! 0 } return ! 1 } function Va ( a , c ) { a . type ==
1 && ( sb ( a , c , "*" ) , sb ( a , c ) ) } function sb ( a , c , g ) { g = g || a . name ; if ( a . type === 1 && ( c = qb ( c ) , c [ g ] ) ) { for ( var g = c [ g ] . split ( "," ) , c = ! 1 , b = 0 , d = g . length ; b < d ; b ++ ) { var k = g [ b ] ; if ( k === "*" ) { c = ! 0 ; break } var i = /^(\.?)([^=]+)(?:=([^=]*))?$/ . exec ( k ) , k = i [ 2 ] ; i [ 1 ] ? ( k = p ( k ) , a [ 0 ] . style [ k ] && ( a [ 0 ] . style [ k ] = "" ) ) : a . removeAttr ( k ) } c && a . remove ( ! 0 ) } } function Wa ( a ) { for ( ; a . first ( ) ; ) a = a . first ( ) ; return a } function pa ( a ) { if ( a . type != 1 || a . isSingle ( ) ) return ! 1 ; return a . html ( ) . replace ( /<[^>]+>/g , "" ) === "" } function Qb ( a , c , g ) { h ( c , function ( c , g ) { c !== "style" &&
a . attr ( c , g ) } ) ; h ( g , function ( c , g ) { a . css ( c , g ) } ) } function va ( a ) { this . init ( a ) } function tb ( a ) { a . nodeName && ( a = ia ( a ) , a = Sa ( a ) . selectNodeContents ( a . body ) . collapse ( ! 1 ) ) ; return new va ( a ) } function Xa ( a ) { var c = a . moveEl , g = a . moveFn , b = a . clickEl || c , t = a . beforeDrag , k = [ document ] ; ( a . iframeFix === d || a . iframeFix ) && i ( "iframe" ) . each ( function ( ) { if ( ! /^https?:\/\// . test ( R ( this . src || "" , "absolute" ) ) ) { var a ; try { a = Ya ( this ) } catch ( c ) { } if ( a ) { var g = i ( this ) . pos ( ) ; i ( a ) . data ( "pos-x" , g . x ) ; i ( a ) . data ( "pos-y" , g . y ) ; k . push ( a ) } } } ) ; b . mousedown ( function ( a ) { function d ( a ) { a . preventDefault ( ) ;
var c = i ( ia ( a . target ) ) , t = fa ( ( c . data ( "pos-x" ) || 0 ) + a . pageX - j ) , a = fa ( ( c . data ( "pos-y" ) || 0 ) + a . pageY - r ) ; g . call ( b , n , o , m , s , t , a ) } function e ( a ) { a . preventDefault ( ) } function f ( a ) { a . preventDefault ( ) ; i ( k ) . unbind ( "mousemove" , d ) . unbind ( "mouseup" , f ) . unbind ( "selectstart" , e ) ; h . releaseCapture && h . releaseCapture ( ) } a . stopPropagation ( ) ; var h = b . get ( ) , n = l ( c . css ( "left" ) ) , o = l ( c . css ( "top" ) ) , m = c . width ( ) , s = c . height ( ) , j = a . pageX , r = a . pageY ; t && t ( ) ; i ( k ) . mousemove ( d ) . mouseup ( f ) . bind ( "selectstart" , e ) ; h . setCapture && h . setCapture ( ) } ) } function ga ( a ) { this . init ( a ) }
function Za ( a ) { return new ga ( a ) } function Ya ( a ) { a = i ( a ) [ 0 ] ; return a . contentDocument || a . contentWindow . document } function Rb ( a , c , g , b ) { var d = [ $a === "" ? "<html>" : '<html dir="' + $a + '">' , '<head><meta charset="utf-8" /><title></title>' , "<style>" , "html {margin:0;padding:0;}" , "body {margin:0;padding:5px;}" , 'body, td {font:12px/1.5 "sans serif",tahoma,verdana,helvetica;}' , "body, p, div {word-wrap: break-word;}" , "p {margin:5px 0;}" , "table {border-collapse:collapse;}" , "img {border:0;}" , "noscript {display:none;}" , "table.ke-zeroborder td {border:1px dotted #AAA;}" ,
"img.ke-flash {" , "\tborder:1px solid #AAA;" , "\tbackground-image:url(" + a + "common/flash.gif);" , "\tbackground-position:center center;" , "\tbackground-repeat:no-repeat;" , "\twidth:100px;" , "\theight:100px;" , "}" , "img.ke-rm {" , "\tborder:1px solid #AAA;" , "\tbackground-image:url(" + a + "common/rm.gif);" , "\tbackground-position:center center;" , "\tbackground-repeat:no-repeat;" , "\twidth:100px;" , "\theight:100px;" , "}" , "img.ke-media {" , "\tborder:1px solid #AAA;" , "\tbackground-image:url(" + a + "common/media.gif);" , "\tbackground-position:center center;" ,
"\tbackground-repeat:no-repeat;" , "\twidth:100px;" , "\theight:100px;" , "}" , "img.ke-anchor {" , "\tborder:1px dashed #666;" , "\twidth:16px;" , "\theight:16px;" , "}" , ".ke-script, .ke-noscript, .ke-display-none {" , "\tdisplay:none;" , "\tfont-size:0;" , "\twidth:0;" , "\theight:0;" , "}" , ".ke-pagebreak {" , "\tborder:1px dotted #AAA;" , "\tfont-size:0;" , "\theight:2px;" , "}" , "</style>" ] ; f ( g ) || ( g = [ g ] ) ; h ( g , function ( a , c ) { c && d . push ( '<link href="' + c + '" rel="stylesheet" />' ) } ) ; b && d . push ( "<style>" + b + "</style>" ) ; d . push ( "</head><body " +
( c ? 'class="' + c + '"' : "" ) + "></body></html>" ) ; return d . join ( "\n" ) } function wa ( a , c ) { if ( a . hasVal ( ) ) { if ( c === d ) { var g = a . val ( ) ; return g = g . replace ( /(<(?:p|p\s[^>]*)>) *(<\/p>)/ig , "" ) } return a . val ( c ) } return a . html ( c ) } function xa ( a ) { this . init ( a ) } function ub ( a ) { return new xa ( a ) } function vb ( a , c ) { var g = this . get ( a ) ; g && ! g . hasClass ( "ke-disabled" ) && c ( g ) } function Ga ( a ) { this . init ( a ) } function wb ( a ) { return new Ga ( a ) } function ya ( a ) { this . init ( a ) } function ab ( a ) { return new ya ( a ) } function za ( a ) { this . init ( a ) } function xb ( a ) { return new za ( a ) }
function bb ( a ) { this . init ( a ) } function Aa ( a ) { this . init ( a ) } function yb ( a ) { return new Aa ( a ) } function cb ( a , c ) { var g = document . getElementsByTagName ( "head" ) [ 0 ] || ( da ? document . body : document . documentElement ) , b = document . createElement ( "script" ) ; g . appendChild ( b ) ; b . src = a ; b . charset = "utf-8" ; b . onload = b . onreadystatechange = function ( ) { if ( ! this . readyState || this . readyState === "loaded" ) c && c ( ) , b . onload = b . onreadystatechange = null , g . removeChild ( b ) } } function zb ( a ) { var c = a . indexOf ( "?" ) ; return c > 0 ? a . substr ( 0 , c ) : a } function db ( a ) { for ( var c =
document . getElementsByTagName ( "head" ) [ 0 ] || ( da ? document . body : document . documentElement ) , g = document . createElement ( "link" ) , b = zb ( R ( a , "absolute" ) ) , d = i ( 'link[rel="stylesheet"]' , c ) , k = 0 , w = d . length ; k < w ; k ++ ) if ( zb ( R ( d [ k ] . href , "absolute" ) ) === b ) return ; c . appendChild ( g ) ; g . href = a ; g . rel = "stylesheet" } function Ab ( a , c ) { if ( a === d ) return ba ; if ( ! c ) return ba [ a ] ; ba [ a ] = c } function Bb ( a ) { var c , g = "core" ; if ( c = /^(\w+)\.(\w+)$/ . exec ( a ) ) g = c [ 1 ] , a = c [ 2 ] ; return { ns : g , key : a } } function Cb ( a , c ) { c = c === d ? i . options . langType : c ; if ( typeof a === "string" ) { if ( ! ca [ c ] ) return "no language" ;
var g = a . length - 1 ; if ( a . substr ( g ) === "." ) return ca [ c ] [ a . substr ( 0 , g ) ] ; g = Bb ( a ) ; return ca [ c ] [ g . ns ] [ g . key ] } h ( a , function ( a , g ) { var b = Bb ( a ) ; ca [ c ] || ( ca [ c ] = { } ) ; ca [ c ] [ b . ns ] || ( ca [ c ] [ b . ns ] = { } ) ; ca [ c ] [ b . ns ] [ b . key ] = g } ) } function Ha ( a , c ) { if ( ! a . collapsed ) { var a = a . cloneRange ( ) . up ( ) , g = a . startContainer , b = a . startOffset ; if ( ka || a . isControl ( ) ) if ( ( g = i ( g . childNodes [ b ] ) ) && g . name == "img" && c ( g ) ) return g } } function Sb ( ) { var a = this ; i ( a . edit . doc ) . contextmenu ( function ( c ) { a . menu && a . hideMenu ( ) ; if ( a . useContextmenu ) { if ( a . _contextmenus . length !==
0 ) { var g = 0 , b = [ ] ; for ( h ( a . _contextmenus , function ( ) { if ( this . title == "-" ) b . push ( this ) ; else if ( this . cond && this . cond ( ) && ( b . push ( this ) , this . width && this . width > g ) ) g = this . width } ) ; b . length > 0 && b [ 0 ] . title == "-" ; ) b . shift ( ) ; for ( ; b . length > 0 && b [ b . length - 1 ] . title == "-" ; ) b . pop ( ) ; var d = null ; h ( b , function ( a ) { this . title == "-" && d . title == "-" && delete b [ a ] ; d = this } ) ; if ( b . length > 0 ) { c . preventDefault ( ) ; var k = i ( a . edit . iframe ) . pos ( ) , w = ab ( { x : k . x + c . clientX , y : k . y + c . clientY , width : g , css : { visibility : "hidden" } , shadowMode : a . shadowMode } ) ; h ( b ,
function ( ) { this . title && w . addItem ( this ) } ) ; var k = X ( w . doc ) , e = w . div . height ( ) ; c . clientY + e >= k . clientHeight - 100 && w . pos ( w . x , l ( w . y ) - e ) ; w . div . css ( "visibility" , "visible" ) ; a . menu = w } } } else c . preventDefault ( ) } ) } function Tb ( ) { function a ( a ) { for ( a = i ( a . commonAncestor ( ) ) ; a ; ) { if ( a . type == 1 && ! a . isStyle ( ) ) break ; a = a . parent ( ) } return a . name } var c = this , g = c . edit . doc , b = c . newlineTag ; if ( ! ( F && b !== "br" ) && ( ! la || ! ( N < 3 && b !== "p" ) ) && ! ( Qa && N < 9 ) ) { var d = z ( "h1,h2,h3,h4,h5,h6,pre,li" ) , k = z ( "p,h1,h2,h3,h4,h5,h6,pre,li,blockquote" ) ; i ( g ) . keydown ( function ( i ) { if ( ! ( i . which !=
13 || i . shiftKey || i . ctrlKey || i . altKey ) ) { c . cmd . selection ( ) ; var e = a ( c . cmd . range ) ; e == "marquee" || e == "select" || ( b === "br" && ! d [ e ] ? ( i . preventDefault ( ) , c . insertHtml ( "<br />" + ( F && N < 9 ? "" : "\u200b" ) ) ) : k [ e ] || ea ( g , "formatblock" , "<p>" ) ) } } ) ; i ( g ) . keyup ( function ( d ) { if ( ! ( d . which != 13 || d . shiftKey || d . ctrlKey || d . altKey ) && b != "br" ) if ( la ) { var d = c . cmd . commonAncestor ( "p" ) , t = c . cmd . commonAncestor ( "a" ) ; t && t . text ( ) == "" && ( t . remove ( ! 0 ) , c . cmd . range . selectNodeContents ( d [ 0 ] ) . collapse ( ! 0 ) , c . cmd . select ( ) ) } else if ( c . cmd . selection ( ) , d = a ( c . cmd . range ) ,
! ( d == "marquee" || d == "select" ) ) if ( k [ d ] || ea ( g , "formatblock" , "<p>" ) , d = c . cmd . commonAncestor ( "div" ) ) { for ( var t = i ( "<p></p>" ) , e = d [ 0 ] . firstChild ; e ; ) { var f = e . nextSibling ; t . append ( e ) ; e = f } d . before ( t ) ; d . remove ( ) ; c . cmd . range . selectNodeContents ( t [ 0 ] ) ; c . cmd . select ( ) } } ) } } function Ub ( ) { var a = this , c = a . edit . doc ; i ( c ) . keydown ( function ( g ) { if ( g . which == 9 ) if ( g . preventDefault ( ) , a . afterTab ) a . afterTab . call ( a , g ) ; else { var g = a . cmd , b = g . range ; b . shrink ( ) ; b . collapsed && b . startContainer . nodeType == 1 && ( b . insertNode ( i ( "@ " , c ) [ 0 ] ) , g . select ( ) ) ;
a . insertHtml ( " " ) } } ) } function Vb ( ) { var a = this ; i ( a . edit . textarea [ 0 ] , a . edit . win ) . focus ( function ( c ) { a . afterFocus && a . afterFocus . call ( a , c ) } ) . blur ( function ( c ) { a . afterBlur && a . afterBlur . call ( a , c ) } ) } function ha ( a ) { return m ( a . replace ( /<span [^>]*id="?__kindeditor_bookmark_\w+_\d+__"?[^>]*><\/span>/ig , "" ) ) } function Ia ( a ) { return a . replace ( /<div[^>]+class="?__kindeditor_paste__"?[^>]*>[\s\S]*?<\/div>/ig , "" ) } function Db ( a , c ) { if ( a . length === 0 ) a . push ( c ) ; else { var g = a [ a . length - 1 ] ; ha ( c . html ) !==
ha ( g . html ) && a . push ( c ) } } function Eb ( a , c ) { var g = this . edit , b = g . doc . body , d , k ; if ( a . length === 0 ) return this ; g . designMode ? ( d = this . cmd . range , k = d . createBookmark ( ! 0 ) , k . html = b . innerHTML ) : k = { html : b . innerHTML } ; Db ( c , k ) ; var e = a . pop ( ) ; ha ( k . html ) === ha ( e . html ) && a . length > 0 && ( e = a . pop ( ) ) ; g . designMode ? ( g . html ( e . html ) , e . start && ( d . moveToBookmark ( e ) , this . select ( ) ) ) : i ( b ) . html ( ha ( e . html ) ) ; return this } function Ba ( a ) { function c ( a , c ) { Ba . prototype [ a ] === d && ( g [ a ] = c ) ; g . options [ a ] = c } var g = this ; g . options = { } ; h ( a , function ( g ) { c ( g , a [ g ] ) } ) ;
h ( i . options , function ( a , b ) { g [ a ] === d && c ( a , b ) } ) ; var b = i ( g . srcElement || "<textarea/>" ) ; if ( ! g . width ) g . width = b [ 0 ] . style . width || b . width ( ) ; if ( ! g . height ) g . height = b [ 0 ] . style . height || b . height ( ) ; c ( "width" , q ( g . width , g . minWidth ) ) ; c ( "height" , q ( g . height , g . minHeight ) ) ; c ( "width" , o ( g . width ) ) ; c ( "height" , o ( g . height ) ) ; if ( Wb && ( ! Xb || N < 534 ) ) g . designMode = ! 1 ; g . srcElement = b ; g . initContent = "" ; g . plugin = { } ; g . isCreated = ! 1 ; g . _handlers = { } ; g . _contextmenus = [ ] ; g . _undoStack = [ ] ; g . _redoStack = [ ] ; g . _firstAddBookmark = ! 0 ; g . menu = g . contextmenu =
null ; g . dialogs = [ ] } function Fb ( a , c ) { function g ( a ) { h ( ba , function ( c , g ) { j ( g ) && g . call ( a , KindEditor ) } ) ; return a . create ( ) } c = c || { } ; c . basePath = q ( c . basePath , i . basePath ) ; c . themesPath = q ( c . themesPath , c . basePath + "themes/" ) ; c . langPath = q ( c . langPath , c . basePath + "lang/" ) ; c . pluginsPath = q ( c . pluginsPath , c . basePath + "plugins/" ) ; if ( q ( c . loadStyleMode , i . options . loadStyleMode ) ) { var b = q ( c . themeType , i . options . themeType ) ; db ( c . themesPath + "default/default.css" ) ; db ( c . themesPath + b + "/" + b + ".css" ) } if ( ( b = i ( a ) ) && b . length !== 0 ) { if ( b . length >
1 ) return b . each ( function ( ) { Fb ( this , c ) } ) , _instances [ 0 ] ; c . srcElement = b [ 0 ] ; var d = new Ba ( c ) ; _instances . push ( d ) ; if ( ca [ d . langType ] ) return g ( d ) ; cb ( d . langPath + d . langType + ".js?ver=" + encodeURIComponent ( i . DEBUG ? Ja : Ka ) , function ( ) { g ( d ) } ) ; return d } } function Ca ( a , c ) { i ( a ) . each ( function ( a , b ) { i . each ( _instances , function ( a , g ) { if ( g && g . srcElement [ 0 ] == b ) return c . call ( g , a ) , ! 1 } ) } ) } if ( ! b . KindEditor ) { if ( ! b . console ) b . console = { } ; if ( ! console . log ) console . log = function ( ) { } ; var Ka = "4.1.10 (2013-11-23)" , J = navigator . userAgent . toLowerCase ( ) ,
F = J . indexOf ( "msie" ) > - 1 && J . indexOf ( "opera" ) == - 1 , Pb = J . indexOf ( "msie" ) == - 1 && J . indexOf ( "trident" ) > - 1 , la = J . indexOf ( "gecko" ) > - 1 && J . indexOf ( "khtml" ) == - 1 , ka = J . indexOf ( "applewebkit" ) > - 1 , Qa = J . indexOf ( "opera" ) > - 1 , Wb = J . indexOf ( "mobile" ) > - 1 , Xb = /ipad|iphone|ipod/ . test ( J ) , da = document . compatMode != "CSS1Compat" , Y = ! b . getSelection , N = ( J = /(?:msie|firefox|webkit|opera)[\/:\s](\d+)/ . exec ( J ) ) ? J [ 1 ] : "0" , Ja = ( new Date ) . getTime ( ) , fa = Math . round , i = { DEBUG : ! 1 , VERSION : Ka , IE : F , GECKO : la , WEBKIT : ka , OPERA : Qa , V : N , TIME : Ja , each : h , isArray : f ,
isFunction : j , inArray : e , inString : n , trim : m , addUnit : o , removeUnit : l , escape : s , unescape : v , toCamel : p , toHex : r , toMap : z , toArray : D , undef : q , invalidUrl : function ( a ) { return ! a || /[<>"]/ . test ( a ) } , addParam : function ( a , c ) { return a . indexOf ( "?" ) >= 0 ? a + "&" + c : a + "?" + c } , extend : A , json : B } , ib = z ( "a,abbr,acronym,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,img,input,ins,kbd,label,map,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var" ) , jb = z ( "address,applet,blockquote,body,center,dd,dir,div,dl,dt,fieldset,form,frameset,h1,h2,h3,h4,h5,h6,head,hr,html,iframe,ins,isindex,li,map,menu,meta,noframes,noscript,object,ol,p,pre,script,style,table,tbody,td,tfoot,th,thead,title,tr,ul" ) ,
hb = z ( "area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed" ) , Gb = z ( "b,basefont,big,del,em,font,i,s,small,span,strike,strong,sub,sup,u" ) , Yb = z ( "img,table,input,textarea,button" ) , Ma = z ( "pre,style,script" ) , La = z ( "html,head,body,td,tr,table,ol,ul,li" ) ; z ( "colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr" ) ; var Lb = z ( "checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected" ) , Hb = z ( "input,button,textarea,select" ) ; i . basePath = function ( ) { for ( var a =
document . getElementsByTagName ( "script" ) , c , g = 0 , b = a . length ; g < b ; g ++ ) if ( c = a [ g ] . src || "" , /kindeditor[\w\-\.]*\.js/ . test ( c ) ) return c . substring ( 0 , c . lastIndexOf ( "/" ) + 1 ) ; return "" } ( ) ; i . options = { designMode : ! 0 , fullscreenMode : ! 1 , filterMode : ! 0 , wellFormatMode : ! 0 , shadowMode : ! 0 , loadStyleMode : ! 0 , basePath : i . basePath , themesPath : i . basePath + "themes/" , langPath : i . basePath + "lang/" , pluginsPath : i . basePath + "plugins/" , themeType : "default" , langType : "zh_CN" , urlType : "" , newlineTag : "p" , resizeType : 2 , syncType : "form" , pasteType : 2 , dialogAlignType : "page" ,
useContextmenu : ! 0 , fullscreenShortcut : ! 1 , bodyClass : "ke-content" , indentChar : "\t" , cssPath : "" , cssData : "" , minWidth : 650 , minHeight : 100 , minChangeSize : 50 , zIndex : 811213 , items : [ "source" , "|" , "undo" , "redo" , "|" , "preview" , "print" , "template" , "code" , "cut" , "copy" , "paste" , "plainpaste" , "wordpaste" , "|" , "justifyleft" , "justifycenter" , "justifyright" , "justifyfull" , "insertorderedlist" , "insertunorderedlist" , "indent" , "outdent" , "subscript" , "superscript" , "clearhtml" , "quickformat" , "selectall" , "|" , "fullscreen" , "/" , "formatblock" ,
"fontname" , "fontsize" , "|" , "forecolor" , "hilitecolor" , "bold" , "italic" , "underline" , "strikethrough" , "lineheight" , "removeformat" , "|" , "image" , "multiimage" , "flash" , "media" , "insertfile" , "table" , "hr" , "emoticons" , "baidumap" , "pagebreak" , "anchor" , "link" , "unlink" , "|" , "about" ] , noDisableItems : [ "source" , "fullscreen" ] , colorTable : [ [ "#E53333" , "#E56600" , "#FF9900" , "#64451D" , "#DFC5A4" , "#FFE500" ] , [ "#009900" , "#006600" , "#99BB00" , "#B8D100" , "#60D978" , "#00D5FF" ] , [ "#337FE5" , "#003399" , "#4C33E5" , "#9933E5" , "#CC33E5" , "#EE33EE" ] ,
[ "#FFFFFF" , "#CCCCCC" , "#999999" , "#666666" , "#333333" , "#000000" ] ] , fontSizeTable : [ "9px" , "10px" , "12px" , "14px" , "16px" , "18px" , "24px" , "32px" ] , htmlTags : { font : [ "id" , "class" , "color" , "size" , "face" , ".background-color" ] , span : [ "id" , "class" , ".color" , ".background-color" , ".font-size" , ".font-family" , ".background" , ".font-weight" , ".font-style" , ".text-decoration" , ".vertical-align" , ".line-height" ] , div : [ "id" , "class" , "align" , ".border" , ".margin" , ".padding" , ".text-align" , ".color" , ".background-color" , ".font-size" , ".font-family" ,
".font-weight" , ".background" , ".font-style" , ".text-decoration" , ".vertical-align" , ".margin-left" ] , table : [ "id" , "class" , "border" , "cellspacing" , "cellpadding" , "width" , "height" , "align" , "bordercolor" , ".padding" , ".margin" , ".border" , "bgcolor" , ".text-align" , ".color" , ".background-color" , ".font-size" , ".font-family" , ".font-weight" , ".font-style" , ".text-decoration" , ".background" , ".width" , ".height" , ".border-collapse" ] , "td,th" : [ "id" , "class" , "align" , "valign" , "width" , "height" , "colspan" , "rowspan" , "bgcolor" , ".text-align" ,
".color" , ".background-color" , ".font-size" , ".font-family" , ".font-weight" , ".font-style" , ".text-decoration" , ".vertical-align" , ".background" , ".border" ] , a : [ "id" , "class" , "href" , "target" , "name" ] , embed : [ "id" , "class" , "src" , "width" , "height" , "type" , "loop" , "autostart" , "quality" , ".width" , ".height" , "align" , "allowscriptaccess" ] , img : [ "id" , "class" , "src" , "width" , "height" , "border" , "alt" , "title" , "align" , ".width" , ".height" , ".border" ] , "p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6" : [ "id" , "class" , "align" , ".text-align" , ".color" ,
".background-color" , ".font-size" , ".font-family" , ".background" , ".font-weight" , ".font-style" , ".text-decoration" , ".vertical-align" , ".text-indent" , ".margin-left" ] , pre : [ "id" , "class" ] , hr : [ "id" , "class" , ".page-break-after" ] , "br,tbody,tr,strong,b,sub,sup,em,i,u,strike,s,del" : [ "id" , "class" ] , iframe : [ "id" , "class" , "src" , "frameborder" , "width" , "height" , ".width" , ".height" ] } , layout : '<div class="container"><div class="toolbar"></div><div class="edit"></div><div class="statusbar"></div></div>' } ; var fb = ! 1 , Ib = z ( "8,9,13,32,46,48..57,59,61,65..90,106,109..111,188,190..192,219..222" ) ,
J = z ( "33..40" ) , eb = { } ; h ( Ib , function ( a , c ) { eb [ a ] = c } ) ; h ( J , function ( a , c ) { eb [ a ] = c } ) ; var Zb = "altKey,attrChange,attrName,bubbles,button,cancelable,charCode,clientX,clientY,ctrlKey,currentTarget,data,detail,eventPhase,fromElement,handler,keyCode,metaKey,newValue,offsetX,offsetY,originalTarget,pageX,pageY,prevValue,relatedNode,relatedTarget,screenX,screenY,shiftKey,srcElement,target,toElement,view,wheelDelta,which" . split ( "," ) ; A ( u , { init : function ( a , c ) { var g = this , b = a . ownerDocument || a . document || a ; g . event = c ; h ( Zb ,
function ( a , b ) { g [ b ] = c [ b ] } ) ; if ( ! g . target ) g . target = g . srcElement || b ; if ( g . target . nodeType === 3 ) g . target = g . target . parentNode ; if ( ! g . relatedTarget && g . fromElement ) g . relatedTarget = g . fromElement === g . target ? g . toElement : g . fromElement ; if ( g . pageX == null && g . clientX != null ) { var t = b . documentElement , b = b . body ; g . pageX = g . clientX + ( t && t . scrollLeft || b && b . scrollLeft || 0 ) - ( t && t . clientLeft || b && b . clientLeft || 0 ) ; g . pageY = g . clientY + ( t && t . scrollTop || b && b . scrollTop || 0 ) - ( t && t . clientTop || b && b . clientTop || 0 ) } if ( ! g . which && ( g . charCode || g . charCode ===
0 ? g . charCode : g . keyCode ) ) g . which = g . charCode || g . keyCode ; if ( ! g . metaKey && g . ctrlKey ) g . metaKey = g . ctrlKey ; if ( ! g . which && g . button !== d ) g . which = g . button & 1 ? 1 : g . button & 2 ? 3 : g . button & 4 ? 2 : 0 ; switch ( g . which ) { case 186 : g . which = 59 ; break ; case 187 : case 107 : case 43 : g . which = 61 ; break ; case 189 : case 45 : g . which = 109 ; break ; case 42 : g . which = 106 ; break ; case 47 : g . which = 111 ; break ; case 78 : g . which = 110 } g . which >= 96 && g . which <= 105 && ( g . which -= 48 ) } , preventDefault : function ( ) { var a = this . event ; a . preventDefault ? a . preventDefault ( ) : a . returnValue =
! 1 } , stopPropagation : function ( ) { var a = this . event ; a . stopPropagation ? a . stopPropagation ( ) : a . cancelBubble = ! 0 } , stop : function ( ) { this . preventDefault ( ) ; this . stopPropagation ( ) } } ) ; var ma = "kindeditor_" + Ja , gb = 0 , L = { } , Jb = ! 1 ; F && b . attachEvent ( "onunload" , function ( ) { h ( L , function ( a , c ) { c . el && T ( c . el ) } ) } ) ; i . ctrl = $ ; i . ready = function ( a ) { function c ( ) { t || ( t = ! 0 , a ( KindEditor ) , Jb = ! 0 ) } function g ( ) { if ( ! t ) { try { document . documentElement . doScroll ( "left" ) } catch ( a ) { setTimeout ( g , 100 ) ; return } c ( ) } } function d ( ) { document . readyState === "complete" &&
c ( ) } if ( Jb ) a ( KindEditor ) ; else { var t = ! 1 ; if ( document . addEventListener ) E ( document , "DOMContentLoaded" , c ) ; else if ( document . attachEvent ) { E ( document , "readystatechange" , d ) ; var k = ! 1 ; try { k = b . frameElement == null } catch ( i ) { } document . documentElement . doScroll && k && g ( ) } E ( b , "load" , c ) } } ; i . formatUrl = R ; i . formatHtml = H ; i . getCssList = M ; i . getAttrList = K ; i . mediaType = W ; i . mediaAttrs = S ; i . mediaEmbed = Na ; i . mediaImg = kb ; i . clearMsWord = U ; i . tmpl = function ( a , c ) { var g = new Function ( "obj" , "var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('" +
a . replace ( /[\r\t\n]/g , " " ) . split ( "<%" ) . join ( "\t" ) . replace ( /((^|%>)[^\t]*)'/g , "$1\r" ) . replace ( /\t=(.*?)%>/g , "',$1,'" ) . split ( "\t" ) . join ( "');" ) . split ( "%>" ) . join ( "p.push('" ) . split ( "\r" ) . join ( "\\'" ) + "');}return p.join('');" ) ; return c ? g ( c ) : g } ; J = document . createElement ( "div" ) ; J . setAttribute ( "className" , "t" ) ; var Mb = J . className !== "t" ; i . query = function ( a , c ) { var g = Fa ( a , c ) ; return g . length > 0 ? g [ 0 ] : null } ; i . queryAll = Fa ; A ( P , { init : function ( a ) { for ( var a = f ( a ) ? a : [ a ] , c = 0 , g = 0 , b = a . length ; g < b ; g ++ ) a [ g ] && ( this [ g ] = a [ g ] . constructor ===
P ? a [ g ] [ 0 ] : a [ g ] , c ++ ) ; this . length = c ; this . doc = ia ( this [ 0 ] ) ; this . name = Pa ( this [ 0 ] ) ; this . type = this . length > 0 ? this [ 0 ] . nodeType : null ; this . win = ja ( this [ 0 ] ) } , each : function ( a ) { for ( var c = 0 ; c < this . length ; c ++ ) if ( a . call ( this [ c ] , c , this [ c ] ) === ! 1 ) break ; return this } , bind : function ( a , c ) { this . each ( function ( ) { E ( this , a , c ) } ) ; return this } , unbind : function ( a , c ) { this . each ( function ( ) { T ( this , a , c ) } ) ; return this } , fire : function ( a ) { if ( this . length < 1 ) return this ; qa ( this [ 0 ] , a ) ; return this } , hasAttr : function ( a ) { if ( this . length < 1 ) return ! 1 ; return ! ! Ea ( this [ 0 ] ,
a ) } , attr : function ( a , c ) { var g = this ; if ( a === d ) return K ( g . outer ( ) ) ; if ( typeof a === "object" ) return h ( a , function ( a , c ) { g . attr ( a , c ) } ) , g ; if ( c === d ) return c = g . length < 1 ? null : Ea ( g [ 0 ] , a ) , c === null ? "" : c ; g . each ( function ( ) { Oa ( this , a , c ) } ) ; return g } , removeAttr : function ( a ) { this . each ( function ( ) { var c = a ; F && N < 8 && c . toLowerCase ( ) == "class" && ( c = "className" ) ; Oa ( this , c , "" ) ; this . removeAttribute ( c ) } ) ; return this } , get : function ( a ) { if ( this . length < 1 ) return null ; return this [ a || 0 ] } , eq : function ( a ) { if ( this . length < 1 ) return null ; return this [ a ] ?
new P ( this [ a ] ) : null } , hasClass : function ( a ) { if ( this . length < 1 ) return ! 1 ; return n ( a , this [ 0 ] . className , " " ) } , addClass : function ( a ) { this . each ( function ( ) { if ( ! n ( a , this . className , " " ) ) this . className = m ( this . className + " " + a ) } ) ; return this } , removeClass : function ( a ) { this . each ( function ( ) { if ( n ( a , this . className , " " ) ) this . className = m ( this . className . replace ( RegExp ( "(^|\\s)" + a + "(\\s|$)" ) , " " ) ) } ) ; return this } , html : function ( a ) { if ( a === d ) { if ( this . length < 1 || this . type != 1 ) return "" ; return H ( this [ 0 ] . innerHTML ) } this . each ( function ( ) { Nb ( this ,
a ) } ) ; return this } , text : function ( ) { if ( this . length < 1 ) return "" ; return F ? this [ 0 ] . innerText : this [ 0 ] . textContent } , hasVal : function ( ) { if ( this . length < 1 ) return ! 1 ; return ! ! Hb [ Pa ( this [ 0 ] ) ] } , val : function ( a ) { if ( a === d ) { if ( this . length < 1 ) return "" ; return this . hasVal ( ) ? this [ 0 ] . value : this . attr ( "value" ) } else return this . each ( function ( ) { Hb [ Pa ( this ) ] ? this . value = a : Oa ( this , "value" , a ) } ) , this } , css : function ( a , c ) { var g = this ; if ( a === d ) return M ( g . attr ( "style" ) ) ; if ( typeof a === "object" ) return h ( a , function ( a , c ) { g . css ( a , c ) } ) , g ; if ( c ===
d ) { if ( g . length < 1 ) return "" ; return g [ 0 ] . style [ p ( a ) ] || Ob ( g [ 0 ] , a ) || "" } g . each ( function ( ) { this . style [ p ( a ) ] = c } ) ; return g } , width : function ( a ) { if ( a === d ) { if ( this . length < 1 ) return 0 ; return this [ 0 ] . offsetWidth } return this . css ( "width" , o ( a ) ) } , height : function ( a ) { if ( a === d ) { if ( this . length < 1 ) return 0 ; return this [ 0 ] . offsetHeight } return this . css ( "height" , o ( a ) ) } , opacity : function ( a ) { this . each ( function ( ) { this . style . opacity === d ? this . style . filter = a == 1 ? "" : "alpha(opacity=" + a * 100 + ")" : this . style . opacity = a == 1 ? "" : a } ) ; return this } ,
data : function ( a , c ) { a = "kindeditor_data_" + a ; if ( c === d ) { if ( this . length < 1 ) return null ; return this [ 0 ] [ a ] } this . each ( function ( ) { this [ a ] = c } ) ; return this } , pos : function ( ) { var a = this [ 0 ] , c = 0 , g = 0 ; if ( a ) if ( a . getBoundingClientRect ) a = a . getBoundingClientRect ( ) , g = na ( this . doc ) , c = a . left + g . x , g = a . top + g . y ; else for ( ; a ; ) c += a . offsetLeft , g += a . offsetTop , a = a . offsetParent ; return { x : fa ( c ) , y : fa ( g ) } } , clone : function ( a ) { if ( this . length < 1 ) return new P ( [ ] ) ; return new P ( this [ 0 ] . cloneNode ( a ) ) } , append : function ( a ) { this . each ( function ( ) { this . appendChild &&
this . appendChild ( i ( a ) [ 0 ] ) } ) ; return this } , appendTo : function ( a ) { this . each ( function ( ) { i ( a ) [ 0 ] . appendChild ( this ) } ) ; return this } , before : function ( a ) { this . each ( function ( ) { this . parentNode . insertBefore ( i ( a ) [ 0 ] , this ) } ) ; return this } , after : function ( a ) { this . each ( function ( ) { this . nextSibling ? this . parentNode . insertBefore ( i ( a ) [ 0 ] , this . nextSibling ) : this . parentNode . appendChild ( i ( a ) [ 0 ] ) } ) ; return this } , replaceWith : function ( a ) { var c = [ ] ; this . each ( function ( g , b ) { T ( b ) ; var d = i ( a ) [ 0 ] ; b . parentNode . replaceChild ( d , b ) ; c . push ( d ) } ) ;
return i ( c ) } , empty : function ( ) { this . each ( function ( a , c ) { for ( var b = c . firstChild ; b ; ) { if ( ! c . parentNode ) break ; var d = b . nextSibling ; b . parentNode . removeChild ( b ) ; b = d } } ) ; return this } , remove : function ( a ) { var c = this ; c . each ( function ( b , d ) { if ( d . parentNode ) { T ( d ) ; if ( a ) for ( var i = d . firstChild ; i ; ) { var k = i . nextSibling ; d . parentNode . insertBefore ( i , d ) ; i = k } d . parentNode . removeChild ( d ) ; delete c [ b ] } } ) ; c . length = 0 ; return c } , show : function ( a ) { a === d && ( a = this . _originDisplay || "" ) ; if ( this . css ( "display" ) != "none" ) return this ; return this . css ( "display" ,
a ) } , hide : function ( ) { if ( this . length < 1 ) return this ; this . _originDisplay = this [ 0 ] . style . display ; return this . css ( "display" , "none" ) } , outer : function ( ) { if ( this . length < 1 ) return "" ; var a = this . doc . createElement ( "div" ) ; a . appendChild ( this [ 0 ] . cloneNode ( ! 0 ) ) ; return H ( a . innerHTML ) } , isSingle : function ( ) { return ! ! hb [ this . name ] } , isInline : function ( ) { return ! ! ib [ this . name ] } , isBlock : function ( ) { return ! ! jb [ this . name ] } , isStyle : function ( ) { return ! ! Gb [ this . name ] } , isControl : function ( ) { return ! ! Yb [ this . name ] } , contains : function ( a ) { if ( this . length <
1 ) return ! 1 ; return Da ( this [ 0 ] , i ( a ) [ 0 ] ) } , parent : function ( ) { if ( this . length < 1 ) return null ; var a = this [ 0 ] . parentNode ; return a ? new P ( a ) : null } , children : function ( ) { if ( this . length < 1 ) return new P ( [ ] ) ; for ( var a = [ ] , c = this [ 0 ] . firstChild ; c ; ) ( c . nodeType != 3 || m ( c . nodeValue ) !== "" ) && a . push ( c ) , c = c . nextSibling ; return new P ( a ) } , first : function ( ) { var a = this . children ( ) ; return a . length > 0 ? a . eq ( 0 ) : null } , last : function ( ) { var a = this . children ( ) ; return a . length > 0 ? a . eq ( a . length - 1 ) : null } , index : function ( ) { if ( this . length < 1 ) return - 1 ; for ( var a =
- 1 , c = this [ 0 ] ; c ; ) a ++ , c = c . previousSibling ; return a } , prev : function ( ) { if ( this . length < 1 ) return null ; var a = this [ 0 ] . previousSibling ; return a ? new P ( a ) : null } , next : function ( ) { if ( this . length < 1 ) return null ; var a = this [ 0 ] . nextSibling ; return a ? new P ( a ) : null } , scan : function ( a , c ) { function b ( d ) { for ( d = c ? d . firstChild : d . lastChild ; d ; ) { var i = c ? d . nextSibling : d . previousSibling ; if ( a ( d ) === ! 1 ) return ! 1 ; if ( b ( d ) === ! 1 ) return ! 1 ; d = i } } if ( ! ( this . length < 1 ) ) return c = c === d ? ! 0 : c , b ( this [ 0 ] ) , this } } ) ; h ( "blur,focus,focusin,focusout,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error,contextmenu" . split ( "," ) ,
function ( a , c ) { P . prototype [ c ] = function ( a ) { return a ? this . bind ( c , a ) : this . fire ( c ) } } ) ; J = i ; i = function ( a , c ) { function b ( a ) { a [ 0 ] || ( a = [ ] ) ; return new P ( a ) } if ( ! ( a === d || a === null ) ) { if ( typeof a === "string" ) { c && ( c = i ( c ) [ 0 ] ) ; var e = a . length ; a . charAt ( 0 ) === "@" && ( a = a . substr ( 1 ) ) ; if ( a . length !== e || /<.+>/ . test ( a ) ) { var e = ( c ? c . ownerDocument || c : document ) . createElement ( "div" ) , t = [ ] ; e . innerHTML = '<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />' + a ; for ( var k = 0 , w = e . childNodes . length ; k < w ; k ++ ) { var h = e . childNodes [ k ] ;
h . id != "__kindeditor_temp_tag__" && t . push ( h ) } return b ( t ) } return b ( Fa ( a , c ) ) } if ( a && a . constructor === P ) return a ; a . toArray && ( a = a . toArray ( ) ) ; if ( f ( a ) ) return b ( a ) ; return b ( D ( arguments ) ) } } ; h ( J , function ( a , c ) { i [ a ] = c } ) ; i . NodeClass = P ; b . KindEditor = i ; var sa = 0 , ra = 1 , oa = 2 , ta = 3 , Kb = 0 ; A ( aa , { init : function ( a ) { this . startContainer = a ; this . startOffset = 0 ; this . endContainer = a ; this . endOffset = 0 ; this . collapsed = ! 0 ; this . doc = a } , commonAncestor : function ( ) { function a ( a ) { for ( var c = [ ] ; a ; ) c . push ( a ) , a = a . parentNode ; return c } for ( var c = a ( this . startContainer ) ,
b = a ( this . endContainer ) , d = 0 , i = c . length , k = b . length , e , f ; ++ d ; ) if ( e = c [ i - d ] , f = b [ k - d ] , ! e || ! f || e !== f ) break ; return c [ i - d + 1 ] } , setStart : function ( a , c ) { var b = this . doc ; this . startContainer = a ; this . startOffset = c ; if ( this . endContainer === b ) this . endContainer = a , this . endOffset = c ; return lb ( this ) } , setEnd : function ( a , c ) { var b = this . doc ; this . endContainer = a ; this . endOffset = c ; if ( this . startContainer === b ) this . startContainer = a , this . startOffset = c ; return lb ( this ) } , setStartBefore : function ( a ) { return this . setStart ( a . parentNode || this . doc ,
i ( a ) . index ( ) ) } , setStartAfter : function ( a ) { return this . setStart ( a . parentNode || this . doc , i ( a ) . index ( ) + 1 ) } , setEndBefore : function ( a ) { return this . setEnd ( a . parentNode || this . doc , i ( a ) . index ( ) ) } , setEndAfter : function ( a ) { return this . setEnd ( a . parentNode || this . doc , i ( a ) . index ( ) + 1 ) } , selectNode : function ( a ) { return this . setStartBefore ( a ) . setEndAfter ( a ) } , selectNodeContents : function ( a ) { var c = i ( a ) ; if ( c . type == 3 || c . isSingle ( ) ) return this . selectNode ( a ) ; c = c . children ( ) ; if ( c . length > 0 ) return this . setStartBefore ( c [ 0 ] ) . setEndAfter ( c [ c . length -
1 ] ) ; return this . setStart ( a , 0 ) . setEnd ( a , 0 ) } , collapse : function ( a ) { if ( a ) return this . setEnd ( this . startContainer , this . startOffset ) ; return this . setStart ( this . endContainer , this . endOffset ) } , compareBoundaryPoints : function ( a , c ) { var b = this . get ( ) , d = c . get ( ) ; if ( Y ) { var t = { } ; t [ sa ] = "StartToStart" ; t [ ra ] = "EndToStart" ; t [ oa ] = "EndToEnd" ; t [ ta ] = "StartToEnd" ; b = b . compareEndPoints ( t [ a ] , d ) ; if ( b !== 0 ) return b ; var k , e , f , h ; if ( a === sa || a === ta ) k = this . startContainer , f = this . startOffset ; if ( a === ra || a === oa ) k = this . endContainer , f = this . endOffset ;
if ( a === sa || a === ra ) e = c . startContainer , h = c . startOffset ; if ( a === oa || a === ta ) e = c . endContainer , h = c . endOffset ; if ( k === e ) return k = f - h , k > 0 ? 1 : k < 0 ? - 1 : 0 ; for ( b = e ; b && b . parentNode !== k ; ) b = b . parentNode ; if ( b ) return i ( b ) . index ( ) >= f ? - 1 : 1 ; for ( b = k ; b && b . parentNode !== e ; ) b = b . parentNode ; if ( b ) return i ( b ) . index ( ) >= h ? 1 : - 1 ; if ( ( b = i ( e ) . next ( ) ) && b . contains ( k ) ) return 1 ; if ( ( b = i ( k ) . next ( ) ) && b . contains ( e ) ) return - 1 } else return b . compareBoundaryPoints ( a , d ) } , cloneRange : function ( ) { return ( new aa ( this . doc ) ) . setStart ( this . startContainer , this . startOffset ) . setEnd ( this . endContainer ,
this . endOffset ) } , toString : function ( ) { var a = this . get ( ) ; return ( Y ? a . text : a . toString ( ) ) . replace ( /\r\n|\n|\r/g , "" ) } , cloneContents : function ( ) { return Ra ( this , ! 0 , ! 1 ) } , deleteContents : function ( ) { return Ra ( this , ! 1 , ! 0 ) } , extractContents : function ( ) { return Ra ( this , ! 0 , ! 0 ) } , insertNode : function ( a ) { var c = this . startContainer , b = this . startOffset , d = this . endContainer , i = this . endOffset , k , e , f , h = 1 ; if ( a . nodeName . toLowerCase ( ) === "#document-fragment" ) k = a . firstChild , e = a . lastChild , h = a . childNodes . length ; c . nodeType == 1 ? ( f = c . childNodes [ b ] ) ?
( c . insertBefore ( a , f ) , c === d && ( i += h ) ) : c . appendChild ( a ) : c . nodeType == 3 && ( b === 0 ? ( c . parentNode . insertBefore ( a , c ) , c . parentNode === d && ( i += h ) ) : b >= c . nodeValue . length ? c . nextSibling ? c . parentNode . insertBefore ( a , c . nextSibling ) : c . parentNode . appendChild ( a ) : ( f = b > 0 ? c . splitText ( b ) : c , c . parentNode . insertBefore ( a , f ) , c === d && ( d = f , i -= b ) ) ) ; k ? this . setStartBefore ( k ) . setEndAfter ( e ) : this . selectNode ( a ) ; if ( this . compareBoundaryPoints ( oa , this . cloneRange ( ) . setEnd ( d , i ) ) >= 1 ) return this ; return this . setEnd ( d , i ) } , surroundContents : function ( a ) { a . appendChild ( this . extractContents ( ) ) ;
return this . insertNode ( a ) . selectNode ( a ) } , isControl : function ( ) { var a = this . startContainer , c = this . startOffset , b = this . endContainer , d = this . endOffset ; return a . nodeType == 1 && a === b && c + 1 === d && i ( a . childNodes [ c ] ) . isControl ( ) } , get : function ( a ) { var c = this . doc ; if ( ! Y ) { c = c . createRange ( ) ; try { c . setStart ( this . startContainer , this . startOffset ) , c . setEnd ( this . endContainer , this . endOffset ) } catch ( b ) { } return c } if ( a && this . isControl ( ) ) return c = c . body . createControlRange ( ) , c . addElement ( this . startContainer . childNodes [ this . startOffset ] ) ,
c ; a = this . cloneRange ( ) . down ( ) ; c = c . body . createTextRange ( ) ; c . setEndPoint ( "StartToStart" , nb ( a . startContainer , a . startOffset ) ) ; c . setEndPoint ( "EndToStart" , nb ( a . endContainer , a . endOffset ) ) ; return c } , html : function ( ) { return i ( this . cloneContents ( ) ) . outer ( ) } , down : function ( ) { function a ( a , b , d ) { if ( a . nodeType == 1 && ( a = i ( a ) . children ( ) , a . length !== 0 ) ) { var k , e , f , h ; b > 0 && ( k = a . eq ( b - 1 ) ) ; b < a . length && ( e = a . eq ( b ) ) ; if ( k && k . type == 3 ) f = k [ 0 ] , h = f . nodeValue . length ; e && e . type == 3 && ( f = e [ 0 ] , h = 0 ) ; f && ( d ? c . setStart ( f , h ) : c . setEnd ( f , h ) ) } } var c =
this ; a ( c . startContainer , c . startOffset , ! 0 ) ; a ( c . endContainer , c . endOffset , ! 1 ) ; return c } , up : function ( ) { function a ( a , b , d ) { a . nodeType == 3 && ( b === 0 ? d ? c . setStartBefore ( a ) : c . setEndBefore ( a ) : b == a . nodeValue . length && ( d ? c . setStartAfter ( a ) : c . setEndAfter ( a ) ) ) } var c = this ; a ( c . startContainer , c . startOffset , ! 0 ) ; a ( c . endContainer , c . endOffset , ! 1 ) ; return c } , enlarge : function ( a ) { function c ( c , d , k ) { c = i ( c ) ; if ( ! ( c . type == 3 || La [ c . name ] || ! a && c . isBlock ( ) ) ) if ( d === 0 ) { for ( ; ! c . prev ( ) ; ) { d = c . parent ( ) ; if ( ! d || La [ d . name ] || ! a && d . isBlock ( ) ) break ;
c = d } k ? b . setStartBefore ( c [ 0 ] ) : b . setEndBefore ( c [ 0 ] ) } else if ( d == c . children ( ) . length ) { for ( ; ! c . next ( ) ; ) { d = c . parent ( ) ; if ( ! d || La [ d . name ] || ! a && d . isBlock ( ) ) break ; c = d } k ? b . setStartAfter ( c [ 0 ] ) : b . setEndAfter ( c [ 0 ] ) } } var b = this ; b . up ( ) ; c ( b . startContainer , b . startOffset , ! 0 ) ; c ( b . endContainer , b . endOffset , ! 1 ) ; return b } , shrink : function ( ) { for ( var a , c = this . collapsed ; this . startContainer . nodeType == 1 && ( a = this . startContainer . childNodes [ this . startOffset ] ) && a . nodeType == 1 && ! i ( a ) . isSingle ( ) ; ) this . setStart ( a , 0 ) ; if ( c ) return this . collapse ( c ) ;
for ( ; this . endContainer . nodeType == 1 && this . endOffset > 0 && ( a = this . endContainer . childNodes [ this . endOffset - 1 ] ) && a . nodeType == 1 && ! i ( a ) . isSingle ( ) ; ) this . setEnd ( a , a . childNodes . length ) ; return this } , createBookmark : function ( a ) { var c , b = i ( '<span style="display:none;"></span>' , this . doc ) [ 0 ] ; b . id = "__kindeditor_bookmark_start_" + Kb ++ + "__" ; if ( ! this . collapsed ) c = b . cloneNode ( ! 0 ) , c . id = "__kindeditor_bookmark_end_" + Kb ++ + "__" ; c && this . cloneRange ( ) . collapse ( ! 1 ) . insertNode ( c ) . setEndBefore ( c ) ; this . insertNode ( b ) . setStartAfter ( b ) ;
return { start : a ? "#" + b . id : b , end : c ? a ? "#" + c . id : c : null } } , moveToBookmark : function ( a ) { var c = this . doc , b = i ( a . start , c ) , a = a . end ? i ( a . end , c ) : null ; if ( ! b || b . length < 1 ) return this ; this . setStartBefore ( b [ 0 ] ) ; b . remove ( ) ; a && a . length > 0 ? ( this . setEndBefore ( a [ 0 ] ) , a . remove ( ) ) : this . collapse ( ! 0 ) ; return this } , dump : function ( ) { console . log ( "--------------------" ) ; console . log ( this . startContainer . nodeType == 3 ? this . startContainer . nodeValue : this . startContainer , this . startOffset ) ; console . log ( this . endContainer . nodeType == 3 ? this . endContainer . nodeValue :
this . endContainer , this . endOffset ) } } ) ; i . RangeClass = aa ; i . range = Sa ; i . START _TO _START = sa ; i . START _TO _END = ra ; i . END _TO _END = oa ; i . END _TO _START = ta ; A ( va , { init : function ( a ) { var c = a . doc ; this . doc = c ; this . win = ja ( c ) ; this . sel = Ta ( c ) ; this . range = a } , selection : function ( a ) { var c = this . doc , b ; b = Ta ( c ) ; var d ; try { d = b . rangeCount > 0 ? b . getRangeAt ( 0 ) : b . createRange ( ) } catch ( e ) { } b = Y && ( ! d || ! d . item && d . parentElement ( ) . ownerDocument !== c ) ? null : d ; this . sel = Ta ( c ) ; if ( b ) return this . range = Sa ( b ) , i ( this . range . startContainer ) . name == "html" && this . range . selectNodeContents ( c . body ) . collapse ( ! 1 ) ,
this ; a && this . range . selectNodeContents ( c . body ) . collapse ( ! 1 ) ; return this } , select : function ( a ) { var a = q ( a , ! 0 ) , c = this . sel , b = this . range . cloneRange ( ) . shrink ( ) , d = b . startContainer , e = b . startOffset , k = ia ( d ) , f = this . win , h , l = ! 1 ; if ( a && d . nodeType == 1 && b . collapsed ) { if ( Y ) { c = i ( "<span> </span>" , k ) ; b . insertNode ( c [ 0 ] ) ; h = k . body . createTextRange ( ) ; try { h . moveToElementText ( c [ 0 ] ) } catch ( n ) { } h . collapse ( ! 1 ) ; h . select ( ) ; c . remove ( ) ; f . focus ( ) ; return this } if ( ka && ( a = d . childNodes , i ( d ) . isInline ( ) || e > 0 && i ( a [ e - 1 ] ) . isInline ( ) || a [ e ] && i ( a [ e ] ) . isInline ( ) ) ) b . insertNode ( k . createTextNode ( "\u200b" ) ) ,
l = ! 0 } if ( Y ) try { h = b . get ( ! 0 ) , h . select ( ) } catch ( o ) { } else l && b . collapse ( ! 1 ) , h = b . get ( ! 0 ) , c . removeAllRanges ( ) , c . addRange ( h ) , k !== document && ( b = i ( h . endContainer ) . pos ( ) , f . scrollTo ( b . x , b . y ) ) ; f . focus ( ) ; return this } , wrap : function ( a ) { var c = this . range , b ; b = i ( a , this . doc ) ; if ( c . collapsed ) return c . shrink ( ) , c . insertNode ( b [ 0 ] ) . selectNodeContents ( b [ 0 ] ) , this ; if ( b . isBlock ( ) ) { for ( var d = a = b . clone ( ! 0 ) ; d . first ( ) ; ) d = d . first ( ) ; d . append ( c . extractContents ( ) ) ; c . insertNode ( a [ 0 ] ) . selectNode ( a [ 0 ] ) ; return this } c . enlarge ( ) ; var e = c . createBookmark ( ) ,
a = c . commonAncestor ( ) , k = ! 1 ; i ( a ) . scan ( function ( a ) { if ( ! k && a == e . start ) k = ! 0 ; else if ( k ) { if ( a == e . end ) return ! 1 ; var c = i ( a ) , d ; a : { for ( d = c ; d && d . name != "body" ; ) { if ( Ma [ d . name ] || d . name == "div" && d . hasClass ( "ke-script" ) ) { d = ! 0 ; break a } d = d . parent ( ) } d = ! 1 } if ( ! d && c . type == 3 && m ( a . nodeValue ) . length > 0 ) { for ( var f ; ( f = c . parent ( ) ) && f . isStyle ( ) && f . children ( ) . length == 1 ; ) c = f ; f = b ; f = f . clone ( ! 0 ) ; if ( c . type == 3 ) Wa ( f ) . append ( c . clone ( ! 1 ) ) , c . replaceWith ( f ) ; else { for ( var a = c , h ; ( h = c . first ( ) ) && h . children ( ) . length == 1 ; ) c = h ; h = c . first ( ) ; for ( c = c . doc . createDocumentFragment ( ) ; h ; ) c . appendChild ( h [ 0 ] ) ,
h = h . next ( ) ; h = a . clone ( ! 0 ) ; d = Wa ( h ) ; for ( var l = h , n = ! 1 ; f ; ) { for ( ; l ; ) l . name === f . name && ( Qb ( l , f . attr ( ) , f . css ( ) ) , n = ! 0 ) , l = l . first ( ) ; n || d . append ( f . clone ( ! 1 ) ) ; n = ! 1 ; f = f . first ( ) } f = h ; c . firstChild && Wa ( f ) . append ( c ) ; a . replaceWith ( f ) } } } } ) ; c . moveToBookmark ( e ) ; return this } , split : function ( a , c ) { for ( var b = this . range , d = b . doc , e = b . cloneRange ( ) . collapse ( a ) , k = e . startContainer , f = e . startOffset , h = k . nodeType == 3 ? k . parentNode : k , l = ! 1 , n ; h && h . parentNode ; ) { n = i ( h ) ; if ( c ) { if ( ! n . isStyle ( ) ) break ; if ( ! Ua ( n , c ) ) break } else if ( La [ n . name ] ) break ; l =
! 0 ; h = h . parentNode } if ( l ) d = d . createElement ( "span" ) , b . cloneRange ( ) . collapse ( ! a ) . insertNode ( d ) , a ? e . setStartBefore ( h . firstChild ) . setEnd ( k , f ) : e . setStart ( k , f ) . setEndAfter ( h . lastChild ) , k = e . extractContents ( ) , f = k . firstChild , l = k . lastChild , a ? ( e . insertNode ( k ) , b . setStartAfter ( l ) . setEndBefore ( d ) ) : ( h . appendChild ( k ) , b . setStartBefore ( d ) . setEndBefore ( f ) ) , e = d . parentNode , e == b . endContainer && ( h = i ( d ) . prev ( ) , k = i ( d ) . next ( ) , h && k && h . type == 3 && k . type == 3 ? b . setEnd ( h [ 0 ] , h [ 0 ] . nodeValue . length ) : a || b . setEnd ( b . endContainer , b . endOffset -
1 ) ) , e . removeChild ( d ) ; return this } , remove : function ( a ) { var c = this . doc , b = this . range ; b . enlarge ( ) ; if ( b . startOffset === 0 ) { for ( var d = i ( b . startContainer ) , e ; ( e = d . parent ( ) ) && e . isStyle ( ) && e . children ( ) . length == 1 ; ) d = e ; b . setStart ( d [ 0 ] , 0 ) ; d = i ( b . startContainer ) ; d . isBlock ( ) && Va ( d , a ) ; ( d = d . parent ( ) ) && d . isBlock ( ) && Va ( d , a ) } if ( b . collapsed ) { this . split ( ! 0 , a ) ; c = b . startContainer ; d = b . startOffset ; if ( d > 0 && ( e = i ( c . childNodes [ d - 1 ] ) ) && pa ( e ) ) e . remove ( ) , b . setStart ( c , d - 1 ) ; ( d = i ( c . childNodes [ d ] ) ) && pa ( d ) && d . remove ( ) ; pa ( c ) && ( b . startBefore ( c ) ,
c . remove ( ) ) ; b . collapse ( ! 0 ) ; return this } this . split ( ! 0 , a ) ; this . split ( ! 1 , a ) ; var k = c . createElement ( "span" ) , f = c . createElement ( "span" ) ; b . cloneRange ( ) . collapse ( ! 1 ) . insertNode ( f ) ; b . cloneRange ( ) . collapse ( ! 0 ) . insertNode ( k ) ; var l = [ ] , n = ! 1 ; i ( b . commonAncestor ( ) ) . scan ( function ( a ) { if ( ! n && a == k ) n = ! 0 ; else { if ( a == f ) return ! 1 ; n && l . push ( a ) } } ) ; i ( k ) . remove ( ) ; i ( f ) . remove ( ) ; c = b . startContainer ; d = b . startOffset ; e = b . endContainer ; var o = b . endOffset ; if ( d > 0 ) { var m = i ( c . childNodes [ d - 1 ] ) ; m && pa ( m ) && ( m . remove ( ) , b . setStart ( c , d - 1 ) , c == e && b . setEnd ( e ,
o - 1 ) ) ; if ( ( d = i ( c . childNodes [ d ] ) ) && pa ( d ) ) d . remove ( ) , c == e && b . setEnd ( e , o - 1 ) } ( c = i ( e . childNodes [ b . endOffset ] ) ) && pa ( c ) && c . remove ( ) ; c = b . createBookmark ( ! 0 ) ; h ( l , function ( c , b ) { Va ( i ( b ) , a ) } ) ; b . moveToBookmark ( c ) ; return this } , commonNode : function ( a ) { function c ( c ) { for ( var b = c ; c ; ) { if ( Ua ( i ( c ) , a ) ) return i ( c ) ; c = c . parentNode } for ( ; b && ( b = b . lastChild ) ; ) if ( Ua ( i ( b ) , a ) ) return i ( b ) ; return null } var b = this . range , d = b . endContainer , b = b . endOffset , e = d . nodeType == 3 || b === 0 ? d : d . childNodes [ b - 1 ] , k = c ( e ) ; if ( k ) return k ; if ( e . nodeType == 1 || d . nodeType ==
3 && b === 0 ) if ( d = i ( e ) . prev ( ) ) return c ( d ) ; return null } , commonAncestor : function ( a ) { function c ( c ) { for ( ; c ; ) { if ( c . nodeType == 1 && c . tagName . toLowerCase ( ) === a ) return c ; c = c . parentNode } return null } var b = this . range , d = b . startContainer , e = b . startOffset , k = b . endContainer , b = b . endOffset , k = k . nodeType == 3 || b === 0 ? k : k . childNodes [ b - 1 ] , d = c ( d . nodeType == 3 || e === 0 ? d : d . childNodes [ e - 1 ] ) , e = c ( k ) ; if ( d && e && d === e ) return i ( d ) ; return null } , state : function ( a ) { var c = this . doc , b = ! 1 ; try { b = c . queryCommandState ( a ) } catch ( d ) { } return b } , val : function ( a ) { var c =
this . doc , a = a . toLowerCase ( ) , b = "" ; if ( a === "fontfamily" || a === "fontname" ) return b = pb ( c , "fontname" ) , b = b . replace ( /['"]/g , "" ) , b . toLowerCase ( ) ; if ( a === "formatblock" ) { b = pb ( c , a ) ; if ( b === "" && ( a = this . commonNode ( { "h1,h2,h3,h4,h5,h6,p,div,pre,address" : "*" } ) ) ) b = a . name ; b === "Normal" && ( b = "p" ) ; return b . toLowerCase ( ) } if ( a === "fontsize" ) return ( a = this . commonNode ( { "*" : ".font-size" } ) ) && ( b = a . css ( "font-size" ) ) , b . toLowerCase ( ) ; if ( a === "forecolor" ) return ( a = this . commonNode ( { "*" : ".color" } ) ) && ( b = a . css ( "color" ) ) , b = r ( b ) , b === "" && ( b = "default" ) ,
b . toLowerCase ( ) ; if ( a === "hilitecolor" ) return ( a = this . commonNode ( { "*" : ".background-color" } ) ) && ( b = a . css ( "background-color" ) ) , b = r ( b ) , b === "" && ( b = "default" ) , b . toLowerCase ( ) ; return b } , toggle : function ( a , c ) { this . commonNode ( c ) ? this . remove ( c ) : this . wrap ( a ) ; return this . select ( ) } , bold : function ( ) { return this . toggle ( "<strong></strong>" , { span : ".font-weight=bold" , strong : "*" , b : "*" } ) } , italic : function ( ) { return this . toggle ( "<em></em>" , { span : ".font-style=italic" , em : "*" , i : "*" } ) } , underline : function ( ) { return this . toggle ( "<u></u>" ,
{ span : ".text-decoration=underline" , u : "*" } ) } , strikethrough : function ( ) { return this . toggle ( "<s></s>" , { span : ".text-decoration=line-through" , s : "*" } ) } , forecolor : function ( a ) { return this . wrap ( '<span style="color:' + a + ';"></span>' ) . select ( ) } , hilitecolor : function ( a ) { return this . wrap ( '<span style="background-color:' + a + ';"></span>' ) . select ( ) } , fontsize : function ( a ) { return this . wrap ( '<span style="font-size:' + a + ';"></span>' ) . select ( ) } , fontname : function ( a ) { return this . fontfamily ( a ) } , fontfamily : function ( a ) { return this . wrap ( '<span style="font-family:' +
a + ';"></span>' ) . select ( ) } , removeformat : function ( ) { var a = { "*" : ".font-weight,.font-style,.text-decoration,.color,.background-color,.font-size,.font-family,.text-indent" } ; h ( Gb , function ( c ) { a [ c ] = "*" } ) ; this . remove ( a ) ; return this . select ( ) } , inserthtml : function ( a , c ) { function b ( a , c ) { var c = '<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />' + c , d = a . get ( ) ; d . item ? d . item ( 0 ) . outerHTML = c : d . pasteHTML ( c ) ; var g = a . doc . getElementById ( "__kindeditor_temp_tag__" ) ; g . parentNode . removeChild ( g ) ; d =
ob ( d ) ; a . setEnd ( d . endContainer , d . endOffset ) ; a . collapse ( ! 1 ) ; e . select ( ! 1 ) } function d ( a , c ) { var b = a . doc , g = b . createDocumentFragment ( ) ; i ( "@" + c , b ) . each ( function ( ) { g . appendChild ( this ) } ) ; a . deleteContents ( ) ; a . insertNode ( g ) ; a . collapse ( ! 1 ) ; e . select ( ! 1 ) } var e = this , k = e . range ; if ( a === "" ) return e ; if ( Y && c ) { try { b ( k , a ) } catch ( f ) { d ( k , a ) } return e } d ( k , a ) ; return e } , hr : function ( ) { return this . inserthtml ( "<hr />" ) } , print : function ( ) { this . win . print ( ) ; return this } , insertimage : function ( a , c , b , d , e , i ) { c = q ( c , "" ) ; q ( e , 0 ) ; a = '<img src="' +
s ( a ) + '" data-ke-src="' + s ( a ) + '" ' ; b && ( a += 'width="' + s ( b ) + '" ' ) ; d && ( a += 'height="' + s ( d ) + '" ' ) ; c && ( a += 'title="' + s ( c ) + '" ' ) ; i && ( a += 'align="' + s ( i ) + '" ' ) ; a += 'alt="' + s ( c ) + '" ' ; a += "/>" ; return this . inserthtml ( a ) } , createlink : function ( a , c ) { function b ( a , c , d ) { i ( a ) . attr ( "href" , c ) . attr ( "data-ke-src" , c ) ; d ? i ( a ) . attr ( "target" , d ) : i ( a ) . removeAttr ( "target" ) } var d = this . doc , e = this . range ; this . select ( ) ; var k = this . commonNode ( { a : "*" } ) ; k && ! e . isControl ( ) && ( e . selectNode ( k . get ( ) ) , this . select ( ) ) ; k = '<a href="' + s ( a ) + '" data-ke-src="' +
s ( a ) + '" ' ; c && ( k += ' target="' + s ( c ) + '"' ) ; if ( e . collapsed ) return k += ">" + s ( a ) + "</a>" , this . inserthtml ( k ) ; if ( e . isControl ( ) ) { var f = i ( e . startContainer . childNodes [ e . startOffset ] ) ; k += "></a>" ; f . after ( i ( k , d ) ) ; f . next ( ) . append ( f ) ; e . selectNode ( f [ 0 ] ) ; return this . select ( ) } var k = e . startContainer , f = e . startOffset , h = e . endContainer , e = e . endOffset ; if ( k . nodeType == 1 && k === h && f + 1 === e && ( e = k . childNodes [ f ] , e . nodeName . toLowerCase ( ) == "a" ) ) return b ( e , a , c ) , this ; ea ( d , "createlink" , "__kindeditor_temp_url__" ) ; i ( 'a[href="__kindeditor_temp_url__"]' ,
d ) . each ( function ( ) { b ( this , a , c ) } ) ; return this } , unlink : function ( ) { var a = this . doc , c = this . range ; this . select ( ) ; if ( c . collapsed ) { var b = this . commonNode ( { a : "*" } ) ; b && ( c . selectNode ( b . get ( ) ) , this . select ( ) ) ; ea ( a , "unlink" , null ) ; ka && i ( c . startContainer ) . name === "img" && ( a = i ( c . startContainer ) . parent ( ) , a . name === "a" && a . remove ( ! 0 ) ) } else ea ( a , "unlink" , null ) ; return this } } ) ; h ( "formatblock,selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,indent,outdent,subscript,superscript" . split ( "," ) ,
function ( a , c ) { va . prototype [ c ] = function ( a ) { this . select ( ) ; ea ( this . doc , c , a ) ; Y && e ( c , "justifyleft,justifycenter,justifyright,justifyfull" . split ( "," ) ) >= 0 && this . selection ( ) ; ( ! Y || e ( c , "formatblock,selectall,insertorderedlist,insertunorderedlist" . split ( "," ) ) >= 0 ) && this . selection ( ) ; return this } } ) ; h ( "cut,copy,paste" . split ( "," ) , function ( a , c ) { va . prototype [ c ] = function ( ) { if ( ! this . doc . queryCommandSupported ( c ) ) throw "not supported" ; this . select ( ) ; ea ( this . doc , c , null ) ; return this } } ) ; i . CmdClass = va ; i . cmd = tb ; A ( ga , { init : function ( a ) { var c =
this ; c . name = a . name || "" ; c . doc = a . doc || document ; c . win = ja ( c . doc ) ; c . x = o ( a . x ) ; c . y = o ( a . y ) ; c . z = a . z ; c . width = o ( a . width ) ; c . height = o ( a . height ) ; c . div = i ( '<div style="display:block;"></div>' ) ; c . options = a ; c . _alignEl = a . alignEl ; c . width && c . div . css ( "width" , c . width ) ; c . height && c . div . css ( "height" , c . height ) ; c . z && c . div . css ( { position : "absolute" , left : c . x , top : c . y , "z-index" : c . z } ) ; c . z && ( c . x === d || c . y === d ) && c . autoPos ( c . width , c . height ) ; a . cls && c . div . addClass ( a . cls ) ; a . shadowMode && c . div . addClass ( "ke-shadow" ) ; a . css && c . div . css ( a . css ) ;
a . src ? i ( a . src ) . replaceWith ( c . div ) : i ( c . doc . body ) . append ( c . div ) ; a . html && c . div . html ( a . html ) ; if ( a . autoScroll ) if ( F && N < 7 || da ) { var b = na ( ) ; i ( c . win ) . bind ( "scroll" , function ( ) { var a = na ( ) , d = a . x - b . x , a = a . y - b . y ; c . pos ( l ( c . x ) + d , l ( c . y ) + a , ! 1 ) } ) } else c . div . css ( "position" , "fixed" ) } , pos : function ( a , c , b ) { b = q ( b , ! 0 ) ; if ( a !== null && ( a = a < 0 ? 0 : o ( a ) , this . div . css ( "left" , a ) , b ) ) this . x = a ; if ( c !== null && ( c = c < 0 ? 0 : o ( c ) , this . div . css ( "top" , c ) , b ) ) this . y = c ; return this } , autoPos : function ( a , c ) { var b = l ( a ) || 0 , d = l ( c ) || 0 , e = na ( ) ; if ( this . _alignEl ) { var k =
i ( this . _alignEl ) , f = k . pos ( ) , b = fa ( k [ 0 ] . clientWidth / 2 - b / 2 ) , d = fa ( k [ 0 ] . clientHeight / 2 - d / 2 ) ; x = b < 0 ? f . x : f . x + b ; y = d < 0 ? f . y : f . y + d } else f = X ( this . doc ) , x = fa ( e . x + ( f . clientWidth - b ) / 2 ) , y = fa ( e . y + ( f . clientHeight - d ) / 2 ) ; F && N < 7 || da || ( x -= e . x , y -= e . y ) ; return this . pos ( x , y ) } , remove : function ( ) { var a = this ; ( F && N < 7 || da ) && i ( a . win ) . unbind ( "scroll" ) ; a . div . remove ( ) ; h ( a , function ( c ) { a [ c ] = null } ) ; return this } , show : function ( ) { this . div . show ( ) ; return this } , hide : function ( ) { this . div . hide ( ) ; return this } , draggable : function ( a ) { var c = this , a = a ||
{ } ; a . moveEl = c . div ; a . moveFn = function ( a , b , d , e , i , f ) { if ( ( a += i ) < 0 ) a = 0 ; if ( ( b += f ) < 0 ) b = 0 ; c . pos ( a , b ) } ; Xa ( a ) ; return c } } ) ; i . WidgetClass = ga ; i . widget = Za ; var $a = "" ; if ( J = document . getElementsByTagName ( "html" ) ) $a = J [ 0 ] . dir ; A ( xa , ga , { init : function ( a ) { function c ( ) { var c = Ya ( b . iframe ) ; c . open ( ) ; if ( h ) c . domain = document . domain ; c . write ( Rb ( d , e , k , f ) ) ; c . close ( ) ; b . win = b . iframe [ 0 ] . contentWindow ; b . doc = c ; var l = tb ( c ) ; b . afterChange ( function ( ) { l . selection ( ) } ) ; ka && i ( c ) . click ( function ( a ) { i ( a . target ) . name === "img" && ( l . selection ( ! 0 ) , l . range . selectNode ( a . target ) ,
l . select ( ) ) } ) ; if ( F ) b . _mousedownHandler = function ( ) { var a = l . range . cloneRange ( ) ; a . shrink ( ) ; a . isControl ( ) && b . blur ( ) } , i ( document ) . mousedown ( b . _mousedownHandler ) , i ( c ) . keydown ( function ( a ) { if ( a . which == 8 ) { l . selection ( ) ; var c = l . range ; c . isControl ( ) && ( c . collapse ( ! 0 ) , i ( c . startContainer . childNodes [ c . startOffset ] ) . remove ( ) , a . preventDefault ( ) ) } } ) ; b . cmd = l ; b . html ( wa ( b . srcElement ) ) ; F ? ( c . body . disabled = ! 0 , c . body . contentEditable = ! 0 , c . body . removeAttribute ( "disabled" ) ) : c . designMode = "on" ; a . afterCreate && a . afterCreate . call ( b ) }
var b = this ; xa . parent . init . call ( b , a ) ; b . srcElement = i ( a . srcElement ) ; b . div . addClass ( "ke-edit" ) ; b . designMode = q ( a . designMode , ! 0 ) ; b . beforeGetHtml = a . beforeGetHtml ; b . beforeSetHtml = a . beforeSetHtml ; b . afterSetHtml = a . afterSetHtml ; var d = q ( a . themesPath , "" ) , e = a . bodyClass , k = a . cssPath , f = a . cssData , h = location . protocol != "res:" && location . host . replace ( /:\d+/ , "" ) !== document . domain , l = "document.open();" + ( h ? 'document.domain="' + document . domain + '";' : "" ) + "document.close();" , l = F ? ' src="javascript:void(function(){' + encodeURIComponent ( l ) +
'}())"' : "" ; b . iframe = i ( '<iframe class="ke-edit-iframe" hidefocus="true" frameborder="0"' + l + "></iframe>" ) . css ( "width" , "100%" ) ; b . textarea = i ( '<textarea class="ke-edit-textarea" hidefocus="true"></textarea>' ) . css ( "width" , "100%" ) ; b . tabIndex = isNaN ( parseInt ( a . tabIndex , 10 ) ) ? b . srcElement . attr ( "tabindex" ) : parseInt ( a . tabIndex , 10 ) ; b . iframe . attr ( "tabindex" , b . tabIndex ) ; b . textarea . attr ( "tabindex" , b . tabIndex ) ; b . width && b . setWidth ( b . width ) ; b . height && b . setHeight ( b . height ) ; b . designMode ? b . textarea . hide ( ) : b . iframe . hide ( ) ;
h && b . iframe . bind ( "load" , function ( ) { b . iframe . unbind ( "load" ) ; F ? c ( ) : setTimeout ( c , 0 ) } ) ; b . div . append ( b . iframe ) ; b . div . append ( b . textarea ) ; b . srcElement . hide ( ) ; ! h && c ( ) } , setWidth : function ( a ) { this . width = a = o ( a ) ; this . div . css ( "width" , a ) ; return this } , setHeight : function ( a ) { this . height = a = o ( a ) ; this . div . css ( "height" , a ) ; this . iframe . css ( "height" , a ) ; if ( F && N < 8 || da ) a = o ( l ( a ) - 2 ) ; this . textarea . css ( "height" , a ) ; return this } , remove : function ( ) { var a = this . doc ; i ( a . body ) . unbind ( ) ; i ( a ) . unbind ( ) ; i ( this . win ) . unbind ( ) ; this . _mousedownHandler &&
i ( document ) . unbind ( "mousedown" , this . _mousedownHandler ) ; wa ( this . srcElement , this . html ( ) ) ; this . srcElement . show ( ) ; a . write ( "" ) ; this . iframe . unbind ( ) ; this . textarea . unbind ( ) ; xa . parent . remove . call ( this ) } , html : function ( a , c ) { var b = this . doc ; if ( this . designMode ) { b = b . body ; if ( a === d ) return a = c ? "<!doctype html><html>" + b . parentNode . innerHTML + "</html>" : b . innerHTML , this . beforeGetHtml && ( a = this . beforeGetHtml ( a ) ) , la && a == "<br />" && ( a = "" ) , a ; this . beforeSetHtml && ( a = this . beforeSetHtml ( a ) ) ; F && N >= 9 && ( a = a . replace ( /(<.*?checked=")checked(".*>)/ig ,
"$1$2" ) ) ; i ( b ) . html ( a ) ; this . afterSetHtml && this . afterSetHtml ( ) ; return this } if ( a === d ) return this . textarea . val ( ) ; this . textarea . val ( a ) ; return this } , design : function ( a ) { if ( a === d ? ! this . designMode : a ) { if ( ! this . designMode ) a = this . html ( ) , this . designMode = ! 0 , this . html ( a ) , this . textarea . hide ( ) , this . iframe . show ( ) } else if ( this . designMode ) a = this . html ( ) , this . designMode = ! 1 , this . html ( a ) , this . iframe . hide ( ) , this . textarea . show ( ) ; return this . focus ( ) } , focus : function ( ) { this . designMode ? this . win . focus ( ) : this . textarea [ 0 ] . focus ( ) ;
return this } , blur : function ( ) { if ( F ) { var a = i ( '<input type="text" style="float:left;width:0;height:0;padding:0;margin:0;border:0;" value="" />' , this . div ) ; this . div . append ( a ) ; a [ 0 ] . focus ( ) ; a . remove ( ) } else this . designMode ? this . win . blur ( ) : this . textarea [ 0 ] . blur ( ) ; return this } , afterChange : function ( a ) { function c ( c ) { setTimeout ( function ( ) { a ( c ) } , 1 ) } var b = this . doc , d = b . body ; i ( b ) . keyup ( function ( c ) { ! c . ctrlKey && ! c . altKey && eb [ c . which ] && a ( c ) } ) ; i ( b ) . mouseup ( a ) . contextmenu ( a ) ; i ( this . win ) . blur ( a ) ; i ( d ) . bind ( "paste" , c ) ; i ( d ) . bind ( "cut" ,
c ) ; return this } } ) ; i . EditClass = xa ; i . edit = ub ; i . iframeDoc = Ya ; A ( Ga , ga , { init : function ( a ) { function c ( a ) { a = i ( a ) ; if ( a . hasClass ( "ke-outline" ) ) return a ; if ( a . hasClass ( "ke-toolbar-icon" ) ) return a . parent ( ) } function b ( a , d ) { var g = c ( a . target ) ; if ( g && ! g . hasClass ( "ke-disabled" ) && ! g . hasClass ( "ke-selected" ) ) g [ d ] ( "ke-on" ) } var d = this ; Ga . parent . init . call ( d , a ) ; d . disableMode = q ( a . disableMode , ! 1 ) ; d . noDisableItemMap = z ( q ( a . noDisableItems , [ ] ) ) ; d . _itemMap = { } ; d . div . addClass ( "ke-toolbar" ) . bind ( "contextmenu,mousedown,mousemove" , function ( a ) { a . preventDefault ( ) } ) . attr ( "unselectable" ,
"on" ) ; d . div . mouseover ( function ( a ) { b ( a , "addClass" ) } ) . mouseout ( function ( a ) { b ( a , "removeClass" ) } ) . click ( function ( a ) { var b = c ( a . target ) ; b && ! b . hasClass ( "ke-disabled" ) && d . options . click . call ( this , a , b . attr ( "data-name" ) ) } ) } , get : function ( a ) { if ( this . _itemMap [ a ] ) return this . _itemMap [ a ] ; return this . _itemMap [ a ] = i ( "span.ke-icon-" + a , this . div ) . parent ( ) } , select : function ( a ) { vb . call ( this , a , function ( a ) { a . addClass ( "ke-selected" ) } ) ; return self } , unselect : function ( a ) { vb . call ( this , a , function ( a ) { a . removeClass ( "ke-selected" ) . removeClass ( "ke-on" ) } ) ;
return self } , enable : function ( a ) { if ( a = a . get ? a : this . get ( a ) ) a . removeClass ( "ke-disabled" ) , a . opacity ( 1 ) ; return this } , disable : function ( a ) { if ( a = a . get ? a : this . get ( a ) ) a . removeClass ( "ke-selected" ) . addClass ( "ke-disabled" ) , a . opacity ( 0.5 ) ; return this } , disableAll : function ( a , c ) { var b = this , e = b . noDisableItemMap ; c && ( e = z ( c ) ) ; ( a === d ? ! b . disableMode : a ) ? ( i ( "span.ke-outline" , b . div ) . each ( function ( ) { var a = i ( this ) , c = a [ 0 ] . getAttribute ( "data-name" , 2 ) ; e [ c ] || b . disable ( a ) } ) , b . disableMode = ! 0 ) : ( i ( "span.ke-outline" , b . div ) . each ( function ( ) { var a =
i ( this ) , c = a [ 0 ] . getAttribute ( "data-name" , 2 ) ; e [ c ] || b . enable ( a ) } ) , b . disableMode = ! 1 ) ; return b } } ) ; i . ToolbarClass = Ga ; i . toolbar = wb ; A ( ya , ga , { init : function ( a ) { a . z = a . z || 811213 ; ya . parent . init . call ( this , a ) ; this . centerLineMode = q ( a . centerLineMode , ! 0 ) ; this . div . addClass ( "ke-menu" ) . bind ( "click,mousedown" , function ( a ) { a . stopPropagation ( ) } ) . attr ( "unselectable" , "on" ) } , addItem : function ( a ) { if ( a . title === "-" ) this . div . append ( i ( '<div class="ke-menu-separator"></div>' ) ) ; else { var c = i ( '<div class="ke-menu-item" unselectable="on"></div>' ) ,
b = i ( '<div class="ke-inline-block ke-menu-item-left"></div>' ) , d = i ( '<div class="ke-inline-block ke-menu-item-right"></div>' ) , e = o ( a . height ) , f = q ( a . iconClass , "" ) ; this . div . append ( c ) ; e && ( c . css ( "height" , e ) , d . css ( "line-height" , e ) ) ; var h ; this . centerLineMode && ( h = i ( '<div class="ke-inline-block ke-menu-item-center"></div>' ) , e && h . css ( "height" , e ) ) ; c . mouseover ( function ( ) { i ( this ) . addClass ( "ke-menu-item-on" ) ; h && h . addClass ( "ke-menu-item-center-on" ) } ) . mouseout ( function ( ) { i ( this ) . removeClass ( "ke-menu-item-on" ) ; h && h . removeClass ( "ke-menu-item-center-on" ) } ) . click ( function ( c ) { a . click . call ( i ( this ) ) ;
c . stopPropagation ( ) } ) . append ( b ) ; h && c . append ( h ) ; c . append ( d ) ; a . checked && ( f = "ke-icon-checked" ) ; f !== "" && b . html ( '<span class="ke-inline-block ke-toolbar-icon ke-toolbar-icon-url ' + f + '"></span>' ) ; d . html ( a . title ) ; return this } } , remove : function ( ) { this . options . beforeRemove && this . options . beforeRemove . call ( this ) ; i ( ".ke-menu-item" , this . div [ 0 ] ) . unbind ( ) ; ya . parent . remove . call ( this ) ; return this } } ) ; i . MenuClass = ya ; i . menu = ab ; A ( za , ga , { init : function ( a ) { a . z = a . z || 811213 ; za . parent . init . call ( this , a ) ; var c = a . colors || [ [ "#E53333" ,
"#E56600" , "#FF9900" , "#64451D" , "#DFC5A4" , "#FFE500" ] , [ "#009900" , "#006600" , "#99BB00" , "#B8D100" , "#60D978" , "#00D5FF" ] , [ "#337FE5" , "#003399" , "#4C33E5" , "#9933E5" , "#CC33E5" , "#EE33EE" ] , [ "#FFFFFF" , "#CCCCCC" , "#999999" , "#666666" , "#333333" , "#000000" ] ] ; this . selectedColor = ( a . selectedColor || "" ) . toLowerCase ( ) ; this . _cells = [ ] ; this . div . addClass ( "ke-colorpicker" ) . bind ( "click,mousedown" , function ( a ) { a . stopPropagation ( ) } ) . attr ( "unselectable" , "on" ) ; a = this . doc . createElement ( "table" ) ; this . div . append ( a ) ; a . className = "ke-colorpicker-table" ;
a . cellPadding = 0 ; a . cellSpacing = 0 ; a . border = 0 ; var b = a . insertRow ( 0 ) , d = b . insertCell ( 0 ) ; d . colSpan = c [ 0 ] . length ; this . _addAttr ( d , "" , "ke-colorpicker-cell-top" ) ; for ( var e = 0 ; e < c . length ; e ++ ) for ( var b = a . insertRow ( e + 1 ) , i = 0 ; i < c [ e ] . length ; i ++ ) d = b . insertCell ( i ) , this . _addAttr ( d , c [ e ] [ i ] , "ke-colorpicker-cell" ) } , _addAttr : function ( a , c , b ) { var d = this , a = i ( a ) . addClass ( b ) ; d . selectedColor === c . toLowerCase ( ) && a . addClass ( "ke-colorpicker-cell-selected" ) ; a . attr ( "title" , c || d . options . noColor ) ; a . mouseover ( function ( ) { i ( this ) . addClass ( "ke-colorpicker-cell-on" ) } ) ;
a . mouseout ( function ( ) { i ( this ) . removeClass ( "ke-colorpicker-cell-on" ) } ) ; a . click ( function ( a ) { a . stop ( ) ; d . options . click . call ( i ( this ) , c ) } ) ; c ? a . append ( i ( '<div class="ke-colorpicker-cell-color" unselectable="on"></div>' ) . css ( "background-color" , c ) ) : a . html ( d . options . noColor ) ; i ( a ) . attr ( "unselectable" , "on" ) ; d . _cells . push ( a ) } , remove : function ( ) { h ( this . _cells , function ( ) { this . unbind ( ) } ) ; za . parent . remove . call ( this ) ; return this } } ) ; i . ColorPickerClass = za ; i . colorpicker = xb ; A ( bb , { init : function ( a ) { var c = i ( a . button ) , b = a . fieldName ||
"file" , d = a . url || "" , e = c . val ( ) , f = a . extraParams || { } , h = c [ 0 ] . className || "" , l = a . target || "kindeditor_upload_iframe_" + ( new Date ) . getTime ( ) ; a . afterError = a . afterError || function ( a ) { alert ( a ) } ; var n = [ ] , o ; for ( o in f ) n . push ( '<input type="hidden" name="' + o + '" value="' + f [ o ] + '" />' ) ; b = [ '<div class="ke-inline-block ' + h + '">' , a . target ? "" : '<iframe name="' + l + '" style="display:none;"></iframe>' , a . form ? '<div class="ke-upload-area">' : '<form class="ke-upload-area ke-form" method="post" enctype="multipart/form-data" target="' +
l + '" action="' + d + '">' , '<span class="ke-button-common">' , n . join ( "" ) , '<input type="button" class="ke-button-common ke-button" value="' + e + '" />' , "</span>" , '<input type="file" class="ke-upload-file" name="' + b + '" tabindex="-1" />' , a . form ? "</div>" : "</form>" , "</div>" ] . join ( "" ) ; b = i ( b , c . doc ) ; c . hide ( ) ; c . before ( b ) ; this . div = b ; this . button = c ; this . iframe = a . target ? i ( 'iframe[name="' + l + '"]' ) : i ( "iframe" , b ) ; this . form = a . form ? i ( a . form ) : i ( "form" , b ) ; this . fileBox = i ( ".ke-upload-file" , b ) ; c = a . width || i ( ".ke-button-common" , b ) . width ( ) ;
i ( ".ke-upload-area" , b ) . width ( c ) ; this . options = a } , submit : function ( ) { var a = this , c = a . iframe ; c . bind ( "load" , function ( ) { c . unbind ( ) ; var b = document . createElement ( "form" ) ; a . fileBox . before ( b ) ; i ( b ) . append ( a . fileBox ) ; b . reset ( ) ; i ( b ) . remove ( ! 0 ) ; var b = i . iframeDoc ( c ) , d = b . getElementsByTagName ( "pre" ) [ 0 ] , e = "" , f , e = d ? d . innerHTML : b . body . innerHTML , e = v ( e ) ; c [ 0 ] . src = "javascript:false" ; try { f = i . json ( e ) } catch ( h ) { a . options . afterError . call ( a , "<!doctype html><html>" + b . body . parentNode . innerHTML + "</html>" ) } f && a . options . afterUpload . call ( a ,
f ) } ) ; a . form [ 0 ] . submit ( ) ; return a } , remove : function ( ) { this . fileBox && this . fileBox . unbind ( ) ; this . iframe . remove ( ) ; this . div . remove ( ) ; this . button . show ( ) ; return this } } ) ; i . UploadButtonClass = bb ; i . uploadbutton = function ( a ) { return new bb ( a ) } ; A ( Aa , ga , { init : function ( a ) { var c = q ( a . shadowMode , ! 0 ) ; a . z = a . z || 811213 ; a . shadowMode = ! 1 ; a . autoScroll = q ( a . autoScroll , ! 0 ) ; Aa . parent . init . call ( this , a ) ; var b = a . title , d = i ( a . body , this . doc ) , e = a . previewBtn , f = a . yesBtn , n = a . noBtn , o = a . closeBtn , m = q ( a . showMask , ! 0 ) ; this . div . addClass ( "ke-dialog" ) . bind ( "click,mousedown" ,
function ( a ) { a . stopPropagation ( ) } ) ; var s = i ( '<div class="ke-dialog-content"></div>' ) . appendTo ( this . div ) ; F && N < 7 ? this . iframeMask = i ( '<iframe src="about:blank" class="ke-dialog-shadow"></iframe>' ) . appendTo ( this . div ) : c && i ( '<div class="ke-dialog-shadow"></div>' ) . appendTo ( this . div ) ; c = i ( '<div class="ke-dialog-header"></div>' ) ; s . append ( c ) ; c . html ( b ) ; this . closeIcon = i ( '<span class="ke-dialog-icon-close" title="' + o . name + '"></span>' ) . click ( o . click ) ; c . append ( this . closeIcon ) ; this . draggable ( { clickEl : c , beforeDrag : a . beforeDrag } ) ;
a = i ( '<div class="ke-dialog-body"></div>' ) ; s . append ( a ) ; a . append ( d ) ; var j = i ( '<div class="ke-dialog-footer"></div>' ) ; ( e || f || n ) && s . append ( j ) ; h ( [ { btn : e , name : "preview" } , { btn : f , name : "yes" } , { btn : n , name : "no" } ] , function ( ) { if ( this . btn ) { var a = this . btn , a = a || { } , c = a . name || "" , b = i ( '<span class="ke-button-common ke-button-outer" title="' + c + '"></span>' ) , c = i ( '<input class="ke-button-common ke-button" type="button" value="' + c + '" />' ) ; a . click && c . click ( a . click ) ; b . append ( c ) ; b . addClass ( "ke-dialog-" + this . name ) ; j . append ( b ) } } ) ;
this . height && a . height ( l ( this . height ) - c . height ( ) - j . height ( ) ) ; this . div . width ( this . div . width ( ) ) ; this . div . height ( this . div . height ( ) ) ; this . mask = null ; if ( m ) d = X ( this . doc ) , this . mask = Za ( { x : 0 , y : 0 , z : this . z - 1 , cls : "ke-dialog-mask" , width : Math . max ( d . scrollWidth , d . clientWidth ) , height : Math . max ( d . scrollHeight , d . clientHeight ) } ) ; this . autoPos ( this . div . width ( ) , this . div . height ( ) ) ; this . footerDiv = j ; this . bodyDiv = a ; this . headerDiv = c ; this . isLoading = ! 1 } , setMaskIndex : function ( a ) { this . mask . div . css ( "z-index" , a ) } , showLoading : function ( a ) { var a =
q ( a , "" ) , c = this . bodyDiv ; this . loading = i ( '<div class="ke-dialog-loading"><div class="ke-inline-block ke-dialog-loading-content" style="margin-top:' + Math . round ( c . height ( ) / 3 ) + 'px;">' + a + "</div></div>" ) . width ( c . width ( ) ) . height ( c . height ( ) ) . css ( "top" , this . headerDiv . height ( ) + "px" ) ; c . css ( "visibility" , "hidden" ) . after ( this . loading ) ; this . isLoading = ! 0 ; return this } , hideLoading : function ( ) { this . loading && this . loading . remove ( ) ; this . bodyDiv . css ( "visibility" , "visible" ) ; this . isLoading = ! 1 ; return this } , remove : function ( ) { this . options . beforeRemove &&
this . options . beforeRemove . call ( this ) ; this . mask && this . mask . remove ( ) ; this . iframeMask && this . iframeMask . remove ( ) ; this . closeIcon . unbind ( ) ; i ( "input" , this . div ) . unbind ( ) ; i ( "button" , this . div ) . unbind ( ) ; this . footerDiv . unbind ( ) ; this . bodyDiv . unbind ( ) ; this . headerDiv . unbind ( ) ; i ( "iframe" , this . div ) . each ( function ( ) { i ( this ) . remove ( ) } ) ; Aa . parent . remove . call ( this ) ; return this } } ) ; i . DialogClass = Aa ; i . dialog = yb ; i . tabs = function ( a ) { var c = Za ( a ) , b = c . remove , d = a . afterSelect , a = c . div , e = [ ] ; a . addClass ( "ke-tabs" ) . bind ( "contextmenu,mousedown,mousemove" ,
function ( a ) { a . preventDefault ( ) } ) ; var f = i ( '<ul class="ke-tabs-ul ke-clearfix"></ul>' ) ; a . append ( f ) ; c . add = function ( a ) { var c = i ( '<li class="ke-tabs-li">' + a . title + "</li>" ) ; c . data ( "tab" , a ) ; e . push ( c ) ; f . append ( c ) } ; c . selectedIndex = 0 ; c . select = function ( a ) { c . selectedIndex = a ; h ( e , function ( b , d ) { d . unbind ( ) ; b === a ? ( d . addClass ( "ke-tabs-li-selected" ) , i ( d . data ( "tab" ) . panel ) . show ( "" ) ) : ( d . removeClass ( "ke-tabs-li-selected" ) . removeClass ( "ke-tabs-li-on" ) . mouseover ( function ( ) { i ( this ) . addClass ( "ke-tabs-li-on" ) } ) . mouseout ( function ( ) { i ( this ) . removeClass ( "ke-tabs-li-on" ) } ) . click ( function ( ) { c . select ( b ) } ) ,
i ( d . data ( "tab" ) . panel ) . hide ( ) ) } ) ; d && d . call ( c , a ) } ; c . remove = function ( ) { h ( e , function ( ) { this . remove ( ) } ) ; f . remove ( ) ; b . call ( c ) } ; return c } ; i . loadScript = cb ; i . loadStyle = db ; i . ajax = function ( a , c , d , e , i ) { var d = d || "GET" , i = i || "json" , f = b . XMLHttpRequest ? new b . XMLHttpRequest : new ActiveXObject ( "Microsoft.XMLHTTP" ) ; f . open ( d , a , ! 0 ) ; f . onreadystatechange = function ( ) { if ( f . readyState == 4 && f . status == 200 && c ) { var a = m ( f . responseText ) ; i == "json" && ( a = B ( a ) ) ; c ( a ) } } ; if ( d == "POST" ) { var l = [ ] ; h ( e , function ( a , c ) { l . push ( encodeURIComponent ( a ) +
"=" + encodeURIComponent ( c ) ) } ) ; try { f . setRequestHeader ( "Content-Type" , "application/x-www-form-urlencoded" ) } catch ( n ) { } f . send ( l . join ( "&" ) ) } else f . send ( null ) } ; var ba = { } , ca = { } ; Ba . prototype = { lang : function ( a ) { return Cb ( a , this . langType ) } , loadPlugin : function ( a , c ) { var b = this ; if ( ba [ a ] ) { if ( ! j ( ba [ a ] ) ) return setTimeout ( function ( ) { b . loadPlugin ( a , c ) } , 100 ) , b ; ba [ a ] . call ( b , KindEditor ) ; c && c . call ( b ) ; return b } ba [ a ] = "loading" ; cb ( b . pluginsPath + a + "/" + a + ".js?ver=" + encodeURIComponent ( i . DEBUG ? Ja : Ka ) , function ( ) { setTimeout ( function ( ) { ba [ a ] &&
b . loadPlugin ( a , c ) } , 0 ) } ) ; return b } , handler : function ( a , c ) { var b = this ; b . _handlers [ a ] || ( b . _handlers [ a ] = [ ] ) ; if ( j ( c ) ) return b . _handlers [ a ] . push ( c ) , b ; h ( b . _handlers [ a ] , function ( ) { c = this . call ( b , c ) } ) ; return c } , clickToolbar : function ( a , c ) { var b = this , e = "clickToolbar" + a ; if ( c === d ) { if ( b . _handlers [ e ] ) return b . handler ( e ) ; b . loadPlugin ( a , function ( ) { b . handler ( e ) } ) ; return b } return b . handler ( e , c ) } , updateState : function ( ) { var a = this ; h ( "justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,subscript,superscript,bold,italic,underline,strikethrough" . split ( "," ) ,
function ( c , b ) { a . cmd . state ( b ) ? a . toolbar . select ( b ) : a . toolbar . unselect ( b ) } ) ; return a } , addContextmenu : function ( a ) { this . _contextmenus . push ( a ) ; return this } , afterCreate : function ( a ) { return this . handler ( "afterCreate" , a ) } , beforeRemove : function ( a ) { return this . handler ( "beforeRemove" , a ) } , beforeGetHtml : function ( a ) { return this . handler ( "beforeGetHtml" , a ) } , beforeSetHtml : function ( a ) { return this . handler ( "beforeSetHtml" , a ) } , afterSetHtml : function ( a ) { return this . handler ( "afterSetHtml" , a ) } , create : function ( ) { function a ( ) { m . height ( ) ===
0 ? setTimeout ( a , 100 ) : c . resize ( e , f , ! 1 ) } var c = this , d = c . fullscreenMode ; if ( c . isCreated ) return c ; if ( c . srcElement . data ( "kindeditor" ) ) return c ; c . srcElement . data ( "kindeditor" , "true" ) ; d ? X ( ) . style . overflow = "hidden" : X ( ) . style . overflow = "" ; var e = d ? X ( ) . clientWidth + "px" : c . width , f = d ? X ( ) . clientHeight + "px" : c . height ; if ( F && N < 8 || da ) f = o ( l ( f ) + 2 ) ; var k = c . container = i ( c . layout ) ; d ? i ( document . body ) . append ( k ) : c . srcElement . before ( k ) ; var h = i ( ".toolbar" , k ) , n = i ( ".edit" , k ) , m = c . statusbar = i ( ".statusbar" , k ) ; k . removeClass ( "container" ) . addClass ( "ke-container ke-container-" +
c . themeType ) . css ( "width" , e ) ; if ( d ) { k . css ( { position : "absolute" , left : 0 , top : 0 , "z-index" : 811211 } ) ; if ( ! la ) c . _scrollPos = na ( ) ; b . scrollTo ( 0 , 0 ) ; i ( document . body ) . css ( { height : "1px" , overflow : "hidden" } ) ; i ( document . body . parentNode ) . css ( "overflow" , "hidden" ) ; c . _fullscreenExecuted = ! 0 } else c . _fullscreenExecuted && ( i ( document . body ) . css ( { height : "" , overflow : "" } ) , i ( document . body . parentNode ) . css ( "overflow" , "" ) ) , c . _scrollPos && b . scrollTo ( c . _scrollPos . x , c . _scrollPos . y ) ; var s = [ ] ; i . each ( c . items , function ( a , b ) { b == "|" ? s . push ( '<span class="ke-inline-block ke-separator"></span>' ) :
b == "/" ? s . push ( '<div class="ke-hr"></div>' ) : ( s . push ( '<span class="ke-outline" data-name="' + b + '" title="' + c . lang ( b ) + '" unselectable="on">' ) , s . push ( '<span class="ke-toolbar-icon ke-toolbar-icon-url ke-icon-' + b + '" unselectable="on"></span></span>' ) ) } ) ; var h = c . toolbar = wb ( { src : h , html : s . join ( "" ) , noDisableItems : c . noDisableItems , click : function ( a , b ) { a . stop ( ) ; if ( c . menu ) { var d = c . menu . name ; c . hideMenu ( ) ; if ( d === b ) return } c . clickToolbar ( b ) } } ) , j = l ( f ) - h . div . height ( ) , r = c . edit = ub ( { height : j > 0 && l ( f ) > c . minHeight ? j : c . minHeight ,
src : n , srcElement : c . srcElement , designMode : c . designMode , themesPath : c . themesPath , bodyClass : c . bodyClass , cssPath : c . cssPath , cssData : c . cssData , beforeGetHtml : function ( a ) { a = c . beforeGetHtml ( a ) ; a = ha ( Ia ( a ) ) ; return H ( a , c . filterMode ? c . htmlTags : null , c . urlType , c . wellFormatMode , c . indentChar ) } , beforeSetHtml : function ( a ) { a = H ( a , c . filterMode ? c . htmlTags : null , "" , ! 1 ) ; return c . beforeSetHtml ( a ) } , afterSetHtml : function ( ) { c . edit = r = this ; c . afterSetHtml ( ) } , afterCreate : function ( ) { c . edit = r = this ; c . cmd = r . cmd ; c . _docMousedownFn = function ( ) { c . menu &&
c . hideMenu ( ) } ; i ( r . doc , document ) . mousedown ( c . _docMousedownFn ) ; Sb . call ( c ) ; Tb . call ( c ) ; Ub . call ( c ) ; Vb . call ( c ) ; r . afterChange ( function ( ) { r . designMode && ( c . updateState ( ) , c . addBookmark ( ) , c . options . afterChange && c . options . afterChange . call ( c ) ) } ) ; r . textarea . keyup ( function ( a ) { ! a . ctrlKey && ! a . altKey && Ib [ a . which ] && c . options . afterChange && c . options . afterChange . call ( c ) } ) ; c . readonlyMode && c . readonly ( ) ; c . isCreated = ! 0 ; if ( c . initContent === "" ) c . initContent = c . html ( ) ; if ( c . _undoStack . length > 0 ) { var a = c . _undoStack . pop ( ) ; a . start &&
( c . html ( a . html ) , r . cmd . range . moveToBookmark ( a ) , c . select ( ) ) } c . afterCreate ( ) ; c . options . afterCreate && c . options . afterCreate . call ( c ) } } ) ; m . removeClass ( "statusbar" ) . addClass ( "ke-statusbar" ) . append ( '<span class="ke-inline-block ke-statusbar-center-icon"></span>' ) . append ( '<span class="ke-inline-block ke-statusbar-right-icon"></span>' ) ; if ( c . _fullscreenResizeHandler ) i ( b ) . unbind ( "resize" , c . _fullscreenResizeHandler ) , c . _fullscreenResizeHandler = null ; a ( ) ; d ? ( c . _fullscreenResizeHandler = function ( ) { c . isCreated && c . resize ( X ( ) . clientWidth ,
X ( ) . clientHeight , ! 1 ) } , i ( b ) . bind ( "resize" , c . _fullscreenResizeHandler ) , h . select ( "fullscreen" ) , m . first ( ) . css ( "visibility" , "hidden" ) , m . last ( ) . css ( "visibility" , "hidden" ) ) : ( la && i ( b ) . bind ( "scroll" , function ( ) { c . _scrollPos = na ( ) } ) , c . resizeType > 0 ? Xa ( { moveEl : k , clickEl : m , moveFn : function ( a , b , d , g , e , f ) { g += f ; c . resize ( null , g ) } } ) : m . first ( ) . css ( "visibility" , "hidden" ) , c . resizeType === 2 ? Xa ( { moveEl : k , clickEl : m . last ( ) , moveFn : function ( a , b , d , g , e , f ) { d += e ; g += f ; c . resize ( d , g ) } } ) : m . last ( ) . css ( "visibility" , "hidden" ) ) ; return c } , remove : function ( ) { var a =
this ; if ( ! a . isCreated ) return a ; a . beforeRemove ( ) ; a . srcElement . data ( "kindeditor" , "" ) ; a . menu && a . hideMenu ( ) ; h ( a . dialogs , function ( ) { a . hideDialog ( ) } ) ; i ( document ) . unbind ( "mousedown" , a . _docMousedownFn ) ; a . toolbar . remove ( ) ; a . edit . remove ( ) ; a . statusbar . last ( ) . unbind ( ) ; a . statusbar . unbind ( ) ; a . container . remove ( ) ; a . container = a . toolbar = a . edit = a . menu = null ; a . dialogs = [ ] ; a . isCreated = ! 1 ; return a } , resize : function ( a , c , b ) { b = q ( b , ! 0 ) ; if ( a && ( /%/ . test ( a ) || ( a = l ( a ) , a = a < this . minWidth ? this . minWidth : a ) , this . container . css ( "width" , o ( a ) ) ,
b ) ) this . width = o ( a ) ; if ( c && ( c = l ( c ) , editHeight = l ( c ) - this . toolbar . div . height ( ) - this . statusbar . height ( ) , editHeight = editHeight < this . minHeight ? this . minHeight : editHeight , this . edit . setHeight ( editHeight ) , b ) ) this . height = o ( c ) ; return this } , select : function ( ) { this . isCreated && this . cmd . select ( ) ; return this } , html : function ( a ) { if ( a === d ) return this . isCreated ? this . edit . html ( ) : wa ( this . srcElement ) ; this . isCreated ? this . edit . html ( a ) : wa ( this . srcElement , a ) ; this . isCreated && this . cmd . selection ( ) ; return this } , fullHtml : function ( ) { return this . isCreated ?
this . edit . html ( d , ! 0 ) : "" } , text : function ( a ) { return a === d ? m ( this . html ( ) . replace ( /<(?!img|embed).*?>/ig , "" ) . replace ( / /ig , " " ) ) : this . html ( s ( a ) ) } , isEmpty : function ( ) { return m ( this . text ( ) . replace ( /\r\n|\n|\r/ , "" ) ) === "" } , isDirty : function ( ) { return m ( this . initContent . replace ( /\r\n|\n|\r|t/g , "" ) ) !== m ( this . html ( ) . replace ( /\r\n|\n|\r|t/g , "" ) ) } , selectedHtml : function ( ) { var a = this . isCreated ? this . cmd . range . html ( ) : "" ; return a = ha ( Ia ( a ) ) } , count : function ( a ) { a = ( a || "html" ) . toLowerCase ( ) ; if ( a === "html" ) return this . html ( ) . length ;
if ( a === "text" ) return this . text ( ) . replace ( /<(?:img|embed).*?>/ig , "K" ) . replace ( /\r\n|\n|\r/g , "" ) . length ; return 0 } , exec : function ( a ) { var a = a . toLowerCase ( ) , c = this . cmd , b = e ( a , "selectall,copy,paste,print" . split ( "," ) ) < 0 ; b && this . addBookmark ( ! 1 ) ; c [ a ] . apply ( c , D ( arguments , 1 ) ) ; b && ( this . updateState ( ) , this . addBookmark ( ! 1 ) , this . options . afterChange && this . options . afterChange . call ( this ) ) ; return this } , insertHtml : function ( a , c ) { if ( ! this . isCreated ) return this ; a = this . beforeSetHtml ( a ) ; this . exec ( "inserthtml" , a , c ) ; return this } ,
appendHtml : function ( a ) { this . html ( this . html ( ) + a ) ; if ( this . isCreated ) a = this . cmd , a . range . selectNodeContents ( a . doc . body ) . collapse ( ! 1 ) , a . select ( ) ; return this } , sync : function ( ) { wa ( this . srcElement , this . html ( ) ) ; return this } , focus : function ( ) { this . isCreated ? this . edit . focus ( ) : this . srcElement [ 0 ] . focus ( ) ; return this } , blur : function ( ) { this . isCreated ? this . edit . blur ( ) : this . srcElement [ 0 ] . blur ( ) ; return this } , addBookmark : function ( a ) { var a = q ( a , ! 0 ) , c = this . edit , b = c . doc . body , d = Ia ( b . innerHTML ) ; if ( a && this . _undoStack . length >
0 && Math . abs ( d . length - ha ( this . _undoStack [ this . _undoStack . length - 1 ] . html ) . length ) < this . minChangeSize ) return this ; c . designMode && ! this . _firstAddBookmark ? ( c = this . cmd . range , a = c . createBookmark ( ! 0 ) , a . html = Ia ( b . innerHTML ) , c . moveToBookmark ( a ) ) : a = { html : d } ; this . _firstAddBookmark = ! 1 ; Db ( this . _undoStack , a ) ; return this } , undo : function ( ) { return Eb . call ( this , this . _undoStack , this . _redoStack ) } , redo : function ( ) { return Eb . call ( this , this . _redoStack , this . _undoStack ) } , fullscreen : function ( a ) { this . fullscreenMode = a === d ? ! this . fullscreenMode :
a ; this . addBookmark ( ! 1 ) ; return this . remove ( ) . create ( ) } , readonly : function ( a ) { var a = q ( a , ! 0 ) , c = this , b = c . edit , d = b . doc ; c . designMode ? c . toolbar . disableAll ( a , [ ] ) : h ( c . noDisableItems , function ( ) { c . toolbar [ a ? "disable" : "enable" ] ( this ) } ) ; F ? d . body . contentEditable = ! a : d . designMode = a ? "off" : "on" ; b . textarea [ 0 ] . disabled = a } , createMenu : function ( a ) { var c = this . toolbar . get ( a . name ) , b = c . pos ( ) ; a . x = b . x ; a . y = b . y + c . height ( ) ; a . z = this . options . zIndex ; a . shadowMode = q ( a . shadowMode , this . shadowMode ) ; a . selectedColor !== d ? ( a . cls = "ke-colorpicker-" +
this . themeType , a . noColor = this . lang ( "noColor" ) , this . menu = xb ( a ) ) : ( a . cls = "ke-menu-" + this . themeType , a . centerLineMode = ! 1 , this . menu = ab ( a ) ) ; return this . menu } , hideMenu : function ( ) { this . menu . remove ( ) ; this . menu = null ; return this } , hideContextmenu : function ( ) { this . contextmenu . remove ( ) ; this . contextmenu = null ; return this } , createDialog : function ( a ) { var b = this ; a . z = b . options . zIndex ; a . shadowMode = q ( a . shadowMode , b . shadowMode ) ; a . closeBtn = q ( a . closeBtn , { name : b . lang ( "close" ) , click : function ( ) { b . hideDialog ( ) ; F && b . cmd && b . cmd . select ( ) } } ) ;
a . noBtn = q ( a . noBtn , { name : b . lang ( a . yesBtn ? "no" : "close" ) , click : function ( ) { b . hideDialog ( ) ; F && b . cmd && b . cmd . select ( ) } } ) ; if ( b . dialogAlignType != "page" ) a . alignEl = b . container ; a . cls = "ke-dialog-" + b . themeType ; if ( b . dialogs . length > 0 ) { var d = b . dialogs [ b . dialogs . length - 1 ] ; b . dialogs [ 0 ] . setMaskIndex ( d . z + 2 ) ; a . z = d . z + 3 ; a . showMask = ! 1 } a = yb ( a ) ; b . dialogs . push ( a ) ; return a } , hideDialog : function ( ) { this . dialogs . length > 0 && this . dialogs . pop ( ) . remove ( ) ; this . dialogs . length > 0 && this . dialogs [ 0 ] . setMaskIndex ( this . dialogs [ this . dialogs . length -
1 ] . z - 1 ) ; return this } , errorDialog : function ( a ) { var b = this . createDialog ( { width : 750 , title : this . lang ( "uploadError" ) , body : '<div style="padding:10px 20px;"><iframe frameborder="0" style="width:708px;height:400px;"></iframe></div>' } ) , b = i ( "iframe" , b . div ) , d = i . iframeDoc ( b ) ; d . open ( ) ; d . write ( a ) ; d . close ( ) ; i ( d . body ) . css ( "background-color" , "#FFF" ) ; b [ 0 ] . contentWindow . focus ( ) ; return this } } ; _instances = [ ] ; i . remove = function ( a ) { Ca ( a , function ( a ) { this . remove ( ) ; _instances . splice ( a , 1 ) } ) } ; i . sync = function ( a ) { Ca ( a , function ( ) { this . sync ( ) } ) } ;
i . html = function ( a , b ) { Ca ( a , function ( ) { this . html ( b ) } ) } ; i . insertHtml = function ( a , b ) { Ca ( a , function ( ) { this . insertHtml ( b ) } ) } ; i . appendHtml = function ( a , b ) { Ca ( a , function ( ) { this . appendHtml ( b ) } ) } ; F && N < 7 && ea ( document , "BackgroundImageCache" , ! 0 ) ; i . EditorClass = Ba ; i . editor = function ( a ) { return new Ba ( a ) } ; i . create = Fb ; i . instances = _instances ; i . plugin = Ab ; i . lang = Cb ; Ab ( "core" , function ( a ) { var c = this , g = { undo : "Z" , redo : "Y" , bold : "B" , italic : "I" , underline : "U" , print : "P" , selectall : "A" } ; c . afterSetHtml ( function ( ) { c . options . afterChange &&
c . options . afterChange . call ( c ) } ) ; c . afterCreate ( function ( ) { if ( c . syncType == "form" ) { for ( var d = a ( c . srcElement ) , g = ! 1 ; d = d . parent ( ) ; ) if ( d . name == "form" ) { g = ! 0 ; break } if ( g ) { d . bind ( "submit" , function ( ) { c . sync ( ) ; a ( b ) . bind ( "unload" , function ( ) { c . edit . textarea . remove ( ) } ) } ) ; var e = a ( '[type="reset"]' , d ) ; e . click ( function ( ) { c . html ( c . initContent ) ; c . cmd . selection ( ) } ) ; c . beforeRemove ( function ( ) { d . unbind ( ) ; e . unbind ( ) } ) } } } ) ; c . clickToolbar ( "source" , function ( ) { c . edit . designMode ? ( c . toolbar . disableAll ( ! 0 ) , c . edit . design ( ! 1 ) , c . toolbar . select ( "source" ) ) :
( c . toolbar . disableAll ( ! 1 ) , c . edit . design ( ! 0 ) , c . toolbar . unselect ( "source" ) , la ? setTimeout ( function ( ) { c . cmd . selection ( ) } , 0 ) : c . cmd . selection ( ) ) ; c . designMode = c . edit . designMode } ) ; c . afterCreate ( function ( ) { c . designMode || c . toolbar . disableAll ( ! 0 ) . select ( "source" ) } ) ; c . clickToolbar ( "fullscreen" , function ( ) { c . fullscreen ( ) } ) ; if ( c . fullscreenShortcut ) { var f = ! 1 ; c . afterCreate ( function ( ) { a ( c . edit . doc , c . edit . textarea ) . keyup ( function ( a ) { a . which == 27 && setTimeout ( function ( ) { c . fullscreen ( ) } , 0 ) } ) ; if ( f ) { if ( F && ! c . designMode ) return ;
c . focus ( ) } f || ( f = ! 0 ) } ) } h ( "undo,redo" . split ( "," ) , function ( a , b ) { g [ b ] && c . afterCreate ( function ( ) { $ ( this . edit . doc , g [ b ] , function ( ) { c . clickToolbar ( b ) } ) } ) ; c . clickToolbar ( b , function ( ) { c [ b ] ( ) } ) } ) ; c . clickToolbar ( "formatblock" , function ( ) { var a = c . lang ( "formatblock.formatBlock" ) , b = { h1 : 28 , h2 : 24 , h3 : 18 , H4 : 14 , p : 12 } , d = c . cmd . val ( "formatblock" ) , g = c . createMenu ( { name : "formatblock" , width : c . langType == "en" ? 200 : 150 } ) ; h ( a , function ( a , e ) { var f = "font-size:" + b [ a ] + "px;" ; a . charAt ( 0 ) === "h" && ( f += "font-weight:bold;" ) ; g . addItem ( { title : '<span style="' +
f + '" unselectable="on">' + e + "</span>" , height : b [ a ] + 12 , checked : d === a || d === e , click : function ( ) { c . select ( ) . exec ( "formatblock" , "<" + a + ">" ) . hideMenu ( ) } } ) } ) } ) ; c . clickToolbar ( "fontname" , function ( ) { var a = c . cmd . val ( "fontname" ) , b = c . createMenu ( { name : "fontname" , width : 150 } ) ; h ( c . lang ( "fontname.fontName" ) , function ( d , g ) { b . addItem ( { title : '<span style="font-family: ' + d + ';" unselectable="on">' + g + "</span>" , checked : a === d . toLowerCase ( ) || a === g . toLowerCase ( ) , click : function ( ) { c . exec ( "fontname" , d ) . hideMenu ( ) } } ) } ) } ) ; c . clickToolbar ( "fontsize" ,
function ( ) { var a = c . cmd . val ( "fontsize" ) , b = c . createMenu ( { name : "fontsize" , width : 150 } ) ; h ( c . fontSizeTable , function ( d , g ) { b . addItem ( { title : '<span style="font-size:' + g + ';" unselectable="on">' + g + "</span>" , height : l ( g ) + 12 , checked : a === g , click : function ( ) { c . exec ( "fontsize" , g ) . hideMenu ( ) } } ) } ) } ) ; h ( "forecolor,hilitecolor" . split ( "," ) , function ( a , b ) { c . clickToolbar ( b , function ( ) { c . createMenu ( { name : b , selectedColor : c . cmd . val ( b ) || "default" , colors : c . colorTable , click : function ( a ) { c . exec ( b , a ) . hideMenu ( ) } } ) } ) } ) ; h ( "cut,copy,paste" . split ( "," ) ,
function ( a , b ) { c . clickToolbar ( b , function ( ) { c . focus ( ) ; try { c . exec ( b , null ) } catch ( a ) { alert ( c . lang ( b + "Error" ) ) } } ) } ) ; c . clickToolbar ( "about" , function ( ) { var a = '<div style="margin:20px;"><div>KindEditor ' + Ka + '</div><div>Copyright © <a href="http://www.kindsoft.net/" target="_blank">kindsoft.net</a> All rights reserved.</div></div>' ; c . createDialog ( { name : "about" , width : 350 , title : c . lang ( "about" ) , body : a } ) } ) ; c . plugin . getSelectedLink = function ( ) { return c . cmd . commonAncestor ( "a" ) } ; c . plugin . getSelectedImage = function ( ) { return Ha ( c . edit . cmd . range ,
function ( a ) { return ! /^ke-\w+$/i . test ( a [ 0 ] . className ) } ) } ; c . plugin . getSelectedFlash = function ( ) { return Ha ( c . edit . cmd . range , function ( a ) { return a [ 0 ] . className == "ke-flash" } ) } ; c . plugin . getSelectedMedia = function ( ) { return Ha ( c . edit . cmd . range , function ( a ) { return a [ 0 ] . className == "ke-media" || a [ 0 ] . className == "ke-rm" } ) } ; c . plugin . getSelectedAnchor = function ( ) { return Ha ( c . edit . cmd . range , function ( a ) { return a [ 0 ] . className == "ke-anchor" } ) } ; h ( "link,image,flash,media,anchor" . split ( "," ) , function ( a , b ) { var g = b . charAt ( 0 ) . toUpperCase ( ) +
b . substr ( 1 ) ; h ( "edit,delete" . split ( "," ) , function ( a , e ) { c . addContextmenu ( { title : c . lang ( e + g ) , click : function ( ) { c . loadPlugin ( b , function ( ) { c . plugin [ b ] [ e ] ( ) ; c . hideMenu ( ) } ) } , cond : c . plugin [ "getSelected" + g ] , width : 150 , iconClass : e == "edit" ? "ke-icon-" + b : d } ) } ) ; c . addContextmenu ( { title : "-" } ) } ) ; c . plugin . getSelectedTable = function ( ) { return c . cmd . commonAncestor ( "table" ) } ; c . plugin . getSelectedRow = function ( ) { return c . cmd . commonAncestor ( "tr" ) } ; c . plugin . getSelectedCell = function ( ) { return c . cmd . commonAncestor ( "td" ) } ; h ( "prop,cellprop,colinsertleft,colinsertright,rowinsertabove,rowinsertbelow,rowmerge,colmerge,rowsplit,colsplit,coldelete,rowdelete,insert,delete" . split ( "," ) ,
function ( a , b ) { var d = e ( b , [ "prop" , "delete" ] ) < 0 ? c . plugin . getSelectedCell : c . plugin . getSelectedTable ; c . addContextmenu ( { title : c . lang ( "table" + b ) , click : function ( ) { c . loadPlugin ( "table" , function ( ) { c . plugin . table [ b ] ( ) ; c . hideMenu ( ) } ) } , cond : d , width : 170 , iconClass : "ke-icon-table" + b } ) } ) ; c . addContextmenu ( { title : "-" } ) ; h ( "selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,indent,outdent,subscript,superscript,hr,print,bold,italic,underline,strikethrough,removeformat,unlink" . split ( "," ) ,
function ( a , b ) { g [ b ] && c . afterCreate ( function ( ) { $ ( this . edit . doc , g [ b ] , function ( ) { c . cmd . selection ( ) ; c . clickToolbar ( b ) } ) } ) ; c . clickToolbar ( b , function ( ) { c . focus ( ) . exec ( b , null ) } ) } ) ; c . afterCreate ( function ( ) { function b ( ) { g . range . moveToBookmark ( e ) ; g . select ( ) ; ka && ( a ( "div." + i , f ) . each ( function ( ) { a ( this ) . after ( "<br />" ) . remove ( ! 0 ) } ) , a ( "span.Apple-style-span" , f ) . remove ( ! 0 ) , a ( "span.Apple-tab-span" , f ) . remove ( ! 0 ) , a ( "span[style]" , f ) . each ( function ( ) { a ( this ) . css ( "white-space" ) == "nowrap" && a ( this ) . remove ( ! 0 ) } ) , a ( "meta" , f ) . remove ( ) ) ;
var d = f [ 0 ] . innerHTML ; f . remove ( ) ; d !== "" && ( ka && ( d = d . replace ( /(<br>)\1/ig , "$1" ) ) , c . pasteType === 2 && ( d = d . replace ( /(<(?:p|p\s[^>]*)>) *(<\/p>)/ig , "" ) , /schemas-microsoft-com|worddocument|mso-\w+/i . test ( d ) ? d = U ( d , c . filterMode ? c . htmlTags : a . options . htmlTags ) : ( d = H ( d , c . filterMode ? c . htmlTags : null ) , d = c . beforeSetHtml ( d ) ) ) , c . pasteType === 1 && ( d = d . replace ( / /ig , " " ) , d = d . replace ( /\n\s*\n/g , "\n" ) , d = d . replace ( /<br[^>]*>/ig , "\n" ) , d = d . replace ( /<\/p><p[^>]*>/ig , "\n" ) , d = d . replace ( /<[^>]+>/g , "" ) , d = d . replace ( / {2}/g , " " ) ,
c . newlineTag == "p" ? /\n/ . test ( d ) && ( d = d . replace ( /^/ , "<p>" ) . replace ( /$/ , "<br /></p>" ) . replace ( /\n/g , "<br /></p><p>" ) ) : d = d . replace ( /\n/g , "<br />$&" ) ) , c . insertHtml ( d , ! 0 ) ) } var d = c . edit . doc , g , e , f , i = "__kindeditor_paste__" , h = ! 1 ; a ( d . body ) . bind ( "paste" , function ( l ) { if ( c . pasteType === 0 ) l . stop ( ) ; else if ( ! h ) { h = ! 0 ; a ( "div." + i , d ) . remove ( ) ; g = c . cmd . selection ( ) ; e = g . range . createBookmark ( ) ; f = a ( '<div class="' + i + '"></div>' , d ) . css ( { position : "absolute" , width : "1px" , height : "1px" , overflow : "hidden" , left : "-1981px" , top : a ( e . start ) . pos ( ) . y +
"px" , "white-space" : "nowrap" } ) ; a ( d . body ) . append ( f ) ; if ( F ) { var n = g . range . get ( ! 0 ) ; n . moveToElementText ( f [ 0 ] ) ; n . select ( ) ; n . execCommand ( "paste" ) ; l . preventDefault ( ) } else g . range . selectNodeContents ( f [ 0 ] ) , g . select ( ) ; setTimeout ( function ( ) { b ( ) ; h = ! 1 } , 0 ) } } ) } ) ; c . beforeGetHtml ( function ( a ) { F && N <= 8 && ( a = a . replace ( /<div\s+[^>]*data-ke-input-tag="([^"]*)"[^>]*>([\s\S]*?)<\/div>/ig , function ( a , b ) { return unescape ( b ) } ) , a = a . replace ( /(<input)((?:\s+[^>]*)?>)/ig , function ( a , b , c ) { if ( ! /\s+type="[^"]+"/i . test ( a ) ) return b + ' type="text"' +
c ; return a } ) ) ; return a . replace ( /(<(?:noscript|noscript\s[^>]*)>)([\s\S]*?)(<\/noscript>)/ig , function ( a , b , c , d ) { return b + v ( c ) . replace ( /\s+/g , " " ) + d } ) . replace ( /<img[^>]*class="?ke-(flash|rm|media)"?[^>]*>/ig , function ( a ) { var a = K ( a ) , b = M ( a . style || "" ) , c = S ( a [ "data-ke-tag" ] ) , d = q ( b . width , "" ) , b = q ( b . height , "" ) ; /px/i . test ( d ) && ( d = l ( d ) ) ; /px/i . test ( b ) && ( b = l ( b ) ) ; c . width = q ( a . width , d ) ; c . height = q ( a . height , b ) ; return Na ( c ) } ) . replace ( /<img[^>]*class="?ke-anchor"?[^>]*>/ig , function ( a ) { a = K ( a ) ; return '<a name="' + unescape ( a [ "data-ke-name" ] ) +
'"></a>' } ) . replace ( /<div\s+[^>]*data-ke-script-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/ig , function ( a , b , c ) { return "<script" + unescape ( b ) + ">" + unescape ( c ) + "<\/script>" } ) . replace ( /<div\s+[^>]*data-ke-noscript-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/ig , function ( a , b , c ) { return "<noscript" + unescape ( b ) + ">" + unescape ( c ) + "</noscript>" } ) . replace ( /(<[^>]*)data-ke-src="([^"]*)"([^>]*>)/ig , function ( a , b , c ) { a = a . replace ( /(\s+(?:href|src)=")[^"]*(")/i , function ( a , b , d ) { return b + v ( c ) + d } ) ; return a = a . replace ( /\s+data-ke-src="[^"]*"/i ,
"" ) } ) . replace ( /(<[^>]+\s)data-ke-(on\w+="[^"]*"[^>]*>)/ig , function ( a , b , c ) { return b + c } ) } ) ; c . beforeSetHtml ( function ( a ) { F && N <= 8 && ( a = a . replace ( /<input[^>]*>|<(select|button)[^>]*>[\s\S]*?<\/\1>/ig , function ( a ) { var b = K ( a ) ; if ( M ( b . style || "" ) . display == "none" ) return '<div class="ke-display-none" data-ke-input-tag="' + escape ( a ) + '"></div>' ; return a } ) ) ; return a . replace ( /<embed[^>]*type="([^"]+)"[^>]*>(?:<\/embed>)?/ig , function ( a ) { a = K ( a ) ; a . src = q ( a . src , "" ) ; a . width = q ( a . width , 0 ) ; a . height = q ( a . height , 0 ) ; return kb ( c . themesPath +
"common/blank.gif" , a ) } ) . replace ( /<a[^>]*name="([^"]+)"[^>]*>(?:<\/a>)?/ig , function ( a ) { var b = K ( a ) ; if ( b . href !== d ) return a ; return '<img class="ke-anchor" src="' + c . themesPath + 'common/anchor.gif" data-ke-name="' + escape ( b . name ) + '" />' } ) . replace ( /<script([^>]*)>([\s\S]*?)<\/script>/ig , function ( a , b , c ) { return '<div class="ke-script" data-ke-script-attr="' + escape ( b ) + '">' + escape ( c ) + "</div>" } ) . replace ( /<noscript([^>]*)>([\s\S]*?)<\/noscript>/ig , function ( a , b , c ) { return '<div class="ke-noscript" data-ke-noscript-attr="' +
escape ( b ) + '">' + escape ( c ) + "</div>" } ) . replace ( /(<[^>]*)(href|src)="([^"]*)"([^>]*>)/ig , function ( a , b , c , d , g ) { if ( a . match ( /\sdata-ke-src="[^"]*"/i ) ) return a ; return a = b + c + '="' + d + '" data-ke-src="' + s ( d ) + '"' + g } ) . replace ( /(<[^>]+\s)(on\w+="[^"]*"[^>]*>)/ig , function ( a , b , c ) { return b + "data-ke-" + c } ) . replace ( /<table[^>]*\s+border="0"[^>]*>/ig , function ( a ) { if ( a . indexOf ( "ke-zeroborder" ) >= 0 ) return a ; return O ( a , "ke-zeroborder" ) } ) } ) } ) } } ) ( window ) ;
KindEditor . lang ( { source : "HTML\u4ee3\u7801" , preview : "\u9884\u89c8" , undo : "\u540e\u9000(Ctrl+Z)" , redo : "\u524d\u8fdb(Ctrl+Y)" , cut : "\u526a\u5207(Ctrl+X)" , copy : "\u590d\u5236(Ctrl+C)" , paste : "\u7c98\u8d34(Ctrl+V)" , plainpaste : "\u7c98\u8d34\u4e3a\u65e0\u683c\u5f0f\u6587\u672c" , wordpaste : "\u4eceWord\u7c98\u8d34" , selectall : "\u5168\u9009(Ctrl+A)" , justifyleft : "\u5de6\u5bf9\u9f50" , justifycenter : "\u5c45\u4e2d" , justifyright : "\u53f3\u5bf9\u9f50" , justifyfull : "\u4e24\u7aef\u5bf9\u9f50" , insertorderedlist : "\u7f16\u53f7" ,
insertunorderedlist : "\u9879\u76ee\u7b26\u53f7" , indent : "\u589e\u52a0\u7f29\u8fdb" , outdent : "\u51cf\u5c11\u7f29\u8fdb" , subscript : "\u4e0b\u6807" , superscript : "\u4e0a\u6807" , formatblock : "\u6bb5\u843d" , fontname : "\u5b57\u4f53" , fontsize : "\u6587\u5b57\u5927\u5c0f" , forecolor : "\u6587\u5b57\u989c\u8272" , hilitecolor : "\u6587\u5b57\u80cc\u666f" , bold : "\u7c97\u4f53(Ctrl+B)" , italic : "\u659c\u4f53(Ctrl+I)" , underline : "\u4e0b\u5212\u7ebf(Ctrl+U)" , strikethrough : "\u5220\u9664\u7ebf" , removeformat : "\u5220\u9664\u683c\u5f0f" ,
image : "\u56fe\u7247" , multiimage : "\u6279\u91cf\u56fe\u7247\u4e0a\u4f20" , flash : "Flash" , media : "\u89c6\u97f3\u9891" , table : "\u8868\u683c" , tablecell : "\u5355\u5143\u683c" , hr : "\u63d2\u5165\u6a2a\u7ebf" , emoticons : "\u63d2\u5165\u8868\u60c5" , link : "\u8d85\u7ea7\u94fe\u63a5" , unlink : "\u53d6\u6d88\u8d85\u7ea7\u94fe\u63a5" , fullscreen : "\u5168\u5c4f\u663e\u793a" , about : "\u5173\u4e8e" , print : "\u6253\u5370(Ctrl+P)" , filemanager : "\u6587\u4ef6\u7a7a\u95f4" , code : "\u63d2\u5165\u7a0b\u5e8f\u4ee3\u7801" , map : "Google\u5730\u56fe" ,
baidumap : "\u767e\u5ea6\u5730\u56fe" , lineheight : "\u884c\u8ddd" , clearhtml : "\u6e05\u7406HTML\u4ee3\u7801" , pagebreak : "\u63d2\u5165\u5206\u9875\u7b26" , quickformat : "\u4e00\u952e\u6392\u7248" , insertfile : "\u63d2\u5165\u6587\u4ef6" , template : "\u63d2\u5165\u6a21\u677f" , anchor : "\u951a\u70b9" , yes : "\u786e\u5b9a" , no : "\u53d6\u6d88" , close : "\u5173\u95ed" , editImage : "\u56fe\u7247\u5c5e\u6027" , deleteImage : "\u5220\u9664\u56fe\u7247" , editFlash : "Flash\u5c5e\u6027" , deleteFlash : "\u5220\u9664Flash" , editMedia : "\u89c6\u97f3\u9891\u5c5e\u6027" ,
deleteMedia : "\u5220\u9664\u89c6\u97f3\u9891" , editLink : "\u8d85\u7ea7\u94fe\u63a5\u5c5e\u6027" , deleteLink : "\u53d6\u6d88\u8d85\u7ea7\u94fe\u63a5" , editAnchor : "\u951a\u70b9\u5c5e\u6027" , deleteAnchor : "\u5220\u9664\u951a\u70b9" , tableprop : "\u8868\u683c\u5c5e\u6027" , tablecellprop : "\u5355\u5143\u683c\u5c5e\u6027" , tableinsert : "\u63d2\u5165\u8868\u683c" , tabledelete : "\u5220\u9664\u8868\u683c" , tablecolinsertleft : "\u5de6\u4fa7\u63d2\u5165\u5217" , tablecolinsertright : "\u53f3\u4fa7\u63d2\u5165\u5217" , tablerowinsertabove : "\u4e0a\u65b9\u63d2\u5165\u884c" ,
tablerowinsertbelow : "\u4e0b\u65b9\u63d2\u5165\u884c" , tablerowmerge : "\u5411\u4e0b\u5408\u5e76\u5355\u5143\u683c" , tablecolmerge : "\u5411\u53f3\u5408\u5e76\u5355\u5143\u683c" , tablerowsplit : "\u62c6\u5206\u884c" , tablecolsplit : "\u62c6\u5206\u5217" , tablecoldelete : "\u5220\u9664\u5217" , tablerowdelete : "\u5220\u9664\u884c" , noColor : "\u65e0\u989c\u8272" , pleaseSelectFile : "\u8bf7\u9009\u62e9\u6587\u4ef6\u3002" , invalidImg : "\u8bf7\u8f93\u5165\u6709\u6548\u7684URL\u5730\u5740\u3002\n\u53ea\u5141\u8bb8jpg,gif,bmp,png\u683c\u5f0f\u3002" ,
invalidMedia : "\u8bf7\u8f93\u5165\u6709\u6548\u7684URL\u5730\u5740\u3002\n\u53ea\u5141\u8bb8swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb\u683c\u5f0f\u3002" , invalidWidth : "\u5bbd\u5ea6\u5fc5\u987b\u4e3a\u6570\u5b57\u3002" , invalidHeight : "\u9ad8\u5ea6\u5fc5\u987b\u4e3a\u6570\u5b57\u3002" , invalidBorder : "\u8fb9\u6846\u5fc5\u987b\u4e3a\u6570\u5b57\u3002" , invalidUrl : "\u8bf7\u8f93\u5165\u6709\u6548\u7684URL\u5730\u5740\u3002" , invalidRows : "\u884c\u6570\u4e3a\u5fc5\u9009\u9879\uff0c\u53ea\u5141\u8bb8\u8f93\u5165\u5927\u4e8e0\u7684\u6570\u5b57\u3002" ,
invalidCols : "\u5217\u6570\u4e3a\u5fc5\u9009\u9879\uff0c\u53ea\u5141\u8bb8\u8f93\u5165\u5927\u4e8e0\u7684\u6570\u5b57\u3002" , invalidPadding : "\u8fb9\u8ddd\u5fc5\u987b\u4e3a\u6570\u5b57\u3002" , invalidSpacing : "\u95f4\u8ddd\u5fc5\u987b\u4e3a\u6570\u5b57\u3002" , invalidJson : "\u670d\u52a1\u5668\u53d1\u751f\u6545\u969c\u3002" , uploadSuccess : "\u4e0a\u4f20\u6210\u529f\u3002" , cutError : "\u60a8\u7684\u6d4f\u89c8\u5668\u5b89\u5168\u8bbe\u7f6e\u4e0d\u5141\u8bb8\u4f7f\u7528\u526a\u5207\u64cd\u4f5c\uff0c\u8bf7\u4f7f\u7528\u5feb\u6377\u952e(Ctrl+X)\u6765\u5b8c\u6210\u3002" ,
copyError : "\u60a8\u7684\u6d4f\u89c8\u5668\u5b89\u5168\u8bbe\u7f6e\u4e0d\u5141\u8bb8\u4f7f\u7528\u590d\u5236\u64cd\u4f5c\uff0c\u8bf7\u4f7f\u7528\u5feb\u6377\u952e(Ctrl+C)\u6765\u5b8c\u6210\u3002" , pasteError : "\u60a8\u7684\u6d4f\u89c8\u5668\u5b89\u5168\u8bbe\u7f6e\u4e0d\u5141\u8bb8\u4f7f\u7528\u7c98\u8d34\u64cd\u4f5c\uff0c\u8bf7\u4f7f\u7528\u5feb\u6377\u952e(Ctrl+V)\u6765\u5b8c\u6210\u3002" , ajaxLoading : "\u52a0\u8f7d\u4e2d\uff0c\u8bf7\u7a0d\u5019 ..." , uploadLoading : "\u4e0a\u4f20\u4e2d\uff0c\u8bf7\u7a0d\u5019 ..." ,
uploadError : "\u4e0a\u4f20\u9519\u8bef" , "plainpaste.comment" : "\u8bf7\u4f7f\u7528\u5feb\u6377\u952e(Ctrl+V)\u628a\u5185\u5bb9\u7c98\u8d34\u5230\u4e0b\u9762\u7684\u65b9\u6846\u91cc\u3002" , "wordpaste.comment" : "\u8bf7\u4f7f\u7528\u5feb\u6377\u952e(Ctrl+V)\u628a\u5185\u5bb9\u7c98\u8d34\u5230\u4e0b\u9762\u7684\u65b9\u6846\u91cc\u3002" , "code.pleaseInput" : "\u8bf7\u8f93\u5165\u7a0b\u5e8f\u4ee3\u7801\u3002" , "link.url" : "URL" , "link.linkType" : "\u6253\u5f00\u7c7b\u578b" , "link.newWindow" : "\u65b0\u7a97\u53e3" , "link.selfWindow" : "\u5f53\u524d\u7a97\u53e3" ,
"flash.url" : "URL" , "flash.width" : "\u5bbd\u5ea6" , "flash.height" : "\u9ad8\u5ea6" , "flash.upload" : "\u4e0a\u4f20" , "flash.viewServer" : "\u6587\u4ef6\u7a7a\u95f4" , "media.url" : "URL" , "media.width" : "\u5bbd\u5ea6" , "media.height" : "\u9ad8\u5ea6" , "media.autostart" : "\u81ea\u52a8\u64ad\u653e" , "media.upload" : "\u4e0a\u4f20" , "media.viewServer" : "\u6587\u4ef6\u7a7a\u95f4" , "image.remoteImage" : "\u7f51\u7edc\u56fe\u7247" , "image.localImage" : "\u672c\u5730\u4e0a\u4f20" , "image.remoteUrl" : "\u56fe\u7247\u5730\u5740" , "image.localUrl" : "\u4e0a\u4f20\u6587\u4ef6" ,
"image.size" : "\u56fe\u7247\u5927\u5c0f" , "image.width" : "\u5bbd" , "image.height" : "\u9ad8" , "image.resetSize" : "\u91cd\u7f6e\u5927\u5c0f" , "image.align" : "\u5bf9\u9f50\u65b9\u5f0f" , "image.defaultAlign" : "\u9ed8\u8ba4\u65b9\u5f0f" , "image.leftAlign" : "\u5de6\u5bf9\u9f50" , "image.rightAlign" : "\u53f3\u5bf9\u9f50" , "image.imgTitle" : "\u56fe\u7247\u8bf4\u660e" , "image.upload" : "\u6d4f\u89c8..." , "image.viewServer" : "\u56fe\u7247\u7a7a\u95f4" , "multiimage.uploadDesc" : "\u5141\u8bb8\u7528\u6237\u540c\u65f6\u4e0a\u4f20<%=uploadLimit%>\u5f20\u56fe\u7247\uff0c\u5355\u5f20\u56fe\u7247\u5bb9\u91cf\u4e0d\u8d85\u8fc7<%=sizeLimit%>" ,
"multiimage.startUpload" : "\u5f00\u59cb\u4e0a\u4f20" , "multiimage.clearAll" : "\u5168\u90e8\u6e05\u7a7a" , "multiimage.insertAll" : "\u5168\u90e8\u63d2\u5165" , "multiimage.queueLimitExceeded" : "\u6587\u4ef6\u6570\u91cf\u8d85\u8fc7\u9650\u5236\u3002" , "multiimage.fileExceedsSizeLimit" : "\u6587\u4ef6\u5927\u5c0f\u8d85\u8fc7\u9650\u5236\u3002" , "multiimage.zeroByteFile" : "\u65e0\u6cd5\u4e0a\u4f20\u7a7a\u6587\u4ef6\u3002" , "multiimage.invalidFiletype" : "\u6587\u4ef6\u7c7b\u578b\u4e0d\u6b63\u786e\u3002" , "multiimage.unknownError" : "\u53d1\u751f\u5f02\u5e38\uff0c\u65e0\u6cd5\u4e0a\u4f20\u3002" ,
"multiimage.pending" : "\u7b49\u5f85\u4e0a\u4f20" , "multiimage.uploadError" : "\u4e0a\u4f20\u5931\u8d25" , "filemanager.emptyFolder" : "\u7a7a\u6587\u4ef6\u5939" , "filemanager.moveup" : "\u79fb\u5230\u4e0a\u4e00\u7ea7\u6587\u4ef6\u5939" , "filemanager.viewType" : "\u663e\u793a\u65b9\u5f0f\uff1a" , "filemanager.viewImage" : "\u7f29\u7565\u56fe" , "filemanager.listImage" : "\u8be6\u7ec6\u4fe1\u606f" , "filemanager.orderType" : "\u6392\u5e8f\u65b9\u5f0f\uff1a" , "filemanager.fileName" : "\u540d\u79f0" , "filemanager.fileSize" : "\u5927\u5c0f" ,
"filemanager.fileType" : "\u7c7b\u578b" , "insertfile.url" : "URL" , "insertfile.title" : "\u6587\u4ef6\u8bf4\u660e" , "insertfile.upload" : "\u4e0a\u4f20" , "insertfile.viewServer" : "\u6587\u4ef6\u7a7a\u95f4" , "table.cells" : "\u5355\u5143\u683c\u6570" , "table.rows" : "\u884c\u6570" , "table.cols" : "\u5217\u6570" , "table.size" : "\u5927\u5c0f" , "table.width" : "\u5bbd\u5ea6" , "table.height" : "\u9ad8\u5ea6" , "table.percent" : "%" , "table.px" : "px" , "table.space" : "\u8fb9\u8ddd\u95f4\u8ddd" , "table.padding" : "\u8fb9\u8ddd" , "table.spacing" : "\u95f4\u8ddd" ,
"table.align" : "\u5bf9\u9f50\u65b9\u5f0f" , "table.textAlign" : "\u6c34\u5e73\u5bf9\u9f50" , "table.verticalAlign" : "\u5782\u76f4\u5bf9\u9f50" , "table.alignDefault" : "\u9ed8\u8ba4" , "table.alignLeft" : "\u5de6\u5bf9\u9f50" , "table.alignCenter" : "\u5c45\u4e2d" , "table.alignRight" : "\u53f3\u5bf9\u9f50" , "table.alignTop" : "\u9876\u90e8" , "table.alignMiddle" : "\u4e2d\u90e8" , "table.alignBottom" : "\u5e95\u90e8" , "table.alignBaseline" : "\u57fa\u7ebf" , "table.border" : "\u8fb9\u6846" , "table.borderWidth" : "\u8fb9\u6846" , "table.borderColor" : "\u989c\u8272" ,
"table.backgroundColor" : "\u80cc\u666f\u989c\u8272" , "map.address" : "\u5730\u5740: " , "map.search" : "\u641c\u7d22" , "baidumap.address" : "\u5730\u5740: " , "baidumap.search" : "\u641c\u7d22" , "baidumap.insertDynamicMap" : "\u63d2\u5165\u52a8\u6001\u5730\u56fe" , "anchor.name" : "\u951a\u70b9\u540d\u79f0" , "formatblock.formatBlock" : { h1 : "\u6807\u9898 1" , h2 : "\u6807\u9898 2" , h3 : "\u6807\u9898 3" , h4 : "\u6807\u9898 4" , p : "\u6b63 \u6587" } , "fontname.fontName" : { SimSun : "\u5b8b\u4f53" , NSimSun : "\u65b0\u5b8b\u4f53" , FangSong _GB2312 : "\u4eff\u5b8b_GB2312" ,
KaiTi _GB2312 : "\u6977\u4f53_GB2312" , SimHei : "\u9ed1\u4f53" , "Microsoft YaHei" : "\u5fae\u8f6f\u96c5\u9ed1" , Arial : "Arial" , "Arial Black" : "Arial Black" , "Times New Roman" : "Times New Roman" , "Courier New" : "Courier New" , Tahoma : "Tahoma" , Verdana : "Verdana" } , "lineheight.lineHeight" : [ { 1 : "\u5355\u500d\u884c\u8ddd" } , { "1.5" : "1.5\u500d\u884c\u8ddd" } , { 2 : "2\u500d\u884c\u8ddd" } , { "2.5" : "2.5\u500d\u884c\u8ddd" } , { 3 : "3\u500d\u884c\u8ddd" } ] , "template.selectTemplate" : "\u53ef\u9009\u6a21\u677f" , "template.replaceContent" : "\u66ff\u6362\u5f53\u524d\u5185\u5bb9" ,
"template.fileList" : { "1.html" : "\u56fe\u7247\u548c\u6587\u5b57" , "2.html" : "\u8868\u683c" , "3.html" : "\u9879\u76ee\u7f16\u53f7" } } , "zh_CN" ) ;
KindEditor . plugin ( "anchor" , function ( b ) { var d = this , f = d . lang ( "anchor." ) ; d . plugin . anchor = { edit : function ( ) { var j = [ '<div style="padding:20px;"><div class="ke-dialog-row">' , '<label for="keName">' + f . name + "</label>" , '<input class="ke-input-text" type="text" id="keName" name="name" value="" style="width:100px;" /></div></div>' ] . join ( "" ) , j = d . createDialog ( { name : "anchor" , width : 300 , title : d . lang ( "anchor" ) , body : j , yesBtn : { name : d . lang ( "yes" ) , click : function ( ) { d . insertHtml ( '<a name="' + e . val ( ) + '">' ) . hideDialog ( ) . focus ( ) } } } ) . div ,
e = b ( 'input[name="name"]' , j ) ; ( j = d . plugin . getSelectedAnchor ( ) ) && e . val ( unescape ( j . attr ( "data-ke-name" ) ) ) ; e [ 0 ] . focus ( ) ; e [ 0 ] . select ( ) } , "delete" : function ( ) { d . plugin . getSelectedAnchor ( ) . remove ( ) } } ; d . clickToolbar ( "anchor" , d . plugin . anchor . edit ) } ) ;
KindEditor . plugin ( "autoheight" , function ( b ) { function d ( ) { var d = j . edit , f = d . doc . body ; d . iframe . height ( e ) ; j . resize ( null , Math . max ( ( b . IE ? f . scrollHeight : f . offsetHeight ) + 76 , e ) ) } function f ( ) { e = b . removeUnit ( j . height ) ; j . edit . afterChange ( d ) ; var f = j . edit , m = f . doc . body ; f . iframe [ 0 ] . scroll = "no" ; m . style . overflowY = "hidden" ; d ( ) } var j = this ; if ( j . autoHeightMode ) { var e ; j . isCreated ? f ( ) : j . afterCreate ( f ) } } ) ;
KindEditor . plugin ( "baidumap" , function ( b ) { var d = this , f = d . lang ( "baidumap." ) , j = b . undef ( d . mapWidth , 558 ) , e = b . undef ( d . mapHeight , 360 ) ; d . clickToolbar ( "baidumap" , function ( ) { function h ( ) { v = r [ 0 ] . contentWindow ; p = b . iframeDoc ( r ) } var m = [ '<div style="padding:10px 20px;"><div class="ke-header"><div class="ke-left">' , f . address + ' <input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ' , '<span class="ke-button-common ke-button-outer">' , '<input type="button" name="searchBtn" class="ke-button-common ke-button" value="' +
f . search + '" />' , '</span></div><div class="ke-right">' , '<input type="checkbox" id="keInsertDynamicMap" name="insertDynamicMap" value="1" /> <label for="keInsertDynamicMap">' + f . insertDynamicMap + "</label>" , '</div><div class="ke-clearfix"></div></div>' , '<div class="ke-map" style="width:' + j + "px;height:" + e + 'px;"></div>' , "</div>" ] . join ( "" ) , m = d . createDialog ( { name : "baidumap" , width : j + 42 , title : d . lang ( "baidumap" ) , body : m , yesBtn : { name : d . lang ( "yes" ) , click : function ( ) { var b = v . map , f = b . getCenter ( ) , f = f . lng + "," + f . lat ,
b = b . getZoom ( ) , b = [ s [ 0 ] . checked ? d . pluginsPath + "baidumap/index.html" : "http://api.map.baidu.com/staticimage" , "?center=" + encodeURIComponent ( f ) , "&zoom=" + encodeURIComponent ( b ) , "&width=" + j , "&height=" + e , "&markers=" + encodeURIComponent ( f ) , "&markerStyles=" + encodeURIComponent ( "l,A" ) ] . join ( "" ) ; s [ 0 ] . checked ? d . insertHtml ( '<iframe src="' + b + '" frameborder="0" style="width:' + ( j + 2 ) + "px;height:" + ( e + 2 ) + 'px;"></iframe>' ) : d . exec ( "insertimage" , b ) ; d . hideDialog ( ) . focus ( ) } } , beforeRemove : function ( ) { l . remove ( ) ; p && p . write ( "" ) ;
r . remove ( ) } } ) , n = m . div , o = b ( '[name="address"]' , n ) , l = b ( '[name="searchBtn"]' , n ) , s = b ( '[name="insertDynamicMap"]' , m . div ) , v , p , r = b ( '<iframe class="ke-textarea" frameborder="0" src="' + d . pluginsPath + 'baidumap/map.html" style="width:' + j + "px;height:" + e + 'px;"></iframe>' ) ; r . bind ( "load" , function ( ) { r . unbind ( "load" ) ; b . IE ? h ( ) : setTimeout ( h , 0 ) } ) ; b ( ".ke-map" , n ) . replaceWith ( r ) ; l . click ( function ( ) { v . search ( o . val ( ) ) } ) } ) } ) ;
KindEditor . plugin ( "clearhtml" , function ( b ) { var d = this ; d . clickToolbar ( "clearhtml" , function ( ) { d . focus ( ) ; var f = d . html ( ) , f = f . replace ( /(<script[^>]*>)([\s\S]*?)(<\/script>)/ig , "" ) , f = f . replace ( /(<style[^>]*>)([\s\S]*?)(<\/style>)/ig , "" ) , f = b . formatHtml ( f , { a : [ "href" , "target" ] , embed : [ "src" , "width" , "height" , "type" , "loop" , "autostart" , "quality" , ".width" , ".height" , "align" , "allowscriptaccess" ] , img : [ "src" , "width" , "height" , "border" , "alt" , "title" , ".width" , ".height" ] , table : [ "border" ] , "td,th" : [ "rowspan" , "colspan" ] , "div,hr,br,tbody,tr,p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6" : [ ] } ) ;
d . html ( f ) ; d . cmd . selection ( ! 0 ) ; d . addBookmark ( ) } ) } ) ;
KindEditor . plugin ( "code" , function ( b ) { var d = this ; d . clickToolbar ( "code" , function ( ) { var f = d . lang ( "code." ) , j = d . createDialog ( { name : "code" , width : 450 , title : d . lang ( "code" ) , body : '<div style="padding:10px 20px;"><div class="ke-dialog-row"><select class="ke-code-type"><option value="js">JavaScript</option><option value="html">HTML</option><option value="css">CSS</option><option value="php">PHP</option><option value="pl">Perl</option><option value="py">Python</option><option value="rb">Ruby</option><option value="java">Java</option><option value="vb">ASP/VB</option><option value="cpp">C/C++</option><option value="cs">C#</option><option value="xml">XML</option><option value="bsh">Shell</option><option value="">Other</option></select></div><textarea class="ke-textarea" style="width:408px;height:260px;"></textarea></div>' , yesBtn : { name : d . lang ( "yes" ) ,
click : function ( ) { var h = b ( ".ke-code-type" , j . div ) . val ( ) , m = e . val ( ) , h = '<pre class="prettyprint' + ( h === "" ? "" : " lang-" + h ) + '">\n' + b . escape ( m ) + "</pre> " ; b . trim ( m ) === "" ? ( alert ( f . pleaseInput ) , e [ 0 ] . focus ( ) ) : d . insertHtml ( h ) . hideDialog ( ) . focus ( ) } } } ) , e = b ( "textarea" , j . div ) ; e [ 0 ] . focus ( ) } ) } ) ;
KindEditor . plugin ( "emoticons" , function ( b ) { var d = this , f = d . emoticonsPath || d . pluginsPath + "emoticons/images/" , j = d . allowPreviewEmoticons === void 0 ? ! 0 : d . allowPreviewEmoticons , e = 1 ; d . clickToolbar ( "emoticons" , function ( ) { function h ( e , h , l ) { B ? e . mouseover ( function ( ) { h > D ? ( B . css ( "left" , 0 ) , B . css ( "right" , "" ) ) : ( B . css ( "left" , "" ) , B . css ( "right" , 0 ) ) ; G . attr ( "src" , f + l + ".gif" ) ; b ( this ) . addClass ( "ke-on" ) } ) : e . mouseover ( function ( ) { b ( this ) . addClass ( "ke-on" ) } ) ; e . mouseout ( function ( ) { b ( this ) . removeClass ( "ke-on" ) } ) ; e . click ( function ( b ) { d . insertHtml ( '<img src="' +
f + l + '.gif" border="0" alt="" />' ) . hideMenu ( ) . focus ( ) ; b . stop ( ) } ) } function m ( d , e ) { var l = document . createElement ( "table" ) ; e . append ( l ) ; B && ( b ( l ) . mouseover ( function ( ) { B . show ( "block" ) } ) , b ( l ) . mouseout ( function ( ) { B . hide ( ) } ) , A . push ( b ( l ) ) ) ; l . className = "ke-table" ; l . cellPadding = 0 ; l . cellSpacing = 0 ; l . border = 0 ; for ( var n = ( d - 1 ) * r + p , o = 0 ; o < s ; o ++ ) for ( var m = l . insertRow ( o ) , j = 0 ; j < v ; j ++ ) { var q = b ( m . insertCell ( j ) ) ; q . addClass ( "ke-cell" ) ; h ( q , j , n ) ; var u = b ( '<span class="ke-img"></span>' ) . css ( "background-position" , "-" + 24 * n + "px 0px" ) . css ( "background-image" ,
"url(" + f + "static.gif)" ) ; q . append ( u ) ; A . push ( q ) ; n ++ } return l } function n ( ) { b . each ( A , function ( ) { this . unbind ( ) } ) } function o ( b , d ) { b . click ( function ( b ) { n ( ) ; C . parentNode . removeChild ( C ) ; u . remove ( ) ; C = m ( d , q ) ; l ( d ) ; e = d ; b . stop ( ) } ) } function l ( d ) { u = b ( '<div class="ke-page"></div>' ) ; q . append ( u ) ; for ( var e = 1 ; e <= z ; e ++ ) { if ( d !== e ) { var f = b ( '<a href="javascript:;">[' + e + "]</a>" ) ; o ( f , e ) ; u . append ( f ) ; A . push ( f ) } else u . append ( b ( "@[" + e + "]" ) ) ; u . append ( b ( "@ " ) ) } } var s = 5 , v = 9 , p = 0 , r = s * v , z = Math . ceil ( 135 / r ) , D = Math . floor ( v / 2 ) , q = b ( '<div class="ke-plugin-emoticons"></div>' ) ,
A = [ ] ; d . createMenu ( { name : "emoticons" , beforeRemove : function ( ) { n ( ) } } ) . div . append ( q ) ; var B , G ; j && ( B = b ( '<div class="ke-preview"></div>' ) . css ( "right" , 0 ) , G = b ( '<img class="ke-preview-img" src="' + f + p + '.gif" />' ) , q . append ( B ) , B . append ( G ) ) ; var C = m ( e , q ) , u ; l ( e ) } ) } ) ;
KindEditor . plugin ( "filemanager" , function ( b ) { function d ( b , d ) { d . is _dir ? b . attr ( "title" , d . filename ) : b . attr ( "title" , d . filename + " (" + Math . ceil ( d . filesize / 1024 ) + "KB, " + d . datetime + ")" ) } var f = this , j = b . undef ( f . fileManagerJson , f . basePath + "php/file_manager_json.php" ) , e = f . pluginsPath + "filemanager/images/" , h = f . lang ( "filemanager." ) ; f . plugin . filemanagerDialog = function ( m ) { function n ( d , e , h ) { d = "path=" + d + "&order=" + e + "&dir=" + z ; A . showLoading ( f . lang ( "ajaxLoading" ) ) ; b . ajax ( b . addParam ( j , d + "&" + ( new Date ) . getTime ( ) ) , function ( b ) { A . hideLoading ( ) ;
h ( b ) } ) } function o ( d , e , f , h ) { var l = b . formatUrl ( e . current _url + f . filename , "absolute" ) , o = encodeURIComponent ( e . current _dir _path + f . filename + "/" ) ; f . is _dir ? d . click ( function ( ) { n ( o , u . val ( ) , h ) } ) : f . is _photo ? d . click ( function ( ) { q . call ( this , l , f . filename ) } ) : d . click ( function ( ) { q . call ( this , l , f . filename ) } ) ; I . push ( d ) } function l ( d , e ) { function f ( ) { C . val ( ) == "VIEW" ? n ( d . current _dir _path , u . val ( ) , v ) : n ( d . current _dir _path , u . val ( ) , s ) } b . each ( I , function ( ) { this . unbind ( ) } ) ; G . unbind ( ) ; C . unbind ( ) ; u . unbind ( ) ; d . current _dir _path && G . click ( function ( ) { n ( d . moveup _dir _path ,
u . val ( ) , e ) } ) ; C . change ( f ) ; u . change ( f ) ; B . html ( "" ) } function s ( d ) { l ( d , s ) ; var f = document . createElement ( "table" ) ; f . className = "ke-table" ; f . cellPadding = 0 ; f . cellSpacing = 0 ; f . border = 0 ; B . append ( f ) ; for ( var n = d . file _list , m = 0 , j = n . length ; m < j ; m ++ ) { var r = n [ m ] , p = b ( f . insertRow ( m ) ) ; p . mouseover ( function ( ) { b ( this ) . addClass ( "ke-on" ) } ) . mouseout ( function ( ) { b ( this ) . removeClass ( "ke-on" ) } ) ; var q = b ( '<img src="' + ( e + ( r . is _dir ? "folder-16.gif" : "file-16.gif" ) ) + '" width="16" height="16" alt="' + r . filename + '" align="absmiddle" />' ) , q =
b ( p [ 0 ] . insertCell ( 0 ) ) . addClass ( "ke-cell ke-name" ) . append ( q ) . append ( document . createTextNode ( " " + r . filename ) ) ; ! r . is _dir || r . has _file ? ( p . css ( "cursor" , "pointer" ) , q . attr ( "title" , r . filename ) , o ( q , d , r , s ) ) : q . attr ( "title" , h . emptyFolder ) ; b ( p [ 0 ] . insertCell ( 1 ) ) . addClass ( "ke-cell ke-size" ) . html ( r . is _dir ? "-" : Math . ceil ( r . filesize / 1024 ) + "KB" ) ; b ( p [ 0 ] . insertCell ( 2 ) ) . addClass ( "ke-cell ke-datetime" ) . html ( r . datetime ) } } function v ( f ) { l ( f , v ) ; for ( var n = f . file _list , m = 0 , s = n . length ; m < s ; m ++ ) { var j = n [ m ] , r = b ( '<div class="ke-inline-block ke-item"></div>' ) ;
B . append ( r ) ; var p = b ( '<div class="ke-inline-block ke-photo"></div>' ) . mouseover ( function ( ) { b ( this ) . addClass ( "ke-on" ) } ) . mouseout ( function ( ) { b ( this ) . removeClass ( "ke-on" ) } ) ; r . append ( p ) ; var q = f . current _url + j . filename , q = b ( '<img src="' + ( j . is _dir ? e + "folder-64.gif" : j . is _photo ? q : e + "file-64.gif" ) + '" width="80" height="80" alt="' + j . filename + '" />' ) ; ! j . is _dir || j . has _file ? ( p . css ( "cursor" , "pointer" ) , d ( p , j ) , o ( p , f , j , v ) ) : p . attr ( "title" , h . emptyFolder ) ; p . append ( q ) ; r . append ( '<div class="ke-name" title="' + j . filename + '">' +
j . filename + "</div>" ) } } var p = b . undef ( m . width , 650 ) , r = b . undef ( m . height , 510 ) , z = b . undef ( m . dirName , "" ) , D = b . undef ( m . viewType , "VIEW" ) . toUpperCase ( ) , q = m . clickFn , m = [ '<div style="padding:10px 20px;"><div class="ke-plugin-filemanager-header"><div class="ke-left">' , '<img class="ke-inline-block" name="moveupImg" src="' + e + 'go-up.gif" width="16" height="16" border="0" alt="" /> ' , '<a class="ke-inline-block" name="moveupLink" href="javascript:;">' + h . moveup + "</a>" , '</div><div class="ke-right">' , h . viewType + ' <select class="ke-inline-block" name="viewType">' ,
'<option value="VIEW">' + h . viewImage + "</option>" , '<option value="LIST">' + h . listImage + "</option>" , "</select> " , h . orderType + ' <select class="ke-inline-block" name="orderType">' , '<option value="NAME">' + h . fileName + "</option>" , '<option value="SIZE">' + h . fileSize + "</option>" , '<option value="TYPE">' + h . fileType + "</option>" , '</select></div><div class="ke-clearfix"></div></div><div class="ke-plugin-filemanager-body"></div></div>' ] . join ( "" ) , A = f . createDialog ( { name : "filemanager" , width : p , height : r , title : f . lang ( "filemanager" ) ,
body : m } ) , p = A . div , B = b ( ".ke-plugin-filemanager-body" , p ) ; b ( '[name="moveupImg"]' , p ) ; var G = b ( '[name="moveupLink"]' , p ) ; b ( '[name="viewServer"]' , p ) ; var C = b ( '[name="viewType"]' , p ) , u = b ( '[name="orderType"]' , p ) , I = [ ] ; C . val ( D ) ; n ( "" , u . val ( ) , D == "VIEW" ? v : s ) ; return A } } ) ;
KindEditor . plugin ( "flash" , function ( b ) { var d = this , f = d . lang ( "flash." ) , j = b . undef ( d . allowFlashUpload , ! 0 ) , e = b . undef ( d . allowFileManager , ! 1 ) , h = b . undef ( d . formatUploadUrl , ! 0 ) , m = b . undef ( d . extraFileUploadParams , { } ) , n = b . undef ( d . filePostName , "imgFile" ) , o = b . undef ( d . uploadJson , d . basePath + "php/upload_json.php" ) ; d . plugin . flash = { edit : function ( ) { var l = [ '<div style="padding:20px;"><div class="ke-dialog-row">' , '<label for="keUrl" style="width:60px;">' + f . url + "</label>" , '<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:160px;" /> ' ,
'<input type="button" class="ke-upload-button" value="' + f . upload + '" /> ' , '<span class="ke-button-common ke-button-outer">' , '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + f . viewServer + '" />' , '</span></div><div class="ke-dialog-row">' , '<label for="keWidth" style="width:60px;">' + f . width + "</label>" , '<input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="550" maxlength="4" /> </div><div class="ke-dialog-row">' , '<label for="keHeight" style="width:60px;">' +
f . height + "</label>" , '<input type="text" id="keHeight" class="ke-input-text ke-input-number" name="height" value="400" maxlength="4" /> </div></div>' ] . join ( "" ) , s = d . createDialog ( { name : "flash" , width : 450 , title : d . lang ( "flash" ) , body : l , yesBtn : { name : d . lang ( "yes" ) , click : function ( ) { var e = b . trim ( p . val ( ) ) , f = r . val ( ) , h = z . val ( ) ; e == "http://" || b . invalidUrl ( e ) ? ( alert ( d . lang ( "invalidUrl" ) ) , p [ 0 ] . focus ( ) ) : /^\d*$/ . test ( f ) ? /^\d*$/ . test ( h ) ? ( e = b . mediaImg ( d . themesPath + "common/blank.gif" , { src : e , type : b . mediaType ( ".swf" ) , width : f ,
height : h , quality : "high" } ) , d . insertHtml ( e ) . hideDialog ( ) . focus ( ) ) : ( alert ( d . lang ( "invalidHeight" ) ) , z [ 0 ] . focus ( ) ) : ( alert ( d . lang ( "invalidWidth" ) ) , r [ 0 ] . focus ( ) ) } } } ) , v = s . div , p = b ( '[name="url"]' , v ) , l = b ( '[name="viewServer"]' , v ) , r = b ( '[name="width"]' , v ) , z = b ( '[name="height"]' , v ) ; p . val ( "http://" ) ; if ( j ) { var D = b . uploadbutton ( { button : b ( ".ke-upload-button" , v ) [ 0 ] , fieldName : n , extraParams : m , url : b . addParam ( o , "dir=flash" ) , afterUpload : function ( e ) { s . hideLoading ( ) ; if ( e . error === 0 ) { var f = e . url ; h && ( f = b . formatUrl ( f , "absolute" ) ) ;
p . val ( f ) ; d . afterUpload && d . afterUpload . call ( d , f , e , "flash" ) ; alert ( d . lang ( "uploadSuccess" ) ) } else alert ( e . message ) } , afterError : function ( b ) { s . hideLoading ( ) ; d . errorDialog ( b ) } } ) ; D . fileBox . change ( function ( ) { s . showLoading ( d . lang ( "uploadLoading" ) ) ; D . submit ( ) } ) } else b ( ".ke-upload-button" , v ) . hide ( ) ; e ? l . click ( function ( ) { d . loadPlugin ( "filemanager" , function ( ) { d . plugin . filemanagerDialog ( { viewType : "LIST" , dirName : "flash" , clickFn : function ( e ) { d . dialogs . length > 1 && ( b ( '[name="url"]' , v ) . val ( e ) , d . afterSelectFile && d . afterSelectFile . call ( d ,
e ) , d . hideDialog ( ) ) } } ) } ) } ) : l . hide ( ) ; if ( l = d . plugin . getSelectedFlash ( ) ) { var q = b . mediaAttrs ( l . attr ( "data-ke-tag" ) ) ; p . val ( q . src ) ; r . val ( b . removeUnit ( l . css ( "width" ) ) || q . width || 0 ) ; z . val ( b . removeUnit ( l . css ( "height" ) ) || q . height || 0 ) } p [ 0 ] . focus ( ) ; p [ 0 ] . select ( ) } , "delete" : function ( ) { d . plugin . getSelectedFlash ( ) . remove ( ) ; d . addBookmark ( ) } } ; d . clickToolbar ( "flash" , d . plugin . flash . edit ) } ) ;
KindEditor . plugin ( "image" , function ( b ) { var d = this , f = b . undef ( d . allowImageUpload , ! 0 ) , j = b . undef ( d . allowImageRemote , ! 0 ) , e = b . undef ( d . formatUploadUrl , ! 0 ) , h = b . undef ( d . allowFileManager , ! 1 ) , m = b . undef ( d . uploadJson , d . basePath + "php/upload_json.php" ) , n = b . undef ( d . imageTabIndex , 0 ) , o = d . pluginsPath + "image/images/" , l = b . undef ( d . extraFileUploadParams , { } ) , s = b . undef ( d . filePostName , "imgFile" ) , v = b . undef ( d . fillDescAfterUploadImage , ! 1 ) , p = d . lang ( "image." ) ; d . plugin . imageDialog = function ( f ) { function n ( b , d ) { M . val ( b ) ; K . val ( d ) ; W =
b ; S = d } b . undef ( f . imageWidth , "" ) ; b . undef ( f . imageHeight , "" ) ; b . undef ( f . imageTitle , "" ) ; b . undef ( f . imageAlign , "" ) ; var j = b . undef ( f . showRemote , ! 0 ) , q = b . undef ( f . showLocal , ! 0 ) , A = b . undef ( f . tabIndex , 0 ) , B = f . clickFn , G = "kindeditor_upload_iframe_" + ( new Date ) . getTime ( ) , C = [ ] , u ; for ( u in l ) C . push ( '<input type="hidden" name="' + u + '" value="' + l [ u ] + '" />' ) ; var C = [ '<div style="padding:20px;"><div class="tabs"></div><div class="tab1" style="display:none;"><div class="ke-dialog-row">' , '<label for="remoteUrl" style="width:60px;">' +
p . remoteUrl + "</label>" , '<input type="text" id="remoteUrl" class="ke-input-text" name="url" value="" style="width:200px;" /> <span class="ke-button-common ke-button-outer">' , '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + p . viewServer + '" />' , '</span></div><div class="ke-dialog-row">' , '<label for="remoteWidth" style="width:60px;">' + p . size + "</label>" , p . width + ' <input type="text" id="remoteWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ' ,
p . height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ' , '<img class="ke-refresh-btn" src="' + o + 'refresh.png" width="16" height="16" alt="" style="cursor:pointer;" title="' + p . resetSize + '" />' , '</div><div class="ke-dialog-row">' , '<label style="width:60px;">' + p . align + "</label>" , '<input type="radio" name="align" class="ke-inline-block" value="" checked="checked" /> <img name="defaultImg" src="' + o + 'align_top.gif" width="23" height="25" alt="" />' , ' <input type="radio" name="align" class="ke-inline-block" value="left" /> <img name="leftImg" src="' +
o + 'align_left.gif" width="23" height="25" alt="" />' , ' <input type="radio" name="align" class="ke-inline-block" value="right" /> <img name="rightImg" src="' + o + 'align_right.gif" width="23" height="25" alt="" />' , '</div><div class="ke-dialog-row">' , '<label for="remoteTitle" style="width:60px;">' + p . imgTitle + "</label>" , '<input type="text" id="remoteTitle" class="ke-input-text" name="title" value="" style="width:200px;" /></div></div><div class="tab2" style="display:none;">' , '<iframe name="' + G + '" style="display:none;"></iframe>' ,
'<form class="ke-upload-area ke-form" method="post" enctype="multipart/form-data" target="' + G + '" action="' + b . addParam ( m , "dir=image" ) + '">' , '<div class="ke-dialog-row">' , C . join ( "" ) , '<label style="width:60px;">' + p . localUrl + "</label>" , '<input type="text" name="localUrl" class="ke-input-text" tabindex="-1" style="width:200px;" readonly="true" /> ' , '<input type="button" class="ke-upload-button" value="' + p . upload + '" />' , "</div></form></div></div>" ] . join ( "" ) , I = d . createDialog ( { name : "image" , width : q ||
h ? 450 : 400 , height : q && j ? 300 : 250 , title : d . lang ( "image" ) , body : C , yesBtn : { name : d . lang ( "yes" ) , click : function ( ) { if ( ! I . isLoading ) if ( q && j && H && H . selectedIndex === 1 || ! j ) U . fileBox . val ( ) == "" ? alert ( d . lang ( "pleaseSelectFile" ) ) : ( I . showLoading ( d . lang ( "uploadLoading" ) ) , U . submit ( ) , qa . val ( "" ) ) ; else { var e = b . trim ( T . val ( ) ) , f = M . val ( ) , h = K . val ( ) , l = Q . val ( ) , n = "" ; R . each ( function ( ) { if ( this . checked ) return n = this . value , ! 1 } ) ; e == "http://" || b . invalidUrl ( e ) ? ( alert ( d . lang ( "invalidUrl" ) ) , T [ 0 ] . focus ( ) ) : /^\d*$/ . test ( f ) ? /^\d*$/ . test ( h ) ? B . call ( d ,
e , l , f , h , 0 , n ) : ( alert ( d . lang ( "invalidHeight" ) ) , K [ 0 ] . focus ( ) ) : ( alert ( d . lang ( "invalidWidth" ) ) , M [ 0 ] . focus ( ) ) } } } , beforeRemove : function ( ) { $ . unbind ( ) ; M . unbind ( ) ; K . unbind ( ) ; O . unbind ( ) } } ) , E = I . div , T = b ( '[name="url"]' , E ) , qa = b ( '[name="localUrl"]' , E ) , $ = b ( '[name="viewServer"]' , E ) , M = b ( '.tab1 [name="width"]' , E ) , K = b ( '.tab1 [name="height"]' , E ) , O = b ( ".ke-refresh-btn" , E ) , Q = b ( '.tab1 [name="title"]' , E ) , R = b ( '.tab1 [name="align"]' , E ) , H ; j && q ? ( H = b . tabs ( { src : b ( ".tabs" , E ) , afterSelect : function ( ) { } } ) , H . add ( { title : p . remoteImage , panel : b ( ".tab1" ,
E ) } ) , H . add ( { title : p . localImage , panel : b ( ".tab2" , E ) } ) , H . select ( A ) ) : j ? b ( ".tab1" , E ) . show ( ) : q && b ( ".tab2" , E ) . show ( ) ; var U = b . uploadbutton ( { button : b ( ".ke-upload-button" , E ) [ 0 ] , fieldName : s , form : b ( ".ke-form" , E ) , target : G , width : 60 , afterUpload : function ( f ) { I . hideLoading ( ) ; if ( f . error === 0 ) { var h = f . url ; e && ( h = b . formatUrl ( h , "absolute" ) ) ; d . afterUpload && d . afterUpload . call ( d , h , f , "image" ) ; v ? ( b ( ".ke-dialog-row #remoteUrl" , E ) . val ( h ) , b ( ".ke-tabs-li" , E ) [ 0 ] . click ( ) , b ( ".ke-refresh-btn" , E ) . click ( ) ) : B . call ( d , h , f . title , f . width , f . height ,
f . border , f . align ) } else alert ( f . message ) } , afterError : function ( b ) { I . hideLoading ( ) ; d . errorDialog ( b ) } } ) ; U . fileBox . change ( function ( ) { qa . val ( U . fileBox . val ( ) ) } ) ; h ? $ . click ( function ( ) { d . loadPlugin ( "filemanager" , function ( ) { d . plugin . filemanagerDialog ( { viewType : "VIEW" , dirName : "image" , clickFn : function ( e ) { d . dialogs . length > 1 && ( b ( '[name="url"]' , E ) . val ( e ) , d . afterSelectFile && d . afterSelectFile . call ( d , e ) , d . hideDialog ( ) ) } } ) } ) } ) : $ . hide ( ) ; var W = 0 , S = 0 ; O . click ( function ( ) { var d = b ( '<img src="' + T . val ( ) + '" />' , document ) . css ( { position : "absolute" ,
visibility : "hidden" , top : 0 , left : "-1000px" } ) ; d . bind ( "load" , function ( ) { n ( d . width ( ) , d . height ( ) ) ; d . remove ( ) } ) ; b ( document . body ) . append ( d ) } ) ; M . change ( function ( ) { W > 0 && K . val ( Math . round ( S / W * parseInt ( this . value , 10 ) ) ) } ) ; K . change ( function ( ) { S > 0 && M . val ( Math . round ( W / S * parseInt ( this . value , 10 ) ) ) } ) ; T . val ( f . imageUrl ) ; n ( f . imageWidth , f . imageHeight ) ; Q . val ( f . imageTitle ) ; R . each ( function ( ) { if ( this . value === f . imageAlign ) return this . checked = ! 0 , ! 1 } ) ; j && A === 0 && ( T [ 0 ] . focus ( ) , T [ 0 ] . select ( ) ) ; return I } ; d . plugin . image = { edit : function ( ) { var b =
d . plugin . getSelectedImage ( ) ; d . plugin . imageDialog ( { imageUrl : b ? b . attr ( "data-ke-src" ) : "http://" , imageWidth : b ? b . width ( ) : "" , imageHeight : b ? b . height ( ) : "" , imageTitle : b ? b . attr ( "title" ) : "" , imageAlign : b ? b . attr ( "align" ) : "" , showRemote : j , showLocal : f , tabIndex : b ? 0 : n , clickFn : function ( e , f , h , l , n , o ) { b ? ( b . attr ( "src" , e ) , b . attr ( "data-ke-src" , e ) , b . attr ( "width" , h ) , b . attr ( "height" , l ) , b . attr ( "title" , f ) , b . attr ( "align" , o ) , b . attr ( "alt" , f ) ) : d . exec ( "insertimage" , e , f , h , l , n , o ) ; setTimeout ( function ( ) { d . hideDialog ( ) . focus ( ) } , 0 ) } } ) } ,
"delete" : function ( ) { var b = d . plugin . getSelectedImage ( ) ; b . parent ( ) . name == "a" && ( b = b . parent ( ) ) ; b . remove ( ) ; d . addBookmark ( ) } } ; d . clickToolbar ( "image" , d . plugin . image . edit ) } ) ;
KindEditor . plugin ( "insertfile" , function ( b ) { var d = this , f = b . undef ( d . allowFileUpload , ! 0 ) , j = b . undef ( d . allowFileManager , ! 1 ) , e = b . undef ( d . formatUploadUrl , ! 0 ) , h = b . undef ( d . uploadJson , d . basePath + "php/upload_json.php" ) , m = b . undef ( d . extraFileUploadParams , { } ) , n = b . undef ( d . filePostName , "imgFile" ) , o = d . lang ( "insertfile." ) ; d . plugin . fileDialog = function ( l ) { var s = b . undef ( l . fileUrl , "http://" ) , v = b . undef ( l . fileTitle , "" ) , p = l . clickFn , l = [ '<div style="padding:20px;"><div class="ke-dialog-row">' , '<label for="keUrl" style="width:60px;">' +
o . url + "</label>" , '<input type="text" id="keUrl" name="url" class="ke-input-text" style="width:160px;" /> ' , '<input type="button" class="ke-upload-button" value="' + o . upload + '" /> ' , '<span class="ke-button-common ke-button-outer">' , '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + o . viewServer + '" />' , '</span></div><div class="ke-dialog-row">' , '<label for="keTitle" style="width:60px;">' + o . title + "</label>" , '<input type="text" id="keTitle" class="ke-input-text" name="title" value="" style="width:160px;" /></div></div></form></div>' ] . join ( "" ) ,
r = d . createDialog ( { name : "insertfile" , width : 450 , title : d . lang ( "insertfile" ) , body : l , yesBtn : { name : d . lang ( "yes" ) , click : function ( ) { var e = b . trim ( D . val ( ) ) , f = q . val ( ) ; e == "http://" || b . invalidUrl ( e ) ? ( alert ( d . lang ( "invalidUrl" ) ) , D [ 0 ] . focus ( ) ) : ( b . trim ( f ) === "" && ( f = e ) , p . call ( d , e , f ) ) } } } ) , z = r . div , D = b ( '[name="url"]' , z ) , l = b ( '[name="viewServer"]' , z ) , q = b ( '[name="title"]' , z ) ; if ( f ) { var A = b . uploadbutton ( { button : b ( ".ke-upload-button" , z ) [ 0 ] , fieldName : n , url : b . addParam ( h , "dir=file" ) , extraParams : m , afterUpload : function ( f ) { r . hideLoading ( ) ;
if ( f . error === 0 ) { var h = f . url ; e && ( h = b . formatUrl ( h , "absolute" ) ) ; D . val ( h ) ; d . afterUpload && d . afterUpload . call ( d , h , f , "insertfile" ) ; alert ( d . lang ( "uploadSuccess" ) ) } else alert ( f . message ) } , afterError : function ( b ) { r . hideLoading ( ) ; d . errorDialog ( b ) } } ) ; A . fileBox . change ( function ( ) { r . showLoading ( d . lang ( "uploadLoading" ) ) ; A . submit ( ) } ) } else b ( ".ke-upload-button" , z ) . hide ( ) ; j ? l . click ( function ( ) { d . loadPlugin ( "filemanager" , function ( ) { d . plugin . filemanagerDialog ( { viewType : "LIST" , dirName : "file" , clickFn : function ( e ) { d . dialogs . length >
1 && ( b ( '[name="url"]' , z ) . val ( e ) , d . afterSelectFile && d . afterSelectFile . call ( d , e ) , d . hideDialog ( ) ) } } ) } ) } ) : l . hide ( ) ; D . val ( s ) ; q . val ( v ) ; D [ 0 ] . focus ( ) ; D [ 0 ] . select ( ) } ; d . clickToolbar ( "insertfile" , function ( ) { d . plugin . fileDialog ( { clickFn : function ( b , e ) { d . insertHtml ( '<a class="ke-insertfile" href="' + b + '" data-ke-src="' + b + '" target="_blank">' + e + "</a>" ) . hideDialog ( ) . focus ( ) } } ) } ) } ) ;
KindEditor . plugin ( "lineheight" , function ( b ) { var d = this , f = d . lang ( "lineheight." ) ; d . clickToolbar ( "lineheight" , function ( ) { var j = "" , e = d . cmd . commonNode ( { "*" : ".line-height" } ) ; e && ( j = e . css ( "line-height" ) ) ; var h = d . createMenu ( { name : "lineheight" , width : 150 } ) ; b . each ( f . lineHeight , function ( e , f ) { b . each ( f , function ( b , e ) { h . addItem ( { title : e , checked : j === b , click : function ( ) { d . cmd . toggle ( '<span style="line-height:' + b + ';"></span>' , { span : ".line-height=" + b } ) ; d . updateState ( ) ; d . addBookmark ( ) ; d . hideMenu ( ) } } ) } ) } ) } ) } ) ;
KindEditor . plugin ( "link" , function ( b ) { var d = this ; d . plugin . link = { edit : function ( ) { var f = d . lang ( "link." ) , j = '<div style="padding:20px;"><div class="ke-dialog-row"><label for="keUrl" style="width:60px;">' + f . url + '</label><input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:260px;" /></div><div class="ke-dialog-row""><label for="keType" style="width:60px;">' + f . linkType + '</label><select id="keType" name="type"></select></div></div>' , j = d . createDialog ( { name : "link" , width : 450 , title : d . lang ( "link" ) ,
body : j , yesBtn : { name : d . lang ( "yes" ) , click : function ( ) { var f = b . trim ( e . val ( ) ) ; f == "http://" || b . invalidUrl ( f ) ? ( alert ( d . lang ( "invalidUrl" ) ) , e [ 0 ] . focus ( ) ) : d . exec ( "createlink" , f , h . val ( ) ) . hideDialog ( ) . focus ( ) } } } ) . div , e = b ( 'input[name="url"]' , j ) , h = b ( 'select[name="type"]' , j ) ; e . val ( "http://" ) ; h [ 0 ] . options [ 0 ] = new Option ( f . newWindow , "_blank" ) ; h [ 0 ] . options [ 1 ] = new Option ( f . selfWindow , "" ) ; d . cmd . selection ( ) ; if ( f = d . plugin . getSelectedLink ( ) ) d . cmd . range . selectNode ( f [ 0 ] ) , d . cmd . select ( ) , e . val ( f . attr ( "data-ke-src" ) ) , h . val ( f . attr ( "target" ) ) ;
e [ 0 ] . focus ( ) ; e [ 0 ] . select ( ) } , "delete" : function ( ) { d . exec ( "unlink" , null ) } } ; d . clickToolbar ( "link" , d . plugin . link . edit ) } ) ;
KindEditor . plugin ( "map" , function ( b ) { var d = this , f = d . lang ( "map." ) ; d . clickToolbar ( "map" , function ( ) { function j ( ) { n = l [ 0 ] . contentWindow ; o = b . iframeDoc ( l ) } var e = [ '<div style="padding:10px 20px;"><div class="ke-dialog-row">' , f . address + ' <input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ' , '<span class="ke-button-common ke-button-outer">' , '<input type="button" name="searchBtn" class="ke-button-common ke-button" value="' + f . search + '" />' , '</span></div><div class="ke-map" style="width:558px;height:360px;"></div></div>' ] . join ( "" ) ,
e = d . createDialog ( { name : "map" , width : 600 , title : d . lang ( "map" ) , body : e , yesBtn : { name : d . lang ( "yes" ) , click : function ( ) { var b = n . map , e = b . getCenter ( ) . lat ( ) + "," + b . getCenter ( ) . lng ( ) , f = b . getZoom ( ) , b = b . getMapTypeId ( ) , h = "http://maps.googleapis.com/maps/api/staticmap" ; h += "?center=" + encodeURIComponent ( e ) ; h += "&zoom=" + encodeURIComponent ( f ) ; h += "&size=558x360" ; h += "&maptype=" + encodeURIComponent ( b ) ; h += "&markers=" + encodeURIComponent ( e ) ; h += "&language=" + d . langType ; h += "&sensor=false" ; d . exec ( "insertimage" , h ) . hideDialog ( ) . focus ( ) } } ,
beforeRemove : function ( ) { m . remove ( ) ; o && o . write ( "" ) ; l . remove ( ) } } ) . div , h = b ( '[name="address"]' , e ) , m = b ( '[name="searchBtn"]' , e ) , n , o ; [ '<!doctype html><html><head>\n<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />\n<style>\n\thtml { height: 100% }\n\tbody { height: 100%; margin: 0; padding: 0; background-color: #FFF }\n\t#map_canvas { height: 100% }\n</style>' , '<script src="http://maps.googleapis.com/maps/api/js?sensor=false&language=' + d . langType + '"><\/script>' , '<script>\nvar map, geocoder;\nfunction initialize() {\n\tvar latlng = new google.maps.LatLng(31.230393, 121.473704);\n\tvar options = {\n\t\tzoom: 11,\n\t\tcenter: latlng,\n\t\tdisableDefaultUI: true,\n\t\tpanControl: true,\n\t\tzoomControl: true,\n\t\tmapTypeControl: true,\n\t\tscaleControl: true,\n\t\tstreetViewControl: false,\n\t\toverviewMapControl: true,\n\t\tmapTypeId: google.maps.MapTypeId.ROADMAP\n\t};\n\tmap = new google.maps.Map(document.getElementById("map_canvas"), options);\n\tgeocoder = new google.maps.Geocoder();\n\tgeocoder.geocode({latLng: latlng}, function(results, status) {\n\t\tif (status == google.maps.GeocoderStatus.OK) {\n\t\t\tif (results[3]) {\n\t\t\t\tparent.document.getElementById("kindeditor_plugin_map_address").value = results[3].formatted_address;\n\t\t\t}\n\t\t}\n\t});\n}\nfunction search(address) {\n\tif (!map) return;\n\tgeocoder.geocode({address : address}, function(results, status) {\n\t\tif (status == google.maps.GeocoderStatus.OK) {\n\t\t\tmap.setZoom(11);\n\t\t\tmap.setCenter(results[0].geometry.location);\n\t\t\tvar marker = new google.maps.Marker({\n\t\t\t\tmap: map,\n\t\t\t\tposition: results[0].geometry.location\n\t\t\t});\n\t\t} else {\n\t\t\talert("Invalid address: " + address);\n\t\t}\n\t});\n}\n<\/script>\n</head>\n<body onload="initialize();">\n<div id="map_canvas" style="width:100%; height:100%"></div>\n</body></html>' ] . join ( "\n" ) ;
var l = b ( '<iframe class="ke-textarea" frameborder="0" src="' + d . pluginsPath + 'map/map.html" style="width:558px;height:360px;"></iframe>' ) ; l . bind ( "load" , function ( ) { l . unbind ( "load" ) ; b . IE ? j ( ) : setTimeout ( j , 0 ) } ) ; b ( ".ke-map" , e ) . replaceWith ( l ) ; m . click ( function ( ) { n . search ( h . val ( ) ) } ) } ) } ) ;
KindEditor . plugin ( "media" , function ( b ) { var d = this , f = d . lang ( "media." ) , j = b . undef ( d . allowMediaUpload , ! 0 ) , e = b . undef ( d . allowFileManager , ! 1 ) , h = b . undef ( d . formatUploadUrl , ! 0 ) , m = b . undef ( d . extraFileUploadParams , { } ) , n = b . undef ( d . filePostName , "imgFile" ) , o = b . undef ( d . uploadJson , d . basePath + "php/upload_json.php" ) ; d . plugin . media = { edit : function ( ) { var l = [ '<div style="padding:20px;"><div class="ke-dialog-row">' , '<label for="keUrl" style="width:60px;">' + f . url + "</label>" , '<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:160px;" /> ' ,
'<input type="button" class="ke-upload-button" value="' + f . upload + '" /> ' , '<span class="ke-button-common ke-button-outer">' , '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + f . viewServer + '" />' , '</span></div><div class="ke-dialog-row">' , '<label for="keWidth" style="width:60px;">' + f . width + "</label>" , '<input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="550" maxlength="4" /></div><div class="ke-dialog-row">' , '<label for="keHeight" style="width:60px;">' +
f . height + "</label>" , '<input type="text" id="keHeight" class="ke-input-text ke-input-number" name="height" value="400" maxlength="4" /></div><div class="ke-dialog-row">' , '<label for="keAutostart">' + f . autostart + "</label>" , '<input type="checkbox" id="keAutostart" name="autostart" value="" /> </div></div>' ] . join ( "" ) , s = d . createDialog ( { name : "media" , width : 450 , height : 230 , title : d . lang ( "media" ) , body : l , yesBtn : { name : d . lang ( "yes" ) , click : function ( ) { var e = b . trim ( p . val ( ) ) , f = r . val ( ) , h = z . val ( ) ; e == "http://" || b . invalidUrl ( e ) ?
( alert ( d . lang ( "invalidUrl" ) ) , p [ 0 ] . focus ( ) ) : /^\d*$/ . test ( f ) ? /^\d*$/ . test ( h ) ? ( e = b . mediaImg ( d . themesPath + "common/blank.gif" , { src : e , type : b . mediaType ( e ) , width : f , height : h , autostart : D [ 0 ] . checked ? "true" : "false" , loop : "true" } ) , d . insertHtml ( e ) . hideDialog ( ) . focus ( ) ) : ( alert ( d . lang ( "invalidHeight" ) ) , z [ 0 ] . focus ( ) ) : ( alert ( d . lang ( "invalidWidth" ) ) , r [ 0 ] . focus ( ) ) } } } ) , v = s . div , p = b ( '[name="url"]' , v ) , l = b ( '[name="viewServer"]' , v ) , r = b ( '[name="width"]' , v ) , z = b ( '[name="height"]' , v ) , D = b ( '[name="autostart"]' , v ) ; p . val ( "http://" ) ;
if ( j ) { var q = b . uploadbutton ( { button : b ( ".ke-upload-button" , v ) [ 0 ] , fieldName : n , extraParams : m , url : b . addParam ( o , "dir=media" ) , afterUpload : function ( e ) { s . hideLoading ( ) ; if ( e . error === 0 ) { var f = e . url ; h && ( f = b . formatUrl ( f , "absolute" ) ) ; p . val ( f ) ; d . afterUpload && d . afterUpload . call ( d , f , e , "media" ) ; alert ( d . lang ( "uploadSuccess" ) ) } else alert ( e . message ) } , afterError : function ( b ) { s . hideLoading ( ) ; d . errorDialog ( b ) } } ) ; q . fileBox . change ( function ( ) { s . showLoading ( d . lang ( "uploadLoading" ) ) ; q . submit ( ) } ) } else b ( ".ke-upload-button" , v ) . hide ( ) ;
e ? l . click ( function ( ) { d . loadPlugin ( "filemanager" , function ( ) { d . plugin . filemanagerDialog ( { viewType : "LIST" , dirName : "media" , clickFn : function ( e ) { d . dialogs . length > 1 && ( b ( '[name="url"]' , v ) . val ( e ) , d . afterSelectFile && d . afterSelectFile . call ( d , e ) , d . hideDialog ( ) ) } } ) } ) } ) : l . hide ( ) ; if ( l = d . plugin . getSelectedMedia ( ) ) { var A = b . mediaAttrs ( l . attr ( "data-ke-tag" ) ) ; p . val ( A . src ) ; r . val ( b . removeUnit ( l . css ( "width" ) ) || A . width || 0 ) ; z . val ( b . removeUnit ( l . css ( "height" ) ) || A . height || 0 ) ; D [ 0 ] . checked = A . autostart === "true" } p [ 0 ] . focus ( ) ; p [ 0 ] . select ( ) } ,
"delete" : function ( ) { d . plugin . getSelectedMedia ( ) . remove ( ) ; d . addBookmark ( ) } } ; d . clickToolbar ( "media" , d . plugin . media . edit ) } ) ;
( function ( b ) { function d ( b ) { this . init ( b ) } b . extend ( d , { init : function ( d ) { function j ( d , e ) { b ( ".ke-status > div" , d ) . hide ( ) ; b ( ".ke-message" , d ) . addClass ( "ke-error" ) . show ( ) . html ( b . escape ( e ) ) } var e = this ; d . afterError = d . afterError || function ( b ) { alert ( b ) } ; e . options = d ; e . progressbars = { } ; e . div = b ( d . container ) . html ( [ '<div class="ke-swfupload"><div class="ke-swfupload-top"><div class="ke-inline-block ke-swfupload-button"><input type="button" value="Browse" /></div>' , '<div class="ke-inline-block ke-swfupload-desc">' + d . uploadDesc +
"</div>" , '<span class="ke-button-common ke-button-outer ke-swfupload-startupload">' , '<input type="button" class="ke-button-common ke-button" value="' + d . startButtonValue + '" />' , '</span></div><div class="ke-swfupload-body"></div></div>' ] . join ( "" ) ) ; e . bodyDiv = b ( ".ke-swfupload-body" , e . div ) ; var h = { debug : ! 1 , upload _url : d . uploadUrl , flash _url : d . flashUrl , file _post _name : d . filePostName , button _placeholder : b ( ".ke-swfupload-button > input" , e . div ) [ 0 ] , button _image _url : d . buttonImageUrl , button _width : d . buttonWidth , button _height : d . buttonHeight ,
button _cursor : SWFUpload . CURSOR . HAND , file _types : d . fileTypes , file _types _description : d . fileTypesDesc , file _upload _limit : d . fileUploadLimit , file _size _limit : d . fileSizeLimit , post _params : d . postParams , file _queued _handler : function ( b ) { b . url = e . options . fileIconUrl ; e . appendFile ( b ) } , file _queue _error _handler : function ( e , h ) { var o = "" ; switch ( h ) { case SWFUpload . QUEUE _ERROR . QUEUE _LIMIT _EXCEEDED : o = d . queueLimitExceeded ; break ; case SWFUpload . QUEUE _ERROR . FILE _EXCEEDS _SIZE _LIMIT : o = d . fileExceedsSizeLimit ; break ; case SWFUpload . QUEUE _ERROR . ZERO _BYTE _FILE : o =
d . zeroByteFile ; break ; case SWFUpload . QUEUE _ERROR . INVALID _FILETYPE : o = d . invalidFiletype ; break ; default : o = d . unknownError } b . DEBUG && alert ( o ) } , upload _start _handler : function ( d ) { d = b ( 'div[data-id="' + d . id + '"]' , this . bodyDiv ) ; b ( ".ke-status > div" , d ) . hide ( ) ; b ( ".ke-progressbar" , d ) . show ( ) } , upload _progress _handler : function ( b , d , f ) { d = Math . round ( d * 100 / f ) ; b = e . progressbars [ b . id ] ; b . bar . css ( "width" , Math . round ( d * 80 / 100 ) + "px" ) ; b . percent . html ( d + "%" ) } , upload _error _handler : function ( d ) { d && d . filestatus == SWFUpload . FILE _STATUS . ERROR &&
( d = b ( 'div[data-id="' + d . id + '"]' , e . bodyDiv ) . eq ( 0 ) , j ( d , e . options . errorMessage ) ) } , upload _success _handler : function ( d , f ) { var h = b ( 'div[data-id="' + d . id + '"]' , e . bodyDiv ) . eq ( 0 ) , l = { } ; try { l = b . json ( f ) } catch ( s ) { e . options . afterError . call ( this , "<!doctype html><html>" + f + "</html>" ) } l . error !== 0 ? j ( h , b . DEBUG ? l . message : e . options . errorMessage ) : ( d . url = l . url , b ( ".ke-img" , h ) . attr ( "src" , d . url ) . attr ( "data-status" , d . filestatus ) . data ( "data" , l ) , b ( ".ke-status > div" , h ) . hide ( ) ) } } ; e . swfu = new SWFUpload ( h ) ; b ( ".ke-swfupload-startupload input" ,
e . div ) . click ( function ( ) { e . swfu . startUpload ( ) } ) } , getUrlList : function ( ) { var d = [ ] ; b ( ".ke-img" , self . bodyDiv ) . each ( function ( ) { var j = b ( this ) ; j . attr ( "data-status" ) == SWFUpload . FILE _STATUS . COMPLETE && d . push ( j . data ( "data" ) ) } ) ; return d } , removeFile : function ( d ) { this . swfu . cancelUpload ( d ) ; d = b ( 'div[data-id="' + d + '"]' , this . bodyDiv ) ; b ( ".ke-photo" , d ) . unbind ( ) ; b ( ".ke-delete" , d ) . unbind ( ) ; d . remove ( ) } , removeFiles : function ( ) { var d = this ; b ( ".ke-item" , d . bodyDiv ) . each ( function ( ) { d . removeFile ( b ( this ) . attr ( "data-id" ) ) } ) } , appendFile : function ( d ) { var j =
this , e = b ( '<div class="ke-inline-block ke-item" data-id="' + d . id + '"></div>' ) ; j . bodyDiv . append ( e ) ; var h = b ( '<div class="ke-inline-block ke-photo"></div>' ) . mouseover ( function ( ) { b ( this ) . addClass ( "ke-on" ) } ) . mouseout ( function ( ) { b ( this ) . removeClass ( "ke-on" ) } ) ; e . append ( h ) ; var m = b ( '<img src="' + d . url + '" class="ke-img" data-status="' + d . filestatus + '" width="80" height="80" alt="' + d . name + '" />' ) ; h . append ( m ) ; b ( '<span class="ke-delete"></span>' ) . appendTo ( h ) . click ( function ( ) { j . removeFile ( d . id ) } ) ; m = b ( '<div class="ke-status"></div>' ) . appendTo ( h ) ;
b ( '<div class="ke-progressbar"><div class="ke-progressbar-bar"><div class="ke-progressbar-bar-inner"></div></div><div class="ke-progressbar-percent">0%</div></div>' ) . hide ( ) . appendTo ( m ) ; b ( '<div class="ke-message">' + j . options . pendingMessage + "</div>" ) . appendTo ( m ) ; e . append ( '<div class="ke-name">' + d . name + "</div>" ) ; j . progressbars [ d . id ] = { bar : b ( ".ke-progressbar-bar-inner" , h ) , percent : b ( ".ke-progressbar-percent" , h ) } } , remove : function ( ) { this . removeFiles ( ) ; this . swfu . destroy ( ) ; this . div . html ( "" ) } } ) ; b . swfupload =
function ( b , j ) { return new d ( b , j ) } } ) ( KindEditor ) ;
KindEditor . plugin ( "multiimage" , function ( b ) { var d = this ; b . undef ( d . formatUploadUrl , ! 0 ) ; var f = b . undef ( d . uploadJson , d . basePath + "php/upload_json.php" ) , j = d . pluginsPath + "multiimage/images/" , e = b . undef ( d . imageSizeLimit , "1MB" ) ; b . undef ( d . imageFileTypes , "*.jpg;*.gif;*.png" ) ; var h = b . undef ( d . imageUploadLimit , 20 ) , m = b . undef ( d . filePostName , "imgFile" ) , n = d . lang ( "multiimage." ) ; d . plugin . multiImageDialog = function ( o ) { var l = o . clickFn , o = b . tmpl ( n . uploadDesc , { uploadLimit : h , sizeLimit : e } ) , s = d . createDialog ( { name : "multiimage" , width : 650 ,
height : 510 , title : d . lang ( "multiimage" ) , body : '<div style="padding:20px;"><div class="swfupload"></div></div>' , previewBtn : { name : n . insertAll , click : function ( ) { l . call ( d , v . getUrlList ( ) ) } } , yesBtn : { name : n . clearAll , click : function ( ) { v . removeFiles ( ) } } , beforeRemove : function ( ) { ( ! b . IE || b . V <= 8 ) && v . remove ( ) } } ) , v = b . swfupload ( { container : b ( ".swfupload" , s . div ) , buttonImageUrl : j + ( d . langType == "zh_CN" ? "select-files-zh_CN.png" : "select-files-en.png" ) , buttonWidth : d . langType == "zh_CN" ? 72 : 88 , buttonHeight : 23 , fileIconUrl : j + "image.png" ,
uploadDesc : o , startButtonValue : n . startUpload , uploadUrl : b . addParam ( f , "dir=image" ) , flashUrl : j + "swfupload.swf" , filePostName : m , fileTypes : "*.jpg;*.jpeg;*.gif;*.png;*.bmp" , fileTypesDesc : "Image Files" , fileUploadLimit : h , fileSizeLimit : e , postParams : b . undef ( d . extraFileUploadParams , { } ) , queueLimitExceeded : n . queueLimitExceeded , fileExceedsSizeLimit : n . fileExceedsSizeLimit , zeroByteFile : n . zeroByteFile , invalidFiletype : n . invalidFiletype , unknownError : n . unknownError , pendingMessage : n . pending , errorMessage : n . uploadError , afterError : function ( b ) { d . errorDialog ( b ) } } ) ;
return s } ; d . clickToolbar ( "multiimage" , function ( ) { d . plugin . multiImageDialog ( { clickFn : function ( e ) { e . length !== 0 && ( b . each ( e , function ( b , e ) { d . afterUpload && d . afterUpload . call ( d , e . url , e , "multiimage" ) ; d . exec ( "insertimage" , e . url , e . title , e . width , e . height , e . border , e . align ) } ) , setTimeout ( function ( ) { d . hideDialog ( ) . focus ( ) } , 0 ) ) } } ) } ) } ) ;
( function ( ) { window . SWFUpload = function ( b ) { this . initSWFUpload ( b ) } ; SWFUpload . prototype . initSWFUpload = function ( b ) { try { this . customSettings = { } , this . settings = b , this . eventQueue = [ ] , this . movieName = "KindEditor_SWFUpload_" + SWFUpload . movieCount ++ , this . movieElement = null , SWFUpload . instances [ this . movieName ] = this , this . initSettings ( ) , this . loadFlash ( ) , this . displayDebugInfo ( ) } catch ( d ) { throw delete SWFUpload . instances [ this . movieName ] , d ; } } ; SWFUpload . instances = { } ; SWFUpload . movieCount = 0 ; SWFUpload . version = "2.2.0 2009-03-25" ;
SWFUpload . QUEUE _ERROR = { QUEUE _LIMIT _EXCEEDED : - 100 , FILE _EXCEEDS _SIZE _LIMIT : - 110 , ZERO _BYTE _FILE : - 120 , INVALID _FILETYPE : - 130 } ; SWFUpload . UPLOAD _ERROR = { HTTP _ERROR : - 200 , MISSING _UPLOAD _URL : - 210 , IO _ERROR : - 220 , SECURITY _ERROR : - 230 , UPLOAD _LIMIT _EXCEEDED : - 240 , UPLOAD _FAILED : - 250 , SPECIFIED _FILE _ID _NOT _FOUND : - 260 , FILE _VALIDATION _FAILED : - 270 , FILE _CANCELLED : - 280 , UPLOAD _STOPPED : - 290 } ; SWFUpload . FILE _STATUS = { QUEUED : - 1 , IN _PROGRESS : - 2 , ERROR : - 3 , COMPLETE : - 4 , CANCELLED : - 5 } ; SWFUpload . BUTTON _ACTION = { SELECT _FILE : - 100 , SELECT _FILES : - 110 ,
START _UPLOAD : - 120 } ; SWFUpload . CURSOR = { ARROW : - 1 , HAND : - 2 } ; SWFUpload . WINDOW _MODE = { WINDOW : "window" , TRANSPARENT : "transparent" , OPAQUE : "opaque" } ; SWFUpload . completeURL = function ( b ) { if ( typeof b !== "string" || b . match ( /^https?:\/\//i ) || b . match ( /^\// ) ) return b ; var d = window . location . pathname . lastIndexOf ( "/" ) ; path = d <= 0 ? "/" : window . location . pathname . substr ( 0 , d ) + "/" ; return path + b } ; SWFUpload . prototype . initSettings = function ( ) { this . ensureDefault = function ( b , d ) { this . settings [ b ] = this . settings [ b ] == void 0 ? d : this . settings [ b ] } ;
this . ensureDefault ( "upload_url" , "" ) ; this . ensureDefault ( "preserve_relative_urls" , ! 1 ) ; this . ensureDefault ( "file_post_name" , "Filedata" ) ; this . ensureDefault ( "post_params" , { } ) ; this . ensureDefault ( "use_query_string" , ! 1 ) ; this . ensureDefault ( "requeue_on_error" , ! 1 ) ; this . ensureDefault ( "http_success" , [ ] ) ; this . ensureDefault ( "assume_success_timeout" , 0 ) ; this . ensureDefault ( "file_types" , "*.*" ) ; this . ensureDefault ( "file_types_description" , "All Files" ) ; this . ensureDefault ( "file_size_limit" , 0 ) ; this . ensureDefault ( "file_upload_limit" ,
0 ) ; this . ensureDefault ( "file_queue_limit" , 0 ) ; this . ensureDefault ( "flash_url" , "swfupload.swf" ) ; this . ensureDefault ( "prevent_swf_caching" , ! 0 ) ; this . ensureDefault ( "button_image_url" , "" ) ; this . ensureDefault ( "button_width" , 1 ) ; this . ensureDefault ( "button_height" , 1 ) ; this . ensureDefault ( "button_text" , "" ) ; this . ensureDefault ( "button_text_style" , "color: #000000; font-size: 16pt;" ) ; this . ensureDefault ( "button_text_top_padding" , 0 ) ; this . ensureDefault ( "button_text_left_padding" , 0 ) ; this . ensureDefault ( "button_action" , SWFUpload . BUTTON _ACTION . SELECT _FILES ) ;
this . ensureDefault ( "button_disabled" , ! 1 ) ; this . ensureDefault ( "button_placeholder_id" , "" ) ; this . ensureDefault ( "button_placeholder" , null ) ; this . ensureDefault ( "button_cursor" , SWFUpload . CURSOR . ARROW ) ; this . ensureDefault ( "button_window_mode" , SWFUpload . WINDOW _MODE . WINDOW ) ; this . ensureDefault ( "debug" , ! 1 ) ; this . settings . debug _enabled = this . settings . debug ; this . settings . return _upload _start _handler = this . returnUploadStart ; this . ensureDefault ( "swfupload_loaded_handler" , null ) ; this . ensureDefault ( "file_dialog_start_handler" ,
null ) ; this . ensureDefault ( "file_queued_handler" , null ) ; this . ensureDefault ( "file_queue_error_handler" , null ) ; this . ensureDefault ( "file_dialog_complete_handler" , null ) ; this . ensureDefault ( "upload_start_handler" , null ) ; this . ensureDefault ( "upload_progress_handler" , null ) ; this . ensureDefault ( "upload_error_handler" , null ) ; this . ensureDefault ( "upload_success_handler" , null ) ; this . ensureDefault ( "upload_complete_handler" , null ) ; this . ensureDefault ( "debug_handler" , this . debugMessage ) ; this . ensureDefault ( "custom_settings" , { } ) ;
this . customSettings = this . settings . custom _settings ; if ( this . settings . prevent _swf _caching ) this . settings . flash _url = this . settings . flash _url + ( this . settings . flash _url . indexOf ( "?" ) < 0 ? "?" : "&" ) + "preventswfcaching=" + ( new Date ) . getTime ( ) ; if ( ! this . settings . preserve _relative _urls ) this . settings . upload _url = SWFUpload . completeURL ( this . settings . upload _url ) , this . settings . button _image _url = SWFUpload . completeURL ( this . settings . button _image _url ) ; delete this . ensureDefault } ; SWFUpload . prototype . loadFlash = function ( ) { var b , d ;
if ( document . getElementById ( this . movieName ) !== null ) throw "ID " + this . movieName + " is already in use. The Flash Object could not be added" ; b = document . getElementById ( this . settings . button _placeholder _id ) || this . settings . button _placeholder ; if ( b == void 0 ) throw "Could not find the placeholder element: " + this . settings . button _placeholder _id ; d = document . createElement ( "div" ) ; d . innerHTML = this . getFlashHTML ( ) ; b . parentNode . replaceChild ( d . firstChild , b ) ; window [ this . movieName ] == void 0 && ( window [ this . movieName ] = this . getMovieElement ( ) ) } ;
SWFUpload . prototype . getFlashHTML = function ( ) { var b = "" ; KindEditor . IE && KindEditor . V > 8 && ( b = ' classid = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"' ) ; return [ '<object id="' , this . movieName , '"' + b + ' type="application/x-shockwave-flash" data="' , this . settings . flash _url , '" width="' , this . settings . button _width , '" height="' , this . settings . button _height , '" class="swfupload"><param name="wmode" value="' , this . settings . button _window _mode , '" /><param name="movie" value="' , this . settings . flash _url , '" /><param name="quality" value="high" /><param name="menu" value="false" /><param name="allowScriptAccess" value="always" />' ,
'<param name="flashvars" value="' + this . getFlashVars ( ) + '" />' , "</object>" ] . join ( "" ) } ; SWFUpload . prototype . getFlashVars = function ( ) { var b = this . buildParamString ( ) , d = this . settings . http _success . join ( "," ) ; return [ "movieName=" , encodeURIComponent ( this . movieName ) , "&uploadURL=" , encodeURIComponent ( this . settings . upload _url ) , "&useQueryString=" , encodeURIComponent ( this . settings . use _query _string ) , "&requeueOnError=" , encodeURIComponent ( this . settings . requeue _on _error ) , "&httpSuccess=" , encodeURIComponent ( d ) ,
"&assumeSuccessTimeout=" , encodeURIComponent ( this . settings . assume _success _timeout ) , "&params=" , encodeURIComponent ( b ) , "&filePostName=" , encodeURIComponent ( this . settings . file _post _name ) , "&fileTypes=" , encodeURIComponent ( this . settings . file _types ) , "&fileTypesDescription=" , encodeURIComponent ( this . settings . file _types _description ) , "&fileSizeLimit=" , encodeURIComponent ( this . settings . file _size _limit ) , "&fileUploadLimit=" , encodeURIComponent ( this . settings . file _upload _limit ) , "&fileQueueLimit=" ,
encodeURIComponent ( this . settings . file _queue _limit ) , "&debugEnabled=" , encodeURIComponent ( this . settings . debug _enabled ) , "&buttonImageURL=" , encodeURIComponent ( this . settings . button _image _url ) , "&buttonWidth=" , encodeURIComponent ( this . settings . button _width ) , "&buttonHeight=" , encodeURIComponent ( this . settings . button _height ) , "&buttonText=" , encodeURIComponent ( this . settings . button _text ) , "&buttonTextTopPadding=" , encodeURIComponent ( this . settings . button _text _top _padding ) , "&buttonTextLeftPadding=" ,
encodeURIComponent ( this . settings . button _text _left _padding ) , "&buttonTextStyle=" , encodeURIComponent ( this . settings . button _text _style ) , "&buttonAction=" , encodeURIComponent ( this . settings . button _action ) , "&buttonDisabled=" , encodeURIComponent ( this . settings . button _disabled ) , "&buttonCursor=" , encodeURIComponent ( this . settings . button _cursor ) ] . join ( "" ) } ; SWFUpload . prototype . getMovieElement = function ( ) { if ( this . movieElement == void 0 ) this . movieElement = document . getElementById ( this . movieName ) ; if ( this . movieElement ===
null ) throw "Could not find Flash element" ; return this . movieElement } ; SWFUpload . prototype . buildParamString = function ( ) { var b = this . settings . post _params , d = [ ] ; if ( typeof b === "object" ) for ( var f in b ) b . hasOwnProperty ( f ) && d . push ( encodeURIComponent ( f . toString ( ) ) + "=" + encodeURIComponent ( b [ f ] . toString ( ) ) ) ; return d . join ( "&" ) } ; SWFUpload . prototype . destroy = function ( ) { try { this . cancelUpload ( null , ! 1 ) ; var b = null ; if ( ( b = this . getMovieElement ( ) ) && typeof b . CallFunction === "unknown" ) { for ( var d in b ) try { typeof b [ d ] === "function" &&
( b [ d ] = null ) } catch ( f ) { } try { b . parentNode . removeChild ( b ) } catch ( j ) { } } window [ this . movieName ] = null ; SWFUpload . instances [ this . movieName ] = null ; delete SWFUpload . instances [ this . movieName ] ; this . movieName = this . eventQueue = this . customSettings = this . settings = this . movieElement = null ; return ! 0 } catch ( e ) { return ! 1 } } ; SWFUpload . prototype . displayDebugInfo = function ( ) { this . debug ( [ "---SWFUpload Instance Info---\nVersion: " , SWFUpload . version , "\nMovie Name: " , this . movieName , "\nSettings:\n\tupload_url: " , this . settings . upload _url ,
"\n\tflash_url: " , this . settings . flash _url , "\n\tuse_query_string: " , this . settings . use _query _string . toString ( ) , "\n\trequeue_on_error: " , this . settings . requeue _on _error . toString ( ) , "\n\thttp_success: " , this . settings . http _success . join ( ", " ) , "\n\tassume_success_timeout: " , this . settings . assume _success _timeout , "\n\tfile_post_name: " , this . settings . file _post _name , "\n\tpost_params: " , this . settings . post _params . toString ( ) , "\n\tfile_types: " ,
this . settings . file _types , "\n\tfile_types_description: " , this . settings . file _types _description , "\n\tfile_size_limit: " , this . settings . file _size _limit , "\n\tfile_upload_limit: " , this . settings . file _upload _limit , "\n\tfile_queue_limit: " , this . settings . file _queue _limit , "\n\tdebug: " , this . settings . debug . toString ( ) , "\n\tprevent_swf_caching: " , this . settings . prevent _swf _caching . toString ( ) , "\n\tbutton_placeholder_id: " , this . settings . button _placeholder _id . toString ( ) ,
"\n\tbutton_placeholder: " , this . settings . button _placeholder ? "Set" : "Not Set" , "\n\tbutton_image_url: " , this . settings . button _image _url . toString ( ) , "\n\tbutton_width: " , this . settings . button _width . toString ( ) , "\n\tbutton_height: " , this . settings . button _height . toString ( ) , "\n\tbutton_text: " , this . settings . button _text . toString ( ) , "\n\tbutton_text_style: " , this . settings . button _text _style . toString ( ) , "\n\tbutton_text_top_padding: " , this . settings . button _text _top _padding . toString ( ) ,
"\n\tbutton_text_left_padding: " , this . settings . button _text _left _padding . toString ( ) , "\n\tbutton_action: " , this . settings . button _action . toString ( ) , "\n\tbutton_disabled: " , this . settings . button _disabled . toString ( ) , "\n\tcustom_settings: " , this . settings . custom _settings . toString ( ) , "\nEvent Handlers:\n\tswfupload_loaded_handler assigned: " , ( typeof this . settings . swfupload _loaded _handler === "function" ) . toString ( ) , "\n\tfile_dialog_start_handler assigned: " , ( typeof this . settings . file _dialog _start _handler ===
"function" ) . toString ( ) , "\n\tfile_queued_handler assigned: " , ( typeof this . settings . file _queued _handler === "function" ) . toString ( ) , "\n\tfile_queue_error_handler assigned: " , ( typeof this . settings . file _queue _error _handler === "function" ) . toString ( ) , "\n\tupload_start_handler assigned: " , ( typeof this . settings . upload _start _handler === "function" ) . toString ( ) , "\n\tupload_progress_handler assigned: " , ( typeof this . settings . upload _progress _handler === "function" ) . toString ( ) , "\n\tupload_error_handler assigned: " ,
( typeof this . settings . upload _error _handler === "function" ) . toString ( ) , "\n\tupload_success_handler assigned: " , ( typeof this . settings . upload _success _handler === "function" ) . toString ( ) , "\n\tupload_complete_handler assigned: " , ( typeof this . settings . upload _complete _handler === "function" ) . toString ( ) , "\n\tdebug_handler assigned: " , ( typeof this . settings . debug _handler === "function" ) . toString ( ) , "\n" ] . join ( "" ) ) } ; SWFUpload . prototype . addSetting = function ( b , d , f ) { return d == void 0 ? this . settings [ b ] = f : this . settings [ b ] =
d } ; SWFUpload . prototype . getSetting = function ( b ) { if ( this . settings [ b ] != void 0 ) return this . settings [ b ] ; return "" } ; SWFUpload . prototype . callFlash = function ( b , d ) { var d = d || [ ] , f = this . getMovieElement ( ) , j , e ; try { e = f . CallFunction ( '<invoke name="' + b + '" returntype="javascript">' + _ _flash _ _argumentsToXML ( d , 0 ) + "</invoke>" ) , j = eval ( e ) } catch ( h ) { throw "Call to " + b + " failed" ; } j != void 0 && typeof j . post === "object" && ( j = this . unescapeFilePostParams ( j ) ) ; return j } ; SWFUpload . prototype . selectFile = function ( ) { this . callFlash ( "SelectFile" ) } ;
SWFUpload . prototype . selectFiles = function ( ) { this . callFlash ( "SelectFiles" ) } ; SWFUpload . prototype . startUpload = function ( b ) { this . callFlash ( "StartUpload" , [ b ] ) } ; SWFUpload . prototype . cancelUpload = function ( b , d ) { d !== ! 1 && ( d = ! 0 ) ; this . callFlash ( "CancelUpload" , [ b , d ] ) } ; SWFUpload . prototype . stopUpload = function ( ) { this . callFlash ( "StopUpload" ) } ; SWFUpload . prototype . getStats = function ( ) { return this . callFlash ( "GetStats" ) } ; SWFUpload . prototype . setStats = function ( b ) { this . callFlash ( "SetStats" , [ b ] ) } ; SWFUpload . prototype . getFile =
function ( b ) { return typeof b === "number" ? this . callFlash ( "GetFileByIndex" , [ b ] ) : this . callFlash ( "GetFile" , [ b ] ) } ; SWFUpload . prototype . addFileParam = function ( b , d , f ) { return this . callFlash ( "AddFileParam" , [ b , d , f ] ) } ; SWFUpload . prototype . removeFileParam = function ( b , d ) { this . callFlash ( "RemoveFileParam" , [ b , d ] ) } ; SWFUpload . prototype . setUploadURL = function ( b ) { this . settings . upload _url = b . toString ( ) ; this . callFlash ( "SetUploadURL" , [ b ] ) } ; SWFUpload . prototype . setPostParams = function ( b ) { this . settings . post _params = b ; this . callFlash ( "SetPostParams" ,
[ b ] ) } ; SWFUpload . prototype . addPostParam = function ( b , d ) { this . settings . post _params [ b ] = d ; this . callFlash ( "SetPostParams" , [ this . settings . post _params ] ) } ; SWFUpload . prototype . removePostParam = function ( b ) { delete this . settings . post _params [ b ] ; this . callFlash ( "SetPostParams" , [ this . settings . post _params ] ) } ; SWFUpload . prototype . setFileTypes = function ( b , d ) { this . settings . file _types = b ; this . settings . file _types _description = d ; this . callFlash ( "SetFileTypes" , [ b , d ] ) } ; SWFUpload . prototype . setFileSizeLimit = function ( b ) { this . settings . file _size _limit =
b ; this . callFlash ( "SetFileSizeLimit" , [ b ] ) } ; SWFUpload . prototype . setFileUploadLimit = function ( b ) { this . settings . file _upload _limit = b ; this . callFlash ( "SetFileUploadLimit" , [ b ] ) } ; SWFUpload . prototype . setFileQueueLimit = function ( b ) { this . settings . file _queue _limit = b ; this . callFlash ( "SetFileQueueLimit" , [ b ] ) } ; SWFUpload . prototype . setFilePostName = function ( b ) { this . settings . file _post _name = b ; this . callFlash ( "SetFilePostName" , [ b ] ) } ; SWFUpload . prototype . setUseQueryString = function ( b ) { this . settings . use _query _string = b ; this . callFlash ( "SetUseQueryString" ,
[ b ] ) } ; SWFUpload . prototype . setRequeueOnError = function ( b ) { this . settings . requeue _on _error = b ; this . callFlash ( "SetRequeueOnError" , [ b ] ) } ; SWFUpload . prototype . setHTTPSuccess = function ( b ) { typeof b === "string" && ( b = b . replace ( " " , "" ) . split ( "," ) ) ; this . settings . http _success = b ; this . callFlash ( "SetHTTPSuccess" , [ b ] ) } ; SWFUpload . prototype . setAssumeSuccessTimeout = function ( b ) { this . settings . assume _success _timeout = b ; this . callFlash ( "SetAssumeSuccessTimeout" , [ b ] ) } ; SWFUpload . prototype . setDebugEnabled = function ( b ) { this . settings . debug _enabled =
b ; this . callFlash ( "SetDebugEnabled" , [ b ] ) } ; SWFUpload . prototype . setButtonImageURL = function ( b ) { b == void 0 && ( b = "" ) ; this . settings . button _image _url = b ; this . callFlash ( "SetButtonImageURL" , [ b ] ) } ; SWFUpload . prototype . setButtonDimensions = function ( b , d ) { this . settings . button _width = b ; this . settings . button _height = d ; var f = this . getMovieElement ( ) ; if ( f != void 0 ) f . style . width = b + "px" , f . style . height = d + "px" ; this . callFlash ( "SetButtonDimensions" , [ b , d ] ) } ; SWFUpload . prototype . setButtonText = function ( b ) { this . settings . button _text = b ; this . callFlash ( "SetButtonText" ,
[ b ] ) } ; SWFUpload . prototype . setButtonTextPadding = function ( b , d ) { this . settings . button _text _top _padding = d ; this . settings . button _text _left _padding = b ; this . callFlash ( "SetButtonTextPadding" , [ b , d ] ) } ; SWFUpload . prototype . setButtonTextStyle = function ( b ) { this . settings . button _text _style = b ; this . callFlash ( "SetButtonTextStyle" , [ b ] ) } ; SWFUpload . prototype . setButtonDisabled = function ( b ) { this . settings . button _disabled = b ; this . callFlash ( "SetButtonDisabled" , [ b ] ) } ; SWFUpload . prototype . setButtonAction = function ( b ) { this . settings . button _action =
b ; this . callFlash ( "SetButtonAction" , [ b ] ) } ; SWFUpload . prototype . setButtonCursor = function ( b ) { this . settings . button _cursor = b ; this . callFlash ( "SetButtonCursor" , [ b ] ) } ; SWFUpload . prototype . queueEvent = function ( b , d ) { d == void 0 ? d = [ ] : d instanceof Array || ( d = [ d ] ) ; var f = this ; if ( typeof this . settings [ b ] === "function" ) this . eventQueue . push ( function ( ) { this . settings [ b ] . apply ( this , d ) } ) , setTimeout ( function ( ) { f . executeNextEvent ( ) } , 0 ) ; else if ( this . settings [ b ] !== null ) throw "Event handler " + b + " is unknown or is not a function" ; } ;
SWFUpload . prototype . executeNextEvent = function ( ) { var b = this . eventQueue ? this . eventQueue . shift ( ) : null ; typeof b === "function" && b . apply ( this ) } ; SWFUpload . prototype . unescapeFilePostParams = function ( b ) { var d = /[$]([0-9a-f]{4})/i , f = { } , j ; if ( b != void 0 ) { for ( var e in b . post ) if ( b . post . hasOwnProperty ( e ) ) { j = e ; for ( var h ; ( h = d . exec ( j ) ) !== null ; ) j = j . replace ( h [ 0 ] , String . fromCharCode ( parseInt ( "0x" + h [ 1 ] , 16 ) ) ) ; f [ j ] = b . post [ e ] } b . post = f } return b } ; SWFUpload . prototype . testExternalInterface = function ( ) { try { return this . callFlash ( "TestExternalInterface" ) } catch ( b ) { return ! 1 } } ;
SWFUpload . prototype . flashReady = function ( ) { var b = this . getMovieElement ( ) ; b ? ( this . cleanUp ( b ) , this . queueEvent ( "swfupload_loaded_handler" ) ) : this . debug ( "Flash called back ready but the flash movie can't be found." ) } ; SWFUpload . prototype . cleanUp = function ( b ) { try { if ( this . movieElement && typeof b . CallFunction === "unknown" ) { this . debug ( "Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)" ) ; for ( var d in b ) try { typeof b [ d ] === "function" && ( b [ d ] = null ) } catch ( f ) { } } } catch ( j ) { } window . _ _flash _ _removeCallback =
function ( b , d ) { try { b && ( b [ d ] = null ) } catch ( f ) { } } } ; SWFUpload . prototype . fileDialogStart = function ( ) { this . queueEvent ( "file_dialog_start_handler" ) } ; SWFUpload . prototype . fileQueued = function ( b ) { b = this . unescapeFilePostParams ( b ) ; this . queueEvent ( "file_queued_handler" , b ) } ; SWFUpload . prototype . fileQueueError = function ( b , d , f ) { b = this . unescapeFilePostParams ( b ) ; this . queueEvent ( "file_queue_error_handler" , [ b , d , f ] ) } ; SWFUpload . prototype . fileDialogComplete = function ( b , d , f ) { this . queueEvent ( "file_dialog_complete_handler" , [ b , d ,
f ] ) } ; SWFUpload . prototype . uploadStart = function ( b ) { b = this . unescapeFilePostParams ( b ) ; this . queueEvent ( "return_upload_start_handler" , b ) } ; SWFUpload . prototype . returnUploadStart = function ( b ) { var d ; if ( typeof this . settings . upload _start _handler === "function" ) b = this . unescapeFilePostParams ( b ) , d = this . settings . upload _start _handler . call ( this , b ) ; else if ( this . settings . upload _start _handler != void 0 ) throw "upload_start_handler must be a function" ; d === void 0 && ( d = ! 0 ) ; this . callFlash ( "ReturnUploadStart" , [ ! ! d ] ) } ; SWFUpload . prototype . uploadProgress =
function ( b , d , f ) { b = this . unescapeFilePostParams ( b ) ; this . queueEvent ( "upload_progress_handler" , [ b , d , f ] ) } ; SWFUpload . prototype . uploadError = function ( b , d , f ) { b = this . unescapeFilePostParams ( b ) ; this . queueEvent ( "upload_error_handler" , [ b , d , f ] ) } ; SWFUpload . prototype . uploadSuccess = function ( b , d , f ) { b = this . unescapeFilePostParams ( b ) ; this . queueEvent ( "upload_success_handler" , [ b , d , f ] ) } ; SWFUpload . prototype . uploadComplete = function ( b ) { b = this . unescapeFilePostParams ( b ) ; this . queueEvent ( "upload_complete_handler" , b ) } ; SWFUpload . prototype . debug =
function ( b ) { this . queueEvent ( "debug_handler" , b ) } ; SWFUpload . prototype . debugMessage = function ( b ) { if ( this . settings . debug ) { var d = [ ] ; if ( typeof b === "object" && typeof b . name === "string" && typeof b . message === "string" ) { for ( var f in b ) b . hasOwnProperty ( f ) && d . push ( f + ": " + b [ f ] ) ; b = d . join ( "\n" ) || "" ; d = b . split ( "\n" ) ; b = "EXCEPTION: " + d . join ( "\nEXCEPTION: " ) } SWFUpload . Console . writeLine ( b ) } } ; SWFUpload . Console = { } ; SWFUpload . Console . writeLine = function ( b ) { var d , f ; try { d = document . getElementById ( "SWFUpload_Console" ) ; if ( ! d ) f = document . createElement ( "form" ) ,
document . getElementsByTagName ( "body" ) [ 0 ] . appendChild ( f ) , d = document . createElement ( "textarea" ) , d . id = "SWFUpload_Console" , d . style . fontFamily = "monospace" , d . setAttribute ( "wrap" , "off" ) , d . wrap = "off" , d . style . overflow = "auto" , d . style . width = "700px" , d . style . height = "350px" , d . style . margin = "5px" , f . appendChild ( d ) ; d . value += b + "\n" ; d . scrollTop = d . scrollHeight - d . clientHeight } catch ( j ) { alert ( "Exception: " + j . name + " Message: " + j . message ) } } } ) ( ) ;
( function ( ) { if ( typeof SWFUpload === "function" ) SWFUpload . queue = { } , SWFUpload . prototype . initSettings = function ( b ) { return function ( ) { typeof b === "function" && b . call ( this ) ; this . queueSettings = { } ; this . queueSettings . queue _cancelled _flag = ! 1 ; this . queueSettings . queue _upload _count = 0 ; this . queueSettings . user _upload _complete _handler = this . settings . upload _complete _handler ; this . queueSettings . user _upload _start _handler = this . settings . upload _start _handler ; this . settings . upload _complete _handler = SWFUpload . queue . uploadCompleteHandler ;
this . settings . upload _start _handler = SWFUpload . queue . uploadStartHandler ; this . settings . queue _complete _handler = this . settings . queue _complete _handler || null } } ( SWFUpload . prototype . initSettings ) , SWFUpload . prototype . startUpload = function ( b ) { this . queueSettings . queue _cancelled _flag = ! 1 ; this . callFlash ( "StartUpload" , [ b ] ) } , SWFUpload . prototype . cancelQueue = function ( ) { this . queueSettings . queue _cancelled _flag = ! 0 ; this . stopUpload ( ) ; for ( var b = this . getStats ( ) ; b . files _queued > 0 ; ) this . cancelUpload ( ) , b = this . getStats ( ) } , SWFUpload . queue . uploadStartHandler =
function ( b ) { var d ; typeof this . queueSettings . user _upload _start _handler === "function" && ( d = this . queueSettings . user _upload _start _handler . call ( this , b ) ) ; d = d === ! 1 ? ! 1 : ! 0 ; this . queueSettings . queue _cancelled _flag = ! d ; return d } , SWFUpload . queue . uploadCompleteHandler = function ( b ) { var d = this . queueSettings . user _upload _complete _handler ; b . filestatus === SWFUpload . FILE _STATUS . COMPLETE && this . queueSettings . queue _upload _count ++ ; if ( typeof d === "function" ? d . call ( this , b ) !== ! 1 : b . filestatus !== SWFUpload . FILE _STATUS . QUEUED ) this . getStats ( ) . files _queued >
0 && this . queueSettings . queue _cancelled _flag === ! 1 ? this . startUpload ( ) : ( this . queueSettings . queue _cancelled _flag === ! 1 ? this . queueEvent ( "queue_complete_handler" , [ this . queueSettings . queue _upload _count ] ) : this . queueSettings . queue _cancelled _flag = ! 1 , this . queueSettings . queue _upload _count = 0 ) } } ) ( ) ;
KindEditor . plugin ( "pagebreak" , function ( b ) { var d = this , f = b . undef ( d . pagebreakHtml , '<hr style="page-break-after: always;" class="ke-pagebreak" />' ) ; d . clickToolbar ( "pagebreak" , function ( ) { var j = d . cmd , e = j . range ; d . focus ( ) ; var h = d . newlineTag == "br" || b . WEBKIT ? "" : '<span id="__kindeditor_tail_tag__"></span>' ; d . insertHtml ( f + h ) ; h !== "" && ( h = b ( "#__kindeditor_tail_tag__" , d . edit . doc ) , e . selectNodeContents ( h [ 0 ] ) , h . removeAttr ( "id" ) , j . select ( ) ) } ) } ) ;
KindEditor . plugin ( "plainpaste" , function ( b ) { var d = this ; d . clickToolbar ( "plainpaste" , function ( ) { var f = '<div style="padding:10px 20px;"><div style="margin-bottom:10px;">' + d . lang ( "plainpaste." ) . comment + '</div><textarea class="ke-textarea" style="width:408px;height:260px;"></textarea></div>' , f = d . createDialog ( { name : "plainpaste" , width : 450 , title : d . lang ( "plainpaste" ) , body : f , yesBtn : { name : d . lang ( "yes" ) , click : function ( ) { var e = j . val ( ) , e = b . escape ( e ) , e = e . replace ( / {2}/g , " " ) , e = d . newlineTag == "p" ? e . replace ( /^/ ,
"<p>" ) . replace ( /$/ , "</p>" ) . replace ( /\n/g , "</p><p>" ) : e . replace ( /\n/g , "<br />$&" ) ; d . insertHtml ( e ) . hideDialog ( ) . focus ( ) } } } ) , j = b ( "textarea" , f . div ) ; j [ 0 ] . focus ( ) } ) } ) ;
KindEditor . plugin ( "preview" , function ( b ) { var d = this ; d . clickToolbar ( "preview" , function ( ) { d . lang ( "preview." ) ; var f = d . createDialog ( { name : "preview" , width : 750 , title : d . lang ( "preview" ) , body : '<div style="padding:10px 20px;"><iframe class="ke-textarea" frameborder="0" style="width:708px;height:400px;"></iframe></div>' } ) , f = b ( "iframe" , f . div ) , j = b . iframeDoc ( f ) ; j . open ( ) ; j . write ( d . fullHtml ( ) ) ; j . close ( ) ; b ( j . body ) . css ( "background-color" , "#FFF" ) ; f [ 0 ] . contentWindow . focus ( ) } ) } ) ;
KindEditor . plugin ( "quickformat" , function ( b ) { function d ( b ) { for ( b = b . first ( ) ; b && b . first ( ) ; ) b = b . first ( ) ; return b } var f = this , j = b . toMap ( "blockquote,center,div,h1,h2,h3,h4,h5,h6,p" ) ; f . clickToolbar ( "quickformat" , function ( ) { f . focus ( ) ; for ( var e = f . edit . doc , h = f . cmd . range , m = b ( e . body ) . first ( ) , n , o = [ ] , l = [ ] , s = h . createBookmark ( ! 0 ) ; m ; ) { n = m . next ( ) ; var v = d ( m ) ; if ( ! v || v . name != "img" ) if ( j [ m . name ] ? ( m . html ( m . html ( ) . replace ( /^(\s| |\u3000)+/ig , "" ) ) , m . css ( "text-indent" , "2em" ) ) : l . push ( m ) , ! n || j [ n . name ] || j [ m . name ] && ! j [ n . name ] ) l . length >
0 && o . push ( l ) , l = [ ] ; m = n } b . each ( o , function ( d , f ) { var h = b ( '<p style="text-indent:2em;"></p>' , e ) ; f [ 0 ] . before ( h ) ; b . each ( f , function ( b , d ) { h . append ( d ) } ) } ) ; h . moveToBookmark ( s ) ; f . addBookmark ( ) } ) } ) ;
KindEditor . plugin ( "table" , function ( b ) { function d ( b , d ) { d = d . toUpperCase ( ) ; b . css ( "background-color" , d ) ; b . css ( "color" , d === "#000000" ? "#FFFFFF" : "#000000" ) ; b . html ( d ) } function f ( f , h ) { function l ( ) { b . each ( m , function ( ) { this . remove ( ) } ) ; m = [ ] ; b ( document ) . unbind ( "click,mousedown" , l ) ; f . unbind ( "click,mousedown" , l ) } h . bind ( "click,mousedown" , function ( b ) { b . stopPropagation ( ) } ) ; h . click ( function ( ) { l ( ) ; var h = b ( this ) , o = h . pos ( ) , o = b . colorpicker ( { x : o . x , y : o . y + h . height ( ) , z : 811214 , selectedColor : b ( this ) . html ( ) , colors : e . colorTable ,
noColor : e . lang ( "noColor" ) , shadowMode : e . shadowMode , click : function ( b ) { d ( h , b ) ; l ( ) } } ) ; m . push ( o ) ; b ( document ) . bind ( "click,mousedown" , l ) ; f . bind ( "click,mousedown" , l ) } ) } function j ( b , d , e ) { for ( var f = b = 0 , h = d . cells . length ; f < h ; f ++ ) { if ( d . cells [ f ] == e ) break ; b += d . cells [ f ] . rowSpan - 1 } return e . cellIndex - b } var e = this , h = e . lang ( "table." ) , m = [ ] ; e . plugin . table = { prop : function ( n ) { var o = [ '<div style="padding:20px;"><div class="ke-dialog-row">' , '<label for="keRows" style="width:90px;">' + h . cells + "</label>" , h . rows + ' <input type="text" id="keRows" class="ke-input-text ke-input-number" name="rows" value="" maxlength="4" /> ' ,
h . cols + ' <input type="text" class="ke-input-text ke-input-number" name="cols" value="" maxlength="4" />' , '</div><div class="ke-dialog-row">' , '<label for="keWidth" style="width:90px;">' + h . size + "</label>" , h . width + ' <input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ' , '<select name="widthType">' , '<option value="%">' + h . percent + "</option>" , '<option value="px">' + h . px + "</option>" , "</select> " , h . height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ' ,
'<select name="heightType">' , '<option value="%">' + h . percent + "</option>" , '<option value="px">' + h . px + "</option>" , '</select></div><div class="ke-dialog-row">' , '<label for="kePadding" style="width:90px;">' + h . space + "</label>" , h . padding + ' <input type="text" id="kePadding" class="ke-input-text ke-input-number" name="padding" value="" maxlength="4" /> ' , h . spacing + ' <input type="text" class="ke-input-text ke-input-number" name="spacing" value="" maxlength="4" />' , '</div><div class="ke-dialog-row">' ,
'<label for="keAlign" style="width:90px;">' + h . align + "</label>" , '<select id="keAlign" name="align">' , '<option value="">' + h . alignDefault + "</option>" , '<option value="left">' + h . alignLeft + "</option>" , '<option value="center">' + h . alignCenter + "</option>" , '<option value="right">' + h . alignRight + "</option>" , '</select></div><div class="ke-dialog-row">' , '<label for="keBorder" style="width:90px;">' + h . border + "</label>" , h . borderWidth + ' <input type="text" id="keBorder" class="ke-input-text ke-input-number" name="border" value="" maxlength="4" /> ' ,
h . borderColor + ' <span class="ke-inline-block ke-input-color"></span>' , '</div><div class="ke-dialog-row">' , '<label for="keBgColor" style="width:90px;">' + h . backgroundColor + "</label>" , '<span class="ke-inline-block ke-input-color"></span></div></div>' ] . join ( "" ) , l = e . cmd . range . createBookmark ( ) , o = e . createDialog ( { name : "table" , width : 500 , title : e . lang ( "table" ) , body : o , beforeRemove : function ( ) { C . unbind ( ) } , yesBtn : { name : e . lang ( "yes" ) , click : function ( ) { var d = j . val ( ) , f = m . val ( ) , h = p . val ( ) , n = r . val ( ) , o = z . val ( ) , I = D . val ( ) ,
O = q . val ( ) , Q = A . val ( ) , R = B . val ( ) , H = G . val ( ) , U = b ( C [ 0 ] ) . html ( ) || "" , W = b ( C [ 1 ] ) . html ( ) || "" ; if ( d == 0 || ! /^\d+$/ . test ( d ) ) alert ( e . lang ( "invalidRows" ) ) , j [ 0 ] . focus ( ) ; else if ( f == 0 || ! /^\d+$/ . test ( f ) ) alert ( e . lang ( "invalidRows" ) ) , m [ 0 ] . focus ( ) ; else if ( /^\d*$/ . test ( h ) ) if ( /^\d*$/ . test ( n ) ) if ( /^\d*$/ . test ( O ) ) if ( /^\d*$/ . test ( Q ) ) if ( /^\d*$/ . test ( H ) ) { if ( u ) h !== "" ? u . width ( h + o ) : u . css ( "width" , "" ) , u [ 0 ] . width !== void 0 && u . removeAttr ( "width" ) , n !== "" ? u . height ( n + I ) : u . css ( "height" , "" ) , u [ 0 ] . height !== void 0 && u . removeAttr ( "height" ) , u . css ( "background-color" ,
W ) , u [ 0 ] . bgColor !== void 0 && u . removeAttr ( "bgColor" ) , O !== "" ? u [ 0 ] . cellPadding = O : u . removeAttr ( "cellPadding" ) , Q !== "" ? u [ 0 ] . cellSpacing = Q : u . removeAttr ( "cellSpacing" ) , R !== "" ? u [ 0 ] . align = R : u . removeAttr ( "align" ) , H !== "" ? u . attr ( "border" , H ) : u . removeAttr ( "border" ) , H === "" || H === "0" ? u . addClass ( "ke-zeroborder" ) : u . removeClass ( "ke-zeroborder" ) , U !== "" ? u . attr ( "borderColor" , U ) : u . removeAttr ( "borderColor" ) , e . hideDialog ( ) . focus ( ) , e . cmd . range . moveToBookmark ( l ) , e . cmd . select ( ) ; else { var S = "" ; h !== "" && ( S += "width:" + h + o + ";" ) ; n !== "" &&
( S += "height:" + n + I + ";" ) ; W !== "" && ( S += "background-color:" + W + ";" ) ; h = "<table" ; S !== "" && ( h += ' style="' + S + '"' ) ; O !== "" && ( h += ' cellpadding="' + O + '"' ) ; Q !== "" && ( h += ' cellspacing="' + Q + '"' ) ; R !== "" && ( h += ' align="' + R + '"' ) ; H !== "" && ( h += ' border="' + H + '"' ) ; if ( H === "" || H === "0" ) h += ' class="ke-zeroborder"' ; U !== "" && ( h += ' bordercolor="' + U + '"' ) ; h += ">" ; for ( O = 0 ; O < d ; O ++ ) { h += "<tr>" ; for ( Q = 0 ; Q < f ; Q ++ ) h += "<td>" + ( b . IE ? " " : "<br />" ) + "</td>" ; h += "</tr>" } h += "</table>" ; b . IE || ( h += "<br />" ) ; e . insertHtml ( h ) ; e . select ( ) . hideDialog ( ) . focus ( ) } e . addBookmark ( ) } else alert ( e . lang ( "invalidBorder" ) ) ,
G [ 0 ] . focus ( ) ; else alert ( e . lang ( "invalidSpacing" ) ) , A [ 0 ] . focus ( ) ; else alert ( e . lang ( "invalidPadding" ) ) , q [ 0 ] . focus ( ) ; else alert ( e . lang ( "invalidHeight" ) ) , r [ 0 ] . focus ( ) ; else alert ( e . lang ( "invalidWidth" ) ) , p [ 0 ] . focus ( ) } } } ) . div , j = b ( '[name="rows"]' , o ) . val ( 3 ) , m = b ( '[name="cols"]' , o ) . val ( 2 ) , p = b ( '[name="width"]' , o ) . val ( 100 ) , r = b ( '[name="height"]' , o ) , z = b ( '[name="widthType"]' , o ) , D = b ( '[name="heightType"]' , o ) , q = b ( '[name="padding"]' , o ) . val ( 2 ) , A = b ( '[name="spacing"]' , o ) . val ( 0 ) , B = b ( '[name="align"]' , o ) , G = b ( '[name="border"]' ,
o ) . val ( 1 ) , C = b ( ".ke-input-color" , o ) ; f ( o , C . eq ( 0 ) ) ; f ( o , C . eq ( 1 ) ) ; d ( C . eq ( 0 ) , "#000000" ) ; d ( C . eq ( 1 ) , "" ) ; j [ 0 ] . focus ( ) ; j [ 0 ] . select ( ) ; var u ; if ( ! n && ( u = e . plugin . getSelectedTable ( ) ) ) { j . val ( u [ 0 ] . rows . length ) ; m . val ( u [ 0 ] . rows . length > 0 ? u [ 0 ] . rows [ 0 ] . cells . length : 0 ) ; j . attr ( "disabled" , ! 0 ) ; m . attr ( "disabled" , ! 0 ) ; var I , n = u [ 0 ] . style . width || u [ 0 ] . width , o = u [ 0 ] . style . height || u [ 0 ] . height ; n !== void 0 && ( I = /^(\d+)((?:px|%)*)$/ . exec ( n ) ) ? ( p . val ( I [ 1 ] ) , z . val ( I [ 2 ] ) ) : p . val ( "" ) ; if ( o !== void 0 && ( I = /^(\d+)((?:px|%)*)$/ . exec ( o ) ) ) r . val ( I [ 1 ] ) ,
D . val ( I [ 2 ] ) ; q . val ( u [ 0 ] . cellPadding || "" ) ; A . val ( u [ 0 ] . cellSpacing || "" ) ; B . val ( u [ 0 ] . align || "" ) ; G . val ( u [ 0 ] . border === void 0 ? "" : u [ 0 ] . border ) ; d ( C . eq ( 0 ) , b . toHex ( u . attr ( "borderColor" ) || "" ) ) ; d ( C . eq ( 1 ) , b . toHex ( u [ 0 ] . style . backgroundColor || u [ 0 ] . bgColor || "" ) ) ; p [ 0 ] . focus ( ) ; p [ 0 ] . select ( ) } } , cellprop : function ( ) { var n = [ '<div style="padding:20px;"><div class="ke-dialog-row">' , '<label for="keWidth" style="width:90px;">' + h . size + "</label>" , h . width + ' <input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ' ,
'<select name="widthType">' , '<option value="%">' + h . percent + "</option>" , '<option value="px">' + h . px + "</option>" , "</select> " , h . height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ' , '<select name="heightType">' , '<option value="%">' + h . percent + "</option>" , '<option value="px">' + h . px + "</option>" , '</select></div><div class="ke-dialog-row">' , '<label for="keAlign" style="width:90px;">' + h . align + "</label>" , h . textAlign + ' <select id="keAlign" name="textAlign">' ,
'<option value="">' + h . alignDefault + "</option>" , '<option value="left">' + h . alignLeft + "</option>" , '<option value="center">' + h . alignCenter + "</option>" , '<option value="right">' + h . alignRight + "</option>" , "</select> " , h . verticalAlign + ' <select name="verticalAlign">' , '<option value="">' + h . alignDefault + "</option>" , '<option value="top">' + h . alignTop + "</option>" , '<option value="middle">' + h . alignMiddle + "</option>" , '<option value="bottom">' + h . alignBottom + "</option>" , '<option value="baseline">' + h . alignBaseline + "</option>" ,
'</select></div><div class="ke-dialog-row">' , '<label for="keBorder" style="width:90px;">' + h . border + "</label>" , h . borderWidth + ' <input type="text" id="keBorder" class="ke-input-text ke-input-number" name="border" value="" maxlength="4" /> ' , h . borderColor + ' <span class="ke-inline-block ke-input-color"></span>' , '</div><div class="ke-dialog-row">' , '<label for="keBgColor" style="width:90px;">' + h . backgroundColor + "</label>" , '<span class="ke-inline-block ke-input-color"></span></div></div>' ] . join ( "" ) ,
o = e . cmd . range . createBookmark ( ) , n = e . createDialog ( { name : "table" , width : 500 , title : e . lang ( "tablecell" ) , body : n , beforeRemove : function ( ) { B . unbind ( ) } , yesBtn : { name : e . lang ( "yes" ) , click : function ( ) { var d = l . val ( ) , f = j . val ( ) , h = m . val ( ) , n = p . val ( ) ; r . val ( ) ; z . val ( ) ; var C = D . val ( ) , $ = q . val ( ) , M = A . val ( ) , K = b ( B [ 0 ] ) . html ( ) || "" , O = b ( B [ 1 ] ) . html ( ) || "" ; /^\d*$/ . test ( d ) ? /^\d*$/ . test ( f ) ? /^\d*$/ . test ( M ) ? ( G . css ( { width : d !== "" ? d + h : "" , height : f !== "" ? f + n : "" , "background-color" : O , "text-align" : C , "vertical-align" : $ , "border-width" : M , "border-style" : M !==
"" ? "solid" : "" , "border-color" : K } ) , e . hideDialog ( ) . focus ( ) , e . cmd . range . moveToBookmark ( o ) , e . cmd . select ( ) , e . addBookmark ( ) ) : ( alert ( e . lang ( "invalidBorder" ) ) , A [ 0 ] . focus ( ) ) : ( alert ( e . lang ( "invalidHeight" ) ) , j [ 0 ] . focus ( ) ) : ( alert ( e . lang ( "invalidWidth" ) ) , l [ 0 ] . focus ( ) ) } } } ) . div , l = b ( '[name="width"]' , n ) . val ( 100 ) , j = b ( '[name="height"]' , n ) , m = b ( '[name="widthType"]' , n ) , p = b ( '[name="heightType"]' , n ) , r = b ( '[name="padding"]' , n ) . val ( 2 ) , z = b ( '[name="spacing"]' , n ) . val ( 0 ) , D = b ( '[name="textAlign"]' , n ) , q = b ( '[name="verticalAlign"]' ,
n ) , A = b ( '[name="border"]' , n ) . val ( 1 ) , B = b ( ".ke-input-color" , n ) ; f ( n , B . eq ( 0 ) ) ; f ( n , B . eq ( 1 ) ) ; d ( B . eq ( 0 ) , "#000000" ) ; d ( B . eq ( 1 ) , "" ) ; l [ 0 ] . focus ( ) ; l [ 0 ] . select ( ) ; var G = e . plugin . getSelectedCell ( ) , C = G [ 0 ] . style . height || G [ 0 ] . height || "" ; ( n = /^(\d+)((?:px|%)*)$/ . exec ( G [ 0 ] . style . width || G [ 0 ] . width || "" ) ) ? ( l . val ( n [ 1 ] ) , m . val ( n [ 2 ] ) ) : l . val ( "" ) ; if ( n = /^(\d+)((?:px|%)*)$/ . exec ( C ) ) j . val ( n [ 1 ] ) , p . val ( n [ 2 ] ) ; D . val ( G [ 0 ] . style . textAlign || "" ) ; q . val ( G [ 0 ] . style . verticalAlign || "" ) ; ( n = G [ 0 ] . style . borderWidth || "" ) && ( n = parseInt ( n ) ) ; A . val ( n ) ;
d ( B . eq ( 0 ) , b . toHex ( G [ 0 ] . style . borderColor || "" ) ) ; d ( B . eq ( 1 ) , b . toHex ( G [ 0 ] . style . backgroundColor || "" ) ) ; l [ 0 ] . focus ( ) ; l [ 0 ] . select ( ) } , insert : function ( ) { this . prop ( ! 0 ) } , "delete" : function ( ) { var b = e . plugin . getSelectedTable ( ) ; e . cmd . range . setStartBefore ( b [ 0 ] ) . collapse ( ! 0 ) ; e . cmd . select ( ) ; b . remove ( ) ; e . addBookmark ( ) } , colinsert : function ( d ) { var f = e . plugin . getSelectedTable ( ) [ 0 ] , h = e . plugin . getSelectedRow ( ) [ 0 ] , m = e . plugin . getSelectedCell ( ) [ 0 ] , d = m . cellIndex + d ; d += f . rows [ 0 ] . cells . length - h . cells . length ; for ( var h = 0 , v = f . rows . length ; h <
v ; h ++ ) { var p = f . rows [ h ] , d = p . insertCell ( d ) ; d . innerHTML = b . IE ? "" : "<br />" ; d = j ( f , p , d ) } e . cmd . range . selectNodeContents ( m ) . collapse ( ! 0 ) ; e . cmd . select ( ) ; e . addBookmark ( ) } , colinsertleft : function ( ) { this . colinsert ( 0 ) } , colinsertright : function ( ) { this . colinsert ( 1 ) } , rowinsert : function ( d ) { var f = e . plugin . getSelectedTable ( ) [ 0 ] , h = e . plugin . getSelectedRow ( ) [ 0 ] , j = e . plugin . getSelectedCell ( ) [ 0 ] , m = h . rowIndex ; d === 1 && ( m = h . rowIndex + ( j . rowSpan - 1 ) + d ) ; for ( var p = f . insertRow ( m ) , r = 0 , z = h . cells . length ; r < z ; r ++ ) { h . cells [ r ] . rowSpan > 1 && ( z -=
h . cells [ r ] . rowSpan - 1 ) ; var D = p . insertCell ( r ) ; if ( d === 1 && h . cells [ r ] . colSpan > 1 ) D . colSpan = h . cells [ r ] . colSpan ; D . innerHTML = b . IE ? "" : "<br />" } for ( h = m ; h >= 0 ; h -- ) if ( d = f . rows [ h ] . cells , d . length > r ) { for ( f = j . cellIndex ; f >= 0 ; f -- ) d [ f ] . rowSpan > 1 && ( d [ f ] . rowSpan += 1 ) ; break } e . cmd . range . selectNodeContents ( j ) . collapse ( ! 0 ) ; e . cmd . select ( ) ; e . addBookmark ( ) } , rowinsertabove : function ( ) { this . rowinsert ( 0 ) } , rowinsertbelow : function ( ) { this . rowinsert ( 1 ) } , rowmerge : function ( ) { var b = e . plugin . getSelectedTable ( ) [ 0 ] , d = e . plugin . getSelectedRow ( ) [ 0 ] ,
f = e . plugin . getSelectedCell ( ) [ 0 ] , h = d . rowIndex + f . rowSpan , d = b . rows [ h ] ; if ( ! ( b . rows . length <= h ) ) b = f . cellIndex , d . cells . length <= b || ( h = d . cells [ b ] , f . colSpan === h . colSpan && ( f . rowSpan += h . rowSpan , d . deleteCell ( b ) , e . cmd . range . selectNodeContents ( f ) . collapse ( ! 0 ) , e . cmd . select ( ) , e . addBookmark ( ) ) ) } , colmerge : function ( ) { e . plugin . getSelectedTable ( ) ; var b = e . plugin . getSelectedRow ( ) [ 0 ] , d = e . plugin . getSelectedCell ( ) [ 0 ] , f = d . cellIndex + 1 ; if ( ! ( b . cells . length <= f ) ) { var h = b . cells [ f ] ; d . rowSpan === h . rowSpan && ( d . colSpan += h . colSpan , b . deleteCell ( f ) ,
e . cmd . range . selectNodeContents ( d ) . collapse ( ! 0 ) , e . cmd . select ( ) , e . addBookmark ( ) ) } } , rowsplit : function ( ) { var d = e . plugin . getSelectedTable ( ) [ 0 ] , f = e . plugin . getSelectedRow ( ) [ 0 ] , h = e . plugin . getSelectedCell ( ) [ 0 ] , m = f . rowIndex ; if ( h . rowSpan !== 1 ) { for ( var v = j ( d , f , h ) , f = 1 , p = h . rowSpan ; f < p ; f ++ ) { var r = d . rows [ m + f ] , v = r . insertCell ( v ) ; if ( h . colSpan > 1 ) v . colSpan = h . colSpan ; v . innerHTML = b . IE ? "" : "<br />" ; v = j ( d , r , v ) } b ( h ) . removeAttr ( "rowSpan" ) ; e . cmd . range . selectNodeContents ( h ) . collapse ( ! 0 ) ; e . cmd . select ( ) ; e . addBookmark ( ) } } , colsplit : function ( ) { e . plugin . getSelectedTable ( ) ;
var d = e . plugin . getSelectedRow ( ) [ 0 ] , f = e . plugin . getSelectedCell ( ) [ 0 ] , h = f . cellIndex ; if ( f . colSpan !== 1 ) { for ( var j = 1 , m = f . colSpan ; j < m ; j ++ ) { var p = d . insertCell ( h + j ) ; if ( f . rowSpan > 1 ) p . rowSpan = f . rowSpan ; p . innerHTML = b . IE ? "" : "<br />" } b ( f ) . removeAttr ( "colSpan" ) ; e . cmd . range . selectNodeContents ( f ) . collapse ( ! 0 ) ; e . cmd . select ( ) ; e . addBookmark ( ) } } , coldelete : function ( ) { for ( var d = e . plugin . getSelectedTable ( ) [ 0 ] , f = e . plugin . getSelectedRow ( ) [ 0 ] , h = e . plugin . getSelectedCell ( ) [ 0 ] . cellIndex , j = 0 , m = d . rows . length ; j < m ; j ++ ) { var p = d . rows [ j ] ,
r = p . cells [ h ] ; r . colSpan > 1 ? ( r . colSpan -= 1 , r . colSpan === 1 && b ( r ) . removeAttr ( "colSpan" ) ) : p . deleteCell ( h ) ; r . rowSpan > 1 && ( j += r . rowSpan - 1 ) } f . cells . length === 0 ? ( e . cmd . range . setStartBefore ( d ) . collapse ( ! 0 ) , e . cmd . select ( ) , b ( d ) . remove ( ) ) : e . cmd . selection ( ! 0 ) ; e . addBookmark ( ) } , rowdelete : function ( ) { for ( var d = e . plugin . getSelectedTable ( ) [ 0 ] , f = e . plugin . getSelectedRow ( ) [ 0 ] , h = e . plugin . getSelectedCell ( ) [ 0 ] , f = f . rowIndex , h = h . rowSpan - 1 ; h >= 0 ; h -- ) d . deleteRow ( f + h ) ; d . rows . length === 0 ? ( e . cmd . range . setStartBefore ( d ) . collapse ( ! 0 ) , e . cmd . select ( ) ,
b ( d ) . remove ( ) ) : e . cmd . selection ( ! 0 ) ; e . addBookmark ( ) } } ; e . clickToolbar ( "table" , e . plugin . table . prop ) } ) ;
KindEditor . plugin ( "template" , function ( b ) { function d ( d ) { return j + d + "?ver=" + encodeURIComponent ( b . DEBUG ? b . TIME : b . VERSION ) } var f = this ; f . lang ( "template." ) ; var j = f . pluginsPath + "template/html/" ; f . clickToolbar ( "template" , function ( ) { var e = f . lang ( "template." ) , h = [ '<div style="padding:10px 20px;">' , '<div class="ke-header">' , '<div class="ke-left">' , e . selectTemplate + " <select>" ] ; b . each ( e . fileList , function ( b , d ) { h . push ( '<option value="' + b + '">' + d + "</option>" ) } ) ; html = [ h . join ( "" ) , '</select></div><div class="ke-right">' ,
'<input type="checkbox" id="keReplaceFlag" name="replaceFlag" value="1" /> <label for="keReplaceFlag">' + e . replaceContent + "</label>" , '</div><div class="ke-clearfix"></div></div><iframe class="ke-textarea" frameborder="0" style="width:458px;height:260px;background-color:#FFF;"></iframe></div>' ] . join ( "" ) ; var e = f . createDialog ( { name : "template" , width : 500 , title : f . lang ( "template" ) , body : html , yesBtn : { name : f . lang ( "yes" ) , click : function ( ) { var d = b . iframeDoc ( o ) ; f [ n [ 0 ] . checked ? "html" : "insertHtml" ] ( d . body . innerHTML ) . hideDialog ( ) . focus ( ) } } } ) ,
j = b ( "select" , e . div ) , n = b ( '[name="replaceFlag"]' , e . div ) , o = b ( "iframe" , e . div ) ; n [ 0 ] . checked = ! 0 ; o . attr ( "src" , d ( j . val ( ) ) ) ; j . change ( function ( ) { o . attr ( "src" , d ( this . value ) ) } ) } ) } ) ;
KindEditor . plugin ( "wordpaste" , function ( b ) { var d = this ; d . clickToolbar ( "wordpaste" , function ( ) { var f = '<div style="padding:10px 20px;"><div style="margin-bottom:10px;">' + d . lang ( "wordpaste." ) . comment + '</div><iframe class="ke-textarea" frameborder="0" style="width:408px;height:260px;"></iframe></div>' , f = d . createDialog ( { name : "wordpaste" , width : 450 , title : d . lang ( "wordpaste" ) , body : f , yesBtn : { name : d . lang ( "yes" ) , click : function ( ) { var e = j . body . innerHTML , e = b . clearMsWord ( e , d . filterMode ? d . htmlTags : b . options . htmlTags ) ;
d . insertHtml ( e ) . hideDialog ( ) . focus ( ) } } } ) . div , f = b ( "iframe" , f ) , j = b . iframeDoc ( f ) ; if ( ! b . IE ) j . designMode = "on" ; j . open ( ) ; j . write ( "<!doctype html><html><head><title>WordPaste</title></head>" ) ; j . write ( '<body style="background-color:#FFF;font-size:12px;margin:2px;">' ) ; b . IE || j . write ( "<br />" ) ; j . write ( "</body></html>" ) ; j . close ( ) ; if ( b . IE ) j . body . contentEditable = "true" ; f [ 0 ] . contentWindow . focus ( ) } ) } ) ;