1(function () { 2 const path = window.location.pathname; 3 4 const isExcluded = ['/products', '/products/product-catalog', '/products/product-map'].includes(path); 5 if (!isExcluded && path.startsWith('/products')) { 6 const markup = ` 7 <section id="products-page-cta" class="fis-white-bg circle-image-left overview-component"> 8 <div class="content-width"> 9 <div class="l2featuresolutionrow"> 10 <div class="l2featureimgleft col col-50"> 11 <img src="-/media/73ABF9FBD253487A87B278D143B9A791" alt="Computer screen displaying the FIS product catalog page on fisglobal.com" /> 12 </div> 13 <div class="l2featurecopyright col col-50"> 14 <h2>Explore all the <span class="fis-text-teal">financial technology products</span> FIS has to offer</h2> 15 <a href="/products/product-catalog" class="btn-primary-green-on-white">View all products</a> 16 </div> 17 </div> 18 </div> 19 </section> 20 <style> 21 section#products-page-cta{max-width:1440px;margin-left:auto;margin-right:auto} 22 section#products-page-cta .l2featuresolutionrow{display:flex;align-items:center;padding-top:90rem;padding-bottom:90rem} 23 #products-page-cta .l2featureimgleft.col.col-50{position:relative;padding-right:90rem} 24 #products-page-cta .l2featureimgleft.col.col-50 img{max-width:100%} 25 section#products-page-cta .l2featurecopyright h2{font-weight:400;font-family:'Roobert Light',sans-serif;line-height:1.2;margin-bottom:25px;font-size:37rem} 26 section#products-page-cta .l2featurecopyright h2 span.fis-text-teal{font-family:'Roobert Bold',sans-serif;color:#05a399} 27 section#products-page-cta .l2featurecopyright a.btn-primary-green-on-white{font-weight:400;font-family:'Roobert Semibold',sans-serif} 28 section#products-page-cta .col-50{width:50%} 29 @media(min-width:1400px){ 30 #products-page-cta .l2featureimgleft.col.col-50 img{max-width:436px} 31 } 32 @media(max-width:768px){ 33 section#products-page-cta .col-50{width:100%} 34 #products-page-cta .l2featureimgleft.col.col-50{padding-right:0;margin-bottom:40rem} 35 section#products-page-cta .l2featuresolutionrow{flex-direction:column} 36 section#products-page-cta .l2featurecopyright h2{text-align:center} 37 section#products-page-cta .l2featurecopyright a.btn-primary-green-on-white{display:block;max-width:max-content;margin-left:auto;margin-right:auto} 38 #products-page-cta .l2featureimgleft.col.col-50 img{max-width:320px;margin-left:auto;margin-right:auto;display:block} 39 } 40 </style>`; 41 42 43 const aosMaxAttempts = 20; // Total duration = maxAttempts * intervalDelay 44 const intervalDelay = 300; // milliseconds 45 let aosAttempts = 0; 46 47 const aosInterval = setInterval(() => { 48 aosAttempts++; 49 50 const isAOSAvailable = typeof AOS !== 'undefined' && typeof AOS.refresh === 'function'; 51 const slickPresent = document.querySelector('.slick-slide.slick-current') !== null; 52 53 54 if (isAOSAvailable && slickPresent) { 55 //console.log('Conditions met. Refreshing AOS...'); 56 setTimeout(function(){ 57 AOS.refresh(); 58 },2000); 59 60 clearInterval(aosInterval); 61 } 62 63 if (attempts >= aosMaxAttempts) { 64 console.warn('AOS refresh check timed out.'); 65 clearInterval(aosInterval); 66 } 67 }, intervalDelay); 68 69 70 71 72 const maxAttempts = 25; 73 let attempts = 0; 74 75 76 77 const interval = setInterval(() => { 78 const primaryTarget = document.querySelector('.component.cta-listing'); 79 const fallbackSection = document.querySelector('section.bottom-cta-boxes.overview-component'); 80 const fallbackTarget = fallbackSection ? fallbackSection.closest('.component.htmp-spot-advance') : null; 81 const iconCardListing = document.querySelector('.IconCardListing'); 82 83 if (iconCardListing){ 84 console.log('Icon card listing found'); 85 document.querySelectorAll('.IconCardListing').forEach(card => { 86 card.querySelectorAll('.module-title-link').forEach(link => { 87 if (link.href.includes('/marketplace')) { 88 // Update the href 89 link.href = link.href.replace('/marketplace', '/products/product-catalog'); 90 91 // Update the inner HTML 92 link.innerHTML = `
93 <span class="margin-right-5 fis-text-green display-block"></span> 94 Browse all products 95 <svg class="fis-icon fis-icon-arrow fis--green"> 96 <title></title> 97 <use xlink:href="#fis-icon-arrow"></use> 98 </svg> 99 `; 100 } 101 }); 102 }); 103 } 104 105 106 if (primaryTarget || fallbackTarget) { 107 const target = primaryTarget || fallbackTarget; 108 const searchString = window.location.search; 109 if (!document.getElementById('products-overview-cta')){ 110 if (searchString.includes('loc=specs')){ 111 target.insertAdjacentHTML('beforebegin', markup); 112 const newCTAElement = document.getElementById('products-page-cta'); 113 if(newCTAElement){ 114 newCTAElement.setAttribute('style','display:none'); 115 newCTAElement.classList.add('direct-link'); 116 } 117 } else { 118 target.insertAdjacentHTML('beforebegin', markup); 119 } 120 121 } 122 123 124 // Modify "Go to marketplace" link if it exists 125 if (primaryTarget) { 126 const links = primaryTarget.querySelectorAll('.cta-box-link a'); 127 links.forEach(link => { 128 if (link.textContent.trim() === 'Go to marketplace' || link.textContent.trim() === 'Go to Marketplace' || link.textContent.trim() === 'See all marketplace') { 129 link.textContent = 'View all products'; 130 link.setAttribute('href', '/products/product-catalog'); 131 } 132 }); 133 } 134 135 clearInterval(interval); 136 } else if (++attempts >= maxAttempts) { 137 clearInterval(interval); 138 //console.warn('Target element for markup insertion not found after waiting.'); 139 } 140 }, 200); 141 } 142 143 //ADD THE PRODUCT MAP LINK 144 if (path.startsWith('/products')) { 145 const footerMarkup = `<li><a href="/products/product-map" class="" target=""><span class="fis-text-picton-blue"> </span>Product Map</a></li> 146 <style>.fis-footer-wrapper .fis-copyright .ancillary-nav ul{display:flex;flex-wrap:wrap;justify-content:center}.fis-footer-wrapper .fis-copyright .ancillary-nav ul li{margin-right:10px;margin-bottom:8px}.fis-footer-wrapper .fis-copyright .ancillary-nav ul li:last-child{margin-right:0;}@media(min-width:992px){.fis-footer-wrapper .fis-copyright .ancillary-nav ul li:nth-of-type(7){margin-right: 10px;}}</style>`; 147 const attemptLimit = 25; 148 let attemptAmt = 0; 149 const intervalCheck = setInterval(() => { 150 const targetElement = document.querySelector('.ancillary-nav ul'); // moved inside 151 if (targetElement) { 152 //console.log('Found element and appending to footer'); 153 clearInterval(intervalCheck); // also fix: should be clearInterval, not clear 154 targetElement.insertAdjacentHTML('beforeend', footerMarkup); 155 } else { 156 attemptAmt += 1; 157 //console.log('Waiting for .ancillary-nav. Attempt #: ' + attemptAmt); 158 if (attemptAmt >= attemptLimit){ 159 clearInterval(intervalCheck); 160 //console.log('Interval function timed out'); 161 } 162 } 163 }, 200); 164} 165 166})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.