--- /dev/null
+// wbbcode.js
+if(!RedactorPlugins){var RedactorPlugins={}}RedactorPlugins.wbbcode={init:function(){this._createSmileyDropdown();this.buttonReplace("smiley","wsmiley","Smiley",$.proxy(function(d,b,a,c){this.dropdownShow(c,d)},this));this.buttonAwesome("wsmiley","fa-smile-o");this.opts.initCallback=$.proxy(function(){if(this.$source.val().length){this.toggle();this.toggle()}},this)},_createSmileyDropdown:function(){var d=$('<div class="redactor_dropdown redactor_dropdown_box_wsmiley" style="display: none; width: 195px;" />');var c=$('<ul class="smileyList" />').appendTo(d);for(var a in __REDACTOR_SMILIES){var b=$('<li><img src="'+__REDACTOR_SMILIES[a]+'" class="smiley" /></li>').data("smileyCode",a);b.appendTo(c).click($.proxy(this._onSmileyPick,this))}$(this.$toolbar).append(d)},_onSmileyPick:function(b){var a=$(b.currentTarget).data("smileyCode");this.insertSmiley(a,__REDACTOR_SMILIES[a],false)},insertSmiley:function(a,b,c){if(c){this.registerSmiley(a,b)}if(this.opts.visual){this.bufferSet();this.$editor.focus();this.insertHtml(' <img src="'+b+'" class="smiley" alt="'+a+'" /> ');if(this.opts.air){this.$air.fadeOut(100)}this.sync()}else{this.insertAtCaret(" "+a+" ")}},registerSmiley:function(a,b){if(__REDACTOR_SMILIES[a]){return false}__REDACTOR_SMILIES[a]=b;return true},toggle:function(a){if(this.opts.visual){this._convertParagraphs();this.toggleCode(a);this._convertFromHtml();this.buttonGet("html").children("i").removeClass("fa-square-o").addClass("fa-square")}else{this._convertToHtml();this.toggleVisual();this.buttonGet("html").children("i").removeClass("fa-square").addClass("fa-square-o")}},_convertParagraphs:function(){this.$editor.find("p").replaceWith(function(){var a=$(this).html();if(a=="<br>"){return a}return a+"<br>"});this.sync()},_convertFromHtml:function(){var g=this.$source.val();g=g.replace(/<br>\n<pre>\n/g,"");g=g.replace(/<\/pre>\n<br>\n/g,"");g=g.replace(/<br>/g,"");g=g.replace(/ /gi," ");g=g.replace(/<a [^>]*?href=(["'])mailto:(.+?)\1.*?>([\s\S]+?)<\/a>/gi,"[email=$2]$3[/email]");g=g.replace(/<a [^>]*?href=(["'])(.+?)\1.*?>([\s\S]+?)<\/a>/gi,function(m,k,l,n){if(l==n){return"[url]"+l+"[/url]"}return"[url='"+l+"']"+n+"[/url]"});g=g.replace(/<(?:b|strong)>/gi,"[b]");g=g.replace(/<\/(?:b|strong)>/gi,"[/b]");g=g.replace(/<(?:i|em)>/gi,"[i]");g=g.replace(/<\/(?:i|em)>/gi,"[/i]");g=g.replace(/<u>/gi,"[u]");g=g.replace(/<\/u>/gi,"[/u]");g=g.replace(/<(?:s(trike)?|del)>/gi,"[s]");g=g.replace(/<\/(?:s(trike)?|del)>/gi,"[/s]");g=g.replace(/<sub>/gi,"[sub]");g=g.replace(/<\/sub>/gi,"[/sub]");g=g.replace(/<sup>/gi,"[sup]");g=g.replace(/<\/sup>/gi,"[/sup]");g=g.replace(/<img [^>]*?alt="([^"]+?)" class="smiley".*?>/gi,"$1");g=g.replace(/<img [^>]*?class="smiley" alt="([^"]+?)".*?>/gi,"$1");g=g.replace(/<img [^>]*?src=(["'])([^"']+?)\1 style="float: (left|right)[^"]*".*?>/gi,"[img='$2',$3][/img]");g=g.replace(/<img [^>]*?src=(["'])([^"']+?)\1.*?>/gi,"[img]$2[/img]");g=g.replace(/<span style="color: ?rgb\((\d{1,3}), ?(\d{1,3}), ?(\d{1,3})\);?">([\s\S]*?)<\/span>/gi,function(l,n,m,k,p){var o=("0123456789ABCDEF".charAt((n-n%16)/16)+""+"0123456789ABCDEF".charAt(n%16))+""+("0123456789ABCDEF".charAt((m-m%16)/16)+""+"0123456789ABCDEF".charAt(m%16))+""+("0123456789ABCDEF".charAt((k-k%16)/16)+""+"0123456789ABCDEF".charAt(k%16));return"[color=#"+o+"]"+p+"[/color]"});g=g.replace(/<span style="color: ?(.*?);?">([\s\S]*?)<\/span>/gi,"[color=$1]$2[/color]");g=g.replace(/<span style="font-size: ?(\d+)pt;?">([\s\S]*?)<\/span>/gi,"[size=$1]$2[/size]");g=g.replace(/<span style="font-family: ?(.*?);?">([\s\S]*?)<\/span>/gi,function(l,k,m){return"[font='"+k.replace(/'/g,"")+"']"+m+"[/font]"});g=g.replace(/<div style="text-align: ?(left|center|right|justify);? ?">([\s\S]*?)<\/div>/gi,"[align=$1]$2[/align]");g=g.replace(/<li>/gi,"[*]");g=g.replace(/<\/li>/gi,"");g=g.replace(/<ul>/gi,"[list]");g=g.replace(/<(ol|ul style="list-style-type: decimal")>/gi,"[list=1]");g=g.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]");g=g.replace(/<\/(ul|ol)>/gi,"[/list]");g=g.replace(/<table[^>]*>/gi,"[table]");g=g.replace(/<\/table>/gi,"[/table]");g=g.replace(/<tr><\/tr>/gi,"");g=g.replace(/<tr>/gi,"[tr]");g=g.replace(/<\/tr>/gi,"[/tr]");g=g.replace(/<td style="text-align: ?(left|center|right|justify);? ?">([\s\S]*?)<\/td>/gi,"[td][align=$1]$2[/align][/td]");g=g.replace(/<td>/gi,"[td]");g=g.replace(/<\/td>/gi,"[/td]");var b={};g.replace(/<span id="selection-marker-\d+" class="redactor-selection-marker"><\/span>/,function(k){var l=k.hashCode();b[l]=k.replace(/\$/g,"$$$$");return"@@"+l+"@@"});g=g.replace(/<[^>]+>/g,"");if($.getLength(b)){for(var f in b){var i=new RegExp("@@"+f+"@@","g");data=data.replace(i,b[f])}}g=g.replace(/</g,"<");g=g.replace(/>/g,">");g=g.replace(/&/g,"&");g=g.replace(/%28/g,"(");g=g.replace(/%29/g,")");g=g.replace(/%20/g," ");var c={};for(var j=0,h=__REDACTOR_SOURCE_BBCODES.length;j<h;j++){var e=__REDACTOR_SOURCE_BBCODES[j];var d=new RegExp("\\["+e+"([\\S\\s]+?)\\[\\/"+e+"\\]","gi");g=g.replace(d,function(k){var l=k.hashCode();c[l]=k.replace(/\$/g,"$$$$");return"@@"+l+"@@"})}var a=g.split("\n");for(var j=0,h=a.length;j<h;j++){a[j]=a[j].replace(/^\s*/,"")}g=a.join("\n");if($.getLength(c)){for(var f in c){var i=new RegExp("@@"+f+"@@","g");g=g.replace(i,c[f])}}this.$source.val(g)},_convertToHtml:function(){var e=this.$source.val();e=this.removeZeroWidthSpace(e);e=e.replace(/&/g,"&");e=e.replace(/</g,"<");e=e.replace(/>/g,">");var b={};for(var k=0,i=__REDACTOR_SOURCE_BBCODES.length;k<i;k++){var c=__REDACTOR_SOURCE_BBCODES[k];var d=new RegExp("\\["+c+"([\\S\\s]+?)\\[\\/"+c+"\\]","gi");e=e.replace(d,function(m){var n=m.hashCode();b[n]=m.replace(/\$/g,"$$$$");return"@@"+n+"@@"})}e=e.replace(/\[url\]([^"]+?)\[\/url]/gi,'<a href="$1">$1</a>');e=e.replace(/\[url\='([^'"]+)'](.+?)\[\/url]/gi,'<a href="$1">$2</a>');e=e.replace(/\[url\=([^'"\]]+)](.+?)\[\/url]/gi,'<a href="$1">$2</a>');e=e.replace(/\[email\]([^"]+?)\[\/email]/gi,'<a href="mailto:$1">$1</a>');e=e.replace(/\[email\=([^"\]]+)](.+?)\[\/email]/gi,'<a href="mailto:$1">$2</a>');e=e.replace(/\[b\](.*?)\[\/b]/gi,"<b>$1</b>");e=e.replace(/\[i\](.*?)\[\/i]/gi,"<i>$1</i>");e=e.replace(/\[u\](.*?)\[\/u]/gi,"<u>$1</u>");e=e.replace(/\[s\](.*?)\[\/s]/gi,"<strike>$1</strike>");e=e.replace(/\[sub\](.*?)\[\/sub]/gi,"<sub>$1</sub>");e=e.replace(/\[sup\](.*?)\[\/sup]/gi,"<sup>$1</sup>");e=e.replace(/\[img\]([^"]+?)\[\/img\]/gi,'<img src="$1" />');e=e.replace(/\[img='?([^"]*?)'?,'?(left|right)'?\]\[\/img\]/gi,'<img src="$1" style="float: $2" />');e=e.replace(/\[img='?([^"]*?)'?\]\[\/img\]/gi,'<img src="$1" />');e=e.replace(/\[size=(\d+)\](.*?)\[\/size\]/gi,'<span style="font-size: $1pt">$2</span>');e=e.replace(/\[color=([#a-z0-9]*?)\](.*?)\[\/color\]/gi,'<span style="color: $1">$2</span>');e=e.replace(/\[font='?([a-z,\- ]*?)'?\](.*?)\[\/font\]/gi,'<span style="font-family: $1">$2</span>');e=e.replace(/\[align=(left|right|center|justify)\](.*?)\[\/align\]/gi,'<div style="text-align: $1">$2</div>');e=e.replace(/\[\*\](.*?)(?=\[\*\]|\[\/list\])/gi,"<li>$1</li>");e=e.replace(/\[list\]/gi,"<ul>");e=e.replace(/\[list=1\]/gi,'<ul style="list-style-type: decimal">');e=e.replace(/\[list=a\]/gi,'<ul style="list-style-type: lower-latin">');e=e.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">');e=e.replace(/\[\/list]/gi,"</ul>");e=e.replace(/\[table\]/gi,'<table border="1" cellspacing="1" cellpadding="1" style="width: 500px;">');e=e.replace(/\[\/table\]/gi,"</table>");e=e.replace(/\[tr\]/gi,"<tr>");e=e.replace(/\[\/tr\]/gi,"</tr>");e=e.replace(/\[td\]/gi,"<td>");e=e.replace(/\[\/td\]/gi,"</td>");for(var l in __REDACTOR_SMILIES){$smileyCode=l.replace(/</g,"<").replace(/>/g,">");var g=new RegExp("(\\s|>|^)"+WCF.String.escapeRegExp($smileyCode)+"(?=\\s|<|$)","gi");e=e.replace(g,'$1<img src="'+__REDACTOR_SMILIES[l]+'" class="smiley" alt="'+$smileyCode+'" />')}e=e.replace(/(javascript):/gi,"$1<span></span>:");e=e.replace(/(\r|\r\n)/,"\n");var a=e.split("\n");e="";for(var k=0,i=a.length;k<i;k++){var j=$.trim(a[k]);if(!j){j="<br>"}e+="<p>"+j+"</p>"}if($.getLength(b)){for(var f in b){var h=new RegExp("@@"+f+"@@","g");e=e.replace(h,b[f])}}e=e.replace(/\[code\][\S\s]*?\[\/code\]/,"<pre>$&</pre>");this.$source.val(e)}};
+// wbutton.js
+if(!RedactorPlugins){var RedactorPlugins={}}RedactorPlugins.wbutton={_bbcodes:{},init:function(){this._bbcodes={};for(var g=0,d=__REDACTOR_BUTTONS.length;g<d;g++){this._addBBCodeButton(__REDACTOR_BUTTONS[g])}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 b=this.getOption("buttons");var f="";for(var g=0,d=b.length;g<d;g++){var c=b[g];if(c=="separator"){this.buttonGet(f).parent().addClass("separator");continue}var e=this.buttonGet(c);if(e.length){if(a[c]){this.buttonAwesome(c,a[c])}}else{this._addCoreButton(c,(a[c]?a[c]:null),f)}f=c}},_addCoreButton:function(b,a,c){var d=this.buttonBuild(b,{title:b,exec:b},false);$("<li />").append(d).insertAfter(this.buttonGet(c).parent());if(a!==null){this.buttonAwesome(b,a)}},_addBBCodeButton:function(b){var c="__wcf_"+b.name;var a=this.buttonAdd(c,b.label,this._insertBBCode);this._bbcodes[c]=b.name;if(b.icon.match(/^fa\-[a-z\-]+$/)){this.buttonAwesome(c,b.icon)}else{a.css("background-image","url("+__REDACTOR_ICON_PATH+b.icon+")")}},_insertBBCode:function(a,f,b,e){var d=this._bbcodes[a];var c=this.getSelectionHtml();this.insertHtml("["+d+"]"+c+"[/"+d+"]");this.sync()}};
+// wfontcolor.js
+if(!RedactorPlugins){var RedactorPlugins={}}RedactorPlugins.wfontcolor={init:function(){this._createFontColorDropdown();this.buttonReplace("fontcolor","fontcolor",this.opts.curLang.fontcolor,$.proxy(function(d,b,a,c){this.dropdownShow(c,d)},this))},_createFontColorDropdown:function(){var d=$('<div class="redactor_dropdown redactor_dropdown_box_fontcolor" style="display: none;">');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"];for(var g=0,e=b.length;g<e;g++){var f=b[g];var c=$("<a />").data("color",f).css("background-color",f);d.append(c);c.click($.proxy(this._onColorPick,this))}var a=$("<a />").html(this.opts.curLang.none).data("color","none");a.click($.proxy(this._onColorPick,this));d.append(a);$(this.$toolbar).append(d)},_onColorPick:function(a){a.preventDefault();var b=$(a.currentTarget).data("color");if(b==="none"){this.inlineRemoveStyle("color")}else{this.inlineSetStyle("color",b)}}};
+// wfontfamily.js
+if(!RedactorPlugins){var RedactorPlugins={}}RedactorPlugins.wfontfamily={init:function(){var b={Arial:"Arial, Helvetica, sans-serif","Comic Sans MS":"Comic Sans MS, cursive","Courier New":"Consolas, Courier New, Courier, monospace",Georgia:"Georgia, serif","Lucida Sans Unicode":"Lucida Sans Unicode, Lucida Grande, sans-serif",Tahoma:"Tahoma, Geneva, sans-serif","Times New Roman":"Times New Roman, Times, serif","Trebuchet MS":"Trebuchet MS, Helvetica, sans-serif",Verdana:"Verdana, Geneva, sans-serif"};var c={};var d=0;var a=this;$.each(b,function(f,e){c["fontFamily"+d]={title:f,className:"wfontfamily-"+d,callback:function(){a.inlineSetStyle("font-family",e)}};d++});c.separator={name:"separator"};c.remove={title:"remove font",callback:function(){this.inlineRemoveStyle("font-family")}};this.buttonReplace("fontfamily","wfontfamily","Change font family",false,c);this.buttonGet("wfontfamily").addClass("re-fontfamily");c=this.$toolbar.find(".redactor_dropdown_box_wfontfamily");d=0;$.each(b,function(f,e){c.children(".wfontfamily-"+d).removeClass("wfontfamily-"+d).css("font-family",e);d++})}};
+// wfontsize.js
+if(!RedactorPlugins){var RedactorPlugins={}}RedactorPlugins.wfontsize={init:function(){var d=[8,10,12,14,18,24,36];var e={};var a=this;for(var g=0,f=d.length;g<f;g++){var b=d[g];e["fontSize"+g]={title:b,className:"wfontsize-"+b,callback:function(){a.inlineSetStyle("font-size",b+"pt")}}}e.separator={name:"separator"};e.remove={title:"remove font size",callback:function(){this.inlineRemoveStyle("font-size")}};this.buttonReplace("fontsize","wfontsize","Change font size",false,e);this.buttonGet("wfontsize").addClass("re-fontsize");e=this.$toolbar.find(".redactor_dropdown_box_wfontsize");for(var g=0,f=d.length;g<f;g++){var b=d[g];var c=e.children("a.wfontsize-"+b).removeClass("wfontsize-"+d).css("font-size",b+"pt");if(b>18){c.css("line-height","1em")}}}};
+// wmonkeypatch.js
+if(!RedactorPlugins){var RedactorPlugins={}}RedactorPlugins.wmonkeypatch={init:function(){var d=this;var c=this.indentingStart;this.indentingStart=function(g){c.call(d,g);d.mpIndentingStart(g)};var b=this.buildEventKeydown;this.buildEventKeydown=function(g){if(d.callback("wkeydown",g)!==false){b.call(d,g)}};var f=this.toggleCode;this.toggleCode=function(h){var g=d.normalize(d.$editor.css("height"));f.call(d,h);d.$source.height(g)};var e=this.modalInit;this.modalInit=function(i,h,g,j){d.mpModalInit();e.call(d,i,h,g,j)};var a=this.imageResizeControls;this.imageResizeControls=function(g){return a.call(d,g).hide()};this.setOption("modalOpenedCallback",$.proxy(this.modalOpenedCallback,this));this.modalTemplatesInit()},cleanRemoveSpaces:function(b,a){return b},inlineRemoveStyle:function(a){this.selectionSave();this.inlineEachNodes(function(b){$(b).css(a,"");this.removeEmptyAttr(b,"style")});this.$editor.find("inline").each(function(c,d){if(!d.attributes.length){var b=$(d);b.replaceWith(b.html())}});this.selectionRestore();this.sync()},mpIndentingStart:function(a){if(a==="indent"){var b=this.getBlock();if(b.tagName==="DIV"&&b.getAttribute("data-tagblock")!==null){this.selectionSave();b=$(b);b.replaceWith(b.html());this.selectionRestore();this.sync()}}},modalTemplatesInit:function(){this.setOption("modal_image",'<fieldset><dl><dt><label for="redactor_file_link">'+this.opts.curLang.image_web_link+'</label></dt><dd><input type="text" name="redactor_file_link" id="redactor_file_link" class="long" /></dd></dl><dl><dt><label for="redactor_form_image_align">'+this.opts.curLang.image_position+'</label></dt><dd><select id="redactor_form_image_align"><option value="none">'+this.opts.curLang.none+'</option><option value="left">'+this.opts.curLang.left+'</option><option value="right">'+this.opts.curLang.right+'</option></select></dd></dl></fieldset><div class="formSubmit"><button id="redactor_upload_btn">'+this.opts.curLang.insert+"</button></div>");this.setOption("modal_image_edit",this.getOption("modal_image").replace('<button id="redactor_upload_btn">'+this.opts.curLang.insert+"</button>",'<button id="redactorSaveBtn">'+this.opts.curLang.save+"</button>"));this.setOption("modal_link",'<fieldset><dl><dt><label for="redactor_link_url">URL</label></dt><dd><input type="text" id="redactor_link_url" class="long" /></dd></dl><dl><dt><label for="redactor_link_url_text">'+this.opts.curLang.text+'</label></dt><dd><input type="text" id="redactor_link_url_text" class="long" /></dd></dl></fieldset><div class="formSubmit"><button id="redactor_insert_link_btn">'+this.opts.curLang.insert+"</button></div>");this.setOption("modal_table",'<fieldset><dl><dt><label for="redactor_table_rows">'+this.opts.curLang.rows+'</label></dt><dd><input type="number" size="5" value="2" min="0" id="redactor_table_rows" class="tiny" /></dd></dl><dl><dt><label for="redactor_table_columns">'+this.opts.curLang.columns+'</label></dt><dd><input type="number" size="5" value="3" min="0" id="redactor_table_columns" class="tiny" /></dd></dl></fieldset><div class="formSubmit"><button id="redactor_insert_table_btn">'+this.opts.curLang.insert+"</button></div>");$.extend(this.opts,{modal_file:String()+'<section id="redactor-modal-file-insert"><div id="redactor-progress" class="redactor-progress-inline" style="display: none;"><span></span></div><form id="redactorUploadFileForm" method="post" action="" enctype="multipart/form-data"><label>'+this.opts.curLang.filename+'</label><input type="text" id="redactor_filename" class="redactor_input" /><div style="margin-top: 7px;"><input type="file" id="redactor_file" name="'+this.opts.fileUploadParam+'" /></div></form></section>',modal_video:String()+'<section id="redactor-modal-video-insert"><form id="redactorInsertVideoForm"><label>'+this.opts.curLang.video_html_code+'</label><textarea id="redactor_insert_video_area" style="width: 99%; height: 160px;"></textarea></form></section><footer><button class="redactor_modal_btn redactor_btn_modal_close">'+this.opts.curLang.cancel+'</button><button id="redactor_insert_video_btn" class="redactor_modal_btn redactor_modal_action_btn">'+this.opts.curLang.insert+"</button></footer>"})},mpModalInit:function(){if(!$("#redactor_modal_overlay").length){this.$overlay=$('<div id="redactor_modal_overlay" class="dialogOverlay" />').css({height:"100%",zIndex:50000}).hide().appendTo(document.body)}if(!$("#redactor_modal").length){this.$modal=$('<div id="redactor_modal" class="dialogContainer" />').css({display:"none",zIndex:50001}).appendTo(document.body);$('<header class="dialogTitlebar"><span id="redactor_modal_header" class="dialogTitle" /><a id="redactor_modal_close" class="dialogCloseButton" /></header>').appendTo(this.$modal);$('<div class="dialogContent"><div id="redactor_modal_inner" /></div>').appendTo(this.$modal)}this.$modal.children(".dialogContent").removeClass("dialogForm")},modalOpenedCallback:function(){var a=0;if(this.$modal.find(".formSubmit").length){a=this.$modal.find(".formSubmit").outerHeight();this.$modal.children(".dialogContent").addClass("dialogForm").css({marginBottom:a+"px"})}else{this.$modal.children(".dialogContent").removeClass("dialogForm").css({marginBottom:"0px"})}var b=this.$modal.getDimensions("outer");this.$modal.css({marginLeft:-1*Math.round(b.width/2)+"px",marginTop:-1*Math.round(b.height/2)+"px"})},inlineEachNodes:function(e){var b=this.getRange(),c=this.getElement(),a=this.getNodes(),d;if(b.collapsed||b.startContainer===b.endContainer&&c){a=$(c);d=true}$.each(a,$.proxy(function(g,j){if(!d&&j.tagName!=="INLINE"){var f=this.getSelectionText();var k=$(j).parent().text();var h=this.removeZeroWidthSpace(f)==this.removeZeroWidthSpace(k);if(h&&j.parentNode.tagName==="INLINE"&&!$(j.parentNode).hasClass("redactor_editor")){j=j.parentNode}else{return}}e.call(this,j)},this))}};
+// wupload.js
+if(!RedactorPlugins){var RedactorPlugins={}}RedactorPlugins.wupload={_attachmentsContainer:null,init:function(){var a=this;this.buttonReplace("upload","upload","Upload",function(){a._attachmentsContainer.toggle()});this.buttonAwesome("upload","fa-upload");this._initAttachments()},_initAttachments:function(){this._attachmentsContainer=$('<div class="redactorAttachmentContainer" />').hide().appendTo(this.$box);var f=$('<ul class="formAttachmentList clearfix" />').hide().appendTo(this._attachmentsContainer);$('<dl class="wide"><dt></dt><dd><div data-max-size="{@$attachmentHandler->getMaxSize()}"></div><small>'+WCF.String.unescapeHTML(WCF.Language.get("wcf.attachment.upload.limits"))+"</small></dd></dl>").appendTo(this._attachmentsContainer);var a=this.getOption("wattachment");if(a.attachments.length){for(var g=0;g<a.attachments.length;g++){var e=a.attachments[g];var d=$('<li class="box48" />');if(e.tinyThumbnailUrl){$('<img src="'+e.tinyThumbnailUrl+'" alt="" class="attachmentTinyThumbnail" />').appendTo(d)}else{$('<span class="icon icon48 icon-paper-clip" />').appendTo(d)}var b=$("<div />").appendTo(d);$('<div><p><a href="'+e.url+'"'+(e.isImage?' title="'+e.filename+'" class="jsImageViewer"':"")+">"+e.filename+"</a></p></div>").appendTo(b);var c=$("<ul />").appendTo(b);$('<li><span class="icon icon16 icon-remove pointer jsTooltip jsDeleteButton " title="'+WCF.Language.get("wcf.global.button.delete")+'" data-object-id="'+e.attachmentID+'" data-confirm-message="'+WCF.Language.get("wcf.attachment.delete.sure")+'"></span></li>').appendTo(c);$('<li><span class="icon icon16 icon-paste pointer jsTooltip jsButtonInsertAttachment" title="'+WCF.Language.get("wcf.attachment.insert")+'" data-object-id="'+e.attachmentID+'"></span></li>').appendTo(c);d.appendTo(f);this._attachmentsContainer.show();f.show()}}new WCF.Attachment.Upload(this._attachmentsContainer.find("> dl > dd > div"),this._attachmentsContainer.children("ul"),a.objectType,a.objectID,a.tmpHash,a.parentObjectID,a.maxCount,this.$source.wcfIdentify());new WCF.Action.Delete("wcf\\data\\attachment\\AttachmentAction",".formAttachmentList > li")}};
+// wutil.js
+if(!RedactorPlugins){var RedactorPlugins={}}RedactorPlugins.wutil={_autosaveWorker:null,init:function(){this.$source.parents("form").submit($.proxy(this.submit,this));if(this.getOption("wautosave").active){this.autosaveEnable();if(this.getOption("wautosave").saveOnInit||this.$source.data("saveOnInit")){this._saveTextToStorage()}else{this.autosaveRestore()}}this.setOption("autosave",false);var b=this.destroy;var a=this;this.destroy=function(){a.autosaveDisable();b.call(a)}},insertAtCaret:function(b){if(this.opts.visual){console.debug("insertAtCaret() failed: Editor is in WYSIWYG-mode.");return false}this.$source.focus();var c=this.$source.getCaret();if(c==-1){console.debug("insertAtCaret() failed: Source is not input[type=text], input[type=password] or textarea.")}var a=this.$source.val();a=a.substr(0,c)+b+a.substr(c);this.$source.val(a);return true},insertDynamic:function(a,b){if(this.inWysiwygMode()){this.insertHtml(a)}else{if(b===undefined||b===null){b=a}this.insertAtCaret(b)}},setOption:function(a,b){this.opts[a]=b},getOption:function(a){if(this.opts[a]){return this.opts[a]}return null},inPlainMode:function(){return !this.opts.visual},inWysiwygMode:function(){return(this.opts.visual)},replaceRangesWith:function(a){getSelection().removeAllRanges();getSelection().addRange(a)},getText:function(){if(this.inWysiwygMode()){this.toggle();var a=this.$source.val();this.toggle();return a}return this.$source.val()},submit:function(){if(this.inWysiwygMode()){this.toggle();var a=this.$source.val();this.toggle();this.$source.val(a)}this.autosavePurge()},reset:function(){if(this.inWysiwygMode()){this.$editor.empty();this.sync()}else{this.$source.val("")}},autosaveEnable:function(b){if(!this.getOption("wautosave").active){this.setOption("wautosave",{active:true,key:b})}if(this._autosaveWorker===null){var a=this;this._autosaveWorker=new WCF.PeriodicalExecuter($.proxy(this._saveTextToStorage,this),60*1000)}return true},_saveTextToStorage:function(){localStorage.setItem(this.getOption("wautosave").key,this.getText())},autosaveDisable:function(){if(!this.getOption("wautosave").active){return false}this._autosaveWorker.stop();this._autosaveWorker=null;this.setOption("wautosave",{active:false,key:""});return true},autosavePurge:function(){localStorage.removeItem(this.getOption("wautosave").key)},autosaveRestore:function(){var a=this.getOption("wautosave");var b=localStorage.getItem(a.key);if(b!==null){if(this.inWysiwygMode()){this.toggle(false);this.$source.val(b);this.toggle(false);this.focusEnd()}else{this.$source.val(b)}return true}return false},buttonReplace:function(d,b,e,g,f){var a=this.buttonGet(d);var c=this.buttonAddAfter(d,b,e,g,f);if(a.parent().hasClass("separator")){c.parent().addClass("separator")}a.parent().remove();return c},removeZeroWidthSpace:function(a){var b="";for(var e=0,d=a.length;e<d;e++){var c=a.charCodeAt(e).toString(16);if(c!="200b"){b+=a[e]}}return b},};