( function ( ) { var editor = null ; UM . registerWidget ( 'formula' , { tpl : "<link type=\"text/css\" rel=\"stylesheet\" href=\"<%=formula_url%>formula.css\">" + "<div class=\"edui-formula-wrapper\">" + "<ul class=\"edui-tab-nav\"></ul>" + "<div class=\"edui-tab-content\"></div>" + "</div>" , sourceData : { formula : { 'common' : [ "{/}frac{ }{ }" , "^{ }/_{ }" , "x^{ }" , "x_{ }" , "x^{ }_{ }" , "{/}bar{ }" , "{/}sqrt{ }" , "{/}nthroot{ }{ }" , "{/}sum^{ }_{n=}" , "{/}sum" , "{/}log_{ }" , "{/}ln" , "{/}int_{ }^{ }" , "{/}oint_{ }^{ }" ] , 'symbol' : [ "+" , "-" , "{/}pm" , "{/}times" , "{/}ast" , "{/}div" , "/" , "{/}bigtriangleup" , "=" , "{/}ne" , "{/}approx" , ">" , "<" , "{/}ge" , "{/}le" , "{/}infty" , "{/}cap" , "{/}cup" , "{/}because" , "{/}therefore" , "{/}subset" , "{/}supset" , "{/}subseteq" , "{/}supseteq" , "{/}nsubseteq" , "{/}nsupseteq" , "{/}in" , "{/}ni" , "{/}notin" , "{/}mapsto" , "{/}leftarrow" , "{/}rightarrow" , "{/}Leftarrow" , "{/}Rightarrow" , "{/}leftrightarrow" , "{/}Leftrightarrow" ] , 'letter' : [ "{/}alpha" , "{/}beta" , "{/}gamma" , "{/}delta" , "{/}varepsilon" , "{/}varphi" , "{/}lambda" , "{/}mu" , "{/}rho" , "{/}sigma" , "{/}omega" , "{/}Gamma" , "{/}Delta" , "{/}Theta" , "{/}Lambda" , "{/}Xi" , "{/}Pi" , "{/}Sigma" , "{/}Upsilon" , "{/}Phi" , "{/}Psi" , "{/}Omega" ] } } , initContent : function ( _editor , $widget ) { var me = this , formula = me . sourceData . formula , lang = _editor . getLang ( 'formula' ) . static , formulaUrl = UMEDITOR_CONFIG . UMEDITOR_HOME_URL + 'dialogs/formula/' , options = $ . extend ( { } , lang , { 'formula_url' : formulaUrl } ) , $root = me . root ( ) ; if ( me . inited ) { me . preventDefault ( ) ; return ; } me . inited = true ; editor = _editor ; me . $widget = $widget ; $root . html ( $ . parseTmpl ( me . tpl , options ) ) ; me . tabs = $ . eduitab ( { selector : "#edui-formula-tab-Jpanel" } ) ; var headHtml = [ ] , xMax = 0 , yMax = 0 , $tabContent = me . root ( ) . find ( '.edui-tab-content' ) ; $ . each ( formula , function ( k , v ) { var contentHtml = [ ] ; $ . each ( v , function ( i , f ) { contentHtml . push ( '<li class="edui-formula-latex-item" data-latex="' + f + '" style="background-position:-' + ( xMax * 30 ) + 'px -' + ( yMax * 30 ) + 'px"></li>' ) ; if ( ++ xMax >= 8 ) { ++ yMax ; xMax = 0 ; } } ) ; yMax ++ ; xMax = 0 ; $tabContent . append ( '<div class="edui-tab-pane"><ul>' + contentHtml . join ( '' ) + '</ul>' ) ; headHtml . push ( '<li class="edui-tab-item"><a href="javascript:void(0);" class="edui-tab-text">' + lang [ 'lang_tab_' + k ] + '</a></li>' ) ; } ) ; headHtml . push ( '<li class="edui-formula-clearboth"></li>' ) ; $root . find ( '.edui-tab-nav' ) . html ( headHtml . join ( '' ) ) ; $root . find ( '.edui-tab-content' ) . append ( '<div class="edui-formula-clearboth"></div>' ) ; me . switchTab ( 0 ) ; } , initEvent : function ( ) { var me = this ; me . root ( ) . on ( 'click' , function ( e ) { return false ; } ) ; me . root ( ) . find ( '.edui-tab-nav' ) . delegate ( '.edui-tab-item' , 'click' , function ( evt ) { me . switchTab ( this ) ; return false ; } ) ; me . root ( ) . find ( '.edui-tab-pane' ) . delegate ( '.edui-formula-latex-item' , 'click' , function ( evt ) { var $item = $ ( this ) , latex = $item . attr ( 'data-latex' ) || '' ; if ( latex ) { me . insertLatex ( latex . replace ( "{/}" , "\\" ) ) ; } me . $widget . edui ( ) . hide ( ) ; return false ; } ) ; } , switchTab : function ( index ) { var me = this , $root = me . root ( ) , index = $ . isNumeric ( index ) ? index : $ . inArray ( index , $root . find ( '.edui-tab-nav .edui-tab-item' ) ) ; $root . find ( '.edui-tab-nav .edui-tab-item' ) . removeClass ( 'edui-active' ) . eq ( index ) . addClass ( 'edui-active' ) ; $root . find ( '.edui-tab-content .edui-tab-pane' ) . removeClass ( 'edui-active' ) . eq ( index ) . addClass ( 'edui-active' ) ; me . autoHeight ( 0 ) ; } , autoHeight : function ( ) { this . $widget . height ( this . root ( ) + 2 ) ; } , insertLatex : function ( latex ) { editor . execCommand ( 'formula' , latex ) ; } , width : 350 , height : 400 } ) ; } ) ( ) ;