
$(function(){var navbg=$(".navbar-background");var initialHeight=navbg.height();var refs=$(".level2 .menu-item a");var items=$(".level2 .menu-item");var address=document.location.pathname;console.log(items);if(address.includes("#")){address=address.split('#')[0];}
var matching=[];refs.each(function(i){var local=$(this).attr("dir")?$(this).attr("dir"):$(this).attr("href");if(local!=null){local=local.split(".")[0];if(address.includes(local)){matching.push({href:local,item:items[i]});}
$(this).click(function(){console.log(items.find('.active'));items.find('.active').removeClass('active')
items[i].classList.add("active");});}});matching=matching.sort((a,b)=>{let aMatches=address.includes(a.href);let bMatches=address.includes(b.href);if(aMatches===bMatches){return a.href.localeCompare(b.href);}
return aMatches?-1:1;}).reverse();if(matching.length>0){var value=matching[0].href;console.log(value);for(var m of matching){if(m.href==value){console.log(m.href);m.item.classList.add("active");}}}});$(function(){var tooltips=$(".btn-tooltip");tooltips.each(function(i,e){$(e).parent().mouseenter(function(){$(e).attr("active","true")}).mouseleave(function(){$(e).attr("active",null);});});});$(function(){const sections=$(".section h2[id], .sect2 h3[id]");sections.each(function(index,el){var t=$(el).append(`
      <span class="copy-link">
        <svg xmlns="http://www.w3.org/2000/svg" class="icon-link" width="18" height="18" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
          <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
          <path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5" />
          <path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5" />
        </svg>
      </span>
      <span class="copy-confirmation"/>
    `);$(el).find('.copy-link').on('click',e=>{var url=window.location.href;if(url.indexOf('#')>-1){url=url.split('#')[0];}
const textToCopy=url+"#"+el.id;var myTemporaryInputElement=document.createElement("input");myTemporaryInputElement.type="text";myTemporaryInputElement.value=textToCopy;document.body.appendChild(myTemporaryInputElement);myTemporaryInputElement.select();document.execCommand("Copy");document.body.removeChild(myTemporaryInputElement);console.log('Copied link:'+textToCopy)
var confirmation=$(el).find('.copy-confirmation');confirmation.attr('active','true');setTimeout(()=>confirmation.attr('active','false'),1000);});});});$(function(){var scrollTargets=$(".section h2, .section h3");var bar=$(".navbar-background")
var useBar=bar.length>0
var scrollButtons=$(".scroll-action");var filteredTargets=[];scrollButtons.each(function(index,ele){var target;var expected=$(ele).attr("data-target")
for(var i=0;i<scrollTargets.length;++i){var targetEl=scrollTargets[i];if(targetEl.id===expected){target=targetEl;filteredTargets.push(targetEl);break;}}
if(target){$(ele).click(function(){if(useBar){window.scrollTo({top:target.offsetTop-(useBar?bar.height():0),behavior:"smooth"})}
else{target.scrollIntoView({behavior:"smooth"});}})}});scrollTargets=$(filteredTargets);var progressElement=$(".navbar-background .progress");var useBarAsProgress=useBar?progressElement.length>0:false;var scrollTargetGroupsStart=[];var scrollButtonGroups=[];$(".scroll-group").each(function(gid,ele){var targetRef=$(ele).attr("data-target")
for(var i=0;i<scrollTargets.length;++i){if(scrollTargets[i].id===targetRef){scrollTargetGroupsStart.push(scrollTargets[i]);scrollButtonGroups.push(ele);break;}}});$('.scroll-top-page button').on('click',()=>window.scrollTo({top:0,behavior:'smooth',}));if(scrollTargets.length>0){var first=scrollTargets[0];$(window).on('scroll',function(e){var padding=useBar?bar.height()+200:200;$(".scroll-show-target").attr("active",first.getBoundingClientRect().top<padding?"true":null);if(useBarAsProgress){scrollTargets.each(function(i,ele){var itempos=ele.getBoundingClientRect().top;var index=i=="length"?scrollTargets.length:i;if(itempos>0&&itempos<padding){var progress=i/scrollTargets.length;var inv=1.0-progress;progressElement.css("width",(inv*100)+"%");}});}
var lastTg=null;var selectedElement=null;for(var i=0;i<scrollTargetGroupsStart.length;++i){var top=scrollTargetGroupsStart[i].getBoundingClientRect().top;if(top<=padding){if((lastTg!=null&&top>lastTg.getBoundingClientRect().top)||lastTg==null){lastTg=scrollTargetGroupsStart[i];}}}
for(var i=0;i<scrollButtonGroups.length;++i){var $e=$(scrollButtonGroups[i]);if(lastTg!=null&&$e.attr('data-target')===lastTg.id){$e.addClass("opened");selectedElement=scrollButtonGroups[i];}
else{$e.removeClass("opened");}}
var selectedTarget=lastTg;lastTg=null;for(var i=0;i<scrollTargets.length;++i){var top=scrollTargets[i].getBoundingClientRect().top
if(top<=padding){if((lastTg!=null&&top>lastTg.getBoundingClientRect().top)||lastTg==null){lastTg=scrollTargets[i];}}}
var toActive=null;for(var i=0;i<scrollButtons.length;++i){var $e=$(scrollButtons[i]);if(lastTg!=null&&$e.attr("data-target")===lastTg.id){if(toActive)
toActive.attr("active",null);toActive=$e;}
else{$e.attr("active",null);}}
if(toActive)
toActive.attr("active","true");});}});$(function(){function indexOfMin(arr){if(arr.length===0){return-1;}
var min=arr[0];var minIndex=0;for(var i=1;i<arr.length;i++){if(arr[i]<min){minIndex=i;min=arr[i];}}
return minIndex;}
function distances(offset,elements){var dists=[]
elements.each(function(index,ele){var itempos=ele.getBoundingClientRect().top;dists.push(Math.abs(offset-itempos));});return dists;}
var bar=$(".navbar-background")
var useBar=false;var upBtn=$(".navigation-buttons .up.prev-slide");var downBtn=$(".navigation-buttons .down.next-slide");var targets=$(".section h2, .section h3");function upScroll(){var padding=useBar?bar.height()+200:200;var topOffset=(useBar?bar.height()+80:80);var current=indexOfMin(distances(padding,targets));var target=targets[current>0?current-1:current];window.scrollTo({top:target.offsetTop-topOffset,behavior:"smooth"});}
function downScroll(){var padding=useBar?bar.height()+200:200;var topOffset=(useBar?bar.height()+80:80);var current=indexOfMin(distances(padding,targets));var target=targets[current+1<targets.length?current+1:current];window.scrollTo({top:target.offsetTop-topOffset,behavior:"smooth"});}
upBtn.on("click",upScroll);downBtn.on("click",downScroll);$(".navigation-buttons .up.page-start").on('click',()=>{var topOffset=(useBar?bar.height()+80:80);window.scrollTo({top:targets[0].offsetTop-topOffset,behavior:"smooth"});});$(".navigation-buttons .down.page-end").on('click',()=>{var topOffset=(useBar?bar.height()+80:80);window.scrollTo({top:targets[targets.length-1].offsetTop-topOffset,behavior:"smooth"});});$(window).keyup(function(e){if(e.keyCode==37){upBtn.click();}
else if(e.keyCode==39){downBtn.click();}});});$(function(){const $target=$('.stick-bottom-above');const target=$target[0];const stickEnd=$($target.attr('data-above'))[0];const bottomOffset=$target.attr('data-offset');function viewportYDistance(){const rect=stickEnd.getBoundingClientRect();return rect.top-window.innerHeight;}
function getOffsetLeft(elem){const src=elem;var offsetLeft=0;do{if(!isNaN(elem.offsetLeft)){offsetLeft+=elem.offsetLeft;}}while(elem=elem.offsetParent);console.log(offsetLeft);return offsetLeft;}
const definedPosType=$target.css('position');const definedBottom=$target.css('bottom');const definedLeft=$target.css('left');var fixedLeft=getOffsetLeft(target.parentElement);window.onresize=function(){$target.css('position',definedPosType);$target.css('left',definedLeft);$target.css('bottom',definedBottom);fixedLeft=getOffsetLeft(target.parentElement);$target.css('position','fixed');$target.css('left',fixedLeft);$target.css('bottom',bottomOffset);updatePosition();}
function updatePosition(){$target.css('position','fixed');$target.css('left',fixedLeft);$target.css('bottom',bottomOffset);const h=viewportYDistance();if(h<=0){$target.css('bottom','calc('+bottomOffset+' + '+(-h)+'px)');}}
$(window).scroll(updatePosition);updatePosition();});$(function(){var tooltips=$(".btn-tooltip");tooltips.each(function(i,e){$(e).parent().mouseenter(function(){$(e).attr("active","true")}).mouseleave(function(){$(e).attr("active",null);});});});document.addEventListener('DOMContentLoaded',()=>{const carousels=document.querySelectorAll('.carousel-widget');carousels.forEach(carousel=>{initCarousel(carousel);});});function initCarousel(carousel){const track=carousel.querySelector('.carousel-track');const slides=Array.from(track.children);const wrapper=carousel.querySelector('.carousel-wrapper');const viewport=carousel.querySelector('.carousel-viewport');const prevButton=document.createElement('button');prevButton.className='carousel-btn prev';prevButton.setAttribute('aria-label','Previous Slide');prevButton.innerHTML='&#10094;';wrapper.appendChild(prevButton);const nextButton=document.createElement('button');nextButton.className='carousel-btn next';nextButton.setAttribute('aria-label','Next Slide');nextButton.innerHTML='&#10095;';wrapper.appendChild(nextButton);const contentContainer=document.createElement('div');contentContainer.className='carousel-content';const stepIndicator=document.createElement('div');stepIndicator.className='step-indicator';stepIndicator.innerHTML='Step <span class="current-step">1</span> of <span class="total-steps">4</span>';viewport.appendChild(stepIndicator);const currentStepEl=stepIndicator.querySelector('.current-step');const totalStepsEl=stepIndicator.querySelector('.total-steps');const descEl=document.createElement('p');descEl.className='step-description';contentContainer.appendChild(descEl);const controlsContainer=document.createElement('div');controlsContainer.className='controls-container';const autoPlayBtn=document.createElement('button');autoPlayBtn.className='autoplay-btn';autoPlayBtn.setAttribute('aria-label','Pause Autoplay');autoPlayBtn.innerHTML=`
        <svg class="progress-ring" width="32" height="32">
            <circle class="progress-ring__bg" stroke="#ddd" stroke-width="2" fill="transparent" r="15" cx="16" cy="16"/>
            <circle class="progress-ring__circle" stroke="var(--primary-color)" stroke-width="2" fill="transparent" r="15" cx="16" cy="16"/>
        </svg>
        <span class="icon">⏸</span>
    `;controlsContainer.appendChild(autoPlayBtn);contentContainer.appendChild(controlsContainer);carousel.insertBefore(contentContainer,wrapper);const dotsContainer=carousel.querySelector('.carousel-dots');const autoPlayIcon=autoPlayBtn.querySelector('.icon');const progressCircle=autoPlayBtn.querySelector('.progress-ring__circle');const radius=progressCircle.r.baseVal.value;const circumference=radius*2*Math.PI;progressCircle.style.strokeDasharray=`${circumference} ${circumference}`;progressCircle.style.strokeDashoffset=circumference;function setProgress(percent){const offset=circumference-percent/100*circumference;progressCircle.style.strokeDashoffset=offset;}
let currentIndex=0;let isPlaying=true;let autoPlayStartTime;let animationFrameId;const autoPlayDelay=2500;totalStepsEl.textContent=slides.length;startAutoPlay();function startAutoPlay(){isPlaying=true;autoPlayIcon.textContent='⏸';autoPlayBtn.classList.remove('is-paused');autoPlayBtn.setAttribute('aria-label','Pause Autoplay');autoPlayStartTime=Date.now();runAutoPlayLoop();}
function runAutoPlayLoop(){if(!isPlaying)return;const elapsed=Date.now()-autoPlayStartTime;const progress=Math.min(elapsed/autoPlayDelay,1);setProgress(progress*100);if(progress>=1){goToSlide(currentIndex+1,false);}else{animationFrameId=requestAnimationFrame(runAutoPlayLoop);}}
function stopAutoPlay(){isPlaying=false;cancelAnimationFrame(animationFrameId);autoPlayIcon.textContent='▶';autoPlayBtn.classList.add('is-paused');autoPlayBtn.setAttribute('aria-label','Start Autoplay');}
function resetAutoPlay(){if(isPlaying){cancelAnimationFrame(animationFrameId);autoPlayStartTime=Date.now();setProgress(0);runAutoPlayLoop();}else{setProgress(0);}}
autoPlayBtn.addEventListener('click',()=>{if(isPlaying){stopAutoPlay();}else{startAutoPlay();}});slides.forEach((_,index)=>{const dot=document.createElement('div');dot.classList.add('dot');if(index===0)dot.classList.add('active');dot.addEventListener('click',()=>{goToSlide(index);});dotsContainer.appendChild(dot);});const dots=Array.from(dotsContainer.children);const images=track.querySelectorAll('img');const updateDimensions=()=>{let maxWidth=0;let maxHeight=0;images.forEach(img=>{if(img.naturalWidth>0){const match=img.src.match(/@(\d+)x\.[a-zA-Z0-9]+($|\?)/);const scaleFactor=match?parseInt(match[1],10):1;const w=img.naturalWidth/scaleFactor;const h=img.naturalHeight/scaleFactor;img.style.width=`${w}px`;img.style.height=`${h}px`;if(w>maxWidth)maxWidth=w;if(h>maxHeight)maxHeight=h;}});if(maxWidth>0&&maxHeight>0){viewport.style.width=`${maxWidth}px`;viewport.style.height=`${maxHeight}px`;goToSlide(currentIndex,false);}};images.forEach(img=>{if(img.complete){updateDimensions();}else{img.onload=updateDimensions;}});function updateContent(index){const slide=slides[index];const desc=slide.getAttribute('data-desc');descEl.style.opacity=0;setTimeout(()=>{descEl.innerHTML=desc;currentStepEl.textContent=index+1;descEl.style.opacity=1;},200);}
function updateDots(index){dots.forEach(dot=>dot.classList.remove('active'));dots[index].classList.add('active');}
function goToSlide(index,stopAuto=true){if(stopAuto){stopAutoPlay();}
if(index<0)index=slides.length-1;if(index>=slides.length)index=0;currentIndex=index;const amountToMove=-100*currentIndex;track.style.transform=`translateX(${amountToMove}%)`;updateDots(currentIndex);updateContent(currentIndex);resetAutoPlay();}
nextButton.addEventListener('click',()=>{goToSlide(currentIndex+1);});prevButton.addEventListener('click',()=>{goToSlide(currentIndex-1);});updateContent(0);carousel.addEventListener('keydown',(e)=>{if(e.key==='ArrowLeft')goToSlide(currentIndex-1);if(e.key==='ArrowRight')goToSlide(currentIndex+1);});let isScrolling=false;viewport.addEventListener('wheel',(e)=>{e.preventDefault();if(isScrolling)return;isScrolling=true;if(e.deltaY>0){goToSlide(currentIndex+1);}else{goToSlide(currentIndex-1);}
setTimeout(()=>{isScrolling=false;},500);},{passive:false});goToSlide(0,false);}