json
unknown
javascript
10 months ago
36 kB
2
Indexable
Never
(function () { try { var debug = 1; var variation_name = ""; window.megaMenuData = { "des": [ // Men { "id": "eg-men", "featured": { "legend": "Featured", "content": [ { "linkText": "New Arrivals", "linkUrl": "" }, { "linkText": "Best Sellers", "linkUrl": "" }, { "linkText": "Big & Tall", "linkUrl": "" }, { "linkText": "Jacket Finder", "linkUrl": "" }, { "linkText": "Shop by Activity", "linkUrl": "" }, { "linkText": "Shop by Technology", "linkUrl": "" }, ] }, "content": [ { "legend": "Jackets & Vests", "content": [ { "linkText": "Insulated and Down", "linkUrl": "" }, { "linkText": "Rainwear", "linkUrl": "" }, { "linkText": "Ski and Snowboard", "linkUrl": "" }, { "linkText": "Fleece", "linkUrl": "" }, { "linkText": "Softshell", "linkUrl": "" }, { "linkText": "Vests", "linkUrl": "" }, ] }, { "legend": "Tops", "content": [ { "linkText": "Shirts and Polos", "linkUrl": "" }, { "linkText": "Sweatshirts and Hoodies", "linkUrl": "" }, { "linkText": "T-Shirts", "linkUrl": "" } ] }, { "legend": "Bottoms", "content": [ { "linkText": "Ski and Snowboard", "linkUrl": "" }, { "linkText": "Hiking Pants", "linkUrl": "" }, { "linkText": "Rainwear", "linkUrl": "" }, { "linkText": "Shorts", "linkUrl": "" }, { "linkText": "Exofficio Underwear", "linkUrl": "" } ] }, { "legend": "Accessories", "content": [ { "linkText": "Hats, Caps and Beanies", "linkUrl": "" }, { "linkText": "Gloves and Mitts", "linkUrl": "" }, { "linkText": "Ski and Snowboard", "linkUrl": "" }, { "linkText": "Fleece", "linkUrl": "" }, { "linkText": "Softshell", "linkUrl": "" }, { "linkText": "Vests", "linkUrl": "" }, ] }, { "legend": "Find Your Fit", "content": [] }, ] }, // Women { "id": "eg-women", "featured": { "legend": "Featured", "content": [ { "linkText": "New Arrivals", "linkUrl": "" }, { "linkText": "Best Sellers", "linkUrl": "" }, { "linkText": "Plus Size", "linkUrl": "" }, { "linkText": "Jacket Finder", "linkUrl": "" }, { "linkText": "Shop by Activity", "linkUrl": "" }, { "linkText": "Shop by Technology", "linkUrl": "" }, ] }, "content": [ { "legend": "Jackets & Vests", "content": [ { "linkText": "Insulated and Down", "linkUrl": "" }, { "linkText": "Rainwear", "linkUrl": "" }, { "linkText": "Ski and Snowboard", "linkUrl": "" }, { "linkText": "Fleece", "linkUrl": "" }, { "linkText": "Softshell", "linkUrl": "" }, { "linkText": "Vests", "linkUrl": "" }, ] }, { "legend": "Tops", "content": [ { "linkText": "Shirts and Polos", "linkUrl": "" }, { "linkText": "Sweatshirts and Sweaters", "linkUrl": "" }, { "linkText": "T-Shirts and Tank Tops", "linkUrl": "" } ] }, { "legend": "Bottoms", "content": [ { "linkText": "Ski and Snowboard", "linkUrl": "" }, { "linkText": "Hiking Pants", "linkUrl": "" }, { "linkText": "Rainwear", "linkUrl": "" }, { "linkText": "Shorts", "linkUrl": "" }, { "linkText": "Activewear", "linkUrl": "" }, { "linkText": "Exofficio Underwear", "linkUrl": "" } ] }, { "legend": "Accessories", "content": [ { "linkText": "Hats, Caps and Beanies", "linkUrl": "" }, { "linkText": "Gloves and Mitts", "linkUrl": "" } ] }, { "legend": "Find Your Fit", "content": [] }, ] }, // Equipment { "id": "eg-Equipment", "featured": { "legend": "Featured", "content": [ { "linkText": "New Arrivals", "linkUrl": "" }, { "linkText": "Best Sellers", "linkUrl": "" }, { "linkText": "Sleeping Bag Finder", "linkUrl": "" }, { "linkText": "Shop by Activity", "linkUrl": "" } ] }, "content": [ { "legend": "Tents", "content": [ { "linkText": "1 Person", "linkUrl": "" }, { "linkText": "2 Person", "linkUrl": "" }, { "linkText": "3 Person", "linkUrl": "" }, { "linkText": "4 Person", "linkUrl": "" }, { "linkText": "5 Person", "linkUrl": "" }, { "linkText": "6+ Person", "linkUrl": "" }, { "linkText": "Foot Prints", "linkUrl": "" }, ] }, { "legend": "Sleeping Bags", "content": [ { "linkText": "Down Bags", "linkUrl": "" }, { "linkText": "Synthertic", "linkUrl": "" }, { "linkText": "Camping", "linkUrl": "" } , { "linkText": "Backpacking", "linkUrl": "" } , { "linkText": "Ultralight", "linkUrl": "" } , { "linkText": "Mountaineering", "linkUrl": "" }, { "linkText": "L3 Accessories Link", "linkUrl": "" } , { "linkText": "650 Sleeping Bags", "linkUrl": "" } ] }, { "legend": "Water Bottle", "content": [] }, { "legend": "", "content": [] }, { "legend": "Take the Quiz", "content": [] } ] }, // kids { "id": "eg-Kids", "featured": { "legend": "Featured", "content": [ { "linkText": "New Arrivals", "linkUrl": "" }, { "linkText": "Best Sellers", "linkUrl": "" } ] }, "content": [ { "legend": "Boys", "content": [ { "linkText": "Jackets", "linkUrl": "" }, { "linkText": "Bottoms", "linkUrl": "" } ] }, { "legend": "Girls", "content": [ { "linkText": "Jackets", "linkUrl": "" }, { "linkText": "Bottoms", "linkUrl": "" } ] }, { "legend": "Equipment", "content": [ { "linkText": "Sleeping Bags", "linkUrl": "" } ] }, { "legend": "", "content": [] }, { "legend": "Take the Quiz", "content": [] } ] }, // Sale { "id": "eg-Sale", "featured": { "legend": "Featured", "content": [ { "linkText": "New Arrivals", "linkUrl": "" }, { "linkText": "Best Sellers", "linkUrl": "" } ] }, "content": [ { "legend": "Men", "content": [ { "linkText": "Jackets and Vests", "linkUrl": "" }, { "linkText": "Tops", "linkUrl": "" }, { "linkText": "Bottoms", "linkUrl": "" }, { "linkText": "Accessories", "linkUrl": "" } ] }, { "legend": "Women", "content": [ { "linkText": "Jackets and Vests", "linkUrl": "" }, { "linkText": "Tops", "linkUrl": "" }, { "linkText": "Bottoms", "linkUrl": "" }, { "linkText": "Accessories", "linkUrl": "" } ] }, { "legend": "Equipment", "content": [ { "linkText": "Tents", "linkUrl": "" }, { "linkText": "Sleeping Bags", "linkUrl": "" } ] }, { "legend": "Kids", "content": [ { "linkText": "Boys", "linkUrl": "" }, { "linkText": "Girls", "linkUrl": "" } ] }, { "legend": "Find Your Fit", "content": [] } ] }, // Holiday { "id": "eg-Holiday", "featured": { "legend": "Featured", "content": [ { "linkText": "Gifts Under $100", "linkUrl": "" }, { "linkText": "Gifts Under $300", "linkUrl": "" }, { "linkText": "Gifts Under $500", "linkUrl": "" }, { "linkText": "Holiday Gift Guide", "linkUrl": "" } ] }, "content": [ { "legend": "", "content": [] }, { "legend": "", "content": [] }, { "legend": "", "content": [] }, { "legend": "", "content": [] }, { "legend": "", "content": [] } ] }, ] } function waitForElement(selector, trigger, delayInterval, delayTimeout) { var interval = setInterval(function () { if ( document && document.querySelector(selector) && document.querySelectorAll(selector).length > 0 ) { clearInterval(interval); trigger(); } }, delayInterval); setTimeout(function () { clearInterval(interval); }, delayTimeout); } let resizedHeight = 0; const checkHeaderResizing = (header) => { const resizeObserver = new ResizeObserver(entries => { for (let entry of entries) { if (entry.target === header) { const newHeight = entry.contentRect.height; resizedHeight = newHeight; console.log('Header height:', newHeight, 'pixels'); waitForElement("html body .eg-mega-menu-mob", function () { document.querySelector('html body .eg-mega-menu-mob').style.cssText = `--removedHeight:${resizedHeight}px !important`; }, 50, 15000); } } }); resizeObserver.observe(header); } const egCutIcon = `<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="6 6 20 20" xml:space="preserve"><path d="M17.414,16l4.95,4.95l-1.414,1.414L16,17.414l-4.95,4.95L9.636,20.95l4.95-4.95l-4.95-4.95 l1.414-1.414l4.95,4.95l4.95-4.95l1.414,1.414L17.414,16z" fill="#000000"></path></svg>`; const egCarrot = `<svg role="img" class="icon svg-icon arrow-down eg-carrot" width="10" height="6" aria-hidden="true" tabindex="-1"> <title>icon</title> <desc>icon</desc> <use role="img" xlink:href="#arrow-down" alt="icon"></use> </svg>`; const genDesMegaMenus = () => { const megaMenuData = window.megaMenuData.des; const html = megaMenuData.reduce(function (td, crrD) { const id = crrD.id; const featuredContentsHtml = genDesContentsHTML(crrD.featured.content); const featuredHTML = ` <ul class="eg-mega_sidebar"> <li class="eg-mega_sidebar-legend">Featured</li> ${featuredContentsHtml} </ul> `; // megaMenu right side content html const rightSidecontents = crrD.content.reduce(function (trd, crd) { const rightSidecontentHTML = genDesContentsHTML(crd.content); return trd += ` <ul class="eg-mega_content-card"> <li class="eg-mega_content-card-legend"><a>${crd.legend}</a></li> ${rightSidecontentHTML} </ul> `; }, ''); return td += ` <div class="eg-mega-menu-des" id="${id}"> <!-- sidebar --> ${featuredHTML} <!-- content --> <div class="eg-mega_content-container"> ${rightSidecontents} </div> </div> `; }, ''); return html; } function genDesContentsHTML(content) { const contentHTML = content.reduce(function (tf, crrf) { return tf += `<li class="eg-mega-sidebar-link-item"><a href="${crrf.linkUrl}">${crrf.linkText}</a></li>`; }, ''); return contentHTML; } const megaMenuHTMLMob = ` <div class="eg-mega-menu-mob"> <div class="eg-mega-menu-mob-container"> <!-- header --> <div class="eg-mega-menu-mob_header"> <!-- back cta --> <span class="eg-mob_header-bck-cta"><svg role="img" class="icon svg-icon arrow-down eg-carrot" width="10" height="6" aria-hidden="true" tabindex="-1"> <title>icon</title> <desc>icon</desc> <use role="img" xlink:href="#arrow-down" alt="icon"></use> </svg></span> <!-- title --> <span class="eg-mob_header-title">Main Menu</span> <!-- cut cta --> <span class="eg-mob_header-cut"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="6 6 20 20" xml:space="preserve"><path d="M17.414,16l4.95,4.95l-1.414,1.414L16,17.414l-4.95,4.95L9.636,20.95l4.95-4.95l-4.95-4.95 l1.414-1.414l4.95,4.95l4.95-4.95l1.414,1.414L17.414,16z" fill="#000000"></path></svg></span> </div> <ul class="eg-mega-mob_content"> <li class="eg-mega-mob_content-item"> <span class="eg-item-text">Men</span> <span class="eg-item-forward"> <svg role="img" class="icon svg-icon arrow-down eg-carrot" width="10" height="6" aria-hidden="true" tabindex="-1"> <title>icon</title> <desc>icon</desc> <use role="img" xlink:href="#arrow-down" alt="icon"></use> </svg> </span> </li> <li class="eg-mega-mob_content-item"> <span class="eg-item-text">Women</span> <span class="eg-item-forward"> <svg role="img" class="icon svg-icon arrow-down eg-carrot" width="10" height="6" aria-hidden="true" tabindex="-1"> <title>icon</title> <desc>icon</desc> <use role="img" xlink:href="#arrow-down" alt="icon"></use> </svg> </span> </li><li class="eg-mega-mob_content-item"> <span class="eg-item-text">Equipment</span> <span class="eg-item-forward"> <svg role="img" class="icon svg-icon arrow-down eg-carrot" width="10" height="6" aria-hidden="true" tabindex="-1"> <title>icon</title> <desc>icon</desc> <use role="img" xlink:href="#arrow-down" alt="icon"></use> </svg> </span> </li><li class="eg-mega-mob_content-item"> <span class="eg-item-text">Kids</span> <span class="eg-item-forward"> <svg role="img" class="icon svg-icon arrow-down eg-carrot" width="10" height="6" aria-hidden="true" tabindex="-1"> <title>icon</title> <desc>icon</desc> <use role="img" xlink:href="#arrow-down" alt="icon"></use> </svg> </span> </li><li class="eg-mega-mob_content-item"> <span class="eg-item-text">Sale</span> <span class="eg-item-forward"> <svg role="img" class="icon svg-icon arrow-down eg-carrot" width="10" height="6" aria-hidden="true" tabindex="-1"> <title>icon</title> <desc>icon</desc> <use role="img" xlink:href="#arrow-down" alt="icon"></use> </svg> </span> </li><li class="eg-mega-mob_content-item"> <span class="eg-item-text">Holiday</span> <span class="eg-item-forward"> <svg role="img" class="icon svg-icon arrow-down eg-carrot" width="10" height="6" aria-hidden="true" tabindex="-1"> <title>icon</title> <desc>icon</desc> <use role="img" xlink:href="#arrow-down" alt="icon"></use> </svg> </span> </li></ul> <ul class="eg-mega-mob_content eg-meg-mob_content-utilities"> <li class="eg-mega-mob_content-item eg-utility-tab"> <span class="eg-item-text">Support</span> <span class="eg-item-forward"> <svg role="img" class="icon svg-icon arrow-down eg-carrot" width="10" height="6" aria-hidden="true" tabindex="-1"> <title>icon</title> <desc>icon</desc> <use role="img" xlink:href="#arrow-down" alt="icon"></use> </svg> </span> </li> <div class="eg-mega-mob_content-item eg-content-item-content"> <a class="eg-utility-tab-link">Frequently Asked Questions</a> <a class="eg-utility-tab-link">Track Orders</a><a class="eg-utility-tab-link">Returns</a><a class="eg-utility-tab-link">Warranty</a><a class="eg-utility-tab-link">Contact Us</a></div><a class="eg-mega-mob_content-item"> <span class="eg-item-text">Track Order</span> </a><a class="eg-mega-mob_content-item"> <span class="eg-item-text">Marmot Rewards</span> </a></ul></div> </div> `; function init() { // desktop megaMenuDesktop(); // mobile megaMenuMob(); } const megaMenuHTMLDes = genDesMegaMenus(); function megaMenuDesktop() { // Target to put mega menu waitForElement("header", function () { const target = document.querySelector("header"); if (!document.querySelector(".eg-mega-menu-des")) { target.insertAdjacentHTML("beforeend", megaMenuHTMLDes); } }, 50, 15000); waitForElement(".header-content", function () { const target = document.querySelector(".header-content"); if (!document.querySelector(".eg-mega-menu-des")) { target.insertAdjacentHTML("beforeend", megaMenuHTMLDes); } }, 50, 15000); waitForElement("html body header .desktop >.nav-link", function () { const linksEls = document.querySelectorAll('html body header .desktop >.nav-link'); const megaMenus = document.querySelectorAll('.eg-mega-menu-des'); ["mouseenter"].forEach(ev => { linksEls.forEach(linkEl => { linkEl.addEventListener(ev, function () { const catNm = this.getAttribute("data-category-name"); if (catNm) { document.body.setAttribute("data-show-menu", catNm); } }); }) }); ["mouseleave"].forEach(ev => { megaMenus.forEach(megamenu => { megamenu.addEventListener(ev, function () { document.body.removeAttribute("data-show-menu"); }); }) }); }, 500, 15000); } function megaMenuMob() { // Target to put mega menu const target = document.querySelector("body"); if (!document.querySelector(".eg-mega-menu-mob")) { target.insertAdjacentHTML("beforeend", megaMenuHTMLMob); waitForElement("header", function () { const target = document.querySelector("header"); checkHeaderResizing(target); }, 50, 15000); waitForElement("#primary_header", function () { const target = document.querySelector("#primary_header"); checkHeaderResizing(target); }, 50, 15000); } } waitForElement('body', init, 50, 15000); } catch (e) { if (debug) console.log(e, "error in Test" + variation_name); } })();