((k,g)=>{XF.Message=XF.Message||{};XF.Message.insertMessages=(a,b,c,d)=>{XF.setupHtmlInsert(a,(e,f,h)=>{(f=b.querySelector(".js-replyNoMessages"))&&XF.Animate.fadeUp(f);(XF.isCreatedContainer(e)?Array.from(e.childNodes):[e]).forEach(l=>{l.tagName&&XF.Message.insertMessage(l,b,c)});d&&d(e)})};XF.Message.insertMessage=(a,b,c)=>{const d=b.firstElementChild;XF.display(a,"none");d&&d.matches("form")&&!c?d.after(a):c?b.append(a):b.prepend(a);XF.Animate.fadeDown(a);XF.activate(a)};XF.MessageLoaderClick=
XF.Event.newHandler({eventNameSpace:"XFMessageLoaderClick",options:{href:null,messagesContainer:"< .js-replyNewMessageContainer",selfContainer:".message",ascending:!0},loading:!1,init(){this.options.href||(this.options.href=this.target.getAttribute("href"),this.options.href||console.error("Must be initialized with a data-href or href attribute."))},click(a){a.preventDefault();this.loading||XF.ajax("GET",this.options.href,{},this.loaded.bind(this)).finally(()=>{this.loading=!1})},loaded(a){if(a.html){var b=
XF.findRelativeIf(this.options.messagesContainer,this.target);XF.Message.insertMessages(a.html,b,this.options.ascending);var c=this.target.closest(this.options.selfContainer);XF.Animate.fadeUp(c,{complete:()=>c.remove()});a.lastDate&&(b=g.querySelector('.js-quickReply input[name="last_date"]'))&&(b.value=a.lastDate)}}});XF.QuickEditClick=XF.Event.newHandler({eventNameSpace:"XFQuickEdit",options:{editorTarget:null,editContainer:".js-editContainer",href:null,noInlineMod:0},editorTarget:null,editForm:null,
href:null,loading:!1,init(){const a=this.options.editorTarget;a?(this.editorTarget=XF.findRelativeIf(a,this.target))?(this.href=this.options.href||this.target.getAttribute("href"))||console.error("No edit URL specified."):console.error("No quick edit target found"):console.error("No quick edit editorTarget specified")},click(a){this.editorTarget&&this.href&&(a.preventDefault(),this.loading||(this.loading=!0,a={},this.options.noInlineMod&&(a._xfNoInlineMod=!0),XF.ajax("GET",this.href,a,this.handleAjax.bind(this),
{skipDefaultSuccessError:!0})))},handleAjax(a){const b=this.editorTarget;a.errors?(this.loading=!1,XF.alert(a.errors)):XF.setupHtmlInsert(a.html,(c,d)=>{XF.display(c,"none");b.after(c);XF.activate(c);this.editForm=c;XF.on(c,"ajax-submit:response",this.editSubmit.bind(this));d=c.querySelector(".js-cancelButton");XF.on(d,"click",this.cancelClick.bind(this));d=c.querySelector("input[type=hidden]");const e=XF.createElementFromString('');d.after(e);
XF.Animate.fadeUp(b,{complete:()=>{b.parentNode.classList.add("is-editing");XF.Animate.fadeDown(c,{complete:()=>{XF.trigger(c,"quick-edit:shown");const f=c.querySelector(this.options.editContainer);f&&!XF.isElementVisible(f)&&f.scrollIntoView(!0);this.loading=!1}})}});XF.trigger(c,"quick-edit:show")})},editSubmit(a){const {data:b}=a;if(!b.errors&&!b.exception){a.preventDefault();b.message&&XF.flashMessage(b.message,3E3);var c=this.editorTarget;XF.setupHtmlInsert(b.html,(d,e,f)=>{e=this.options.editorTarget;
e=e.replace(/<|\|/g,"").replace(/#[a-zA-Z0-9_-]+\s*/,"");const h=d.querySelector(e);XF.display(h,"none");c.parentNode.replaceChild(h,c);this.editorTarget=h;XF.activate(h);this.stopEditing(!1,()=>{XF.Animate.fadeDown(h);XF.trigger(this.editForm,XF.customEvent("quickedit:editcomplete",b))})})}},cancelClick(a){this.stopEditing(!0)},stopEditing(a,b){const c=this.editorTarget,d=this.editForm,e=()=>{c.parentNode.classList.remove("is-editing");a&&XF.Animate.fadeDown(c);b&&b();d.remove();this.editForm=null};
d?XF.Animate.fadeUp(d,{complete:e}):e()}});XF.QuoteClick=XF.Event.newHandler({eventNameSpace:"XFQuoteClick",options:{quoteHref:null,editor:".js-quickReply .js-editor"},init(){this.options.quoteHref||console.error("Must be initialized with a data-quote-href attribute.")},click(a){const b=XF.findRelativeIf(this.options.editor,this.target);XF.trigger(b.closest("form"),XF.customEvent("preview:hide",{quoteClick:this}));const c=b.closest(".js-quickReply");if(b&&c){a.preventDefault();var d=this.options.quoteHref,
e=a.target.closest(".tooltip--selectToQuote");e=XF.unparseBbCode(XF.DataStore.get(e,"quote-html"));XF.ajax("POST",d,{quoteHtml:e},this.handleAjax.bind(this),{skipDefaultSuccess:!0});XF.trigger(a.target,"s2q:click");k.scrollTo({top:c.getBoundingClientRect().top-XF.getStickyHeaderOffset()});XF.focusEditor(b)}},handleAjax(a){const b=XF.findRelativeIf(this.options.editor,this.target);XF.insertIntoEditor(b,a.quoteHtml,a.quote)}});XF.SolutionEditClick=XF.extend(XF.SwitchClick,{applyResponseActions(a){this.applyActionsTo(this.target,
a)},applyActionsTo(a,b){var c;if(b.switchKey&&(c=b.switchKey.match(/^replaced:(\d+)$/))){var d=parseInt(c[1],10);b.switchKey="marked"}XF.handleSwitchResponse(a,b,this.options.redirect);a=a.closest(".message");if("marked"==b.switchKey)a.classList.add("message--solution");else if("removed"==b.switchKey){a.classList.remove("message--solution");a=a.getBoundingClientRect();c=a.top;b=g.documentElement.scrollTop;var e;null==(e=g.querySelector("#js-solutionHighlightBlock"))||e.remove();if(e=a.top-c)g.documentElement.scrollTop=
b+e}d&&(d=g.querySelector(`#js-post-${d} .js-solutionControl`))&&this.applyActionsTo(d,{switchKey:"removed"})}});XF.MultiQuote=XF.Element.newHandler({options:{href:"",messageSelector:"",addMessage:"",removeMessage:"",storageKey:""},mqStorage:null,mqOverlay:null,removing:!1,quoting:!1,init(){this.initButton();this.initControls();XF.CrossTab.on("mqChange",a=>{if(a.storageKey===this.options.storageKey){var b=a.messageId;switch(a.action){case "added":this.selectMqControl(b);break;case "removed":this.deselectMqControl(b)}this.refreshMqData();
this.updateButtonState()}})},initButton(){this.mqStorage=XF.LocalStorage.getJson(this.options.storageKey);this.hasQuotesStored()&&this.target.classList.remove("is-hidden");XF.on(this.target,"click",this.buttonClick.bind(this))},buttonClick(a){a.preventDefault();if(!this.options.href)return console.error("Multi-quote button must have a data-href attribute set to display selected quotes"),!1;XF.ajax("post",this.options.href,{quotes:XF.LocalStorage.get(this.options.storageKey)},this.loadOverlay.bind(this))},
loadOverlay(a){a.html&&XF.setupHtmlInsert(a.html,(b,c)=>{b=XF.getOverlayHtml({html:b,title:c.h1||c.title});XF.onDelegated(b,"click",".js-removeMessage",this.removeMessage.bind(this));XF.onDelegated(b,"click",".js-quoteMessages",this.quoteMessages.bind(this));this.mqOverlay=XF.showOverlay(b)})},removeMessage(a){a.preventDefault();if(!this.removing){this.removing=!0;var b=a.target.closest(".nestable-item");a=this.mqOverlay;this.removeFromMultiQuote(b.dataset.id);XF.Animate.fadeUp(b,{speed:XF.config.speed.fast,
complete(){b.remove()}});this.hasQuotesStored()||a.hide();this.removing=!1}},quoteMessages(a){a.preventDefault();if(!this.quoting){this.quoting=!0;a=this.mqOverlay;var b=a.getOverlay(),c;b=JSON.parse((null==(c=b.querySelector('input[name="message_ids"]'))?void 0:c.value)||[]);c=this.mqStorage;for(const f of Object.keys(b))if(XF.hasOwn(b[f],"id")){var d=b[f].id.split("-"),e=d[0];d=d[1];this.isValidQuote(c[e],d)&&(e=c[e][d],!0!==e&&(e=XF.unparseBbCode(e)),b[f].value=e)}a.hide();XF.ajax("post",this.options.href,
{insert:b,quotes:XF.LocalStorage.get(this.options.storageKey)},this.insertMessages.bind(this)).finally(()=>{this.quoting=!1})}},isValidQuote(a,b){return void 0==a||!XF.hasOwn(a,b)||!0!==a[b]&&"string"!=typeof a[b]?!1:!0},insertMessages(a){let b=XF.findRelativeIf("< form | .js-editor",this.target);b||(b=g.querySelector(".js-editor").parentNode);Object.entries(a).forEach(([c,d])=>{if(XF.isNumeric(c)){if(!XF.hasOwn(d,"quote")||!XF.hasOwn(d,"quoteHtml"))return!0;0"+d.quoteHtml,
d.quote="\n"+d.quote);XF.insertIntoEditor(b,d.quoteHtml,d.quote)}});for(const c in this.mqStorage)this.removeFromMultiQuote(c)},initControls(){const a=".tooltip--selectToQuote, "+this.options.messageSelector,b=[];g.querySelectorAll(a).forEach(c=>{c=c.querySelectorAll(".js-multiQuote");b.push(...c)});XF.onDelegated(g,"click",a,this.controlClick.bind(this));b.forEach(c=>{XF.hasOwn(this.mqStorage,c.dataset.messageId)&&(c.classList.add("is-selected"),c.dataset.mqAction="remove")})},controlClick(a){if(a.target.matches(".js-multiQuote")){a.preventDefault();
a=a.target;var b=a.dataset.messageId;switch(a.dataset.mqAction){case "add":this.addToMultiQuote(b);XF.flashMessage(this.options.addMessage,3E3);break;case "remove":this.removeFromMultiQuote(b),XF.flashMessage(this.options.removeMessage,3E3)}XF.trigger(a,"s2q:click")}},addToMultiQuote(a){g.querySelector(`.js-multiQuote[data-message-id="${a}"]`);const b=g.querySelector(".tooltip--selectToQuote"),c=XF.unparseBbCode(XF.DataStore.get(b,"quote-html"));this.refreshMqData();this.hasQuotesStored()?this.mqStorage[a]||
(this.mqStorage[a]=[]):(this.mqStorage={},this.mqStorage[a]=[]);b?this.mqStorage[a].push(c):this.mqStorage[a].push(!0);this.updateMultiQuote();this.selectMqControl(a);this.triggerCrossTabEvent("added",a)},removeFromMultiQuote(a){const b=String(a).match(/^(\d+)-(\d+)$/);this.refreshMqData();b?(a=b[1],delete this.mqStorage[a][b[2]],this.getQuoteStoreCount(this.mqStorage[a])||delete this.mqStorage[a]):delete this.mqStorage[a];this.updateMultiQuote();this.mqStorage[a]||(this.deselectMqControl(a),this.triggerCrossTabEvent("removed",
a))},selectMqControl(a){if(a=g.querySelector('.js-multiQuote[data-message-id="'+a+'"]'))a.classList.add("is-selected"),a.dataset.mqAction="remove"},deselectMqControl(a){if(a=g.querySelector('.js-multiQuote[data-message-id="'+a+'"]'))a.classList.remove("is-selected"),a.dataset.mqAction="add"},getQuoteStoreCount(a){let b=0;for(const c of Object.keys(a))1!=a[c]&&"string"!=typeof a[c]||b++;return b},updateMultiQuote(){XF.LocalStorage.setJson(this.options.storageKey,this.mqStorage,!0);this.updateButtonState()},
updateButtonState(){this.hasQuotesStored()?this.target.classList.remove("is-hidden"):this.target.classList.add("is-hidden")},refreshMqData(){this.mqStorage=XF.LocalStorage.getJson(this.options.storageKey)},hasQuotesStored(){return this.mqStorage&&!XF.isEmptyObject(this.mqStorage)},triggerCrossTabEvent(a,b,c){c=c||{};c.storageKey=this.options.storageKey;c.action=a;c.messageId=b;XF.CrossTab.trigger("mqChange",c)}});XF.SelectToQuote=XF.Element.newHandler({options:{messageSelector:""},quickReply:null,
timeout:null,processing:!1,triggerEvent:null,isMouseDown:!1,tooltip:null,tooltipId:null,init(){if(k.getSelection)if(this.options.messageSelector){var a;if(this.quickReply=null==(a=g.querySelector(".js-quickReply .js-editor"))?void 0:a.parentNode)XF.on(this.target,"mousedown",this.mouseDown.bind(this)),XF.on(this.target,"pointerdown",this.mouseDown.bind(this),{passive:!0}),XF.on(this.target,"mouseup",this.mouseUp.bind(this)),XF.on(this.target,"pointerup",this.mouseUp.bind(this)),XF.on(g,"selectionchange",
this.selectionChange.bind(this))}else console.error("No messageSelector")},mouseDown(a){this.triggerEvent=a;"mousedown"==a.type&&(this.isMouseDown=!0)},mouseUp(){this.isMouseDown=!1;this.trigger()},selectionChange(){this.isMouseDown||this.trigger()},trigger(){this.timeout||this.processing||(this.timeout=setTimeout(this.handleSelection.bind(this),100))},handleSelection(){this.processing=!0;this.timeout=null;const a=k.getSelection(),b=this.getValidSelectionContainer(a);b?this.showQuoteButton(b,a):this.hideQuoteButton();
setTimeout(()=>{this.processing=!1},0)},getValidSelectionContainer(a){if(a.isCollapsed||!a.rangeCount)return null;a=a.getRangeAt(0);this.adjustRange(a);if(!a.toString().trim().length&&!a.cloneContents().querySelectorAll("img").length)return null;const b=(a.commonAncestorContainer instanceof Element?a.commonAncestorContainer:a.commonAncestorContainer.parentElement).closest(".js-selectToQuote");if(!b||!this.target.contains(b)||!b.closest(this.options.messageSelector).querySelector('.actionBar-action[data-xf-click="quote"]'))return null;
const c=a.endContainer.parentElement;return a.startContainer.parentElement.closest(".bbCodeBlock--quote, .js-noSelectToQuote")||c.closest(".bbCodeBlock--quote, .js-noSelectToQuote")?null:b},adjustRange(a){var b=!1,c=!1;let d=a.endContainer;var e=a.startContainer;e=e.nodeType===Node.TEXT_NODE?e.parentNode:e;0==a.endOffset&&(3!=d.nodeType||d.previousSibling||(d=d.parentNode),c=!!d.closest(".bbCodeBlock--quote"));c&&(c=d.closest(".bbCodeBlock--quote"))&&(a.setEndBefore(c),b=!0);e.closest(".embed")&&
(c=e.closest(".embed"))&&(a.setStart(c,0),a.setEndAfter(c),b=!0);b&&(b=k.getSelection(),b.removeAllRanges(),b.addRange(a))},showQuoteButton(a,b){var c=XF.uniqueId(a);this.tooltip&&this.tooltipId===c||(this.hideQuoteButton(),this.createButton(a,c));a=this.tooltip.getTooltip();XF.DataStore.set(a,"quote-html",this.getSelectionHtml(b));b=this.getButtonPositionMarker(b);c=!1;this.triggerEvent&&(c=XF.isEventTouchTriggered(this.triggerEvent));c&&(b.top+=10);this.tooltip.setPositioner([b.left,b.top]);this.tooltip.isShown()?
this.tooltip.reposition():this.tooltip.show();a.classList.add("tooltip--selectToQuote")},getButtonPositionMarker(a){let b;b=XF.createElementFromString("");b.textContent="\u200b";var c=a.getRangeAt(0).cloneRange();a=c.getBoundingClientRect?c.getBoundingClientRect():null;c.collapse(!1);c.insertNode(b);c=0;do{var d=!1;c++;b.parentNode&&"js-selectToQuoteEnd"==b.parentNode.className&&(b.parentNode.before(b),d=!0);b.previousSibling&&3==b.previousSibling.nodeType&&0==b.previousSibling.textContent.trim().length&&
(b.previousSibling.before(b),d=!0);if(b.parentNode&&"LI"==b.parentNode.tagName&&!b.previousSibling){var e=b.parentNode,f=e.previousElementSibling;null!==f?(f.appendChild(b),d=!0):e.parentNode&&(e.parentNode.before(b),d=!0)}b.parentNode&&!b.previousSibling&&["DIV","BLOCKQUOTE","PRE"].includes(b.parentNode.tagName)&&(b.parentNode.before(b),d=!0);b.previousSibling&&["OL","UL"].includes(b.previousSibling.tagName)&&((d=b.previousSibling)&&d.nodeType===Node.ELEMENT_NODE&&(d=d.querySelectorAll("li"),(d=
d[d.length-1])&&d.appendChild(b)),d=!0);b.previousSibling&&["DIV","BLOCKQUOTE","PRE"].includes(b.previousSibling.tagName)&&((d=b.previousElementSibling)&&d.appendChild(b),d=!0);b.previousSibling&&"BR"==b.previousSibling.tagName&&(b.previousSibling.before(b),d=!0)}while(d&&5>c);b.getBoundingClientRect();c=XF.dimensions(b);d=c.height;e=b.parentElement;for(f=g.body;e!==f;){var h=k.getComputedStyle(e).overflowX;if("hidden"===h||"scroll"===h||"auto"===h){h=e.getBoundingClientRect().left;const l=h+e.offsetWidth;
c.left");var d;const e=null==(d=c.querySelector(".actionBar-action.js-multiQuote"))?void 0:d.cloneNode(!0);e&&(e.setAttribute("title",""),e.classList.remove("is-selected"),e.dataset.mqAction="add",e.style.marginLeft="0",e.style.background="transparent",
XF.on(e,"s2q:click",this.buttonClicked.bind(this)),a.appendChild(e),a.appendChild(g.createTextNode(" | ")));d=c.querySelector('.actionBar-action[data-xf-click="quote"]');d.setAttribute("title","");d=d.cloneNode(!0);d.style.marginLeft="0";XF.on(d,"s2q:click",this.buttonClicked.bind(this));a.appendChild(d);this.tooltip=new XF.TooltipElement(a,{html:!0,placement:"bottom"});this.tooltipId=b},buttonClicked(){const a=k.getSelection();a.isCollapsed||(a.collapse(a.getRangeAt(0).commonAncestorContainer,0),
this.hideQuoteButton())},hideQuoteButton(){const a=this.tooltip;a&&(a.destroy(),this.tooltip=null)},getSelectionHtml(a){const b=g.createElement("div");let c;for(let d=0,e=a.rangeCount;d{if(b=b[0]){b=XF.dimensions(b);var c=g.documentElement;const d=c.scrollTop;c=d+c.clientHeight;
(b.topc)&&XF.smoothScroll(Math.max(0,b.top-60),!1,200)}})},getMessagesContainer(){const a=this.options.messageContainer;return a?XF.findRelativeIf(a,this.target):g.querySelector(".js-replyNewMessageContainer")},onDraft(a){({data:a}=a);if(a.hasNew&&a.html){if(a.lastDate&&0a.lastDate)return}this.getMessagesContainer().querySelector(".js-newMessagesIndicator")||this.insertMessages(a.html)}}});
XF.PostEdit=XF.Element.newHandler({init(){XF.on(this.target,"quickedit:editcomplete",this.editComplete.bind(this))},editComplete(a){XF.setupHtmlInsert(a.html,(b,c,d)=>{d=a.threadChanges||{};d.title&&(g.querySelector("h1.p-title-value").innerHTML=c.h1,g.querySelector("title").innerHTML=c.title,XF.config.visitorCounts.title_count&&a.visitor&&(XF.pageTitleCache=c.title,XF.pageTitleCounterUpdate(a.visitor.total_unread)));if(d.customFields){const e=b.closest(".js-threadStatusField"),f=XF.findRelativeIf("< .block--messages | .js-threadStatusField",
this.target);e&&f&&XF.Animate.fadeUp(f,{speed:XF.config.speed.fast,complete(){f.parentNode.replaceChild(e,f);XF.Animate.fadeDown(f,{speed:XF.config.speed.fast})}})}else b.querySelector(".js-threadStatusField").remove()})}});XF.Event.register("click","message-loader","XF.MessageLoaderClick");XF.Event.register("click","quick-edit","XF.QuickEditClick");XF.Event.register("click","quote","XF.QuoteClick");XF.Event.register("click","solution-edit","XF.SolutionEditClick");XF.Element.register("multi-quote",
"XF.MultiQuote");XF.Element.register("select-to-quote","XF.SelectToQuote");XF.Element.register("quick-reply","XF.QuickReply");XF.Element.register("post-edit","XF.PostEdit")})(window,document);
Flash Sale Popup