jQuery(document).ready(function ($){
function sticky(){
var window_top=$(window).scrollTop();
var top_position=$('body').offset().top + 120;
var element_to_stick=$('.header__main');
if(window_top > top_position){
element_to_stick.addClass('header__floating');
}else{
element_to_stick.removeClass('header__floating');
}}
$(window).scroll(sticky);
sticky();
});
jQuery(document).ready(function ($){
let toggleTrigger=$('.toggle__trigger');
toggleTrigger.click(function (){
$(this).next('.toggle__content').slideToggle("fast");
$(this).prev('.toggle__content').slideToggle("fast");
$(this).toggleClass('active');
});
});
document.addEventListener("DOMContentLoaded", function (){
const hamburgerMenu=document.querySelector(".hamburger__menu");
const bars=document.querySelectorAll('.bar');
const mobileMenu=document.querySelector("#mobile__menu");
hamburgerMenu.addEventListener("click", function (){
bars.forEach(bar=> bar.classList.toggle('hamburger__icon__close'));
mobileMenu.classList.toggle("mobile__menu--active");
});
const subMenuToggles=document.querySelectorAll(".mobile__menu .menu-item-has-children > a");
const subMenus=document.querySelectorAll(".mobile__menu .menu-item-has-children .sub-menu");
subMenuToggles.forEach((toggle, index)=> {
toggle.clicked=0;
toggle.addEventListener("click", function (event){
if(toggle.clicked!==0){
subMenus[index].classList.toggle("sub__menu--active");
}else{
event.preventDefault();
subMenus[index].classList.toggle("sub__menu--active");
toggle.clicked=1;
}});
});
});
document.addEventListener("DOMContentLoaded", function (){
const banner=document.getElementById("tcf-topbanner");
if(!banner) return;
if(!banner.hidden){
const setHeight=()=> document.documentElement.style.setProperty("--tcf-topbanner-h", banner.offsetHeight + "px");
setHeight();
if(typeof ResizeObserver!=="undefined"){
new ResizeObserver(setHeight).observe(banner);
}}
const closeButton=banner.querySelector(".topbanner__close");
if(!closeButton) return;
closeButton.addEventListener("click", ()=> {
try {
localStorage.setItem("tcfTopbannerDismissed", banner.getAttribute("data-banner-hash")||"");
} catch (e){
}
banner.hidden=true;
document.body.classList.remove("has-topbanner");
document.documentElement.style.removeProperty("--tcf-topbanner-h");
const brand=document.querySelector(".header__main .brand a");
if(brand) brand.focus();
});
});
document.addEventListener("DOMContentLoaded", function (){
const wrappers=document.querySelectorAll("[data-hero-video]");
if(!wrappers.length) return;
const reducedMotion=window.matchMedia("(prefers-reduced-motion: reduce)");
wrappers.forEach((wrapper)=> {
const video=wrapper.querySelector("[data-hero-video-media]");
const controls=wrapper.querySelector(".hero__video_controls");
const soundButton=wrapper.querySelector("[data-hero-video-sound]");
const soundLabel=wrapper.querySelector("[data-hero-video-sound-label]");
const soundIcon=soundButton ? soundButton.querySelector("i"):null;
const pauseButton=wrapper.querySelector("[data-hero-video-pause]");
const pauseLabel=pauseButton ? pauseButton.querySelector(".visuallyHidden"):null;
const pauseIcon=pauseButton ? pauseButton.querySelector("i"):null;
if(!video||!controls||!soundButton||!soundLabel||!soundIcon||!pauseButton||!pauseLabel||!pauseIcon) return;
let soundMode=false;
let userPaused=false;
let playToken=0;
const setPauseState=(paused)=> {
pauseIcon.classList.toggle("fa-pause", !paused);
pauseIcon.classList.toggle("fa-play", paused);
pauseLabel.textContent=pauseButton.getAttribute(paused ? "data-label-resume":"data-label-pause");
};
const stopPlayback=()=> {
playToken++;
video.pause();
};
const safePlay=(onBlocked)=> {
const token=++playToken;
video.play().then(()=> {
if(token===playToken) setPauseState(false);
}).catch((error)=> {
if(token!==playToken) return;
if(error.name==="AbortError") return;
onBlocked(error);
});
};
const setStopped=()=> {
stopPlayback();
setPauseState(true);
};
const startAmbient=()=> {
video.muted=true;
video.loop=true;
safePlay((error)=> {
setStopped();
console.info("Hero video autoplay blocked by the browser:", error.name);
});
};
const exitSound=()=> {
soundMode=false;
stopPlayback();
video.muted=true;
video.loop=true;
video.currentTime=0;
soundIcon.classList.remove("fa-stop");
soundIcon.classList.add("fa-play");
soundLabel.textContent=soundButton.getAttribute("data-label-play");
pauseButton.hidden=false;
if(!reducedMotion.matches&&!userPaused){
startAmbient();
}else{
setStopped();
}};
soundButton.addEventListener("click", ()=> {
if(soundMode){
exitSound();
return;
}
soundMode=true;
stopPlayback();
video.loop=false;
video.muted=false;
video.currentTime=0;
soundIcon.classList.remove("fa-play");
soundIcon.classList.add("fa-stop");
soundLabel.textContent=soundButton.getAttribute("data-label-stop");
pauseButton.hidden=true;
safePlay(()=> exitSound());
});
pauseButton.addEventListener("click", ()=> {
if(video.paused){
userPaused=false;
startAmbient();
}else{
userPaused=true;
setStopped();
}});
video.addEventListener("ended", ()=> {
if(soundMode) exitSound();
});
video.addEventListener("error", ()=> {
setTimeout(()=> {
if(video.error||video.networkState===HTMLMediaElement.NETWORK_NO_SOURCE){
controls.hidden=true;
console.warn("Hero video failed to load — keeping the poster image.", video.error);
}}, 0);
}, true);
document.addEventListener("keydown", (event)=> {
if(event.key==="Escape"&&soundMode){
exitSound();
soundButton.focus();
}});
reducedMotion.addEventListener("change", ()=> {
if(!reducedMotion.matches) return;
if(soundMode){
exitSound();
}else{
setStopped();
}});
const resumeAmbient=()=> {
if(!reducedMotion.matches&&!userPaused&&!soundMode&&video.paused) startAmbient();
};
window.addEventListener("pageshow", (event)=> {
if(!event.persisted) return;
if(soundMode){
exitSound();
}else{
resumeAmbient();
}});
document.addEventListener("visibilitychange", ()=> {
if(!document.hidden) resumeAmbient();
});
controls.hidden=false;
if(reducedMotion.matches){
setStopped();
}else{
startAmbient();
}});
});
document.addEventListener("DOMContentLoaded", function (){
const blocks=document.querySelectorAll("[data-region-block]");
if(!blocks.length) return;
const headerScript=document.querySelector("script[data-cb-site]");
const defaultSite=headerScript ? headerScript.getAttribute("data-cb-site"):"";
const defaultDomain=headerScript ? headerScript.getAttribute("data-cb-domain"):"";
let currentSite=defaultSite;
const switchChargebeeSite=(site, domain)=> {
if(typeof window.Chargebee==="undefined"||!site||site===currentSite) return;
window.Chargebee.tearDown();
document.querySelectorAll("[data-cb-type]").forEach((el)=> el.replaceWith(el.cloneNode(true)));
window.Chargebee.init({ site: site, domain: domain||undefined });
window.Chargebee.registerAgain();
currentSite=site;
};
const activateRegion=(key)=> {
blocks.forEach((block)=> {
const panels=block.querySelectorAll(".region__panel");
if(!panels.length) return;
let activeKey=key;
if(!block.querySelector('.region__panel[data-region="' + key + '"]')){
activeKey=panels[0].getAttribute("data-region");
}
panels.forEach((panel)=> {
panel.classList.toggle("active", panel.getAttribute("data-region")===activeKey);
});
const switcher=block.querySelector(".region__switcher");
if(!switcher) return;
let activeLabel="";
switcher.querySelectorAll("button[data-region-target]").forEach((button)=> {
const isActive=button.getAttribute("data-region-target")===activeKey;
button.classList.toggle("active", isActive);
button.setAttribute("aria-pressed", isActive ? "true":"false");
if(isActive) activeLabel=button.textContent.trim();
});
const status=switcher.querySelector(".region__switcher_status");
if(status&&activeLabel){
status.textContent=(switcher.getAttribute("data-announce")||"%s").replace("%s", activeLabel);
}});
const activeCbPanel=document.querySelector(".region__panel.active[data-region-cb-site]");
if(activeCbPanel){
switchChargebeeSite(activeCbPanel.getAttribute("data-region-cb-site"), activeCbPanel.getAttribute("data-region-cb-domain")||"");
}else{
switchChargebeeSite(defaultSite, defaultDomain);
}};
blocks.forEach((block)=> {
block.querySelectorAll(".region__switcher button[data-region-target]").forEach((button)=> {
button.addEventListener("click", ()=> activateRegion(button.getAttribute("data-region-target")));
});
});
const initialCbPanel=document.querySelector(".region__panel.active[data-region-cb-site]");
if(initialCbPanel){
switchChargebeeSite(initialCbPanel.getAttribute("data-region-cb-site"), initialCbPanel.getAttribute("data-region-cb-domain")||"");
}});
!function(o){"object"==typeof module&&"object"==typeof module.exports?o(require("jquery"),window,document):o(jQuery,window,document)}(function(o,t,i,e){var s=[],l=function(){return s.length?s[s.length-1]:null},n=function(){var o,t=!1;for(o=s.length-1;o>=0;o--)s[o].$blocker&&(s[o].$blocker.toggleClass("current",!t).toggleClass("behind",t),t=!0)};o.modal=function(t,i){var e,n;if(this.$body=o("body"),this.options=o.extend({},o.modal.defaults,i),this.options.doFade=!isNaN(parseInt(this.options.fadeDuration,10)),this.$blocker=null,this.options.closeExisting)for(;o.modal.isActive();)o.modal.close();if(s.push(this),t.is("a"))if(n=t.attr("href"),this.anchor=t,/^#/.test(n)){if(this.$elm=o(n),1!==this.$elm.length)return null;this.$body.append(this.$elm),this.open()}else this.$elm=o("<div>"),this.$body.append(this.$elm),e=function(o,t){t.elm.remove()},this.showSpinner(),t.trigger(o.modal.AJAX_SEND),o.get(n).done(function(i){if(o.modal.isActive()){t.trigger(o.modal.AJAX_SUCCESS);var s=l();s.$elm.empty().append(i).on(o.modal.CLOSE,e),s.hideSpinner(),s.open(),t.trigger(o.modal.AJAX_COMPLETE)}}).fail(function(){t.trigger(o.modal.AJAX_FAIL);var i=l();i.hideSpinner(),s.pop(),t.trigger(o.modal.AJAX_COMPLETE)});else this.$elm=t,this.anchor=t,this.$body.append(this.$elm),this.open()},o.modal.prototype={constructor:o.modal,open:function(){var t=this;this.block(),this.anchor.blur(),this.options.doFade?setTimeout(function(){t.show()},this.options.fadeDuration*this.options.fadeDelay):this.show(),o(i).off("keydown.modal").on("keydown.modal",function(o){var t=l();27===o.which&&t.options.escapeClose&&t.close()}),this.options.clickClose&&this.$blocker.click(function(t){t.target===this&&o.modal.close()})},close:function(){s.pop(),this.unblock(),this.hide(),o.modal.isActive()||o(i).off("keydown.modal")},block:function(){this.$elm.trigger(o.modal.BEFORE_BLOCK,[this._ctx()]),this.$body.css("overflow","hidden"),this.$blocker=o('<div class="'+this.options.blockerClass+' blocker current"></div>').appendTo(this.$body),n(),this.options.doFade&&this.$blocker.css("opacity",0).animate({opacity:1},this.options.fadeDuration),this.$elm.trigger(o.modal.BLOCK,[this._ctx()])},unblock:function(t){!t&&this.options.doFade?this.$blocker.fadeOut(this.options.fadeDuration,this.unblock.bind(this,!0)):(this.$blocker.children().appendTo(this.$body),this.$blocker.remove(),this.$blocker=null,n(),o.modal.isActive()||this.$body.css("overflow",""))},show:function(){this.$elm.trigger(o.modal.BEFORE_OPEN,[this._ctx()]),this.options.showClose&&(this.closeButton=o('<a href="#close-modal" rel="modal:close" class="close-modal '+this.options.closeClass+'">'+this.options.closeText+"</a>"),this.$elm.append(this.closeButton)),this.$elm.addClass(this.options.modalClass).appendTo(this.$blocker),this.options.doFade?this.$elm.css({opacity:0,display:"inline-block"}).animate({opacity:1},this.options.fadeDuration):this.$elm.css("display","inline-block"),this.$elm.trigger(o.modal.OPEN,[this._ctx()])},hide:function(){this.$elm.trigger(o.modal.BEFORE_CLOSE,[this._ctx()]),this.closeButton&&this.closeButton.remove();var t=this;this.options.doFade?this.$elm.fadeOut(this.options.fadeDuration,function(){t.$elm.trigger(o.modal.AFTER_CLOSE,[t._ctx()])}):this.$elm.hide(0,function(){t.$elm.trigger(o.modal.AFTER_CLOSE,[t._ctx()])}),this.$elm.trigger(o.modal.CLOSE,[this._ctx()])},showSpinner:function(){this.options.showSpinner&&(this.spinner=this.spinner||o('<div class="'+this.options.modalClass+'-spinner"></div>').append(this.options.spinnerHtml),this.$body.append(this.spinner),this.spinner.show())},hideSpinner:function(){this.spinner&&this.spinner.remove()},_ctx:function(){return{elm:this.$elm,$elm:this.$elm,$blocker:this.$blocker,options:this.options}}},o.modal.close=function(t){if(o.modal.isActive()){t&&t.preventDefault();var i=l();return i.close(),i.$elm}},o.modal.isActive=function(){return s.length>0},o.modal.getCurrent=l,o.modal.defaults={closeExisting:!0,escapeClose:!0,clickClose:!0,closeText:"Close",closeClass:"",modalClass:"modal",blockerClass:"jquery-modal",spinnerHtml:'<div class="rect1"></div><div class="rect2"></div><div class="rect3"></div><div class="rect4"></div>',showSpinner:!0,showClose:!0,fadeDuration:null,fadeDelay:1},o.modal.BEFORE_BLOCK="modal:before-block",o.modal.BLOCK="modal:block",o.modal.BEFORE_OPEN="modal:before-open",o.modal.OPEN="modal:open",o.modal.BEFORE_CLOSE="modal:before-close",o.modal.CLOSE="modal:close",o.modal.AFTER_CLOSE="modal:after-close",o.modal.AJAX_SEND="modal:ajax:send",o.modal.AJAX_SUCCESS="modal:ajax:success",o.modal.AJAX_FAIL="modal:ajax:fail",o.modal.AJAX_COMPLETE="modal:ajax:complete",o.fn.modal=function(t){return 1===this.length&&new o.modal(this,t),this},o(i).on("click.modal",'a[rel~="modal:close"]',o.modal.close),o(i).on("click.modal",'a[rel~="modal:open"]',function(t){t.preventDefault(),o(this).modal()})});