PageSourceSearch

https://www.velotricbike.com/cdn/shop/t/644/assets/custom.js?v=32089439090437921281789470658

js velotricbike.com collected 2026-10-02 05:52:42 UTC 62,467 bytes, 44 lines download raw bytes

1var POPUP_CLASS_BY_NAME={"POWER UNLEASHED":"n2x","Stealth Mode":"n2x",noise:"n2x",comfortable:"n2x_large",comfortable_camo:"n2x_large"},POPUP_CONTENT_BY_PAIR={"discover_m|5 Modes":"<div class='pop-text-content'><div class='pb-20'>Simply select one riding mode: Eco, Trail, Sport, Boost, Auto. Each mode directly corresponds to specific riding scenarios, providing simpler operation and more consistent experience.</div><div class='pb-10'></div></div>","discover_3|5 Modes":"<div class='pop-text-content'><div class='pb-20'>Simply select one riding mode: Eco, Tour, Trail, Sport, Boost. Each mode directly corresponds to specific riding scenarios, providing simpler operation and more consistent experience.</div><div class='pb-10'></div></div>","summit_2|5 Modes":"<div class='pop-text-content'><div class='pb-20'>Simply select one riding mode: Eco, Trail, Sport, Boost, Pulse. Each mode directly corresponds to specific riding scenarios, providing simpler operation and more consistent experience.</div><div class='pb-10'></div></div>","tempo|5 Modes":"<div class='pop-text-content'><div class='pb-20'>Simply select one riding mode: Eco, Trail, Sport, Boost, Pulse. Each mode directly corresponds to specific riding scenarios, providing simpler operation and more consistent experience.</div><div class='pb-10'></div></div>","Gomad|5 Modes":"<div class='pop-text-content'><div class='pb-20'>Simply select one riding mode: Eco, Trail, Sport, Boost, Stealth. Each mode directly corresponds to specific riding scenarios, providing simpler operation and more consistent experience.</div><div class='pb-10'></div></div>","breeze_1|Low":`<div class='pop-text-content'>
2    <div class='pb-20'>
3      <h6>What does 'Low Motor Noise' mean?</h6>
4      <div class="pb-10">Delivering mighty 750W power with industry-leading quietness, Breeze 1 operates at just 58dB - 9x quieter than average Ebike players (68dB).</div>
5      <h6>Why does it matter?</h6>
6      <div>A super quiet motor like Breeze 1\u2019 means two awesome things for you:</div><div>1. Enjoy your ride in peace \u2013 No ear-piercing buzz or rumble. Hear only the sound of nature & your breath \u2013 yeah, that\u2019s how calm it is.</div><div>2. Stay discreet \u2013 When you ride with friends, they\u2019ll think you\u2019re on a regular bike\u2026 because there\u2019s barely any noise to give it away!</div>
7    </div></div>`,"brandEdge|ul":"<div class='pop-text-content'><div class='pb-20'>UL Solutions is a global leader in safety, helping products meet the highest standards worldwide. UL Certification marks are a recognized symbol of trust, proving batteries and electrical systems are tested and safe.</div></div>","fold_1_plus|torqueSensor":"<div class='pop-text-content'><div class='pb-20'>Torque Mode gives you smooth, responsive control \u2014 great for trails or climbs.</div></div>","fold_1_plus|cadenceSensor":"<div class='pop-text-content'><div class='pb-20'>Cadence Mode provides constant support with light pedaling for cruising.</div></div>","gomad|free_gift":`<div class="pop-text-content"><h3 class="h6 text-center">Velotric Gift Box (worth $139)</h3><img src="https://cdn.shopify.com/s/files/1/0599/2094/1239/files/gomad-freegift.webp?v=1775543708" style="width:100%;" />
8      <div class="donate-content grid-content">
9          <div>\u2460 Reusable Water Bottle</div>
10          <div>\u2461 Velotric Cap</div>
11          <div>\u2462 Wool Socks</div>
12          <div>\u2463 Sticker Pack</div>
13          <div>\u2464 Ride Log Calendar</div>
14          <div>\u2465 Velotric Keychain</div>
15    </div></div>`,"tempo|free_gift":`<div class="pop-text-content"><h3 class="h6 text-center">Velotric Gift Box (worth $139)</h3><img src="https://cdn.shopify.com/s/files/1/0599/2094/1239/files/velotric_tempo_gift_box.webp?v=1772274492" style="width:100%;" />
16      <div class="donate-content grid-content">
17          <div>\u2460 Reusable Water Bottle</div>
18          <div>\u2461 Velotric Cap</div>
19          <div>\u2462 Wool Socks</div>
20          <div>\u2463 Sticker Pack</div>
21          <div>\u2464 Ride Log Calendar</div>
22          <div>\u2465 Velotric Keychain</div>
23    </div></div>`,"folding_pillar|ComfortMax":`<div class='pop-text-content'>
24    <div class='pb-20'>
25      <div>ComfortMax\u2122 combines a rear-tilted seat tube that absorbs bumps, an optimized golden-ratio frame for
26                <strong>upright posture</strong>, and a <strong>
26400mm ultra-low step-through</strong> for effortless mounting. With <strong>60mm travel suspension
27                and wide tires</strong> to soak up vibrations, every trip feels balanced and fatigue-free\u2014even on longer rides. </div><div><small>*Selected features are exclusively available on the Fold 1 Plus model.</small></div>
28    </div></div>`,"folding_pillar|Adaptive Power":`<div class='pop-text-content'>
29    <div class='pb-20'>
30      <div>With a 750W motor (1100W peak), 75Nm torque, and <strong>SensorSwap\u2122</strong> technology, adjust power delivery in real
31                time, with instant <strong>torque on hills</strong> and smooth <strong>cadence on flats</strong>. A 48V 13Ah <strong>IPX7 battery</strong> and <strong>IPX6-rated
32                frame</strong> keep you rolling up to <strong>68 miles</strong>, rain or shine, with stormproof reliability every ride. </div><div><small>*Selected features are exclusively available on the Fold 1 Plus model.</small></div>
33    </div></div>`,"folding_pillar|Smarter Folding":`<div class='pop-text-content'>
34    <div class='pb-20'>
35      <div>A <strong>3-step folding</strong> system and 3-minute tool-free assembly shrink the bike to a compact 37.8" x 19.7" x
36                33.5" footprint\u2014<strong>30% smaller than standard Ebikes</strong>. At just 62 lbs yet rated for a <strong>450-lb payload</strong>, it
37                delivers true grab-and-go versatility without sacrificing strength, whether you\u2019re storing, traveling,
38                or commuting daily. </div><div><small>*Selected features are exclusively available on the Fold 1 Plus model.</small></div>
39    </div></div>`},POPUP_CONTENT_BY_NAME={"5 Levels":"<div class='pop-text-content'><div class='pb-20'>Choose from 5 acceleration curves across Eco, Trail, and Boost modes, each with 5 pedal assist levels on the control panel or in the Velotric app. Adjust speed and power to match your ride\u2014whether for efficiency, balance, or max performance.</div><div class='pb-10'></div></div>","Battery IPX7":"<div class='pop-text-content'><div class='pb-20'>IPX7 Waterproof Battery, IPX6 Waterproof Bike for all-weather riding</div></div>",all:'<div class="pop-text-content"><h3 class="pb-15 text-center">VELOTRIC</h3><div class="pb-15">Notice: Due to the implementation of new Tariffs, pricing on select models may increase starting <strong>April 15th, 2025</strong>. This decision is necessary to ensure that we can continue to provide the high-quality Ebikes you love, while meeting the new tariffs. You can still enjoy current prices if you purchase before April 15th. Don\u2019t miss your chance\u2014lock in the best deal today!</div><div class="pb-15"></div></div>',"POWER UNLEASHED":`<div class="pop-text-content"><img src="https://cdn.shopify.com/s/files/1/0599/2094/1239/files/Group_48101931_1.svg?v=1747220566"/><div class="donate-content">
40  </div></div>`,"Stealth Mode":"<div class='pop-text-content'><div>Stealth Mode is co-developed with <a href='https://www.velotricbike.com/blogs/story-landing/joltbike-design-house-outdoors-ebike-brand' target='_blank'>JoltBike Design House</a>.</div></div>",comfortable:`<div class="pop-text-content"><img class="mb-down--hide" src="https://cdn.shopify.com/s/files/1/0599/2094/1239/files/image_2461d594-4477-409e-ae58-f690e6aba084.webp?v=1747217457"/><img class="mb-up--hide" src="https://cdn.shopify.com/s/files/1/0599/2094/1239/files/frame_48101932.webp?v=1747217877"/><div class="donate-content">
41  </div></div>`,comfortable_camo:`<div class="pop-text-content"><img class="mb-down--hide" src="https://cdn.shopify.com/s/files/1/0599/2094/1239/files/comfortmax-camo-pc.webp?v=1750910447"/><img class="mb-up--hide" src="https://cdn.shopify.com/s/files/1/0599/2094/1239/files/comfortmax-camo-mb.webp?v=1750910447"/><div class="donate-content">
42  </div></div>`,noise:`<div class="pop-text-content"><img src="https://cdn.shopify.com/s/files/1/0599/2094/1239/files/quiet-movement-2.webp?v=1750925892"/><div class="donate-content">
43  </div></div>`,Customizable:"<div class='pop-text-content'><div class='pb-20'>Choose from 15 acceleration curves across Eco, Trail, and Boost modes, each with 5 pedal assist levels on the control panel or in the Velotric app. Adjust speed and power to match your ride\u2014whether for efficiency, balance, or max performance.</div><div class='pb-10'></div></div>"},POPUP_CONTENT_BY_CONTENT={key:'<img class="pop-mb-hide" src="https://cdn.shopify.com/s/files/1/0599/2094/1239/files/20240228-183235.jpg?v=1709116378" width="910" height="auto" /><img class="pop-mb-show" src="https://cdn.shopify.com/s/files/1/0599/2094/1239/files/20240228-183235.jpg?v=1709116378" width="393" height="auto" /><div class="pop-text-content"><div><p>You can locate the number in the area indicated in the picture above. The number begins with VL CT or KL, and 
43you only need to type in the numerical digits.</p></div></div>',doublepoints:'<div class="pop-text-content" style="background-color: #A4E4FF;margin:0;max-width: 100%;"><img src="https://cdn.shopify.com/s/files/1/0599/2094/1239/files/frame_48101405.webp?v=1718958091" /></div>',fold_1:'<div class="pop-text-content back-in-stock"><h3>Velotric Fold 1 E-Bike</h3><div class="pb-15">Sign up to receive a notification when this item is back in stock and available to ship.</div><div class="pb-15"><input type="email" placeholder="Email" class="back_in_stock form-control" /></div><button type="submit" class="btn btn-success btn-lg col-xs-12" onclick="notifysubmit()">Notify Me When It Is In Stock</button><div id="completed_message" class="completed_message alert alert-success" style="display: none;">You are in! We will let you know when this item is back in stock and available to ship.</div></div>'};function openPagePop(content,name){if(window.VelotricApp&&window.VelotricApp.popup){const eventTrigger=window.event?.target?.closest?.('[onclick*="openPagePop"]');window.VelotricApp.popup.open({content,name,trigger:eventTrigger||document.activeElement});return}console.warn("[openPagePop] App.popup is not ready yet",content,name)}function onVelotricReady(callback){if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",callback,{once:!0});return}callback()}function slideElement(element,shouldExpand,duration){if(!element)return;var animationDuration=typeof duration=="number"?duration:300;element._velotricSlideAnimation&&element._velotricSlideAnimation.cancel();var currentDisplay=window.getComputedStyle(element).display;!shouldExpand&&currentDisplay!=="none"&&(element.dataset.velotricDisplay=currentDisplay),shouldExpand&&currentDisplay==="none"&&(element.style.display=element.dataset.velotricDisplay||"grid");var startHeight=element.getBoundingClientRect().height,endHeight=shouldExpand?element.scrollHeight:0;function finish(){element.style.removeProperty("height"),element.style.removeProperty("overflow"),shouldExpand||(element.style.display="none"),element._velotricSlideAnimation=null}if(!element.animate||animationDuration<=0||startHeight===endHeight){finish();return}element.style.overflow="hidden";var animation=element.animate([{height:startHeight+"px"},{height:endHeight+"px"}],{duration:animationDuration,easing:"ease"});element._velotricSlideAnimation=animation,animation.onfinish=finish,animation.oncancel=function(){element.style.removeProperty("height"),element.style.removeProperty("overflow")}}function slideUp(element,duration){slideElement(element,!1,duration)}function slideDown(element,duration){slideElement(element,!0,duration)}function slideToggle(element,duration){if(element){var isHidden=window.getComputedStyle(element).display==="none"||element.getBoundingClientRect().height===0;slideElement(element,isHidden,duration)}}window.VelotricDom=Object.assign(window.VelotricDom||{},{ready:onVelotricReady,slideUp,slideDown,slideToggle}),document.addEventListener("click",function(event){var expandButton=event.target.closest("#rebuy-expandButton");if(expandButton){var controlledId=expandButton.getAttribute("aria-controls"),addonItems=controlledId?document.getElementById(controlledId):null;if(!addonItems)return;var isCollapsed=addonItems.classList.contains("rebuy-collapse");if(isCollapsed){var prevScrollTop=Number(expandButton.dataset.scrollTop);document.body.classList.add("rebuy-lock-scroll"),addonItems.classList.remove("rebuy-collapse"),Number.isFinite(prevScrollTop)&&window.scrollTo(0,prevScrollTop),requestAnimationFrame(function(){document.body.classList.remove("rebuy-lock-scroll")})}else expandButton.dataset.scrollTop=String(window.scrollY),addonItems.classList.add("rebuy-collapse");expandButton.textContent=addonItems.classList.contains("rebuy-collapse")?"Show Less":"Show More",expandButton.setAttribute("aria-expanded",String(addonItems.classList.contains("rebuy-collapse")));var _window_dataLayer,breadcrumbElement=document.querySelector(".breadcrumbs .breadcrumb__link");const breadcrumb=breadcrumbElement?breadcrumbElement.textContent.trim():"",buttonName=expandButton.textContent.trim(),parameters={page_name:"Product Page_"+breadcrumb,button_name:buttonName,action:window.open};(_window_dataLayer=window.dataLayer)===null||_window_dataLayer===void 0||_window_dataLayer.push({event:"ga4Event",event_name:"click_acc_btn",event_parameters:parameters});return}var tooltip=event.target.closest(".acc-tooltip");if(tooltip){event.preventDefault(),event.stopPropagation(),document.querySelectorAll(".acc-tooltip").forEach(function(item){item!==tooltip&&item.classList.remove("is-active")}),tooltip.classList.toggle("is-active");return}var tabButton=event.target.closest(".rebuy-wrap .acc-offer-tabs .tab-button");if(tabButton){var wrap=tabButton.closest(".rebuy-wrap"),targetId=tabButton.dataset.accTabTarget;if(!wrap||!targetId)return;wrap.querySelectorAll(".acc-offer-tabs .tab-button").forEach(function(button){button.classList.remove("active"),button.setAttribute("aria-selected","false")}),tabButton.classList.add("active"),tabButton.setAttribute("aria-selected","true"),wrap.querySelectorAll(".tab-content").forEach(function(content){content.classList.remove("active")});var targetContent=wrap.querySelector('[id="'+CSS.escape(targetId)+'"]');targetContent&&targetContent.classList.add("active");return}document.querySelectorAll(".acc-tooltip").forEach(function(item){item.classList.remove("is-active")});var footerLink=event.target.closest(".rebuy-footer a");
43if(footerLink){var _window_dataLayer,footerBreadcrumbElement=document.querySelector(".breadcrumbs .breadcrumb__link");const breadcrumb=footerBreadcrumbElement?footerBreadcrumbElement.textContent.trim():"",buttonName=footerLink.textContent.trim(),parameters={page_name:"Product Page_"+breadcrumb,button_name:buttonName};(_window_dataLayer=window.dataLayer)===null||_window_dataLayer===void 0||_window_dataLayer.push({event:"ga4Event",event_name:"click_acc_btn",event_parameters:parameters})}}),document.addEventListener("keydown",function(event){var tooltip=event.target.closest(".acc-tooltip");tooltip&&(event.key==="Enter"||event.key===" ")&&(event.preventDefault(),tooltip.click())});function updateStickyAtcPrice(){const priceEl=document.querySelector(".sticky-atc__inner [data-sticky-price]");if(!priceEl)return;const basePrice=Number(priceEl.dataset.price||0),accPrice=Number(priceEl.dataset.accPrice||0),finalPrice=basePrice+accPrice;console.log(basePrice),console.log(accPrice),console.log(finalPrice);const displayPrice=(finalPrice/100).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2});priceEl.innerHTML="$"+displayPrice}function isThreeOrMoreChecked(checkboxes){let checkedCount=0,totalValue=0,totalPrice=0;for(const checkbox of checkboxes)if(checkbox.checked){checkedCount++;var savedP=parseFloat(checkbox.closest(".acc-addon__item").dataset.saved),originP=parseFloat(checkbox.closest(".acc-addon__item").dataset.price);totalValue+=savedP,totalPrice+=originP}return totalValue=totalValue.toFixed(2),totalPrice=totalPrice.toFixed(2),[checkedCount,totalValue,totalPrice]}function parseAddonPrice(price){const parsedPrice=parseFloat(String(price||"").replace(/[^0-9.-]/g,""));return isNaN(parsedPrice)?0:parsedPrice}function getAddonItemPrice(item){if(!item)return 0;const select=item.querySelector("select"),selectedOption=select&&select.selectedOptions?select.selectedOptions[0]:null,selectedPrice=selectedOption?selectedOption.dataset.price:null;return parseAddonPrice(selectedPrice||item.dataset.price)}function getOfferCheckedData(container,discountRate){let checkedCount=0,savedValue=0,totalPrice=0;return container.querySelectorAll("#offer input.acc-checkbox:checked").forEach(function(checkbox){const itemPrice=getAddonItemPrice(checkbox.closest(".acc-addon__item"));checkedCount++,totalPrice+=itemPrice,savedValue+=itemPrice*discountRate}),[checkedCount,savedValue.toFixed(2),totalPrice.toFixed(2)]}function getCheckedAddonsTotal(container,selector){let totalPrice=0;return container.querySelectorAll(selector).forEach(function(checkbox){totalPrice+=getAddonItemPrice(checkbox.closest(".acc-addon__item"))}),totalPrice}document.addEventListener("change",function(event){const checkbox=event.target.closest('.rebuy-container #offer input[type="checkbox"], .rebuy-container #bundle-offer input[type="checkbox"]');if(!checkbox)return;const container=checkbox.closest(".rebuy-container");if(!container)return;const savedText=container.querySelector(".saved_text"),selectedNum=container.querySelector(".selected-num"),salePrices=container.querySelectorAll("#offer .sale_price"),offerPrices=container.querySelectorAll("#offer .offer_price"),offerOriginPrices=container.querySelectorAll("#offer .offer-origin_price"),offerBundle=checkbox.closest(".offer-bundle"),numberedItem=container.querySelector("#offer .acc-addon__item[data-num]"),num=Number(numberedItem?numberedItem.dataset.num:0),sales=Number(savedText?savedText.dataset.sale:0),discountRate=sales>0?sales/100:0,data=getOfferCheckedData(container,discountRate);var totalPrice=data[2]*1,bundleTotalPrice=getCheckedAddonsTotal(container,"#bundle-offer input.acc-checkbox:checked");offerBundle&&offerBundle.classList.toggle("active",checkbox.checked),num>0&&(selectedNum&&(selectedNum.textContent=data[0]),data[0]<num?(savedText&&(savedText.textContent=data[0]==0?`Add ${num-data[0]}, save ${sales}%`:`Add ${num-data[0]} more, save ${sales}%`),salePrices.forEach(function(salePrice){salePrice.classList.add("hidden")}),offerPrices.forEach(function(offerPrice){offerPrice.classList.remove("del")}
43),offerOriginPrices.forEach(function(offerOriginPrice){offerOriginPrice.classList.remove("hidden")})):(savedText&&(savedText.textContent=`Order Now & Save $${data[1]}`),salePrices.forEach(function(salePrice){salePrice.classList.remove("hidden")}),offerPrices.forEach(function(offerPrice){offerPrice.classList.add("del")}),offerOriginPrices.forEach(function(offerOriginPrice){offerOriginPrice.classList.add("hidden")}),totalPrice=totalPrice*(1-discountRate))),totalPrice+=bundleTotalPrice;const addAccEl=document.querySelector(".sticky-atc__inner .add-ons-num"),addOnsCount=container.querySelectorAll("#offer input.acc-checkbox:checked, #bundle-offer input.acc-checkbox:checked").length;addAccEl&&(addOnsCount>0?addAccEl.innerHTML=" + Add-ons \xD7 "+addOnsCount:addAccEl.innerHTML="");const stickyPriceEl=document.querySelector(".sticky-atc__inner [data-sticky-price]");if(stickyPriceEl){const accPriceCents=totalPrice*100;stickyPriceEl.dataset.accPrice=accPriceCents,updateStickyAtcPrice()}}),document.addEventListener("click",function(event){var card=event.target.closest(".offer-bundle");if(card){var checkbox=card.querySelector(".acc-checkbox");if(checkbox&&!(event.target.matches("select")||event.target.closest("select")||event.target.closest(".acc-addon__item-learn-more"))){if(event.target.matches(".acc-checkbox")){card.classList.toggle("active",checkbox.checked);return}checkbox.click()}}}),document.addEventListener("change",function(event){var select=event.target.closest(".rebuy-container #offer .acc-addon__items .acc-select, .rebuy-container #bundle-offer .acc-addon__items .acc-select, .rebuy-container #free .acc-addon__items .acc-select");if(select){var selectedOption=select.selectedOptions?select.selectedOptions[0]:null,selectedPrice=selectedOption?selectedOption.dataset.price:null,selectedImage=selectedOption?selectedOption.dataset.image:null,selectedImageSrcset=selectedOption?selectedOption.dataset.imageSrcset:null,addonItem=select.closest(".acc-addon__item");if(addonItem){if(selectedImage){var image=addonItem.querySelector(".acc-addon__item-image img");image&&(image.src=selectedImage,selectedImageSrcset&&(image.srcset=selectedImageSrcset))}selectedPrice&&(addonItem.dataset.price=String(parseAddonPrice(selectedPrice)));var checkbox=addonItem.querySelector(".acc-checkbox");checkbox&&checkbox.checked&&checkbox.dispatchEvent(new Event("change",{bubbles:!0}))}}});var quickViewSourceCard=null;document.addEventListener("click",function(event){var quickViewButton=event.target.closest(".rebuy-container [data-product-card-quick-view-button]");quickViewButton&&(quickViewSourceCard=quickViewButton.closest("product-card"))}),document.addEventListener("click",function(event){var addAccessoryButton=event.target.closest(".quick-view__content .add-acc-btn");if(!addAccessoryButton)return;const productInfo=addAccessoryButton.closest(".product__info"),form=productInfo?productInfo.querySelector(".product-form-wrap form"):null;if(form){var productIdInput=form.querySelector('input[name="product-id"]'),variantIdInput=form.querySelector('input[name="id"]'),productId=Number(productIdInput?productIdInput.value:0),variantId=variantIdInput?variantIdInput.value:"",targetCard=quickViewSourceCard;if((!targetCard||Number(targetCard.dataset.id)!==productId)&&(targetCard=Array.from(document.querySelectorAll(".rebuy-container #offer .acc-addon__items product-card, .rebuy-container #bundle-offer .acc-addon__items product-card")).find(function(card){return Number(card.dataset.id)===productId})||null),targetCard){var selectElement=targetCard.querySelector("select");selectElement&&selectElement.querySelector('option[value="'+CSS.escape(variantId)+'"]')&&(selectElement.value=variantId,selectElement.dispatchEvent(new Event("change",{bubbles:!0})));var checkbox=targetCard.querySelector('input[type="checkbox"]');checkbox&&(checkbox.checked=!0,checkbox.dispatchEvent(new Event("change",{bubbles:!0})))}quickViewSourceCard=null;var bodyOverlay=document.querySelector(".body-overlay");bodyOverlay&&bodyOverlay.click()}});function openTab(evt,tabName,wrapClass){var i,tabcontent,tabbuttons,wrap=document.querySelector("."+wrapClass);for(tabcontent=wrap.querySelectorAll(".tab-content"),i=0;i<tabcontent.length;
43i++)tabcontent[i].classList.remove("active");for(tabbuttons=wrap.querySelectorAll(".tab-button"),i=0;i<tabbuttons.length;i++)tabbuttons[i].className=tabbuttons[i].className.replace(" active","");wrap.querySelector("#"+tabName).classList.add("active"),evt.currentTarget.className+=" active"}function updateGridProductSwatch(swatch){var meta=swatch.closest(".grid-product__meta"),content=swatch.closest(".grid-product__content"),source=swatch.previousElementSibling;if(!(!meta||!content||!source||!source.classList.contains("info_hidden"))){meta.querySelectorAll(".color-swatch-select-parent").forEach(function(item){item.classList.toggle("selected",item===swatch)});var sourceLink=source.querySelector(".grid-product__link"),sourceImage=source.querySelector(".imag_wrap"),sourcePrice=source.querySelector(".cur_p"),sourceSaveLabel=source.querySelector(".image-price-label"),href=sourceLink?sourceLink.getAttribute("href"):null;if(href){var itemLink=content.querySelector(".grid-product__link.item_link");itemLink&&itemLink.setAttribute("href",href),content.querySelectorAll(".btn").forEach(function(button){button.setAttribute("href",href)})}var imageWrap=content.querySelector(".image-wrap.item_img");imageWrap&&sourceImage&&(imageWrap.innerHTML=sourceImage.innerHTML);var saleTag=content.querySelector(".grid-product__tag--sale"),salePrice=content.querySelector(".grid-product__price .sale-price"),originalPrice=content.querySelector(".grid-product__price .grid-product__price--original");if(!(!saleTag&&!salePrice&&!originalPrice)){var saveText=sourceSaveLabel?sourceSaveLabel.textContent.trim():"";if(!saveText){saleTag&&saleTag.classList.add("hidden"),salePrice&&salePrice.classList.add("hidden"),originalPrice&&originalPrice.classList.remove("del");return}if(saleTag&&(saleTag.classList.remove("hidden"),saleTag.textContent=saveText),salePrice&&sourcePrice){salePrice.classList.remove("hidden"),salePrice.textContent=sourcePrice.textContent;var productPrice=sourcePrice.getAttribute("data-product-price");productPrice!==null&&salePrice.setAttribute("data-product-price",productPrice)}originalPrice&&originalPrice.classList.add("del")}}}document.addEventListener("click",function(event){var swatch=event.target.closest(".grid-product__meta .color-swatch-select-parent");swatch&&updateGridProductSwatch(swatch)});function initProduct360Viewer(pane){if(!pane||pane.dataset.viewerInited==="true")return;var viewer=pane.querySelector("[data-product-360-viewer]");if(!viewer)return;var frames=Array.from(pane.querySelectorAll(".product-media-360-frame"));if(!frames.length)return;var state={frameCount:frames.length,frameIndex:0,startX:0,dragging:!1,pointerId:null,threshold:12,loadPromiseMap:{},preloadStarted:!1};function normalizeIndex(index){return(index%state.frameCount+state.frameCount)%state.frameCount}function markFrameLoaded(index){frames[index].dataset.loaded="true"}function isFrameLoaded(index){return frames[index].dataset.loaded==="true"}function activateFrame(index){state.frameIndex=index,frames.forEach(function(frame,frameIndex){frame.classList.toggle("is-active",frameIndex===index)})}function loadFrame(index){var normalized=normalizeIndex(index),frame=frames[normalized];if(isFrameLoaded(normalized))return Promise.resolve(normalized);if(state.loadPromiseMap[normalized])return state.loadPromiseMap[normalized];var frameSrc=frame.dataset.frameSrc;return frameSrc?(state.loadPromiseMap[normalized]=new Promise(function(resolve){var preloader=new Image;preloader.onload=function(){frame.src=frameSrc,markFrameLoaded(normalized),resolve(normalized)},preloader.onerror=function(){resolve(normalized)},preloader.src=frameSrc}).finally(function(){delete state.loadPromiseMap[normalized]}),state.loadPromiseMap[normalized]):(markFrameLoaded(normalized),Promise.resolve(normalized))}function runQueue(indices,concurrency){return indices.length?new Promise(function(resolve){var cursor=0,activeCount=0;function pump(){for(;activeCount<concurrency&&cursor<indices.length;){var frameIndex=indices[cursor];cursor+=1,activeCount+=1,loadFrame(frameIndex).finally(function(){if(activeCount-=1,cursor>=indices.length&&activeCount===0){resolve();return}pump()})}}pump()}):Promise.resolve()}function circularDistance(fromIndex,toIndex){var direct=Math.abs(fromIndex-toIndex);return Math.min(direct,state.frameCount-direct)}
43function findLoadedFallback(targetIndex,direction){for(var step=1;step<state.frameCount;step+=1){var candidate=normalizeIndex(targetIndex-direction*step);if(isFrameLoaded(candidate))return candidate}return state.frameIndex}function startPreload(){if(!(state.preloadStarted||state.frameCount<2)){state.preloadStarted=!0;for(var preloadIndexMap={},i=0;i<state.frameCount;i+=1)if(i%2!==0){var index=normalizeIndex(i);index!==state.frameIndex&&(preloadIndexMap[index]=!0)}var uniqueTargets=Object.keys(preloadIndexMap).map(function(key){return parseInt(key,10)});uniqueTargets.sort(function(a,b){return circularDistance(state.frameIndex,a)-circularDistance(state.frameIndex,b)}),runQueue(uniqueTargets,4)}}function setFrame(index,direction){var normalized=normalizeIndex(index);if(isFrameLoaded(normalized)){activateFrame(normalized);return}var fallbackIndex=findLoadedFallback(normalized,direction||1);fallbackIndex!==state.frameIndex&&activateFrame(fallbackIndex),loadFrame(normalized).then(function(loadedIndex){activateFrame(loadedIndex)})}function handlePointerMove(event){if(!(!state.dragging||state.pointerId!==null&&event.pointerId!==state.pointerId)){event.cancelable&&event.preventDefault();var deltaX=event.clientX-state.startX;if(!(Math.abs(deltaX)<state.threshold)){var steps=Math.floor(Math.abs(deltaX)/state.threshold),direction=deltaX>0?-1:1;setFrame(state.frameIndex+direction*steps,direction),state.startX=event.clientX}}}function handlePointerUp(event){state.pointerId!==null&&event.pointerId!==state.pointerId||(state.dragging=!1,viewer.classList.remove("is-dragging"),state.pointerId!==null&&viewer.hasPointerCapture&&viewer.hasPointerCapture(state.pointerId)&&viewer.releasePointerCapture(state.pointerId),state.pointerId=null)}viewer.addEventListener("pointerdown",function(event){startPreload(),state.dragging=!0,state.startX=event.clientX,state.pointerId=event.pointerId,viewer.classList.add("is-dragging"),viewer.setPointerCapture&&viewer.setPointerCapture(event.pointerId)}),viewer.addEventListener("pointermove",handlePointerMove),viewer.addEventListener("pointerup",handlePointerUp),viewer.addEventListener("pointercancel",handlePointerUp),viewer.addEventListener("pointerleave",handlePointerUp),startPreload(),pane.dataset.viewerInited="true"}function getCurrentImageSlideIndex(container){var counter=getImageCounter(container),counterIndex=parseInt(counter?counter.textContent.trim():"",10);if(!isNaN(counterIndex)&&counterIndex>0)return counterIndex-1;var activeDot=getMediaDots(container).find(function(dot){return dot.classList.contains("is-primary")});if(activeDot){var activeDotIndex=parseInt(activeDot.dataset.dotIndex,10);if(!isNaN(activeDotIndex))return activeDotIndex}return 0}function getImageCounter(container){return container?container.querySelector(".media-counter-current"):null}function getMediaDots(container){return container?Array.from(container.querySelectorAll(".product-media-carousel_thumbs_wrap [data-carousel-dot], .product-media-carousel-mobile__dots-carousel-container [data-carousel-dot]")):[]}function clearImageRestoreTimer(container){var pendingRestoreTimer=container?container._imageRestoreTimer:null;pendingRestoreTimer&&(clearTimeout(pendingRestoreTimer),container._imageRestoreTimer=null)}function resolveTargetPane(carousel,mode){var resolvedMode=mode,targetPane=carousel.querySelector('[data-media-pane="'+resolvedMode+'"]');return targetPane?{mode:resolvedMode,pane:targetPane}:(resolvedMode="image",{mode:resolvedMode,pane:carousel.querySelector('[data-media-pane="image"]')})}function setPaneVisibility(carousel,targetPane){carousel.querySelectorAll("[data-media-pane]").forEach(function(pane){pane.classList.add("hide")}),targetPane&&targetPane.classList.remove("hide")}function setImageControlVisibility(carousel,mode){carousel.querySelectorAll("[data-image-only-control]").forEach(function(control){var shouldHide=mode!=="image"||control.hasAttribute("data-counter-hidden-control");control.classList.toggle("hide",shouldHide)})}function restoreImageSlideIndex(container,slideIndex){if(!(typeof slideIndex!="number"||slideIndex<0)){var currentIndex=getCurrentImageSlideIndex(container);if(currentIndex!==slideIndex){var allDots=getMediaDots(container),targetIndexText=String(slideIndex),targetDot=allDots.find(function(dot){return(dot.dataset.dotIndex||"")===targetIndexText});!targetDot&&slideIndex===0&&(targetDot=allDots[0]),targetDot&&targetDot.click()}}}function moveImageToFirstSlide(container){var allDots=getMediaDots(container),firstDot=allDots.find(function(dot){return(dot.dataset.dotIndex||"")==="0"});firstDot||(firstDot=allDots[0]),firstDot&&firstDot.click();var counter=getImageCounter(container);counter&&(counter.textContent="1")}function restoreImageStateOnReturn(container,prevMode){clearImageRestoreTimer(container);var restoreTimer=setTimeout(function(){if((container._productMediaMode||"").toString()==="image"){if(prevMode==="360"||prevMode==="video")moveImageToFirstSlide(container);else{var savedImageSlideIndex=container._imageSlideIndex;if(typeof savedImageSlideIndex!="number")return;restoreImageSlideIndex(container,savedImageSlideIndex)}container._imageRestoreTimer=null}},0);container._imageRestoreTimer=restoreTimer}function setProductMediaMode(container,mode){if(container){var carousel=container.querySelector("product-media-carousel");if(carousel){var prevMode=(container._productMediaMode||"image").toString(),target=resolveTargetPane(carou
43sel,mode);mode=target.mode;var targetPane=target.pane;setPaneVisibility(carousel,targetPane),prevMode==="image"&&mode!=="image"&&(container._imageSlideIndex=getCurrentImageSlideIndex(container)),setImageControlVisibility(carousel,mode),mode==="image"?prevMode!=="image"&&restoreImageStateOnReturn(container,prevMode):clearImageRestoreTimer(container),mode==="360"&&initProduct360Viewer(targetPane),carousel.querySelectorAll(".product-media-video video").forEach(function(video){mode!=="video"&&video.pause&&video.pause()}),container._productMediaMode=mode}}}function warmupProduct360Viewers(){document.querySelectorAll('div[data-product-media-container] [data-media-pane="360"]').forEach(function(pane){initProduct360Viewer(pane)})}function scheduleProduct360Warmup(){if(!window.__pdpMedia360WarmupScheduled){if(window.__pdpMedia360WarmupScheduled=!0,window.requestIdleCallback){window.requestIdleCallback(function(){warmupProduct360Viewers()},{timeout:2500});return}setTimeout(function(){warmupProduct360Viewers()},1800)}}function bindProductMediaHandlers(){window.__productMediaHandlersBound||(window.__productMediaHandlersBound=!0,document.addEventListener("click",function(event){var thumbnail=event.target.closest(".product-media-carousel_thumbs_wrap .carousel__slide");if(thumbnail){var thumbnailContainer=thumbnail.closest("div[data-product-media-container]");if(!thumbnailContainer)return;setProductMediaMode(thumbnailContainer,"image");var imageButton=thumbnailContainer.querySelector('.pdp-toggle-image_video .toggle-image_video[data-name="image"]');imageButton&&imageButton.parentElement&&Array.from(imageButton.parentElement.children).forEach(function(button){button.classList.toggle("active",button===imageButton)});return}var mediaButton=event.target.closest(".pdp-toggle-image_video .toggle-image_video");if(mediaButton){var mode=(mediaButton.dataset.name||"").toString(),mediaContainer=mediaButton.closest("div[data-product-media-container]");mediaButton.parentElement&&Array.from(mediaButton.parentElement.children).forEach(function(button){button.classList.toggle("active",button===mediaButton)}),setProductMediaMode(mediaContainer,mode)}}))}scheduleProduct360Warmup(),bindProductMediaHandlers();function updateCartNote(){fetch("/cart/update.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({note:"clickedcallus"})}).then(response=>response.json()).then(data=>{}).catch(error=>{console.error("Failed to update order note:",error)})}const callUsIcon=document.querySelector(".call-us-icon"),callIcon=document.querySelector(".call-icon"),closeIcon=document.querySelector(".call_us_close"),closeIconSvg=document.querySelector(".call_us_close_icon"),callUsDetails=document.querySelector(".call-us-details");callUsIcon&&callUsIcon.addEventListener("click",()=>{const isHidden=callUsDetails.classList.toggle("custom_hidden");callIcon.classList.toggle("custom_hidden",!isHidden),closeIcon.classList.toggle("custom_hidden",isHidden),closeIconSvg.classList.toggle("active",!isHidden),callUsIcon.classList.toggle("active"),localStorage.setItem("called_us","true"),updateCartNote()});function openPhone(){window.location.href="tel:+18885593099",localStorage.setItem("called_us","true"),updateCartNote()}const calledUs=window.localStorage.getItem("called_us")==="true";calledUs&&updateCartNote(),document.addEventListener("submit",function(event){if(typeof window.dataLayer>"u")return;const form=event.target;form.id==="customer_login"&&window.dataLayer.push({event:"login",method:"email"}),form.id==="create_customer"&&window.dataLayer.push({event:"sign_up",method:"email"})},!0);function handleProductVariantChange(e,capturedVariantId){const variantInput=e.target.closest(".product input[data-product-form-variant]");if(!variantInput)return;const variantId=Number(capturedVariantId||variantInput.getAttribute("value")||variantInput.value),variant=window.productVariants?.find(v=>v.id===variantId);if(!variant)return;const productContent=variantInput.closest("product-content")||variantInput.closest(".shopify-section")||document,productId=productContent.querySelector("variant-picker")?.dataset.productId,compareAtPrice=Number(variant.compare_at_price)||0,price=Number(variant.price)||0;
43window.requestAnimationFrame(function(){productContent.querySelectorAll(`[data-image-price-label][data-product-id="${productId}"]`).forEach(function(label){const freeItemValue=Number(label.dataset.freeItemValue)||0,savedAmount=Math.max(compareAtPrice-price,0)+freeItemValue;label.hidden=savedAmount<=0,savedAmount>0&&(label.textContent=`Save $${(savedAmount/100).toLocaleString("en-US",{maximumFractionDigits:2})}`)})});const stickyRoot=document.querySelector(".sticky-atc__inner");if(!stickyRoot)return;if(variant.featured_image?.src){const img=stickyRoot.querySelector(".sticky-atc__image img");img&&(img.src=`${variant.featured_image.src}&width=64`)}const priceEl=stickyRoot.querySelector("[data-sticky-price]");if(priceEl&&(priceEl.dataset.price=variant.price),variant.name.includes("Velotric T1 ST Plus Ebike")){const bundleCard=document.querySelector('.bundle-container product-card[data-id="7306271326391"]');if(bundleCard){const select=bundleCard.querySelector("select");if(select){const targetValue=variant.option1==="Large"?"41772836257975":"41772836225207";select.querySelector(`option[value="${targetValue}"]`)&&(select.value=targetValue,select.dispatchEvent(new Event("change",{bubbles:!0})))}}}if(variant.name.includes("Velotric GoMad Ebike")){const titleEl=stickyRoot.querySelector(".sticky-atc__title-name");titleEl.textContent=variant.options[0]}updateStickyAtcPrice()}document.addEventListener("change",handleProductVariantChange);const mobileVariantFeaturedMediaEarlyState=window.__mobileVariantFeaturedMediaEarlyState;if(mobileVariantFeaturedMediaEarlyState){const missedVariantInput=mobileVariantFeaturedMediaEarlyState.lastVariantInput,missedVariantId=mobileVariantFeaturedMediaEarlyState.lastVariantId;mobileVariantFeaturedMediaEarlyState.ready=!0,mobileVariantFeaturedMediaEarlyState.lastVariantInput=null,mobileVariantFeaturedMediaEarlyState.lastVariantId=null,missedVariantInput?.isConnected&&handleProductVariantChange({target:missedVariantInput},missedVariantId)}document.addEventListener("DOMContentLoaded",function(){if(typeof window.dataLayer>"u")return;const subscribeForms=document.querySelectorAll(".newsletter__form");subscribeForms.length&&subscribeForms.forEach(function(form){const subscribeButton=form.querySelector('button[name="commit"]');subscribeButton&&subscribeButton.addEventListener("click",function(){window.dataLayer.push({event:"newsletter_subscription"})})})}),(function(){const App={init(scope=document){this.initYoutubeReview(scope)},popup:{lastTrigger:null,focusableSelector:'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])',getContent(content,name){return POPUP_CONTENT_BY_PAIR[`${content}|${name}`]||POPUP_CONTENT_BY_NAME[name]||POPUP_CONTENT_BY_CONTENT[content]||""},open({content,name,trigger}){this.lastTrigger=trigger||document.activeElement,this.lastTrigger&&this.lastTrigger!==document.body&&!this.lastTrigger.matches(this.focusableSelector)&&!this.lastTrigger.hasAttribute("tabindex")&&(this.lastTrigger.setAttribute("tabindex","-1"),this.lastTrigger.dataset.popupRestoreTabindex="true");const root=document.querySelector("#custom_popup");if(!root)return;const popup=root.querySelector(".popup"),contentEl=root.querySelector(".popup__content");if(popup&&(popup.classList.remove("n2x","n2x_large"),POPUP_CLASS_BY_NAME[name]&&popup.classList.add(POPUP_CLASS_BY_NAME[name])),contentEl&&(contentEl.innerHTML=this.getContent(content,name)),content==="compare"){this.handleCompare(name);const comparePopup=document.querySelector("#compare_popup");comparePopup?.classList.add("active"),this.openDialog(comparePopup);return}root.classList.add("active"),this.openDialog(root)},close(){const customPopup=document.querySelector("#custom_popup");customPopup?.classList.remove("active"),customPopup?.setAttribute("aria-hidden","true");const comparePopup=document.querySelector("#compare_popup");comparePopup?.classList.remove("active"),comparePopup?.setAttribute("aria-hidden","true"),document.querySelectorAll(".custom-popup-group").forEach(el=>{el.classList.remove("active")}),this.lastTrigger&&document.contains(this.lastTrigger)&&(this.lastTrigger.focus(),this.lastTrigger.dataset.popupRestoreTabindex==="true"&&(this.lastTrigger.removeAttribute("tabindex"),delete this.lastTrigger.dataset.popupRestoreTabindex))},openDialog(root){if(!root)return;root.setAttribute("aria-hidden","false");const dialog=root.querySelector('[role="dialog"]'),focusTarget=root.querySelector(".popup__close-button")||dialog;window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>{focusTarget?.focus()})})},trapFocus(root,event){const focusable=Array.from(root.querySelectorAll(this.focusableSelector)).filter(element=>element.offsetParent!==null||element===document.activeElement);if(!focusable.length){event.preventDefault(),root.querySelector('[role="dialog"]')?.focus();return}
43const first=focusable[0],last=focusable[focusable.length-1];event.shiftKey&&document.activeElement===first?(event.preventDefault(),last.focus()):!event.shiftKey&&document.activeElement===last&&(event.preventDefault(),first.focus())},handleCompare(name){document.querySelector("#compare_popup vl-product-compare-manager")?.activatePdp()}},initAccordion(){},initYoutubeReview(scope=document){scope.querySelectorAll(".youtube-review-section").forEach(section=>{if(section.dataset.init)return;section.dataset.init="true";const tabBtns=section.querySelectorAll(".review-tab-btn"),tabContents=section.querySelectorAll(".review-tab-content"),carousels={},refreshCarousel=tabKey=>{if(carousels[tabKey]){carousels[tabKey].refresh?.({emit:!1,preserveIndex:!0});return}const content=section.querySelector(`.review-tab-content[data-tab="${tabKey}"]`);if(!content)return;const container=content.querySelector(`.review-carousel-${tabKey}`);container&&(container.refresh?.({emit:!1,preserveIndex:!0}),carousels[tabKey]=container)},activeContent=section.querySelector(".review-tab-content.active");activeContent&&refreshCarousel(activeContent.dataset.tab),tabBtns.forEach(btn=>{btn.addEventListener("click",()=>{const target=btn.dataset.tab;tabBtns.forEach(b=>b.classList.remove("active")),btn.classList.add("active"),tabContents.forEach(content=>{content.classList.remove("active"),content.dataset.tab===target&&(content.classList.add("active"),refreshCarousel(target))})})});const modal=section.querySelector(".video-modal"),closeBtn=section.querySelector(".close-modal"),iframe=section.querySelector("#youtubeVideo");if(modal&&closeBtn&&iframe){const buildYoutubeSrc=(youtubeId,autoplay)=>{const safeId=(youtubeId||"").trim();return safeId?`https://www.youtube.com/embed/${safeId}?autoplay=${autoplay?1:0}&rel=0`:""},openModal=youtubeId=>{const nextSrc=buildYoutubeSrc(youtubeId,!0);nextSrc&&(iframe.src=nextSrc,modal.classList.add("active"))},closeModal=()=>{modal.classList.remove("active"),iframe.src=""};section.querySelectorAll(".reviewBox[data-yid]").forEach(reviewBox=>{reviewBox.addEventListener("click",()=>{openModal(reviewBox.dataset.yid)})}),closeBtn.addEventListener("click",closeModal),modal.addEventListener("click",e=>{e.target===modal&&closeModal()}),document.addEventListener("keydown",e=>{e.key==="Escape"&&modal.classList.contains("active")&&closeModal()})}})}};document.addEventListener("click",function(e){const scrollLink=e.target.closest(".smooth-scroll");if(scrollLink){e.preventDefault();const id=scrollLink.getAttribute("href")?.substring(1);if(!id)return;const isUserStoryPage=!!scrollLink.closest("#user-story-2"),isMobileViewport=window.matchMedia("(max-width: 768px)").matches;let target=null;if(isUserStoryPage&&isMobileViewport){const mobileTargets=Array.from(document.querySelectorAll(`[data-nav-anchor="${id}"]`));target=mobileTargets.find(item=>item.getClientRects().length>0)||mobileTargets[0]||null}if(target||(target=document.getElementById(id)),!target)return;const offset=Number(scrollLink.dataset.position)||0;window.scrollTo({top:target.getBoundingClientRect().top+window.scrollY-offset,behavior:"smooth"})}const learnMoreBtn=e.target.closest(".accordion .learn-more");if(learnMoreBtn){e.preventDefault(),e.stopPropagation();const body=learnMoreBtn.closest(".panel-body");if(!body)return;body.classList.contains("expanded")?(body.classList.remove("expanded"),learnMoreBtn.textContent="Show More"):(body.classList.add("expanded"),learnMoreBtn.textContent="Show Less");return}const header=e.target.closest(".accordion .panel-header");if(header){const panel=header.closest(".panel"),container=header.closest(".accordion"),body=panel.querySelector(".panel-body");if(!panel||!body)return;const isOpen=panel.classList.contains("open"),isSingle=container.dataset.accordion!=="multi";isOpen?(slideUp(body),panel.classList.remove("open")):(isSingle&&container.querySelectorAll(".panel.open").forEach(p=>{p.classList.remove("open"),slideUp(p.querySelector(".panel-body"))}),panel.classList.add("open"),slideDown(body))}const popupTrigger=e.target.closest("[data-popup]");if(popupTrigger){e.preventDefault(),App.popup.open({content:popupTrigger.dataset.popup,name:popupTrigger.dataset.popupName,trigger:popupTrigger});return}if(e.target.closest(".popup__close-button, [data-close-btn], [data-close-small-btn]")){App.popup.close();return}e.target.closest(".custom-popup-group .popup, .popup.popup-promo, #custom_popup .popup")&&!e.target.closest(".popup__content")&&App.popup.close()}),document.addEventListener("keydown",function(e){const activePopup=document.querySelector("#custom_popup.active, #compare_popup.active");if(activePopup){if(e.key==="Escape"||e.key==="Esc"){e.preventDefault();const nestedDialog=activePopup.querySelector("dialog[open]");if(nestedDialog){nestedDialog.close();return}App.popup.close();return}e.key==="Tab"&&App.popup.trapFocus(activePopup,e)}},!0),document.addEventListener("mouseover",function(e){const tabBtn=e.target.closest('[data-tab-trigger="hover"]');if(!tabBtn)return;const containerSelector=tabBtn.dataset.tabContainer,targetId=tabBtn.dataset.tabTarget,container=document.querySelector(containerSelector);if(!container||tabBtn.classList.contains("active"))return;container.querySelectorAll(".bike-nav-tab-item").forEach(el=>el.classList.remove("active")),tabBtn.classList.add("active"),container.querySelectorAll(".bike-nav-tab_wrap").forEach(el=>el.classList.remove("active"));const target=document.getElementById(targetId);target&&target.classList.add("active")}),document.addEventListener("change",function(e){const variantSelect=e.target.closest(".product-form.multiple-variants .cart-drawer-related__variant");if(variantSelect){const form=variantSelect.closest("form");if(!form)return;const idInput=form.querySelector('input[name="id"]');if(!idInput)return;idInput.value=variantSelect.value;const cartDrawer=document.querySelector(".cart-drawer");cartDrawer&&cartDrawer.classList.remove("is-cart-loading");return}if(e.target.id==="toggleSwitch"){const step=document.getElementById("stepThruContent"),high=document.getElementById("highStepContent");
43if(!step||!high)return;step.style.display=e.target.checked?"none":"block",high.style.display=e.target.checked?"block":"none"}}),App.init(),document.addEventListener("shopify:section:load",function(e){App.init(e.target)}),new MutationObserver(()=>{App.init()}).observe(document.body,{childList:!0,subtree:!0}),window.VelotricApp=App})(),(function(){function isEnabled(){return!!document.querySelector("[data-pdp-media-experiment]")}function setVariant(variant){var normalizedVariant=variant==="b"?"b":"a";return window.__pdpMediaExperimentVariant=normalizedVariant,window.VLAbTest&&typeof window.VLAbTest.setPtGroup=="function"?window.VLAbTest.setPtGroup(normalizedVariant):(window.__VL_ABTEST_GROUP__=normalizedVariant,normalizedVariant)}function getVariant(){var group=window.VLAbTest&&typeof window.VLAbTest.getGroup=="function"?window.VLAbTest.getGroup():window.__pdpMediaExperimentVariant;return group==="b"?"b":"a"}function dispatchLegacyChange(event){var variant=event&&event.detail&&event.detail.group?event.detail.group:getVariant();window.__pdpMediaExperimentVariant=variant,document.dispatchEvent(new CustomEvent("pdp-media-experiment-change",{detail:{variant}})),isEnabled()&&document.dispatchEvent(new CustomEvent("pdp-media-experiment-enable",{detail:{variant}}))}window.PdpMediaExperiment={enable:function(variant){return setVariant(variant)},setVariant,isEnabled,getVariant},document.addEventListener("vl-abtest:change",dispatchLegacyChange),window.VLAbTest&&typeof window.VLAbTest.getGroup=="function"&&window.VLAbTest.getGroup()&&dispatchLegacyChange({detail:{group:window.VLAbTest.getGroup()}})})(),(function(){function deviceType(){return window.matchMedia("(max-width: 767px)").matches?"mobile":"desktop"}function mediaSlide(element){return element.closest(".carousel__slide[data-media-id], .product-media-grid__item[data-media-id]")}function mediaType(element){var typedElement=element.closest("[data-media-type]");if(typedElement&&typedElement.dataset.mediaType)return typedElement.dataset.mediaType;var slide=mediaSlide(element)||element;return slide.querySelector("vl-video")?"video":slide.querySelector("product-model")?"model":slide.querySelector("deferred-media")?"external_video":"image"}function mediaIndex(element){var slide=mediaSlide(element);if(!slide)return null;var container=slide.closest('[data-container="carousel"], [data-container="grid"]'),slides=container?Array.prototype.filter.call(container.children,function(item){return item.hasAttribute("data-media-id")}):[],index=Array.prototype.indexOf.call(slides,slide);return index>-1?index+1:null}function selectedVariantId(element){var productContent=element.closest("product-content")||document.querySelector("product-content.product--page"),picker=productContent?productC
43ontent.querySelector("variant-picker"):null,formInput=productContent?productContent.querySelector('input[data-product-form-variant][name="id"]'):null;return picker&&picker.variant&&picker.variant.id?String(picker.variant.id):formInput?formInput.value:null}function trackPdpMedia(eventName,element,extra){var experiment=element.closest("[data-experiment-variant]"),experimentVariant=experiment?experiment.dataset.experimentVariant:element.dataset.experimentVariant;if(!window.PdpMediaExperiment||!window.PdpMediaExperiment.isEnabled()||!experimentVariant)return!1;var mediaContainer=element.closest("[data-product-media-container]"),eventParams={experiment_variant:experimentVariant,product_id:mediaContainer?mediaContainer.dataset.productId:element.dataset.productId||null,product_variant_id:selectedVariantId(element),media_index:mediaIndex(element)||Number(element.dataset.mediaIndex)||null,media_type:mediaType(element),device_type:deviceType()};return Object.assign(eventParams,extra||{}),window.dataLayer=window.dataLayer||[],window.gtag=window.gtag||function(){window.dataLayer.push(arguments)},window.gtag("event",eventName,eventParams),!0}function preparePoiModalPortal(event){var poiTrigger=event.target.closest(".product-media-poi__trigger");if(poiTrigger){var modal=document.querySelector(poiTrigger.dataset.modal);if(modal){var experiment=poiTrigger.closest("[data-experiment-variant]");experiment&&(modal.dataset.experimentVariant=experiment.dataset.experimentVariant),modal.dataset.mediaIndex=mediaIndex(poiTrigger),modal.dataset.mediaType=poiTrigger.dataset.mediaType,delete modal.dataset.closeTracked,modal.parentElement!==document.body&&document.body.appendChild(modal)}}}function handlePdpMediaClick(event){var expandButton=event.target.closest('product-modal-button[data-action="open"]');if(expandButton){var expandSlide=mediaSlide(expandButton);trackPdpMedia("pdp_media_expand",expandButton,{entry_media_id:expandButton.dataset.mediaId||(expandSlide?expandSlide.dataset.mediaId:null),entry_media_type:mediaType(expandButton)})}var poiTrigger=event.target.closest(".product-media-poi__trigger");poiTrigger&&trackPdpMedia("pdp_poi_click",poiTrigger,{poi_key:poiTrigger.dataset.poiKey,poi_label:poiTrigger.dataset.poiLabel});var playButton=event.target.closest("[data-vl-video-play]");if(playButton){var video=playButton.closest("vl-video");video&&(video.dataset.userInitiatedPlay="true")}}function handlePdpMediaKeydown(event){if(event.key===" "){var modalButton=event.target.closest(".product-media-poi__trigger, .product-media-poi-modal__close");modalButton&&(event.preventDefault(),modalButton.click())}}function trackPoiModalClose(modal){!modal||modal.dataset.closeTracked==="true"||(modal.dataset.closeTracked="true",trackPdpMedia("pdp_poi_modal_close",modal,{poi_key:modal.dataset.poiKey,poi_label:modal.dataset.poiLabel}))}function initializePoiModalTracking(mainContent){mainContent.querySelectorAll(".product-media-poi-modal").forEach(function(modal){modal.dataset.poiTrackingInitialized==="true"||typeof modal.on!="function"||(modal.dataset.poiTrackingInitialized="true",modal.on("show",function(){delete modal.dataset.closeTracked}),modal.on("hide",function(){trackPoiModalClose(modal)}),modal.addEventListener("click",function(event){event.target===modal&&modal.isOpen&&modal.hide()}),modal.addEventListener("keydown",handlePdpMediaKeydown))})}function handlePdpVideoPlay(event){var video=event.target,owner=video.closest("vl-video");if(owner){if(!owner.dataset.progressListenerAttached){owner.dataset.progressListenerAttached="true";var thresholds=[25,50,75,100],nextThresholdIndex=0,trackProgress=function(){if(video.duration){for(var progress=video.currentTime/video.duration*100;nextThresholdIndex<thresholds.length&&progress>=thresholds[nextThresholdIndex];){var threshold=thresholds[nextThresholdIndex];video.dataset["progress"+threshold]="true",trackPdpMedia("pdp_video_progress",owner,{media_type:"video",progress_percent:threshold}),nextThresholdIndex+=1}nextThresholdIndex===thresholds.length&&video.removeEventListener("timeupdate",trackProgress)}};video.addEventListener("timeupdate",trackProgress)}owner.dataset.userInitiatedPlay==="true"&&!owner.dataset.playTracked&&(owner.dataset.playTracked="true",trackPdpMedia("pdp_video_play",owner,{media_type:"video"}))}}function mediaSlides(mediaContainer){for(var mediaLists=mediaContainer.querySelectorAll('[data-container="carousel"], [data-container="grid"]'),i=0;i<mediaLists.length;i+=1){var slides=Array.prototype.filter.call(mediaLists[i].children,function(item){return item.hasAttribute("data-media-id")});if(slides.length)return slides}return[]}function initializeMediaModuleViewTracking(mainContent){var moduleViewTracked=!1,trackWhenMediaReady=function(){if(!(moduleViewTracked||!window.PdpMediaExperiment||!window.PdpMediaExperiment.isEnabled())){var productC
43ontent=mainContent.querySelector("product-content.product--page");if(!(!productContent||!productContent.mediaScopeInitialized)){var experimentVariant=window.PdpMediaExperiment.getVariant(),experiment=mainContent.querySelector('[data-experiment-variant="'+experimentVariant+'"]');if(experiment){var mediaContainerSelector=deviceType()==="mobile"?"[data-product-mobile-media]":"[data-product-desktop-media]",mediaContainer=experiment.querySelector(mediaContainerSelector);if(mediaContainer){var slides=mediaSlides(mediaContainer);if(slides.length){var defaultMediaType=mediaType(slides[0]);moduleViewTracked=trackPdpMedia("pdp_media_module_view",mediaContainer,{media_type:defaultMediaType,default_media_type:defaultMediaType,media_count:slides.length})}}}}}};mainContent.addEventListener("pdp-media-ready",trackWhenMediaReady),trackWhenMediaReady()}function initializeMediaSwipeTracking(mediaContainers){mediaContainers.forEach(function(mediaContainer){var carousels=mediaContainer.querySelectorAll("[data-product-media-carousel-component]");carousels.forEach(function(carousel){if(!(carousel.dataset.mediaSwipeTrackingInitialized==="true"||carousel.dataset.axis==="y")){carousel.dataset.mediaSwipeTrackingInitialized="true";var attachEmblaTracking=function(attempt){if(!carousel.embla){attempt<50&&carousel.isConnected&&window.setTimeout(function(){attachEmblaTracking(attempt+1)},100);return}var interaction=null,clearTimer=null,setInteraction=function(type,direction){clearTimer&&window.clearTimeout(clearTimer),interaction={type,direction:direction||null,fromIndex:carousel.embla.selectedScrollSnap(),tracked:!1}},scheduleInteractionClear=function(){interaction&&(clearTimer=window.setTimeout(function(){interaction=null},2e3))};carousel.addEventListener("click",function(event){var arrow=event.target.closest("carousel-button[data-image-only-control]");!arrow||!carousel.contains(arrow)||arrow.hasAttribute("disabled")||(setInteraction("arrow",arrow.dataset.direction==="next"?"left":"right"),scheduleInteractionClear())},!0),carousel.embla.on("pointerDown",function(){setInteraction("swipe")}),carousel.embla.on("pointerUp",function(){scheduleInteractionClear()}),carousel.embla.on("settle",function(){if(!(!interaction||interaction.tracked)){var toIndex=carousel.embla.selectedScrollSnap();if(toIndex===interaction.fromIndex){interaction=null;return}var slides=carousel.embla.slideNodes(),fromSlide=slides[interaction.fromIndex],toSlide=slides[toIndex];if(!toSlide){interaction=null;return}interaction.tracked=!0,trackPdpMedia("pdp_media_swipe",toSlide,{from_index:interaction.fromIndex+1,to_index:toIndex+1,swipe_direction:interaction.direction||(toIndex>interaction.fromIndex?"left":"right"),interaction_type:interaction.type,to_media_type:mediaType(toSlide),from_media_id:fromSlide?fromSlide.dataset.mediaId:null,to_media_id:toSlide.dataset.mediaId||null}),clearTimer&&window.clearTimeout(clearTimer),interaction=null}})};attachEmblaTracking(0)}})})}function initializePdpMediaInteractions(){if(!initializePdpMediaInteractions.initialized){var mainContent=document.getElementById("MainContent");!mainContent||!mainContent.querySelector("[data-product-media-container]")||(initializePdpMediaInteractions.initialized=!0,mainContent.addEventListener("click",preparePoiModalPortal,!0),mainContent.addEventListener("click",handlePdpMediaClick),mainContent.addEventListener("keydown",handlePdpMediaKeydown),initializePoiModalTracking(mainContent))}}function initializePdpMediaTracking(){if(initializePdpMediaTracking.initialized||!window.PdpMediaExperiment||!window.PdpMediaExperiment.isEnabled())return;var mainContent=document.getElementById("MainContent");if(!mainContent)return;var experimentRoot=mainContent.querySelector("[data-experiment-variant]");if(!experimentRoot)return;var mediaContainers=mainContent.querySelectorAll("[data-experiment-variant] [data-product-media-container]");if(!mediaContainers.length)return;initializePdpMediaTracking.initialized=!0,initializeMediaModuleViewTracking(mainContent),initializeMediaSwipeTracking(mediaContainers
43);var observedPoiTriggers=new WeakSet,poiObserver=new IntersectionObserver(function(entries){entries.forEach(function(entry){var trigger=entry.target,isEffectivelyVisible=entry.isIntersecting&&entry.intersectionRatio>=.5;if(!isEffectivelyVisible){trigger.dataset.poiEligible="false",trigger._poiImpressionTimer&&(window.clearTimeout(trigger._poiImpressionTimer),trigger._poiImpressionTimer=null);return}trigger.dataset.poiImpression||trigger._poiImpressionTimer||(trigger.dataset.poiEligible="true",trigger._poiImpressionTimer=window.setTimeout(function(){trigger._poiImpressionTimer=null,trigger.dataset.poiEligible==="true"&&!trigger.dataset.poiImpression&&(trigger.dataset.poiImpression="true",trackPdpMedia("pdp_poi_impression",trigger,{poi_key:trigger.dataset.poiKey,poi_label:trigger.dataset.poiLabel}))},1e3))})},{threshold:.5});function observePoiTriggers(scope){var triggers=[];scope.matches&&scope.matches(".product-media-poi__trigger")&&triggers.push(scope),scope.querySelectorAll&&(triggers=triggers.concat(Array.prototype.slice.call(scope.querySelectorAll(".product-media-poi__trigger")))),triggers.forEach(function(trigger){observedPoiTriggers.has(trigger)||(observedPoiTriggers.add(trigger),poiObserver.observe(trigger))})}mediaContainers.forEach(function(mediaContainer){observePoiTriggers(mediaContainer);var mediaMutationObserver=new MutationObserver(function(mutations){mutations.forEach(function(mutation){mutation.addedNodes.forEach(function(node){node.nodeType===Node.ELEMENT_NODE&&observePoiTriggers(node)})})});mediaMutationObserver.observe(mediaContainer,{childList:!0,subtree:!0}),mediaContainer.addEventListener("play",handlePdpVideoPlay,!0)})}function initializePdpMedia(){initializePdpMediaInteractions(),initializePdpMediaTracking()}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",initializePdpMedia):initializePdpMedia(),document.addEventListener("pdp-media-experiment-enable",initializePdpMediaTracking)})(),(function(){if(!window.matchMedia("(hover: hover)").matches)return;var zoomCursor;function hideZoomCursor(){zoomCursor=zoomCursor||document.querySelector("zoom-cursor"),zoomCursor&&zoomCursor.classList.remove("is-visible"),document.body.style.cursor=""}function isPoiTrigger(target){return target&&target.closest&&target.closest(".product-media-poi__trigger")}document.addEventListener("pointerover",function(event){isPoiTrigger(event.target)&&hideZoomCursor()}),window.addEventListener("mousemove",function(event){isPoiTrigger(event.target)&&hideZoomCursor()})})();
44//# sourceMappingURL=/cdn/shop/t/644/assets/custom.js.map?v=32089439090437921281789470658

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.