// table.js
if(!RedactorPlugins){var RedactorPlugins={}}RedactorPlugins.table=function(){return{getTemplate:function(){return String()+'<section id="redactor-modal-table-insert"><label>'+this.lang.get("rows")+'</label><input type="text" size="5" value="2" id="redactor-table-rows" /><label>'+this.lang.get("columns")+'</label><input type="text" size="5" value="3" id="redactor-table-columns" /></section>'},init:function(){var b={};b.insert_table={title:this.lang.get("insert_table"),func:this.table.show};b.insert_row_above={title:this.lang.get("insert_row_above"),func:this.table.addRowAbove};b.insert_row_below={title:this.lang.get("insert_row_below"),func:this.table.addRowBelow};b.insert_column_left={title:this.lang.get("insert_column_left"),func:this.table.addColumnLeft};b.insert_column_right={title:this.lang.get("insert_column_right"),func:this.table.addColumnRight};b.add_head={title:this.lang.get("add_head"),func:this.table.addHead};b.delete_head={title:this.lang.get("delete_head"),func:this.table.deleteHead};b.delete_column={title:this.lang.get("delete_column"),func:this.table.deleteColumn};b.delete_row={title:this.lang.get("delete_row"),func:this.table.deleteRow};b.delete_table={title:this.lang.get("delete_table"),func:this.table.deleteTable};this.observe.addButton("td","table");this.observe.addButton("th","table");var a=this.button.addBefore("link","table",this.lang.get("table"));this.button.addDropdown(a,b)},show:function(){this.modal.addTemplate("table",this.table.getTemplate());this.modal.load("table",this.lang.get("insert_table"),300);this.modal.createCancelButton();var a=this.modal.createActionButton(this.lang.get("insert"));a.on("click",this.table.insert);this.selection.save();this.modal.show();$("#redactor-table-rows").focus()},insert:function(){var n=$("#redactor-table-rows").val(),c=$("#redactor-table-columns").val(),a=$("<div>"),b=Math.floor(Math.random()*99999),l=$('<table id="table'+b+'"><tbody></tbody></table>'),e,h,j,k;for(e=0;e<n;e++){h=$("<tr>");for(j=0;j<c;j++){k=$("<td>"+this.opts.invisibleSpace+"</td>");if(e===0&&j===0){k.append(this.selection.getMarker())}$(h).append(k)}l.append(h)}a.append(l);var f=a.html();this.modal.close();this.selection.restore();if(this.table.getTable()){return}this.buffer.set();var g=this.selection.getBlock()||this.selection.getCurrent();if(g&&g.tagName!="BODY"){if(g.tagName=="LI"){g=$(g).closest("ul, ol")}$(g).after(f)}else{this.insert.html(f)}this.selection.restore();var m=this.$editor.find("#table"+b);if(!this.opts.linebreaks&&(this.utils.browser("mozilla")||this.utils.browser("msie"))){var d=m.next();if(d.length===0){m.after(this.opts.emptyHtml)}}this.observe.buttons();m.find("span.redactor-selection-marker").remove();m.removeAttr("id");this.code.sync();this.core.setCallback("insertedTable",m)},getTable:function(){var a=$(this.selection.getParent()).closest("table");if(!this.utils.isRedactorParent(a)){return false}if(a.size()===0){return false}return a},restoreAfterDelete:function(a){this.selection.restore();a.find("span.redactor-selection-marker").remove();this.code.sync()},deleteTable:function(){var b=this.table.getTable();if(!b){return}this.buffer.set();var a=b.next();if(!this.opts.linebreaks&&a.length!==0){this.caret.setStart(a)}else{this.caret.setAfter(b)}b.remove();this.code.sync()},deleteRow:function(){var a=this.table.getTable();if(!a){return}var c=$(this.selection.getCurrent());this.buffer.set();var e=c.closest("tr");var b=e.prev().length?e.prev():e.next();if(b.length){var d=b.children("td, th").first();if(d.length){d.prepend(this.selection.getMarker())}}e.remove();this.table.restoreAfterDelete(a)},deleteColumn:function(){var c=this.table.getTable();if(!c){return}this.buffer.set();var d=$(this.selection.getCurrent());var a=d.closest("td, th");var b=a[0].cellIndex;c.find("tr").each($.proxy(function(f,g){var e=$(g);var h=b-1<0?b+1:b-1;if(f===0){e.find("td, th").eq(h).prepend(this.selection.getMarker())}e.find("td, th").eq(b).remove()},this));this.table.restoreAfterDelete(c)},addHead:function(){var a=this.table.getTable();if(!a){return}this.buffer.set();if(a.find("thead").size()!==0){this.table.deleteHead();return}var b=a.find("tr").first().clone();b.find("td").html(this.opts.invisibleSpace);$thead=$("<thead></thead>").append(b);a.prepend($thead);this.code.sync()},deleteHead:function(){var a=this.table.getTable();if(!a){return}var b=a.find("thead");if(b.size()===0){return}this.buffer.set();b.remove();this.code.sync()},addRowAbove:function(){this.table.addRow("before")},addRowBelow:function(){this.table.addRow("after")},addColumnLeft:function(){this.table.addColumn("before")},addColumnRight:function(){this.table.addColumn("after")},addRow:function(c){var a=this.table.getTable();if(!a){return}this.buffer.set();var b=$(this.selection.getCurrent());var d=b.closest("tr");var e=d.clone();e.find("th").replaceWith(function(){var f=$("<td>");f[0].attributes=this.attributes;return f.append($(this).contents())});e.find("td").html(this.opts.invisibleSpace);if(c=="after"){d.after(e)}else{d.before(e)}this.code.sync()},addColumn:function(d){var c=this.table.getTable();if(!c){return}var b=0;var e=$(this.selection.getCurrent());this.buffer.set();var f=e.closest("tr");var a=e.closest("td, th");f.find("td, th").each($.proxy(function(g,h){if($(h)[0]===a[0]){b=g}},this));c.find("tr").each($.proxy(function(g,j){var h=$(j).find("td, th").eq(b);var k=h.clone();k.html(this.opts.invisibleSpace);if(d=="after"){h.after(k)}else{h.before(k)}},this));this.code.sync()}}};
// wbbcode.js
-if(!RedactorPlugins){var RedactorPlugins={}}RedactorPlugins.wbbcode=function(){var a=false;return{init:function(){var e=this.$textarea.wcfIdentify();this.opts.initCallback=(function(){if($.browser.msie){this.$editor.addClass("msie")}var i=$.trim(this.wutil.getOption("woltlab.originalValue"));if(i.length){this.wutil.replaceText(i);this.wutil.selectionEndOfEditor()}delete this.opts.woltlab.originalValue;$(document).trigger("resize");this.wutil.saveSelection()}).bind(this);this.opts.pasteBeforeCallback=$.proxy(this.wbbcode._pasteBeforeCallback,this);this.opts.pasteCallback=$.proxy(this.wbbcode._pasteCallback,this);var d=this.clean.onSync;this.clean.onSync=(function(i){if(a===true){a=false}else{i=i.replace(/<p><br([^>]+)?><\/p>/g,"<p>@@@wcf_empty_line@@@</p>")}return d.call(this,i)}).bind(this);if(this.wutil.getOption("woltlab.autosaveOnce")){this.wutil.saveTextToStorage();delete this.opts.woltlab.autosaveOnce}var c=this.button.get("table");if(c.length){var h=c.data("dropdown");h.find(".redactor-dropdown-add_head").parent().remove();h.find(".redactor-dropdown-delete_head").parent().remove();$('<li class="dropdownDivider" />').insertBefore(h.find(".redactor-dropdown-delete_table").parent());c.click($.proxy(this.wbbcode._tableButtonClick,this))}WCF.System.Event.addListener("com.woltlab.wcf.redactor","insertBBCode_quote_"+e,$.proxy(function(i){i.cancel=true;this.wbbcode._handleInsertQuote()},this));WCF.System.Event.addListener("com.woltlab.wcf.redactor","insertBBCode_code_"+e,$.proxy(function(i){i.cancel=true;this.wbbcode._handleInsertCode(null,true)},this));WCF.System.Event.addListener("com.woltlab.wcf.redactor","keydown_"+e,$.proxy(this.wbbcode._keydownCallback,this));WCF.System.Event.addListener("com.woltlab.wcf.redactor","keyup_"+e,$.proxy(this.wbbcode._keyupCallback,this));this.code.sync=function(){};var f=$(".redactor-toolbar-tooltip-html:not(.jsWbbcode)").addClass("jsWbbcode").text(WCF.Language.get("wcf.bbcode.button.toggleBBCode"));var g=function(i){i.find("br").each(function(j,k){if(k.children.length){$(k).empty()}})};this.code.toggle=(function(){if(this.opts.visual){this.code.startSync();this.code.showCode();this.$textarea.val(this.wbbcode.convertFromHtml(this.$textarea.val()));this.button.get("html").children("i").removeClass("fa-square-o").addClass("fa-square");f.text(WCF.Language.get("wcf.bbcode.button.toggleHTML"))}else{this.$textarea.val(this.wbbcode.convertToHtml(this.$textarea.val()));this.code.offset=this.$textarea.val().length;this.code.showVisual();this.wbbcode.fixBlockLevelElements();this.wutil.selectionEndOfEditor();this.wbbcode.observeQuotes();this.wbbcode.observeCodeListings();this.button.get("html").children("i").removeClass("fa-square").addClass("fa-square-o");f.text(WCF.Language.get("wcf.bbcode.button.toggleBBCode"));this.wutil.fixDOM();g(this.$editor);this.wutil.saveSelection()}}).bind(this);this.wutil.setOption("clickCallback",(function(i){this.wutil.saveSelection();if(i.target===this.$editor[0]){if(this.$editor[0].lastElementChild&&this.$editor[0].lastElementChild.tagName==="BLOCKQUOTE"){this.wutil.setCaretAfter($(this.$editor[0].lastElementChild))}}}).bind(this));var b=this.opts.verifiedTags.indexOf("ul");if(b>-1){this.opts.verifiedTags.splice(b,1)}WCF.System.Event.addListener("com.woltlab.wcf.redactor","observe_load_"+e,(function(i){this.wbbcode.observeCodeListings();this.wbbcode.observeQuotes()}).bind(this));WCF.System.Event.addListener("com.woltlab.wcf.redactor","fixFormatting_"+e,$.proxy(this.wbbcode.fixFormatting,this))},_tableButtonClick:function(c){var d=$(c.currentTarget);if(!d.hasClass("dropact")){return}var b=this.selection.getBlock()||this.selection.getCurrent();var e=d.data("dropdown");e.children("li").show();var f=e.find("> li > .redactor-dropdown-insert_table").parent();if(b.tagName=="TD"){f.hide()}else{f.nextAll().hide()}},insertSmiley:function(c,e,g){if(g){this.wbbcode.registerSmiley(c,e)}if(this.opts.visual){var b=null;if(window.getSelection().rangeCount&&window.getSelection().getRangeAt(0).collapsed){b=window.getSelection().getRangeAt(0).startContainer;if(b.nodeType===Node.TEXT_NODE){b=b.parentElement}if(!this.utils.isRedactorParent(b)){b=null}}this.insert.html('<img src="'+e+'" class="smiley" alt="'+c+'" id="redactorSmiley">',false);var i=document.getElementById("redactorSmiley");i.removeAttribute("id");if(b!==null){var h=window.getSelection().getRangeAt(0).startContainer;if(h.nodeType===Node.TEXT_NODE){h=h.parentElement}if(b!==h){b.appendChild(i)}}var f=i.parentElement;var d=document.createTextNode("\u00A0");f.insertBefore(d,i);var d=document.createTextNode("\u00A0");if(f.lastChild===i){f.appendChild(d)}else{f.insertBefore(d,i.nextSibling)}}else{this.wutil.insertAtCaret(" "+c+" ")}},registerSmiley:function(b,c){if(__REDACTOR_SMILIES[b]){return false}__REDACTOR_SMILIES[b]=c;return true},convertFromHtml:function(n){var w=[];WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","beforeConvertFromHtml",{html:n});n=n.replace(/(<[^>]+?) data-redactor-tag="[^"]+"/g,"$1");n=n.replace(/(<[^>]+?) rel="[^"]+"/g,"$1");n=n.replace(/&#(8203|x200b);/g,"");n=n.replace(/™/gi,"\u2122");n=n.replace(/©/gi,"\u00a9");n=n.replace(/…/gi,"\u2026");n=n.replace(/—/gi,"\u2014");n=n.replace(/‐/gi,"\u2010");console.debug(n);var s={};n=n.replace(/<div(.*?)class="codeBox[^"]+"(.*?)>\n*<div>[\s\S]+?<ol start="(\d+)">([\s\S]+?)<\/ol>\n*<\/div>\n*<\/div>/g,function(F,D,C,E,B){var J=D+" "+C;var G="";var H="";if(J.match(/data-highlighter="([a-zA-Z]+)"/)){G=RegExp.$1}if(J.match(/data-filename="([^"]+)"/)){H=$.trim(RegExp.$1)}var I=WCF.getUUID();s[I]={codeContent:B.replace(/<li>/g,"").replace(/<\/li>/g,"\n").replace(/\n$/,""),filename:H.replace(/['"]/g,""),highlighter:(G==="plain"?"":G),lineNumber:(E>1?E:0)};return"@@@"+I+"@@@"});n=n.replace(/\r?\n/g,"");n=n.replace(/<a[^>]*?><\/a>/g,"");n=n.replace(/<p><\/p><table/g,"<table");n=n.replace(/<\/table><p><\/p>/g,"</table>");for(var A in s){n=n.replace(new RegExp("<p></p>@@@"+A+"@@@<p></p>"),"@@@"+A+"@@@")}n=n.replace(/<p><\/p><p>(?!<br>)/g,"<p>@@@wcf_empty_line@@@</p><p>");n=n.replace(/<br( \/)?><\/p>/g,"</p>");var h=n.split(/(<\/?(?:div|p)>)/);var i="";var y="";for(var b=0;b<h.length;b++){var z=h[b];if(z=="<p>"||z=="<div>"){continue}else{if(z=="</p>"||z=="</div>"){y=$.trim(y);if(y!="@@@wcf_empty_line@@@"){y+="\n"}i+=y;y=""}else{if(b==0||b+1==h.length){i+=z}else{y+=z}}}}if(y){i+=y;y=""}n=i;n=n.replace(/@@@wcf_empty_line@@@/g,"\n");n=n.replace(/\n\n$/,"\n");n=n.replace(/<br>$/,"");n=n.replace(/<br>/g,"\n");n=n.replace(/<br>/g,"");n=n.replace(/ /gi," ");n=n.replace(/<blockquote([^>]+)>\n?<header[^>]*?>[\s\S]*?<\/header>/gi,function(D,C,F){var G;var E="";var B="";if(C.match(/data-author="([^"]+)"/)){E=WCF.String.unescapeHTML(RegExp.$1)}if(C.match(/cite="([^"]+)"/)){B=WCF.String.unescapeHTML(RegExp.$1)}if(B){G="[quote='"+E+"','"+B+"']"}else{if(E){G="[quote='"+E+"']"}else{G="[quote]"}}return G});n=n.replace(/(?:\n*)<\/blockquote>\n?/gi,"\n[/quote]\n");n=n.replace(/<a [^>]*?href=(["'])mailto:(.+?)\1.*?>([\s\S]+?)<\/a>/gi,"[email=$2]$3[/email]");n=n.replace(/<a[^>]+><\/a>/,"");n=n.replace(/<a [^>]*?href=(["'])(.+?)\1.*?>([\s\S]+?)<\/a>/gi,function(D,B,C,E){if(C==E){return"[url]"+C+"[/url]"}return"[url='"+C+"']"+E+"[/url]"});n=n.replace(/<(?:b|strong)>/gi,function(){if(w.indexOf("b")===-1){w.push("b")}return"[b]"});n=n.replace(/<\/(?:b|strong)>/gi,"[/b]");n=n.replace(/<(?:i|em)>/gi,function(){if(w.indexOf("i")===-1){w.push("i")}return"[i]"});n=n.replace(/<\/(?:i|em)>/gi,"[/i]");n=n.replace(/<u>/gi,function(){if(w.indexOf("u")===-1){w.push("u")}return"[u]"});n=n.replace(/<\/u>/gi,"[/u]");n=n.replace(/<sub>/gi,function(){if(w.indexOf("sub")===-1){w.push("sub")}return"[sub]"});n=n.replace(/<\/sub>/gi,"[/sub]");n=n.replace(/<sup>/gi,function(){if(w.indexOf("sup")===-1){w.push("sup")}return"[sup]"});n=n.replace(/<\/sup>/gi,"[/sup]");n=n.replace(/<(?:s(trike)?|del)>/gi,function(){if(w.indexOf("s")===-1){w.push("s")}return"[s]"});n=n.replace(/<\/(?:s(trike)?|del)>/gi,"[/s]");var f=n.split(/(<\/?span[^>]*>)/);var y=[];var p=[];var q="";var d={11:8,13:10,16:12,19:14,24:18,29:22,32:24,48:36};for(var b=0;b<f.length;b++){var j=f[b];if(j=="</span>"){var e=p.pop();var i=e.start+y.pop()+e.end;if(y.length){y[y.length-1]+=i}else{q+=i}}else{if(j.match(/^<span/)){if(j.match(/^<span(?:.*?)style="([^"]+)"(?:[^>]*?)>/)){var l=RegExp.$1;var v;var o;if(l.match(/(?:^|;\s*)color: ?rgb\((\d{1,3}), ?(\d{1,3}), ?(\d{1,3})\);?/i)){var u=RegExp.$1;var c=RegExp.$2;var g=RegExp.$3;var r=("0123456789ABCDEF".charAt((u-u%16)/16)+""+"0123456789ABCDEF".charAt(u%16))+""+("0123456789ABCDEF".charAt((c-c%16)/16)+""+"0123456789ABCDEF".charAt(c%16))+""+("0123456789ABCDEF".charAt((g-g%16)/16)+""+"0123456789ABCDEF".charAt(g%16));v="[color=#"+r+"]";o="[/color=#"+r+"]";if(w.indexOf("color")===-1){w.push("color")}}else{if(l.match(/(?:^|;\s*)color: ?([^;]+);?/i)){v="[color="+RegExp.$1+"]";o="[/color="+RegExp.$1+"]";if(w.indexOf("color")===-1){w.push("color")}}else{if(l.match(/font-size: ?(\d+)(pt|px);?/i)){if(RegExp.$2=="pt"){v="[size="+RegExp.$1+"]";o="[/size="+RegExp.$1+"]";if(w.indexOf("size")===-1){w.push("size")}}else{if(d[RegExp.$1]){v="[size="+d[RegExp.$1]+"]";o="[/size="+d[RegExp.$1]+"]";if(w.indexOf("size")===-1){w.push("size")}}else{v="";o=""}}}else{if(l.match(/font-family: ?([^;]+);?/)){v="[font='"+RegExp.$1.replace(/'/g,"")+"']";o="[/font='"+RegExp.$1.replace(/'/g,"")+"']";if(w.indexOf("font")===-1){w.push("font")}}else{v='<span style="'+l+'">';o="</span>"}}}}y[y.length]="";p[y.length]={start:v,end:o}}else{if(j.match(/^<span class="inlineCode">/)){y[y.length]="";p[y.length]={start:"[tt]",end:"[/tt]"}}else{y[y.length]="";p[y.length]={start:"",end:""}}}}else{if(y.length){y[y.length-1]+=j}else{q+=j}}}}n=q;n=n.replace(/<(div|p) style="text-align: ?(left|center|right|justify);? ?">([\s\S]*?)\n/gi,function(C,B,E,D){if(w.indexOf("align")===-1){w.push("align")}return"[align="+E+"]"+$.trim(D)+"[/align="+E+"]\n"});if(w.length){var m=true;while(m){m=false;n=n.replace(new RegExp("\\[\\/((?:"+w.join("|")+")=[^\\]]+?)\\]\n\\[\\1\\]","gi"),function(){m=true;return"\n"})}n=n.replace(new RegExp("\\[\\/("+w.join("|")+")=[^\\]]+?\\]","gi"),"[/$1]")}n=n.replace(/ ?<img [^>]*?alt="([^"]+?)"[^>]*?class="smiley"[^>]*?> ?/gi," $1 ");n=n.replace(/ ?<img [^>]*?class="smiley"[^>]*?alt="([^"]+?)"[^>]*?> ?/gi," $1 ");n=n.replace(/<img(.*?)class="[^"]*redactorEmbeddedAttachment[^"]*"(.*?)>/gi,function(E,H,J){var K=H+" "+J;var G;if(K.match(/data-attachment-id="(\d+)"/)){G=RegExp.$1}else{return E}var D="none";var C=null;if(K.match(/style="([^"]+)"/)){var F=RegExp.$1.split(";");for(var I=0;I<F.length;I++){var B=$.trim(F[I]);if(B.match(/^float: (left|right)$/)){D=RegExp.$1}else{if(B.match(/^width: (\d+)px$/)){C=RegExp.$1}}}if(C!==null){return"[attach="+G+","+D+","+C+"][/attach]"}else{if(D!=="none"){return"[attach="+G+","+D+"][/attach]"}}}return"[attach="+G+"][/attach]"});n=n.replace(/<img [^>]*?src=(["'])([^"']+?)\1.*?style="([^"]+)".*?>/gi,function(G,J,C,D){var F="none";var E=0;var H=D.split(";");for(var I=0;I<H.length;I++){var B=H[I];if(B.match(/float: (left|right|none)/)){F=RegExp.$1}else{if(B.match(/width: (\d+)px/)){E=parseInt(RegExp.$1)}}}if(E){return"[img='"+C+"',"+F+","+E+"][/img]"}else{if(F!=="none"){return"[img='"+C+"',"+F+"][/img]"}}return"[img]"+C+"[/img]"});n=n.replace(/<img [^>]*?src=(["'])([^"']+?)\1.*?>/gi,"[img]$2[/img]");n=n.replace(/<li>/gi,"[*]");n=n.replace(/<\/li>/gi,"\n");n=n.replace(/<ul>/gi,"[list]");n=n.replace(/<(ol|ul style="list-style-type: decimal")>/gi,"[list=1]");n=n.replace(/<ul style="list-style-type: (none|circle|square|disc|decimal|lower-roman|upper-roman|decimal-leading-zero|lower-greek|lower-latin|upper-latin|armenian|georgian)">/gi,"[list=$1]");n=n.replace(/<\/(ul|ol)>/gi,"[/list]");n=n.replace(/\n?\[list\]/g,"\n[list]");n=n.replace(/\[\/list\]\n\[\*\]/g,"[/list][*]");n=n.replace(/\[\/list\]\n\[\/list\]/g,"[/list][/list]");n=n.replace(/<table[^>]*>/gi,"[table]\n");n=n.replace(/<\/table>\n?/gi,"[/table]\n");n=n.replace(/<tbody>([\s\S]*?)<\/tbody>/,function(B,C){return $.trim(C)});n=n.replace(/<tr><\/tr>/gi,"");n=n.replace(/<tr>/gi,"[tr]\n");n=n.replace(/<\/tr>/gi,"[/tr]\n");n=n.replace(/<td style="text-align: ?(left|center|right|justify);? ?">([\s\S]*?)<\/td>/gi,"[td][align=$1]$2[/align][/td]");n=n.replace(/(\t)*<td>(\t)*/gi,"[td]");n=n.replace(/(\t)*<\/td>/gi,"[/td]\n");var x={};n.replace(/<span id="selection-marker-\d+" class="redactor-selection-marker"><\/span>/,function(B){var C=B.hashCode();x[C]=B.replace(/\$/g,"$$$$");return"@@"+C+"@@"});WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","convertFromHtml",{html:n});n=n.replace(/<[^(<|>)]+>/g,"");if($.getLength(x)){for(var k in x){var t=new RegExp("@@"+k+"@@","g");data=data.replace(t,x[k])}}if($.getLength(s)){$.each(s,function(D,F){var C=0;if(F.highlighter){C++}if(F.lineNumber){C++}if(F.filename){C++}var B="";switch(C){case 1:if(F.highlighter){B=F.highlighter}else{if(F.filename){B="'"+F.filename+"'"}else{B=F.lineNumber}}break;case 2:if(F.highlighter){B=F.highlighter}if(F.lineNumber){if(B.length){B+=","}B+=F.lineNumber}if(F.filename){if(B.length){B+=","}B+="'"+F.filename+"'"}break;case 3:B=F.highlighter+","+F.lineNumber+",'"+F.filename+"'";break}var E="[code"+(B.length?"="+B:"")+"]"+F.codeContent+"[/code]\n";n=n.replace(new RegExp("@@@"+D+"@@@\n?","g"),E)})}n=n.replace(/</g,"<");n=n.replace(/>/g,">");n=n.replace(/&/g,"&");n=n.replace(/%28/g,"(");n=n.replace(/%29/g,")");WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","afterConvertFromHtml",{html:n});n=$.trim(n);if(n.length){n+="\n"}return n},convertToHtml:function(I){WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","beforeConvertToHtml",{data:I});I=this.wutil.removeZeroWidthSpace(I);I=I.replace(/&/g,"&");I=I.replace(/</g,"<");I=I.replace(/>/g,">");var u=[];var o=new RegExp("\\[("+__REDACTOR_SOURCE_BBCODES.join("|")+")([\\S\\s]+?)\\[\\/\\1\\]","gi");I=I.replace(o,function(J){var K=J.hashCode();u.push({key:K,value:J.replace(/\$/g,"$$$$")});return"@@"+K+"@@"});I=I.replace(/\[url\]([^"]+?)\[\/url]/gi,'<a href="$1">$1</a>'+this.opts.invisibleSpace);I=I.replace(/\[url\='([^'"]+)']([\s\S]+?)\[\/url]/gi,'<a href="$1">$2</a>'+this.opts.invisibleSpace);I=I.replace(/\[url\=([^'"\]]+)]([\s\S]+?)\[\/url]/gi,'<a href="$1">$2</a>'+this.opts.invisibleSpace);I=I.replace(/\[email\]([^"]+?)\[\/email]/gi,'<a href="mailto:$1">$1</a>'+this.opts.invisibleSpace);I=I.replace(/\[email\=([^"\]]+)](.+?)\[\/email]/gi,'<a href="mailto:$1">$2</a>'+this.opts.invisibleSpace);I=I.replace(/\[(b|i|s|sub|sup|u)\]\[\1\]/gi,"[$1]");I=I.replace(/\[(\/(?:b|i|s|sub|sup|u))\]\[\1\]/gi,"[$1]");I=I.replace(/\[(b|i|s|sub|sup|u)\]\[\/\1\]/gi,"");I=I.replace(/\[b\]([\s\S]*?)\[\/b]/gi,(function(J,K){return this.wbbcode._expandFormatting(K,"<strong>","</strong>")}).bind(this));I=I.replace(/\[i\]([\s\S]*?)\[\/i]/gi,(function(J,K){return this.wbbcode._expandFormatting(K,"<em>","</em>")}).bind(this));I=I.replace(/\[u\]([\s\S]*?)\[\/u]/gi,(function(J,K){return this.wbbcode._expandFormatting(K,"<u>","</u>")}).bind(this));I=I.replace(/\[s\]([\s\S]*?)\[\/s]/gi,(function(J,K){return this.wbbcode._expandFormatting(K,"<strike>","</strike>")}).bind(this));I=I.replace(/\[sub\]([\s\S]*?)\[\/sub]/gi,(function(J,K){return this.wbbcode._expandFormatting(K,"<sub>","</sub>")}).bind(this));I=I.replace(/\[sup\]([\s\S]*?)\[\/sup]/gi,(function(J,K){return this.wbbcode._expandFormatting(K,"<sup>","</sup>")}).bind(this));I=I.replace(/\[img\]([^"]+?)\[\/img\]/gi,'<img src="$1" />');I=I.replace(/\[img='?([^"]*?)'?,'?(left|right)'?\]\[\/img\]/gi,function(K,L,M){var J="float: "+M+";";if(M==="left"){J+="margin: 0 15px 7px 0"}else{J+="margin: 0 0 7px 15px"}return'<img src="'+L+'" style="'+J+'" />'});I=I.replace(/\[img='?([^"]*?)'?,'?(left|right|none)'?,'?(\d+)'?\]\[\/img\]/gi,function(K,M,N,L){var J="float: "+N+"; width: "+L+"px;";if(N==="left"){J+="margin: 0 15px 7px 0"}else{J+="margin: 0 0 7px 15px"}return'<img src="'+M+'" style="'+J+'" />'});I=I.replace(/\[img='?([^"]*?)'?\]\[\/img\]/gi,'<img src="$1" />');I=I.replace(/\[size=(\d+)\]([\s\S]*?)\[\/size\]/gi,(function(J,K,L){return this.wbbcode._expandFormatting(L,'<span style="font-size: '+K+'pt">',"</span>")}).bind(this));I=I.replace(/\[color=([#a-z0-9]*?)\]([\s\S]*?)\[\/color\]/gi,(function(K,J,L){return this.wbbcode._expandFormatting(L,'<span style="color: '+J+'">',"</span>")}).bind(this));I=I.replace(/\[font='?([a-z,\- ]*?)'?\]([\s\S]*?)\[\/font\]/gi,(function(K,J,L){return this.wbbcode._expandFormatting(L,'<span style="font-family: '+J+'">',"</span>")}).bind(this));I=I.replace(/\[align=(left|right|center|justify)\]([\s\S]*?)\[\/align\]\n?/gi,(function(J,L,K){return this.wbbcode._expandFormatting(K,'<div style="text-align: '+L+'">',"</div>")}).bind(this));var s=I.indexOf("[list");if(s>0){var h=I.substr(0,s);h=h.replace(/\[\*\]/g,"");I=h+I.substr(s)}var x=I.lastIndexOf("[/list]");if(x===-1){I=I.replace(/\[\*\]/g,"");I=I.replace(/\[list[^\]]*\]/g,"")}else{var h=I.substr(x+7);h=h.replace(/\[\*\]/g,"");I=I.substr(0,x+7)+h}I=I.replace(/\[\*\]([\s\S]*?)(?=\[\*\]|\[\/list\])/gi,function(J,K){return"<li>"+$.trim(K)+"</li>"});I=I.replace(/\n*(\[list\]<\/li>)/g,"$1");I=I.replace(/\[list\]/gi,"<ul>");I=I.replace(/\[list=1\]/gi,'<ul style="list-style-type: decimal">');I=I.replace(/\[list=a\]/gi,'<ul style="list-style-type: lower-latin">');I=I.replace(/\[list=(none|circle|square|disc|decimal|lower-roman|upper-roman|decimal-leading-zero|lower-greek|lower-latin|upper-latin|armenian|georgian)\]/gi,'<ul style="list-style-type: $1">');I=I.replace(/\[\/list\]/gi,"</ul>");I=I.replace(/\[table\]([\S\s]*?)\[\/table\]/gi,function(J,K){return"[table]"+$.trim(K)+"[/table]"});I=I.replace(/\[table\]\n*/gi,'<table border="1" cellspacing="1" cellpadding="1" style="width: 500px;">');I=I.replace(/\[\/table\](\n*)?/gi,function(J,K){if(K){if(K.match(/\n/g).length>2){K=K.replace(/^\n/,"")}return"</table>"+K}return"</table>"});I=I.replace(/\[tr\]\n*/gi,"<tr>");I=I.replace(/\[\/tr\]\n*/gi,"</tr>");I=I.replace(/\[td\]\n*/gi,"<td>");I=I.replace(/\[\/td\]\n*/gi,"</td>");I=I.replace(/<td>([\S\s]*?)<\/td>/gi,function(J,L){var K=$.trim(L);if(!K.length){K="​"}return"<td>"+K+"</td>"});var d=this.wutil.getOption("woltlab.attachmentUrl");var H=this.wutil.getOption("woltlab.attachmentThumbnailUrl");if(d){var F=this.wbbcode._getImageAttachments();I=I.replace(/\[attach=(\d+)\]\[\/attach\]/g,function(J,K,L){K=parseInt(K);if(F[K]!==undefined){return'<img src="'+H.replace(/987654321/,K)+'" class="redactorEmbeddedAttachment redactorDisableResize" data-attachment-id="'+K+'" />'}return J});I=I.replace(/\[attach=(\d+),(left|right|none)\]\[\/attach\]/g,function(K,L,M){L=parseInt(L);if(F[L]!==undefined){var J="";if(M==="left"||M==="right"){J="float: "+M+";";if(M==="left"){J+="margin: 0 15px 7px 0"}else{J+="margin: 0 0 7px 15px"}}J=' style="'+J+'"';return'<img src="'+H.replace(/987654321/,L)+'" class="redactorEmbeddedAttachment redactorDisableResize" data-attachment-id="'+L+'"'+J+" />"}return K});I=I.replace(/\[attach=(\d+),(left|right|none),(\d+)\]\[\/attach\]/g,function(K,M,N,L){M=parseInt(M);if(F[M]!==undefined){var J="width: "+L+"px; max-height: "+F[M].height+"px; max-width: "+F[M].width+"px;";if(N==="left"||N==="right"){J+="float: "+N+";";if(N==="left"){J+="margin: 0 15px 7px 0"}else{J+="margin: 0 0 7px 15px"}}J=' style="'+J+'"';return'<img src="'+d.replace(/987654321/,M)+'" class="redactorEmbeddedAttachment" data-attachment-id="'+M+'"'+J+" />"}return K})}for(var w in __REDACTOR_SMILIES){var k=w.replace(/</g,"<").replace(/>/g,">");var j=new RegExp("(\\s|>|^)"+WCF.String.escapeRegExp(k)+"(?=\\s|<|$)","gi");I=I.replace(j,'$1<img src="'+__REDACTOR_SMILIES[w]+'" class="smiley" alt="'+k+'" />')}I=I.replace(/(javascript):/gi,"$1<span></span>:");I=I.replace(/(\r|\r\n)/g,"\n");var B=[];var E=[];var g=I.split(/(\[(?:\/quote|quote|quote='[^']*?'(?:,'[^']*?')?|quote="[^"]*?"(?:,"[^"]*?")?)\])/i);var e=WCF.getUUID();while(true){var p=false;for(var b=0;b<g.length;b++){var D=g[b];if(D.toLowerCase()==="[/quote]"){p=true;var f="";var n=g.slice(0,b);var c=false;while(n.length){var C=n.pop();f=C+f;if(C.match(/^\[quote/i)){D=f+D;var m=WCF.getUUID();B.push({hashCode:m,content:D.replace(/\$/g,"$$$$")});E.push(m);D="@@"+m+"@@";c=true;break}}if(!c){n=g.slice(0,b);D=e}g=n.concat(D,g.slice(b+1));break}}if(!p){break}}I=g.join("");I=I.replace(new RegExp(e,"g"),"[/quote]");I=I.replace(/\n*$/,"");var y=[];I=I.replace(/(<li>[\s\S]*?<\/li>)/g,function(J){J=$.trim(J).replace(/\n/,"<br>");var K=WCF.getUUID();y.push({key:K,content:J});return K});var h=I.split("\n");I="";for(var b=0,l=h.length;b<l;b++){var t=$.trim(h[b]);if(t.match(/^<([a-z]+)/)||t.match(/<\/([a-z]+)>$/)){if(this.reIsBlock.test(RegExp.$1.toUpperCase())||RegExp.$1.toUpperCase()==="TABLE"){if(t.match(/^<([a-z]+).*<\/\1>/)){I+=t}else{I+=t+"<br />"}}else{I+="<p>"+t+"</p>"}}else{if(!t){t="<br>"}else{if(t.match(/^@@([0-9\-]+)@@$/)){if(WCF.inArray(RegExp.$1,E)){I+=t;continue}}}I+="<p>"+t+"</p>"}}I=I.replace(/<td>([\s\S]+?)<\/td>/g,function(J,K){return"<td>"+K.replace(/<p>/g,"").replace(/<\/p>/g,"<br>").replace(/<br>$/,"")+"</td>"});if(y.length){for(var b=y.length-1;b>=0;b--){I=I.replace(y[b].key,y[b].content)}}if(B.length){var G=function(J){return J.replace(/^['"]/,"").replace(/['"]$/,"")};var r=this;var q=function(J){return J.replace(/\[quote(=['"].+['"])?\]([\S\s]*)\[\/quote\]/gi,function(M,L,O){var S="";var N="";if(L){L=L.substr(1);L=L.split(",");switch(L.length){case 1:S=L[0];break;case 2:S=L[0];N=L[1];break}S=WCF.String.escapeHTML(G($.trim(S)));N=WCF.String.escapeHTML(G($.trim(N)))}var T='<blockquote class="quoteBox container containerPadding quoteBoxSimple" cite="'+N+'" data-author="'+S+'"><header contenteditable="false"><h3>'+r.wbbcode._buildQuoteHeader(S,N)+'</h3><a class="redactorQuoteEdit"></a></header>';O=$.trim(O);var K="";if(O.length){var R=O.split("\n");for(var Q=0;Q<R.length;Q++){var P=R[Q];if(P.length===0){P=r.opts.invisibleSpace}else{if(P.match(/^@@([0-9\-]+)@@$/)){if(WCF.inArray(RegExp.$1,E)){K+=P;continue}}}K+="<div>"+P+"</div>"}}else{K="<div>"+r.opts.invisibleSpace+"</div>"}T+=K;T+="</blockquote>";return T})};for(var b=B.length-1;b>=0;b--){var v=B[b];var z=new RegExp("@@"+v.hashCode+"@@","g");I=I.replace(z,q(v.content))}}I=I.replace(/<(?:div|p)><(blockquote|div)/g,"<$1");I=I.replace(/<\/(blockquote|div)><\/(?:div|p)>/g,"</$1>");if(u.length){for(var b=u.length-1;b>=0;b--){var A=u[b];var z=new RegExp("@@"+A.key+"@@","g");var i=A.value;i=i.replace(/^\[tt\]([\s\S]+)\[\/tt\]/,(function(J,L){var K=L.split("\n");L="";for(var O=0,N=K.length;O<N;O++){var M=K[O];if(M.length){if(L.length){L+="</p><p>"}L+="[tt]"+M+"[/tt]"}else{if(O===0||(O+1)===N){continue}if(L.match(/\[\/tt\]$/)){L+="</p><p>"+this.opts.invisibleSpace+""}else{L+="</p><p><br>"}}}return L}).bind(this));i=i.replace(/^\[code([^\]]*)\]([\S\s]*)\[\/code\]$/,(function(M,U,O){var N="plain";var S=0;var Q="";if(U){U=U.substring(1);U=U.split(",");var P=function(W){return W.match(/^\d+$/)};var L=function(W){return(W.indexOf(".")!==-1)||(W.match(/^(["']).*\1$/))};var K=function(W){return(__REDACTOR_CODE_HIGHLIGHTERS[U[0]]!==undefined)};var J=function(W){return W.replace(/^(["'])(.*)\1$/,"$2")};switch(U.length){case 1:if(P(U[0])){S=(parseInt(U[0])>1)?U[0]:0}else{if(L(U[0])){Q=J(U[0])}else{if(K(U[0])){N=U[0]}}}break;case 2:if(P(U[0])){S=(parseInt(U[0])>1)?U[0]:0;if(K(U[1])){N=U[1]}else{if(L(U[1])){Q=J(U[1])}}}else{if(K(U[0])){N=U[0]}if(L(U[1])){Q=J(U[1])}}break;case 3:if(K(U[0])){N=U[0]}if(P(U[1])){S=U[1]}if(L(U[2])){Q=J(U[2])}break}}O=O.replace(/^\n+/,"").replace(/\n+$/,"").split(/\n/);var V="";for(var T=0;T<O.length;T++){var R=O[T];if(!R.length){R=this.opts.invisibleSpace}V+="<li>"+R+"</li>"}return'<div class="codeBox container" contenteditable="false" data-highlighter="'+N+'"'+(Q?' data-filename="'+WCF.String.escapeHTML(Q)+'"':"")+"><div><div><h3>"+__REDACTOR_CODE_HIGHLIGHTERS[N]+(Q?": "+WCF.String.escapeHTML(Q):"")+'</h3></div><ol start="'+(S>1?S:1)+'">'+V+"</ol></div></div>"}).bind(this));console.debug(i);I=I.replace(z,i)}}WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","afterConvertToHtml",{data:I});return I},_expandFormatting:function(d,b,e){if(!d.length){return b+this.opts.invisibleSpace+e}var c=d.split("\n");d="";for(var g=0,f=c.length;g<f;g++){if(d.length){d+="\n"}d+=b+c[g]+e}return d},_pasteBeforeCallback:function(b){var c={1:24,2:22,3:18,4:14,5:12,6:10};b=b.replace(/<h([1-6])([^>]*)>/g,function(g,j,i){if(i&&i.match(/style="([^"]+?)"/)){if(/font-size: ?(\d+|\d+\.\d+)(px|pt|em|rem|%)/.test(RegExp.$1)){var d=$('<div style="width: '+RegExp.$1+RegExp.$2+'; position: absolute;" />').appendTo(document.body);var f=parseInt(d[0].clientWidth);d.remove();var e=-1;var h=false;$.each(c,function(m,l){if(e===-1){e=m}else{if(Math.abs(f-l)<Math.abs(f-c[e])){e=m}}if(f==l){h=true}});if(!h){e=(e<6)?parseInt(e)+1:e}j=e}}return"[size="+c[j]+"]"});b=b.replace(/<\/h[1-6]>/g,"[/size]");b=b.replace(/<(article|header)[^>]+>/g,"<div>");b=b.replace(/<\/(article|header)>/g,"</div>");b=b.replace(/<(div|p)([^>]+)?><(div|p)([^>]+)?>/g,"<p>");b=b.replace(/<\/(div|p)><\/(div|p)>/g,"</p>");b=b.replace(/<\/?wbr[^>]*>/g,"");WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","beforePaste",{html:b});return b},_pasteCallback:function(b){b=b.replace(/\[size=(\d+)\]/g,'<p><span style="font-size: $1pt">');b=b.replace(/\[\/size\]/g,"</span></p>");b=b.replace(/style="([^"]+)"/,function(c,e){var d=e.split(";");var g=[];for(var i=0,f=d.length;i<f;i++){var h=d[i];if(!h.match(/^\s*background-color/)){g.push(h)}}return'style="'+g.join(";")+'"'});WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","afterPaste",{html:b});return b;b=b.replace(/<img([^>]+)>/g,function(c,d){c=c.replace(/data-mozilla-paste-image="0"/,'data-mozilla-paste-image="0" style="display:none"');return c});return b},insertAttachment:function(f,d){f=parseInt(f);var b=this.wutil.getOption("woltlab.attachment"+(!d?"Thumbnail":"")+"Url");var e=this.wbbcode._getImageAttachments();if(b&&e[f]!==undefined){var c="";if(d){c=' style="width: '+e[f].width+"px; max-height: "+e[f].height+"px; max-width: "+e[f].width+'px;"'}this.wutil.insertDynamic('<img src="'+b.replace(/987654321/,f)+'" class="redactorEmbeddedAttachment'+(!d?" redactorDisableResize":"")+'" data-attachment-id="'+f+'"'+c+" />","[attach="+f+(d?",none,"+e[f].width:"")+"][/attach]")}else{this.wutil.insertDynamic("[attach="+f+"][/attach]")}},removeAttachment:function(b){if(!this.opts.visual){return}this.$editor.find("img.redactorEmbeddedAttachment").each(function(c,e){var d=$(e);if(d.data("attachmentID")==b){d.remove()}})},_getImageAttachments:function(){var c=this.wutil.getOption("woltlab.attachmentImages")||[];if(c.length){delete this.opts.attachmentImages;return c}var b={imageAttachments:{}};WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","getImageAttachments_"+this.$textarea.wcfIdentify(),b);return b.imageAttachments},_keydownCallback:function(u){switch(u.event.which){case $.ui.keyCode.BACKSPACE:case $.ui.keyCode.DELETE:case $.ui.keyCode.DOWN:case $.ui.keyCode.ENTER:case $.ui.keyCode.UP:case 83:break;default:return;break}this.selection.get();var m=this.selection.getCurrent();var l=this.selection.getParent();l=(l)?$(l):l;var i=(l)?l.closest("blockquote.quoteBox",this.$editor.get()[0]):{length:0};switch(u.event.which){case $.ui.keyCode.BACKSPACE:if(this.wutil.isCaret()){var g=false;if(i.length){var j=true;for(var b=0;b<i[0].children.length;b++){var t=i[0].children[b];if(t.tagName==="DIV"){if(t.textContent.replace(/\u200b/,"").length){j=false;break}}}if(j){g=true}}else{var d=(this.selection.implicitRange===null)?this.range:this.selection.implicitRange;var n=d.startContainer;if(n.nodeType===Node.TEXT_NODE){if(d.startOffset===0||(d.startOffset===1&&n.textContent==="\u200b")){if(!n.previousSibling){n=n.parentElement}}}if(n.nodeType===Node.ELEMENT_NODE){var h=n.previousSibling;if(h&&h.nodeType===Node.ELEMENT_NODE&&h.tagName==="BLOCKQUOTE"){i=h;g=true}}}if(g){var q=window.getSelection();if(q.rangeCount){q.removeAllRanges()}var o=document.createRange();o.selectNode(i[0]||i);q.addRange(o);u.cancel=true}}break;case $.ui.keyCode.DELETE:if(this.wutil.isCaret()&&this.wutil.isEndOfElement(m)){var s=m.nextElementSibling;if(s&&s.tagName==="BLOCKQUOTE"){var q=window.getSelection();if(q.rangeCount){q.removeAllRanges()}var o=document.createRange();o.selectNode(s);q.addRange(o);u.cancel=true}}break;case $.ui.keyCode.DOWN:var e=$(m);if(e.next("blockquote").length){this.caret.setStart(e.next().children("div:first"));u.cancel=true}else{if(l){if(l.next("blockquote").length){this.caret.setStart(l.next().children("div:first"));u.cancel=true}else{if(i.length){var p=e.closest("div",i[0]);if(!p.next().length){if(i.next().length){this.caret.setStart(i.next())}else{this.wutil.setCaretAfter(i)}u.cancel=true}}}}}break;case $.ui.keyCode.ENTER:if(i.length){this.keydown.blockquote=false;this.keydown.enterWithinBlockquote=true}break;case $.ui.keyCode.UP:if(!l||!i.length){return}var p=$(m).closest("div",i[0]);var r=p.prev();if(r[0].tagName==="DIV"){return}else{if(r[0].tagName==="BLOCKQUOTE"){return}}var k=i.prev();if(k.length===0){this.wutil.setCaretBefore(i)}else{if(k[0].tagName==="BLOCKQUOTE"){this.caret.sendEnd(k.children("div:last"))}else{if($.trim(k.html())==""){k.html(this.opts.invisibleSpace)}this.caret.setEnd(k)}}u.cancel=true;break;case 83:if($.browser.mobile){return}var c=false;if(navigator.platform.match(/^Mac/)){if(u.event.ctrlKey&&u.event.altKey){c=true}}else{if(u.event.altKey){c=true}}if(c){var f={cancel:false};WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","submitEditor_"+this.$textarea.wcfIdentify(),f);if(f.cancel){u.cancel=true}}break}},_keyupCallback:function(d){switch(d.event.which){case $.ui.keyCode.BACKSPACE:case $.ui.keyCode.DELETE:this.$editor.find("blockquote").each(function(h,j){var i=$(j);if(!i.children("header").length){i.remove()}});break;case $.ui.keyCode.ENTER:for(var g=0,f=this.$editor[0].children.length;g<f;g++){var c=this.$editor[0].children[g];if(c.nodeType!==Node.ELEMENT_NODE||c.tagName!=="P"){continue}if(c.textContent.length>0){continue}if(c.children.length>1||c.children[0].tagName==="BR"){continue}c=c.children[0];while(c.children.length===1){c=c.children[0]}if(c.children.length===0&&c.tagName==="BR"){var e=c.parentNode;var b=document.createTextNode("\u200b");e.appendChild(b);e.removeChild(c)}}break}},observeQuotes:function(){this.$editor.find(".redactorQuoteEdit").off("click.wbbcode").on("click.wbbcode",$.proxy(this.wbbcode._observeQuotesClick,this))},_observeQuotesClick:function(e){var c=$(e.currentTarget).closest("header");var d=$('<span class="redactor-link-tooltip" />');$('<a href="#">'+WCF.Language.get("wcf.bbcode.quote.edit")+"</a>").click($.proxy(function(f){f.preventDefault();this.wbbcode._openQuoteEditOverlay($(e.currentTarget).closest("blockquote.quoteBox"),false);$(".redactor-link-tooltip").remove()},this)).appendTo(d);var b=c.offset();d.css({left:b.left+"px",top:(b.top+20)+"px"});$(".redactor-link-tooltip").remove();d.appendTo(document.body);this.selection.remove()},observeCodeListings:function(){this.$editor.find(".codeBox").each((function(b,e){var c=$(e);var d=c.find(".redactorEditCodeBox");if(!d.length){d=$('<div class="redactorEditCodeBox"><div>'+WCF.Language.get("wcf.bbcode.code.edit")+"</div></div>").insertAfter(c.find("> div > div > h3"))}d.off("click.wbbcode").on("click.wbbcode",(function(){this.wbbcode._handleInsertCode(c,false)}).bind(this))}).bind(this))},_openQuoteEditOverlay:function(b,d){this.modal.load("quote",WCF.Language.get("wcf.bbcode.quote."+(d?"insert":"edit")),400);var c=this.modal.createActionButton(this.lang.get("save"));if(d){this.selection.save();c.click($.proxy(function(){var g=$("#redactorQuoteAuthor").val();var f=WCF.String.escapeHTML($("#redactorQuoteLink").val());this.selection.restore();a=true;var e=this.selection.getHtml();if(this.utils.isEmpty(e)){e=""}var h=this.wbbcode.insertQuoteBBCode(g,f,e);if(h!==null){if(!e.length){if($.browser.mozilla){h.children("br[type=_moz]").replaceWith("<div>"+this.opts.invisibleSpace+"</div>")}this.caret.setStart(h.children("div")[0])}}this.modal.close()},this))}else{$("#redactorQuoteAuthor").val(b.data("author"));$("#redactorQuoteLink").val(WCF.String.unescapeHTML(b.attr("cite")));c.click($.proxy(function(){var e=$("#redactorQuoteAuthor").val();b.data("author",e);b.attr("data-author",e);b.prop("cite",WCF.String.escapeHTML($("#redactorQuoteLink").val()));this.wbbcode._updateQuoteHeader(b);this.modal.close()},this))}this.modal.show()},_updateQuoteHeader:function(c){var d=c.data("author");var b=c.attr("cite");if(b){b=WCF.String.escapeHTML(b)}c.find("> div > header > h3").empty().append(this.wbbcode._buildQuoteHeader(d,b))},insertQuoteBBCode:function(f,l,h,i){var k="[quote]";var c="[/quote]";if(f){if(l){k="[quote='"+f+"','"+l+"']"}else{k="[quote='"+f+"']"}}var p=null;if(this.wutil.inWysiwygMode()){var j=(i)?this.wbbcode.convertToHtml(i):h;var o=WCF.getUUID();var d=this.wbbcode.convertToHtml(k+o+c);d=d.replace(o,j.replace(/^<p>/,"").replace(/<\/p>$/,""));d=d.replace(/^<p>/,"").replace(/<\/p>$/,"");d=d.replace(/<blockquote/,'<blockquote id="'+o+'"');this.wutil.restoreSelection();var g=window.getSelection().getRangeAt(0);var b=g.startContainer;while(b){var e=b.parentNode;if(e===this.$editor[0]){break}b=e}if(b&&b.parentNode===this.$editor[0]){if(b.innerHTML.length){this.wutil.setCaretAfter(b)}}this.insert.html(d,false);p=this.$editor.find("#"+o);if(p.length){var n=p.find("> div");if(n.length==1){if(n[0].innerHTML===""){n[0].innerHTML=this.opts.invisibleSpace}}else{if($.browser.mozilla){var m=p.find("> div > br[type=_moz]");if(m.length){$("<div>"+this.opts.invisibleSpace+"</div>").insertBefore(m);m.remove()}}}p.removeAttr("id");this.wutil.setCaretAfter(p[0])}this.wbbcode.observeQuotes();this.wbbcode.fixBlockLevelElements();this.$toolbar.find("a.re-__wcf_quote").removeClass("redactor-button-disabled")}else{this.wutil.insertAtCaret(k+i+c)}this.wutil.saveSelection();return p},_buildQuoteHeader:function(c,d){var b="";if(!c&&d){c=d;d=""}if(c){if(d){b+='<a href="'+d+'" tabindex="-1">'}b+=WCF.Language.get("wcf.bbcode.quote.title.javascript",{quoteAuthor:WCF.String.unescapeHTML(c)});if(d){b+="</a>"}}else{b="<small>"+WCF.Language.get("wcf.bbcode.quote.title.clickToSet")+"</small>"}return b},_handleInsertQuote:function(){this.wbbcode._openQuoteEditOverlay(null,true)},_handleInsertCode:function(d,f){this.modal.load("code",WCF.Language.get("wcf.bbcode.code."+(f?"insert":"edit")),400);var b=this.modal.createActionButton(this.lang.get("save")).addClass("buttonPrimary");if(f){this.selection.get();var c=this.selection.getText();this.selection.save();this.modal.show();var j=$("#redactorCodeBox").focus();j.val(c);b.click($.proxy(function(){var q=$("#redactorCodeBox");var n=$("#redactorCodeFilename");var s=$("#redactorCodeHighlighter");var t=$("#redactorCodeLineNumber");var p=q.val().replace(/^\n+/,"").replace(/\n+$/,"");if($.trim(p).length===0){if(!q.next("small.innerError").length){$('<small class="innerError">'+WCF.Language.get("wcf.global.form.error.empty")+"</small>").insertAfter(q)}return}var o=$.trim(n.val().replace(/['"]/g,""));var r="[code="+s.val()+","+t.val()+(o.length?",'"+o+"'":"")+"]";r+=p;r+="[/code]";this.wutil.adjustSelectionForBlockElement();this.wutil.saveSelection();var m=this.wbbcode.convertToHtml(r);this.buffer.set();this.insert.html(m,false);var q=this.$editor.find(".codeBox:not(.jsRedactorCodeBox)");this.wbbcode.observeCodeListings();this.wbbcode.fixBlockLevelElements();q.attr("contenteditable","false");this.wutil.setCaretAfter(q[0]);this.modal.close()},this))}else{var h=this.modal.createActionButton(WCF.Language.get("wcf.global.button.delete"));h.click((function(){this.buffer.set();d.remove();this.modal.close()}).bind(this));this.modal.show();var j=$("#redactorCodeBox").focus();var i=$("#redactorCodeFilename");var g=$("#redactorCodeHighlighter");var k=$("#redactorCodeLineNumber");g.val(d.data("highlighter"));i.val(d.data("filename")||"");var e=d.find("> div > ol");k.val(parseInt(e.prop("start")));var l="";e.children("li").each(function(m,n){l+=$(n).text()+"\n"});j.val(l.replace(/^\n+/,"").replace(/\n+$/,""));b.click($.proxy(function(){var n=j.val().replace(/^\n+/,"").replace(/\n+$/,"");if($.trim(n).length===0){if(!j.next("small.innerError").length){$('<small class="innerError">'+WCF.Language.get("wcf.global.form.error.empty")+"</small>").insertAfter(j)}return}var r=g.val();d.data("highlighter",r);d.attr("data-highlighter",r);var o=__REDACTOR_CODE_HIGHLIGHTERS[r];var m=$.trim(i.val().replace(/['"]/g,""));if(m){o+=": "+WCF.String.escapeHTML(m);d.data("filename",m);d.attr("data-filename",m)}else{d.removeAttr("data-filename");d.removeData("filename")}d.data("highlighter",g.val());d.find("> div > div > h3").html(o);var p=d.find("> div > ol").empty();var s=parseInt(k.val());p.prop("start",(s>1?s:1));n=n.split("\n");var q="";for(var t=0;t<n.length;t++){q+="<li>"+WCF.String.escapeHTML(n[t])+"</li>"}p.append($(q));this.modal.close()},this))}},fixBlockLevelElements:function(){return;var b=(function(e,d){var c="P";if(e.parentElement.tagName==="DIV"&&e.parentElement!==this.$editor[0]){e=e.parentElement;c="DIV"}if(e[d]===null||e[d].tagName!==c){$("<"+c+">"+this.opts.invisibleSpace+"</"+c+">")[(d==="previousElementSibling"?"insertBefore":"insertAfter")](e)}else{if(e.previousElementSibling.tagName===c){if(!e[d].innerHTML.length||e[d].innerHTML.toLowerCase()==="<p></p>"){$(e[d]).html(this.opts.invisibleSpace)}}}}).bind(this);this.$editor.find("blockquote, .codeBox").each((function(c,d){b(d,"previousElementSibling");b(d,"nextElementSibling")}).bind(this))},fixFormatting:function(d){var b=function(f){f.style.removeProperty("text-align");for(var g=0;g<f.children.length;g++){b(f.children[g])}};for(var e=0;e<this.alignment.blocks.length;e++){var c=this.alignment.blocks[e];switch(c.tagName){case"BLOCKQUOTE":c.style.removeProperty("text-align");b(c.children[0]);break;case"DIV":if(/\bcodeBox\b/.test(c.className)){b(c)}break}}}}};
+if(!RedactorPlugins){var RedactorPlugins={}}RedactorPlugins.wbbcode=function(){var a=false;return{init:function(){var e=this.$textarea.wcfIdentify();this.opts.initCallback=(function(){if($.browser.msie){this.$editor.addClass("msie")}var i=$.trim(this.wutil.getOption("woltlab.originalValue"));if(i.length){this.wutil.replaceText(i);this.wutil.selectionEndOfEditor()}delete this.opts.woltlab.originalValue;$(document).trigger("resize");this.wutil.saveSelection()}).bind(this);this.opts.pasteBeforeCallback=$.proxy(this.wbbcode._pasteBeforeCallback,this);this.opts.pasteCallback=$.proxy(this.wbbcode._pasteCallback,this);var d=this.clean.onSync;this.clean.onSync=(function(i){if(a===true){a=false}else{i=i.replace(/<p><br([^>]+)?><\/p>/g,"<p>@@@wcf_empty_line@@@</p>")}return d.call(this,i)}).bind(this);if(this.wutil.getOption("woltlab.autosaveOnce")){this.wutil.saveTextToStorage();delete this.opts.woltlab.autosaveOnce}var c=this.button.get("table");if(c.length){var h=c.data("dropdown");h.find(".redactor-dropdown-add_head").parent().remove();h.find(".redactor-dropdown-delete_head").parent().remove();$('<li class="dropdownDivider" />').insertBefore(h.find(".redactor-dropdown-delete_table").parent());c.click($.proxy(this.wbbcode._tableButtonClick,this))}WCF.System.Event.addListener("com.woltlab.wcf.redactor","insertBBCode_quote_"+e,$.proxy(function(i){i.cancel=true;this.wbbcode._handleInsertQuote()},this));WCF.System.Event.addListener("com.woltlab.wcf.redactor","insertBBCode_code_"+e,$.proxy(function(i){i.cancel=true;this.wbbcode._handleInsertCode(null,true)},this));WCF.System.Event.addListener("com.woltlab.wcf.redactor","keydown_"+e,$.proxy(this.wbbcode._keydownCallback,this));WCF.System.Event.addListener("com.woltlab.wcf.redactor","keyup_"+e,$.proxy(this.wbbcode._keyupCallback,this));this.code.sync=function(){};var f=$(".redactor-toolbar-tooltip-html:not(.jsWbbcode)").addClass("jsWbbcode").text(WCF.Language.get("wcf.bbcode.button.toggleBBCode"));var g=function(i){i.find("br").each(function(j,k){if(k.children.length){$(k).empty()}})};this.code.toggle=(function(){if(this.opts.visual){this.code.startSync();this.code.showCode();this.$textarea.val(this.wbbcode.convertFromHtml(this.$textarea.val()));this.button.get("html").children("i").removeClass("fa-square-o").addClass("fa-square");f.text(WCF.Language.get("wcf.bbcode.button.toggleHTML"))}else{this.$textarea.val(this.wbbcode.convertToHtml(this.$textarea.val()));this.code.offset=this.$textarea.val().length;this.code.showVisual();this.wbbcode.fixBlockLevelElements();this.wutil.selectionEndOfEditor();this.wbbcode.observeQuotes();this.wbbcode.observeCodeListings();this.button.get("html").children("i").removeClass("fa-square").addClass("fa-square-o");f.text(WCF.Language.get("wcf.bbcode.button.toggleBBCode"));this.wutil.fixDOM();g(this.$editor);this.wutil.saveSelection()}}).bind(this);this.wutil.setOption("clickCallback",(function(i){this.wutil.saveSelection();if(i.target===this.$editor[0]){if(this.$editor[0].lastElementChild&&this.$editor[0].lastElementChild.tagName==="BLOCKQUOTE"){this.wutil.setCaretAfter($(this.$editor[0].lastElementChild))}}}).bind(this));var b=this.opts.verifiedTags.indexOf("ul");if(b>-1){this.opts.verifiedTags.splice(b,1)}WCF.System.Event.addListener("com.woltlab.wcf.redactor","observe_load_"+e,(function(i){this.wbbcode.observeCodeListings();this.wbbcode.observeQuotes()}).bind(this));WCF.System.Event.addListener("com.woltlab.wcf.redactor","fixFormatting_"+e,$.proxy(this.wbbcode.fixFormatting,this))},_tableButtonClick:function(c){var d=$(c.currentTarget);if(!d.hasClass("dropact")){return}var b=this.selection.getBlock()||this.selection.getCurrent();var e=d.data("dropdown");e.children("li").show();var f=e.find("> li > .redactor-dropdown-insert_table").parent();if(b.tagName=="TD"){f.hide()}else{f.nextAll().hide()}},insertSmiley:function(c,e,g){if(g){this.wbbcode.registerSmiley(c,e)}if(this.opts.visual){var b=null;if(window.getSelection().rangeCount&&window.getSelection().getRangeAt(0).collapsed){b=window.getSelection().getRangeAt(0).startContainer;if(b.nodeType===Node.TEXT_NODE){b=b.parentElement}if(!this.utils.isRedactorParent(b)){b=null}}this.insert.html('<img src="'+e+'" class="smiley" alt="'+c+'" id="redactorSmiley">',false);var i=document.getElementById("redactorSmiley");i.removeAttribute("id");if(b!==null){var h=window.getSelection().getRangeAt(0).startContainer;if(h.nodeType===Node.TEXT_NODE){h=h.parentElement}if(b!==h){b.appendChild(i)}}var f=i.parentElement;var d=document.createTextNode("\u00A0");f.insertBefore(d,i);var d=document.createTextNode("\u00A0");if(f.lastChild===i){f.appendChild(d)}else{f.insertBefore(d,i.nextSibling)}}else{this.wutil.insertAtCaret(" "+c+" ")}},registerSmiley:function(b,c){if(__REDACTOR_SMILIES[b]){return false}__REDACTOR_SMILIES[b]=c;return true},convertFromHtml:function(n){var w=[];WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","beforeConvertFromHtml",{html:n});n=n.replace(/(<[^>]+?) data-redactor-tag="[^"]+"/g,"$1");n=n.replace(/(<[^>]+?) rel="[^"]+"/g,"$1");n=n.replace(/&#(8203|x200b);/g,"");n=n.replace(/™/gi,"\u2122");n=n.replace(/©/gi,"\u00a9");n=n.replace(/…/gi,"\u2026");n=n.replace(/—/gi,"\u2014");n=n.replace(/‐/gi,"\u2010");var s={};n=n.replace(/<div(.*?)class="codeBox[^"]+"(.*?)>\n*<div>[\s\S]+?<ol start="(\d+)">([\s\S]+?)<\/ol>\n*<\/div>\n*<\/div>/g,function(F,D,C,E,B){var J=D+" "+C;var G="";var H="";if(J.match(/data-highlighter="([a-zA-Z]+)"/)){G=RegExp.$1}if(J.match(/data-filename="([^"]+)"/)){H=$.trim(RegExp.$1)}var I=WCF.getUUID();s[I]={codeContent:B.replace(/<li>/g,"").replace(/<\/li>/g,"\n").replace(/\n$/,""),filename:H.replace(/['"]/g,""),highlighter:(G==="plain"?"":G),lineNumber:(E>1?E:0)};return"@@@"+I+"@@@"});n=n.replace(/\r?\n/g,"");n=n.replace(/<a[^>]*?><\/a>/g,"");n=n.replace(/<p><\/p><table/g,"<table");n=n.replace(/<\/table><p><\/p>/g,"</table>");for(var A in s){n=n.replace(new RegExp("<p></p>@@@"+A+"@@@<p></p>"),"@@@"+A+"@@@")}n=n.replace(/<p><\/p><p>(?!<br>)/g,"<p>@@@wcf_empty_line@@@</p><p>");n=n.replace(/<br( \/)?><\/p>/g,"</p>");var h=n.split(/(<\/?(?:div|p)>)/);var i="";var y="";for(var b=0;b<h.length;b++){var z=h[b];if(z=="<p>"||z=="<div>"){continue}else{if(z=="</p>"||z=="</div>"){y=$.trim(y);if(y!="@@@wcf_empty_line@@@"){y+="\n"}i+=y;y=""}else{if(b==0||b+1==h.length){i+=z}else{y+=z}}}}if(y){i+=y;y=""}n=i;n=n.replace(/@@@wcf_empty_line@@@/g,"\n");n=n.replace(/\n\n$/,"\n");n=n.replace(/<br>$/,"");n=n.replace(/<br>/g,"\n");n=n.replace(/<br>/g,"");n=n.replace(/ /gi," ");n=n.replace(/<blockquote([^>]+)>\n?<header[^>]*?>[\s\S]*?<\/header>/gi,function(D,C,F){var G;var E="";var B="";if(C.match(/data-author="([^"]+)"/)){E=WCF.String.unescapeHTML(RegExp.$1)}if(C.match(/cite="([^"]+)"/)){B=WCF.String.unescapeHTML(RegExp.$1)}if(B){G="[quote='"+E+"','"+B+"']"}else{if(E){G="[quote='"+E+"']"}else{G="[quote]"}}return G});n=n.replace(/(?:\n*)<\/blockquote>\n?/gi,"\n[/quote]\n");n=n.replace(/<a [^>]*?href=(["'])mailto:(.+?)\1.*?>([\s\S]+?)<\/a>/gi,"[email=$2]$3[/email]");n=n.replace(/<a[^>]+><\/a>/,"");n=n.replace(/<a [^>]*?href=(["'])(.+?)\1.*?>([\s\S]+?)<\/a>/gi,function(D,B,C,E){if(C==E){return"[url]"+C+"[/url]"}return"[url='"+C+"']"+E+"[/url]"});n=n.replace(/<(?:b|strong)>/gi,function(){if(w.indexOf("b")===-1){w.push("b")}return"[b]"});n=n.replace(/<\/(?:b|strong)>/gi,"[/b]");n=n.replace(/<(?:i|em)>/gi,function(){if(w.indexOf("i")===-1){w.push("i")}return"[i]"});n=n.replace(/<\/(?:i|em)>/gi,"[/i]");n=n.replace(/<u>/gi,function(){if(w.indexOf("u")===-1){w.push("u")}return"[u]"});n=n.replace(/<\/u>/gi,"[/u]");n=n.replace(/<sub>/gi,function(){if(w.indexOf("sub")===-1){w.push("sub")}return"[sub]"});n=n.replace(/<\/sub>/gi,"[/sub]");n=n.replace(/<sup>/gi,function(){if(w.indexOf("sup")===-1){w.push("sup")}return"[sup]"});n=n.replace(/<\/sup>/gi,"[/sup]");n=n.replace(/<(?:s(trike)?|del)>/gi,function(){if(w.indexOf("s")===-1){w.push("s")}return"[s]"});n=n.replace(/<\/(?:s(trike)?|del)>/gi,"[/s]");var f=n.split(/(<\/?span[^>]*>)/);var y=[];var p=[];var q="";var d={11:8,13:10,16:12,19:14,24:18,29:22,32:24,48:36};for(var b=0;b<f.length;b++){var j=f[b];if(j=="</span>"){var e=p.pop();var i=e.start+y.pop()+e.end;if(y.length){y[y.length-1]+=i}else{q+=i}}else{if(j.match(/^<span/)){if(j.match(/^<span(?:.*?)style="([^"]+)"(?:[^>]*?)>/)){var l=RegExp.$1;var v;var o;if(l.match(/(?:^|;\s*)color: ?rgb\((\d{1,3}), ?(\d{1,3}), ?(\d{1,3})\);?/i)){var u=RegExp.$1;var c=RegExp.$2;var g=RegExp.$3;var r=("0123456789ABCDEF".charAt((u-u%16)/16)+""+"0123456789ABCDEF".charAt(u%16))+""+("0123456789ABCDEF".charAt((c-c%16)/16)+""+"0123456789ABCDEF".charAt(c%16))+""+("0123456789ABCDEF".charAt((g-g%16)/16)+""+"0123456789ABCDEF".charAt(g%16));v="[color=#"+r+"]";o="[/color=#"+r+"]";if(w.indexOf("color")===-1){w.push("color")}}else{if(l.match(/(?:^|;\s*)color: ?([^;]+);?/i)){v="[color="+RegExp.$1+"]";o="[/color="+RegExp.$1+"]";if(w.indexOf("color")===-1){w.push("color")}}else{if(l.match(/font-size: ?(\d+)(pt|px);?/i)){if(RegExp.$2=="pt"){v="[size="+RegExp.$1+"]";o="[/size="+RegExp.$1+"]";if(w.indexOf("size")===-1){w.push("size")}}else{if(d[RegExp.$1]){v="[size="+d[RegExp.$1]+"]";o="[/size="+d[RegExp.$1]+"]";if(w.indexOf("size")===-1){w.push("size")}}else{v="";o=""}}}else{if(l.match(/font-family: ?([^;]+);?/)){v="[font='"+RegExp.$1.replace(/'/g,"")+"']";o="[/font='"+RegExp.$1.replace(/'/g,"")+"']";if(w.indexOf("font")===-1){w.push("font")}}else{v='<span style="'+l+'">';o="</span>"}}}}y[y.length]="";p[y.length]={start:v,end:o}}else{if(j.match(/^<span class="inlineCode">/)){y[y.length]="";p[y.length]={start:"[tt]",end:"[/tt]"}}else{y[y.length]="";p[y.length]={start:"",end:""}}}}else{if(y.length){y[y.length-1]+=j}else{q+=j}}}}n=q;n=n.replace(/<(div|p) style="text-align: ?(left|center|right|justify);? ?">([\s\S]*?)\n/gi,function(C,B,E,D){if(w.indexOf("align")===-1){w.push("align")}return"[align="+E+"]"+$.trim(D)+"[/align="+E+"]\n"});if(w.length){var m=true;while(m){m=false;n=n.replace(new RegExp("\\[\\/((?:"+w.join("|")+")=[^\\]]+?)\\]\n\\[\\1\\]","gi"),function(){m=true;return"\n"})}n=n.replace(new RegExp("\\[\\/("+w.join("|")+")=[^\\]]+?\\]","gi"),"[/$1]")}n=n.replace(/ ?<img [^>]*?alt="([^"]+?)"[^>]*?class="smiley"[^>]*?> ?/gi," $1 ");n=n.replace(/ ?<img [^>]*?class="smiley"[^>]*?alt="([^"]+?)"[^>]*?> ?/gi," $1 ");n=n.replace(/<img(.*?)class="[^"]*redactorEmbeddedAttachment[^"]*"(.*?)>/gi,function(E,H,J){var K=H+" "+J;var G;if(K.match(/data-attachment-id="(\d+)"/)){G=RegExp.$1}else{return E}var D="none";var C=null;if(K.match(/style="([^"]+)"/)){var F=RegExp.$1.split(";");for(var I=0;I<F.length;I++){var B=$.trim(F[I]);if(B.match(/^float: (left|right)$/)){D=RegExp.$1}else{if(B.match(/^width: (\d+)px$/)){C=RegExp.$1}}}if(C!==null){return"[attach="+G+","+D+","+C+"][/attach]"}else{if(D!=="none"){return"[attach="+G+","+D+"][/attach]"}}}return"[attach="+G+"][/attach]"});n=n.replace(/<img [^>]*?src=(["'])([^"']+?)\1.*?style="([^"]+)".*?>/gi,function(G,J,C,D){var F="none";var E=0;var H=D.split(";");for(var I=0;I<H.length;I++){var B=H[I];if(B.match(/float: (left|right|none)/)){F=RegExp.$1}else{if(B.match(/width: (\d+)px/)){E=parseInt(RegExp.$1)}}}if(E){return"[img='"+C+"',"+F+","+E+"][/img]"}else{if(F!=="none"){return"[img='"+C+"',"+F+"][/img]"}}return"[img]"+C+"[/img]"});n=n.replace(/<img [^>]*?src=(["'])([^"']+?)\1.*?>/gi,"[img]$2[/img]");n=n.replace(/<li>/gi,"[*]");n=n.replace(/<\/li>/gi,"\n");n=n.replace(/<ul>/gi,"[list]");n=n.replace(/<(ol|ul style="list-style-type: decimal")>/gi,"[list=1]");n=n.replace(/<ul style="list-style-type: (none|circle|square|disc|decimal|lower-roman|upper-roman|decimal-leading-zero|lower-greek|lower-latin|upper-latin|armenian|georgian)">/gi,"[list=$1]");n=n.replace(/<\/(ul|ol)>/gi,"[/list]");n=n.replace(/\n?\[list\]/g,"\n[list]");n=n.replace(/\[\/list\]\n\[\*\]/g,"[/list][*]");n=n.replace(/\[\/list\]\n\[\/list\]/g,"[/list][/list]");n=n.replace(/<table[^>]*>/gi,"[table]\n");n=n.replace(/<\/table>\n?/gi,"[/table]\n");n=n.replace(/<tbody>([\s\S]*?)<\/tbody>/,function(B,C){return $.trim(C)});n=n.replace(/<tr><\/tr>/gi,"");n=n.replace(/<tr>/gi,"[tr]\n");n=n.replace(/<\/tr>/gi,"[/tr]\n");n=n.replace(/<td style="text-align: ?(left|center|right|justify);? ?">([\s\S]*?)<\/td>/gi,"[td][align=$1]$2[/align][/td]");n=n.replace(/(\t)*<td>(\t)*/gi,"[td]");n=n.replace(/(\t)*<\/td>/gi,"[/td]\n");var x={};n.replace(/<span id="selection-marker-\d+" class="redactor-selection-marker"><\/span>/,function(B){var C=B.hashCode();x[C]=B.replace(/\$/g,"$$$$");return"@@"+C+"@@"});WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","convertFromHtml",{html:n});n=n.replace(/<[^(<|>)]+>/g,"");if($.getLength(x)){for(var k in x){var t=new RegExp("@@"+k+"@@","g");data=data.replace(t,x[k])}}if($.getLength(s)){$.each(s,function(D,F){var C=0;if(F.highlighter){C++}if(F.lineNumber){C++}if(F.filename){C++}var B="";switch(C){case 1:if(F.highlighter){B=F.highlighter}else{if(F.filename){B="'"+F.filename+"'"}else{B=F.lineNumber}}break;case 2:if(F.lineNumber){B=F.lineNumber}if(F.highlighter){if(B.length){B+=","}B+=F.highlighter}if(F.filename){if(B.length){B+=","}B+="'"+F.filename+"'"}break;case 3:B=F.highlighter+","+F.lineNumber+",'"+F.filename+"'";break}var E="[code"+(B.length?"="+B:"")+"]"+F.codeContent+"[/code]\n";n=n.replace(new RegExp("@@@"+D+"@@@\n?","g"),E)})}n=n.replace(/</g,"<");n=n.replace(/>/g,">");n=n.replace(/&/g,"&");n=n.replace(/%28/g,"(");n=n.replace(/%29/g,")");WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","afterConvertFromHtml",{html:n});n=$.trim(n);if(n.length){n+="\n"}return n},convertToHtml:function(I){WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","beforeConvertToHtml",{data:I});I=this.wutil.removeZeroWidthSpace(I);I=I.replace(/&/g,"&");I=I.replace(/</g,"<");I=I.replace(/>/g,">");var u=[];var o=new RegExp("\\[("+__REDACTOR_SOURCE_BBCODES.join("|")+")([\\S\\s]+?)\\[\\/\\1\\]","gi");I=I.replace(o,function(J){var K=J.hashCode();u.push({key:K,value:J.replace(/\$/g,"$$$$")});return"@@"+K+"@@"});I=I.replace(/\[url\]([^"]+?)\[\/url]/gi,'<a href="$1">$1</a>'+this.opts.invisibleSpace);I=I.replace(/\[url\='([^'"]+)']([\s\S]+?)\[\/url]/gi,'<a href="$1">$2</a>'+this.opts.invisibleSpace);I=I.replace(/\[url\=([^'"\]]+)]([\s\S]+?)\[\/url]/gi,'<a href="$1">$2</a>'+this.opts.invisibleSpace);I=I.replace(/\[email\]([^"]+?)\[\/email]/gi,'<a href="mailto:$1">$1</a>'+this.opts.invisibleSpace);I=I.replace(/\[email\=([^"\]]+)](.+?)\[\/email]/gi,'<a href="mailto:$1">$2</a>'+this.opts.invisibleSpace);I=I.replace(/\[(b|i|s|sub|sup|u)\]\[\1\]/gi,"[$1]");I=I.replace(/\[(\/(?:b|i|s|sub|sup|u))\]\[\1\]/gi,"[$1]");I=I.replace(/\[(b|i|s|sub|sup|u)\]\[\/\1\]/gi,"");I=I.replace(/\[b\]([\s\S]*?)\[\/b]/gi,(function(J,K){return this.wbbcode._expandFormatting(K,"<strong>","</strong>")}).bind(this));I=I.replace(/\[i\]([\s\S]*?)\[\/i]/gi,(function(J,K){return this.wbbcode._expandFormatting(K,"<em>","</em>")}).bind(this));I=I.replace(/\[u\]([\s\S]*?)\[\/u]/gi,(function(J,K){return this.wbbcode._expandFormatting(K,"<u>","</u>")}).bind(this));I=I.replace(/\[s\]([\s\S]*?)\[\/s]/gi,(function(J,K){return this.wbbcode._expandFormatting(K,"<strike>","</strike>")}).bind(this));I=I.replace(/\[sub\]([\s\S]*?)\[\/sub]/gi,(function(J,K){return this.wbbcode._expandFormatting(K,"<sub>","</sub>")}).bind(this));I=I.replace(/\[sup\]([\s\S]*?)\[\/sup]/gi,(function(J,K){return this.wbbcode._expandFormatting(K,"<sup>","</sup>")}).bind(this));I=I.replace(/\[img\]([^"]+?)\[\/img\]/gi,'<img src="$1" />');I=I.replace(/\[img='?([^"]*?)'?,'?(left|right)'?\]\[\/img\]/gi,function(K,L,M){var J="float: "+M+";";if(M==="left"){J+="margin: 0 15px 7px 0"}else{J+="margin: 0 0 7px 15px"}return'<img src="'+L+'" style="'+J+'" />'});I=I.replace(/\[img='?([^"]*?)'?,'?(left|right|none)'?,'?(\d+)'?\]\[\/img\]/gi,function(K,M,N,L){var J="float: "+N+"; width: "+L+"px;";if(N==="left"){J+="margin: 0 15px 7px 0"}else{J+="margin: 0 0 7px 15px"}return'<img src="'+M+'" style="'+J+'" />'});I=I.replace(/\[img='?([^"]*?)'?\]\[\/img\]/gi,'<img src="$1" />');I=I.replace(/\[size=(\d+)\]([\s\S]*?)\[\/size\]/gi,(function(J,K,L){return this.wbbcode._expandFormatting(L,'<span style="font-size: '+K+'pt">',"</span>")}).bind(this));I=I.replace(/\[color=([#a-z0-9]*?)\]([\s\S]*?)\[\/color\]/gi,(function(K,J,L){return this.wbbcode._expandFormatting(L,'<span style="color: '+J+'">',"</span>")}).bind(this));I=I.replace(/\[font='?([a-z,\- ]*?)'?\]([\s\S]*?)\[\/font\]/gi,(function(K,J,L){return this.wbbcode._expandFormatting(L,'<span style="font-family: '+J+'">',"</span>")}).bind(this));I=I.replace(/\[align=(left|right|center|justify)\]([\s\S]*?)\[\/align\]\n?/gi,(function(J,L,K){return this.wbbcode._expandFormatting(K,'<div style="text-align: '+L+'">',"</div>")}).bind(this));var s=I.indexOf("[list");if(s>0){var h=I.substr(0,s);h=h.replace(/\[\*\]/g,"");I=h+I.substr(s)}var x=I.lastIndexOf("[/list]");if(x===-1){I=I.replace(/\[\*\]/g,"");I=I.replace(/\[list[^\]]*\]/g,"")}else{var h=I.substr(x+7);h=h.replace(/\[\*\]/g,"");I=I.substr(0,x+7)+h}I=I.replace(/\[\*\]([\s\S]*?)(?=\[\*\]|\[\/list\])/gi,function(J,K){return"<li>"+$.trim(K)+"</li>"});I=I.replace(/\n*(\[list\]<\/li>)/g,"$1");I=I.replace(/\[list\]/gi,"<ul>");I=I.replace(/\[list=1\]/gi,'<ul style="list-style-type: decimal">');I=I.replace(/\[list=a\]/gi,'<ul style="list-style-type: lower-latin">');I=I.replace(/\[list=(none|circle|square|disc|decimal|lower-roman|upper-roman|decimal-leading-zero|lower-greek|lower-latin|upper-latin|armenian|georgian)\]/gi,'<ul style="list-style-type: $1">');I=I.replace(/\[\/list\]/gi,"</ul>");I=I.replace(/\[table\]([\S\s]*?)\[\/table\]/gi,function(J,K){return"[table]"+$.trim(K)+"[/table]"});I=I.replace(/\[table\]\n*/gi,'<table border="1" cellspacing="1" cellpadding="1" style="width: 500px;">');I=I.replace(/\[\/table\](\n*)?/gi,function(J,K){if(K){if(K.match(/\n/g).length>2){K=K.replace(/^\n/,"")}return"</table>"+K}return"</table>"});I=I.replace(/\[tr\]\n*/gi,"<tr>");I=I.replace(/\[\/tr\]\n*/gi,"</tr>");I=I.replace(/\[td\]\n*/gi,"<td>");I=I.replace(/\[\/td\]\n*/gi,"</td>");I=I.replace(/<td>([\S\s]*?)<\/td>/gi,function(J,L){var K=$.trim(L);if(!K.length){K="​"}return"<td>"+K+"</td>"});var d=this.wutil.getOption("woltlab.attachmentUrl");var H=this.wutil.getOption("woltlab.attachmentThumbnailUrl");if(d){var F=this.wbbcode._getImageAttachments();I=I.replace(/\[attach=(\d+)\]\[\/attach\]/g,function(J,K,L){K=parseInt(K);if(F[K]!==undefined){return'<img src="'+H.replace(/987654321/,K)+'" class="redactorEmbeddedAttachment redactorDisableResize" data-attachment-id="'+K+'" />'}return J});I=I.replace(/\[attach=(\d+),(left|right|none)\]\[\/attach\]/g,function(K,L,M){L=parseInt(L);if(F[L]!==undefined){var J="";if(M==="left"||M==="right"){J="float: "+M+";";if(M==="left"){J+="margin: 0 15px 7px 0"}else{J+="margin: 0 0 7px 15px"}}J=' style="'+J+'"';return'<img src="'+H.replace(/987654321/,L)+'" class="redactorEmbeddedAttachment redactorDisableResize" data-attachment-id="'+L+'"'+J+" />"}return K});I=I.replace(/\[attach=(\d+),(left|right|none),(\d+)\]\[\/attach\]/g,function(K,M,N,L){M=parseInt(M);if(F[M]!==undefined){var J="width: "+L+"px; max-height: "+F[M].height+"px; max-width: "+F[M].width+"px;";if(N==="left"||N==="right"){J+="float: "+N+";";if(N==="left"){J+="margin: 0 15px 7px 0"}else{J+="margin: 0 0 7px 15px"}}J=' style="'+J+'"';return'<img src="'+d.replace(/987654321/,M)+'" class="redactorEmbeddedAttachment" data-attachment-id="'+M+'"'+J+" />"}return K})}for(var w in __REDACTOR_SMILIES){var k=w.replace(/</g,"<").replace(/>/g,">");var j=new RegExp("(\\s|>|^)"+WCF.String.escapeRegExp(k)+"(?=\\s|<|$)","gi");I=I.replace(j,'$1<img src="'+__REDACTOR_SMILIES[w]+'" class="smiley" alt="'+k+'" />')}I=I.replace(/(javascript):/gi,"$1<span></span>:");I=I.replace(/(\r|\r\n)/g,"\n");var B=[];var E=[];var g=I.split(/(\[(?:\/quote|quote|quote='[^']*?'(?:,'[^']*?')?|quote="[^"]*?"(?:,"[^"]*?")?)\])/i);var e=WCF.getUUID();while(true){var p=false;for(var b=0;b<g.length;b++){var D=g[b];if(D.toLowerCase()==="[/quote]"){p=true;var f="";var n=g.slice(0,b);var c=false;while(n.length){var C=n.pop();f=C+f;if(C.match(/^\[quote/i)){D=f+D;var m=WCF.getUUID();B.push({hashCode:m,content:D.replace(/\$/g,"$$$$")});E.push(m);D="@@"+m+"@@";c=true;break}}if(!c){n=g.slice(0,b);D=e}g=n.concat(D,g.slice(b+1));break}}if(!p){break}}I=g.join("");I=I.replace(new RegExp(e,"g"),"[/quote]");I=I.replace(/\n*$/,"");var y=[];I=I.replace(/(<li>[\s\S]*?<\/li>)/g,function(J){J=$.trim(J).replace(/\n/,"<br>");var K=WCF.getUUID();y.push({key:K,content:J});return K});var h=I.split("\n");I="";for(var b=0,l=h.length;b<l;b++){var t=$.trim(h[b]);if(t.match(/^<([a-z]+)/)||t.match(/<\/([a-z]+)>$/)){if(this.reIsBlock.test(RegExp.$1.toUpperCase())||RegExp.$1.toUpperCase()==="TABLE"){if(t.match(/^<([a-z]+).*<\/\1>/)){I+=t}else{I+=t+"<br />"}}else{I+="<p>"+t+"</p>"}}else{if(!t){t="<br>"}else{if(t.match(/^@@([0-9\-]+)@@$/)){if(WCF.inArray(RegExp.$1,E)){I+=t;continue}}}I+="<p>"+t+"</p>"}}I=I.replace(/<td>([\s\S]+?)<\/td>/g,function(J,K){return"<td>"+K.replace(/<p>/g,"").replace(/<\/p>/g,"<br>").replace(/<br>$/,"")+"</td>"});if(y.length){for(var b=y.length-1;b>=0;b--){I=I.replace(y[b].key,y[b].content)}}if(B.length){var G=function(J){return J.replace(/^['"]/,"").replace(/['"]$/,"")};var r=this;var q=function(J){return J.replace(/\[quote(=['"].+['"])?\]([\S\s]*)\[\/quote\]/gi,function(M,L,O){var S="";var N="";if(L){L=L.substr(1);L=L.split(",");switch(L.length){case 1:S=L[0];break;case 2:S=L[0];N=L[1];break}S=WCF.String.escapeHTML(G($.trim(S)));N=WCF.String.escapeHTML(G($.trim(N)))}var T='<blockquote class="quoteBox container containerPadding quoteBoxSimple" cite="'+N+'" data-author="'+S+'"><header contenteditable="false"><h3>'+r.wbbcode._buildQuoteHeader(S,N)+'</h3><a class="redactorQuoteEdit"></a></header>';O=$.trim(O);var K="";if(O.length){var R=O.split("\n");for(var Q=0;Q<R.length;Q++){var P=R[Q];if(P.length===0){P=r.opts.invisibleSpace}else{if(P.match(/^@@([0-9\-]+)@@$/)){if(WCF.inArray(RegExp.$1,E)){K+=P;continue}}}K+="<div>"+P+"</div>"}}else{K="<div>"+r.opts.invisibleSpace+"</div>"}T+=K;T+="</blockquote>";return T})};for(var b=B.length-1;b>=0;b--){var v=B[b];var z=new RegExp("@@"+v.hashCode+"@@","g");I=I.replace(z,q(v.content))}}I=I.replace(/<(?:div|p)><(blockquote|div)/g,"<$1");I=I.replace(/<\/(blockquote|div)><\/(?:div|p)>/g,"</$1>");if(u.length){for(var b=u.length-1;b>=0;b--){var A=u[b];var z=new RegExp("@@"+A.key+"@@","g");var i=A.value;i=i.replace(/^\[tt\]([\s\S]+)\[\/tt\]/,(function(J,L){var K=L.split("\n");L="";for(var O=0,N=K.length;O<N;O++){var M=K[O];if(M.length){if(L.length){L+="</p><p>"}L+="[tt]"+M+"[/tt]"}else{if(O===0||(O+1)===N){continue}if(L.match(/\[\/tt\]$/)){L+="</p><p>"+this.opts.invisibleSpace+""}else{L+="</p><p><br>"}}}return L}).bind(this));i=i.replace(/^\[code([^\]]*)\]([\S\s]*)\[\/code\]$/,(function(M,U,O){var N="plain";var S=0;var Q="";if(U){U=U.substring(1);U=U.split(",");var P=function(W){return W.match(/^\d+$/)};var L=function(W){return(W.indexOf(".")!==-1)||(W.match(/^(["']).*\1$/))};var K=function(W){return(__REDACTOR_CODE_HIGHLIGHTERS[W]!==undefined)};var J=function(W){return W.replace(/^(["'])(.*)\1$/,"$2")};switch(U.length){case 1:if(P(U[0])){S=(parseInt(U[0])>1)?U[0]:0}else{if(L(U[0])){Q=J(U[0])}else{if(K(U[0])){N=U[0]}}}break;case 2:if(P(U[0])){S=(parseInt(U[0])>1)?U[0]:0;if(K(U[1])){N=U[1]}else{if(L(U[1])){Q=J(U[1])}}}else{if(K(U[0])){N=U[0]}if(L(U[1])){Q=J(U[1])}}break;case 3:if(K(U[0])){N=U[0]}if(P(U[1])){S=U[1]}if(L(U[2])){Q=J(U[2])}break}}O=O.replace(/^\n+/,"").replace(/\n+$/,"").split(/\n/);var V="";for(var T=0;T<O.length;T++){var R=O[T];if(!R.length){R=this.opts.invisibleSpace}V+="<li>"+R+"</li>"}return'<div class="codeBox container" contenteditable="false" data-highlighter="'+N+'"'+(Q?' data-filename="'+WCF.String.escapeHTML(Q)+'"':"")+"><div><div><h3>"+__REDACTOR_CODE_HIGHLIGHTERS[N]+(Q?": "+WCF.String.escapeHTML(Q):"")+'</h3></div><ol start="'+(S>1?S:1)+'">'+V+"</ol></div></div>"}).bind(this));I=I.replace(z,i)}}WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","afterConvertToHtml",{data:I});return I},_expandFormatting:function(d,b,e){if(!d.length){return b+this.opts.invisibleSpace+e}var c=d.split("\n");d="";for(var g=0,f=c.length;g<f;g++){if(d.length){d+="\n"}d+=b+c[g]+e}return d},_pasteBeforeCallback:function(b){var c={1:24,2:22,3:18,4:14,5:12,6:10};b=b.replace(/<h([1-6])([^>]*)>/g,function(g,j,i){if(i&&i.match(/style="([^"]+?)"/)){if(/font-size: ?(\d+|\d+\.\d+)(px|pt|em|rem|%)/.test(RegExp.$1)){var d=$('<div style="width: '+RegExp.$1+RegExp.$2+'; position: absolute;" />').appendTo(document.body);var f=parseInt(d[0].clientWidth);d.remove();var e=-1;var h=false;$.each(c,function(m,l){if(e===-1){e=m}else{if(Math.abs(f-l)<Math.abs(f-c[e])){e=m}}if(f==l){h=true}});if(!h){e=(e<6)?parseInt(e)+1:e}j=e}}return"[size="+c[j]+"]"});b=b.replace(/<\/h[1-6]>/g,"[/size]");b=b.replace(/<(article|header)[^>]+>/g,"<div>");b=b.replace(/<\/(article|header)>/g,"</div>");b=b.replace(/<(div|p)([^>]+)?><(div|p)([^>]+)?>/g,"<p>");b=b.replace(/<\/(div|p)><\/(div|p)>/g,"</p>");b=b.replace(/<\/?wbr[^>]*>/g,"");WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","beforePaste",{html:b});return b},_pasteCallback:function(b){b=b.replace(/\[size=(\d+)\]/g,'<p><span style="font-size: $1pt">');b=b.replace(/\[\/size\]/g,"</span></p>");b=b.replace(/style="([^"]+)"/,function(c,e){var d=e.split(";");var g=[];for(var i=0,f=d.length;i<f;i++){var h=d[i];if(!h.match(/^\s*background-color/)){g.push(h)}}return'style="'+g.join(";")+'"'});WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","afterPaste",{html:b});return b;b=b.replace(/<img([^>]+)>/g,function(c,d){c=c.replace(/data-mozilla-paste-image="0"/,'data-mozilla-paste-image="0" style="display:none"');return c});return b},insertAttachment:function(f,d){f=parseInt(f);var b=this.wutil.getOption("woltlab.attachment"+(!d?"Thumbnail":"")+"Url");var e=this.wbbcode._getImageAttachments();if(b&&e[f]!==undefined){var c="";if(d){c=' style="width: '+e[f].width+"px; max-height: "+e[f].height+"px; max-width: "+e[f].width+'px;"'}this.wutil.insertDynamic('<img src="'+b.replace(/987654321/,f)+'" class="redactorEmbeddedAttachment'+(!d?" redactorDisableResize":"")+'" data-attachment-id="'+f+'"'+c+" />","[attach="+f+(d?",none,"+e[f].width:"")+"][/attach]")}else{this.wutil.insertDynamic("[attach="+f+"][/attach]")}},removeAttachment:function(b){if(!this.opts.visual){return}this.$editor.find("img.redactorEmbeddedAttachment").each(function(c,e){var d=$(e);if(d.data("attachmentID")==b){d.remove()}})},_getImageAttachments:function(){var c=this.wutil.getOption("woltlab.attachmentImages")||[];if(c.length){delete this.opts.attachmentImages;return c}var b={imageAttachments:{}};WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","getImageAttachments_"+this.$textarea.wcfIdentify(),b);return b.imageAttachments},_keydownCallback:function(u){switch(u.event.which){case $.ui.keyCode.BACKSPACE:case $.ui.keyCode.DELETE:case $.ui.keyCode.DOWN:case $.ui.keyCode.ENTER:case $.ui.keyCode.UP:case 83:break;default:return;break}this.selection.get();var m=this.selection.getCurrent();var l=this.selection.getParent();l=(l)?$(l):l;var i=(l)?l.closest("blockquote.quoteBox",this.$editor.get()[0]):{length:0};switch(u.event.which){case $.ui.keyCode.BACKSPACE:if(this.wutil.isCaret()){var g=false;if(i.length){var j=true;for(var b=0;b<i[0].children.length;b++){var t=i[0].children[b];if(t.tagName==="DIV"){if(t.textContent.replace(/\u200b/,"").length){j=false;break}}}if(j){g=true}}else{var d=(this.selection.implicitRange===null)?this.range:this.selection.implicitRange;var n=d.startContainer;if(n.nodeType===Node.TEXT_NODE){if(d.startOffset===0||(d.startOffset===1&&n.textContent==="\u200b")){if(!n.previousSibling){n=n.parentElement}}}if(n.nodeType===Node.ELEMENT_NODE){var h=n.previousSibling;if(h&&h.nodeType===Node.ELEMENT_NODE&&h.tagName==="BLOCKQUOTE"){i=h;g=true}}}if(g){var q=window.getSelection();if(q.rangeCount){q.removeAllRanges()}var o=document.createRange();o.selectNode(i[0]||i);q.addRange(o);u.cancel=true}}break;case $.ui.keyCode.DELETE:if(this.wutil.isCaret()&&this.wutil.isEndOfElement(m)){var s=m.nextElementSibling;if(s&&s.tagName==="BLOCKQUOTE"){var q=window.getSelection();if(q.rangeCount){q.removeAllRanges()}var o=document.createRange();o.selectNode(s);q.addRange(o);u.cancel=true}}break;case $.ui.keyCode.DOWN:var e=$(m);if(e.next("blockquote").length){this.caret.setStart(e.next().children("div:first"));u.cancel=true}else{if(l){if(l.next("blockquote").length){this.caret.setStart(l.next().children("div:first"));u.cancel=true}else{if(i.length){var p=e.closest("div",i[0]);if(!p.next().length){if(i.next().length){this.caret.setStart(i.next())}else{this.wutil.setCaretAfter(i)}u.cancel=true}}}}}break;case $.ui.keyCode.ENTER:if(i.length){this.keydown.blockquote=false;this.keydown.enterWithinBlockquote=true}break;case $.ui.keyCode.UP:if(!l||!i.length){return}var p=$(m).closest("div",i[0]);var r=p.prev();if(r[0].tagName==="DIV"){return}else{if(r[0].tagName==="BLOCKQUOTE"){return}}var k=i.prev();if(k.length===0){this.wutil.setCaretBefore(i)}else{if(k[0].tagName==="BLOCKQUOTE"){this.caret.sendEnd(k.children("div:last"))}else{if($.trim(k.html())==""){k.html(this.opts.invisibleSpace)}this.caret.setEnd(k)}}u.cancel=true;break;case 83:if($.browser.mobile){return}var c=false;if(navigator.platform.match(/^Mac/)){if(u.event.ctrlKey&&u.event.altKey){c=true}}else{if(u.event.altKey){c=true}}if(c){var f={cancel:false};WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","submitEditor_"+this.$textarea.wcfIdentify(),f);if(f.cancel){u.cancel=true}}break}},_keyupCallback:function(d){switch(d.event.which){case $.ui.keyCode.BACKSPACE:case $.ui.keyCode.DELETE:this.$editor.find("blockquote").each(function(h,j){var i=$(j);if(!i.children("header").length){i.remove()}});break;case $.ui.keyCode.ENTER:for(var g=0,f=this.$editor[0].children.length;g<f;g++){var c=this.$editor[0].children[g];if(c.nodeType!==Node.ELEMENT_NODE||c.tagName!=="P"){continue}if(c.textContent.length>0){continue}if(c.children.length>1||c.children[0].tagName==="BR"){continue}c=c.children[0];while(c.children.length===1){c=c.children[0]}if(c.children.length===0&&c.tagName==="BR"){var e=c.parentNode;var b=document.createTextNode("\u200b");e.appendChild(b);e.removeChild(c)}}break}},observeQuotes:function(){this.$editor.find(".redactorQuoteEdit").off("click.wbbcode").on("click.wbbcode",$.proxy(this.wbbcode._observeQuotesClick,this))},_observeQuotesClick:function(e){var c=$(e.currentTarget).closest("header");var d=$('<span class="redactor-link-tooltip" />');$('<a href="#">'+WCF.Language.get("wcf.bbcode.quote.edit")+"</a>").click($.proxy(function(f){f.preventDefault();this.wbbcode._openQuoteEditOverlay($(e.currentTarget).closest("blockquote.quoteBox"),false);$(".redactor-link-tooltip").remove()},this)).appendTo(d);var b=c.offset();d.css({left:b.left+"px",top:(b.top+20)+"px"});$(".redactor-link-tooltip").remove();d.appendTo(document.body);this.selection.remove()},observeCodeListings:function(){this.$editor.find(".codeBox").each((function(b,e){var c=$(e);var d=c.find(".redactorEditCodeBox");if(!d.length){d=$('<div class="redactorEditCodeBox"><div>'+WCF.Language.get("wcf.bbcode.code.edit")+"</div></div>").insertAfter(c.find("> div > div > h3"))}d.off("click.wbbcode").on("click.wbbcode",(function(){this.wbbcode._handleInsertCode(c,false)}).bind(this))}).bind(this))},_openQuoteEditOverlay:function(b,d){this.modal.load("quote",WCF.Language.get("wcf.bbcode.quote."+(d?"insert":"edit")),400);var c=this.modal.createActionButton(this.lang.get("save"));if(d){this.selection.save();c.click($.proxy(function(){var g=$("#redactorQuoteAuthor").val();var f=WCF.String.escapeHTML($("#redactorQuoteLink").val());this.selection.restore();a=true;var e=this.selection.getHtml();if(this.utils.isEmpty(e)){e=""}var h=this.wbbcode.insertQuoteBBCode(g,f,e);if(h!==null){if(!e.length){if($.browser.mozilla){h.children("br[type=_moz]").replaceWith("<div>"+this.opts.invisibleSpace+"</div>")}this.caret.setStart(h.children("div")[0])}}this.modal.close()},this))}else{$("#redactorQuoteAuthor").val(b.data("author"));$("#redactorQuoteLink").val(WCF.String.unescapeHTML(b.attr("cite")));c.click($.proxy(function(){var e=$("#redactorQuoteAuthor").val();b.data("author",e);b.attr("data-author",e);b.prop("cite",WCF.String.escapeHTML($("#redactorQuoteLink").val()));this.wbbcode._updateQuoteHeader(b);this.modal.close()},this))}this.modal.show()},_updateQuoteHeader:function(c){var d=c.data("author");var b=c.attr("cite");if(b){b=WCF.String.escapeHTML(b)}c.find("> div > header > h3").empty().append(this.wbbcode._buildQuoteHeader(d,b))},insertQuoteBBCode:function(f,l,h,i){var k="[quote]";var c="[/quote]";if(f){if(l){k="[quote='"+f+"','"+l+"']"}else{k="[quote='"+f+"']"}}var p=null;if(this.wutil.inWysiwygMode()){var j=(i)?this.wbbcode.convertToHtml(i):h;var o=WCF.getUUID();var d=this.wbbcode.convertToHtml(k+o+c);d=d.replace(o,j.replace(/^<p>/,"").replace(/<\/p>$/,""));d=d.replace(/^<p>/,"").replace(/<\/p>$/,"");d=d.replace(/<blockquote/,'<blockquote id="'+o+'"');this.wutil.restoreSelection();var g=window.getSelection().getRangeAt(0);var b=g.startContainer;while(b){var e=b.parentNode;if(e===this.$editor[0]){break}b=e}if(b&&b.parentNode===this.$editor[0]){if(b.innerHTML.length){this.wutil.setCaretAfter(b)}}this.insert.html(d,false);p=this.$editor.find("#"+o);if(p.length){var n=p.find("> div");if(n.length==1){if(n[0].innerHTML===""){n[0].innerHTML=this.opts.invisibleSpace}}else{if($.browser.mozilla){var m=p.find("> div > br[type=_moz]");if(m.length){$("<div>"+this.opts.invisibleSpace+"</div>").insertBefore(m);m.remove()}}}p.removeAttr("id");this.wutil.setCaretAfter(p[0])}this.wbbcode.observeQuotes();this.wbbcode.fixBlockLevelElements();this.$toolbar.find("a.re-__wcf_quote").removeClass("redactor-button-disabled")}else{this.wutil.insertAtCaret(k+i+c)}this.wutil.saveSelection();return p},_buildQuoteHeader:function(c,d){var b="";if(!c&&d){c=d;d=""}if(c){if(d){b+='<a href="'+d+'" tabindex="-1">'}b+=WCF.Language.get("wcf.bbcode.quote.title.javascript",{quoteAuthor:WCF.String.unescapeHTML(c)});if(d){b+="</a>"}}else{b="<small>"+WCF.Language.get("wcf.bbcode.quote.title.clickToSet")+"</small>"}return b},_handleInsertQuote:function(){this.wbbcode._openQuoteEditOverlay(null,true)},_handleInsertCode:function(d,f){this.modal.load("code",WCF.Language.get("wcf.bbcode.code."+(f?"insert":"edit")),400);var b=this.modal.createActionButton(this.lang.get("save")).addClass("buttonPrimary");if(f){this.selection.get();var c=this.selection.getText();this.selection.save();this.modal.show();var j=$("#redactorCodeBox").focus();j.val(c);b.click($.proxy(function(){var q=$("#redactorCodeBox");var n=$("#redactorCodeFilename");var s=$("#redactorCodeHighlighter");var t=$("#redactorCodeLineNumber");var p=q.val().replace(/^\n+/,"").replace(/\n+$/,"");if($.trim(p).length===0){if(!q.next("small.innerError").length){$('<small class="innerError">'+WCF.Language.get("wcf.global.form.error.empty")+"</small>").insertAfter(q)}return}var o=$.trim(n.val().replace(/['"]/g,""));var r="[code="+s.val()+","+t.val()+(o.length?",'"+o+"'":"")+"]";if(r.match(/\[code=([^,]+),(\d+)\]/)){r="[code="+RegExp.$2+","+RegExp.$1+"]"}r+=p;r+="[/code]";this.wutil.adjustSelectionForBlockElement();this.wutil.saveSelection();var m=this.wbbcode.convertToHtml(r);this.buffer.set();this.insert.html(m,false);var q=this.$editor.find(".codeBox:not(.jsRedactorCodeBox)");this.wbbcode.observeCodeListings();this.wbbcode.fixBlockLevelElements();q.attr("contenteditable","false");this.wutil.setCaretAfter(q[0]);this.modal.close()},this))}else{var h=this.modal.createActionButton(WCF.Language.get("wcf.global.button.delete"));h.click((function(){this.buffer.set();d.remove();this.modal.close()}).bind(this));this.modal.show();var j=$("#redactorCodeBox").focus();var i=$("#redactorCodeFilename");var g=$("#redactorCodeHighlighter");var k=$("#redactorCodeLineNumber");g.val(d.data("highlighter"));i.val(d.data("filename")||"");var e=d.find("> div > ol");k.val(parseInt(e.prop("start")));var l="";e.children("li").each(function(m,n){l+=$(n).text()+"\n"});j.val(l.replace(/^\n+/,"").replace(/\n+$/,""));b.click($.proxy(function(){var n=j.val().replace(/^\n+/,"").replace(/\n+$/,"");if($.trim(n).length===0){if(!j.next("small.innerError").length){$('<small class="innerError">'+WCF.Language.get("wcf.global.form.error.empty")+"</small>").insertAfter(j)}return}var r=g.val();d.data("highlighter",r);d.attr("data-highlighter",r);var o=__REDACTOR_CODE_HIGHLIGHTERS[r];var m=$.trim(i.val().replace(/['"]/g,""));if(m){o+=": "+WCF.String.escapeHTML(m);d.data("filename",m);d.attr("data-filename",m)}else{d.removeAttr("data-filename");d.removeData("filename")}d.data("highlighter",g.val());d.find("> div > div > h3").html(o);var p=d.find("> div > ol").empty();var s=parseInt(k.val());p.prop("start",(s>1?s:1));n=n.split("\n");var q="";for(var t=0;t<n.length;t++){q+="<li>"+WCF.String.escapeHTML(n[t])+"</li>"}p.append($(q));this.modal.close()},this))}},fixBlockLevelElements:function(){return;var b=(function(e,d){var c="P";if(e.parentElement.tagName==="DIV"&&e.parentElement!==this.$editor[0]){e=e.parentElement;c="DIV"}if(e[d]===null||e[d].tagName!==c){$("<"+c+">"+this.opts.invisibleSpace+"</"+c+">")[(d==="previousElementSibling"?"insertBefore":"insertAfter")](e)}else{if(e.previousElementSibling.tagName===c){if(!e[d].innerHTML.length||e[d].innerHTML.toLowerCase()==="<p></p>"){$(e[d]).html(this.opts.invisibleSpace)}}}}).bind(this);this.$editor.find("blockquote, .codeBox").each((function(c,d){b(d,"previousElementSibling");b(d,"nextElementSibling")}).bind(this))},fixFormatting:function(d){var b=function(f){f.style.removeProperty("text-align");for(var g=0;g<f.children.length;g++){b(f.children[g])}};for(var e=0;e<this.alignment.blocks.length;e++){var c=this.alignment.blocks[e];switch(c.tagName){case"BLOCKQUOTE":c.style.removeProperty("text-align");b(c.children[0]);break;case"DIV":if(/\bcodeBox\b/.test(c.className)){b(c)}break}}}}};
// wbutton.js
if(!RedactorPlugins){var RedactorPlugins={}}RedactorPlugins.wbutton=function(){return{_bbcodes:{},init:function(){this._bbcodes={};for(var i=0,f=__REDACTOR_BUTTONS.length;i<f;i++){this.wbutton._addBBCodeButton(__REDACTOR_BUTTONS[i])}var d={html:"fa-square-o",bold:"fa-bold",italic:"fa-italic",underline:"fa-underline",deleted:"fa-strikethrough",subscript:"fa-subscript",superscript:"fa-superscript",orderedlist:"fa-list-ol",unorderedlist:"fa-list-ul",outdent:"fa-outdent",indent:"fa-indent",link:"fa-link",alignment:"fa-align-left",table:"fa-table"};var e={fontcolor:WCF.Language.get("wcf.bbcode.button.fontColor"),fontfamily:WCF.Language.get("wcf.bbcode.button.fontFamily"),fontsize:WCF.Language.get("wcf.bbcode.button.fontSize"),image:WCF.Language.get("wcf.bbcode.button.image"),subscript:WCF.Language.get("wcf.bbcode.button.subscript"),superscript:WCF.Language.get("wcf.bbcode.button.superscript")};var c=this.wutil.getOption("buttons");var g="";for(var i=0,f=c.length;i<f;i++){var a=c[i];if(a=="separator"){this.button.get(g).parent().addClass("separator");continue}var h=this.button.get(a);if(h.length){if(d[a]){this.button.setAwesome(a,d[a])}if(a==="table"&&g){h.parent().insertAfter(this.button.get(g).parent())}}else{this.wbutton._addCoreButton(a,(e[a]?e[a]:null),(d[a]?d[a]:null),g)}g=a}this.button.addCallback(this.button.get("image"),$.proxy(this.wbutton.insertImage,this));var b=this.button.addAfter("html","undo",WCF.Language.get("wcf.bbcode.button.undo"));var j=this.button.addAfter("undo","redo",WCF.Language.get("wcf.bbcode.button.redo"));this.button.addCallback(b,this.buffer.undo);this.button.addCallback(j,this.buffer.redo);j.parent().addClass("separator")},_addCoreButton:function(b,c,a,d){var f={title:(c===null?b:c)};if(b==="subscript"||b==="superscript"){f.command=b}var e=this.button.build(b,f);$("<li />").append(e).insertAfter(this.button.get(d).parent());if(a!==null){this.button.setAwesome(b,a)}},_addBBCodeButton:function(b){var c="__wcf_"+b.name;var a=this.button.add(c,b.label);this.button.addCallback(a,this.wbutton._insertBBCode);this._bbcodes[c]={name:b.name,voidElement:(b.voidElement===true)};if(b.icon.match(/^fa\-[a-z\-]+$/)){this.button.setAwesome(c,b.icon)}else{a.css("background-image","url("+__REDACTOR_ICON_PATH+b.icon+")")}},_insertBBCode:function(a){var d=this._bbcodes[a].name;var b={buttonName:a,cancel:false,redactor:this};WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","insertBBCode_"+d+"_"+this.$textarea.wcfIdentify(),b);if(b.cancel===false){var c=this.selection.getHtml();c=c.replace(/<p>@@@wcf_empty_line@@@<\/p>/g,"<p><br></p>");if(false&&d==="tt"){var e=(this.selection.getParent())?$(this.selection.getParent()):null;if(e&&e.closest("inline.inlineCode",this.$editor.get()[0]).length){this.inline.toggleClass("inlineCode")}else{this.inline.toggleClass("inlineCode")}}else{this.buffer.set();if(this.utils.browser("mozilla")&&!c.length){var f=getSelection().getRangeAt(0).startContainer;if(f.nodeType===Node.ELEMENT_NODE&&f.tagName==="P"&&f.innerHTML==="<br>"){f.removeChild(f.children[0])}}if(this._bbcodes[a].voidElement){this.insert.html(c+this.selection.getMarkerAsHtml()+"["+d+"]",false)}else{this.insert.html("["+d+"]"+c+this.selection.getMarkerAsHtml()+"[/"+d+"]",false)}this.selection.restore()}}},insertImage:function(){this.image.show()},_insertImage:function(){var d=$("#redactor-image-link-source");var b=d.val().trim();if(b.length){this.buffer.set();var c=$("#redactor-image-align").val();var a="";if(c==="left"||c==="right"){a=' style="float: '+c+'"'}this.insert.html('<img src="'+b+'"'+a+">",false);this.modal.close();this.observe.images()}else{if(!d.next("small.innerError")){$('<small class="innerError">'+WCF.Language.get("wcf.global.form.error.empty")+"</small>").insertAfter(d)}}}}};
// wfontcolor.js