2013-03-17 17:16:37 +01:00
/ *
Copyright ( c ) 2003 - 2013 , CKSource - Frederico Knabben . All rights reserved .
2013-08-29 11:54:37 +02:00
For licensing , see LICENSE . md or http : //ckeditor.com/license
2013-03-17 17:16:37 +01:00
* /
CKEDITOR . dialog . add ( "specialchar" , function ( i ) { var e , l = i . lang . specialchar , k = function ( c ) { var b , c = c . data ? c . data . getTarget ( ) : new CKEDITOR . dom . element ( c ) ; if ( "a" == c . getName ( ) && ( b = c . getChild ( 0 ) . getHtml ( ) ) ) c . removeClass ( "cke_light_background" ) , e . hide ( ) , c = i . document . createElement ( "span" ) , c . setHtml ( b ) , i . insertText ( c . getText ( ) ) } , m = CKEDITOR . tools . addFunction ( k ) , j , g = function ( c , b ) { var a , b = b || c . data . getTarget ( ) ; "span" == b . getName ( ) && ( b = b . getParent ( ) ) ; if ( "a" == b . getName ( ) && ( a = b . getChild ( 0 ) . getHtml ( ) ) ) { j && d ( null , j ) ;
var f = e . getContentElement ( "info" , "htmlPreview" ) . getElement ( ) ; e . getContentElement ( "info" , "charPreview" ) . getElement ( ) . setHtml ( a ) ; f . setHtml ( CKEDITOR . tools . htmlEncode ( a ) ) ; b . getParent ( ) . addClass ( "cke_light_background" ) ; j = b } } , d = function ( c , b ) { b = b || c . data . getTarget ( ) ; "span" == b . getName ( ) && ( b = b . getParent ( ) ) ; "a" == b . getName ( ) && ( e . getContentElement ( "info" , "charPreview" ) . getElement ( ) . setHtml ( " " ) , e . getContentElement ( "info" , "htmlPreview" ) . getElement ( ) . setHtml ( " " ) , b . getParent ( ) . removeClass ( "cke_light_background" ) ,
j = void 0 ) } , n = CKEDITOR . tools . addFunction ( function ( c ) { var c = new CKEDITOR . dom . event ( c ) , b = c . getTarget ( ) , a ; a = c . getKeystroke ( ) ; var f = "rtl" == i . lang . dir ; switch ( a ) { case 38 : if ( a = b . getParent ( ) . getParent ( ) . getPrevious ( ) ) a = a . getChild ( [ b . getParent ( ) . getIndex ( ) , 0 ] ) , a . focus ( ) , d ( null , b ) , g ( null , a ) ; c . preventDefault ( ) ; break ; case 40 : if ( a = b . getParent ( ) . getParent ( ) . getNext ( ) ) if ( ( a = a . getChild ( [ b . getParent ( ) . getIndex ( ) , 0 ] ) ) && 1 == a . type ) a . focus ( ) , d ( null , b ) , g ( null , a ) ; c . preventDefault ( ) ; break ; case 32 : k ( { data : c } ) ; c . preventDefault ( ) ;
break ; case f ? 37 : 39 : if ( a = b . getParent ( ) . getNext ( ) ) a = a . getChild ( 0 ) , 1 == a . type ? ( a . focus ( ) , d ( null , b ) , g ( null , a ) , c . preventDefault ( ! 0 ) ) : d ( null , b ) ; else if ( a = b . getParent ( ) . getParent ( ) . getNext ( ) ) ( a = a . getChild ( [ 0 , 0 ] ) ) && 1 == a . type ? ( a . focus ( ) , d ( null , b ) , g ( null , a ) , c . preventDefault ( ! 0 ) ) : d ( null , b ) ; break ; case f ? 39 : 37 : ( a = b . getParent ( ) . getPrevious ( ) ) ? ( a = a . getChild ( 0 ) , a . focus ( ) , d ( null , b ) , g ( null , a ) , c . preventDefault ( ! 0 ) ) : ( a = b . getParent ( ) . getParent ( ) . getPrevious ( ) ) ? ( a = a . getLast ( ) . getChild ( 0 ) , a . focus ( ) , d ( null , b ) , g ( null , a ) , c . preventDefault ( ! 0 ) ) :
d ( null , b ) } } ) ; return { title : l . title , minWidth : 430 , minHeight : 280 , buttons : [ CKEDITOR . dialog . cancelButton ] , charColumns : 17 , onLoad : function ( ) { for ( var c = this . definition . charColumns , b = i . config . specialChars , a = CKEDITOR . tools . getNextId ( ) + "_specialchar_table_label" , f = [ '<table role="listbox" aria-labelledby="' + a + '" style="width: 320px; height: 100%; border-collapse: separate;" align="center" cellspacing="2" cellpadding="2" border="0">' ] , d = 0 , g = b . length , h , e ; d < g ; ) { f . push ( '<tr role="presentation">' ) ; for ( var j = 0 ; j < c ; j ++ ,
d ++ ) { if ( h = b [ d ] ) { h instanceof Array ? ( e = h [ 1 ] , h = h [ 0 ] ) : ( e = h . replace ( "&" , "" ) . replace ( ";" , "" ) . replace ( "#" , "" ) , e = l [ e ] || h ) ; var k = "cke_specialchar_label_" + d + "_" + CKEDITOR . tools . getNextNumber ( ) ; f . push ( '<td class="cke_dark_background" style="cursor: default" role="presentation"><a href="javascript: void(0);" role="option" aria-posinset="' + ( d + 1 ) + '"' , ' aria-setsize="' + g + '"' , ' aria-labelledby="' + k + '"' , ' class="cke_specialchar" title="' , CKEDITOR . tools . htmlEncode ( e ) , '" onkeydown="CKEDITOR.tools.callFunction( ' + n +
', event, this )" onclick="CKEDITOR.tools.callFunction(' + m + ', this); return false;" tabindex="-1"><span style="margin: 0 auto;cursor: inherit">' + h + '</span><span class="cke_voice_label" id="' + k + '">' + e + "</span></a>" ) } else f . push ( '<td class="cke_dark_background"> ' ) ; f . push ( "</td>" ) } f . push ( "</tr>" ) } f . push ( "</tbody></table>" , '<span id="' + a + '" class="cke_voice_label">' + l . options + "</span>" ) ; this . getContentElement ( "info" , "charContainer" ) . getElement ( ) . setHtml ( f . join ( "" ) ) } , contents : [ { id : "info" , label : i . lang . common . generalTab ,
title : i . lang . common . generalTab , padding : 0 , align : "top" , elements : [ { type : "hbox" , align : "top" , widths : [ "320px" , "90px" ] , children : [ { type : "html" , id : "charContainer" , html : "" , onMouseover : g , onMouseout : d , focus : function ( ) { var c = this . getElement ( ) . getElementsByTag ( "a" ) . getItem ( 0 ) ; setTimeout ( function ( ) { c . focus ( ) ; g ( null , c ) } , 0 ) } , onShow : function ( ) { var c = this . getElement ( ) . getChild ( [ 0 , 0 , 0 , 0 , 0 ] ) ; setTimeout ( function ( ) { c . focus ( ) ; g ( null , c ) } , 0 ) } , onLoad : function ( c ) { e = c . sender } } , { type : "hbox" , align : "top" , widths : [ "100%" ] , children : [ { type : "vbox" ,
align : "top" , children : [ { type : "html" , html : "<div></div>" } , { type : "html" , id : "charPreview" , className : "cke_dark_background" , style : "border:1px solid #eeeeee;font-size:28px;height:40px;width:70px;padding-top:9px;font-family:'Microsoft Sans Serif',Arial,Helvetica,Verdana;text-align:center;" , html : "<div> </div>" } , { type : "html" , id : "htmlPreview" , className : "cke_dark_background" , style : "border:1px solid #eeeeee;font-size:14px;height:20px;width:70px;padding-top:2px;font-family:'Microsoft Sans Serif',Arial,Helvetica,Verdana;text-align:center;" ,
html : "<div> </div>" } ] } ] } ] } ] } ] } } ) ;