!function($){"use strict";(new function(){var e=this;this.init=function(){window.ppFormRecaptchaLoadCallback=this.recaptcha_processing,$(".pp-del-profile-avatar").on("click",this.delete_avatar),$(".pp-del-cover-image").on("click",this.delete_profile_image_cover),$(document).on("click",".has-password-visibility-icon .pp-form-material-icons",this.toggle_password_visibility),$(document.body).on("click","a.showlogin",(function(){$(".pp_wc_login").slideToggle()})),$(window).on("load resize ppress_updated_checkout",(function(){e.defaultUserProfileResponsive()})),$(document).on("click",".ppress-confirm-delete",(function(e){e.preventDefault(),confirm(pp_ajax_form.confirm_delete)&&(window.location.href=$(this).attr("href"))})),"true"!==pp_ajax_form.disable_ajax_form&&($(document).on("submit",'form[data-pp-form-submit="login"]',this.ajax_login),$(document).on("submit",'form[data-pp-form-submit="signup"]',this.ajax_registration),$(document).on("submit",'form[data-pp-form-submit="passwordreset"]',this.ajax_password_reset),$(document).on("submit",'form[data-pp-form-submit="editprofile"]',this.ajax_edit_profile))},this.recaptcha_processing=function(){$(".pp-g-recaptcha").each((function(s,t){var r=$(t).attr("data-sitekey"),o=$(this).parents(".pp-form-container").find("form");if("v3"===$(t).attr("data-type"))o.find("input.pp-submit-form").on("click",(function(s){s.preventDefault(),e._add_processing_label(o),grecaptcha.ready((function(){grecaptcha.execute(r,{action:"form"}).then((function(e){o.find('[name="g-recaptcha-response"]').remove(),o.append($(" ",{type:"hidden",value:e,name:"g-recaptcha-response"})),o.submit()}))}))}));else{var p=grecaptcha.render(t,{sitekey:r,theme:$(t).attr("data-theme"),size:$(t).attr("data-size")});o.on("pp_form_submitted",(function(){grecaptcha.reset(p)})),$(document).on("ppress_process_checkout_success_callback ppress_process_checkout_error_callback",(function(){grecaptcha.reset(p)}))}}))},this.toggle_password_visibility=function(e){e.preventDefault();var s=$(this).parents(".pp-form-field-input-textarea-wrap").find(".pp-form-field");"password"===s.attr("type")?(s.attr("type","text"),$(this).text("visibility_off")):(s.attr("type","password"),$(this).text("visibility"))},this.ajax_edit_profile=function(s){if(void 0!==window.FormData&&window.FormData){s.preventDefault();var t=$('form[data-pp-form-submit="editprofile"]'),r=e.get_melange_id(t),o=new FormData(this);o.append("action","pp_ajax_editprofile"),o.append("nonce",pp_ajax_form.nonce),o.append("melange_id",r),$(".profilepress-edit-profile-status").remove(),$(".profilepress-edit-profile-success").remove(),""!==window.edit_profile_msg_class&&$("."+window.edit_profile_msg_class).remove(),e._add_processing_label(t),$.post({url:pp_ajax_form.ajaxurl,data:o,cache:!1,contentType:!1,enctype:"multipart/form-data",processData:!1,dataType:"json",success:function(s){t.trigger("pp_form_submitted"),t.trigger("pp_form_edit_profile_success",[t]),"avatar_url"in s&&""!==s.avatar_url&&($("img[data-del='avatar'], img.pp-user-avatar").attr("src",s.avatar_url),$("input[name=eup_avatar]",t).val("")),"cover_image_url"in s&&""!==s.cover_image_url&&($("img[data-del='cover-image'], img.pp-user-cover-image").attr("src",s.cover_image_url),$("input[name=eup_cover_image]",t).val(""),$(".profilepress-myaccount-has-cover-image",t).show(),$(".profilepress-myaccount-cover-image-empty",t).hide()),"message"in s&&(window.edit_profile_msg_class=$(s.message).attr("class"),t.before(s.message)),"redirect"in s&&(t.trigger("pp_edit_profile_success_before_redirect"),window.location.assign(s.redirect)),e._remove_processing_label(t)}},"json")}},this.ajax_password_reset=function(s){s.preventDefault();var t=$(this),r=e.get_melange_id(t),o="true"===t.find('input[name="is-pp-tab-widget"]').val(),p={action:"pp_ajax_passwordreset",data:$(this).serialize()+"&melange_id="+r};e._remove_status_notice(),t.parents(".pp-tab-widget-form").prev(".pp-tab-status").remove(),e._add_processing_label(t),$.post(pp_ajax_form.ajaxurl,p,(function(s){if(t.trigger("pp_form_submitted"),"object"!=typeof s)return e._remove_processing_label(t);if("message"in s){if(t.trigger("pp_password_reset_status"),o){var r=s.message.replace("profilepress-reset-status","pp-tab-status");t.parents(".pp-tab-widget-form").before(r)}else t.parents(".lucidContainer").length>0?t.parents(".lucidContainer").before(s.message):t.before(s.message);"status"in s&&!0===s.status&&t.hide(),$('input[name="user_login"]',t).val("")}e._remove_processing_label(t)}),"json")},this.ajax_registration=function(s){if(void 0!==window.FormData&&window.FormData){s.preventDefault();var t=$(this),r=e.get_melange_id(t),o=new FormData(this),p="true"===t.find('input[name="is-pp-tab-widget"]').val();o.append("action","pp_ajax_signup"),o.append("melange_id",r),e._remove_status_notice(),t.parents(".pp-tab-widget-form").prev(".pp-tab-status").remove(),e._add_processing_label(t),$.post({url:pp_ajax_form.ajaxurl,data:o,cache:!1,contentType:!1,enctype:"multipart/form-data",processData:!1,dataType:"json",success:function(s){if(t.trigger("pp_form_submitted"),"object"!=typeof s)return e._remove_processing_label(t);if("message"in s)if(t.trigger("pp_registration_error",[s]),t.trigger("pp_registration_ajax_response",[s]),p){var r=s.message.replace("profilepress-reg-status","pp-tab-status");t.parents(".pp-tab-widget-form").before(r)}else t.parents(".lucidContainer").length>0?t.parents(".lucidContainer").before(s.message):t.before(s.message);else"redirect"in s&&(t.trigger("pp_registration_success",[s]),window.location.assign(s.redirect));e._remove_processing_label(t)}})}},this.ajax_login=function(s){s.preventDefault();var t=$(this),r={action:"pp_ajax_login",data:$(this).serialize()},o="true"===t.find('input[name="is-pp-tab-widget"]').val();e._remove_status_notice(),e._add_processing_label(t),$.post(pp_ajax_form.ajaxurl,r,(function(s){if(t.trigger("pp_form_submitted"),null===s||"object"!=typeof s)return e._remove_processing_label(t);if("success"in s&&!0===s.success&&"redirect"in s)t.trigger("pp_login_form_success"),window.location.assign(s.redirect);else if(t.trigger("pp_login_form_error"),"code"in s&&"pp2fa_auth_code_invalid"==s.code&&t.find(".pp-2fa").show(),o){var r=s.message.replace("profilepress-login-status","pp-tab-status");t.parents(".pp-tab-widget-form").before(r)}else t.parents(".lucidContainer").length>0?t.parents(".lucidContainer").before(s.message):t.before(s.message);e._remove_processing_label(t)}),"json")},this.delete_avatar=function(e){e.preventDefault();var s=$(this).text(),t=$(this);e.preventDefault(),confirm(pp_ajax_form.confirm_delete)&&(t.is("button")&&t.text(pp_ajax_form.deleting_text),$.post(pp_ajax_form.ajaxurl,{action:"pp_del_avatar",nonce:pp_ajax_form.nonce}).done((function(e){"error"in e&&"nonce_failed"===e.error?(t.text(s),alert(pp_ajax_form.deleting_error)):"success"in e&&($("img[data-del='avatar']").attr("src",e.default),t.remove())})))},this.delete_profile_image_cover=function(e){e.preventDefault();var s=$(this).text(),t=$(this);e.preventDefault(),confirm(pp_ajax_form.confirm_delete)&&(t.is("button")&&t.text(pp_ajax_form.deleting_text),$.post(pp_ajax_form.ajaxurl,{action:"pp_del_cover_image",nonce:pp_ajax_form.nonce}).done((function(e){"error"in e&&"nonce_failed"===e.error&&(t.text(s),alert(pp_ajax_form.deleting_error)),"success"in e&&(""!==e.default?($("img[data-del='cover-image']").attr("src",e.default),t.parent().find(".profilepress-myaccount-has-cover-image").show(),t.parent().find(".profilepress-myaccount-cover-image-empty").hide()):(t.parent().find(".profilepress-myaccount-has-cover-image").hide(),t.parent().find(".profilepress-myaccount-cover-image-empty").show()),t.remove())})))},this.get_melange_id=function(e){var s=$("input.pp_melange_id",e).val();return void 0===s?"":s},this._add_processing_label=function(e){var s=e.find("input[data-pp-submit-label]");s.attr({value:s.data("pp-processing-label"),disabled:"disabled"}).css("opacity",".4")},this._remove_processing_label=function(e){var s=e.find("input[data-pp-submit-label]");s.attr("value",s.data("pp-submit-label")),s.attr({value:s.data("pp-submit-label"),disabled:null}).css("opacity","")},this._remove_status_notice=function(){$(".profilepress-login-status,.pp-tab-status,.profilepress-edit-profile-success,.profilepress-edit-profile-status,.pp-reset-success,.profilepress-reset-status,.profilepress-reg-status").remove()},this.defaultUserProfileResponsive=function(){$(".ppress-default-profile, .pp-member-directory, .ppress-checkout__form").each((function(){var e=$(this),s=e.width();s<=340?(e.removeClass("ppressui340"),e.removeClass("ppressui500"),e.removeClass("ppressui800"),e.removeClass("ppressui768"),e.removeClass("ppressui960"),e.addClass("ppressui340")):s<=500?(e.removeClass("ppressui340"),e.removeClass("ppressui500"),e.removeClass("ppressui768"),e.removeClass("ppressui800"),e.removeClass("ppressui960"),e.addClass("ppressui500")):s<=768?(e.removeClass("ppressui340"),e.removeClass("ppressui500"),e.removeClass("ppressui768"),e.removeClass("ppressui800"),e.removeClass("ppressui960"),e.addClass("ppressui768")):s<=800?(e.removeClass("ppressui340"),e.removeClass("ppressui500"),e.removeClass("ppressui768"),e.removeClass("ppressui800"),e.removeClass("ppressui960"),e.addClass("ppressui800")):s<=960?(e.removeClass("ppressui340"),e.removeClass("ppressui500"),e.removeClass("ppressui768"),e.removeClass("ppressui800"),e.removeClass("ppressui960"),e.addClass("ppressui960")):s>960&&(e.removeClass("ppressui340"),e.removeClass("ppressui500"),e.removeClass("ppressui768"),e.removeClass("ppressui800"),e.removeClass("ppressui960")),e.css("opacity",1)})),$(".ppress-default-profile-cover, .ppress-default-profile-cover-e").each((function(){var e=$(this),s=Math.round(e.width()/e.data("ratio"))+"px";e.height(s),e.find(".ppress-dpf-cover-add").height(s)}))}}).init(),(new function(){let e=this;window.ppressCheckoutForm=this,this.init=function(){"0"!==pp_ajax_form.is_checkout&&0!==$("#ppress_checkout_main_form").length&&($(document).on("click",".ppress-checkout-show-login-form",this.toggle_login_form),$(document).on("click",'.ppress-login-submit-btn input[type="submit"]',this.process_login),$(document).on("click",".ppress-coupon-code-link",this.toggle_discount_code_reveal),$(document).on("click",".ppress-apply-discount-btn",this.apply_discount_code),$(document).on("click","#ppress-remove-applied-coupon",this.remove_applied_discount_code),$(document).on("submit","#ppress_mb_checkout_form",this.process_checkout),$(document).on("click",".ppress-terms-and-conditions-link",(function(e){var s=$(".ppress-checkout-form__terms_condition__content");s.length>0&&(e.preventDefault(),s.slideToggle())})),$(document).on("ppress_update_checkout",this.update_checkout),"1"===pp_ajax_form.is_checkout_tax_enabled?$(document).on("change","#ppress_mb_checkout_form .ppress_billing_country, #ppress_mb_checkout_form .ppress_billing_state, #ppress_mb_checkout_form .ppress_vat_number",e.debounce((function(){$(document.body).trigger("ppress_update_checkout")}),200)):$(document).on("change","#ppress_mb_checkout_form .ppress_billing_country",e.contextual_state_field),$(document.body).on("change","#ppress_checkout_payment_methods [name=ppress_payment_method]",(function(){$(document.body).trigger("ppress_update_checkout")})),$(document.body).on("change","#ppress_mb_checkout_form [name=group_selector]",(function(){e.update_checkout(!0)})),$(document.body).trigger("ppress_update_checkout"),$(document).ajaxError((function(){e.remove_spinner()})))},this.debounce=function(e,s){let t;return s=s||600,function(){clearTimeout(t),t=setTimeout((function(){e()}),s)}},this.contextual_state_field=function(){let e=$(".ppress_billing_state"),s={action:"ppress_contextual_state_field",country:$(this).val(),name:e.prop("name"),id:e.prop("id"),class:e.prop("class"),csrf:$("#ppress_checkout_nonce").val()};$.post(pp_ajax_form.ajaxurl,s,(function(s){e.replaceWith(s.data)}))},this.scroll_to_notices=function(e){(e=e||$(".ppress-checkout-alert")).length&&$("html, body").animate({scrollTop:e.offset().top-100},1e3)},this.update_checkout=function(s){s=s||!1,e.removeAllAlerts(),e.add_spinner();let t={action:"ppress_update_order_review",plan_id:$("#ppress-checkout-plan-id").val(),ppress_payment_method:$("#ppress_checkout_payment_methods [name=ppress_payment_method]:checked").val(),csrf:$("#ppress_checkout_nonce").val(),address:$(".ppress-checkout-form__payment_method.ppress-active .ppress_billing_address").val(),city:$(".ppress-checkout-form__payment_method.ppress-active .ppress_billing_city").val(),country:$(".ppress-checkout-form__payment_method.ppress-active .ppress_billing_country").val(),state:$(".ppress-checkout-form__payment_method.ppress-active .ppress_billing_state").val(),postcode:$(".ppress-checkout-form__payment_method.ppress-active .ppress_billing_postcode").val(),phone:$(".ppress-checkout-form__payment_method.ppress-active .ppress_billing_phone").val(),vat_number:$("#ppress_checkout_main_form .ppress_vat_number").val(),post_data:$("#ppress_mb_checkout_form").serialize()};!0===s&&(t.isChangePlanUpdate="true"),$.post(pp_ajax_form.ajaxurl,t,(function(s){let r={};if($(".ppress-checkout-form__payment_method :input").each((function(){let e=$(this).attr("id");e&&(-1!==$.inArray($(this).attr("type"),["checkbox","radio"])?r[e]=$(this).prop("checked"):r[e]=$(this).val())})),"data"in s&&void 0!==s.data.fragments&&($.each(s.data.fragments,(function(s,t){e.fragments&&e.fragments[s]===t||$(s).replaceWith(t)})),e.fragments=t.fragments),$.isEmptyObject(r)||$(".ppress-checkout-form__payment_method :input").each((function(){let e=$(this).attr("id");e&&(-1!==$.inArray($(this).attr("type"),["checkbox","radio"])?$(this).prop("checked",r[e]):($.inArray($(this).attr("type"),["select"]),$(this).val(r[e])))})),"success"in s&&!1===s.success){let e=$("#ppress_checkout_main_form");s.data&&e.prepend(s.data),e.find(".input-text, select, input:checkbox").trigger("blur")}$(document.body).trigger("ppress_updated_checkout",[s]);let o,p=$(".ppress-checkout_order_summary__bottom_details");(o=$(".ppress-checkout-alert")).length>0&&(p=o),e.scroll_to_notices(p),e.remove_spinner()}))},this.toggle_login_form=function(e){e.preventDefault(),$("#ppress_checkout_account_info .ppress-main-checkout-form__login_form_wrap").slideToggle()},this.toggle_discount_code_reveal=function(e){e.preventDefault(),$("#ppress-checkout-coupon-code-wrap").slideToggle()},this.apply_discount_code=function(s){s.preventDefault(),e.removeAllAlerts(),e.add_spinner();let t={action:"ppress_checkout_apply_discount",plan_id:$("#ppress-checkout-plan-id").val(),coupon_code:$("#apply-discount").val(),ppress_checkout_nonce:$("#ppress_checkout_nonce").val()};$.post(pp_ajax_form.ajaxurl,t,(function(s){"success"in s&&!0===s.success?$(document.body).trigger("ppress_update_checkout"):($(".ppress-checkout_order_summary-wrap").before(s.data),e.remove_spinner())}))},this.remove_applied_discount_code=function(s){s.preventDefault(),e.removeAllAlerts(),e.add_spinner();let t={action:"ppress_checkout_remove_discount",plan_id:$("#ppress-checkout-plan-id").val(),ppress_checkout_nonce:$("#ppress_checkout_nonce").val()};$.post(pp_ajax_form.ajaxurl,t,(function(s){"success"in s&&!0===s.success?$(document.body).trigger("ppress_update_checkout"):($(".ppress-checkout_order_summary-wrap").before(s.data),e.remove_spinner())}))},this.process_login=function(s){s.preventDefault(),e.removeAllAlerts(),e.add_spinner();let t={action:"ppress_process_checkout_login",ppmb_user_login:$("#ppress_mb_checkout_form #ppmb_user_login").val(),ppmb_user_pass:$("#ppress_mb_checkout_form #ppmb_user_pass").val(),ppress_checkout_nonce:$("#ppress_checkout_nonce").val()};$.post(pp_ajax_form.ajaxurl,t,(function(s){"success"in s&&(!0===s.success?window.location.reload():"data"in s&&$("#ppress_mb_checkout_form .ppress-login-submit-btn").prepend(s.data)),e.remove_spinner()}))},this.process_checkout=function(s){if("function"!=typeof this.checkValidity||!1!==this.checkValidity()){s.preventDefault(),e.removeAllAlerts(),e.add_spinner();var t=$(this),r=e.get_payment_method();if(!1!==t.triggerHandler("ppress_checkout_place_order_"+r)){let s=new FormData(this);s.append("action","ppress_process_checkout"),s.append("ppress_checkout_nonce",$("#ppress_checkout_nonce").val()),$.post({url:pp_ajax_form.ajaxurl,data:s,cache:!1,contentType:!1,enctype:"multipart/form-data",processData:!1,dataType:"json",success:function(s){if($(document.body).trigger("ppress_process_checkout_success_callback",[s]),"success"in s)return!0===s.success?void(!1!==t.triggerHandler("ppress_process_checkout_"+r,[s,r])&&("redirect_url"in s&&void 0!==s.redirect_url&&s.redirect_url.length>0?window.location.assign(s.redirect_url):($(document.body).trigger("ppress_checkout_success",[s,r]),window.location.assign(s.order_success_url)))):"error_message"in s?e.createAlertMessage(s.error_message):"data"in s&&"string"==typeof s.data?e.createAlertMessage(s.data):void 0;e.remove_spinner()},error:function(s,t,r){$(document.body).trigger("ppress_process_checkout_error_callback",[s,t,r]),e.createAlertMessage(r)}},"json")}}},this.get_payment_method=function(){return $("#ppress_mb_checkout_form").find('input[name="ppress_payment_method"]:checked').val()},this.createAlertMessage=function(e,s){s=s||"error";var t=void 0!==e.indexOf&&-1!==e.indexOf("ppress-checkout-alert"),r="";t||(r='
"),$("#ppress_checkout_main_form").prepend(r),ppressCheckoutForm.scroll_to_notices(),ppressCheckoutForm.remove_spinner(),$(document.body).trigger("ppress_checkout_error",[e])},this.removeAllAlerts=function(){$(".ppress-checkout-alert").remove()},this.add_spinner=function(){e.remove_spinner(),$(".ppress-checkout__form").prepend('')},this.remove_spinner=function(){$(".ppress-checkout__form .ppress-checkout__form__preloader").remove()},this.is_var_defined=function(e){return null!=e},this.get_obj_val=function(e,s){return this.is_var_defined(e)&&""!==e?e:s}}).init()}(jQuery);;
document.addEventListener("DOMContentLoaded", function () {
var lazyEmbeds = [].slice.call(
document.querySelectorAll(".lazy-loaded-embed, .lazy-social-embed"),
);
if ("IntersectionObserver" in window) {
let lazyEmbedObserver = new IntersectionObserver(
function (entries, observer) {
entries.forEach(function (entry) {
if (entry.isIntersecting) {
let lazyEmbed = entry.target;
loadEmbed(lazyEmbed);
observer.unobserve(lazyEmbed);
}
});
},
{
root: null,
rootMargin: "0px 0px 200px 0px", // Load embeds when they're 200px below the viewport
threshold: 0,
},
);
lazyEmbeds.forEach(function (lazyEmbed) {
lazyEmbedObserver.observe(lazyEmbed);
});
} else {
// Fallback for browsers that don't support IntersectionObserver
window.addEventListener(
"scroll",
throttle(function () {
lazyEmbeds.forEach(function (lazyEmbed) {
if (isElementInViewport(lazyEmbed)) {
loadEmbed(lazyEmbed);
lazyEmbeds = lazyEmbeds.filter(function (embed) {
return embed !== lazyEmbed;
});
}
});
}, 250),
);
}
function loadEmbed(embed) {
if (embed.tagName.toLowerCase() === "iframe") {
embed.src = embed.dataset.src;
} else if (embed.classList.contains("lazy-social-embed")) {
let script = document.createElement("script");
script.src = embed.dataset.src;
script.async = true;
embed.parentNode.insertBefore(script, embed.nextSibling);
embed.remove();
}
embed.classList.remove("lazy-loaded-embed");
}
// Helper function to check if an element is in the viewport
function isElementInViewport(el) {
var rect = el.getBoundingClientRect();
return (
rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <=
(window.innerHeight || document.documentElement.clientHeight) &&
rect.right <= (window.innerWidth || document.documentElement.clientWidth)
);
}
// Helper function to throttle scroll events
function throttle(func, limit) {
let inThrottle;
return function () {
const args = arguments;
const context = this;
if (!inThrottle) {
func.apply(context, args);
inThrottle = true;
setTimeout(() => (inThrottle = false), limit);
}
};
}
});
;
/*!
* JavaScript Cookie v2.1.4
* https://github.com/js-cookie/js-cookie
*
* Copyright 2006, 2015 Klaus Hartl & Fagner Brack
* Released under the MIT license
*/
!function(e){var n,o,t=!1;"function"==typeof define&&define.amd&&(define(e),t=!0),"object"==typeof exports&&(module.exports=e(),t=!0),t||(n=window.Cookies,(o=window.Cookies=e()).noConflict=function(){return window.Cookies=n,o})}(function(){function m(){for(var e=0,n={};e1?c:d}var f=[],g=[],h={precision:100,elapse:!1,defer:!1};g.push(/^[0-9]*$/.source),g.push(/([0-9]{1,2}\/){2}[0-9]{4}( [0-9]{1,2}(:[0-9]{2}){2})?/.source),g.push(/[0-9]{4}([\/\-][0-9]{1,2}){2}( [0-9]{1,2}(:[0-9]{2}){2})?/.source),g=new RegExp(g.join("|"));var i={Y:"years",m:"months",n:"daysToMonth",d:"daysToWeek",w:"weeks",W:"weeksToMonth",H:"hours",M:"minutes",S:"seconds",D:"totalDays",I:"totalHours",N:"totalMinutes",T:"totalSeconds"},j=function(b,c,d){this.el=b,this.$el=a(b),this.interval=null,this.offset={},this.options=a.extend({},h),this.instanceNumber=f.length,f.push(this),this.$el.data("countdown-instance",this.instanceNumber),d&&("function"==typeof d?(this.$el.on("update.countdown",d),this.$el.on("stoped.countdown",d),this.$el.on("finish.countdown",d)):this.options=a.extend({},h,d)),this.setFinalDate(c),this.options.defer===!1&&this.start()};a.extend(j.prototype,{start:function(){null!==this.interval&&clearInterval(this.interval);var a=this;this.update(),this.interval=setInterval(function(){a.update.call(a)},this.options.precision)},stop:function(){clearInterval(this.interval),this.interval=null,this.dispatchEvent("stoped")},toggle:function(){this.interval?this.stop():this.start()},pause:function(){this.stop()},resume:function(){this.start()},remove:function(){this.stop.call(this),f[this.instanceNumber]=null,delete this.$el.data().countdownInstance},setFinalDate:function(a){this.finalDate=b(a)},update:function(){if(0===this.$el.closest("html").length)return void this.remove();var b,c=void 0!==a._data(this.el,"events"),d=new Date;b=this.finalDate.getTime()-d.getTime(),b=Math.ceil(b/1e3),b=!this.options.elapse&&b<0?0:Math.abs(b),this.totalSecsLeft!==b&&c&&(this.totalSecsLeft=b,this.elapsed=d>=this.finalDate,this.offset={seconds:this.totalSecsLeft%60,minutes:Math.floor(this.totalSecsLeft/60)%60,hours:Math.floor(this.totalSecsLeft/60/60)%24,days:Math.floor(this.totalSecsLeft/60/60/24)%7,daysToWeek:Math.floor(this.totalSecsLeft/60/60/24)%7,daysToMonth:Math.floor(this.totalSecsLeft/60/60/24%30.4368),weeks:Math.floor(this.totalSecsLeft/60/60/24/7),weeksToMonth:Math.floor(this.totalSecsLeft/60/60/24/7)%4,months:Math.floor(this.totalSecsLeft/60/60/24/30.4368),years:Math.abs(this.finalDate.getFullYear()-d.getFullYear()),totalDays:Math.floor(this.totalSecsLeft/60/60/24),totalHours:Math.floor(this.totalSecsLeft/60/60),totalMinutes:Math.floor(this.totalSecsLeft/60),totalSeconds:this.totalSecsLeft},this.options.elapse||0!==this.totalSecsLeft?this.dispatchEvent("update"):(this.stop(),this.dispatchEvent("finish")))},dispatchEvent:function(b){var c=a.Event(b+".countdown");c.finalDate=this.finalDate,c.elapsed=this.elapsed,c.offset=a.extend({},this.offset),c.strftime=d(this.offset),this.$el.trigger(c)}}),a.fn.countdown=function(){var b=Array.prototype.slice.call(arguments,0);return this.each(function(){var c=a(this).data("countdown-instance");if(void 0!==c){var d=f[c],e=b[0];j.prototype.hasOwnProperty(e)?d[e].apply(d,b.slice(1)):null===String(e).match(/^[$A-Z_][0-9A-Z_$]*$/i)?(d.setFinalDate.call(d,e),d.start()):a.error("Method %s does not exist on jQuery.countdown".replace(/\%s/gi,e))}else new j(this,b[0],b[1])})}});;
"use strict";
(function ($) {
"use strict";
var combinators = [" ", ">", "+", "~"];
var fraternisers = ["+", "~"];
var complexTypes = ["ATTR", "PSEUDO", "ID", "CLASS"];
function grok(msobserver) {
if (!$.find.tokenize) {
msobserver.isCombinatorial = true;
msobserver.isFraternal = true;
msobserver.isComplex = true;
return;
}
msobserver.isCombinatorial = false;
msobserver.isFraternal = false;
msobserver.isComplex = false;
var token = $.find.tokenize(msobserver.selector);
for (var i = 0; i < token.length; i++) {
for (var j = 0; j < token[i].length; j++) {
if (combinators.indexOf(token[i][j].type) != -1) msobserver.isCombinatorial = true;
if (fraternisers.indexOf(token[i][j].type) != -1) msobserver.isFraternal = true;
if (complexTypes.indexOf(token[i][j].type) != -1) msobserver.isComplex = true;
}
}
}
var MutationSelectorObserver = function MutationSelectorObserver(selector, callback, options) {
this.selector = selector.trim();
this.callback = callback;
this.options = options;
grok(this);
};
var msobservers = [];
msobservers.initialize = function (selector, callback, options) {
var seen = [];
var callbackOnce = function callbackOnce() {
if (seen.indexOf(this) == -1) {
seen.push(this);
$(this).each(callback);
}
};
$(options.target).find(selector).each(callbackOnce);
var msobserver = new MutationSelectorObserver(selector, callbackOnce, options);
this.push(msobserver);
var observer = new MutationObserver(function (mutations) {
var matches = [];
for (var m = 0; m < mutations.length; m++) {
if (mutations[m].type == "attributes") {
if (mutations[m].target.matches(msobserver.selector)) matches.push(mutations[m].target);
if (msobserver.isFraternal) matches.push.apply(matches, mutations[m].target.parentElement.querySelectorAll(msobserver.selector));else matches.push.apply(matches, mutations[m].target.querySelectorAll(msobserver.selector));
}
if (mutations[m].type == "childList") {
for (var n = 0; n < mutations[m].addedNodes.length; n++) {
if (!(mutations[m].addedNodes[n] instanceof Element)) continue;
if (mutations[m].addedNodes[n].matches(msobserver.selector)) matches.push(mutations[m].addedNodes[n]);
if (msobserver.isFraternal) matches.push.apply(matches, mutations[m].addedNodes[n].parentElement.querySelectorAll(msobserver.selector));else matches.push.apply(matches, mutations[m].addedNodes[n].querySelectorAll(msobserver.selector));
}
}
}
for (var i = 0; i < matches.length; i++) {
$(matches[i]).each(msobserver.callback);
}
});
var defaultObeserverOpts = {
childList: true,
subtree: true,
attributes: msobserver.isComplex
};
observer.observe(options.target, options.observer || defaultObeserverOpts);
return observer;
};
$.fn.initialize = function (callback, options) {
return msobservers.initialize(this.selector, callback, $.extend({}, $.initialize.defaults, options));
};
$.initialize = function (selector, callback, options) {
return msobservers.initialize(selector, callback, $.extend({}, $.initialize.defaults, options));
};
$.initialize.defaults = {
target: document.documentElement,
observer: null
};
})(jQuery);
'use strict';
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
var HurrytimerAction = /*#__PURE__*/function () {
function HurrytimerAction(elementRef, config) {
_classCallCheck(this, HurrytimerAction);
this.elementRef = elementRef;
this.config = config;
}
_createClass(HurrytimerAction, [{
key: "changeStockStatus",
value: function changeStockStatus(campaignId, status) {
if (!jQuery.post) return;
jQuery.post(hurrytimer_ajax_object.ajax_url, {
nonce: hurrytimer_ajax_object.ajax_nonce,
action: 'change_stock_status',
status: status,
campaign_id: campaignId
});
}
}, {
key: "hasMessageAction",
value: function hasMessageAction() {
var _iterator = _createForOfIteratorHelper(this.config.actions),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var action = _step.value;
if (action['id'] == hurrytimer_ajax_object.actionsOptions.displayMessage) {
return true;
}
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
return false;
}
/**
* Hide campaign.
*/
}, {
key: "hide",
value: function hide() {
// We don't hide campaign if there is a message to display.
if (this.hasMessageAction()) {
return;
}
var stickyBar = this.elementRef.closest('.hurrytimer-sticky');
if (stickyBar.length) {
stickyBar.addClass('hurryt-loading');
} else {
this.elementRef.addClass('hurryt-loading');
}
}
/**
* Redirect to the given url.
* @param url
*/
}, {
key: "hideAddToCartButton",
value:
/**
* Hide "Add to cart" button.
* @return void
*/
function hideAddToCartButton() {
var $addToCartForm = jQuery('.single_add_to_cart_button').closest('form.cart');
if ($addToCartForm.length) {
$addToCartForm.remove();
}
}
/**
* Display message by replacing campaign content with the given message.
* @param message
*/
}, {
key: "displayMessage",
value: function displayMessage(message) {
var messageHtml = "").concat(message, "
");
this.elementRef.find('.hurrytimer-campaign-message').remove();
var stickyBar = this.elementRef.closest('.hurrytimer-sticky');
if (stickyBar.length) {
this.elementRef.addClass('hurryt-loading');
stickyBar.find('.hurrytimer-sticky-inner').append(messageHtml);
} else {
this.elementRef.addClass('hurryt-loading');
this.elementRef.after(messageHtml);
}
}
}, {
key: "expireCoupon",
value: function expireCoupon(code, message) {
// Remove coupon if applied but expired and the checkout form has not been placed yet.
jQuery('form.checkout').on('checkout_place_order', function (event) {
validate_expired_coupon_checkout(event);
});
document.addEventListener("DOMContentLoaded", function () {
validate_expired_coupon_checkout();
});
function validate_expired_coupon_checkout(event) {
// Get applied coupons
var appliedCoupons = jQuery('.woocommerce-checkout-review-order-table').find('.cart-discount');
var isCouponExpired = false;
appliedCoupons.each(function () {
var couponCode = jQuery(this).find('.woocommerce-remove-coupon').data('coupon');
if (couponCode.toLowerCase() === code.toLowerCase()) {
isCouponExpired = true;
return false;
}
});
if (isCouponExpired) {
var errorHtml = '' + hurrytimer_ajax_object.invalid_checkout_coupon_message.replace('""', code) + ' ';
var noticeGroup = jQuery('.woocommerce-NoticeGroup-checkout');
if (noticeGroup.length) {
noticeGroup.html(errorHtml);
} else {
var noticeGroupHtml = "".concat(errorHtml, "
");
jQuery('form.checkout').before(noticeGroupHtml);
jQuery('html, body').animate({
scrollTop: jQuery('.woocommerce-NoticeGroup-checkout').offset().top - 100
});
}
var container = jQuery('.woocommerce-checkout-review-order');
container.addClass('processing').block({
message: null,
overlayCSS: {
background: '#fff',
opacity: 0.6
}
});
jQuery.ajax({
type: 'POST',
url: wc_checkout_params.wc_ajax_url.toString().replace('%%endpoint%%', 'remove_coupon'),
data: {
security: wc_checkout_params.remove_coupon_nonce,
coupon: code
},
success: function success(response) {
container.removeClass('processing').unblock();
if (response) {
jQuery(document.body).trigger('removed_coupon_in_checkout', [code]);
jQuery(document.body).trigger('update_checkout', {
update_shipping_method: false
});
}
},
error: function error(jqXHR) {
if (wc_checkout_params.debug_mode) {
console.log(jqXHR.responseText);
}
}
});
if (event) {
event.preventDefault();
}
return false;
}
} // WC 7.5.x
var originalFetch = window.fetch;
window.fetch = function (url, options) {
if (url.indexOf('wc-ajax=apply_coupon') !== -1) {
var body = options.body;
var searchParams = new URLSearchParams(body);
var couponCode = searchParams.get('coupon_code');
if (typeof couponCode === 'string' && couponCode.toLowerCase() === code.toLowerCase()) {
jQuery('.woocommerce-error').remove();
var $target = jQuery('.woocommerce-notices-wrapper:first') || jQuery('.cart-empty').closest('.woocommerce') || jQuery('.woocommerce-cart-form');
$target.prepend(""));
jQuery('.checkout_coupon').removeClass('processing').unblock();
jQuery('.woocommerce-cart-form').removeClass('processing').unblock();
return Promise.reject(new Error(message));
}
} else if (url.indexOf('/wc/store/v1/batch') !== -1) {
var body = options.body;
var requests = JSON.parse(body).requests || [];
var abortController = new AbortController();
options.signal = abortController.signal;
requests.forEach(function (req) {
if (req.path === '/wc/store/v1/cart/apply-coupon') {
var couponCode = req.body.code;
if (typeof couponCode === 'string' && couponCode.toLowerCase() === code.toLowerCase()) {
abortController.abort();
throw new Error(message);
}
}
});
}
return originalFetch.apply(this, [url, options]);
}; // WC 7.4.x
jQuery.ajaxPrefilter(function (opts, originOpts, jqXHR) {
if (opts.url.indexOf('wc-ajax=apply_coupon') === -1) return;
if (typeof originOpts.data.coupon_code !== 'string' || typeof code !== 'string' || originOpts.data.coupon_code.toLowerCase() !== code.toLowerCase()) return;
jqXHR.abort();
jQuery('.woocommerce-error').remove();
var $target = jQuery('.woocommerce-notices-wrapper:first') || jQuery('.cart-empty').closest('.woocommerce') || jQuery('.woocommerce-cart-form');
$target.prepend(""));
jQuery('.checkout_coupon').removeClass('processing').unblock();
jQuery('.woocommerce-cart-form').removeClass('processing').unblock();
});
}
}], [{
key: "redirect",
value: function redirect(url) {
document.body.style.opacity = '0';
document.body.style.display = 'none';
if (url.trim().length === 0) {
return;
}
if (hurrytimer_ajax_object.redirect_no_back) {
window.location.replace(url);
} else {
window.location.href = url;
}
}
}]);
return HurrytimerAction;
}();
"use strict";
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
/*
* global hurrytimer_ajax_object
*/
var HurrytimerCampaign = /*#__PURE__*/function () {
function HurrytimerCampaign(elementRef, config, state) {
_classCallCheck(this, HurrytimerCampaign);
this.config = config;
this.elementRef = elementRef;
this.actionsOptions = hurrytimer_ajax_object.actionsOptions;
this.restartOptions = hurrytimer_ajax_object.restartOptions;
this.recurTimeoutId = -1;
this.recurIntervalId = -1;
this.retryCount = 0;
this.startEventDispatched = false;
this.state = state;
this.restartIntervalId = -1;
this.currentEndDate = null;
}
/**
* @param endDateInMS
* @return void
*/
_createClass(HurrytimerCampaign, [{
key: "setCookie",
value: function setCookie(endDateInMS) {
var options = {
expires: 365
};
if (hurrytimer_ajax_object.COOKIEPATH) {
options.path = hurrytimer_ajax_object.COOKIEPATH;
}
if (hurrytimer_ajax_object.COOKIE_DOMAIN) {
options.domain = hurrytimer_ajax_object.COOKIE_DOMAIN;
}
Cookies.set(this.config.cookieName, endDateInMS, options);
if (this.config.reset_token) {
Cookies.set("".concat(this.config.cookieName, "_reset_token"), this.config.reset_token, {
expires: 365
});
}
}
/**
* Returns end date for the given duration.
* @return {Date}
*/
}, {
key: "getEndDate",
value: function getEndDate() {
// Evergreen or recurring
if (this.config.isRegular) {
return new Date(this.config.endDate);
}
var date = new Date(parseInt(this.config.endDate));
if (!this.isValidDate(date) || !this.config.endDate || this.should_reset() || this.allowRestart() || this.config.reload_reset) {
if (_typeof(date) === 'object' && date.setTime != undefined) {
this.unDismissStickyBar();
date.setTime(this.calculateDate().getTime());
}
}
this.setCookie(date.getTime());
this.updateTimestamp(date.getTime());
this.currentEndDate = date;
return date;
}
/**
* Check if the given date is valid.
* @param {*} d
*/
}, {
key: "isValidDate",
value: function isValidDate(d) {
return Object.prototype.toString.call(d) === '[object Date]' && !isNaN(d.getTime());
}
/**
* This is useful to force timestamp update when the page is cached.
*/
}, {
key: "updateTimestamp",
value: function updateTimestamp(endDateTimeTS) {
if (jQuery.ajax === undefined) return;
var args = {
url: hurrytimer_ajax_object.ajax_url,
async: true,
type: 'POST',
data: {
nonce: hurrytimer_ajax_object.ajax_nonce,
timestamp: endDateTimeTS,
cid: this.config.id,
action: 'hurryt/update_timestamp'
}
};
jQuery.ajax(args);
}
/**
* Returns true if the campaign should reset.
*
* @return {number}
*/
}, {
key: "should_reset",
value: function should_reset() {
return this.config.should_reset;
}
/**
* Remove sticky bar dismiss if available for current given campaign.
*/
}, {
key: "unDismissStickyBar",
value: function unDismissStickyBar() {
Cookies.remove("_ht_CDT-".concat(this.config.id, "_dismissed"));
}
/**
* Returns true if the campaign will restart.
* @return {boolean}
*/
}, {
key: "allowRestart",
value: function allowRestart() {
if (this.config.isRegular) return false;
return this.isExpired() && (this.allowRestartImmediately() || this.allowRestartAfterReload() || this.durationSinceExpiryIsOver());
}
/**
* Campaign expired.
*/
}, {
key: "isExpired",
value: function isExpired() {
var today = new Date();
return this.config.endDate < today;
}
}, {
key: "duratinSinceExpiration",
value: function duratinSinceExpiration() {
var endDate = this.currentEndDate || this.config.endDate;
if (!endDate) {
return 0;
}
var now = new Date();
var diff = now.getTime() - endDate;
return diff / 1000;
}
}, {
key: "durationSinceExpiryIsOver",
value: function durationSinceExpiryIsOver() {
return this.shouldRestartAfterDuration() && this.duratinSinceExpiration() >= this.config.restart_duration;
}
/**
* Restart on refresh.
*
* @returns {boolean}
*/
}, {
key: "allowRestartAfterReload",
value: function allowRestartAfterReload() {
return parseInt(this.config.restart) === parseInt(this.restartOptions.afterReload);
}
/**
* Restart immediatly.
*
* @returns {boolean}
*/
}, {
key: "allowRestartImmediately",
value: function allowRestartImmediately() {
return parseInt(this.config.restart) === parseInt(this.restartOptions.immediately);
}
}, {
key: "shouldRestartAfterDuration",
value: function shouldRestartAfterDuration() {
return this.config.restart == this.restartOptions.after_duration;
}
/**
* Returns true if the campaign has an action.
*/
}, {
key: "hasAction",
value: function hasAction() {
return this.config.actions.length;
}
/**
* Calculate date based on the given duration.
* @return {Date}
*/
}, {
key: "calculateDate",
value: function calculateDate() {
var date = new Date();
date.setSeconds(date.getSeconds() + this.config.duration);
return date;
}
/**
* Run registered actions.
*/
}, {
key: "executeActions",
value: function executeActions() {
if (parseInt(hurrytimer_ajax_object.disable_actions) === 1) {
return false;
} // No action, abort.
if (this.hasAction()) {
var _iterator = _createForOfIteratorHelper(this.config.actions),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var action = _step.value;
var actionManager = new HurrytimerAction(this.elementRef, this.config);
if (this.config.run_in_background) {
if (action['id'] == this.actionsOptions.expire_coupon) {
actionManager.expireCoupon(action['coupon'], hurrytimer_ajax_object.expire_coupon_message);
}
} else {
switch (action['id']) {
case this.actionsOptions.redirect:
HurrytimerAction.redirect(action['redirectUrl']);
break;
case this.actionsOptions.displayMessage:
actionManager.displayMessage(action['message']);
break;
case this.actionsOptions.hideAddToCartButton:
actionManager.hideAddToCartButton();
break;
case this.actionsOptions.stockStatus:
if (this.config.isRegular) {
actionManager.changeStockStatus(this.config.id, action['wcStockStatus']);
}
break;
case this.actionsOptions.hide:
actionManager.hide();
break;
}
}
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
}
}
}, {
key: "maybeShowCampaign",
value: function maybeShowCampaign() {
if (this.elementRef.length && !this.config.run_in_background) {
// Remove message tag if present.
var $message = this.elementRef.parent().find(".hurrytimer-campaign-message[data-id=\"".concat(this.config.id, "\"]"));
if ($message.length) {
$message.remove();
}
this.elementRef.removeClass('hurryt-loading');
}
var stickyBar = this.elementRef.closest('.hurrytimer-sticky');
if (stickyBar.length) {
// Remove message tag if present.
var _$message = this.elementRef.find('.hurrytimer-campaign-message');
if (_$message.length) {
_$message.remove();
}
stickyBar.removeClass('hurryt-loading');
}
}
/**
* Maybe run countdown timer.
*/
}, {
key: "waitThenRun",
value: function waitThenRun() {
var _this = this;
this.restartIntervalId = setInterval(function () {
if (_this.durationSinceExpiryIsOver()) {
clearInterval(_this.restartIntervalId);
_this.run();
}
}, 1000);
}
}, {
key: "run",
value: function run() {
var _this2 = this;
this.triggerInitEvent();
this.elementRef.countdown(this.getEndDate(), function (e) {
return _this2.onCountdownUpdate(e);
});
var stickyBar = this.elementRef.closest('.hurrytimer-sticky');
this.handleStickyBar(stickyBar);
}
/**
* Handle sticky bar visibility.
* @param {*} stickyBar
*/
}, {
key: "handleStickyBar",
value: function handleStickyBar(stickyBar) {
var _this3 = this;
if (stickyBar.length === 0) return;
var dismissCookie = Cookies.get("_ht_CDT-".concat(this.config.id, "_dismissed")); // Stick bar hasn't been dismissed.
if (dismissCookie == undefined) {
stickyBar.on('click', '.hurrytimer-sticky-close', function () {
return _this3.onStickyBarDismiss(stickyBar);
});
} else {
this.hideStickyBar(stickyBar);
}
}
/**
* Hide Sticky Bar
* @param {*} stickyBar
*/
}, {
key: "hideStickyBar",
value: function hideStickyBar(stickyBar) {
if (stickyBar.length === 0) return;
var isTopPinned = stickyBar.css('top') === '0px';
stickyBar.remove();
if (isTopPinned) {
jQuery('body').css('margin-top', 0);
} else {
jQuery('body').css('margin-bottom', 0);
}
}
/**
* Handle sticky bar dismiss.
*/
}, {
key: "onStickyBarDismiss",
value: function onStickyBarDismiss(stickyBar) {
this.hideStickyBar(stickyBar);
Cookies.set("_ht_CDT-".concat(this.config.id, "_dismissed"), '1', {
expires: +this.config.sticky_bar_hide_timeout
});
}
/**
* Countdown timer start callback.
* @param event
*/
}, {
key: "onCountdownUpdate",
value: function onCountdownUpdate(event) {
this.render(event);
this.maybeShowCampaign();
if (event.elapsed && event.type === 'finish') {
this.executeActions();
this.triggerFinishEvent();
this.maybeRecur();
if (this.allowRestartImmediately()) {
this.run();
}
if (this.shouldRestartAfterDuration()) {
this.waitThenRun();
}
}
}
}, {
key: "triggerFinishEvent",
value: function triggerFinishEvent() {
var params = {
id: this.config.id,
mode: this.config.mode,
endAt: this.config.endDate
};
this.elementRef.trigger('hurryt:finished', params);
}
}, {
key: "triggerInitEvent",
value: function triggerInitEvent() {
var params = {
id: this.config.id,
mode: this.config.mode,
endAt: this.config.endDate
};
jQuery('.hurrytimer-campaign').trigger('hurryt:init', params);
}
}, {
key: "triggerStartEvent",
value: function triggerStartEvent() {
if (!this.startEventDispatched) {
var params = {
id: this.config.id,
mode: this.config.mode,
endAt: this.config.endDate
};
this.elementRef.trigger('hurryt:started', params);
this.startEventDispatched = true;
}
}
/**
* Render countdown timer.
* @param event
*/
}, {
key: "render",
value: function render(event) {
if (hurrytimer_ajax_object.run_in_background) {
this.elementRef.html('');
} else {
this.elementRef.find('.hurrytimer-timer').html(event.strftime(this.config.template));
}
this.triggerStartEvent();
}
/**
* Calculate the remaining time until the next recurrence.
*
* @return int
*/
}, {
key: "willRecurNow",
value: function willRecurNow() {
var now = new Date();
var prev_recurrence_time = this.getEndDate().getTime() + this.config.timeToNextRecurrence * 1000;
return now.getTime() >= prev_recurrence_time;
}
/**
* Run the next recurrence if available.
*/
}, {
key: "maybeRecur",
value: function maybeRecur() {
var _this4 = this;
// Not a recurring campaign.
if (!this.config.recurr) return; // the jQuery ajax function is required to fetch the next recurrence.
if (jQuery.ajax === undefined) return;
clearTimeout(this.recurTimeoutId);
clearInterval(this.recurIntervalId);
this.recurIntervalId = setInterval(function () {
if (!_this4.willRecurNow()) {
return;
}
clearInterval(_this4.recurIntervalId);
jQuery.ajax({
url: hurrytimer_ajax_object.ajax_url,
data: {
action: 'next_recurrence',
nonce: hurrytimer_ajax_object.ajax_nonce,
id: _this4.config.id
},
error: function error() {
if (_this4.retryCount === 10) return;
_this4.retryCount++;
setTimeout(function () {
_this4.maybeRecur();
}, 1000);
},
success: function success(_ref) {
var data = _ref.data;
_this4.retryCount = 0;
if (!data) return;
if (isNaN(data.endTimestamp)) {
return;
}
_this4.config.endDate = data.endTimestamp; // TODO: Handle lateness:
// retry for one minute if the received end date is still expired.
_this4.run();
}
});
}, 1000);
}
}]);
return HurrytimerCampaign;
}();
'use strict';
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
(function ($) {
// TODO: delete `state`.
var state = {
reseting: []
};
var $body = $('body');
/*
This will listen for any new `.hurrytimer-campaign` added later to DOM.
*/
$.initialize('.hurrytimer-campaign', function () {
// Dot not run campaigns when they are inside a Elementor popup.
if ($(this).parents('div[data-elementor-type=popup]').length === 0) {
runCampaign($(this));
}
});
$(document).on('elementor/popup/show', function (event, id) {
// Run only campaigns within a Elementor popup.
$(".elementor-".concat(id, " .hurrytimer-campaign")).each(function () {
runCampaign($(this));
});
});
/**
*
* @param $campaign jQuery
*/
function runCampaign($campaign) {
// TODO: Inject config object in the tag or inline.
var config = $campaign.data('config');
if (config === undefined) return; // Check if the config object is corrupt.
if (_typeof(config) !== 'object') {
config = JSON.parse(config.replace(/\s+/g, " "));
}
$campaign.removeAttr('data-config');
$campaign.trigger('hurryt:pre-init', {
id: config.id,
mode: config.mode,
endAt: config.endAt
});
var $sticky = $campaign.closest('.hurrytimer-sticky'); // Display sticky bar if present.
if ($sticky.length) {
$body.append($sticky);
$(window).resize(function () {
if ($sticky.css('top') === '0px') {
// Pin at the top.
$body.css('margin-top', $sticky.outerHeight());
} else {
// Pin at the bottom.
$body.css('margin-bottom', $sticky.outerHeight());
}
});
setTimeout(function () {
$(window).trigger('resize');
});
}
new HurrytimerCampaign($campaign, config, state).run();
}
})(jQuery);;
/*! jQuery UI - v1.13.3 - 2024-04-26
* https://jqueryui.com
* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
* Copyright jQuery Foundation and other contributors; Licensed MIT */
!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(x){"use strict";var t,e,i,n,W,C,o,s,r,l,a,h,u;function E(t,e,i){return[parseFloat(t[0])*(a.test(t[0])?e/100:1),parseFloat(t[1])*(a.test(t[1])?i/100:1)]}function L(t,e){return parseInt(x.css(t,e),10)||0}function N(t){return null!=t&&t===t.window}x.ui=x.ui||{},x.ui.version="1.13.3",
/*!
* jQuery UI :data 1.13.3
* https://jqueryui.com
*
* Copyright OpenJS Foundation and other contributors
* Released under the MIT license.
* https://jquery.org/license
*/
x.extend(x.expr.pseudos,{data:x.expr.createPseudo?x.expr.createPseudo(function(e){return function(t){return!!x.data(t,e)}}):function(t,e,i){return!!x.data(t,i[3])}}),
/*!
* jQuery UI Disable Selection 1.13.3
* https://jqueryui.com
*
* Copyright OpenJS Foundation and other contributors
* Released under the MIT license.
* https://jquery.org/license
*/
x.fn.extend({disableSelection:(t="onselectstart"in document.createElement("div")?"selectstart":"mousedown",function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}),enableSelection:function(){return this.off(".ui-disableSelection")}}),
/*!
* jQuery UI Focusable 1.13.3
* https://jqueryui.com
*
* Copyright OpenJS Foundation and other contributors
* Released under the MIT license.
* https://jquery.org/license
*/
x.ui.focusable=function(t,e){var i,n,o,s=t.nodeName.toLowerCase();return"area"===s?(o=(i=t.parentNode).name,!(!t.href||!o||"map"!==i.nodeName.toLowerCase())&&0<(i=x("img[usemap='#"+o+"']")).length&&i.is(":visible")):(/^(input|select|textarea|button|object)$/.test(s)?(n=!t.disabled)&&(o=x(t).closest("fieldset")[0])&&(n=!o.disabled):n="a"===s&&t.href||e,n&&x(t).is(":visible")&&function(t){var e=t.css("visibility");for(;"inherit"===e;)t=t.parent(),e=t.css("visibility");return"visible"===e}(x(t)))},x.extend(x.expr.pseudos,{focusable:function(t){return x.ui.focusable(t,null!=x.attr(t,"tabindex"))}}),x.fn._form=function(){return"string"==typeof this[0].form?this.closest("form"):x(this[0].form)},
/*!
* jQuery UI Form Reset Mixin 1.13.3
* https://jqueryui.com
*
* Copyright OpenJS Foundation and other contributors
* Released under the MIT license.
* https://jquery.org/license
*/
x.ui.formResetMixin={_formResetHandler:function(){var e=x(this);setTimeout(function(){var t=e.data("ui-form-reset-instances");x.each(t,function(){this.refresh()})})},_bindFormResetHandler:function(){var t;this.form=this.element._form(),this.form.length&&((t=this.form.data("ui-form-reset-instances")||[]).length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t))},_unbindFormResetHandler:function(){var t;this.form.length&&((t=this.form.data("ui-form-reset-instances")).splice(x.inArray(this,t),1),t.length?this.form.data("ui-form-reset-instances",t):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset"))}},x.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),
/*!
* jQuery UI Support for jQuery core 1.8.x and newer 1.13.3
* https://jqueryui.com
*
* Copyright OpenJS Foundation and other contributors
* Released under the MIT license.
* https://jquery.org/license
*
*/
x.expr.pseudos||(x.expr.pseudos=x.expr[":"]),x.uniqueSort||(x.uniqueSort=x.unique),x.escapeSelector||(e=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,i=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},x.escapeSelector=function(t){return(t+"").replace(e,i)}),x.fn.even&&x.fn.odd||x.fn.extend({even:function(){return this.filter(function(t){return t%2==0})},odd:function(){return this.filter(function(t){return t%2==1})}}),
/*!
* jQuery UI Keycode 1.13.3
* https://jqueryui.com
*
* Copyright OpenJS Foundation and other contributors
* Released under the MIT license.
* https://jquery.org/license
*/
x.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},
/*!
* jQuery UI Labels 1.13.3
* https://jqueryui.com
*
* Copyright OpenJS Foundation and other contributors
* Released under the MIT license.
* https://jquery.org/license
*/
x.fn.labels=function(){var t,e,i;return this.length?this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(e=this.eq(0).parents("label"),(t=this.attr("id"))&&(i=(i=this.eq(0).parents().last()).add((i.length?i:this).siblings()),t="label[for='"+x.escapeSelector(t)+"']",e=e.add(i.find(t).addBack(t))),this.pushStack(e)):this.pushStack([])},x.ui.plugin={add:function(t,e,i){var n,o=x.ui[t].prototype;for(n in i)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([e,i[n]])},call:function(t,e,i,n){var o,s=t.plugins[e];if(s&&(n||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(o=0;o
")).children()[0],x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),n=t-i)},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthW(C(n),C(o))?s.important="horizontal":s.important="vertical",f.using.call(this,t,s)}),r.offset(x.extend(h,{using:t}))})):h.apply(this,arguments)},x.ui.position={fit:{left:function(t,e){var i,n=e.within,o=n.isWindow?n.scrollLeft:n.offset.left,n=n.width,s=t.left-e.collisionPosition.marginLeft,r=o-s,l=s+e.collisionWidth-n-o;e.collisionWidth>n?0o?0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=c++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,n,o,s=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(s={},t=(i=t.split(".")).shift(),i.length){for(n=s[t]=x.widget.extend({},this.options[t]),o=0;o?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,e=this.tablist.children(":has(a[href])");t.disabled=l.map(e.filter(".ui-state-disabled"),function(t){return e.index(t)}),this._processTabs(),!1!==t.active&&this.anchors.length?this.active.length&&!l.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=l()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=l()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var o=this,t=this.tabs,e=this.anchors,i=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(t){l(this).is(".ui-state-disabled")&&t.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){l(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return l("a",this)[0]}).attr({tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=l(),this.anchors.each(function(t,e){var i,a,s,n=l(e).uniqueId().attr("id"),h=l(e).closest("li"),r=h.attr("aria-controls");o._isLocal(e)?(s=(i=e.hash).substring(1),a=o.element.find(o._sanitizeSelector(i))):(s=h.attr("aria-controls")||l({}).uniqueId()[0].id,(a=o.element.find(i="#"+s)).length||(a=o._createPanel(s)).insertAfter(o.panels[t-1]||o.tablist),a.attr("aria-live","polite")),a.length&&(o.panels=o.panels.add(a)),r&&h.data("ui-tabs-aria-controls",r),h.attr({"aria-controls":s,"aria-labelledby":n}),a.attr("aria-labelledby",n)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),t&&(this._off(t.not(this.tabs)),this._off(e.not(this.anchors)),this._off(i.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(t){return l("").attr("id",t).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(t){var e,i;for(Array.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1),i=0;e=this.tabs[i];i++)e=l(e),!0===t||-1!==l.inArray(i,t)?(e.attr("aria-disabled","true"),this._addClass(e,null,"ui-state-disabled")):(e.removeAttr("aria-disabled"),this._removeClass(e,null,"ui-state-disabled"));this.options.disabled=t,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===t)},_setupEvents:function(t){var i={};t&&l.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,e=this.element.parent();"fill"===t?(i=e.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=l(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=l(this).outerHeight(!0)}),this.panels.each(function(){l(this).height(Math.max(0,i-l(this).innerHeight()+l(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,l(this).height("").height())}).height(i))},_eventHandler:function(t){var e=this.options,i=this.active,a=l(t.currentTarget).closest("li"),s=a[0]===i[0],n=s&&e.collapsible,h=n?l():this._getPanelForTab(a),r=i.length?this._getPanelForTab(i):l(),i={oldTab:i,oldPanel:r,newTab:n?l():a,newPanel:h};t.preventDefault(),a.hasClass("ui-state-disabled")||a.hasClass("ui-tabs-loading")||this.running||s&&!e.collapsible||!1===this._trigger("beforeActivate",t,i)||(e.active=!n&&this.tabs.index(a),this.active=s?l():a,this.xhr&&this.xhr.abort(),r.length||h.length||l.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(a),t),this._toggle(t,i))},_toggle:function(t,e){var i=this,a=e.newPanel,s=e.oldPanel;function n(){i.running=!1,i._trigger("activate",t,e)}function h(){i._addClass(e.newTab.closest("li"),"ui-tabs-active","ui-state-active"),a.length&&i.options.show?i._show(a,i.options.show,n):(a.show(),n())}this.running=!0,s.length&&this.options.hide?this._hide(s,this.options.hide,function(){i._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),h()}):(this._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),s.hide(),h()),s.attr("aria-hidden","true"),e.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),a.length&&s.length?e.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===l(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr("aria-hidden","false"),e.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var t=this._findActive(t);t[0]!==this.active[0]&&(t=(t=t.length?t:this.active).find(".ui-tabs-anchor")[0],this._eventHandler({target:t,currentTarget:t,preventDefault:l.noop}))},_findActive:function(t){return!1===t?l():this.tabs.eq(t)},_getIndex:function(t){return t="string"==typeof t?this.anchors.index(this.anchors.filter("[href$='"+l.escapeSelector(t)+"']")):t},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){l.data(this,"ui-tabs-destroy")?l(this).remove():l(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var t=l(this),e=t.data("ui-tabs-aria-controls");e?t.attr("aria-controls",e).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var t=this.options.disabled;!1!==t&&(t=void 0!==i&&(i=this._getIndex(i),Array.isArray(t)?l.map(t,function(t){return t!==i?t:null}):l.map(this.tabs,function(t,e){return e!==i?e:null})),this._setOptionDisabled(t))},disable:function(t){var e=this.options.disabled;if(!0!==e){if(void 0===t)e=!0;else{if(t=this._getIndex(t),-1!==l.inArray(t,e))return;e=Array.isArray(e)?l.merge([t],e).sort():[t]}this._setOptionDisabled(e)}},load:function(t,a){t=this._getIndex(t);function s(t,e){"abort"===e&&n.panels.stop(!1,!0),n._removeClass(i,"ui-tabs-loading"),h.removeAttr("aria-busy"),t===n.xhr&&delete n.xhr}var n=this,i=this.tabs.eq(t),t=i.find(".ui-tabs-anchor"),h=this._getPanelForTab(i),r={tab:i,panel:h};this._isLocal(t[0])||(this.xhr=l.ajax(this._ajaxSettings(t,a,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(i,"ui-tabs-loading"),h.attr("aria-busy","true"),this.xhr.done(function(t,e,i){setTimeout(function(){h.html(t),n._trigger("load",a,r),s(i,e)},1)}).fail(function(t,e){setTimeout(function(){s(t,e)},1)})))},_ajaxSettings:function(t,i,a){var s=this;return{url:t.attr("href").replace(/#.*$/,""),beforeSend:function(t,e){return s._trigger("beforeLoad",i,l.extend({jqXHR:t,ajaxSettings:e},a))}}},_getPanelForTab:function(t){t=l(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+t))}}),!1!==l.uiBackCompat&&l.widget("ui.tabs",l.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),l.ui.tabs});;
/*!
* jQuery UI Accordion 1.13.3
* https://jqueryui.com
*
* Copyright OpenJS Foundation and other contributors
* Released under the MIT license.
* https://jquery.org/license
*/
!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","../version","../keycode","../unique-id","../widget"],e):e(jQuery)}(function(o){"use strict";return o.widget("ui.accordion",{version:"1.13.3",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:function(e){return e.find("> li > :first-child").add(e.find("> :not(li)").even())},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=o(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||!1!==e.active&&null!=e.active||(e.active=0),this._processPanels(),e.active<0&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():o()}},_createIcons:function(){var e,t=this.options.icons;t&&(e=o("
"),this._addClass(e,"ui-accordion-header-icon","ui-icon "+t.header),e.prependTo(this.headers),e=this.active.children(".ui-accordion-header-icon"),this._removeClass(e,t.header)._addClass(e,null,t.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){"active"===e?this._activate(t):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||!1!==this.options.active||this._activate(0),"icons"===e&&(this._destroyIcons(),t)&&this._createIcons())},_setOptionDisabled:function(e){this._super(e),this.element.attr("aria-disabled",e),this._toggleClass(null,"ui-state-disabled",!!e),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!e)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var t=o.ui.keyCode,i=this.headers.length,a=this.headers.index(e.target),s=!1;switch(e.keyCode){case t.RIGHT:case t.DOWN:s=this.headers[(a+1)%i];break;case t.LEFT:case t.UP:s=this.headers[(a-1+i)%i];break;case t.SPACE:case t.ENTER:this._eventHandler(e);break;case t.HOME:s=this.headers[0];break;case t.END:s=this.headers[i-1]}s&&(o(e.target).attr("tabIndex",-1),o(s).attr("tabIndex",0),o(s).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===o.ui.keyCode.UP&&e.ctrlKey&&o(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),!1===e.active&&!0===e.collapsible||!this.headers.length?(e.active=!1,this.active=o()):!1===e.active?this._activate(0):this.active.length&&!o.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=o()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var e=this.headers,t=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),t&&(this._off(e.not(this.headers)),this._off(t.not(this.panels)))},_refresh:function(){var i,e=this.options,t=e.heightStyle,a=this.element.parent();this.active=this._findActive(e.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var e=o(this),t=e.uniqueId().attr("id"),i=e.next(),a=i.uniqueId().attr("id");e.attr("aria-controls",a),i.attr("aria-labelledby",t)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(e.event),"fill"===t?(i=a.height(),this.element.siblings(":visible").each(function(){var e=o(this),t=e.css("position");"absolute"!==t&&"fixed"!==t&&(i-=e.outerHeight(!0))}),this.headers.each(function(){i-=o(this).outerHeight(!0)}),this.headers.next().each(function(){o(this).height(Math.max(0,i-o(this).innerHeight()+o(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.headers.next().each(function(){var e=o(this).is(":visible");e||o(this).show(),i=Math.max(i,o(this).css("height","").height()),e||o(this).hide()}).height(i))},_activate:function(e){e=this._findActive(e)[0];e!==this.active[0]&&(e=e||this.active[0],this._eventHandler({target:e,currentTarget:e,preventDefault:o.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):o()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&o.each(e.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var t=this.options,i=this.active,a=o(e.currentTarget),s=a[0]===i[0],n=s&&t.collapsible,h=n?o():a.next(),r=i.next(),r={oldHeader:i,oldPanel:r,newHeader:n?o():a,newPanel:h};e.preventDefault(),s&&!t.collapsible||!1===this._trigger("beforeActivate",e,r)||(t.active=!n&&this.headers.index(a),this.active=s?o():a,this._toggle(r),this._removeClass(i,"ui-accordion-header-active","ui-state-active"),t.icons&&(h=i.children(".ui-accordion-header-icon"),this._removeClass(h,null,t.icons.activeHeader)._addClass(h,null,t.icons.header)),s)||(this._removeClass(a,"ui-accordion-header-collapsed")._addClass(a,"ui-accordion-header-active","ui-state-active"),t.icons&&(e=a.children(".ui-accordion-header-icon"),this._removeClass(e,null,t.icons.header)._addClass(e,null,t.icons.activeHeader)),this._addClass(a.next(),"ui-accordion-content-active"))},_toggle:function(e){var t=e.newPanel,i=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=t,this.prevHide=i,this.options.animate?this._animate(t,i,e):(i.hide(),t.show(),this._toggleComplete(e)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),t.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):t.length&&this.headers.filter(function(){return 0===parseInt(o(this).attr("tabIndex"),10)}).attr("tabIndex",-1),t.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(e,i,t){function a(){n._toggleComplete(t)}var s,n=this,h=0,r=e.css("box-sizing"),o=e.length&&(!i.length||e.index(){setTimeout((()=>{this.progress(t,e,i)}))};this.images.forEach((function(e){e.once("progress",t),e.check()}))},n.prototype.progress=function(t,e,i){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!t.isLoaded,this.emitEvent("progress",[this,t,e]),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,t),this.progressedCount===this.images.length&&this.complete(),this.options.debug&&s&&s.log(`progress: ${i}`,t,e)},n.prototype.complete=function(){let t=this.hasAnyBroken?"fail":"done";if(this.isComplete=!0,this.emitEvent(t,[this]),this.emitEvent("always",[this]),this.jqDeferred){let t=this.hasAnyBroken?"reject":"resolve";this.jqDeferred[t](this)}},h.prototype=Object.create(e.prototype),h.prototype.check=function(){this.getIsImageComplete()?this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,this.img.crossOrigin&&(this.proxyImage.crossOrigin=this.img.crossOrigin),this.proxyImage.addEventListener("load",this),this.proxyImage.addEventListener("error",this),this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.proxyImage.src=this.img.currentSrc||this.img.src)},h.prototype.getIsImageComplete=function(){return this.img.complete&&this.img.naturalWidth},h.prototype.confirm=function(t,e){this.isLoaded=t;let{parentNode:i}=this.img,s="PICTURE"===i.nodeName?i:this.img;this.emitEvent("progress",[this,s,e])},h.prototype.handleEvent=function(t){let e="on"+t.type;this[e]&&this[e](t)},h.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},h.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},h.prototype.unbindEvents=function(){this.proxyImage.removeEventListener("load",this),this.proxyImage.removeEventListener("error",this),this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},d.prototype=Object.create(h.prototype),d.prototype.check=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.url,this.getIsImageComplete()&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},d.prototype.unbindEvents=function(){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},d.prototype.confirm=function(t,e){this.isLoaded=t,this.emitEvent("progress",[this,this.element,e])},n.makeJQueryPlugin=function(e){(e=e||t.jQuery)&&(i=e,i.fn.imagesLoaded=function(t,e){return new n(this,t,e).jqDeferred.promise(i(this))})},n.makeJQueryPlugin(),n}));;
/*! This file is auto-generated */
/*!
* Masonry PACKAGED v4.2.2
* Cascading grid layout library
* https://masonry.desandro.com
* MIT License
* by David DeSandro
*/
!function(t,e){"function"==typeof define&&define.amd?define("jquery-bridget/jquery-bridget",["jquery"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("jquery")):t.jQueryBridget=e(t,t.jQuery)}(window,function(t,e){"use strict";function i(i,r,a){function h(t,e,n){var o,r="$()."+i+'("'+e+'")';return t.each(function(t,h){var u=a.data(h,i);if(!u)return void s(i+" not initialized. Cannot call methods, i.e. "+r);var d=u[e];if(!d||"_"==e.charAt(0))return void s(r+" is not a valid method");var l=d.apply(u,n);o=void 0===o?l:o}),void 0!==o?o:t}function u(t,e){t.each(function(t,n){var o=a.data(n,i);o?(o.option(e),o._init()):(o=new r(n,e),a.data(n,i,o))})}a=a||e||t.jQuery,a&&(r.prototype.option||(r.prototype.option=function(t){a.isPlainObject(t)&&(this.options=a.extend(!0,this.options,t))}),a.fn[i]=function(t){if("string"==typeof t){var e=o.call(arguments,1);return h(this,t,e)}return u(this,t),this},n(a))}function n(t){!t||t&&t.bridget||(t.bridget=i)}var o=Array.prototype.slice,r=t.console,s="undefined"==typeof r?function(){}:function(t){r.error(t)};return n(e||t.jQuery),i}),function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var i=this._events=this._events||{},n=i[t]=i[t]||[];return-1==n.indexOf(e)&&n.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var i=this._onceEvents=this._onceEvents||{},n=i[t]=i[t]||{};return n[e]=!0,this}},e.off=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=i.indexOf(e);return-1!=n&&i.splice(n,1),this}},e.emitEvent=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){i=i.slice(0),e=e||[];for(var n=this._onceEvents&&this._onceEvents[t],o=0;oe;e++){var i=h[e];t[i]=0}return t}function n(t){var e=getComputedStyle(t);return e||a("Style returned "+e+". Are you running this code in a hidden iframe on Firefox? See https://bit.ly/getsizebug1"),e}function o(){if(!d){d=!0;var e=document.createElement("div");e.style.width="200px",e.style.padding="1px 2px 3px 4px",e.style.borderStyle="solid",e.style.borderWidth="1px 2px 3px 4px",e.style.boxSizing="border-box";var i=document.body||document.documentElement;i.appendChild(e);var o=n(e);s=200==Math.round(t(o.width)),r.isBoxSizeOuter=s,i.removeChild(e)}}function r(e){if(o(),"string"==typeof e&&(e=document.querySelector(e)),e&&"object"==typeof e&&e.nodeType){var r=n(e);if("none"==r.display)return i();var a={};a.width=e.offsetWidth,a.height=e.offsetHeight;for(var d=a.isBorderBox="border-box"==r.boxSizing,l=0;u>l;l++){var c=h[l],f=r[c],m=parseFloat(f);a[c]=isNaN(m)?0:m}var p=a.paddingLeft+a.paddingRight,g=a.paddingTop+a.paddingBottom,y=a.marginLeft+a.marginRight,v=a.marginTop+a.marginBottom,_=a.borderLeftWidth+a.borderRightWidth,z=a.borderTopWidth+a.borderBottomWidth,E=d&&s,b=t(r.width);b!==!1&&(a.width=b+(E?0:p+_));var x=t(r.height);return x!==!1&&(a.height=x+(E?0:g+z)),a.innerWidth=a.width-(p+_),a.innerHeight=a.height-(g+z),a.outerWidth=a.width+y,a.outerHeight=a.height+v,a}}var s,a="undefined"==typeof console?e:function(t){console.error(t)},h=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"],u=h.length,d=!1;return r}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("desandro-matches-selector/matches-selector",e):"object"==typeof module&&module.exports?module.exports=e():t.matchesSelector=e()}(window,function(){"use strict";var t=function(){var t=window.Element.prototype;if(t.matches)return"matches";if(t.matchesSelector)return"matchesSelector";for(var e=["webkit","moz","ms","o"],i=0;is?"round":"floor";r=Math[a](r),this.cols=Math.max(r,1)},n.getContainerWidth=function(){var t=this._getOption("fitWidth"),i=t?this.element.parentNode:this.element,n=e(i);this.containerWidth=n&&n.innerWidth},n._getItemLayoutPosition=function(t){t.getSize();var e=t.size.outerWidth%this.columnWidth,i=e&&1>e?"round":"ceil",n=Math[i](t.size.outerWidth/this.columnWidth);n=Math.min(n,this.cols);for(var o=this.options.horizontalOrder?"_getHorizontalColPosition":"_getTopColPosition",r=this[o](n,t),s={x:this.columnWidth*r.col,y:r.y},a=r.y+t.size.outerHeight,h=n+r.col,u=r.col;h>u;u++)this.colYs[u]=a;return s},n._getTopColPosition=function(t){var e=this._getTopColGroup(t),i=Math.min.apply(Math,e);return{col:e.indexOf(i),y:i}},n._getTopColGroup=function(t){if(2>t)return this.colYs;for(var e=[],i=this.cols+1-t,n=0;i>n;n++)e[n]=this._getColGroupY(n,t);return e},n._getColGroupY=function(t,e){if(2>e)return this.colYs[t];var i=this.colYs.slice(t,t+e);return Math.max.apply(Math,i)},n._getHorizontalColPosition=function(t,e){var i=this.horizontalColIndex%this.cols,n=t>1&&i+t>this.cols;i=n?0:i;var o=e.size.outerWidth&&e.size.outerHeight;return this.horizontalColIndex=o?i+t:this.horizontalColIndex,{col:i,y:this._getColGroupY(i,t)}},n._manageStamp=function(t){var i=e(t),n=this._getElementOffset(t),o=this._getOption("originLeft"),r=o?n.left:n.right,s=r+i.outerWidth,a=Math.floor(r/this.columnWidth);a=Math.max(0,a);var h=Math.floor(s/this.columnWidth);h-=s%this.columnWidth?0:1,h=Math.min(this.cols-1,h);for(var u=this._getOption("originTop"),d=(u?n.top:n.bottom)+i.outerHeight,l=a;h>=l;l++)this.colYs[l]=Math.max(d,this.colYs[l])},n._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var t={height:this.maxY};return this._getOption("fitWidth")&&(t.width=this._getContainerFitWidth()),t},n._getContainerFitWidth=function(){for(var t=0,e=this.cols;--e&&0===this.colYs[e];)t++;return(this.cols-t)*this.columnWidth-this.gutter},n.needsResizeLayout=function(){var t=this.containerWidth;return this.getContainerWidth(),t!=this.containerWidth},i});;
/*!
* Masonry v2 shim
* to maintain backwards compatibility
* as of Masonry v3.1.2
*
* Cascading grid layout library
* http://masonry.desandro.com
* MIT License
* by David DeSandro
*/
!function(a){"use strict";var b=a.Masonry;b.prototype._remapV2Options=function(){this._remapOption("gutterWidth","gutter"),this._remapOption("isResizable","isResizeBound"),this._remapOption("isRTL","isOriginLeft",function(a){return!a});var a=this.options.isAnimated;if(void 0!==a&&(this.options.transitionDuration=a?this.options.transitionDuration:0),void 0===a||a){var b=this.options.animationOptions,c=b&&b.duration;c&&(this.options.transitionDuration="string"==typeof c?c:c+"ms")}},b.prototype._remapOption=function(a,b,c){var d=this.options[a];void 0!==d&&(this.options[b]=c?c(d):d)};var c=b.prototype._create;b.prototype._create=function(){var a=this;this._remapV2Options(),c.apply(this,arguments),setTimeout(function(){jQuery(a.element).addClass("masonry")},0)};var d=b.prototype.layout;b.prototype.layout=function(){this._remapV2Options(),d.apply(this,arguments)};var e=b.prototype.option;b.prototype.option=function(){e.apply(this,arguments),this._remapV2Options()};var f=b.prototype._itemize;b.prototype._itemize=function(a){var b=f.apply(this,arguments);return jQuery(a).addClass("masonry-brick"),b};var g=b.prototype.measureColumns;b.prototype.measureColumns=function(){var a=this.options.columnWidth;a&&"function"==typeof a&&(this.getContainerWidth(),this.columnWidth=a(this.containerWidth)),g.apply(this,arguments)},b.prototype.reload=function(){this.reloadItems.apply(this,arguments),this.layout.apply(this)};var h=b.prototype.destroy;b.prototype.destroy=function(){var a=this.getItemElements();jQuery(this.element).removeClass("masonry"),jQuery(a).removeClass("masonry-brick"),h.apply(this,arguments)}}(window);;
var MINIMALDOG = MINIMALDOG || {};
(function($){
// USE STRICT
"use strict";
var $window = $(window);
var $document = $(document);
var $goToTopEl = $('.js-go-top-el');
var $overlayBg = $('.js-overlay-bg');
// $(".single-body").fitVids();
MINIMALDOG.header = {
init: function(){
MINIMALDOG.header.pagiButton();
MINIMALDOG.header.ajaxSearch();
MINIMALDOG.header.ajaxMegamenu();
MINIMALDOG.header.loginForm();
MINIMALDOG.header.offCanvasMenu();
MINIMALDOG.header.priorityNavInit();
MINIMALDOG.header.searchToggle();
MINIMALDOG.header.smartAffix.init({
fixedHeader: '.js-sticky-header',
headerPlaceHolder: '.js-sticky-header-holder',
});
},
/* ============================================================================
* Fix sticky navbar padding when open modal
* ==========================================================================*/
stickyNavbarPadding: function() {
// var oldSSB = $.fn.modal.Constructor.prototype.setScrollbar;
// var $stickyHeader = $('.sticky-header .navigation-bar');
//
// $.fn.modal.Constructor.prototype.setScrollbar = function ()
// {
// oldSSB.apply(this);
// if(this.bodyIsOverflowing && this.scrollbarWidth)
// {
// $stickyHeader.css('padding-right', this.scrollbarWidth);
// }
// }
//
// var oldRSB = $.fn.modal.Constructor.prototype.resetScrollbar;
// $.fn.modal.Constructor.prototype.resetScrollbar = function ()
// {
// oldRSB.apply(this);
// $stickyHeader.css('padding-right', '');
// }
},
/* ============================================================================
* Header dropdown search
* ==========================================================================*/
searchToggle: function() {
var $headerSearchDropdown = $('#header-search-dropdown');
var $searchDropdownToggle = $('.js-search-dropdown-toggle');
var $mobileHeader = $('#mnmd-mobile-header');
var $stickyHeaderNav = $('#mnmd-sticky-header').find('.navigation-bar__inner');
var $staticHeaderNav = $('.site-header').find('.navigation-bar__inner');
var $headerSearchDropdownInput = $headerSearchDropdown.find('.search-form__input');
$headerSearchDropdown.on('click', function(e) {
e.stopPropagation();
});
$searchDropdownToggle.on('click', function(e) {
e.stopPropagation();
var $toggleBtn = $(this);
var position = '';
if ($toggleBtn.hasClass('mobile-header-btn')) {
position = 'mobile';
} else if ($toggleBtn.parents('.sticky-header').length) {
position = 'sticky';
} else {
position = 'navbar';
}
if ($headerSearchDropdown.hasClass('is-in-' + position) || !$headerSearchDropdown.hasClass('is-active')) {
$headerSearchDropdown.toggleClass('is-active');
}
switch(position) {
case 'mobile':
if (!$headerSearchDropdown.hasClass('is-in-mobile')) {
$headerSearchDropdown.addClass('is-in-mobile');
$headerSearchDropdown.removeClass('is-in-sticky');
$headerSearchDropdown.removeClass('is-in-navbar');
$headerSearchDropdown.appendTo($mobileHeader);
}
break;
case 'sticky':
if (!$headerSearchDropdown.hasClass('is-in-sticky')) {
$headerSearchDropdown.addClass('is-in-sticky');
$headerSearchDropdown.removeClass('is-in-mobile');
$headerSearchDropdown.removeClass('is-in-navbar');
$headerSearchDropdown.insertAfter($stickyHeaderNav);
}
break;
default:
if (!$headerSearchDropdown.hasClass('is-in-navbar')) {
$headerSearchDropdown.addClass('is-in-navbar');
$headerSearchDropdown.removeClass('is-in-sticky');
$headerSearchDropdown.removeClass('is-in-mobile');
$headerSearchDropdown.insertAfter($staticHeaderNav);
}
}
if ($headerSearchDropdown.hasClass('is-active')) {
setTimeout(function () {
$headerSearchDropdownInput.focus();
}, 200);
}
});
$document.on('click', function(event) {
switch (event.which) {
case 1:
$headerSearchDropdown.removeClass('is-active');
break;
default:
break;
}
});
$window.on('stickyHeaderHidden', function(){
if ($headerSearchDropdown.hasClass('is-in-sticky')) {
$headerSearchDropdown.removeClass('is-active');
}
});
},
/* ============================================================================
* AJAX search
* ==========================================================================*/
ajaxSearch: function() {
var $results = null;
var $ajaxSearch = $('.js-ajax-search');
var ajaxStatus = '';
var noResultText = 'There is no result. ';
var errorText = 'There was some error. ';
$ajaxSearch.each(function() {
var $this = $(this);
var $searchForm = $this.find('.search-form__input');
var $resultsContainer = $this.find('.search-results');
var $resultsInner = $this.find('.search-results__inner');
var searchTerm = '';
var lastSearchTerm = '';
// $searchForm.on('input', $.debounce(800, function() {
// searchTerm = $searchForm.val();
//
// if (searchTerm.length > 0) {
// $resultsContainer.addClass('is-active');
//
// if ((searchTerm != lastSearchTerm) || (ajaxStatus === 'failed' )) {
// $resultsContainer.removeClass('is-error').addClass('is-loading');
// lastSearchTerm = searchTerm;
// ajaxLoad(searchTerm, $resultsContainer, $resultsInner);
// }
// } else {
// $resultsContainer.removeClass('is-active');
// }
// }));
});
function ajaxLoad(searchTerm, $resultsContainer, $resultsInner) {
var tnmAjaxSecurity = ajax_buff['tnm_security']['tnm_security_code']['content'];
var ajaxCall = $.ajax({
url: ajaxurl,
type: 'post',
dataType: 'html',
data: {
action: 'tnm_ajax_search',
searchTerm: searchTerm,
securityCheck: tnmAjaxSecurity,
},
});
ajaxCall.done(function(respond) {
$results = $.parseJSON(respond);
ajaxStatus = 'success';
if (!$results.length) {
$results = noResultText;
}
$resultsInner.html($results).css('opacity', 0).animate({opacity: 1}, 500);
});
ajaxCall.fail(function() {
ajaxStatus = 'failed';
$resultsContainer.addClass('is-error');
$results = errorText;
$resultsInner.html($results).css('opacity', 0).animate({opacity: 1}, 500);
});
ajaxCall.always(function() {
$resultsContainer.removeClass('is-loading');
});
}
},
/* ============================================================================
* Megamenu Ajax
* ==========================================================================*/
ajaxMegamenu: function() {
var $results = null;
var $subCatItem = $('.mnmd-mega-menu ul.sub-categories > li');
$subCatItem.on('click',function(e) {
e.preventDefault();
var $this = $(this);
if($(this).hasClass('active')) {
return;
}
$(this).parents('.sub-categories').find('li').removeClass('active');
var $container = $this.parents('.mnmd-mega-menu__inner').find('.posts-list');
var $thisCatSplit = $this.attr('class').split('-');
var thisCatID = $thisCatSplit[$thisCatSplit.length - 1];
var hasBigPost = 0;
$container.append('
');
$container.find('article').addClass('bk-preload-blur');
if($container.find('li:first-child').hasClass('big-post')) {
hasBigPost = 1;
}else {
hasBigPost = 0;
}
$this.addClass('active');
var $htmlRestore = ajax_buff['megamenu'][thisCatID]['html'];
//console.log($htmlRestore);
if($htmlRestore == '') {
ajaxLoad(thisCatID, hasBigPost, $container);
}else {
ajaxRestore($container, thisCatID, $htmlRestore);
}
});
function ajaxLoad(thisCatID, hasBigPost, $container) {
var tnmAjaxSecurity = ajax_buff['tnm_security']['tnm_security_code']['content'];
var ajaxCall = {
action: 'tnm_ajax_megamenu',
thisCatID: thisCatID,
hasBigPost : hasBigPost,
securityCheck: tnmAjaxSecurity
};
$.post(ajaxurl, ajaxCall, function (response) {
$results = $.parseJSON(response);
//Save HTML
ajax_buff['megamenu'][thisCatID]['html'] = $results;
// Append Result
$container.html($results).css('opacity', 0).animate({opacity: 1}, 500);
$container.find('.bk-preload-wrapper').remove();
$container.find('article').removeClass('bk-preload-blur');
});
}
function ajaxRestore($container, thisCatID, $htmlRestore) {
// Append Result
$container.html($htmlRestore).css('opacity', 0).animate({opacity: 1}, 500);
$container.find('.bk-preload-wrapper').remove();
$container.find('article').removeClass('bk-preload-blur');
}
},
/* ============================================================================
* Ajax Button
* ==========================================================================*/
pagiButton: function() {
var $dotNextTemplate = '';
var $dotPrevTemplate = '';
var $buttonTemplate = '';
var $dotIndex_next;
var $dotIndex_prev;
var $pagiAction;
var $results = null;
$('body').on('click', '.mnmd-module-pagination .mnmd-pagination__links > a', function(e) {
e.preventDefault();
var $this = $(this);
if(($this.hasClass('disable-click')) || $this.hasClass('mnmd-pagination__item-current'))
return;
var $pagiChildren = $this.parent().children();
var $totalPageVal = parseInt($($pagiChildren[$pagiChildren.length - 2]).text());
var $lastIndex = $this.parent().find('.mnmd-pagination__item-current').index();
var $lastPageVal = parseInt($($pagiChildren[$lastIndex]).text());
var $nextButton = $this.parent().find('.mnmd-pagination__item-next');
var $prevButton = $this.parent().find('.mnmd-pagination__item-prev');
// Save the last active button
var $lastActiveButton = $this.parent().find('.mnmd-pagination__item-current');
// Save the last page
var $lastActivePage = $this.parent().find('.mnmd-pagination__item-current');
// Add/Remove current class
$this.siblings().removeClass('mnmd-pagination__item-current');
if($this.hasClass('mnmd-pagination__item-prev')) {
$lastActivePage.prev().addClass('mnmd-pagination__item-current');
}else if($this.hasClass('mnmd-pagination__item-next')) {
$lastActivePage.next().addClass('mnmd-pagination__item-current');
}else {
$this.addClass('mnmd-pagination__item-current');
}
var $currentActiveButton = $this.parent().find('.mnmd-pagination__item-current');
var $currentIndex = $this.parent().find('.mnmd-pagination__item-current').index();
var $currentPageVal = parseInt($($pagiChildren[$currentIndex]).text());
if($currentPageVal == 1) {
$($prevButton).addClass('disable-click');
$($nextButton).removeClass('disable-click');
}else if($currentPageVal == $totalPageVal) {
$($prevButton).removeClass('disable-click');
$($nextButton).addClass('disable-click');
}else {
$($prevButton).removeClass('disable-click');
$($nextButton).removeClass('disable-click');
}
if($totalPageVal > 5) {
if($this.parent().find('.mnmd-pagination__dots').hasClass('mnmd-pagination__dots-next')) {
$dotIndex_next = $this.parent().find('.mnmd-pagination__dots-next').index();
}else {
$dotIndex_next = -1;
}
if($this.parent().find('.mnmd-pagination__dots').hasClass('mnmd-pagination__dots-prev')) {
$dotIndex_prev = $this.parent().find('.mnmd-pagination__dots-prev').index();
}else {
$dotIndex_prev = -1;
}
if(isNaN($currentPageVal)) {
if($this.hasClass('mnmd-pagination__item-prev')) {
$currentPageVal = parseInt($($pagiChildren[$currentIndex + 1]).text()) - 1;
}else if($this.hasClass('mnmd-pagination__item-next')) {
$currentPageVal = parseInt($($pagiChildren[$currentIndex - 1]).text()) + 1;
}else {
return;
}
}
if($currentPageVal > $lastPageVal) {
$pagiAction = 'up';
}else {
$pagiAction = 'down';
}
if(($pagiAction == 'up')) {
if(($currentIndex == ($dotIndex_next - 1)) || ($currentIndex == $dotIndex_next) || ($currentPageVal == $totalPageVal)) {
$this.parent().find('.mnmd-pagination__dots').remove(); //Remove ALL Dot Signal
if($currentIndex == $dotIndex_next) {
$($buttonTemplate.replace('##PAGENUMBER##', ($currentPageVal))).insertAfter($lastActiveButton);
$lastActiveButton.next().addClass('mnmd-pagination__item-current');
$currentActiveButton = $this.parent().find('.mnmd-pagination__item-current');
}
while(parseInt(($this.parent().find('a:nth-child(3)')).text()) != $currentPageVal) {
$this.parent().find('a:nth-child(3)').remove(); //Remove 1 button before
}
$($dotPrevTemplate).insertBefore($currentActiveButton); //Insert Dot Next
if(($currentPageVal < ($totalPageVal - 3))) {
$($dotNextTemplate).insertAfter($currentActiveButton); //Insert Dot Prev
$($buttonTemplate.replace('##PAGENUMBER##', ($currentPageVal + 2))).insertAfter($currentActiveButton);
$($buttonTemplate.replace('##PAGENUMBER##', ($currentPageVal + 1))).insertAfter($currentActiveButton);
}else if(($currentPageVal < ($totalPageVal - 2))) {
$($buttonTemplate.replace('##PAGENUMBER##', ($currentPageVal + 2))).insertAfter($currentActiveButton);
$($buttonTemplate.replace('##PAGENUMBER##', ($currentPageVal + 1))).insertAfter($currentActiveButton);
}
else if(($currentPageVal < ($totalPageVal - 1))) {
$($buttonTemplate.replace('##PAGENUMBER##', ($currentPageVal + 1))).insertAfter($currentActiveButton);
}
if($currentPageVal == $totalPageVal) {
$($buttonTemplate.replace('##PAGENUMBER##', ($currentPageVal - 3))).insertBefore($currentActiveButton);
$($buttonTemplate.replace('##PAGENUMBER##', ($currentPageVal - 2))).insertBefore($currentActiveButton);
$($buttonTemplate.replace('##PAGENUMBER##', ($currentPageVal - 1))).insertBefore($currentActiveButton);
}else if($currentPageVal == ($totalPageVal - 1)) {
$($buttonTemplate.replace('##PAGENUMBER##', ($currentPageVal - 2))).insertBefore($currentActiveButton);
$($buttonTemplate.replace('##PAGENUMBER##', ($currentPageVal - 1))).insertBefore($currentActiveButton);
}else if($currentPageVal == ($totalPageVal - 2 )) {
$($buttonTemplate.replace('##PAGENUMBER##', ($currentPageVal - 1))).insertBefore($currentActiveButton);
}
}
}else if($pagiAction == 'down') {
if(($currentIndex == ($dotIndex_prev + 1)) || ($currentIndex == $dotIndex_prev) || (($currentPageVal == 1) && ($currentIndex < $dotIndex_prev))) {
$this.parent().find('.mnmd-pagination__dots').remove(); //Remove ALL Dot Signal
if($currentIndex == $dotIndex_prev) {
$($buttonTemplate.replace('##PAGENUMBER##', ($currentPageVal))).insertBefore($lastActiveButton);
$lastActiveButton.prev().addClass('mnmd-pagination__item-current');
$currentActiveButton = $this.parent().find('.mnmd-pagination__item-current');
while(parseInt($this.parent().find('a:nth-child('+($currentIndex + 2)+')').text()) != $totalPageVal) {
$this.parent().find('a:nth-child('+($currentIndex + 2)+')').remove(); //Remove 1 button before
}
}else if(($currentPageVal == 1) && ($currentIndex < $dotIndex_prev)) {
while(parseInt($this.parent().find('a:nth-child('+($currentIndex + 2)+')').text()) != $totalPageVal) {
$this.parent().find('a:nth-child('+($currentIndex + 2)+')').remove(); //Remove 1 button before
}
}else {
while(parseInt($this.parent().find('a:nth-child('+($currentIndex + 1)+')').text()) != $totalPageVal) {
$this.parent().find('a:nth-child('+($currentIndex + 1)+')').remove(); //Remove 1 button before
}
}
$($dotNextTemplate).insertAfter($currentActiveButton); //Insert Dot After
if($currentPageVal > 4) { // <- 1 ... 5 6 7 ... 10 ->
$($dotPrevTemplate).insertBefore($currentActiveButton); //Insert Dot Prev
$($buttonTemplate.replace('##PAGENUMBER##', ($currentPageVal - 2))).insertBefore($currentActiveButton);
$($buttonTemplate.replace('##PAGENUMBER##', ($currentPageVal - 1))).insertBefore($currentActiveButton);
}else if($currentPageVal > 3) { // <- 1 ... 4 5 6 ... 10 ->
$($buttonTemplate.replace('##PAGENUMBER##', ($currentPageVal - 2))).insertBefore($currentActiveButton);
$($buttonTemplate.replace('##PAGENUMBER##', ($currentPageVal - 1))).insertBefore($currentActiveButton);
}
else if($currentPageVal > 2) { // <- 1 ... 3 4 5 ... 10 ->
$($buttonTemplate.replace('##PAGENUMBER##', ($currentPageVal - 1))).insertBefore($currentActiveButton);
}
if($currentPageVal == 1) {
$($buttonTemplate.replace('##PAGENUMBER##', 4)).insertAfter($currentActiveButton);
$($buttonTemplate.replace('##PAGENUMBER##', 3)).insertAfter($currentActiveButton);
$($buttonTemplate.replace('##PAGENUMBER##', 2)).insertAfter($currentActiveButton);
}else if($currentPageVal == 2) {
$($buttonTemplate.replace('##PAGENUMBER##', 4)).insertAfter($currentActiveButton);
$($buttonTemplate.replace('##PAGENUMBER##', 3)).insertAfter($currentActiveButton);
}else if($currentPageVal == 3) {
$($buttonTemplate.replace('##PAGENUMBER##', 4)).insertAfter($currentActiveButton);
}
}
}
}
if($currentPageVal != 1) {
$this.siblings('.mnmd-pagination__item-prev').css('display', 'inline-block');
}else {
if($this.hasClass('mnmd-pagination__item-prev')) {
$this.css('display', 'none');
}else {
$this.siblings('.mnmd-pagination__item-prev').css('display', 'none');
}
}
if($currentPageVal == $totalPageVal) {
if($this.hasClass('mnmd-pagination__item-next')) {
$this.css('display', 'none');
}else {
$this.siblings('.mnmd-pagination__item-next').css('display', 'none');
}
}else {
$this.siblings('.mnmd-pagination__item-next').css('display', 'inline-block');
}
ajaxListing($this, $currentPageVal);
});
function ajaxListing($this, $currentPageVal) {
var $moduleID = $this.closest('.mnmd-block').attr('id');
var moduleName = $moduleID.split("-")[0];
var args = ajax_buff['query'][$moduleID]['args'];
if(moduleName == 'tnm_author_results') {
var postOffset = ($currentPageVal-1)*args['number'] + parseInt(args['offset']);
var $container = $this.closest('.mnmd-block').find('.authors-list');
var moduleInfo = '';
}else {
var postOffset = ($currentPageVal-1)*args['posts_per_page'] + parseInt(args['offset']);
var $container = $this.closest('.mnmd-block').find('.posts-list');
var moduleInfo = ajax_buff['query'][$moduleID]['moduleInfo'];
}
var parameters = {
moduleName: moduleName,
args: args,
moduleInfo: moduleInfo,
postOffset: postOffset,
};
//console.log(parameters);
$container.css('height', $container.height()+'px');
$container.append('
');
$container.find('article').addClass('bk-preload-blur');
loadAjax(parameters, $container);
var $mainCol = $this.parents('.mnmd-main-col');
if($mainCol.length > 0) {
var $subCol = $mainCol.siblings('.mnmd-sub-col');
$subCol.css('min-height', '1px');
}
var $scrollTarget = $this.parents('.mnmd-block');
$('body,html').animate({
scrollTop: $scrollTarget.offset().top,
}, 1100);
setTimeout(function(){ $container.css('height', 'auto'); }, 1100);
}
function loadAjax(parameters, $container){
//console.log(parameters.moduleName);
var tnmAjaxSecurity = ajax_buff['tnm_security']['tnm_security_code']['content'];
var ajaxCall = {
action: parameters.moduleName,
args: parameters.args,
moduleInfo: parameters.moduleInfo,
postOffset: parameters.postOffset,
securityCheck: tnmAjaxSecurity
};
//console.log(ajaxCall);
$.post(ajaxurl, ajaxCall, function (response) {
$results = $.parseJSON(response);
//Save HTML
// Append Result
$container.html($results).css('opacity', 0).animate({opacity: 1}, 500);
$container.find('.bk-preload-wrapper').remove();
$container.find('article').removeClass('bk-preload-blur');
});
}
function checkStickySidebar($this){
var $subCol = $this.parents('.mnmd-main-col').siblings('.mnmd-sub-col');
if($subCol.hasClass('js-sticky-sidebar')) {
return $subCol;
}else {
return 0;
}
}
},
/* ============================================================================
* Login Form tabs
* ==========================================================================*/
loginForm: function() {
var $loginFormTabsLinks = $('.js-login-form-tabs').find('a');
$loginFormTabsLinks.on('click', function (e) {
e.preventDefault()
$(this).tab('show');
});
},
/* ============================================================================
* Offcanvas Menu
* ==========================================================================*/
offCanvasMenu: function() {
var $backdrop = $('
');
var $offCanvas = $('.js-mnmd-offcanvas');
var $offCanvasToggle = $('.js-mnmd-offcanvas-toggle');
var $offCanvasClose = $('.js-mnmd-offcanvas-close');
var $offCanvasMenuHasChildren = $('.navigation--offcanvas').find('li.menu-item-has-children > a');
var menuExpander = ('');
$backdrop.on('click', function(){
$offCanvas.removeClass('is-active');
$(this).fadeOut(200, function(){
$(this).detach();
});
});
$offCanvasToggle.on('click', function(e){
e.preventDefault();
var targetID = $(this).attr('href');
var $target = $(targetID);
$target.toggleClass('is-active');
$backdrop.hide().appendTo(document.body).fadeIn(200);
});
$offCanvasClose.on('click', function(e){
e.preventDefault();
var targetID = $(this).attr('href');
var $target = $(targetID);
$target.removeClass('is-active');
$backdrop.fadeOut(200, function(){
$(this).detach();
});
});
$offCanvasMenuHasChildren.append(function() {
return $(menuExpander).on('click', function(e){
e.preventDefault();
var $subMenu = $(this).parent().siblings('.sub-menu');
$subMenu.slideToggle(200);
});
});
},
/* ============================================================================
* Prority+ menu init
* ==========================================================================*/
priorityNavInit: function() {
var $menus = $('.js-priority-nav');
$menus.each(function() {
MINIMALDOG.priorityNav($(this));
})
},
/* ============================================================================
* Smart sticky header
* ==========================================================================*/
smartAffix: {
//settings
$headerPlaceHolder: null, //the affix menu (this element will get the mdAffixed)
$fixedHeader: null, //the menu wrapper / placeholder
isDestroyed: false,
isDisabled: false,
isFixed: false, //the current state of the menu, true if the menu is affix
isShown: false,
windowScrollTop: 0,
lastWindowScrollTop: 0, //last scrollTop position, used to calculate the scroll direction
offCheckpoint: 0, // distance from top where fixed header will be hidden
onCheckpoint: 0, // distance from top where fixed header can show up
breakpoint: 992, // media breakpoint in px that it will be disabled
init : function init (options) {
//read the settings
this.$fixedHeader = $(options.fixedHeader);
this.$headerPlaceHolder = $(options.headerPlaceHolder);
// Check if selectors exist.
if ( !this.$fixedHeader.length || !this.$headerPlaceHolder.length ) {
this.isDestroyed = true;
} else if ( !this.$fixedHeader.length || !this.$headerPlaceHolder.length || ( MINIMALDOG.documentOnResize.windowWidth <= MINIMALDOG.header.smartAffix.breakpoint ) ) { // Check if device width is smaller than breakpoint.
this.isDisabled = true;
}
},// end init
compute: function compute(){
if (MINIMALDOG.header.smartAffix.isDestroyed || MINIMALDOG.header.smartAffix.isDisabled) {
return;
}
// Set where from top fixed header starts showing up
// if( !this.$headerPlaceHolder.length ) {
// this.offCheckpoint = 400;
// } else {
// this.offCheckpoint = $(this.$headerPlaceHolder).offset().top + 400;
// }
this.onCheckpoint = this.offCheckpoint + 500;
// Set menu top offset
this.windowScrollTop = MINIMALDOG.documentOnScroll.windowScrollTop;
if (this.offCheckpoint < this.windowScrollTop) {
this.isFixed = true;
}
},
updateState: function updateState(){
//update affixed state
if (this.isFixed) {
this.$fixedHeader.addClass('is-fixed');
} else {
this.$fixedHeader.removeClass('is-fixed');
$window.trigger('stickyHeaderHidden');
}
if (this.isShown) {
this.$fixedHeader.addClass('is-shown');
} else {
this.$fixedHeader.removeClass('is-shown');
}
},
/**
* called by events on scroll
*/
eventScroll: function eventScroll(scrollTop) {
var scrollDirection = '';
var scrollDelta = 0;
// check the direction
if (scrollTop != this.lastWindowScrollTop) { //compute direction only if we have different last scroll top
// compute the direction of the scroll
if (scrollTop > this.lastWindowScrollTop) {
scrollDirection = 'down';
} else {
scrollDirection = 'up';
}
//calculate the scroll delta
scrollDelta = Math.abs(scrollTop - this.lastWindowScrollTop);
this.lastWindowScrollTop = scrollTop;
// update affix state
if (this.offCheckpoint < scrollTop) {
this.isFixed = true;
} else {
this.isFixed = false;
}
// check affix state
if (this.isFixed) {
// We're in affixed state, let's do some check
if ((scrollDirection === 'down') && (scrollDelta > 14)) {
if (this.isShown) {
this.isShown = false; // hide menu
}
} else {
if ((!this.isShown) && (scrollDelta > 14) && (this.onCheckpoint < scrollTop)) {
this.isShown = true; // show menu
}
}
} else {
this.isShown = false;
}
this.updateState(); // update state
}
}, // end eventScroll function
/**
* called by events on resize
*/
eventResize: function eventResize(windowWidth) {
// Check if device width is smaller than breakpoint.
if ( MINIMALDOG.documentOnResize.windowWidth < MINIMALDOG.header.smartAffix.breakpoint ) {
this.isDisabled = true;
} else {
this.isDisabled = false;
MINIMALDOG.header.smartAffix.compute();
}
}
},
};
MINIMALDOG.documentOnScroll = {
ticking: false,
windowScrollTop: 0, //used to store the scrollTop
init: function() {
window.addEventListener('scroll', function(e) {
if (!MINIMALDOG.documentOnScroll.ticking) {
window.requestAnimationFrame(function() {
MINIMALDOG.documentOnScroll.windowScrollTop = $window.scrollTop();
// Functions to call here
if (!MINIMALDOG.header.smartAffix.isDisabled && !MINIMALDOG.header.smartAffix.isDestroyed) {
MINIMALDOG.header.smartAffix.eventScroll(MINIMALDOG.documentOnScroll.windowScrollTop);
}
MINIMALDOG.documentOnScroll.goToTopScroll(MINIMALDOG.documentOnScroll.windowScrollTop);
MINIMALDOG.documentOnScroll.ticking = false;
});
}
MINIMALDOG.documentOnScroll.ticking = true;
});
},
/* ============================================================================
* Go to top scroll event
* ==========================================================================*/
goToTopScroll: function(windowScrollTop){
if ($goToTopEl.length) {
if(windowScrollTop > 800) {
if (!$goToTopEl.hasClass('is-active')) $goToTopEl.addClass('is-active');
} else {
$goToTopEl.removeClass('is-active');
}
}
},
};
MINIMALDOG.documentOnResize = {
ticking: false,
windowWidth: $window.width(),
init: function() {
window.addEventListener('resize', function(e) {
if (!MINIMALDOG.documentOnResize.ticking) {
window.requestAnimationFrame(function() {
MINIMALDOG.documentOnResize.windowWidth = $window.width();
// Functions to call here
if (!MINIMALDOG.header.smartAffix.isDestroyed) {
MINIMALDOG.header.smartAffix.eventResize(MINIMALDOG.documentOnResize.windowWidth);
}
MINIMALDOG.clippedBackground();
MINIMALDOG.documentOnResize.ticking = false;
});
}
MINIMALDOG.documentOnResize.ticking = true;
});
},
};
MINIMALDOG.documentOnReady = {
init: function(){
MINIMALDOG.header.init();
MINIMALDOG.header.smartAffix.compute();
MINIMALDOG.documentOnScroll.init();
MINIMALDOG.documentOnReady.ajaxLoadPost();
MINIMALDOG.documentOnReady.carousel_1i();
MINIMALDOG.documentOnReady.carousel_1i30m();
MINIMALDOG.documentOnReady.carousel_2i4m();
MINIMALDOG.documentOnReady.carousel_2i20m();
MINIMALDOG.documentOnReady.carousel_3i4m();
MINIMALDOG.documentOnReady.carousel_3i4m_small();
MINIMALDOG.documentOnReady.carousel_3i20m();
MINIMALDOG.documentOnReady.carousel_headingAside_3i();
MINIMALDOG.documentOnReady.carousel_4i();
MINIMALDOG.documentOnReady.carousel_4i4m();
MINIMALDOG.documentOnReady.carousel_4i20m();
MINIMALDOG.documentOnReady.carousel_overlap();
// MINIMALDOG.documentOnReady.customCarouselNav();
// MINIMALDOG.documentOnReady.countdown();
// MINIMALDOG.documentOnReady.goToTop();
// MINIMALDOG.documentOnReady.newsTicker();
// MINIMALDOG.documentOnReady.lightBox();
// MINIMALDOG.documentOnReady.perfectScrollbarInit();
// MINIMALDOG.documentOnReady.tooltipInit();
MINIMALDOG.documentOnReady.ATBSNavDetectEdgeBrowser();
},
ATBSNavDetectEdgeBrowser: function(){
$("#main-menu li").on('mouseenter mouseleave', function (e) {
if ($('ul', this).length) {
var elm = $('ul:first', this);
var off = elm.offset();
var l = off.left;
var w = elm.width();
var docW = $(".site-wrapper").width();
var isEntirelyVisible = (l + w <= docW);
if (!isEntirelyVisible) {
$(this).addClass('atbs-submenu-to-left');
} else {
$(this).removeClass('atbs-submenu-to-left');
}
if(l<0) {
$(this).addClass('atbs-submenu-to-right');
} else {
$(this).removeClass('atbs-submenu-to-right');
}
}
});
},
/* ============================================================================
* AJAX load more posts
* ==========================================================================*/
ajaxLoadPost: function() {
var $loadedPosts = null;
var $ajaxLoadPost = $('.js-ajax-load-post');
var $this;
function ajaxLoad(parameters, $postContainer) {
var tnmAjaxSecurity = ajax_buff['tnm_security']['tnm_security_code']['content'];
var ajaxStatus = '',
ajaxCall = $.ajax({
url: ajaxurl,
type: 'post',
dataType: 'html',
data: {
action: parameters.action,
args: parameters.args,
postOffset: parameters.postOffset,
type: parameters.type,
moduleInfo: parameters.moduleInfo,
the__lastPost: parameters.the__lastPost,
securityCheck: tnmAjaxSecurity
// other parameters
},
});
//console.log(parameters.action);
ajaxCall.done(function(respond) {
$loadedPosts = $.parseJSON(respond);
ajaxStatus = 'success';
if($loadedPosts == 'no-result') {
$postContainer.closest('.js-ajax-load-post').addClass('disable-click');
$postContainer.closest('.js-ajax-load-post').find('.js-ajax-load-post-trigger').addClass('hidden');
$postContainer.closest('.js-ajax-load-post').find('.tnm-no-more-button').removeClass('hidden');
return;
}
if ($loadedPosts) {
$postContainer.append($loadedPosts).css('opacity', 0).animate({opacity: 1}, 500);
}
$('html, body').animate({ scrollTop: $window.scrollTop() + 1 }, 0).animate({ scrollTop: $window.scrollTop() - 1 }, 0); // for recalculating of sticky sidebar
// do stuff like changing parameters
});
ajaxCall.fail(function() {
ajaxStatus = 'failed';
});
ajaxCall.always(function() {
$postContainer.find('.bk-preload-wrapper').remove();
$postContainer.find('article').removeClass('bk-preload-blur');
$this.removeClass('tnm_loading');
});
}
$ajaxLoadPost.each(function() {
$this = $(this);
var $moduleID = $this.closest('.mnmd-block').attr('id');
var moduleName = $moduleID.split("-")[0];
var $triggerBtn = $this.find('.js-ajax-load-post-trigger');
var args = ajax_buff['query'][$moduleID]['args'];
if(moduleName == 'tnm_author_results') {
var $postContainer = $this.find('.authors-list');
var moduleInfo = '';
}else {
var $postContainer = $this.find('.posts-list');
var moduleInfo = ajax_buff['query'][$moduleID]['moduleInfo'];
}
$triggerBtn.on('click', function() {
if($this.hasClass('disable-click'))
return;
$this.addClass('tnm_loading');
if(moduleName == 'tnm_author_results') {
var postOffset = parseInt(args['offset']) + $this.find('.author-box').length;
var the__lastPost = '';
}else {
var postOffset = parseInt(args['offset']) + $this.find('article').length;
if($this.closest('.mnmd-block').hasClass('tnm_latest_blog_posts')) {
var stickPostLength = args['post__not_in'].length;
postOffset = postOffset - stickPostLength;
}
var the__lastPost = $this.find('article').length;
}
$postContainer.append('
');
$postContainer.find('article').addClass('bk-preload-blur');
var parameters = {
action: moduleName,
args: args,
postOffset: postOffset,
type: 'loadmore',
moduleInfo: moduleInfo,
the__lastPost: the__lastPost,
};
//console.log(parameters);
ajaxLoad(parameters, $postContainer);
});
});
},
/* ============================================================================
* Carousel funtions
* ==========================================================================*/
carousel_1i: function() {
var $carousels = $('.js-mnmd-carousel-1i');
$carousels.each( function() {
var carousel_loop = $(this).data('carousel-loop');
$(this).owlCarousel({
items: 1,
loop: carousel_loop,
margin: 0,
nav: true,
dots: true,
autoHeight: true,
navText: [' ', ' '],
smartSpeed: 500,
});
})
},
carousel_1i30m: function() {
var $carousels = $('.js-carousel-1i30m');
$carousels.each( function() {
$(this).owlCarousel({
items: 1,
margin: 30,
loop: true,
nav: true,
dots: true,
autoHeight: true,
navText: [' ', ' '],
smartSpeed: 500,
});
})
},
carousel_overlap: function() {
var $carousels = $('.js-mnmd-carousel-overlap');
$carousels.each( function() {
var $carousel = $(this);
$carousel.flickity({
wrapAround: true,
});
$carousel.on( 'staticClick.flickity', function( event, pointer, cellElement, cellIndex ) {
if ( (typeof cellIndex === 'number') && ($carousel.data('flickity').selectedIndex != cellIndex) ) {
$carousel.flickity( 'selectCell', cellIndex );
}
});
})
},
carousel_2i4m: function() {
var $carousels = $('.js-carousel-2i4m');
$carousels.each( function() {
var carousel_loop = $(this).data('carousel-loop');
$(this).owlCarousel({
items: 2,
margin: 4,
loop: carousel_loop,
nav: true,
dots: true,
navText: [' ', ' '],
responsive: {
0 : {
items: 1,
},
768 : {
items: 2,
},
},
});
})
},
carousel_3i: function() {
var $carousels = $('.js-carousel-3i');
$carousels.each( function() {
$(this).owlCarousel({
loop: true,
nav: true,
dots: false,
navText: [' ', ' '],
responsive: {
0 : {
items: 1,
},
768 : {
items: 2,
},
992 : {
items: 3,
},
},
});
})
},
carousel_3i4m: function() {
var $carousels = $('.js-carousel-3i4m');
$carousels.each( function() {
var carousel_loop = $(this).data('carousel-loop');
$(this).owlCarousel({
margin: 4,
loop: carousel_loop,
nav: true,
dots: true,
navText: [' ', ' '],
responsive: {
0 : {
items: 1,
},
768 : {
items: 2,
},
992 : {
items: 3,
},
},
});
})
},
carousel_3i4m_small: function() {
var $carousels = $('.js-carousel-3i4m-small');
$carousels.each( function() {
$(this).owlCarousel({
margin: 4,
loop: false,
nav: true,
dots: true,
navText: [' ', ' '],
autoHeight: true,
responsive: {
0 : {
items: 1,
},
768 : {
items: 2,
},
1200 : {
items: 3,
},
},
});
})
},
carousel_2i20m: function() {
var $carousels = $('.js-carousel-2i20m');
$carousels.each( function() {
var carousel_loop = $(this).data('carousel-loop');
$(this).owlCarousel({
margin: 20,
loop: carousel_loop,
nav: true,
dots: true,
navText: [' ', ' '],
responsive: {
0 : {
items: 1,
},
768 : {
items: 2,
},
},
});
})
},
carousel_3i20m: function() {
var $carousels = $('.js-carousel-3i20m');
$carousels.each( function() {
var carousel_loop = $(this).data('carousel-loop');
$(this).owlCarousel({
margin: 20,
loop: carousel_loop,
nav: true,
dots: true,
navText: [' ', ' '],
responsive: {
0 : {
items: 1,
},
768 : {
items: 2,
},
992 : {
items: 3,
},
},
});
})
},
carousel_headingAside_3i: function() {
var $carousels = $('.js-mnmd-carousel-heading-aside-3i');
$carousels.each( function() {
var carousel_loop = $(this).data('carousel-loop');
$(this).owlCarousel({
margin: 20,
nav: false,
dots: false,
loop: carousel_loop,
navText: [' ', ' '],
responsive: {
0 : {
items: 1,
margin: 10,
stagePadding: 40,
loop: false,
},
768 : {
items: 2,
},
992 : {
items: 3,
},
},
});
})
},
customCarouselNav: function() {
if ( $.isFunction($.fn.owlCarousel) ) {
var $carouselNexts = $('.js-carousel-next');
$carouselNexts.each( function() {
var carouselNext = $(this);
var carouselID = carouselNext.parent('.mnmd-carousel-nav-custom-holder').attr('data-carouselID');
var $carousel = $('#' + carouselID);
carouselNext.on('click', function() {
$carousel.trigger('next.owl.carousel');
});
});
var $carouselPrevs = $('.js-carousel-prev');
$carouselPrevs.each( function() {
var carouselPrev = $(this);
var carouselID = carouselPrev.parent('.mnmd-carousel-nav-custom-holder').attr('data-carouselID');
var $carousel = $('#' + carouselID);
carouselPrev.on('click', function() {
$carousel.trigger('prev.owl.carousel');
});
});
}
},
carousel_4i: function() {
var $carousels = $('.js-carousel-4i');
$carousels.each( function() {
$(this).owlCarousel({
loop: true,
nav: true,
dots: false,
navText: [' ', ' '],
responsive: {
0 : {
items: 1,
},
768 : {
items: 2,
},
992 : {
items: 4,
},
},
});
})
},
carousel_4i4m: function() {
var $carousels = $('.js-carousel-4i4m');
$carousels.each( function() {
var carousel_loop = $(this).data('carousel-loop');
$(this).owlCarousel({
margin: 4,
loop: carousel_loop,
nav: true,
dots: true,
navText: [' ', ' '],
responsive: {
0 : {
items: 1,
},
768 : {
items: 2,
},
992 : {
items: 4,
},
},
});
})
},
carousel_4i20m: function() {
var $carousels = $('.js-carousel-4i20m');
$carousels.each( function() {
var carousel_loop = $(this).data('carousel-loop');
$(this).owlCarousel({
items: 4,
margin: 20,
loop: carousel_loop,
nav: true,
dots: true,
navText: [' ', ' '],
responsive: {
0 : {
items: 1,
},
768 : {
items: 2,
},
992 : {
items: 3,
},
1199 : {
items: 4,
},
},
});
})
},
/* ============================================================================
* Countdown timer
* ==========================================================================*/
countdown: function() {
if ( $.isFunction($.fn.countdown) ) {
var $countdown = $('.js-countdown');
$countdown.each(function() {
var $this = $(this);
var finalDate = $this.data('countdown');
$this.countdown(finalDate, function(event) {
$(this).html(event.strftime(''
+ '%-D day%!D
'
+ '%H hr
'
+ '%M min
'
+ '%S sec
'));
});
});
};
},
/* ============================================================================
* Scroll top
* ==========================================================================*/
goToTop: function() {
if ($goToTopEl.length) {
$goToTopEl.on('click', function() {
$('html,body').stop(true).animate({scrollTop:0},400);
return false;
});
}
},
/* ============================================================================
* News ticker
* ==========================================================================*/
newsTicker: function() {
var $tickers = $('.js-mnmd-news-ticker');
$tickers.each( function() {
var $ticker = $(this);
var $next = $ticker.siblings('.mnmd-news-ticker__control').find('.mnmd-news-ticker__next');
var $prev = $ticker.siblings('.mnmd-news-ticker__control').find('.mnmd-news-ticker__prev');
$ticker.addClass('initialized').vTicker('init', {
speed: 300,
pause: 3000,
showItems: 1,
});
$next.on('click', function() {
$ticker.vTicker('next', {animate:true});
});
$prev.on('click', function() {
$ticker.vTicker('prev', {animate:true});
});
})
},
/* ============================================================================
* Lightbox
* ==========================================================================*/
lightBox: function() {
if ( $.isFunction($.fn.magnificPopup) ) {
var $imageLightbox = $('.js-mnmd-lightbox-image');
var $galleryLightbox = $('.js-mnmd-lightbox-gallery');
$imageLightbox.magnificPopup({
type: 'image',
mainClass: 'mfp-zoom-in',
removalDelay: 80,
});
$galleryLightbox.each(function() {
$(this).magnificPopup({
delegate: '.gallery-icon > a',
type: 'image',
gallery:{
enabled: true,
},
mainClass: 'mfp-zoom-in',
removalDelay: 80,
});
});
}
},
/* ============================================================================
* Custom scrollbar
* ==========================================================================*/
perfectScrollbarInit: function() {
if ( $.isFunction($.fn.perfectScrollbar) ) {
var $area = $('.js-perfect-scrollbar');
$area.perfectScrollbar({
wheelPropagation: true,
});
}
},
/* ============================================================================
* Sticky sidebar
* ==========================================================================*/
stickySidebar: function() {
setTimeout(function() {
var $stickySidebar = $('.js-sticky-sidebar');
var $stickyHeader = $('.js-sticky-header');
var marginTop = ($stickyHeader.length) ? ($stickyHeader.outerHeight() + 20) : 0; // check if there's sticky header
if ( $( document.body ).hasClass( 'admin-bar' ) ) // check if admin bar is shown.
marginTop += 32;
if ( $.isFunction($.fn.theiaStickySidebar) ) {
$stickySidebar.theiaStickySidebar({
additionalMarginTop: marginTop,
additionalMarginBottom: 20,
});
}
}, 250); // wait a bit for precise height;
},
/* ============================================================================
* Bootstrap tooltip
* ==========================================================================*/
tooltipInit: function() {
var $element = $('[data-toggle="tooltip"]');
$element.tooltip();
},
};
MINIMALDOG.documentOnLoad = {
init: function() {
MINIMALDOG.clippedBackground();
MINIMALDOG.header.smartAffix.compute(); //recompute when all the page + logos are loaded
MINIMALDOG.header.smartAffix.updateState(); // update state
MINIMALDOG.header.stickyNavbarPadding(); // fix bootstrap modal backdrop causes sticky navbar to shift
MINIMALDOG.documentOnReady.stickySidebar();
}
};
/* ============================================================================
* Blur background mask
* ==========================================================================*/
MINIMALDOG.clippedBackground = function() {
if ($overlayBg.length) {
$overlayBg.each(function() {
var $mainArea = $(this).find('.js-overlay-bg-main-area');
if (!$mainArea.length) {
$mainArea = $(this);
}
var $subArea = $(this).find('.js-overlay-bg-sub-area');
var $subBg = $(this).find('.js-overlay-bg-sub');
var leftOffset = $mainArea.offset().left - $subArea.offset().left;
var topOffset = $mainArea.offset().top - $subArea.offset().top;
$subBg.css('display', 'block');
$subBg.css('position', 'absolute');
$subBg.css('width', $mainArea.outerWidth() + 'px');
$subBg.css('height', $mainArea.outerHeight() + 'px');
$subBg.css('left', leftOffset + 'px');
$subBg.css('top', topOffset + 'px');
});
};
}
/* ============================================================================
* Priority+ menu
* ==========================================================================*/
MINIMALDOG.priorityNav = function($menu) {
var $btn = $menu.find('button');
var $menuWrap = $menu.find('.navigation');
var $menuItem = $menuWrap.children('li');
var hasMore = false;
if(!$menuWrap.length) {
return;
}
function calcWidth() {
if ($menuWrap[0].getBoundingClientRect().width === 0)
return;
var navWidth = 0;
$menuItem = $menuWrap.children('li');
$menuItem.each(function() {
navWidth += $(this)[0].getBoundingClientRect().width;
});
if (hasMore) {
var $more = $menu.find('.priority-nav__more');
var moreWidth = $more[0].getBoundingClientRect().width;
var availableSpace = $menu[0].getBoundingClientRect().width;
//Remove the padding width (assumming padding are px values)
availableSpace -= (parseInt($menu.css("padding-left"), 10) + parseInt($menu.css("padding-right"), 10));
//Remove the border width
availableSpace -= ($menu.outerWidth(false) - $menu.innerWidth());
if (navWidth > availableSpace) {
var $menuItems = $menuWrap.children('li:not(.priority-nav__more)');
var itemsToHideCount = 1;
$($menuItems.get().reverse()).each(function(index){
navWidth -= $(this)[0].getBoundingClientRect().width;
if (navWidth > availableSpace) {
itemsToHideCount++;
} else {
return false;
}
});
var $itemsToHide = $menuWrap.children('li:not(.priority-nav__more)').slice(-itemsToHideCount);
$itemsToHide.each(function(index){
$(this).attr('data-width', $(this)[0].getBoundingClientRect().width);
});
$itemsToHide.prependTo($more.children('ul'));
} else {
var $moreItems = $more.children('ul').children('li');
var itemsToShowCount = 0;
if ($moreItems.length === 1) { // if there's only 1 item in "More" dropdown
if (availableSpace >= (navWidth - moreWidth + $moreItems.first().data('width'))) {
itemsToShowCount = 1;
}
} else {
$moreItems.each(function(index){
navWidth += $(this).data('width');
if (navWidth <= availableSpace) {
itemsToShowCount++;
} else {
return false;
}
});
}
if (itemsToShowCount > 0) {
var $itemsToShow = $moreItems.slice(0, itemsToShowCount);
$itemsToShow.insertBefore($menuWrap.children('.priority-nav__more'));
$moreItems = $more.children('ul').children('li');
if ($moreItems.length <= 0) {
$more.remove();
hasMore = false;
}
}
}
} else {
var $more = $('More ');
var availableSpace = $menu[0].getBoundingClientRect().width;
//Remove the padding width (assumming padding are px values)
availableSpace -= (parseInt($menu.css("padding-left"), 10) + parseInt($menu.css("padding-right"), 10));
//Remove the border width
availableSpace -= ($menu.outerWidth(false) - $menu.innerWidth());
if (navWidth > availableSpace) {
var $menuItems = $menuWrap.children('li');
var itemsToHideCount = 1;
$($menuItems.get().reverse()).each(function(index){
navWidth -= $(this)[0].getBoundingClientRect().width;
if (navWidth > availableSpace) {
itemsToHideCount++;
} else {
return false;
}
});
var $itemsToHide = $menuWrap.children('li:not(.priority-nav__more)').slice(-itemsToHideCount);
$itemsToHide.each(function(index){
$(this).attr('data-width', $(this)[0].getBoundingClientRect().width);
});
$itemsToHide.prependTo($more.children('ul'));
$more.appendTo($menuWrap);
hasMore = true;
}
}
}
$window.on('load webfontLoaded', calcWidth );
// $window.on('resize', $.throttle( 50, calcWidth ));
}
$document.ready( MINIMALDOG.documentOnReady.init );
$window.on('load', MINIMALDOG.documentOnLoad.init );
$window.on( 'resize', MINIMALDOG.documentOnResize.init );
})(jQuery);
;