{"version":3,"sources":["main.js"],"names":["intersectingSection","isRTL","$","attr","winWidth","window","width","winHeight","height","vpMobile600","vpTablet767","vpTablet991","vpTablet1200","black_color","white_color","send1_color","isPortrait","innerHeight","innerWidth","changeTheme","browserDetect","on","animate","scrollTop","scrollToTopOnLoad","getComponents","handleResizeChange","removeTimelineOnFooter","scrollbarInit","imgRespChange","themeChangingElem","document","querySelectorAll","localStorage","getItem","body","classList","add","remove","length","forEach","elem","addEventListener","contains","setItem","img","imgMobSrc","getAttribute","matchMedia","matches","src","cSbar","PerfectScrollbar","wheelSpeed","wheelPropagation","minScrollbarLength","swipeEasing","section","i","impactSectionAnimation","statementSectionAnim","statementSectionAltAnim","statementSectionBusinessAltAnim","sectionTimelineScroll","generalHorizontalSection","jsAnimFade","textUpAnimations","footerAnimation","changeBgColorStatementSectionsMob","impactNumbersAnimation","statementDrawerHeaderScroll","fadeOutOnScrollUp","tem","ua","M","navigator","sayswho","userAgent","match","test","exec","slice","join","replace","appName","appVersion","splice","addClass","arabicDigitsEn","setTimeout","contents","filter","this","nodeType","nodeValue","each","newHtml","text","replaceWith","dataTrim","html","charLimit","parseInt","maxLength","trim","substring","lastIndexOf","fadeOutSection","gsap","concat","timeline","scrollTrigger","start","end","trigger","toggleActions","fromTo","opacity","ChangeToSvg","$img","imgID","imgClass","imgURL","get","data","$svg","find","removeAttr","ready","videoPlayerInit","loader","formValidation","landingAnimation","checkActiveLanguage","openAndCloseStatmentDrawer","addNavLinksEvents","onClickMobileMenu","readMoreBtn","ScrollTrigger","normalizeScroll","ScrollSmoother","create","smooth","speed","type","initialWidth","location","reload","animContainerSections","from","y","duration","stagger","animContainerSection","quoteTextContainer","quoteWords","tl","quoteTxt","_quoteTextContainer$q","querySelector","textContent","split","word","index","wordElement","createElement","wordChildElement","className","appendChild","wordChildElementSpace","translateY","skewY","display","ease","statementDrawer","drawer","drawerContent","drawerHeader","getBoundingClientRect","top","imgRect","windowMidHeight","imgElement","sectionRect","bottom","impactWrapper","stat","statStartValue","statEndValue","mainSpan","numbersArray","decimalArray","concatDecimal","statOriginalValue","Number","isInteger","statOriginalValueArray","Array","String","map","numberArray","startSpan","innerHTML","endSpan","statFigureElement","spanContent","setAttribute","statFigureCont","spansCount","heightOfOne","clientHeight","onStart","integerPart","_statOriginalValue$sp2","_slicedToArray","decimalPart","integerArray","_toConsumableArray","decimalSpan","_quoteTextContainer$q2","button","event","form","target","closest","isValid","$select","$errorMessage","$select2Container","val","show","removeClass","hide","siblings","preventDefault","togglePasswordIcons","togglePasswordSlashIcons","togglePasswordVisibility","clickedIcon","passwordField","parentNode","relatedIcon","nextElementSibling","previousElementSibling","style","icon","Slashicon","thisId","videojs","toRem","value","parseFloat","getComputedStyle","documentElement","fontSize","loaderAnimCompletes","herobgimgContainer","shapesTl","expandTl","isLandScapeScreen","mm","scrollTo","repeat","yoyo","paused","set","zIndex","to","delay","rotate","position","borderColor","ontimeupdate","borderWidth","onComplete","_defineProperty","scale","readyState","kill","play","css","pointer-events","menuTl","toggleClass","hasClass","x","initialScreenHeight","currentScreenHeight","landingWrapper","heroScrollUp","landingTl","pin","scrub","invalidateOnRefresh","transformOrigin","paddingBottom","left","borderTopRightRadius","borderTopLeftRadius","right","fadeAnimStarts","statementSec","statementTl","computedStyle","topHeadingHeightRem","anticipatePin","onLeaveBack","topHeadingHeight","force3D","onReverseComplete","sectionSelector","tileid","tileid3","topHeading","imgPattern","horizontalDetail","textBaseDetail","paraWrap","paragraphs","every","paragraph","console","error","totalWidth","xEndValue","children","outerWidth","overflow","tw1","tw3","offsetWidth","delayedCall","parent","rightCenterElement","headingWrapper","refresh","statementSections","drawers","sectionUid","readStatementCtas","smoother","readStatementCta","drawerUid","_document$body","closeCtas","backDropBg","closeCta","_document$body2","_document$body3","keydown","e","keyCode","_document$body4","sections","getElementsByClassName","sectionsHeaders","navMobItems","timelines","sectionsArray","timelinesArray","sectionsHeadersArray","j","targetAttr","currentTarget","secAttr","offsetY","navSectionsArray","mainTextContainerObserver","IntersectionObserver","entries","entry","dataId","isIntersecting","indexOf","timelineDataId","rootMargin","threshold","headerContainerObserver","observe","sectionId","sectionIdx","isSectionDark","currentSection","impactSection","textContainer","newRightSection","newRightSectionHeight","pinContainer","contentContainer","elements","elementHeadings","textContainers","images","intersectingIndex","element","textContainerObserver","isNotMobile","isMobile","context","lastElement","timelineFirstWidth","timelineWidth","lastScrollTop","firstChild","conditions","firstElement","timelineTotalElements","marginLeft","snap","snapTo","scrollY","currentScrollTop","isScrollingDown","skipBtn","_timeline$getBounding","timelineLeft","timelineRight","pointerEvents","nextSibling","observer","root","$content","$bodyElements","$paragraphs","truncatedText","$para","originalText","mobileVideoUrl","desktopVideoUrl","createSource","$videoElement","videoUrl","$source","append","load","loadVideo","$mobileVideo","$desktopVideo","empty","setVH","vh","setProperty","resize"],"mappings":"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","file":"scripts.min.js","sourcesContent":["// const { $ } = require(\"video.js/dist/types/utils/dom\");\r\nvar isRTL = $(\"html\").attr(\"dir\") == \"rtl\" ? true : false,\r\n winWidth = $(window).width(),\r\n winHeight = $(window).height();\r\nconst vpMobile600 = 600;\r\nconst vpTablet767 = 767;\r\nconst vpTablet991 = 991;\r\nconst vpTablet1200 = 1200;\r\nconst black_color = '#221F20';\r\nconst white_color = '#FFFFFF';\r\nconst send1_color = '#DCD4C9';\r\n\r\nconst isPortrait = window.innerHeight > window.innerWidth;\r\n\r\n\r\n\r\n$(function () {\r\n browserDetect();\r\n});\r\n\r\n$(window).on(\"resize orientationchange\", function () {\r\n // Do on resize\r\n (winWidth = $(window).width()), (winHeight = $(window).height());\r\n});\r\n\r\n$(window).on(\"scroll\", function () {\r\n //Do on Scroll\r\n\r\n});\r\n$(window).on(\"load\", function () {\r\n $('html, body').animate({ scrollTop: -1 });\r\n scrollToTopOnLoad()\r\n getComponents()\r\n handleResizeChange()\r\n removeTimelineOnFooter()\r\n scrollbarInit()\r\n imgRespChange();\r\n});\r\n\r\n\r\n\r\n// Theme Changer\r\nconst changeTheme = () => {\r\n const themeChangingElem = document.querySelectorAll('.js-theme-changer')\r\n\r\n if (localStorage.getItem('isThemeDark') == \"true\") {\r\n document.body.classList.add('dark-theme');\r\n document.body.classList.remove('light-theme');\r\n } else {\r\n document.body.classList.add('light-theme');\r\n document.body.classList.remove('dark-theme');\r\n }\r\n\r\n themeChangingElem && themeChangingElem.length > 0 && themeChangingElem.forEach(elem => {\r\n elem.addEventListener('click', () => {\r\n if (document.body.classList.contains('light-theme')) {\r\n document.body.classList.remove('light-theme');\r\n document.body.classList.add('dark-theme');\r\n localStorage.setItem('isThemeDark', 'true');\r\n } else {\r\n document.body.classList.remove('dark-theme');\r\n document.body.classList.add('light-theme');\r\n localStorage.setItem('isThemeDark', 'false');\r\n }\r\n })\r\n })\r\n}\r\n\r\n\r\nfunction imgRespChange() {\r\n const imgs = document.querySelectorAll('.js-image-mobile-change');\r\n\r\n imgs.forEach(img => {\r\n const imgMobSrc = img.getAttribute('data-mob-src');\r\n\r\n if (imgMobSrc && window.matchMedia('(max-width: 768px)').matches) {\r\n img.src = imgMobSrc;\r\n }\r\n });\r\n}\r\n\r\nfunction scrollbarInit() {\r\n\r\n var customScrollbars = document.querySelectorAll('.custom-scrollbar');\r\n customScrollbars.forEach(cSbar => {\r\n var ps = new PerfectScrollbar(cSbar, {\r\n wheelSpeed: 1,\r\n wheelPropagation: true,\r\n minScrollbarLength: 10,\r\n swipeEasing: true,\r\n });\r\n })\r\n}\r\n\r\nfunction getComponents() {\r\n const allSections = document.querySelectorAll('.js-impact-section, .js-statement-section, .js-statement-section-alt, .js-statement-section-alt-business, .js-section-timeline-scroll-main, .gen-statement, .gen-statement2');\r\n\r\n allSections.forEach((section, i) => {\r\n if (section.classList.contains('js-impact-section')) {\r\n impactSectionAnimation(section)\r\n } else if (section.classList.contains('js-statement-section')) {\r\n statementSectionAnim(section, i)\r\n } else if (section.classList.contains('js-statement-section-alt')) {\r\n statementSectionAltAnim(section)\r\n\r\n } else if (section.classList.contains('js-statement-section-alt-business')) {\r\n statementSectionBusinessAltAnim(section)\r\n }\r\n else if (section.classList.contains('js-section-timeline-scroll-main')) {\r\n sectionTimelineScroll()\r\n } else if (section.classList.contains('gen-statement')) {\r\n generalHorizontalSection('.gen-statement');\r\n }\r\n else if (section.classList.contains('gen-statement2')) {\r\n generalHorizontalSection('.gen-statement2');\r\n }\r\n\r\n });\r\n jsAnimFade()\r\n textUpAnimations()\r\n footerAnimation()\r\n changeBgColorStatementSectionsMob();\r\n // changeBgHorizontal();\r\n impactNumbersAnimation()\r\n statementDrawerHeaderScroll()\r\n fadeOutOnScrollUp()\r\n}\r\n\r\n\r\nfunction browserDetect() {\r\n navigator.sayswho = (function () {\r\n var ua = navigator.userAgent,\r\n tem,\r\n M =\r\n ua.match(\r\n /(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i\r\n ) || [];\r\n if (/trident/i.test(M[1])) {\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return \"IE \" + (tem[1] || \"\");\r\n }\r\n if (M[1] === \"Chrome\") {\r\n tem = ua.match(/\\b(OPR|Edge)\\/(\\d+)/);\r\n if (tem != null) return tem.slice(1).join(\"\").replace(\"OPR\", \"Opera\");\r\n }\r\n M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, \"-?\"];\r\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null) M.splice(1, 1, tem[1]);\r\n return M.join(\" \");\r\n })();\r\n $(\"body\").addClass(navigator.sayswho);\r\n}\r\n\r\nfunction arabicDigitsEn() {\r\n\r\n setTimeout(() => {\r\n if ($(\"html\").attr(\"dir\") === \"rtl\") {\r\n $('*').contents().filter(function () {\r\n return this.nodeType === 3 && /\\d/.test(this.nodeValue); // Select text nodes that contain digits\r\n }).each(function () {\r\n var newHtml = $(this).text().replace(/(\\d+)/g, '$1'); // Wrap digits in \r\n $(this).replaceWith(newHtml); // Replace the original text node with the new HTML\r\n });\r\n }\r\n }, 800);\r\n\r\n}\r\n// When document ready (loader initiates)\r\n$(document).ready(function () {\r\n videoPlayerInit();\r\n loader();\r\n dataTrim();\r\n ChangeToSvg();\r\n formValidation();\r\n landingAnimation();\r\n scrollToTopOnLoad()\r\n checkActiveLanguage(); // Check which language is active\r\n scrollTop(); // Footer scroll to top button\r\n openAndCloseStatmentDrawer();\r\n addNavLinksEvents()\r\n onClickMobileMenu()\r\n // lazyLoadingFunc();\r\n readMoreBtn();\r\n // loadVideoLazy();\r\n arabicDigitsEn();\r\n changeTheme()\r\n\r\n\r\n\r\n});\r\n\r\n\r\n\r\nif (window.matchMedia(`(min-width: ${vpTablet1200}px)`).matches) {\r\n ScrollTrigger.normalizeScroll(true);\r\n ScrollSmoother.create({\r\n smooth: 0.4,\r\n speed: 1,\r\n type: \"touch,wheel,pointer\",\r\n\r\n });\r\n}\r\n\r\n\r\nlet intersectingSection;\r\n\r\n\r\nfunction dataTrim() {\r\n var ellipsis = \"...\";\r\n $(\"[data-trim]\").each(function () {\r\n var text = $(this).html();\r\n var charLimit = parseInt($(this).attr(\"data-trim\"));\r\n $(this).html(TrimLength(text, charLimit));\r\n $(this).addClass(\"is--trimmed\");\r\n });\r\n\r\n function TrimLength(text, maxLength) {\r\n text = $.trim(text);\r\n if (text.length > maxLength) {\r\n text = text.substring(0, maxLength - ellipsis.length);\r\n return text.substring(0, text.lastIndexOf(\" \")) + ellipsis;\r\n } else return text;\r\n }\r\n}\r\n\r\n\r\nfunction fadeOutOnScrollUp() {\r\n const fadeOutSections = document.querySelectorAll('.js-fade-out-on-scroll-up')\r\n\r\n fadeOutSections.forEach(fadeOutSection => {\r\n let mm = gsap.matchMedia()\r\n\r\n mm.add(`(min-width: ${vpTablet767}px)`, () => {\r\n\r\n const tl = gsap.timeline({\r\n scrollTrigger: {\r\n start: 'bottom top+=253',\r\n end: \"bottom top\",\r\n trigger: fadeOutSection,\r\n toggleActions: 'play reverse play reverse',\r\n }\r\n })\r\n\r\n tl.fromTo(fadeOutSection, {\r\n opacity: 1\r\n }, {\r\n opacity: 0.5\r\n })\r\n })\r\n\r\n })\r\n}\r\n\r\nfunction ChangeToSvg() {\r\n $(\"img.js-tosvg\").each(function () {\r\n var $img = $(this);\r\n var imgID = $img.attr(\"id\");\r\n var imgClass = $img.attr(\"class\");\r\n var imgURL = $img.attr(\"src\");\r\n $.get(\r\n imgURL,\r\n function (data) {\r\n var $svg = $(data).find(\"svg\");\r\n if (typeof imgID !== \"undefined\") {\r\n $svg = $svg.attr(\"id\", imgID);\r\n }\r\n if (typeof imgClass !== \"undefined\") {\r\n $svg = $svg.attr(\"class\", imgClass + \" insvg\");\r\n }\r\n $svg = $svg.removeAttr(\"xmlns:a\");\r\n if (\r\n !$svg.attr(\"viewBox\") &&\r\n $svg.attr(\"height\") &&\r\n $svg.attr(\"width\")\r\n ) {\r\n $svg.attr(\r\n \"viewBox\",\r\n \"0 0 \" + $svg.attr(\"height\") + \" \" + $svg.attr(\"width\")\r\n );\r\n }\r\n $img.replaceWith($svg);\r\n },\r\n \"xml\"\r\n );\r\n });\r\n}\r\n\r\n// Handle resize Change\r\n\r\nconst handleResizeChange = () => {\r\n let initialWidth = window.innerWidth;\r\n\r\n function reloadWindow() {\r\n const newWidth = window.innerWidth;\r\n if (newWidth !== initialWidth) {\r\n window.location.reload();\r\n }\r\n }\r\n\r\n window.addEventListener('resize', reloadWindow);\r\n};\r\n\r\n// Footer Animations\r\n\r\nfunction footerAnimation() {\r\n // js-section-timeline-wrapper\r\n const animContainerSections = document.querySelectorAll(\".js-footer-wrapper\");\r\n\r\n const tl = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: '.js-footer-wrapper',\r\n start: window.matchMedia(`(min-width: ${vpTablet1200}px)`).matches ? 'top 70%' : 'top 80%',\r\n }\r\n });\r\n\r\n tl.from('.js-footer-desc-text', {\r\n opacity: 0,\r\n y: '40%',\r\n duration: 0.3,\r\n\r\n }).from('.js-decoration-container', {\r\n opacity: 0,\r\n duration: 0.2\r\n\r\n })\r\n .from('.js-copyright-text', {\r\n opacity: 0,\r\n duration: 0.2\r\n })\r\n .fromTo('.js-footer-link', {\r\n opacity: 0,\r\n }, {\r\n opacity: 1,\r\n stagger: 0.1\r\n }).from('.js-scroll-top-btn', {\r\n opacity: 0,\r\n })\r\n\r\n\r\n animContainerSections.forEach(animContainerSection => {\r\n const quoteTextContainers = animContainerSection.querySelectorAll(\".js-anim-text-container\");\r\n\r\n quoteTextContainers.forEach(quoteTextContainer => {\r\n if (quoteTextContainer) {\r\n\r\n const quoteTxt = quoteTextContainer?.querySelector(\".js-anim-text-up\")?.textContent?.trim();\r\n\r\n const quoteWords = quoteTxt && quoteTxt?.split(\" \") || [];\r\n\r\n\r\n const tl = gsap.timeline({\r\n scrollTrigger: {\r\n start: \"top 90%\",\r\n trigger: animContainerSection,\r\n\r\n },\r\n\r\n });\r\n if (quoteWords && quoteWords.length > 0) {\r\n\r\n const skewY = '7deg';\r\n const translateY = '50%';\r\n\r\n quoteWords.forEach((word, index) => {\r\n const space = \" \";\r\n const wordElement = document.createElement(\"span\");\r\n wordElement.className = `quote-word word-${index}`;\r\n\r\n const wordChildElement = document.createElement(\"span\");\r\n wordChildElement.className = `quote-word-child word-child-${index}`;\r\n wordChildElement.textContent = word;\r\n wordElement.appendChild(wordChildElement)\r\n\r\n if (index != 0) {\r\n const wordChildElementSpace = document.createElement(\"span\");\r\n wordChildElementSpace.className = `space`;\r\n wordChildElementSpace.textContent = space;\r\n\r\n quoteTextContainer.appendChild(wordChildElementSpace)\r\n }\r\n quoteTextContainer.appendChild(wordElement);\r\n\r\n tl.fromTo(\r\n wordChildElement,\r\n {\r\n opacity: 0,\r\n translateY: translateY,\r\n skewY: skewY,\r\n display: 'inline-block',\r\n },\r\n {\r\n duration: () => 0.3,\r\n ease: \"powe4.Out\",\r\n opacity: 1,\r\n translateY: '0%',\r\n skewY: '0deg',\r\n }, '-=0.2'\r\n );\r\n });\r\n }\r\n }\r\n\r\n })\r\n\r\n })\r\n\r\n\r\n}\r\n\r\n// Statement Drawer Header Scroll functionality\r\nfunction statementDrawerHeaderScroll() {\r\n const statementDrawers = document.querySelectorAll(\".js-statement-drawer\")\r\n\r\n statementDrawers.forEach(statementDrawer => {\r\n const drawer = statementDrawer.querySelector('.js-drawer')\r\n\r\n drawer?.addEventListener('scroll', () => {\r\n const drawerContent = statementDrawer.querySelector('.js-drawer-content')\r\n const drawerHeader = statementDrawer.querySelector('.js-drawer-header')\r\n\r\n if (drawerContent.getBoundingClientRect().top < -100) {\r\n drawerHeader?.classList.add('drawer-header--down')\r\n } else {\r\n drawerHeader?.classList.remove('drawer-header--down')\r\n\r\n }\r\n\r\n })\r\n\r\n })\r\n}\r\n\r\n// Change bg color when image appears on mobile\r\n\r\n\r\n\r\nfunction changeBgColorStatementSectionsMob() {\r\n if (window.matchMedia(`(max-width: ${vpTablet767}px)`).matches) {\r\n window.addEventListener('scroll', () => {\r\n const sections = document.querySelectorAll('.js-statement-section, .js-statement-section-alt, .general-horizontal, .general-horizontal-strategic');\r\n\r\n sections.forEach((section) => {\r\n let imgElement;\r\n\r\n if (section.classList.contains('js-statement-section') || section.classList.contains('js-statement-section-alt')) {\r\n imgElement = section.querySelector('.js-statement-section-flex-left-img');\r\n } else if (section.classList.contains('general-horizontal') || section.classList.contains('general-horizontal-strategic')) {\r\n imgElement = section.querySelector('.personProfile');\r\n }\r\n\r\n if (imgElement) {\r\n const sectionRect = section.getBoundingClientRect();\r\n const imgRect = imgElement.getBoundingClientRect();\r\n const windowMidHeight = window.innerHeight / 2;\r\n\r\n if (sectionRect.top < window.innerHeight && sectionRect.bottom > 0) {\r\n if (imgRect.top < windowMidHeight) {\r\n document.body.classList.add('bgWhite');\r\n } else {\r\n document.body.classList.remove('bgWhite');\r\n }\r\n }\r\n // else {\r\n // document.body.classList.remove('bgWhite');\r\n // }\r\n }\r\n });\r\n });\r\n }\r\n}\r\n\r\n\r\n\r\n// function changeBgHorizontal() {\r\n// const $sections = $('.general-horizontal, .general-horizontal-strategic');\r\n\r\n// const textBaseDetail = document.querySelector('.textBaseDetail');\r\n\r\n// if (textBaseDetail) {\r\n// ScrollTrigger.create({\r\n// trigger: textBaseDetail,\r\n// start: 'top center', // Adjust the start point as needed\r\n// end: 'bottom center', // Adjust the end point as needed\r\n// onEnter: () => {\r\n// document.body.classList.add('bgWhite');\r\n// },\r\n// onLeaveBack: () => {\r\n// document.body.classList.remove('bgWhite');\r\n// },\r\n// onLeave: () => {\r\n// document.body.classList.remove('bgWhite');\r\n// },\r\n// onEnterBack: () => {\r\n// document.body.classList.add('bgWhite');\r\n// },\r\n// toggleActions: \"play none none reverse\"\r\n// });\r\n// }\r\n// }\r\n\r\n\r\n\r\n\r\n// Impact numbers slide animation\r\nfunction impactNumbersAnimation() {\r\n // if (window.matchMedia(`(min-width: ${vpTablet767}px)`).matches) {\r\n\r\n const impactWrappers = document.querySelectorAll('.js-impact-wrapper')\r\n\r\n impactWrappers.forEach((impactWrapper, i) => {\r\n\r\n\r\n\r\n const statFigures = impactWrapper.querySelectorAll('.js-stat-figure')\r\n\r\n statFigures.forEach(stat => {\r\n if (stat) {\r\n\r\n const statOriginalValue = stat.getAttribute('data-original-value');\r\n const statStartValue = stat.getAttribute('data-start-value');\r\n const statEndValue = stat.getAttribute('data-end-value');\r\n\r\n if (!statOriginalValue) return;\r\n const mainSpan = document.createElement('span')\r\n const innerSpansContainer = document.createElement('span')\r\n innerSpansContainer.classList.add('inner-spans')\r\n mainSpan.classList.add('stat-figures-main-span')\r\n if (Number.isInteger(+statOriginalValue)) {\r\n if (stat.getAttribute('data-spans-created') !== 'true') {\r\n const statOriginalValueArray =\r\n Array.from(String(statOriginalValue), Number);\r\n const numbersArray = [`${statStartValue}`, ...statOriginalValueArray, `${statEndValue}`];\r\n\r\n numbersArray.map((numberArray, i) => {\r\n if (i === 0 && numberArray === statStartValue || i === numbersArray.length - 1 && numberArray === statEndValue) {\r\n if (i === 0 && numberArray === statStartValue) {\r\n const startSpan = document.createElement('span')\r\n startSpan.className = 'stat-start-value'\r\n startSpan.innerHTML = `${numberArray}`\r\n mainSpan.appendChild(startSpan)\r\n } else {\r\n const endSpan = document.createElement('span')\r\n endSpan.className = 'stat-end-value'\r\n endSpan.innerHTML = `${numberArray}`\r\n mainSpan.appendChild(endSpan)\r\n }\r\n } else {\r\n const statFigureElement = document.createElement('span');\r\n statFigureElement.className = 'js-stat-figure-container stat-figure-container';\r\n\r\n let spanContent = '';\r\n if (numberArray === 0) {\r\n spanContent += `${0}
`;\r\n } else {\r\n for (let i = 1; i <= +numberArray; i++) {\r\n spanContent += `${i}
`;\r\n }\r\n }\r\n\r\n spanContent = spanContent.slice(0, -4);\r\n\r\n statFigureElement.innerHTML = spanContent;\r\n mainSpan.appendChild(statFigureElement);\r\n }\r\n\r\n });\r\n stat.appendChild(mainSpan);\r\n stat.setAttribute('data-spans-created', 'true')\r\n }\r\n window.addEventListener('scroll', () => {\r\n\r\n const impactWrapperTop = impactWrapper.getBoundingClientRect().top;\r\n if (impactWrapperTop < 50) {\r\n const statFiguresContainer = impactWrapper.querySelectorAll('.js-stat-figure-container')\r\n\r\n statFiguresContainer.forEach(statFigureCont => {\r\n\r\n const statFigureContent = statFigureCont.innerHTML;\r\n\r\n let spansCount = statFigureContent.split(\"
\").length\r\n\r\n\r\n const statFigureContHeight = statFigureCont.clientHeight\r\n const heightOfOne = statFigureContHeight / spansCount;\r\n\r\n if (statFigureCont.getAttribute('data-animated') === 'true') return;\r\n gsap.fromTo(\r\n statFigureCont,\r\n {\r\n y: '0',\r\n },\r\n {\r\n y: `-${heightOfOne * (spansCount - 1)}px`,\r\n duration: 1.5,\r\n onStart: () => {\r\n statFigureCont.setAttribute('data-animated', 'true');\r\n\r\n }\r\n }\r\n );\r\n\r\n\r\n })\r\n }\r\n })\r\n\r\n }\r\n else {\r\n if (stat.getAttribute('data-spans-created') !== 'true') {\r\n\r\n\r\n const [integerPart, decimalPart] = statOriginalValue.split('.');\r\n\r\n // Convert integerPart and decimalPart to arrays of numbers\r\n const integerArray = Array.from(String(integerPart), Number);\r\n const decimalArray = Array.from(String(decimalPart), Number);\r\n\r\n // Combine both arrays\r\n const concatDecimal = integerArray.concat('.', decimalArray);\r\n\r\n const numbersArray = [`${statStartValue}`, ...concatDecimal, `${statEndValue}`];\r\n\r\n numbersArray.map((numberArray, i) => {\r\n if (numberArray == '.' || i === 0 && numberArray === statStartValue || i === numbersArray.length - 1 && numberArray === statEndValue) {\r\n if (numberArray == '.') {\r\n const decimalSpan = document.createElement('span')\r\n decimalSpan.className = 'js-stat-figure-decimal stat-figure-decimal'\r\n decimalSpan.innerHTML = numberArray\r\n mainSpan.appendChild(decimalSpan)\r\n }\r\n if (i === 0 && numberArray === statStartValue) {\r\n const startSpan = document.createElement('span')\r\n startSpan.className = 'stat-start-value'\r\n startSpan.innerHTML = `${numberArray}`\r\n mainSpan.appendChild(startSpan)\r\n }\r\n if (i === numbersArray.length - 1 && numberArray === statEndValue) {\r\n const endSpan = document.createElement('span')\r\n endSpan.className = 'stat-end-value'\r\n endSpan.innerHTML = `${numberArray}`\r\n mainSpan.appendChild(endSpan)\r\n }\r\n } else {\r\n\r\n const statFigureElement = document.createElement('span');\r\n statFigureElement.className = 'js-stat-figure-container stat-figure-container';\r\n\r\n let spanContent = '';\r\n for (let i = 1; i <= +numberArray; i++) {\r\n spanContent += `${i}
`;\r\n }\r\n\r\n spanContent = spanContent.slice(0, -4);\r\n\r\n statFigureElement.innerHTML = spanContent;\r\n\r\n mainSpan.appendChild(statFigureElement);\r\n }\r\n });\r\n stat.appendChild(mainSpan);\r\n stat.setAttribute('data-spans-created', 'true')\r\n\r\n }\r\n window.addEventListener('scroll', () => {\r\n const impactWrapperTop = impactWrapper.getBoundingClientRect().top;\r\n if (impactWrapperTop < 50) {\r\n const statFiguresContainer = impactWrapper.querySelectorAll('.js-stat-figure-container')\r\n statFiguresContainer.forEach(statFigureCont => {\r\n\r\n const statFigureContent = statFigureCont.innerHTML;\r\n\r\n let spansCount = statFigureContent.split(\"
\").length\r\n\r\n\r\n const statFigureContHeight = statFigureCont.clientHeight\r\n const heightOfOne = statFigureContHeight / spansCount;\r\n if (statFigureCont.getAttribute('data-animated') === 'true') return;\r\n\r\n gsap.fromTo(\r\n statFigureCont,\r\n {\r\n y: '0',\r\n },\r\n {\r\n y: `-${heightOfOne * (spansCount - 1)}px`,\r\n duration: 1.5,\r\n onStart: () => {\r\n statFigureCont.setAttribute('data-animated', 'true');\r\n\r\n }\r\n }\r\n );\r\n\r\n\r\n\r\n })\r\n }\r\n })\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n })\r\n\r\n\r\n })\r\n // }\r\n\r\n}\r\n\r\n// Text Up Animations\r\nfunction textUpAnimations() {\r\n const animContainerSections = document.querySelectorAll(\".js-anim-container-section\");\r\n\r\n animContainerSections.forEach(animContainerSection => {\r\n const quoteTextContainers = animContainerSection.querySelectorAll(\".js-anim-text-container\");\r\n quoteTextContainers.forEach(quoteTextContainer => {\r\n const quoteTxt = quoteTextContainer?.querySelector(\".js-anim-text-up\")?.textContent?.trim();\r\n const quoteWords = quoteTxt?.split(\" \") || [];\r\n\r\n\r\n const tl = gsap.timeline({\r\n scrollTrigger: {\r\n start: 'top 20%',\r\n trigger: animContainerSection,\r\n },\r\n\r\n });\r\n\r\n const skewY = '7deg';\r\n const translateY = '50%';\r\n\r\n quoteWords.forEach((word, index) => {\r\n const space = \" \";\r\n const wordElement = document.createElement(\"span\");\r\n wordElement.className = `quote-word word-${index}`;\r\n\r\n const wordChildElement = document.createElement(\"span\");\r\n wordChildElement.className = `quote-word-child word-child-${index}`;\r\n wordChildElement.textContent = word;\r\n wordElement.appendChild(wordChildElement)\r\n\r\n if (index != 0) {\r\n const wordChildElementSpace = document.createElement(\"span\");\r\n wordChildElementSpace.className = `space`;\r\n wordChildElementSpace.textContent = space;\r\n\r\n quoteTextContainer.appendChild(wordChildElementSpace)\r\n }\r\n quoteTextContainer.appendChild(wordElement);\r\n\r\n tl.fromTo(\r\n wordChildElement,\r\n {\r\n opacity: 0,\r\n translateY: translateY,\r\n skewY: skewY,\r\n display: 'inline-block',\r\n },\r\n {\r\n duration: () => 0.3,\r\n ease: \"powe4.Out\",\r\n opacity: 1,\r\n translateY: '0%',\r\n skewY: '0deg',\r\n }, '-=0.15'\r\n );\r\n });\r\n })\r\n })\r\n}\r\n\r\n// Form Field Validation Start\r\nfunction formValidation() {\r\n const submitBtn = document.querySelectorAll(\".Formsubmit\");\r\n\r\n // Loop through each submit button\r\n submitBtn.forEach(function (button) {\r\n button.addEventListener(\"click\", function (event) {\r\n var form = event.target.closest(\"form\"); // Get the parent form of the clicked button\r\n var isValid = true;\r\n\r\n $(form)\r\n .find(\".form-row-dropdown, .form-fields-row\")\r\n .each(function () {\r\n var $select = $(this).find(\"select\");\r\n var $errorMessage = $(this).find(\".error\");\r\n var $select2Container = $(this).find(\".select2-container\");\r\n\r\n if ($select.val() == null || $select.val() == \"1\") {\r\n isValid = false;\r\n $select2Container.addClass(\"error-border\");\r\n $errorMessage.show();\r\n } else {\r\n $select2Container.removeClass(\"error-border\");\r\n $errorMessage.hide();\r\n }\r\n });\r\n\r\n // Check input fields with the required class within the current form\r\n $(form)\r\n .find(\".required\")\r\n .each(function () {\r\n if ($(this).val().trim() === \"\") {\r\n isValid = false;\r\n $(this).addClass(\"error-border\");\r\n $(this).siblings(\".error\").show();\r\n } else {\r\n $(this).removeClass(\"error-border\");\r\n $(this).siblings(\".error\").hide();\r\n }\r\n });\r\n\r\n if (!isValid) {\r\n event.preventDefault(); // Prevent form submission if validation fails\r\n }\r\n });\r\n });\r\n\r\n //\r\n var togglePasswordIcons = document.querySelectorAll(\".eye-icon\");\r\n var togglePasswordSlashIcons = document.querySelectorAll(\".eye-slash-icon\");\r\n\r\n togglePasswordIcons.forEach(function (icon) {\r\n icon.addEventListener(\"click\", function () {\r\n togglePasswordVisibility(icon);\r\n });\r\n });\r\n\r\n togglePasswordSlashIcons.forEach(function (Slashicon) {\r\n Slashicon.addEventListener(\"click\", function () {\r\n togglePasswordVisibility(Slashicon);\r\n });\r\n });\r\n\r\n function togglePasswordVisibility(clickedIcon) {\r\n var passwordField = clickedIcon.parentNode.querySelector(\".password-field\");\r\n var relatedIcon = clickedIcon.classList.contains(\"eye-icon\")\r\n ? clickedIcon.nextElementSibling\r\n : clickedIcon.previousElementSibling;\r\n\r\n if (passwordField.type === \"password\") {\r\n passwordField.type = \"text\";\r\n clickedIcon.style.display = \"none\";\r\n relatedIcon.style.display = \"block\";\r\n } else {\r\n passwordField.type = \"password\";\r\n clickedIcon.style.display = \"none\";\r\n relatedIcon.style.display = \"block\";\r\n }\r\n }\r\n}\r\n\r\n// Video Player Init\r\nfunction videoPlayerInit() {\r\n $(\".my-video-js\").each(function (index) {\r\n var thisId = $(this).attr(\"id\");\r\n $(this).addClass(\"video-js\");\r\n if (!thisId == \"\") {\r\n thisId = \"video-id-\" + index;\r\n $(this).attr(\"id\", thisId);\r\n }\r\n var player = videojs(thisId);\r\n });\r\n}\r\n\r\n// Function to convert a given value to rem\r\nfunction toRem(value) {\r\n let baseFontSize = parseFloat(getComputedStyle(document.documentElement).fontSize);\r\n return value * baseFontSize;\r\n}\r\n\r\n// Initialize Loader\r\nlet loaderAnimCompletes = false;\r\nfunction loader() {\r\n if ($('.js-loader-container').length === 0) { return }; // If loader container doesn't exist, don't initiate loader\r\n const herobgimgContainer = document.querySelector('.js-hero-bg-img-container');\r\n window.scrollTo(0, 0);\r\n $('html, body').animate({ scrollTop: -1 }, 'slow');\r\n const shapesTl = gsap.timeline({ repeat: -1, yoyo: true });\r\n const expandTl = gsap.timeline({ paused: true });\r\n const isLandScapeScreen = winHeight > winWidth ? winHeight : winWidth;\r\n let extraWidthToRem = toRem(28.125)\r\n\r\n let mm = gsap.matchMedia();\r\n gsap.set('.js-nav-section', { zIndex: 9999 })\r\n\r\n mm.add(`(max-width: ${vpMobile600}px)`, () => { //vpMobile600\r\n expandTl.to(\".js-loader-container .js-shape-2\", {\r\n duration: 1,\r\n delay: 0.4,\r\n rotate: \"20deg\",\r\n width: `${isLandScapeScreen + 450}px`,\r\n height: `${isLandScapeScreen + 450}px`,\r\n position: 'fixed',\r\n onStart: () => {\r\n gsap.to('.js-loader-container .shape-2', { duration: 0, borderColor: 'transaprent' })\r\n gsap.set(\".js-loader-container .js-shape-1, .js-loader-container .js-shape-3\", { opacity: 0, display: 'none' })\r\n },\r\n ontimeupdate: () => {\r\n gsap.to('.js-loader-container .shape-2', { duration: 0.4, borderWidth: '0px', })\r\n gsap.to(\".js-loader-container .js-shape-2 .js-hero-banner\", { delay: 0.2, rotate: \"-20deg\" })\r\n gsap.fromTo(\".js-loader-container .js-shape-2 .js-hero-banner\", { opacity: 0, width: `${isLandScapeScreen + 450}px`, height: `${isLandScapeScreen + 450}px` }, { delay: 0.1, duration: 0.9, width: '100vw', height: '100vh', opacity: 1, position: 'absolute' })\r\n },\r\n })\r\n .to(\r\n \".js-loader-container\",\r\n {\r\n duration: 0.2,\r\n onComplete: () => {\r\n gsap.set(\".js-loader-container\", { position: \"absolute\", zIndex: 0 });\r\n gsap.set('.js-nav-section', { zIndex: 0 })\r\n gsap.set('.js-loader-container .shape-2', { position: 'absolute' })\r\n $(\"body\").removeClass(\"scrollHide\");\r\n }\r\n },\r\n \"-=0.2\"\r\n )\r\n .from('.js-icon-logo', {\r\n opacity: 0\r\n }, '-=0.2')\r\n .fromTo('.js-menu-icon', {\r\n opacity: 0\r\n }, {\r\n opacity: 1\r\n }, '<')\r\n .from('.js-hero-title-text', {\r\n y: \"100%\",\r\n opacity: 0,\r\n duration: 0.3\r\n })\r\n .from('.js-hero-description-text', {\r\n y: '80%',\r\n opacity: 0,\r\n duration: 0.3\r\n\r\n })\r\n .from('.js-hero-btn-anim', {\r\n y: '80%',\r\n opacity: 0,\r\n duration: 0.3\r\n\r\n })\r\n .to(\r\n \".js-hero-wrapper .js-hero-right-img\",\r\n {\r\n // bottom: \"-6.125rem\",\r\n [isRTL ? \"left\" : \"right\"]: \"0\",\r\n // y: \"100vh\",\r\n onComplete: () => loaderAnimCompletes = true\r\n }\r\n )\r\n\r\n ;\r\n });\r\n\r\n mm.add(`(min-width: ${vpMobile600 + 1}px)`, () => {\r\n expandTl.to(\".js-loader-container .js-shape-2\", {\r\n duration: 1,\r\n delay: 0.4,\r\n rotate: \"20deg\",\r\n width: `${isLandScapeScreen + 650}px`,\r\n height: `${isLandScapeScreen + 650}px`,\r\n position: 'fixed',\r\n onStart: () => {\r\n gsap.to('.js-loader-container .shape-2', { duration: 0, borderColor: 'transaprent' })\r\n gsap.set(\".js-loader-container .js-shape-1, .js-loader-container .js-shape-3\", { opacity: 0, display: 'none' })\r\n },\r\n ontimeupdate: () => {\r\n gsap.to('.js-loader-container .shape-2', { duration: 0.4, borderWidth: '0px', })\r\n gsap.to(\".js-loader-container .js-shape-2 .js-hero-banner\", { delay: 0.2, rotate: \"-20deg\" })\r\n gsap.fromTo(\".js-loader-container .js-shape-2 .js-hero-banner\", { opacity: 0, width: `${isLandScapeScreen + 650}px`, height: `${isLandScapeScreen + 650}px` }, { delay: 0.1, duration: 0.9, width: '100vw', height: '100vh', opacity: 1, position: 'absolute' })\r\n },\r\n })\r\n .to(\r\n \".js-loader-container\",\r\n {\r\n duration: 0.2,\r\n onComplete: () => {\r\n gsap.set(\".js-loader-container\", { position: \"absolute\", zIndex: 0 });\r\n gsap.set('.js-nav-section', { zIndex: 0 })\r\n gsap.set('.js-loader-container .shape-2', { position: 'absolute' })\r\n\r\n $(\"body\").removeClass(\"scrollHide\");\r\n },\r\n },\r\n \"-=0.2\"\r\n )\r\n .fromTo('.header-wrapper', {\r\n y: '-30vh',\r\n duration: .1,\r\n },\r\n {\r\n y: \"0\"\r\n })\r\n .from('.js-hero-title-text', {\r\n y: \"100%\",\r\n opacity: 0,\r\n duration: 0.3\r\n })\r\n .from('.js-hero-description-text', {\r\n y: '80%',\r\n opacity: 0,\r\n duration: 0.3\r\n\r\n })\r\n .from('.js-hero-btn-anim', {\r\n y: '80%',\r\n opacity: 0,\r\n duration: 0.3\r\n\r\n })\r\n if (herobgimgContainer) {\r\n expandTl.from('.js-hero-bg-img-container', {\r\n scale: 1.3\r\n }, '-=0.1')\r\n }\r\n\r\n expandTl.to('.js-section-timeline-wrapper', { opacity: 1, duration: .1, onComplete: () => loaderAnimCompletes = true })\r\n // .fromTo('.header-wrapper',{\r\n // y: '-30vh',\r\n // duration: .1,\r\n // },\r\n // {\r\n // y: \"0\"\r\n // })\r\n // .from('.js-icon-logo, .js-header-right', {\r\n // opacity: 0,\r\n\r\n // }, '-=0.1')\r\n\r\n\r\n\r\n // .from('.js-hero-title-text', {\r\n // // y: '100vh',\r\n // // y: '100%',\r\n // opacity:0,\r\n // duration: 1,\r\n\r\n // onComplete: () => loaderAnimCompletes = true\r\n\r\n // }, '<')\r\n\r\n\r\n ;\r\n });\r\n mm.add(`(max-width: ${vpTablet991}px) and (min-width: ${vpTablet767 + 1}px)`, () => {\r\n expandTl.from('.hero-right-img.js-hero-right-img', {\r\n // opacity: 0,\r\n y: \"100vh\",\r\n duration: .3\r\n })\r\n })\r\n shapesTl\r\n .fromTo(\r\n \".js-loader-container .js-shape-1\",\r\n { opacity: 0 },\r\n {\r\n duration: 0.5,\r\n opacity: 1,\r\n onStart: () => $(\"body\").addClass(\"scrollHide\"),\r\n }\r\n )\r\n .fromTo(\r\n \".js-loader-container .js-shape-2\",\r\n { opacity: 0 },\r\n { duration: 0.5, opacity: 1 }\r\n )\r\n .fromTo(\r\n \".js-loader-container .js-shape-3\",\r\n { opacity: 0 },\r\n {\r\n duration: 0.5,\r\n opacity: 1,\r\n onComplete: () => {\r\n if (document.readyState === \"complete\") {\r\n shapesTl.kill();\r\n expandTl.play();\r\n }\r\n },\r\n }\r\n )\r\n\r\n ;\r\n\r\n\r\n\r\n}\r\n\r\n// Header mobile menu\r\nfunction onClickMobileMenu() {\r\n $('#js-menu-icon, .js-nav-item').on('click', function () {\r\n $(\"#js-menu-icon\").css({ 'pointer-events': 'none' })\r\n const menuTl = gsap.timeline();\r\n $('#js-menu-icon').toggleClass('active');\r\n $('#js-mobile-menu').toggleClass('active');\r\n\r\n // When menu is clicked\r\n if ($('#js-menu-icon').hasClass('active') && $('#js-mobile-menu').hasClass('active')) {\r\n\r\n $('body').addClass('scrollHide'); // Body overflow hidden\r\n $('#js-header-wrapper').removeClass('dark')\r\n menuTl.set('#js-mobile-menu', { display: 'block' })\r\n .to('#js-mobile-menu', { duration: 0.5, opacity: 1, translateY: 0 })\r\n .to('#js-bar-1', { duration: 0.25, rotate: '-45deg', translateY: '200%' }, '<')\r\n .to('#js-bar-2', { duration: 0.25, rotate: '45deg', translateY: '-200%' }, '<')\r\n .fromTo('.js-nav-item', { opacity: 0, x: isRTL ? '10px' : '-10px' }, { opacity: 1, x: '0px', stagger: 0.1, onComplete: () => $(\"#js-menu-icon\").css({ 'pointer-events': 'auto' }) }, \"-=0.3\");\r\n\r\n } else {\r\n $('body').removeClass('scrollHide'); // Body overflow auto\r\n $(\"#js-menu-icon\").css({ 'pointer-events': 'none' })\r\n\r\n // When header-wrapper has class dark\r\n if ($(intersectingSection).hasClass('dark')) {\r\n $('#js-header-wrapper').addClass('dark')\r\n\r\n menuTl.to('#js-mobile-menu', { duration: 0.5, opacity: 0, translateY: '100%' })\r\n .to('#js-bar-1', { duration: 0.25, rotate: '0', translateY: '0' }, '<')\r\n .to('#js-bar-2', { duration: 0.25, rotate: '0', translateY: '0', }, '<')\r\n .set('#js-mobile-menu', { display: 'none', onComplete: () => $(\"#js-menu-icon\").css({ 'pointer-events': 'auto' }) });\r\n\r\n gsap.set('.js-nav-item', { opacity: 0, x: '-10px' })\r\n } else { // When header-wrapper doesn't has class dark\r\n $('#js-header-wrapper').removeClass('dark')\r\n menuTl.to('#js-mobile-menu', { duration: 0.5, opacity: 0, translateY: '100%' })\r\n .to('#js-bar-1', { duration: 0.25, rotate: '0', translateY: '0' }, '<')\r\n .to('#js-bar-2', { duration: 0.25, rotate: '0', translateY: '0' }, '<')\r\n .set('#js-mobile-menu', { display: 'none', onComplete: () => $(\"#js-menu-icon\").css({ 'pointer-events': 'auto' }) });\r\n gsap.set('.js-nav-item', { opacity: 0, x: '-10px' })\r\n }\r\n }\r\n })\r\n}\r\n\r\n// Landing Page\r\nfunction landingAnimation() {\r\n // Landing Page timeline\r\n\r\n let mm = gsap.matchMedia();\r\n // let herobgimgContainer = document.querySelector('.js-hero-bg-img-container');\r\n\r\n\r\n mm.add(`(min-width: ${vpTablet991 + .98}px)`, () => {\r\n const initialScreenHeight = 1080;\r\n\r\n function adjustHeroScrollUp(currentScreenHeight) {\r\n if (window.matchMedia(`(max-width: ${vpTablet991}px)`).matches) {\r\n return (1000 / initialScreenHeight) * currentScreenHeight;\r\n\r\n } else {\r\n return (550 / initialScreenHeight) * currentScreenHeight;\r\n\r\n }\r\n }\r\n\r\n const currentScreenHeight = window.innerHeight;\r\n\r\n heroScrollUp = adjustHeroScrollUp(currentScreenHeight);\r\n\r\n const landingWrapper = document.querySelector(\".js-hero-wrapper\");\r\n const landingTl = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: landingWrapper,\r\n pin: true,\r\n scrub: window.matchMedia(`(max-width: ${vpTablet991}px)`).matches ? 1 : 2\r\n ,\r\n end: \"+=450%\", //before 80\r\n start: \"top top\",\r\n invalidateOnRefresh: true,\r\n }\r\n });\r\n\r\n\r\n // Parallax image\r\n\r\n // gsap.set(\".js-hero-bg-img\", {\r\n // // width: \"150%\",\r\n // // height: \"150%\"\r\n // scale: 1.2\r\n // })\r\n\r\n // gsap.fromTo(\r\n // \".js-hero-bg-img\",\r\n // { yPercent: 0, transformOrigin: \"center\" },\r\n // {\r\n // yPercent: -10,\r\n // duration: 0.2,\r\n // scrollTrigger: {\r\n // trigger: \".js-hero-bg-img-container\",\r\n // start: \"top top\",\r\n // scrub: 2,\r\n // },\r\n // }\r\n // );\r\n if (window.matchMedia(`(max-width: ${vpTablet991}px)`).matches) {\r\n landingTl\r\n .fromTo(\r\n \".js-hero-wrapper .js-hero-title\",\r\n {\r\n scale: 1.6,\r\n transformOrigin: isRTL ? \"right bottom\" : \"left bottom\",\r\n y: \"60vh\",\r\n },\r\n {\r\n scale: 1,\r\n y: \"30vh\",\r\n duration: 0.3,\r\n }\r\n )\r\n } else if (window.matchMedia(`(min-width: ${vpTablet991 + 1}px)`).matches) {\r\n landingTl\r\n .fromTo(\r\n \".js-hero-wrapper .js-hero-title\",\r\n {\r\n scale: 1.6,\r\n transformOrigin: isRTL ? \"right bottom\" : \"left bottom\",\r\n y: \"50vh\",\r\n },\r\n {\r\n scale: 1,\r\n y: \"0vh\",\r\n duration: 0.4,\r\n }\r\n )\r\n }\r\n\r\n landingTl.fromTo(\r\n \".js-hero-wrapper .hero-right-img.js-hero-right-img\",\r\n {\r\n y: \"100vh\",\r\n },\r\n {\r\n y: \"0vh\",\r\n }, '<'\r\n )\r\n .fromTo(\r\n \".js-hero-wrapper .js-hero-description-scroll-cta\",\r\n {\r\n y: \"100vh\",\r\n },\r\n {\r\n y: \"20vh\",\r\n }, '<'\r\n )\r\n // if(window.matchMedia(`(max-width: ${vpTablet991}px)`).matches){\r\n\r\n // landingTl.fromTo(\r\n // \".js-hero-wrapper .js-hero-right-img\",\r\n // {\r\n // scale: 1,\r\n // },\r\n // {\r\n // marginTop: 0,\r\n\r\n // scale: 1.7,\r\n // }\r\n // }\r\n landingTl.to(\r\n \".js-hero-wrapper .js-hero-title\",\r\n {\r\n // y: \"-50vh\",\r\n }, window.matchMedia(`(max-width: ${vpTablet991}px)`).matches ? '<' : \">\"\r\n )\r\n .fromTo(\r\n \".js-hero-wrapper .js-hero-description-text\",\r\n {\r\n y: \"0\",\r\n },\r\n {\r\n y: \"-40vh\",\r\n }, '<'\r\n )\r\n\r\n // testing\r\n // .fromTo(\r\n // \".hero-right-img\",\r\n // {\r\n // transformOrigin: 'bottom right',\r\n // scale: 1,\r\n // // bottom: \"-8rem\",\r\n\r\n\r\n // },\r\n // {\r\n // paddingBottom: 0,\r\n // bottom:0,\r\n // // right: 0,\r\n // duration: 0.2,\r\n\r\n\r\n // },\r\n // '-=0.1'\r\n // )\r\n\r\n // .to(\r\n // \".js-hero-wrapper .hero-right-img .masked\",\r\n // {\r\n // // transformOrigin: 'bottom right',\r\n // width: \"100vw\",\r\n // height: \"100vh\",\r\n // borderTopRightRadius:0,\r\n // borderTopLeftRadius: 0,\r\n // duration: 0.4,\r\n // },\r\n\r\n // '<'\r\n // ) \r\n // if(window.matchMedia(`(min-width: ${vpTablet991}px)`).matches){\r\n\r\n\r\n\r\n if (!isRTL) {\r\n landingTl.fromTo(\r\n \".js-hero-wrapper .hero-right-img.js-hero-right-img\",\r\n {\r\n transformOrigin: 'bottom right',\r\n scale: 1,\r\n // bottom: 0,\r\n },\r\n {\r\n paddingBottom: 0,\r\n right: 0,\r\n bottom: 0,\r\n duration: 0.5,\r\n\r\n },\r\n '-=0.2'\r\n )\r\n\r\n landingTl.to(\r\n \".js-hero-wrapper .hero-right-img.js-hero-right-img .masked\",\r\n {\r\n width: \"100vw\",\r\n height: \"100vh\",\r\n borderTopRightRadius: 0,\r\n borderTopLeftRadius: 0,\r\n duration: 0.5,\r\n },\r\n\r\n '<'\r\n );\r\n setTimeout(() => {\r\n landingTl.to(\".js-hero-wrapper .hero-right-img.js-hero-right-img video\", {\r\n borderTopLeftRadius: 0,\r\n delay: -0.5,\r\n }, '<')\r\n }, 300)\r\n\r\n landingTl.to(\".js-hero-wrapper .hero-right-img.js-hero-right-img video\", {\r\n opacity: 1,\r\n duration: 0.5\r\n })\r\n\r\n ;\r\n\r\n\r\n }\r\n else {\r\n landingTl.fromTo(\r\n \".js-hero-wrapper .hero-right-img.js-hero-right-img\",\r\n {\r\n transformOrigin: 'bottom left',\r\n scale: 1,\r\n },\r\n {\r\n paddingBottom: 0,\r\n left: 0,\r\n bottom: 0,\r\n duration: 0.5,\r\n\r\n\r\n },\r\n '-=0.35'\r\n )\r\n\r\n landingTl.to(\r\n \".js-hero-wrapper .hero-right-img.js-hero-right-img .masked\",\r\n {\r\n width: \"100vw\",\r\n height: \"100vh\",\r\n borderTopRightRadius: 0,\r\n borderTopLeftRadius: 0,\r\n duration: 0.5,\r\n },\r\n\r\n '<'\r\n )\r\n setTimeout(() => {\r\n landingTl.to(\".js-hero-wrapper .hero-right-img.js-hero-right-img video\", {\r\n borderTopRightRadius: 0,\r\n delay: -0.5,\r\n }, '<')\r\n }, 300)\r\n\r\n\r\n landingTl.to(\".js-hero-wrapper .hero-right-img.js-hero-right-img .masked, .js-hero-wrapper .hero-right-img.js-hero-right-img video\", {\r\n opacity: 1,\r\n duration: 0.5\r\n\r\n });\r\n }\r\n\r\n\r\n });\r\n\r\n // mm.add(\r\n // `(min-width: ${vpMobile600 + 1}px) and (max-width: ${vpTablet767}px)`,\r\n // () => {\r\n // const initialScreenHeight = 1080;\r\n\r\n // function adjustHeroScrollUp(currentScreenHeight) {\r\n // return (500 / initialScreenHeight) * currentScreenHeight;\r\n // }\r\n\r\n // const currentScreenHeight = window.innerHeight;\r\n\r\n // heroScrollUp = adjustHeroScrollUp(currentScreenHeight);\r\n // const landingWrapper = document.querySelector(\".js-hero-wrapper\");\r\n // const landingTl = gsap.timeline({\r\n // scrollTrigger: {\r\n // trigger: landingWrapper,\r\n // pin: true,\r\n // scrub: 2,\r\n // start: \"top top\",\r\n // invalidateOnRefresh: true,\r\n\r\n\r\n // },\r\n // });\r\n\r\n\r\n // gsap.fromTo(\r\n // \".js-hero-bg-img\",\r\n // { scale: 1.2, y: \"3rem\" },\r\n // {\r\n // y: \"0rem\",\r\n // duration: 0.2,\r\n // scrollTrigger: {\r\n // trigger: \".js-hero-bg-img-container\",\r\n // start: \"top top\",\r\n // end: \"bottom bottom\",\r\n // scrub: 2,\r\n // },\r\n // }\r\n // );\r\n // landingTl\r\n // .fromTo(\r\n // \".js-hero-wrapper .js-hero-title\",\r\n // {\r\n // scale: 1.4,\r\n // transformOrigin: isRTL ? 'right bottom' : \"left bottom\",\r\n // y: \"40vh\",\r\n // },\r\n // {\r\n // scale: 1,\r\n // y: \"0\",\r\n // duration: 0.3,\r\n // }\r\n // )\r\n // .fromTo(\r\n // \".js-hero-wrapper .js-hero-description-text\",\r\n // {\r\n // y: \"100vh\",\r\n // },\r\n // {\r\n // y: \"0\",\r\n // },\r\n // \"<\"\r\n // )\r\n // // .fromTo(\r\n // // \".js-hero-wrapper .js-hero-right-img\",\r\n // // {\r\n // // y: \"100vh\",\r\n // // },\r\n // // {\r\n // // y: \"0vh\",\r\n // // },\r\n // // \"<\"\r\n // // )\r\n\r\n // .to(\".js-hero-wrapper .js-hero-title\", {\r\n // y: \"-50vh\",\r\n // })\r\n // .fromTo(\r\n // \".js-hero-wrapper .js-hero-description-text\",\r\n // {\r\n // y: \"0\",\r\n // },\r\n // {\r\n // y: \"-40vh\",\r\n // },\r\n // \"<\"\r\n // )\r\n // .to(\r\n // \".js-hero-wrapper .js-scroll_down_cta\",\r\n // {\r\n // opacity: 0,\r\n // },\r\n // \"<\"\r\n // )\r\n\r\n // .to(\r\n // \".js-hero-wrapper .js-hero-right-img\",\r\n // {\r\n // bottom: 0,\r\n // [isRTL ? \"left\" : \"right\"]: \"0\",\r\n // },\r\n // \"<\"\r\n // );\r\n // }\r\n // );\r\n\r\n mm.add(`(min-width: ${vpTablet767 + .98}px) and (max-width: ${vpTablet991 + .98}px)`, () => { // phone landscape and ipad\r\n const landingWrapper = document.querySelector(\".js-hero-wrapper\");\r\n const landingTl = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: landingWrapper,\r\n pin: true,\r\n scrub: 2,\r\n start: \"top top\",\r\n invalidateOnRefresh: true,\r\n },\r\n });\r\n\r\n\r\n if (!isRTL) {\r\n if (!isPortrait) {\r\n landingTl.fromTo(\r\n \".hero-right-img\",\r\n {\r\n transformOrigin: 'bottom right',\r\n scale: 1,\r\n bottom: \"-8rem\",\r\n\r\n\r\n },\r\n {\r\n paddingBottom: 0,\r\n bottom: \"-12rem\",\r\n right: 0,\r\n scale: 1.15,\r\n duration: 0.2,\r\n },\r\n '-=0.1'\r\n )\r\n }\r\n else {\r\n landingTl.fromTo(\r\n \".hero-right-img\",\r\n {\r\n transformOrigin: 'bottom right',\r\n scale: 1,\r\n bottom: \"15rem\",\r\n\r\n\r\n },\r\n {\r\n paddingBottom: 0,\r\n bottom: -30,\r\n right: 0,\r\n scale: 1.15,\r\n duration: 0.2,\r\n },\r\n '-=0.1'\r\n )\r\n }\r\n\r\n\r\n } else {\r\n if (!isPortrait) {\r\n landingTl.fromTo(\r\n \".hero-right-img\",\r\n {\r\n transformOrigin: 'bottom right',\r\n scale: 1,\r\n bottom: \"-8rem\",\r\n\r\n\r\n },\r\n {\r\n paddingBottom: 0,\r\n bottom: \"-12rem\",\r\n left: 0,\r\n scale: 1.15,\r\n duration: 0.2,\r\n },\r\n '-=0.1'\r\n )\r\n } else {\r\n landingTl.fromTo(\r\n \".hero-right-img\",\r\n {\r\n transformOrigin: 'bottom right',\r\n scale: 1,\r\n bottom: \"15rem\",\r\n\r\n\r\n },\r\n {\r\n paddingBottom: 0,\r\n bottom: -30,\r\n left: 0,\r\n scale: 1.15,\r\n duration: 0.2,\r\n },\r\n '-=0.1'\r\n )\r\n }\r\n\r\n }\r\n\r\n\r\n landingTl.to(\r\n \".js-hero-wrapper .hero-right-img .masked\",\r\n {\r\n // transformOrigin: 'bottom right',\r\n width: \"100vw\",\r\n height: \"100vh\",\r\n borderTopRightRadius: 0,\r\n borderTopLeftRadius: 0,\r\n duration: 0.4,\r\n },\r\n\r\n '<'\r\n )\r\n })\r\n\r\n // mobile video\r\n mm.add(`(max-width: ${vpTablet767}px)`, () => {\r\n const landingWrapper = document.querySelector(\".js-hero-wrapper\");\r\n const landingTl = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: landingWrapper,\r\n pin: true,\r\n scrub: true,\r\n start: \"top top\",\r\n\r\n },\r\n });\r\n\r\n landingTl\r\n\r\n\r\n .fromTo(\r\n \".hero-right-mob-img\",\r\n {\r\n transformOrigin: 'bottom right',\r\n scale: 1,\r\n bottom: \"-8rem\",\r\n\r\n\r\n },\r\n {\r\n // paddingBottom: 0,\r\n // bottom:0,\r\n // right: 0,\r\n scale: 1.15,\r\n // duration: 0.2,\r\n\r\n\r\n },\r\n '-=0.1'\r\n )\r\n\r\n .to(\r\n \".js-hero-wrapper .hero-right-mob-img .masked-mob\",\r\n {\r\n // transformOrigin: 'bottom right',\r\n width: \"100vw\",\r\n height: \"100vh\",\r\n borderTopRightRadius: 0,\r\n borderTopLeftRadius: 0,\r\n // duration: 0.4,\r\n },\r\n\r\n '<'\r\n )\r\n\r\n });\r\n\r\n}\r\n\r\nlet fadeAnimStarts = false;\r\n// Statement Section Animation\r\nfunction statementSectionAnim(section, i) {\r\n let mm = gsap.matchMedia();\r\n\r\n mm.add(`(min-width: ${vpTablet1200}px)`, () => {\r\n if (!isPortrait) {\r\n\r\n // const statementSections = document.querySelectorAll('.js-statement-section')\r\n const statementSec = section;\r\n\r\n\r\n // statementSections.forEach(statementSec => {\r\n\r\n const statementTl = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: statementSec,\r\n pin: true,\r\n scrub: 1,\r\n // end: () => \"+=\" + $(\".container--custom \").outerWidth() ,\r\n end: \"+=300%\",\r\n // end: window.matchMedia(`(max-width: ${vpTablet991}px)`).matches ? \"+=350%\" : \"+=400%\",\r\n anticipatePin: window.matchMedia(`(max-width: ${vpTablet991}px)`).matches ? 1 : 0,\r\n onLeaveBack: () => {\r\n if (i !== 0) {\r\n\r\n document.body.classList.add('bgWhite')\r\n }\r\n\r\n },\r\n\r\n },\r\n });\r\n\r\n\r\n const topHeading = statementSec.querySelector('.js-statement-section-flex-left-top-heading');\r\n let topHeadingHeight = topHeading.clientHeight;\r\n\r\n // Get the computed style of the root element to determine the base font size\r\n const computedStyle = getComputedStyle(document.documentElement);\r\n const baseFontSizePx = parseFloat(computedStyle.fontSize); // Get the base font size in pixels\r\n\r\n // Convert pixels to rems using the dynamic base font size\r\n const topHeadingHeightRem = topHeadingHeight / baseFontSizePx;\r\n if (window.matchMedia(`(max-width: ${vpTablet1200}px)`).matches) {\r\n statementTl.fromTo(\r\n statementSec.querySelector(\".js-statement-section-flex-left-top-heading-wrapper\"),\r\n {\r\n opacity: 0,\r\n duration: 0.01\r\n\r\n }, {\r\n opacity: 1,\r\n duration: 0.01\r\n })\r\n }\r\n statementTl\r\n\r\n .fromTo(\r\n statementSec.querySelector(\".js-statement-section-flex-left-top-heading-wrapper\"),\r\n {\r\n y: \"65vh\",\r\n scale: 1.8,\r\n transformOrigin: isRTL ? 'right bottom' : \"left bottom\",\r\n\r\n },\r\n {\r\n y: \"12.75rem\",\r\n scale: .9,\r\n force3D: true,\r\n onStart: () => {\r\n\r\n document.body.classList.remove('bgWhite');\r\n\r\n }\r\n },\r\n '<0.1'\r\n )\r\n\r\n .fromTo(\r\n statementSec.querySelector(\".js-statement-section-flex-right-img\"),\r\n\r\n {\r\n y: \"100vh\",\r\n },\r\n {\r\n y: \"-160vh\",\r\n duration: '0.8',\r\n onStart: () => {\r\n document.body.classList.remove('bgWhite');\r\n },\r\n },\r\n // \"<\" before\r\n \"<+=0.2\"\r\n )\r\n\r\n .fromTo(\r\n statementSec.querySelector(\".js-statement-section-flex-left-top-description\"),\r\n\r\n {\r\n y: \"100vh\",\r\n\r\n },\r\n {\r\n y: `${11.75 + 5.625 + topHeadingHeightRem}rem`,\r\n duration: 0.3,\r\n }, '>-0.6'\r\n )\r\n\r\n\r\n .fromTo(\r\n statementSec.querySelector(\".js-statement-section-flex-right-center\"),\r\n {\r\n y: \"100vh\",\r\n }, {\r\n y: \"-50%\",\r\n }, \">-0.2\"\r\n )\r\n .fromTo(\r\n statementSec.querySelector(\".js-statement-section-flex-left-bottom\"),\r\n {\r\n y: \"116.5vh\",\r\n top: \"50%\",\r\n },\r\n {\r\n y: \"-50%\",\r\n }, '<+0.1'\r\n )\r\n\r\n .to(\r\n statementSec.querySelectorAll(\".js-statement-section-flex-left-top-heading-wrapper, .js-statement-section-flex-left-top-description\"),\r\n {\r\n y: \"-110vh\",\r\n\r\n onStart: () => {\r\n document.body.classList.add('bgWhite')\r\n },\r\n onReverseComplete: () => {\r\n document.body.classList.remove('bgWhite')\r\n\r\n },\r\n }, '<+0.1'\r\n )\r\n\r\n\r\n\r\n\r\n .to(\r\n statementSec.querySelector(\".js-statement-section-flex-right-center\")\r\n , {\r\n y: \"-70%\",\r\n duration: 0.2\r\n }, '<+0.3');\r\n // })\r\n }\r\n\r\n\r\n })\r\n\r\n\r\n // })\r\n}\r\n\r\n// =========================== Horizontal Section ====================\r\n\r\nfunction generalHorizontalSection(sectionSelector) {\r\n let mm = gsap.matchMedia();\r\n const section = $(sectionSelector);\r\n const tileid = section.find(\".tile1\");\r\n const tileid3 = section.find(\".tile3\")\r\n\r\n\r\n\r\n const topHeading = section.find('.headingWrap')[0];\r\n const imgPattern = section.find(\".imgPattern\")[0];\r\n const horizontalDetail = section.find(\".horizontalDetail\");\r\n const textBaseDetail = section.find('.textBaseDetail')[0];\r\n const paraWrap = section.find('.paraWrap')[0];\r\n const quotes = section.find(\".js-quote-figure-container\");\r\n\r\n\r\n // If all

elements are empty, add 'display: none' to the .paraWrap\r\n\r\n document.querySelectorAll('.paraWrap').forEach(function (paraWrap) {\r\n const paragraphs = paraWrap.querySelectorAll('p');\r\n const areAllEmpty = Array.from(paragraphs).every(paragraph => paragraph.textContent.trim() === '');\r\n if (areAllEmpty) {\r\n paraWrap.style.display = 'none';\r\n }\r\n });\r\n\r\n\r\n\r\n if (horizontalDetail.length === 0) {\r\n console.error(\"The .horizontalDetail element was not found in the DOM.\");\r\n return;\r\n }\r\n mm.add(`(max-width: ${vpTablet991}px)`, () => {\r\n document.body.classList.remove('bgWhite')\r\n })\r\n\r\n mm.add(`(min-width: ${vpTablet1200}px)`, () => {\r\n\r\n if (!isPortrait) {\r\n if (section) {\r\n\r\n let totalWidth = 0;\r\n horizontalDetail.children('.tileWrapper').each(function () {\r\n totalWidth += $(this).outerWidth(true);\r\n });\r\n\r\n horizontalDetail.css({\r\n width: `${totalWidth}px`,\r\n overflow: 'hidden',\r\n });\r\n\r\n const tw1 = gsap.timeline({\r\n ease: \"none\",\r\n scrollTrigger: {\r\n trigger: tileid,\r\n scrub: 1,\r\n start: \"top top\",\r\n end: () => \"+=\" + section.outerWidth(),\r\n anticipatePin: window.matchMedia(`(max-width: ${vpTablet991}px)`).matches ? 1 : 0,\r\n onStart: () => {\r\n document.body.classList.remove('bgWhite')\r\n },\r\n },\r\n });\r\n\r\n if (topHeading) {\r\n tw1.fromTo(\r\n topHeading,\r\n {\r\n y: \"60vh\",\r\n scale: 1.8,\r\n transformOrigin: isRTL ? 'right bottom' : \"left bottom\",\r\n\r\n },\r\n {\r\n y: \"2.75rem\",\r\n scale: .9,\r\n duration: 5,\r\n force3D: true,\r\n onStart: () => {\r\n document.body.classList.remove('bgWhite');\r\n },\r\n },\r\n )\r\n }\r\n\r\n if (imgPattern) {\r\n tw1.fromTo(\r\n imgPattern,\r\n {\r\n // y: \"100vh\",\r\n x: isRTL ? \"-100vh\" : \"100vh\"\r\n },\r\n {\r\n // y: \"4rem\",\r\n x: isRTL ? \"0\" : \"0\",\r\n duration: 5,\r\n onStart: () => {\r\n document.body.classList.remove('bgWhite');\r\n },\r\n\r\n onReverseComplete: () => {\r\n document.body.classList.remove('bgWhite')\r\n\r\n },\r\n },\r\n \"<-=0.1\"\r\n )\r\n }\r\n\r\n\r\n\r\n\r\n // Timeline for the second animation\r\n const tw3 = gsap.timeline({\r\n ease: \"none\",\r\n scrollTrigger: {\r\n trigger: tileid3,\r\n scrub: 0,\r\n start: () =>\r\n \"top top-=\" +\r\n (totalWidth - window.innerWidth),\r\n end: () => \"+=\" + tileid3.offsetWidth,\r\n anticipatePin: window.matchMedia(`(max-width: ${vpTablet991}px)`).matches ? 1 : 0,\r\n onStart: () => {\r\n document.body.classList.add('bgWhite');\r\n },\r\n onReverseComplete: () => {\r\n document.body.classList.remove('bgWhite');\r\n },\r\n },\r\n });\r\n\r\n if (textBaseDetail) {\r\n tw3.to(\r\n textBaseDetail,\r\n {\r\n\r\n duration: .25,\r\n delay: 1,\r\n ease: \"none\",\r\n // transformOrigin: isRTL ? 'right bottom' : \"left bottom\",\r\n onStart: () => {\r\n gsap.delayedCall(0.5, () => {\r\n document.body.classList.add('bgWhite');\r\n });\r\n },\r\n onReverseComplete: () => {\r\n document.body.classList.remove('bgWhite')\r\n\r\n },\r\n\r\n\r\n },\r\n // \"<0.1\"\r\n )\r\n }\r\n\r\n\r\n const tl = gsap.timeline({\r\n ease: \"none\",\r\n scrollTrigger: {\r\n trigger: section,\r\n pin: true,\r\n scrub: 1,\r\n start: \"top top\",\r\n end: () => \"+=\" + totalWidth,\r\n anticipatePin: window.matchMedia(`(max-width: ${vpTablet991}px)`).matches ? 1 : 0,\r\n onStart: () => {\r\n document.body.classList.remove('bgWhite')\r\n },\r\n },\r\n });\r\n\r\n\r\n let topHeadingHeight = topHeading.clientHeight;\r\n const computedStyle = getComputedStyle(document.documentElement);\r\n const baseFontSizePx = parseFloat(computedStyle.fontSize);\r\n const topHeadingHeightRem = topHeadingHeight / baseFontSizePx;\r\n\r\n\r\n\r\n // Adjust x translation for RTL\r\n const xEndValue = isRTL\r\n ? `+${totalWidth - horizontalDetail.parent().width()}px`\r\n : `-${totalWidth - horizontalDetail.parent().width()}px`;\r\n\r\n\r\n\r\n\r\n tl\r\n .fromTo(\r\n horizontalDetail,\r\n {\r\n x: \"0\",\r\n\r\n },\r\n {\r\n x: xEndValue,\r\n ease: \"none\",\r\n duration: 3,\r\n\r\n onReverseComplete: () => {\r\n document.body.classList.remove('bgWhite')\r\n\r\n },\r\n },\r\n \"<+=2\"\r\n )\r\n\r\n\r\n\r\n }\r\n }\r\n });\r\n\r\n\r\n}\r\n\r\n// Statement Section Animation\r\nfunction statementSectionAltAnim(section) {\r\n const statementSec = section;\r\n const topHeading = statementSec.querySelector('.js-statement-section-flex-left-top-heading');\r\n let topHeadingHeight = topHeading.clientHeight;\r\n const computedStyle = getComputedStyle(document.documentElement);\r\n const baseFontSizePx = parseFloat(computedStyle.fontSize);\r\n const topHeadingHeightRem = topHeadingHeight / baseFontSizePx;\r\n const rightCenterElement = statementSec.querySelector(\".js-statement-section-flex-right-center\");\r\n\r\n\r\n const headingWrapper = statementSec.querySelector(\".js-statement-section-flex-left-top-heading-wrapper\");\r\n // const rightImg = statementSec.querySelector(\".js-statement-section-flex-right-img\");\r\n // const topDescription = statementSec.querySelector(\".js-statement-section-flex-left-top-description\");\r\n // const leftBottom = statementSec.querySelector(\".js-statement-section-flex-left-bottom\");\r\n // const rightQuote = statementSec.querySelector(\".js-flex-right-qoute\");\r\n // const quoteContainer = statementSec.querySelector(\".js-quote-figure-container\");\r\n\r\n let mm = gsap.matchMedia();\r\n mm.add(`(min-width: ${vpTablet1200}px)`, () => {\r\n if (!isPortrait) {\r\n if (statementSec) {\r\n const statementTl = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: statementSec,\r\n pin: true,\r\n scrub: 1,\r\n end: \"+=300%\",\r\n anticipatePin: window.matchMedia(`(max-width: ${vpTablet991}px)`).matches ? 1 : 0,\r\n\r\n onLeaveBack: () => {\r\n document.body.classList.add('bgWhite')\r\n\r\n },\r\n },\r\n });\r\n\r\n if (window.matchMedia(`(max-width: ${vpTablet1200}px)`).matches) {\r\n\r\n if (headingWrapper) {\r\n statementTl.fromTo(headingWrapper, {\r\n opacity: 0,\r\n }, {\r\n opacity: 1,\r\n duration: 0.01,\r\n });\r\n }\r\n }\r\n if (headingWrapper) {\r\n statementTl.fromTo(headingWrapper, {\r\n y: \"65vh\",\r\n scale: 1.8,\r\n transformOrigin: isRTL ? 'right bottom' : \"left bottom\",\r\n }, {\r\n y: \"12.75rem\",\r\n scale: 1,\r\n onStart: () => {\r\n document.body.classList.remove('bgWhite');\r\n },\r\n });\r\n }\r\n statementTl.fromTo(\r\n statementSec.querySelector(\".js-statement-section-flex-right-img\"),\r\n\r\n {\r\n y: \"105vh\",\r\n },\r\n {\r\n y: \"-160vh\",\r\n duration: '1',\r\n onStart: () => {\r\n document.body.classList.remove('bgWhite');\r\n },\r\n\r\n },\r\n \"<+=0.4\"\r\n )\r\n .fromTo(\r\n statementSec.querySelector(\".js-statement-section-flex-left-top-description\"),\r\n // statementSec.querySelector(\".statementTxtWrap\"),\r\n\r\n {\r\n y: \"105vh\",\r\n // opacity: 0\r\n },\r\n {\r\n y: `${11.75 + 5.625 + topHeadingHeightRem}rem`,\r\n // opacity:1\r\n\r\n },\r\n \"<+=0.1\"\r\n )\r\n\r\n // statementSec.querySelector(\".js-statement-section-flex-right-img\"),\r\n\r\n // {\r\n // y: \"-160vh\",\r\n // duration: 0.7,\r\n // }\r\n // )\r\n\r\n // if (rightCenterElement) {\r\n\r\n if (rightCenterElement) {\r\n statementTl.fromTo(\r\n rightCenterElement,\r\n {\r\n y: \"100vh\",\r\n },\r\n {\r\n y: \"-80vh\",\r\n duration: 1,\r\n },\r\n \"<+=0.4\"\r\n )\r\n }\r\n\r\n\r\n\r\n statementTl.fromTo(\r\n statementSec.querySelector(\".js-statement-section-flex-left-bottom\"),\r\n {\r\n y: \"116.5vh\",\r\n top: \"50%\",\r\n },\r\n {\r\n y: \"-50%\",\r\n onReverseComplete: () => {\r\n document.body.classList.remove('bgWhite')\r\n\r\n },\r\n onStart: () => {\r\n gsap.delayedCall(0.5, () => {\r\n document.body.classList.add('bgWhite');\r\n });\r\n },\r\n },\r\n \"<+=0.4\"\r\n )\r\n .to(\r\n statementSec.querySelectorAll(\".js-statement-section-flex-left-top-heading-wrapper, .js-statement-section-flex-left-top-description\"),\r\n {\r\n y: \"-110vh\",\r\n\r\n },\r\n '<+0.1'\r\n )\r\n\r\n\r\n\r\n .fromTo(\r\n statementSec.querySelector(\".js-flex-right-qoute\")\r\n , {\r\n y: \"100vh\",\r\n }, {\r\n y: \"-50%\",\r\n }\r\n\r\n\r\n , \"<\")\r\n .fromTo(\r\n statementSec.querySelector(\".js-quote-figure-container\"),\r\n {\r\n scale: 0.51,\r\n transformOrigin: isRTL ? 'right' : \"left\",\r\n\r\n }, {\r\n scale: 1,\r\n }, '<'\r\n )\r\n\r\n .to(\r\n statementSec.querySelector(\".js-flex-right-qoute\")\r\n , {\r\n y: \"-100%\",\r\n duration: 0.5,\r\n\r\n\r\n }, '<+0.5');\r\n\r\n }\r\n }\r\n })\r\n\r\n}\r\n\r\n// Statement Section Animation\r\nfunction statementSectionBusinessAltAnim(section) {\r\n\r\n let mm = gsap.matchMedia();\r\n mm.add(`(min-width: ${vpTablet767}px)`, () => {\r\n // const statementSections = document.querySelectorAll('.js-statement-section-alt.js-business')\r\n\r\n // statementSections.forEach(statementSec => {\r\n const statementSec = section;\r\n\r\n const statementTl = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: statementSec,\r\n pin: true,\r\n scrub: 0.75,\r\n end: \"+=300%\",\r\n\r\n },\r\n });\r\n\r\n const topHeading = statementSec.querySelector('.js-statement-section-flex-left-top-heading');\r\n let topHeadingHeight = topHeading?.clientHeight;\r\n\r\n // Get the computed style of the root element to determine the base font size\r\n const computedStyle = getComputedStyle(document.documentElement);\r\n const baseFontSizePx = parseFloat(computedStyle.fontSize); // Get the base font size in pixels\r\n\r\n // Convert pixels to rems using the dynamic base font size\r\n const topHeadingHeightRem = topHeadingHeight / baseFontSizePx;\r\n\r\n statementTl\r\n .fromTo(\r\n statementSec.querySelector(\".js-statement-section-flex-left-top-heading\"),\r\n {\r\n y: \"90vh\",\r\n scale: 1.2,\r\n transformOrigin: isRTL ? 'right bottom' : \"left bottom\",\r\n\r\n },\r\n {\r\n y: \"12.75rem\",\r\n scale: 1,\r\n onStart: () => {\r\n document.body.classList.remove('bgWhite');\r\n },\r\n }\r\n )\r\n .fromTo(\r\n statementSec.querySelector(\".js-statement-section-flex-right-img\"),\r\n\r\n {\r\n y: \"100vh\",\r\n },\r\n {\r\n y: \"10vh\",\r\n onStart: () => {\r\n document.body.classList.remove('bgWhite');\r\n },\r\n },\r\n \"-=0.2\"\r\n )\r\n .fromTo(\r\n statementSec.querySelector(\".js-statement-section-flex-left-top-description\"),\r\n\r\n {\r\n y: \"100vh\",\r\n },\r\n {\r\n y: `${12.75 + 5.625 + 4.375 + topHeadingHeightRem}rem`,\r\n },\r\n \"<\"\r\n )\r\n .to(\r\n statementSec.querySelectorAll(\".js-statement-section-flex-left-top-heading, .js-statement-section-flex-left-top-description\"),\r\n {\r\n y: \"-110vh\",\r\n }\r\n )\r\n .fromTo(\r\n statementSec.querySelector(\".js-statement-section-flex-right-center\"),\r\n {\r\n y: \"100vh\",\r\n\r\n }, {\r\n y: \"11.6875rem\",\r\n },\r\n '<'\r\n )\r\n .fromTo(\r\n statementSec.querySelector(\".js-statement-section-flex-left-bottom\"),\r\n {\r\n y: \"116.5vh\",\r\n top: \"50%\",\r\n },\r\n {\r\n y: \"-50%\",\r\n }, '-=0.3'\r\n )\r\n .to(\r\n statementSec.querySelector(\".js-statement-section-flex-right-center\")\r\n , {\r\n y: \"-80vh\",\r\n }\r\n , '-=0.1'\r\n )\r\n\r\n .fromTo(\r\n statementSec.querySelector(\".js-flex-right-qoute\")\r\n , {\r\n y: \"100vh\",\r\n }, {\r\n y: \"-50%\",\r\n\r\n }, '<')\r\n .fromTo(\r\n statementSec.querySelector(\".js-quote-figure-container\"),\r\n {\r\n scale: 0.51,\r\n transformOrigin: isRTL ? 'right bottom' : \"left bottom\",\r\n\r\n }, {\r\n scale: 1,\r\n }, '<'\r\n )\r\n .to(\r\n statementSec.querySelectorAll(\".js-statement-section-flex-left-bottom, .js-flex-right-qoute\"),\r\n\r\n {\r\n top: 0,\r\n y: \"-120%\",\r\n opacity: 0,\r\n }\r\n )\r\n .fromTo(\r\n statementSec.querySelector(\".js-outside-flex-box-bottom\")\r\n , {\r\n y: \"100vh\",\r\n }, {\r\n y: \"0vh\",\r\n onReverseComplete: () => {\r\n document.body.classList.remove('bgWhite')\r\n\r\n },\r\n }, \"<\").to(\r\n statementSec.querySelector(\".js-outside-flex-box-bottom\")\r\n , {\r\n opacity: 1,\r\n\r\n })\r\n })\r\n // })\r\n\r\n}\r\n\r\nfunction jsAnimFade() {\r\n let mm = gsap.matchMedia();\r\n\r\n const jsAnimFades = document.querySelectorAll('.js-anim-fade-dsk');\r\n\r\n\r\n jsAnimFades.forEach(jsAnimFade => {\r\n const animFadeTl = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: jsAnimFade,\r\n start: \"top bottom\",\r\n },\r\n });\r\n\r\n animFadeTl.fromTo(jsAnimFade, {\r\n y: \"30vh\",\r\n opacity: 0\r\n }, {\r\n y: \"0vh\",\r\n opacity: 1\r\n })\r\n })\r\n\r\n mm.add(`(max-width: ${vpTablet991}px)`, () => {\r\n const jsAnimFades = document.querySelectorAll('.js-anim-fade-tab');\r\n\r\n jsAnimFades.forEach(jsAnimFade => {\r\n\r\n const animFadeTl = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: jsAnimFade,\r\n start: \"top bottom\",\r\n\r\n },\r\n onComplete: () => { ScrollTrigger.refresh(true); }\r\n });\r\n\r\n animFadeTl.fromTo(jsAnimFade, {\r\n y: \"30vh\",\r\n opacity: 0,\r\n duration: .5\r\n }, {\r\n y: \"0vh\",\r\n opacity: 1,\r\n })\r\n })\r\n })\r\n mm.add(`(max-width: ${vpTablet1200}px)`, () => {\r\n const jsAnimFades = document.querySelectorAll('.js-anim-fade-tab-1220');\r\n\r\n jsAnimFades.forEach(jsAnimFade => {\r\n\r\n const animFadeTl = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: jsAnimFade,\r\n start: \"top bottom\",\r\n\r\n },\r\n onComplete: () => { ScrollTrigger.refresh(true); }\r\n });\r\n\r\n animFadeTl.fromTo(jsAnimFade, {\r\n y: \"30vh\",\r\n opacity: 0\r\n }, {\r\n y: \"0vh\",\r\n opacity: 1\r\n })\r\n })\r\n })\r\n\r\n mm.add(`(max-width: ${vpTablet767}px)`, () => {\r\n const jsAnimFades = document.querySelectorAll('.js-anim-fade');\r\n\r\n jsAnimFades.forEach(jsAnimFade => {\r\n\r\n const animFadeTl = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: jsAnimFade,\r\n start: \"top bottom\",\r\n\r\n },\r\n onComplete: () => { ScrollTrigger.refresh(true); }\r\n });\r\n\r\n animFadeTl.fromTo(jsAnimFade, {\r\n y: \"30vh\",\r\n opacity: 0\r\n }, {\r\n y: \"0vh\",\r\n opacity: 1\r\n })\r\n })\r\n })\r\n\r\n}\r\n\r\n// Check which language is active\r\nfunction checkActiveLanguage() {\r\n if (isRTL) {\r\n $('#js-lang-ar').addClass('active')\r\n $('#js-mobile-lang-ar').addClass('active')\r\n } else {\r\n $('#js-lang-en').addClass('active')\r\n $('#js-mobile-lang-en').addClass('active')\r\n }\r\n}\r\n\r\nlet heroScrollUp;\r\n// Footer scroll to top button\r\nfunction scrollTop() {\r\n let mm = gsap.matchMedia();\r\n $('#js-scroll-top').on('click', function () {\r\n $('html, body').animate({ scrollTop: heroScrollUp }, 'slow');\r\n $('html, body').animate({ scrollTop: -1 }, 'slow');\r\n });\r\n mm.add(`(max-width: ${vpTablet767}px)`, () => {\r\n $('#js-scroll-top').on('click', function () {\r\n $('html, body').animate({ scrollTop: -1 }, 'slow');\r\n });\r\n })\r\n}\r\nfunction scrollToTopOnLoad() {\r\n $('html, body').animate({ scrollTop: 0 }, 'fast');\r\n}\r\n\r\nconst openAndCloseStatmentDrawer = () => {\r\n const statementSections = document.querySelectorAll('.js-statement-section-main')\r\n const drawers = document.querySelectorAll('.js-statement-drawer')\r\n statementSections?.forEach(section => {\r\n // const drawer = section?.nextElementSibling;\r\n const sectionUid = section.getAttribute('data-sectionid')\r\n\r\n\r\n let readStatementCtas;\r\n readStatementCtas = section?.querySelectorAll('.js-read-statement-cta')\r\n // const closeCtas = drawer?.querySelectorAll('.js-close-ic')\r\n\r\n // if (window.matchMedia(`(min-width: ${vpTablet767}px)`).matches && !isPortrait) {\r\n // readStatementCtas = section?.querySelectorAll('.js-read-statement-cta')\r\n // }\r\n // else {\r\n // readStatementCtas = section?.querySelectorAll('.js-read-statement-cta-mob')\r\n // }\r\n const smoother = ScrollSmoother.get();\r\n readStatementCtas.forEach(readStatementCta => {\r\n\r\n readStatementCta?.addEventListener('click', () => {\r\n\r\n\r\n drawers.forEach(drawer => {\r\n\r\n const drawerUid = drawer.getAttribute('data-sectionid')\r\n\r\n if (sectionUid === drawerUid) {\r\n drawer?.classList.add('drawer--open')\r\n document.body?.classList.add(\"scrollHide\")\r\n if (smoother) {\r\n\r\n smoother.paused(true);\r\n }\r\n }\r\n })\r\n\r\n\r\n })\r\n })\r\n drawers.forEach(drawer => {\r\n\r\n const closeCtas = drawer?.querySelectorAll('.js-close-ic')\r\n const drawerUid = drawer.getAttribute('data-sectionid');\r\n const backDropBg = drawer?.querySelector('.backdropBG');\r\n closeCtas?.forEach(closeCta => {\r\n\r\n closeCta?.addEventListener('click', () => {\r\n if (sectionUid === drawerUid) {\r\n drawer?.classList.remove('drawer--open')\r\n document.body?.classList.remove(\"scrollHide\")\r\n if (smoother) {\r\n\r\n smoother.paused(false);\r\n }\r\n\r\n }\r\n\r\n })\r\n\r\n backDropBg?.addEventListener('click', () => {\r\n if (sectionUid === drawerUid) {\r\n drawer?.classList.remove('drawer--open')\r\n document.body?.classList.remove(\"scrollHide\")\r\n if (smoother) {\r\n\r\n smoother.paused(false);\r\n }\r\n\r\n }\r\n })\r\n\r\n $(document).keydown(function (e) {\r\n\r\n if (e.keyCode == 27) {\r\n if (sectionUid === drawerUid) {\r\n drawer?.classList.remove('drawer--open')\r\n document.body?.classList.remove(\"scrollHide\")\r\n if (smoother) {\r\n\r\n smoother.paused(false);\r\n }\r\n\r\n }\r\n }\r\n });\r\n\r\n })\r\n\r\n })\r\n })\r\n\r\n}\r\n\r\nfunction addNavLinksEvents() {\r\n const sections = document.getElementsByClassName('js-go-to-nav-section');\r\n // For header color change (Was an issue in last)\r\n const sectionsHeaders = document.getElementsByClassName('js-header-variant');\r\n const navMobItems = document.querySelectorAll('.js-nav-item');\r\n const timelines = document.getElementsByClassName('timelines');\r\n const sectionsArray = [...sections];\r\n const timelinesArray = [...timelines];\r\n const sectionsHeadersArray = [...sectionsHeaders];\r\n\r\n if (window.matchMedia(`(max-width: ${vpMobile600}px)`).matches) {\r\n navMobItems.forEach((timeline, i) => {\r\n timeline.addEventListener('click', function (e) {\r\n navMobItems.forEach((timeline, j) => {\r\n timeline?.classList.remove('active');\r\n });\r\n\r\n const targetAttr = e.currentTarget.getAttribute('data-sectionid');\r\n\r\n sectionsArray.forEach(section => {\r\n const secAttr = section?.getAttribute('data-sectionid')\r\n\r\n if (secAttr === targetAttr) {\r\n gsap.to(window, { duration: 1.5, scrollTo: { y: section, offsetY: secAttr === 'timelineScroll' ? 0 : -80 } });\r\n }\r\n })\r\n });\r\n })\r\n\r\n } else {\r\n timelinesArray.forEach((timeline, i) => {\r\n timeline.addEventListener('click', function (e) {\r\n // Remove the 'active' class from all timelines\r\n timelinesArray.forEach((timeline, j) => {\r\n timeline?.classList.remove('active');\r\n });\r\n\r\n const targetAttr = e.currentTarget.getAttribute('data-sectionid');\r\n\r\n sectionsArray.forEach(section => {\r\n const secAttr = section.getAttribute('data-sectionid');\r\n\r\n if (secAttr === targetAttr) {\r\n\r\n\r\n // Scroll to the section start\r\n gsap.to(window, {\r\n duration: 1.5,\r\n scrollTo: {\r\n y: section,\r\n offsetY: secAttr === 'timelineScroll' ? -3 : -15,\r\n },\r\n\r\n });\r\n }\r\n });\r\n });\r\n });\r\n\r\n }\r\n\r\n const navSections = document.getElementsByClassName('js-nav-section');\r\n const navSectionsArray = [...navSections];\r\n\r\n const mainTextContainerObserver = new IntersectionObserver((entries) => {\r\n entries.forEach((entry, i) => {\r\n if (entry.isIntersecting) {\r\n const sectionIdx = navSectionsArray.indexOf(entry.target);\r\n intersectingSection = entry.target;\r\n const dataId = intersectingSection.getAttribute('data-sectionId');\r\n\r\n if (window.matchMedia(`(max-width: ${vpMobile600}px)`).matches) {\r\n // navMobItems.forEach((timeline, i) => {\r\n // timeline.classList.remove('active');\r\n // });\r\n // navMobItems[sectionIdx]?.classList.add('active');\r\n\r\n\r\n navMobItems.forEach((timeline, j) => {\r\n const timelineDataId = timeline.getAttribute('data-sectionId')\r\n\r\n if (dataId === timelineDataId) {\r\n navMobItems.forEach((timeline, j) => {\r\n timeline.classList.remove('active')\r\n })\r\n timeline.classList.add('active');\r\n\r\n }\r\n });\r\n\r\n } else {\r\n\r\n timelinesArray.forEach((timeline, j) => {\r\n const timelineDataId = timeline?.getAttribute('data-sectionId')\r\n\r\n if (dataId === timelineDataId) {\r\n timelinesArray.forEach((timeline, j) => {\r\n timeline?.classList.remove('active')\r\n timeline?.classList.remove('hover')\r\n })\r\n setTimeout(() => {\r\n timeline?.classList.add('hover');\r\n }, 1000)\r\n\r\n timeline?.classList.add('active');\r\n setTimeout(() => {\r\n timeline?.classList.remove('hover');\r\n }, 5000)\r\n }\r\n });\r\n\r\n\r\n\r\n }\r\n\r\n // let isSectionDark = $(sectionsArray[sectionIdx]).hasClass('dark');\r\n // if (isSectionDark) {\r\n // $('#js-header-wrapper').addClass('dark');\r\n // $('.js-section-timeline-wrapper').addClass('dark');\r\n // } else {\r\n // $('#js-header-wrapper').removeClass('dark');\r\n // $('.js-section-timeline-wrapper').removeClass('dark');\r\n // }\r\n\r\n }\r\n });\r\n }, { rootMargin: \"0% 0px -90% 0px\", threshold: 0 });\r\n\r\n\r\n navSectionsArray.forEach((section, i) => {\r\n mainTextContainerObserver.observe(section);\r\n });\r\n // For header color change (Was an issue in last)\r\n const headerContainerObserver = new IntersectionObserver((entries) => {\r\n entries.forEach((entry, i) => {\r\n if (entry.isIntersecting) {\r\n\r\n const sectionIdx = sectionsHeadersArray.indexOf(entry.target);\r\n\r\n let isSectionDark = $(sectionsHeadersArray[sectionIdx]).hasClass('dark');\r\n const currentSection = sectionsHeadersArray[sectionIdx];\r\n\r\n if (isSectionDark) {\r\n $('#js-header-wrapper').addClass('dark');\r\n $('.js-section-timeline-wrapper').addClass('dark');\r\n } else {\r\n $('#js-header-wrapper').removeClass('dark');\r\n $('.js-section-timeline-wrapper').removeClass('dark');\r\n }\r\n\r\n const sectionId = $(currentSection).data('sectionid');\r\n if (sectionId === 'impact1' || sectionId === 'impact2' || sectionId === 'impact4' || sectionId === 'impact') {\r\n $('#js-header-wrapper').addClass('darkSec');\r\n $('.js-section-timeline-wrapper').addClass('darkSec');\r\n } else {\r\n $('#js-header-wrapper').removeClass('darkSec');\r\n $('.js-section-timeline-wrapper').removeClass('darkSec');\r\n }\r\n\r\n }\r\n });\r\n }, { rootMargin: \"0% 0px -98% 0px\", threshold: 0 });\r\n\r\n\r\n sectionsHeadersArray.forEach((section, i) => {\r\n headerContainerObserver.observe(section);\r\n });\r\n\r\n}\r\n\r\n// function lazyLoadingFunc(){\r\n// const lazyVideos = document.querySelectorAll(\".lazy-video\");\r\n// videoElement.load();\r\n// console.log({lazyVideos})\r\n// const videoObserver = new IntersectionObserver((entries, observer) => {\r\n// entries.forEach(entry => {\r\n// if (entry.isIntersecting) {\r\n// const video = entry.target;\r\n// const sources = video.querySelectorAll('source');\r\n\r\n// sources.forEach(source => {\r\n// source.src = source.dataset.src;\r\n// });\r\n\r\n// video.load(); // Start loading the video\r\n// video.classList.add(\"lazyloaded\");\r\n// observer.unobserve(video); // Stop observing once loaded\r\n// }\r\n// });\r\n// });\r\n\r\n// lazyVideos.forEach(video => {\r\n// videoObserver.observe(video);\r\n// });\r\n// }\r\n\r\nfunction impactSectionAnimation(section) {\r\n let mm = gsap.matchMedia();\r\n mm.add(`(min-width: ${vpTablet767}px)`, () => {\r\n // const impactSections = document.querySelectorAll('.js-impact-section')\r\n const impactSection = section\r\n // impactSections.forEach(impactSection => {\r\n const textContainer = impactSection.querySelector('.js-text-container')\r\n const newRightSection = impactSection.querySelector(\".js-stats-container\");\r\n\r\n const newRightSectionHeight = newRightSection?.clientHeight;\r\n\r\n\r\n const impactSectionTimeline = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: impactSection,\r\n start: \"top top\",\r\n pin: true,\r\n end: () => window.matchMedia(`(max-width: ${vpTablet991}px)`).matches ? `${newRightSectionHeight}px` : `${newRightSectionHeight * 1.5}px`,\r\n pinContainer: textContainer,\r\n scrub: 1,\r\n anticipatePin: window.matchMedia(`(max-width: ${vpTablet991}px)`).matches ? 1 : 0\r\n\r\n // onUpdate: (self) => {\r\n // gsap.to(rightSection, {\r\n // y: `-${window.scrollY - impactSectionTop - window.innerHeight}`,\r\n\r\n // });\r\n // },\r\n },\r\n });\r\n\r\n\r\n impactSectionTimeline.to(\r\n newRightSection, {\r\n y: `-100%`,\r\n }, '')\r\n\r\n // })\r\n\r\n\r\n })\r\n mm.add(`(max-width: ${vpTablet767}px) and (min-width: ${vpMobile600 + 1}px)`, () => {\r\n\r\n const impactSection = section\r\n\r\n\r\n const textContainer = impactSection.querySelector('.js-text-container')\r\n const newRightSection = impactSection.querySelector(\".js-stats-container\");\r\n\r\n const newRightSectionHeight = newRightSection?.clientHeight;\r\n\r\n const pinTimeline = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: impactSection,\r\n start: \"top top\",\r\n pin: true,\r\n end: () => `${newRightSectionHeight * 2}px`,\r\n scrub: 0.75,\r\n anticipatePin: window.matchMedia(`(max-width: ${vpTablet991}px)`).matches ? 1 : 0\r\n\r\n },\r\n })\r\n\r\n\r\n pinTimeline.fromTo(newRightSection, {\r\n y: `70vh`,\r\n\r\n },\r\n {\r\n y: `-80%`,\r\n duration: 10,\r\n }, '<');\r\n\r\n\r\n })\r\n mm.add(`(max-width: ${vpMobile600}px)`, () => {\r\n\r\n\r\n // const impactSections = document.querySelectorAll('.js-impact-section')\r\n\r\n // const rightSection = $(\".js-stats-container\");\r\n // const impactSection = $(\".js-impact-section\");\r\n // const rightSectionHeight = rightSection.outerHeight(true);\r\n // impactSections.forEach(impactSection => {\r\n\r\n const impactSection = section\r\n\r\n\r\n const contentContainer = impactSection.querySelector('.js-content-container')\r\n const newRightSection = impactSection.querySelector(\".js-stats-container\");\r\n\r\n const newRightSectionHeight = newRightSection?.clientHeight;\r\n\r\n const pinTimeline = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: impactSection,\r\n start: \"top top\",\r\n pin: true,\r\n end: () => `${newRightSectionHeight * 2}px`,\r\n scrub: 0.75,\r\n anticipatePin: window.matchMedia(`(max-width: ${vpTablet991}px)`).matches ? 1 : 0\r\n },\r\n })\r\n\r\n pinTimeline.fromTo(contentContainer, {\r\n y: \"40vh\"\r\n }, {\r\n y: '-70%',\r\n duration: 5,\r\n })\r\n\r\n\r\n\r\n })\r\n\r\n // impactSectionTimeline.fromTo(rightSection, {\r\n // y: \"50vh\",\r\n // }, {\r\n // y: \"0\",\r\n // })\r\n // const impactSections = document.querySelectorAll('.js-impact-section')\r\n\r\n\r\n // const elements = $(\".js-stats-items-container\");\r\n // const elementHeadings = $(\".js-section-heading\");\r\n // const textContainers = $(\".js-stats-item\");\r\n\r\n // const mainTextContainerObserver = new IntersectionObserver((entries) => {\r\n // entries.forEach((entry, i) => {\r\n // const images = $(\".js-impact-bg-img\");\r\n\r\n // if (entry.isIntersecting) {\r\n // const intersectingIndex = $(entry.target).index(\r\n // \".js-stats-items-container\"\r\n // );\r\n // elementHeadings.each((i, element) => {\r\n // $(element).removeClass(\"active\");\r\n // if (i === intersectingIndex) {\r\n // $(element).addClass(\"active\");\r\n // }\r\n // });\r\n\r\n // images.each((i, img) => {\r\n // $(img).removeClass(\"active\");\r\n\r\n // if (i === intersectingIndex) {\r\n // $(img).addClass(\"active\");\r\n // }\r\n // });\r\n // }\r\n // });\r\n // }, { rootMargin: \"-50% 0px -50% 0px\" });\r\n\r\n // const textContainerObserver = new IntersectionObserver(\r\n // (entries) => {\r\n // entries.forEach((entry) => {\r\n // if (entry.isIntersecting) {\r\n // const intersectingIndex = $(entry.target).index(\r\n // \".js-stats-item\"\r\n // );\r\n // textContainers.each((i, textContainer) => {\r\n // $(textContainer).removeClass(\"active\");\r\n\r\n // if (i === intersectingIndex) {\r\n // $(textContainer).addClass(\"active\");\r\n // }\r\n // });\r\n // }\r\n // });\r\n // },\r\n // { rootMargin: \"-50% 0px -50% 0px\" } // Adjusted threshold values\r\n // );\r\n // // Select all elements to observe using a common class\r\n\r\n // // Loop through each element and start observing\r\n // elements.each((i, element) => {\r\n // mainTextContainerObserver.observe(element);\r\n // });\r\n // textContainers.each((i, element) => {\r\n // textContainerObserver.observe(element);\r\n // });\r\n\r\n\r\n // Select all impact sections\r\n const impactSections = document.querySelectorAll('.js-impact-section');\r\n\r\n // Loop through each impact section\r\n impactSections.forEach((section) => {\r\n // Select elements within the current section\r\n const elements = section.querySelectorAll('.js-stats-items-container');\r\n const elementHeadings = section.querySelectorAll('.js-section-heading');\r\n const textContainers = section.querySelectorAll('.js-stats-item');\r\n const images = section.querySelectorAll('.js-impact-bg-img');\r\n\r\n // Create IntersectionObservers for the current section\r\n const mainTextContainerObserver = new IntersectionObserver((entries) => {\r\n entries.forEach((entry) => {\r\n if (entry.isIntersecting) {\r\n\r\n const intersectingIndex = Array.from(section.querySelectorAll('.js-stats-items-container')).indexOf(entry.target);\r\n\r\n elementHeadings.forEach((element, i) => {\r\n element.classList.remove(\"active\");\r\n if (i === intersectingIndex) {\r\n element.classList.add(\"active\");\r\n }\r\n });\r\n\r\n images.forEach((img, i) => {\r\n img.classList.remove(\"active\");\r\n if (i === intersectingIndex) {\r\n img.classList.add(\"active\");\r\n }\r\n });\r\n }\r\n });\r\n }, { rootMargin: \"-50% 0px -50% 0px\" });\r\n\r\n const textContainerObserver = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const intersectingIndex = Array.from(section.querySelectorAll('.js-stats-item')).indexOf(entry.target);\r\n textContainers.forEach((textContainer, i) => {\r\n textContainer.classList.remove(\"active\");\r\n if (i === intersectingIndex) {\r\n textContainer.classList.add(\"active\");\r\n }\r\n });\r\n }\r\n });\r\n }, { rootMargin: \"-50% 0px -50% 0px\" });\r\n\r\n // Observe elements within the current section\r\n elements.forEach(element => {\r\n mainTextContainerObserver.observe(element);\r\n });\r\n\r\n textContainers.forEach(element => {\r\n textContainerObserver.observe(element);\r\n });\r\n });\r\n}\r\n\r\nfunction sectionTimelineScroll() {\r\n\r\n const mm = gsap.matchMedia();\r\n\r\n mm.add({\r\n // Matches screens larger than 768px (not mobile)\r\n isNotMobile: `(min-width: ${vpTablet991 + 1}px)`,\r\n // Matches screens 768px and below (mobile)\r\n isMobile: `(max-width: ${vpTablet991}px)`\r\n }, (context) => {\r\n\r\n if (context.conditions.isNotMobile) {\r\n const timelines = document.querySelectorAll('.timeline-scroll-animation');\r\n\r\n if (timelines.length > 0) {\r\n const firstElement = timelines[0];\r\n const lastElement = timelines[timelines.length - 1];\r\n const timelineFirstWidth = firstElement.offsetWidth;\r\n const timelineTotalElements = timelines.length;\r\n\r\n const baseFontSize = parseFloat(getComputedStyle(document.documentElement).fontSize); // Get the base font size in pixels\r\n const marginLeft = 10 * baseFontSize;\r\n\r\n const isRTL = document.documentElement.getAttribute('dir') === 'rtl';\r\n\r\n const timelineWidth = (timelineFirstWidth + marginLeft) * (timelineTotalElements - 1);\r\n\r\n gsap.to(\".horizontal-scroll-content-timeline\", {\r\n x: isRTL ? timelineWidth : -timelineWidth,\r\n ease: \"none\",\r\n scrollTrigger: {\r\n end: () => `+=${timelineWidth}`,\r\n trigger: \".section-timeline-scroll\",\r\n pin: true,\r\n scrub: 1.5,\r\n snap: {\r\n snapTo: (1 / (timelineTotalElements - 1)),\r\n duration: 1,\r\n delay: 0.5,\r\n }\r\n }\r\n });\r\n\r\n let lastScrollTop = window.scrollY || document.documentElement.scrollTop;\r\n\r\n window.addEventListener('scroll', () => {\r\n const currentScrollTop = window.scrollY || document.documentElement.scrollTop;\r\n const isScrollingDown = currentScrollTop > lastScrollTop;\r\n\r\n timelines.forEach((timeline) => {\r\n const { left: timelineLeft, right: timelineRight } = timeline.getBoundingClientRect();\r\n\r\n if (isScrollingDown) {\r\n if ((isRTL && timelineRight > timelineFirstWidth) || (!isRTL && timelineLeft < timelineFirstWidth)) {\r\n timeline.classList.add('active');\r\n } else {\r\n timeline.classList.remove('active');\r\n }\r\n } else {\r\n if ((isRTL && timelineRight < (timelineFirstWidth + 240)) || (!isRTL && timelineRight > (timelineFirstWidth + 240))) {\r\n timeline.classList.remove('active');\r\n }\r\n }\r\n });\r\n const skipBtn = document.querySelector('.js-section-timeline-scroll-main .js-btn-flex-left-desktop');\r\n\r\n // Hide the skip button if the last element is active\r\n if (lastElement.classList.contains('active')) {\r\n if (skipBtn) {\r\n\r\n gsap.to(skipBtn, {\r\n opacity: 0,\r\n pointerEvents: 'none'\r\n })\r\n }\r\n } else {\r\n if (skipBtn) {\r\n gsap.to(skipBtn, {\r\n opacity: 1,\r\n pointerEvents: 'all'\r\n })\r\n }\r\n }\r\n\r\n lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop;\r\n });\r\n\r\n const skipBtn = document.querySelector('.js-section-timeline-scroll-main .js-btn-flex-left-desktop');\r\n if (skipBtn) {\r\n skipBtn.addEventListener('click', () => {\r\n const element = document.querySelector('.js-section-timeline-scroll-main');\r\n if (element) {\r\n const nextSibling = element.nextElementSibling;\r\n if (nextSibling) {\r\n gsap.to(window, { duration: 2, scrollTo: nextSibling });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n else if (context.conditions.isMobile) {\r\n const timelines = document.querySelectorAll('.horizontal-scroll-content-timeline');\r\n if (timelines.length > 0) {\r\n const firstChild = timelines[0].querySelector('.active');\r\n if (firstChild) {\r\n firstChild.classList.remove('active');\r\n }\r\n }\r\n const skipBtn = document.querySelector('.js-section-timeline-scroll-main .js-btn-flex-left')\r\n skipBtn?.addEventListener('click', () => {\r\n var element = document.querySelector('.js-section-timeline-scroll-main');\r\n var nextSibling = element.nextElementSibling;\r\n gsap.to(window, { duration: 1.5, scrollTo: nextSibling });\r\n });\r\n\r\n }\r\n });\r\n\r\n}\r\n\r\nfunction removeTimelineOnFooter() {\r\n let options = {\r\n root: null,\r\n rootMargin: '0px',\r\n threshold: 0\r\n };\r\n\r\n let observer = new IntersectionObserver((entries, observer) => {\r\n let element = document.querySelector('.js-section-timeline-wrapper');\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n\r\n if (element && loaderAnimCompletes) {\r\n gsap.to(element, {\r\n duration: 0.2,\r\n opacity: 1,\r\n pointerEvents: 'none'\r\n })\r\n }\r\n } else {\r\n if (element && loaderAnimCompletes) {\r\n gsap.to(element, {\r\n duration: 0.2,\r\n opacity: 1,\r\n pointerEvents: 'all'\r\n })\r\n }\r\n }\r\n });\r\n }, options);\r\n\r\n let target = document.querySelector('.js-statement-section-alt-6');\r\n observer.observe(target);\r\n}\r\n\r\nfunction readMoreBtn() {\r\n let readMoreBtn = $('.read-more-btn');\r\n if (readMoreBtn.length > 0) {\r\n if ($(window).width() < 767.98) {\r\n\r\n\r\n $('.subTextWrap').each(function () {\r\n var $content = $(this);\r\n var $bodyElements = $content.find('.body2'); // Select all .body2 elements (both p and li)\r\n var maxVisibleItems = 4; // Maximum number of visible items before truncation\r\n\r\n // If there are more than 4 .body2 elements, show \"Read More\" button and hide the extras\r\n if ($bodyElements.length > maxVisibleItems) {\r\n $bodyElements.slice(maxVisibleItems).hide(); // Hide elements after the 4th one\r\n $content.find('.read-more-btn').show(); // Show the \"Read More\" button\r\n } else {\r\n // If 4 or fewer, hide the \"Read More\" button\r\n $content.find('.read-more-btn').hide();\r\n }\r\n\r\n // \"Read More\" button click handler\r\n $content.find('.read-more-btn').on('click', function () {\r\n setTimeout(() => {\r\n ScrollTrigger.refresh();\r\n }, 600);\r\n\r\n $content.toggleClass('showTxt');\r\n if ($content.hasClass('showTxt')) {\r\n // Show all items when expanded\r\n $bodyElements.show();\r\n } else {\r\n // Collapse back to showing only the first 4 items\r\n $bodyElements.slice(maxVisibleItems).hide();\r\n }\r\n\r\n // Recalculate scroll-based animations\r\n if (typeof ScrollTrigger !== \"undefined\") {\r\n ScrollTrigger.refresh();\r\n }\r\n });\r\n });\r\n\r\n\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n // horizontal text para\r\n if ($(\".paraWrap\").length > 0) {\r\n if ($(window).width() < 767.98) {\r\n\r\n $('.paraWrap').each(function () {\r\n var $paragraphs = $(this).find('p'); // Find all p elements in the container\r\n var maxLength = 300; // Maximum character length before truncation\r\n\r\n $paragraphs.each(function () {\r\n var $para = $(this);\r\n var originalText = $para.text();\r\n\r\n // Check if paragraph text exceeds the maximum length\r\n if (originalText.length > maxLength) {\r\n // Truncate the text for this paragraph\r\n var truncatedText = originalText.substring(0, maxLength) + '...';\r\n $para.text(truncatedText);\r\n\r\n // Handle \"Read More\" button click\r\n $(this).closest('.paraWrap').find('.read-more-btn').on('click', function () {\r\n setTimeout(() => {\r\n ScrollTrigger.refresh();\r\n }, 600);\r\n\r\n // Restore the full text of all paragraphs in this container\r\n $paragraphs.each(function () {\r\n $(this).text($(this).data('original-text')); // Restore original text\r\n });\r\n\r\n $(this).closest('.paraWrap').addClass('expanded');\r\n\r\n // Recalculate scroll-based animations\r\n if (typeof ScrollTrigger !== \"undefined\") {\r\n ScrollTrigger.refresh();\r\n }\r\n });\r\n\r\n // Store the original text for restoring later\r\n $para.data('original-text', originalText);\r\n } else {\r\n // If the text is not too long, hide the button\r\n $(this).closest('.paraWrap').find('.read-more-btn').hide();\r\n $(this).closest('.paraWrap').addClass('expanded');\r\n }\r\n });\r\n });\r\n\r\n }\r\n }\r\n\r\n}\r\n\r\n// function loadVideoLazy(){\r\nconst mobileVideoUrl = '/Pages/assets/videos/annual-report.mp4';\r\nconst desktopVideoUrl = '/Pages/assets/videos/annual-report-mob.mp4';\r\n// Function to determine if the device is mobile\r\nfunction isMobile() {\r\n return $(window).width() <= 768; // Adjust this value based on your breakpoint\r\n}\r\n\r\n// Function to create and append the element for video\r\nfunction createSource($videoElement, videoUrl) {\r\n var $source = $('').attr('src', videoUrl).attr('type', 'video/mp4');\r\n $videoElement.append($source); // Append the element dynamically\r\n $videoElement[0].load(); // Load the video with the new source\r\n}\r\n\r\n// Function to load the appropriate video based on device type\r\nfunction loadVideo() {\r\n var $mobileVideo = $('#mask-video-mob');\r\n var $desktopVideo = $('#mask-video');\r\n\r\n // Remove any existing elements to prevent issues\r\n $mobileVideo.empty();\r\n $desktopVideo.empty();\r\n\r\n if ($(window).width() <= 767.98) {\r\n createSource($mobileVideo, mobileVideoUrl);\r\n $desktopVideo.hide(); // Hide the desktop video\r\n } else {\r\n createSource($desktopVideo, desktopVideoUrl);\r\n $mobileVideo.hide(); // Hide the mobile video\r\n }\r\n}\r\n\r\n// Run the function on page load\r\nloadVideo();\r\n\r\n// Optional: Run the function on window resize to update the video source\r\n$(window).resize(function () {\r\n loadVideo();\r\n setTimeout(function () {\r\n // Recalculate scroll-based animations or other triggers\r\n ScrollTrigger.refresh(); // For GSAP\r\n }, 250); // Debounce time\r\n // setVH();\r\n});\r\n// }\r\n\r\n\r\nfunction setVH() {\r\n let vh = window.innerHeight * 0.01;\r\n document.documentElement.style.setProperty('--vh', `${vh}px`);\r\n ScrollTrigger.refresh();\r\n}\r\n\r\n// Call on load and on resize\r\nwindow.addEventListener('resize', setVH);\r\nsetVH();"]}