// wbbcode.js
if(!RedactorPlugins){var RedactorPlugins={}}RedactorPlugins.wbbcode=function(){return{init:function(){var c=this.$textarea.wcfIdentify();this.opts.initCallback=$.proxy(function(){var e=$.trim(this.wutil.getOption("woltlab.originalValue"));if(e.length){this.wutil.replaceText(e)}delete this.opts.woltlab.originalValue;$(document).trigger("resize")},this);this.opts.pasteBeforeCallback=$.proxy(this.wbbcode._pasteBeforeCallback,this);this.opts.pasteCallback=$.proxy(this.wbbcode._pasteCallback,this);var b=this.clean.onSync;this.clean.onSync=function(e){e=e.replace(/<p><br([^>]+)?><\/p>/g,"<p>@@@wcf_empty_line@@@</p>");return b.call(self,e)};if(this.wutil.getOption("woltlab.autosaveOnce")){this.wutil._saveTextToStorage();delete this.opts.woltlab.autosaveOnce}var a=this.button.get("table");if(a.length){var d=a.data("dropdown");d.find(".redactor-dropdown-add_head").parent().remove();d.find(".redactor-dropdown-delete_head").parent().remove();$('<li class="dropdownDivider" />').insertBefore(d.find(".redactor-dropdown-delete_table").parent());a.click($.proxy(this.wbbcode._tableButtonClick,this))}WCF.System.Event.addListener("com.woltlab.wcf.redactor","insertBBCode_quote_"+c,$.proxy(function(e){e.cancel=true;this.wbbcode._handleInsertQuote()},this));WCF.System.Event.addListener("com.woltlab.wcf.redactor","keydown_"+c,$.proxy(this.wbbcode._keydownCallback,this));WCF.System.Event.addListener("com.woltlab.wcf.redactor","keyup_"+c,$.proxy(this.wbbcode._keyupCallback,this));this.code.sync=function(){};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")}else{this.$textarea.val(this.wbbcode.convertToHtml(this.$textarea.val()));this.code.showVisual();this.wbbcode._observeQuotes();this.button.get("html").children("i").removeClass("fa-square").addClass("fa-square-o")}}).bind(this);this.wutil.setOption("clickCallback",(function(e){if(e.target===this.$editor[0]){if(this.$editor[0].lastElementChild&&this.$editor[0].lastElementChild.tagName==="BLOCKQUOTE"){this.wutil.setCaretAfter($(this.$editor[0].lastElementChild))}}}).bind(this))},_tableButtonClick:function(b){var c=$(b.currentTarget);if(!c.hasClass("dropact")){return}var a=this.selection.getBlock()||this.selection.getCurrent();var d=c.data("dropdown");d.children("li").show();var e=d.find("> li > .redactor-dropdown-insert_table").parent();if(a.tagName=="TD"){e.hide()}else{e.nextAll().hide()}},insertSmiley:function(a,b,c){if(c){this.wbbcode.registerSmiley(a,b)}if(this.opts.visual){this.insert.html(' <img src="'+b+'" class="smiley" alt="'+a+'" /> ',false)}else{this.wutil.insertAtCaret(" "+a+" ")}},registerSmiley:function(a,b){if(__REDACTOR_SMILIES[a]){return false}__REDACTOR_SMILIES[a]=b;return true},convertFromHtml:function(n){WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","beforeConvertFromHtml",{html:n});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");n=n.replace(/\r?\n/g,"");n=n.replace(/<a[^>]*?><\/a>/g,"");n=n.replace(/<p><\/p>/g,"");n=n.replace(/<br( \/)?><\/p>/g,"");var g=n.split(/(<\/?(?:div|p)>)/);var h="";var y="";for(var a=0;a<g.length;a++){var z=g[a];if(z=="<p>"||z=="<div>"){continue}else{if(z=="</p>"||z=="</div>"){y=$.trim(y);if(y!="@@@wcf_empty_line@@@"){y+="\n"}h+=y;y=""}else{if(a==0||a+1==g.length){h+=z}else{y+=z}}}}if(y){h+=y;y=""}n=h;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 class="quoteBox" cite="([^"]+)?" data-author="([^"]+)?">\n?<div[^>]+>\n?<header(?:[^>]*?)>[\s\S]*?<\/header>/gi,function(A,C,B,D){var E;if(B){B=WCF.String.unescapeHTML(B)}if(C){C=WCF.String.unescapeHTML(C)}if(C){E="[quote='"+B+"','"+C+"']"}else{if(B){E="[quote='"+B+"']"}else{E="[quote]"}}return E});n=n.replace(/(?:\n*)<\/blockquote>\n?/gi,"[/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(C,A,B,D){if(B==D){return"[url]"+B+"[/url]"}return"[url='"+B+"']"+D+"[/url]"});n=n.replace(/<(?:b|strong)>/gi,"[b]");n=n.replace(/<\/(?:b|strong)>/gi,"[/b]");n=n.replace(/<(?:i|em)>/gi,"[i]");n=n.replace(/<\/(?:i|em)>/gi,"[/i]");n=n.replace(/<u>/gi,"[u]");n=n.replace(/<\/u>/gi,"[/u]");n=n.replace(/<(?:s(trike)?|del)>/gi,"[s]");n=n.replace(/<\/(?:s(trike)?|del)>/gi,"[/s]");n=n.replace(/<sub>/gi,"[sub]");n=n.replace(/<\/sub>/gi,"[/sub]");n=n.replace(/<sup>/gi,"[sup]");n=n.replace(/<\/sup>/gi,"[/sup]");n=n.replace(/<img [^>]*?alt="([^"]+?)" class="smiley".*?> ?/gi,"$1 ");n=n.replace(/<img [^>]*?class="smiley" alt="([^"]+?)".*?> ?/gi,"$1 ");n=n.replace(/<img [^>]*?class="redactorEmbeddedAttachment" data-attachment-id="(\d+)"( style="float: (left|right)")?>/gi,function(B,C,A,D){if(D){return"[attach="+C+","+D+"][/attach]"}return"[attach="+C+"][/attach]"});n=n.replace(/<img [^>]*?src=(["'])([^"']+?)\1 style="float: (left|right)[^"]*".*?>/gi,"[img='$2',$3][/img]");n=n.replace(/<img [^>]*?src=(["'])([^"']+?)\1.*?>/gi,"[img]$2[/img]");var e=n.split(/(<\/?span[^>]*>)/);var y=[];var q=[];var r="";var c={11:8,13:10,16:12,19:14,24:18,29:22,32:24,48:36};for(var a=0;a<e.length;a++){var i=e[a];if(i=="</span>"){var d=q.pop();var h=d.start+y.pop()+d.end;if(y.length){y[y.length-1]+=h}else{r+=h}}else{if(i.match(/^<span/)){if(i.match(/^<span(?:.*?)style="([^"]+)"(?:[^>]*?)>/)){var l=RegExp.$1;var w;var o;if(l.match(/color: ?rgb\((\d{1,3}), ?(\d{1,3}), ?(\d{1,3})\);?/i)){var v=RegExp.$1;var b=RegExp.$2;var f=RegExp.$3;var t=("0123456789ABCDEF".charAt((v-v%16)/16)+""+"0123456789ABCDEF".charAt(v%16))+""+("0123456789ABCDEF".charAt((b-b%16)/16)+""+"0123456789ABCDEF".charAt(b%16))+""+("0123456789ABCDEF".charAt((f-f%16)/16)+""+"0123456789ABCDEF".charAt(f%16));w="[color=#"+t+"]";o="[/color]"}else{if(l.match(/color: ?(.*?);?/i)){w="[color="+RegExp.$1+"]";o="[/color]"}else{if(l.match(/font-size: ?(\d+)(pt|px);?/i)){if(RegExp.$2=="pt"){w="[size="+RegExp.$1+"]";o="[/size]"}else{if(c[RegExp.$1]){w="[size="+c[RegExp.$1]+"]";o="[/size]"}else{w="";o=""}}}else{if(l.match(/font-family: ?(.*?);?/)){w="[font="+RegExp.$1.replace(/'/g,"")+"]";o="[/font]"}else{w='<span style="'+l+'">';o="</span>"}}}}y[y.length]="";q[y.length]={start:w,end:o}}else{if(i.match(/^<span class="inlineCode">/)){y[y.length]="";q[y.length]={start:"[tt]",end:"[/tt]"}}else{y[y.length]="";q[y.length]={start:"",end:""}}}}else{if(y.length){y[y.length-1]+=i}else{r+=i}}}}n=r;n=n.replace(/<(div|p) style="text-align: ?(left|center|right|justify);? ?">([\s\S]*?)\n/gi,function(B,A,D,C){return"[align="+D+"]"+$.trim(C)+"[/align]"});n=n.replace(/<li>/gi,"[*]");n=n.replace(/<\/li>/gi,"");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(/<table[^>]*>/gi,"[table]\n");n=n.replace(/<\/table>/gi,"[/table]\n");n=n.replace(/<tbody>([\s\S]*?)<\/tbody>/,function(A,B){return $.trim(B)});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(A){var B=A.hashCode();x[B]=A.replace(/\$/g,"$$$$");return"@@"+B+"@@"});WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","convertFromHtml",{html:n});n=n.replace(/<[^(<|>)]+>/g,"");if($.getLength(x)){for(var k in x){var u=new RegExp("@@"+k+"@@","g");data=data.replace(u,x[k])}}n=n.replace(/</g,"<");n=n.replace(/>/g,">");n=n.replace(/&/g,"&");n=n.replace(/%28/g,"(");n=n.replace(/%29/g,")");var s={};for(var a=0,j=__REDACTOR_SOURCE_BBCODES.length;a<j;a++){var p=__REDACTOR_SOURCE_BBCODES[a];var m=new RegExp("\\["+p+"([\\S\\s]+?)\\[\\/"+p+"\\]","gi");n=n.replace(m,function(A){var B=A.hashCode();s[B]=A.replace(/\$/g,"$$$$");return"@@"+B+"@@"})}WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","afterConvertFromHtml",{html:n});if($.getLength(s)){for(var k in s){var u=new RegExp("@@"+k+"@@","g");n=n.replace(u,s[k])}}n=$.trim(n);n+="\n";return n},convertToHtml:function(v){WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","beforeConvertToHtml",{data:v});v=this.wutil.removeZeroWidthSpace(v);v=v.replace(/&/g,"&");v=v.replace(/</g,"<");v=v.replace(/>/g,">");var n={};for(var a=0,g=__REDACTOR_SOURCE_BBCODES.length;a<g;a++){var l=__REDACTOR_SOURCE_BBCODES[a];var i=new RegExp("\\["+l+"([\\S\\s]+?)\\[\\/"+l+"\\]","gi");v=v.replace(i,function(w){var x=w.hashCode();n[x]=w.replace(/\$/g,"$$$$");return"@@"+x+"@@"})}v=v.replace(/\[url\]([^"]+?)\[\/url]/gi,'<a href="$1">$1</a>');v=v.replace(/\[url\='([^'"]+)'](.+?)\[\/url]/gi,'<a href="$1">$2</a>');v=v.replace(/\[url\=([^'"\]]+)](.+?)\[\/url]/gi,'<a href="$1">$2</a>');v=v.replace(/\[email\]([^"]+?)\[\/email]/gi,'<a href="mailto:$1">$1</a>');v=v.replace(/\[email\=([^"\]]+)](.+?)\[\/email]/gi,'<a href="mailto:$1">$2</a>');v=v.replace(/\[b\](.*?)\[\/b]/gi,"<b>$1</b>");v=v.replace(/\[i\](.*?)\[\/i]/gi,"<i>$1</i>");v=v.replace(/\[u\](.*?)\[\/u]/gi,"<u>$1</u>");v=v.replace(/\[s\](.*?)\[\/s]/gi,"<strike>$1</strike>");v=v.replace(/\[sub\](.*?)\[\/sub]/gi,"<sub>$1</sub>");v=v.replace(/\[sup\](.*?)\[\/sup]/gi,"<sup>$1</sup>");v=v.replace(/\[img\]([^"]+?)\[\/img\]/gi,'<img src="$1" />');v=v.replace(/\[img='?([^"]*?)'?,'?(left|right)'?\]\[\/img\]/gi,'<img src="$1" style="float: $2" />');v=v.replace(/\[img='?([^"]*?)'?\]\[\/img\]/gi,'<img src="$1" />');v=v.replace(/\[size=(\d+)\](.*?)\[\/size\]/gi,'<span style="font-size: $1pt">$2</span>');v=v.replace(/\[color=([#a-z0-9]*?)\](.*?)\[\/color\]/gi,'<span style="color: $1">$2</span>');v=v.replace(/\[font='?([a-z,\- ]*?)'?\](.*?)\[\/font\]/gi,'<span style="font-family: $1">$2</span>');v=v.replace(/\[align=(left|right|center|justify)\](.*?)\[\/align\]/gi,'<div style="text-align: $1">$2</div>');v=v.replace(/\[\*\](.*?)(?=\[\*\]|\[\/list\])/gi,"<li>$1</li>");v=v.replace(/\[list\]/gi,"<ul>");v=v.replace(/\[list=1\]/gi,'<ul style="list-style-type: decimal">');v=v.replace(/\[list=a\]/gi,'<ul style="list-style-type: lower-latin">');v=v.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">');v=v.replace(/\[\/list]/gi,"</ul>");v=v.replace(/\[table\]([\S\s]*?)\[\/table\]/gi,function(w,x){return"[table]"+$.trim(x)+"[/table]"});v=v.replace(/\[table\]/gi,'<table border="1" cellspacing="1" cellpadding="1" style="width: 500px;">');v=v.replace(/\[\/table\]/gi,"</table>");v=v.replace(/\[tr\]/gi,"<tr>");v=v.replace(/\[\/tr\]/gi,"</tr>");v=v.replace(/\[td\]/gi,"<td>");v=v.replace(/\[\/td\]/gi,"</td>");v=v.replace(/<td>([\S\s]*?)<\/td>/gi,function(w,y){var x=$.trim(y);if(!x.length){x="​"}return"<td>"+x+"</td>"});var b=this.wutil.getOption("woltlab.attachmentUrl");if(b){var c=this.wbbcode._getImageAttachmentIDs();v=v.replace(/\[attach=(\d+)(,[^\]]*)?\]\[\/attach\]/g,function(x,y,z){y=parseInt(y);if(WCF.inArray(y,c)){var w="";if(z){if(z.match(/^,'?(left|right)'?/)){w=' style="float: '+RegExp.$1+'"'}}return'<img src="'+b.replace(/987654321/,y)+'" class="redactorEmbeddedAttachment" data-attachment-id="'+y+'"'+w+" />"}return x})}for(var p in __REDACTOR_SMILIES){var f=p.replace(/</g,"<").replace(/>/g,">");var e=new RegExp("(\\s|>|^)"+WCF.String.escapeRegExp(f)+"(?=\\s|<|$)","gi");v=v.replace(e,'$1<img src="'+__REDACTOR_SMILIES[p]+'" class="smiley" alt="'+f+'" />')}v=v.replace(/(javascript):/gi,"$1<span></span>:");v=v.replace(/(\r|\r\n)/g,"\n");var r=[];var s=[];for(var a=0;a<5;a++){var u=false;v=v.replace(/\[quote.*?\]((?!\[quote)[\s\S])*?\[\/quote\]/gi,function(w){var x=w.hashCode();r.push({hashCode:x,content:w.replace(/\$/g,"$$$$")});s.push(x.toString());u=true;return"@@"+x+"@@"});if(!u){break}}v=v.replace(/(\[quote.*?\])/gi,"$1\n");v=v.replace(/(\[\/quote\])/gi,"\n$1");v=v.replace(/\n*$/,"");var d=v.split("\n");v="";for(var a=0,g=d.length;a<g;a++){var m=$.trim(d[a]);if(m.match(/^<([a-z]+)/)){if(!this.reIsBlock.test(RegExp.$1.toUpperCase())){m="<p>"+m+"</p>"}v+=m}else{if(!m){m="<br>"}else{if(m.match(/^@@([0-9\-]+)@@$/)){if(WCF.inArray(RegExp.$1,s)){v+=m;continue}}}v+="<p>"+m+"</p>"}}if($.getLength(n)){for(var h in n){var q=new RegExp("@@"+h+"@@","g");v=v.replace(q,n[h])}v=v.replace(/\[tt\](.*?)\[\/tt\]/gi,'<span class="inlineCode">$1</span>')}v=v.replace(/\[code\][\S\s]*?\[\/code\]/,"<pre>$&</pre>");if(r.length){var t=function(w){return w.replace(/^['"]/,"").replace(/['"]$/,"")};var k=this;var j=function(w){return w.replace(/\[quote([^\]]+)?\]([\S\s]*)\[\/quote\]?/gi,function(z,y,B){var F="";var A="";if(y){y=y.substr(1);y=y.split(",");switch(y.length){case 1:F=y[0];break;case 2:F=y[0];A=y[1];break}F=WCF.String.escapeHTML(t($.trim(F)));A=WCF.String.escapeHTML(t($.trim(A)))}var G='<blockquote class="quoteBox" cite="'+A+'" data-author="'+F+'"><div class="container containerPadding"><header contenteditable="false"><h3>'+k.wbbcode._buildQuoteHeader(F,A)+'</h3><a class="redactorQuoteEdit"></a></header>';B=$.trim(B);var x="";if(B.length){var E=B.split("\n");for(var D=0;D<E.length;D++){var C=E[D];if(C.length===0){C=k.opts.invisibleSpace}else{if(C.match(/^@@([0-9\-]+)@@$/)){if(WCF.inArray(RegExp.$1,s)){x+=C;continue}}}x+="<div>"+C+"</div>"}}else{x="<div>wcf"+k.opts.invisibleSpace+"</div>"}G+=x;G+="</div></blockquote>";return G})};for(var a=r.length-1;a>=0;a--){var o=r[a];var q=new RegExp("@@"+o.hashCode+"@@","g");v=v.replace(q,j(o.content))}}WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","afterConvertToHtml",{data:v});return v},_pasteBeforeCallback:function(a){var b={1:24,2:22,3:18,4:14,5:12,6:10};a=a.replace(/<h([1-6])[^>]+>/g,function(c,d){return"[size="+b[d]+"]"});a=a.replace(/<\/h[1-6]>/g,"[/size]");a=a.replace(/<(article|header)[^>]+>/g,"<div>");a=a.replace(/<\/(article|header)>/g,"</div>");a=a.replace(/<(div|p)([^>]+)?><(div|p)([^>]+)?>/g,"<p>");a=a.replace(/<\/(div|p)><\/(div|p)>/g,"</p>");a=a.replace(/<(div|p)><br><\/(div|p)>/g,"<p>");WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","beforePaste",{html:a});return a},_pasteCallback:function(a){a=a.replace(/<p>([\s\S]*?)<\/p>/g,function(b,c){if(c.match(/<br( \/)?>$/)){return b}return"<p>"+c+"</p><p><br></p>"});a=a.replace(/\[size=(\d+)\]/g,'<p><span style="font-size: $1pt">');a=a.replace(/\[\/size\]/g,"</span></p>");WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","afterPaste",{html:a});return a;a=a.replace(/<img([^>]+)>/g,function(b,c){b=b.replace(/data-mozilla-paste-image="0"/,'data-mozilla-paste-image="0" style="display:none"');return b});return a},insertAttachment:function(d){d=parseInt(d);var b=this.getOption("woltlab.attachmentUrl");var c="[attach="+d+"][/attach]";var a=this.wbbcode._getImageAttachmentIDs();if(b&&WCF.inArray(d,a)){this.insertDynamic('<img src="'+b.replace(/987654321/,d)+'" class="redactorEmbeddedAttachment" data-attachment-id="'+d+'" />',c)}else{this.insertDynamic(c)}},_getImageAttachmentIDs:function(){var a=this.wutil.getOption("woltlab.attachmentImageIDs")||[];if(a.length){delete this.opts.wAttachmentImageIDs;return a}var b={imageAttachmentIDs:[]};WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","getImageAttachments_"+this.$textarea.wcfIdentify(),b);return b.imageAttachmentIDs},_keydownCallback:function(f){switch(f.event.which){case $.ui.keyCode.BACKSPACE:case $.ui.keyCode.DELETE:case $.ui.keyCode.DOWN:case $.ui.keyCode.ENTER:case $.ui.keyCode.TAB:case $.ui.keyCode.UP:break;default:return;break}this.selection.get();var a=$(this.selection.getCurrent());var e=this.selection.getParent();e=(e)?$(e):e;var k=(e)?e.closest("blockquote.quoteBox",this.$editor.get()[0]):{length:0};switch(f.event.which){case $.ui.keyCode.BACKSPACE:if(this.wutil.isCaret()){if(k.length){var c=true;k.find("div > div").each(function(){if($(this).text().replace(/\u200B/,"").length){c=false;return false}});if(c){var g=window.getSelection();if(g.rangeCount){g.removeAllRanges()}var h=document.createRange();h.selectNode(k[0]);g.addRange(h);f.cancel=true}}}break;case $.ui.keyCode.DELETE:if(this.wutil.isCaret()){if(this.wutil.isEndOfElement(a[0])&&a.next("blockquote").length){var g=window.getSelection();if(g.rangeCount){g.removeAllRanges()}var h=document.createRange();h.selectNode(a.next()[0]);g.addRange(h);f.cancel=true}}break;case $.ui.keyCode.DOWN:if(a.next("blockquote").length){this.caret.setStart(a.next().find("> div > div:first"));f.cancel=true}else{if(e){if(e.next("blockquote").length){this.caret.setStart(e.next().find("> div > div:first"));f.cancel=true}else{if(k.length){var j=a.closest("div",k[0]);if(!j.next().length){if(k.next().length){this.caret.setStart(k.next())}else{this.wutil.setCaretAfter(k)}f.cancel=true}}}}}break;case $.ui.keyCode.ENTER:if(k.length){this.keydown.blockquote=false;this.keydown.enterWithinBlockquote=true}break;case $.ui.keyCode.TAB:var d=this.selection.getBlock();if(!d||d.tagName!=="LI"){f.cancel=true}break;case $.ui.keyCode.UP:if(!e||!k.length){return}var j=a.closest("div",k[0]);var b=j.prev();if(b[0].tagName==="DIV"){return}else{if(b[0].tagName==="BLOCKQUOTE"){return}}var i=k.prev();if(i.length===0){this.wutil.setCaretBefore(k)}else{if(i[0].tagName==="BLOCKQUOTE"){this.caret.sendEnd(i.find("> div > div:last"))}else{if($.trim(i.html())==""){i.html(this.opts.invisibleSpace)}this.caret.setEnd(i)}}f.cancel=true;break}},_keyupCallback:function(a){if(a.event.which!==$.ui.keyCode.BACKSPACE&&a.event.which!==$.ui.keyCode.DELETE){return}this.$editor.find("blockquote").each(function(b,d){var c=$(d);if(!c.find("> div > header").length){c.remove()}})},_observeQuotes:function(){this.$editor.find(".redactorQuoteEdit:not(.jsRedactorQuoteEdit)").addClass("jsRedactorQuoteEdit").click($.proxy(this.wbbcode._observeQuotesClick,this))},_observeQuotesClick:function(d){var b=$(d.currentTarget).closest("header");var c=$('<span class="redactor-link-tooltip" />');$('<a href="#">'+WCF.Language.get("wcf.bbcode.quote.edit")+"</a>").click($.proxy(function(f){f.preventDefault();this._openQuoteEditOverlay($(d.currentTarget).closest("blockquote.quoteBox"),false);$(".redactor-link-tooltip").remove()},this)).appendTo(c);var a=b.offset();c.css({left:a.left+"px",top:(a.top+20)+"px"});$(".redactor-link-tooltip").remove();c.appendTo(document.body);$('<div contenteditable="true" />').appendTo(document.body).focus().remove()},_openQuoteEditOverlay:function(a,c){this.modal.load("quote",WCF.Language.get("wcf.bbcode.quote."+(c?"insert":"edit")),400);var b=this.modal.createActionButton(this.lang.get("save"));if(c){b.click($.proxy(function(){var e=$("#redactorQuoteAuthor").val();var d=WCF.String.escapeHTML($("#redactorQuoteLink").val());this.wbbcode.insertQuoteBBCode(e,d);this.modal.close()},this))}else{$("#redactorQuoteAuthor").val(a.data("author"));$("#redactorQuoteLink").val(WCF.String.unescapeHTML(a.attr("cite")));b.click($.proxy(function(){var d=$("#redactorQuoteAuthor").val();a.data("author",d);a.attr("data-author",d);a.prop("cite",WCF.String.escapeHTML($("#redactorQuoteLink").val()));this.wbbcode._updateQuoteHeader(a);this.modalClose()},this))}this.modal.show()},_updateQuoteHeader:function(b){var c=b.data("author");var a=b.attr("cite");if(a){a=WCF.String.escapeHTML(a)}b.find("> div > header > h3").empty().append(this.wbbcode._buildQuoteHeader(c,a))},insertQuoteBBCode:function(c,e,b,a){var d="[quote]";if(c){if(e){d="[quote='"+c+"','"+e+"']"}else{d="[quote='"+c+"']"}}if(a){d+=a}d+="[/quote]";if(this.wutil.inWysiwygMode()){d=this.wbbcode.convertToHtml(d);this.insert.html(d,false);this.wbbcode._observeQuotes();this.$toolbar.find("a.re-__wcf_quote").addClass("redactor-button-disabled")}else{this.wutil.insertAtCaret(d)}},_buildQuoteHeader:function(b,c){var a="";if(!b&&c){b=c;c=""}if(b){if(c){a+='<a href="'+c+'">'}a+=WCF.Language.get("wcf.bbcode.quote.title.javascript",{quoteAuthor:WCF.String.unescapeHTML(b)});if(c){a+="</a>"}}else{a="<small>"+WCF.Language.get("wcf.bbcode.quote.title.clickToSet")+"</small>"}return a},_handleInsertQuote:function(){this.wbbcode._openQuoteEditOverlay(null,true)}}};
// wbutton.js
-if(!RedactorPlugins){var RedactorPlugins={}}RedactorPlugins.wbutton=function(){return{_bbcodes:{},init:function(){this._bbcodes={};for(var h=0,e=__REDACTOR_BUTTONS.length;h<e;h++){this.wbutton._addBBCodeButton(__REDACTOR_BUTTONS[h])}var a={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 d={fontcolor:WCF.Language.get("wcf.bbcode.button.fontColor"),fontfamily:WCF.Language.get("wcf.bbcode.button.fontFamily"),fontsize:WCF.Language.get("wcf.bbcode.button.fontSize"),subscript:WCF.Language.get("wcf.bbcode.button.subscript"),superscript:WCF.Language.get("wcf.bbcode.button.superscript")};var b=this.wutil.getOption("buttons");var g="";for(var h=0,e=b.length;h<e;h++){var c=b[h];if(c=="separator"){this.button.get(g).parent().addClass("separator");continue}var f=this.button.get(c);if(f.length){if(a[c]){this.button.setAwesome(c,a[c])}}else{this.wbutton._addCoreButton(c,(d[c]?d[c]:null),(a[c]?a[c]:null),g)}g=c}this.button.addCallback(this.button.get("image"),$.proxy(this.wbutton.insertImage,this))},_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]=b.name;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];var b={buttonName:a,cancel:false};WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","insertBBCode_"+d+"_"+this.$textarea.wcfIdentify(),b);if(b.cancel===false){var c=this.selection.getHtml();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.insert.html("["+d+"]"+c+this.selection.getMarkerAsHtml()+"[/"+d+"]",false);this.selection.restore()}}event.preventDefault();return false},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)}}}}};
+if(!RedactorPlugins){var RedactorPlugins={}}RedactorPlugins.wbutton=function(){return{_bbcodes:{},init:function(){this._bbcodes={};for(var h=0,e=__REDACTOR_BUTTONS.length;h<e;h++){this.wbutton._addBBCodeButton(__REDACTOR_BUTTONS[h])}var a={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 d={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 b=this.wutil.getOption("buttons");var g="";for(var h=0,e=b.length;h<e;h++){var c=b[h];if(c=="separator"){this.button.get(g).parent().addClass("separator");continue}var f=this.button.get(c);if(f.length){if(a[c]){this.button.setAwesome(c,a[c])}if(c==="table"&&g){f.parent().insertAfter(this.button.get(g).parent())}}else{this.wbutton._addCoreButton(c,(d[c]?d[c]:null),(a[c]?a[c]:null),g)}g=c}this.button.addCallback(this.button.get("image"),$.proxy(this.wbutton.insertImage,this))},_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]=b.name;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];var b={buttonName:a,cancel:false};WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","insertBBCode_"+d+"_"+this.$textarea.wcfIdentify(),b);if(b.cancel===false){var c=this.selection.getHtml();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.insert.html("["+d+"]"+c+this.selection.getMarkerAsHtml()+"[/"+d+"]",false);this.selection.restore()}}event.preventDefault();return false},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
if(!RedactorPlugins){var RedactorPlugins={}}RedactorPlugins.wfontcolor=function(){return{init:function(){var a=this.button.addDropdown(this.button.get("fontcolor"));this.wfontcolor._createDropdown(a)},_createDropdown:function(h){var b=["#000000","#800000","#8B4513","#2F4F4F","#008080","#000080","#4B0082","#696969","#B22222","#A52A2A","#DAA520","#006400","#40E0D0","#0000CD","#800080","#808080","#FF0000","#FF8C00","#FFD700","#008000","#00FFFF","#0000FF","#EE82EE","#A9A9A9","#FFA07A","#FFA500","#FFFF00","#00FF00","#AFEEEE","#ADD8E6","#DDA0DD","#D3D3D3","#FFF0F5","#FAEBD7","#FFFFE0","#F0FFF0","#F0FFFF","#F0F8FF","#E6E6FA","#FFFFFF"];var e=$('<li class="redactorColorPallet" />');for(var g=0,d=b.length;g<d;g++){var f=b[g];var c=$('<a href="#" title="'+f+'" />').data("color",f).css("background-color",f);e.append(c);c.click($.proxy(this.wfontcolor._onColorPick,this))}var a=$('<a href="#" />').html(this.opts.curLang.none).data("color","none");a.click($.proxy(this.wfontcolor._onColorPick,this));e.appendTo(h);$('<li class="dropdownDivider" />').appendTo(h);a.appendTo(h);a.wrap("<li />")},_onColorPick:function(a){a.preventDefault();var b=$(a.currentTarget).data("color");if(b==="none"){this.inline.remoteStyleRule("color")}else{this.inline.format("span","style","color: "+b+";")}}}};
// wfontfamily.js