(function(){tinymce.create('tinymce.plugins.VisualChars',{init:function(ed,url){var t=this,state;t.editor=ed;state=parseFloat(tinymce.util.Cookie.get('jce_visualchars_state'))||0;ed.onInit.add(function(){ed.dom.loadCSS(url+"/css/content.css");ed.controlManager.setActive('visualchars',state);t._toggleVisualChars();t._toggleVisualBlocks(state);if(ed.plugins.format){ed.plugins.format.onClearBlocks.add(function(){t._toggleVisualBlocks(state)})}if(ed.plugins.paste){ed.plugins.paste.onAfterPaste.add(function(){t._toggleVisualBlocks(state)})}});ed.addButton('visualchars',{title:'visualchars.desc',cmd:'mceVisualChars'});ed.addCommand('mceVisualChars',function(){state=!state;ed.controlManager.setActive('visualchars',state);tinymce.util.Cookie.set('jce_visualchars_state',state?1:0);t._toggleVisualChars();t._toggleVisualBlocks(state)},t);ed.onExecCommand.add(function(ed,cmd,ui,val,o){if(state&&/(mceBlockQuote|FormatBlock)/.test(cmd)){t._toggleVisualBlocks(state)}});ed.onKeyUp.add(function(ed,e){if(state){if(e.keyCode==13){t._toggleVisualBlocks(state);t._toggleVisualChars()}}});ed.onPreProcess.add(function(ed,o){if(o.get){t._toggleVisualChars(false,o.node);t._toggleVisualBlocks(false,o.node,false)}});ed.onSetContent.add(function(ed,o){t._toggleVisualChars(state);t._toggleVisualBlocks(state)})},getInfo:function(){return{longname:'Visual characters',author:'Moxiecode Systems AB / Ryan Demmer',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars',version:tinymce.majorVersion+"."+tinymce.minorVersion}},_toggleVisualBlocks:function(state,o){var t=this,ed=t.editor,b=o||ed.getBody();var blocks=ed.dom.select('p,div,h1,h2,h3,h4,h5,h6,blockquote,pre,address,ul,ol',b);if(state){ed.dom.addClass(blocks,'mceVisualAid');ed.dom.addClass(blocks,'mceVisualGuides')}else{ed.dom.removeClass(blocks,'mceVisualAid');ed.dom.removeClass(blocks,'mceVisualGuides')}},_toggleVisualChars:function(state,o){var t=this,ed=t.editor,nl,i,h,d=ed.getDoc(),b=o||ed.getBody(),nv,s=ed.selection,bo,div;if(state){nl=[];tinymce.walk(b,function(n){if(n.nodeType==3&&n.nodeValue&&/(\u00a0|&nbsp;)/.test(n.nodeValue))nl.push(n)},'childNodes');for(i=0;i<nl.length;i++){nv=nl[i].nodeValue;nv=nv.replace(/(\u00a0|&nbsp;)/g,'<span class="mceItemHidden mceItemNbsp">\u00b7</span>');div=ed.dom.create('div',null,nv);while(node=div.lastChild)ed.dom.insertAfter(node,nl[i]);ed.dom.remove(nl[i])}}else{nl=ed.dom.select('span.mceItemNbsp',b);ed.dom.setHTML(nl,'\u00a0');ed.dom.remove(nl,1)}}});tinymce.PluginManager.add('visualchars',tinymce.plugins.VisualChars)})();