Updating minified JavaScript files
authorwoltlab.com <woltlab@woltlab.com>
Sat, 16 Jul 2016 22:32:24 +0000 (00:32 +0200)
committerwoltlab.com <woltlab@woltlab.com>
Sat, 16 Jul 2016 22:32:24 +0000 (00:32 +0200)
wcfsetup/install/files/js/3rdParty/redactor/plugins/wcombined.min.js [changed mode: 0755->0644]
wcfsetup/install/files/js/WCF.Combined.min.js

old mode 100755 (executable)
new mode 100644 (file)
index 837e8ec..463d054
@@ -1,5 +1,4 @@
 // 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 t={};t.insert_table={title:this.lang.get("insert_table"),func:this.table.show},t.insert_row_above={title:this.lang.get("insert_row_above"),func:this.table.addRowAbove},t.insert_row_below={title:this.lang.get("insert_row_below"),func:this.table.addRowBelow},t.insert_column_left={title:this.lang.get("insert_column_left"),func:this.table.addColumnLeft},t.insert_column_right={title:this.lang.get("insert_column_right"),func:this.table.addColumnRight},t.add_head={title:this.lang.get("add_head"),func:this.table.addHead},t.delete_head={title:this.lang.get("delete_head"),func:this.table.deleteHead},t.delete_column={title:this.lang.get("delete_column"),func:this.table.deleteColumn},t.delete_row={title:this.lang.get("delete_row"),func:this.table.deleteRow},t.delete_table={title:this.lang.get("delete_table"),func:this.table.deleteTable},this.observe.addButton("td","table"),this.observe.addButton("th","table");var e=this.button.addBefore("link","table",this.lang.get("table"));this.button.addDropdown(e,t)},show:function(){this.modal.addTemplate("table",this.table.getTemplate()),this.modal.load("table",this.lang.get("insert_table"),300),this.modal.createCancelButton();var t=this.modal.createActionButton(this.lang.get("insert"));t.on("click",this.table.insert),this.selection.save(),this.modal.show(),$("#redactor-table-rows").focus()},insert:function(){var t,e,i,a,s=$("#redactor-table-rows").val(),l=$("#redactor-table-columns").val(),n=$("<div>"),r=Math.floor(99999*Math.random()),o=$('<table id="table'+r+'"><tbody></tbody></table>');for(t=0;s>t;t++){for(e=$("<tr>"),i=0;l>i;i++)a=$("<td>"+this.opts.invisibleSpace+"</td>"),0===t&&0===i&&a.append(this.selection.getMarker()),$(e).append(a);o.append(e)}n.append(o);var d=n.html();if(this.modal.close(),this.selection.restore(),!this.table.getTable()){this.buffer.set();var h=this.selection.getBlock()||this.selection.getCurrent();h&&"BODY"!=h.tagName?("LI"==h.tagName&&(h=$(h).closest("ul, ol")),$(h).after(d)):this.insert.html(d),this.selection.restore();var c=this.$editor.find("#table"+r);if(!this.opts.linebreaks&&(this.utils.browser("mozilla")||this.utils.browser("msie"))){var b=c.next();0===b.length&&c.after(this.opts.emptyHtml)}this.observe.buttons(),c.find("span.redactor-selection-marker").remove(),c.removeAttr("id"),this.code.sync(),this.core.setCallback("insertedTable",c)}},getTable:function(){var t=$(this.selection.getParent()).closest("table");return this.utils.isRedactorParent(t)?0===t.size()?!1:t:!1},restoreAfterDelete:function(t){this.selection.restore(),t.find("span.redactor-selection-marker").remove(),this.code.sync()},deleteTable:function(){var t=this.table.getTable();if(t){this.buffer.set();var e=t.next();this.opts.linebreaks||0===e.length?this.caret.setAfter(t):this.caret.setStart(e),t.remove(),this.code.sync()}},deleteRow:function(){var t=this.table.getTable();if(t){var e=$(this.selection.getCurrent());this.buffer.set();var i=e.closest("tr"),a=i.prev().length?i.prev():i.next();if(a.length){var s=a.children("td, th").first();s.length&&s.prepend(this.selection.getMarker())}i.remove(),this.table.restoreAfterDelete(t)}},deleteColumn:function(){var t=this.table.getTable();if(t){this.buffer.set();var e=$(this.selection.getCurrent()),i=e.closest("td, th"),a=i[0].cellIndex;t.find("tr").each($.proxy(function(t,e){var i=$(e),s=0>a-1?a+1:a-1;0===t&&i.find("td, th").eq(s).prepend(this.selection.getMarker()),i.find("td, th").eq(a).remove()},this)),this.table.restoreAfterDelete(t)}},addHead:function(){var t=this.table.getTable();if(t){if(this.buffer.set(),0!==t.find("thead").size())return void this.table.deleteHead();var e=t.find("tr").first().clone();e.find("td").html(this.opts.invisibleSpace),$thead=$("<thead></thead>").append(e),t.prepend($thead),this.code.sync()}},deleteHead:function(){var t=this.table.getTable();if(t){var e=t.find("thead");0!==e.size()&&(this.buffer.set(),e.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(t){var e=this.table.getTable();if(e){this.buffer.set();var i=$(this.selection.getCurrent()),a=i.closest("tr"),s=a.clone();s.find("th").replaceWith(function(){var t=$("<td>");return t[0].attributes=this.attributes,t.append($(this).contents())}),s.find("td").html(this.opts.invisibleSpace),"after"==t?a.after(s):a.before(s),this.code.sync()}},addColumn:function(t){var e=this.table.getTable();if(e){var i=0,a=$(this.selection.getCurrent());this.buffer.set();var s=a.closest("tr"),l=a.closest("td, th");s.find("td, th").each($.proxy(function(t,e){$(e)[0]===l[0]&&(i=t)},this)),e.find("tr").each($.proxy(function(e,a){var s=$(a).find("td, th").eq(i),l=s.clone();l.html(this.opts.invisibleSpace),"after"==t?s.after(l):s.before(l)},this)),this.code.sync()}}}};
 // wbbcode.js
 if(!RedactorPlugins)var RedactorPlugins={};RedactorPlugins.wbbcode=function(){"use strict";var e=!1;return{init:function(){var t=this.$textarea.wcfIdentify();this.opts.initCallback=function(){window.addEventListener("unload",function(){this.code.startSync(),this.$textarea.val(this.wbbcode.convertFromHtml(this.$textarea.val()))}.bind(this)),$.browser.msie&&this.$editor.addClass("msie"),this.$textarea[0].setAttribute("data-is-dirty",!0);var e=$.trim(this.wutil.getOption("woltlab.originalValue"));e.length&&(this.wutil.replaceText(e),this.wutil.selectionEndOfEditor()),delete this.opts.woltlab.originalValue,$(document).trigger("resize"),this.wutil.saveSelection();var t=this.$editor[0],i=this.$textarea[0];setTimeout(function(){$.browser.iOS&&0===t.scrollHeight&&(document.activeElement===t||document.activeElement===i)&&document.activeElement.blur()},10)}.bind(this),this.opts.pasteBeforeCallback=$.proxy(this.wbbcode._pasteBeforeCallback,this),this.opts.pasteCallback=$.proxy(this.wbbcode._pasteCallback,this);var i=this.clean.onSync;this.clean.onSync=function(t){return t=t.replace(/\u200C/g,"__wcf_zwnj__"),t=t.replace(/\u200D/g,"__wcf_zwj__"),e===!0?e=!1:t=t.replace(/<p><br([^>]+)?><\/p>/g,"<p>@@@wcf_empty_line@@@</p>"),t=i.call(this,t),t=t.replace(/__wcf_zwnj__/g,"‌"),t.replace(/__wcf_zwj__/g,"‍")}.bind(this),this.wutil.getOption("woltlab.autosaveOnce")&&(this.wutil.saveTextToStorage(),delete this.opts.woltlab.autosaveOnce);var a=this.button.get("table");if(a.length){var r=a.data("dropdown");r.find(".redactor-dropdown-add_head").parent().remove(),r.find(".redactor-dropdown-delete_head").parent().remove(),$('<li class="dropdownDivider" />').insertBefore(r.find(".redactor-dropdown-delete_table").parent()),a.click($.proxy(this.wbbcode._tableButtonClick,this))}WCF.System.Event.addListener("com.woltlab.wcf.redactor","insertBBCode_quote_"+t,$.proxy(function(e){e.cancel=!0,this.wbbcode._handleInsertQuote()},this)),WCF.System.Event.addListener("com.woltlab.wcf.redactor","insertBBCode_code_"+t,$.proxy(function(e){e.cancel=!0,this.wbbcode._handleInsertCode(null,!0)},this)),WCF.System.Event.addListener("com.woltlab.wcf.redactor","keydown_"+t,$.proxy(this.wbbcode._keydownCallback,this)),WCF.System.Event.addListener("com.woltlab.wcf.redactor","keyup_"+t,$.proxy(this.wbbcode._keyupCallback,this)),this.code.sync=function(){};var n=$(".redactor-toolbar-tooltip-html:not(.jsWbbcode)").addClass("jsWbbcode").text(WCF.Language.get("wcf.bbcode.button.toggleBBCode")),l=function(e){e.find("br").each(function(e,t){t.children.length&&$(t).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"),n.text(WCF.Language.get("wcf.bbcode.button.toggleHTML"));else{if(this.$textarea.val(this.wbbcode.convertToHtml(this.$textarea.val())),this.code.offset=this.$textarea.val().length,this.code.showVisual(),this.wutil.fixDOM(),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"),n.text(WCF.Language.get("wcf.bbcode.button.toggleBBCode")),this.wutil.fixDOM(),l(this.$editor),/ Edge\//.test(navigator.userAgent)){var e=this.$editor[0];window.dtdesign=e,e.childElementCount>1&&"​"===e.children[0].innerHTML&&e.removeChild(e.children[0])}this.wutil.saveSelection()}}.bind(this),this.wutil.setOption("clickCallback",function(e){e.target===this.$editor[0]&&this.$editor[0].lastElementChild&&"BLOCKQUOTE"===this.$editor[0].lastElementChild.tagName&&this.wutil.setCaretAfter($(this.$editor[0].lastElementChild)),setTimeout(this.wutil.saveSelection.bind(this),10)}.bind(this));var o=this.opts.verifiedTags.indexOf("ul");o>-1&&this.opts.verifiedTags.splice(o,1),WCF.System.Event.addListener("com.woltlab.wcf.redactor","observe_load_"+t,function(){this.wbbcode.observeCodeListings(),this.wbbcode.observeQuotes()}.bind(this)),WCF.System.Event.addListener("com.woltlab.wcf.redactor","fixFormatting_"+t,$.proxy(this.wbbcode.fixFormatting,this))},_tableButtonClick:function(e){var t=$(e.currentTarget);if(t.hasClass("dropact")){var i=this.selection.getBlock()||this.selection.getCurrent(),a=t.data("dropdown");a.children("li").show();var r=a.find("> li > .redactor-dropdown-insert_table").parent();"TD"==i.tagName?r.hide():r.nextAll().hide()}},insertSmiley:function(e,t,i){if(i&&this.wbbcode.registerSmiley(e,t),this.opts.visual){this.wutil.restoreSelection();var a=window.getSelection();a.rangeCount&&this.utils.isRedactorParent(a.getRangeAt(0).startContainer)||this.focus.setEnd();var r=a.getRangeAt(0);r.deleteContents();var n=document.createElement("img");n.src=t,n.className="smiley",n.alt=e,r.insertNode(n);var l,o=function(e){return null===e?!1:(e.nodeType===Node.ELEMENT_NODE&&"SPAN"===e.nodeName||e.nodeType===Node.TEXT_NODE)&&" "===e.textContent?!0:!1},c=n,s=n.parentElement;o(n.previousSibling)||(l=document.createTextNode(" "),s.insertBefore(l,n)),o(n.nextSibling)||(l=document.createTextNode(" "),s.lastChild===n?s.appendChild(l):s.insertBefore(l,n.nextSibling),c=l),r=document.createRange(),r.selectNode(c),r.collapse(!1),a.removeAllRanges(),a.addRange(r),this.wutil.saveSelection()}else this.wutil.insertAtCaret(" "+e+" ")},registerSmiley:function(e,t){return __REDACTOR_SMILIES[e]?!1:(__REDACTOR_SMILIES[e]=t,!0)},convertFromHtml:function(e){var t=[],i={html:e};WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","beforeConvertFromHtml",i),e=i.html,e=e.replace(/(<[^>]+?) data-redactor-tag="[^"]+"/g,"$1"),e=e.replace(/(<[^>]+?) rel="[^"]+"/g,"$1"),e=e.replace(/&#(8203|x200b);/g,""),e=e.replace(/&trade;/gi,"™"),e=e.replace(/&copy;/gi,"©"),e=e.replace(/&hellip;/gi,"…"),e=e.replace(/&mdash;/gi,"—"),e=e.replace(/&dash;/gi,"‐");var a={};e=e.replace(/<div([^>]+?)class="codeBox[^"]+"([^>]*?)>\n*<div>[\s\S]+?<ol start="(\d+)">([\s\S]+?)<\/ol>\n*<\/div>\n*<\/div>/g,function(e,t,i,r,n){var l=t+" "+i,o="",c="";l.match(/data-highlighter="([a-zA-Z]+)"/)&&(o=RegExp.$1),l.match(/data-filename="([^"]+)"/)&&(c=$.trim(RegExp.$1));var s=WCF.getUUID();return a[s]={codeContent:n.replace(/<li>/g,"").replace(/<\/li>/g,"\n").replace(/\n$/,""),filename:c.replace(/['"]/g,""),highlighter:"plain"===o?"":o,lineNumber:r>1?r:0},"@@@"+s+"@@@"}),e=e.replace(/\r?\n/g,""),e=e.replace(/<a[^>]*?><\/a>/g,""),e=e.replace(/<p><\/p><table/g,"<table"),e=e.replace(/<\/table><p><\/p>/g,"</table>");for(var r in a)e=e.replace(new RegExp("<p></p>@@@"+r+"@@@<p></p>"),"@@@"+r+"@@@");e=e.replace(/<p><\/p><p>(?!<br>)/g,"<p>@@@wcf_empty_line@@@</p><p>"),e=e.replace(/<br( \/)?><\/p>/g,"</p>");for(var n=e.split(/(<\/?(?:div|p)>)/),l="",o="",c=0;c<n.length;c++){var s=n[c];"<p>"!=s&&"<div>"!=s&&("</p>"==s||"</div>"==s?(o=$.trim(o),"@@@wcf_empty_line@@@"!=o&&(o+="\n"),l+=o,o=""):0==c||c+1==n.length?l+=s:o+=s)}o&&(l+=o,o=""),e=l,e=e.replace(/@@@wcf_empty_line@@@/g,"\n"),e=e.replace(/\n\n$/,"\n"),e=e.replace(/<br>$/,""),e=e.replace(/<br>/g,"\n"),e=e.replace(/<br>/g,""),e=e.replace(/<blockquote([^>]+)>\n?<header[^>]*?>[\s\S]*?<\/header>/gi,function(e,t){var i,a="",r="";return t.match(/data-author="([^"]+)"/)&&(a=WCF.String.unescapeHTML(RegExp.$1)),t.match(/cite="([^"]+)"/)&&(r=WCF.String.unescapeHTML(RegExp.$1)),i=r?"[quote='"+a+"','"+r+"']":a?"[quote='"+a+"']":"[quote]"}),e=e.replace(/(?:\n*)<\/blockquote>\n?/gi,"\n[/quote]\n"),e=e.replace(/<a [^>]*?href=(["'])mailto:(.+?)\1.*?>([\s\S]+?)<\/a>/gi,"[email=$2]$3[/email]"),e=e.replace(/<a[^>]+><\/a>/,""),e=e.replace(/<a [^>]*?href=(["'])(.+?)\1.*?>([\s\S]+?)<\/a>/gi,function(e,t,i,a){return i==a?"[url]"+i+"[/url]":"[url='"+i+"']"+a+"[/url]"}),e=e.replace(/<(?:b|strong)>/gi,function(){return-1===t.indexOf("b")&&t.push("b"),"[b]"}),e=e.replace(/<\/(?:b|strong)>/gi,"[/b]"),e=e.replace(/<(?:i|em)>/gi,function(){return-1===t.indexOf("i")&&t.push("i"),"[i]"}),e=e.replace(/<\/(?:i|em)>/gi,"[/i]"),e=e.replace(/<u>/gi,function(){return-1===t.indexOf("u")&&t.push("u"),"[u]"}),e=e.replace(/<\/u>/gi,"[/u]"),e=e.replace(/<sub>/gi,function(){return-1===t.indexOf("sub")&&t.push("sub"),"[sub]"}),e=e.replace(/<\/sub>/gi,"[/sub]"),e=e.replace(/<sup>/gi,function(){return-1===t.indexOf("sup")&&t.push("sup"),"[sup]"}),e=e.replace(/<\/sup>/gi,"[/sup]"),e=e.replace(/<(?:s(trike)?|del)>/gi,function(){return-1===t.indexOf("s")&&t.push("s"),"[s]"}),e=e.replace(/<\/(?:s(trike)?|del)>/gi,"[/s]");for(var d=e.split(/(<\/?span[^>]*>)/),o=[],h=[],p="",g={11:8,13:10,16:12,19:14,24:18,29:22,32:24,48:36},c=0;c<d.length;c++){var u=d[c];if("</span>"==u){var f=h.pop(),l=f.start+o.pop()+f.end;o.length?o[o.length-1]+=l:p+=l}else if(u.match(/^<span/))if(u.match(/^<span(?:.*?)style="([^"]+)"(?:[^>]*?)>/)){var m,v,b=RegExp.$1;if(b.match(/(?:^|;\s*)color: ?rgb\((\d{1,3}), ?(\d{1,3}), ?(\d{1,3})\);?/i)){var w=RegExp.$1,C=RegExp.$2,x=RegExp.$3,E="0123456789ABCDEF".charAt((w-w%16)/16)+""+"0123456789ABCDEF".charAt(w%16)+("0123456789ABCDEF".charAt((C-C%16)/16)+""+"0123456789ABCDEF".charAt(C%16))+("0123456789ABCDEF".charAt((x-x%16)/16)+""+"0123456789ABCDEF".charAt(x%16));m="[color=#"+E+"]",v="[/color=#"+E+"]",-1===t.indexOf("color")&&t.push("color")}else b.match(/(?:^|;\s*)color: ?([^;]+);?/i)?(m="[color="+RegExp.$1+"]",v="[/color="+RegExp.$1+"]",-1===t.indexOf("color")&&t.push("color")):b.match(/font-size: ?(\d+)(pt|px);?/i)?"pt"==RegExp.$2?(m="[size="+RegExp.$1+"]",v="[/size="+RegExp.$1+"]",-1===t.indexOf("size")&&t.push("size")):g[RegExp.$1]?(m="[size="+g[RegExp.$1]+"]",v="[/size="+g[RegExp.$1]+"]",-1===t.indexOf("size")&&t.push("size")):(m="",v=""):b.match(/font-family: ?([^;]+);?/)?(m="[font='"+RegExp.$1.replace(/'/g,"")+"']",v="[/font='"+RegExp.$1.replace(/'/g,"")+"']",-1===t.indexOf("font")&&t.push("font")):(m='<span style="'+b+'">',v="</span>");o[o.length]="",h[o.length]={start:m,end:v}}else u.match(/^<span class="inlineCode">/)?(o[o.length]="",h[o.length]={start:"[tt]",end:"[/tt]"}):(o[o.length]="",h[o.length]={start:"",end:""});else o.length?o[o.length-1]+=u:p+=u}if(e=p,e=e.replace(/<(div|p) style="text-align: ?(left|center|right|justify);? ?">([\s\S]*?)\n/gi,function(e,i,a,r){return-1===t.indexOf("align")&&t.push("align"),"[align="+a+"]"+$.trim(r)+"[/align="+a+"]\n"}),t.length){for(var y=!0;y;)y=!1,e=e.replace(new RegExp("\\[\\/((?:"+t.join("|")+")=[^\\]]+?)\\]\n\\[\\1\\]","gi"),function(){return y=!0,"\n"});e=e.replace(new RegExp("\\[\\/("+t.join("|")+")=[^\\]]+?\\]","gi"),"[/$1]")}e=e.replace(/ ?<img [^>]*?alt="([^"]+?)"[^>]*?class="smiley"[^>]*?> ?/gi," $1 "),e=e.replace(/ ?<img [^>]*?class="smiley"[^>]*?alt="([^"]+?)"[^>]*?> ?/gi," $1 "),e=e.replace(/<img([^>]*?)class="[^"]*redactorEmbeddedAttachment[^"]*"([^>]*?)>/gi,function(e,t,i){var a,r=t+" "+i;if(!r.match(/data-attachment-id="(\d+)"/))return e;a=RegExp.$1;var n="none",l=null;if(r.match(/style="([^"]+)"/)){for(var o=RegExp.$1.split(";"),c=0;c<o.length;c++){var s=$.trim(o[c]);s.match(/^float: (left|right)$/)?n=RegExp.$1:s.match(/^width: (\d+)px$/)&&(l=RegExp.$1)}if(null!==l)return"[attach="+a+","+n+","+l+"][/attach]";if("none"!==n)return"[attach="+a+","+n+"][/attach]"}return"[attach="+a+"][/attach]"}),e=e.replace(/<img([^>]*)?src=(["'])([^"']+?)\2([^>]*)?>/gi,function(e,t,i,a,r){var n=t+" "+r,l="";n.match(/style="([^"]+)"/)&&(l=RegExp.$1);for(var o="none",c=0,s=l.split(";"),d=0;d<s.length;d++){var h=s[d];h.match(/float: (left|right|none)/)?o=RegExp.$1:h.match(/width: (\d+)px/)&&(c=parseInt(RegExp.$1))}return c?"[img='"+a+"',"+o+","+c+"][/img]":"none"!==o?"[img='"+a+"',"+o+"][/img]":"[img]"+a+"[/img]"}),e=e.replace(/<li>/gi,"[*]"),e=e.replace(/<\/li>/gi,"\n"),e=e.replace(/<ul>/gi,"[list]"),e=e.replace(/<(ol|ul style="list-style-type: decimal")>/gi,"[list=1]"),e=e.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]"),e=e.replace(/<\/(ul|ol)>/gi,"[/list]"),e=e.replace(/\n?\[list\]/g,"\n[list]"),e=e.replace(/\[\/list\]\n\[\*\]/g,"[/list][*]"),e=e.replace(/\[\/list\]\n\[\/list\]/g,"[/list][/list]"),e=e.replace(/<table[^>]*>/gi,"[table]\n"),e=e.replace(/<\/table>\n?/gi,"[/table]\n"),e=e.replace(/<tbody>([\s\S]*?)<\/tbody>/,function(e,t){return $.trim(t)}),e=e.replace(/<tr><\/tr>/gi,""),e=e.replace(/<tr>/gi,"[tr]\n"),e=e.replace(/<\/tr>/gi,"[/tr]\n"),e=e.replace(/<td style="text-align: ?(left|center|right|justify);? ?">([\s\S]*?)<\/td>/gi,"[td][align=$1]$2[/align][/td]"),e=e.replace(/(\t)*<td>(\t)*/gi,"[td]"),e=e.replace(/(\t)*<\/td>/gi,"[/td]\n");var S={};if(e.replace(/<span id="selection-marker-\d+" class="redactor-selection-marker"><\/span>/,function(e){var t=e.hashCode();return S[t]=e.replace(/\$/g,"$$$$"),"@@"+t+"@@"}),WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","convertFromHtml",{html:e}),e=e.replace(/<[^(<|>)]+>/g,""),$.getLength(S))for(var _ in S){var k=new RegExp("@@"+_+"@@","g");e=e.replace(k,S[_])}return $.getLength(a)&&$.each(a,function(t,i){var a=0;i.highlighter&&a++,i.lineNumber&&a++,i.filename&&a++;var r="";switch(a){case 1:r=i.highlighter?i.highlighter:i.filename?"'"+i.filename+"'":i.lineNumber;break;case 2:i.lineNumber&&(r=i.lineNumber),i.highlighter&&(r.length&&(r+=","),r+=i.highlighter),i.filename&&(r.length&&(r+=","),r+="'"+i.filename+"'");break;case 3:r=i.highlighter+","+i.lineNumber+",'"+i.filename+"'"}var n="[code"+(r.length?"="+r:"")+"]"+i.codeContent+"[/code]\n";e=e.replace(new RegExp("@@@"+t+"@@@\n?","g"),n.replace(/\$/g,"$$$"))}),e=e.replace(/&lt;/g,"<"),e=e.replace(/&gt;/g,">"),e=e.replace(/&amp;/g,"&"),e=e.replace(/%28/g,"("),e=e.replace(/%29/g,")"),i={html:e},WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","afterConvertFromHtml",i),e=i.html,e=$.trim(e),e.length&&(e+="\n"),e},convertToHtml:function(e){var t={data:e};WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","beforeConvertToHtml",t),e=t.data,e=this.wutil.removeZeroWidthSpace(e),e=e.replace(/&/g,"&amp;"),e=e.replace(/</g,"&lt;"),e=e.replace(/>/g,"&gt;");var i=[],a=new RegExp("\\[("+__REDACTOR_SOURCE_BBCODES.join("|")+")([\\S\\s]+?)\\[\\/\\1\\]","gi");e=e.replace(a,function(e){var t=e.hashCode();return i.push({key:t,value:e.replace(/\$/g,"$$$$")}),"@@"+t+"@@"}),e=e.replace(/\[url\]([^"]+?)\[\/url]/gi,'<a href="$1">$1</a>'+this.opts.invisibleSpace),e=e.replace(/\[url\='([^'"]+)']([\s\S]+?)\[\/url]/gi,'<a href="$1">$2</a>'+this.opts.invisibleSpace),e=e.replace(/\[url\=([^'"\]]+)]([\s\S]+?)\[\/url]/gi,'<a href="$1">$2</a>'+this.opts.invisibleSpace),e=e.replace(/\[email\]([^"]+?)\[\/email]/gi,'<a href="mailto:$1">$1</a>'+this.opts.invisibleSpace),e=e.replace(/\[email\=([^"\]]+)](.+?)\[\/email]/gi,'<a href="mailto:$1">$2</a>'+this.opts.invisibleSpace),e=e.replace(/\[(b|i|s|sub|sup|u)\]\[\1\]/gi,"[$1]"),e=e.replace(/\[(\/(?:b|i|s|sub|sup|u))\]\[\1\]/gi,"[$1]"),e=e.replace(/\[(b|i|s|sub|sup|u)\]\[\/\1\]/gi,""),e=e.replace(/\[b\]([\s\S]*?)\[\/b]/gi,function(e,t){return this.wbbcode._expandFormatting(t,"<strong>","</strong>")}.bind(this)),e=e.replace(/\[i\]([\s\S]*?)\[\/i]/gi,function(e,t){return this.wbbcode._expandFormatting(t,"<em>","</em>")}.bind(this)),e=e.replace(/\[u\]([\s\S]*?)\[\/u]/gi,function(e,t){return this.wbbcode._expandFormatting(t,"<u>","</u>")}.bind(this)),e=e.replace(/\[s\]([\s\S]*?)\[\/s]/gi,function(e,t){return this.wbbcode._expandFormatting(t,"<del>","</del>")}.bind(this)),e=e.replace(/\[sub\]([\s\S]*?)\[\/sub]/gi,function(e,t){return this.wbbcode._expandFormatting(t,"<sub>","</sub>")}.bind(this)),e=e.replace(/\[sup\]([\s\S]*?)\[\/sup]/gi,function(e,t){return this.wbbcode._expandFormatting(t,"<sup>","</sup>")}.bind(this)),e=e.replace(/\[img\]([^"]+?)\[\/img\]/gi,'<img src="$1" />'),e=e.replace(/\[img='?([^"]*?)'?,'?(left|right)'?\]\[\/img\]/gi,function(e,t,i){var a="float: "+i+";";return a+="left"===i?"margin: 0 15px 7px 0":"margin: 0 0 7px 15px",'<img src="'+t+'" style="'+a+'" />'}),e=e.replace(/\[img='?([^"]*?)'?,'?(left|right|none)'?,'?(\d+)'?\]\[\/img\]/gi,function(e,t,i,a){var r="float: "+i+"; width: "+a+"px;";return r+="left"===i?"margin: 0 15px 7px 0":"margin: 0 0 7px 15px",'<img src="'+t+'" style="'+r+'" />'}),e=e.replace(/\[img='?([^"]*?)'?\]\[\/img\]/gi,'<img src="$1" />'),e=e.replace(/\[size=(\d+)\]([\s\S]*?)\[\/size\]/gi,function(e,t,i){return this.wbbcode._expandFormatting(i,'<span style="font-size: '+t+'pt">',"</span>")}.bind(this)),e=e.replace(/\[color=([#a-z0-9]*?)\]([\s\S]*?)\[\/color\]/gi,function(e,t,i){return this.wbbcode._expandFormatting(i,'<span style="color: '+t+'">',"</span>")}.bind(this)),e=e.replace(/\[font='?([a-z,\- ]*?)'?\]([\s\S]*?)\[\/font\]/gi,function(e,t,i){return this.wbbcode._expandFormatting(i,'<span style="font-family: '+t+'">',"</span>")}.bind(this)),e=e.replace(/\[align=(left|right|center|justify)\]([\s\S]*?)\[\/align\]/gi,function(e,t,i){return this.wbbcode._expandFormatting(i,'<p style="text-align: '+t+'">',"</p>")}.bind(this));var r=e.indexOf("[list");if(r>0){var n=e.substr(0,r);n=n.replace(/\[\*\]/g,""),e=n+e.substr(r)}var l=e.lastIndexOf("[/list]");if(-1===l)e=e.replace(/\[\*\]/g,""),e=e.replace(/\[list[^\]]*\]/g,"");else{var n=e.substr(l+7);n=n.replace(/\[\*\]/g,""),e=e.substr(0,l+7)+n}e=e.replace(/\[\*\]([\s\S]*?)(?=\[\*\]|\[\/list\])/gi,function(e,t){return"<li>"+$.trim(t)+"</li>"}),e=e.replace(/\n*(\[list\]<\/li>)/g,"$1"),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\]([\S\s]*?)\[\/table\]/gi,function(e,t){return"[table]"+$.trim(t)+"[/table]"}),e=e.replace(/\[table\]\n*/gi,'<table border="1" cellspacing="1" cellpadding="1" style="width: 500px;">'),e=e.replace(/\[\/table\](\n*)?/gi,function(e,t){return t?(t.match(/\n/g).length>2&&(t=t.replace(/^\n/,"")),"</table>"+t):"</table>"}),e=e.replace(/\[tr\]\n*/gi,"<tr>"),e=e.replace(/\[\/tr\]\n*/gi,"</tr>"),e=e.replace(/\[td\]\n*/gi,"<td>"),e=e.replace(/\[\/td\]\n*/gi,"</td>"),e=e.replace(/<td>([\S\s]*?)<\/td>/gi,function(e,t){var i=$.trim(t);return i.length||(i="&#8203;"),"<td>"+i+"</td>"});var o=this.wutil.getOption("woltlab.attachmentUrl"),c=this.wutil.getOption("woltlab.attachmentThumbnailUrl");if(o){var s=this.wbbcode._getImageAttachments();e=e.replace(/\[attach=(\d+)\]\[\/attach\]/g,function(e,t){return t=parseInt(t),void 0!==s[t]?'<img src="'+c.replace(/987654321/,t)+'" class="redactorEmbeddedAttachment redactorDisableResize" data-attachment-id="'+t+'" />':e}),e=e.replace(/\[attach=(\d+),(left|right|none)\]\[\/attach\]/g,function(e,t,i){if(t=parseInt(t),void 0!==s[t]){var a="";return("left"===i||"right"===i)&&(a="float: "+i+";",a+="left"===i?"margin: 0 15px 7px 0":"margin: 0 0 7px 15px"),a=' style="'+a+'"','<img src="'+c.replace(/987654321/,t)+'" class="redactorEmbeddedAttachment redactorDisableResize" data-attachment-id="'+t+'"'+a+" />"}return e}),e=e.replace(/\[attach=(\d+),(left|right|none),(\d+)\]\[\/attach\]/g,function(e,t,i,a){if(t=parseInt(t),void 0!==s[t]){var r="width: "+a+"px; max-height: "+s[t].height+"px; max-width: "+s[t].width+"px;";return("left"===i||"right"===i)&&(r+="float: "+i+";",r+="left"===i?"margin: 0 15px 7px 0":"margin: 0 0 7px 15px"),r=' style="'+r+'"','<img src="'+o.replace(/987654321/,t)+'" class="redactorEmbeddedAttachment" data-attachment-id="'+t+'"'+r+" />"}return e})}for(var d in __REDACTOR_SMILIES){var h=d.replace(/</g,"&lt;").replace(/>/g,"&gt;"),p=new RegExp("(\\s|>|^)"+WCF.String.escapeRegExp(h)+"(?=\\s|<|$)","gi");e=e.replace(p,'$1<img src="'+__REDACTOR_SMILIES[d]+'" class="smiley" alt="'+h+'" />')}e=e.replace(/(javascript):/gi,"$1<span></span>:"),e=e.replace(/(\r|\r\n)/g,"\n");for(var g=[],u=[],f=e.split(/(\[(?:\/quote|quote|quote='[^']*?'(?:,'[^']*?')?|quote="[^"]*?"(?:,"[^"]*?")?)\])/i),m=WCF.getUUID();;){for(var v=!1,b=0;b<f.length;b++){var w=f[b];if("[/quote]"===w.toLowerCase()){v=!0;for(var C="",x=f.slice(0,b),E=!1;x.length;){var y=x.pop();if(C=y+C,y.match(/^\[quote/i)){w=C+w;var S=WCF.getUUID();g.push({hashCode:S,content:w.replace(/\$/g,"$$$$")}),u.push(S),w="@@"+S+"@@",E=!0;break}}E||(x=f.slice(0,b),w=m),f=x.concat(w,f.slice(b+1));break}}if(!v)break}e=f.join(""),e=e.replace(new RegExp(m,"g"),"[/quote]"),e=e.replace(/\n*$/,"");var _=[];e=e.replace(/(<li>[\s\S]*?<\/li>)/g,function(e){e=$.trim(e).replace(/\n/g,"<br>");var t=WCF.getUUID();return _.push({key:t,content:e}),t});var n=e.split("\n");e="";for(var b=0,k=n.length;k>b;b++){var R=$.trim(n[b]);if(R.match(/^<([a-z]+)/)||R.match(/<\/([a-z]+)>$/))e+=this.reIsBlock.test(RegExp.$1.toUpperCase())||"TABLE"===RegExp.$1.toUpperCase()?R.match(/^<([a-z]+).*<\/\1>/)?R:R+"<br />":"<p>"+R+"</p>";else{if(R){if(R.match(/^@@([0-9\-]+)@@$/)&&WCF.inArray(RegExp.$1,u)){e+=R;continue}}else R="<br>";e+="<p>"+R+"</p>"}}if(e=e.replace(/<td>([\s\S]+?)<\/td>/g,function(e,t){return t=t.replace(/<br(?: \/)?>(<[uo]l)/g,"$1"),"<td>"+t.replace(/<p><br(?: \/)?><\/p>/g,"<br>").replace(/<p>/g,"").replace(/<\/p>/g,"<br>").replace(/<br>$/,"")+"</td>"}),_.length)for(var b=_.length-1;b>=0;b--)e=e.replace(_[b].key,_[b].content);if(g.length)for(var T=function(e){return e.replace(/^['"]/,"").replace(/['"]$/,"")},L=this,F=function(e){return e.replace(/\[quote(=(['"]).+?\2)?\]([\S\s]*)\[\/quote\]/gi,function(e,t,i,a){var r="",n="";if(t){switch(t=t.substr(1),t=t.split(","),t.length){case 1:r=t[0];break;case 2:r=t[0],n=t[1]}r=WCF.String.escapeHTML(T($.trim(r))),n=WCF.String.escapeHTML(T($.trim(n)))}var l='<blockquote class="quoteBox container containerPadding quoteBoxSimple" cite="'+n+'" data-author="'+r+'"><header contenteditable="false"><h3>'+L.wbbcode._buildQuoteHeader(r,n)+'</h3><a class="redactorQuoteEdit"></a></header>';a=$.trim(a);var o="";if(a.length){var c=[];a=a.replace(/(<(ol|ul)[^>]*>[\s\S]+?<\/\2>)/g,function(e){var t=WCF.getUUID();return c.push({hash:t,content:e}),"@@"+t+"@@"});for(var s=a.split("\n"),d=0;d<s.length;d++){var h=s[d];if(0===h.length)h=L.opts.invisibleSpace;else if(h.match(/^@@([0-9\-]+)@@$/)&&WCF.inArray(RegExp.$1,u)){o+=h;continue}o+="<div>"+h+"</div>"}if(c.length)for(var d=0,p=c.length;p>d;d++){var g=c[d].content;g=g.replace(/(<li>[\s\S]*?<\/li>)/g,function(e){return $.trim(e).replace(/\n/g,"<br>")}),o=o.replace(new RegExp("@@"+c[d].hash+"@@"),g)}}else o="<div>"+L.opts.invisibleSpace+"</div>";return l+=o,l+="</blockquote>"})},b=g.length-1;b>=0;b--){var A=g[b],O=new RegExp("@@"+A.hashCode+"@@","g");e=e.replace(O,F(A.content))}if(e=e.replace(/<(?:div|p)><(blockquote|div)/g,"<$1"),e=e.replace(/<\/(blockquote|div)><\/(?:div|p)>/g,"</$1>"),i.length)for(var b=i.length-1;b>=0;b--){var B=i[b],O=new RegExp("@@"+B.key+"@@","g"),N=B.value;N=N.replace(/^\[tt\]([\s\S]+)\[\/tt\]/,function(e,t){var i=t.split("\n");t="";for(var a=0,r=i.length;r>a;a++){var n=i[a];if(n.length)t.length&&(t+="</p><p>"),t+="[tt]"+n+"[/tt]";else{if(0===a||a+1===r)continue;t+=t.match(/\[\/tt\]$/)?"</p><p>"+this.opts.invisibleSpace:"</p><p><br>"}}return t}.bind(this)),N=N.replace(/^\[code([^\]]*)\]([\S\s]*)\[\/code\]$/,function(e,t,i){var a="plain",r=0,n="";if(t){t=t.substring(1),t=t.split(",");var l=function(e){return e.match(/^\d+$/)},o=function(e){return-1!==e.indexOf(".")||e.match(/^(["']).*\1$/)},c=function(e){return void 0!==__REDACTOR_CODE_HIGHLIGHTERS[e]},s=function(e){return e.replace(/^(["'])(.*)\1$/,"$2")};switch(t.length){case 1:l(t[0])?r=parseInt(t[0])>1?t[0]:0:o(t[0])?n=s(t[0]):c(t[0])&&(a=t[0]);break;case 2:l(t[0])?(r=parseInt(t[0])>1?t[0]:0,c(t[1])?a=t[1]:o(t[1])&&(n=s(t[1]))):(c(t[0])&&(a=t[0]),o(t[1])&&(n=s(t[1])));break;case 3:c(t[0])&&(a=t[0]),l(t[1])&&(r=t[1]),o(t[2])&&(n=s(t[2]))}}i=i.replace(/^\n+/,"").replace(/\n+$/,"").split(/\n/);for(var d="",h=0;h<i.length;h++){var p=i[h];p.length||(p=this.opts.invisibleSpace),d+="<li>"+p+"</li>"}return'<div class="codeBox container" contenteditable="false" data-highlighter="'+a+'"'+(n?' data-filename="'+WCF.String.escapeHTML(n)+'"':"")+"><div><div><h3>"+__REDACTOR_CODE_HIGHLIGHTERS[a]+(n?": "+WCF.String.escapeHTML(n):"")+'</h3></div><ol start="'+(r>1?r:1)+'">'+d+"</ol></div></div>"}.bind(this)),e=e.replace(O,N)}return e=e.replace(/&amp;nbsp;/g,"&amp;amp;nbsp;"),t={data:e},WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","afterConvertToHtml",t),e=t.data},_expandFormatting:function(e,t,i){if(!e.length)return t+this.opts.invisibleSpace+i;var a=e.indexOf("[/td]");if(-1!==a){var r=e.substring(0,a);if(-1===r.indexOf("[td]"))return t+r+i+e.substring(a)}var r=e.split("\n");e="";for(var n=0,l=r.length;l>n;n++){var o=r[n];0===o.length&&(o=this.opts.invisibleSpace),e.length&&(e+="\n"),e+=t+o+i}return e},_pasteBeforeCallback:function(e){var t={1:24,2:22,3:18,4:14,5:12,6:10};return e=e.replace(/<h([1-6])([^>]*)>/g,function(e,i,a){if(a&&a.match(/style="([^"]+?)"/)&&/font-size: ?(\d+|\d+\.\d+)(px|pt|em|rem|%)/.test(RegExp.$1)){var r=$('<div style="width: '+RegExp.$1+RegExp.$2+'; position: absolute;" />').appendTo(document.body),n=parseInt(r[0].clientWidth);r.remove();var l=-1,o=!1;$.each(t,function(e,i){-1===l?l=e:Math.abs(n-i)<Math.abs(n-t[l])&&(l=e),n==i&&(o=!0)}),o||(l=6>l?parseInt(l)+1:l),i=l}return"[size="+t[i]+"]"}),e=e.replace(/<\/h[1-6]>/g,"[/size]"),(/<p class="MsoNormal/.test(e)||/margin-bottom: 0cm/.test(e))&&(e=e.replace(/([^>\s])\n([^<\s])/g,"$1 $2"),e=e.replace(/<a name="[^"]+">/g,"")),e=e.replace(/<o:p>&nbsp;<\/o:p>/g,"<br>"),e=e.replace(/<(article|header)[^>]+>/g,"<div>"),e=e.replace(/<\/(article|header)>/g,"</div>"),e=e.replace(/<(div|p)([^>]+)?><(div|p)([^>]+)?>/g,"<p>"),e=e.replace(/<\/(div|p)><\/(div|p)>/g,"</p>"),e=e.replace(/<(?:div|p|span)[^>]+>/gi,function(e){return e.replace(/ class="[^"]+"/,"")}),e=e.replace(/<\/?wbr[^>]*>/g,""),WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","beforePaste",{html:e}),e},_pasteCallback:function(e){return e=e.replace(/\[size=(\d+)\]/g,'<p><span style="font-size: $1pt">'),e=e.replace(/\[\/size\]/g,"</span></p>"),e=e.replace(/style="([^"]+)"/,function(e,t){for(var i=t.split(";"),a=[],r=0,n=i.length;n>r;r++){var l=i[r];l.match(/^\s*background-color/)||a.push(l)}return'style="'+a.join(";")+'"'}),WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","afterPaste",{html:e}),e},insertAttachment:function(e,t){e=parseInt(e);var i=this.wutil.getOption("woltlab.attachment"+(t?"":"Thumbnail")+"Url"),a=this.wbbcode._getImageAttachments();if(i&&void 0!==a[e]){var r="";t&&(r=' style="width: '+a[e].width+"px; max-height: "+a[e].height+"px; max-width: "+a[e].width+'px;"'),this.wutil.insertDynamic('&#8203;<img src="'+i.replace(/987654321/,e)+'" class="redactorEmbeddedAttachment'+(t?"":" redactorDisableResize")+'" data-attachment-id="'+e+'"'+r+" />&#8203;","[attach="+e+(t?",none,"+a[e].width:"")+"][/attach]")}else this.wutil.insertDynamic("[attach="+e+"][/attach]")},removeAttachment:function(e){this.opts.visual&&this.$editor.find("img.redactorEmbeddedAttachment").each(function(t,i){var a=$(i);a.data("attachmentID")==e&&a.remove()})},_getImageAttachments:function(){var e=this.wutil.getOption("woltlab.attachmentImages")||[];if(e.length)return delete this.opts.attachmentImages,e;var t={imageAttachments:{}};return WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","getImageAttachments_"+this.$textarea.wcfIdentify(),t),t.imageAttachments},_keydownCallback:function(e){switch(e.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}this.selection.get();var t=this.selection.getCurrent(),i=this.selection.getParent();i=i?$(i):i;var a=i?i.closest("blockquote.quoteBox",this.$editor.get()[0]):{length:0};switch(e.event.which){case $.ui.keyCode.BACKSPACE:if(this.wutil.isCaret()){var r=!1;if(a.length){for(var n=!0,l=0;l<a[0].children.length;l++){var o=a[0].children[l];if("DIV"===o.tagName&&o.textContent.replace(/\u200b/,"").length){n=!1;break}}if(n)r=!0;else{var c=null===this.selection.implicitRange?this.range:this.selection.implicitRange;if(0===c.startOffset)for(var s,d=c.startContainer;null!==(d=d.parentNode);)if(s=d.previousSibling,null!==s){s.nodeType===Node.ELEMENT_NODE&&"HEADER"===s.nodeName&&(r=!0);break}}}if(r){var h=window.getSelection();h.rangeCount&&h.removeAllRanges();var p=document.createRange();p.selectNode(a[0]||a),h.addRange(p),e.cancel=!0}}break;case $.ui.keyCode.DELETE:if(this.wutil.isCaret()&&this.wutil.isEndOfElement(t)){var g=t.nextElementSibling;if(g&&"BLOCKQUOTE"===g.tagName){var h=window.getSelection();h.rangeCount&&h.removeAllRanges();var p=document.createRange();p.selectNode(g),h.addRange(p),e.cancel=!0}}break;case $.ui.keyCode.DOWN:var u=$(t);if(u.next("blockquote").length)this.caret.setStart(u.next().children("div:first")),e.cancel=!0;else if(i)if(i.next("blockquote").length)this.caret.setStart(i.next().children("div:first")),e.cancel=!0;else if(a.length){var f=u.closest("div",a[0]);f.next().length||(a.next().length?this.caret.setStart(a.next()):this.wutil.setCaretAfter(a),e.cancel=!0)}break;case $.ui.keyCode.ENTER:a.length&&(this.keydown.blockquote=!1,this.keydown.enterWithinBlockquote=!0);break;case $.ui.keyCode.UP:if(!i||!a.length)return;var f=$(t).closest("div",a[0]),m=f.prev();if("DIV"===m[0].tagName)return;if("BLOCKQUOTE"===m[0].tagName)return;var v=a.prev();0===v.length?this.wutil.setCaretBefore(a):"BLOCKQUOTE"===v[0].tagName?this.caret.sendEnd(v.children("div:last")):(""==$.trim(v.html())&&v.html(this.opts.invisibleSpace),this.caret.setEnd(v)),e.cancel=!0;break;case 83:if($.browser.mobile||$.browser.touch)return;var b=!1;if(navigator.platform.match(/^Mac/)?e.event.ctrlKey&&e.event.altKey&&(b=!0):e.event.altKey&&!e.event.ctrlKey&&(b=!0),b){var w={cancel:!1};WCF.System.Event.fireEvent("com.woltlab.wcf.redactor","submitEditor_"+this.$textarea.wcfIdentify(),w),w.cancel&&(e.cancel=!0)}}},_keyupCallback:function(e){switch(e.event.which){case $.ui.keyCode.BACKSPACE:case $.ui.keyCode.DELETE:this.$editor.find("blockquote").each(function(e,t){var i=$(t);i.children("header").length||i.remove()});break;case $.ui.keyCode.ENTER:for(var t=0,i=this.$editor[0].children.length;i>t;t++){var a=this.$editor[0].children[t];if(a.nodeType===Node.ELEMENT_NODE&&"P"===a.tagName&&!(a.textContent.length>0||a.children.length>1||"BR"===a.children[0].tagName)){for(a=a.children[0];1===a.children.length;)a=a.children[0];if(0===a.children.length&&"BR"===a.tagName){var r=a.parentNode,n=document.createTextNode("​");r.appendChild(n),r.removeChild(a)}}}}},observeQuotes:function(){this.$editor.find(".redactorQuoteEdit").off("click.wbbcode").on("click.wbbcode",$.proxy(this.wbbcode._observeQuotesClick,this))},_observeQuotesClick:function(e){var t=$(e.currentTarget).closest("header"),i=$('<span class="redactor-link-tooltip" />');$('<a href="#">'+WCF.Language.get("wcf.bbcode.quote.edit")+"</a>").on("click touchstart",$.proxy(function(t){t.preventDefault(),t.stopPropagation(),this.wbbcode._openQuoteEditOverlay($(e.currentTarget).closest("blockquote.quoteBox"),!1),$(".redactor-link-tooltip").remove()},this)).appendTo(i),$('<a href="#">'+WCF.Language.get("wcf.bbcode.quote.delete")+"</a>").on("click touchstart",function(e){e.preventDefault(),e.stopPropagation();var i=t.parent(),a=i.parent();i.remove(),$(".redactor-link-tooltip").remove(),"BLOCKQUOTE"===a[0].nodeName&&0===a.children("div").length&&$("<div>​</div>").appendTo(a)}).appendTo(i);var a=t.offset();i.css({left:a.left+"px",top:a.top+20+"px"}),$(".redactor-link-tooltip").remove(),i.appendTo(document.body),this.selection.remove()},observeCodeListings:function(){this.$editor.find(".codeBox").each(function(e,t){var i=$(t),a=i.find(".redactorEditCodeBox");a.length||(a=$('<div class="redactorEditCodeBox"><div>'+WCF.Language.get("wcf.bbcode.code.edit")+"</div></div>").insertAfter(i.find("> div > div > h3"))),a.off("click.wbbcode").on("click.wbbcode",function(){this.wbbcode._handleInsertCode(i,!1)}.bind(this))}.bind(this))},
index 1b02e7881f3f546a55e6414baf5a8a5bead6319f..6f125b97b2aab6ecc67eed26e6fd42d8087d8b45 100755 (executable)
 }},$.datepicker._setTimeDatepicker=function(e,t,i){var s=this._getInst(e);if(s){var a=this._get(s,"timepicker");if(a){this._setDateFromField(s);var n;t&&("string"==typeof t?(a._parseTime(t,i),n=new Date,n.setHours(a.hour,a.minute,a.second,a.millisec),n.setMicroseconds(a.microsec)):(n=new Date(t.getTime()),n.setMicroseconds(t.getMicroseconds())),"Invalid Date"==""+n&&(n=void 0),this._setTime(s,n))}}},$.datepicker._base_setDateDatepicker=$.datepicker._setDateDatepicker,$.datepicker._setDateDatepicker=function(e,t){var i=this._getInst(e),s=t;if(i){"string"==typeof t&&(s=new Date(t),s.getTime()||(this._base_setDateDatepicker.apply(this,arguments),s=$(e).datepicker("getDate")));var a,n=this._get(i,"timepicker");s instanceof Date?(a=new Date(s.getTime()),a.setMicroseconds(s.getMicroseconds())):a=s,n&&a&&(n.support.timezone||null!==n._defaults.timezone||(n.timezone=-1*a.getTimezoneOffset()),s=$.timepicker.timezoneAdjust(s,n.timezone),a=$.timepicker.timezoneAdjust(a,n.timezone)),this._updateDatepicker(i),this._base_setDateDatepicker.apply(this,arguments),this._setTimeDatepicker(e,a,!0)}},$.datepicker._base_getDateDatepicker=$.datepicker._getDateDatepicker,$.datepicker._getDateDatepicker=function(e,t){var i=this._getInst(e);if(i){var s=this._get(i,"timepicker");if(s){void 0===i.lastVal&&this._setDateFromField(i,t);var a=this._getDate(i);return a&&s._parseTime($(e).val(),s.timeOnly)&&(a.setHours(s.hour,s.minute,s.second,s.millisec),a.setMicroseconds(s.microsec),null!=s.timezone&&(s.support.timezone||null!==s._defaults.timezone||(s.timezone=-1*a.getTimezoneOffset()),a=$.timepicker.timezoneAdjust(a,s.timezone))),a}return this._base_getDateDatepicker(e,t)}},$.datepicker._base_parseDate=$.datepicker.parseDate,$.datepicker.parseDate=function(e,t,i){var s;try{s=this._base_parseDate(e,t,i)}catch(a){if(!(a.indexOf(":")>=0))throw a;s=this._base_parseDate(e,t.substring(0,t.length-(a.length-a.indexOf(":")-2)),i),$.timepicker.log("Error parsing the date string: "+a+"\ndate string = "+t+"\ndate format = "+e)}return s},$.datepicker._base_formatDate=$.datepicker._formatDate,$.datepicker._formatDate=function(e){var t=this._get(e,"timepicker");return t?(t._updateDateTime(e),t.$input.val()):this._base_formatDate(e)},$.datepicker._base_optionDatepicker=$.datepicker._optionDatepicker,$.datepicker._optionDatepicker=function(e,t,i){var s,a=this._getInst(e);if(!a)return null;var n=this._get(a,"timepicker");if(n){var r,l=null,o=null,c=null,u=n._defaults.evnts,m={};if("string"==typeof t){if("minDate"===t||"minDateTime"===t)l=i;else if("maxDate"===t||"maxDateTime"===t)o=i;else if("onSelect"===t)c=i;else if(u.hasOwnProperty(t)){if(i===void 0)return u[t];m[t]=i,s={}}}else if("object"==typeof t){t.minDate?l=t.minDate:t.minDateTime?l=t.minDateTime:t.maxDate?o=t.maxDate:t.maxDateTime&&(o=t.maxDateTime);for(r in u)u.hasOwnProperty(r)&&t[r]&&(m[r]=t[r])}for(r in m)m.hasOwnProperty(r)&&(u[r]=m[r],s||(s=$.extend({},t)),delete s[r]);if(s&&isEmptyObject(s))return;l?(l=0===l?new Date:new Date(l),n._defaults.minDate=l,n._defaults.minDateTime=l):o?(o=0===o?new Date:new Date(o),n._defaults.maxDate=o,n._defaults.maxDateTime=o):c&&(n._defaults.onSelect=c)}return void 0===i?this._base_optionDatepicker.call($.datepicker,e,t):this._base_optionDatepicker.call($.datepicker,e,s||t,i)};var isEmptyObject=function(e){var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0},extendRemove=function(e,t){$.extend(e,t);for(var i in t)(null===t[i]||void 0===t[i])&&(e[i]=t[i]);return e},detectSupport=function(e){var t=e.replace(/'.*?'/g,"").toLowerCase(),i=function(e,t){return-1!==e.indexOf(t)?!0:!1};return{hour:i(t,"h"),minute:i(t,"m"),second:i(t,"s"),millisec:i(t,"l"),microsec:i(t,"c"),timezone:i(t,"z"),ampm:i(t,"t")&&i(e,"h"),iso8601:i(e,"Z")}},convert24to12=function(e){return e%=12,0===e&&(e=12),e+""},computeEffectiveSetting=function(e,t){return e&&e[t]?e[t]:$.timepicker._defaults[t]},splitDateTime=function(e,t){var i=computeEffectiveSetting(t,"separator"),s=computeEffectiveSetting(t,"timeFormat"),a=s.split(i),n=a.length,r=e.split(i),l=r.length;return l>1?{dateString:r.splice(0,l-n).join(i),timeString:r.splice(0,n).join(i)}:{dateString:e,timeString:""}},parseDateTimeInternal=function(e,t,i,s,a){var n,r,l;if(r=splitDateTime(i,a),n=$.datepicker._base_parseDate(e,r.dateString,s),""===r.timeString)return{date:n};if(l=$.datepicker.parseTime(t,r.timeString,a),!l)throw"Wrong time format";return{date:n,timeObj:l}},selectLocalTimezone=function(e,t){if(e&&e.timezone_select){var i=t||new Date;e.timezone_select.val(-i.getTimezoneOffset())}};$.timepicker=new Timepicker,$.timepicker.timezoneOffsetString=function(e,t){if(isNaN(e)||e>840||-720>e)return e;var i=e,s=i%60,a=(i-s)/60,n=t?":":"",r=(i>=0?"+":"-")+("0"+Math.abs(a)).slice(-2)+n+("0"+Math.abs(s)).slice(-2);return"+00:00"===r?"Z":r},$.timepicker.timezoneOffsetNumber=function(e){var t=(""+e).replace(":","");return"Z"===t.toUpperCase()?0:/^(\-|\+)\d{4}$/.test(t)?("-"===t.substr(0,1)?-1:1)*(60*parseInt(t.substr(1,2),10)+parseInt(t.substr(3,2),10)):e},$.timepicker.timezoneAdjust=function(e,t){var i=$.timepicker.timezoneOffsetNumber(t);return isNaN(i)||e.setMinutes(e.getMinutes()+-e.getTimezoneOffset()-i),e},$.timepicker.timeRange=function(e,t,i){return $.timepicker.handleRange("timepicker",e,t,i)},$.timepicker.datetimeRange=function(e,t,i){$.timepicker.handleRange("datetimepicker",e,t,i)},$.timepicker.dateRange=function(e,t,i){$.timepicker.handleRange("datepicker",e,t,i)},$.timepicker.handleRange=function(e,t,i,s){function a(a,n){var r=t[e]("getDate"),l=i[e]("getDate"),o=a[e]("getDate");if(null!==r){var c=new Date(r.getTime()),u=new Date(r.getTime());c.setMilliseconds(c.getMilliseconds()+s.minInterval),u.setMilliseconds(u.getMilliseconds()+s.maxInterval),s.minInterval>0&&c>l?i[e]("setDate",c):s.maxInterval>0&&l>u?i[e]("setDate",u):r>l&&n[e]("setDate",o)}}function n(t,i,a){if(t.val()){var n=t[e].call(t,"getDate");null!==n&&s.minInterval>0&&("minDate"===a&&n.setMilliseconds(n.getMilliseconds()+s.minInterval),"maxDate"===a&&n.setMilliseconds(n.getMilliseconds()-s.minInterval)),n.getTime&&i[e].call(i,"option",a,n)}}s=$.extend({},{minInterval:0,maxInterval:0,start:{},end:{}},s);var r=!1;return"timepicker"===e&&(r=!0,e="datetimepicker"),$.fn[e].call(t,$.extend({timeOnly:r,onClose:function(){a($(this),i)},onSelect:function(){n($(this),i,"minDate")}},s,s.start)),$.fn[e].call(i,$.extend({timeOnly:r,onClose:function(){a($(this),t)},onSelect:function(){n($(this),t,"maxDate")}},s,s.end)),a(t,i),n(t,i,"minDate"),n(i,t,"maxDate"),$([t.get(0),i.get(0)])},$.timepicker.log=function(e){window.console&&window.console.log(e)},$.timepicker._util={_extendRemove:extendRemove,_isEmptyObject:isEmptyObject,_convert24to12:convert24to12,_detectSupport:detectSupport,_selectLocalTimezone:selectLocalTimezone,_computeEffectiveSetting:computeEffectiveSetting,_splitDateTime:splitDateTime,_parseDateTimeInternal:parseDateTimeInternal},Date.prototype.getMicroseconds||(Date.prototype.microseconds=0,Date.prototype.getMicroseconds=function(){return this.microseconds},Date.prototype.setMicroseconds=function(e){return this.setMilliseconds(this.getMilliseconds()+Math.floor(e/1e3)),this.microseconds=e%1e3,this}),$.timepicker.version="1.4.5"}})(jQuery); })(this);
 
 // WCF.Assets.js
-(function (window, undefined) { })(this);
+(function (window, undefined) {!function(){var e=!1,t=/xyz/.test(function(){xyz})?/\b_super\b/:/.*/;this.Class=function(){},Class.extend=function(n){function o(){!e&&this.init&&this.init.apply(this,arguments)}var i=this.prototype;e=!0;var r=new this;e=!1;for(var a in n)r[a]="function"==typeof n[a]&&"function"==typeof i[a]&&t.test(n[a])?function(e,t){return function(){var n=this._super;this._super=i[e];var o=t.apply(this,arguments);return this._super=n,o}}(a,n[a]):n[a];return o.prototype=r,o.prototype.constructor=o,o.extend=arguments.callee,o}}(),window.matchMedia||(window.matchMedia=function(){"use strict";var e=window.styleMedia||window.media;if(!e){var t=document.createElement("style"),n=document.getElementsByTagName("script")[0],o=null;t.type="text/css",t.id="matchmediajs-test",n.parentNode.insertBefore(t,n),o="getComputedStyle"in window&&window.getComputedStyle(t,null)||t.currentStyle,e={matchMedium:function(e){var n="@media "+e+"{ #matchmediajs-test { width: 1px; } }";return t.styleSheet?t.styleSheet.cssText=n:t.textContent=n,"1px"===o.width}}}return function(t){return{matches:e.matchMedium(t||"all"),media:t||"all"}}}()),function(){if(window.matchMedia&&window.matchMedia("all").addListener)return!1;var e=window.matchMedia,t=e("only all").matches,n=!1,o=0,i=[],r=function(){clearTimeout(o),o=setTimeout(function(){for(var t=0,n=i.length;n>t;t++){var o=i[t].mql,r=i[t].listeners||[],a=e(o.media).matches;if(a!==o.matches){o.matches=a;for(var l=0,s=r.length;s>l;l++)r[l].call(window,o)}}},30)};window.matchMedia=function(o){var a=e(o),l=[],s=0;return a.addListener=function(e){t&&(n||(n=!0,window.addEventListener("resize",r,!0)),0===s&&(s=i.push({mql:a,listeners:l})),l.push(e))},a.removeListener=function(e){for(var t=0,n=l.length;n>t;t++)l[t]===e&&l.splice(t,1)},a}}(),function(e,t,n){var o=t.matchMedia;"undefined"!=typeof module&&module.exports?module.exports=n(o):"function"==typeof define&&define.amd?define(function(){return t[e]=n(o)}):t[e]=n(o)}("enquire",this,function(e){"use strict";function t(e,t){var n,o=0,i=e.length;for(o;i>o&&(n=t(e[o],o),n!==!1);o++);}function n(e){return"[object Array]"===Object.prototype.toString.apply(e)}function o(e){return"function"==typeof e}function i(e){this.options=e,!e.deferSetup&&this.setup()}function r(t,n){this.query=t,this.isUnconditional=n,this.handlers=[],this.mql=e(t);var o=this;this.listener=function(e){o.mql=e,o.assess()},this.mql.addListener(this.listener)}function a(){if(!e)throw Error("matchMedia not present, legacy browsers require a polyfill");this.queries={},this.browserIsIncapable=!e("only all").matches}return i.prototype={setup:function(){this.options.setup&&this.options.setup(),this.initialised=!0},on:function(){!this.initialised&&this.setup(),this.options.match&&this.options.match()},off:function(){this.options.unmatch&&this.options.unmatch()},destroy:function(){this.options.destroy?this.options.destroy():this.off()},equals:function(e){return this.options===e||this.options.match===e}},r.prototype={addHandler:function(e){var t=new i(e);this.handlers.push(t),this.matches()&&t.on()},removeHandler:function(e){var n=this.handlers;t(n,function(t,o){return t.equals(e)?(t.destroy(),!n.splice(o,1)):void 0})},matches:function(){return this.mql.matches||this.isUnconditional},clear:function(){t(this.handlers,function(e){e.destroy()}),this.mql.removeListener(this.listener),this.handlers.length=0},assess:function(){var e=this.matches()?"on":"off";t(this.handlers,function(t){t[e]()})}},a.prototype={register:function(e,i,a){var l=this.queries,s=a&&this.browserIsIncapable;return l[e]||(l[e]=new r(e,s)),o(i)&&(i={match:i}),n(i)||(i=[i]),t(i,function(t){l[e].addHandler(t)}),this},unregister:function(e,t){var n=this.queries[e];return n&&(t?n.removeHandler(t):(n.clear(),delete this.queries[e])),this}},new a}),function(e,t){"use strict";function n(){}function o(e,t){if(e){"object"==typeof e&&(e=[].slice.call(e));for(var n=0,o=e.length;o>n;n++)t.call(e,e[n],n)}}function i(e,n){var o=Object.prototype.toString.call(n).slice(8,-1);return n!==t&&null!==n&&o===e}function r(e){return i("Function",e)}function a(e){return i("Array",e)}function l(e){var t=e.split("/"),n=t[t.length-1],o=n.indexOf("?");return-1!==o?n.substring(0,o):n}function s(e){e=e||n,e._done||(e(),e._done=1)}function c(e,t,o,i){var r="object"==typeof e?e:{test:e,success:t?a(t)?t:[t]:!1,failure:o?a(o)?o:[o]:!1,callback:i||n},l=!!r.test;return l&&r.success?(r.success.push(r.callback),O.load.apply(null,r.success)):l||!r.failure?i():(r.failure.push(r.callback),O.load.apply(null,r.failure)),O}function u(e){var t,n,o={};if("object"==typeof e)for(t in e)!e[t]||(o={name:t,url:e[t]});else o={name:l(e),url:e};return n=C[o.name],n&&n.url===o.url?n:(C[o.name]=o,o)}function d(e){e=e||C;for(var t in e)if(e.hasOwnProperty(t)&&e[t].state!==j)return!1;return!0}function f(e){e.state=D,o(e.onpreload,function(e){e.call()})}function p(e){e.state===t&&(e.state=A,e.onpreload=[],v({url:e.url,type:"cache"},function(){f(e)}))}function h(){var e=arguments,t=e[e.length-1],n=[].slice.call(e,1),i=n[0];return r(t)||(t=null),a(e[0])?(e[0].push(t),O.load.apply(null,e[0]),O):(i?(o(n,function(e){r(e)||!e||p(u(e))}),m(u(e[0]),r(i)?i:function(){O.load.apply(null,n)})):m(u(e[0])),O)}function g(){var e=arguments,t=e[e.length-1],n={};return r(t)||(t=null),a(e[0])?(e[0].push(t),O.load.apply(null,e[0]),O):(o(e,function(e){e!==t&&(e=u(e),n[e.name]=e)}),o(e,function(e){e!==t&&(e=u(e),m(e,function(){d(n)&&s(t)}))}),O)}function m(e,t){return t=t||n,e.state===j?void t():e.state===R?void O.ready(e.name,t):e.state===A?void e.onpreload.push(function(){m(e,t)}):(e.state=R,void v(e,function(){e.state=j,t(),o(k[e.name],function(e){s(e)}),E&&d()&&o(k.ALL,function(e){s(e)})}))}function w(e){e=e||"";var t=e.split("?")[0].split(".");return t[t.length-1].toLowerCase()}function v(t,o){function i(t){t=t||e.event,l.onload=l.onreadystatechange=l.onerror=null,o()}function r(n){n=n||e.event,("load"===n.type||/loaded|complete/.test(l.readyState)&&(!M.documentMode||M.documentMode<9))&&(e.clearTimeout(t.errorTimeout),e.clearTimeout(t.cssTimeout),l.onload=l.onreadystatechange=l.onerror=null,o())}function a(){if(t.state!==j&&t.cssRetries<=20){for(var n=0,o=M.styleSheets.length;o>n;n++)if(M.styleSheets[n].href===l.href)return void r({type:"load"});t.cssRetries++,t.cssTimeout=e.setTimeout(a,250)}}var l,s,c;o=o||n,s=w(t.url),"css"===s?(l=M.createElement("link"),l.type="text/"+(t.type||"css"),l.rel="stylesheet",l.href=t.url,t.cssRetries=0,t.cssTimeout=e.setTimeout(a,500)):(l=M.createElement("script"),l.type="text/"+(t.type||"javascript"),l.src=t.url),l.onload=l.onreadystatechange=r,l.onerror=i,l.async=!1,l.defer=!1,t.errorTimeout=e.setTimeout(function(){i({type:"timeout"})},7e3),c=M.head||M.getElementsByTagName("head")[0],c.insertBefore(l,c.lastChild)}function y(){for(var e,t=M.getElementsByTagName("script"),n=0,o=t.length;o>n;n++)if(e=t[n].getAttribute("data-headjs-load"),!!e)return void O.load(e)}function b(e,t){var n,i,l;return e===M?(E?s(t):L.push(t),O):(r(e)&&(t=e,e="ALL"),a(e)?(n={},o(e,function(e){n[e]=C[e],O.ready(e,function(){d(n)&&s(t)})}),O):"string"==typeof e&&r(t)?(i=C[e],i&&i.state===j||"ALL"===e&&d()&&E?(s(t),O):(l=k[e],l?l.push(t):l=k[e]=[t],O)):O)}function x(){return M.body?void(E||(E=!0,y(),o(L,function(e){s(e)}))):(e.clearTimeout(O.readyTimeout),void(O.readyTimeout=e.setTimeout(x,50)))}function T(){M.addEventListener?(M.removeEventListener("DOMContentLoaded",T,!1),x()):"complete"===M.readyState&&(M.detachEvent("onreadystatechange",T),x())}var E,S,M=e.document,L=[],k={},C={},I="async"in M.createElement("script")||"MozAppearance"in M.documentElement.style||e.opera,P=e.head_conf&&e.head_conf.head||"head",O=e[P]=e[P]||function(){O.ready.apply(null,arguments)},A=1,D=2,R=3,j=4;if("complete"===M.readyState)x();else if(M.addEventListener)M.addEventListener("DOMContentLoaded",T,!1),e.addEventListener("load",x,!1);else{M.attachEvent("onreadystatechange",T),e.attachEvent("onload",x),S=!1;try{S=!e.frameElement&&M.documentElement}catch(e){}S&&S.doScroll&&function t(){if(!E){try{S.doScroll("left")}catch(n){return e.clearTimeout(O.readyTimeout),void(O.readyTimeout=e.setTimeout(t,50))}x()}}()}O.load=O.js=I?g:h,O.test=c,O.ready=b,O.ready(M,function(){d()&&o(k.ALL,function(e){s(e)}),O.feature&&O.feature("domloaded",!0)})}(window),!function(){var e=function(e){"use strict";function t(e){if(e.paused||e.ended||m)return!1;try{u.clearRect(0,0,s,l),u.drawImage(e,0,0,s,l)}catch(e){}y=setTimeout(t,O.duration,e),P.setIcon(c)}function n(e){var t=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;e=e.replace(t,function(e,t,n,o){return t+t+n+n+o+o});var n=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return n?{r:parseInt(n[1],16),g:parseInt(n[2],16),b:parseInt(n[3],16)}:!1}function o(e,t){var n,o={};for(n in e)o[n]=e[n];for(n in t)o[n]=t[n];return o}function i(){return document.hidden||document.msHidden||document.webkitHidden||document.mozHidden}e=e?e:{};var r,a,l,s,c,u,d,f,p,h,g,m,w,v,y,b={bgColor:"#d00",textColor:"#fff",fontFamily:"sans-serif",fontStyle:"bold",type:"circle",position:"down",animation:"slide",elementId:!1};w={},w.ff="undefined"!=typeof InstallTrigger,w.chrome=!!window.chrome,w.opera=!!window.opera||navigator.userAgent.indexOf("Opera")>=0,w.ie=!1,w.safari=Object.prototype.toString.call(window.HTMLElement).indexOf("Constructor")>0,w.supported=w.chrome||w.ff||w.opera;var x=[];g=function(){},f=m=!1;var T=function(){r=o(b,e),r.bgColor=n(r.bgColor),r.textColor=n(r.textColor),r.position=r.position.toLowerCase(),r.animation=O.types[""+r.animation]?r.animation:b.animation;var t=r.position.indexOf("up")>-1,i=r.position.indexOf("left")>-1;if(t||i)for(var f=0;f<O.types[""+r.animation].length;f++){var p=O.types[""+r.animation][f];t&&(p.y=p.y<.6?p.y-.4:p.y-2*p.y+(1-p.w)),i&&(p.x=p.x<.6?p.x-.4:p.x-2*p.x+(1-p.h)),O.types[""+r.animation][f]=p}r.type=S[""+r.type]?r.type:b.type;try{a=P.getIcon(),c=document.createElement("canvas"),d=document.createElement("img"),a.hasAttribute("href")?(d.setAttribute("src",a.getAttribute("href")),d.onload=function(){l=d.height>0?d.height:32,s=d.width>0?d.width:32,c.height=l,c.width=s,u=c.getContext("2d"),E.ready()}):(d.setAttribute("src",""),l=32,s=32,d.height=l,d.width=s,c.height=l,c.width=s,u=c.getContext("2d"),E.ready())}catch(e){throw"Error initializing favico. Message: "+e.message}},E={};E.ready=function(){f=!0,E.reset(),g()},E.reset=function(){f&&(x=[],p=!1,u.clearRect(0,0,s,l),u.drawImage(d,0,0,s,l),P.setIcon(c),window.clearTimeout(v),window.clearTimeout(y))},E.start=function(){if(f&&!h){var e=function(){p=x[0],h=!1,x.length>0&&(x.shift(),E.start())};if(x.length>0){h=!0;var t=function(){["type","animation","bgColor","textColor","fontFamily","fontStyle"].forEach(function(e){e in x[0].options&&(r[e]=x[0].options[e])}),O.run(x[0].options,function(){e()},!1)};p?O.run(p.options,function(){t()},!0):t()}}};var S={},M=function(e){return e.n="number"==typeof e.n?Math.abs(0|e.n):e.n,e.x=s*e.x,e.y=l*e.y,e.w=s*e.w,e.h=l*e.h,e.len=(""+e.n).length,e};S.circle=function(e){e=M(e);var t=!1;2===e.len?(e.x=e.x-.4*e.w,e.w=1.4*e.w,t=!0):e.len>=3&&(e.x=e.x-.65*e.w,e.w=1.65*e.w,t=!0),u.clearRect(0,0,s,l),u.drawImage(d,0,0,s,l),u.beginPath(),u.font=r.fontStyle+" "+Math.floor(e.h*(e.n>99?.85:1))+"px "+r.fontFamily,u.textAlign="center",t?(u.moveTo(e.x+e.w/2,e.y),u.lineTo(e.x+e.w-e.h/2,e.y),u.quadraticCurveTo(e.x+e.w,e.y,e.x+e.w,e.y+e.h/2),u.lineTo(e.x+e.w,e.y+e.h-e.h/2),u.quadraticCurveTo(e.x+e.w,e.y+e.h,e.x+e.w-e.h/2,e.y+e.h),u.lineTo(e.x+e.h/2,e.y+e.h),u.quadraticCurveTo(e.x,e.y+e.h,e.x,e.y+e.h-e.h/2),u.lineTo(e.x,e.y+e.h/2),u.quadraticCurveTo(e.x,e.y,e.x+e.h/2,e.y)):u.arc(e.x+e.w/2,e.y+e.h/2,e.h/2,0,2*Math.PI),u.fillStyle="rgba("+r.bgColor.r+","+r.bgColor.g+","+r.bgColor.b+","+e.o+")",u.fill(),u.closePath(),u.beginPath(),u.stroke(),u.fillStyle="rgba("+r.textColor.r+","+r.textColor.g+","+r.textColor.b+","+e.o+")","number"==typeof e.n&&e.n>999?u.fillText((e.n>9999?9:Math.floor(e.n/1e3))+"k+",Math.floor(e.x+e.w/2),Math.floor(e.y+e.h-.2*e.h)):u.fillText(e.n,Math.floor(e.x+e.w/2),Math.floor(e.y+e.h-.15*e.h)),u.closePath()},S.rectangle=function(e){e=M(e);var t=!1;2===e.len?(e.x=e.x-.4*e.w,e.w=1.4*e.w,t=!0):e.len>=3&&(e.x=e.x-.65*e.w,e.w=1.65*e.w,t=!0),u.clearRect(0,0,s,l),u.drawImage(d,0,0,s,l),u.beginPath(),u.font=r.fontStyle+" "+Math.floor(e.h*(e.n>99?.9:1))+"px "+r.fontFamily,u.textAlign="center",u.fillStyle="rgba("+r.bgColor.r+","+r.bgColor.g+","+r.bgColor.b+","+e.o+")",u.fillRect(e.x,e.y,e.w,e.h),u.fillStyle="rgba("+r.textColor.r+","+r.textColor.g+","+r.textColor.b+","+e.o+")","number"==typeof e.n&&e.n>999?u.fillText((e.n>9999?9:Math.floor(e.n/1e3))+"k+",Math.floor(e.x+e.w/2),Math.floor(e.y+e.h-.2*e.h)):u.fillText(e.n,Math.floor(e.x+e.w/2),Math.floor(e.y+e.h-.15*e.h)),u.closePath()};var L=function(e,t){t=("string"==typeof t?{animation:t}:t)||{},g=function(){try{if("number"==typeof e?e>0:""!==e){var o={type:"badge",options:{n:e}};if("animation"in t&&O.types[""+t.animation]&&(o.options.animation=""+t.animation),"type"in t&&S[""+t.type]&&(o.options.type=""+t.type),["bgColor","textColor"].forEach(function(e){e in t&&(o.options[e]=n(t[e]))}),["fontStyle","fontFamily"].forEach(function(e){e in t&&(o.options[e]=t[e])}),x.push(o),x.length>100)throw"Too many badges requests in queue.";E.start()}else E.reset()}catch(e){throw"Error setting badge. Message: "+e.message}},f&&g()},k=function(e){g=function(){try{var t=e.width,n=e.height,o=document.createElement("img"),i=n/l>t/s?t/s:n/l;o.setAttribute("src",e.getAttribute("src")),o.height=n/i,o.width=t/i,u.clearRect(0,0,s,l),u.drawImage(o,0,0,s,l),P.setIcon(c)}catch(e){throw"Error setting image. Message: "+e.message}},f&&g()},C=function(e){g=function(){try{if("stop"===e)return m=!0,E.reset(),void(m=!1);e.addEventListener("play",function(){t(this)},!1)}catch(e){throw"Error setting video. Message: "+e.message}},f&&g()},I=function(e){if(window.URL&&window.URL.createObjectURL||(window.URL=window.URL||{},window.URL.createObjectURL=function(e){return e}),w.supported){var n=!1;navigator.getUserMedia=navigator.getUserMedia||navigator.oGetUserMedia||navigator.msGetUserMedia||navigator.mozGetUserMedia||navigator.webkitGetUserMedia,g=function(){try{if("stop"===e)return m=!0,E.reset(),void(m=!1);n=document.createElement("video"),n.width=s,n.height=l,navigator.getUserMedia({video:!0,audio:!1},function(e){n.src=URL.createObjectURL(e),n.play(),t(n)},function(){})}catch(e){throw"Error setting webcam. Message: "+e.message}},f&&g()}},P={};P.getIcon=function(){var e=!1,t="",n=function(){for(var e=document.getElementsByTagName("head")[0].getElementsByTagName("link"),t=e.length,n=t-1;n>=0;n--)if(/(^|\s)icon(\s|$)/i.test(e[n].getAttribute("rel")))return e[n];return!1};if(r.elementId?(e=document.getElementById(r.elementId),e.setAttribute("href",e.getAttribute("src"))):(e=n(),e===!1&&(e=document.createElement("link"),e.setAttribute("rel","icon"),document.getElementsByTagName("head")[0].appendChild(e))),t=r.elementId?e.src:e.href,"data:"!==t.substr(0,5)&&-1===t.indexOf(document.location.hostname))throw new Error("Error setting favicon. Favicon image is on different domain (Icon: "+t+", Domain: "+document.location.hostname+")");return e.setAttribute("type","image/png"),e},P.setIcon=function(e){var t=e.toDataURL("image/png");if(r.elementId)document.getElementById(r.elementId).setAttribute("src",t);else if(w.ff||w.opera){var n=a;a=document.createElement("link"),w.opera&&a.setAttribute("rel","icon"),a.setAttribute("rel","icon"),a.setAttribute("type","image/png"),document.getElementsByTagName("head")[0].appendChild(a),a.setAttribute("href",t),n.parentNode&&n.parentNode.removeChild(n)}else a.setAttribute("href",t)};var O={};return O.duration=40,O.types={},O.types.fade=[{x:.4,y:.4,w:.6,h:.6,o:0},{x:.4,y:.4,w:.6,h:.6,o:.1},{x:.4,y:.4,w:.6,h:.6,o:.2},{x:.4,y:.4,w:.6,h:.6,o:.3},{x:.4,y:.4,w:.6,h:.6,o:.4},{x:.4,y:.4,w:.6,h:.6,o:.5},{x:.4,y:.4,w:.6,h:.6,o:.6},{x:.4,y:.4,w:.6,h:.6,o:.7},{x:.4,y:.4,w:.6,h:.6,o:.8},{x:.4,y:.4,w:.6,h:.6,o:.9},{x:.4,y:.4,w:.6,h:.6,o:1}],O.types.none=[{x:.4,y:.4,w:.6,h:.6,o:1}],O.types.pop=[{x:1,y:1,w:0,h:0,o:1},{x:.9,y:.9,w:.1,h:.1,o:1},{x:.8,y:.8,w:.2,h:.2,o:1},{x:.7,y:.7,w:.3,h:.3,o:1},{x:.6,y:.6,w:.4,h:.4,o:1},{x:.5,y:.5,w:.5,h:.5,o:1},{x:.4,y:.4,w:.6,h:.6,o:1}],O.types.popFade=[{x:.75,y:.75,w:0,h:0,o:0},{x:.65,y:.65,w:.1,h:.1,o:.2},{x:.6,y:.6,w:.2,h:.2,o:.4},{x:.55,y:.55,w:.3,h:.3,o:.6},{x:.5,y:.5,w:.4,h:.4,o:.8},{x:.45,y:.45,w:.5,h:.5,o:.9},{x:.4,y:.4,w:.6,h:.6,o:1}],O.types.slide=[{x:.4,y:1,w:.6,h:.6,o:1},{x:.4,y:.9,w:.6,h:.6,o:1},{x:.4,y:.9,w:.6,h:.6,o:1},{x:.4,y:.8,w:.6,h:.6,o:1},{x:.4,y:.7,w:.6,h:.6,o:1},{x:.4,y:.6,w:.6,h:.6,o:1},{x:.4,y:.5,w:.6,h:.6,o:1},{x:.4,y:.4,w:.6,h:.6,o:1}],O.run=function(e,t,n,a){var l=O.types[i()?"none":r.animation];return a=n===!0?"undefined"!=typeof a?a:l.length-1:"undefined"!=typeof a?a:0,t=t?t:function(){},a<l.length&&a>=0?(S[r.type](o(e,l[a])),v=setTimeout(function(){n?a-=1:a+=1,O.run(e,t,n,a)},O.duration),void P.setIcon(c)):void t()},T(),{badge:L,video:C,image:k,webcam:I,reset:E.reset,browser:{supported:w.supported}}};"undefined"!=typeof define&&define.amd?define([],function(){return e}):"undefined"!=typeof module&&module.exports?module.exports=e:this.Favico=e}(),function(e){"function"==typeof define&&define.amd&&define.amd.jQuery?define(["jquery"],e):e(jQuery)}(function(e){function t(t){return!t||void 0!==t.allowPageScroll||void 0===t.swipe&&void 0===t.swipeStatus||(t.allowPageScroll=c),void 0!==t.click&&void 0===t.tap&&(t.tap=t.click),t||(t={}),t=e.extend({},e.fn.swipe.defaults,t),this.each(function(){var o=e(this),i=o.data(k);i||(i=new n(this,t),o.data(k,i))})}function n(t,n){function C(t){if(!(ce()||e(t.target).closest(n.excludedElements,Be).length>0)){var o,i=t.originalEvent?t.originalEvent:t,r=S?i.touches[0]:i;return We=b,S?Fe=i.touches.length:t.preventDefault(),je=0,qe=null,Ye=null,Ue=0,ze=0,Ne=0,He=1,Xe=0,Qe=he(),_e=we(),le(),!S||Fe===n.fingers||n.fingers===v||_()?(de(0,r),Ge=Le(),2==Fe&&(de(1,i.touches[1]),ze=Ne=be(Qe[0].start,Qe[1].start)),(n.swipeStatus||n.pinchStatus)&&(o=j(i,We))):o=!1,o===!1?(We=E,j(i,We),o):(n.hold&&(et=setTimeout(e.proxy(function(){Be.trigger("hold",[i.target]),n.hold&&(o=n.hold.call(Be,i,i.target))},this),n.longTapThreshold)),ue(!0),null)}}function I(e){var t=e.originalEvent?e.originalEvent:e;if(We!==T&&We!==E&&!se()){var o,i=S?t.touches[0]:t,r=fe(i);if(Ke=Le(),S&&(Fe=t.touches.length),n.hold&&clearTimeout(et),We=x,2==Fe&&(0==ze?(de(1,t.touches[1]),ze=Ne=be(Qe[0].start,Qe[1].start)):(fe(t.touches[1]),Ne=be(Qe[0].end,Qe[1].end),Ye=Te(Qe[0].end,Qe[1].end)),He=xe(ze,Ne),Xe=Math.abs(ze-Ne)),Fe===n.fingers||n.fingers===v||!S||_()){if(qe=Me(r.start,r.end),X(e,qe),je=Ee(r.start,r.end),Ue=ye(),ge(qe,je),(n.swipeStatus||n.pinchStatus)&&(o=j(t,We)),!n.triggerOnTouchEnd||n.triggerOnTouchLeave){var a=!0;if(n.triggerOnTouchLeave){var l=ke(this);a=Ce(r.end,l)}!n.triggerOnTouchEnd&&a?We=R(x):n.triggerOnTouchLeave&&!a&&(We=R(T)),(We==E||We==T)&&j(t,We)}}else We=E,j(t,We);o===!1&&(We=E,j(t,We))}}function P(e){var t=e.originalEvent;return S&&t.touches.length>0?(ae(),!0):(se()&&(Fe=$e),Ke=Le(),Ue=ye(),z()||!U()?(We=E,j(t,We)):n.triggerOnTouchEnd||0==n.triggerOnTouchEnd&&We===x?(e.preventDefault(),We=T,j(t,We)):!n.triggerOnTouchEnd&&V()?(We=T,q(t,We,p)):We===x&&(We=E,j(t,We)),ue(!1),null)}function O(){Fe=0,Ke=0,Ge=0,ze=0,Ne=0,He=1,le(),ue(!1)}function A(e){var t=e.originalEvent;n.triggerOnTouchLeave&&(We=R(T),j(t,We))}function D(){Be.unbind(Pe,C),Be.unbind(Re,O),Be.unbind(Oe,I),Be.unbind(Ae,P),De&&Be.unbind(De,A),ue(!1)}function R(e){var t=e,o=H(),i=U(),r=z();return!o||r?t=E:!i||e!=x||n.triggerOnTouchEnd&&!n.triggerOnTouchLeave?!i&&e==T&&n.triggerOnTouchLeave&&(t=E):t=T,t}function j(e,t){var n=void 0;return Q()||F()?n=q(e,t,d):(B()||_())&&n!==!1&&(n=q(e,t,f)),ie()&&n!==!1?n=q(e,t,h):re()&&n!==!1?n=q(e,t,g):oe()&&n!==!1&&(n=q(e,t,p)),t===E&&O(e),t===T&&(S?0==e.touches.length&&O(e):O(e)),n}function q(t,c,u){var m=void 0;if(u==d){if(Be.trigger("swipeStatus",[c,qe||null,je||0,Ue||0,Fe,Qe]),n.swipeStatus&&(m=n.swipeStatus.call(Be,t,c,qe||null,je||0,Ue||0,Fe,Qe),m===!1))return!1;if(c==T&&W()){if(Be.trigger("swipe",[qe,je,Ue,Fe,Qe]),n.swipe&&(m=n.swipe.call(Be,t,qe,je,Ue,Fe,Qe),m===!1))return!1;switch(qe){case o:Be.trigger("swipeLeft",[qe,je,Ue,Fe,Qe]),n.swipeLeft&&(m=n.swipeLeft.call(Be,t,qe,je,Ue,Fe,Qe));break;case i:Be.trigger("swipeRight",[qe,je,Ue,Fe,Qe]),n.swipeRight&&(m=n.swipeRight.call(Be,t,qe,je,Ue,Fe,Qe));break;case r:Be.trigger("swipeUp",[qe,je,Ue,Fe,Qe]),n.swipeUp&&(m=n.swipeUp.call(Be,t,qe,je,Ue,Fe,Qe));break;case a:Be.trigger("swipeDown",[qe,je,Ue,Fe,Qe]),n.swipeDown&&(m=n.swipeDown.call(Be,t,qe,je,Ue,Fe,Qe))}}}if(u==f){if(Be.trigger("pinchStatus",[c,Ye||null,Xe||0,Ue||0,Fe,He,Qe]),n.pinchStatus&&(m=n.pinchStatus.call(Be,t,c,Ye||null,Xe||0,Ue||0,Fe,He,Qe),m===!1))return!1;if(c==T&&Y())switch(Ye){case l:Be.trigger("pinchIn",[Ye||null,Xe||0,Ue||0,Fe,He,Qe]),n.pinchIn&&(m=n.pinchIn.call(Be,t,Ye||null,Xe||0,Ue||0,Fe,He,Qe));break;case s:Be.trigger("pinchOut",[Ye||null,Xe||0,Ue||0,Fe,He,Qe]),n.pinchOut&&(m=n.pinchOut.call(Be,t,Ye||null,Xe||0,Ue||0,Fe,He,Qe))}}return u==p?(c===E||c===T)&&(clearTimeout(Je),clearTimeout(et),$()&&!ee()?(Ze=Le(),Je=setTimeout(e.proxy(function(){Ze=null,Be.trigger("tap",[t.target]),n.tap&&(m=n.tap.call(Be,t,t.target))},this),n.doubleTapThreshold)):(Ze=null,Be.trigger("tap",[t.target]),n.tap&&(m=n.tap.call(Be,t,t.target)))):u==h?(c===E||c===T)&&(clearTimeout(Je),Ze=null,Be.trigger("doubletap",[t.target]),n.doubleTap&&(m=n.doubleTap.call(Be,t,t.target))):u==g&&(c===E||c===T)&&(clearTimeout(Je),Ze=null,Be.trigger("longtap",[t.target]),n.longTap&&(m=n.longTap.call(Be,t,t.target))),m}function U(){var e=!0;return null!==n.threshold&&(e=je>=n.threshold),e}function z(){var e=!1;return null!==n.cancelThreshold&&null!==qe&&(e=me(qe)-je>=n.cancelThreshold),e}function N(){return null!==n.pinchThreshold?Xe>=n.pinchThreshold:!0}function H(){var e;return e=n.maxTimeThreshold&&Ue>=n.maxTimeThreshold?!1:!0}function X(e,t){if(n.allowPageScroll===c||_())e.preventDefault();else{var l=n.allowPageScroll===u;switch(t){case o:(n.swipeLeft&&l||!l&&n.allowPageScroll!=m)&&e.preventDefault();break;case i:(n.swipeRight&&l||!l&&n.allowPageScroll!=m)&&e.preventDefault();break;case r:(n.swipeUp&&l||!l&&n.allowPageScroll!=w)&&e.preventDefault();break;case a:(n.swipeDown&&l||!l&&n.allowPageScroll!=w)&&e.preventDefault()}}}function Y(){var e=G(),t=K(),n=N();return e&&t&&n}function _(){return!!(n.pinchStatus||n.pinchIn||n.pinchOut)}function B(){return!(!Y()||!_())}function W(){var e=H(),t=U(),n=G(),o=K(),i=z(),r=!i&&o&&n&&t&&e;return r}function F(){return!!(n.swipe||n.swipeStatus||n.swipeLeft||n.swipeRight||n.swipeUp||n.swipeDown)}function Q(){return!(!W()||!F())}function G(){return Fe===n.fingers||n.fingers===v||!S}function K(){return 0!==Qe[0].end.x}function V(){return!!n.tap}function $(){return!!n.doubleTap}function Z(){return!!n.longTap}function J(){if(null==Ze)return!1;var e=Le();return $()&&e-Ze<=n.doubleTapThreshold}function ee(){return J()}function te(){return(1===Fe||!S)&&(isNaN(je)||je<n.threshold)}function ne(){return Ue>n.longTapThreshold&&y>je}function oe(){return!(!te()||!V())}function ie(){return!(!J()||!$())}function re(){return!(!ne()||!Z())}function ae(){Ve=Le(),$e=event.touches.length+1}function le(){Ve=0,$e=0}function se(){var e=!1;if(Ve){var t=Le()-Ve;t<=n.fingerReleaseThreshold&&(e=!0)}return e}function ce(){return!(Be.data(k+"_intouch")!==!0)}function ue(e){e===!0?(Be.bind(Oe,I),Be.bind(Ae,P),De&&Be.bind(De,A)):(Be.unbind(Oe,I,!1),Be.unbind(Ae,P,!1),De&&Be.unbind(De,A,!1)),Be.data(k+"_intouch",e===!0)}function de(e,t){var n=void 0!==t.identifier?t.identifier:0;return Qe[e].identifier=n,Qe[e].start.x=Qe[e].end.x=t.pageX||t.clientX,Qe[e].start.y=Qe[e].end.y=t.pageY||t.clientY,Qe[e]}function fe(e){var t=void 0!==e.identifier?e.identifier:0,n=pe(t);return n.end.x=e.pageX||e.clientX,n.end.y=e.pageY||e.clientY,n}function pe(e){for(var t=0;t<Qe.length;t++)if(Qe[t].identifier==e)return Qe[t]}function he(){for(var e=[],t=0;5>=t;t++)e.push({start:{x:0,y:0},end:{x:0,y:0},identifier:0});return e}function ge(e,t){t=Math.max(t,me(e)),_e[e].distance=t}function me(e){return _e[e]?_e[e].distance:void 0}function we(){var e={};return e[o]=ve(o),e[i]=ve(i),e[r]=ve(r),e[a]=ve(a),e}function ve(e){return{direction:e,distance:0}}function ye(){return Ke-Ge}function be(e,t){var n=Math.abs(e.x-t.x),o=Math.abs(e.y-t.y);return Math.round(Math.sqrt(n*n+o*o))}function xe(e,t){var n=t/e*1;return n.toFixed(2)}function Te(){return 1>He?s:l}function Ee(e,t){return Math.round(Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)))}function Se(e,t){var n=e.x-t.x,o=t.y-e.y,i=Math.atan2(o,n),r=Math.round(180*i/Math.PI);return 0>r&&(r=360-Math.abs(r)),r}function Me(e,t){var n=Se(e,t);return 45>=n&&n>=0?o:360>=n&&n>=315?o:n>=135&&225>=n?i:n>45&&135>n?a:r}function Le(){var e=new Date;return e.getTime()}function ke(t){t=e(t);var n=t.offset(),o={left:n.left,right:n.left+t.outerWidth(),top:n.top,bottom:n.top+t.outerHeight()};return o}function Ce(e,t){return e.x>t.left&&e.x<t.right&&e.y>t.top&&e.y<t.bottom}var Ie=S||L||!n.fallbackToMouseEvents,Pe=Ie?L?M?"MSPointerDown":"pointerdown":"touchstart":"mousedown",Oe=Ie?L?M?"MSPointerMove":"pointermove":"touchmove":"mousemove",Ae=Ie?L?M?"MSPointerUp":"pointerup":"touchend":"mouseup",De=Ie?null:"mouseleave",Re=L?M?"MSPointerCancel":"pointercancel":"touchcancel",je=0,qe=null,Ue=0,ze=0,Ne=0,He=1,Xe=0,Ye=0,_e=null,Be=e(t),We="start",Fe=0,Qe=null,Ge=0,Ke=0,Ve=0,$e=0,Ze=0,Je=null,et=null;try{Be.bind(Pe,C),Be.bind(Re,O)}catch(t){e.error("events not supported "+Pe+","+Re+" on jQuery.swipe")}this.enable=function(){return Be.bind(Pe,C),Be.bind(Re,O),Be},this.disable=function(){return D(),Be},this.destroy=function(){return D(),Be.data(k,null),Be},this.option=function(t,o){if(void 0!==n[t]){if(void 0===o)return n[t];n[t]=o}else e.error("Option "+t+" does not exist on jQuery.swipe.options");return null}}var o="left",i="right",r="up",a="down",l="in",s="out",c="none",u="auto",d="swipe",f="pinch",p="tap",h="doubletap",g="longtap",m="horizontal",w="vertical",v="all",y=10,b="start",x="move",T="end",E="cancel",S="ontouchstart"in window,M=window.navigator.msPointerEnabled&&!window.navigator.pointerEnabled,L=window.navigator.pointerEnabled||window.navigator.msPointerEnabled,k="TouchSwipe",C={fingers:1,threshold:75,cancelThreshold:null,pinchThreshold:20,maxTimeThreshold:null,fingerReleaseThreshold:250,longTapThreshold:500,doubleTapThreshold:200,swipe:null,swipeLeft:null,swipeRight:null,swipeUp:null,swipeDown:null,swipeStatus:null,pinchIn:null,pinchOut:null,pinchStatus:null,click:null,tap:null,doubleTap:null,longTap:null,hold:null,triggerOnTouchEnd:!0,triggerOnTouchLeave:!1,allowPageScroll:"auto",fallbackToMouseEvents:!0,excludedElements:"label, button, input, select, textarea, a, .noSwipe"};e.fn.swipe=function(n){var o=e(this),i=o.data(k);if(i&&"string"==typeof n){if(i[n])return i[n].apply(this,Array.prototype.slice.call(arguments,1));e.error("Method "+n+" does not exist on jQuery.swipe")}else if(!(i||"object"!=typeof n&&n))return t.apply(this,arguments);return o},e.fn.swipe.defaults=C,e.fn.swipe.phases={PHASE_START:b,PHASE_MOVE:x,PHASE_END:T,PHASE_CANCEL:E},e.fn.swipe.directions={LEFT:o,RIGHT:i,UP:r,DOWN:a,IN:l,OUT:s},e.fn.swipe.pageScroll={NONE:c,HORIZONTAL:m,VERTICAL:w,AUTO:u},e.fn.swipe.fingers={ONE:1,TWO:2,THREE:3,ALL:v}}),function(e){(jQuery.browser=jQuery.browser||{}).mobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))}(navigator.userAgent||navigator.vendor||window.opera),function(e){var t={init:function(){var t=["paddingTop","paddingRight","paddingBottom","paddingLeft","fontSize","lineHeight","fontFamily","width","fontWeight","border-top-width","border-right-width","border-bottom-width","border-left-width","-moz-box-sizing","-webkit-box-sizing","box-sizing"];return this.each(function(){function n(){for(var e=0;e<t.length;e++)a.css(t[e],r.css(t[e]))}function o(){var e=r.val().replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/&/g,"&").replace(/\n/g,"<br/>");a.html(e+"&nbsp;"),i()}function i(){var e=a.height(),t="hidden",n=l?e+u+s:e+u;n>f?(n=f,t="auto"):d>n&&(n=d),r.height()!==n&&r.css({overflow:t,height:n+"px"})}if("textarea"!==this.type)return!1;var r=e(this).css({resize:"none",overflow:"hidden"}),a=e("<div></div>").css({position:"absolute",display:"none","word-wrap":"break-word","white-space":"pre-wrap","border-style":"solid"}).appendTo(document.body);n();var l="border-box"==r.css("box-sizing")||"border-box"==r.css("-moz-box-sizing")||"border-box"==r.css("-webkit-box-sizing"),s=parseInt(r.css("border-top-width"))+parseInt(r.css("padding-top"))+parseInt(r.css("padding-bottom"))+parseInt(r.css("border-bottom-width")),c=parseInt(r.css("height"),10),u=parseInt(r.css("line-height"),10)||parseInt(r.css("font-size"),10),d=2*u>c?2*u:c,f=parseInt(r.css("max-height"),10)>-1?parseInt(r.css("max-height"),10):Number.MAX_VALUE;r.bind("keyup change cut paste",function(){o()}),e(window).bind("resize",function(){var e=parseInt(r.width(),10);a.width()!==e&&(a.css({width:e+"px"}),o())}),r.bind("blur",function(){i()}),r.bind("updateHeight",function(){n(),o()}),e(function(){o()})})}};e.fn.flexible=function(n){return t[n]?t[n].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof n&&n?void e.error("Method "+n+" does not exist on jQuery.flexible"):t.init.apply(this,arguments)}}(jQuery),function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):e("object"==typeof exports?require("jquery"):jQuery)}(function(e){"use strict";function t(e){return"string"==typeof e?parseInt(e,10):~~e}var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,includePadding:!1},o=0,i=function(){var e=o++;return function(t){var n=".perfect-scrollbar-"+e;return void 0===t?n:t+n}},r="WebkitAppearance"in document.documentElement.style;e.fn.perfectScrollbar=function(o,a){return this.each(function(){function l(e,n){var o=e+n,i=C-q;U=0>o?0:o>i?i:o;var r=t(U*(P-C)/(C-q));M.scrollTop(r)}function s(e,n){var o=e+n,i=k-A;
+
+D=0>o?0:o>i?i:o;var r=t(D*(I-k)/(k-A));M.scrollLeft(r)}function c(e){return S.minScrollbarLength&&(e=Math.max(e,S.minScrollbarLength)),S.maxScrollbarLength&&(e=Math.min(e,S.maxScrollbarLength)),e}function u(){var e={width:R};e.left=N?M.scrollLeft()+k-I:M.scrollLeft(),W?e.bottom=B-M.scrollTop():e.top=F+M.scrollTop(),Y.css(e);var t={top:M.scrollTop(),height:z};Z?t.right=N?I-M.scrollLeft()-$-V.outerWidth():$-M.scrollLeft():t.left=N?M.scrollLeft()+2*k-I-J-V.outerWidth():J+M.scrollLeft(),K.css(t),_.css({left:D,width:A-Q}),V.css({top:U,height:q-ee})}function d(){M.removeClass("ps-active-x"),M.removeClass("ps-active-y"),k=S.includePadding?M.innerWidth():M.width(),C=S.includePadding?M.innerHeight():M.height(),I=M.prop("scrollWidth"),P=M.prop("scrollHeight"),!S.suppressScrollX&&I>k+S.scrollXMarginOffset?(O=!0,R=k-G,A=c(t(R*k/I)),D=t(M.scrollLeft()*(R-A)/(I-k))):(O=!1,A=0,D=0,M.scrollLeft(0)),!S.suppressScrollY&&P>C+S.scrollYMarginOffset?(j=!0,z=C-te,q=c(t(z*C/P)),U=t(M.scrollTop()*(z-q)/(P-C))):(j=!1,q=0,U=0,M.scrollTop(0)),D>=R-A&&(D=R-A),U>=z-q&&(U=z-q),u(),O&&M.addClass("ps-active-x"),j&&M.addClass("ps-active-y")}function f(){var t,n,o=function(e){s(t,e.pageX-n),d(),e.stopPropagation(),e.preventDefault()},i=function(){Y.removeClass("in-scrolling"),e(X).unbind(H("mousemove"),o)};_.bind(H("mousedown"),function(r){n=r.pageX,t=_.position().left,Y.addClass("in-scrolling"),e(X).bind(H("mousemove"),o),e(X).one(H("mouseup"),i),r.stopPropagation(),r.preventDefault()}),t=n=null}function p(){var t,n,o=function(e){l(t,e.pageY-n),d(),e.stopPropagation(),e.preventDefault()},i=function(){K.removeClass("in-scrolling"),e(X).unbind(H("mousemove"),o)};V.bind(H("mousedown"),function(r){n=r.pageY,t=V.position().top,K.addClass("in-scrolling"),e(X).bind(H("mousemove"),o),e(X).one(H("mouseup"),i),r.stopPropagation(),r.preventDefault()}),t=n=null}function h(e,t){var n=M.scrollTop();if(0===e){if(!j)return!1;if(0===n&&t>0||n>=P-C&&0>t)return!S.wheelPropagation}var o=M.scrollLeft();if(0===t){if(!O)return!1;if(0===o&&0>e||o>=I-k&&e>0)return!S.wheelPropagation}return!0}function g(e,t){var n=M.scrollTop(),o=M.scrollLeft(),i=Math.abs(e),r=Math.abs(t);if(r>i){if(0>t&&n===P-C||t>0&&0===n)return!S.swipePropagation}else if(i>r&&(0>e&&o===I-k||e>0&&0===o))return!S.swipePropagation;return!0}function m(){function e(e){var t=e.originalEvent.deltaX,n=-1*e.originalEvent.deltaY;return(void 0===t||void 0===n)&&(t=-1*e.originalEvent.wheelDeltaX/6,n=e.originalEvent.wheelDeltaY/6),e.originalEvent.deltaMode&&1===e.originalEvent.deltaMode&&(t*=10,n*=10),t!==t&&n!==n&&(t=0,n=e.originalEvent.wheelDelta),[t,n]}function t(t){if(r||!(M.find("select:focus").length>0)){var o=e(t),i=o[0],a=o[1];n=!1,S.useBothWheelAxes?j&&!O?(M.scrollTop(a?M.scrollTop()-a*S.wheelSpeed:M.scrollTop()+i*S.wheelSpeed),n=!0):O&&!j&&(M.scrollLeft(i?M.scrollLeft()+i*S.wheelSpeed:M.scrollLeft()-a*S.wheelSpeed),n=!0):(M.scrollTop(M.scrollTop()-a*S.wheelSpeed),M.scrollLeft(M.scrollLeft()+i*S.wheelSpeed)),d(),n=n||h(i,a),n&&(t.stopPropagation(),t.preventDefault())}}var n=!1;void 0!==window.onwheel?M.bind(H("wheel"),t):void 0!==window.onmousewheel&&M.bind(H("mousewheel"),t)}function w(){var t=!1;M.bind(H("mouseenter"),function(){t=!0}),M.bind(H("mouseleave"),function(){t=!1});var n=!1;e(X).bind(H("keydown"),function(o){if((!o.isDefaultPrevented||!o.isDefaultPrevented())&&t){for(var i=document.activeElement?document.activeElement:X.activeElement;i.shadowRoot;)i=i.shadowRoot.activeElement;if(!e(i).is(":input,[contenteditable]")){var r=0,a=0;switch(o.which){case 37:r=-30;break;case 38:a=30;break;case 39:r=30;break;case 40:a=-30;break;case 33:a=90;break;case 32:case 34:a=-90;break;case 35:a=o.ctrlKey?-P:-C;break;case 36:a=o.ctrlKey?M.scrollTop():C;break;default:return}M.scrollTop(M.scrollTop()-a),M.scrollLeft(M.scrollLeft()+r),n=h(r,a),n&&o.preventDefault()}}})}function v(){function e(e){e.stopPropagation()}V.bind(H("click"),e),K.bind(H("click"),function(e){var n=t(q/2),o=e.pageY-K.offset().top-n,i=C-q,r=o/i;0>r?r=0:r>1&&(r=1),M.scrollTop((P-C)*r)}),_.bind(H("click"),e),Y.bind(H("click"),function(e){var n=t(A/2),o=e.pageX-Y.offset().left-n,i=k-A,r=o/i;0>r?r=0:r>1&&(r=1),M.scrollLeft((I-k)*r)})}function y(){function t(){var e=window.getSelection?window.getSelection():document.getSlection?document.getSlection():{rangeCount:0};return 0===e.rangeCount?null:e.getRangeAt(0).commonAncestorContainer}function n(){i||(i=setInterval(function(){return L()?(M.scrollTop(M.scrollTop()+r.top),M.scrollLeft(M.scrollLeft()+r.left),void d()):void clearInterval(i)},50))}function o(){i&&(clearInterval(i),i=null),Y.removeClass("in-scrolling"),K.removeClass("in-scrolling")}var i=null,r={top:0,left:0},a=!1;e(X).bind(H("selectionchange"),function(){e.contains(M[0],t())?a=!0:(a=!1,o())}),e(window).bind(H("mouseup"),function(){a&&(a=!1,o())}),e(window).bind(H("mousemove"),function(e){if(a){var t={x:e.pageX,y:e.pageY},i=M.offset(),l={left:i.left,right:i.left+M.outerWidth(),top:i.top,bottom:i.top+M.outerHeight()};t.x<l.left+3?(r.left=-5,Y.addClass("in-scrolling")):t.x>l.right-3?(r.left=5,Y.addClass("in-scrolling")):r.left=0,t.y<l.top+3?(r.top=5>l.top+3-t.y?-5:-20,K.addClass("in-scrolling")):t.y>l.bottom-3?(r.top=5>t.y-l.bottom+3?5:20,K.addClass("in-scrolling")):r.top=0,0===r.top&&0===r.left?o():n()}})}function b(t,n){function o(e,t){M.scrollTop(M.scrollTop()-t),M.scrollLeft(M.scrollLeft()-e),d()}function i(){w=!0}function r(){w=!1}function a(e){return e.originalEvent.targetTouches?e.originalEvent.targetTouches[0]:e.originalEvent}function l(e){var t=e.originalEvent;return t.targetTouches&&1===t.targetTouches.length?!0:t.pointerType&&"mouse"!==t.pointerType&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE?!0:!1}function s(e){if(l(e)){v=!0;var t=a(e);f.pageX=t.pageX,f.pageY=t.pageY,p=(new Date).getTime(),null!==m&&clearInterval(m),e.stopPropagation()}}function c(e){if(!w&&v&&l(e)){var t=a(e),n={pageX:t.pageX,pageY:t.pageY},i=n.pageX-f.pageX,r=n.pageY-f.pageY;o(i,r),f=n;var s=(new Date).getTime(),c=s-p;c>0&&(h.x=i/c,h.y=r/c,p=s),g(i,r)&&(e.stopPropagation(),e.preventDefault())}}function u(){!w&&v&&(v=!1,clearInterval(m),m=setInterval(function(){return L()?.01>Math.abs(h.x)&&.01>Math.abs(h.y)?void clearInterval(m):(o(30*h.x,30*h.y),h.x*=.8,void(h.y*=.8)):void clearInterval(m)},10))}var f={},p=0,h={},m=null,w=!1,v=!1;t&&(e(window).bind(H("touchstart"),i),e(window).bind(H("touchend"),r),M.bind(H("touchstart"),s),M.bind(H("touchmove"),c),M.bind(H("touchend"),u)),n&&(window.PointerEvent?(e(window).bind(H("pointerdown"),i),e(window).bind(H("pointerup"),r),M.bind(H("pointerdown"),s),M.bind(H("pointermove"),c),M.bind(H("pointerup"),u)):window.MSPointerEvent&&(e(window).bind(H("MSPointerDown"),i),e(window).bind(H("MSPointerUp"),r),M.bind(H("MSPointerDown"),s),M.bind(H("MSPointerMove"),c),M.bind(H("MSPointerUp"),u)))}function x(){M.bind(H("scroll"),function(){d()})}function T(){M.unbind(H()),e(window).unbind(H()),e(X).unbind(H()),M.data("perfect-scrollbar",null),M.data("perfect-scrollbar-update",null),M.data("perfect-scrollbar-destroy",null),_.remove(),V.remove(),Y.remove(),K.remove(),M=Y=K=_=V=O=j=k=C=I=P=A=D=B=W=F=q=U=$=Z=J=N=H=null}function E(){d(),x(),f(),p(),v(),y(),m(),(ne||oe)&&b(ne,oe),S.useKeyboard&&w(),M.data("perfect-scrollbar",M),M.data("perfect-scrollbar-update",d),M.data("perfect-scrollbar-destroy",T)}var S=e.extend(!0,{},n),M=e(this),L=function(){return!!M};if("object"==typeof o?e.extend(!0,S,o):a=o,"update"===a)return M.data("perfect-scrollbar-update")&&M.data("perfect-scrollbar-update")(),M;if("destroy"===a)return M.data("perfect-scrollbar-destroy")&&M.data("perfect-scrollbar-destroy")(),M;if(M.data("perfect-scrollbar"))return M.data("perfect-scrollbar");M.addClass("ps-container");var k,C,I,P,O,A,D,R,j,q,U,z,N="rtl"===M.css("direction"),H=i(),X=this.ownerDocument||document,Y=e("<div class='ps-scrollbar-x-rail'>").appendTo(M),_=e("<div class='ps-scrollbar-x'>").appendTo(Y),B=t(Y.css("bottom")),W=B===B,F=W?null:t(Y.css("top")),Q=t(Y.css("borderLeftWidth"))+t(Y.css("borderRightWidth")),G=t(Y.css("marginLeft"))+t(Y.css("marginRight")),K=e("<div class='ps-scrollbar-y-rail'>").appendTo(M),V=e("<div class='ps-scrollbar-y'>").appendTo(K),$=t(K.css("right")),Z=$===$,J=Z?null:t(K.css("left")),ee=t(K.css("borderTopWidth"))+t(K.css("borderBottomWidth")),te=t(K.css("marginTop"))+t(K.css("marginBottom")),ne="ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch,oe=null!==window.navigator.msMaxTouchPoints;return E(),M})}}); })(this);
 
 // WCF.js
-(function (window, undefined) { })(this);
+(function (window, undefined) {"use strict";function wcfEval(expression){return eval(expression)}!function(){var t=jQuery.fn.data;jQuery.fn.data=function(e){if(e)switch(typeof e){case"object":for(var i in e)if(i.match(/ID$/)){var n=e[i];delete e[i],i=i.replace(/ID$/,"-id"),e[i]=n}arguments[0]=e;break;case"string":e.match(/ID$/)&&(arguments[0]=e.replace(/ID$/,"-id"))}var s=t.apply(this,arguments);if(void 0===e)for(var i in s)i.match(/Id$/)&&(s[i.replace(/Id$/,"ID")]=s[i],delete s[i]);return s},window.console||(window.console={});for(var e=["log","info","warn","exception","assert","dir","dirxml","trace","group","groupEnd","groupCollapsed","profile","profileEnd","count","clear","time","timeEnd","timeStamp","table","error"],i=0;i<e.length;i++)"undefined"==typeof console[e[i]]&&(console[e[i]]=function(){});"undefined"==typeof console.debug&&(console.debug=function(t){console.log(t)})}(),String.prototype.hashCode=function(){var t,e=0;if(this.length)for(var i=0,n=this.length;n>i;i++)t=this.charCodeAt(i),e=(e<<5)-e+t,e&=e;return e},window.shuffle=function(t){for(var e,i,n=t.length;0!==n;)i=Math.floor(Math.random()*n),n-=1,e=t[n],t[n]=t[i],t[i]=e;return this},function(t){var e=navigator.userAgent.toLowerCase(),i=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[],n={browser:i[1]||"",version:i[2]||"0"},s={};n.browser&&(s[n.browser]=!0,s.version=n.version),s.chrome?s.webkit=!0:s.webkit&&(s.safari=!0),t.browser=t.browser||{},t.browser=$.extend(t.browser,s),t.browser.touch=!!("ontouchstart"in window)||!!("msMaxTouchPoints"in window.navigator)&&window.navigator.msMaxTouchPoints>0,t.browser.smartphone="bottom"==$("html").css("caption-side"),t.browser.mozilla&&e.match(/trident/)&&(t.browser.mozilla=!1,t.browser.msie=!0),t.browser.iOS=/\((ipad|iphone|ipod);/.test(e),t.browser.iOS&&$("html").addClass("iOS"),t.browser.android=-1!==e.indexOf("android"),t.browser.editor="redactor",t.browser.ckeditor=!1,t.browser.redactor=!0,t.browser.iOS&&(t.fn.focus=function(t,e){return arguments.length>0?this.on("focus",null,t,e):this.trigger("focus")})}(jQuery),window.WCF={},$.extend(!0,{removeArrayValue:function(t,e){return $.grep(t,function(t){return e!==t})},wcfEscapeID:function(t){return t.replace(/(:|\.)/g,"\\$1")},wcfIsset:function(t){return!!$("#"+$.wcfEscapeID(t)).length},getLength:function(t){var e=0;for(var i in t)t.hasOwnProperty(i)&&e++;return e}}),$.fn.extend({getTagName:function(){return this.length?this.get(0).tagName.toLowerCase():""},getDimensions:function(t){var e={},i={},n=!1;switch(this.is(":hidden")&&(e=WCF.getInlineCSS(this),n=!0,this.css({display:"block",visibility:"hidden"})),t){case"inner":i={height:this.innerHeight(),width:this.innerWidth()};break;case"outer":i={height:this.outerHeight(),width:this.outerWidth()};break;default:i={height:this.height(),width:this.width()}}return n&&WCF.revertInlineCSS(this,e,["display","visibility"]),i},getOffsets:function(t){var e={},i={},n=!1;switch(this.is(":hidden")&&(e=WCF.getInlineCSS(this),n=!0,this.css({display:"block",visibility:"hidden"})),t){case"offset":i=this.offset();break;case"position":default:i=this.position()}return n&&WCF.revertInlineCSS(this,e,["display","visibility"]),i},makePositioned:function(t,e){"absolute"!=t&&"fixed"!=t&&(t="absolute");var i=this.getOffsets("position");return this.css({position:t,left:i.left,margin:0,top:i.top}),e&&this.remove().appentTo("body"),this},disable:function(){return this.attr("disabled","disabled")},enable:function(){return this.removeAttr("disabled")},wcfIdentify:function(){return this.attr("id")||this.attr("id",WCF.getRandomID()),this.attr("id")},getCaret:function(){if(this.is("input")){if("text"!=this.attr("type")&&"password"!=this.attr("type"))return-1}else if(!this.is("textarea"))return-1;var t=0,e=this.get(0);if(document.selection){this.focus();var i=document.selection.createRange();i.moveStart("character",-this.val().length),t=i.text.length}else(e.selectionStart||"0"==e.selectionStart)&&(t=parseInt(e.selectionStart));return t},setCaret:function(t){if(this.is("input")){if("text"!=this.attr("type")&&"password"!=this.attr("type"))return!1}else if(!this.is("textarea"))return!1;var e=this.get(0);if(this.focus(),document.selection){var i=document.selection.createRange();i.moveStart("character",t),i.moveEnd("character",0),i.select()}else(e.selectionStart||"0"==e.selectionStart)&&(e.selectionStart=t,e.selectionEnd=t);return!0},wcfDropIn:function(t,e,i){return t||(t="up"),i&&parseInt(i)||(i=200),this.show(WCF.getEffect(this,"drop"),{direction:t},i,e)},wcfDropOut:function(t,e,i){return t||(t="down"),i&&parseInt(i)||(i=200),this.hide(WCF.getEffect(this,"drop"),{direction:t},i,e)},wcfBlindIn:function(t,e,i){return t||(t="vertical"),i&&parseInt(i)||(i=200),this.show(WCF.getEffect(this,"blind"),{direction:t},i,e)},wcfBlindOut:function(t,e,i){return t||(t="vertical"),i&&parseInt(i)||(i=200),this.hide(WCF.getEffect(this,"blind"),{direction:t},i,e)},wcfHighlight:function(t,e){return this.effect("highlight",t,600,e)},wcfFadeIn:function(t,e){return e&&parseInt(e)||(e=200),this.show(WCF.getEffect(this,"fade"),{},e,t)},wcfFadeOut:function(t,e){return e&&parseInt(e)||(e=200),this.hide(WCF.getEffect(this,"fade"),{},e,t)},cssAsNumber:function(t){if(this.length){var e=this.css(t);if(void 0!==e)return parseInt(e.replace(/px$/,""))}return 0}}),$.extend(WCF,{activeDialogs:0,_idCounter:0,getRandomID:function(){var t="";do t="wcf"+this._idCounter++;while($.wcfIsset(t));return t},inArray:function(t,e){return-1!=$.inArray(t,e)},getEffect:function(t,e){return t.is("tr")?"highlight":e},getInlineCSS:function(t){var e={},i=t.attr("style");if(!i)return{};i=i.split(";");for(var n=0,s=i.length;s>n;n++){var a=$.trim(i[n]);""!=a&&(a=a.split(":"),e[$.trim(a[0])]=$.trim(a[1]))}return e},revertInlineCSS:function(t,e,i){for(var n=0,s=i.length;s>n;n++){var a=i[n];e[a]?t.css(a,e[a]):t.css(a,"")}},getUUID:function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){var e=16*Math.random()|0,i="x"==t?e:3&e|8;return i.toString(16)})},base64toBlob:function(t,e,i){e=e||"",i=i||512;for(var n=atob(t),s=[],a=0;a<n.length;a+=i){for(var o=n.slice(a,a+i),r=new Array(o.length),l=0;l<o.length;l++)r[l]=o.charCodeAt(l);var c=new Uint8Array(r);s.push(c)}return new Blob(s,{type:e})},convertLegacyURL:function(t){return URL_LEGACY_MODE?t:t.replace(/^index\.php\/(.*?)\/\?/,function(t,e){for(var i=e.split(/([A-Z][a-z0-9]+)/),n="",s=0,a=i.length;a>s;s++){var o=i[s].trim();o.length&&(n.length&&(n+="-"),n+=o.toLowerCase())}return"index.php?"+n+"/&"})}}),WCF.Browser={_isChrome:null,isChrome:function(){return null===this._isChrome&&(this._isChrome=!1,/chrom(e|ium)/.test(navigator.userAgent.toLowerCase())&&(this._isChrome=!0)),this._isChrome}},WCF.Dropdown={_callbacks:{},_didInit:!1,_dropdowns:{},_menuContainer:null,_menus:{},init:function(){null===this._menuContainer&&(this._menuContainer=$('<div id="dropdownMenuContainer" />').appendTo(document.body));var t=this;$(".dropdownToggle:not(.jsDropdownEnabled)").each(function(e,i){t.initDropdown($(i),!1)}),this._didInit||(this._didInit=!0,WCF.CloseOverlayHandler.addCallback("WCF.Dropdown",$.proxy(this._closeAll,this)),WCF.DOMNodeInsertedHandler.addCallback("WCF.Dropdown",$.proxy(this.init,this)),$(document).on("scroll",$.proxy(this._scroll,this)))},_dialogScroll:function(t){var e=$(t.currentTarget);e.find(".dropdown.dropdownOpen").each(function(t,i){var n=$(i),s=n.wcfIdentify(),a=n.offset(),o=e.offset(),r=$(i).height()/2;a.top+r<=o.top?WCF.Dropdown.toggleDropdown(s):a.top>=o.top+e.height()?WCF.Dropdown.toggleDropdown(s):a.left<=o.left?WCF.Dropdown.toggleDropdown(s):a.left>=o.left+e.width()?WCF.Dropdown.toggleDropdown(s):WCF.Dropdown.setAlignmentByID(n.wcfIdentify())})},_scroll:function(){for(var t in this._dropdowns){var e=this._dropdowns[t];e.data("isOverlayDropdownButton")&&e.hasClass("dropdownOpen")&&this.setAlignmentByID(t)}},initDropdown:function(t,e){if(!t.hasClass("jsDropdownEnabled")&&!t.data("target")){var i=t.parents(".dropdown");if(!i.length)return void console.debug("[WCF.Dropdown] Invalid dropdown passed, button '"+t.wcfIdentify()+"' does not have a parent with .dropdown, aborting.");var n=t.next(".dropdownMenu");if(!n.length)return void console.debug("[WCF.Dropdown] Invalid dropdown passed, dropdown '"+i.wcfIdentify()+"' does not have a dropdown menu, aborting.");n.detach().appendTo(this._menuContainer);var s=i.wcfIdentify();this._dropdowns[s]||(t.addClass("jsDropdownEnabled").click($.proxy(this._toggle,this)),this._dropdowns[s]=i,this._menus[s]=n,s.match(/^wcf\d+$/)||n.attr("data-source",s)),t.data("target",s),e&&t.trigger("click")}},removeDropdown:function(t){this._menus[t]&&($(this._menus[t]).remove(),delete this._menus[t],delete this._dropdowns[t])},initDropdownFragment:function(t,e){var i=t.wcfIdentify();return this._dropdowns[i]?void console.debug("[WCF.Dropdown] Cannot register dropdown identified by '"+i+"' as a fragement."):(this._dropdowns[i]=t,void(this._menus[i]=e.detach().appendTo(this._menuContainer)))},registerCallback:function(t,e){return $.isFunction(e)?(this._callbacks[t]||(this._callbacks[t]=[]),void this._callbacks[t].push(e)):(console.debug("[WCF.Dropdown] Callback for '"+t+"' is invalid"),!1)},_toggle:function(t,e){var i=null===t?e:$(t.currentTarget).data("target"),n=this._dropdowns[i];if(n&&void 0===n.data("isOverlayDropdownButton")){var s=n.parents(".dialogContent");n.data("isOverlayDropdownButton",s.length>0),s.length&&s.on("scroll",this._dialogScroll)}for(var a in this._dropdowns){var o=this._dropdowns[a],r=this._menus[a];o.hasClass("dropdownOpen")?(o.removeClass("dropdownOpen"),r.removeClass("dropdownOpen"),this._notifyCallbacks(a,"close")):a===i&&r[0].children.length>0&&(o.addClass("dropdownOpen"),r.addClass("dropdownOpen"),this._notifyCallbacks(a,"open"),this.setAlignment(o,r))}return WCF.Dropdown.Interactive.Handler.closeAll(),null!==t?(t.stopPropagation(),!1):void 0},toggleDropdown:function(t){this._toggle(null,t)},getDropdown:function(t){return this._dropdowns[t]?this._dropdowns[t]:null},getDropdownMenu:function(t){return this._menus[t]?this._menus[t]:null},setAlignmentByID:function(t){var e=this.getDropdown(t);null===e&&console.debug("[WCF.Dropdown] Unable to find dropdown identified by '"+t+"'");var i=this.getDropdownMenu(t);null===i&&console.debug("[WCF.Dropdown] Unable to find dropdown menu identified by '"+t+"'"),this.setAlignment(e,i)},setAlignment:function(t,e){e.data("isInitialized")||e.data("isInitialized",!0).css({left:0,top:0});var i=t.getDimensions("outer"),n=t.getOffsets("offset"),s=e.getDimensions("outer"),a=$(window).width(),o=t.find(".dropdownToggle");o.hasClass("dropdownCaptionTextarea")&&(i=o.getDimensions("outer"));var r="left";n.left+s.width>a&&(r="right");var l="auto",c="auto";if("left"===r?(e.removeClass("dropdownArrowRight"),l=n.left):(e.addClass("dropdownArrowRight"),c=a-(n.left+i.width)),"rtl"==WCF.Language.get("wcf.global.pageDirection")){var h=l,d=c;"auto"==l?e.removeClass("dropdownArrowRight"):(c=a-(n.left+i.width),l="auto",c+s.width>a&&(l=h,c=d,e.addClass("dropdownArrowRight")))}"auto"==l?c+="px":l+="px";var u=!0;e.hasClass("dropdownOpen")&&(u=!1,e.removeClass("dropdownOpen"));var p="auto",_=n.top+i.height+7;if($.browser.smartphone){var r="bottom",f=!1,g=$(window).height(),m=_+s.height;if(m>g){var v=n.top+10-s.height;if(v>=0)r="top";else{f=!0;var b=Math.abs(v),w=Math.abs(m-g);r=b>=w?"bottom":"top"}}if("top"==r)p=$(window).height()-n.top+10,_="auto",f&&(_=0,e.children("ul.scrollableDropdownMenu").css("max-height",p)),e.addClass("dropdownArrowBottom");else{if(f){p=0;var C=e.children("ul.scrollableDropdownMenu");C.css("max-height",Math.min(C.css("max-height").replace(/px$/,""),g-_))}e.removeClass("dropdownArrowBottom")}}else _+s.height>$(window).height()+$(document).scrollTop()?(p=$(window).height()-n.top+10,_="auto",e.addClass("dropdownArrowBottom")):e.removeClass("dropdownArrowBottom");u||e.addClass("dropdownOpen"),e.css({bottom:p,left:l,right:c,top:_})},_closeAll:function(){for(var t in this._dropdowns){var e=this._dropdowns[t];e.hasClass("dropdownOpen")&&(e.removeClass("dropdownOpen"),this._menus[t].removeClass("dropdownOpen"),this._notifyCallbacks(t,"close"))}},close:function(t){this._dropdowns[t]&&(this._dropdowns[t].removeClass("dropdownOpen"),this._menus[t].removeClass("dropdownOpen"))},_notifyCallbacks:function(t,e){if(this._callbacks[t])for(var i=0,n=this._callbacks[t].length;n>i;i++)this._callbacks[t][i](t,e)},destroy:function(t){return void 0===this._dropdowns[t]?!1:(this.close(t),this._menus[t].remove(),delete this._menus[t],void delete this._dropdowns[t])}},WCF.Dropdown.Interactive={},WCF.Dropdown.Interactive.Handler={_dropdownContainer:null,_dropdownMenus:{},create:function(t,e,i){null===this._dropdownContainer&&(this._dropdownContainer=$('<div class="dropdownMenuContainer" />').appendTo(document.body),WCF.CloseOverlayHandler.addCallback("WCF.Dropdown.Interactive.Handler",$.proxy(this.closeAll,this)));var n=new WCF.Dropdown.Interactive.Instance(this._dropdownContainer,t,e,i);return this._dropdownMenus[e]=n,n},open:function(t){return this._dropdownMenus[t]?(this._dropdownMenus[t].open(),!0):!1},close:function(t){return this._dropdownMenus[t]?(this._dropdownMenus[t].close(),!0):!1},closeAll:function(){$.each(this._dropdownMenus,function(t,e){e.close()})}},WCF.Dropdown.Interactive.Instance=Class.extend({_container:null,_itemList:null,_linkList:null,_options:{},_pointer:null,_triggerElement:null,init:function(t,e,i,n){this._options=n||{},this._triggerElement=e;var s=null;if(n.staticDropdown===!0)this._container=this._triggerElement.find(".interactiveDropdownStatic:eq(0)").data("source",i).click(function(t){t.stopPropagation()});else{this._container=$('<div class="interactiveDropdown" data-source="'+i+'" />').click(function(t){t.stopPropagation()});var a=$('<div class="interactiveDropdownHeader" />').appendTo(this._container);$('<span class="interactiveDropdownTitle">'+n.title+"</span>").appendTo(a),this._linkList=$('<ul class="interactiveDropdownLinks"></ul>').appendTo(a),s=$('<div class="interactiveDropdownItemsContainer" />').appendTo(this._container),this._itemList=$('<ul class="interactiveDropdownItems" />').appendTo(s),$('<a href="'+n.showAllLink+'" class="interactiveDropdownShowAll">'+WCF.Language.get("wcf.user.panel.showAll")+"</a>").appendTo(this._container)}this._pointer=$('<span class="pointer"><span /></span>').appendTo(this._container),$.browser.mobile||null===s||s.perfectScrollbar({suppressScrollX:!0}),this._container.appendTo(t)},getContainer:function(){return this._container},getItemList:function(){return this._itemList},getLinkList:function(){return this._linkList},open:function(){WCF.Dropdown._closeAll(),this._container.addClass("open"),this.render()},close:function(){this._container.removeClass("open")},toggle:function(){return this._container.hasClass("open")?(this.close(),!1):(WCF.Dropdown.Interactive.Handler.closeAll(),this.open(),!0)},resetItems:function(){this._itemList.empty(),this.close()},render:function(){var t=WCF.Language.get("wcf.global.pageDirection");"bottom"===$("html").css("caption-side")?this._renderMobile(t):this._renderDesktop(t)},rebuildScrollbar:function(){if(!$.browser.mobile){var t=this._itemList.parent();t.perfectScrollbar("destroy"),t.perfectScrollbar({suppressScrollX:!0})}},_renderMobile:function(){var t=this._triggerElement.getDimensions("outer"),e=Math.floor(t.width/2),i=this._triggerElement.getOffsets("offset"),n=Math.floor(this._pointer.outerWidth()/2);this._container.css({top:i.top+t.height+"px"}),this._pointer.css({left:i.left+e-n+"px"})},_renderDesktop:function(t){var e=this._triggerElement.getDimensions("outer"),i=this._triggerElement.getOffsets("offset"),n=this._container.getDimensions(),s=$(window).width(),a=null,o=null;"ltr"===t?(a=this._getPositionLeft(i,n,s),a.result||(o=this._getPositionRight(i,n,e,s),o.result?a=null:o=null)):(o=this._getPositionRight(i,n,e,s),o.result||(a=this._getPositionLeft(i,n,s),a.result?o=null:a=null)),null===o?(this._container.css({left:a.left+"px",top:i.top+e.height+"px"}),this._pointer.css({left:this._options.pointerOffset?this._options.pointerOffset:"4px"})):(this._container.css({right:o.right+"px",top:i.top+e.height+"px"}),this._pointer.css({right:this._options.pointerOffset?this._options.pointerOffset:"4px"}))},_getPositionLeft:function(t,e,i){var n=t.left,s=t.left+e.width;return{left:n,result:i>s}},_getPositionRight:function(t,e,i,n){var s=t.left+i.width-e.width,a=n-(t.left+i.width);return{result:s>0,right:a}}}),WCF.Clipboard={_actionProxy:null,_actionObjects:{},_containers:null,_containerData:{},_hasMarkedItems:!1,_markedObjectIDs:{},_page:"",_pageObjectID:0,_proxy:null,_trackedElements:{},init:function(t,e,i,n){this._page=t,this._actionObjects=i||{},this._hasMarkedItems=e>0,this._pageObjectID=parseInt(n)||0,this._actionProxy=new WCF.Action.Proxy({success:$.proxy(this._actionSuccess,this),url:"index.php/ClipboardProxy/?t="+SECURITY_TOKEN+SID_ARG_2ND}),this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this),url:"index.php/Clipboard/?t="+SECURITY_TOKEN+SID_ARG_2ND}),this._containers=$(".jsClipboardContainer").each($.proxy(function(t,e){this._initContainer(e)},this)),this._hasMarkedItems&&this._containers.length&&this._loadMarkedItems();var s=this;WCF.DOMNodeInsertedHandler.addCallback("WCF.Clipboard",function(){s._containers=$(".jsClipboardContainer").each($.proxy(function(t,e){s._initContainer(e)},s))})},_loadMarkedItems:function(){new WCF.Action.Proxy({autoSend:!0,data:{containerData:this._containerData,pageClassName:this._page,pageObjectID:this._pageObjectID},success:$.proxy(this._loadMarkedItemsSuccess,this),url:"index.php/ClipboardLoadMarkedItems/?t="+SECURITY_TOKEN+SID_ARG_2ND})},reload:function(){null!==this._containers&&this._loadMarkedItems()},_loadMarkedItemsSuccess:function(t,e,i){this._resetMarkings();for(var n in t.markedItems){this._markedObjectIDs[n]||(this._markedObjectIDs[n]=[]);var s=t.markedItems[n];for(var a in s)this._markedObjectIDs[n].push(s[a]);this._containers.each($.proxy(function(t,e){var i=$(e);return i.data("type")!=n?!0:(i.find("input.jsClipboardItem").each($.proxy(function(t,e){var i=$(e);WCF.inArray(i.data("objectID"),this._markedObjectIDs[n])&&(i.prop("checked",!0),i.parents(".jsClipboardObject").addClass("jsMarked"))},this)),void i.find("input.jsClipboardMarkAll").each(function(t,e){var n=!0;i.find("input.jsClipboardItem").each(function(t,e){var i=$(e);i.prop("checked")||(n=!1)}),n&&$(e).prop("checked",!0)}))},this))}this._success(t,e,i)},_resetMarkings:function(){this._containers.each($.proxy(function(t,e){var i=$(e);this._markedObjectIDs[i.data("type")]=[],i.find("input.jsClipboardItem, input.jsClipboardMarkAll").prop("checked",!1),i.find(".jsClipboardObject").removeClass("jsMarked")},this))},_initContainer:function(t){var e=$(t),i=e.wcfIdentify();this._trackedElements[i]||(e.find(".jsClipboardMarkAll").data("hasContainer",i).click($.proxy(this._markAll,this)),this._markedObjectIDs[e.data("type")]=[],this._containerData[e.data("type")]={},$.each(e.data(),$.proxy(function(t,i){t.match(/^type(.+)/)&&(this._containerData[e.data("type")][WCF.String.lcfirst(t.replace(/^type/,""))]=i)},this)),this._trackedElements[i]=[]),e.find("input.jsClipboardItem").each($.proxy(function(t,e){var n=$(e),s=n.wcfIdentify();WCF.inArray(s,this._trackedElements[i])||(this._trackedElements[i].push(s),n.data("hasContainer",i).click($.proxy(this._click,this)))},this))},_click:function(t){var e=$(t.target),i=e.data("objectID"),n=e.prop("checked")?!0:!1,s=[i];if(e.data("hasContainer"))var a=$("#"+e.data("hasContainer")),o=a.data("type");else var o=e.data("type");if(n?(this._markedObjectIDs[o].push(i),e.parents(".jsClipboardObject").addClass("jsMarked")):(this._markedObjectIDs[o]=$.removeArrayValue(this._markedObjectIDs[o],i),e.parents(".jsClipboardObject").removeClass("jsMarked")),e.data("hasContainer")){var r=!0;a.find("input.jsClipboardItem").each(function(t,e){var i=$(e);i.prop("checked")||(r=!1)}),a.find(".jsClipboardMarkAll").each(function(t,e){r?$(e).prop("checked",!0):$(e).prop("checked",!1)})}this._saveState(o,s,n)},_markAll:function(t){var e=$(t.target),i=[],n=!0;if(e.is("input")&&(n=e.prop("checked")),e.data("hasContainer"))var s=$("#"+e.data("hasContainer")),a=s.data("type");else var a=e.data("type");e.data("hasContainer")&&(s.find("input.jsClipboardItem").each($.proxy(function(t,e){var s=$(e),o=s.data("objectID");n?s.prop("checked")||(s.prop("checked",!0),this._markedObjectIDs[a].push(o),i.push(o)):s.prop("checked")&&(s.prop("checked",!1),this._markedObjectIDs[a]=$.removeArrayValue(this._markedObjectIDs[a],o),i.push(o))},this)),n?s.find(".jsClipboardObject").addClass("jsMarked"):s.find(".jsClipboardObject").removeClass("jsMarked")),this._saveState(a,i,n)},_saveState:function(t,e,i){this._proxy.setOption("data",{action:i?"mark":"unmark",containerData:this._containerData,objectIDs:e,pageClassName:this._page,pageObjectID:this._pageObjectID,type:t}),this._proxy.sendRequest()},_success:function(data,textStatus,jqXHR){var $containers={};if($(".jsClipboardEditor").each(function(index,container){for(var $container=$(container),$types=eval($container.data("types")),$i=0,$length=$types.length;$length>$i;$i++){var $typeName=$types[$i];$containers[$typeName]=$container}var $containerID=$container.wcfIdentify();WCF.CloseOverlayHandler.removeCallback($containerID),$container.empty()}),data.items)for(var $typeName in data.items)if($containers[$typeName]){var $container=$containers[$typeName],$list=$container.children("ul");0==$list.length&&($list=$("<ul />").appendTo($container));var $editor=data.items[$typeName],$label=$('<li class="dropdown"><span class="dropdownToggle button">'+$editor.label+"</span></li>").appendTo($list),$itemList=$('<ol class="dropdownMenu"></ol>').appendTo($label);for(var $itemIndex in $editor.items){var $item=$editor.items[$itemIndex],$listItem=$("<li><span>"+$item.label+"</span></li>").appendTo($itemList);$listItem.data("container",$container),$listItem.data("objectType",$typeName),$listItem.data("actionName",$item.actionName).data("parameters",$item.parameters),$listItem.data("internalData",$item.internalData).data("url",$item.url).data("type",$typeName),$listItem.click($.proxy(this._executeAction,this))}$('<li class="dropdownDivider" />').appendTo($itemList);var $foo=$typeName;$("<li><span>"+WCF.Language.get("wcf.clipboard.item.unmarkAll")+"</span></li>").data("typeName",$typeName).appendTo($itemList).click($.proxy(function(t){var e=$(t.currentTarget).data("typeName");this._proxy.setOption("data",{action:"unmarkAll",type:e}),this._proxy.setOption("success",$.proxy(function(t,i,n){this._containers.each($.proxy(function(t,i){var n=$(i);return n.data("type")==e?(n.find(".jsClipboardMarkAll, .jsClipboardItem").prop("checked",!1),n.find(".jsClipboardObject").removeClass("jsMarked"),!1):void 0},this)),this._success(t,i,n),this._proxy.setOption("success",$.proxy(this._success,this)),this._loadMarkedItems()},this)),this._proxy.sendRequest()},this)),WCF.Dropdown.initDropdown($label.children(".dropdownToggle"),!1)}},_closeLists:function(){$(".jsClipboardEditor ul").removeClass("dropdownOpen")},_executeAction:function(t){var e=$(t.currentTarget),i=e.data("url");i&&(window.location.href=i);var n=!0;if(e.data("parameters").className&&e.data("parameters").actionName){if("unmarkAll"===e.data("parameters").actionName||e.data("parameters").objectIDs){var s=e.data("internalData").confirmMessage;if(s){var a=e.data("internalData").template;a&&(a=$(a)),WCF.System.Confirmation.show(s,$.proxy(function(t){if("confirm"===t){var i={};a&&a.length&&$("#wcfSystemConfirmationContent").find("input, select, textarea").each(function(t,e){var n=$(e);i[n.prop("name")]=n.val()}),this._executeAJAXActions(e,i)}},this),"",a)}else this._executeAJAXActions(e,{})}}else{var s=e.data("internalData").confirmMessage;s&&(n=!1,WCF.System.Confirmation.show(s,function(t){"confirm"===t&&e.data("container").trigger("clipboardAction",[e.data("type"),e.data("actionName"),e.data("parameters")])}))}n&&e.data("container").trigger("clipboardAction",[e.data("type"),e.data("actionName"),e.data("parameters")])},_executeAJAXActions:function(t,e){e=e||{};var i=[];"unmarkAll"!==t.data("parameters").actionName&&$.each(t.data("parameters").objectIDs,function(t,e){i.push(parseInt(e))});var n={data:e,containerData:this._containerData[t.data("type")]},s=t.data("internalData").parameters;if(void 0!==s)for(var a in s)n[a]=s[a];new WCF.Action.Proxy({autoSend:!0,data:{actionName:t.data("parameters").actionName,className:t.data("parameters").className,objectIDs:i,parameters:n},success:$.proxy(function(e){"unmarkAll"!==t.data("parameters").actionName&&t.data("container").trigger("clipboardActionResponse",[e,t.data("type"),t.data("actionName"),t.data("parameters")]),this._loadMarkedItems()},this)}),this._actionObjects[t.data("objectType")]&&this._actionObjects[t.data("objectType")][t.data("parameters").actionName]&&this._actionObjects[t.data("objectType")][t.data("parameters").actionName].triggerEffect(i)},sendRequest:function(t){var e=$(t);this._actionProxy.setOption("data",{parameters:e.data("parameters"),typeName:e.data("type")}),this._actionProxy.sendRequest()}},WCF.PeriodicalExecuter=Class.extend({_callback:null,_delay:0,_intervalID:null,_isExecuting:!1,init:function(t,e){return $.isFunction(t)?(this._callback=t,this._interval=e,void this.resume()):void console.debug("[WCF.PeriodicalExecuter] Given callback is invalid, aborting.")},_execute:function(){if(!this._isExecuting)try{this._isExecuting=!0,this._callback(this),this._isExecuting=!1}catch(t){throw this._isExecuting=!1,t}},stop:function(){this._intervalID&&clearInterval(this._intervalID)},resume:function(){this.restart()},restart:function(){this._intervalID&&this.stop(),this._intervalID=setInterval($.proxy(this._execute,this),this._interval)},setInterval:function(t){this._interval=t,this.restart()}}),WCF.LoadingOverlayHandler={_activeRequests:0,_loadingOverlay:null,_pending:null,show:function(){if(null===this._loadingOverlay){this._loadingOverlay=$('<div class="spinner"><span class="icon icon48 icon-spinner" /> <span>'+WCF.Language.get("wcf.global.loading")+"</span></div>").appendTo($("body"));var t=this._loadingOverlay.outerWidth();70>t&&(t=70),this._loadingOverlay.css({marginLeft:Math.ceil(-1*t/2),width:t}).hide()}if(this._activeRequests++,1==this._activeRequests&&null===this._pending){var e=this;this._pending=new WCF.PeriodicalExecuter(function(t){e._activeRequests&&e._loadingOverlay.stop(!0,!0).fadeIn(100),t.stop(),e._pending=null},250)}},hide:function(){this._activeRequests--,0==this._activeRequests&&(null!==this._pending&&(this._pending.stop(),this._pending=null),this._loadingOverlay.stop(!0,!0).fadeOut(100))},updateIcon:function(t,e){var i=void 0===e||e?"addClass":"removeClass";t.find(".icon")[i]("icon-spinner"),t.hasClass("icon")&&t[i]("icon-spinner")}},WCF.Action={},WCF.Action.Proxy=Class.extend({_showLoadingOverlayOnce:!1,_suppressErrors:!1,_lastRequest:null,init:function(t){this.options=$.extend(!0,{autoSend:!1,data:{},dataType:"json",after:null,init:null,jsonp:"callback",async:!0,failure:null,showLoadingOverlay:!0,success:null,suppressErrors:!1,type:"POST",url:"index.php/AJAXProxy/?t="+SECURITY_TOKEN+SID_ARG_2ND,aborted:null,autoAbortPrevious:!1},t),this.options.url=WCF.convertLegacyURL(this.options.url),this.confirmationDialog=null,this.loading=null,this._showLoadingOverlayOnce=!1,this._suppressErrors=this.options.suppressErrors===!0,this.options.autoSend&&this.sendRequest();var e=this;$(window).on("beforeunload",function(){e._suppressErrors=!0})},sendRequest:function(t){return this._init(),(t||this.options.autoAbortPrevious)&&this.abortPrevious(),this._lastRequest=$.ajax({data:this.options.data,dataType:this.options.dataType,jsonp:this.options.jsonp,async:this.options.async,type:this.options.type,url:this.options.url,success:$.proxy(this._success,this),error:$.proxy(this._failure,this)}),this._lastRequest},abortPrevious:function(){null!==this._lastRequest&&(this._lastRequest.abort(),this._lastRequest=null,(this.options.showLoadingOverlay||this._showLoadingOverlayOnce)&&WCF.LoadingOverlayHandler.hide())},showLoadingOverlayOnce:function(){this._showLoadingOverlayOnce=!0},suppressErrors:function(){this._suppressErrors=!0},_init:function(){$.isFunction(this.options.init)&&this.options.init(this),(this.options.showLoadingOverlay||this._showLoadingOverlayOnce)&&WCF.LoadingOverlayHandler.show()},_failure:function(t,e,i){if("abort"==e)return void($.isFunction(this.options.aborted)&&this.options.aborted(t));try{var n=$.parseJSON(t.responseText),s=!0;if($.isFunction(this.options.failure)&&(s=this.options.failure(n,t,e,i)),!this._suppressErrors&&s!==!1){var a="";n.stacktrace?a="<br /><p>Stacktrace:</p><p>"+n.stacktrace+"</p>":n.exceptionID&&(a="<br /><p>Exception ID: <code>"+n.exceptionID+"</code></p>"),$('<div class="ajaxDebugMessage"><p>'+n.message+"</p>"+a+"</div>").wcfDialog({title:WCF.Language.get("wcf.global.error.title")})}}catch(n){var s=!0;if($.isFunction(this.options.failure)&&(s=this.options.failure(null,t,e,i)),!this._suppressErrors&&s!==!1){var o="timeout"===e?WCF.Language.get("wcf.global.error.timeout"):t.responseText;o&&"undefined"!=o&&$('<div class="ajaxDebugMessage"><p>'+o+"</p></div>").wcfDialog({title:WCF.Language.get("wcf.global.error.title")})}}this._after()},_success:function(t,e,i){$.isFunction(this.options.success)&&(t&&t.returnValues&&void 0!==t.returnValues.template&&(t.returnValues.template=$.trim(t.returnValues.template)),this.options.success(t,e,i)),this._after()},_after:function(){this._lastRequest=null,$.isFunction(this.options.after)&&this.options.after(),(this.options.showLoadingOverlay||this._showLoadingOverlayOnce)&&(WCF.LoadingOverlayHandler.hide(),this._showLoadingOverlayOnce&&(this._showLoadingOverlayOnce=!1)),WCF.DOMNodeInsertedHandler.execute(),$("a[href*=#]").each(function(t,e){var i=$(e);if(-1!=i.prop("href").indexOf("AJAXProxy")){var n=i.prop("href").substr(i.prop("href").indexOf("#")),s=document.location.toString().replace(/#.*/,"");i.prop("href",s+n)}})},setOption:function(t,e){this.options[t]=e}}),WCF.Action.SimpleProxy=Class.extend({init:function(t,e){this.options=$.extend(!0,{action:"",className:"",elements:null,eventName:"click"},t),this.callbacks=$.extend(!0,{after:null,failure:null,init:null,success:null},e),this.options.elements&&(this.proxy=new WCF.Action.Proxy(this.callbacks),this.options.elements.each($.proxy(function(t,e){$(e).bind(this.options.eventName,$.proxy(this._handleEvent,this))},this)))},_handleEvent:function(t){this.proxy.setOption("data",{actionName:this.options.action,className:this.options.className,objectIDs:[$(t.target).data("objectID")]}),this.proxy.sendRequest()}}),WCF.Action.Delete=Class.extend({_buttonSelector:"",_className:"",_containerSelector:"",_containers:[],init:function(t,e,i){this._containerSelector=e,this._className=t,this._buttonSelector=i?i:".jsDeleteButton",this.proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._initElements(),WCF.DOMNodeInsertedHandler.addCallback("WCF.Action.Delete"+this._className.hashCode(),$.proxy(this._initElements,this))},_initElements:function(){$(this._containerSelector).each(function(t,e){var i=$(e),n=i.wcfIdentify();if(!WCF.inArray(n,this._containers)){var s=i.find(this._buttonSelector);s.length&&(this._containers.push(n),s.click($.proxy(this._click,this)))}}.bind(this))},_click:function(t){var e=$(t.currentTarget);t.preventDefault(),e.data("confirmMessage")?WCF.System.Confirmation.show(e.data("confirmMessage"),$.proxy(this._execute,this),{target:e}):(WCF.LoadingOverlayHandler.updateIcon(e),this._sendRequest(e))},_didTriggerEffect:function(){},_execute:function(t,e){"cancel"!==t&&(WCF.LoadingOverlayHandler.updateIcon(e.target),this._sendRequest(e.target))},_sendRequest:function(t){this.proxy.setOption("data",{actionName:"delete",className:this._className,
+interfaceName:"wcf\\data\\IDeleteAction",objectIDs:[$(t).data("objectID")]}),this.proxy.sendRequest()},_success:function(t){this.triggerEffect(t.objectIDs)},triggerEffect:function(t){for(var e in this._containers){var i=$("#"+this._containers[e]),n=i.find(this._buttonSelector);if(WCF.inArray(n.data("objectID"),t)){var s=this;i.wcfBlindOut("up",function(){var t=$(this).remove();s._containers.splice(s._containers.indexOf(t.wcfIdentify()),1),s._didTriggerEffect(t),n.data("eventName")&&WCF.System.Event.fireEvent("com.woltlab.wcf.action.delete",n.data("eventName"),{button:n,container:t})})}}}}),WCF.Action.NestedDelete=WCF.Action.Delete.extend({triggerEffect:function(t){for(var e in this._containers){var i=$("#"+this._containers[e]);if(WCF.inArray(i.find(this._buttonSelector).data("objectID"),t))if(i.has("ol").has("li").length)i.is(":only-child")?i.parent().replaceWith(i.find("> ol")):i.replaceWith(i.find("> ol > li")),this._containers.splice(this._containers.indexOf(i.wcfIdentify()),1),this._didTriggerEffect(i);else{var n=this;i.wcfBlindOut("up",function(){$(this).remove(),n._containers.splice(n._containers.indexOf($(this).wcfIdentify()),1),n._didTriggerEffect($(this))})}}}}),WCF.Action.Toggle=Class.extend({_buttonSelector:".jsToggleButton",_className:"",_containerSelector:"",_containers:[],init:function(t,e,i){this._containerSelector=e,this._className=t,this._buttonSelector=i?i:".jsToggleButton",this._containers=[];var n={success:$.proxy(this._success,this)};this.proxy=new WCF.Action.Proxy(n),this._initElements(),WCF.DOMNodeInsertedHandler.addCallback("WCF.Action.Toggle"+this._className.hashCode(),$.proxy(this._initElements,this))},_initElements:function(){$(this._containerSelector).each($.proxy(function(t,e){var i=$(e),n=i.wcfIdentify();WCF.inArray(n,this._containers)||(this._containers.push(n),i.find(this._buttonSelector).click($.proxy(this._click,this)))},this))},_click:function(t){var e=$(t.currentTarget);t.preventDefault(),e.data("confirmMessage")?WCF.System.Confirmation.show(e.data("confirmMessage"),$.proxy(this._execute,this),{target:e}):(WCF.LoadingOverlayHandler.updateIcon(e),this._sendRequest(e))},_execute:function(t,e){"cancel"!==t&&(WCF.LoadingOverlayHandler.updateIcon(e.target),this._sendRequest(e.target))},_sendRequest:function(t){this.proxy.setOption("data",{actionName:"toggle",className:this._className,interfaceName:"wcf\\data\\IToggleAction",objectIDs:[$(t).data("objectID")]}),this.proxy.sendRequest()},_success:function(t){this.triggerEffect(t.objectIDs)},triggerEffect:function(t){for(var e in this._containers){var i=$("#"+this._containers[e]),n=i.find(this._buttonSelector);WCF.inArray(n.data("objectID"),t)&&(i.wcfHighlight(),this._toggleButton(i,n))}},_toggleButton:function(t,e){var i="";WCF.LoadingOverlayHandler.updateIcon(e,!1),e.hasClass("icon-check-empty")?(e.removeClass("icon-check-empty").addClass("icon-check"),i=e.data("disableTitle")?e.data("disableTitle"):WCF.Language.get("wcf.global.button.disable"),e.attr("title",i)):(e.removeClass("icon-check").addClass("icon-check-empty"),i=e.data("enableTitle")?e.data("enableTitle"):WCF.Language.get("wcf.global.button.enable"),e.attr("title",i)),t.toggleClass("disabled")}}),WCF.Action.Scroll=Class.extend({_callback:null,_reference:null,_target:null,_threshold:0,init:function(t,e,i,n){return this._threshold=parseInt(t),0===this._threshold?void console.debug("[WCF.Action.Scroll] Given threshold is invalid, aborting."):($.isFunction(e)&&(this._callback=e),null===this._callback?void console.debug("[WCF.Action.Scroll] Given callback is invalid, aborting."):(this._reference=$(i?i:window),this._target=$(n?n:document),this.start(),void this._scroll()))},_scroll:function(){var t=this._target.height(),e=this._reference.scrollTop(),i=this._reference.height();t-(i+e)<this._threshold&&this._callback(this)},start:function(){this._reference.on("scroll",$.proxy(this._scroll,this))},stop:function(){this._reference.off("scroll")}}),WCF.Date={},WCF.Date.Picker={_dateFormat:"yy-mm-dd",_timeFormat:"g:ia",init:function(){var t=$.timepicker.log;$.timepicker.log=function(e){-1==e.indexOf("Error parsing the date/time string: Unexpected literal at position")&&-1==e.indexOf("Error parsing the date/time string: Unknown name at position")&&t(e)},this._convertDateFormat(),this._initDatePicker(),WCF.DOMNodeInsertedHandler.addCallback("WCF.Date.Picker",$.proxy(this._initDatePicker,this))},_convertDateFormat:function(){var t={a:"tt",A:"TT",g:"h",G:"H",h:"hh",H:"HH",i:"mm",s:"ss",u:"l",d:"dd",D:"D",j:"d",l:"DD",z:"o",S:"",F:"MM",m:"mm",M:"M",n:"m",o:"yy",Y:"yy",y:"y",U:"@"};this._dateFormat=WCF.Language.get("wcf.date.dateFormat").replace(/([^dDjlzSFmMnoYyU\\]*(?:\\.[^dDjlzSFmMnoYyU\\]*)*)([dDjlzSFmMnoYyU])/g,function(e,i,n){for(var s in t)n==s&&(n=t[s]);return i+n}),this._timeFormat=WCF.Language.get("wcf.date.timeFormat").replace(/([^aAgGhHisu\\]*(?:\\.[^aAgGhHisu\\]*)*)([aAgGhHisu])/g,function(e,i,n){for(var s in t)n==s&&(n=t[s]);return i+n})},_initDatePicker:function(){$("input[type=date]:not(.jsDatePicker), input[type=datetime]:not(.jsDatePicker)").each($.proxy(function(t,e){var i=$(e),n=i.prop("name"),s=i.val(),a="datetime"==i.attr("type");i.prop("type","text").addClass("jsDatePicker"),i.data("placeholder")&&i.attr("placeholder",i.data("placeholder")),i.removeAttr("name"),i.before('<input type="hidden" id="'+i.wcfIdentify()+'DatePicker" name="'+n+'" value="'+s+'" />');var o=i.attr("max")?new Date(i.attr("max").replace(" ","T")):null,r=i.attr("min")?new Date(i.attr("min").replace(" ","T")):null,l={altField:"#"+i.wcfIdentify()+"DatePicker",altFormat:"yy-mm-dd",beforeShow:function(t,e){setTimeout(function(){e.dpDiv.position({my:"left top",at:"left bottom",collision:"none",of:t})},1)},changeMonth:!0,changeYear:!0,dateFormat:this._dateFormat,dayNames:WCF.Language.get("__days"),dayNamesMin:WCF.Language.get("__daysShort"),dayNamesShort:WCF.Language.get("__daysShort"),firstDay:parseInt(WCF.Language.get("wcf.date.firstDayOfTheWeek"))||0,isRTL:"rtl"==WCF.Language.get("wcf.global.pageDirection"),maxDate:o,minDate:r,monthNames:WCF.Language.get("__months"),monthNamesShort:WCF.Language.get("__monthsShort"),showButtonPanel:!1,onClose:function(t,e){""==t&&$(e.settings.altField).val(t)},showOtherMonths:!0,yearRange:i.hasClass("birthday")?"-100:+0":"1900:2038"};if(a){if(/[0-9]{2}:[0-9]{2}:[0-9]{2}$/.test(s)&&(s=s.replace(/:[0-9]{2}$/,""),i.val(s)),s=s.replace(" ","T"),i.data("timeOnly")){var c=s.split(":"),h=new Date;h.setHours(c[0]),h.setMinutes(c[1]),h.setSeconds(0),s=h.toString()}if(i.data("ignoreTimezone")){var d=new Date(s).getTimezoneOffset(),u=d>0?"-":"+";d=Math.abs(d);var p=Math.floor(d/60).toString(),_=(d%60).toString();u+=2==p.length?p:"0"+p,u+=":",u+=2==_.length?_:"0"+_,s=s.replace(/[+-][0-9]{2}:[0-9]{2}$/,u)}l=$.extend(l,{altFieldTimeOnly:!1,altTimeFormat:"HH:mm",controlType:"select",hourText:WCF.Language.get("wcf.date.hour"),minuteText:WCF.Language.get("wcf.date.minute"),showTime:!1,timeFormat:this._timeFormat,timeOnly:i.data("timeOnly")?!0:!1,yearRange:i.hasClass("birthday")?"-100:+0":"1900:2038"})}a?i.datetimepicker(l):i.datepicker(l),s&&(s=new Date(s),a||s.setMinutes(s.getMinutes()+s.getTimezoneOffset()),i.datepicker("setDate",s)),i.datepicker("widget").hide(),i.data("timeOnly")&&i.datepicker("widget").addClass("timeOnlyPicker")},this))}},WCF.Date.Util={gmdate:function(t){var e=t?t:new Date;return Math.round(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDay(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds())/1e3)},getTimezoneDate:function(t,e){var i=new Date(t),n=6e4*i.getTimezoneOffset();return new Date(t+n+e)}},WCF.Date.Time=Class.extend({_date:0,_elements:null,_offset:null,_timestamp:0,init:function(){this._elements=$("time.datetime"),this._offset=null,this._timestamp=0,this._refresh(),new WCF.PeriodicalExecuter($.proxy(this._refresh,this),6e4),WCF.DOMNodeInsertedHandler.addCallback("WCF.Date.Time",$.proxy(this._domNodeInserted,this))},_domNodeInserted:function(){this._elements=$("time.datetime"),this._refresh()},_refresh:function(){this._date=new Date,this._timestamp=(this._date.getTime()-this._date.getMilliseconds())/1e3,null===this._offset&&(this._offset=this._timestamp-TIME_NOW),this._elements.each($.proxy(this._refreshElement,this))},_refreshElement:function(t,e){var i=$(e);i.attr("title")||i.attr("title",i.text());var n=i.data("timestamp")+this._offset,s=i.data("date"),a=i.data("time"),o=i.data("offset");if(!i.data("isFutureDate"))if(n>=this._timestamp||this._timestamp<n+60)i.text(WCF.Language.get("wcf.date.relative.now"));else if(this._timestamp<n+3540){var r=Math.max(Math.round((this._timestamp-n)/60),1);i.text(WCF.Language.get("wcf.date.relative.minutes",{minutes:r}))}else if(this._timestamp<n+86400){var l=Math.round((this._timestamp-n)/3600);i.text(WCF.Language.get("wcf.date.relative.hours",{hours:l}))}else if(this._timestamp<n+518400){var c=new Date(this._date.getFullYear(),this._date.getMonth(),this._date.getDate()),h=Math.ceil((c/1e3-n)/86400),d=WCF.Date.Util.getTimezoneDate(1e3*n,1e3*o),u=d.getDay(),p=WCF.Language.get("__days")[u];i.text(WCF.Language.get("wcf.date.relative.pastDays",{days:h,day:p,time:a}))}else{var _=WCF.Language.get("wcf.date.shortDateTimeFormat");i.text(_.replace(/\%date\%/,s).replace(/\%time\%/,a))}}}),WCF.Dictionary=Class.extend({_variables:{},init:function(){this._variables={}},add:function(t,e){this._variables[t]=e},addObject:function(t){for(var e in t)this.add(e,t[e])},addDictionary:function(t){t.each($.proxy(function(t){this.add(t.key,t.value)},this))},get:function(t){return this.isset(t)?this._variables[t]:null},isset:function(t){return this._variables.hasOwnProperty(t)},remove:function(t){delete this._variables[t]},each:function(t){if($.isFunction(t))for(var e in this._variables){var i=this._variables[e],n={key:e,value:i};t(n)}},count:function(){return $.getLength(this._variables)},isEmpty:function(){return!this.count()}}),WCF.Language={_variables:new WCF.Dictionary,add:function(t,e){this._variables.add(t,e)},addObject:function(t){this._variables.addObject(t)},get:function(t,e){if(null==e)var e={};var i=this._variables.get(t);return null===i?t:"string"==typeof i?(this.add(t,new WCF.Template(i)),this.get(t,e)):("function"==typeof i.fetch&&(i=i.fetch(e)),i)}},WCF.MultipleLanguageInput=Class.extend({_availableLanguages:{},_button:null,_didInit:!1,_element:null,_insertedDataAfterInit:!1,_isEnabled:!1,_forceSelection:!1,_languageID:0,_list:null,_values:null,init:function(t,e,i,n){if(this._button=null,this._element=$("#"+$.wcfEscapeID(t)),this._forceSelection=e,this._values=i,this._availableLanguages=n,$.getLength(this._values))for(var s in this._values)this._values[s]=WCF.String.unescapeHTML(this._values[s]);if(this._languageID=LANGUAGE_ID,0==this._element.length)return void console.debug("[WCF.MultipleLanguageInput] element id '"+t+"' is unknown");var a=$.getLength(this._values)>0?!0:!1;this._insertedDataAfterInit=a,this._prepareElement(a),this._element.parents("form").submit($.proxy(this._submit,this)),this._didInit=!0},_prepareElement:function(t){this._element.wrap('<div class="dropdown preInput" />');var e=this._element.parent();this._button=$('<p class="button dropdownToggle"><span>'+WCF.Language.get("wcf.global.button.disabledI18n")+"</span></p>").prependTo(e),this._list=$('<ul class="dropdownMenu"></ul>').insertAfter(this._button),this._button.addClass(this._button.nextAll("textarea").length?"dropdownCaptionTextarea":"dropdownCaption");for(var i in this._availableLanguages)$("<li><span>"+this._availableLanguages[i]+"</span></li>").data("languageID",i).click($.proxy(this._changeLanguage,this)).appendTo(this._list);this._forceSelection||($('<li class="dropdownDivider" />').appendTo(this._list),$("<li><span>"+WCF.Language.get("wcf.global.button.disabledI18n")+"</span></li>").click($.proxy(this._disable,this)).appendTo(this._list)),WCF.Dropdown.initDropdown(this._button,t),(t||this._forceSelection)&&(this._isEnabled=!0,this._list.children("li").each($.proxy(function(t,e){var i=$(e);i.data("languageID")==this._languageID&&i.trigger("click")},this))),WCF.Dropdown.registerCallback(e.wcfIdentify(),$.proxy(this._handleAction,this))},_handleAction:function(t,e){"open"===e?this._enable():this._closeSelection()},_enable:function(){if(!this._isEnabled){var t=this._button.is("p")?this._button.children("span:eq(0)"):this._button;t.addClass("active"),this._isEnabled=!0}this._list.is(":visible")&&this._showSelection()},_showSelection:function(){this._isEnabled&&this._list.children("li").each($.proxy(function(t,e){var i=$(e),n=i.data("languageID");n&&(this._values[n]&&""!=this._values[n]?i.removeClass("missingValue"):i.addClass("missingValue"))},this))},_closeSelection:function(){this._disable()},_changeLanguage:function(t){var e=$(t.currentTarget);this._insertedDataAfterInit=!0,this._didInit&&(this._values[this._languageID]=this._element.val()),this._languageID=e.data("languageID"),this._element.val(this._values[this._languageID]?this._values[this._languageID]:""),this._list.children("li").removeClass("active"),e.addClass("active"),this._button.children("span").addClass("active").text(this._availableLanguages[this._languageID]),this._didInit&&this._element.blur().focus()},_disable:function(t){void 0===t&&this._insertedDataAfterInit&&(t=null),!this._forceSelection&&this._list&&null!==t&&(this._button.children("span").removeClass("active").text(WCF.Language.get("wcf.global.button.disabledI18n")),this._values[LANGUAGE_ID]?this._element.val(this._values[LANGUAGE_ID]):this._element.val(),t&&(this._list.children("li").removeClass("active"),$(t.currentTarget).addClass("active")),this._element.blur().focus(),this._insertedDataAfterInit=!1,this._isEnabled=!1,this._values={})},_submit:function(){if(!this._isEnabled)return 3735928559;this._languageID&&(this._values[this._languageID]=this._element.val());var t=$(this._element.parents("form")[0]),e=this._element.wcfIdentify();for(var i in this._availableLanguages)void 0===this._values[i]&&(this._values[i]=""),$('<input type="hidden" name="'+e+"_i18n["+i+']" value="'+WCF.String.escapeHTML(this._values[i])+'" />').appendTo(t);this._element.removeAttr("name")}}),WCF.Number={round:function(t,e){return e=Math.pow(10,e||0),Math.round(t*e)/e}},WCF.String={addThousandsSeparator:function(t){return String(t).replace(/(^-?\d{1,3}|\d{3})(?=(?:\d{3})+(?:$|\.))/g,"$1"+WCF.Language.get("wcf.global.thousandsSeparator"))},escapeHTML:function(t){return String(t).replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")},escapeRegExp:function(t){return String(t).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")},formatNumeric:function(t,e){t=String(WCF.Number.round(t,e||2));var i=t.split(".");return t=this.addThousandsSeparator(i[0]),i.length>1&&(t+=WCF.Language.get("wcf.global.decimalPoint")+i[1]),t=t.replace("-","−")},lcfirst:function(t){return String(t).substring(0,1).toLowerCase()+t.substring(1)},ucfirst:function(t){return String(t).substring(0,1).toUpperCase()+t.substring(1)},unescapeHTML:function(t){return String(t).replace(/&amp;/g,"&").replace(/&quot;/g,'"').replace(/&lt;/g,"<").replace(/&gt;/g,">")}},WCF.TabMenu={_containers:{},_didInit:!1,init:function(){var t=$(".tabMenuContainer:not(.staticTabMenuContainer)"),e=this;if(t.each(function(t,i){var n=$(i),s=n.wcfIdentify();return e._containers[s]?!0:(n.data("store")&&!$("#"+n.data("store")).length&&$('<input type="hidden" name="'+n.data("store")+'" value="" id="'+n.data("store")+'" />').appendTo(n.parents("form").find(".formSubmit")),e._containers[s]=n,n.wcfTabs({active:!1,activate:function(t,e){for(var i=$(e.newPanel),n=i.closest(".tabMenuContainer"),s=n;;){if(void 0===s.data("isParent"))break;if(s.data("isParent")){s.data("store")&&$("#"+s.data("store")).val(i.attr("id"));break}s=s.data("parent")}WCF.TabMenu._didInit&&(void 0==i.data("inTabMenu")&&i.data("inTabMenu",i.parents(".dialogContainer").length),i.data("inTabMenu")||(window.history?window.history.pushState(null,document.title,window.location.toString().replace(/#.+$/,"")+"#"+i.attr("id")):location.hash="#"+i.attr("id")))}}),n.data("isParent",n.children(".tabMenuContainer, .tabMenuContent").length>0).data("parent",!1),void(n.data("isParent")||n.parent().hasClass("tabMenuContainer")&&n.data("parent",n.parent())))}),!this._didInit&&(this._selectActiveTab(),$(window).bind("hashchange",$.proxy(this.selectTabs,this)),this._selectErroneousTab()||this.selectTabs(),$.browser.mozilla&&location.hash)){var i=$(location.hash);if(i.length&&i.hasClass("tabMenuContent")){var n=i.offset();window.scrollTo(n.left,n.top)}}this._didInit=!0},reload:function(){this._containers={},this.init()},_selectErroneousTab:function(){var t=!1;for(var e in this._containers){var i=this._containers[e];if(i.find(".formError").length&&(t=!0,!i.data("isParent"))){for(;;){if(i.data("parent")===!1)break;i=i.data("parent").wcfTabs("selectTab",i.wcfIdentify())}return!0}}if(t)for(var e in this._containers){var i=this._containers[e],n=i.find(".formError:eq(0)");if(n.length){for(i.wcfTabs("selectTab",n.parents(".tabMenuContent").wcfIdentify());;){if(i.data("parent")===!1)break;i=i.data("parent").wcfTabs("selectTab",i.wcfIdentify())}return!0}}return!1},_selectActiveTab:function(){for(var t in this._containers){var e=this._containers[t];if(e.data("active")){var i=e.data("active"),n=null;if(/-/.test(i)){var s=i.split("-");i=s[0],n=s[1]}e.find(".tabMenuContent").each(function(t,s){var a=$(s);return a.wcfIdentify()==i?(e.wcfTabs("select",t),null!==n&&(a.hasClass("tabMenuContainer")?a.wcfTabs("selectTab",e.data("active")):e.wcfTabs("selectTab",e.data("active"))),!1):void 0})}}},selectTabs:function(){if(location.hash){var t=location.hash.substr(1),e=$("#"+$.wcfEscapeID(t));if(1===e.length&&e.hasClass("ui-tabs-panel")&&(e=e.parent(".ui-tabs"),e.length))return e.wcfTabs("selectTab",t),e.hasClass("ui-tabs-panel")&&(t=e.wcfIdentify(),e=e.parent(".ui-tabs"),e.length&&e.wcfTabs("selectTab",t)),!0}return!1}},WCF.Template=Class.extend({init:function(t){var e=new WCF.Dictionary,i=0;t=t.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/(\r\n|\n|\r)/g,"\\n"),t=t.replace(/\{literal\}(.*?)\{\/literal\}/g,$.proxy(function(t){var i="@@@@@@@@@@@"+Math.random()+"@@@@@@@@@@@";return e.add(i,t.replace(/\{\/?literal\}/g,"")),i},this)),t=t.replace(/\{\*.*?\*\}/g,"");var n=function(t){for(var e=t.split(""),i={},n=!0,s="",a="",o=!1,r=!1,l=!1,c=0,h=e.length;h>c;c++){var d=e[c];n&&"="!=d&&" "!=d?s+=d:n&&"="==d?(n=!1,r=!1,o=!1,l=!1):n||r||o||" "!=d?n||!r||l||"'"!=d?n||r||o||"'"!=d?n||!o||l||'"'!=d?n||r||o||'"'!=d?n||!o&&!r||l||"\\"!=d?n||(l=!1,a+=d):(l=!0,a+=d):(o=!0,a+=d):(o=!1,a+=d):(r=!0,a+=d):(r=!1,a+=d):(n=!0,i[s]=a,a=s="")}if(i[s]=a,o||r||l)throw new Error('Syntax error in parameterList: "'+t+'"');return i},s=function(t){return t.replace(/\\n/g,"\n").replace(/\\\\/g,"\\").replace(/\\'/g,"'")};t=t.replace(/\{(\$[^\}]+?)\}/g,function(t,e){return e=s(e.replace(/\$([^.\[\(\)\]\s]+)/g,"(v['$1'])")),"' + WCF.String.escapeHTML("+e+") + '"}).replace(/\{#(\$[^\}]+?)\}/g,function(t,e){return e=s(e.replace(/\$([^.\[\(\)\]\s]+)/g,"(v['$1'])")),"' + WCF.String.formatNumeric("+e+") + '"}).replace(/\{@(\$[^\}]+?)\}/g,function(t,e){return e=s(e.replace(/\$([^.\[\(\)\]\s]+)/g,"(v['$1'])")),"' + "+e+" + '"}).replace(/\{lang\}(.+?)\{\/lang\}/g,function(t,e){return"' + WCF.Language.get('"+e+"', v) + '"}).replace(/\{include (.+?)\}/g,function(t,e){e=e.replace(/\\\\/g,"\\").replace(/\\'/g,"'");var i=n(e);if("undefined"==typeof i.file)throw new Error("Missing file attribute in include-tag");return i.file=i.file.replace(/\$([^.\[\(\)\]\s]+)/g,"(v.$1)"),"' + "+i.file+".fetch(v) + '"}).replace(/\{if (.+?)\}/g,function(t,e){return e=s(e.replace(/\$([^.\[\(\)\]\s]+)/g,"(v['$1'])")),"';\nif ("+e+") {\n        $output += '"}).replace(/\{else ?if (.+?)\}/g,function(t,e){return e=s(e.replace(/\$([^.\[\(\)\]\s]+)/g,"(v['$1'])")),"';\n}\nelse if ("+e+") {\n       $output += '"}).replace(/\{implode (.+?)\}/g,function(t,e){i++,e=e.replace(/\\\\/g,"\\").replace(/\\'/g,"'");var s=n(e);if("undefined"==typeof s.from)throw new Error("Missing from attribute in implode-tag");if("undefined"==typeof s.item)throw new Error("Missing item attribute in implode-tag");return"undefined"==typeof s.glue&&(s.glue="', '"),s.from=s.from.replace(/\$([^.\[\(\)\]\s]+)/g,"(v.$1)"),"';\nvar $implode_"+i+" = false;\nfor ($implodeKey_"+i+" in "+s.from+") {\n      v["+s.item+"] = "+s.from+"[$implodeKey_"+i+"];\n"+("undefined"!=typeof s.key?"          v["+s.key+"] = $implodeKey_"+i+";\n":"")+"      if ($implode_"+i+") $output += "+s.glue+";\n    $implode_"+i+" = true;\n        $output += '"}).replace(/\{foreach (.+?)\}/g,function(t,e){i++,e=e.replace(/\\\\/g,"\\").replace(/\\'/g,"'");var s=n(e);if("undefined"==typeof s.from)throw new Error("Missing from attribute in foreach-tag");if("undefined"==typeof s.item)throw new Error("Missing item attribute in foreach-tag");return s.from=s.from.replace(/\$([^.\[\(\)\]\s]+)/g,"(v.$1)"),"';\n$foreach_"+i+" = false;\nfor ($foreachKey_"+i+" in "+s.from+") {\n     $foreach_"+i+" = true;\n        break;\n}\nif ($foreach_"+i+") {\n      for ($foreachKey_"+i+" in "+s.from+") {\n               v["+s.item+"] = "+s.from+"[$foreachKey_"+i+"];\n"+("undefined"!=typeof s.key?"          v["+s.key+"] = $foreachKey_"+i+";\n":"")+"              $output += '"}).replace(/\{foreachelse\}/g,"';\n        }\n}\nelse {\n  {\n             $output += '").replace(/\{\/foreach\}/g,"';\n   }\n}\n$output += '").replace(/\{else\}/g,"';\n}\nelse {\n       $output += '").replace(/\{\/(if|implode)\}/g,"';\n}\n$output += '");for(var a in WCF.Template.callbacks)t=WCF.Template.callbacks[a](t);t=t.replace("{ldelim}","{").replace("{rdelim}","}"),e.each(function(e){t=t.replace(e.key,e.value)}),t="$output += '"+t+"';";try{this.fetch=new Function("v","v = window.$.extend({}, v, { __wcf: window.WCF, __window: window }); var $output = ''; "+t+" return $output;")}catch(e){throw console.debug("var $output = ''; "+t+" return $output;"),e}},fetch:function(){}}),WCF.Template.callbacks=[],WCF.ToggleOptions=Class.extend({_element:null,_showItems:[],_hideItems:[],_callback:null,init:function(t,e,i,n){this._element=$("#"+t),this._showItems=e,this._hideItems=i,void 0!==n&&(this._callback=n),this._element.click($.proxy(this._toggle,this)),this._toggle()},_toggle:function(){if(this._element.prop("checked")){for(var t=0,e=this._showItems.length;e>t;t++){var i=this._showItems[t];$("#"+i).show()}for(var t=0,e=this._hideItems.length;e>t;t++){var i=this._hideItems[t];$("#"+i).hide()}null!==this._callback&&this._callback()}}}),WCF.Collapsible={},WCF.Collapsible.Simple={init:function(){$(".jsCollapsible").each($.proxy(function(t,e){this._initButton(e)},this))},_initButton:function(t){var e=$(t),i=e.data("isOpen");i||$("#"+e.data("collapsibleContainer")).hide(),e.click($.proxy(this._toggle,this))},_toggle:function(t){var e=$(t.currentTarget),i=e.data("isOpen"),n=$("#"+$.wcfEscapeID(e.data("collapsibleContainer")));return i?(n.stop().wcfBlindOut("vertical",$.proxy(function(){this._toggleImage(e)},this)),i=!1):(n.stop().wcfBlindIn("vertical",$.proxy(function(){this._toggleImage(e)},this)),i=!0),e.data("isOpen",i),t.stopPropagation(),!1},_toggleImage:function(t){var e=t.find("span.icon");t.data("isOpen")?e.removeClass("icon-chevron-right").addClass("icon-chevron-down"):e.removeClass("icon-chevron-down").addClass("icon-chevron-right")}},WCF.Collapsible.Remote=Class.extend({_className:"",_containers:{},_containerData:{},_proxy:null,init:function(t){this._className=t,this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._init(),WCF.DOMNodeInsertedHandler.addCallback("WCF.Collapsible.Remote",$.proxy(this._init,this))},_init:function(){this._getContainers().each($.proxy(function(t,e){var i=$(e),n=i.wcfIdentify();void 0===this._containers[n]&&(this._containers[n]=i,this._initContainer(n))},this))},_initContainer:function(t){var e=this._getTarget(t),i=this._getButtonContainer(t),n=this._createButton(t,i);this._containerData[t]={button:n,buttonContainer:i,isOpen:this._containers[t].data("isOpen"),target:e},this._containers[t].data("isOpen")||$("#"+t).addClass("jsCollapsed")},_getContainers:function(){},_getTarget:function(){},_getButtonContainer:function(){},_createButton:function(t,e){var i=this._containers[t].data("isOpen"),n=$('<span class="collapsibleButton jsTooltip pointer icon icon16 icon-'+(i?"chevron-down":"chevron-right")+'" title="'+WCF.Language.get("wcf.global.button.collapsible")+'">').prependTo(e);return n.data("containerID",t).click($.proxy(this._toggleContainer,this)),n},_toggleContainer:function(t){var e=$(t.currentTarget),i=e.data("containerID"),n=this._containerData[i].isOpen,s=n?"open":"close",a=n?"close":"open";this._proxy.setOption("data",{actionName:"loadContainer",className:this._className,interfaceName:"wcf\\data\\ILoadableContainerAction",objectIDs:[this._getObjectID(i)],parameters:$.extend(!0,{containerID:i,currentState:s,newState:a},this._getAdditionalParameters(i))}),this._proxy.sendRequest(),$("#"+i).toggleClass("jsCollapsed")},_exchangeIcon:function(t,e){e=e||"spinner",t.removeClass("icon-chevron-down icon-chevron-right icon-spinner").addClass("icon-"+e)},_getObjectID:function(t){return $("#"+t).data("objectID")},_getAdditionalParameters:function(){return{}},_updateContent:function(t,e){this._containerData[t].target.html(e)},_success:function(t){if(t.returnValues.containerID){var e=t.returnValues.containerID;if(this._containers[e]){this._containerData[e].isOpen=t.returnValues.isOpen?!0:!1;var i=t.returnValues.isOpen?"open":"close";this._updateContent(e,$.trim(t.returnValues.content),i),this._exchangeIcon(this._containerData[e].button,t.returnValues.isOpen?"chevron-down":"chevron-right")}}}}),WCF.Collapsible.SimpleRemote=WCF.Collapsible.Remote.extend({init:function(t){this._super(t),this._proxy=new WCF.Action.Proxy({showLoadingOverlay:!1})},_initContainer:function(t){this._super(t),this._containerData[t].isOpen||(this._containerData[t].target.hide(),this._exchangeIcon(this._containerData[t].button,"chevron-right"))},_toggleContainer:function(t){var e=$(t.currentTarget),i=e.data("containerID"),n=this._containerData[i].isOpen,s=n?"open":"close",a=n?"close":"open";this._proxy.setOption("data",{actionName:"toggleContainer",className:this._className,interfaceName:"wcf\\data\\IToggleContainerAction",objectIDs:[this._getObjectID(i)],parameters:$.extend(!0,{containerID:i,currentState:s,newState:a},this._getAdditionalParameters(i))}),this._proxy.sendRequest(),this._exchangeIcon(this._containerData[i].button,"open"===a?"chevron-down":"chevron-right"),"open"===a?this._containerData[i].target.show():this._containerData[i].target.hide(),$("#"+i).toggleClass("jsCollapsed"),this._containerData[i].isOpen="open"===a?!0:!1}}),WCF.Collapsible.Sidebar=Class.extend({_button:null,_buttonHeight:0,_isOpen:!1,_mainContainer:null,_proxy:null,_sidebar:null,_sidebarHeight:0,_sidebarName:"",_sidebarOffset:0,_userPanelHeight:0,init:function(){if(this._sidebar=$(".sidebar:eq(0)"),!this._sidebar.length)return void console.debug("[WCF.Collapsible.Sidebar] Could not find sidebar, aborting.");this._isOpen=this._sidebar.data("isOpen")?!0:!1,this._sidebarName=this._sidebar.data("sidebarName"),this._mainContainer=$("#main"),this._sidebarHeight=this._sidebar.height(),this._sidebarOffset=this._sidebar.getOffsets("offset").top,this._userPanelHeight=$("#topMenu").outerHeight(),this._button=$('<a class="collapsibleButton jsTooltip" title="'+WCF.Language.get("wcf.global.button.collapsible")+'" />').prependTo(this._sidebar),this._button.wrap("<span />"),this._button.click($.proxy(this._click,this)),this._buttonHeight=this._button.outerHeight(),WCF.DOMNodeInsertedHandler.execute(),this._proxy=new WCF.Action.Proxy({showLoadingOverlay:!1,url:"index.php/AJAXInvoke/?t="+SECURITY_TOKEN+SID_ARG_2ND}),$(document).scroll($.proxy(this._scroll,this)).resize($.proxy(this._scroll,this)),this._renderSidebar(),this._scroll();var t=$(window);this._sidebar.on("webkitTransitionEnd transitionend msTransitionEnd oTransitionEnd",function(){t.trigger("resize")})},_click:function(){this._isOpen=this._isOpen?!1:!0,this._proxy.setOption("data",{actionName:"toggle",className:"wcf\\system\\user\\collapsible\\content\\UserCollapsibleSidebarHandler",isOpen:this._isOpen?1:0,sidebarName:this._sidebarName}),this._proxy.sendRequest(),this._renderSidebar()},_scroll:function(){var t=$(window),e=t.scrollTop(),i=Math.max(e-this._sidebarOffset,0),n=Math.min(this._mainContainer.height(),t.height()+e-this._sidebarOffset),s=0;if(n===i)s=this._sidebarOffset+this._sidebarHeight;else{s=i+(n-i)/2;var a=Math.max(Math.min(i-this._userPanelHeight,this._userPanelHeight),0);a>0&&(s+=a/2)}n-i-this._userPanelHeight<this._buttonHeight?s-=this._buttonHeight:s=Math.max(s-this._buttonHeight/2,0),this._button.css({top:s+"px"})},_renderSidebar:function(){this._isOpen?$(".sidebarOrientationLeft, .sidebarOrientationRight").removeClass("sidebarCollapsed"):$(".sidebarOrientationLeft, .sidebarOrientationRight").addClass("sidebarCollapsed"),this._scroll(),$.browser.msie&&0===$.browser.version.indexOf("9")&&$(window).trigger("resize")}}),WCF.User={userID:0,username:"",init:function(t,e){this.userID=t,this.username=e}},WCF.Effect={},WCF.Effect.Scroll=Class.extend({scrollTo:function(t,e,i){if(!t.length)return!0;var n=t.getOffsets("offset").top,s=$(document).height(),a=$(window).height();return n>s-a&&(n=s-a,0>n&&(n=0)),i===!0?$("html,body").scrollTop(n):$("html,body").animate({scrollTop:n},400,function(t,e,i,n,s){return-n*((e=e/s-1)*e*e*e-1)+i}),!1}}),WCF.Effect.SmoothScroll=WCF.Effect.Scroll.extend({init:function(){var t=this;$(document).on("click","a[href$=#top],a[href$=#bottom]",function(){var e=$(this.hash);return t.scrollTo(e,!0),!1})}}),WCF.Effect.BalloonTooltip=Class.extend({_didInit:!1,_tooltip:null,_viewportDimensions:{},init:function(){jQuery.browser.mobile||(this._didInit||(this._tooltip=$('<div id="balloonTooltip" class="balloonTooltip"><span id="balloonTooltipText"></span><span class="pointer"><span></span></span></div>').appendTo($("body")).hide(),this._updateViewportDimensions(),$(window).resize($.proxy(this._updateViewportDimensions,this)),WCF.DOMNodeInsertedHandler.addCallback("WCF.Effect.BalloonTooltip",$.proxy(this.init,this)),this._didInit=!0),$(".jsTooltip").each($.proxy(this._initTooltip,this)))},_updateViewportDimensions:function(){this._viewportDimensions=$(document).getDimensions()},_initTooltip:function(t,e){var i=$(e);if(i.hasClass("jsTooltip")){i.removeClass("jsTooltip");var n=i.attr("title");""!==n&&(i.data("tooltip",n),i.removeAttr("title"),i.hover($.proxy(this._mouseEnterHandler,this),$.proxy(this._mouseLeaveHandler,this)),i.click($.proxy(this._mouseLeaveHandler,this)))}},_mouseEnterHandler:function(t){var e,i,n=$(t.currentTarget),s=n.attr("title");if(s&&""!==s&&(n.data("tooltip",s),n.removeAttr("title")),this._tooltip.css({top:"0px",left:"0px"}),!n.data("tooltip"))return void this._tooltip.hide();this._tooltip.children("span:eq(0)").text(n.data("tooltip"));var a=this._tooltip.find(".pointer");this._tooltip.show();var o=a.outerWidth();this._tooltip.hide();var r=n.getOffsets("offset"),l=n.getDimensions("outer"),c=this._tooltip.getDimensions("outer"),h=this._tooltip.getDimensions("inner"),d=r.left+Math.ceil(l.width/2),u=Math.ceil(c.width/2),p="center";5>d-u?p="left":this._viewportDimensions.width-5<d+u&&(p="right"),r.top+l.height+c.height-$(document).scrollTop()<$(window).height()?(e=r.top+l.height+7,this._tooltip.removeClass("inverse"),a.css("top",-5)):(e=r.top-c.height-7,this._tooltip.addClass("inverse"),a.css("top",c.height));var _="rtl"==WCF.Language.get("wcf.global.pageDirection")?"right":"left";switch(p){case"center":i=Math.round(r.left-u+l.width/2),a.css(_,h.width/2-o/2+"px");break;case"left":i=r.left,"right"===_?a.css(_,h.width-o-5+"px"):a.css(_,"5px");break;case"right":i=r.left+l.width-c.width,"right"===_?a.css(_,"5px"):a.css(_,h.width-o-5+"px")}this._tooltip.css({top:e+"px",left:i+"px"}),this._tooltip.wcfFadeIn()},_mouseLeaveHandler:function(){this._tooltip.stop().hide().css({opacity:1})}}),WCF.CloseOverlayHandler={_callbacks:new WCF.Dictionary,_isListening:!1,
+addCallback:function(t,e){return this._bindListener(),this._callbacks.isset(t)?(console.debug("[WCF.CloseOverlayHandler] identifier '"+t+"' is already bound to a callback"),!1):void this._callbacks.add(t,e)},removeCallback:function(t){this._callbacks.isset(t)&&this._callbacks.remove(t)},forceExecution:function(){this._executeCallbacks()},_bindListener:function(){this._isListening||($(document.body).click($.proxy(this._executeCallbacks,this)),this._isListening=!0)},_executeCallbacks:function(){this._callbacks.each(function(t){t.value()})}},WCF.DOMNodeInsertedHandler={_callbacks:[],_isExecuting:!1,addCallback:function(t,e){this._callbacks.push(e)},_executeCallbacks:function(){if(!this._isExecuting){this._isExecuting=!0;for(var t=0,e=this._callbacks.length;e>t;t++)this._callbacks[t]();this._isExecuting=!1}},execute:function(){this._executeCallbacks()}},WCF.DOMNodeRemovedHandler={_callbacks:new WCF.Dictionary,_isExecuting:!1,_isListening:!1,addCallback:function(t,e){return this._bindListener(),this._callbacks.isset(t)?(console.debug("[WCF.DOMNodeRemovedHandler] identifier '"+t+"' is already bound to a callback"),!1):void this._callbacks.add(t,e)},removeCallback:function(t){this._callbacks.isset(t)&&this._callbacks.remove(t)},_bindListener:function(){if(!this._isListening){if(window.MutationObserver){var t=new MutationObserver(function(t){var e=!1;t.forEach(function(t){t.removedNodes.length&&(e=!0)}.bind(this)),e&&this._executeCallbacks({})}.bind(this));t.observe(document.body,{childList:!0,subtree:!0})}else $(document).bind("DOMNodeRemoved",$.proxy(this._executeCallbacks,this));this._isListening=!0}},_executeCallbacks:function(t){this._isExecuting||(this._isExecuting=!0,this._callbacks.each(function(e){e.value(t)}),this._isExecuting=!1)}},WCF.Option={},WCF.Option.Handler=Class.extend({init:function(){this._initOptions(),WCF.DOMNodeInsertedHandler.addCallback("WCF.Option.Handler",$.proxy(this._initOptions,this))},_initOptions:function(){$(".jsEnablesOptions").each($.proxy(this._initOption,this))},_initOption:function(t,e){this._change(e),$(e).change($.proxy(this._handleChange,this))},_handleChange:function(t){this._change($(t.target))},_change:function(option){option=$(option);var $disableOptions=eval(option.data("disableOptions")),$enableOptions=eval(option.data("enableOptions"));switch(option.getTagName()){case"input":switch(option.attr("type")){case"checkbox":this._execute(option.prop("checked"),$disableOptions,$enableOptions);break;case"radio":option.prop("checked")&&this._execute(!0,$disableOptions,$enableOptions)}break;case"select":var $value=option.val(),$disableOptions=$enableOptions=[];if(option.data("disableOptions").length>0)for(var $index in option.data("disableOptions")){var $item=option.data("disableOptions")[$index];$item.value==$value&&$disableOptions.push($item.option)}if(option.data("enableOptions").length>0)for(var $index in option.data("enableOptions")){var $item=option.data("enableOptions")[$index];$item.value==$value&&$enableOptions.push($item.option)}this._execute(!0,$disableOptions,$enableOptions)}},_execute:function(t,e,i){if(e.length>0)for(var n=0,s=e.length;s>n;n++){var a=e[n];if($.wcfIsset(a))this._enableOption(a,!t);else{var o=$("."+a+"Input");o.length&&this._enableOptions(o.children("dd").find("input, select, textarea"),!t)}}if(i.length>0)for(var n=0,s=i.length;s>n;n++){var a=i[n];if($.wcfIsset(a))this._enableOption(a,t);else{var o=$("."+a+"Input");o.length&&this._enableOptions(o.children("dd").find("input, select, textarea"),t)}}},_enableOption:function(t,e){this._enableOptionElement($("#"+$.wcfEscapeID(t)),e)},_enableOptionElement:function(t,e){t=$(t);var i=t.getTagName();"select"==i||"input"==i&&("checkbox"==t.attr("type")||"file"==t.attr("type")||"radio"==t.attr("type"))?e?t.enable():t.disable():e?t.removeAttr("readonly"):t.attr("readonly",!0),e?t.closest("dl").removeClass("disabled"):t.closest("dl").addClass("disabled")},_enableOptions:function(t,e){for(var i=0,n=t.length;n>i;i++)this._enableOptionElement(t[i],e)}}),WCF.PageVisibilityHandler={_callbacks:new WCF.Dictionary,_isListening:!1,_hiddenFieldName:"",addCallback:function(t,e){return this._bindListener(),this._callbacks.isset(t)?(console.debug("[WCF.PageVisibilityHandler] identifier '"+t+"' is already bound to a callback"),!1):void this._callbacks.add(t,e)},removeCallback:function(t){this._callbacks.isset(t)&&this._callbacks.remove(t)},_bindListener:function(){if(!this._isListening){var t=null;"undefined"!=typeof document.hidden?(this._hiddenFieldName="hidden",t="visibilitychange"):"undefined"!=typeof document.mozHidden?(this._hiddenFieldName="mozHidden",t="mozvisibilitychange"):"undefined"!=typeof document.msHidden?(this._hiddenFieldName="msHidden",t="msvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(this._hiddenFieldName="webkitHidden",t="webkitvisibilitychange"),null===t?console.debug("[WCF.PageVisibilityHandler] This browser does not support the page visibility API."):$(document).on(t,$.proxy(this._executeCallbacks,this)),this._isListening=!0}},_executeCallbacks:function(){if(!this._isExecuting){this._isExecuting=!0;var t=document[this._hiddenFieldName];this._callbacks.each(function(e){e.value(t)}),this._isExecuting=!1}}},WCF.Table={},WCF.Table.EmptyTableHandler=Class.extend({_options:{},_rowClassName:"",init:function(t,e,i){this._rowClassName=e,this._tableContainer=t,this._options=$.extend(!0,{emptyMessage:null,messageType:"info",refreshPage:!1,updatePageNumber:!1},i||{}),WCF.DOMNodeRemovedHandler.addCallback("WCF.Table.EmptyTableHandler."+e,$.proxy(this._remove,this))},_getRowCount:function(){return this._tableContainer.find("table tr."+this._rowClassName).length},_handleEmptyTable:function(){if(this._options.emptyMessage)this._tableContainer.replaceWith($("<p />").addClass(this._options.messageType).text(this._options.emptyMessage));else if(this._options.refreshPage)if(this._options.updatePageNumber){var t=window.location.href.match(/(\?|&)pageNo=(\d+)/g);if(t){var e=t[t.length-1].match(/\d+/g);this._options.updatePageNumber>0?e++:e--,window.location=window.location.href.replace(t[t.length-1],t[t.length-1][0]+"pageNo="+e)}}else window.location.reload();else this._tableContainer.remove()},_remove:function(t){if($.getLength(t)){var e=$(t.target);if(e.hasClass(this._rowClassName)){var i=e.parents("tbody:eq(0)");1==i.children("tr").length&&this._handleEmptyTable()}}else this._getRowCount()||this._handleEmptyTable()}}),WCF.Search={},WCF.Search.Base=Class.extend({_callback:null,_caretAt:-1,_className:"",_commaSeperated:!1,_delay:0,_excludedSearchValues:[],_itemCount:0,_itemIndex:-1,_list:null,_oldSearchString:[],_proxy:null,_searchInput:null,_triggerLength:3,_timer:null,init:function(t,e,i,n,s){return null===e||void 0===e||$.isFunction(e)?(this._callback=e?e:null,this._caretAt=-1,this._delay=0,this._excludedSearchValues=[],i&&(this._excludedSearchValues=i),this._searchInput=$(t),this._searchInput.length?(this._searchInput.keydown($.proxy(this._keyDown,this)).keyup($.proxy(this._keyUp,this)).wrap('<span class="dropdown" />'),$.browser.mozilla&&$.browser.touch&&this._searchInput.on("input",$.proxy(this._keyUp,this)),this._list=$('<ul class="dropdownMenu" />').insertAfter(this._searchInput),this._commaSeperated=n?!0:!1,this._oldSearchString=[],this._itemCount=0,this._itemIndex=-1,this._proxy=new WCF.Action.Proxy({showLoadingOverlay:s!==!0?!1:!0,success:$.proxy(this._success,this),autoAbortPrevious:!0}),this._searchInput.is("input")&&this._searchInput.attr("autocomplete","off"),this._searchInput.blur($.proxy(this._blur,this)),void WCF.Dropdown.initDropdownFragment(this._searchInput.parent(),this._list)):void console.debug("[WCF.Search.Base] Selector '"+t+"' for search input is invalid, aborting.")):void console.debug("[WCF.Search.Base] The given callback is invalid, aborting.")},_blur:function(){var t=this;new WCF.PeriodicalExecuter(function(e){t._list.is(":visible")&&t._clearList(!1),e.stop()},250)},_keyDown:function(t){if(t.which===$.ui.keyCode.ENTER){var e=this._searchInput.parents(".dropdown");e.data("disableAutoFocus")?-1!==this._itemIndex&&t.preventDefault():(e.data("preventSubmit")||-1!==this._itemIndex)&&t.preventDefault()}},_keyUp:function(t){switch(t.which){case 37:case 39:return;case 38:return void this._selectPreviousItem();case 40:return void this._selectNextItem();case 13:return this._selectElement(t)}var e=this._getSearchString(t);if(""===e)this._clearList(!1);else if(e.length>=this._triggerLength){var i={data:{excludedSearchValues:this._excludedSearchValues,searchString:e}};if(this._delay){null!==this._timer&&this._timer.stop();var n=this;this._timer=new WCF.PeriodicalExecuter(function(){n._queryServer(i),n._timer.stop(),n._timer=null},this._delay)}else this._queryServer(i)}else this._clearList(!1)},_queryServer:function(t){this._searchInput.parents(".searchBar").addClass("loading"),this._proxy.setOption("data",{actionName:"getSearchResultList",className:this._className,interfaceName:"wcf\\data\\ISearchAction",parameters:this._getParameters(t)}),this._proxy.sendRequest()},setDelay:function(t){this._delay=t},_selectNextItem:function(){0!==this._itemCount&&(this._itemIndex++,this._itemIndex===this._itemCount&&(this._itemIndex=0),this._highlightSelectedElement())},_selectPreviousItem:function(){0!==this._itemCount&&(this._itemIndex--,-1===this._itemIndex&&(this._itemIndex=this._itemCount-1),this._highlightSelectedElement())},_highlightSelectedElement:function(){this._list.find("li").removeClass("dropdownNavigationItem"),this._list.find("li:eq("+this._itemIndex+")").addClass("dropdownNavigationItem")},_selectElement:function(){return 0===this._itemCount?!0:(this._list.find("li.dropdownNavigationItem").trigger("click"),!1)},_getSearchString:function(t){var e=$.trim(this._searchInput.val());if(this._commaSeperated){var i=t.keyCode||t.which;if(i==$.ui.keyCode.COMMA)return"";for(var n=e.split(","),s=n.length,a=0;s>a;a++)n[a]=$.trim(n[a]);for(var a=0;s>a;a++){var o=n[a];if(!this._oldSearchString[a]){e=o;break}if(o!=this._oldSearchString[a]){e=o,this._caretAt=a;break}}this._oldSearchString=n}return e},_getParameters:function(t){return t},_success:function(t){if(this._clearList(!1),this._searchInput.parents(".searchBar").removeClass("loading"),$.getLength(t.returnValues))for(var e in t.returnValues){var i=t.returnValues[e];this._createListItem(i)}else if(!this._handleEmptyResult())return;WCF.CloseOverlayHandler.addCallback("WCF.Search.Base",$.proxy(function(){this._clearList()},this));var n=this._searchInput.parents(".dropdown").wcfIdentify();WCF.Dropdown.getDropdownMenu(n).hasClass("dropdownOpen")||WCF.Dropdown.toggleDropdown(n),this._itemIndex=-1,WCF.Dropdown.getDropdown(n).data("disableAutoFocus")||this._selectNextItem()},_handleEmptyResult:function(){return!1},_createListItem:function(t){var e=$("<li><span>"+WCF.String.escapeHTML(t.label)+"</span></li>").appendTo(this._list);return e.data("objectID",t.objectID).data("label",t.label).click($.proxy(this._executeCallback,this)),this._itemCount++,e},_executeCallback:function(t){var e=!1,i=$(t.currentTarget);if(this._commaSeperated){var n=i.data("label");this._oldSearchString[this._caretAt]=n,this._searchInput.val(this._oldSearchString.join(", ")),$.browser.webkit&&this._searchInput.css({display:"block"});var s=this._searchInput.val().toLowerCase().indexOf(n.toLowerCase())+n.length;this._searchInput.focus().setCaret(s)}else null===this._callback?this._searchInput.val(i.data("label")):e=this._callback(i.data())===!0?!0:!1;this._clearList(e)},_clearList:function(t){t&&!this._commaSeperated&&this._searchInput.val(""),WCF.Dropdown.getDropdown(this._searchInput.parents(".dropdown").wcfIdentify()).removeClass("dropdownOpen"),WCF.Dropdown.getDropdownMenu(this._searchInput.parents(".dropdown").wcfIdentify()).removeClass("dropdownOpen"),this._list.end().empty(),WCF.CloseOverlayHandler.removeCallback("WCF.Search.Base"),this._itemCount=0,this._itemIndex=-1},addExcludedSearchValue:function(t){WCF.inArray(t,this._excludedSearchValues)||this._excludedSearchValues.push(t)},removeExcludedSearchValue:function(t){var e=$.inArray(t,this._excludedSearchValues);-1!=e&&this._excludedSearchValues.splice(e,1)}}),WCF.Search.User=WCF.Search.Base.extend({_className:"wcf\\data\\user\\UserAction",_includeUserGroups:!1,init:function(t,e,i,n,s){this._includeUserGroups=i,this._super(t,e,n,s)},_getParameters:function(t){return t.data.includeUserGroups=this._includeUserGroups?1:0,t},_createListItem:function(t){var e=this._super(t),i=null;if(t.icon?i=$(t.icon):this._includeUserGroups&&"group"===t.type&&(i=$('<span class="icon icon16 icon-group" />')),i){var n=e.find("span").detach(),s=$("<div />").addClass("box16").appendTo(e);s.append(i),s.append($("<div />").append(n))}return e.data("type",t.type),e}}),WCF.System={},WCF.System.Dependency={},WCF.System.Dependency.Manager={_callbacks:{},_loaded:[],_setupCallbacks:{},register:function(t,e){return $.isFunction(e)?void(WCF.inArray(t,this._loaded)?setTimeout(function(){e()},1):(this._callbacks[t]||(this._callbacks[t]=[]),this._callbacks[t].push(e))):void console.debug("[WCF.System.Dependency.Manager] Callback for identifier '"+t+"' is invalid, aborting.")},setup:function(t,e){return $.isFunction(e)?(this._setupCallbacks[t]||(this._setupCallbacks[t]=[]),void this._setupCallbacks[t].push(e)):void console.debug("[WCF.System.Dependency.Manager] Setup callback for identifier '"+t+"' is invalid, aborting.")},invoke:function(t){if(this._setupCallbacks[t]){for(var e=0,i=this._setupCallbacks[t].length;i>e;e++)this._setupCallbacks[t][e]();delete this._setupCallbacks[t]}if(this._loaded.push(t),this._callbacks[t]){for(var e=0,i=this._callbacks[t].length;i>e;e++)this._callbacks[t][e]();delete this._callbacks[t]}}},WCF.System.FlexibleMenu={_containers:{},_containerIDs:[],_dropdowns:{},_dropdownMenus:{},_hasHiddenItems:{},_isWorking:!1,_menuItems:{},init:function(){this.registerMenu("mainMenu"),this.registerMenu($(".navigationHeader:eq(0)").wcfIdentify()),this._registerTabMenus(),$(window).resize($.proxy(this.rebuildAll,this)),WCF.DOMNodeInsertedHandler.addCallback("WCF.System.FlexibleMenu",$.proxy(this._registerTabMenus,this))},_registerTabMenus:function(){$(".tabMenuContainer:not(.jsFlexibleMenuEnabled), .messageTabMenu:not(.jsFlexibleMenuEnabled)").each(function(t,e){var i=$(e).addClass("jsFlexibleMenuEnabled").children("nav");i.length&&i.find("> ul:eq(0) > li").length&&WCF.System.FlexibleMenu.registerMenu(i.wcfIdentify())})},registerMenu:function(t){var e=$("#"+t);return e.length?(this._containerIDs.push(t),this._containers[t]=e,this._menuItems[t]=e.find("> ul:eq(0) > li"),this._dropdowns[t]=$('<li class="dropdown jsFlexibleMenuDropdown"><a class="icon icon16 icon-list" /></li>').data("containerID",t).click($.proxy(this._click,this)),this._dropdownMenus[t]=$('<ul class="dropdownMenu" />').appendTo(this._dropdowns[t]),this._hasHiddenItems[t]=!1,this.rebuild(t),void WCF.Dropdown.initDropdown(this._dropdowns[t].children("a"))):void console.debug("[WCF.System.FlexibleMenu] Unable to find container identified by '"+t+"', aborting.")},rebuildAll:function(){if(!this._isWorking){this._isWorking=!0;for(var t=0,e=this._containerIDs.length;e>t;t++)this.rebuild(this._containerIDs[t]);this._isWorking=!1}},rebuild:function(t){if(!this._containers[t])return void console.debug("[WCF.System.FlexibleMenu] Cannot rebuild unknown container identified by '"+t+"'");var e=this._containers[t],i=this._menuItems[t].hide(),n=i.filter(".active, .ui-state-active").show();this._hasHiddenItems[t]||this._dropdowns[t].appendTo(e.children("ul:eq(0)"));var s=this._dropdowns[t].outerWidth(!0),a=e.parent(),o=a.innerWidth();o-=a.cssAsNumber("padding-left")+a.cssAsNumber("padding-right"),o-=e.cssAsNumber("margin-left")+e.cssAsNumber("margin-right"),o-=e.cssAsNumber("padding-left")+e.cssAsNumber("padding-right"),o-=e.children("ul:eq(0)").cssAsNumber("padding-left")+e.children("ul:eq(0)").cssAsNumber("padding-right"),o-=n.outerWidth(!0),this._hasHiddenItems[t]=!1;for(var r=0;r<i.length;r++){var l=$(i[r]);if(!l.hasClass("active")&&!l.hasClass("ui-state-active")){var c=l.outerWidth(!0);if(!(o-c>0)){if(s>o){var h=l.prev();h.hasClass("active")||h.hasClass("ui-state-active")?h.prev().hide():h.hide()}this._hasHiddenItems[t]=!0;break}o-=c,l.show()}}if(this._hasHiddenItems[t]){this._dropdownMenus[t].empty();var d=this;i.each($.proxy(function(e,n){return $(n).is(":visible")?!0:void $("<li>"+$(n).html()+"</li>").data("index",e).appendTo(this._dropdownMenus[t]).click(function(e){var n=$(i[$(e.currentTarget).data("index")]);"A"===n[0].tagName?n.trigger("click"):"LI"===n[0].tagName&&n.find("a").trigger("click"),n.parent().hasClass("ui-tabs-nav")&&e.preventDefault(),setTimeout(function(){d.rebuild(t)},50)})},this))}else this._dropdowns[t].detach()}},WCF.System.Mobile={},WCF.System.Mobile.UX={_enabled:!1,_main:null,_sidebar:null,init:function(){this._enabled=!1,this._main=$("#main"),this._sidebar=this._main.find("> div > div > .sidebar"),$.browser.touch&&$("html").addClass("touch"),enquire.register("screen and (max-width: 800px)",{match:$.proxy(this._enable,this),unmatch:$.proxy(this._disable,this),setup:$.proxy(this._setup,this),deferSetup:!0}),$.browser.msie&&this._sidebar.width()>305&&this._sidebar.css("display","none").css("display","")},_setup:function(){this._initSidebarToggleButtons(),this._initSearchBar(),this._initButtonGroupNavigation(),WCF.CloseOverlayHandler.addCallback("WCF.System.Mobile.UX",$.proxy(this._closeMenus,this)),WCF.DOMNodeInsertedHandler.addCallback("WCF.System.Mobile.UX",$.proxy(this._initButtonGroupNavigation,this))},_enable:function(){this._enabled=!0,$.browser.msie&&this._sidebar.css("display","none").css("display","")},_disable:function(){this._enabled=!1,$.browser.msie&&this._sidebar.css("display","none").css("display","")},_initSidebarToggleButtons:function(){var t=this._main.hasClass("sidebarOrientationLeft"),e=this._main.hasClass("sidebarOrientationRight");if(t||e){var i="wcf.global.sidebar.show"+(t?"Left":"Right")+"Sidebar";(i===WCF.Language.get(i)||""===WCF.Language.get(i))&&(i='<span class="icon icon16 icon-double-angle-'+(t?"left":"right")+'" />');var n="wcf.global.sidebar.hide"+(t?"Left":"Right")+"Sidebar";(n===WCF.Language.get(n)||""===WCF.Language.get(n))&&(n='<span class="icon icon16 icon-double-angle-'+(t?"right":"left")+'" />');var s=this;$('<span class="button small mobileSidebarToggleButton">'+i+"</span>").appendTo($(".content")).click(function(){s._main.addClass("mobileShowSidebar")}),$('<span class="button small mobileSidebarToggleButton">'+n+"</span>").appendTo($(".sidebar")).click(function(){s._main.removeClass("mobileShowSidebar")})}},_initSearchBar:function(){var t=$(".searchBar:eq(0)"),e=this;t.click(function(){e._enabled&&t.addClass("searchBarOpen")}),this._main.click(function(){t.removeClass("searchBarOpen")})},_initButtonGroupNavigation:function(){$(".buttonGroupNavigation:not(.jsMobileButtonGroupNavigation)").each(function(t,e){var i=$(e).addClass("jsMobileButtonGroupNavigation"),n=$('<a class="dropdownLabel"><span class="icon icon24 icon-list" /></a>').prependTo(i);n.click(function(){return n.next().toggleClass("open"),!1})})},_closeMenus:function(){$(".jsMobileButtonGroupNavigation > ul.open").removeClass("open")}},WCF.System.ObjectStore={_objects:{},add:function(t,e){void 0===this._objects[t]&&(this._objects[t]=[]),this._objects[t].push(e)},invoke:function(t,e){if(this._objects[t])for(var i=0;i<this._objects[t].length;i++)e(this._objects[t][i])}},WCF.System.Captcha={_captchas:{},addCallback:function(t,e){return $.isFunction(e)?void(this._captchas[t]=e):void console.debug("[WCF.System.Captcha] Given callback is no function")},getData:function(t){return void 0===this._captchas[t]?void console.debug('[WCF.System.Captcha] Unknow captcha id "'+t+'"'):this._captchas[t]()},removeCallback:function(t){delete this._captchas[t]}},WCF.System.Page={},WCF.System.Page.Multiple=Class.extend({_cache:{},_options:{},_pageNo:1,_pages:0,_previousPageNo:0,init:function(t){this._options=$.extend({container:null,pagination:null,loadItems:null},t),this._cache={},this._pageNo=1,this._pages=0,this._previousPageNo=0,this._pagination.data("pages")&&this._pagination.wcfPages({maxPage:this._pagination.data("pages")}).on("wcfpagesswitched",$.proxy(this._showPage,this))},_showPage:function(t,e){e&&e.activePage&&(e.template||(this._previousPageNo=this._pageNo),this._pageNo=e.activePage),this._cache[this._pageNo]||e&&e.template?(this._cache[this._previousPageNo]=this._list.children().detach(),e&&e.template?this._list.html(e.template):this._list.append(this._cache[this._pageNo])):this._options.loadItems()},showPage:function(t,e){this._showPage(null,{activePage:t,template:e})},getPageNo:function(){return this._pageNo}}),WCF.System.Notification=Class.extend({_callback:null,_cssClassNames:"",_message:"",_overlay:null,_timer:null,init:function(t,e){this._cssClassNames=e||"success",this._message=t||WCF.Language.get("wcf.global.success"),this._overlay=$("#systemNotification"),this._timer=null,this._overlay.length||(this._overlay=$('<div id="systemNotification"><p></p></div>').hide().appendTo(document.body),this._overlay.children("p").click(function(){this._hide()}.bind(this)))},show:function(t,e,i,n){e=parseInt(e),e||(e=2e3),t&&$.isFunction(t)&&(this._callback=t),this._overlay.children("p").html(i||this._message),this._overlay.children("p").removeClass().addClass(n||this._cssClassNames),this._timer=new WCF.PeriodicalExecuter($.proxy(this._hide,this),e),this._overlay.wcfFadeIn(void 0,300)},_hide:function(t){t=t?t:this._timer,null!==this._callback&&this._callback(),this._overlay.wcfFadeOut(void 0,300),t.stop(),t=null}}),WCF.System.Confirmation={_callback:null,_dialog:null,_parameters:null,_visible:!1,_confirmationButton:null,show:function(t,e,i,n){if(this._visible)return void console.debug("[WCF.System.Confirmation] Confirmation dialog is already open, refusing action.");if(!$.isFunction(e))return void console.debug("[WCF.System.Confirmation] Given callback is invalid, aborting.");this._callback=e,this._parameters=i;var s=!0;null===this._dialog&&(this._createDialog(),s=!1),this._dialog.find("#wcfSystemConfirmationContent").empty().hide(),n&&n.length&&n.appendTo(this._dialog.find("#wcfSystemConfirmationContent").show()),this._dialog.find("p").text(t),this._dialog.wcfDialog({onClose:$.proxy(this._close,this),onShow:$.proxy(this._show,this),title:WCF.Language.get("wcf.global.confirmation.title")}),s&&this._dialog.wcfDialog("render"),this._confirmationButton.focus(),this._visible=!0},_createDialog:function(){this._dialog=$('<div id="wcfSystemConfirmation" class="systemConfirmation"><p /><div id="wcfSystemConfirmationContent" /></div>').hide().appendTo(document.body);var t=$('<div class="formSubmit" />').appendTo(this._dialog);this._confirmationButton=$('<button class="buttonPrimary">'+WCF.Language.get("wcf.global.confirmation.confirm")+"</button>").data("action","confirm").click($.proxy(this._click,this)).appendTo(t),$("<button>"+WCF.Language.get("wcf.global.confirmation.cancel")+"</button>").data("action","cancel").click($.proxy(this._click,this)).appendTo(t)},_click:function(t){this._notify($(t.currentTarget).data("action"))},_close:function(){this._visible&&this._notify("cancel")},_notify:function(t){this._visible=!1,this._dialog.wcfDialog("close"),this._confirmationButton.blur(),this._callback(t,this._parameters)},_show:function(){this._dialog.find("button.buttonPrimary").blur().focus()}},WCF.System.DisableScrolling={_depth:0,_oldOverflow:null,disable:function(){$.browser.touch||(0===this._depth&&(this._oldOverflow=$(document.body).css("overflow"),$(document.body).css("overflow","hidden")),this._depth++)},enable:function(){0!==this._depth&&(this._depth--,0===this._depth&&$(document.body).css("overflow",this._oldOverflow))}},WCF.System.DisableZoom={_depth:0,_oldViewportSettings:null,disable:function(){if(0===this._depth){var t=$("meta[name=viewport]");this._oldViewportSettings=t.attr("content"),t.attr("content",this._oldViewportSettings+",maximum-scale=1")}this._depth++},enable:function(){0!==this._depth&&(this._depth--,0===this._depth&&$("meta[name=viewport]").attr("content",this._oldViewportSettings))}},WCF.System.Fullscreen={enterFullscreen:function(t){t.requestFullscreen?t.requestFullscreen():t.msRequestFullscreen?t.msRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.webkitRequestFullscreen&&t.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)},toggleFullscreen:function(t){null===this.getFullscreenElement()?this.enterFullscreen(t):this.exitFullscreen()},getFullscreenElement:function(){return document.fullscreenElement?document.fullscreenElement:document.mozFullScreenElement?document.mozFullScreenElement:document.webkitFullscreenElement?document.webkitFullscreenElement:document.msFullscreenElement?document.msFullscreenElement:null},exitFullscreen:function(){document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen?document.msExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()},isSupported:function(){return document.documentElement.requestFullscreen||document.documentElement.msRequestFullscreen||document.documentElement.mozRequestFullScreen||document.documentElement.webkitRequestFullscreen?!0:!1}},WCF.System.PageNavigation={_button:null,_description:null,_dialog:null,_elementID:"",_elements:{},_pageNo:null,init:function(t,e){var i=$(t);if(i.length)return e=e||null,null===e||$.isFunction(e)?void this._initElements(i,e):void console.debug("[WCF.System.PageNavigation] Callback for selector '"+t+"' is invalid, aborting.")},_initElements:function(t,e){var i=this;t.each(function(t,e){var n=$(e),s=n.wcfIdentify();void 0===i._elements[s]&&(i._elements[s]=n,n.find("li.jumpTo").data("elementID",s).click($.proxy(i._click,i)))}).data("callback",e)},_click:function(t){if(this._elementID=$(t.currentTarget).data("elementID"),null===this._dialog){this._dialog=$('<div id="pageNavigationOverlay" />').hide().appendTo(document.body);var e=$("<fieldset><legend>"+WCF.Language.get("wcf.global.page.jumpTo")+"</legend></fieldset>").appendTo(this._dialog);$('<dl><dt><label for="jsPageNavigationPageNo">'+WCF.Language.get("wcf.global.page.jumpTo")+"</label></dt><dd></dd></dl>").appendTo(e),this._pageNo=$('<input type="number" id="jsPageNavigationPageNo" value="1" min="1" max="1" class="tiny" />').keyup($.proxy(this._keyUp,this)).appendTo(e.find("dd")),this._description=$("<small></small>").insertAfter(this._pageNo);var i=$('<div class="formSubmit" />').appendTo(this._dialog);this._button=$('<button class="buttonPrimary">'+WCF.Language.get("wcf.global.button.submit")+"</button>").click($.proxy(this._submit,this)).appendTo(i)}this._button.enable(),this._description.html(WCF.Language.get("wcf.global.page.jumpTo.description").replace(/#pages#/,this._elements[this._elementID].data("pages"))),this._pageNo.val(this._elements[this._elementID].data("pages")).attr("max",this._elements[this._elementID].data("pages")),this._dialog.wcfDialog({title:WCF.Language.get("wcf.global.page.pageNavigation")})},_keyUp:function(t){if(t.which==$.ui.keyCode.ENTER&&!this._button.prop("disabled"))return void this._submit();var e=parseInt(this._pageNo.val())||0;1>e||e>this._pageNo.attr("max")?this._button.disable():this._button.enable()},_submit:function(){var t=this._elements[this._elementID];if(null===t.data("callback")){var e=t.data("link").replace(/pageNo=%d/,"pageNo="+this._pageNo.val());window.location=e}else t.data("callback")(this._pageNo.val()),this._dialog.wcfDialog("close")}},WCF.System.KeepAlive=Class.extend({init:function(t){new WCF.PeriodicalExecuter(function(t){new WCF.Action.Proxy({autoSend:!0,data:{actionName:"keepAlive",className:"wcf\\data\\session\\SessionAction"},failure:function(){t.stop()},showLoadingOverlay:!1,success:function(t){WCF.System.PushNotification.executeCallbacks(t)},suppressErrors:!0})},1e3*t)}}),WCF.System.PushNotification={_callbacks:{},addCallback:function(t,e){void 0===this._callbacks[t]&&(this._callbacks[t]=[]),this._callbacks[t].push(e)},executeCallbacks:function(t){for(var e in t.returnValues)if(void 0!==this._callbacks[e])for(var i=0;i<this._callbacks[e].length;i++)this._callbacks[e][i](t.returnValues[e])}},WCF.System.Event={_listeners:{},addListener:function(t,e,i){"undefined"==typeof this._listeners[t]&&(this._listeners[t]={}),"undefined"==typeof this._listeners[t][e]&&(this._listeners[t][e]=[]);var n=WCF.getUUID();return this._listeners[t][e].push({callback:i,uuid:n}),n},removeListener:function(t,e,i){if(this._listeners[t]&&this._listeners[t][e])for(var n=0;n<this._listeners[t][e].length;n++)if(this._listeners[t][e][n].uuid==i)return this._listeners[t][e].splice(n,1),!0;return!1},removeAllListeners:function(t,e){return this._listeners[t]&&this._listeners[t][e]?(delete this._listeners[t][e],!0):!1},fireEvent:function(t,e,i){if(i=i||{},this._listeners[t]&&this._listeners[t][e])for(var n=0;n<this._listeners[t][e].length;n++)this._listeners[t][e][n].callback(i)}},WCF.System.Worker=Class.extend({_aborted:!1,_actionName:"",_callback:null,_className:"",_dialog:null,_proxy:null,_title:"",init:function(t,e,i,n,s){this._aborted=!1,this._actionName=t,this._callback=s||null,this._className=e,this._dialog=null,this._proxy=new WCF.Action.Proxy({autoSend:!0,data:{actionName:this._actionName,className:this._className,parameters:n||{}},showLoadingOverlay:!1,success:$.proxy(this._success,this)}),this._title=i},_success:function(t){if(null===this._dialog&&(this._dialog=$("<div />").hide().appendTo(document.body),this._dialog.wcfDialog({closeConfirmMessage:WCF.Language.get("wcf.worker.abort.confirmMessage"),closeViaModal:!1,onClose:$.proxy(function(){this._aborted=!0,this._proxy.abortPrevious(),window.location.reload()},this),title:this._title})),!this._aborted)if(t.returnValues.template&&this._dialog.html(t.returnValues.template),this._dialog.find("progress").attr("value",t.returnValues.progress).text(t.returnValues.progress+"%").next("span").text(t.returnValues.progress+"%"),t.returnValues.progress<100){var e=t.returnValues.parameters||{};e.loopCount=t.returnValues.loopCount,this._proxy.setOption("data",{actionName:this._actionName,className:this._className,parameters:e}),this._proxy.sendRequest()}else if(null!==this._callback)this._callback(this,t);else{this._dialog.find(".fa-spinner").removeClass("fa-spinner").addClass("fa-check green"),this._dialog.find(".boxHeadline h1").text(WCF.Language.get("wcf.global.worker.completed"));var i=$('<div class="formSubmit" />').appendTo(this._dialog);$('<button class="buttonPrimary">'+WCF.Language.get("wcf.global.button.next")+"</button>").appendTo(i).focus().click(function(){t.returnValues.redirectURL?window.location=t.returnValues.redirectURL:window.location.reload()}),this._dialog.wcfDialog("render")}}}),WCF.InlineEditor=Class.extend({_callbacks:[],_dropdowns:{},_elements:{},_notification:null,_options:[],_proxy:null,_triggerElements:{},_updateData:[],init:function(t){var e=$(t);if(e.length){this._setOptions();for(var i="",n=0,s=this._options.length;s>n;n++)if(this._options[n].isQuickOption){i=this._options[n].optionName;break}var a=this;e.each(function(t,e){var n=$(e),s=n.wcfIdentify(),o=a._getTriggerElement(n);null!==o&&1===o.length&&(o.click($.proxy(a._show,a)).data("elementID",s),i&&o.disableSelection().data("optionName",i).dblclick($.proxy(a._click,a)),a._elements[s]=n)}),this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),WCF.CloseOverlayHandler.addCallback("WCF.InlineEditor",$.proxy(this._closeAll,this)),this._notification=new WCF.System.Notification(WCF.Language.get("wcf.global.success"),"success")}},_closeAll:function(){for(var t in this._elements)this._hide(t)},_setOptions:function(){this._options=[]},registerCallback:function(t){$.isFunction(t)&&this._callbacks.push(t)},_getTriggerElement:function(){return null},_show:function(t){t.preventDefault();var e=$(t.currentTarget).data("elementID"),i=null;
+
+this._dropdowns[e]||(this._triggerElements[e]=i=this._getTriggerElement(this._elements[e]).addClass("dropdownToggle").wrap('<span class="dropdown" />'),this._dropdowns[e]=$('<ul class="dropdownMenu" />').insertAfter(i)),this._dropdowns[e].empty();for(var n=!1,s="",a=0,o=this._options.length;o>a;a++){var r=this._options[a];if("divider"===r.optionName)""!==s&&"divider"!==s&&($('<li class="dropdownDivider" />').appendTo(this._dropdowns[e]),s=r.optionName);else if(this._validate(e,r.optionName)||this._validateCallbacks(e,r.optionName)){var l=$("<li><span>"+r.label+"</span></li>").appendTo(this._dropdowns[e]);l.data("elementID",e).data("optionName",r.optionName).data("isQuickOption",r.isQuickOption?!0:!1).click($.proxy(this._click,this)),n=!0,s=r.optionName}}if(n){var c=this._dropdowns[e].children().last();c.hasClass("dropdownDivider")&&c.remove();var h=null,d=0;if(this._dropdowns[e].children().each(function(t,e){var i=$(e);i.hasClass("dropdownDivider")||(i.data("isQuickOption")?h=i:d++)}),!d)return h.trigger("click"),this._triggerElements[e]&&WCF.Dropdown.close(this._triggerElements[e].parents(".dropdown").wcfIdentify()),!1}return null!==i&&WCF.Dropdown.initDropdown(i,!0),!1},_validate:function(){return!1},_validateCallbacks:function(t,e){var i=this._callbacks.length;if(i)for(var n=0;i>n;n++)if(this._callbacks[n].validate(this._elements[t],e))return!0;return!1},_success:function(t){var e=this._updateData.length;e&&(this._updateState(t),this._updateData=[])},_updateState:function(){},_click:function(t){var e=$(t.currentTarget),i=e.data("elementID"),n=e.data("optionName");this._execute(i,n)||this._executeCallback(i,n),this._hide(i)},_execute:function(){return!1},_executeCallback:function(t,e){var i=this._callbacks.length;if(i)for(var n=0;i>n;n++)if(this._callbacks[n].execute(this._elements[t],e))return!0;return!1},_hide:function(t){this._dropdowns[t]&&this._dropdowns[t].empty().removeClass("dropdownOpen")}}),WCF.Upload=Class.extend({_name:"__files[]",_buttonSelector:null,_fileListSelector:null,_fileUpload:null,_className:"",_iframe:null,_internalFileID:0,_options:{},_uploadMatrix:[],_supportsAJAXUpload:!0,_overlay:null,init:function(t,e,i,n){this._buttonSelector=t,this._fileListSelector=e,this._className=i,this._internalFileID=0,this._options=$.extend(!0,{action:"upload",multiple:!1,url:"index.php/AJAXUpload/?t="+SECURITY_TOKEN+SID_ARG_2ND},n||{}),this._options.url=WCF.convertLegacyURL(this._options.url);var s=new XMLHttpRequest;this._supportsAJAXUpload=s&&"upload"in s&&"onprogress"in s.upload,this._createButton()},_createButton:function(){if(this._supportsAJAXUpload){this._fileUpload=$('<input type="file" name="'+this._name+'" '+(this._options.multiple?'multiple="true" ':"")+"/>"),this._fileUpload.change($.proxy(this._upload,this));var t=$('<p class="button uploadButton"><span>'+WCF.Language.get("wcf.global.button.upload")+"</span></p>");t.prepend(this._fileUpload)}else{var t=$('<p class="button uploadFallbackButton"><span>'+WCF.Language.get("wcf.global.button.upload")+"</span></p>");t.click($.proxy(this._showOverlay,this))}this._insertButton(t)},_insertButton:function(t){this._buttonSelector.prepend(t)},_removeButton:function(){var t=".uploadButton";this._supportsAJAXUpload||(t=".uploadFallbackButton"),this._buttonSelector.find(t).remove()},_upload:function(t,e,i){var n=null,s=[];if(e)s.push(e);else if(i){var a="";switch(i.type){case"image/png":a=".png";break;case"image/jpeg":a=".jpg";break;case"image/gif":a=".gif"}s.push({name:"pasted-from-clipboard"+a})}else s=this._fileUpload.prop("files");if(s.length){var o=new FormData;if(n=this._createUploadMatrix(s),!this._uploadMatrix[n].length)return null;for(var r=0,l=s.length;l>r;r++)if(this._uploadMatrix[n][r]){var c=this._uploadMatrix[n][r].data("internalFileID");i?o.append("__files["+c+"]",i,s[r].name):o.append("__files["+c+"]",s[r])}o.append("actionName",this._options.action),o.append("className",this._className);var h=this._getParameters();for(var d in h)o.append("parameters["+d+"]",h[d]);var u=this;$.ajax({type:"POST",url:this._options.url,enctype:"multipart/form-data",data:o,contentType:!1,processData:!1,success:function(t){u._success(n,t)},error:$.proxy(this._error,this),xhr:function(){var t=$.ajaxSettings.xhr();return t&&t.upload.addEventListener("progress",function(t){u._progress(n,t)},!1),t}})}return n},_createUploadMatrix:function(t){if(t.length){var e=this._uploadMatrix.length;this._uploadMatrix[e]=[];for(var i=0,n=t.length;n>i;i++){var s=t[i],a=this._initFile(s);a.hasClass("uploadFailed")||(a.data("filename",s.name).data("internalFileID",this._internalFileID++),this._uploadMatrix[e][i]=a)}return e}return null},_success:function(){},_error:function(){},_progress:function(t,e){var i=Math.round(100*e.loaded/e.total);for(var n in this._uploadMatrix[t])this._uploadMatrix[t][n].find("progress").attr("value",i)},_getParameters:function(){return{}},_initFile:function(t){return $("<li>"+t.name+" ("+t.size+')<progress max="100" /></li>').appendTo(this._fileListSelector)},_showOverlay:function(){if(null===this._iframe&&(this._iframe=$('<iframe name="__fileUploadIFrame" />').hide().appendTo(document.body)),!this._overlay){this._overlay=$('<div><form enctype="multipart/form-data" method="post" action="'+this._options.url+'" target="__fileUploadIFrame" /></div>').hide().appendTo(document.body);var t=this._overlay.find("form");$('<dl class="wide"><dd><input type="file" id="__fileUpload" name="'+this._name+'" '+(this._options.multiple?'multiple="true" ':"")+"/></dd></dl>").appendTo(t),$('<div class="formSubmit"><input type="submit" value="Upload" accesskey="s" /></div></form>').appendTo(t),$('<input type="hidden" name="isFallback" value="1" />').appendTo(t),$('<input type="hidden" name="actionName" value="'+this._options.action+'" />').appendTo(t),$('<input type="hidden" name="className" value="'+this._className+'" />').appendTo(t);var e=this._getParameters();for(var i in e)$('<input type="hidden" name="'+i+'" value="'+e[i]+'" />').appendTo(t);t.submit($.proxy(function(){var t={name:this._getFilename(),size:""},e=this._createUploadMatrix([t]),i=this;this._iframe.data("loading",!0).off("load").load(function(){i._evaluateResponse(e)}),this._overlay.wcfDialog("close")},this))}this._overlay.wcfDialog({title:WCF.Language.get("wcf.global.button.upload")})},_evaluateResponse:function(t){var e=$.parseJSON(this._iframe.contents().find("pre").html());this._success(t,e)},_getFilename:function(){return $("#__fileUpload").val().split("\\").pop()}}),WCF.Upload.Parallel=WCF.Upload.extend({init:function(t,e,i,n){n=$.extend(!0,n||{},{multiple:!0}),this._super(t,e,i,n)},_upload:function(){for(var t=this._fileUpload.prop("files"),e=0,i=t.length;i>e;e++){var n=t[e],s=new FormData,a=this._createUploadMatrix(n);if(this._uploadMatrix[a].length){s.append("__files["+a+"]",n),s.append("actionName",this._options.action),s.append("className",this._className);var o=this._getParameters();for(var r in o)s.append("parameters["+r+"]",o[r]);this._sendRequest(a,s)}}},_sendRequest:function(t,e){var i=this;$.ajax({type:"POST",url:this._options.url,enctype:"multipart/form-data",data:e,contentType:!1,processData:!1,success:function(e){i._success(t,e)},error:$.proxy(this._error,this),xhr:function(){var e=$.ajaxSettings.xhr();return e&&e.upload.addEventListener("progress",function(e){i._progress(t,e)},!1),e}})},_createUploadMatrix:function(t){var e=this._initFile(t);return e.hasClass("uploadFailed")?null:(e.data("filename",t.name).data("internalFileID",this._internalFileID),this._uploadMatrix[this._internalFileID++]=e,this._internalFileID-1)},_success:function(){},_progress:function(t,e){var i=Math.round(100*e.loaded/e.total);this._uploadMatrix[t].find("progress").attr("value",i)},_showOverlay:function(){if(null===this._iframe&&(this._iframe=$('<iframe name="__fileUploadIFrame" />').hide().appendTo(document.body)),!this._overlay){this._overlay=$('<div><form enctype="multipart/form-data" method="post" action="'+this._options.url+'" target="__fileUploadIFrame" /></div>').hide().appendTo(document.body);var t=this._overlay.find("form");$('<dl class="wide"><dd><input type="file" id="__fileUpload" name="'+this._name+'" '+(this._options.multiple?'multiple="true" ':"")+"/></dd></dl>").appendTo(t),$('<div class="formSubmit"><input type="submit" value="Upload" accesskey="s" /></div></form>').appendTo(t),$('<input type="hidden" name="isFallback" value="1" />').appendTo(t),$('<input type="hidden" name="actionName" value="'+this._options.action+'" />').appendTo(t),$('<input type="hidden" name="className" value="'+this._className+'" />').appendTo(t);var e=this._getParameters();for(var i in e)$('<input type="hidden" name="'+i+'" value="'+e[i]+'" />').appendTo(t);t.submit($.proxy(function(){var t={name:this._getFilename(),size:""},e=this._createUploadMatrix(t),i=this;this._iframe.data("loading",!0).off("load").load(function(){i._evaluateResponse(e)}),this._overlay.wcfDialog("close")},this))}this._overlay.wcfDialog({title:WCF.Language.get("wcf.global.button.upload")})},_evaluateResponse:function(t){var e=$.parseJSON(this._iframe.contents().find("pre").html());this._success(t,e)}}),WCF.Sortable={},WCF.Sortable.List=Class.extend({_additionalParameters:{},_className:"",_containerID:"",_container:null,_notification:null,_offset:0,_options:{},_proxy:null,_structure:{},init:function(t,e,i,n,s,a){if(this._additionalParameters=a||{},this._containerID=$.wcfEscapeID(t),this._container=$("#"+this._containerID),this._className=e,this._offset=i?i:0,this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._structure={},this._options=$.extend(!0,{axis:"y",connectWith:"#"+this._containerID+" .sortableList",disableNesting:"sortableNoNesting",doNotClear:!0,errorClass:"sortableInvalidTarget",forcePlaceholderSize:!0,helper:"clone",items:"li:not(.sortableNoSorting)",opacity:.6,placeholder:"sortablePlaceholder",tolerance:"pointer",toleranceElement:"> span"},n||{}),s?$("#"+this._containerID+" .sortableList").sortable(this._options):$("#"+this._containerID+" > .sortableList").nestedSortable(this._options),this._className){var o=this._container.find(".formSubmit");if(!o.length&&(o=this._container.next(".formSubmit"),!o.length))return void console.debug("[WCF.Sortable.Simple] Unable to find form submit for saving, aborting.");o.children('button[data-type="submit"]').click($.proxy(this._submit,this))}},_submit:function(){this._structure={},this._container.find(".sortableList").each($.proxy(function(t,e){var i=$(e),n=i.data("objectID");void 0!==n&&i.children(this._options.items).each($.proxy(function(t,e){var i=$(e).data("objectID");this._structure[n]||(this._structure[n]=[]),this._structure[n].push(i)},this))},this));var t=$.extend(!0,{data:{offset:this._offset,structure:this._structure}},this._additionalParameters);this._proxy.setOption("data",{actionName:"updatePosition",className:this._className,interfaceName:"wcf\\data\\ISortableAction",parameters:t}),this._proxy.sendRequest()},_success:function(){null===this._notification&&(this._notification=new WCF.System.Notification(WCF.Language.get("wcf.global.success.edit"))),this._notification.show()}}),WCF.Popover=Class.extend({_activeElementID:"",_cancelPopover:!1,_data:{},_defaultDimensions:{height:150,width:450},_defaultOrientation:{x:"right",y:"top"},_delay:{show:800,hide:500},_hoverElement:!1,_hoverElementID:"",_hoverPopover:!1,_margin:20,_peOut:null,_peOverElement:null,_popover:null,_popoverContent:null,_popoverOffset:10,_selector:"",init:function(t){$.browser.mobile||(this._activeElementID="",this._cancelPopover=!1,this._data={},this._defaultDimensions={height:150,width:450},this._defaultOrientation={x:"rtl"===WCF.Language.get("wcf.global.pageDirection")?"left":"right",y:"top"},this._delay={show:800,hide:500},this._hoverElement=!1,this._hoverElementID="",this._hoverPopover=!1,this._margin=20,this._peOut=null,this._peOverElement=null,this._popoverOffset=10,this._selector=t,this._popover=$('<div class="popover"><span class="icon icon48 icon-spinner"></span><div class="popoverContent"></div></div>').hide().appendTo(document.body),this._popoverContent=this._popover.children(".popoverContent:eq(0)"),this._popover.hover($.proxy(this._overPopover,this),$.proxy(this._out,this)),this._initContainers(),WCF.DOMNodeInsertedHandler.addCallback("WCF.Popover."+t,$.proxy(this._initContainers,this)),$(window).on("beforeunload",function(){this._cancelPopover=!0,this._hide(!0)}.bind(this)))},_initContainers:function(){if(!$.browser.mobile){var t=$(this._selector);t.length&&t.each($.proxy(function(t,e){var i=$(e),n=i.wcfIdentify();this._data[n]||(this._data[n]={content:null,isLoading:!1},i.hover($.proxy(this._overElement,this),$.proxy(this._out,this)),i.is("a")&&i.attr("href")&&i.click(function(){this._hide(!0)}.bind(this)))},this))}},_overElement:function(t){if(!this._cancelPopover){null!==this._peOverElement&&this._peOverElement.stop();var e=$(t.currentTarget).wcfIdentify();this._hoverElementID=e,this._peOverElement=new WCF.PeriodicalExecuter($.proxy(function(t){t.stop(),this._hoverElementID===e&&(this._activeElementID=e,this._prepare())},this),this._delay.show),this._hoverElement=!0,this._hoverPopover=!1}},_prepare:function(){if(!this._cancelPopover){null!==this._peOut&&this._peOut.stop(),this._popover.is(":visible")&&this._hide(!0),!this._data[this._activeElementID].loading&&this._data[this._activeElementID].content?(this._popoverContent.html(this._data[this._activeElementID].content),WCF.DOMNodeInsertedHandler.execute()):this._data[this._activeElementID].loading=!0;var t=this._popover.show().getDimensions();t=this._data[this._activeElementID].loading?{height:Math.max(t.height,this._defaultDimensions.height),width:Math.max(t.width,this._defaultDimensions.width)}:this._fixElementDimensions(this._popover,t),this._popover.hide();var e=this._getOrientation(t.height,t.width);this._popover.css(this._getCSS(e.x,e.y)),this._popover.removeClass("bottom left right top").addClass(e.x).addClass(e.y),this._show()}},_show:function(){this._cancelPopover||(this._popover.stop().show().css({opacity:1}).wcfFadeIn(),this._data[this._activeElementID].loading?(this._popover.children("span").show(),this._loadContent()):(this._popover.children("span").hide(),this._popoverContent.css({opacity:1})))},_loadContent:function(){},_insertContent:function(t,e,i){if(this._data[t]={content:e,loading:!1},this._activeElementID===t)if(i){var n=this._popoverContent.getDimensions();this._popoverContent.css({height:"auto",width:"auto"}),this._popoverContent.html(this._data[t].content);var s=this._popoverContent.getDimensions();this._popoverContent.html("").css({height:n.height+"px",width:n.width+"px"});var a=this;this._popoverContent.animate({height:s.height+"px",width:s.width+"px"},300,function(){a._popover.children("span").hide(),a._popoverContent.html(a._data[t].content).css({opacity:0}).animate({opacity:1},200),WCF.DOMNodeInsertedHandler.execute()})}else this._popover.children("span").hide(),this._popoverContent.html(this._data[t].content),WCF.DOMNodeInsertedHandler.execute()},_hide:function(t){var e=this;this._popoverContent.stop(),this._popover.stop(),t?(e._popover.css({opacity:0}).hide(),e._popoverContent.empty().css({height:"auto",opacity:0,width:"auto"})):this._popover.wcfFadeOut(function(){e._popoverContent.empty().css({height:"auto",opacity:0,width:"auto"}),e._popover.hide()})},_overPopover:function(){null!==this._peOut&&this._peOut.stop(),this._hoverElement=!1,this._hoverPopover=!0},_out:function(){this._cancelPopover||(this._hoverElementID="",this._hoverElement=!1,this._hoverPopover=!1,this._peOut=new WCF.PeriodicalExecuter($.proxy(function(t){t.stop(),this._hoverElement||this._hoverPopover||this._hide(!1)},this),this._delay.hide))},_getOrientation:function(t,e){var i=$("#"+this._activeElementID),n=i.getOffsets("offset"),s=i.getDimensions(),a=$(document).getDimensions(),o="left"===this._defaultOrientation.x?"left":"right",r="bottom"===this._defaultOrientation.y?"bottom":"top",l=this._evaluateOrientation(o,r,n,s,a,t,e);return l.flawed&&(o="left"===o?"right":"left",l=this._evaluateOrientation(o,r,n,s,a,t,e),l.flawed&&(o="right"===o?"left":"right",r="bottom"===r?"top":"bottom",l=this._evaluateOrientation(o,r,n,s,a,t,e),l.flawed&&(o="left"===o?"right":"left",l=this._evaluateOrientation(o,r,n,s,a,t,e),l.flawed&&(o="left"===this._defaultOrientationX?"left":"right",r="bottom"===this._defaultOrientationY?"bottom":"top")))),{x:o,y:r}},_evaluateOrientation:function(t,e,i,n,s,a,o){var r=0,l=0;switch(t){case"left":l=i.left-o;break;case"right":l=s.width-(i.left+o)}switch(e){case"bottom":r=s.height-(i.top+n.height+this._popoverOffset+a);break;case"top":r=i.top-(a-this._popoverOffset)}var c=!1;return(r<this._margin||l<this._margin)&&(c=!0),{flawed:c,x:l,y:r}},_getCSS:function(t,e){var i={bottom:"auto",left:"auto",right:"auto",top:"auto"},n=$("#"+this._activeElementID),s=n.getOffsets("offset"),a=this._fixElementDimensions(n,n.getDimensions()),o=$(window).getDimensions();switch(t){case"left":i.right=o.width-(s.left+a.width);break;case"right":i.left=s.left}switch(e){case"bottom":i.top=s.top+(a.height+this._popoverOffset);break;case"top":i.bottom=o.height-(s.top-this._popoverOffset)}return i},_fixElementDimensions:function(t,e){var i=t.parent().getDimensions();return i.height<e.height&&(e.height=i.height),i.width<e.width&&(e.width=i.width),e}}),WCF.EditableItemList=Class.extend({_allowCustomInput:!1,_className:"",_data:{},_form:null,_itemList:null,_objectID:0,_objectTypeID:0,_search:null,_searchInput:null,init:function(t,e){if(this._itemList=$(t),this._searchInput=$(e),this._data={},!this._itemList.length||!this._searchInput.length)return void console.debug("[WCF.EditableItemList] Item list and/or search input do not exist, aborting.");if(this._objectID=this._getObjectID(),this._objectTypeID=this._getObjectTypeID(),this._itemList.find(".jsEditableItem").click($.proxy(this._click,this)),this._itemList.children("ul").length||$("<ul />").appendTo(this._itemList),this._itemList=this._itemList.children("ul"),this._form=this._itemList.parents("form").submit($.proxy(this._submit,this)),this._allowCustomInput){var i=this;this._searchInput.keydown($.proxy(this._keyDown,this)).keypress($.proxy(this._keyPress,this)).on("paste",function(){setTimeout(function(){i._onPaste()},100)})}this._searchInput.parents(".dropdown").data("preventSubmit",!0)},_keyDown:function(t){return null===t?this._keyPress(null):!0},_keyPress:function(t){if(null===t||44===t.charCode||t.charCode===$.ui.keyCode.ENTER||$.browser.mozilla&&t.keyCode===$.ui.keyCode.ENTER){if(null!==t&&t.charCode===$.ui.keyCode.ENTER&&this._search&&-1!==this._search._itemIndex)return!1;var e=$.trim(this._searchInput.val());return t&&44===t.charCode&&(e=e.substring(0,this._searchInput.getCaret())),""===e?!0:(this.addItem({objectID:0,label:e}),this._searchInput.val(t&&44===t.charCode?$.trim(this._searchInput.val().substr(this._searchInput.getCaret())):""),null!==t&&t.stopPropagation(),!1)}return!0},_onPaste:function(){var t=$.trim(this._searchInput.val());t=t.split(",");for(var e=0,i=t.length;i>e;e++){var n=$.trim(t[e]);""!==n&&this.addItem({objectID:0,label:n})}this._searchInput.val("")},load:function(){},_click:function(t){var e=$(t.currentTarget),i=e.data("objectID"),n=e.data("label");return this._search&&this._search.removeExcludedSearchValue(n),this._removeItem(i,n),e.remove(),t.stopPropagation(),!1},_getObjectID:function(){return 0},_getObjectTypeID:function(){return 0},addItem:function(t){if(this._data[t.objectID]&&(0!==t.objectID||!this._allowCustomInput))return!0;var e=$('<li class="badge">'+WCF.String.escapeHTML(t.label)+"</li>").data("objectID",t.objectID).data("label",t.label).appendTo(this._itemList);return e.click($.proxy(this._click,this)),this._search&&this._search.addExcludedSearchValue(t.label),this._addItem(t.objectID,t.label),!0},clearList:function(){this._itemList.children("li").each($.proxy(function(t,e){var i=$(e);this._search&&this._search.removeExcludedSearchValue(i.data("label")),i.remove(),this._removeItem(i.data("objectID"),i.data("label"))},this))},_submit:function(){this._keyDown(null)},_addItem:function(t,e){this._data[t]=e},_removeItem:function(t){delete this._data[t]},getSearchInput:function(){return this._searchInput}}),WCF.Sitemap=Class.extend({_cache:[],_dialog:null,_didInit:!1,_proxy:null,init:function(){$("#sitemap").click($.proxy(this._click,this)),this._cache=[],this._dialog=null,this._didInit=!1,this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)})},_click:function(t){t.preventDefault(),null===this._dialog?(this._dialog=$('<div id="sitemapDialog" />').appendTo(document.body),this._proxy.setOption("data",{actionName:"getSitemap",className:"wcf\\data\\sitemap\\SitemapAction"}),this._proxy.sendRequest()):(this._dialog.wcfDialog("open"),$(document).trigger("resize"))},_success:function(t){this._didInit?(this._cache.push(t.returnValues.sitemapName),this._dialog.find("#sitemap_"+t.returnValues.sitemapName).html(t.returnValues.template),this._dialog.wcfDialog("render")):(this._cache.push(t.returnValues.sitemapName),this._dialog.html(t.returnValues.template),this._dialog.find(".sitemapNavigation").click($.proxy(this._navigate,this)),this._dialog.find(".tabMenuContainer").wcfTabs("select","sitemap_"+t.returnValues.sitemapName),this._dialog.wcfDialog({title:WCF.Language.get("wcf.page.sitemap")}),this._didInit=!0),$(document).trigger("resize")},_navigate:function(t){var e=$(t.currentTarget).data("sitemapName");WCF.inArray(e,this._cache)?(this._dialog.find(".tabMenuContainer").wcfTabs("select","sitemap_"+e),this._dialog.wcfDialog("render")):(this._proxy.setOption("data",{actionName:"getSitemap",className:"wcf\\data\\sitemap\\SitemapAction",parameters:{sitemapName:e}}),this._proxy.sendRequest())}}),WCF.Language.Chooser=Class.extend({_callback:null,_dropdown:null,_input:null,init:function(t,e,i,n,s,a){var o=$("#"+t);if(1!=o.length)return void console.debug("[WCF.Language.Chooser] Invalid container id '"+t+"' given");if(this._input=$("#"+e),this._input.length||(this._input=$('<input type="hidden" name="'+e+'" value="'+i+'" />').appendTo(o)),void 0!==s){if(!$.isFunction(s))return void console.debug("[WCF.Language.Chooser] Given callback is invalid");this._callback=s}this._dropdown=$('<div class="dropdown" id="'+t+'-languageChooser" />').appendTo(o),$('<div class="dropdownToggle boxFlag box24" data-toggle="'+t+'-languageChooser"></div>').appendTo(this._dropdown);var r=$('<ul class="dropdownMenu" />').appendTo(this._dropdown);for(var l in n){var c=n[l],h=$('<li class="boxFlag"><a class="box24"><div class="framed"><img src="'+c.iconPath+'" alt="" class="iconFlag" /></div> <div><h3>'+c.languageName+"</h3></div></a></li>").appendTo(r);if(h.data("languageID",l).click($.proxy(this._click,this)),l==i){var d=$(""+h.html()),u=d.children().detach();this._dropdown.children(".dropdownToggle").empty().append(u)}}if(a){$('<li class="dropdownDivider" />').appendTo(r);var h=$("<li><a>"+WCF.Language.get("wcf.global.language.noSelection")+"</a></li>").data("languageID",0).click($.proxy(this._click,this)).appendTo(r);0===i&&this._dropdown.children(".dropdownToggle").empty().append(h.html())}else if(0===i){var p=$('<div><span class="icon icon24 fa-question" /></div> <div><h3>'+WCF.Language.get("wcf.global.language.noSelection")+"</h3></div>");this._dropdown.children(".dropdownToggle").empty().append(p)}WCF.Dropdown.destroy(t+"-languageChooser"),WCF.Dropdown.init()},_click:function(t){var e=$(t.currentTarget),i=e.data("languageID");this._input.val(i);var n=$(""+e.html()),s=0===i?n:n.children().detach();this._dropdown.children(".dropdownToggle").empty().append(s),null!==this._callback&&this._callback(e)}}),WCF.Style={},WCF.Style.Chooser=Class.extend({_dialog:null,_proxy:null,init:function(){$('<li class="styleChooser"><a href="#">'+WCF.Language.get("wcf.style.changeStyle")+"</a></li>").appendTo($("#footerNavigation > ul.navigationItems")).click($.proxy(this._showDialog,this)),this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)})},_showDialog:function(t){null!==t&&t.preventDefault(),null===this._dialog?(this._dialog=$('<div id="styleChooser" />').hide().appendTo(document.body),this._loadDialog()):this._dialog.wcfDialog({title:WCF.Language.get("wcf.style.changeStyle")})},_loadDialog:function(){this._proxy.setOption("data",{actionName:"getStyleChooser",className:"wcf\\data\\style\\StyleAction"}),this._proxy.sendRequest()},_success:function(t){return"changeStyle"===t.actionName?void window.location.reload():(this._dialog.html(t.returnValues.template),this._dialog.find("li").addClass("pointer").click($.proxy(this._click,this)),void this._showDialog(null))},_click:function(t){this._proxy.setOption("data",{actionName:"changeStyle",className:"wcf\\data\\style\\StyleAction",objectIDs:[$(t.currentTarget).data("styleID")]}),this._proxy.sendRequest()}}),WCF.UserPanel=Class.extend({_container:null,_didLoad:!1,_link:null,_noItems:"",_revertOnEmpty:!0,init:function(t){return this._container=$("#"+t),this._didLoad=!1,this._revertOnEmpty=!0,1!=this._container.length?void console.debug("[WCF.UserPanel] Unable to find container identfied by '"+t+"', aborting."):void this._convert()},_convert:function(){this._container.addClass("dropdown"),this._link=this._container.children("a").remove();var t=$('<a href="'+this._link.attr("href")+'" class="dropdownToggle">'+this._link.html()+"</a>").appendTo(this._container).click($.proxy(this._click,this)),e=$('<ul class="dropdownMenu" />').appendTo(this._container);$('<li class="jsDropdownPlaceholder"><span>'+WCF.Language.get("wcf.global.loading")+"</span></li>").appendTo(e),this._addDefaultItems(e),this._container.dblclick($.proxy(function(){return window.location=this._link.attr("href"),!1},this)),WCF.Dropdown.initDropdown(t,!1)},_addDefaultItems:function(){},_addDivider:function(t){$('<li class="dropdownDivider" />').appendTo(t)},_click:function(t){t.preventDefault(),this._didLoad||(new WCF.Action.Proxy({autoSend:!0,data:this._getParameters(),success:$.proxy(this._success,this)}),this._didLoad=!0)},_getParameters:function(){return{}},_success:function(t){var e=WCF.Dropdown.getDropdownMenu(this._container.wcfIdentify());e.children(".jsDropdownPlaceholder").remove(),t.returnValues&&t.returnValues.template?($(""+t.returnValues.template).prependTo(e),this._updateBadge(t.returnValues.totalCount),this._after(e)):($("<li><span>"+WCF.Language.get(this._noItems)+"</span></li>").prependTo(e),this._updateBadge(0))},_updateBadge:function(t){if(t=parseInt(t)||0){var e=this._container.find(".badge");e.length||(e=$('<span class="badge badgeInverse" />').appendTo(this._container.children(".dropdownToggle")),e.before(" ")),e.html(t)}else this._container.find(".badge").remove()},_after:function(){}}),$.widget("ui.wcfDialog",{_closeButton:null,_container:null,_content:null,_overlay:null,_title:null,_titlebar:null,_isOpen:!1,options:{autoOpen:!0,closable:!0,closeButtonLabel:null,closeConfirmMessage:null,closeViaModal:!0,hideTitle:!1,modal:!0,title:"",zIndex:400,onClose:null,onShow:null},_createWidget:function(t,e){return"script"===$(e).getTagName()?(console.debug("[ui.wcfDialog] Ignored script tag"),this.element=!1,null):void $.Widget.prototype._createWidget.apply(this,arguments)},_init:function(){this.options.autoOpen&&this.open(),$(window).resize($.proxy(this._resize,this))},_create:function(){null===this.options.closeButtonLabel&&(this.options.closeButtonLabel=WCF.Language.get("wcf.global.button.close")),this._container=$('<div class="dialogContainer" />').hide().css({zIndex:this.options.zIndex}).appendTo(document.body),this._titlebar=$('<header class="dialogTitlebar" />').hide().appendTo(this._container),this._title=$('<span class="dialogTitle" />').hide().appendTo(this._titlebar),this._closeButton=$('<a class="dialogCloseButton jsTooltip" title="'+this.options.closeButtonLabel+'"><span /></a>').click($.proxy(this.close,this)).hide().appendTo(this._titlebar),this._content=$('<div class="dialogContent" />').appendTo(this._container),this._setOption("title",this.options.title),this._setOption("closable",this.options.closable);var t=this.element.detach();this._content.html(t),this.options.modal&&(this._overlay=$("#jsWcfDialogOverlay"),this._overlay.length||(this._overlay=$('<div id="jsWcfDialogOverlay" class="dialogOverlay" />').css({height:"100%",zIndex:399}).hide().appendTo(document.body)),this.options.closable&&this.options.closeViaModal&&(this._overlay.click($.proxy(this.close,this)),$(document).keyup($.proxy(function(t){t.keyCode&&t.keyCode===$.ui.keyCode.ESCAPE&&(this.close(),t.preventDefault())},this)))),WCF.DOMNodeInsertedHandler.execute()},_setOption:function(t,e){return this.options[t]=e,"hideTitle"==t||"title"==t?this.options.hideTitle||""==this.options.title?this._title.html(""):this._title.html(this.options.title).show():("closable"==t||"closeButtonLabel"==t)&&(this.options.closable?(this._closeButton.attr("title",this.options.closeButtonLabel).show().find("span").html(this.options.closeButtonLabel),WCF.DOMNodeInsertedHandler.execute()):this._closeButton.hide()),!this.options.hideTitle&&""!=this.options.title||this.options.closable?this._titlebar.show():this._titlebar.hide(),this},open:function(){this.element!==!1&&(this.isOpen()||(null!==this._overlay&&(WCF.activeDialogs++,1===WCF.activeDialogs&&this._overlay.show()),this.render(),this._isOpen=!0,this._content.find(".jsDialogAutoFocus:visible:first").focus()))},isOpen:function(){return this._isOpen},close:function(t){this.isOpen()&&(this.options.closeConfirmMessage?WCF.System.Confirmation.show(this.options.closeConfirmMessage,$.proxy(function(t){"confirm"===t&&this._close()},this)):this._close(),void 0!==t&&t.preventDefault())},_close:function(){this._isOpen=!1,this._container.wcfFadeOut(),this._container.data("wcfDialogScrollOffset")&&window.scrollTo(0,this._container.data("wcfDialogScrollOffset")),null!==this._overlay&&(WCF.activeDialogs--,0===WCF.activeDialogs&&this._overlay.hide()),null!==this.options.onClose&&this.options.onClose()},_resize:function(){this.isOpen()&&this.render()},render:function(){this._container.is(":visible")||"0px"!==this._container.css("top")||(this._container.data("wcfDialogScrollOffset",$(window).scrollTop()),window.scrollTo(0,0)),this._container.show(),this._content.children().show(),this._content.css({height:"auto",width:"auto"}),this._container.stop(),this._content.stop(),this._container.show().css("opacity",1);var t=0;this._content.find(".formSubmit:visible").length?(t=this._content.find(".formSubmit").outerHeight(),this._content.addClass("dialogForm").css({marginBottom:t+"px"})):this._content.removeClass("dialogForm").css({marginBottom:"0px"});var e=$(window).getDimensions();.9*e.width>800&&this._container.css("maxWidth","800px");var i=this._container.getDimensions("outer"),n=this._content.getDimensions(),t=i.height-n.height,s=e.height-t-120;this._content.css({maxHeight:s+"px"}),this._determineOverflow(),i=this._container.getDimensions("outer");var a=Math.round((e.width-i.width)/2),o=Math.round((e.height-i.height)/2),r=Math.round(e.height/100*20);o>r&&(o=r),this._container.css({left:a+"px",top:o+"px"}),this._content.css({height:"auto",width:"auto"}),this.isOpen()||(this._container.hide(),this._container.wcfFadeIn($.proxy(function(){null!==this.options.onShow&&this.options.onShow()},this)))},_determineOverflow:function(){var t=$(window).getDimensions(),e=this._content.css("maxHeight");this._content.css("maxHeight","none");var i=this._container.getDimensions("outer"),n="visible";if((.8*t.height<i.height||.8*t.width<i.width)&&(n="auto"),this._content.css("overflow",n),this._content.css("maxHeight",e),"visible"===n){var s=0;this._content.children().each(function(t,e){s+=$(e).outerHeight()}),this._content.height()<s&&(n="auto",this._content.css("overflow","auto"))}$.browser.mozilla&&!$.browser.mobile&&("auto"===n?this._content.children("div").css("margin-bottom",this._content.css("padding-bottom")):this._content.children("div").css("margin-bottom",!1));
+
+},_getContentDimensions:function(t){var e=this._content.getDimensions();return t&&e.height>t&&(e.height=t),e}}),$.widget("ui.wcfSlideshow",{_buttonList:null,_count:0,_index:0,_itemList:null,_items:null,_timer:null,_width:0,options:{cycle:!0,cycleInterval:5,itemGap:50},_create:function(){this._itemList=this.element.children("ul"),this._items=this._itemList.children("li"),this._count=this._items.length,this._index=0,this._count>1&&this._initSlideshow()},_initSlideshow:function(){var t=$(this._items.get(0)).outerHeight();this._items.addClass("slideshowItem"),this._width=this.element.css("height",t).innerWidth(),this._itemList.addClass("slideshowItemList").css("left",0),this._items.each($.proxy(function(e,i){$(i).show().css({height:t,left:(this._width+this.options.itemGap)*e,width:this._width})},this)),this.element.css({height:t,width:this._width}).hover($.proxy(this._hoverIn,this),$.proxy(this._hoverOut,this)),this._buttonList=$('<ul class="slideshowButtonList" />').appendTo(this.element);for(var e=0;e<this._count;e++){var i=$('<li><a><span class="icon icon16 icon-circle" /></a></li>').data("index",e).click($.proxy(this._click,this)).appendTo(this._buttonList);0==e&&i.find(".icon").addClass("active")}this._resetTimer(),$(window).resize($.proxy(this._resize,this))},rebuildHeight:function(){var t=$(this._items.get(0)).css("height","auto"),e=t.outerHeight();this._items.css("height",e+"px"),this.element.css("height",e+"px")},_resize:function(){this._width=this.element.css("width","auto").innerWidth(),this._items.each($.proxy(function(t,e){$(e).css({left:(this._width+this.options.itemGap)*t,width:this._width})},this)),this._index--,this.moveTo(null)},_hoverIn:function(){null!==this._timer&&this._timer.stop()},_hoverOut:function(){this._resetTimer()},_resetTimer:function(){if(this.options.cycle){null!==this._timer&&this._timer.stop();var t=this;this._timer=new WCF.PeriodicalExecuter(function(){t.moveTo(null)},1e3*this.options.cycleInterval)}},_click:function(t){this.moveTo($(t.currentTarget).data("index")),this._resetTimer()},moveTo:function(t){this._index=null===t?this._index+1:t,this._index==this._count&&(this._index=0),$(this._buttonList.find(".icon").removeClass("active").get(this._index)).addClass("active"),this._itemList.css("left",this._index*(this._width+this.options.itemGap)*-1),this._trigger("moveTo",null,{index:this._index})},getItem:function(t){return this._items[t]?this._items[t]:null}}),$.widget("ui.wcfTabs",$.ui.tabs,{_sanitizeSelector:function(t){return t.replace(/([:\.])/g,"\\$1")},select:function(t){return $.isNumeric(t)||(this.panels.each(function(e,i){return $(i).wcfIdentify()===t?(t=e,!1):void 0}),$.isNumeric(t))?void this._setOption("active",t):void console.debug("[ui.wcfTabs] Unable to find panel identified by '"+t+"', aborting.")},selectTab:function(t){t="#"+t,this.anchors.each(function(e,i){var n=$(i);return n.prop("hash")===t?(n.trigger("click"),!1):void 0})},getCurrentIndex:function(){return this.lis.index(this.lis.filter(".ui-tabs-selected"))},hasAnchor:function(t,e){var i=!1;return this.anchors.each(function(n,s){var a=$(s).attr("href");if(/#.+/.test(a)){var o=a.split("#",2);if(e&&(o=o[1].split("-",2)),o[1]===t)return i=!0,!1}}),i},revertToDefault:function(){var t=this.element.data("active");t&&""!==t||(t=0),this.select(t)},_processTabs:function(){var t=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return $("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=$(),this.anchors.each(function(e,i){var n,s,a=$(i).uniqueId().attr("id"),o=$(i).closest("li"),r=o.attr("aria-controls");n=i.hash,s=t.element.find(t._sanitizeSelector(n)),s.length&&(t.panels=t.panels.add(s)),r&&o.data("ui-tabs-aria-controls",r),o.attr({"aria-controls":n.substring(1),"aria-labelledby":a}),s.attr("aria-labelledby",a)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},load:function(){}}),$.widget("ui.wcfPages",{SHOW_LINKS:11,SHOW_SUB_LINKS:20,options:{activePage:1,maxPage:1,nextPage:null,previousPage:null},_create:function(){null===this.options.nextPage&&(this.options.nextPage=WCF.Language.get("wcf.global.page.next")),null===this.options.previousPage&&(this.options.previousPage=WCF.Language.get("wcf.global.page.previous")),this.element.addClass("pageNavigation"),this._render()},destroy:function(){$.Widget.prototype.destroy.apply(this,arguments),this.element.children().remove()},_render:function(){if(!this.options.disabled&&this.options.maxPage>1){var t=!1;this.element.hasClass("hidden")&&this.element.removeClass("hidden"),this.element.show(),this.element.children().remove();var e=$("<ul />");this.element.append(e);var i=$('<li class="button skip" />');if(e.append(i),this.options.activePage>1){var n=$("<a"+(null!=this.options.previousPage?' title="'+this.options.previousPage+'"':"")+"></a>");i.append(n),this._bindSwitchPage(n,this.options.activePage-1);var s=$('<span class="icon icon16 icon-double-angle-left" />');n.append(s)}else{var s=$('<span class="icon icon16 icon-double-angle-left" />');i.append(s),i.addClass("disabled").removeClass("button"),s.addClass("disabled")}e.append(this._renderLink(1));var a=this.SHOW_LINKS-4,o=this.options.activePage-2;0>o&&(o=0);var r=this.options.maxPage-(this.options.activePage+1);0>r&&(r=0),this.options.activePage>1&&this.options.activePage<this.options.maxPage&&a--;var l=a/2,c=this.options.activePage,h=this.options.activePage;1>c&&(c=1),1>h&&(h=1),h>this.options.maxPage-1&&(h=this.options.maxPage-1),o>=l?c-=l:(c-=o,h+=l-o),r>=l?h+=l:(h+=r,c-=l-r),h=Math.ceil(h),c=Math.ceil(c),1>c&&(c=1),h>this.options.maxPage&&(h=this.options.maxPage),c>1&&(2>c-1?e.append(this._renderLink(2)):($('<li class="button jumpTo"><a title="'+WCF.Language.get("wcf.global.page.jumpTo")+'" class="jsTooltip">...</a></li>').appendTo(e),t=!0));for(var d=c+1;h>d;d++)e.append(this._renderLink(d));h<this.options.maxPage&&(this.options.maxPage-h<2?e.append(this._renderLink(this.options.maxPage-1)):($('<li class="button jumpTo"><a title="'+WCF.Language.get("wcf.global.page.jumpTo")+'" class="jsTooltip">...</a></li>').appendTo(e),t=!0)),e.append(this._renderLink(this.options.maxPage));var u=$('<li class="button skip" />');if(e.append(u),this.options.activePage<this.options.maxPage){var p=$("<a"+(null!=this.options.nextPage?' title="'+this.options.nextPage+'"':"")+"></a>");u.append(p),this._bindSwitchPage(p,this.options.activePage+1);var _=$('<span class="icon icon16 icon-double-angle-right" />');p.append(_)}else{var _=$('<span class="icon icon16 icon-double-angle-right" />');u.append(_),u.addClass("disabled").removeClass("button"),_.addClass("disabled")}t&&(e.data("pages",this.options.maxPage),WCF.System.PageNavigation.init("#"+e.wcfIdentify(),$.proxy(function(t){this.switchPage(t)},this)))}else this.element.hide()},_renderLink:function(t,e){var i=$('<li class="button"></li>');if(void 0!=e&&e&&i.addClass("break"),t!=this.options.activePage){var n=$("<a>"+WCF.String.addThousandsSeparator(t)+"</a>");i.append(n),this._bindSwitchPage(n,t)}else{i.addClass("active");var s=$("<span>"+WCF.String.addThousandsSeparator(t)+'</span><span class="invisible">'+WCF.Language.get("wcf.page.pagePosition",{pageNo:t,pages:this.options.maxPage})+"</span>");i.append(s)}return i},_bindSwitchPage:function(t,e){var i=this;t.click(function(){i.switchPage(e)})},switchPage:function(t){this._setOption("activePage",t)},_setOption:function(t,e){if("activePage"==t){if(e!=this.options[t]&&e>0&&e<=this.options.maxPage){var i=this._trigger("shouldSwitch",void 0,{nextPage:e});i||void 0!==i?(this.options[t]=e,this._render(),this._trigger("switched",void 0,{activePage:e})):this._trigger("notSwitched",void 0,{activePage:e})}}else this.options[t]=e,"disabled"==t?e?this.element.children().remove():this._render():"maxPage"==t&&this._render();return this},_startInput:function(t){var e=$(t.currentTarget);e.is("a")||(e=e.parent("a")),e.hide();var i=e.parent("li").children("input").css("display","block").val("");i.focus()},_stopInput:function(t){var e=$(t.currentTarget);e.css("display","none");var i=e.parent("li");void 0!=i&&null!=i&&i.children("a").show()},_handleInput:function(t){var e=$.browser.msie&&"7.0"==$.browser.version;("keyup"!=t.type||e)&&(e&&(13!=t.which&&27!=t.which||"keyup"!=t.type)||(13==t.which&&this.switchPage(parseInt($(t.currentTarget).val())),(13==t.which||27==t.which)&&(this._stopInput(t),t.stopPropagation())))}}),WCF.Category={},WCF.Category.NestedList=Class.extend({_categories:{},init:function(){var t=this;$(".jsCategory").each(function(e,i){var n=$(i).data("parentCategoryID",null).change($.proxy(t._updateSelection,t));t._categories[n.val()]=n;var s=[];n.parents("li").find(".jsChildCategory").each(function(e,i){var a=$(i).data("parentCategoryID",n.val()).change($.proxy(t._updateSelection,t));t._categories[a.val()]=a,s.push(a.val()),a.is(":checked")&&n.prop("checked","checked")}),n.data("childCategoryIDs",s)})},_updateSelection:function(t){var e=$(t.currentTarget),i=e.data("parentCategoryID");if(e.is(":checked"))null!==i&&this._categories[i].prop("checked","checked");else if(null===i)for(var n=e.data("childCategoryIDs"),s=0,a=n.length;a>s;s++)this._categories[n[s]].prop("checked",!1)}}),WCF.Category.FlexibleCategoryList=Class.extend({_list:null,_categories:{},init:function(t){return this._list=$("#"+t),this._buildStructure(),this._list.find("input:checked").each(function(){$(this).trigger("change")}),this._list.children("li").length<2?void this._list.addClass("flexibleCategoryListDisabled"):void 0},_buildStructure:function(){var t=this;this._list.find(".jsCategory").each(function(e,i){var n=$(i).change(t._updateSelection.bind(t)),s=parseInt(n.val()),a=[];n.parents("li:eq(0)").find(".jsChildCategory").each(function(e,i){var s=$(i);s.data("parentCategory",n).change(t._updateSelection.bind(t));var o=parseInt(s.val());a.push(s);var r=[];s.parents("li:eq(0)").find(".jsSubChildCategory").each(function(e,i){var n=$(i);n.data("parentCategory",s).change(t._updateSelection.bind(t)),r.push(n)}),t._categories[o]=r}),t._categories[s]=a})},_updateSelection:function(t){var e=$(t.currentTarget),i=parseInt(e.val()),n=e.data("parentCategory");if(e.is(":checked"))n&&(n.prop("checked","checked"),n=n.data("parentCategory"),n&&n.prop("checked","checked"));else{if(this._categories[i])for(var s=0,a=this._categories[i].length;a>s;s++){var o=this._categories[i][s];o.prop("checked",!1);var r=parseInt(o.val());if(this._categories[r])for(var l=0,c=this._categories[r].length;c>l;l++)this._categories[r][l].prop("checked",!1)}if(n){for(var h=parseInt(n.val()),s=0,a=this._categories[h].length;a>s;s++)if(this._categories[h][s].prop("checked"))return;if(n=n.data("parentCategory")){h=parseInt(n.val());for(var s=0,a=this._categories[h].length;a>s;s++)if(this._categories[h][s].prop("checked"))return}}}}}),WCF.Condition={},WCF.Condition.PageControllerDependence=Class.extend({_pageControllerSelection:null,_supportedPageObjectTypeIDs:[],init:function(t,e){this._supportedPageObjectTypeIDs=e,this._pageControllerSelection=$("#pageControllers").change($.proxy(this._checkVisibility,this)),this._pageControllerContainer=this._pageControllerSelection.parents("dl:eq(0)"),this._fieldset=this._pageControllerContainer.parent("fieldset"),this._nextFieldset=this._fieldset.next("fieldset"),this._nextFieldset&&this._nextFieldset.data("margin-top",this._nextFieldset.css("margin-top")),this._input=$("#"+t),this._inputContainer=this._input.parents("dl:eq(0)"),this._checkVisibility()},_checkVisibility:function(){var t=this._pageControllerSelection.val()||[],e=!0;if(t.length){for(var i=0,n=t.length;n>i;i++)if(-1==this._supportedPageObjectTypeIDs.indexOf(parseInt(t[i]))){e=!1;break}}else e=!1;e?(this._inputContainer.show(),this._input.enable(),this._fieldset.show(),this._nextFieldset&&this._nextFieldset.css("margin-top",this._nextFieldset.data("margin-top"))):(this._inputContainer.hide(),this._input.disable(),this._fieldset.children("dl:visible").length||(this._fieldset.hide(),this._nextFieldset&&this._nextFieldset.css("margin-top",0)))}}),WCF.Notice={},WCF.Notice.Dismiss=Class.extend({_notices:{},_proxy:null,init:function(){this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)});var t=$(".jsDismissNoticeButton").click($.proxy(this._click,this));t.each($.proxy(function(t,e){this._notices[$(e).data("objectID")]=$(e).parent()},this))},_click:function(t){this._proxy.setOption("data",{actionName:"dismiss",className:"wcf\\data\\notice\\NoticeAction",objectIDs:[$(t.currentTarget).data("objectID")]}),this._proxy.sendRequest()},_success:function(t){this._notices[t.returnValues.noticeID].wcfFadeOut()}}); })(this);
 
 // WCF.Like.js
-(function (window, undefined) { })(this);
+(function (window, undefined) {"use strict";WCF.Like=Class.extend({_allowForOwnContent:!1,_canLike:!1,_containers:{},_containerData:{},_enableDislikes:!0,_isBusy:!1,_likeDetails:{},_proxy:null,_showSummary:!0,init:function(t,e,i,a){this._canLike=t,this._enableDislikes=e,this._isBusy=!1,this._likeDetails={},this._showSummary=i,this._allowForOwnContent=a;var s=this._getContainers();this._initContainers(s),this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)});var n=new Date,o=n.toString().hashCode+n.getUTCMilliseconds();WCF.DOMNodeInsertedHandler.addCallback("WCF.Like"+o,$.proxy(this._domNodeInserted,this))},_domNodeInserted:function(){var t=this._getContainers();this._initContainers(t)},_initContainers:function(containers){var $createdWidgets=!1;containers.each($.proxy(function(index,container){var $container=$(container),$containerID=$container.wcfIdentify();this._containers[$containerID]||(this._containers[$containerID]=$container,this._containerData[$containerID]={likeButton:null,badge:null,dislikeButton:null,likes:$container.data("like-likes"),dislikes:$container.data("like-dislikes"),objectType:$container.data("objectType"),objectID:this._getObjectID($containerID),users:eval($container.data("like-users")),liked:$container.data("like-liked")},this._createWidget($containerID),$createdWidgets=!0)},this)),$createdWidgets&&new WCF.PeriodicalExecuter(function(t){t.stop(),WCF.DOMNodeInsertedHandler.execute()},250)},_getContainers:function(){},_getWidgetContainer:function(){},_getObjectID:function(){},_addWidget:function(t,e){var i=this._getWidgetContainer(t);e.appendTo(i)},_buildWidget:function(t,e,i,a){var s=$('<aside class="likesWidget"><ul></ul></aside>');this._canLike&&(e.appendTo(s.find("ul")),i.appendTo(s.find("ul"))),a.appendTo(s),this._addWidget(t,s)},_createWidget:function(t){var e=$('<li class="wcfLikeButton"><a href="#" title="'+WCF.Language.get("wcf.like.button.like")+'" class="jsTooltip"><span class="icon icon16 icon-thumbs-up-alt" /> <span class="invisible">'+WCF.Language.get("wcf.like.button.like")+"</span></a></li>"),i=$('<li class="wcfDislikeButton"><a href="#" title="'+WCF.Language.get("wcf.like.button.dislike")+'" class="jsTooltip"><span class="icon icon16 icon-thumbs-down-alt" /> <span class="invisible">'+WCF.Language.get("wcf.like.button.dislike")+"</span></a></li>");this._enableDislikes||i.hide(),this._allowForOwnContent||WCF.User.userID!=this._containers[t].data("userID")||(e=$(""),i=$(""));var a=$('<a class="badge jsTooltip likesBadge" />').data("containerID",t).click($.proxy(this._showLikeDetails,this)),s=null;this._showSummary&&(s=$('<p class="likesSummary"><span class="pointer" /></p>'),s.children("span").data("containerID",t).click($.proxy(this._showLikeDetails,this))),this._buildWidget(t,e,i,a,s),this._containerData[t].likeButton=e,this._containerData[t].dislikeButton=i,this._containerData[t].badge=a,this._containerData[t].summary=s,e.data("containerID",t).data("type","like").click($.proxy(this._click,this)),i.data("containerID",t).data("type","dislike").click($.proxy(this._click,this)),this._setActiveState(e,i,this._containerData[t].liked),this._updateBadge(t),this._showSummary&&this._updateSummary(t)},_showLikeDetails:function(t,e){var i=null===t?e:$(t.currentTarget).data("containerID");void 0===this._likeDetails[i]&&(this._likeDetails[i]=new WCF.User.List("wcf\\data\\like\\LikeAction",WCF.Language.get("wcf.like.details"),{data:{containerID:i,objectID:this._containerData[i].objectID,objectType:this._containerData[i].objectType}})),this._likeDetails[i].open()},_click:function(t){t.preventDefault();var e=$(t.currentTarget);return null===e?void console.debug("[WCF.Like] Unable to find target button, aborting."):void this._sendRequest(e.data("containerID"),e.data("type"))},_sendRequest:function(t,e){this._isBusy||(this._isBusy=!0,this._proxy.setOption("data",{actionName:e,className:"wcf\\data\\like\\LikeAction",parameters:{data:{containerID:t,objectID:this._containerData[t].objectID,objectType:this._containerData[t].objectType}}}),this._proxy.sendRequest())},_success:function(t){var e=t.returnValues.containerID;if(this._containers[e])switch(t.actionName){case"dislike":case"like":this._containerData[e].likes=parseInt(t.returnValues.likes),this._containerData[e].dislikes=parseInt(t.returnValues.dislikes),this._containerData[e].users=t.returnValues.users,$.each(this._containerData[e].users,function(t,e){e.username=WCF.String.escapeHTML(e.username)}),this._updateBadge(e),this._showSummary&&this._updateSummary(e);var i=this._containerData[e].likeButton,a=this._containerData[e].dislikeButton,s=0;t.returnValues.isLiked?s=1:t.returnValues.isDisliked&&(s=-1),this._setActiveState(i,a,s),void 0!==this._likeDetails[e]&&delete this._likeDetails[e],this._isBusy=!1}},_updateBadge:function(t){if(this._containerData[t].likes||this._containerData[t].dislikes){this._containerData[t].badge.show();var e=this._containerData[t].likes-this._containerData[t].dislikes,i=this._containerData[t].badge;i.removeClass("green red"),e>0?(i.text("+"+WCF.String.formatNumeric(e)),i.addClass("green")):0>e?(i.text(WCF.String.formatNumeric(e)),i.addClass("red")):i.text("±0");var a=this._containerData[t].likes,s=this._containerData[t].dislikes;i.data("tooltip",WCF.Language.get("wcf.like.tooltip",{likes:a,dislikes:s}))}else this._containerData[t].badge.hide()},_updateSummary:function(t){if(this._containerData[t].likes){this._containerData[t].summary.show();var e=this._containerData[t].users,i=[];for(var a in e)i.push(e[a].username);var s=this._containerData[t].likes-i.length;this._containerData[t].summary.children("span").html(WCF.Language.get("wcf.like.summary",{users:i,others:s}))}else this._containerData[t].summary.hide()},_setActiveState:function(t,e,i){t.removeClass("active"),e.removeClass("active"),1==i?t.addClass("active"):-1==i&&e.addClass("active")}}); })(this);
 
 // WCF.ACL.js
-(function (window, undefined) { })(this);
+(function (window, undefined) {"use strict";WCF.ACL={},WCF.ACL.List=Class.extend({_categoryName:"",_container:null,_containerElements:{},_objectID:0,_objectTypeID:null,_options:{},_proxy:null,_search:null,_values:{group:{},user:{}},init:function(e,t,n,i,a,s){this._objectID=i||0,this._objectTypeID=t,this._categoryName=n,void 0===a&&(a=!0),this._values={group:{},user:{}},this._proxy=new WCF.Action.Proxy({showLoadingOverlay:!1,success:$.proxy(this._success,this)}),this._container=$(e).hide().addClass("aclContainer");var r=this._container.children("dd"),c=$('<ul class="aclList container" />').appendTo(r),l=$('<input type="text" class="long" placeholder="'+WCF.Language.get("wcf.acl.search."+(a?"":"user.")+"description")+'" />').appendTo(r),o=$('<ul class="aclPermissionList container" />').hide().appendTo(r);this._containerElements={aclList:c,denyAll:null,grantAll:null,permissionList:o,searchInput:l},this._search=new WCF.Search.User(l,$.proxy(this.addObject,this),a);var h=this._container.parents("form:eq(0)");h.submit($.proxy(this.submit,this));var p=h.find("input[type=reset]:eq(0)");p.length&&p.click($.proxy(this._reset,this)),s?this._success(s):this._loadACL()},_reset:function(){this._values={group:{},user:{}},this._containerElements.aclList.empty(),this._containerElements.searchInput.val(""),this._containerElements.permissionList.hide().find("input[type=checkbox]").prop("checked",!1)},_loadACL:function(){this._proxy.setOption("data",{actionName:"loadAll",className:"wcf\\data\\acl\\option\\ACLOptionAction",parameters:{categoryName:this._categoryName,objectID:this._objectID,objectTypeID:this._objectTypeID}}),this._proxy.sendRequest()},addObject:function(e){var t=this._createListItem(e.objectID,e.label,e.type);this._savePermissions(),this._containerElements.aclList.children("li").removeClass("active"),t.addClass("active"),this._search.addExcludedSearchValue(e.label),this._containerElements.permissionList.find("input[type=checkbox]").prop("checked",!1),this._containerElements.searchInput.val(""),this._containerElements.permissionList.show(),WCF.DOMNodeInsertedHandler.execute()},_createListItem:function(e,t,n){var i=$('<li><span class="icon icon16 icon-'+("group"===n?"group":"user")+'" /> <span>'+t+"</span></li>").appendTo(this._containerElements.aclList);return i.data("objectID",e).data("type",n).data("label",t).click($.proxy(this._click,this)),$('<span class="icon icon16 icon-remove jsTooltip pointer" title="'+WCF.Language.get("wcf.global.button.delete")+'" />').click($.proxy(this._removeItem,this)).appendTo(i),i},_removeItem:function(e){var t=$(e.currentTarget).parent(),n=t.data("type"),i=t.data("objectID");this._search.removeExcludedSearchValue(t.data("label")),t.remove(),this._values[n][i]&&delete this._values[n][i],this._selectFirstEntry()},_selectFirstEntry:function(){var e=this._containerElements.aclList.children("li:eq(0)");e.length?this._select(e,!1):this._reset()},_success:function(e){if($.getLength(e.returnValues.options)){var t=0,n={};for(var i in e.returnValues.options){var a=e.returnValues.options[i],s=$("<li><span>"+a.label+"</span></li>").data("optionID",i).data("optionName",a.optionName),r=$('<input type="checkbox" id="grant'+i+'" />').appendTo(s).wrap('<label for="grant'+i+'" class="jsTooltip" title="'+WCF.Language.get("wcf.acl.option.grant")+'" />'),c=$('<input type="checkbox" id="deny'+i+'" />').appendTo(s).wrap('<label for="deny'+i+'" class="jsTooltip" title="'+WCF.Language.get("wcf.acl.option.deny")+'" />');r.data("type","grant").data("optionID",i).change($.proxy(this._change,this)),c.data("type","deny").data("optionID",i).change($.proxy(this._change,this)),n[a.categoryName]||(n[a.categoryName]=[]),""===a.categoryName?s.appendTo(this._containerElements.permissionList):n[a.categoryName].push(s),t++}if(t>1){var s=$('<li class="aclFullAccess"><span>'+WCF.Language.get("wcf.acl.option.fullAccess")+"</span></li>").prependTo(this._containerElements.permissionList);this._containerElements.grantAll=$('<input type="checkbox" id="grantAll_'+this._container.attr("id")+'" />').appendTo(s).wrap('<label class="jsTooltip" title="'+WCF.Language.get("wcf.acl.option.grant")+'" />'),this._containerElements.denyAll=$('<input type="checkbox" id="denyAll_'+this._container.attr("id")+'" />').appendTo(s).wrap('<label class="jsTooltip" title="'+WCF.Language.get("wcf.acl.option.deny")+'" />'),this._containerElements.grantAll.data("type","grant").change($.proxy(this._changeAll,this)),this._containerElements.denyAll.data("type","deny").change($.proxy(this._changeAll,this))}if($.getLength(n))for(var l in n){var o=n[l];e.returnValues.categories[l]&&$('<li class="aclCategory">'+e.returnValues.categories[l]+"</li>").appendTo(this._containerElements.permissionList);for(var h=0,p=o.length;p>h;h++)o[h].appendTo(this._containerElements.permissionList)}this._parseData(e,"group"),this._parseData(e,"user"),this._container.show(),this._selectFirstEntry()}},_parseData:function(e,t){if($.getLength(e.returnValues[t].option)){for(var n in e.returnValues[t].label)this._createListItem(n,e.returnValues[t].label[n],t),this._search.addExcludedSearchValue(e.returnValues[t].label[n]);this._values[t]=e.returnValues[t].option,WCF.DOMNodeInsertedHandler.execute()}},_click:function(e){var t=$(e.currentTarget);t.hasClass("active")||this._select(t,!0)},_select:function(e,t){t&&this._savePermissions(),this._containerElements.aclList.children("li").removeClass("active"),e.addClass("active"),this._setupPermissions(e.data("type"),e.data("objectID"))},_change:function(e){var t=$(e.currentTarget),n=t.data("optionID"),i=t.data("type");t.is(":checked")?"deny"===i?($("#grant"+n).prop("checked",!1),null!==this._containerElements.grantAll&&this._containerElements.grantAll.prop("checked",!1)):($("#deny"+n).prop("checked",!1),null!==this._containerElements.denyAll&&this._containerElements.denyAll.prop("checked",!1)):"deny"===i&&null!==this._containerElements.denyAll?this._containerElements.denyAll.prop("checked",!1):"grant"===i&&null!==this._containerElements.grantAll&&this._containerElements.grantAll.prop("checked",!1);var a=!0;this._containerElements.permissionList.find("input[type=checkbox]").each($.proxy(function(e,t){var n=$(t);return n.data("type")!==i||n.attr("id")===i+"All_"+this._container.attr("id")||n.is(":checked")?void 0:(a=!1,!1)},this)),"deny"==i?null!==this._containerElements.denyAll&&(a?this._containerElements.denyAll.prop("checked",!0):this._containerElements.denyAll.prop("checked",!1)):null!==this._containerElements.grantAll&&(a?this._containerElements.grantAll.prop("checked",!0):this._containerElements.grantAll.prop("checked",!1))},_changeAll:function(e){var t=$(e.currentTarget),n=t.data("type");t.is(":checked")?"deny"===n?(this._containerElements.grantAll.prop("checked",!1),this._containerElements.permissionList.find("input[type=checkbox]").each($.proxy(function(e,t){var n=$(t);"deny"===n.data("type")&&n.attr("id")!=="denyAll_"+this._container.attr("id")&&n.prop("checked",!0).trigger("change")},this))):(this._containerElements.denyAll.prop("checked",!1),this._containerElements.permissionList.find("input[type=checkbox]").each($.proxy(function(e,t){var n=$(t);"grant"===n.data("type")&&n.attr("id")!=="grantAll_"+this._container.attr("id")&&n.prop("checked",!0).trigger("change")},this))):"deny"===n?(this._containerElements.grantAll.prop("checked",!1),this._containerElements.permissionList.find("input[type=checkbox]").each($.proxy(function(e,t){var n=$(t);"deny"===n.data("type")&&n.attr("id")!=="denyAll_"+this._container.attr("id")&&n.prop("checked",!1).trigger("change")},this))):(this._containerElements.denyAll.prop("checked",!1),this._containerElements.permissionList.find("input[type=checkbox]").each($.proxy(function(e,t){var n=$(t);"grant"===n.data("type")&&n.attr("id")!=="grantAll_"+this._container.attr("id")&&n.prop("checked",!1).trigger("change")},this)))},_setupPermissions:function(e,t){if(this._containerElements.permissionList.find("input[type='checkbox']").prop("checked",!1),this._values[e]&&this._values[e][t])for(var n in this._values[e][t])1==this._values[e][t][n]?$("#grant"+n).prop("checked",!0).trigger("change"):$("#deny"+n).prop("checked",!0).trigger("change");this._containerElements.permissionList.show()},_savePermissions:function(){var e=this._containerElements.aclList.find("li.active");if(e.length){var t=e.data("objectID"),n=e.data("type");this._values[n][t]={},this._containerElements.permissionList.find("input[type='checkbox']").each(function(e,i){var a=$(i);if(a.attr("id")!="grantAll_"+this._container.attr("id")&&a.attr("id")!="denyAll_"+this._container.attr("id")){var s="deny"===a.data("type")?0:1,r=a.data("optionID");a.is(":checked")?(this._values[n][t][r]=s,a.prop("checked",!1)):this._values[n]&&this._values[n][t]&&this._values[n][t][r]&&this._values[n][t][r]==s&&delete this._values[n][t][r]}}.bind(this))}},submit:function(){this._savePermissions(),this._save("group"),this._save("user")},_save:function(e){if($.getLength(this._values[e])){var t=this._container.parents("form:eq(0)");for(var n in this._values[e]){var i=this._values[e][n];for(var a in i)$('<input type="hidden" name="aclValues['+e+"]["+n+"]["+a+']" value="'+i[a]+'" />').appendTo(t)}}}}); })(this);
 
 // WCF.Attachment.js
-(function (window, undefined) { })(this);
+(function (window, undefined) {"use strict";WCF.Attachment={},WCF.Attachment.Upload=WCF.Upload.extend({_autoInsert:[],_insertAllButton:null,_objectType:"",_objectID:0,_tmpHash:"",_parentObjectID:0,_wysiwygContainerID:"",init:function(t,e,a,i,n,s,r,l){this._super(t,e,"wcf\\data\\attachment\\AttachmentAction",{multiple:!0,maxUploads:r}),this._autoInsert=[],this._objectType=a,this._objectID=parseInt(i),this._tmpHash=n,this._parentObjectID=parseInt(s),this._wysiwygContainerID=l,this._buttonSelector.children("p.button").click($.proxy(this._validateLimit,this)),this._fileListSelector.find(".jsButtonInsertAttachment").click($.proxy(this._insert,this)),this._fileListSelector.find(".jsButtonAttachmentInsertThumbnail").click($.proxy(this._insert,this)),this._fileListSelector.find(".jsButtonAttachmentInsertFull").click($.proxy(this._insert,this)),WCF.System.Event.addListener("com.woltlab.wcf.action.delete","attachment_"+this._wysiwygContainerID,$.proxy(this._removeLimitError,this)),this._makeSortable(),this._insertAllButton=$('<p class="button jsButtonAttachmentInsertAll">'+WCF.Language.get("wcf.attachment.insertAll")+"</p>").hide().appendTo(this._buttonSelector),this._insertAllButton.click($.proxy(this._insertAll,this)),this._fileListSelector.children("li:not(.uploadFailed)").length&&this._insertAllButton.show(),this._wysiwygContainerID&&(WCF.System.Event.addListener("com.woltlab.wcf.messageOptionsInline","submit_"+this._wysiwygContainerID,$.proxy(this._submitInline,this)),WCF.System.Event.addListener("com.woltlab.wcf.messageOptionsInline","prepareExtended_"+this._wysiwygContainerID,$.proxy(this._prepareExtended,this)),WCF.System.Event.addListener("com.woltlab.wcf.redactor","reset",$.proxy(this._reset,this)),WCF.System.Event.addListener("com.woltlab.wcf.redactor","upload_"+this._wysiwygContainerID,$.proxy(this._editorUpload,this)),WCF.System.Event.addListener("com.woltlab.wcf.redactor","getImageAttachments_"+this._wysiwygContainerID,$.proxy(this._getImageAttachments,this)))},_editorUpload:function(t){var e;this._fileListSelector.closest(".messageTabMenu").messageTabMenu("showTab","attachments",!0),e=t.file?this._upload(void 0,t.file):this._upload(void 0,void 0,t.blob),this._autoInsert.push(e),t.uploadID=e},_getImageAttachments:function(t){this._fileListSelector.children("li").each(function(e,a){var i=$(a);i.children("img.attachmentTinyThumbnail").length&&(t.imageAttachments[parseInt(i.data("objectID"))]={height:parseInt(i.data("height")),width:parseInt(i.data("width"))})})},_submitInline:function(t){this._tmpHash&&(t.tmpHash=this._tmpHash)},_prepareExtended:function(t){!this._objectID&&this._tmpHash&&this._fileListSelector.children("li:not(.uploadFailed)").length&&(t.tmpHash=this._tmpHash)},_reset:function(){this._fileListSelector.hide().empty(),this._insertAllButton.hide(),this._validateLimit()},_validateLimit:function(){var t=this._buttonSelector.next("small.innerError"),e=this._options.maxUploads-this._fileListSelector.children("li:not(.uploadFailed)").length,a=this._fileUpload?this._fileUpload.prop("files").length:0;if(0>=e||a>e){var i=0>=e?WCF.Language.get("wcf.attachment.upload.error.reachedLimit"):WCF.Language.get("wcf.attachment.upload.error.reachedRemainingLimit").replace(/#remaining#/,e);return t.length||(t=$('<small class="innerError" />').insertAfter(this._buttonSelector)),t.html(i),!1}return t.remove(),!0},_removeLimitError:function(t){var e=this._fileListSelector.children("li");e.filter(":not(.uploadFailed)").length||this._insertAllButton.hide(),e.length||setTimeout(function(){this._fileListSelector.wcfBlindOut()}.bind(this),250),this._wysiwygContainerID&&$("#"+this._wysiwygContainerID).redactor("wbbcode.removeAttachment",t.button.data("objectID"))},_upload:function(t,e,a){var i=void 0;return this._validateLimit()&&(i=this._super(t,e,a)),this._fileUpload&&(this._removeButton(),this._createButton()),i},_createUploadMatrix:function(t){return this._fileListSelector.children("li.uploadFailed").remove(),this._super(t)},_getParameters:function(){return{objectType:this._objectType,objectID:this._objectID,tmpHash:this._tmpHash,parentObjectID:this._parentObjectID}},_initFile:function(t){var e=$('<li class="box64"><span class="icon icon48 icon-spinner" /><div><div><p>'+t.name+'</p><small><progress max="100"></progress></small></div><ul></ul></div></li>').data("filename",t.name);return this._fileListSelector.append(e),this._fileListSelector.show(),this._buttonSelector.data("maxSize")<t.size&&(e.find("progress").remove(),e.children(".icon-spinner").removeClass("icon-spinner").addClass("icon-ban-circle"),e.find("div > div").append($('<small class="innerError">'+WCF.Language.get("wcf.attachment.upload.error.tooLarge")+"</small>")),e.addClass("uploadFailed")),e},_success:function(t,e){for(var a in this._uploadMatrix[t]){var i=this._uploadMatrix[t][a];i.find("progress").remove();var n=i.data("filename"),s=i.data("internalFileID");if(e.returnValues&&e.returnValues.attachments[s]){e.returnValues.attachments[s].tinyURL?(i.children(".icon-spinner").replaceWith($('<img src="'+e.returnValues.attachments[s].tinyURL+'" alt="" class="attachmentTinyThumbnail" />')),i.data("height",e.returnValues.attachments[s].height),i.data("width",e.returnValues.attachments[s].width)):i.children(".icon-spinner").removeClass("icon-spinner").addClass("icon-paper-clip");var r=$('<a href=""></a>');r.text(n).attr("href",e.returnValues.attachments[s].url),0!=e.returnValues.attachments[s].isImage&&r.addClass("jsImageViewer").attr("title",n),i.find("p").empty().append(r),i.find("small").append(e.returnValues.attachments[s].formattedFilesize);var l=i.find("ul").addClass("buttonGroup"),o=$('<li><span class="button small jsDeleteButton" data-object-id="'+e.returnValues.attachments[s].attachmentID+'" data-confirm-message="'+WCF.Language.get("wcf.attachment.delete.sure")+'" data-event-name="attachment_'+this._wysiwygContainerID+'">'+WCF.Language.get("wcf.global.button.delete")+"</span></li>");if(l.append(o),i.data("objectID",e.returnValues.attachments[s].attachmentID),this._wysiwygContainerID)if(e.returnValues.attachments[s].tinyURL){var c=$('<li><span class="button small jsButtonAttachmentInsertThumbnail" data-object-id="'+e.returnValues.attachments[s].attachmentID+'">'+WCF.Language.get("wcf.attachment.insertThumbnail")+"</span></li>").appendTo(l),h=$('<li><span class="button small jsButtonAttachmentInsertFull" data-object-id="'+e.returnValues.attachments[s].attachmentID+'">'+WCF.Language.get("wcf.attachment.insertFull")+"</span></li>").appendTo(l);c.children("span.button").click($.proxy(this._insert,this)),h.children("span.button").click($.proxy(this._insert,this))}else{var d=$('<li><span class="button small jsButtonAttachmentInsertPlain" data-object-id="'+e.returnValues.attachments[s].attachmentID+'">'+WCF.Language.get("wcf.attachment.insert")+"</span></li>");d.appendTo(l).children("span.button").click($.proxy(this._insert,this))}}else{i.children(".icon-spinner").removeClass("icon-spinner").addClass("icon-ban-circle");var u="";u=e.returnValues&&e.returnValues.errors[s]?e.returnValues.errors[s].errorType:"uploadFailed",i.find("div > div").append($('<small class="innerError">'+WCF.Language.get("wcf.attachment.upload.error."+u)+"</small>")),i.addClass("uploadFailed")}i.css("display","block"),WCF.inArray(t,this._autoInsert)&&(this._autoInsert.splice(this._autoInsert.indexOf(t),1),i.hasClass("uploadFailed")||WCF.System.Event.fireEvent("com.woltlab.wcf.attachment","autoInsert_"+this._wysiwygContainerID,{attachment:"[attach="+e.returnValues.attachments[s].attachmentID+"][/attach]",uploadID:t}))}this._makeSortable(),this._fileListSelector.children("li:not(.uploadFailed)").length?this._insertAllButton.show():this._insertAllButton.hide(),WCF.DOMNodeInsertedHandler.execute()},_insert:function(t,e){var a=null===t?e:$(t.currentTarget).data("objectID"),i=null!==t?$(t.currentTarget).hasClass("jsButtonAttachmentInsertFull"):!1;$.browser.redactor&&$("#"+this._wysiwygContainerID).redactor("wbbcode.insertAttachment",a,i)},_insertAll:function(){this._fileListSelector.children("li:not(.uploadFailed)").each($.proxy(function(t,e){this._insert(null,$(e).data("objectID"))},this))},_error:function(t){this._fileListSelector.find("li").each(function(e,a){var i=$(a);i.children(".icon-spinner").length&&(i.addClass("uploadFailed").children(".icon-spinner").removeClass("icon-spinner").addClass("icon-ban-circle"),i.find("div > div").append($('<small class="innerError">'+(t.responseJSON&&t.responseJSON.message?t.responseJSON.message:WCF.Language.get("wcf.attachment.upload.error.uploadFailed"))+"</small>")))})},_makeSortable:function(){var t=this._fileListSelector.children("li:not(.uploadFailed)");if(t.length&&(t.addClass("sortableAttachment").children("img").addClass("sortableNode"),!this._fileListSelector.hasClass("sortableList"))){this._fileListSelector.addClass("sortableList");var e=this;new WCF.Sortable.List(this._fileListSelector.parent().wcfIdentify(),"",0,{axis:!1,items:"li.sortableAttachment",toleranceElement:null,update:function(){var t=[];e._fileListSelector.children("li:not(.uploadFailed)").each(function(e,a){t.push($(a).data("objectID"))}),t.length&&new WCF.Action.Proxy({autoSend:!0,data:{actionName:"updatePosition",className:"wcf\\data\\attachment\\AttachmentAction",parameters:{attachmentIDs:t,objectID:e._objectID,objectType:e._objectType,tmpHash:e._tmpHash}}})}},!0)}}}); })(this);
 
 // WCF.ColorPicker.js
-(function (window, undefined) { })(this);
+(function (window, undefined) {"use strict";WCF.ColorPicker=Class.extend({_bar:null,_barActive:!1,_barSelector:null,_dialog:null,_didInit:!1,_elementID:"",_gradient:null,_gradientActive:!1,_gradientSelector:null,_hex:null,_hsv:{},_newColor:null,_oldColor:null,_rgba:{},_rgbaRegExp:null,init:function(t){this._elementID="",this._hsv={h:0,s:100,v:100},this._position={};var a=$(t);return a.length?void a.click($.proxy(this._open,this)):void console.debug("[WCF.ColorPicker] Selector does not match any element, aborting.")},_open:function(t){this._didInit||(this._initColorPicker(),this._didInit=!0);var a=$(t.currentTarget);this._elementID=a.wcfIdentify(),this._parseColor(a);var s=this.hsvToRgb(this._hsv.h,this._hsv.s,this._hsv.v);this._oldColor.css({backgroundColor:"rgba("+s.r+", "+s.g+", "+s.b+", "+this._rgba.a.val()/100+")"}),this._dialog.wcfDialog({title:WCF.Language.get("wcf.style.colorPicker")}),this._hex.focus()},_parseColor:function(t){if(t.data("hsv")&&t.data("rgb")){var a=t.data("hsv");for(var s in a)this._hsv[s]=a[s];this._updateValues(t.data("rgb"),!0,!0),this._rgba.a.val(parseInt(t.data("alpha")))}else{null===this._rgbaRegExp&&(this._rgbaRegExp=new RegExp("^rgba\\((\\d{1,3}), ?(\\d{1,3}), ?(\\d{1,3}), ?(1|1\\.00?|0|0?\\.[0-9]{1,2})\\)$")),this._rgbaRegExp.exec(t.data("color"));var i=RegExp.$4;0===i.indexOf(".")&&(i="0"+i),i*=100,this._updateValues({r:RegExp.$1,g:RegExp.$2,b:RegExp.$3,a:Math.round(i)},!0,!0)}},_initColorPicker:function(){this._dialog=$('<div id="colorPickerContainer" />').hide().appendTo(document.body),this._gradient=$('<div id="colorPickerGradient" />').appendTo(this._dialog),this._gradientSelector=$('<span id="colorPickerGradientSelector"><span></span></span>').appendTo(this._gradient),this._bar=$('<div id="colorPickerBar" />').appendTo(this._dialog),this._barSelector=$('<span id="colorPickerBarSelector" />').appendTo(this._bar),this._gradient.mousedown($.proxy(this._mouseDownGradient,this)),this._bar.mousedown($.proxy(this._mouseDownBar,this));var t=this;$(document).mouseup(function(a){t._barActive?(t._barActive=!1,t._mouseBar(a)):t._gradientActive&&(t._gradientActive=!1,t._mouseGradient(a))}).mousemove(function(a){t._barActive?t._mouseBar(a):t._gradientActive&&t._mouseGradient(a)}),this._initColorPickerForm()},_initColorPickerForm:function(){var t=$('<div id="colorPickerForm" />').appendTo(this._dialog);$("<small>"+WCF.Language.get("wcf.style.colorPicker.new")+"</small>").appendTo(t);var a=$('<ul class="colors" />').appendTo(t);this._newColor=$('<li class="new"><span /></li>').appendTo(a).children("span"),this._oldColor=$('<li class="old"><span /></li>').appendTo(a).children("span"),$("<small>"+WCF.Language.get("wcf.style.colorPicker.current")+"</small>").appendTo(t);var s=$('<ul class="rgba" />').appendTo(t);this._createInputElement("r","R",0,255).appendTo(s),this._createInputElement("g","G",0,255).appendTo(s),this._createInputElement("b","B",0,255).appendTo(s),this._createInputElement("a","a",0,100).appendTo(s);var i=$('<ul class="hex"><li><label><span>#</span></label></li></ul>').appendTo(t);this._hex=$('<input type="text" maxlength="6" />').appendTo(i.find("label")),this._rgba.r.blur($.proxy(this._blurRgba,this)).keyup($.proxy(this._keyUpRGBA,this)),this._rgba.g.blur($.proxy(this._blurRgba,this)).keyup($.proxy(this._keyUpRGBA,this)),this._rgba.b.blur($.proxy(this._blurRgba,this)).keyup($.proxy(this._keyUpRGBA,this)),this._rgba.a.blur($.proxy(this._blurRgba,this)).keyup($.proxy(this._keyUpRGBA,this)),this._hex.blur($.proxy(this._blurHex,this)).keyup($.proxy(this._keyUpHex,this));var e=$('<div class="formSubmit" />').appendTo(this._dialog);$('<button class="buttonPrimary">'+WCF.Language.get("wcf.style.colorPicker.button.apply")+"</button>").appendTo(e).click($.proxy(this._submit,this));var r=this;this._hex.on("paste",function(){r._hex.attr("maxlength","7"),setTimeout(function(){var t=r._hex.val();"#"==t.substring(0,1)&&(t=t.substr(1)),t.length>6&&(t=t.substring(0,6)),r._hex.attr("maxlength","6").val(t)},50)}),t.find("input").focus(function(){this.select()})},_keyUpRGBA:function(t){13==t.which&&(this._blurRgba(),this._submit())},_keyUpHex:function(t){13==t.which&&(this._blurHex(),this._submit())},_submit:function(){var t=this.hsvToRgb(this._hsv.h,this._hsv.s,this._hsv.v),a={};for(var s in this._hsv)a[s]=this._hsv[s];var i=$("#"+this._elementID);i.data("hsv",a).css({backgroundColor:"rgba("+t.r+", "+t.g+", "+t.b+", "+this._rgba.a.val()/100+")"}).data("alpha",parseInt(this._rgba.a.val())),i.data("rgb",{r:this._rgba.r.val(),g:this._rgba.g.val(),b:this._rgba.b.val()}),$("#"+i.data("store")).val("rgba("+this._rgba.r.val()+", "+this._rgba.g.val()+", "+this._rgba.b.val()+", "+this._rgba.a.val()/100+")").trigger("change"),this._dialog.wcfDialog("close")},_createInputElement:function(t,a,s,i){var e=$('<li class="'+t+'" />'),r=$("<label />").appendTo(e);return $("<span>"+a+"</span>").appendTo(r),this._rgba[t]=$('<input type="number" value="0" min="'+s+'" max="'+i+'" step="1" />').appendTo(r),e},_mouseDownGradient:function(t){this._gradientActive=!0,this._mouseGradient(t)},_mouseGradient:function(t){var a=this._gradient.getOffsets("offset"),s=Math.max(Math.min(t.pageX-a.left,255),0),i=Math.max(Math.min(t.pageY-a.top,255),0);this._hsv.s=100*Math.max(0,Math.min(1,s/255)),this._hsv.v=100*Math.max(0,Math.min(1,(255-i)/255)),this._updateValues(null)},_mouseDownBar:function(t){this._barActive=!0,this._mouseBar(t)},_mouseBar:function(t){var a=this._bar.getOffsets("offset"),s=Math.max(Math.min(t.pageY-a.top,255),0);this._barSelector.css({top:s+"px"}),this._hsv.h=Math.max(0,Math.min(359,Math.round((255-s)/255*360))),this._updateValues(null)},_blurRgba:function(){for(var t in this._rgba){var a=parseInt(this._rgba[t].val())||0;this._rgba[t].val("a"===t?Math.max(0,Math.min(100,a)):Math.max(0,Math.min(255,a)))}this._updateValues({r:this._rgba.r.val(),g:this._rgba.g.val(),b:this._rgba.b.val()},!0,!0)},_blurHex:function(){var t=this.hexToRgb(this._hex.val());t!==Number.NaN&&this._updateValues(t,!0,!0)},_updateValues:function(t,a,s){a=a===!0?!0:!1,s=s===!0?!0:!1,null===t&&(t=this.hsvToRgb(this._hsv.h,this._hsv.s,this._hsv.v),0==this._rgba.a.val()&&(t.a=100)),void 0===t.a&&(t.a=this._rgba.a.val());for(var i in t)this._rgba[i].val(t[i]);if(this._hex.val(this.rgbToHex(t.r,t.g,t.b)),a||s){var e=this.rgbToHsv(t.r,t.g,t.b);a&&(this._hsv.h=e.h),s&&(this._hsv.s=e.s,this._hsv.v=e.v)}var r=Math.max(0,Math.min(255,255-this._hsv.h/360*255));this._barSelector.css({top:r+"px"});var h=Math.max(0,Math.min(255,this._hsv.s/100*255)),r=Math.max(0,Math.min(255,255-this._hsv.v/100*255));this._gradientSelector.css({left:h-6+"px",top:r-6+"px"}),this._newColor.css({backgroundColor:"rgba("+t.r+", "+t.g+", "+t.b+", "+t.a/100+")"});var n=this.hsvToRgb(this._hsv.h,100,100);this._gradient.css({backgroundColor:"rgb("+n.r+", "+n.g+", "+n.b+")"})},hsvToRgb:function(t,a,s){var i,e,r,h,n,o={r:0,g:0,b:0};if(i=Math.floor(t/60),e=t/60-i,a/=100,s/=100,r=s*(1-a),h=s*(1-a*e),n=s*(1-a*(1-e)),0==a)o.r=o.g=o.b=s;else switch(i){case 1:o.r=h,o.g=s,o.b=r;break;case 2:o.r=r,o.g=s,o.b=n;break;case 3:o.r=r,o.g=h,o.b=s;break;case 4:o.r=n,o.g=r,o.b=s;break;case 5:o.r=s,o.g=r,o.b=h;break;case 0:case 6:o.r=s,o.g=n,o.b=r}return{r:Math.round(255*o.r),g:Math.round(255*o.g),b:Math.round(255*o.b)}},rgbToHsv:function(t,a,s){var i,e,r,h,n,o;if(t/=255,a/=255,s/=255,h=Math.max(Math.max(t,a),s),n=Math.min(Math.min(t,a),s),o=h-n,i=0,h!==n){switch(h){case t:i=60*(0+(a-s)/o);break;case a:i=60*(2+(s-t)/o);break;case s:i=60*(4+(t-a)/o)}0>i&&(i+=360)}return e=0===h?0:o/h,r=h,{h:Math.round(i),s:Math.round(100*e),v:Math.round(100*r)}},hexToRgb:function(t){return/^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(t)?(t=t.split(""),"#"===t[0]&&t.shift(),3===t.length?{r:parseInt(t[0]+""+t[0],16),g:parseInt(t[1]+""+t[1],16),b:parseInt(t[2]+""+t[2],16)}:{r:parseInt(t[0]+""+t[1],16),g:parseInt(t[2]+""+t[3],16),b:parseInt(t[4]+""+t[5],16)}):Number.NaN},rgbToHex:function(t,a,s){return"0123456789ABCDEF".charAt((t-t%16)/16)+""+"0123456789ABCDEF".charAt(t%16)+("0123456789ABCDEF".charAt((a-a%16)/16)+""+"0123456789ABCDEF".charAt(a%16))+("0123456789ABCDEF".charAt((s-s%16)/16)+""+"0123456789ABCDEF".charAt(s%16))}}); })(this);
 
 // WCF.Comment.js
-(function (window, undefined) { })(this);
+(function (window, undefined) {"use strict";WCF.Comment={},WCF.Comment.Handler=Class.extend({_commentAdd:null,_commentButtonList:{},_comments:{},_container:null,_containerID:"",_displayedComments:0,_loadNextComments:null,_loadNextResponses:{},_proxy:null,_responses:{},_userAvatar:"",_commentData:{},_guestDialog:null,init:function(e,t){this._commentAdd=null,this._commentButtonList={},this._comments={},this._containerID=e,this._displayedComments=0,this._loadNextComments=null,this._loadNextResponses={},this._responses={},this._userAvatar=t,this._container=$("#"+$.wcfEscapeID(this._containerID)),this._container.length||console.debug("[WCF.Comment.Handler] Unable to find container identified by '"+this._containerID+"'"),this._proxy=new WCF.Action.Proxy({failure:$.proxy(this._failure,this),success:$.proxy(this._success,this)}),this._initComments(),this._initResponses(),this._container.data("canAdd")&&this._initAddComment(),WCF.DOMNodeInsertedHandler.execute(),WCF.DOMNodeInsertedHandler.addCallback("WCF.Comment.Handler",$.proxy(this._domNodeInserted,this)),WCF.System.ObjectStore.add("WCF.Comment.Handler",this)},_handleLoadNextComments:function(){this._displayedComments<this._container.data("comments")?(null===this._loadNextComments&&(this._loadNextComments=$('<li class="commentLoadNext"><button class="small">'+WCF.Language.get("wcf.comment.more")+"</button></li>").appendTo(this._container),this._loadNextComments.children("button").click($.proxy(this._loadComments,this))),this._loadNextComments.children("button").enable()):null!==this._loadNextComments&&this._loadNextComments.remove()},_handleLoadNextResponses:function(e){var t=this._comments[e];if(t.data("displayedResponses",t.find("ul.commentResponseList > li").length),t.data("displayedResponses")<t.data("responses")){if(void 0===this._loadNextResponses[e]){var n=t.data("responses")-t.data("displayedResponses");this._loadNextResponses[e]=$('<li class="jsCommentLoadNextResponses"><a>'+WCF.Language.get("wcf.comment.response.more",{count:n})+"</a></li>").appendTo(this._commentButtonList[e]),this._loadNextResponses[e].children("a").data("commentID",e).click($.proxy(this._loadResponses,this)),this._commentButtonList[e].parent().show()}}else if(void 0!==this._loadNextResponses[e]){var s=this._loadNextResponses[e].next();this._loadNextResponses[e].remove(),s.length&&s.trigger("click")}},_loadComments:function(){this._loadNextComments.children("button").disable(),this._proxy.setOption("data",{actionName:"loadComments",className:"wcf\\data\\comment\\CommentAction",parameters:{data:{objectID:this._container.data("objectID"),objectTypeID:this._container.data("objectTypeID"),lastCommentTime:this._container.data("lastCommentTime")}}}),this._proxy.sendRequest()},_loadResponses:function(e){this._loadResponsesExecute($(e.currentTarget).disable().data("commentID"),!1)},_loadResponsesExecute:function(e,t){this._proxy.setOption("data",{actionName:"loadResponses",className:"wcf\\data\\comment\\response\\CommentResponseAction",parameters:{data:{commentID:e,lastResponseTime:this._comments[e].data("lastResponseTime"),loadAllResponses:t?1:0}}}),this._proxy.sendRequest()},_domNodeInserted:function(){this._initComments(),this._initResponses()},_initComments:function(){var e=this,t=!1;this._container.find(".jsComment").each(function(n,s){var a=$(s).removeClass("jsComment"),o=a.data("commentID");e._comments[o]=a;var i=a.find("ul.commentResponseList");i.length||(i=a.find(".commentContent"));var r=$('<div class="commentOptionContainer" />').hide().insertAfter(i);e._commentButtonList[o]=$("<ul />").appendTo(r),e._handleLoadNextResponses(o),e._initComment(o,a),e._displayedComments++,t=!0}),t&&this._handleLoadNextComments()},_initComment:function(e,t){if(this._container.data("canAdd")&&this._initAddResponse(e,t),t.data("canEdit")){var n=$('<li><a href="#" class="jsTooltip" title="'+WCF.Language.get("wcf.global.button.edit")+'"><span class="icon icon16 icon-pencil" /> <span class="invisible">'+WCF.Language.get("wcf.global.button.edit")+"</span></a></li>");n.data("commentID",e).appendTo(t.find("ul.commentOptions:eq(0)")).click($.proxy(this._prepareEdit,this))}if(t.data("canDelete")){var s=$('<li><a href="#" class="jsTooltip" title="'+WCF.Language.get("wcf.global.button.delete")+'"><span class="icon icon16 icon-remove" /> <span class="invisible">'+WCF.Language.get("wcf.global.button.delete")+"</span></a></li>");s.data("commentID",e).appendTo(t.find("ul.commentOptions:eq(0)")).click($.proxy(this._delete,this))}},_initResponses:function(){var e=this;this._container.find(".jsCommentResponse").each(function(t,n){var s=$(n).removeClass("jsCommentResponse"),a=s.data("responseID");e._responses[a]=s,e._initResponse(a,s)})},_initResponse:function(e,t){if(t.data("canEdit")){var n=$('<li><a href="#" class="jsTooltip" title="'+WCF.Language.get("wcf.global.button.edit")+'"><span class="icon icon16 icon-pencil" /> <span class="invisible">'+WCF.Language.get("wcf.global.button.edit")+"</span></a></li>"),s=this;n.data("responseID",e).appendTo(t.find("ul.commentOptions:eq(0)")).click(function(e){s._prepareEdit(e,!0)})}if(t.data("canDelete")){var a=$('<li><a href="#" class="jsTooltip" title="'+WCF.Language.get("wcf.global.button.delete")+'"><span class="icon icon16 icon-remove" /> <span class="invisible">'+WCF.Language.get("wcf.global.button.delete")+"</span></a></li>"),s=this;a.data("responseID",e).appendTo(t.find("ul.commentOptions:eq(0)")).click(function(e){s._delete(e,!0)})}},_initAddComment:function(){this._commentAdd=$('<li class="box32 jsCommentAdd"><span class="framed">'+this._userAvatar+"</span><div /></li>").prependTo(this._container);var e=this._commentAdd.children("div"),t=$('<textarea placeholder="'+WCF.Language.get("wcf.comment.add")+'" maxlength="65535" class="long" />').appendTo(e).flexible();$('<button class="small">'+WCF.Language.get("wcf.global.button.submit")+"</button>").click($.proxy(this._save,this)).appendTo(e),t.keyup($.proxy(this._keyUp,this))},_initAddResponse:function(e,t){var n=$('<li class="jsCommentShowAddResponse"><a>'+WCF.Language.get("wcf.comment.button.response.add")+"</a></li>").data("commentID",e).click($.proxy(this._showAddResponse,this)).appendTo(this._commentButtonList[e]),s=$('<div class="box32 commentResponseAdd jsCommentResponseAdd"><span class="framed">'+this._userAvatar+"</span><div /></div>").hide();s.appendTo(this._commentButtonList[e].parent().show());var a=s.children("div"),o=$('<textarea placeholder="'+WCF.Language.get("wcf.comment.response.add")+'" maxlength="65535" class="long" />').data("commentID",e).appendTo(a).flexible();$('<button class="small">'+WCF.Language.get("wcf.global.button.submit")+"</button>").click($.proxy(function(e){this._save(e,!0)},this)).appendTo(a);var i=this;o.keyup(function(e){i._keyUp(e,!0)}),t.data("responsePlaceholder",n).data("responseInput",s)},_prepareEdit:function(e,t){e.preventDefault();var n=$(e.currentTarget),s={objectID:this._container.data("objectID"),objectTypeID:this._container.data("objectTypeID")};t===!0?s.responseID=n.data("responseID"):s.commentID=n.data("commentID"),this._proxy.setOption("data",{actionName:"prepareEdit",className:"wcf\\data\\comment\\CommentAction",parameters:{data:s}}),this._proxy.sendRequest()},_showAddResponse:function(e){var t=$(e.currentTarget),n=t.data("commentID");t.prev().hasClass("jsCommentLoadNextResponses")&&(this._loadResponsesExecute(n,!0),t.parent().children(".button").disable()),t.remove();var s=this._comments[n].data("responseInput").show();s.find("textarea").focus(),s.parents(".commentOptionContainer").addClass("jsAddResponseActive")},_keyUp:function(e,t){return e.which===$.ui.keyCode.ESCAPE?void $(e.currentTarget).val("").trigger("blur",e).trigger("updateHeight"):e.which===$.ui.keyCode.ENTER&&e.ctrlKey?(this._save(null,t,$(e.currentTarget)),!1):void 0},_save:function(e,t,n){var s=null===e?n:$(e.currentTarget).parent().children("textarea");s.next("small.innerError").remove();var a=$.trim(s.val());if(""!=a){var o="addComment",i={message:a,objectID:this._container.data("objectID"),objectTypeID:this._container.data("objectTypeID")};t===!0&&(o="addResponse",i.commentID=s.data("commentID")),WCF.User.userID?new WCF.Action.Proxy({autoSend:!0,data:{actionName:o,className:"wcf\\data\\comment\\CommentAction",parameters:{data:i}},success:$.proxy(this._success,this),failure:function(e,t,n,a){return e.returnValues&&e.returnValues.fieldName&&"text"===e.returnValues.fieldName&&e.returnValues.errorType?($('<small class="innerError">'+e.returnValues.errorType+"</small>").insertAfter(s),!1):void this._failure(e,t,n,a)}.bind(this)}):(this._commentData=i,this._proxy.setOption("data",{actionName:"getGuestDialog",className:"wcf\\data\\comment\\CommentAction",parameters:{data:{message:a,objectID:this._container.data("objectID"),objectTypeID:this._container.data("objectTypeID")}}}),this._proxy.sendRequest())}},_delete:function(e,t){e.preventDefault(),WCF.System.Confirmation.show(WCF.Language.get("wcf.comment.delete.confirmMessage"),$.proxy(function(n){if("confirm"===n){var s={objectID:this._container.data("objectID"),objectTypeID:this._container.data("objectTypeID")};t!==!0?s.commentID=$(e.currentTarget).data("commentID"):s.responseID=$(e.currentTarget).data("responseID"),this._proxy.setOption("data",{actionName:"remove",className:"wcf\\data\\comment\\CommentAction",parameters:{data:s}}),this._proxy.sendRequest()}},this))},_failure:function(){return!WCF.User.userID&&this._guestDialog&&this._guestDialog.find('input[type="submit"]').enable(),!0},_success:function(e){switch(e.actionName){case"addComment":e.returnValues.guestDialog?this._createGuestDialog(e.returnValues.guestDialog,e.returnValues.useCaptcha):(this._commentAdd.find("textarea").val("").blur().trigger("updateHeight"),$(e.returnValues.template).insertAfter(this._commentAdd).wcfFadeIn(),WCF.User.userID||this._guestDialog.wcfDialog("close"));break;case"addResponse":if(e.returnValues.guestDialog)this._createGuestDialog(e.returnValues.guestDialog,e.returnValues.useCaptcha);else{var t=this._comments[e.returnValues.commentID];t.find(".jsCommentResponseAdd textarea").val("").blur().trigger("updateHeight");var n=t.find("ul.commentResponseList");n.length||(n=$('<ul class="commentResponseList" />').insertBefore(t.find(".commentOptionContainer"))),$(e.returnValues.template).appendTo(n).wcfFadeIn(),WCF.User.userID||this._guestDialog.wcfDialog("close")}break;case"edit":this._update(e);break;case"loadComments":this._insertComments(e);break;case"loadResponses":this._insertResponses(e);break;case"prepareEdit":this._edit(e);break;case"remove":this._remove(e);break;case"getGuestDialog":this._createGuestDialog(e.returnValues.template,e.returnValues.useCaptcha)}WCF.DOMNodeInsertedHandler.execute()},_insertComments:function(e){$(e.returnValues.template).insertBefore(this._loadNextComments),this._container.data("lastCommentTime",e.returnValues.lastCommentTime)},_insertResponses:function(e){var t=this._comments[e.returnValues.commentID];$(e.returnValues.template).appendTo(t.find("ul.commentResponseList")),t.data("lastResponseTime",e.returnValues.lastResponseTime),this._handleLoadNextResponses(e.returnValues.commentID)},_remove:function(e){if(e.returnValues.commentID)this._comments[e.returnValues.commentID].remove(),delete this._comments[e.returnValues.commentID];else{var t=this._responses[e.returnValues.responseID],n=this._comments[t.parents("li.comment:eq(0)").data("commentID")];n.data("responses",parseInt(n.data("responses"))-1);var s=t.parent();t.remove(),s.children().length||s.empty(),delete this._responses[e.returnValues.responseID]}},_edit:function(e){var t;t=e.returnValues.commentID?this._comments[e.returnValues.commentID].find(".commentContent:eq(0) .userMessage:eq(0)"):this._responses[e.returnValues.responseID].find(".commentContent:eq(0) .userMessage:eq(0)"),t.html($.proxy(function(t,n){var s=$('<textarea class="long" maxlength="65535" />').val(e.returnValues.message);return s.data("__html",n).keyup($.proxy(this._keyUpEdit,this)),e.returnValues.commentID?s.data("commentID",e.returnValues.commentID):s.data("responseID",e.returnValues.responseID),s},this));var n=t.children("textarea");$('<button class="small">'+WCF.Language.get("wcf.global.button.submit")+"</button>").insertAfter(n).click($.proxy(this._saveEdit,this)),n.focus().flexible(),t.parent().find(".containerHeadline:eq(0)").hide(),t.parent().find(".buttonGroupNavigation:eq(0)").hide()},_update:function(e){var t;t=e.returnValues.commentID?this._comments[e.returnValues.commentID].find(".commentContent:eq(0) .userMessage:eq(0) > textarea"):this._responses[e.returnValues.responseID].find(".commentContent:eq(0) .userMessage:eq(0) > textarea"),t.data("__html",e.returnValues.message),this._cancelEdit(t)},_createGuestDialog:function(e,t){!!this._guestDialog;this._guestDialog||(this._guestDialog=$('<div id="commentAddGuestDialog" />').hide().appendTo(document.body)),this._guestDialog.html(e),this._guestDialog.data("useCaptcha",t),this._guestDialog.find('input[type="submit"]').click($.proxy(this._submit,this)),this._guestDialog.find('input[type="text"]').keydown($.proxy(this._keyDown,this)),this._guestDialog.wcfDialog({title:WCF.Language.get("wcf.comment.guestDialog.title")})},_keyDown:function(e){e.which===$.ui.keyCode.ENTER&&this._submit()},_submit:function(){var e={actionName:this._commentData.commentID?"addResponse":"addComment",className:"wcf\\data\\comment\\CommentAction"},t=this._commentData;t.username=this._guestDialog.find('input[name="username"]').val(),e.parameters={data:t},e=$.extend(WCF.System.Captcha.getData("commentAdd"),e),this._proxy.setOption("data",e),this._proxy.sendRequest()},_keyUpEdit:function(e){return e.which===$.ui.keyCode.ESCAPE?void this._cancelEdit($(e.currentTarget)):e.which===$.ui.keyCode.ENTER&&e.ctrlKey?(this._saveEdit(e),!1):void 0},_saveEdit:function(e){var t=$(e.currentTarget);t.is("button")&&(t.prev("small.innerError").remove(),t=t.prev("textarea"));var n=$.trim(t.val());if(""!==n){var s={message:n,objectID:this._container.data("objectID"),objectTypeID:this._container.data("objectTypeID")};t.data("commentID")?s.commentID=t.data("commentID"):s.responseID=t.data("responseID"),new WCF.Action.Proxy({autoSend:!0,data:{actionName:"edit",className:"wcf\\data\\comment\\CommentAction",parameters:{data:s}},success:$.proxy(this._success,this),failure:function(e,n,s,a){return e.returnValues&&e.returnValues.fieldName&&"text"===e.returnValues.fieldName&&e.returnValues.errorType?($('<small class="innerError">'+e.returnValues.errorType+"</small>").insertAfter(t),!1):void this._failure(e,n,s,a)}.bind(this)})}},_cancelEdit:function(e){e.parent().prev(".containerHeadline:eq(0)").show(),e.parent().next(".buttonGroupNavigation:eq(0)").show(),e.parent().html(e.data("__html"))}}),WCF.Comment.Like=WCF.Like.extend({_getContainers:function(){return $(".commentList > li.comment")},_getObjectID:function(e){return this._containers[e].data("commentID")},_buildWidget:function(e,t,n,s){this._containers[e].find(".containerHeadline:eq(0) > h3").append(s),this._canLike&&(t.appendTo(this._containers[e].find(".commentOptions:eq(0)")),n.appendTo(this._containers[e].find(".commentOptions:eq(0)")))},_getWidgetContainer:function(){},_addWidget:function(){}}),WCF.Comment.Response={},WCF.Comment.Response.Like=WCF.Like.extend({_addWidget:function(){},_buildWidget:function(e,t,n,s){this._containers[e].find(".containerHeadline:eq(0) > h3").append(s),this._canLike&&(t.appendTo(this._containers[e].find(".commentOptions:eq(0)")),n.appendTo(this._containers[e].find(".commentOptions:eq(0)")))},_getContainers:function(){return $(".commentResponseList > li.commentResponse")},_getObjectID:function(e){return this._containers[e].data("responseID")},_getWidgetContainer:function(){}}); })(this);
 
 // WCF.ImageViewer.js
-(function (window, undefined) { })(this);
+(function (window, undefined) {"use strict";WCF.ImageViewer=Class.extend({_triggerElement:null,init:function(){this._triggerElement=$('<span class="wcfImageViewerTriggerElement" />').data("disableSlideshow",!0).hide().appendTo(document.body),this._triggerElement.wcfImageViewer({enableSlideshow:0,imageSelector:".jsImageViewerEnabled",staticViewer:!0}),WCF.DOMNodeInsertedHandler.addCallback("WCF.ImageViewer",$.proxy(this._domNodeInserted,this)),WCF.DOMNodeInsertedHandler.execute()},_domNodeInserted:function(){this._initImageSizeCheck(),this._rebuildImageViewer()},_rebuildImageViewer:function(){var i=$("a.jsImageViewer");i.length&&i.removeClass("jsImageViewer").addClass("jsImageViewerEnabled").click($.proxy(this._click,this))},_click:function(i){i.preventDefault(),i.stopPropagation(),this._triggerElement.wcfImageViewer("open",null,$(i.currentTarget).wcfIdentify())},_initImageSizeCheck:function(){$(".jsResizeImage").each($.proxy(function(i,e){e.complete&&this._checkImageSize({currentTarget:e})},this)),$(".jsResizeImage").on("load",$.proxy(this._checkImageSize,this))},_checkImageSize:function(i){var e=$(i.currentTarget);if(!e.is(":visible"))return void e.off("load");if(e.removeClass("jsResizeImage"),!e.closest(".messageSignature").length){var t=new Image;t.src=e.attr("src");var s=e.closest("div.messageText, div.messageTextPreview").width();s<t.width?e.parents("a").length||(e.wrap('<a href="'+e.attr("src")+'" class="jsImageViewerEnabled embeddedImageLink" />'),e.parent().click($.proxy(this._click,this)),"right"==e.css("float")?e.parent().addClass("messageFloatObjectRight"):"left"==e.css("float")&&e.parent().addClass("messageFloatObjectLeft"),e[0].style.removeProperty("float"),e[0].style.removeProperty("margin")):e.removeClass("embeddedAttachmentLink")}}}),$.widget("ui.wcfImageViewer",{_active:-1,_activeImage:null,_container:null,_didInit:!1,_disableSlideshow:!1,_eventNamespace:"",_images:[],_isMobile:!1,_isOpen:!1,_items:-1,_maxDimensions:{height:0,width:0},_proxy:null,_slideshowEnabled:!1,_thumbnailContainerWidth:0,_thumbnailMarginRight:0,_thumbnailOffset:0,_thumbnailWidth:0,_timer:null,_ui:{buttonNext:null,buttonPrevious:null,header:null,image:null,imageContainer:null,imageList:null,slideshow:{container:null,enlarge:null,next:null,previous:null,toggle:null}},options:{shiftBy:5,enableSlideshow:1,speed:5,className:"",imageSelector:"",staticViewer:!1},_create:function(){this._active=-1,this._activeImage=null,this._container=null,this._didInit=!1,this._disableSlideshow=this.element.data("disableSlideshow"),this._eventNamespace=this.element.wcfIdentify(),this._images=[],this._isMobile=!1,this._isOpen=!1,this._items=-1,this._maxDimensions={height:document.documentElement.clientHeight,width:document.documentElement.clientWidth},this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._slideshowEnabled=!1,this._thumbnailContainerWidth=0,this._thumbnailMarginRight=0,this._thumbnailOffset=0,this._thumbnaiLWidth=0,this._timer=null,this._ui={},this.element.click($.proxy(this.open,this))},open:function(i,e){if(i&&i.preventDefault(),this._isOpen)return!1;if(this.options.staticViewer){var t=this._getStaticImages();this._initUI(),this._createThumbnails(t,!0),this._render(!0,void 0,e),this._isOpen=!0,WCF.System.DisableScrolling.disable(),WCF.System.DisableZoom.disable(),$.browser.touch&&setTimeout($.proxy(function(){this._isMobile&&!this._container.hasClass("maximized")&&this._toggleView()},this),500)}else 0===this._images.length?this._loadNextImages(!0):(this._render(!1,this.element.data("targetImageID")),this._items>1&&this._slideshowEnabled&&this.startSlideshow(),this._isOpen=!0,WCF.System.DisableScrolling.disable(),WCF.System.DisableZoom.disable());return this._bindListener(),!0},close:function(i){return i&&i.preventDefault(),this._isOpen?(this._container.removeClass("open"),null!==this._timer&&this._timer.stop(),this._unbindListener(),this._isOpen=!1,WCF.System.DisableScrolling.enable(),WCF.System.DisableZoom.enable(),!0):!1},startSlideshow:function(){return this._disableSlideshow||this._slideshowEnabled?!1:(null===this._timer?this._timer=new WCF.PeriodicalExecuter($.proxy(function(){var i=this._active+1;i==this._items&&(i=0),this.showImage(i)},this),1e3*this.options.speed):this._timer.resume(),this._slideshowEnabled=!0,this._ui.slideshow.toggle.children("span").removeClass("icon-play").addClass("icon-pause"),!0)},stopSlideshow:function(i){return this._slideshowEnabled?(this._timer.stop(),i&&this._ui.slideshow.toggle.children("span").removeClass("icon-pause").addClass("icon-play"),this._slideshowEnabled=!1,!0):!1},_bindListener:function(){$(document).on("keydown."+this._eventNamespace,$.proxy(this._keyDown,this)),$(window).on("resize."+this._eventNamespace,$.proxy(this._renderImage,this))},_unbindListener:function(){$(document).off("keydown."+this._eventNamespace),$(window).off("resize."+this._eventNamespace)},_keyDown:function(i){switch(i.which){case $.ui.keyCode.ESCAPE:this.close();break;case $.ui.keyCode.LEFT:this._previousImage();break;case $.ui.keyCode.RIGHT:this._nextImage();break;case $.ui.keyCode.UP:this._container.hasClass("maximized")||this._toggleView();break;case $.ui.keyCode.DOWN:this._container.hasClass("maximized")&&this._toggleView();break;case $.ui.keyCode.ENTER:var e=this._ui.header.find("> div > h1 > a");1==e.length?window.location=e.prop("href"):this._ui.slideshow.full.trigger("click");break;case 80:this._ui.slideshow.toggle.trigger("click");break;default:return!0}return!1},_render:function(i,e,t){this._container.addClass("open");var s=null;if(i&&(s=this._ui.imageList.children("li:eq(0)"),this._thumbnailMarginRight=parseInt(s.css("marginRight").replace(/px$/,""))||0,this._thumbnailWidth=s.outerWidth(!0),this._thumbnailContainerWidth=this._ui.imageList.parent().innerWidth(),this._items>1&&this.options.enableSlideshow&&!e&&!t&&this.startSlideshow()),e)this._ui.imageList.children("li").each($.proxy(function(i,t){var s=$(t);return s.data("objectID")==e?(s.trigger("click"),this.moveToImage(s.data("index")),!1):void 0},this));else if(t){var a=0;$(this.options.imageSelector).each(function(i,e){return $(e).wcfIdentify()==t?(a=i,!1):void 0});var n=this._ui.imageList.children("li:eq("+a+")");if(-1!==this._active){var h=!1;this._active!=n.data("index")&&(h=!0),this._ui.images[this._activeImage].prop("src")!=this._images[this._active].image.url&&(h=!0),h&&(this._active=-1)}n.trigger("click"),this.moveToImage(n.data("index"))}else null!==s&&s.trigger("click");this._toggleButtons(),this._preload()},_preload:function(){if(this._images.length<this._items){var i=this._images.length*this._thumbnailWidth;i-this._thumbnailOffset<this._thumbnailContainerWidth&&this._loadNextImages(!1)}},_showImage:function(i){this.showImage($(i.currentTarget).data("index"),!0)},showImage:function(i,e){if(this._active==i)return!1;this.stopSlideshow(e||!1),-1!=this._active&&this._images[this._active].listItem.removeClass("active"),this._active=i;var t=this._images[i];this._ui.imageList.children("li").removeClass("active"),t.listItem.addClass("active");var s=this._ui.imageContainer.getDimensions("inner"),a=this._activeImage?0:1;null!==this._activeImage&&this._ui.images[this._activeImage].removeClass("active"),this._activeImage=a;var n=this._active;if(this._ui.imageContainer.addClass("loading"),this._ui.images[a].off("load").prop("src","data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="),this._ui.images[a].on("load",$.proxy(function(){this._imageOnLoad(n,a)},this)),this._renderImage(a,t,s),!this.options.staticViewer){var h=this._ui.header.find("> div > a").prop("href",t.user.link).prop("title",t.user.username);h.children("img").prop("src",t.user.avatarURL)}var o=WCF.String.escapeHTML(t.image.title);if(t.image.link&&(o='<a href="'+t.image.link+'">'+o+"</a>"),this._ui.header.find("> div > h1").html(o),!this.options.staticViewer){var l=t.series&&t.series.title?WCF.String.escapeHTML(t.series.title):"";t.series.link&&(l='<a href="'+t.series.link+'">'+l+"</a>"),this._ui.header.find("> div > h2").html(l)}return this._ui.header.find("> div > h3").text(WCF.Language.get("wcf.imageViewer.seriesIndex").replace(/{x}/,t.listItem.data("index")+1).replace(/{y}/,this._items)),this._ui.slideshow.full.data("link",t.image.fullURL?t.image.fullURL:t.image.url),this.moveToImage(t.listItem.data("index")),this._toggleButtons(),!0},_imageOnLoad:function(i,e){i==this._active&&(this._ui.imageContainer.removeClass("loading"),this._ui.images[e].addClass("active"),this.options.staticViewer&&this._renderImage(e,null),this.startSlideshow())},_renderImage:function(i,e,t){var s=!0;e||(i=this._activeImage,e=this._images[this._active],t={height:$(window).height()-(this._container.hasClass("maximized")||this._container.hasClass("wcfImageViewerMobile")?0:200),width:this._ui.imageContainer.innerWidth()},s=!1),t.height-=22,t.width-=20;var a=this._ui.images[i];if(a.prop("src")!==e.image.url&&a.prop("src",e.image.url),s&&a[0].complete&&a.trigger("load"),this.options.staticViewer&&!e.image.height&&a[0].complete)if($.browser.mozilla||$.browser.safari){var n=new Image;n.src=e.image.url,e.image.height=n.height,e.image.width=n.width}else a.css({height:"auto",width:"auto"}),e.image.height=a[0].height,e.image.width=a[0].width;var h=e.image.height,o=e.image.width,l=0;h>t.height&&(l=t.height/h,h=t.height,o=Math.floor(o*l)),o>t.width&&(l=t.width/o,o=t.width,h=Math.floor(h*l));var r=Math.floor((t.width-o)/2);this._ui.images[i].css({height:h+"px",left:r+10+"px",marginTop:-1*Math.round(h/2)+"px",width:o+"px"})},_initUI:function(){if(this._didInit)return!1;this._didInit=!0,this._container=$('<div class="wcfImageViewer'+(this.options.staticViewer?" wcfImageViewerStatic":"")+'" />').appendTo(document.body);var i=$("<div><img /><img /></div>").appendTo(this._container),e=$('<footer><span class="wcfImageViewerButtonPrevious icon icon-double-angle-left" /><div><ul /></div><span class="wcfImageViewerButtonNext icon icon-double-angle-right" /></footer>').appendTo(this._container),t=$("<ul />").appendTo(i),s=$('<li class="wcfImageViewerSlideshowButtonPrevious"><span class="icon icon48 icon-angle-left" /></li>').appendTo(t),a=$('<li class="wcfImageViewerSlideshowButtonToggle pointer"><span class="icon icon48 icon-play" /></li>').appendTo(t),n=$('<li class="wcfImageViewerSlideshowButtonNext"><span class="icon icon48 icon-angle-right" /></li>').appendTo(t),h=$('<li class="wcfImageViewerSlideshowButtonEnlarge pointer jsTooltip" title="'+WCF.Language.get("wcf.imageViewer.button.enlarge")+'"><span class="icon icon48 icon-resize-full" /></li>').appendTo(t),o=$('<li class="wcfImageViewerSlideshowButtonFull pointer jsTooltip" title="'+WCF.Language.get("wcf.imageViewer.button.full")+'"><span class="icon icon48 icon-external-link" /></li>').appendTo(t);return this._ui={buttonNext:e.children("span.wcfImageViewerButtonNext"),buttonPrevious:e.children("span.wcfImageViewerButtonPrevious"),header:$("<header><div"+(this.options.staticViewer?">":' class="box64"><a class="framed jsTooltip"><img /></a>')+"<h1 /><h2 /><h3 /></div></header>").appendTo(this._container),imageContainer:i,images:[i.children("img:eq(0)").on("webkitTransitionEnd transitionend msTransitionEnd oTransitionEnd",function(){$(this).removeClass("animateTransformation")}),i.children("img:eq(1)").on("webkitTransitionEnd transitionend msTransitionEnd oTransitionEnd",function(){$(this).removeClass("animateTransformation")})],imageList:e.find("> div > ul"),slideshow:{container:t,enlarge:h,full:o,next:n,previous:s,toggle:a}},this._ui.buttonNext.click($.proxy(this._next,this)),this._ui.buttonPrevious.click($.proxy(this._previous,this)),n.click($.proxy(this._nextImage,this)),s.click($.proxy(this._previousImage,this)),h.click($.proxy(this._toggleView,this)),a.click($.proxy(function(){this._items<2||(this._slideshowEnabled?this.stopSlideshow(!0):(this._disableSlideshow=!1,this.startSlideshow()))},this)),o.click(function(i){window.location=$(i.currentTarget).data("link")}),$('<span class="wcfImageViewerButtonClose icon icon48 icon-remove pointer jsTooltip" title="'+WCF.Language.get("wcf.global.button.close")+'" />').appendTo(this._ui.header).click($.proxy(this.close,this)),$.browser.mobile||i.click(function(e){e.target===i[0]&&this.close()}.bind(this)),WCF.DOMNodeInsertedHandler.execute(),enquire.register("screen and (max-width: 800px)",{match:$.proxy(this._enableMobileView,this),unmatch:$.proxy(this._disableMobileView,this)}),!0},_enableMobileView:function(){this._container.addClass("wcfImageViewerMobile");var i=this;this._ui.imageContainer.swipe({swipeLeft:function(e){i._container.hasClass("maximized")&&i._nextImage(e)},swipeRight:function(e){i._container.hasClass("maximized")&&i._previousImage(e)},tap:function(e,t){switch(t.tagName){case"DIV":case"IMG":i._toggleView()}}}),this._isMobile=!0},_disableMobileView:function(){this._container.removeClass("wcfImageViewerMobile"),this._ui.imageContainer.swipe("destroy"),this._isMobile=!1},_toggleView:function(){this._ui.images[this._activeImage].addClass("animateTransformation"),this._container.toggleClass("maximized"),this._ui.slideshow.enlarge.toggleClass("active").children("span").toggleClass("icon-resize-full").toggleClass("icon-resize-small"),this._renderImage(null,void 0,null)},_next:function(i,e){if(this._ui.buttonNext.hasClass("pointer")){void 0==e&&this.stopSlideshow(!0);var t=Math.max(this._items*this._thumbnailWidth-this._thumbnailContainerWidth-this._thumbnailMarginRight,0);this._thumbnailOffset=Math.min(this._thumbnailOffset+this._thumbnailWidth*(e?e:this.options.shiftBy),t),this._ui.imageList.css("marginLeft",-1*this._thumbnailOffset)}this._preload(),this._toggleButtons()},_previous:function(i,e){this._ui.buttonPrevious.hasClass("pointer")&&(void 0==e&&this.stopSlideshow(!0),this._thumbnailOffset=Math.max(this._thumbnailOffset-this._thumbnailWidth*(e?e:this.options.shiftBy),0),this._ui.imageList.css("marginLeft",-1*this._thumbnailOffset)),this._toggleButtons()},_nextImage:function(i){this._ui.slideshow.next.hasClass("pointer")&&(this._disableSlideshow=!0,this.stopSlideshow(!0),this.showImage(this._active+1),i&&(i.preventDefault(),i.stopPropagation()))},_previousImage:function(i){this._ui.slideshow.previous.hasClass("pointer")&&(this._disableSlideshow=!0,this.stopSlideshow(!0),this.showImage(this._active-1),i&&(i.preventDefault(),i.stopPropagation()))},moveToImage:function(i){var e=(i-3)*this._thumbnailWidth,t=e+5*this._thumbnailWidth,s=this._thumbnailOffset,a=this._thumbnailOffset+this._thumbnailContainerWidth,n=!1;if((s>e||t>a)&&(n=!0),n){var h=0;if(s>e){for(;s>e;)h++,s-=this._thumbnailWidth;this._previous(null,h)}else{for(;t>a;)h++,a+=this._thumbnailWidth;this._next(null,h)}}},_toggleButtons:function(){this._thumbnailOffset>0?this._ui.buttonPrevious.addClass("pointer"):this._ui.buttonPrevious.removeClass("pointer");var i=this._images.length*this._thumbnailWidth-this._thumbnailContainerWidth-this._thumbnailMarginRight;this._thumbnailOffset>=i?this._ui.buttonNext.removeClass("pointer"):this._ui.buttonNext.addClass("pointer"),this._active>0?this._ui.slideshow.previous.addClass("pointer"):this._ui.slideshow.previous.removeClass("pointer"),this._active+1<this._images.length?this._ui.slideshow.next.addClass("pointer"):this._ui.slideshow.next.removeClass("pointer"),this._items<2?this._ui.slideshow.toggle.removeClass("pointer"):this._ui.slideshow.toggle.addClass("pointer")},_createThumbnails:function(i){this.options.staticViewer&&(this._images=[],this._ui.imageList.empty());for(var e=0,t=i.length;t>e;e++){var s=i[e],a=$('<li class="loading pointer"><img src="'+s.thumbnail.url+'" /></li>').appendTo(this._ui.imageList);a.data("index",this._images.length).data("objectID",s.objectID).click($.proxy(this._showImage,this));var n=a.children("img");if(n.get(0).complete)a.removeClass("loading"),this.options.staticViewer&&this._fixThumbnailDimensions(n);else{var h=this;n.on("load",function(){var i=$(this);i.parent().removeClass("loading"),h.options.staticViewer&&h._fixThumbnailDimensions(i)})}s.listItem=a,this._images.push(s)}},_fixThumbnailDimensions:function(i){var e=new Image;e.src=i.prop("src");var t=e.height,s=e.width;if(t==s)t=s=80;else if(s>t){var a=80/s;s=80,t*=a}else{var a=80/t;t=80,s*=a}i.css({height:t+"px",width:s+"px"})},_loadNextImages:function(i){this._proxy.setOption("data",{actionName:"loadNextImages",className:this.options.className,interfaceName:"wcf\\data\\IImageViewerAction",objectIDs:[this.element.data("objectID")],parameters:{maximumHeight:this._maxDimensions.height,maximumWidth:this._maxDimensions.width,offset:this._images.length,targetImageID:i&&this.element.data("targetImageID")?this.element.data("targetImageID"):0}}),this._proxy.setOption("showLoadingOverlay",!1),this._proxy.sendRequest()},_getStaticImages:function(){var i=[];return $(this.options.imageSelector).each(function(e,t){var s=$(t),a=s.children("img");a.length||(a=s.parentsUntil(".formAttachmentList").last().find(".attachmentTinyThumbnail")),i.push({image:{fullURL:s.prop("href"),link:"",title:s.prop("title"),url:s.prop("href")},series:null,thumbnail:{url:a.prop("src")},user:null})}),this._items=i.length,i},_success:function(i){i.returnValues.items&&(this._items=i.returnValues.items);var e=this._initUI();this._createThumbnails(i.returnValues.images);var t=i.returnValues.targetImageID?i.returnValues.targetImageID:0;this._render(e,t),this._isOpen||(this._isOpen=!0,WCF.System.DisableScrolling.disable(),WCF.System.DisableZoom.disable())}}); })(this);
 
 // WCF.Label.js
-(function (window, undefined) { })(this);
+(function (window, undefined) {"use strict";WCF.Label={},WCF.Label.ACPList=Class.extend({_labelInput:null,_labelList:[],init:function(){this._labelInput=$("#label").keydown($.proxy(this._keyPressed,this)).keyup($.proxy(this._keyPressed,this)).blur($.proxy(this._keyPressed,this)),$.browser.mozilla&&$.browser.touch&&this._labelInput.on("input",$.proxy(this._keyPressed,this)),$("#labelList").find('input[type="radio"]').each($.proxy(function(t,e){var i=$(e);"custom"!==i.prop("value")&&this._labelList.push($(i.next("span")))},this))},_keyPressed:function(){var t=this._labelInput.prop("value");""===t&&(t=WCF.Language.get("wcf.acp.label.defaultValue"));for(var e=0,i=this._labelList.length;i>e;e++)this._labelList[e].text(t)}}),WCF.Label.ACPList.Connect=Class.extend({init:function(){var t=$("#connect .structuredList li");t.length&&t.each($.proxy(function(t,e){$(e).find('input[type="checkbox"]').click($.proxy(this._click,this))},this))},_click:function(t){var e=$(t.currentTarget);if(e.is(":checked")){e=e.parents("li");for(var i=e.data("depth");;){if(e=e.next(),!e.length)return!0;if(e.data("depth")<=i)return!0;e.find('input[type="checkbox"]').prop("checked","checked")}}}}),WCF.Label.Chooser=Class.extend({_container:null,_groups:{},_showWithoutSelection:!1,init:function(t,e,i,a){if(this._container=null,this._groups={},this._showWithoutSelection=a===!0,this._initContainers(e),$.getLength(t))for(var n in t){var l=this._groups[n];l&&WCF.Dropdown.getDropdownMenu(l.wcfIdentify()).find("> ul > li:not(.dropdownDivider)").each($.proxy(function(e,i){var a=$(i),l=a.data("labelID")||0;l&&t[n]==l&&this._selectLabel(a,!0)},this))}for(var o in this._containers){var s=this._containers[o];void 0===s.data("labelID")&&s.data("labelID",0)}this._container=$(e),i?$(i).click($.proxy(this._submit,this)):this._container.is("form")&&this._container.submit($.proxy(this._submit,this))},_initContainers:function(t){$(t).find(".labelChooser").each($.proxy(function(t,e){var i=$(e),a=i.data("groupID");if(!this._groups[a]){var n=i.wcfIdentify(),l=WCF.Dropdown.getDropdownMenu(n);null===l&&(WCF.Dropdown.initDropdown(i.find(".dropdownToggle")),l=WCF.Dropdown.getDropdownMenu(n));var o=l;if("div"==l.getTagName()&&l.children(".scrollableDropdownMenu").length&&(o=$("<ul />").appendTo(l),l=l.children(".scrollableDropdownMenu")),this._groups[a]=i,l.children("li").data("groupID",a).click($.proxy(this._click,this)),(!i.data("forceSelection")||this._showWithoutSelection)&&$('<li class="dropdownDivider" />').appendTo(o),this._showWithoutSelection&&$('<li data-label-id="-1"><span><span class="badge label">'+WCF.Language.get("wcf.label.withoutSelection")+"</span></span></li>").data("groupID",a).appendTo(o).click($.proxy(this._click,this)),!i.data("forceSelection")){var s=$('<li data-label-id="0"><span><span class="badge label">'+WCF.Language.get("wcf.label.none")+"</span></span></li>").data("groupID",a).appendTo(o);s.click($.proxy(this._click,this))}}},this))},_click:function(t){this._selectLabel($(t.currentTarget),!1)},_selectLabel:function(t,e){var i=this._groups[t.data("groupID")];e&&void 0!==i.data("labelID")||(t.data("labelID")?i.data("labelID",t.data("labelID")):i.data("labelID",0),t=t.find("span > span"),i.find(".dropdownToggle > span").removeClass().addClass(t.attr("class")).text(t.text()))},_submit:function(){var t=this._container.find(".formSubmit");t.find('input[type="hidden"]').each(function(t,e){var i=$(e);0===i.attr("name").indexOf("labelIDs[")&&i.remove()});for(var e in this._groups){var i=this._groups[e];i.data("labelID")&&$('<input type="hidden" name="labelIDs['+e+']" value="'+i.data("labelID")+'" />').appendTo(t)}}}); })(this);
 
 // WCF.Location.js
-(function (window, undefined) { })(this);
+(function (window, undefined) {"use strict";WCF.Location={},WCF.Location.Util={getLocation:function(t,e){var o=WCF.Location.GoogleMaps.Settings.get("accessUserLocation");navigator.geolocation&&null!==o&&o?navigator.geolocation.getCurrentPosition(function(e){t(e.coords.latitude,e.coords.longitude)},function(){t(void 0,void 0)},{timeout:e||5e3}):t(void 0,void 0)}},WCF.Location.GoogleMaps={},WCF.Location.GoogleMaps.Settings={_settings:{},get:function(t){return void 0===t?this._settings:void 0!==this._settings[t]?this._settings[t]:null},set:function(t,e){if($.isPlainObject(t))for(var o in t)this._settings[o]=t[o];else this._settings[t]=e}},WCF.Location.GoogleMaps.Map=Class.extend({_map:null,_markers:[],init:function(t,e){this._mapContainer=$("#"+t),this._mapOptions=$.extend(!0,this._getDefaultMapOptions(),e),this._map=new google.maps.Map(this._mapContainer[0],this._mapOptions),this._markers=[],this._mapContainer.parents(".sidebar").length&&enquire.register("screen and (max-width: 800px)",{setup:$.proxy(this._addSidebarMapListener,this),deferSetup:!0}),this.refresh()},_addInfoWindowEventListener:function(t,e){google.maps.event.addListener(t,"click",$.proxy(function(){e.open(this._map,t)},this))},_addSidebarMapListener:function(){$(".content > .mobileSidebarToggleButton").click($.proxy(this.refresh,this))},_getDefaultMapOptions:function(){var t={};switch(t.center=new google.maps.LatLng(WCF.Location.GoogleMaps.Settings.get("defaultLatitude"),WCF.Location.GoogleMaps.Settings.get("defaultLongitude")),t.disableDoubleClickZoom=WCF.Location.GoogleMaps.Settings.get("disableDoubleClickZoom"),t.draggable=WCF.Location.GoogleMaps.Settings.get("draggable"),WCF.Location.GoogleMaps.Settings.get("mapType")){case"map":t.mapTypeId=google.maps.MapTypeId.ROADMAP;break;case"satellite":t.mapTypeId=google.maps.MapTypeId.SATELLITE;break;case"physical":t.mapTypeId=google.maps.MapTypeId.TERRAIN;break;case"hybrid":default:t.mapTypeId=google.maps.MapTypeId.HYBRID}if(t.mapTypeControl="off"!=WCF.Location.GoogleMaps.Settings.get("mapTypeControl"),t.mapTypeControl)switch(WCF.Location.GoogleMaps.Settings.get("mapTypeControl")){case"dropdown":t.mapTypeControlOptions={style:google.maps.MapTypeControlStyle.DROPDOWN_MENU};break;case"horizontalBar":t.mapTypeControlOptions={style:google.maps.MapTypeControlStyle.HORIZONTAL_BAR};break;default:t.mapTypeControlOptions={style:google.maps.MapTypeControlStyle.DEFAULT}}return t.scaleControl=WCF.Location.GoogleMaps.Settings.get("scaleControl"),t.scrollwheel=WCF.Location.GoogleMaps.Settings.get("scrollwheel"),t.zoom=WCF.Location.GoogleMaps.Settings.get("zoom"),t},addDraggableMarker:function(t,e){var o=new google.maps.Marker({clickable:!1,draggable:!0,map:this._map,position:new google.maps.LatLng(t,e),zIndex:1});return this._markers.push(o),o},addMarker:function(t,e,o,s,i){var a=new google.maps.Marker({map:this._map,position:new google.maps.LatLng(t,e),title:o});if(s&&a.setIcon(s),i){var n=new google.maps.InfoWindow({content:i});this._addInfoWindowEventListener(a,n),a.infoWindow=n}return this._markers.push(a),a},getMarkers:function(){return this._markers},getMap:function(){return this._map},refresh:function(){var t=this._map.getCenter();google.maps.event.trigger(this._map,"resize"),this._map.setCenter(t)},refreshBounds:function(){var t=null,e=null,o=null,s=null;for(var i in this._markers){var a=this._markers[i],n=a.getPosition().lat(),r=a.getPosition().lng();null===t?(t=e=n,o=s=r):(t>n?t=n:n>e&&(e=n),o>n?o=n:r>s&&(s=r))}this._map.fitBounds(new google.maps.LatLngBounds(new google.maps.LatLng(t,o),new google.maps.LatLng(e,s)))},removeMarkers:function(){for(var t in this._markers)this._markers[t].setMap(null);this._markers=[]},setBounds:function(t,e){this._map.fitBounds(new google.maps.LatLngBounds(new google.maps.LatLng(e.latitude,e.longitude),new google.maps.LatLng(t.latitude,t.longitude)))},setCenter:function(t,e){this._map.setCenter(new google.maps.LatLng(t,e))}}),WCF.Location.GoogleMaps.LargeMap=WCF.Location.GoogleMaps.Map.extend({_actionClassName:null,_additionalParameters:{},_locationSearch:null,_locationSearchInputSelector:null,_markerClusterer:null,_objectIDs:[],_previousNorthEast:null,_previousSouthWest:null,init:function(t,e,o,s,i){this._super(t,e),this._actionClassName=o,this._locationSearchInputSelector=s||"",this._additionalParameters=i||{},this._objectIDs=[],this._locationSearchInputSelector&&(this._locationSearch=new WCF.Location.GoogleMaps.LocationSearch(s,$.proxy(this._centerMap,this))),this._markerClusterer=new MarkerClusterer(this._map,this._markers,{maxZoom:17,imagePath:WCF.Location.GoogleMaps.Settings.get("markerClustererImagePath")+"m"}),this._markerSpiderfier=new OverlappingMarkerSpiderfier(this._map,{keepSpiderfied:!0,markersWontHide:!0,markersWontMove:!0}),this._markerSpiderfier.addListener("click",$.proxy(function(t){t.infoWindow&&t.infoWindow.open(this._map,t)},this)),this._proxy=new WCF.Action.Proxy({showLoadingOverlay:!1,success:$.proxy(this._success,this)}),this._previousNorthEast=null,this._previousSouthWest=null,google.maps.event.addListener(this._map,"idle",$.proxy(this._loadMarkers,this))},_addInfoWindowEventListener:function(){},_centerMap:function(t){this.setCenter(t.location.lat(),t.location.lng()),$(this._locationSearchInputSelector).val(t.label)},_loadMarkers:function(){var t=this._map.getBounds().getNorthEast(),e=this._map.getBounds().getSouthWest();return this._previousNorthEast&&this._previousNorthEast.lat()>=t.lat()&&this._previousNorthEast.lng()>=t.lng()&&this._previousSouthWest.lat()<=e.lat()&&this._previousSouthWest.lng()<=e.lng()?!1:(this._previousNorthEast=t,this._previousSouthWest=e,this._proxy.setOption("data",{actionName:"getMapMarkers",className:this._actionClassName,parameters:$.extend(this._additionalParameters,{excludedObjectIDs:this._objectIDs,eastLongitude:t.lng(),northLatitude:t.lat(),southLatitude:e.lat(),westLongitude:e.lng()})}),this._proxy.sendRequest(),!0)},_success:function(t){if(t.returnValues&&t.returnValues.markers)for(var e in t.returnValues.markers){var o=t.returnValues.markers[e];this.addMarker(o.latitude,o.longitude,o.title,null,o.infoWindow),o.objectID?this._objectIDs.push(o.objectID):o.objectIDs&&(this._objectIDs=this._objectIDs.concat(o.objectIDs))}},addMarker:function(t,e,o,s,i){var a=this._super(t,e,o,s,i);return this._markerClusterer.addMarker(a),this._markerSpiderfier.addMarker(a),a}}),WCF.Location.GoogleMaps.SuggestionMap=WCF.Location.GoogleMaps.LargeMap.extend({_locationSuggestionsButton:null,_suggestionSelectionCallback:null,init:function(t,e,o,s,i){this._super(t,e,o,s,i);var a=$('<div class="gmnoprint googleMapsCustomControlContainer"><div class="gm-style-mtc"><div class="googleMapsCustomControl">'+WCF.Language.get("wcf.map.showLocationSuggestions")+"</div></div></div>");this._locationSuggestionsButton=a.find(".googleMapsCustomControl").click($.proxy(this._toggleLocationSuggestions,this)),this._map.controls[google.maps.ControlPosition.TOP_RIGHT].push(a.get(0))},_loadMarkers:function(){this._locationSuggestionsButton.hasClass("active")&&(this._super()||(this._loadSuggestions=!1))},_success:function(t,e,o){var s=this._markers.length;this._super(t,e,o),this._loadSuggestions&&s==this._markers.length&&(this._loadSuggestions=!1,new WCF.System.Notification(WCF.Language.get("wcf.map.noLocationSuggestions"),"info").show())},_toggleLocationSuggestions:function(){var t=!this._locationSuggestionsButton.hasClass("active");t&&(this._loadSuggestions=!0),this.showSuggestions(t)},addMarker:function(t,e,o,s,i){var a=$(i),n=$('<a class="googleMapsUseLocationSuggestionLink" />').text(WCF.Language.get("wcf.map.useLocationSuggestion")).click(this._suggestionSelectionCallback);a.append($('<p class="marginTopTiny" />').append(n));var r=this._super(t,e,o,"//mt.google.com/vt/icon/name=icons/spotlight/spotlight-waypoint-a.png",a.get(0));return n.data("marker",r),r},setSuggestionSelectionCallback:function(t){this._suggestionSelectionCallback=t},showSuggestions:function(t){void 0===t&&(t=!0),this._locationSuggestionsButton.toggleClass("active",t);for(var e=[],o=0,s=this._markers.length;s>o;o++){var i=this._markers[o];i.draggable||(i.setVisible(t),t&&e.push(i))}this._markerClusterer.clearMarkers(),t&&this._markerClusterer.addMarkers(e),this._loadMarkers()}}),WCF.Location.GoogleMaps.LocationSearch=WCF.Search.Base.extend({_geocoder:null,init:function(t,e,o,s,i){this._super(t,e,o,s,i),this.setDelay(500),this._geocoder=new google.maps.Geocoder},_createListItem:function(t){var e=$("<li><span>"+WCF.String.escapeHTML(t.formatted_address)+"</span></li>").appendTo(this._list);return e.data("location",t.geometry.location).data("label",t.formatted_address).click($.proxy(this._executeCallback,this)),this._itemCount++,e},_keyUp:function(t){switch(t.which){case $.ui.keyCode.LEFT:case $.ui.keyCode.RIGHT:return;case $.ui.keyCode.UP:return void this._selectPreviousItem();case $.ui.keyCode.DOWN:return void this._selectNextItem();case $.ui.keyCode.ENTER:return this._selectElement(t)}var e=this._getSearchString(t);""===e?this._clearList(!0):e.length>=this._triggerLength?this._delay?(null!==this._timer&&this._timer.stop(),this._timer=new WCF.PeriodicalExecuter($.proxy(function(){this._geocoder.geocode({address:e},$.proxy(this._success,this)),this._timer.stop(),this._timer=null},this),this._delay)):this._geocoder.geocode({address:e},$.proxy(this._success,this)):this._clearList(!1)},_success:function(t,e){if(this._clearList(!1),e==google.maps.GeocoderStatus.OK){if($.getLength(t)){var o=0;for(var s in t)if(this._createListItem(t[s]),10==++o)break}else if(!this._handleEmptyResult())return;WCF.CloseOverlayHandler.addCallback("WCF.Search.Base",$.proxy(function(){this._clearList()},this));var i=this._searchInput.parents(".dropdown").wcfIdentify();WCF.Dropdown.getDropdownMenu(i).hasClass("dropdownOpen")||WCF.Dropdown.toggleDropdown(i),this._itemIndex=-1,WCF.Dropdown.getDropdown(i).data("disableAutoFocus")||this._selectNextItem()}}}),WCF.Location.GoogleMaps.LocationInput=Class.extend({_locationSearch:null,_map:null,_marker:null,init:function(t,e,o,s,i,a){this._searchInput=o,a?(this._map=new WCF.Location.GoogleMaps.SuggestionMap(t,e,a),this._map.setSuggestionSelectionCallback($.proxy(this._useSuggestion,this))):this._map=new WCF.Location.GoogleMaps.Map(t,e),this._locationSearch=new WCF.Location.GoogleMaps.LocationSearch(o,$.proxy(this._setMarkerByLocation,this)),s&&i?this._marker=this._map.addDraggableMarker(s,i):(this._marker=this._map.addDraggableMarker(WCF.Location.GoogleMaps.Settings.get("defaultLatitude"),WCF.Location.GoogleMaps.Settings.get("defaultLongitude")),WCF.Location.Util.getLocation($.proxy(function(t,e){void 0!==t&&void 0!==e&&(WCF.Location.GoogleMaps.Util.moveMarker(this._marker,t,e),WCF.Location.GoogleMaps.Util.focusMarker(this._marker))},this))),this._marker.addListener("dragend",$.proxy(this._updateLocation,this))},_useSuggestion:function(t){var e=$(t.currentTarget).data("marker");this._marker.setPosition(e.getPosition()),this._updateLocation(),this._map.showSuggestions(!1)},_updateLocation:function(){WCF.Location.GoogleMaps.Util.reverseGeocoding($.proxy(function(t){null!==t&&$(this._searchInput).val(t)},this),this._marker)},_setMarkerByLocation:function(t){this._marker.setPosition(t.location),WCF.Location.GoogleMaps.Util.focusMarker(this._marker),$(this._searchInput).val(t.label)},getMap:function(){return this._map},getMarker:function(){return this._marker}}),WCF.Location.GoogleMaps.Util={_geocoder:null,focusMarker:function(t){t.getMap().setCenter(t.getPosition())},getMarkerPosition:function(t){return{latitude:t.getPosition().lat(),longitude:t.getPosition().lng()}},moveMarker:function(t,e,o,s){t.setPosition(new google.maps.LatLng(e,o)),s&&google.maps.event.trigger(t,"dragend")},reverseGeocoding:function(t,e,o,s,i){e&&(o=e.getPosition().lat(),s=e.getPosition().lng()),null===this._geocoder&&(this._geocoder=new google.maps.Geocoder);var a=new google.maps.LatLng(o,s);this._geocoder.geocode({latLng:a},function(e,o){t(o==google.maps.GeocoderStatus.OK?i?e:e[0].formatted_address:null)})}}; })(this);
 
 // WCF.Message.js
-(function (window, undefined) { })(this);
+(function (window, undefined) {"use strict";WCF.Message={},WCF.Message.BBCode={},WCF.Message.BBCode.CodeViewer=Class.extend({_dialog:null,init:function(){this._dialog=null,this._initCodeBoxes(),WCF.DOMNodeInsertedHandler.addCallback("WCF.Message.BBCode.CodeViewer",$.proxy(this._initCodeBoxes,this)),WCF.DOMNodeInsertedHandler.execute()},_initCodeBoxes:function(){$(".codeBox:not(.jsCodeViewer)").each($.proxy(function(e,t){var i=$(t).addClass("jsCodeViewer");$('<span class="icon icon16 icon-copy pointer jsTooltip" title="'+WCF.Language.get("wcf.message.bbcode.code.copy")+'" />').appendTo(i.find("div > h3")).click($.proxy(this._click,this))},this))},_click:function(e){var t="";$(e.currentTarget).parents("div").next("ol").children("li").each(function(e,i){t&&(t+="\n"),t+=$(i).text().replace(/\n+$/,"")}),null===this._dialog?(this._dialog=$('<div><textarea cols="60" rows="12" readonly="readonly" /></div>').hide().appendTo(document.body),this._dialog.children("textarea").val(t),this._dialog.wcfDialog({title:WCF.Language.get("wcf.message.bbcode.code.copy")})):(this._dialog.children("textarea").val(t),this._dialog.wcfDialog("open")),this._dialog.children("textarea").select()}}),WCF.Message.EditHistory=Class.extend({_oldIDInputs:null,_newIDInputs:null,_containerSelector:"",_buttonSelector:".jsRevertButton",init:function(e,t,i,s){this._oldIDInputs=e,this._newIDInputs=t,this._containerSelector=i,this._buttonSelector=s?s:".jsRevertButton",this.proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._initInputs(),this._initElements()},_initInputs:function(){var e=this;this._newIDInputs.change(function(){var t=parseInt($(this).val());"current"===$(this).val()&&(t=1/0),e._oldIDInputs.each(function(){var e=parseInt($(this).val());"current"===$(this).val()&&(e=1/0),e>=t?$(this).disable():$(this).enable()})}),this._oldIDInputs.change(function(){var t=parseInt($(this).val());"current"===$(this).val()&&(t=1/0),e._newIDInputs.each(function(){var e=parseInt($(this).val());"current"===$(this).val()&&(e=1/0),t>=e?$(this).disable():$(this).enable()})}),this._oldIDInputs.filter(":checked").change(),this._newIDInputs.filter(":checked").change()},_initElements:function(){var e=this;$(this._containerSelector).each(function(t,i){var s=$(i);s.find(e._buttonSelector).click($.proxy(e._click,e))})},_click:function(e){var t=$(e.currentTarget);if(e.preventDefault(),t.data("confirmMessage")){var i=this;WCF.System.Confirmation.show(t.data("confirmMessage"),function(e){"cancel"!==e&&i._sendRequest(t)})}else this._sendRequest(t)},_sendRequest:function(e){this.proxy.setOption("data",{actionName:"revert",className:"wcf\\data\\edit\\history\\entry\\EditHistoryEntryAction",objectIDs:[$(e).data("objectID")]}),this.proxy.sendRequest()},_success:function(){window.location.reload(!0)}}),WCF.Message.FormGuard=Class.extend({init:function(){var e=$("form.jsFormGuard").removeClass("jsFormGuard").submit(function(){$(this).find(".formSubmit input[type=submit]").disable()});$(window).unload(function(){e.find(".formSubmit input[type=submit]").enable()})}}),WCF.Message.Preview=Class.extend({_className:"",_messageFieldID:"",_messageField:null,_proxy:null,_previewButton:null,_previewButtonLabel:"",init:function(e,t,i){return this._className=e,this._messageFieldID=$.wcfEscapeID(t),this._messageField=$("#"+this._messageFieldID),this._messageField.length?(i=$.wcfEscapeID(i),this._previewButton=$("#"+i),this._previewButton.length?(this._previewButton.click($.proxy(this._click,this)),void(this._proxy=new WCF.Action.Proxy({failure:$.proxy(this._failure,this),success:$.proxy(this._success,this)}))):void console.debug("[WCF.Message.Preview] Unable to find preview button identified by '"+i+"'")):void console.debug("[WCF.Message.Preview] Unable to find message field identified by '"+this._messageFieldID+"'")},_click:function(e){var t=this._getMessage();return null===t?void console.debug("[WCF.Message.Preview] Unable to access Redactor instance of '"+this._messageFieldID+"'"):(this._proxy.setOption("data",{actionName:"getMessagePreview",className:this._className,parameters:this._getParameters(t)}),this._proxy.sendRequest(),this._previewButtonLabel=this._previewButton.html(),this._previewButton.html(WCF.Language.get("wcf.global.loading")).disable(),e.stopPropagation(),!1)},_getParameters:function(e){var t={};return $("#settings_"+this._messageFieldID).find("input[type=checkbox]").each(function(e,i){var s=$(i);s.is(":checked")&&(t[s.prop("name")]=s.prop("value"))}),{data:{message:e},options:t}},_getMessage:function(){return $.browser.redactor?this._messageField.data("redactor")?this._messageField.redactor("wutil.getText"):null:$.trim(this._messageField.val())},_success:function(e){this._previewButton.html(this._previewButtonLabel).enable(),this._messageField.parent().children("small.innerError").remove(),this._handleResponse(e)},_handleResponse:function(){},_failure:function(e){if(null===e||void 0===e.returnValues||void 0===e.returnValues.errorType)return!0;this._previewButton.html(this._previewButtonLabel).enable();var t=this._messageField.next("small.innerError").empty();return t.length||(t=$('<small class="innerError" />').appendTo(this._messageField.parent())),t.html(e.returnValues.errorType),!1}}),WCF.Message.DefaultPreview=WCF.Message.Preview.extend({_attachmentObjectType:null,_attachmentObjectID:null,_tmpHash:null,init:function(e,t,i){this._super("wcf\\data\\bbcode\\MessagePreviewAction","text","previewButton"),this._attachmentObjectType=e||null,this._attachmentObjectID=t||null,this._tmpHash=i||null},_handleResponse:function(e){var t=$("#previewContainer");t.length||(t=$('<div class="container containerPadding marginTop" id="previewContainer"><fieldset><legend>'+WCF.Language.get("wcf.global.preview")+'</legend><div class="messageTextPreview"></div></fieldset>').prependTo($("#messageContainer")).wcfFadeIn()),t.find("div:eq(0)").html(e.returnValues.message),(new WCF.Effect.Scroll).scrollTo(t)},_getParameters:function(e){var t=this._super(e);return null!=this._attachmentObjectType&&(t.attachmentObjectType=this._attachmentObjectType,t.attachmentObjectID=this._attachmentObjectID,t.tmpHash=this._tmpHash),t}}),WCF.Message.Multilingualism=Class.extend({_availableLanguages:{},_languageID:0,_languageInput:null,init:function(e,t,i){if(this._availableLanguages=t,this._languageID=e||0,this._languageInput=$("#languageID"),this._updateLabel(),this._languageInput.find(".dropdownMenu > li").click($.proxy(this._click,this)),!i){var s=this._languageInput.find(".dropdownMenu");$('<li class="dropdownDivider" />').appendTo(s),$('<li><span><span class="badge">'+this._availableLanguages[0]+"</span></span></li>").click($.proxy(this._disable,this)).appendTo(s)}this._languageInput.parents("form").submit($.proxy(this._submit,this))},_click:function(e){this._languageID=$(e.currentTarget).data("languageID"),this._updateLabel()},_disable:function(){this._languageID=0,this._updateLabel()},_updateLabel:function(){this._languageInput.find(".dropdownToggle > span").text(this._availableLanguages[this._languageID])},_submit:function(){this._languageInput.next("input[name=languageID]").prop("value",this._languageID)}}),WCF.Message.SmileyCategories=Class.extend({_cache:[],_proxy:null,_wysiwygSelector:"",init:function(e){this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._wysiwygSelector=e,$("#smilies-"+this._wysiwygSelector).on("messagetabmenushow",$.proxy(this._click,this))},_click:function(e,t){e.preventDefault();var i=parseInt(t.activeTab.tab.data("smileyCategoryID"));if(i&&!t.activeTab.container.children("ul.smileyList").length){if(void 0!==this._cache[i])return void t.activeTab.container.html(this._cache[i]);this._proxy.setOption("data",{actionName:"getSmilies",className:"wcf\\data\\smiley\\category\\SmileyCategoryAction",objectIDs:[i]}),this._proxy.sendRequest()}},_success:function(e){var t=parseInt(e.returnValues.smileyCategoryID);this._cache[t]=e.returnValues.template,$("#smilies-"+this._wysiwygSelector+"-"+t).html(e.returnValues.template)}}),WCF.Message.Smilies=Class.extend({_redactor:null,_wysiwygSelector:"",init:function(e){this._wysiwygSelector=e,WCF.System.Dependency.Manager.register("Redactor_"+this._wysiwygSelector,$.proxy(function(){this._redactor=$("#"+this._wysiwygSelector).redactor("core.getObject"),$(".messageTabMenu[data-wysiwyg-container-id="+this._wysiwygSelector+"]").on("click",".jsSmiley",$.proxy(this._smileyClick,this))},this))},_smileyClick:function(e){e.preventDefault();var t=$(e.currentTarget),i=t.data("smileyCode"),s=t.data("smileyPath");this._redactor.wbbcode.insertSmiley(i,s,!0)}}),WCF.Message.QuickReply=Class.extend({_container:null,_messageField:null,_notification:null,_pendingSave:!1,_proxy:null,_quickReplyButtons:null,_quoteManager:null,_scrollHandler:null,_successMessageNonVisible:"",init:function(e,t){if(this._container=$("#messageQuickReply"),this._container.children(".message").addClass("jsInvalidQuoteTarget"),this._messageField=$("#text"),this._pendingSave=!1,this._container&&this._messageField){var i=this._container.find(".formSubmit"),s=i.find("button[data-type=save]").removeAttr("accesskey").click($.proxy(this._save,this));e&&i.find("button[data-type=extended]").click($.proxy(this._prepareExtended,this)),i.find("button[data-type=cancel]").click($.proxy(this._cancel,this)),t&&(this._quoteManager=t),this._quickReplyButtons=$(".jsQuickReply").data("__api",this).click($.proxy(this.click,this)),this._proxy=new WCF.Action.Proxy({failure:$.proxy(this._failure,this),showLoadingOverlay:!1,success:$.proxy(this._success,this)}),this._scroll=new WCF.Effect.Scroll,this._notification=new WCF.System.Notification(WCF.Language.get("wcf.global.success.add")),this._successMessageNonVisible="",WCF.System.Event.addListener("com.woltlab.wcf.redactor","submitEditor_text",function(e){e.cancel=!0,s.trigger("click")})}},click:function(e){if(this._container.toggle(),this._container.is(":visible")&&(this._quickReplyButtons.each(function(){var e=$(this);"LI"===e.parent()[0].tagName?e.parent().hide():e.hide()}),setTimeout(function(){$(document).trigger("resize"),$.browser.mobile&&$.browser.chrome||this._scroll.scrollTo(this._container,!0)}.bind(this),100),WCF.Message.Submit.registerButton("text",this._container.find(".formSubmit button[data-type=save]")),this._quoteManager)){var t=!0;$.browser.redactor?this._messageField.data("redactor")&&this._editorCallback(this._messageField.redactor("wutil.isEmptyEditor")):(t=!this._messageField.val().length,this._editorCallback(t))}return null!==e?(e.stopPropagation(),!1):void 0},_editorCallback:function(e){e&&this._quoteManager.insertQuotes(this._getClassName(),this._getObjectID(),$.proxy(this._insertQuotes,this)),$.browser.redactor?this._messageField.redactor("wutil.selectionEndOfEditor"):this._messageField.focus()},getContainer:function(){return this._container},_insertQuotes:function(e){if(e.returnValues.template)if($.browser.redactor){var t=WCF.String.unescapeHTML(e.returnValues.template);t=this._messageField.redactor("wbbcode.convertToHtml",t),t=t.replace(/<p><blockquote/,"<blockquote"),t=t.replace(/blockquote><\/p>/,"blockquote>"),this._messageField.redactor("focus.setEnd"),this._messageField.redactor("wutil.insertDynamic",t,e.returnValues.template),this._messageField.redactor("wutil.selectionEndOfEditor"),this._messageField.redactor("wbbcode.observeQuotes")}else this._messageField.val(e.returnValues.template)},_save:function(){if(!this._pendingSave){var e="";e=$.browser.redactor?this._messageField.redactor("wutil.getText"):$.trim(this._messageField.val());var t=this._messageField.parent().find("small.innerError");if(""===e||"0"===e)return t.length||(t=$('<small class="innerError" />').appendTo(this._messageField.parent())),void t.html(WCF.Language.get("wcf.global.form.error.empty"));t.remove(),this._pendingSave=!0,this._proxy.setOption("data",{actionName:"quickReply",className:this._getClassName(),interfaceName:"wcf\\data\\IMessageQuickReplyAction",parameters:this._getParameters(e)}),this._proxy.sendRequest();var i=this._container.find(".messageQuickReplyContent .messageBody");$('<span class="icon icon48 icon-spinner" />').appendTo(i);var s=i.children(".redactor-box").hide();s.next().hide(),i.next().hide()}},_getParameters:function(e){var t={objectID:this._getObjectID(),data:{message:e},lastPostTime:this._container.data("lastPostTime"),pageNo:this._container.data("pageNo"),removeQuoteIDs:null===this._quoteManager?[]:this._quoteManager.getQuotesMarkedForRemoval()};return this._container.data("anchor")&&(t.anchor=this._container.data("anchor")),WCF.System.Event.fireEvent("com.woltlab.wcf.messageOptionsInline","submit_"+this._messageField.wcfIdentify(),t.data),t},_cancel:function(){this._revertQuickReply(!0),$.browser.redactor?this._messageField.redactor("wutil.reset"):this._messageField.val("")},_revertQuickReply:function(e){var t=this._container.find(".messageQuickReplyContent .messageBody");e&&(this._container.hide(),t.children("small.innerError").remove()),t.children(".icon-spinner").remove(),t.children(".redactor-box").show().next().show(),t.next().show(),this._quickReplyButtons.each(function(){var e=$(this);"LI"===e.parent()[0].tagName?e.parent().show():e.show()})},_prepareExtended:function(){this._pendingSave=!0,null!==this._quoteManager&&this._quoteManager.markQuotesForRemoval();var e="";$.browser.redactor?(e=this._messageField.redactor("wutil.getText"),e.length?this._messageField.redactor("wutil.saveTextToStorage",!0):this._messageField.redactor("wutil.autosavePurge")):e=$.trim(this._messageField.val());var t={containerID:this._getObjectID(),message:e};WCF.System.Event.fireEvent("com.woltlab.wcf.messageOptionsInline","prepareExtended_"+this._messageField.wcfIdentify(),t),new WCF.Action.Proxy({autoSend:!0,data:{actionName:"jumpToExtended",className:this._getClassName(),interfaceName:"wcf\\data\\IExtendedMessageQuickReplyAction",parameters:t},success:function(e){this._messageField.redactor("wutil.saveTextToStorage"),window.location=e.returnValues.url}.bind(this)})},_success:function(e){if($.browser.redactor&&(this._messageField.redactor("wutil.autosavePause"),this._messageField.redactor("wutil.autosavePurge")),e.returnValues.url)window.location=e.returnValues.url;else{if(e.returnValues.template){var t=$(""+e.returnValues.template);"DESC"==this._container.data("sortOrder")?t.insertAfter(this._container):t.insertBefore(this._container),this._container.data("lastPostTime",e.returnValues.lastPostTime),this._notification.show(void 0,void 0,WCF.Language.get("wcf.global.success.add")),this._updateHistory(t.wcfIdentify())}else{var t=this._successMessageNonVisible?this._successMessageNonVisible:"wcf.global.success.add";this._notification.show(void 0,5e3,WCF.Language.get(t))}$.browser.redactor?(this._messageField.redactor("wutil.reset"),this._messageField.redactor("wutil.autosaveResume")):this._messageField.val(""),this._revertQuickReply(!0),null!==this._quoteManager&&this._quoteManager.countQuotes(),this._pendingSave=!1}},_failure:function(e){if(this._pendingSave=!1,this._revertQuickReply(!1),null===e||void 0===e.returnValues||void 0===e.returnValues.errorType)return!0;var t=this._container.find(".messageQuickReplyContent .messageBody"),i=t.children("small.innerError").empty();return i.length||(i=$('<small class="innerError" />').appendTo(t)),i.html(e.returnValues.errorType),!1},_getClassName:function(){return""},_getObjectID:function(){return 0},_updateHistory:function(e){window.location.hash=e}}),WCF.Message.InlineEditor=Class.extend({_activeElementID:"",_container:{},_containerID:0,_dropdowns:{},_messageContainerSelector:".jsMessage",_messageEditorIDPrefix:"messageEditor",_notification:null,_proxy:null,_quoteManager:null,_supportExtendedForm:!1,init:function(e,t,i){this._activeElementID="",this._container={},this._containerID=parseInt(e),this._dropdowns={},this._quoteManager=i||null,this._supportExtendedForm=t?!0:!1,this._proxy=new WCF.Action.Proxy({failure:$.proxy(this._failure,this),showLoadingOverlay:!1,success:$.proxy(this._success,this)}),this._notification=new WCF.System.Notification(WCF.Language.get("wcf.global.success.edit")),this.initContainers(),WCF.DOMNodeInsertedHandler.addCallback("WCF.Message.InlineEditor",$.proxy(this.initContainers,this))},initContainers:function(){$(this._messageContainerSelector).each($.proxy(function(e,t){var i=$(t),s=i.wcfIdentify();if(!this._container[s])if(this._container[s]=i,i.data("canEditInline")){var n=i.find(".jsMessageEditButton:eq(0)").data("containerID",s).click($.proxy(this._clickInline,this));i.data("canEdit")&&n.dblclick($.proxy(this._click,this))}else i.data("canEdit")&&i.find(".jsMessageEditButton:eq(0)").data("containerID",s).click($.proxy(this._click,this))},this))},_click:function(e,t){var i=null===e?t:$(e.currentTarget).data("containerID");if(""===this._activeElementID)this._activeElementID=i,this._prepare(),this._proxy.setOption("data",{actionName:"beginEdit",className:this._getClassName(),interfaceName:"wcf\\data\\IMessageInlineEditorAction",parameters:{containerID:this._containerID,objectID:this._container[i].data("objectID")}}),this._proxy.setOption("failure",$.proxy(function(){this._cancel()},this)),this._proxy.sendRequest();else{var s=new WCF.System.Notification(WCF.Language.get("wcf.message.error.editorAlreadyInUse"),"warning");s.show()}return this._dropdowns[this._container[i].data("objectID")]&&this._dropdowns[this._container[i].data("objectID")].removeClass("dropdownOpen"),null!==e?(e.stopPropagation(),!1):void 0},_clickInline:function(e){var t=$(e.currentTarget);if(!t.hasClass("dropdownToggle")){var i=t.data("containerID");t.addClass("dropdownToggle").parent().addClass("dropdown");var s=$('<ul class="dropdownMenu" />').insertAfter(t);this._initDropdownMenu(i,s),WCF.DOMNodeInsertedHandler.execute(),this._dropdowns[this._container[i].data("objectID")]=s,WCF.Dropdown.registerCallback(t.parent().wcfIdentify(),$.proxy(this._toggleDropdown,this)),t.trigger("click")}return e.stopPropagation(),!1},_failure:function(e){if(this._revertEditor(),null===e||void 0===e.returnValues||void 0===e.returnValues.errorType)return!0;var t=this._container[this._activeElementID].find(".messageBody .messageInlineEditor"),i=t.children("small.innerError").empty();return i.length||(i=$('<small class="innerError" />').insertBefore(t.children(".formSubmit"))),i.html(e.returnValues.errorType),!1},_toggleDropdown:function(e){WCF.Dropdown.getDropdown(e).parents(".messageOptions").toggleClass("forceOpen")},_initDropdownMenu:function(){},_prepare:function(){var e=this._container[this._activeElementID].find(".messageBody");$('<span class="icon icon48 icon-spinner" />').appendTo(e);var t=e.find(".messageText").hide();t.parent().children(".jsInlineEditorHideContent").hide(),e.children(".attachmentThumbnailList, .attachmentFileList").hide()},_cancel:function(){var e=this._container[this._activeElementID].removeClass("jsInvalidQuoteTarget");this._destroyEditor();var t=e.find(".messageBody");t.children(".icon-spinner").remove(),t.find(".messageText").show(),t.children(".attachmentThumbnailList, .attachmentFileList").show(),t.find(".jsInlineEditorHideContent").show(),this._container[this._activeElementID].find(".messageOptions").removeClass("forceHidden"),this._activeElementID="",this._quoteManager&&this._quoteManager.clearAlternativeEditor()},_success:function(e){switch(e.returnValues.actionName){case"beginEdit":this._showEditor(e);break;case"save":this._showMessage(e)}},_showEditor:function(e){this._proxy.setOption("failure",$.proxy(this._failure,this));var t=this._messageEditorIDPrefix+this._container[this._activeElementID].data("objectID"),i=this._container[this._activeElementID].addClass("jsInvalidQuoteTarget").find(".messageBody");i.children(".icon-spinner").remove();var s=i.children("div:eq(0)");$(""+e.returnValues.template).appendTo(s);var n=s.find(".formSubmit"),a=n.find("button[data-type=save]").click($.proxy(this._save,this));this._supportExtendedForm&&n.find("button[data-type=extended]").click($.proxy(this._prepareExtended,this)),n.find("button[data-type=cancel]").click($.proxy(this._cancel,this)),WCF.Message.Submit.registerButton(this._messageEditorIDPrefix+this._container[this._activeElementID].data("objectID"),a),WCF.System.Event.addListener("com.woltlab.wcf.redactor","submitEditor_"+t,function(e){e.cancel=!0,a.trigger("click")}),this._container[this._activeElementID].find(".messageOptions").addClass("forceHidden");var o=$("#"+t);$.browser.redactor?new WCF.PeriodicalExecuter($.proxy(function(e){e.stop(),this._quoteManager&&this._quoteManager.setAlternativeEditor(o),(new WCF.Effect.Scroll).scrollTo(this._container[this._activeElementID],!0)},this),250):o.focus()},_revertEditor:function(){var e=this._container[this._activeElementID].removeClass("jsInvalidQuoteTarget").find(".messageBody");e.children("span.icon-spinner").remove(),e.children("div:eq(0)").children(":not(.messageText)").show(),e.children(".attachmentThumbnailList, .attachmentFileList").show(),e.find(".jsInlineEditorHideContent").show(),this._quoteManager&&this._quoteManager.clearAlternativeEditor()},_save:function(){var e=this._container[this._activeElementID],t=e.data("objectID"),i="";i=$.browser.redactor?$("#"+this._messageEditorIDPrefix+t).redactor("wutil.getText"):$("#"+this._messageEditorIDPrefix+t).val();var s={containerID:this._containerID,data:{message:i},objectID:t,removeQuoteIDs:null===this._quoteManager?[]:this._quoteManager.getQuotesMarkedForRemoval()};WCF.System.Event.fireEvent("com.woltlab.wcf.messageOptionsInline","submit_"+this._messageEditorIDPrefix+t,s),this._proxy.setOption("data",{actionName:"save",className:this._getClassName(),interfaceName:"wcf\\data\\IMessageInlineEditorAction",parameters:s}),this._proxy.sendRequest(),this._hideEditor()},_prepareExtended:function(){var e=this._container[this._activeElementID],t=e.data("objectID"),i="";i=$.browser.redactor?$("#"+this._messageEditorIDPrefix+t).redactor("wutil.getText"):$("#"+this._messageEditorIDPrefix+t).val(),new WCF.Action.Proxy({autoSend:!0,data:{actionName:"jumpToExtended",className:this._getClassName(),parameters:{containerID:this._containerID,message:i,messageID:t}},success:function(e){window.location=e.returnValues.url}})},_hideEditor:function(){var e=this._container[this._activeElementID].removeClass("jsInvalidQuoteTarget").find(".messageBody");$('<span class="icon icon48 icon-spinner" />').appendTo(e),e.children("div:eq(0)").children().hide(),e.children(".attachmentThumbnailList, .attachmentFileList").show(),e.find(".jsInlineEditorHideContent").show(),this._quoteManager&&this._quoteManager.clearAlternativeEditor()},_showMessage:function(e){var t=this._container[this._activeElementID].removeClass("jsInvalidQuoteTarget"),i=t.find(".messageBody");i.children(".icon-spinner").remove();var s=i.children("div:eq(0)");s.parent().children(".jsInlineEditorHideContent").show(),this._container[this._activeElementID].find(".messageOptions").removeClass("forceHidden"),this._destroyEditor(),s.children(".messageText").html(e.returnValues.message).show(),void 0==e.returnValues.attachmentList?i.children(".attachmentThumbnailList, .attachmentFileList").show():(i.children(".attachmentThumbnailList, .attachmentFileList").remove(),e.returnValues.attachmentList&&$(e.returnValues.attachmentList).insertAfter(i.children("div:eq(0)"))),this._activeElementID="",this._updateHistory(this._getHash(t.data("objectID"))),this._notification.show(),this._quoteManager&&(this._quoteManager.clearAlternativeEditor(),this._quoteManager.countQuotes())},_destroyEditor:function(){var e=this._container[this._activeElementID];if($.browser.redactor){var t=$("#"+this._messageEditorIDPrefix+e.data("objectID"));t.redactor("wutil.autosavePause"),t.redactor("wutil.autosavePurge"),t.redactor("core.destroy")}e.find(".messageBody > div > .messageInlineEditor").remove(),WCF.System.Event.removeAllListeners("com.woltlab.wcf.messageOptionsInline","submit_"+this._messageEditorIDPrefix+e.data("objectID"))},_getClassName:function(){return""},_getHash:function(e){return"#message"+e},_updateHistory:function(e){window.location.hash=e}}),WCF.Message.Submit={_buttons:{},registerButton:function(e,t){WCF.Browser.isChrome()&&(this._buttons[e]=$(t))},execute:function(e){this._buttons[e]&&this._buttons[e].trigger("click")}},WCF.Message.Quote={},WCF.Message.Quote.Handler=Class.extend({_activeContainerID:"",_className:"",_containers:{},_containerSelector:"",_copyQuote:null,_message:"",_messageBodySelector:"",_objectID:0,_objectType:"",_proxy:null,_quoteManager:null,init:function(e,t,i,s,n,a,o){return this._className=t,""==this._className?void console.debug("[WCF.Message.QuoteManager] Empty class name given, aborting."):(this._objectType=i,""==this._objectType?void console.debug("[WCF.Message.QuoteManager] Empty object type name given, aborting."):(this._containerSelector=s,this._message="",this._messageBodySelector=n,this._messageContentSelector=a,this._objectID=0,this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._initContainers(),o=o&&e.supportPaste()?!0:!1,this._initCopyQuote(o),$(document).mouseup($.proxy(this._mouseUp,this)),this._quoteManager=e,this._quoteManager.register(this._objectType,this),void WCF.DOMNodeInsertedHandler.addCallback("WCF.Message.Quote.Handler"+i.hashCode(),$.proxy(this._initContainers,this))))},_initContainers:function(){var e=this;$(this._containerSelector).each(function(t,i){var s=$(i),n=s.wcfIdentify();if(!e._containers[n]){if(e._containers[n]=s,s.hasClass("jsInvalidQuoteTarget"))return!0;null!==e._messageBodySelector&&(s=s.find(e._messageBodySelector).data("containerID",n)),s.mousedown($.proxy(e._mouseDown,e)),e._containers[n].find(".jsQuoteMessage").click($.proxy(e._saveFullQuote,e))}})},_mouseDown:function(e){this._copyQuote.hide();var t=$(e.currentTarget);if(this._messageBodySelector&&(t=this._containers[t.data("containerID")]),t.hasClass("jsInvalidQuoteTarget"))return void(this._activeContainerID="");for(var i=e.target;i!==t[0];){if("BLOCKQUOTE"===i.tagName)return void(this._activeContainerID="");i=i.parentElement}this._activeContainerID=t.wcfIdentify(),$.browser.mozilla&&t.find("img").each(function(){var e=$(this);e.data("__alt",e.attr("alt")).removeAttr("alt")})},_getNodeText:function(e){var t=function(e){switch(e.tagName){case"BLOCKQUOTE":case"H3":case"SCRIPT":return NodeFilter.FILTER_REJECT;default:return NodeFilter.FILTER_ACCEPT}};t.acceptNode=t;for(var i=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT,t,!0),s="";i.nextNode();){var n=i.currentNode;if(n.nodeType===Node.ELEMENT_NODE)switch(n.tagName){case"BR":case"LI":case"UL":s+="\n";break;case"TD":$.browser.msie||(s+="\n")}else s+=n.nodeValue.replace(/\n/g,"")}return s},_mouseUp:function(e){if(""==this._activeContainerID)return void this._copyQuote.hide();var t=this._containers[this._activeContainerID],i=this._getSelectedText(),s=$.trim(i);if(""==s)return void this._copyQuote.hide();for(var n=this._messageBodySelector?t.find(this._messageContentSelector)[0]:t[0],a=e.target;a!==t[0];){if(null===a||"BLOCKQUOTE"===a.tagName)return void this._copyQuote.hide();a=a.parentElement}var o=window.getSelection().getRangeAt(0);if(!this._elementInsideContainer(o.startContainer,n)||!this._elementInsideContainer(o.endContainer,n))return void this._copyQuote.hide();var r=this._getNodeText(n);if(-1!==this._normalize(r).indexOf(this._normalize(s))){this._copyQuote.show();var l=this._getBoundingRectangle(t,window.getSelection()),c=this._copyQuote.getDimensions("outer"),d=(l.right-l.left)/2-c.width/2+l.left;this._copyQuote.css({top:l.top-c.height-7+"px",left:d+"px"}),this._copyQuote.hide(),this._activeContainerID="";var h=this;new WCF.PeriodicalExecuter(function(e){e.stop();var i=$.trim(h._getSelectedText());""!=i&&(h._copyQuote.show(),h._message=i,h._objectID=t.data("objectID"),$.browser.mozilla&&t.find("img").each(function(){var e=$(this);e.attr("alt",e.data("__alt"))}))},10)}},_elementInsideContainer:function(e,t){for(e.nodeType===Node.TEXT_NODE&&(e=e.parentNode);e;){if(e===t)return!0;e=e.parentNode}return!1},_normalize:function(e){return e.replace(/\r?\n|\r/g,"\n").replace(/\s/g," ").replace(/\s{2,}/g," ")},_getOffset:function(e,t){e.collapse(t);var i=WCF.getRandomID(),s=document.createElement("span");s.innerHTML='<span id="'+i+'"></span>';for(var n,a=document.createDocumentFragment();n=s.firstChild;)a.appendChild(n);e.insertNode(a),s=$("#"+i);var o=s.offset();return o.top=o.top-$(window).scrollTop(),s.remove(),o},_getBoundingRectangle:function(e,t){var i=null;if(document.createRange&&"undefined"!=typeof document.createRange().getBoundingClientRect){if(t.rangeCount>0){var s=t.getRangeAt(0).getBoundingClientRect();i={left:s.left,right:s.right,top:s.top+$(document).scrollTop()}}}else if(document.selection&&"Control"!=document.selection.type){var n=document.selection.createRange();i={left:n.boundingLeft,right:n.boundingRight,top:n.boundingTop}}return i},_saveSelection:function(e){if(window.getSelection&&document.createRange){var t=window.getSelection().getRangeAt(0),i=t.cloneRange();i.selectNodeContents(e),i.setEnd(t.startContainer,t.startOffset);var s=i.toString().length;return{start:s,end:s+t.toString().length}}var n=document.selection.createRange(),a=document.body.createTextRange();a.moveToElementText(e),a.setEndPoint("EndToStart",n);var s=a.text.length;return{start:s,end:s+n.text.length}},_restoreSelection:function(e,t){if(window.getSelection&&document.createRange){var i=0,s=document.createRange();s.setStart(e,0),s.collapse(!0);for(var n,a=[e],o=!1,r=!1;!r&&(n=a.pop());)if(n.nodeType==Node.TEXT_NODE){var l=i+n.length;!o&&t.start>=i&&t.start<=l&&(s.setStart(n,t.start-i),o=!0),o&&t.end>=i&&t.end<=l&&(s.setEnd(n,t.end-i),r=!0),i=l}else for(var c=n.childNodes.length;c--;)a.push(n.childNodes[c]);var d=window.getSelection();d.removeAllRanges(),d.addRange(s)}else{var h=document.body.createTextRange();h.moveToElementText(e),h.collapse(!0),h.moveEnd("character",t.end),h.moveStart("character",t.start),h.select()}},_initCopyQuote:function(e){if(this._copyQuote=$("#quoteManagerCopy"),!this._copyQuote.length){this._copyQuote=$('<div id="quoteManagerCopy" class="balloonTooltip"><span class="jsQuoteManagerStore">'+WCF.Language.get("wcf.message.quote.quoteSelected")+'</span><span class="pointer"><span></span></span></div>').hide().appendTo(document.body);var t=this._copyQuote.children("span.jsQuoteManagerStore").click($.proxy(this._saveQuote,this));e&&$('<span class="jsQuoteManagerQuoteAndInsert">'+WCF.Language.get("wcf.message.quote.quoteAndReply")+"</span>").click($.proxy(this._saveAndInsertQuote,this)).insertAfter(t)}},_getSelectedText:function(){var e=window.getSelection();return e.rangeCount?this._getNodeText(e.getRangeAt(0).cloneContents()):""},_saveFullQuote:function(e){var t=$(e.currentTarget);this._proxy.setOption("data",{actionName:"saveFullQuote",className:this._className,interfaceName:"wcf\\data\\IMessageQuoteAction",objectIDs:[t.data("objectID")]}),this._proxy.sendRequest(),t.data("isQuoted")?t.data("isQuoted",!1).children("a").removeClass("active"):t.data("isQuoted",!0).children("a").addClass("active");var i=t.parents(".buttonGroupNavigation");return i.hasClass("jsMobileButtonGroupNavigation")&&i.children(".dropdownLabel").trigger("click"),e.stopPropagation(),!1},_saveQuote:function(e){e=e===!0?!0:!1,this._proxy.setOption("data",{actionName:"saveQuote",className:this._className,interfaceName:"wcf\\data\\IMessageQuoteAction",objectIDs:[this._objectID],parameters:{message:this._message,renderQuote:e}}),this._proxy.sendRequest()},_saveAndInsertQuote:function(){this._saveQuote(!0)},_success:function(e){if(void 0!==e.returnValues.count){void 0!==e.returnValues.fullQuoteMessageIDs&&(e.returnValues.fullQuoteObjectIDs=e.returnValues.fullQuoteMessageIDs);var t=void 0!==e.returnValues.fullQuoteObjectIDs?e.returnValues.fullQuoteObjectIDs:{};this._quoteManager.updateCount(e.returnValues.count,t)}switch(e.actionName){case"saveQuote":case"saveFullQuote":e.returnValues.renderedQuote&&WCF.System.Event.fireEvent("com.woltlab.wcf.message.quote","insert",{
+forceInsert:"saveQuote"===e.actionName?!0:!1,quote:e.returnValues.renderedQuote})}},updateFullQuoteObjectIDs:function(e){for(var t in this._containers)this._containers[t].find(".jsQuoteMessage").each(function(t,i){var s=$(i).data("isQuoted",0);s.children("a").removeClass("active"),WCF.inArray(s.data("objectID"),e)&&s.data("isQuoted",1).children("a").addClass("active")})}}),WCF.Message.Quote.Manager=Class.extend({_buttons:{},_count:0,_dialog:null,_editorElement:null,_editorElementAlternative:null,_form:null,_handlers:{},_hasTemplate:!1,_insertQuotes:!0,_proxy:null,_removeOnSubmit:[],_showQuotes:null,_supportPaste:!1,init:function(e,t,i,s){this._buttons={insert:null,remove:null},this._count=parseInt(e)||0,this._dialog=null,this._editorElement=null,this._editorElementAlternative=null,this._form=null,this._handlers={},this._hasTemplate=!1,this._insertQuotes=!0,this._removeOnSubmit=[],this._showQuotes=null,this._supportPaste=!1,t&&(this._editorElement=$("#"+t),this._editorElement.length&&(this._supportPaste=!0,this._form=this._editorElement.parents("form:eq(0)"),this._form.length?(this._form.submit($.proxy(this._submit,this)),this._removeOnSubmit=s||[]):(this._form=null,this._supportPaste=i===!0?!0:!1))),this._proxy=new WCF.Action.Proxy({showLoadingOverlay:!1,success:$.proxy(this._success,this),url:"index.php/MessageQuote/?t="+SECURITY_TOKEN+SID_ARG_2ND}),this._toggleShowQuotes(),WCF.System.Event.addListener("com.woltlab.wcf.message.quote","insert",function(e){this._insertQuote(null,void 0,e)}.bind(this))},setAlternativeEditor:function(e){this._editorElementAlternative=e},clearAlternativeEditor:function(){this._editorElementAlternative=null},register:function(e,t){this._handlers[e]=t},updateCount:function(e,t){this._count=parseInt(e)||0,this._toggleShowQuotes();for(var i in this._handlers){var s=t[i]||[];this._handlers[i].updateFullQuoteObjectIDs(s)}},insertQuotes:function(e,t,i){return this._insertQuotes?void new WCF.Action.Proxy({autoSend:!0,data:{actionName:"getRenderedQuotes",className:e,interfaceName:"wcf\\data\\IMessageQuoteAction",parameters:{parentObjectID:t}},success:i}):void(this._insertQuotes=!0)},_toggleShowQuotes:function(){if(this._count){null===this._showQuotes&&(this._showQuotes=$("#showQuotes"),this._showQuotes.length||(this._showQuotes=$('<div id="showQuotes" class="balloonTooltip" />').click($.proxy(this._click,this)).appendTo(document.body)));var e=WCF.Language.get("wcf.message.quote.showQuotes").replace(/#count#/,this._count);this._showQuotes.text(e).show()}else null!==this._showQuotes&&this._showQuotes.hide();this._hasTemplate=!1},_click:function(){this._hasTemplate?this._dialog.wcfDialog("open"):(this._proxy.showLoadingOverlayOnce(),this._proxy.setOption("data",{actionName:"getQuotes",supportPaste:this._supportPaste}),this._proxy.sendRequest())},renderDialog:function(e){null===this._dialog&&(this._dialog=$("#messageQuoteList"),this._dialog.length||(this._dialog=$('<div id="messageQuoteList" />').hide().appendTo(document.body))),this._dialog.html(e);var t=$('<div class="formSubmit" />').appendTo(this._dialog);this._supportPaste&&(this._buttons.insert=$('<button class="buttonPrimary">'+WCF.Language.get("wcf.message.quote.insertAllQuotes")+"</button>").click($.proxy(this._insertSelected,this)).appendTo(t)),this._buttons.remove=$("<button>"+WCF.Language.get("wcf.message.quote.removeAllQuotes")+"</button>").click($.proxy(this._removeSelected,this)).appendTo(t),this._dialog.wcfDialog({title:WCF.Language.get("wcf.message.quote.manageQuotes")}),this._dialog.wcfDialog("render"),this._hasTemplate=!0;var i=this._dialog.find(".jsInsertQuote");if(this._supportPaste?i.click($.proxy(this._insertQuote,this)):i.hide(),this._dialog.find("input.jsCheckbox").change($.proxy(this._changeButtons,this)),this._removeOnSubmit.length){var s=this;this._dialog.find("input.jsRemoveQuote").each(function(e,t){var i=$(t).change($.proxy(this._change,this));WCF.inArray(i.parent("li").attr("data-quote-id"),s._removeOnSubmit)&&i.attr("checked","checked")})}},_changeButtons:function(){this._dialog.find("input.jsCheckbox:checked").length?(this._supportPaste&&this._buttons.insert.html(WCF.Language.get("wcf.message.quote.insertSelectedQuotes")),this._buttons.remove.html(WCF.Language.get("wcf.message.quote.removeSelectedQuotes"))):(this._supportPaste&&this._buttons.insert.html(WCF.Language.get("wcf.message.quote.insertAllQuotes")),this._buttons.remove.html(WCF.Language.get("wcf.message.quote.removeAllQuotes")))},_change:function(e){var t=$(e.currentTarget),i=t.parent("li").attr("data-quote-id");if(t.prop("checked"))this._removeOnSubmit.push(i);else for(var s in this._removeOnSubmit)if(this._removeOnSubmit[s]==i){delete this._removeOnSubmit[s];break}},_insertSelected:function(){if(null===this._editorElementAlternative){var e=$(".jsQuickReply:eq(0)").data("__api");e&&!e.getContainer().is(":visible")&&(this._insertQuotes=!1,e.click(null))}this._dialog.find("input.jsCheckbox:checked").length||this._dialog.find("input.jsCheckbox").prop("checked","checked"),this._dialog.find("input.jsCheckbox:checked").each($.proxy(function(e,t){this._insertQuote(null,t)},this)),this._dialog.wcfDialog("close")},_insertQuote:function(e,t,i){var s,n,a,o=null;if(void 0===i){o=null===e?$(t).parents("li"):$(e.currentTarget).parents("li"),s=$.trim(o.children("div.jsFullQuote").text());var r=o.parents("article.message");n=r.attr("data-username"),a=r.data("link"),i={forceInsert:!0}}else s=i.quote.text,n=i.quote.username,a=i.quote.link;if($.browser.redactor)if(null===this._editorElementAlternative){var l=!0;if(null!==e||null!==i){var c=$(".jsQuickReply:eq(0)").data("__api");c&&!c.getContainer().is(":visible")&&(i.forceInsert?(this._insertQuotes=!1,c.click(null)):l=!1)}l&&this._editorElement.length&&this._editorElement.redactor("wbbcode.insertQuoteBBCode",n,a,s,s)}else this._editorElementAlternative.redactor("wbbcode.insertQuoteBBCode",n,a,s,s);else{s="[quote='"+n+"','"+a+"']"+s+"[/quote]";var d=null===this._editorElementAlternative?this._editorElement:this._editorElementAlternative,h=d.val();if(s+="\n\n",0==h.length)d.val(s);else{var u=d.getCaret();d.val(h.substr(0,u)+s+h.substr(u))}}null!==o&&this._removeOnSubmit.push(o.attr("data-quote-id")),null!==e&&this._dialog.wcfDialog("close")},_removeSelected:function(){this._dialog.find("input.jsCheckbox:checked").length||this._dialog.find("input.jsCheckbox").prop("checked","checked");var e=[];if(this._dialog.find("input.jsCheckbox:checked").each(function(t,i){e.push($(i).parents("li").attr("data-quote-id"))}),e.length){var t=[];for(var i in this._handlers)t.push(i);this._proxy.setOption("data",{actionName:"remove",getFullQuoteObjectIDs:this._handlers.length>0,objectTypes:t,quoteIDs:e}),this._proxy.sendRequest(),this._dialog.wcfDialog("close")}},_submit:function(){if(this._supportPaste&&this._removeOnSubmit.length>0){var e=this._form.find(".formSubmit");for(var t in this._removeOnSubmit)$('<input type="hidden" name="__removeQuoteIDs[]" value="'+this._removeOnSubmit[t]+'" />').appendTo(e)}},getQuotesMarkedForRemoval:function(){return this._removeOnSubmit},markQuotesForRemoval:function(){this._removeOnSubmit.length&&(this._proxy.setOption("data",{actionName:"markForRemoval",quoteIDs:this._removeOnSubmit}),this._proxy.suppressErrors(),this._proxy.sendRequest())},removeMarkedQuotes:function(){this._removeOnSubmit.length&&(this._proxy.setOption("data",{actionName:"removeMarkedQuotes",getFullQuoteObjectIDs:this._handlers.length>0}),this._proxy.sendRequest())},countQuotes:function(){var e=[];for(var t in this._handlers)e.push(t);this._proxy.setOption("data",{actionName:"count",getFullQuoteObjectIDs:e.length>0,objectTypes:e}),this._proxy.sendRequest()},_success:function(e){if(null!==e){if(void 0!==e.count){var t=void 0!==e.fullQuoteObjectIDs?e.fullQuoteObjectIDs:{};this.updateCount(e.count,t)}void 0!==e.template&&(""==$.trim(e.template)?this.updateCount(0,{}):this.renderDialog(e.template))}},supportPaste:function(){return this._supportPaste}}),WCF.Message.Share={},WCF.Message.Share.Content=Class.extend({_cache:{},_dialog:null,init:function(){this._cache={},this._dialog=null,this._initLinks(),WCF.DOMNodeInsertedHandler.addCallback("WCF.Message.Share.Content",$.proxy(this._initLinks,this))},_initLinks:function(){$("a.jsButtonShare").removeClass("jsButtonShare").click($.proxy(this._click,this))},_click:function(e){e.preventDefault();var t=$(e.currentTarget),i=t.prop("href"),s=t.data("linkTitle")?t.data("linkTitle"):i,n=i.hashCode();if(void 0===this._cache[n]){var a=!1;null===this._dialog?(this._dialog=$("<div />").hide().appendTo(document.body),a=!0):this._dialog.empty();var o=$('<fieldset><legend><label for="__sharePermalink">'+WCF.Language.get("wcf.message.share.permalink")+"</label></legend></fieldset>").appendTo(this._dialog);$('<input type="text" id="__sharePermalink" class="long" readonly="readonly" />').attr("value",i).appendTo(o);var o=$('<fieldset><legend><label for="__sharePermalinkBBCode">'+WCF.Language.get("wcf.message.share.permalink.bbcode")+"</label></legend></fieldset>").appendTo(this._dialog);$('<input type="text" id="__sharePermalinkBBCode" class="long" readonly="readonly" />').attr("value","[url='"+i+"']"+s+"[/url]").appendTo(o);var o=$('<fieldset><legend><label for="__sharePermalinkHTML">'+WCF.Language.get("wcf.message.share.permalink.html")+"</label></legend></fieldset>").appendTo(this._dialog);$('<input type="text" id="__sharePermalinkHTML" class="long" readonly="readonly" />').attr("value",'<a href="'+i+'">'+WCF.String.escapeHTML(s)+"</a>").appendTo(o),this._cache[n]=this._dialog.html(),this._dialog.wcfDialog(a?{title:WCF.Language.get("wcf.message.share")}:"open")}else this._dialog.html(this._cache[n]).wcfDialog("open");this._enableSelection()},_enableSelection:function(){var e=this._dialog.find("input").click(function(){$(this).select()});navigator.userAgent.match(/iP(ad|hone|od)/)&&e.keydown(function(){return!1}).removeAttr("readonly").click(function(){this.setSelectionRange(0,9999)})}}),WCF.Message.Share.Page=Class.extend({_dialog:null,_fetchObjectCount:!1,_pageDescription:"",_pageURL:"",_privacySettings:{},_provider:{},_proxy:null,init:function(e,t){this._dialog=null,this._fetchObjectCount=e===!0?!0:!1,this._pageDescription=encodeURIComponent($('meta[property="og:title"]').prop("content")),this._pageURL=encodeURIComponent($('meta[property="og:url"]').prop("content")),this._privacySettings=$.extend({facebook:!1,google:!1,twitter:!1,reddit:!1},t||{}),this._proxy=null,this._initProvider()},_initProvider:function(){var e=$(".messageShareButtons"),t=this;if(this._provider={facebook:{fetch:function(){t._fetchFacebook()},link:e.find(".jsShareFacebook"),share:function(){t._share("facebook","https://www.facebook.com/sharer.php?u={pageURL}&t={text}",!0)}},google:{fetch:void 0,link:e.find(".jsShareGoogle"),share:function(){t._share("google","https://plus.google.com/share?url={pageURL}",!0)}},reddit:{fetch:function(){t._fetchReddit()},link:e.find(".jsShareReddit"),share:function(){t._share("reddit","https://ssl.reddit.com/submit?url={pageURL}",!0)}},twitter:{fetch:void 0,link:e.find(".jsShareTwitter"),share:function(){t._share("twitter","https://twitter.com/share?url={pageURL}&text={text}",!1)}}},$.each(this._provider,function(e,i){t._privacySettings[e]?t._fetchObjectCount&&i.fetch&&i.fetch():i.link.addClass("disabled"),i.link.data("provider",e).click($.proxy(t._click,t))}),WCF.User.userID&&!e.find(".jsShowPrivacySettings").length){var i=$('<li class="jsShowPrivacySettings"><a><span class="icon icon32 fa-gear jsTooltip" title="'+WCF.Language.get("wcf.message.share.privacy")+'" /></a></li>');i.appendTo(e.children("ul")).children("a").click($.proxy(this._openPrivacySettings,this))}},_click:function(e){var t=$(e.currentTarget),i=t.data("provider");t.hasClass("disabled")?WCF.User.userID?this._openPrivacySettings():t.removeClass("disabled"):this._provider[i].share()},_openPrivacySettings:function(){null===this._proxy&&(this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)})),this._proxy.setOption("data",{actionName:"getSocialNetworkPrivacySettings",className:"wcf\\data\\user\\UserAction"}),this._proxy.sendRequest()},_success:function(e){switch(e.actionName){case"getSocialNetworkPrivacySettings":this._renderDialog(e);break;case"saveSocialNetworkPrivacySettings":this._updatePrivacySettings(e)}},_renderDialog:function(e){null===this._dialog?(this._dialog=$("<div />").hide().appendTo(document.body),this._dialog.html(e.returnValues.template),this._dialog.wcfDialog({title:WCF.Language.get("wcf.message.share.privacy")})):(this._dialog.html(e.returnValues.template),this._dialog.wcfDialog("open")),this._dialog.find("input[type=submit]").click($.proxy(this._save,this))},_save:function(){this._proxy.setOption("data",{actionName:"saveSocialNetworkPrivacySettings",className:"wcf\\data\\user\\UserAction",parameters:{facebook:this._dialog.find("input[name=facebook]").is(":checked"),google:this._dialog.find("input[name=google]").is(":checked"),reddit:this._dialog.find("input[name=reddit]").is(":checked"),twitter:this._dialog.find("input[name=twitter]").is(":checked")}}),this._proxy.sendRequest(),this._dialog.wcfDialog("close")},_updatePrivacySettings:function(e){this._privacySettings=$.extend(this._privacySettings,e.returnValues.settings);var t=this;$.each(e.returnValues.settings,function(e,i){t._privacySettings[e]=i?!0:!1,i?(t._provider[e].link.removeClass("disabled"),t._fetchObjectCount&&t._provider[e].fetch&&t._provider[e].fetch()):t._provider[e].link.addClass("disabled")}),(new WCF.System.Notification).show()},_share:function(e,t,i){window.open(t.replace(/{pageURL}/,this._pageURL).replace(/{text}/,this._pageDescription+(i?" "+this._pageURL:"")),e,"height=600,width=600")},_fetchCount:function(e,t,i){var s={autoSend:!0,dataType:"jsonp",showLoadingOverlay:!1,success:t,suppressErrors:!0,type:"GET",url:e.replace(/{pageURL}/,this._pageURL)};i&&(s.jsonp=i),new WCF.Action.Proxy(s)},_fetchFacebook:function(){this._fetchCount("https://graph.facebook.com/fql?q=SELECT%20share_count%20FROM%20link_stat%20WHERE%20url=%27{pageURL}%27",$.proxy(function(e){e.data[0].share_count&&this._provider.facebook.link.children("span.badge").show().text(e.data[0].share_count)},this))},_fetchReddit:function(){window.location.protocol.match(/^https/)||this._fetchCount("http://www.reddit.com/api/info.json?url={pageURL}",$.proxy(function(e){e.data.children.length&&this._provider.reddit.link.children("span.badge").show().text(e.data.children[0].data.score)},this),"jsonp")}}),WCF.Message.UserMention=Class.extend({_caretPosition:null,_className:"wcf\\data\\user\\UserAction",_dropdown:null,_dropdownMenu:null,_itemIndex:-1,_lineHeight:null,_mentionStart:"",_redactor:null,_timer:null,init:function(e){$.browser.mobile&&$.browser.mozilla||(this._textarea=$("#"+e),this._redactor=this._textarea.redactor("core.getObject"),this._dropdown=this._textarea.redactor("core.getEditor"),this._dropdownMenu=$('<ul class="dropdownMenu userSuggestionList" />').appendTo(this._textarea.parent()),WCF.Dropdown.initDropdownFragment(this._dropdown,this._dropdownMenu),this._proxy=new WCF.Action.Proxy({autoAbortPrevious:!0,success:$.proxy(this._success,this)}),WCF.System.Event.addListener("com.woltlab.wcf.redactor","keydown_"+e,$.proxy(this._keydown,this)),WCF.System.Event.addListener("com.woltlab.wcf.redactor","keyup_"+e,$.proxy(this._keyup,this)))},_clearList:function(){this._hideList(),this._dropdownMenu.empty()},_click:function(e){if($.browser.mozilla&&"P"==this._caretPosition.startContainer.nodeName){var t=this._caretPosition.startContainer.childNodes[this._caretPosition.startOffset-1];this._caretPosition=document.createRange(),this._caretPosition.selectNodeContents(t),this._caretPosition.collapse()}this._redactor.wutil.replaceRangesWith(this._caretPosition),this._setUsername($(e.currentTarget).data("username"))},_createListItem:function(e){var t=$("<li />").data("username",e.label).click($.proxy(this._click,this)).appendTo(this._dropdownMenu),i=$("<div />").addClass("box16").appendTo(t);i.append($(e.icon).addClass("framed")),i.append($("<div />").append($("<span />").text(e.label)))},_getDropdownMenuPosition:function(){var e=getSelection().getRangeAt(0).cloneRange(),t=document.createRange();t.setStart(e.startContainer,e.startOffset-(this._mentionStart.length+1)),t.setEnd(e.startContainer,e.startOffset),this._redactor.wutil.replaceRangesWith(t);var i=getSelection().getRangeAt(0),s=i.getBoundingClientRect(),n=$(window),a={top:Math.round(s.bottom)+n.scrollTop(),left:Math.round(s.left)+n.scrollLeft()};return null===this._lineHeight&&(this._lineHeight=Math.round(s.bottom-s.top)),this._redactor.wutil.replaceRangesWith(e),this._caretPosition=e,a},_setUsername:function(e){null!==this._timer&&(this._timer.stop(),this._timer=null),this._proxy.abortPrevious();var t=getSelection().getRangeAt(0).cloneRange();this._redactor.buffer.set();var i=t.startContainer,s=t.startOffset;"LI"===i.nodeName&&1===s&&(i=i.lastChild,s=i.textContent.length-1),s-=this._mentionStart.length+1,0>s&&(i=i.previousSibling,s=i.length-(this._mentionStart.length+1)-(t.startOffset-1));var n=document.createRange();n.setStart(i,s),n.setEnd(t.startContainer,t.startOffset),this._redactor.wutil.replaceRangesWith(n);var a=getSelection().getRangeAt(0);a.deleteContents(),a.collapse(!0),-1!==e.indexOf("'")&&(e=e.replace(/'/g,"''")),e="'"+e+"'";var o=document.createTextNode("@"+e);a.insertNode(o),n=document.createRange(),n.setStart(o,e.length+1),n.setEnd(o,e.length+1),this._redactor.wutil.replaceRangesWith(n),this._hideList()},_getParameters:function(){return{data:{includeUserGroups:!1,searchString:this._mentionStart}}},_getTextLineInFrontOfCaret:function(){if(this._redactor.selection.getHtml().length)return"";var e=getSelection().getRangeAt(0);$.browser.mozilla&&3==e.startContainer.nodeType&&e.startContainer.parentNode.normalize();var t=e.startContainer.textContent.substr(0,e.startOffset),i=t;t="";for(var s=!1,n=0;n<i.length;n++){var a=i.charCodeAt(n).toString(16);"200b"==a||/\s/.test(i[n])&&("a0"!=a&&"20"!=a||s)?(s=!1,t=""):(("a0"==a||"20"==a)&&(s=!0),"@"===i[n]&&n&&/\s/.test(i[n-1])&&(s=!1,t=""),t+=i[n])}return t},_hideList:function(){this._dropdown.removeClass("dropdownOpen"),this._dropdownMenu.removeClass("dropdownOpen"),this._itemIndex=-1},_keydown:function(e){if(!this._redactor.wutil.inPlainMode()&&this._dropdownMenu.is(":visible"))switch(e.event.which){case $.ui.keyCode.ENTER:e.event.preventDefault(),e.cancel=!0,this._dropdownMenu.children("li").eq(this._itemIndex).trigger("click");break;case $.ui.keyCode.UP:e.cancel=!0,e.event.preventDefault(),this._selectItem(this._itemIndex-1);break;case $.ui.keyCode.DOWN:e.cancel=!0,e.event.preventDefault(),this._selectItem(this._itemIndex+1)}},_keyup:function(e){if(this._redactor.wutil.inPlainMode())return!0;if(null!==this._timer&&(this._timer.stop(),this._timer=null),this._proxy.abortPrevious(),e.event.which!==$.ui.keyCode.ENTER&&!(this._dropdownMenu.is(":visible")&&e.event.which in{13:1,38:1,40:1})){var t=this._getTextLineInFrontOfCaret();if(t){var i=t.match(/@([^,]{3,})$/);i?(!i.index||t[i.index-1].match(/\s/))&&(this._mentionStart=i[1],null!==this._timer&&this._timer.stop(),this._timer=new WCF.PeriodicalExecuter($.proxy(function(){this._proxy.setOption("data",{actionName:"getSearchResultList",className:this._className,interfaceName:"wcf\\data\\ISearchAction",parameters:this._getParameters()}),this._proxy.sendRequest(),this._timer.stop(),this._timer=null},this),500)):this._hideList()}else this._hideList()}},_selectItem:function(e){var t=this._dropdownMenu.children("li");0>e?e=t.length-1:e+1>t.length&&(e=0),t.removeClass("dropdownNavigationItem"),t.eq(e).addClass("dropdownNavigationItem"),this._itemIndex=e},_showList:function(){this._dropdown.addClass("dropdownOpen"),this._dropdownMenu.addClass("dropdownOpen")},_success:function(e){if(this._clearList(!1),$.getLength(e.returnValues)){for(var t in e.returnValues){var i=e.returnValues[t];this._createListItem(i)}this._updateSuggestionListPosition(),this._showList()}},_updateSuggestionListPosition:function(){try{var e=this._getDropdownMenuPosition();e.top+=5,this._dropdownMenu.css(e),this._selectItem(0),e.top+this._dropdownMenu.outerHeight()+10>$(window).height()+$(document).scrollTop()?(this._dropdownMenu.addClass("dropdownArrowBottom"),this._dropdownMenu.css({top:e.top-this._dropdownMenu.outerHeight()-2*this._lineHeight+5})):this._dropdownMenu.removeClass("dropdownArrowBottom")}catch(e){}}}),$.widget("wcf.messageTabMenu",{_tabs:[],_tabsByName:{},options:{collapsible:!0},_create:function(){var e=this.element.find("> nav > ul > li:not(.jsFlexibleMenuDropdown)"),t=this.element.find("> div, > fieldset");if(e.length!=t.length)return void console.debug("[wcf.messageTabMenu] Amount of tabs does not equal amount of tab containers, aborting.");var i=this.element.data("preselect");this._tabs=[],this._tabsByName={};for(var s=0;s<e.length;s++){var n=$(e[s]),a=$(t[s]),o=n.data("name");if(void 0===o){var r=n.children("a").prop("href");void 0!==r&&r.match(/#([a-zA-Z_-]+)$/)&&(o=RegExp.$1),void 0===o&&(o=n.wcfIdentify(),console.debug("[wcf.messageTabMenu] Missing name attribute, assuming generic ID '"+o+"'"))}this._tabs.push({container:a,name:o,tab:n}),this._tabsByName[o]=s;var l=n.children("a").data("index",s).click($.proxy(this._showTab,this));i==o&&l.trigger("click")}i===!0&&this._tabs.length&&this._tabs[0].tab.children("a").trigger("click");var c=this.element.data("collapsible");void 0!==c&&(this.options.collapsible=c)},destroy:function(){$.Widget.prototype.destroy.apply(this,arguments),this.element.remove()},_showTab:function(e,t,i){var s=null===e?t:$(e.currentTarget).data("index");i=this.options.collapsible&&i!==!0?!1:!0;for(var n=null,a=0;a<this._tabs.length;a++){var o=this._tabs[a];if(a==s){if(!o.tab.hasClass("active")){o.tab.addClass("active"),o.container.addClass("active"),n=o;continue}if(i===!0)continue}o.tab.removeClass("active"),o.container.removeClass("active")}null!==e&&(e.preventDefault(),e.stopPropagation()),null!==n&&this._trigger("show",{},{activeTab:n}),$(window).trigger("resize")},showTab:function(e,t){return $.isNumeric(e)||void 0!==this._tabsByName[e]&&(e=this._tabsByName[e]),void 0===this._tabs[e]?void console.debug("[wcf.messageTabMenu] Cannot locate tab identified by '"+e+"'"):void this._showTab(null,e,t)},getTab:function(e){return void 0!==this._tabsByName[e]?this._tabs[this._tabsByName[e]].tab:null},getContainer:function(e){return void 0!==this._tabsByName[e]?this._tabs[this._tabsByName[e]].container:null}}); })(this);
 
 // WCF.Poll.js
-(function (window, undefined) { })(this);
+(function (window, undefined) {"use strict";WCF.Poll={},WCF.Poll.Management=Class.extend({_container:null,_count:0,_inputSize:0,_maxOptions:0,init:function(t,i,e){if(this._count=0,this._maxOptions=e||-1,this._container=$("#"+t).children("ol:eq(0)"),!this._container.length)return void console.debug("[WCF.Poll.Management] Invalid container id given, aborting.");i=i||[],this._createOptionList(i),$(window).resize($.proxy(this._resize,this)),this._container.parents("form").submit($.proxy(this._submit,this)),new WCF.Sortable.List(t,"",void 0,void 0,!0),this._resize();var n=this;this._container.closest(".messageTabMenu").on("messagetabmenushow",function(t,i){"poll"==i.activeTab.name&&n._resize()})},_createOptionList:function(t){for(var i=0,e=t.length;e>i;i++){var n=t[i];this._createOption(n.optionValue,n.optionID)}this._createOption()},_createOption:function(t,i,e){t=t||"",i=parseInt(i)||0,e=e||null;var n=$('<li class="sortableNode" />').data("optionID",i);null===e?n.appendTo(this._container):n.insertAfter(e);var o=$('<span class="sortableButtonContainer" />').appendTo(n);$('<span class="icon icon16 icon-plus jsTooltip jsAddOption pointer" title="'+WCF.Language.get("wcf.poll.button.addOption")+'" />').click($.proxy(this._addOption,this)).appendTo(o),$('<span class="icon icon16 icon-remove jsTooltip jsDeleteOption pointer" title="'+WCF.Language.get("wcf.poll.button.removeOption")+'" />').click($.proxy(this._removeOption,this)).appendTo(o);var s=$('<input type="text" value="'+t+'" maxlength="255" />').css({width:this._inputSize+"px"}).keydown($.proxy(this._keyDown,this)).appendTo(n);s.click(function(){document.activeElement!==this&&this.focus()}),null!==e&&s.focus(),WCF.DOMNodeInsertedHandler.execute(),this._count++,this._count===this._maxOptions&&this._container.find("span.jsAddOption").removeClass("pointer").addClass("disabled")},_keyDown:function(t){return 13!==t.which?!0:($(t.currentTarget).prev(".sortableButtonContainer").children(".jsAddOption").trigger("click"),t.preventDefault(),t.stopPropagation(),!1)},_addOption:function(t){if(this._count===this._maxOptions)return!1;var i=$(t.currentTarget).parents("li");this._createOption(void 0,void 0,i)},_removeOption:function(t){$(t.currentTarget).parents("li").remove(),this._count--,this._container.find("span.jsAddOption").addClass("pointer").removeClass("disabled"),0==this._container.children("li").length&&this._createOption()},_resize:function(){var t=this._container.innerWidth(),i=this._container.children("li:eq(0)"),e=i.children(".sortableButtonContainer").outerWidth(),n=t-e;n!=this._inputSize&&(this._inputSize=n,this._container.find("li > input").css({width:this._inputSize+"px"}))},_submit:function(){var t=[];if(this._container.children("li").each(function(i,e){var n=$(e),o=$.trim(n.children("input").val());""!=o&&t.push({optionID:n.data("optionID"),optionValue:o})}),t.length)for(var i=this._container.parents("form").find(".formSubmit"),e=0,n=t.length;n>e;e++){var o=t[e];$('<input type="hidden" name="pollOptions['+e+']" />').val(o.optionID+"_"+o.optionValue).appendTo(i)}}}),WCF.Poll.Manager=Class.extend({_cache:{},_canViewParticipants:{},_canViewResult:{},_canVote:{},_inputElements:{},_participants:{},_polls:{},_proxy:null,init:function(t){var i=$(t);if(!i.length)return void console.debug("[WCF.Poll.Manager] Given selector '"+t+"' does not match, aborting.");this._cache={},this._canViewParticipants={},this._canViewResult={},this._inputElements={},this._participants={},this._polls={},this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this),url:"index.php/Poll/?t="+SECURITY_TOKEN+SID_ARG_2ND});var e=this;i.each(function(t,i){var n=$(i),o=n.data("pollID");void 0===e._polls[o]&&(e._cache[o]={result:"",vote:""},e._polls[o]=n,e._canViewParticipants[o]=n.data("canViewParticipants")?!0:!1,e._canViewResult[o]=n.data("canViewResult")?!0:!1,e._canVote[o]=n.data("canVote")?!0:!1,e._bindListeners(o),n.data("inVote")&&e._prepareVote(o),e._toggleButtons(o))})},_bindListeners:function(t){this._polls[t].find(".jsButtonPollShowParticipants").data("pollID",t).click($.proxy(this._showParticipants,this)),this._polls[t].find(".jsButtonPollShowResult").data("pollID",t).click($.proxy(this._showResult,this)),this._polls[t].find(".jsButtonPollShowVote").data("pollID",t).click($.proxy(this._showVote,this)),this._polls[t].find(".jsButtonPollVote").data("pollID",t).click($.proxy(this._vote,this))},_showResult:function(t,i){var e=null===t?i:$(t.currentTarget).data("pollID");this._canViewResult[e]&&this._polls[e].data("inVote")&&(this._cache[e].result?(this._polls[e].find(".pollInnerContainer").html(this._cache[e].result),this._polls[e].data("inVote",!1),this._toggleButtons(e)):(this._proxy.setOption("data",{actionName:"getResult",pollID:e}),this._proxy.sendRequest()))},_showParticipants:function(t){var i=$(t.currentTarget).data("pollID");this._participants[i]||(this._participants[i]=new WCF.User.List("wcf\\data\\poll\\PollAction",this._polls[i].data("question"),{pollID:i})),this._participants[i].open()},_showVote:function(t,i){var e=null===t?i:$(t.currentTarget).data("pollID");this._canVote[e]&&(this._polls[e].data("inVote")||(this._cache[e].vote?(this._polls[e].find(".pollInnerContainer").html(this._cache[e].vote),this._polls[e].data("inVote",!0),this._prepareVote(e),this._toggleButtons(e)):(this._proxy.setOption("data",{actionName:"getVote",pollID:e}),this._proxy.sendRequest())))},_success:function(t){if(t&&t.actionName){var i=t.pollID;switch(t.resultTemplate&&(this._cache[i].result=t.resultTemplate),t.voteTemplate&&(this._cache[i].vote=t.voteTemplate),t.actionName){case"getResult":this._showResult(null,i);break;case"getVote":this._showVote(null,i);break;case"vote":this._canViewResult[i]=!0,this._canVote[i]=t.canVote?!0:!1,this._showResult(null,i)}}},_prepareVote:function(t){this._polls[t].find(".jsButtonPollVote").disable();var i=this._polls[t].find(".pollInnerContainer > .jsPollVote"),e=this;this._inputElements[t]=i.find("input").change(function(){e._handleVoteButton(t)}),this._handleVoteButton(t);var n=i.data("maxVotes");this._inputElements[t].filter("[type=checkbox]").length&&(this._inputElements[t].change(function(){e._enforceMaxVotes(t,n)}),this._enforceMaxVotes(t,n))},_enforceMaxVotes:function(t,i){var e=this._inputElements[t];e.filter(":checked").length==i?e.filter(":not(:checked)").disable():e.enable()},_handleVoteButton:function(t){var i=this._inputElements[t],e=this._polls[t].find(".jsButtonPollVote");i.filter(":checked").length?e.enable():e.disable()},_toggleButtons:function(t){var i=this._polls[t].children(".formSubmit");i.find(".jsButtonPollShowParticipants, .jsButtonPollShowResult, .jsButtonPollShowVote, .jsButtonPollVote").hide();var e=!0;this._polls[t].data("inVote")?(e=!1,i.find(".jsButtonPollVote").show(),this._canViewResult[t]&&i.find(".jsButtonPollShowResult").show()):(this._canVote[t]&&(e=!1,i.find(".jsButtonPollShowVote").show()),this._canViewParticipants[t]&&(e=!1,i.find(".jsButtonPollShowParticipants").show())),e&&i.hide()},_vote:function(t){var i=$(t.currentTarget).data("pollID");if(this._canVote[i]){var e=[];this._inputElements[i].each(function(t,i){var n=$(i);n.is(":checked")&&e.push(n.data("optionID"))}),e.length&&(this._proxy.setOption("data",{actionName:"vote",optionIDs:e,pollID:i}),this._proxy.sendRequest())}}}); })(this);
 
 // WCF.Search.Message.js
-(function (window, undefined) { })(this);
+(function (window, undefined) {"use strict";WCF.Search.Message={},WCF.Search.Message.KeywordList=WCF.Search.Base.extend({_className:"wcf\\data\\search\\keyword\\SearchKeywordAction",_divider:null,_forceSubmit:!1,init:function(e,i,t){if(!$.isFunction(i))return void console.debug("[WCF.Search.Message.KeywordList] The given callback is invalid, aborting.");this._callback=i,this._excludedSearchValues=[],t&&(this._excludedSearchValues=t),this._searchInput=$(e).keyup($.proxy(this._keyUp,this)).keydown($.proxy(function(e){13===e.which&&this._itemCount&&-1!==this._itemIndex&&e.preventDefault()},this));var s=WCF.Dropdown.getDropdownMenu(this._searchInput.parents(".dropdown").wcfIdentify()),r=s.find("li.dropdownDivider").last();this._divider=$('<li class="dropdownDivider" />').hide().insertBefore(r),this._list=$('<li class="dropdownList"><ul /></li>').hide().insertBefore(r).children("ul"),s.find("input, label").on("click",function(e){e.stopPropagation()}),this._proxy=new WCF.Action.Proxy({showLoadingOverlay:!1,success:$.proxy(this._success,this)})},_createListItem:function(e){this._divider.show(),this._list.parent().show(),this._super(e)},_clearList:function(e){e&&this._searchInput.val(""),this._divider.hide(),this._list.empty().parent().hide(),WCF.CloseOverlayHandler.removeCallback("WCF.Search.Base"),this._itemCount=0,this._itemIndex=-1}}),WCF.Search.Message.SearchArea=Class.extend({_searchArea:null,init:function(e){this._searchArea=e;var i=new WCF.Search.Message.KeywordList(this._searchArea.find("input[type=search]"),$.proxy(this._callback,this));i.setDelay(500);var t=this,s=this._searchArea.find("input[type=search]");if(this._searchArea.click(function(e){return e.target==t._searchArea[0]?(s.focus().trigger("click"),!1):void 0}),this._searchArea.hasClass("dropdown")){var r=this._searchArea.wcfIdentify(),a=this._searchArea.find("form");a.submit(function(){var e=WCF.Dropdown.getDropdownMenu(r);e.find("input[type=hidden]").appendTo(a),e.find("input[type=checkbox]:checked").each(function(e,i){var t=$(i);$('<input type="hidden" name="'+t.attr("name")+'" value="'+t.attr("value")+'" />').appendTo(a)})})}},_callback:function(e){return this._searchArea.find("input[type=search]").val(e.label),this._searchArea.find("form").submit(),!1}}); })(this);
 
 // WCF.Tagging.js
-(function (window, undefined) { })(this);
+(function (window, undefined) {"use strict";WCF.Tagging={},WCF.Tagging.TagList=WCF.EditableItemList.extend({_className:"wcf\\data\\tag\\TagAction",_maxLength:0,init:function(t,a,i){this._allowCustomInput=!0,this._maxLength=i,this._super(t,a),this._data=[],this._search=new WCF.Tagging.TagSearch(this._searchInput,$.proxy(this.addItem,this)),this._itemList.addClass("tagList"),$(t).data("__api",this)},_keyDown:function(t){if(this._super(t)){if(null===t)return!0;var a=t.which;return 8===a||27===a||13===a||46===a?!0:a>36&&41>a?!0:this._searchInput.val().length>=this._maxLength?!1:!0}return!1},_submit:function(){this._super();for(var t=0,a=this._data.length;a>t;t++)this._data[t]&&$('<input type="hidden" name="tags[]" />').val(this._data[t]).appendTo(this._form)},addItem:function(t){if(!t.objectID&&t.label.length>this._maxLength&&(t.label=t.label.substr(0,this._maxLength)),WCF.inArray(t.label,this._data))return!0;var a=$('<li class="badge tag">'+WCF.String.escapeHTML(t.label)+"</li>").data("objectID",t.objectID).data("label",t.label).appendTo(this._itemList);return a.click($.proxy(this._click,this)),this._search&&this._search.addExcludedSearchValue(t.label),this._addItem(t.objectID,t.label),!0},_addItem:function(t,a){this._data.push(a)},clearList:function(){this._super(),this._data=[]},getTags:function(){return this._data},_removeItem:function(t,a){for(var i=0,e=this._data.length;e>i;i++)if(this._data[i]===a)return void this._data.splice(i,1)},load:function(t){if(t&&t.length)for(var a=0,i=t.length;i>a;a++)this.addItem({objectID:0,label:WCF.String.unescapeHTML(t[a])})}}),WCF.Tagging.TagSearch=WCF.Search.Base.extend({_className:"wcf\\data\\tag\\TagAction",init:function(t,a,i,e){this._super(t,a,i,e,!1)}}); })(this);
 
 // WCF.User.js
-(function (window, undefined) { })(this);
+(function (window, undefined) {"use strict";WCF.User.Login=Class.extend({_loginSubmitButton:null,_password:null,_passwordContainer:null,_useCookies:null,_useCookiesContainer:null,init:function(t){this._loginSubmitButton=$("#loginSubmitButton"),this._password=$("#password"),this._passwordContainer=this._password.parents("dl"),this._useCookies=$("#useCookies"),this._useCookiesContainer=this._useCookies.parents("dl");var e=$("#loginForm");e.find("input[name=action]").change($.proxy(this._change,this)),t&&WCF.User.QuickLogin.init()},_change:function(t){"register"===$(t.currentTarget).val()?this._setState(!1,WCF.Language.get("wcf.user.button.register")):this._setState(!0,WCF.Language.get("wcf.user.button.login"))},_setState:function(t,e){t?(this._password.enable(),this._passwordContainer.removeClass("disabled"),this._useCookies.enable(),this._useCookiesContainer.removeClass("disabled")):(this._password.disable(),this._passwordContainer.addClass("disabled"),this._useCookies.disable(),this._useCookiesContainer.addClass("disabled")),this._loginSubmitButton.val(e)}}),WCF.User.Panel={},WCF.User.Panel.Abstract=Class.extend({_badge:null,_dropdown:null,_identifier:"",_loadData:!0,_markAllAsReadLink:null,_options:{},_proxy:null,_triggerElement:null,init:function(t,e,i){if(this._dropdown=null,this._loadData=!0,this._identifier=e,this._triggerElement=t,this._options=i,this._proxy=new WCF.Action.Proxy({showLoadingOverlay:!1,success:$.proxy(this._success,this)}),this._triggerElement.click($.proxy(this.toggle,this)),this._options.showAllLink&&this._triggerElement.dblclick($.proxy(this._dblClick,this)),this._options.staticDropdown===!0)this._loadData=!1;else{var s=this._triggerElement.find("span.badge");s.length&&(this._badge=s)}},toggle:function(t){if(t.preventDefault(),null===this._dropdown&&(this._dropdown=this._initDropdown()),this._dropdown.toggle()){if(!this._loadData&&null!==this._badge){var e=parseInt(this._badge.text())||0;e&&!this._dropdown.getItemList().children(".interactiveDropdownItemOutstanding").length&&(this._loadData=!0)}this._loadData&&(this._loadData=!1,this._load())}return!1},_dblClick:function(t){return t.preventDefault(),window.location=this._options.showAllLink,!1},_initDropdown:function(){var t=WCF.Dropdown.Interactive.Handler.create(this._triggerElement,this._identifier,this._options);return $('<li class="loading"><span class="icon icon24 fa-spinner" /> <span>'+WCF.Language.get("wcf.global.loading")+"</span></li>").appendTo(t.getItemList()),t},_load:function(){},_success:function(t){if(void 0!==t.returnValues.template){var e=this._dropdown.getItemList().empty();if($(t.returnValues.template).appendTo(e),e.children().length||$('<li class="noItems">'+this._options.noItems+"</li>").appendTo(e),this._options.enableMarkAsRead){var i=this._dropdown.getItemList().children(".interactiveDropdownItemOutstanding");if(null===this._markAllAsReadLink&&i.length&&this._options.markAllAsReadConfirmMessage){var s=this._markAllAsReadLink=$('<li class="interactiveDropdownItemMarkAllAsRead"><a href="#" title="'+WCF.Language.get("wcf.user.panel.markAllAsRead")+'" class="jsTooltip"><span class="icon icon16 fa-check" /></a></li>').appendTo(this._dropdown.getLinkList());s.click(function(){return this._dropdown.close(),WCF.System.Confirmation.show(this._options.markAllAsReadConfirmMessage,function(t){"confirm"===t&&this._markAllAsRead()}.bind(this)),!1}.bind(this))}i.each(function(t,e){var i=$(e).addClass("interactiveDropdownItemOutstandingIcon"),s=i.data("objectID"),a=$('<div class="interactiveDropdownItemMarkAsRead"><a href="#" title="'+WCF.Language.get("wcf.user.panel.markAsRead")+'" class="jsTooltip"><span class="icon icon16 fa-check" /></a></div>').appendTo(i);a.click(function(t){return this._markAsRead(t,s),!1}.bind(this))}.bind(this))}this._dropdown.getItemList().children().each(function(t,e){var i=$(e),s=i.data("link");s&&($.browser.msie?i.click(function(t){return"A"!==t.target.tagName?(window.location=s,!1):void 0}):(i.addClass("interactiveDropdownItemShadow"),$('<a href="'+s+'" class="interactiveDropdownItemShadowLink" />').appendTo(i)),i.data("linkReplaceAll")&&i.find("> .box32 a:not(.userLink)").prop("href",s))}),this._dropdown.rebuildScrollbar()}if(void 0!==t.returnValues.totalCount&&this.updateBadge(t.returnValues.totalCount),this._options.enableMarkAsRead)if(t.returnValues.markAsRead){var a=this._dropdown.getItemList().children("li[data-object-id="+t.returnValues.markAsRead+"]");a.length&&(a.removeClass("interactiveDropdownItemOutstanding").data("isRead",!0),a.children(".interactiveDropdownItemMarkAsRead").remove())}else t.returnValues.markAllAsRead&&(this.resetItems(),this.updateBadge(0))},_markAsRead:function(){},_markAllAsRead:function(){},updateBadge:function(t){t=parseInt(t)||0,t?(null===this._badge&&(this._badge=$('<span class="badge badgeInverse" />').appendTo(this._triggerElement.children("a")),this._badge.before(" ")),this._badge.text(t)):null!==this._badge&&(this._badge.remove(),this._badge=null),this._options.enableMarkAsRead&&(t||null===this._markAllAsReadLink||(this._markAllAsReadLink.remove(),this._markAllAsReadLink=null))},resetItems:function(){null!==this._dropdown&&this._dropdown.resetItems()}}),WCF.User.Panel.Notification=WCF.User.Panel.Abstract.extend({_favico:null,init:function(t){t.enableMarkAsRead=!0,this._super($("#userNotifications"),"userNotifications",t);try{if(this._favico=new Favico({animation:"none",type:"circle"}),null!==this._badge){var e=parseInt(this._badge.text())||0;this._favico.badge(e)}}catch(t){console.debug("[WCF.User.Panel.Notification] Failed to initialized Favico: "+t.message)}WCF.System.PushNotification.addCallback("userNotificationCount",$.proxy(this.updateUserNotificationCount,this))},_initDropdown:function(){var t=this._super();return $('<li><a href="'+this._options.settingsLink+'" title="'+WCF.Language.get("wcf.user.panel.settings")+'" class="jsTooltip"><span class="icon icon16 fa-cog" /></a></li>').appendTo(t.getLinkList()),t},_load:function(){this._proxy.setOption("data",{actionName:"getOutstandingNotifications",className:"wcf\\data\\user\\notification\\UserNotificationAction"}),this._proxy.sendRequest()},_markAsRead:function(t,e){this._proxy.setOption("data",{actionName:"markAsConfirmed",className:"wcf\\data\\user\\notification\\UserNotificationAction",objectIDs:[e]}),this._proxy.sendRequest()},_markAllAsRead:function(){this._proxy.setOption("data",{actionName:"markAllAsConfirmed",className:"wcf\\data\\user\\notification\\UserNotificationAction"}),this._proxy.sendRequest()},resetItems:function(){this._super(),this._markAllAsReadLink&&(this._markAllAsReadLink.remove(),this._markAllAsReadLink=null)},updateBadge:function(t){t=parseInt(t)||0,null!==this._favico&&this._favico.badge(t),this._super(t)},updateUserNotificationCount:function(t){null!==this._dropdown&&this._dropdown.resetItems(),this.updateBadge(t)}}),WCF.User.Panel.UserMenu=WCF.User.Panel.Abstract.extend({init:function(){this._super($("#userMenu"),"userMenu",{pointerOffset:"13px",staticDropdown:!0})}}),WCF.User.QuickLogin={_dialog:null,_loginMessage:null,init:function(){$(".loginLink").click($.proxy(this._render,this)),$("#loginForm input[name=url]").val(function(t,e){return window.location.protocol+"//"+window.location.host+e})},show:function(t){t?(null===this._loginMessage&&(this._loginMessage=$('<p class="info" />').hide().prependTo($("#loginForm > form"))),this._loginMessage.show().text(t)):null!==this._loginMessage&&this._loginMessage.hide(),this._render()},_render:function(t){void 0!==t&&t.preventDefault(),null===this._dialog?(this._dialog=$("#loginForm").wcfDialog({title:WCF.Language.get("wcf.user.login")}),this._dialog.find("#username").focus()):this._dialog.wcfDialog("open")}},WCF.User.Profile={},WCF.User.Profile.ActivityPointList={_cache:{},_dialog:null,_didInit:!1,_proxy:null,init:function(){this._didInit||(this._cache={},this._dialog=null,this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._init(),WCF.DOMNodeInsertedHandler.addCallback("WCF.User.Profile.ActivityPointList",$.proxy(this._init,this)),this._didInit=!0)},_init:function(){$(".activityPointsDisplay").removeClass("activityPointsDisplay").click($.proxy(this._click,this))},_click:function(t){t.preventDefault();var e=$(t.currentTarget).data("userID");void 0===this._cache[e]?(this._proxy.setOption("data",{actionName:"getDetailedActivityPointList",className:"wcf\\data\\user\\UserProfileAction",objectIDs:[e]}),this._proxy.sendRequest()):this._show(e)},_show:function(t){null===this._dialog?(this._dialog=$("<div>"+this._cache[t]+"</div>").hide().appendTo(document.body),this._dialog.wcfDialog({title:WCF.Language.get("wcf.user.activityPoint")})):(this._dialog.html(this._cache[t]),this._dialog.wcfDialog("open"))},_success:function(t){this._cache[t.returnValues.userID]=t.returnValues.template,this._show(t.returnValues.userID)}},WCF.User.Profile.Follow=Class.extend({_button:null,_following:!1,_proxy:null,_userID:0,init:function(t,e){this._following=e,this._userID=t,this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._createButton(),this._showButton()},_createButton:function(){this._button=$('<li id="followUser"><a href="#" class="button jsTooltip" title="'+WCF.Language.get("wcf.user.button."+(this._following?"un":"")+"follow")+'"><span class="icon icon16 icon-plus"></span> <span class="invisible">'+WCF.Language.get("wcf.user.button."+(this._following?"un":"")+"follow")+"</span></a></li>").prependTo($("#profileButtonContainer")),this._button.click($.proxy(this._execute,this))},_execute:function(t){t.preventDefault();var e=this._following?"unfollow":"follow";this._proxy.setOption("data",{actionName:e,className:"wcf\\data\\user\\follow\\UserFollowAction",parameters:{data:{userID:this._userID}}}),this._proxy.sendRequest()},_showButton:function(){this._following?this._button.find(".button").data("tooltip",WCF.Language.get("wcf.user.button.unfollow")).addClass("active").children(".icon").removeClass("icon-plus").addClass("icon-minus"):this._button.find(".button").data("tooltip",WCF.Language.get("wcf.user.button.follow")).removeClass("active").children(".icon").removeClass("icon-minus").addClass("icon-plus")},_success:function(t){this._following=t.returnValues.following,this._showButton();var e=new WCF.System.Notification;e.show()}}),WCF.User.Profile.IgnoreUser=Class.extend({_button:null,_isIgnoredUser:!1,_proxy:null,_userID:0,init:function(t,e){this._userID=t,this._isIgnoredUser=e,this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._updateButton(),this._button.click($.proxy(this._click,this))},_click:function(t){t.preventDefault();var e=this._isIgnoredUser?"unignore":"ignore";this._proxy.setOption("data",{actionName:e,className:"wcf\\data\\user\\ignore\\UserIgnoreAction",parameters:{data:{ignoreUserID:this._userID}}}),this._proxy.sendRequest()},_success:function(t){this._isIgnoredUser=t.returnValues.isIgnoredUser,this._updateButton();var e=new WCF.System.Notification;e.show()},_updateButton:function(){null===this._button&&(this._button=$('<li id="ignoreUser"><a href="#" class="button jsTooltip" title="'+WCF.Language.get("wcf.user.button."+(this._isIgnoredUser?"un":"")+"ignore")+'"><span class="icon icon16 icon-ban-circle"></span> <span class="invisible">'+WCF.Language.get("wcf.user.button."+(this._isIgnoredUser?"un":"")+"ignore")+"</span></a></li>").prependTo($("#profileButtonContainer"))),this._button.find(".button").data("tooltip",WCF.Language.get("wcf.user.button."+(this._isIgnoredUser?"un":"")+"ignore")),this._isIgnoredUser?this._button.find(".button").addClass("active").children(".icon").removeClass("icon-ban-circle").addClass("icon-circle-blank"):this._button.find(".button").removeClass("active").children(".icon").removeClass("icon-circle-blank").addClass("icon-ban-circle")}}),WCF.User.Profile.TabMenu=Class.extend({_hasContent:{},_profileContent:null,_proxy:null,_userID:0,init:function(t){this._profileContent=$("#profileContent"),this._userID=t;var e=this._profileContent.data("active"),i=!1;this._profileContent.find("div.tabMenuContent").each($.proxy(function(t,s){var a=$(s).wcfIdentify();e===a?this._hasContent[a]=!0:(this._hasContent[a]=!1,i=!0)},this)),i&&(this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._profileContent.on("wcftabsbeforeactivate",$.proxy(this._loadContent,this)),this._profileContent.find("> nav.tabMenu > ul > li").each($.proxy(function(t,e){var i=$(e);return i.hasClass("ui-state-active")?(t&&this._loadContent(null,{newPanel:$("#"+i.attr("aria-controls"))}),!1):void 0},this)))},_loadContent:function(t,e){var i=$(e.newPanel),s=i.attr("id");this._hasContent[s]||(this._proxy.setOption("data",{actionName:"getContent",className:"wcf\\data\\user\\profile\\menu\\item\\UserProfileMenuItemAction",parameters:{data:{containerID:s,menuItem:i.data("menuItem"),userID:this._userID}}}),this._proxy.sendRequest())},_success:function(t){var e=t.returnValues.containerID;this._hasContent[e]=!0;var i=this._profileContent.find("#"+e);$("<div>"+t.returnValues.template+"</div>").hide().appendTo(i),i.children("div").wcfBlindIn()}}),WCF.User.Profile.Editor=Class.extend({_actionName:"",_buttons:{},_cachedTemplate:"",_proxy:null,_tab:null,_userID:0,init:function(t,e){this._actionName="",this._cachedTemplate="",this._tab=$("#about"),this._userID=t,this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._initButtons(),e&&this._beginEdit()},_initButtons:function(){var t=$("#profileButtonContainer");this._buttons={beginEdit:$('<li><a class="button"><span class="icon icon16 icon-pencil" /> <span>'+WCF.Language.get("wcf.user.editProfile")+"</span></a></li>").click($.proxy(this._beginEdit,this)).appendTo(t)}},_beginEdit:function(){this._actionName="beginEdit",this._buttons.beginEdit.hide(),$("#profileContent").wcfTabs("select","about"),this._proxy.setOption("data",{actionName:"beginEdit",className:"wcf\\data\\user\\UserProfileAction",objectIDs:[this._userID]}),this._proxy.sendRequest()},_save:function(){this._actionName="save";var t=/values\[([a-zA-Z0-9._-]+)\]/,e={};this._tab.find("input, textarea, select").each(function(i,s){var a=$(s),n=null;switch(a.getTagName()){case"input":var o=a.attr("type");if(("radio"===o||"checkbox"===o)&&!a.prop("checked"))return;break;case"textarea":a.data("redactor")&&(n=a.redactor("wutil.getText"))}var r=a.attr("name");if(t.test(r)){var l=RegExp.$1;null===n&&(n=a.val()),"checkbox"===a.attr("type")&&/\[\]$/.test(r)?(Array.isArray(e[l])||(e[l]=[]),e[l].push(n)):e[l]=n}}),this._proxy.setOption("data",{actionName:"save",className:"wcf\\data\\user\\UserProfileAction",objectIDs:[this._userID],parameters:{values:e}}),this._proxy.sendRequest()},_restore:function(){this._actionName="restore",this._buttons.beginEdit.show(),this._destroyEditor(),this._tab.html(this._cachedTemplate).children().css({height:"auto"})},_success:function(t){switch(this._actionName){case"beginEdit":this._prepareEdit(t);break;case"save":t.returnValues.success?(this._cachedTemplate=t.returnValues.template,this._restore()):this._prepareEdit(t,!0)}},_prepareEdit:function(t,e){this._destroyEditor();var i=this;this._tab.html(function(s,a){return e!==!0&&(i._cachedTemplate=a),t.returnValues.template}),this._tab.find("input[type=text]").attr("autocomplete","off"),this._tab.find(".formSubmit > button[data-type=save]").click($.proxy(this._save,this)),this._tab.find(".formSubmit > button[data-type=restore]").click($.proxy(this._restore,this)),this._tab.find("input").keyup(function(t){return t.which===$.ui.keyCode.ENTER?(i._save(),t.preventDefault(),!1):void 0})},_destroyEditor:function(){this._tab.find("textarea").each(function(t,e){var i=$(e);i.data("redactor")&&i.redactor("core.destroy")})}}),WCF.User.Registration={},WCF.User.Registration.Validation=Class.extend({_actionName:"",_className:"",_confirmElement:null,_element:null,_errorMessages:{},_options:{},_proxy:null,init:function(t,e,i){this._element=t,this._element.blur($.proxy(this._blur,this)),this._confirmElement=e||null,null!==this._confirmElement&&this._confirmElement.blur($.proxy(this._blurConfirm,this)),i=i||{},this._setOptions(i),this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this),showLoadingOverlay:!1}),this._setErrorMessages()},_setOptions:function(){},_setErrorMessages:function(){this._errorMessages={ajaxError:"",notEqual:""}},_blur:function(){var t=this._element.val();if(!t)return this._showError(this._element,WCF.Language.get("wcf.global.form.error.empty"));if(null!==this._confirmElement){var e=this._confirmElement.val();if(""!=e&&t!=e)return this._showError(this._confirmElement,this._errorMessages.notEqual)}this._validateOptions()&&(this._proxy.setOption("data",{actionName:this._actionName,className:this._className,parameters:this._getParameters()}),this._proxy.sendRequest())},_getParameters:function(){return{}},_validateOptions:function(){return!0},_blurConfirm:function(t){var e=this._confirmElement.val();return e?void this._blur(t):this._showError(this._confirmElement,WCF.Language.get("wcf.global.form.error.empty"))},_success:function(t){t.returnValues.isValid?(this._showSuccess(this._element),null!==this._confirmElement&&this._confirmElement.val()&&this._showSuccess(this._confirmElement)):this._showError(this._element,WCF.Language.get(this._errorMessages.ajaxError+t.returnValues.error))},_showError:function(t,e){t.parent().parent().addClass("formError").removeClass("formSuccess");var i=t.parent().find("small.innerError");i.length||(i=$("<small />").addClass("innerError").insertAfter(t)),i.text(e)},_showSuccess:function(t){t.parent().parent().addClass("formSuccess").removeClass("formError"),t.next("small.innerError").remove()}}),WCF.User.Registration.Validation.Username=WCF.User.Registration.Validation.extend({_actionName:"validateUsername",_className:"wcf\\data\\user\\UserRegistrationAction",_setOptions:function(t){this._options=$.extend(!0,{minlength:3,maxlength:25},t)},_setErrorMessages:function(){this._errorMessages={ajaxError:"wcf.user.username.error."}},_validateOptions:function(){var t=this._element.val();return t.length<this._options.minlength||t.length>this._options.maxlength?(this._showError(this._element,WCF.Language.get("wcf.user.username.error.notValid")),!1):!0},_getParameters:function(){return{username:this._element.val()}}}),WCF.User.Registration.Validation.EmailAddress=WCF.User.Registration.Validation.extend({_actionName:"validateEmailAddress",_className:"wcf\\data\\user\\UserRegistrationAction",_getParameters:function(){return{email:this._element.val()}},_setErrorMessages:function(){this._errorMessages={ajaxError:"wcf.user.email.error.",notEqual:WCF.Language.get("wcf.user.confirmEmail.error.notEqual")}}}),WCF.User.Registration.Validation.Password=WCF.User.Registration.Validation.extend({_actionName:"validatePassword",_className:"wcf\\data\\user\\UserRegistrationAction",_getParameters:function(){return{password:this._element.val()}},_setErrorMessages:function(){this._errorMessages={ajaxError:"wcf.user.password.error.",notEqual:WCF.Language.get("wcf.user.confirmPassword.error.notEqual")}}}),WCF.User.Registration.LostPassword=Class.extend({_email:null,_username:null,init:function(){this._email=$("#emailInput"),this._username=$("#usernameInput"),this._email.keyup($.proxy(this._checkEmail,this)),this._username.keyup($.proxy(this._checkUsername,this)),$.browser.mozilla&&$.browser.touch&&(this._email.on("input",$.proxy(this._checkEmail,this)),this._username.on("input",$.proxy(this._checkUsername,this))),this._checkEmail(),this._checkUsername()},_checkEmail:function(){""==this._email.val()?(this._username.enable(),this._username.parents("dl:eq(0)").removeClass("disabled")):(this._username.disable(),this._username.parents("dl:eq(0)").addClass("disabled"))},_checkUsername:function(){""==this._username.val()?(this._email.enable(),this._email.parents("dl:eq(0)").removeClass("disabled")):(this._email.disable(),this._email.parents("dl:eq(0)").addClass("disabled"))}}),WCF.Notification={},WCF.Notification.List=Class.extend({_proxy:null,init:function(){this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),$(".contentNavigation .jsMarkAllAsConfirmed").click(function(){WCF.System.Confirmation.show(WCF.Language.get("wcf.user.notification.markAllAsConfirmed.confirmMessage"),function(t){"confirm"===t&&new WCF.Action.Proxy({autoSend:!0,data:{actionName:"markAllAsConfirmed",className:"wcf\\data\\user\\notification\\UserNotificationAction"},success:function(){window.location.reload()}})})}),this._convertList()},_convertList:function(){$(".userNotificationItemList > .notificationItem").each(function(t,e){var i=$(e);if(!i.data("isRead")){i.find("a:not(.userLink)").prop("href",i.data("link"));var s=$('<a href="#" class="icon icon24 fa-check notificationItemMarkAsConfirmed jsTooltip" title="'+WCF.Language.get("wcf.user.notification.markAsConfirmed")+'" />').appendTo(i);s.click($.proxy(this._markAsConfirmed,this))}i.find("a:not(.notificationItemMarkAsConfirmed)").length||i.find(".details > p:eq(0)").html(function(t,e){return'<a href="'+i.data("link")+'">'+e+"</a>"})}.bind(this)),WCF.DOMNodeInsertedHandler.execute()},_markAsConfirmed:function(t){t.preventDefault();var e=$(t.currentTarget).parents(".notificationItem:eq(0)").data("objectID");return this._proxy.setOption("data",{actionName:"markAsConfirmed",className:"wcf\\data\\user\\notification\\UserNotificationAction",objectIDs:[e]}),this._proxy.sendRequest(),!1},_success:function(t){var e=$(".userNotificationItemList > .notificationItem[data-object-id="+t.returnValues.markAsRead+"]");e.data("isRead",!0),e.find(".newContentBadge").remove(),e.find(".notificationItemMarkAsConfirmed").remove(),e.removeClass("notificationUnconfirmed")}}),WCF.User.SignaturePreview=WCF.Message.Preview.extend({_handleResponse:function(t){var e=$("#previewContainer");e.length||(e=$('<fieldset id="previewContainer"><legend>'+WCF.Language.get("wcf.global.preview")+"</legend><div></div></fieldset>").insertBefore($("#signatureContainer")).wcfFadeIn()),e.children("div").first().html(t.returnValues.message)}}),WCF.User.RecentActivityLoader=Class.extend({_container:null,_filteredByFollowedUsers:!1,_loadButton:null,_proxy:null,_userID:0,init:function(t,e){return this._container=$("#recentActivities"),this._filteredByFollowedUsers=e===!0,this._userID=t,null===this._userID||this._userID?(this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._container.children("li").length?(this._loadButton=$('<li class="recentActivitiesMore showMore"><button class="small">'+WCF.Language.get("wcf.user.recentActivity.more")+"</button></li>").appendTo(this._container),this._loadButton=this._loadButton.children("button").click($.proxy(this._click,this))):$('<li class="recentActivitiesMore showMore"><small>'+WCF.Language.get("wcf.user.recentActivity.noMoreEntries")+"</small></li>").appendTo(this._container),void(WCF.User.userID&&$(".jsRecentActivitySwitchContext .button").click($.proxy(this._switchContext,this)))):void console.debug("[WCF.User.RecentActivityLoader] Invalid parameter 'userID' given.")},_click:function(){this._loadButton.enable();var t={lastEventID:this._container.data("lastEventID"),lastEventTime:this._container.data("lastEventTime")};this._userID?t.userID=this._userID:this._filteredByFollowedUsers&&(t.filteredByFollowedUsers=1),this._proxy.setOption("data",{actionName:"load",className:"wcf\\data\\user\\activity\\event\\UserActivityEventAction",parameters:t}),this._proxy.sendRequest()},_switchContext:function(t){t.preventDefault(),$(t.currentTarget).hasClass("active")||new WCF.Action.Proxy({autoSend:!0,data:{actionName:"switchContext",className:"wcf\\data\\user\\activity\\event\\UserActivityEventAction"},success:function(){window.location.hash="#dashboardBoxRecentActivity",window.location.reload()}})},_success:function(t){t.returnValues.template?($(t.returnValues.template).insertBefore(this._loadButton.parent()),this._container.data("lastEventTime",t.returnValues.lastEventTime),this._container.data("lastEventID",t.returnValues.lastEventID),this._loadButton.enable()):($("<small>"+WCF.Language.get("wcf.user.recentActivity.noMoreEntries")+"</small>").appendTo(this._loadButton.parent()),this._loadButton.remove())}}),WCF.User.LikeLoader=Class.extend({_container:null,_likeType:"received",_likeValue:1,_loadButton:null,_noMoreEntries:null,_proxy:null,_userID:0,init:function(t){if(this._container=$("#likeList"),this._userID=t,!this._userID)return void console.debug("[WCF.User.RecentActivityLoader] Invalid parameter 'userID' given.");this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)});var e=$('<li class="likeListMore recentActivitiesMore showMore"><button class="small">'+WCF.Language.get("wcf.like.likes.more")+"</button><small>"+WCF.Language.get("wcf.like.likes.noMoreEntries")+"</small></li>").appendTo(this._container);this._loadButton=e.children("button").click($.proxy(this._click,this)),this._noMoreEntries=e.children("small").hide(),2==this._container.find("> li").length&&(this._loadButton.hide(),this._noMoreEntries.show()),$("#likeType .button").click($.proxy(this._clickLikeType,this)),$("#likeValue .button").click($.proxy(this._clickLikeValue,this))},_clickLikeType:function(t){var e=$(t.currentTarget);this._likeType!=e.data("likeType")&&(this._likeType=e.data("likeType"),$("#likeType .button").removeClass("active"),e.addClass("active"),this._reload())},_clickLikeValue:function(t){var e=$(t.currentTarget);this._likeValue!=e.data("likeValue")&&(this._likeValue=e.data("likeValue"),$("#likeValue .button").removeClass("active"),e.addClass("active"),$("#likeType > li:first-child > .button").text(WCF.Language.get("wcf.like."+(-1==this._likeValue?"dis":"")+"likesReceived")),$("#likeType > li:last-child > .button").text(WCF.Language.get("wcf.like."+(-1==this._likeValue?"dis":"")+"likesGiven")),this._container.find("> li.likeListMore button").text(WCF.Language.get("wcf.like."+(-1==this._likeValue?"dis":"")+"likes.more")),this._container.find("> li.likeListMore small").text(WCF.Language.get("wcf.like."+(-1==this._likeValue?"dis":"")+"likes.noMoreEntries")),this._reload())},_reload:function(){this._container.find("> li:not(:first-child):not(:last-child)").remove(),this._container.data("lastLikeTime",0),this._click()},_click:function(){this._loadButton.enable();var t={lastLikeTime:this._container.data("lastLikeTime"),userID:this._userID,likeType:this._likeType,likeValue:this._likeValue};this._proxy.setOption("data",{actionName:"load",className:"wcf\\data\\like\\LikeAction",parameters:t}),this._proxy.sendRequest()},_success:function(t){t.returnValues.template?($(t.returnValues.template).insertBefore(this._loadButton.parent()),this._container.data("lastLikeTime",t.returnValues.lastLikeTime),this._noMoreEntries.hide(),this._loadButton.show().enable()):(this._noMoreEntries.show(),this._loadButton.hide())}}),WCF.User.ProfilePreview=WCF.Popover.extend({_proxy:null,_userProfiles:{},init:function(){this._super(".userLink"),this._proxy=new WCF.Action.Proxy({showLoadingOverlay:!1}),WCF.System.ObjectStore.add("WCF.User.ProfilePreview",this)},_loadContent:function(){var t=$("#"+this._activeElementID),e=t.data("userID");if(this._userProfiles[e])this._insertContent(this._activeElementID,this._userProfiles[e],!0);else{this._proxy.setOption("data",{actionName:"getUserProfile",className:"wcf\\data\\user\\UserProfileAction",objectIDs:[e]});var i=this._activeElementID,s=this;this._proxy.setOption("success",function(t){s._userProfiles[e]=t.returnValues.template,s._insertContent(i,t.returnValues.template,!0)}),this._proxy.setOption("failure",function(t){return s._userProfiles[e]=t.message,s._insertContent(i,t.message,!0),!1}),this._proxy.sendRequest()}},purge:function(t){delete this._userProfiles[t],this._data={}}}),WCF.User.Action={},WCF.User.Action.Follow=Class.extend({_containerList:null,_followButtonSelector:".jsFollowButton",_userID:0,init:function(t,e){t.length&&(this._containerList=t,e&&(this._followButtonSelector=e),this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._containerList.each($.proxy(function(t,e){$(e).find(this._followButtonSelector).click($.proxy(this._click,this))},this)))},_click:function(t){t.preventDefault();var e=$(t.target);e.is("a")||(e=e.closest("a")),this._userID=e.data("objectID"),this._proxy.setOption("data",{actionName:e.data("following")?"unfollow":"follow",className:"wcf\\data\\user\\follow\\UserFollowAction",parameters:{data:{userID:this._userID}}}),this._proxy.sendRequest()},_success:function(t){this._containerList.each($.proxy(function(e,i){var s=$(i).find(this._followButtonSelector).get(0);return s&&$(s).data("objectID")==this._userID?(s=$(s),t.returnValues.following?s.data("tooltip",WCF.Language.get("wcf.user.button.unfollow")).children(".icon").removeClass("icon-plus").addClass("icon-minus"):s.data("tooltip",WCF.Language.get("wcf.user.button.follow")).children(".icon").removeClass("icon-minus").addClass("icon-plus"),s.data("following",t.returnValues.following),!1):void 0},this));var e=new WCF.System.Notification;e.show();var i=this;WCF.System.ObjectStore.invoke("WCF.User.ProfilePreview",function(t){t.purge(i._userID)})}}),WCF.User.Action.Ignore=Class.extend({_containerList:null,_ignoreButtonSelector:".jsIgnoreButton",_userID:0,init:function(t,e){t.length&&(this._containerList=t,e&&(this._ignoreButtonSelector=e),this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._containerList.each($.proxy(function(t,e){$(e).find(this._ignoreButtonSelector).click($.proxy(this._click,this))},this)))},_click:function(t){t.preventDefault();var e=$(t.target);e.is("a")||(e=e.closest("a")),this._userID=e.data("objectID"),this._proxy.setOption("data",{actionName:e.data("ignored")?"unignore":"ignore",className:"wcf\\data\\user\\ignore\\UserIgnoreAction",parameters:{data:{ignoreUserID:this._userID}}}),this._proxy.sendRequest()},_success:function(t){this._containerList.each($.proxy(function(e,i){var s=$(i).find(this._ignoreButtonSelector).get(0);return s&&$(s).data("objectID")==this._userID?(s=$(s),t.returnValues.isIgnoredUser?s.data("tooltip",WCF.Language.get("wcf.user.button.unignore")).children(".icon").removeClass("icon-ban-circle").addClass("icon-circle-blank"):s.data("tooltip",WCF.Language.get("wcf.user.button.ignore")).children(".icon").removeClass("icon-circle-blank").addClass("icon-ban-circle"),s.data("ignored",t.returnValues.isIgnoredUser),!1):void 0},this));var e=new WCF.System.Notification;e.show();var i=this;WCF.System.ObjectStore.invoke("WCF.User.ProfilePreview",function(t){t.purge(i._userID)})}}),WCF.User.Avatar={},WCF.User.Avatar.Crop=Class.extend({_cropX:0,_cropY:0,_dialog:null,_proxy:null,MAX_THUMBNAIL_SIZE:128,init:function(t){this._avatarID=t,this._dialog&&this.destroy(),this._dialog=null,this._proxy||(this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)})),$(".userAvatarCrop").click($.proxy(this._showCropDialog,this))},destroy:function(){this._dialog.remove()},_crop:function(){this._proxy.setOption("data",{actionName:"cropAvatar",className:"wcf\\data\\user\\avatar\\UserAvatarAction",objectIDs:[this._avatarID],parameters:{cropX:this._cropX,cropY:this._cropY}}),this._proxy.sendRequest()},_getCropDialog:function(t){this._dialog||(this._dialog=$("<div />").hide().appendTo(document.body),this._dialog.wcfDialog({title:WCF.Language.get("wcf.user.avatar.type.custom.crop")})),this._dialog.html(t.returnValues.template),this._dialog.find('button[data-type="save"]').click($.proxy(this._crop,this)),this._cropX=t.returnValues.cropX,this._cropY=t.returnValues.cropY;var e=$("#userAvatarCropSelection > img");$("#userAvatarCropSelection").css({height:e.height()+"px",width:e.width()+"px"}),$("#userAvatarCropOverlaySelection").css({"background-image":"url("+e.attr("src")+")","background-position":-this._cropX+"px "+-this._cropY+"px",left:this._cropX+"px",top:this._cropY+"px"}).draggable({containment:"parent",drag:$.proxy(this._updateSelection,this),stop:$.proxy(this._updateSelection,this)
+}),this._dialog.find('button[data-type="save"]').click($.proxy(this._save,this)),this._dialog.wcfDialog("render")},_showCropDialog:function(){this._dialog?this._dialog.wcfDialog("open"):(this._proxy.setOption("data",{actionName:"getCropDialog",className:"wcf\\data\\user\\avatar\\UserAvatarAction",objectIDs:[this._avatarID]}),this._proxy.sendRequest())},_success:function(t){switch(t.actionName){case"getCropDialog":this._getCropDialog(t);break;case"cropAvatar":$("#avatarUpload > dt > img").replaceWith($('<img src="'+t.returnValues.url+'" alt="" class="userAvatarCrop jsTooltip" title="'+WCF.Language.get("wcf.user.avatar.type.custom.crop")+'" />').css({width:"96px",height:"96px"}).click($.proxy(this._showCropDialog,this))),WCF.DOMNodeInsertedHandler.execute(),this._dialog.wcfDialog("close");var e=new WCF.System.Notification;e.show()}},_updateSelection:function(t,e){this._cropX=e.position.left,this._cropY=e.position.top,$("#userAvatarCropOverlaySelection").css({"background-position":-e.position.left+"px "+-e.position.top+"px"})}}),WCF.User.Avatar.Upload=WCF.Upload.extend({_avatarCrop:null,_userID:0,init:function(t,e){this._super($("#avatarUpload > dd > div"),void 0,"wcf\\data\\user\\avatar\\UserAvatarAction"),this._userID=t||0,this._avatarCrop=e,$("#avatarForm input[type=radio]").change(function(){"custom"==$(this).val()?$("#avatarUpload > dd > div").show():$("#avatarUpload > dd > div").hide()}),$("#avatarForm input[type=radio][value=custom]:checked").length||$("#avatarUpload > dd > div").hide()},_initFile:function(){return $("#avatarUpload > dt > img")},_success:function(t,e){if(e.returnValues.url){this._updateImage(e.returnValues.url,e.returnValues.canCrop),e.returnValues.canCrop?this._avatarCrop?this._avatarCrop.init(e.returnValues.avatarID):this._avatarCrop=new WCF.User.Avatar.Crop(e.returnValues.avatarID):this._avatarCrop&&(this._avatarCrop.destroy(),this._avatarCrop=null),$("#avatarUpload > dd > .innerError").remove();var i=new WCF.System.Notification(WCF.Language.get("wcf.user.avatar.upload.success"));i.show()}else e.returnValues.errorType&&this._getInnerErrorElement().text(WCF.Language.get("wcf.user.avatar.upload.error."+e.returnValues.errorType))},_updateImage:function(t,e){$("#avatarUpload > dt > img").remove();var i=$('<img src="'+t+'" alt="" />').css({height:"auto","max-height":"96px","max-width":"96px",width:"auto"});e&&(i.addClass("userAvatarCrop").addClass("jsTooltip"),i.attr("title",WCF.Language.get("wcf.user.avatar.type.custom.crop"))),$("#avatarUpload > dt").prepend(i),WCF.DOMNodeInsertedHandler.execute()},_getInnerErrorElement:function(){var t=$("#avatarUpload > dd > .innerError");return t.length||(t=$('<small class="innerError"></span>'),$("#avatarUpload > dd").append(t)),t},_getParameters:function(){return{userID:this._userID}}}),WCF.User.List=Class.extend({_additionalParameters:{},_cache:{},_className:"",_dialog:null,_dialogTitle:"",_pageCount:0,_pageNo:1,_proxy:null,init:function(t,e,i){this._additionalParameters=i||{},this._cache={},this._className=t,this._dialog=null,this._dialogTitle=e,this._pageCount=0,this._pageNo=1,this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)})},open:function(){this._pageNo=1,this._showPage()},_showPage:function(t,e){if(e&&e.activePage&&(this._pageNo=e.activePage),0!=this._pageCount&&(this._pageNo<1||this._pageNo>this._pageCount))return void console.debug("[WCF.User.List] Cannot access page "+this._pageNo+" of "+this._pageCount);if(this._cache[this._pageNo]){var i=!1;null===this._dialog&&(this._dialog=$('<div id="userList'+this._className.hashCode()+'" />').hide().appendTo(document.body),i=!0),this._dialog.empty(),this._dialog.html(this._cache[this._pageNo]),this._pageCount>1&&this._dialog.find(".jsPagination").wcfPages({activePage:this._pageNo,maxPage:this._pageCount}).on("wcfpagesswitched",$.proxy(this._showPage,this)),i?this._dialog.wcfDialog({title:this._dialogTitle}):this._dialog.wcfDialog("open").wcfDialog("render"),WCF.DOMNodeInsertedHandler.execute()}else this._additionalParameters.pageNo=this._pageNo,this._proxy.setOption("data",{actionName:"getGroupedUserList",className:this._className,interfaceName:"wcf\\data\\IGroupedUserListAction",parameters:this._additionalParameters}),this._proxy.sendRequest()},_success:function(t){t.returnValues.pageCount&&(this._pageCount=t.returnValues.pageCount),this._cache[this._pageNo]=t.returnValues.template,this._showPage()}}),WCF.User.ObjectWatch={},WCF.User.ObjectWatch.Subscribe=Class.extend({_buttonSelector:".jsSubscribeButton",_buttons:{},_dialog:null,_notification:null,_reloadOnUnsubscribe:!1,init:function(t){this._buttons={},this._notification=null,this._reloadOnUnsubscribe=t===!0,this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),$(this._buttonSelector).each($.proxy(function(t,e){var i=$(e),s=i.data("objectID");this._buttons[s]=i.click($.proxy(this._click,this))},this)),WCF.System.Event.addListener("com.woltlab.wcf.objectWatch","update",$.proxy(this._updateSubscriptionStatus,this))},_click:function(t){t.preventDefault();var e=$(t.currentTarget);this._proxy.setOption("data",{actionName:"manageSubscription",className:"wcf\\data\\user\\object\\watch\\UserObjectWatchAction",parameters:{objectID:e.data("objectID"),objectType:e.data("objectType")}}),this._proxy.sendRequest()},_success:function(t){if("manageSubscription"===t.actionName){null===this._dialog?(this._dialog=$("<div>"+t.returnValues.template+"</div>").hide().appendTo(document.body),this._dialog.wcfDialog({title:WCF.Language.get("wcf.user.objectWatch.manageSubscription")})):(this._dialog.html(t.returnValues.template),this._dialog.wcfDialog("open")),this._dialog.find(".formSubmit > .jsButtonSave").data("objectID",t.returnValues.objectID).click($.proxy(this._save,this));var e=this._dialog.find("input[name=enableNotification]").disable();this._dialog.find("input[name=subscribe]").change(function(t){var i=$(t.currentTarget);1==i.val()?e.enable():e.disable()});var i=this._dialog.find("input[name=subscribe]:checked");i.length&&1==i.val()&&e.enable()}else"saveSubscription"===t.actionName&&this._dialog.is(":visible")&&(this._dialog.wcfDialog("close"),this._updateSubscriptionStatus({isSubscribed:t.returnValues.subscribe,objectID:t.returnValues.objectID}),null===this._notification&&(this._notification=new WCF.System.Notification(WCF.Language.get("wcf.global.success.edit"))),this._notification.show())},_save:function(t){var e=this._buttons[$(t.currentTarget).data("objectID")],i=this._dialog.find("input[name=subscribe]:checked").val(),s=this._dialog.find("input[name=enableNotification]").is(":checked")?1:0;this._proxy.setOption("data",{actionName:"saveSubscription",className:"wcf\\data\\user\\object\\watch\\UserObjectWatchAction",parameters:{enableNotification:s,objectID:e.data("objectID"),objectType:e.data("objectType"),subscribe:i}}),this._proxy.sendRequest()},_updateSubscriptionStatus:function(t){var e=$(this._buttonSelector+"[data-object-id="+t.objectID+"]"),i=e.children(".icon");if(t.isSubscribed)i.removeClass("icon-bookmark-empty").addClass("icon-bookmark"),e.data("isSubscribed",!0);else if(i.removeClass("icon-bookmark").addClass("icon-bookmark-empty"),e.data("isSubscribed",!1),this._reloadOnUnsubscribe)return void window.location.reload();WCF.System.Event.fireEvent("com.woltlab.wcf.objectWatch","updatedSubscription",t)}}),WCF.User.InlineEditor=WCF.InlineEditor.extend({_additionalOptions:{},_dialog:null,_permissions:{},init:function(t){this._super(t),WCF.System.ObjectStore.add("WCF.User.InlineEditor",this)},_execute:function(t,e){if(!this._validate(t,e))return!1;var i={},s=$("#"+t);if(void 0!==this._additionalOptions[e])this._additionalOptions[e].callback(t);else switch(e){case"unban":case"enableAvatar":case"enableSignature":switch(e){case"unban":i.banned=0;break;case"enableAvatar":i.disableAvatar=0;break;case"enableSignature":i.disableSignature=0}this._proxy.setOption("data",{actionName:e,className:"wcf\\data\\user\\UserAction",objectIDs:[s.data("objectID")]}),this._proxy.sendRequest();break;case"ban":case"disableAvatar":case"disableSignature":"ban"==e?i.banned=1:i[e]=1,this._showReasonDialog(s.data("objectID"),e);break;case"advanced":window.location=this._getTriggerElement(s).attr("href")}$.getLength(i)&&this._updateData.push({data:i,elementID:t})},_executeReasonAction:function(){var t=this._dialog.data("optionName");this._dialog.find(".innerError").remove();var e="";if(!$("#"+t+"NeverExpires").is(":checked")&&(e=$("#"+t+"ExpiresDatePicker").val(),!e))return void this._dialog.find("#"+t+"ExpiresSettings > dd > small").prepend($('<small class="innerError" />').text(WCF.Language.get("wcf.global.form.error.empty")));var i={};i[t+"Reason"]=$("#"+t+"Reason").val(),i[t+"Expires"]=e,this._proxy.setOption("data",{actionName:t,className:"wcf\\data\\user\\UserAction",objectIDs:[this._dialog.data("userID")],parameters:i}),this._proxy.sendRequest()},_getPermission:function(t){return this._permissions[t]?this._permissions[t]:0},_getTriggerElement:function(t){return t.find(".jsUserInlineEditor")},_setOptions:function(){this._options=[{label:WCF.Language.get("wcf.user.ban"),optionName:"ban"},{label:WCF.Language.get("wcf.user.unban"),optionName:"unban"},{label:WCF.Language.get("wcf.user.disableAvatar"),optionName:"disableAvatar"},{label:WCF.Language.get("wcf.user.enableAvatar"),optionName:"enableAvatar"},{label:WCF.Language.get("wcf.user.disableSignature"),optionName:"disableSignature"},{label:WCF.Language.get("wcf.user.enableSignature"),optionName:"enableSignature"}];for(var t in this._additionalOptions)this._options.push({label:this._additionalOptions[t].label,optionName:t});this._options.push({optionName:"divider"}),this._options.push({label:WCF.Language.get("wcf.user.edit"),optionName:"advanced"})},_show:function(t){var e=$(t.currentTarget),i=e.data("elementID");if(!this._dropdowns[i]){var s=e.next(".dropdownMenu");s&&(this._dropdowns[i]=s,WCF.Dropdown.initDropdown(this._getTriggerElement(this._elements[i]),!0))}return this._super(t)},_showReasonDialog:function(t,e){this._dialog&&this._dialog.remove(),this._dialog=$("<div />").hide().appendTo(document.body),this._dialog.append($('<fieldset><dl><dt><label for="'+e+'Reason">'+WCF.Language.get("wcf.global.reason")+'</label></dt><dd><textarea id="'+e+'Reason" cols="40" rows="3" />'+(WCF.Language.get("wcf.user."+e+".reason.description")!="wcf.user."+e+".reason.description"?"<small>"+WCF.Language.get("wcf.user."+e+".reason.description")+"</small>":"")+'</dd></dl><dl><dt></dt><dd><label for="'+e+'NeverExpires"><input type="checkbox" name="'+e+'NeverExpires" id="'+e+'NeverExpires" checked="checked" /> '+WCF.Language.get("wcf.user."+e+".neverExpires")+'</label></dd></dl><dl id="'+e+'ExpiresSettings" style="display: none;"><dt><label for="'+e+'Expires">'+WCF.Language.get("wcf.user."+e+".expires")+'</label></dt><dd><input type="date" name="'+e+'Expires" id="'+e+'Expires" class="medium" min="'+new Date(1e3*TIME_NOW).toISOString()+'" data-ignore-timezone="true" /><small>'+WCF.Language.get("wcf.user."+e+".expires.description")+"</small></dd></dl></fieldset>")),this._dialog.append($('<div class="formSubmit"><button class="buttonPrimary" accesskey="s">'+WCF.Language.get("wcf.global.button.submit")+"</button></div>")),this._dialog.data("optionName",e).data("userID",t),this._dialog.find("#"+e+"NeverExpires").change(function(){$("#"+e+"ExpiresSettings").toggle()}),this._dialog.find("button").click($.proxy(this._executeReasonAction,this)),this._dialog.wcfDialog({title:WCF.Language.get("wcf.user."+e+".confirmMessage")})},_updateState:function(t){this._notification.show();for(var e=0,i=this._updateData.length;i>e;e++){var s=this._updateData[e],a=$("#"+s.elementID);for(var n in s.data)a.data(n,s.data[n])}("ban"==t.actionName||"disableAvatar"==t.actionName||"disableSignature"==t.actionName)&&this._dialog.wcfDialog("close"),"unban"==t.actionName&&$(".userHeadline .jsUserBanned").remove()},_validate:function(t,e){var i=$("#"+t);if(void 0!==this._additionalOptions[e])return!0;switch(e){case"ban":case"unban":return this._getPermission("canBanUser")?"ban"==e?!i.data("banned"):i.data("banned"):!1;case"disableAvatar":case"enableAvatar":return this._getPermission("canDisableAvatar")?"disableAvatar"==e?!i.data("disableAvatar"):i.data("disableAvatar"):!1;case"disableSignature":case"enableSignature":return this._getPermission("canDisableSignature")?"disableSignature"==e?!i.data("disableSignature"):i.data("disableSignature"):!1;case"advanced":return this._getPermission("canEditUser")}return!1},addOption:function(t,e,i){$.isFunction(i)||console.debug("[WCF.User.InlineEditor] Missing callback"),void 0!==this._additionalOptions[e]&&console.debug('[WCF.User.InlineEditor] Additional option with name "'+e+"' already exists"),this._additionalOptions[e]={callback:i,label:t},this._setOptions()},setPermission:function(t,e){this._permissions[t]=e},setPermissions:function(t){for(var e in t)this.setPermission(e,t[e])}}); })(this);
 
 // WCF.Moderation.js
-(function (window, undefined) { })(this);
+(function (window, undefined) {"use strict";WCF.Moderation={},WCF.Moderation.Management=Class.extend({_buttonSelector:"",_className:"",_confirmationTemplate:{},_dialog:null,_languageItem:"",_proxy:null,_queueID:0,_redirectURL:"",init:function(e,t,a){return this._buttonSelector?this._className?(this._dialog=null,this._queueID=e,this._redirectURL=t,this._languageItem=a,this._proxy=new WCF.Action.Proxy({failure:$.proxy(this._failure,this),success:$.proxy(this._success,this)}),$(this._buttonSelector).click($.proxy(this._click,this)),void $("<a>"+WCF.Language.get("wcf.moderation.assignedUser.change")+"</a>").click($.proxy(this._clickAssignedUser,this)).insertAfter($("#moderationAssignedUserContainer > dd > span"))):void console.debug("[WCF.Moderation.Management] Missing class name, aborting."):void console.debug("[WCF.Moderation.Management] Missing button selector, aborting.")},_click:function(e){var t=$(e.currentTarget).wcfIdentify(),a="";this._confirmationTemplate[t]&&(a=this._confirmationTemplate[t]),WCF.System.Confirmation.show(WCF.Language.get(this._languageItem.replace(/{actionName}/,t)),$.proxy(function(e){if("confirm"===e){var i={actionName:t,className:this._className,objectIDs:[this._queueID]};this._confirmationTemplate[t]&&(i.parameters={},a.find("input, textarea").each(function(e,t){var a=$(t),o=a.val();"input"===a.getTagName()&&"checkbox"===a.attr("type")&&(a.is(":checked")||(o=null)),null!==o&&(i.parameters[a.attr("name")]=o)})),this._proxy.setOption("data",i),this._proxy.sendRequest(),$(this._buttonSelector).disable()}},this),{},a)},_clickAssignedUser:function(){this._proxy.setOption("data",{actionName:"getAssignUserForm",className:"wcf\\data\\moderation\\queue\\ModerationQueueAction",objectIDs:[this._queueID]}),this._proxy.sendRequest()},_success:function(e){switch(e.actionName){case"getAssignUserForm":null===this._dialog?(this._dialog=$("<div />").hide().appendTo(document.body),this._dialog.html(e.returnValues.template).wcfDialog({title:WCF.Language.get("wcf.moderation.assignedUser")})):this._dialog.html(e.returnValues.template).wcfDialog("open"),this._dialog.find("button[data-type=submit]").click($.proxy(this._assignUser,this));break;case"assignUser":var t=$("#moderationAssignedUserContainer > dd > span").empty();e.returnValues.userID?$('<a href="'+e.returnValues.link+'" data-user-id="'+e.returnValues.userID+'" class="userLink">'+WCF.String.escapeHTML(e.returnValues.username)+"</a>").appendTo(t):t.append(e.returnValues.username),t.append(" "),e.returnValues.newStatus&&$("#moderationStatusContainer > dd").text(WCF.Language.get("wcf.moderation.status."+e.returnValues.newStatus)),this._dialog.wcfDialog("close"),(new WCF.System.Notification).show();break;default:var a=new WCF.System.Notification(WCF.Language.get("wcf.global.success")),i=this;a.show(function(){window.location=i._redirectURL})}},_failure:function(e){if(e.returnValues&&e.returnValues.fieldName&&"assignedUsername"==e.returnValues.fieldName){this._dialog.find("small.innerError").remove();var t="";switch(e.returnValues.errorType){case"empty":t=WCF.Language.get("wcf.global.form.error.empty");break;case"notAffected":t=WCF.Language.get("wcf.moderation.assignedUser.error.notAffected");break;default:t=WCF.Language.get("wcf.user.username.error."+e.returnValues.errorType,{username:this._dialog.find("#assignedUsername").val()})}return $('<small class="innerError">'+t+"</small>").insertAfter(this._dialog.find("#assignedUsername")),!1}return!0},_assignUser:function(){var e=this._dialog.find("input[name=assignedUserID]:checked").val(),t="";return-1==e&&(t=$.trim(this._dialog.find("#assignedUsername").val())),-1==e&&0==t.length?(this._dialog.find("small.innerError").remove(),void $('<small class="innerError">'+WCF.Language.get("wcf.global.form.error.empty")+"</small>").insertAfter(this._dialog.find("#assignedUsername"))):(this._proxy.setOption("data",{actionName:"assignUser",className:"wcf\\data\\moderation\\queue\\ModerationQueueAction",objectIDs:[this._queueID],parameters:{assignedUserID:e,assignedUsername:t}}),void this._proxy.sendRequest())}}),WCF.Moderation.Queue={},WCF.Moderation.Queue.MarkAsRead=Class.extend({_proxy:null,init:function(){this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),$(document).on("dblclick",".moderationList .new .columnAvatar",$.proxy(this._dblclick,this))},_dblclick:function(e){this._proxy.setOption("data",{actionName:"markAsRead",className:"wcf\\data\\moderation\\queue\\ModerationQueueAction",objectIDs:[$(e.currentTarget).parents("tr:eq(0)").data("queueID")]}),this._proxy.sendRequest()},_success:function(e){$(".moderationList .new").each(function(t,a){var i=$(a);WCF.inArray(i.data("queueID"),e.objectIDs)&&(i.removeClass("new"),i.find(".columnAvatar").off("dblclick"))})}}),WCF.Moderation.Queue.MarkAllAsRead=Class.extend({_proxy:null,init:function(){this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),$(".markAllAsReadButton").click($.proxy(this._click,this))},_click:function(e){e.preventDefault(),this._proxy.setOption("data",{actionName:"markAllAsRead",className:"wcf\\data\\moderation\\queue\\ModerationQueueAction"}),this._proxy.sendRequest()},_success:function(){var e=$(".moderationList");e.find(".new").removeClass("new"),e.find(".columnAvatar").off("dblclick")}}),WCF.Moderation.Activation={},WCF.Moderation.Activation.Management=WCF.Moderation.Management.extend({init:function(e,t){this._buttonSelector="#enableContent, #removeContent",this._className="wcf\\data\\moderation\\queue\\ModerationQueueActivationAction",this._super(e,t,"wcf.moderation.activation.{actionName}.confirmMessage")}}),WCF.Moderation.Report={},WCF.Moderation.Report.Content=Class.extend({_buttons:{},_buttonSelector:"",_dialog:null,_notification:null,_objectID:0,_objectType:"",_proxy:null,init:function(e,t){this._objectType=e,this._buttonSelector=t,this._buttons={},this._notification=null,this._objectID=0,this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._initButtons(),WCF.DOMNodeInsertedHandler.addCallback("WCF.Moderation.Report"+this._objectType.hashCode(),$.proxy(this._initButtons,this))},_initButtons:function(){var e=this;$(this._buttonSelector).each(function(t,a){var i=$(a),o=i.wcfIdentify();e._buttons[o]||(e._buttons[o]=i,i.click($.proxy(e._click,e)))})},_click:function(e){e.preventDefault(),this._objectID=$(e.currentTarget).data("objectID"),this._proxy.setOption("data",{actionName:"prepareReport",className:"wcf\\data\\moderation\\queue\\ModerationQueueReportAction",parameters:{objectID:this._objectID,objectType:this._objectType}}),this._proxy.sendRequest()},_success:function(e){e.returnValues.reported?(null===this._notification&&(this._notification=new WCF.System.Notification(WCF.Language.get("wcf.moderation.report.success"))),this._dialog.wcfDialog("close"),this._notification.show()):e.returnValues.template&&(this._showDialog(e.returnValues.template),e.returnValues.alreadyReported||this._dialog.find(".jsSubmitReport").click($.proxy(this._submit,this)))},_showDialog:function(e){null===this._dialog&&(this._dialog=$("#moderationReport"),this._dialog.length||(this._dialog=$('<div id="moderationReport" />').hide().appendTo(document.body))),this._dialog.html(e).wcfDialog({title:WCF.Language.get("wcf.moderation.report.reportContent")}).wcfDialog("render")},_submit:function(){var e=this._dialog.find(".jsReportMessage").val();return""==$.trim(e)?(this._dialog.find("fieldset > dl").addClass("formError"),void(this._dialog.find(".innerError").length||this._dialog.find(".jsReportMessage").after($('<small class="innerError">'+WCF.Language.get("wcf.global.form.error.empty")+"</small>")))):(this._proxy.setOption("data",{actionName:"report",className:"wcf\\data\\moderation\\queue\\ModerationQueueReportAction",parameters:{message:e,objectID:this._objectID,objectType:this._objectType}}),void this._proxy.sendRequest())}}),WCF.Moderation.Report.Management=WCF.Moderation.Management.extend({init:function(e,t){this._buttonSelector="#removeContent, #removeReport",this._className="wcf\\data\\moderation\\queue\\ModerationQueueReportAction",this._super(e,t,"wcf.moderation.report.{actionName}.confirmMessage"),this._confirmationTemplate.removeContent=$('<fieldset><dl><dt><label for="message">'+WCF.Language.get("wcf.moderation.report.removeContent.reason")+'</label></dt><dd><textarea name="message" id="message" cols="40" rows="3" /></dd></dl></fieldset>')}}),WCF.User.Panel.Moderation=WCF.User.Panel.Abstract.extend({init:function(e){e.enableMarkAsRead=!0,this._super($("#outstandingModeration"),"outstandingModeration",e)},_initDropdown:function(){var e=this._super();return $('<li><a href="'+this._options.deletedContentLink+'" title="'+this._options.deletedContent+'" class="jsTooltip"><span class="icon icon16 fa-trash-o" /></a></li>').appendTo(e.getLinkList()),e},_load:function(){this._proxy.setOption("data",{actionName:"getOutstandingQueues",className:"wcf\\data\\moderation\\queue\\ModerationQueueAction"}),this._proxy.sendRequest()},_markAsRead:function(e,t){this._proxy.setOption("data",{actionName:"markAsRead",className:"wcf\\data\\moderation\\queue\\ModerationQueueAction",objectIDs:[t]}),this._proxy.sendRequest()},_markAllAsRead:function(){this._proxy.setOption("data",{actionName:"markAllAsRead",className:"wcf\\data\\moderation\\queue\\ModerationQueueAction"}),this._proxy.sendRequest()},resetItems:function(){this._super(),this._loadData=!0}}); })(this);