/*
* XenForo template_edit.min.js
* Copyright 2010-2019 XenForo Ltd.
* Released under the XenForo License Agreement: http://xenforo.com/license-agreement
*/
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(b,e,f){b instanceof String&&(b=String(b));for(var l=b.length,a=0;a<l;a++){var d=b[a];if(e.call(f,d,a,b))return{i:a,v:d}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(b,e,f){b!=Array.prototype&&b!=Object.prototype&&(b[e]=f.value)};
$jscomp.getGlobal=function(b){return"undefined"!=typeof window&&window===b?b:"undefined"!=typeof global&&null!=global?global:b};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(b,e,f,l){if(e){f=$jscomp.global;b=b.split(".");for(l=0;l<b.length-1;l++){var a=b[l];a in f||(f[a]={});f=f[a]}b=b[b.length-1];l=f[b];e=e(l);e!=l&&null!=e&&$jscomp.defineProperty(f,b,{configurable:!0,writable:!0,value:e})}};
$jscomp.polyfill("Array.prototype.find",function(b){return b?b:function(b,f){return $jscomp.findInternal(this,b,f).v}},"es6","es3");
!function(b,e,f,l){XenForo.TemplateEditor={};XenForo.TemplateEditor=function(a){this.__construct(a)};XenForo.TemplateEditor.prototype={__construct:function(a){this.useAjaxSave=!0;this.setupEditors(a)},setupEditors:function(a){this.initialized=!1;this.$form=a;this.$styleId=b("#styleId");this.$templateId=b("#templateId");this.$titleOriginal=b("#templateTitleOriginal");this.$templateTitle=b("#templateTitle");this.$templateTextarea=b("#templateTextarea");this.$saveReloadButton=b("#saveReloadButton");
this.$saveExitButton=b("#saveExitButton");this.$changeIndicator=this.createChangeIndicator();this.$templateTab=b("#templateTab");this.$editorTabs=b("#editorTabs");this.$primaryOnly=a.find(".PrimaryTemplateOnly");this.editors={};this.templateData={"":{style_id:0,template_id:0,template:""}};this.requireRegex=/<xen:(require|include|edithint) [^>]*(css|template)="([^"]+)"[^>]*\/?>/gi;this.$titleOriginal.strval()?this.loadTemplates(this.getIncludeTitles()):this.initialize()},loadTemplates:function(a){a.length&&
XenForo.ajax(this.getLoadUrl("json"),{includeTitles:a,style_id:this.$styleId.val(),_TemplateEditorAjax:1},b.context(this,"ajaxLoadSuccess"),{type:"GET"})},ajaxLoadSuccess:function(a,b){if(XenForo.hasResponseError(a))return!1;this.templateData=a.templates;this.initialized||this.initialize();this.handleTitleChange();this.refreshEditors()},initialize:function(){this.initializePrimaryEditor();this.updateSaveActions();var a=function(a,b){var d=a[0],p=a.data("undoStack");p||(p=[]);p.push([a.val(),d.selectionStart,
d.selectionEnd]);a.data("undoStack",p);b&&a.data("redoStack",[])},d=function(b){var d=b[0];b.data("undoStack");var c=b.data("redoStack");c&&c.length&&(a(b,!1),c=c.pop(),b.val(c[0]),d.selectionStart=c[1],d.selectionEnd=c[2],b.data("lastSelPosition",c[2]))},c=function(b){var d=b.data("lastSelPosition"),c=!1;"undefined"==typeof d||isNaN(d)||b[0].selectionEnd==d||(a(b,!0),c=!0);setTimeout(function(){b.data("lastSelPosition",b[0].selectionEnd)},0);return c},f=this;this.$form.on("keypress",".textCtrl.code",
function(a){c(b(this))});this.$form.on("keydown",".textCtrl.code",function(c){var k=b(this);k.data("undoStack")||k.data("undoStack",[[k.val(),0,0]]);13==c.keyCode&&a(k,!0);if(90==c.keyCode&&(c.metaKey||c.ctrlKey))if(c.preventDefault(),c.shiftKey)d(k);else{c=k[0];var g=k.data("undoStack"),h=k.data("redoStack");h||(h=[]);h.push([k.val(),c.selectionStart,c.selectionEnd]);k.data("redoStack",h);g&&g.length&&(g=g.pop(),k.val(g[0]),c.selectionStart=g[1],c.selectionEnd=g[2],k.data("lastSelPosition",g[2]))}else if(89==
c.keyCode&&(c.metaKey||c.ctrlKey))c.preventDefault(),d(k);else if(9==c.keyCode&&!c.metaKey&&!c.ctrlKey&&!c.altKey){c.preventDefault();g=this.selectionStart;var m=this.selectionEnd,e=k.val();h=e.substring(0,g);var q=e.substring(m),l=!0;if(g!=m&&(m=e.substring(g,m),-1!=m.indexOf("\n"))){l=!1;var n=h.lastIndexOf("\n");-1==n?(m=h+m,e=h.length,h=""):(m=h.substring(n)+m,e=h.length-n,h=h.substring(0,n));c.shiftKey?(n=/(\n|^)(\t|[ ]{1,8})/g,m.match(n)&&(--g,e--),m=m.replace(n,"$1")):(m=m.replace(/(\n|^)/g,
"$1\t"),g+=1,e++);a(k,!0);k.val(h+m+q);this.selectionStart=g;this.selectionEnd=g+m.length-e}l&&!c.shiftKey&&(k.val(h+"\t"+q),this.selectionStart=this.selectionEnd=g+1)}else if(13!=c.keyCode||c.metaKey||c.ctrlKey||c.altKey||c.shiftKey)83==c.keyCode&&(c.ctrlKey||c.metaKey)&&(c.preventDefault(),f.$saveReloadButton.click());else if(g=this.selectionStart,m=this.selectionEnd,e=k.val(),h=e.substring(0,g),q=e.substring(m),n=h.lastIndexOf("\n"),l=(-1==n?h:h.substring(n+1)).match(/^(\s+)/))c.preventDefault(),
k.val(h+"\n"+l[1]+q),this.selectionStart=this.selectionEnd=g+l[1].length+1});this.$form.on("cut paste",".textCtrl.code",function(){c(b(this))||a(b(this),!0)})},initializePrimaryEditor:function(){var a=this.$templateId.strval(),d=this.$titleOriginal.strval(),c=this.createChangeIndicator();console.log("Initializing primary editor for template %s, id %s",d?d:"(untitled)",a);this.editors[d]={templateId:this.$templateId.val(),$changeIndicator:c,$styleId:b(f.createElement("input")).attr({type:"hidden",
name:"styleidArray["+a+"]"}).val(this.templateData[d].style_id),$tab:this.$templateTab,$title:this.$templateTitle.attr({templateTitle:d,name:"titleArray["+a+"]"}).keyup(b.context(this,"eTitleChange")).blur(b.context(this,"setBlurItem")),$textarea:this.$templateTextarea.attr({templateTitle:d,name:"templateArray["+a+"]"}).keyup(b.context(this,"eTemplateChange")).blur(b.context(this,"setBlurItem"))};this.editors[d].$tab.find("a").append(" ").attr("templateTitle",d).addClass(this.getInheritanceState(d)).click(b.context(this,
"switchEditor")).prepend(this.editors[d].$changeIndicator).prepend(this.editors[d].$styleId);this.initialized=!0},setBlurItem:function(a){this.blurItem=a.target},focusBlurItem:function(){void 0!==this.blurItem&&this.blurItem.focus()},refreshEditors:function(){var a=null,b=null;for(a in this.templateData)"function"!=typeof this.templateData[a]&&(void 0===this.editors[a]?this.editors[a]=this.createEditor(a,b):this.updateEditor(a),b=this.editors[a].$tab);for(a in this.editors)"function"!=typeof this.editors[a]&&
void 0===this.templateData[a]&&this.destroyEditor(a)},createEditor:function(a,d){var c=this.templateData[a],e=this.createChangeIndicator(),l=b("<a />").html(XenForo.htmlspecialchars(a)+" ").attr("href",c.link).attr("templateTitle",a).addClass(this.getInheritanceState(a)).prepend(e).click(b.context(this,"switchEditor"));a={templateId:c.template_id,$styleId:b(f.createElement("input")).attr({type:"hidden",name:"styleidArray["+c.template_id+"]"}).val(c.style_id),$changeIndicator:e,$tab:b("<li />").append(l),
$textarea:this.$templateTextarea.clone(!0).xfHide().attr({templateTitle:a,name:"templateArray["+c.template_id+"]"}).removeAttr("id").val(c.template).keyup(b.context(this,"eTemplateChange")),$title:b(f.createElement("input")).attr({type:"hidden",name:"titleArray["+c.template_id+"]"}).val(c.title)};d?d.after(a.$tab):this.$editorTabs.append(a.$tab);this.getTextareaWrapper().append(a.$textarea).append(a.$title).append(a.$styleId);return a},updateEditor:function(a){var d=this.editors[a],c=this.templateData[a];
if(d.templateId!=c.template_id){if(this.isPrimaryTemplate(a)){console.log("Primary template updated");this.$templateId.val(c.template_id);var e=b("#TemplateDeleteButton");c.deleteLink?e.data("href",c.deleteLink).show():e.hide()}d.$tab.find("a").removeClass("master custom inherited").addClass(this.getInheritanceState(a));d.$textarea.attr("name","templateArray["+c.template_id+"]");d.$title.attr("name","titleArray["+c.template_id+"]");d.$styleId.attr("name","styleidArray["+c.template_id+"]");d.$styleId.val(c.style_id);
d.templateId=c.template_id}this.handleTemplateChange(a)},destroyEditor:function(a){this.editors[a].$tab.remove();this.editors[a].$textarea.remove();delete this.editors[a]},updateSaveActions:function(){this.useAjaxSave&&this.getSaveUrl("json")&&(this.$saveReloadButton.val(this.$saveReloadButton.data("ajaxvalue")).click(b.context(this,"saveAjax")),this.$saveExitButton.click(b.context(this,"saveExit")),this.$form.attr("action",this.getSaveUrl()))},saveAjax:function(a){var d;a&&a.preventDefault();a=this.$form.find('input[name="disable_modifications"]').is(":checked");
this.toggleUnchangeFieldNames(a);a=this.$form.serializeArray();this.toggleUnchangeFieldNames(!0);var c=this.getIncludeTitles();for(d=0;d<c.length;d++)XenForo.ajaxDataPush(a,"includeTitles[]",c[d]);XenForo.ajaxDataPush(a,"_TemplateEditorAjax",1);XenForo.ajax(this.getSaveUrl("json"),a,b.context(this,"ajaxSaveSuccess"));return!0},saveExit:function(a){this.toggleUnchangeFieldNames(!1);return!0},toggleUnchangeFieldNames:function(a){var d;for(d in this.editors)if("function"!=typeof this.editors[d]){var c=
!1;!this.isPrimaryTemplate(d)||b.trim(this.$templateTitle.strval())==this.$titleOriginal.strval()&&""!==this.$titleOriginal.strval()||(c=!0);this.isChanged(d)||c||b('input[name="disable_modifications"]').is(":checked")||(c=this.editors[d].$textarea,a?(c.attr("name",c.attr("oName")),c.removeAttr("oName")):(c.attr("oName",c.attr("name")),c.removeAttr("name")))}},ajaxSaveSuccess:function(a,d){if(XenForo.hasResponseError(a))return!1;a.saveMessage&&XenForo.alert(a.saveMessage,"",1E3);this.focusBlurItem();
var c=this.$titleOriginal.strval(),e=b.trim(this.$templateTitle.strval());c!=e&&void 0!==a.templates[e]&&(this.editors[c].$tab.find("a").attr("templateTitle",e),this.editors[c].$title.attr("templateTitle",e),this.editors[c].$textarea.attr("templateTitle",e),this.$titleOriginal.val(e),this.editors[e]=this.editors[c],delete this.editors[c]);this.ajaxLoadSuccess(a,d)},getInheritanceState:function(a){if(void 0===this.templateData[a].style_id)return"master";switch(parseInt(this.templateData[a].style_id)){case 0:return"master";
case parseInt(this.$styleId.val()):return"custom";default:return"inherited"}},getIncludeTitles:function(){var a=[],d,c;""!=this.$titleOriginal.strval()&&a.push(this.$titleOriginal.strval());""!=b.trim(this.$templateTitle.strval())&&a.push(b.trim(this.$templateTitle.strval()));-1!=this.$templateTextarea.val().indexOf("{xen:pagenav")&&(a=this.titlePush("page_nav",a));if(d=this.$templateTextarea.val().match(this.requireRegex))for(c=0;c<d.length;c++)a=this.titlePush(d[c].replace(this.requireRegex,"$3"),
a);return a},titlePush:function(a,b){b.push(a);a.match(/\.css$/)||b.push(a+".css");return b},getTextareaWrapper:function(){void 0===this._$textareaWrapper&&(this.$templateTextarea.wrap('<div id="textareaWrapper" style="position:relative"></div>'),this._$textareaWrapper=b("#textareaWrapper").width(this.$templateTextarea.width()));return this._$textareaWrapper},createChangeIndicator:function(){return b(f.createElement("span")).html("•").css("visibility","hidden").addClass("changeIndicator")},setChanged:function(a,
b){a.attr("changed")!=b&&(a.attr("changed",b),a.css("visibility",b?"visible":"hidden"),a.parent().css("color",b?"darkred":"inherit"));return b},switchEditor:function(a){a=b(a.target).closest("a");a.closest("li").addClass("active").siblings().removeClass("active");b("textarea",this.getTextareaWrapper()).xfHide();this.editors[a.attr("templateTitle")].$textarea.xfShow().focus();this.$templateTextarea.is(":visible")?this.$primaryOnly.show():this.$primaryOnly.hide();return!1},eTitleChange:function(a){e.clearTimeout(this.titleChangeTimeout);
this.titleChangeTimeout=e.setTimeout(b.context(function(){this.handleTitleChange()},this),500)},handleTitleChange:function(){var a=b.trim(this.$templateTitle.strval());b(".tabText",this.$templateTab).html(XenForo.htmlspecialchars(a)||this.$form.data("untitled").italics())},eTemplateChange:function(a){e.clearTimeout(this.templateChangeTimeout);var d=b(a.target).attr("templateTitle");this.templateChangeTimeout=e.setTimeout(b.context(function(){this.handleTemplateChange(d)},this),500)},isChanged:function(a){var b=
this.editors[a].$textarea.strval().replace(/\r/g,"");a=this.templateData[a].template.replace(/\r/g,"");return b!=a},isPrimaryTemplate:function(a){return a==this.$titleOriginal.strval()},handleTemplateChange:function(a){var b=this.isChanged(a);this.setChanged(this.editors[a].$changeIndicator,b);return b},getLoadUrl:function(a){return this.$form.data("loadurl")+(a?"."+a:"")},getSaveUrl:function(a){return this.$form.data("saveurl")+(a?"."+a:"")}};XenForo.register("form#templateEditor","XenForo.TemplateEditor")}(jQuery,
this,document);