1 2 3 4<!DOCTYPE html> 5<html class="no-js" lang="en"> 6 <head> 7 <meta charset="utf-8"> 8 9 10 <!-- Google Tag Manager -->
11<script type="77683c8daf3a83c7926e58dc-text/javascript">
vendor: 331 bytes, lines 11-15
11(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 12new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 13j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 14'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 15})(window,document,'script','dataLayer','
15GTM-K9M5NP2
vendor: 3 bytes, line 15
15');
15</script>
15 16<!-- End Google Tag Manager --> 17<meta name="facebook-domain-verification" content="3e86bam6t39eynfx646wrwl2qsdeur" /> 18 19<link rel="preload" href="https://i.shgcdn.com/aaac221f-26e6-47de-ae2a-9d6c4ad06882/-/format/auto/-/preview/3000x3000/-/quality/lighter/" as="image"> 20 21 <title>Utility Articles For Rally Dog Training - J&J Dog Supplies</title> 22 <link rel="dns-prefetch preconnect" href="https://cdn11.bigcommerce.com/s-cftgfbe14j" crossorigin><link rel="dns-prefetch preconnect" href="https://fonts.googleapis.com/" crossorigin><link rel="dns-prefetch preconnect" href="https://fonts.gstatic.com/" crossorigin> 23 <link rel='canonical' href='https://www.jjdog.com/competition-equipment/rally/utility-articles/' /><meta name='platform' content='bigcommerce.stencil' /> 24 25 26 27 <link href="https://cdn11.bigcommerce.com/s-cftgfbe14j/product_images/jjdog-favicon.png" rel="shortcut icon"> 28 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> 29 30
30<script type="77683c8daf3a83c7926e58dc-text/javascript"> 31 document.documentElement.className = document.documentElement.className.replace('no-js', 'js'); 32 </script>
32 33 34
34<script type="77683c8daf3a83c7926e58dc-text/javascript"> 35 function browserSupportsAllFeatures() { 36 return window.Promise 37 && window.fetch 38 && window.URL 39 && window.URLSearchParams 40 && window.WeakMap 41 // object-fit support 42 && ('objectFit' in document.documentElement.style); 43 } 44 45 function loadScript(src) { 46 var js = document.createElement('script'); 47 js.src = src; 48 js.onerror = function () { 49 console.error('Failed to load polyfill script ' + src); 50 }; 51 document.head.appendChild(js); 52 } 53 54 if (!browserSupportsAllFeatures()) { 55 loadScript('https://cdn11.bigcommerce.com/s-cftgfbe14j/stencil/1d272760-e709-0138-dd55-0242ac11000f/e/959864e0-7e25-013f-a515-4add52f6d68f/dist/theme-bundle.polyfills.js'); 56 } 57</script>
57 58 59
59<script type="77683c8daf3a83c7926e58dc-text/javascript"> 60 window.lazySizesConfig = window.lazySizesConfig || {}; 61 window.lazySizesConfig.loadMode = 1; 62 </script>
62 63
63<script async src="https://cdn11.bigcommerce.com/s-cftgfbe14j/stencil/1d272760-e709-0138-dd55-0242ac11000f/e/959864e0-7e25-013f-a515-4add52f6d68f/dist/theme-bundle.head_async.js" type="77683c8daf3a83c7926e58dc-text/javascript"></script>
63 64
64<script type="77683c8daf3a83c7926e58dc-text/javascript" src="https://cdn11.bigcommerce.com/s-cftgfbe14j/stencil/1d272760-e709-0138-dd55-0242ac11000f/e/959864e0-7e25-013f-a515-4add52f6d68f/js/theme/custom/jquery.min.js"></script>
64 65 66 <link href="https://fonts.googleapis.com/css?family=Montserrat:700,500%7COpen+Sans:400%7COswald:400&display=swap" rel="stylesheet"> 67 <link data-stencil-stylesheet href="https://cdn11.bigcommerce.com/s-cftgfbe14j/stencil/1d272760-e709-0138-dd55-0242ac11000f/e/959864e0-7e25-013f-a515-4add52f6d68f/css/theme-e4f2b1a0-6b24-013e-ae5f-52ccad0afc2b.css" rel="stylesheet"> 68 69 <!-- Start Tracking Code for analytics_facebook --> 70
71<script type="77683c8daf3a83c7926e58dc-text/javascript"> 72!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,document,'script','https://connect.facebook.net/en_US/fbevents.js'); 73 74fbq('set', 'autoConfig', 'false', '1494282947604199'); 75fbq('dataProcessingOptions', ['LDU'], 0, 0); 76fbq('init', '1494282947604199', {"external_id":"c46fece1-df7e-400f-b8d1-a58eb361af20"}); 77fbq('set', 'agent', 'bigcommerce', '1494282947604199'); 78 79function trackEvents() { 80 var pathName = window.location.pathname; 81 82 83 84 // Search events start -- only fire if the shopper lands on the /search.php page 85 if (pathName.indexOf('/search.php') === 0 && getUrlParameter('search_query')) { 86 fbq('trackSingle', '1494282947604199', 'Search', { 87 content_type: 'product_group', 88 content_ids: [], 89 search_string: getUrlParameter('search_query') 90 }); 91 } 92 // Search events end 93 94 // Wishlist events start -- only fire if the shopper attempts to add an item to their wishlist 95 if (pathName.indexOf('/wishlist.php') === 0 && getUrlParameter('added_product_id')) { 96 fbq('trackSingle', '1494282947604199', 'AddToWishlist', { 97 content_type: 'product_group', 98 content_ids: [] 99 }); 100 } 101 // Wishlist events end 102 103 // Lead events start -- only fire if the shopper subscribes to newsletter 104 if (pathName.indexOf('/subscribe.php') === 0 && getUrlParameter('result') === 'success') { 105 fbq('trackSingle', '1494282947604199', 'Lead', {}); 106 } 107 // Lead events end 108 109 // Registration events start -- only fire if the shopper registers an account 110 if (pathName.indexOf('/login.php') === 0 && getUrlParameter('action') === 'account_created') { 111 fbq('trackSingle', '1494282947604199', 'CompleteRegistration', {}, ""); 112 } 113 // Registration events end 114 115 116 117 function getUrlParameter(name) { 118 var cleanName = name.replace(/[\[]/, '\[').replace(/[\]]/, '\]'); 119 var regex = new RegExp('[\?&]' + cleanName + '=([^&#]*)'); 120 var results = regex.exec(window.location.search); 121 return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' ')); 122 } 123} 124 125if (window.addEventListener) { 126 window.addEventListener("load", trackEvents, false) 127} 128</script>
128 129<noscript><img height="1" width="1" style="display:none" alt="null" src="https://www.facebook.com/tr?id=1494282947604199&ev=PageView&noscript=1&a=plbigcommerce1.2&eid="/></noscript> 130 131<!-- End Tracking Code for analytics_facebook --> 132 133<!-- Start Tracking Code for analytics_googleanalytics4 --> 134
135<script data-cfasync="false" src="https://cdn11.bigcommerce.com/shared/js/google_analytics4_bodl_subscribers-358423becf5d870b8b603a81de597c10f6bc7699.js" integrity="sha256-gtOfJ3Avc1pEE/hx6SKj/96cca7JvfqllWA9FTQJyfI=" crossorigin="anonymous"></script>
vendor: 1 bytes, line 135
135
136<script data-cfasync="false"> 137 (function () { 138 window.dataLayer = window.dataLayer || []; 139 140 function gtag(){ 141 dataLayer.push(arguments); 142 } 143 144 function initGA4(event) { 145 function setupGtag() { 146 function configureGtag() { 147 gtag('js', new Date()); 148 gtag('set', 'developer_id.dMjk3Nj', true); 149 gtag('config', 'G-7FS1HSHX07'); 150 } 151 152 var script = document.createElement('script'); 153 154 script.src = 'https://www.googletagmanager.com/gtag/js?id=G-7FS1HSHX07'; 155 script.async = true; 156 script.onload = configureGtag; 157 158 document.head.appendChild(script); 159 } 160 161 setupGtag(); 162 163 if (typeof subscribeOnBodlEvents === 'function') { 164 subscribeOnBodlEvents('G-7FS1HSHX07', false); 165 } 166 167 window.removeEventListener(event.type, initGA4); 168 } 169 170 171 172 var eventName = document.readyState === 'complete' ? 'consentScriptsLoaded' : 'DOMContentLoaded'; 173 window.addEventListener(eventName, initGA4, false); 174 })() 175</script>
175 176 177<!-- End Tracking Code for analytics_googleanalytics4 --> 178 179<!-- Start Tracking Code for analytics_siteverification --> 180 181<meta name="google-site-verification" content="oXjAdE6ogaVqPtH1Fbcr6Xb784o5KN-jrPYnal97sMc" /> 182 183<!-- End Tracking Code for analytics_siteverification --> 184 185
186<script type="77683c8daf3a83c7926e58dc-text/javascript" src="https://checkout-sdk.bigcommerce.com/v1/loader.js" defer></script>
vendor: 1 bytes, line 186
186
187<script type="77683c8daf3a83c7926e58dc-text/javascript"> 188fbq('trackSingle', '1494282947604199', 'ViewCategory', {"content_ids":["758","757","756","710","558","484"],"content_type":"product_group","content_category":"Utility Articles"}); 189</script>
vendor: 1 bytes, line 189
189
190<script type="77683c8daf3a83c7926e58dc-text/javascript"> 191var BCData = {}; 192</script>
vendor: 1 bytes, line 192
192
193<script src='https://searchanise-ef84.kxcdn.com/widgets/bigcommerce/init.js?api_key=7y3i6j5K9Q' async type="77683c8daf3a83c7926e58dc-text/javascript"></script>
193<script async type="77683c8daf3a83c7926e58dc-text/javascript" id="sig-bc" data-store-id="stores/cftgfbe14j" src="https://cdn-scripts.signifyd.com/bigcommerce/script-tag.js"></script>
193<script src="https://www.paypal.com/sdk/js?client-id=Ad6sKAAKgkpEonl9L_WI6vqFoWoMq7UAwSRYmvk6ByP1PqjptvhrwAUnurQPsJ1BxKhW3s77FGN8pgQV&components=messages" data-namespace="PayPalSDK" type="77683c8daf3a83c7926e58dc-text/javascript"> 194</script>
194<script type="77683c8daf3a83c7926e58dc-text/javascript"> 195 (function(c,l,a,r,i,t,y){ 196 c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; 197 t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i; 198 y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); 199 })(window, document, "clarity", "script", "gzx4zeziw9"); 200</script>
200<script type="77683c8daf3a83c7926e58dc-text/javascript"> 201 function addEventListenerStamped(el, eventName, handler) { 202if (el.addEventListener) { el.addEventListener(eventName, handler); } 203else { el.attachEvent('on' + eventName, function () { handler.call(el); }); } 204} 205 206// Listening for launcher loaded event 207addEventListenerStamped(document, 'stamped:widget:rewards-summary:loaded', function(e) { 208 $(document).ready(function(){ 209 setTimeout(function () { 210 $( "span.stamped-rewards-widget-points.stamped-point-balance" ).each(function() { 211 var pointsTotal = $(this).text().replace(/\D/g, ''); 212 nfObject = new Intl.NumberFormat('en-US'); 213 formattedNumber = nfObject.format(pointsTotal); 214 $(this).text(formattedNumber + " points"); 215 }); 216 }, 2000); 217}); 218 219}); 220</script>
220<script type="77683c8daf3a83c7926e58dc-text/javascript"> shippedConfig = {"isGreen":false,"isShield":true,"isOrderProtection":false,"isOffByDefault":false,"isMandatory":false,"isInformational":false,"isWidgetOff":false,"storefrontApiToken":"eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJjaWQiOjEsImNvcnMiOlsiaHR0cHM6Ly93d3cuampkb2cuY29tIl0sImVhdCI6MjE0NzQ4MzY0NywiaWF0IjoxNjk0MTA4OTQzLCJpc3MiOiJCQyIsInNpZCI6MTAwMDg5NjEzMCwic3ViIjoiN2gzcTE3cjZsbGpscXVmbnlxNWpkNWpxeHR3ajE5ZiIsInN1Yl90eXBlIjoyLCJ0b2tlbl90eXBlIjoxfQ.4ymxbs0d1jxW3zgMvHM3hz0PSnNzJjyPCQ3O5RxtDh-W9wh9GKnZLgS8M62qKmGpHapmSoPfJF8TsB2BrhePzQ","managedProducts":[{"id":1183,"type":"insurance"}]} </script>
220<script async src="https://dmt83xaifx31y.cloudfront.net/public/js/prikidsizecharts.js?v=44#store=cftgfbe14j" crossorigin="anonymous" type="77683c8daf3a83c7926e58dc-text/javascript"></script>
220<script nonce="" type="77683c8daf3a83c7926e58dc-text/javascript"> 221if(typeof fbq === 'function') { 222 fbq('trackSingle', '1494282947604199', 'PageView', {}, {"eventID":"f3d8297f-fd0b-4cfc-ac0a-32486879bfbd"}); 223} else if (typeof window.addEventListener === 'function') { 224 window.addEventListener("load", function() { fbq('trackSingle', '1494282947604199', 'PageView', {}, {"eventID":"f3d8297f-fd0b-4cfc-ac0a-32486879bfbd"}); }, false) 225} 226</script>
226 227
227<script data-cfasync="false" src="https://microapps.bigcommerce.com/bodl-events/1.9.4/index.js" integrity="sha256-Y0tDj1qsyiKBRibKllwV0ZJ1aFlGYaHHGl/oUFoXJ7Y=" nonce="" crossorigin="anonymous"></script>
227 228
228<script data-cfasync="false" nonce=""> 229 230 (function() { 231 function decodeBase64(base64) { 232 const text = atob(base64); 233 const length = text.length; 234 const bytes = new Uint8Array(length); 235 for (let i = 0; i < length; i++) { 236 bytes[i] = text.charCodeAt(i); 237 } 238 const decoder = new TextDecoder(); 239 return decoder.decode(bytes); 240 } 241 window.bodl = JSON.parse(decodeBase64("eyJzZXNzaW9uIjp7ImlkIjoiNDllMjRkYzMtYTg3ZS00MWFiLTg0NDktOWM2YTJmZjZjYzZmIiwiZmlyc3RfdG91Y2hfdGltZXN0YW1wIjoiMjAyNi0wOS0yNlQwMjo1NzoyNiIsImZpcnN0X3RvdWNoX3JlZmVycmFsX3VybCI6IiIsImZpcnN0X3RvdWNoX3JlcXVlc3RfdXJsIjoiaHR0cHM6Ly93d3cuampkb2cuY29tL2NvbXBldGl0aW9uLWVxdWlwbWVudC9yYWxseS91dGlsaXR5LWFydGljbGVzLyJ9LCJzaG9wcGVyIjp7InZpc2l0b3JfaWQiOiIiLCJjdXN0b21lcl9pZCI6bnVsbCwiZW1haWwiOm51bGwsImZpcnN0X25hbWUiOm51bGwsImxhc3RfbmFtZSI6bnVsbH0sImRhdGFfY29uc2VudCI6eyJmdW5jdGlvbmFsIjp0cnVlLCJhbmFseXRpY3MiOnRydWUsImFkdmVydGlzaW5nIjp0cnVlfSwiZXZlbnRzIjpbeyJib2RsX3YxX3Byb2R1Y3RfY2F0ZWdvcnlfdmlld2VkIjp7ImV2ZW50X2lkIjoiYjFjOTgxZjYtOGI3Mi00YTgxLTgxMjMtYWM2NzNkNzVmNTg1IiwiY2hhbm5lbF9pZCI6MSwiY2F0ZWdvcnlfaWQiOjg1NSwiY2F0ZWdvcnlfbmFtZSI6IlV0aWxpdHkgQXJ0aWNsZXMiLCJsaW5lX2l0ZW1zIjpbeyJwcm9kdWN0X2lkIjoiNzU4Iiwic2t1IjoiU0dNUi1QIiwidmFyaWFudF9pZCI6bnVsbCwicHJvZHVjdF9uYW1lIjoiUmVwbGFjZW1lbnQgTWV0YWwgVXRpbGl0eSBBcnRpY2xlcyIsImdpZnRfY2VydGlmaWNhdGVfaWQiOm51bGwsImdpZnRfY2VydGlmaWNhdGVfbmFtZSI6bnVsbCwiZ2lmdF9jZXJ0aWZpY2F0ZV90aGVtZSI6bnVsbCwicHVyY2hhc2VfcHJpY2UiOjUuOTksInNhbGVfcHJpY2UiOjUuOTksImJhc2VfcHJpY2UiOm51bGwsInJldGFpbF9wcmljZSI6MTQuOTksInF1YW50aXR5IjowLCJkaXNjb3VudCI6OS4wLCJjb3Vwb25fYW1vdW50IjpudWxsLCJpbmRleCI6MCwiYnJhbmRfbmFtZSI6IkomSiBEb2cgU3VwcGxpZXMiLCJjYXRlZ29yeV9uYW1lcyI6WyJVdGlsaXR5IEFydGljbGVzIl0sImN1cnJlbmN5IjoiVVNEIn0seyJwcm9kdWN0X2lkIjoiNzU3Iiwic2t1IjoiU0dNLVAiLCJ2YXJpYW50X2lkIjpudWxsLCJwcm9kdWN0X25hbWUiOiJDb21wZXRpdGlvbiBNZXRhbCBVdGlsaXR5IEFydGljbGUgU2V0IiwiZ2lmdF9jZXJ0aWZpY2F0ZV9pZCI6bnVsbCwiZ2lmdF9jZXJ0aWZpY2F0ZV9uYW1lIjpudWxsLCJnaWZ0X2NlcnRpZmljYXRlX3RoZW1lIjpudWxsLCJwdXJjaGFzZV9wcmljZSI6NzkuOTksInNhbGVfcHJpY2UiOm51bGwsImJhc2VfcHJpY2UiOm51bGwsInJldGFpbF9wcmljZSI6bnVsbCwicXVhbnRpdHkiOjAsImRpc2NvdW50IjpudWxsLCJjb3Vwb25fYW1vdW50IjpudWxsLCJpbmRleCI6MSwiYnJhbmRfbmFtZSI6IkomSiBEb2cgU3VwcGxpZXMiLCJjYXRlZ29yeV9uYW1lcyI6WyJVdGlsaXR5IEFydGljbGVzIl0sImN1cnJlbmN5IjoiVVNEIn0seyJwcm9kdWN0X2lkIjoiNzU2Iiwic2t1IjoiU0dMLVAiLCJ2YXJpYW50X2lkIjpudWxsLCJwcm9kdWN0X25hbWUiOiJDb21wZXRpdGlvbiBMZWF0aGVyIFV0aWxpdHkgQXJ0aWNsZSBTZXQiLCJnaWZ0X2NlcnRpZmljYXRlX2lkIjpudWxsLCJnaWZ0X2NlcnRpZmljYXRlX25hbWUiOm51bGwsImdpZnRfY2VydGlmaWNhdGVfdGhlbWUiOm51bGwsInB1cmNoYXNlX3ByaWNlIjo5OS45OSwic2FsZV9wcmljZSI6bnVsbCwiYmFzZV9wcmljZSI6bnVsbCwicmV0YWlsX3ByaWNlIjpudWxsLCJxdWFudGl0eSI6bnVsbCwiZGlzY291bnQiOm51bGwsImNvdXBvbl9hbW91bnQiOm51bGwsImluZGV4IjoyLCJicmFuZF9uYW1lIjoiSiZKIERvZyBTdXBwbGllcyIsImNhdGVnb3J5X25hbWVzIjpbIlV0aWxpdHkgQXJ0aWNsZXMiXSwiY3VycmVuY3kiOiJVU0QifSx7InByb2R1Y3RfaWQiOiI3MTAiLCJza3UiOiJTR0xSLVAiLCJ2YXJpYW50X2lkIjpudWxsLCJwcm9kdWN0X25hbWUiOiJSZXBsYWNlbWVudCBMZWF0aGVyIFV0aWxpdHkgQXJ0aWNsZXMiLCJnaWZ0X2NlcnRpZmljYXRlX2lkIjpudWxsLCJnaWZ0X2NlcnRpZmljYXRlX25hbWUiOm51bGwsImdpZnRfY2VydGlmaWNhdGVfdGhlbWUiOm51bGwsInB1cmNoYXNlX3ByaWNlIjoxOS45OSwic2FsZV9wcmljZSI6bnVsbCwiYmFzZV9wcmljZSI6bnVsbCwicmV0YWlsX3ByaWNlIjpudWxsLCJxdWFudGl0eSI6bnVsbCwiZGlzY291bnQiOm51bGwsImNvdXBvbl9hbW91bnQiOm51bGwsImluZGV4IjozLCJicmFuZF9uYW1lIjoiSiZKIERvZyBTdXBwbGllcyIsImNhdGVnb3J5X25hbWVzIjpbIlV0aWxpdHkgQXJ0aWNsZXMiXSwiY3VycmVuY3kiOiJVU0QifSx7InByb2R1Y3RfaWQiOiI1NTgiLCJza3UiOiJCMTE1LVAiLCJ2YXJpYW50X2lkIjpudWxsLCJwcm9kdWN0X25hbWUiOiJOeWxvbiBNZXNoIEFydGljbGUgQmFnIiwiZ2lmdF9jZXJ0aWZpY2F0ZV9pZCI6bnVsbCwiZ2lmdF9jZXJ0aWZpY2F0ZV9uYW1lIjpudWxsLCJnaWZ0X2NlcnRpZmljYXRlX3RoZW1lIjpudWxsLCJwdXJjaGFzZV9wcmljZSI6NDQuOTksInNhbGVfcHJpY2UiOm51bGwsImJhc2VfcHJpY2UiOm51bGwsInJldGFpbF9wcmljZSI6bnVsbCwicXVhbnRpdHkiOm51bGwsImRpc2NvdW50IjpudWxsLCJjb3Vwb25fYW1vdW50IjpudWxsLCJpbmRleCI6NCwiYnJhbmRfbmFtZSI6IlJheSBBbGxlbiBNYW51ZmFjdHVyaW5nIiwiY2F0ZWdvcnlfbmFtZXMiOlsiVXRpbGl0eSBBcnRpY2xlcyJdLCJjdXJyZW5jeSI6IlVTRCJ9LHsicHJvZHVjdF9pZCI6IjQ4NCIsInNrdSI6IlVNMTAwIiwidmFyaWFudF9pZCI6bnVsbCwicHJvZHVjdF9uYW1lIjoiVXRpbGl0eSBBcnRpY2xlIFRyYWluaW5nIE1hdCIsImdpZnRfY2VydGlmaWNhdGVfaWQiOm51bGwsImdpZnRfY2VydGlmaWNhdGVfbmFtZSI6bnVsbCwiZ2lmdF9jZXJ0aWZpY2F0ZV90aGVtZSI6bnVsbCwicHVyY2hhc2VfcHJpY2UiOjU5Ljk5LCJzYWxlX3ByaWNlIjpudWxsLCJiYXNlX3ByaWNlIjpudWxsLCJyZXRhaWxfcHJpY2UiOm51bGwsInF1YW50aXR5IjpudWxsLCJkaXNjb3VudCI6bnVsbCwiY291cG9uX2Ftb3VudCI6bnVsbCwiaW5kZXgiOjUsImJyYW5kX25hbWUiOiJKJkogRG9nIFN1cHBsaWVzIiwiY2F0ZWdvcnlfbmFtZXMiOlsiVXRpbGl0eSBBcnRpY2xlcyJdLCJjdXJyZW5jeSI6IlVTRCJ9XX19XX0=")); 242 })() 243 244 </script>
244 245
246<script nonce="" type="77683c8daf3a83c7926e58dc-text/javascript"> 247(function () { 248 var xmlHttp = new XMLHttpRequest(); 249 250 xmlHttp.open('POST', 'https://bes.gcp.data.bigcommerce.com/nobot'); 251 xmlHttp.setRequestHeader('Content-Type', 'application/json'); 252 xmlHttp.send('{"store_id":"1000896130","timezone_offset":"-6.0","timestamp":"2026-09-26T02:57:26.21344900Z","visit_id":"fb2eabf0-77c2-405f-bf66-408f1f4b32c7","channel_id":1}'); 253})(); 254</script>
254 255 256 257
257<script async src="//www.searchanise.com/widgets/bigcommerce/init.js?api_key=7y3i6j5K9Q" type="77683c8daf3a83c7926e58dc-text/javascript"></script>
257 258 259
259<script src="https://www.paypal.com/sdk/js?client-id=Ad6sKAAKgkpEonl9L_WI6vqFoWoMq7UAwSRYmvk6ByP1PqjptvhrwAUnurQPsJ1BxKhW3s77FGN8pgQV&components=messages" data-namespace="PayPalSDK" type="77683c8daf3a83c7926e58dc-text/javascript"> 260</script>
260 261 262 </head> 263 <body> 264 265 <!-- Google Tag Manager (noscript) -->
vendor: 69 bytes, lines 265-266
265 266<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
266GTM-K9M5NP2
vendor: 85 bytes, lines 266-267
266" 267height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
268<!-- End Google Tag Manager (noscript) --> 269 270 <svg data-src="https://cdn11.bigcommerce.com/s-cftgfbe14j/stencil/1d272760-e709-0138-dd55-0242ac11000f/e/959864e0-7e25-013f-a515-4add52f6d68f/img/icon-sprite.svg" class="icons-svg-sprite"></svg> 271 272 <header class="header" role="banner"> 273 <a href="#" class="mobileMenu-toggle" data-mobile-menu-toggle="menu"> 274 <span class="mobileMenu-toggleIcon">Toggle menu</span> 275 </a> 276 <nav class="navUser"> 277<span class="header-top-banner"><a href="https://www.jjdog.com/shipping-information/">FREE SHIPPING* for orders $75+</a></span> 278 279 <ul class="navUser-section navUser-section--alt"> 280 281 <li class="navUser-item navUser-item--social"> 282 <ul class="socialLinks socialLinks--alt"> 283 <li class="socialLinks-item"> 284 <a class="icon icon--facebook" href="https://www.facebook.com/jjdogsupplies" target="_blank" rel="noopener"> 285 <svg><use xlink:href="#icon-facebook" /></svg> 286 </a> 287 </li> 288 <li class="socialLinks-item"> 289 <a class="icon icon--instagram" href="https://www.instagram.com/jjdogsupplies" target="_blank" rel="noopener"> 290 <svg><use xlink:href="#icon-instagram" /></svg> 291 </a> 292 </li> 293 <li class="socialLinks-item"> 294 <a class="icon icon--youtube" href="https://www.youtube.com/c/jjdogsupplies" target="_blank" rel="noopener"> 295 <svg><use xlink:href="#icon-youtube" /></svg> 296 </a> 297 </li> 298 </ul> 299 </li> 300 <li class="navUser-item navUser-item--divider">|</li> 301<li class="navUser-item"> 302<a href="#" data-search="quickSearch" aria-controls="quickSearch" aria-expanded="false"> 303<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-search" width="24" height="24" viewBox="0 0 24 24" stroke-width="3" stroke="#ffffff" fill="none" stroke-linecap="round" stroke-linejoin="round"> 304 <path stroke="none" d="M0 0h24v24H0z" fill="none"/> 305 <path d="M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0" /> 306 <path d="M21 21l-6 -6" /> 307</svg> 308</a> </li> 309 <li class="navUser-item"> 310 <a class="navUser-action" href="/quick-order/">Quick Order</a> 311 </li> 312 <li class="navUser-item"> 313 <a class="navUser-action" href="/blog/">Blog</a> 314 </li> 315 316 <li class="navUser-item"> 317 <a class="navUser-action" href="/featured-paws/">Featured Paws</a> 318 </li> 319 <li class="navUser-item"> 320 <a class="navUser-action" href="/best-friends-club/">Rewards</a> 321 </li> 322 323 <li class="navUser-item navUser-item--account"> 324 <a class="navUser-action" href="https://www.jjdog.com/login.php">Sign in</a> 325 <span class="navUser-or">or</span> <a class="navUser-action" href="https://www.jjdog.com/login.php?action=create_account">Register</a> 326 </li> 327 328 <li class="navUser-item navUser-item--search"> 329 <a href="#" 330 class="navUser-action-svg snize-custom-widget-opener" 331 aria-label="Search"> 332 <svg xmlns="http://www.w3.org/2000/svg" 333 class="icon icon-tabler icon-tabler-search" 334 width="24" height="24" viewBox="0 0 24 24" 335 stroke-width="3" stroke="#909090" fill="none" 336 stroke-linecap="round" stroke-linejoin="round"> 337 <path stroke="none" d="M0 0h24v24H0z" fill="none"/> 338 <path d="M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0" /> 339 <path d="M21 21l-6 -6" /> 340 </svg> 341 </a> 342</li> 343 344 345 <li class="navUser-item navUser-item--cart"> 346 <a 347 class="navUser-action" 348 data-cart-preview 349 data-dropdown="cart-preview-dropdown" 350 data-options="align:right" 351 href="https://www.jjdog.com/cart.php">
352 <span class="navUser-item-cartLabel">Cart</span> <span class="countPill cart-quantity"></span> 353 </a> 354 355 <div class="dropdown-menu" id="cart-preview-dropdown" data-dropdown-content aria-hidden="true"></div> 356 </li> 357 </ul> 358 <div class="dropdown dropdown--quickSearch" id="quickSearch" aria-hidden="true" tabindex="-1" data-prevent-quick-search-close> 359 <div class="container"> 360 <form class="form" action="https://www.jjdog.com/search.php"> 361 <fieldset class="form-fieldset"> 362 <div class="form-field"> 363 <label class="is-srOnly" for="search_query">Search</label> 364 <input class="form-input" data-search-quick name="search_query" id="search_query" data-error-message="Search field cannot be empty." placeholder="Search the store" autocomplete="off"> 365 </div> 366 </fieldset> 367 </form> 368 <section class="quickSearchResults" data-bind="html: results"></section> 369</div> 370 </div> 371</nav> 372 373 <div class="header-logo header-logo--center"> 374 <a href="https://www.jjdog.com/"> 375 <div class="header-logo-image-container"> 376 <img class="header-logo-image" src="https://cdn11.bigcommerce.com/s-cftgfbe14j/images/stencil/183x110/ne
376w-logo-horizontal_1590511746__09058.original.jpg" alt="J&J Dog Supplies" title="J&J Dog Supplies"> 377 </div> 378</a> 379 </div> 380 <div class="navPages-container" id="menu" data-menu> 381 <nav class="navPages"> 382 <div class="navPages-quickSearch"> 383 <div class="container"> 384 <form class="form" action="https://www.jjdog.com/search.php"> 385 <fieldset class="form-fieldset"> 386 <div class="form-field"> 387 <label class="is-srOnly" for="search_query">Search</label> 388 <input class="form-input" data-search-quick name="search_query" id="search_query" data-error-message="Search field cannot be empty." placeholder="Search the store" autocomplete="off"> 389 </div> 390 </fieldset> 391 </form> 392 <section class="quickSearchResults" data-bind="html: results"></section> 393</div> 394 </div> 395 <ul class="navPages-list"> 396 397 398 399 <li class="navPages-item"> 400 <a class="navPages-action" href="https://www.jjdog.com/new-products/">New</a> 401 </li> 402 <li class="navPages-item"> 403 <a class="navPages-action has-subMenu activePage" href="https://www.jjdog.com/competition-equipment/" data-collapsible="navPages-30"> 404 Competition Equipment <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 405</a> 406<div class="navPage-subMenu" id="navPages-30" aria-hidden="true" tabindex="-1"> 407 <ul class="navPage-subMenu-list"> 408 <li class="navPage-subMenu-item"> 409 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/competition-equipment/">All Competition Equipment</a> 410 </li> 411 <li class="navPage-subMenu-item"> 412 <a 413 class="navPage-subMenu-action navPages-action has-subMenu" 414 href="https://www.jjdog.com/competition-equipment/agility/" 415 data-collapsible="navPages-44" 416 data-collapsible-disabled-breakpoint="medium" 417 data-collapsible-disabled-state="open" 418 data-collapsible-enabled-state="closed"> 419 Agility <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 420 </a> 421 <ul class="navPage-childList" id="navPages-44"> 422 <li class="navPage-childList-item"> 423 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/agility/tunnels/">Tunnels</a> 424 </li> 425 <li class="navPage-childList-item"> 426 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/agility/weave-poles/">Weave Poles</a> 427 </li> 428 <li class="navPage-childList-item"> 429 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/agility/jumps/">Jumps</a> 430 </li> 431 <li class="navPage-childList-item"> 432 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/agility/walk-p
432ause/">Walk & Pause</a> 433 </li> 434 <li class="navPage-childList-item"> 435 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/agility/strength-balance/">Strength & Balance</a> 436 </li> 437 <li class="navPage-childList-item"> 438 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/agility/accessories/">Accessories</a> 439 </li> 440 <li class="navPage-childList-item"> 441 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/agility/view-all/">VIEW ALL</a> 442 </li> 443 </ul> 444 </li> 445 <li class="navPage-subMenu-item"> 446 <a 447 class="navPage-subMenu-action navPages-action has-subMenu" 448 href="https://www.jjdog.com/competition-equipment/obedience/" 449 data-collapsible="navPages-43" 450 data-collapsible-disabled-breakpoint="medium" 451 data-collapsible-disabled-state="open" 452 data-collapsible-enabled-state="closed"> 453 Obedience <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 454 </a> 455 <ul class="navPage-childList" id="navPages-43"> 456 <li class="navPage-childList-item"> 457 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/obedience/dumbbells/">Dumbbells</a> 458 </li> 459 <li class="navPage-childList-item"> 460 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/obedience/wobble-boards/">Wobble Boards</a> 461 </li> 462 <li class="navPage-childList-item"> 463 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/obedience/pause-stations/">Pause Stations</a> 464 </li> 465 <li class="navPage-childList-item"> 466 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/obedience/accessories/">Accessories</a> 467 </li> 468 <li class="navPage-childList-item"> 469 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/obedience/view-all/">VIEW ALL</a> 470 </li> 471 </ul> 472 </li> 473 <li class="navPage-subMenu-item"> 474 <a 475 class="navPage-subMenu-action navPages-action has-subMenu activePage" 476 href="https://www.jjdog.com/competition-equipment/rally/" 477 data-collapsible="navPages-45" 478 data-collapsible-disabled-breakpoint="medium" 479 data-collapsible-disabled-state="open" 480 data-collapsible-enabled-state="closed"> 481 Rally <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 482 </a> 483 <ul class="navPage-childList" id="navPages-45"> 484 <li class="navPage-childList-item"> 485 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/rally/dumbbells/">Dumbbells</a> 486 </li> 487 <li class="navPage-childList-item"> 488 <a class="navPage-childList-action navPages-action activePage" href="https://www.jjdog.com/competition-equipment/rally/utility-articles/">Utility Articles</a> 489 </li> 490 <li class="navPage-childList-item"> 491 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/rally/pins-patches/">Pins & Patches</a> 492 </li> 493 <li class="navPage-childList-item"> 494 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/rally/accessories/">Accessories</a> 495 </li> 496 <li class="navPage-childList-item"> 497 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/rally/view-all/">VIEW ALL</a> 498 </li> 499 </ul> 500 </li> 501 <li class="navPage-subMenu-item"> 502 <a 503 class="navPage-subMenu-action navPages-action has-subMenu" 504 href="https://www.jjdog.com/competition-equipment/nosework/" 505 data-collapsible="navPages-38" 506 data-collapsible-disabled-breakpoint="medium" 507 data-collapsible-disabled-state="open" 508 data-collapsible-enabled-state="closed"> 509 Nosework <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 510 </a> 511 <ul class="navPage-childList" id="navPages-38"> 512 <li class="navPage-childList-item"> 513 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/nosework/scent-articles/">Scent Articles</a> 514 </li> 515 <li class="navPage-childList-item"> 516 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/nosework/scent-bags/">Scent Bags</a> 517 </li> 518 <li class="navPage-childList-item"> 519 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/nosework/scent-boxes/">Scent Boxes</a> 520 </li> 521 <li class="navPage-childList-item"> 522 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/nosework/essential-oils/">Essential Oils</a> 523 </li> 524 <li class="navPage-childList-item"> 525 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/nosework/view-all/">VIEW ALL</a> 526 </li> 527 </ul> 528 </li> 529 <li class="navPage-subMenu-item"> 530 <a 531 class="navPage-subMenu-action navPages-action has-subMenu" 532 href="https://www.jjdog.com/competition-equipment/tracking/" 533 data-collapsible="navPages-31" 534 data-collapsible-disabled-breakpoint="medium" 535 data-collapsible-disabled-state="open" 536 data-collapsible-enabled-state="closed"> 537 Tracking <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 538 </a> 539 <ul class="navPage-childList" id="navPages-31"> 540 <li class="navPage-childList-item"> 541 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/tracking/harnessess/">Harnessess</a> 542 </li> 543 <li class="navPage-childList-item"> 544 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/tracking/long-lines/">Long Lines</a> 545 </li> 546 <li class="navPage-childList-item"> 547 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/tracking/accessories/">Accessories</a> 548 </li> 549 <li class="navPage-childList-item"> 550 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/tracking/view-all/">VIEW ALL</a> 551 </li> 552 </ul> 553 </li> 554 <li class="navPage-subMenu-item"> 555 <a 556 class="navPage-subMenu-action navPages-action has-subMenu" 557 href="https://www.jjdog.com/competition-equipment/other-dog-sports/" 558 data-collapsible="navPages-799" 559 data-collapsible-disabled-breakpoint="medium" 560 data-collapsible-disabled-state="open" 561 data-collapsible-enabled-state="closed"> 562 Other Dog Sports <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 563 </a> 564 <ul class="navPage-childList" id="navPages-799"> 565 <li class="navPage-childList-item"> 566 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/flyball/">Flyball</a> 567 </li> 568 <li class="navPage-childList-item"> 569 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/other-dog-sports/herding/">Herding</a> 570 </li> 571 <li class="navPage-childList-item"> 572 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/other-dog-sports/dock-diving/">Dock Diving</a> 573 </li> 574 <li class="navPage-childList-item"> 575 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/competition-equipment/other-dog-sports/accessories/">Accessories</a> 576 </li> 577 </ul> 578 </li> 579 <li class="navPage-subMenu-item"> 580 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/competition-equipment/conditioning/">Conditioning</a> 581 </li> 582 </ul> 583</div> 584 </li> 585 <li class="navPages-item"> 586 <a class="navPages-action has-subMenu" href="https://www.jjdog.com/trainer-gear/" data-collapsible="navPages-32"> 587 Trainer Gear <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 588</a> 589<div class="navPage-subMenu" id="navPages-32" aria-hidden="true" tabindex="-1"> 590 <ul class="navPage-subMenu-list"> 591 <li class="navPage-subMenu-item"> 592 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/trainer-gear/">All Trainer Gear</a> 593 </li> 594 <li class="navPage-subMenu-item"> 595 <a 596 class="navPage-subMenu-action navPages-action has-subMenu" 597 href="https://www.jjdog.com/trainer-gear/apparel-accessories/" 598 data-collapsible="navPages-33" 599 data-collapsible-disabled-breakpoint="medium" 600 data-collapsible-disabled-state="open" 601 data-collapsible-enabled-state="closed"> 602 Apparel & Accessories <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 603 </a> 604 <ul class="navPage-childList" id="navPages-33"> 605 <li class="navPage-childList-item"> 606 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/trainer-gear/apparel-accessories/tops/">Tops</a> 607 </li> 608 <li class="navPage-childList-item"> 609 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/trainer-gear/apparel-accessories/bottoms/">Bottoms</a> 610 </li> 611 <li class="navPage-childList-item"> 612 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/trainer-gear/apparel-accessories/gloves/">Gloves</a> 613 </li> 614 <li class="navPage-childList-item"> 615 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/trainer-gear/apparel-accessories/pins/">Pins</a> 616 </li> 617 <li class="navPage-childList-item"> 618 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/trainer-gear/apparel-accessories/accessories/">Accessories</a> 619 </li> 620 <li class="navPage-childList-item"> 621 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/trainer-gear/apparel-accessories/view-all/">VIEW ALL</a> 622 </li> 623 </ul> 624 </li> 625 <li class="navPage-subMenu-item"> 626 <a 627 class="navPage-subMenu-action navPages-action has-subMenu" 628 href="https://www.jjdog.com/trainer-gear/training-tools/" 629 data-collapsible="navPages-747" 630 data-collapsible-disabled-breakpoint="medium" 631 data-collapsible-disabled-state="open" 632 data-collapsible-enabled-state="closed"> 633 Training Tools <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 634 </a> 635 <ul class="navPage-childList" id="navPages-747"> 636 <li class="navPage-childList-item"> 637 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/trainer-gear/training-tools/clicker-training/">Clicker Training</a> 638 </li> 639 <li class="navPage-childList-item"> 640 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/trainer-gear/training-tools/treat-pouches/">Treat Pouches</a> 641 </li> 642 <li class="navPage-childList-item"> 643 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/trainer-gear/training-tools/books-and-dvds/">Books & DVDs</a> 644 </li> 645 <li class="navPage-childList-item"> 646 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/trainer-gear/training-tools/accessories/">Accessories</a> 647 </li> 648 <li class="navPage-childList-item"> 649 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/trainer-gear/training-tools/view-all/">VIEW ALL</a> 650 </li> 651 </ul> 652 </li> 653 <li class="navPage-subMenu-item"> 654 <a 655 class="navPage-subMenu-action navPages-action has-subMenu" 656 href="https://www.jjdog.com/trainer-gear/bags-and-packs/" 657 data-collapsible="navPages-885" 658 data-collapsible-disabled-breakpoint="medium" 659 data-collaps
659ible-disabled-state="open" 660 data-collapsible-enabled-state="closed"> 661 Packs & Bags <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 662 </a> 663 <ul class="navPage-childList" id="navPages-885"> 664 <li class="navPage-childList-item"> 665 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/trainer-gear/training-tools/gear-bags/">Gear Bags</a> 666 </li> 667 <li class="navPage-childList-item"> 668 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/trainer-gear/bags-packs/backpacks/">Backpacks</a> 669 </li> 670 <li class="navPage-childList-item"> 671 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/trainer-gear/bags-packs/view-all/">VIEW ALL</a> 672 </li> 673 </ul> 674 </li> 675 </ul> 676</div> 677 </li> 678 <li class="navPages-item"> 679 <a class="navPages-action has-subMenu" href="https://www.jjdog.com/dog-gear/" data-collapsible="navPages-27"> 680 Dog Gear <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 681</a> 682<div class="navPage-subMenu" id="navPages-27" aria-hidden="true" tabindex="-1"> 683 <ul class="navPage-subMenu-list"> 684 <li class="navPage-subMenu-item"> 685 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/dog-gear/">All Dog Gear</a> 686 </li> 687 <li class="navPage-subMenu-item"> 688 <a 689 class="navPage-subMenu-action navPages-action has-subMenu" 690 href="https://www.jjdog.com/dog-gear/collars/" 691 data-collapsible="navPages-29" 692 data-collapsible-disabled-breakpoint="medium" 693 data-collapsible-disabled-state="open" 694 data-collapsible-enabled-state="closed"> 695 Collars <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 696 </a> 697 <ul class="navPage-childList" id="navPages-29"> 698 <li class="navPage-childList-item"> 699 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/collars/leather-collars/">Leather Collars</a> 700 </li> 701 <li class="navPage-childList-item"> 702 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/collars/nylon-collars/">Nylon Collars</a> 703 </li> 704 <li class="navPage-childList-item"> 705 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/collars/biothane-collars/">Biothane Collars</a> 706 </li> 707 <li class="navPage-childList-item"> 708 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/collars/metal-collars/">Metal Collars</a> 709 </li> 710 <li class="navPage-childList-item"> 711 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/collars/gps-collars/">GPS Collars</a> 712 </li> 713 <li class="navPage-childList-item"> 714 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/collars/accessories/">Accessories</a> 715 </li> 716 <li class="navPage-childList-item"> 717 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/collars/view-all/">VIEW ALL</a> 718 </li> 719 </ul> 720 </li> 721 <li class="navPage-subMenu-item"> 722 <a 723 class="navPage-subMenu-action navPages-action has-subMenu" 724 href="https://www.jjdog.com/dog-gear/leashes/" 725 data-collapsible="navPages-28" 726 data-collapsible-disabled-breakpoint="medium" 727 data-collapsible-disabled-state="open" 728 data-collapsible-enabled-state="closed"> 729 Leashes <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 730 </a> 731 <ul class="navPage-childList" id="navPages-28"> 732 <li class="navPage-childList-item"> 733 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/leashes/leather-leashes/">Leather Leashes</a> 734 </li> 735 <li class="navPage-childList-item"> 736 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/leashes/waist-leads/">Waist Leads</a> 737 </li> 738 <li class="navPage-childList-item"> 739 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/leashes/nylon-leashes/">Nylon Leashes</a> 740 </li> 741 <li class="navPage-childList-item"> 742 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/leashes/biothane-leashes/">Biothane Leashes</a> 743 </li> 744 <li class="navPage-childList-item"> 745 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/leashes/long-lines/">Long Lines</a> 746 </li> 747 <li class="navPage-childList-item"> 748 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/leashes/traffic-leads/">Traffic Leads</a> 749 </li> 750 <li class="navPage-childList-item"> 751 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/leashes/tabs/">Tabs</a> 752 </li> 753 <li class="navPage-childList-item"> 754 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/leashes/accessories/">Accessories</a> 755 </li> 756 <li class="navPage-childList-item"> 757 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/leashes/view-all/">VIEW ALL</a> 758 </li> 759 </ul> 760 </li> 761 <li class="navPage-subMenu-item"> 762 <a 763 class="navPage-subMenu-action navPages-action has-subMenu" 764 href="https://www.jjdog.com/dog-gear/harnesses-vests/" 765 data-collapsible="navPages-41" 766 data-collapsible-disabled-breakpoint="medium" 767 data-collapsible-disabled-state="open" 768 data-collapsible-enabled-state="closed"> 769 Harnesses & Vests <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 770 </a> 771 <ul class="navPage-childList" id="navPages-41"> 772 <li class="navPage-childList-item"> 773 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/harnesses-vests/adventure/">Adventure</a> 774 </li> 775 <li class="navPage-childList-item"> 776 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/harnesses-vests/tracking/">Tracking</a> 777 </li> 778 <li class="navPage-childList-item"> 779 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/harnesses-vests/vests/">Vests</a> 780 </li> 781 <li class="navPage-childList-item"> 782 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/harnesses-vests/patches/">Patches</a> 783 </li> 784 <li class="navPage-childList-item"> 785 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/harnesses-vests/accessories/">Accessories</a> 786 </li> 787 <li class="navPage-childList-item"> 788 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/harnesses-vests/view-all/">VIEW ALL</a> 789 </li> 790 </ul> 791 </li> 792 <li class="navPage-subMenu-item"> 793 <a 794 class="navPage-subMenu-action navPages-action has-subMenu" 795 href="https://www.jjdog.com/dog-gear/protection/" 796 data-collapsible="navPages-816" 797 data-collapsible-disabled-breakpoint="medium" 798 data-collapsible-disabled-state="open" 799 data-collapsible-enabled-state="closed"> 800 Protection <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 801 </a> 802 <ul class="navPage-childList" id="navPages-816"> 803 <li class="navPage-childList-item"> 804 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/protection/dog-boots/">Dog Boots</a> 805 </li> 806 <li class="navPage-childList-item"> 807 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/protection/dog-goggles/">Dog Goggles</a> 808 </li> 809 <li class="navPage-childList-item"> 810 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/protection/dog-muffs/">Dog Muffs</a> 811 </li> 812 <li class="navPage-childList-item"> 813 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/protection/dog-lights/">Dog Lights</a> 814 </li> 815 <li class="navPage-childList-item"> 816 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-gear/protection/view-all/">VIEW ALL</a> 817 </li> 818 </ul> 819 </li> 820 <li class="navPage-subMenu-item"> 821 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/dog-gear/muzzles/">Muzzles</a> 822 </li> 823 <li class="navPage-subMenu-item"> 824 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/dog-gear/service-therapy-dogs/">Service & Therapy Dogs</a> 825 </li> 826 <li class="navPage-subMenu-item"> 827 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/dog-gear/accessories/">Accessories</a> 828 </li> 829 </ul> 830</div> 831 </li> 832 <li class="navPages-item"> 833 <a class="navPages-action has-subMenu" href="https://www.jjdog.com/dog-supplies/" data-collapsible="navPages-745"> 834 Dog Supplies <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 835</a> 836<div class="navPage-subMenu" id="navPages-745" aria-hidden="true" tabindex="-1"> 837 <ul class="navPage-subMenu-list"> 838 <li class="navPage-subMenu-item"> 839 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/dog-supplies/">All Dog Supplies</a> 840 </li> 841 <li class="navPage-subMenu-item"> 842 <a 843 class="navPage-subMenu-action navPages-action has-subMenu" 844 href="https://www.jjdog.com/dog-supplies/toys-tugs/" 845 data-collapsible="navPages-49" 846 data-collapsible-disabled-breakpoint="medium" 847 data-collapsible-disabled-state="open" 848 data-collapsible-enabled-state="closed"> 849 Toys & Tugs <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 850 </a> 851 <ul class="navPage-childList" id="navPages-49"> 852 <li class="navPage-childList-item"> 853 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-supplies/toys-tugs/chew-toys/">Chew Toys</a> 854 </li> 855 <li class="navPage-childList-item"> 856 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-supplies/toys-tugs/fetch-toys/">Fetch Toys</a> 857 </li> 858 <li class="navPage-childList-item"> 859 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-supplies/toys-tugs/tug-toys/">Tug Toys</a> 860 </li> 861 <li class="navPage-childList-item"> 862 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-supplies/toys-tugs/interactive-toys/">Interactive Toys</a> 863 </li> 864 <li class="navPage-childList-item"> 865 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-supplies/toys-tugs/plush-toys/">Plush Toys</a> 866 </li> 867 <li class="navPage-childList-item"> 868 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-supplies/toys-tugs/accessories/">Accessories</a> 869 </li> 870 <li class="navPage-childList-item"> 871 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-supplies/toys-tugs/view-all/">VIEW ALL</a> 872 </li> 873 </ul> 874 </li> 875 <li class="navPage-subMenu-item"> 876 <a 877 class="navPage-subMenu-action navPages-action has-subMenu" 878 href="https://www.jjdog.com/dog-supplies/treats/" 879 data-collapsible="navPages-50" 880 data-collapsible-disabled-breakpoint="medium" 881 data-collapsible-disabled-state="open" 882 data-collapsible-enabled-state="closed"> 883 Treats <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 884 </a> 885 <ul class="navPage-childList" id="navPages-50"> 886 <li class="navPage-childList-item"> 887 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-supplies/treats/bones-rawhide/">Bones & Rawhide</a> 888 </li> 889 <li class="navPage-childList-item"> 890 <a class="navPage-childList-action navPages-action" href
890="https://www.jjdog.com/dog-supplies/treats/freeze-dried/">Freeze Dried</a> 891 </li> 892 <li class="navPage-childList-item"> 893 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-supplies/treats/soft-chews/">Soft Chews</a> 894 </li> 895 <li class="navPage-childList-item"> 896 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-supplies/treats/toy-fillers/">Toy Fillers</a> 897 </li> 898 <li class="navPage-childList-item"> 899 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-supplies/treats/view-all/">VIEW ALL</a> 900 </li> 901 </ul> 902 </li> 903 <li class="navPage-subMenu-item"> 904 <a 905 class="navPage-subMenu-action navPages-action has-subMenu" 906 href="https://www.jjdog.com/dog-supplies/health-nutrition/" 907 data-collapsible="navPages-40" 908 data-collapsible-disabled-breakpoint="medium" 909 data-collapsible-disabled-state="open" 910 data-collapsible-enabled-state="closed"> 911 Health & Nutrition <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 912 </a> 913 <ul class="navPage-childList" id="navPages-40"> 914 <li class="navPage-childList-item"> 915 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-supplies/health-nutrition/nutrition/">Nutrition</a> 916 </li> 917 <li class="navPage-childList-item"> 918 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-supplies/health-nutrition/oral-dental/">Oral & Dental</a> 919 </li> 920 <li class="navPage-childList-item"> 921 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-supplies/health-nutrition/mobility-rehab/">Mobility & Rehab</a> 922 </li> 923 <li class="navPage-childList-item"> 924 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-supplies/health-nutrition/first-aid/">First Aid</a> 925 </li> 926 <li class="navPage-childList-item"> 927 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-supplies/health-nutrition/view-all/">VIEW ALL</a> 928 </li> 929 </ul> 930 </li> 931 <li class="navPage-subMenu-item"> 932 <a 933 class="navPage-subMenu-action navPages-action has-subMenu" 934 href="https://www.jjdog.com/dog-supplies/grooming/" 935 data-collapsible="navPages-36" 936 data-collapsible-disabled-breakpoint="medium" 937 data-collapsible-disabled-state="open" 938 data-collapsible-enabled-state="closed"> 939 Grooming <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 940 </a> 941 <ul class="navPage-childList" id="navPages-36"> 942 <li class="navPage-childList-item"> 943 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-supplies/grooming/brushes/">Brushes</a> 944 </li> 945 <li class="navPage-childList-item"> 946 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-supplies/grooming/bath/">Bath</a> 947 </li> 948 <li class="navPage-childList-item"> 949 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-supplies/grooming/shampoo/">Shampoo</a> 950 </li> 951 <li class="navPage-childList-item"> 952 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-supplies/grooming/de-odor/">De-Odor</a> 953 </li> 954 <li class="navPage-childList-item"> 955 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-supplies/grooming/clippers/">Clippers</a> 956 </li> 957 <li class="navPage-childList-item"> 958 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-supplies/grooming/accessories/">Accessories</a> 959 </li> 960 <li class="navPage-childList-item"> 961 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/dog-supplies/grooming/view-all/">VIEW ALL</a> 962 </li> 963 </ul> 964 </li> 965 <li class="navPage-subMenu-item"> 966 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/dog-supplies/puppy-essentials/">Puppy Essentials</a> 967 </li> 968 <li class="navPage-subMenu-item"> 969 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/dog-supplies/accessories/">Accessories</a> 970 </li> 971 </ul> 972</div> 973 </li> 974 <li class="navPages-item"> 975 <a class="navPages-action has-subMenu" href="https://www.jjdog.com/dog-show-supplies/" data-collapsible="navPages-53"> 976 Show Supplies <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 977</a> 978<div class="navPage-subMenu" id="navPages-53" aria-hidden="true" tabindex="-1"> 979 <ul class="navPage-subMenu-list"> 980 <li class="navPage-subMenu-item"> 981 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/dog-show-supplies/">All Show Supplies</a> 982 </li> 983 <li class="navPage-subMenu-item"> 984 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/dog-show-supplies/ring-gates/">Ring Gates</a> 985 </li> 986 <li class="navPage-subMenu-item"> 987 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/dog-show-supplies/matting/">Matting</a> 988 </li> 989 <li class="navPage-subMenu-item"> 990 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/dog-show-supplies/cones/">Cones</a> 991 </li> 992 <li class="navPage-subMenu-item"> 993 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/dog-show-supplies/signs/">Signs</a> 994 </li> 995 <li class="navPage-subMenu-item"> 996 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/dog-show-supplies/accessories/">Accessories</a> 997 </li> 998 </ul> 999</div> 1000 </li> 1001 <li class="navPages-item"> 1002 <a class="navPages-action has-subMenu" href="https://www.jjdog.com/home-travel/" data-collapsible="navPages-34"> 1003 Home & Travel <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 1004</a> 1005<div class="navPage-subMenu" id="navPages-34" aria-hidden="true" tabindex="-1"> 1006 <ul class="navPage-subMenu-list"> 1007 <li class="navPage-subMenu-item"> 1008 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/home-travel/">All Home & Travel</a> 1009 </li> 1010 <li class="navPage-subMenu-item"> 1011 <a 1012 class="navPage-subMenu-action navPages-action has-subMenu" 1013 href="https://www.jjdog.com/home-travel/crates-kennels/" 1014 data-collapsible="navPages-37" 1015 data-collapsible-disabled-breakpoint="medium" 1016 data-collapsible-disabled-state="open" 1017 data-collapsible-enabled-state="closed"> 1018 Crates & Kennels <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 1019 </a> 1020 <ul class="navPage-childList" id="navPages-37"> 1021 <li class="navPage-childList-item"> 1022 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/home-travel/crates-kennels/travel-crates/">Travel Crates</a> 1023 </li> 1024 <li class="navPage-childList-item"> 1025 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/home-travel/crates-kennels/wire-kennels/">Wire Kennels</a> 1026 </li> 1027 <li class="navPage-childList-item"> 1028 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/home-travel/crates-kennels/accessories/">Accessories</a> 1029 </li> 1030 <li class="navPage-childList-item"> 1031 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/home-travel/crates-kennels/view-all/">VIEW ALL</a> 1032 </li> 1033 </ul> 1034 </li> 1035 <li class="navPage-subMenu-item"> 1036 <a 1037 class="navPage-subMenu-action navPages-action has-subMenu" 1038 href="https://www.jjdog.com/home-travel/bowls-feeders/" 1039 data-collapsible="navPages-35" 1040 data-collapsible-disabled-breakpoint="medium" 1041 data-collapsible-disabled-state="open" 1042 data-collapsible-enabled-state="closed"> 1043 Bowls & Feeders <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 1044 </a> 1045 <ul class="navPage-childList" id="navPages-35"> 1046 <li class="navPage-childList-item"> 1047 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/home-travel/bowls-feeders/bowls/">Bowls</a> 1048 </li> 1049 <li class="navPage-childList-item"> 1050 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/home-travel/bowls-feeders/dog-food-storage/">Dog Food Storage</a> 1051 </li> 1052 <li class="navPage-childList-item"> 1053 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/home-travel/bowls-feeders/water-bottles/">Water Bottles</a> 1054 </li> 1055 <li class="navPage-childList-item"> 1056 <a class="navPage-childList-action navPages-action" href="https://www.jjdog.com/home-travel/bowls-feeders/view-all/">VIEW ALL</a> 1057 </li> 1058 </ul> 1059 </li> 1060 <li class="navPage-subMenu-item"> 1061 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/home-travel/beds-cots/">Beds & Cots</a> 1062 </li> 1063 <li class="navPage-subMenu-item"> 1064 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/home-travel/vehicle-products/">Vehicle Products</a> 1065 </li> 1066 <li class="navPage-subMenu-item"> 1067 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/home-travel/scoops-bags/">Scoops & Bags</a> 1068 </li> 1069 <li class="navPage-subMenu-item"> 1070 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/home-travel/accessories/">Accessories</a> 1071 </li> 1072 </ul> 1073</div> 1074 </li> 1075 <li class="navPages-item"> 1076 <a class="navPages-action has-subMenu" href="https://www.jjdog.com/promos/" data-collapsible="navPages-748"> 1077 Promos <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use xlink:href="#icon-chevron-down" /></svg></i> 1078</a> 1079<div class="navPage-subMenu" id="navPages-748" aria-hidden="true" tabindex="-1"> 1080 <ul class="navPage-subMenu-list"> 1081 <li class="navPage-subMenu-item"> 1082 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/promos/">All Promos</a> 1083 </li> 1084 <li class="navPage-subMenu-item"> 1085 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/promos/clearance/">Clearance</a> 1086 </li> 1087 <li class="navPage-subMenu-item"> 1088 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/promos/volume-pricing/">Volume Pricing</a> 1089 </li> 1090 <li class="navPage-subMenu-item"> 1091 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/promos/featured-paws/">Featured Paws</a> 1092 </li> 1093 <li class="navPage-subMenu-item"> 1094 <a class="navPage-subMenu-action navPages-action" href="https://www.jjdog.com/promos/best-friends-club/">Best Friends Club</a> 1095 </li> 1096 </ul> 1097</div> 1098 </li> 1099 </ul> 1100 <ul class="navPages-list navPages-list--user"> 1101 <li class="navPages-item"> 1102 <a class="navPages-action" href="/quick-order/">Quick Order</a> 1103 </li> 1104 1105 1106 <li class="navPages-item"> 1107 <a class="navPages-action" href="/best-friends-club">Best Friends Club</a> 1108 </li> 1109 <li class="navPages-item"> 1110 <a class="navPages-action" href="/featured-paws">Featured Paws</a> 1111 </li> 1112 <li class="navPages-item"> 1113 <a class="navPages-action" href="/blog/">Blog</a> 1114 </li> 1115 1116 <li class="navPages-item"> 1117 <a class="navPages-action" href="/contact-us">Contact Us</a> 1118 </li> 1119 1120 1121 1122 <li class="navPages-item"> 1123 <a class="navPages-action" href="https://www.jjdog.com/login.php">Sign in</a> 1124 or <a class="navPages-action" href="https://www.jjdog.com/login.php?action=create_account">Register</a> 1125 </li> 1126 <li class="navPages-item"> 1127 <ul class="socialLinks socialLinks--alt"> 1128 <li class="socialLinks-item"> 1129 <a class="icon icon--facebook" href="https://www.facebook.com/jjdogsupplies" target="_blank" rel="noopener"> 1130 <svg><use xlink:href="#icon-facebook" /></svg> 1131 </a> 1132 </li> 1133 <li class="socialLinks-item"> 1134 <a class="icon icon--instagram" href="https://www.instagram.com/jjdogsupplies" target="_blank" rel="noopener"> 1135 <svg><use xlink:href="#icon-instagram" /></svg> 1136 </a> 1137 </li> 1138 <li class="socialLinks-item"> 1139 <a class="icon icon--youtube" href="https://www.youtube.com/c/jjdogsupplies" target="_blank" rel="noopener"> 1140 <svg><use xlink:href="#icon-youtube" /></svg> 1141 </a> 1142 </li> 1143 </ul> 1144 </li> 1145 <li class="navPages-item">
1146 <span class="show-room-mobile"><a href="https://www.jjdog.com/shipping-information/">FREE SHIPPING* for orders $75+</a></span> 1147 </li> 1148 </ul> 1149</nav> 1150 </div> 1151</header> 1152<div data-content-region="header_bottom"></div> 1153
1153<script type="77683c8daf3a83c7926e58dc-text/javascript"> 1154 $(document).on('Searchanise.ResultsUpdated', function(event, results) { 1155 //Tmp Solution until its live 1156 $('.snize-quick-view-button').remove(); 1157 $('.snize-product').prepend("<div class='card-figcaption-body'><a class='snize-button snize-action-button card-figcaption-button zoy-quickview'>Quick view</a></div>"); 1158 }); 1159</script>
1159 1160<div class="body" data-currency-code="USD"> 1161 1162 <div class="container"> 1163 1164 1165<div class="category"> 1166<ul class="breadcrumbs" itemscope itemtype="http://schema.org/BreadcrumbList"> 1167 <li class="breadcrumb " itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"> 1168 <a href="https://www.jjdog.com/" class="breadcrumb-label" itemprop="item"><span itemprop="name">Home</span></a> 1169 <meta itemprop="position" content="1" /> 1170 </li> 1171 <li class="breadcrumb " itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"> 1172 <a href="https://www.jjdog.com/competition-equipment/" class="breadcrumb-label" itemprop="item"><span itemprop="name">Competition Equipment</span></a> 1173 <meta itemprop="position" content="2" /> 1174 </li> 1175 <li class="breadcrumb " itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"> 1176 <a href="https://www.jjdog.com/competition-equipment/rally/" class="breadcrumb-label" itemprop="item"><span itemprop="name">Rally</span></a> 1177 <meta itemprop="position" content="3" /> 1178 </li> 1179 <li class="breadcrumb is-active" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"> 1180 <meta itemprop="item" content="https://www.jjdog.com/competition-equipment/rally/utility-articles/"> 1181 <span class="breadcrumb-label" itemprop="name">Utility Articles</span> 1182 <meta itemprop="position" content="4" /> 1183 </li> 1184</ul> 1185 1186 <h1 class="page-heading">Dog Utility Articles</h1> 1187 1188 <div data-content-region="category_below_header"></div> 1189 1190<p><span id="docs-internal-guid-f107c4b6-7fff-a650-c682-232cd2762a97"><span>Choose from our selection of utility articles for rally dog events and training sessions. Our competition-focused utility articles include single, double and triple bar styles commonly used in highly competitive rally dog events. We feature a variety of dog utility articles made from different materials including wood, metal, and leather.</span></span></p>
1191<script src="//www.searchanise.com/widgets/bigcommerce/init.js?api_key=7y3i6j5K9Q" type="77683c8daf3a83c7926e58dc-text/javascript"></script>
1191 1192<div class="snize" id="snize_results"></div> 1193 1194<div id="shogun-below-grid-placeholder"></div>
1195<script type="77683c8daf3a83c7926e58dc-text/javascript"> 1196 document.addEventListener("DOMContentLoaded", function () { 1197 var shogunBelow = document.querySelector(".shogun-below-grid"); 1198 var placeholder = document.getElementById("shogun-below-grid-placeholder"); 1199 1200 if (shogunBelow && placeholder) { 1201 placeholder.parentNode.insertBefore(shogunBelow, placeholder.nextSibling); 1202 } 1203 }); 1204</script>
1204 1205 1206<style type="text/css"><!-- 1207/* Load spinner */ 1208#snize-preload-spinner { 1209 height: 100px; 1210 width: 32px; 1211 margin: 0 auto; 1212 background-position: 0px center; 1213 background-repeat: no-repeat; 1214 background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYAAAAALCAYAAAB2x1oQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAIj0lEQVR42u2bbWhTWRrHn3Puzc37JNYmTduhTMZBZLBF6gt+2h1HMxRUOrjmgzJfXGUXLU23Y0WHYpdWikp13LZU2cVZvwwK1i0WEcq2ju5+ErVSapEi40TqtE3TtE2meb0v5+wHE4l3kjRX9qaF6QMXwsn/3t/93//Jc9P0XIDVWq3VWq3V+k0WAgCYnZ01CILwNaX0DwBgBYAxjHFHaWnpfzPtNDMz85Eoit8AwOfJoR9Ylj1bUlLyKpN+enr6d4SQEwCwEQCCCKF/aTSab202WxQA4P79+6ZQKPS1JEluhJCVUjqq1Wo79uzZ86AQ/CtXrpgmJydPJhKJfRjjIkrpiMlk6mhpafmhEPzjx49/MD4+/k00Gn3LLy4uPn/z5s2hleh/YGDgo2g0ejqdbzAYztTU1BQk/wsXLnw8Ozt7GgB2JYeGbDbbmaampp/eh690/h85cuQTr9f7Dt/pdJ65evXqj4XgK/V/586dz3ieP4EQqqKUBhmG6bVYLN/u2LEj/D58pfm3tbV9Hg6HTyCENhFC5rVabV95efn5o0ePhgvRf9xu9665ubmTKb7BYOjbsGHD2YsXL/5SCP5y+8+VPwoEAqZEIjFICNn+zp0BIRFj/OeysrJ/po/7fL4qURTvUUqLZfoAy7I7HQ7HaPr41NTUHwkhf6eUsunjGOOHWq3WNTo6CvPz8/ckSdomO29Rp9Mdra2tvaomv7e3F16+fHk/kUhskfu3Wq11bW1t/1CTf+7cOfz48eP/hMPhTbL3SVlZWX1/f//lleT/7t27myKRyGAmvtFodO3evXtEzfzb29urZ2dnByVJKkofZxhm3mazuZqbm58q4QMAKJn/Bw4c2OL1egcFQbCmj2s0mqDT6XTduHHjiZp8pf77+/uPxOPxKwDAyvSPioqKdlZVVSniK82/paXlT8FgsEfuX6vVPlm3bt0Ot9sNavaf2traY1NTU92EEJw+bjKZRrZu3fr7U6dOETX5y+1/qfwxz/PNlNLtCCFI3wCAJYR0+/3+svQdJUn6DgCKM+iLk++9Lb/fX0YI6QYAVq6nlG7neb45FAqdFkVxG6UUZBubSCS6BwcHP
12141STPzEx0SpvfgAAlFI2FAp1dnZ2VqjJf/bsWau8+QMAEEKwz+e7VFdXV7GS/Mdise8IIcXyvAghxbFYTPX8g8HgNXnzS16XomAweE0pX+n8n56eviZv/gAAgiBYp6enVecr8T84OPhhIpHoppSy8usriuK2UCj0V6V8Jfl3dnZWhEKhTnnzS970trx+/bpVzf5TV1dX4fP5LsmbPwBAOBzeNDY2dkZN/nL7zyd/TCn9KsdPRAZRFL9Mm9DrKaVbsokppVv8fv+Gt1/h3uxryKH/SpKkrHxCiC4SiajKFwThYIbmA5RSkCRJ5/f796nJj8fjWf2Losh5vd79K8X/0NDQp5IkVWc7niRJ1UNDQ5+qlX9XV9fGeDxele184/F4VVdX10YlfCXz3+PxVC0uLm7MJl5cXNzo8Xg2qcVX6j8SiXxJCNHlyOugEr7S/P1+/z5JknTZzpfn+YNq9h+v17tfFEUumz4Wi6nKX27/+eTPUkrLKKWQ40NYnnrN83xObVLjAIDx1L5L6MskSUrdwTKWIAiq8gVByMmPRqMlavJjsRjOJQgGgyUrxf/CwoI9+edmVv3CwoIDAJ6rkb/X612Sn9Lky09+cPKa/8PDw8VL/VNteHi4SC2+Uv+CIJTn0kqS5Eg1o3z4SvOPRqMlubQ8zzsopUSt/hMKhUpyaaPRaLGa/OX2n0/+GCE0leuAGOPJ1GuO43y5DogQAo7jfJn2zaKfYhjGl0uj0WhU5Ws0Gn+2OzSlFAwGw4yafL1eH8jFt1qtMyvF/5o1a/xLNUCr1apa/k6n059qmJm2dE2+fCXzf/PmzfNL8aurq+fV4iv1n37tMhXDMD4lfKX5GwyGmVxzKzmfVes/FotlZom5HVCTv9z+88kfI4S+l/+elLZFWZa9ndrBbrePI4Se5NA/sdvt4yk9y7K3EULRHPrvGYa5nu0CIYTiRqNRVT7HcddzXKC43W7vU5Ov1+uv52h+vNPpvLVS/O/ates5wzBPs+XFMMxTl8v1XK38PR7PmE6nG812vjqdbtTj8Ywp4SuZ/11dXSNms3ksG99sNo91d3ePqMVX6t9oNN5GCMVz5HVdCV9p/na7vY9hmHi28+U47rqa/cfpdN7SaDR8Nr5er1eVv9z+88kfcxzXjhB6mOknaIxxvd1un5I1hcMAEMigDyTfg7QTnsIY1wOAmOFu9ZDjuHaLxdLKsuyjDGZErVZb73K5flaTX1FR0arT6X51UTHGxGKxNDQ0NEyoya+srDxtNptH5HyGYYjD4Wjs6emZWEn+9Xr9YYxxIIM+oNfrVc/farUeYll2Xq5nWXbearUeUspXOv9LS0sPcRwXlPM5jguWlpaqzlfi3+Vy/azVausRQmIG/SOLxdKqlK8k/4aGhgmLxdKAMSZyvU6ne1pRUdGqZv/p6emZcDgcjQzD/IpvNptHKisrT6vJX27/+eSfeg7AJAjCXyilbnizDnU0j3WozQDwWXLoAcuy7XmsQ6+CN+ugezUazd9sNlsYAODevXumxcXFE5Ik7UMIFVFKRzmOO793794HheBfvnzZNDk5eZLn+f0YYyuldNRkMp1f4jmA/xu/sbHxgxcvXrzzHMDatWs7ent7/70S/Q8MDHwciUSaIW0dstFobK+pqfmpEPl3dHR8EggEmuHddfDtTU1NP74PX+n8P3z48PpXr141A8AXKX7yOYAXheAr9Z9cB34yuQ58nmGYPrPZ3LFz58734ivNP7kO/iRCqIoQEuQ47lZ5efn5Y8eOhQvRf9xu9xdzc3Mn0p8DWL9+/dlLly79Ugj+cvtfKv/VWq3VWq3V+g3W/wAZmNaB1vZW4QAAAABJRU5ErkJggg==); 1215} 1216--></style> 1217
1218<script type="77683c8daf3a83c7926e58dc-text/javascript">// <![CDATA[ 1219(function(window, undefined) { 1220 var sXpos = 0, sIndex = 0, sTotalFrames = 12, sInterval = null; 1221 1222 if (document.getElementById('snize_results').innerHTML != '') { 1223 return; 1224 } 1225 1226 document.getElementById('snize_results').innerHTML = '<div id="snize-preload-spinner"></div>'; 1227 sInterval = setInterval(function() 1228 { 1229 var spinner = document.getElementById('snize-preload-spinner'); 1230 if (spinner) { 1231 document.getElementById('snize-preload-spinner').style.backgroundPosition = (- sXpos) + 'px center'; 1232 } else { 1233 clearInterval(sInterval); 1234 } 1235 1236 sXpos += 32; 1237 sIndex += 1; 1238 1239 if (sIndex >= 12) { 1240 sXpos = 0; 1241 sIndex = 0; 1242 } 1243 }, 30); 1244}(window)); 1245// ]]></script>
1245 1246 1247 1248 </div> 1249 <div id="modal" class="modal" data-reveal data-prevent-quick-search-close> 1250 <a href="#" class="modal-close" aria-label="Close" role="button"> 1251 <span aria-hidden="true">×</span> 1252 </a> 1253 <div class="modal-content"></div> 1254 <div class="loadingOverlay"></div> 1255</div> 1256 <div id="alert-modal" class="modal modal--alert modal--small" data-reveal data-prevent-quick-search-close> 1257 <div class="swal2-icon swal2-error swal2-icon-show"><span class="swal2-x-mark"><span class="swal2-x-mark-line-left"></span><span class="swal2-x-mark-line-right"></span></span></div> 1258 1259 <div class="modal-content"></div> 1260 1261 <div class="button-container"><button type="button" class="confirm button" data-reveal-close>OK</button></div> 1262</div> 1263</div> 1264 <footer class="footer" role="contentinfo"> 1265 <div class="container"> 1266 <section class="footer-info"> 1267 <article class="footer-info-col footer-info-col--small" data-section-type="footer-webPages"> 1268 <h5 class="footer-info-heading">Quick Links</h5> 1269 <ul class="footer-info-list"> 1270 <li> 1271 <a href="https://www.jjdog.com/best-friends-club">Best Friends Club</a> 1272 </li> 1273 <li> 1274 <a href="https://www.jjdog.com/featured-paws">Featured Paws</a> 1275 </li> 1276<li> 1277 <a href="https://www.jjdog.com/about-us/">About Us</a> 1278 </li> 1279 1280 1281 <li> 1282 <a href="https://www.jjdog.com/giftcertificates.php">Gift Certificates</a> 1283 </li> 1284 1285 <li> 1286 <a href="https://www.jjdog.com/shopping-faq/">Shopping FAQ</a> 1287 </li> 1288 <li> 1289 <a href="https://www.jjdog.com/shipping-information/">Shipping Information</a> 1290 </li> 1291 <li> 1292 <a href="https://www.jjdog.com/returns-warranty/">Returns & Warranty</a> 1293 </li> 1294 <li> 1295 <a href="https://www.jjdog.com/customer-service/">Customer Service</a> 1296 </li> 1297 1298 <li> 1299 <a href="https://www.jjdog.com/partner-program/">Partner Program</a> 1300 </li> 1301 <li> 1302 <a href="https://www.jjdog.com/blog/">Dog Training Blog</a> 1303 1304 </li> 1305 <li> 1306 <a href="https://www.jjdog.com/request-a-catalog/">Catalog Request</a> 1307 </li> 1308 <li> 1309 <a href="https://www.jjdog.com/donations/">Donations</a> 1310 </li> 1311 <li> 1312 <a href="https://www.jjdog.com/promo-restrictions/">Promo Restrictions</a> 1313 </li> 1314 <li> 1315 <a href="https://www.jjdog.com/international-customers/">International Customers</a> 1316 </li> 1317 <li> 1318 <a href="https://www.jjdog.com/privacy-policy/">Privacy Policy</a> 1319 </li> 1320 <li> 1321 <a href="https://www.jjdog.com/terms-of-use/">Terms of Use</a> 1322 </li> 1323 <li> 1324 <a href="https://www.jjdog.com/accessibility/">Accessibility</a> 1325 </li> 1326 </ul> 1327 </article> 1328 1329 <article class="footer-info-col footer-info-col--small" data-section-type="footer-categories"> 1330 <h5 class="footer-info-heading">Categories</h5> 1331 <ul class="footer-info-list"> 1332 <li> 1333 <a href="https://www.jjdog.com/promos/clearance/">Clearance</a> 1334 </li> 1335 <li> 1336 <a href="https://www.jjdog.com/new-products/">New</a> 1337 </li> 1338 <li> 1339 <a href="https://www.jjdog.com/competition-equipment/">Competition Equipment</a> 1340 </li> 1341 <li> 1342 <a href="https://www.jjdog.com/trainer-gear/">Trainer Gear</a> 1343 </li> 1344 <li> 1345 <a href="https://www.jjdog.com/dog-gear/">Dog Gear</a> 1346 </li> 1347 <li> 1348 <a href="https://www.jjdog.com/dog-supplies/">Dog Supplies</a> 1349 </li> 1350 <li> 1351 <a href="https://www.jjdog.com/dog-show-supplies/">Show Supplies</a> 1352 </li> 1353 <li> 1354 <a href="https://www.jjdog.com/home-travel/">Home & Travel</a> 1355 </li> 1356 <li> 1357 <a href="https://www.jjdog.com/promos/">Promos</a> 1358 </li> 1359 </ul> 1360 </article> 1361 1362 1363 <article class="footer-info-col footer-info-col--small" data-section-type="footer-brands"> 1364 <h5 class="footer-info-heading">Popular Brands</h5> 1365 <ul class="footer-info-list"> 1366 <li> 1367 <a href="https://www.jjdog.com/j-j-dog-supplies/">J&J Dog Supplies</a> 1368 </li> 1369 <li> 1370 <a href="https://www.jjdog.com/ray-allen-manufacturing/">Ray Allen Manufacturing</a> 1371 </li> 1372 <li> 1373 <a href="https://www.jjdog.com/kong/">KONG</a> 1374 </li> 1375 <li> 1376 <a href="https://www.jjdog.com/herm-sprenger/">Herm Sprenger</a> 1377 </li> 1378 <li> 1379 <a href="https://www.jjdog.com/ruffwear/">RuffWear</a> 1380 </li> 1381 <li> 1382 <a href="https://www.jjdog.com/clip-and-go-agility/">Clip and Go Agility</a> 1383 </li> 1384 <li> 1385 <a href="https://www.jjdog.com/5-11-tactical/">5.11 Tactical</a> 1386 </li> 1387 <li> 1388 <a href="https://www.jjdog.com/julius-k-9/">Julius K-9</a> 1389 </li> 1390 <li> 1391 <a href="https://www.jjdog.com/company-of-animals/">Company of Animals</a> 1392 </li> 1393 <li> 1394 <a href="https://www.jjdog.com/fitpaws/">FitPAWS</a> 1395 </li> 1396 <li><a href="https://www.jjdog.com/brands/">View All</a></li> 1397 </ul> 1398 </article> 1399 1400 <article class="footer-info-col footer-info-col--small" data-section-type="storeInfo"> 1401 <h5 class="footer-info-heading">Contact Us</h5> 1402 <ul class="footer-info-list"> 1403 <li><a href="tel:+1-800-642-2050"><strong><i class="fa fa-phone" aria-hidden="true"></i> 1-800-642-2050</strong></a> </li> 1404<li><strong><a href="https://www.jjdog.com/contact-us/"><i class="fa fa-paper-plane" aria-hidden="true"></i> Send Message</a></strong> </li> 1405 <li><a href="https://www.google.com/maps/place/J%26J+Dog+Supplies/@38.8458193,-104.7124816,17z/data=!3m1!4b1!4m5!3m4!1s0x87e195e9541d6615:0xeb9fa1466ab815c!8m2!3d38.8458193!4d-104.7102929?hl=en"><i class="fa fa-car" aria-hidden="true"></i> <strong>Get Directions<br></strong>J&J Dog Supplies<br> 1406975 Ford St<br> 1407Colorado Springs, CO 80915</a> </li> 1408 </ul> 1409 </article> 1410 1411 <article class="footer-info-col" data-section-type="newsletterSubscription"> 1412 <h5 class="footer-info-heading">Subscribe to our newsletter</h5> 1413<ul class="footer-info-list"><li>Get the latest updates on new products and upcoming sales</li></ul> 1414 1415<div class="klaviyo-form-VxY4Ui"></div> 1416<!-- 1417<form class="form" action="https://www.jjdog.com/subscribe.php" method="post"> 1418 <fieldset class="form-fieldset"> 1419 <input type="hidden" name="action" value="subscribe"> 1420 <input type="hidden" name="nl_first_name" value="bc"> 1421 <input type="hidden" name="check" value="1"> 1422 <div class="form-field"> 1423 <label class="form-label is-srOnly" for="nl_email">Email Address</label> 1424 <div class="form-prefixPostfix wrap"> 1425 <input class="form-input" id="nl_email" name="nl_email" type="email" value="" placeholder="Your email address"> 1426 <input class="button button--primary form-prefixPostfix-button--postfix" type="submit" value="Subscribe"> 1427 </div> 1428 </div> 1429 </fieldset> 1430</form> 1431--> 1432 1433 1434 <div id="google-rating-badge"> </div> 1435 1436 <div class="payment-icons"> 1437 1438 <img class="payment-icons" src="https://cdn11.bigcommerce.com/s-cftgfbe14j/product_images/uploaded_images/payment-methods.png?t=1596832795&_ga=2.66591276.321628550.1596465426-1511795599.1594160554" alt="Payment Methods Accepted: Paypal, Visa, Mastercard, Discover, AmEx"> 1439 </div> 1440 1441 1442 1443 1444 </article> 1445 </section> 1446 1447 <div class="footer-copyright"> 1448 <p class="powered-by">© 2026 J&J Dog Supplies </p> 1449 </div> 1450 </div> 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463</footer> 1464 1465
1465<script type="77683c8daf3a83c7926e58dc-text/javascript">window.__webpack_public_path__ = "https://cdn11.bigcommerce.com/s-cftgfbe14j/stencil/1d272760-e709-0138-dd55-0242ac11000f/e/959864e0-7e25-013f-a515-4add52f6d68f/dist/";</script>
1465 1466
1466<script src="https://cdn11.bigcommerce.com/s-cftgfbe14j/stencil/1d272760-e709-0138-dd55-0242ac11000f/e/959864e0-7e25-013f-a515-4add52f6d68f/dist/theme-bundle.main.js" type="77683c8daf3a83c7926e58dc-text/javascript"></script>
1466 1467
1467<script type="77683c8daf3a83c7926e58dc-text/javascript"> 1468 window.stencilBootstrap("category", "{\"categoryProductsPerPage\":12,\"categoryId\":855,\"themeSettings\":{\"optimizedCheckout-formChecklist-color\":\"#333333\",\"homepage_new_products_column_count\":4,\"card--alternate-color--hover\":\"#ffffff\",\"optimizedCheckout-colorFocus\":\"#4496f6\",\"fontSize-root\":14,\"show_accept_amex\":false,\"optimizedCheckout-buttonPrimary-borderColorDisabled\":\"transparent\",\"homepage_top_products_count\":0,\"paymentbuttons-paypal-size\":\"responsive\",\"optimizedCheckout-buttonPrimary-backgroundColorActive\":\"#000000\",\"brandpage_products_per_page\":12,\"color-secondaryDarker\":\"#cccccc\",\"navUser-color\":\"#444444\",\"color-textBase--active\":\"#757575\",\"social_icon_placement_bottom\":\"bottom_none\",\"show_powered_by\":false,\"show_accept_amazonpay\":false,\"fontSize-h4\":20,\"checkRadio-borderColor\":\"#cccccc\",\"color-primaryDarker\":\"#333333\",\"optimizedCheckout-buttonPrimary-colorHover\":\"#ffffff\",\"brand_size\":\"190x250\",\"optimizedCheckout-logo-position\":\"left\",\"optimizedCheckout-discountBanner-backgroundColor\":\"#e5e5e5\",\"color-textLink--hover\":\"#099CBF\",\"pdp-sale-price-label\":\"Now:\",\"optimizedCheckout-buttonSecondary-backgroundColorHover\":\"#f5f5f5\",\"optimizedCheckout-headingPrimary-font\":\"Google_Montserrat_700\",\"logo_size\":\"183x110\",\"optimizedCheckout-formField-backgroundColor\":\"#ffffff\",\"footer-backgroundColor\":\"#ffffff\",\"navPages-color\":\"#185076\",\"productpage_reviews_count\":9,\"optimizedCheckout-step-borderColor\":\"#dddddd\",\"show_accept_paypal\":false,\"paymentbuttons-paypal-label\":\"checkout\",\"paymentbuttons-paypal-shape\":\"pill\",\"optimizedCheckout-discountBanner-textColor\":\"#333333\",\"optimizedCheckout-backgroundImage-size\":\"1000x400\",\"pdp-retail-price-label\":\"MSRP:\",\"optimizedCheckout-buttonPrimary-font\":\"Google_Montserrat_500\",\"carousel-dot-color\":\"#333333\",\"button--disabled-backgroundColor\":\"#cccccc\",\"blockquote-cite-font-color\":\"#999999\",\"optimizedCheckout-formField-shadowColor\":\"transparent\",\"categorypage_products_per_page\":12,\"container-fill-base\":\"#ffffff\",\"paymentbuttons-paypal-layout\":\"vertical\",\"homepage_featured_products_column_count\":4,\"button--default-color\":\"#666666\",\"pace-progress-backgroundColor\":\"#099CBF\",\"color-textLink--active\":\"#099CBF\",\"optimizedCheckout-loadingToaster-backgroundColor\":\"#333333\",\"color-textHeading\":\"#185076\",\"show_accept_discover\":false,\"optimizedCheckout-formField-errorColor\":\"#d14343\",\"spinner-borderColor-dark\":\"#099CBF\",\"restrict_to_login\":false,\"input-font-color\":\"#666666\",\"select-bg-color\":\"#ffffff\",\"show_accept_mastercard\":false,\"show_custom_fields_tabs\":true,\"color_text_product_sale_badges\":\"#ffffff\",\"optimizedCheckout-link-font\":\"Google_Montserrat_500\",\"homepage_show_carousel_arrows\":false,\"carousel-arrow-bgColor\":\"#ffffff\",\"lazyload_mode\":\"lazyload\",\"carousel-title-color\":\"#444444\",\"header-top-banner\":\"Showroom temporarily closed. Curbside pickup is available.\",\"supported_payment_methods\":[\"card\",\"paypal\"],\"color_hover_product_sale_badges\":\"#000000\",\"show_accept_googlepay\":false,\"card--alternate-borderColor\":\"#ffffff\",\"homepage_new_products_count\":0,\"button--disabled-color\":\"#ffffff\",\"color-primaryDark\":\"#666666\",\"color-grey\":\"#999999\",\"body-font\":\"Google_Open+Sans_400\",\"optimizedCheckout-step-textColor\":\"#ffffff\",\"optimizedCheckout-buttonPrimary-borderColorActive\":\"transparent\",\"navPages-subMenu-backgroundColor\":\"#e5e5e5\",\"button--primary-backgroundColor\":\"#099CBF\",\"optimizedCheckout-formField-borderColor\":\"#cccccc\",\"checkRadio-color\":\"#333333\",\"show_product_dimensions\":false,\"optimizedCheckout-link-color\":\"#476bef\",\"card-figcaption-button-background\":\"#099CBF\",\"icon-color-hover\":\"#999999\",\"button--default-borderColor\":\"#cccccc\",\"optimizedCheckout-headingSecondary-font\":\"Google_Montserrat_700\",\"headings-font\":\"Google_O
1468swald_400\",\"label-backgroundColor\":\"#cccccc\",\"button--primary-backgroundColorHover\":\"#22A6C5\",\"pdp-non-sale-price-label\":\"Was:\",\"button--disabled-borderColor\":\"transparent\",\"label-color\":\"#ffffff\",\"optimizedCheckout-headingSecondary-color\":\"#333333\",\"select-arrow-color\":\"#757575\",\"logo_fontSize\":28,\"alert-backgroundColor\":\"#ffffff\",\"optimizedCheckout-logo-size\":\"250x100\",\"default_image_brand\":\"img/BrandDefault.gif\",\"card-title-color\":\"#185076\",\"product_list_display_mode\":\"grid\",\"optimizedCheckout-link-hoverColor\":\"#002fe1\",\"fontSize-h5\":15,\"product_size\":\"500x659\",\"paymentbuttons-paypal-color\":\"gold\",\"homepage_show_carousel\":false,\"optimizedCheckout-body-backgroundColor\":\"#ffffff\",\"carousel-arrow-borderColor\":\"#ffffff\",\"button--default-borderColorActive\":\"#757575\",\"header-backgroundColor\":\"#FFFFFF\",\"paymentbuttons-paypal-tagline\":false,\"color-greyDarkest\":\"#000000\",\"color_badge_product_sale_badges\":\"#007dc6\",\"price_ranges\":true,\"productpage_videos_count\":8,\"color-greyDark\":\"#666666\",\"optimizedCheckout-buttonSecondary-borderColorHover\":\"#999999\",\"optimizedCheckout-discountBanner-iconColor\":\"#333333\",\"optimizedCheckout-buttonSecondary-borderColor\":\"#cccccc\",\"optimizedCheckout-loadingToaster-textColor\":\"#ffffff\",\"optimizedCheckout-buttonPrimary-colorDisabled\":\"#ffffff\",\"optimizedCheckout-formField-placeholderColor\":\"#999999\",\"navUser-color-hover\":\"#757575\",\"icon-ratingFull\":\"#ffc600\",\"default_image_gift_certificate\":\"img/GiftCertificate.png\",\"color-textBase--hover\":\"#757575\",\"color-errorLight\":\"#ffdddd\",\"social_icon_placement_top\":true,\"blog_size\":\"190x250\",\"shop_by_price_visibility\":true,\"optimizedCheckout-buttonSecondary-colorActive\":\"#000000\",\"optimizedCheckout-orderSummary-backgroundColor\":\"#ffffff\",\"color-warningLight\":\"#fffdea\",\"show_product_weight\":true,\"button--default-colorActive\":\"#000000\",\"color-info\":\"#666666\",\"optimizedCheckout-formChecklist-backgroundColorSelected\":\"#f5f5f5\",\"show_product_quick_view\":true,\"button--default-borderColorHover\":\"#999999\",\"card--alternate-backgroundColor\":\"#ffffff\",\"hide_content_navigation\":true,\"pdp-price-label\":\"\",\"show_copyright_footer\":true,\"swatch_option_size\":\"22x22\",\"optimizedCheckout-orderSummary-borderColor\":\"#dddddd\",\"optimizedCheckout-show-logo\":\"none\",\"carousel-description-color\":\"#333333\",\"optimizedCheckout-formChecklist-backgroundColor\":\"#ffffff\",\"fontSize-h2\":25,\"optimizedCheckout-step-backgroundColor\":\"#757575\",\"optimizedCheckout-headingPrimary-color\":\"#333333\",\"color-textBase\":\"#333333\",\"color-warning\":\"#f1a500\",\"productgallery_size\":\"500x659\",\"alert-color\":\"#333333\",\"shop_by_brand_show_footer\":true,\"card-figcaption-button-color\":\"#FFFFFF\",\"searchpage_products_per_page\":12,\"color-textSecondary--active\":\"#333333\",\"optimizedCheckout-formField-inputControlColor\":\"#476bef\",\"optimizedCheckout-contentPrimary-color\":\"#333333\",\"optimizedCheckout-buttonSecondary-font\":\"Google_Montserrat_500\",\"storeName-color\":\"#333333\",\"optimizedCheckout-backgroundImage\":\"\",\"form-label-font-color\":\"#666666\",\"color-greyLightest\":\"#e5e5e5\",\"optimizedCheckout-header-backgroundColor\":\"#f5f5f5\",\"productpage_related_products_count\":10,\"optimizedCheckout-buttonSecondary-backgroundColorActive\":\"#e5e5e5\",\"color-textLink\":\"#333333\",\"color-greyLighter\":\"#cccccc\",\"color-secondaryDark\":\"#e5e5e5\",\"fontSize-h6\":13,\"paymentbuttons-paypal-fundingicons\":false,\"carousel-arrow-color\":\"#999999\",\"productpage_similar_by_views_count\":10,\"show-admin-bar\":true,\"pdp-custom-fields-tab-label\":\"Additional Information\",\"loadingOverlay-backgroundColor\":\"#ffffff\",\"optimizedCheckout-buttonPrimary-color\":\"#ffffff\",\"input-bg-color\":\"#ffffff\",\"navPages-subMenu-separatorColor\":\"#cccccc\",\"navPages-color-hover\":\"#007DC6\",\"color-infoLight\":\"#dfdfdf\",\"product_sale_badges\":\"none\",\"default_image_product\":\"img/ProductDefault.gif\",\"navUser-dropdown-borderColor\":\"#cccccc\",\"optimizedCheckout-buttonPrimary-colorActive\":\"#ffffff\",\"color-greyMedium\":\"#757575\",\"o
1468ptimizedCheckout-formChecklist-borderColor\":\"#cccccc\",\"fontSize-h1\":28,\"homepage_featured_products_count\":0,\"color-greyLight\":\"#999999\",\"optimizedCheckout-logo\":\"\",\"icon-ratingEmpty\":\"#cccccc\",\"show_product_details_tabs\":true,\"icon-color\":\"#757575\",\"overlay-backgroundColor\":\"#333333\",\"input-border-color-active\":\"#999999\",\"hide_contact_us_page_heading\":false,\"container-fill-dark\":\"#e5e5e5\",\"optimizedCheckout-buttonPrimary-backgroundColorDisabled\":\"#cccccc\",\"button--primary-color\":\"#ffffff\",\"optimizedCheckout-buttonPrimary-borderColorHover\":\"transparent\",\"color-successLight\":\"#d5ffd8\",\"color-greyDarker\":\"#333333\",\"show_product_quantity_box\":true,\"color-success\":\"#008a06\",\"optimizedCheckout-header-borderColor\":\"#dddddd\",\"zoom_size\":\"1280x1280\",\"color-white\":\"#ffffff\",\"optimizedCheckout-buttonSecondary-backgroundColor\":\"#ffffff\",\"productview_thumb_size\":\"50x50\",\"fontSize-h3\":22,\"spinner-borderColor-light\":\"#ffffff\",\"geotrust_ssl_common_name\":\"\",\"carousel-bgColor\":\"#ffffff\",\"carousel-dot-color-active\":\"#757575\",\"input-border-color\":\"#cccccc\",\"optimizedCheckout-buttonPrimary-backgroundColor\":\"#333333\",\"color-secondary\":\"#ffffff\",\"button--primary-backgroundColorActive\":\"#22A6C5\",\"color-textSecondary--hover\":\"#333333\",\"color-whitesBase\":\"#e5e5e5\",\"body-bg\":\"#ffffff\",\"dropdown--quickSearch-backgroundColor\":\"#e5e5e5\",\"optimizedCheckout-contentSecondary-font\":\"Google_Montserrat_500\",\"navUser-dropdown-backgroundColor\":\"#ffffff\",\"color-primary\":\"#757575\",\"optimizedCheckout-contentPrimary-font\":\"Google_Montserrat_500\",\"supported_card_type_icons\":[\"american_express\",\"diners\",\"discover\",\"mastercard\",\"visa\"],\"navigation_design\":\"simple\",\"optimizedCheckout-formField-textColor\":\"#333333\",\"color-black\":\"#ffffff\",\"homepage_top_products_column_count\":4,\"hide_page_heading\":false,\"optimizedCheckout-buttonSecondary-colorHover\":\"#333333\",\"button--primary-colorActive\":\"#ffffff\",\"homepage_stretch_carousel_images\":false,\"optimizedCheckout-contentSecondary-color\":\"#757575\",\"card-title-color-hover\":\"#099CBF\",\"applePay-button\":\"black\",\"thumb_size\":\"100x100\",\"hide_breadcrumbs\":false,\"show_accept_klarna\":false,\"optimizedCheckout-buttonPrimary-borderColor\":\"#333333\",\"navUser-indicator-backgroundColor\":\"#333333\",\"optimizedCheckout-buttonSecondary-borderColorActive\":\"#757575\",\"hide_blog_page_heading\":false,\"optimizedCheckout-header-textColor\":\"#333333\",\"hide_category_page_heading\":false,\"optimizedCheckout-show-backgroundImage\":false,\"color-primaryLight\":\"#999999\",\"show_accept_visa\":false,\"logo-position\":\"center\",\"show_product_reviews_tabs\":false,\"carousel-dot-bgColor\":\"#ffffff\",\"optimizedCheckout-form-textColor\":\"#666666\",\"optimizedCheckout-buttonSecondary-color\":\"#333333\",\"geotrust_ssl_seal_size\":\"M\",\"button--icon-svg-color\":\"#757575\",\"alert-color-alt\":\"#ffffff\",\"button--default-colorHover\":\"#333333\",\"checkRadio-backgroundColor\":\"#ffffff\",\"optimizedCheckout-buttonPrimary-backgroundColorHover\":\"#666666\",\"input-disabled-bg\":\"#ffffff\",\"dropdown--wishList-backgroundColor\":\"#ffffff\",\"container-border-global-color-base\":\"#e5e5e5\",\"productthumb_size\":\"100x100\",\"button--primary-colorHover\":\"#ffffff\",\"color-error\":\"#cc4749\",\"homepage_blog_posts_count\":3,\"color-textSecondary\":\"#757575\",\"gallery_size\":\"300x300\"},\"genericError\":\"Oops! Something went wrong.\",\"maintenanceModeSettings\":[],\"adminBarLanguage\":\"{\\\"locale\\\":\\\"en\\\",\\\"locales\\\":{\\\"admin.maintenance_header\\\":\\\"en\\\",\\\"admin.maintenance_tooltip\\\":\\\"en\\\",\\\"admin.maintenance_showstore_link\\\":\\\"en\\\",\\\"admin.prelaunch_header\\\":\\\"en\\\",\\\"admin.page_builder_link\\\":\\\"en\\\"},\\\"translations\\\":{\\\"admin.maintenance_header\\\":\\\"Your store is down for maintenance.\\\",\\\"admin.maintenance_tooltip\\\":\\\"Only administrators can view the store at the moment. Visit your control panel settings page to disable maintenance mode.\\\",\\\"admin.maintenance_showstore_link\\\":\\\"Click here to see what your visitors will see.\\\",\\\"admin.prelaunch_header\\\":\\\"Your storefront is private. Share your site with preview code:\\\",\\\"admin.page_builder_link\\\":\\\"Design this page in Page Builder\\\"}}\",\"urls\":{\"home\":\"https://www.jjdog.com/\",\"brands\":\"https://www.jjdog.com/brands/\",\"search\":\"https://www.jjdog.com/search.php\",\"compare\":\"https://www.jjdog.com/compare\",\"sitemap\":\"https://www.jjdog.com/sitemap.php\",\"contact_us_submit\":\"https://www.jjdog.com/pages.php?action=sendContactForm\",\"subscribe\"
1468:{\"action\":\"https://www.jjdog.com/subscribe.php\"},\"checkout\":{\"single_address\":\"https://www.jjdog.com/checkout\",\"multiple_address\":\"https://www.jjdog.com/checkout.php?action=multiple\"},\"account\":{\"orders\":{\"all\":\"https://www.jjdog.com/account.php?action=order_status\",\"completed\":\"https://www.jjdog.com/account.php?action=view_orders\",\"save_new_return\":\"https://www.jjdog.com/account.php?action=save_new_return\"},\"returns\":\"https://www.jjdog.com/account.php?action=view_returns\",\"addresses\":\"https://www.jjdog.com/account.php?action=address_book\",\"inbox\":\"https://www.jjdog.com/account.php?action=inbox\",\"send_message\":\"https://www.jjdog.com/account.php?action=send_message\",\"add_address\":\"https://www.jjdog.com/account.php?action=add_shipping_address\",\"update_action\":\"https://www.jjdog.com/account.php?action=update_account\",\"details\":\"https://www.jjdog.com/account.php?action=account_details\",\"recent_items\":\"https://www.jjdog.com/account.php?action=recent_items\",\"index\":\"https://www.jjdog.com/account.php\",\"wishlists\":{\"all\":\"https://www.jjdog.com/wishlist.php\",\"add\":\"https://www.jjdog.com/wishlist.php?action=addwishlist\",\"edit\":\"https://www.jjdog.com/wishlist.php?action=editwishlist\",\"delete\":\"https://www.jjdog.com/wishlist.php?action=deletewishlist\"},\"payment_methods\":{\"all\":\"https://www.jjdog.com/account.php?action=payment_methods\"}},\"auth\":{\"login\":\"https://www.jjdog.com/login.php\",\"check_login\":\"https://www.jjdog.com/login.php?action=check_login\",\"create_account\":\"https://www.jjdog.com/login.php?action=create_account\",\"save_new_account\":\"https://www.jjdog.com/login.php?action=save_new_account\",\"forgot_password\":\"https://www.jjdog.com/login.php?action=reset_password\",\"send_password_email\":\"https://www.jjdog.com/login.php?action=send_password_email\",\"save_new_password\":\"https://www.jjdog.com/login.php?action=save_new_password\",\"logout\":\"https://www.jjdog.com/login.php?action=logout\"},\"cart\":\"https://www.jjdog.com/cart.php\",\"product\":{\"post_review\":\"https://www.jjdog.com/postreview.php\"},\"gift_certificate\":{\"purchase\":\"https://www.jjdog.com/giftcertificates.php\",\"redeem\":\"https://www.jjdog.com/giftcertificates.php?action=redeem\",\"balance\":\"https://www.jjdog.com/giftcertificates.php?action=balance\"},\"rss\":{\"products\":[]}},\"secureBaseUrl\":\"https://www.jjdog.com\",\"cartId\":null,\"channelId\":1,\"template\":\"pages/category\"}").load(); 1469 </script>
1469 1470 1471
1471<script type="77683c8daf3a83c7926e58dc-text/javascript" src="https://cdn11.bigcommerce.com/shared/js/csrf-protection-header-5eeddd5de78d98d146ef4fd71b2aedce4161903e.js"></script>
vendor: 1 bytes, line 1471
1471
1472<script src="https://apis.google.com/js/platform.js?onload=renderBadge" async defer type="77683c8daf3a83c7926e58dc-text/javascript"></script>
1472 1473 1474
1475<script type="77683c8daf3a83c7926e58dc-text/javascript"> 1476window.renderBadge = function() { 1477 if ("INLINE" === "INLINE") { 1478 var ratingBadgeContainer = document.getElementById("google-rating-badge"); 1479 } else { 1480 var ratingBadgeContainer = document.createElement("div"); 1481 document.body.appendChild(ratingBadgeContainer); 1482 } 1483 1484 window.gapi.load('ratingbadge', function() { 1485 window.gapi.ratingbadge.render( 1486 ratingBadgeContainer, { 1487 "merchant_id": 9223190, 1488 "position": "INLINE" 1489 }); 1490 }); 1491} 1492 1493</script>
vendor: 1 bytes, line 1493
1493
1494<script src='https://na.shgcdn3.com/collector.js' async type="77683c8daf3a83c7926e58dc-text/javascript"></script>
1494<script src='https://static.klaviyo.com/onsite/js/U8CP5c/klaviyo.js?company_id=U8CP5c' async type="77683c8daf3a83c7926e58dc-text/javascript"></script>
1494<script src='https://api-server-3.goaffpro.com/loader.js?shop=cftgfbe14j' type="77683c8daf3a83c7926e58dc-text/javascript"></script>
1494<script src='https://api-server-3.goaffpro.com/loader.js?shop=cftgfbe14j' type="77683c8daf3a83c7926e58dc-text/javascript"></script>
vendor: 1 bytes, line 1494
1494
1495<script type="77683c8daf3a83c7926e58dc-text/javascript"> 1496 </script>
vendor: 1 bytes, line 1496
1496
1497<script type="77683c8daf3a83c7926e58dc-text/javascript"> 1498</script>
1498<script type="77683c8daf3a83c7926e58dc-text/javascript"> 1499 if (!document.querySelector('script#reamazejs_script')) { 1500 var rmzScript = document.createElement('script'); 1501 rmzScript.async = true; 1502 rmzScript.id = 'reamazejs_script'; 1503 rmzScript.setAttribute('src', 'https://cdn.reamaze.com/assets/reamaze-loader.js'); 1504 document.head.appendChild(rmzScript); 1505 } 1506 var _support = _support || { 'ui': {}, 'user': {} }; 1507 _support.account = "j-and-j-dog-supplies"; 1508 1509 1510 1511 1512 1513 1514 1515//--- reamaze_embeddable_56486_s 1516// Embeddable - J&J Dog Supplies Chat / Contact Form Shoutbox 1517if (!document.querySelector('script[src=\'https://cdn.reamaze.com/assets/reamaze.js\']')) { 1518 var rmzScript = document.createElement('script'); 1519 rmzScript.async = true; 1520 rmzScript.setAttribute('src', 'https://cdn.reamaze.com/assets/reamaze.js'); 1521 document.head.appendChild(rmzScript); 1522 } 1523 1524 var _support = _support || { 'ui': {}, 'user': {} }; 1525 _support['account'] = 'j-and-j-dog-supplies'; 1526 _support['ui']['contactMode'] = 'mixed'; 1527 _support['ui']['enableKb'] = 'false'; 1528 _support['ui']['styles'] = { 1529 widgetColor: 'rgb(9, 156, 191)', 1530 gradient: true, 1531 }; 1532 _support['ui']['shoutboxFacesMode'] = 'brand-avatar'; 1533 _support['ui']['widget'] = { 1534 icon: 'chat', 1535 displayOn: 'all', 1536 fontSize: 'default', 1537 allowBotProcessing: true, 1538 label: false, 1539 position: { 1540 bottom: '10px', 1541 left: '10px' 1542 }, 1543 size: '58', 1544 mobilePosition: { 1545 top: '22px', 1546 right: '83px' 1547 }, 1548 mobileSize: '35' 1549 }; 1550 _support['apps'] = { 1551 faq: {"enabled":false}, 1552 recentConversations: {}, 1553 orders: {"enabled":true} 1554 }; 1555//--- reamaze_embeddable_56486_e 1556</script>
1556 1557
1557<script type="77683c8daf3a83c7926e58dc-text/javascript"> 1558 var _support = _support || { 'ui': {}, 'user': {} }; 1559 _support['user'] = { 1560 email: '', 1561 name: '', 1562 }; 1563 </script>
1563 1564
1564<script type="77683c8daf3a83c7926e58dc-text/javascript"> 1565</script>
1565<script type="77683c8daf3a83c7926e58dc-text/javascript"> 1566</script>
vendor: 1 bytes, line 1566
1566
1567<script type="77683c8daf3a83c7926e58dc-text/javascript">function myInit(){ StampedFn.init({ apiKey: 'pubkey-TulFNkZbJ0Z75QFcX3MMaoO314Qhgk', sId: '156458' }); }</script>
vendor: 1 bytes, line 1567
1567
1568<script async onload="myInit()" type="77683c8daf3a83c7926e58dc-text/javascript" src="https://cdn1.stamped.io/files/widget.min.js"></script>
1568<script type="77683c8daf3a83c7926e58dc-text/javascript"> 1569</script>
1569 1570
1571<script async id='stamped-script-widget' data-store-hash='cftgfbe14j' src='https://cdn1.stamped.io/files/bigcommerce.min.js' type="77683c8daf3a83c7926e58dc-text/javascript"></script>
1571
1571<script type="77683c8daf3a83c7926e58dc-text/javascript"> 1572 (function() { 1573 window.shogunVariables = {}; 1574 window.shogunVariables.orderId = ''; 1575 })(); 1576 </script>
vendor: 1 bytes, line 1576
1576
1577<script async src="https://dmt83xaifx31y.cloudfront.net/public/js/prikidsizecharts.js?v=44#store=cftgfbe14j" crossorigin="anonymous" type="77683c8daf3a83c7926e58dc-text/javascript"></script>
1577<script src='https://bundling.arizonreports.cloud/bundle/v1/fe/dist/main.js' data-product-id='' data-product-name='' data-hidden_token ='eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJjaWQiOlsxXSwiY29ycyI6WyJodHRwczovL3d3dy5qamRvZy5jb20iXSwiZWF0IjoxNzkwNTExMzExLCJpYXQiOjE3OTAzMzg1MTEsImlzcyI6IkJDIiwic2lkIjoxMDAwODk2MTMwLCJzdWIiOiJCQyIsInN1Yl90eXBlIjowLCJ0b2tlbl90eXBlIjoxfQ.yvIFcbAwS9p_dLvng3fBMlRqc5c9iUB0W3WViFo6ix0mcKp5lnRFA6TpO-OCYWxthGXVFy5SOwdCWnCxky959w' data-site='cftgfbe14j' data-cat='855' data-customer='' data-page='category' cart_type='' id='bundle' type="77683c8daf3a83c7926e58dc-text/javascript"></script>
1577<script type="77683c8daf3a83c7926e58dc-text/javascript"> 1578(function () { 1579 'use strict'; 1580 1581 if (window.RAMBackorderPdpPatchV6Loaded) { 1582 return; 1583 } 1584 1585 window.RAMBackorderPdpPatchV6Loaded = true; 1586 1587 window.RAMBackorderPdpPatchLoaded = true; 1588 window.RAMBackorderPdpPatchV2Loaded = true; 1589 window.RAMBackorderPdpPatchV3Loaded = true; 1590 window.RAMBackorderPdpPatchV4Loaded = true; 1591 window.RAMBackorderPdpPatchV5Loaded = true; 1592 1593 var ENABLE_LEGACY_10000_LOGIC = false; 1594 var DEBUG = false; 1595 1596 var DEFAULT_UNAVAILABLE_MESSAGE = 1597 'This product is unavailable with the selected options.'; 1598 1599 var originalFetch = window.fetch; 1600 var originalXHROpen = window.XMLHttpRequest.prototype.open; 1601 var originalXHRSend = window.XMLHttpRequest.prototype.send; 1602 1603 var lastCurrentVariantResponseAt = 0; 1604 var fallbackTimer = null; 1605 1606 1607 function log() { 1608 if (!DEBUG || !window.console) { 1609 return; 1610 } 1611 1612 var args = Array.prototype.slice.call(arguments); 1613 1614 args.unshift('RAM Backorder V6:'); 1615 1616 console.log.apply(console, args); 1617 } 1618 1619 1620 function getBackorderWrapper() { 1621 return document.getElementById( 1622 'custom-backorder-wrapper' 1623 ); 1624 } 1625 1626 1627 function getAddToCartForm() { 1628 return document.querySelector( 1629 'form[data-cart-item-add]' 1630 ); 1631 } 1632 1633 1634 function getProductView() { 1635 return document.querySelector( 1636 '.productView' 1637 ) || document; 1638 } 1639 1640 1641 function getProductId() { 1642 var input = document.querySelector( 1643 'form[data-cart-item-add] input[name="product_id"]' 1644 ); 1645 1646 return input ? input.value : ''; 1647 } 1648 1649 1650 function getInventoryValue() { 1651 var marker = document.querySelector( 1652 '[data-ram-inventory]' 1653 ); 1654 1655 return marker 1656 ? String( 1657 marker.getAttribute( 1658 'data-ram-inventory' 1659 ) || '' 1660 ).toLowerCase() 1661 : ''; 1662 } 1663 1664 1665 function isBackorderProduct() { 1666 return getInventoryValue() === 'backorder'; 1667 } 1668 1669 1670 function isBuiltToOrderProduct() { 1671 return getInventoryValue() === 'built-to-order'; 1672 } 1673 1674 1675 function isDropshipProduct() { 1676 return getInventoryValue() === 'dropship'; 1677 } 1678 1679 1680 function isDropProduct() { 1681 return getInventoryValue() === 'drop'; 1682 } 1683 1684 1685 function getCurrentOptionSignature() { 1686 var form = getAddToCartForm(); 1687 1688 if (!form) { 1689 return ''; 1690 } 1691 1692 var optionArea = form.querySelector( 1693 '[data-product-option-change]' 1694 ); 1695 1696 if (!optionArea) { 1697 return ''; 1698 } 1699 1700 var elements = optionArea.querySelectorAll( 1701 'input[name], select[name], textarea[name]' 1702 ); 1703 1704 var values = []; 1705 1706 elements.forEach(function (el) { 1707 if ( 1708 ( 1709 el.type === 'radio' || 1710 el.type === 'checkbox' 1711 ) && 1712 !el.checked 1713 ) { 1714 return; 1715 } 1716 1717 values.push( 1718 String(el.name) + 1719 '=' + 1720 String(el.value) 1721 ); 1722 }); 1723 1724 values.sort(); 1725 1726 return values.join('&'); 1727 } 1728 1729 1730 function isResponseStillCurrent( 1731 requestSignature 1732 ) { 1733 if (!requestSignature) { 1734 return true; 1735 } 1736 1737 return ( 1738 requestSignature === 1739 getCurrentOptionSignature() 1740 ); 1741 } 1742 1743 1744 function parseStock(value) { 1745 if ( 1746 value === undefined || 1747 value === null || 1748 value === '' 1749 ) { 1750 return null; 1751 } 1752 1753 var parsed = parseInt( 1754 value, 1755 10 1756 ); 1757 1758 return Number.isNaN(parsed) 1759 ? null 1760 : parsed; 1761 } 1762 1763 1764 function parseAvailableToSell(value) { 1765 if ( 1766 value === undefined || 1767 value === null || 1768 value === '' 1769 ) { 1770 return null; 1771 } 1772 1773 if ( 1774 typeof value === 'string' && 1775 value.trim().toLowerCase() === 'unlimited' 1776 ) { 1777 return Number.POSITIVE_INFINITY; 1778 } 1779 1780 var parsed = parseInt( 1781 value, 1782 10 1783 ); 1784 1785 return Number.isNaN(parsed) 1786 ? null 1787 : parsed; 1788 } 1789 1790 1791 function isTruthy(value) { 1792 return ( 1793 value === true || 1794 value === 'true' || 1795 value === 1 || 1796 value === '1' 1797 ); 1798 } 1799 1800 1801 function isFalsey(value) { 1802 return ( 1803 value === false || 1804 value === 'false' || 1805 value === 0 || 1806 value === '0' 1807 ); 1808 } 1809 1810 1811 function isVisible(el) { 1812 if (!el) { 1813 return false;
1814 } 1815 1816 var style = 1817 window.getComputedStyle(el); 1818 1819 if ( 1820 style.display === 'none' || 1821 style.visibility === 'hidden' || 1822 style.opacity === '0' 1823 ) { 1824 return false; 1825 } 1826 1827 return Boolean( 1828 el.offsetWidth || 1829 el.offsetHeight || 1830 el.getClientRects().length 1831 ); 1832 } 1833 1834 1835 function normalizeMessage(value) { 1836 return String( 1837 value || '' 1838 ).trim(); 1839 } 1840 1841 1842 function isStockOnlyMessage(value) { 1843 var text = 1844 normalizeMessage(value) 1845 .toLowerCase(); 1846 1847 if (!text) { 1848 return false; 1849 } 1850 1851 return ( 1852 text.indexOf('out of stock') !== -1 || 1853 text.indexOf('sold out') !== -1 1854 ); 1855 } 1856 1857 1858 function getOnHandValue(data) { 1859 if (!data) { 1860 return null; 1861 } 1862 1863 if ( 1864 data.available_on_hand !== undefined && 1865 data.available_on_hand !== null && 1866 data.available_on_hand !== '' 1867 ) { 1868 return parseStock( 1869 data.available_on_hand 1870 ); 1871 } 1872 1873 if ( 1874 data.stock !== undefined && 1875 data.stock !== null && 1876 data.stock !== '' 1877 ) { 1878 return parseStock( 1879 data.stock 1880 ); 1881 } 1882 1883 return null; 1884 } 1885 1886 1887 function getAvailableToSellValue(data) { 1888 if (!data) { 1889 return null; 1890 } 1891 1892 if ( 1893 data.unlimited_backorder === true || 1894 data.unlimited_backorder === 'true' 1895 ) { 1896 return Number.POSITIVE_INFINITY; 1897 } 1898 1899 if ( 1900 data.available_to_sell !== undefined && 1901 data.available_to_sell !== null && 1902 data.available_to_sell !== '' 1903 ) { 1904 return parseAvailableToSell( 1905 data.available_to_sell 1906 ); 1907 } 1908 1909 return null; 1910 } 1911 1912 1913 function serializeForm(form) { 1914 var pairs = []; 1915 1916 var elements = 1917 form.querySelectorAll( 1918 'input, select, textarea' 1919 ); 1920 1921 elements.forEach(function (el) { 1922 1923 if (!el.name) { 1924 return; 1925 } 1926 1927 if ( 1928 ( 1929 el.type === 'checkbox' || 1930 el.type === 'radio' 1931 ) && 1932 !el.checked 1933 ) { 1934 return; 1935 } 1936 1937 pairs.push( 1938 encodeURIComponent(el.name) + 1939 '=' + 1940 encodeURIComponent(el.value) 1941 ); 1942 }); 1943 1944 return pairs.join('&'); 1945 } 1946 1947 1948 function hasVisibleAddToCartButton() { 1949 var form = 1950 getAddToCartForm(); 1951 1952 if (!form) { 1953 return false; 1954 } 1955 1956 var buttons = 1957 form.querySelectorAll( 1958 '#form-action-addToCart, ' + 1959 'input[name="form-action-addToCart"], ' + 1960 'input[type="submit"], ' + 1961 'button[type="submit"]' 1962 ); 1963 1964 for ( 1965 var i = 0; 1966 i < buttons.length; 1967 i += 1 1968 ) { 1969 var button = 1970 buttons[i]; 1971 1972 var text = String( 1973 button.value || 1974 button.textContent || 1975 '' 1976 ).toLowerCase(); 1977 1978 if ( 1979 text.indexOf('add to cart') !== -1 && 1980 isVisible(button) && 1981 !button.disabled && 1982 button.getAttribute('disabled') === null 1983 ) { 1984 return true; 1985 } 1986 } 1987 1988 return false; 1989 } 1990 1991 1992 function hasVisibleNativeOutOfStockNotice() { 1993 var form = 1994 getAddToCartForm(); 1995 1996 var scope = 1997 form || 1998 getProductView(); 1999 2000 var alerts = 2001 scope.querySelectorAll( 2002 '.alertBox, .alertBox--error' 2003 ); 2004 2005 for ( 2006 var i = 0; 2007 i < alerts.length; 2008 i += 1 2009 ) { 2010 var alert = 2011 alerts[i]; 2012 2013 if ( 2014 alert.classList.contains( 2015 'ram-drop-oos-notice' 2016 ) || 2017 alert.classList.contains( 2018 'ram-unavailable-notice' 2019 ) || 2020 alert.closest( 2021 '[data-ram-drop-oos-notice]' 2022 ) 2023 ) { 2024 continue; 2025 } 2026 2027 var text = 2028 String( 2029 alert.textContent || '' 2030 ).toLowerCase(); 2031 2032 if ( 2033 isVisible(alert) && 2034 ( 2035 text.indexOf('out of stock') !== -1 || 2036 text.indexOf('sold out') !== -1 2037 ) 2038 ) { 2039 return true; 2040 } 2041 } 2042 2043 return false;
2044 } 2045 2046 2047 function getVariantMessageBox() { 2048 var form = 2049 getAddToCartForm(); 2050 2051 return form 2052 ? form.querySelector( 2053 '.productAttributes-message' 2054 ) 2055 : null; 2056 } 2057 2058 2059 function getVariantMessageTextElement( 2060 box 2061 ) { 2062 if (!box) { 2063 return null; 2064 } 2065 2066 return box.querySelector( 2067 '.alertBox-message' 2068 ); 2069 } 2070 2071 2072 function hasResolvedVariant(data) { 2073 if (!data) { 2074 return false; 2075 } 2076 2077 var variantId = 2078 data.variantId !== undefined 2079 ? data.variantId 2080 : data.variant_id; 2081 2082 var hasVariantId = 2083 variantId !== undefined && 2084 variantId !== null && 2085 variantId !== '' && 2086 String(variantId) !== '0'; 2087 2088 var hasSku = 2089 data.sku !== undefined && 2090 data.sku !== null && 2091 String(data.sku).trim() !== ''; 2092 2093 return ( 2094 hasVariantId || 2095 hasSku 2096 ); 2097 } 2098 2099 2100 function getUnavailableMessage(data) { 2101 if ( 2102 !data || 2103 !isFalsey( 2104 data.purchasable 2105 ) 2106 ) { 2107 return ''; 2108 } 2109 2110 var purchasingMessage = 2111 normalizeMessage( 2112 data.purchasing_message 2113 ); 2114 2115 if ( 2116 purchasingMessage && 2117 !isStockOnlyMessage( 2118 purchasingMessage 2119 ) 2120 ) { 2121 return purchasingMessage; 2122 } 2123 2124 if ( 2125 !hasResolvedVariant(data) 2126 ) { 2127 return DEFAULT_UNAVAILABLE_MESSAGE; 2128 } 2129 2130 return ''; 2131 } 2132 2133 2134 function isUnavailableCombination(data) { 2135 return Boolean( 2136 getUnavailableMessage(data) 2137 ); 2138 } 2139 2140 2141 function getOrCreateUnavailableFallbackNotice() { 2142 var form = 2143 getAddToCartForm(); 2144 2145 if (!form) { 2146 return null; 2147 } 2148 2149 var existing = 2150 form.querySelector( 2151 '[data-ram-unavailable-notice]' 2152 ); 2153 2154 if (existing) { 2155 return existing; 2156 } 2157 2158 var notice = 2159 document.createElement('div'); 2160 2161 notice.className = 2162 'alertBox alertBox--error ram-unavailable-notice'; 2163 2164 notice.setAttribute( 2165 'data-ram-unavailable-notice', 2166 'true' 2167 ); 2168 2169 notice.style.setProperty( 2170 'display', 2171 'none', 2172 'important' 2173 ); 2174 2175 notice.innerHTML = 2176 '<div class="alertBox-column alertBox-icon">' + 2177 '<icon glyph="ic-error" class="icon" aria-hidden="true">' + 2178 '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">' + 2179 '<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"></path>' + 2180 '</svg>' + 2181 '</icon>' + 2182 '</div>' + 2183 '<p class="alertBox-column alertBox-message"></p>'; 2184 2185 var wrapper = 2186 getBackorderWrapper(); 2187 2188 var addButton = 2189 form.querySelector( 2190 '#form-action-addToCart' 2191 ); 2192 2193 var buttonContainer = 2194 addButton 2195 ? addButton.closest( 2196 '.add-to-cart-buttons' 2197 ) 2198 : null; 2199 2200 if (buttonContainer) { 2201 2202 buttonContainer 2203 .insertAdjacentElement( 2204 'beforebegin', 2205 notice 2206 ); 2207 2208 } else if (wrapper) { 2209 2210 wrapper 2211 .insertAdjacentElement( 2212 'afterend', 2213 notice 2214 ); 2215 2216 } else { 2217 2218 form.appendChild( 2219 notice 2220 ); 2221 } 2222 2223 return notice; 2224 } 2225 2226 2227 function hideFallbackUnavailableNotice() { 2228 var notice = 2229 document.querySelector( 2230 '[data-ram-unavailable-notice]' 2231 ); 2232 2233 if (notice) { 2234 notice.style.setProperty( 2235 'display', 2236 'none', 2237 'important' 2238 ); 2239 } 2240 } 2241 2242 2243 function hideStockMessagesForUnavailable( 2244 exceptElement 2245 ) { 2246 var form = 2247 getAddToCartForm(); 2248 2249 if (!form) { 2250 return; 2251 } 2252 2253 var alerts = 2254 form.querySelectorAll( 2255 '.alertBox, .alertBox--error' 2256 ); 2257
2258 alerts.forEach( 2259 function (alert) { 2260 2261 if ( 2262 alert === exceptElement || 2263 alert.classList.contains( 2264 'ram-unavailable-notice' 2265 ) || 2266 alert.classList.contains( 2267 'ram-drop-oos-notice' 2268 ) 2269 ) { 2270 return; 2271 } 2272 2273 var text = 2274 String( 2275 alert.textContent || '' 2276 ).toLowerCase(); 2277 2278 if ( 2279 text.indexOf('out of stock') !== -1 || 2280 text.indexOf('sold out') !== -1 2281 ) { 2282 alert.style.setProperty( 2283 'display', 2284 'none', 2285 'important' 2286 ); 2287 2288 alert.setAttribute( 2289 'data-ram-hidden-stock-message', 2290 'true' 2291 ); 2292 } 2293 } 2294 ); 2295 } 2296 2297 2298 function restoreStockMessages() { 2299 var alerts = 2300 document.querySelectorAll( 2301 '[data-ram-hidden-stock-message]' 2302 ); 2303 2304 alerts.forEach( 2305 function (alert) { 2306 2307 alert.style.removeProperty( 2308 'display' 2309 ); 2310 2311 alert.removeAttribute( 2312 'data-ram-hidden-stock-message' 2313 ); 2314 } 2315 ); 2316 } 2317 2318 2319 function prepareForOptionChange() { 2320 clearTimeout( 2321 window.RAMUnavailableFinalPass 2322 ); 2323 2324 var form = 2325 getAddToCartForm(); 2326 2327 if (form) { 2328 form.classList.remove( 2329 'is-unavailable-combination-state' 2330 ); 2331 } 2332 2333 var box = 2334 getVariantMessageBox(); 2335 2336 if ( 2337 box && 2338 box.hasAttribute( 2339 'data-ram-unavailable-message' 2340 ) 2341 ) { 2342 box.style.setProperty( 2343 'display', 2344 'none', 2345 'important' 2346 ); 2347 2348 box.removeAttribute( 2349 'data-ram-unavailable-message' 2350 ); 2351 2352 var text = 2353 getVariantMessageTextElement( 2354 box 2355 ); 2356 2357 if (text) { 2358 text.textContent = ''; 2359 } 2360 } 2361 2362 hideFallbackUnavailableNotice(); 2363 2364 var wrapper = 2365 getBackorderWrapper(); 2366 2367 if (wrapper) { 2368 wrapper.style.display = 2369 'none'; 2370 } 2371 2372 if (form) { 2373 form.classList.remove( 2374 'is-backordered-state' 2375 ); 2376 } 2377 } 2378 2379 2380 function clearUnavailableState() { 2381 clearTimeout( 2382 window.RAMUnavailableFinalPass 2383 ); 2384 2385 var form = 2386 getAddToCartForm(); 2387 2388 if (form) { 2389 form.classList.remove( 2390 'is-unavailable-combination-state' 2391 ); 2392 } 2393 2394 restoreStockMessages(); 2395 2396 hideFallbackUnavailableNotice(); 2397 2398 var box = 2399 getVariantMessageBox(); 2400 2401 if ( 2402 box && 2403 box.hasAttribute( 2404 'data-ram-unavailable-message' 2405 ) 2406 ) { 2407 box.style.setProperty( 2408 'display', 2409 'none', 2410 'important' 2411 ); 2412 2413 box.removeAttribute( 2414 'data-ram-unavailable-message' 2415 ); 2416 2417 var text = 2418 getVariantMessageTextElement( 2419 box 2420 ); 2421 2422 if (text) { 2423 text.textContent = ''; 2424 } 2425 } 2426 } 2427 2428 2429 function showUnavailableCombination( 2430 data 2431 ) { 2432 var form = 2433 getAddToCartForm(); 2434 2435 if (!form) { 2436 return; 2437 } 2438 2439 var wrapper = 2440 getBackorderWrapper(); 2441 2442 var message = 2443 getUnavailableMessage(data) || 2444 DEFAULT_UNAVAILABLE_MESSAGE; 2445 2446 form.classList.remove( 2447 'is-backordered-state' 2448 ); 2449 2450 form.classList.remove( 2451 'is-dropship-state' 2452 ); 2453 2454 form.classList.add( 2455 'is-unavailable-combination-state' 2456 ); 2457 2458 if (wrapper) { 2459 wrapper.style.display = 2460 'none'; 2461 } 2462 2463 var box = 2464 getVariantMessageBox(); 2465 2466 if (box) { 2467 2468 hideStockMessagesForUnavailable( 2469 box 2470 ); 2471 2472 var text = 2473 getVariantMessageTextElement( 2474 box 2475 ); 2476 2477 if (text) { 2478 text.textContent = 2479 message; 2480 } 2481 2482 box.setAttribute( 2483 'data-ram-unavailable-message', 2484 'true' 2485 ); 2486 2487 box.style.setProperty( 2488 'display', 2489 'flex', 2490 'important' 2491 ); 2492 2493 hideFallbackUnavailableNotice(); 2494 2495 } else { 2496 2497 hideStockMessagesForUnavailable( 2498 null 2499 ); 2500 2501 var fallback = 2502 getOrCreateUnavailableFallbackNotice(); 2503 2504 if (fallback) { 2505 2506 var fallbackText = 2507 fallback.querySelector( 2508 '.alertBox-message' 2509 ); 2510 2511 if (fallbackText) { 2512 fallbackText.textContent = 2513 message; 2514 } 2515 2516 fallback.style.setProperty( 2517 'display', 2518 'flex', 2519 'important' 2520 ); 2521 } 2522 } 2523 2524 clearTimeout( 2525 window.RAMUnavailableFinalPass 2526 ); 2527 2528 window.RAMUnavailableFinalPass = 2529 setTimeout( 2530 function () { 2531 2532 var currentForm = 2533 getAddToCartForm(); 2534 2535 if ( 2536 !currentForm || 2537 !currentForm 2538 .classList 2539 .contains( 2540 'is-unavailable-combination-state' 2541 ) 2542 ) { 2543 return; 2544 } 2545 2546 var currentBox = 2547 getVariantMessageBox(); 2548 2549 if (currentBox) { 2550 2551 var currentText = 2552 getVariantMessageTextElement( 2553 currentBox 2554 ); 2555 2556 if (currentText) { 2557 currentText.textContent = 2558 message; 2559 } 2560 2561 hideStockMessagesForUnavailable( 2562 currentBox 2563 ); 2564 2565 currentBox.style.setProperty( 2566 'display', 2567 'flex', 2568 'important' 2569 ); 2570 } 2571 2572 }, 2573 100 2574 ); 2575 } 2576 2577 2578 function syncNativeVariantMessage(data) { 2579 var box = 2580 getVariantMessageBox(); 2581 2582 if (!box || !data) { 2583 return; 2584 } 2585 2586 var message = 2587 normalizeMessage( 2588 data.stock_message 2589 ) || 2590 normalizeMessage( 2591 data.purchasing_message 2592 ); 2593 2594 var text = 2595 getVariantMessageTextElement( 2596 box 2597 ); 2598 2599 if (!message) { 2600 2601 if (text) { 2602 text.textContent = ''; 2603 } 2604 2605 box.style.setProperty( 2606 'display', 2607 'none', 2608 'important' 2609 ); 2610 2611 return; 2612 } 2613 2614 if (text) { 2615 text.textContent = 2616 message; 2617 } 2618 2619 box.style.removeProperty( 2620 'display' 2621 ); 2622 } 2623 2624 2625 function applyDropshipState() { 2626 var form = 2627 getAddToCartForm(); 2628 2629 var wrapper = 2630 getBackorderWrapper(); 2631 2632 if (!form) { 2633 return; 2634 } 2635 2636 if (isDropshipProduct()) { 2637 2638 clearUnavailableState(); 2639 2640 form.classList.add( 2641 'is-dropship-state' 2642 ); 2643 2644 form.classList.remove( 2645 'is-backordered-state' 2646 ); 2647 2648 if (wrapper) { 2649 wrapper.style.display = 2650 'none'; 2651 } 2652 2653 return; 2654 } 2655 2656 form.classList.remove( 2657 'is-dropship-state' 2658 ); 2659 } 2660 2661 2662 function setMessageState( 2663 shouldShowWrapper 2664 ) { 2665 var wrapper = 2666 getBackorderWrapper(); 2667 2668 var form = 2669 getAddToCartForm(); 2670 2671 applyDropshipState(); 2672 2673 if (isDropshipProduct()) { 2674 return; 2675 } 2676 2677 if (isDropProduct()) { 2678 2679 if (wrapper) { 2680 wrapper.style.display = 2681 'none'; 2682 } 2683 2684 if (form) { 2685 form.classList.remove( 2686 'is-backordered-state' 2687 ); 2688 2689 form.classList.remove( 2690 'is-dropship-state' 2691 ); 2692 } 2693 2694 return; 2695 } 2696 2697 if (!wrapper) { 2698 return; 2699 } 2700 2701 if (shouldShowWrapper) { 2702 2703 wrapper.style.display = 2704 'block'; 2705 2706 if (form) { 2707 form.classList.add( 2708 'is-backordered-state' 2709 ); 2710 2711 form.classList.remove( 2712 'is-dropship-state' 2713 ); 2714 } 2715 2716 return; 2717 } 2718 2719 wrapper.style.display = 2720 'none'; 2721 2722 if (form) { 2723 form.classList.remove( 2724 'is-backordered-state' 2725 ); 2726 2727 form.classList.remove( 2728 'is-dropship-state' 2729 ); 2730 } 2731 } 2732 2733 2734 function isLegacyBackorder( 2735 stockVal 2736 ) { 2737 if ( 2738 !ENABLE_LEGACY_10000_LOGIC 2739 ) { 2740 return false;
2741 } 2742 2743 return ( 2744 stockVal !== null && 2745 stockVal > 0 && 2746 stockVal <= 10000 2747 ); 2748 } 2749 2750 2751 function shouldShowBackorderFromData( 2752 data 2753 ) { 2754 if ( 2755 !isBackorderProduct() || 2756 !data || 2757 !isTruthy( 2758 data.purchasable 2759 ) 2760 ) { 2761 return false; 2762 } 2763 2764 var onHand = 2765 getOnHandValue(data); 2766 2767 var availableToSell = 2768 getAvailableToSellValue(data); 2769 2770 var instockFalse = 2771 isFalsey( 2772 data.instock 2773 ); 2774 2775 if ( 2776 availableToSell !== null 2777 ) { 2778 return ( 2779 availableToSell > 0 && 2780 ( 2781 onHand === 0 || 2782 ( 2783 onHand === null && 2784 instockFalse 2785 ) 2786 ) 2787 ); 2788 } 2789 2790 return ( 2791 ( 2792 onHand === 0 || 2793 instockFalse 2794 ) || 2795 isLegacyBackorder( 2796 onHand 2797 ) 2798 ); 2799 } 2800 2801 2802 function shouldShowBuiltToOrderFromData( 2803 data 2804 ) { 2805 if ( 2806 !isBuiltToOrderProduct() || 2807 !data || 2808 !isTruthy( 2809 data.purchasable 2810 ) 2811 ) { 2812 return false; 2813 } 2814 2815 var onHand = 2816 getOnHandValue(data); 2817 2818 var instockFalse = 2819 isFalsey( 2820 data.instock 2821 ); 2822 2823 return ( 2824 onHand === null || 2825 onHand === 0 || 2826 instockFalse 2827 ); 2828 } 2829 2830 2831 function shouldShowBackorderFromDomState() { 2832 return ( 2833 isBackorderProduct() && 2834 hasVisibleAddToCartButton() && 2835 hasVisibleNativeOutOfStockNotice() 2836 ); 2837 } 2838 2839 2840 function shouldShowBuiltToOrderFromDomState() { 2841 return ( 2842 isBuiltToOrderProduct() && 2843 hasVisibleAddToCartButton() && 2844 hasVisibleNativeOutOfStockNotice() 2845 ); 2846 } 2847 2848 2849 function evaluateProductAttributesData( 2850 data, 2851 requestSignature 2852 ) { 2853 if (!data) { 2854 return; 2855 } 2856 2857 if ( 2858 !isResponseStillCurrent( 2859 requestSignature 2860 ) 2861 ) { 2862 log( 2863 'Ignoring stale variant response', 2864 requestSignature, 2865 getCurrentOptionSignature() 2866 ); 2867 2868 return; 2869 } 2870 2871 lastCurrentVariantResponseAt = 2872 Date.now(); 2873 2874 2875 if (isDropshipProduct()) { 2876 applyDropshipState(); 2877 return; 2878 } 2879 2880 2881 if (isDropProduct()) { 2882 clearUnavailableState(); 2883 setMessageState(false); 2884 return; 2885 } 2886 2887 2888 if ( 2889 ( 2890 isBackorderProduct() || 2891 isBuiltToOrderProduct() 2892 ) && 2893 isUnavailableCombination( 2894 data 2895 ) 2896 ) { 2897 showUnavailableCombination( 2898 data 2899 ); 2900 2901 return; 2902 } 2903 2904 2905 clearUnavailableState(); 2906 2907 syncNativeVariantMessage( 2908 data 2909 ); 2910 2911 2912 if ( 2913 isBuiltToOrderProduct() 2914 ) { 2915 setMessageState( 2916 shouldShowBuiltToOrderFromData( 2917 data 2918 ) || 2919 shouldShowBuiltToOrderFromDomState() 2920 ); 2921 2922 return; 2923 } 2924 2925 2926 if ( 2927 isBackorderProduct() 2928 ) { 2929 setMessageState( 2930 shouldShowBackorderFromData( 2931 data 2932 ) || 2933 shouldShowBackorderFromDomState() 2934 ); 2935 2936 return; 2937 } 2938 2939 setMessageState(false); 2940 } 2941 2942 2943 function evaluateInitialTemplateData() { 2944 var wrapper = 2945 getBackorderWrapper(); 2946 2947 applyDropshipState(); 2948 2949 if ( 2950 isDropshipProduct() || 2951 isDropProduct() || 2952 !wrapper 2953 ) { 2954 return; 2955 } 2956 2957 var rawStock = 2958 wrapper.getAttribute( 2959 'data-stock' 2960 ); 2961 2962 var stockVal = 2963 parseStock( 2964 rawStock 2965 ); 2966 2967 var canPurchase = 2968 isTruthy( 2969 wrapper.getAttribute( 2970 'data-can-purchase' 2971 ) 2972 ); 2973 2974 if ( 2975 isBuiltToOrderProduct() 2976 ) { 2977 setMessageState( 2978 canPurchase && 2979 ( 2980 stockVal === 0 || 2981 stockVal === null 2982 ) 2983 ); 2984 2985 return; 2986 } 2987 2988 if ( 2989 isBackorderProduct() 2990 ) { 2991 setMessageState( 2992 canPurchase && 2993 stockVal === 0 2994 ); 2995 } 2996 } 2997 2998 2999 function fallbackVariantRequest( 3000 changeStartedAt, 3001 expectedSignature 3002 ) { 3003 if ( 3004 expectedSignature !== 3005 getCurrentOptionSignature() 3006 ) { 3007 return; 3008 } 3009 3010 if ( 3011 lastCurrentVariantResponseAt >= 3012 changeStartedAt 3013 ) { 3014 return; 3015 } 3016 3017 var form = 3018 getAddToCartForm(); 3019 3020 var productId = 3021 getProductId(); 3022 3023 if ( 3024 !form || 3025 !productId || 3026 isDropshipProduct() || 3027 isDropProduct() 3028 ) { 3029 return; 3030 } 3031 3032 originalFetch( 3033 '/remote/v1/product-attributes/' + 3034 productId, 3035 { 3036 method: 'POST', 3037 credentials: 'include', 3038 headers: { 3039 'content-type': 3040 'application/x-www-form-urlencoded; charset=UTF-8', 3041 'x-requested-with': 3042 'stencil-utils' 3043 }, 3044 body: 3045 serializeForm(form) 3046 } 3047 ) 3048 .then( 3049 function (response) { 3050 return response 3051 .clone() 3052 .json(); 3053 } 3054 ) 3055 .then( 3056 function (payload) { 3057 3058 if ( 3059 expectedSignature !== 3060 getCurrentOptionSignature() 3061 ) { 3062 return; 3063 } 3064 3065 if ( 3066 payload && 3067 payload.data 3068 ) { 3069 evaluateProductAttributesData( 3070 payload.data, 3071 expectedSignature 3072 ); 3073 } 3074 } 3075 ) 3076 .catch( 3077 function (error) { 3078 log( 3079 'Fallback request failed', 3080 error 3081 ); 3082 } 3083 ); 3084 } 3085 3086 3087 function handleOptionChange() { 3088 prepareForOptionChange(); 3089 3090 var startedAt = 3091 Date.now(); 3092 3093 var expectedSignature = 3094 getCurrentOptionSignature(); 3095 3096 clearTimeout( 3097 fallbackTimer 3098 ); 3099 3100 fallbackTimer = 3101 setTimeout( 3102 function () { 3103 fallbackVariantRequest( 3104 startedAt, 3105 expectedSignature 3106 ); 3107 }, 3108 700 3109 ); 3110 } 3111 3112 3113 window.fetch = 3114 function () { 3115 3116 var args = 3117 arguments; 3118 3119 var url = 3120 args[0] && 3121 typeof args[0] === 'string' 3122 ? args[0] 3123 : args[0] && 3124 args[0].url 3125 ? args[0].url 3126 : ''; 3127 3128 var requestSignature = 3129 url.includes( 3130 '/remote/v1/product-attributes/' 3131 ) 3132 ? getCurrentOptionSignature() 3133 : ''; 3134 3135 var promise = 3136 originalFetch.apply( 3137 this, 3138 args 3139 ); 3140 3141 if ( 3142 !url.includes( 3143 '/remote/v1/product-attributes/' 3144 ) 3145 ) { 3146 return promise; 3147 } 3148 3149 return promise.then( 3150 function (response) { 3151 3152 response 3153 .clone() 3154 .json() 3155 .then( 3156 function (payload) { 3157 3158 if ( 3159 payload && 3160 payload.data 3161 ) { 3162 evaluateProductAttributesData( 3163 payload.data, 3164 requestSignature 3165 ); 3166 } 3167 } 3168 ) 3169 .catch( 3170 function () { 3171 // Native request continues normally. 3172 } 3173 ); 3174 3175 return response; 3176 } 3177 ); 3178 }; 3179 3180 3181 window.XMLHttpRequest.prototype.open = 3182 function ( 3183 method, 3184 url 3185 ) { 3186 this._ramBackorderUrl = 3187 url; 3188
3189 return originalXHROpen.apply( 3190 this, 3191 arguments 3192 ); 3193 }; 3194 3195 3196 window.XMLHttpRequest.prototype.send = 3197 function () { 3198 3199 if ( 3200 this._ramBackorderUrl && 3201 String( 3202 this._ramBackorderUrl 3203 ).includes( 3204 '/remote/v1/product-attributes/' 3205 ) 3206 ) { 3207 this._ramOptionSignature = 3208 getCurrentOptionSignature(); 3209 3210 this.addEventListener( 3211 'load', 3212 function () { 3213 3214 try { 3215 3216 var payload = 3217 JSON.parse( 3218 this.responseText 3219 ); 3220 3221 if ( 3222 payload && 3223 payload.data 3224 ) { 3225 evaluateProductAttributesData( 3226 payload.data, 3227 this._ramOptionSignature 3228 ); 3229 } 3230 3231 } catch (error) { 3232 // Ignore inspection errors. 3233 } 3234 } 3235 ); 3236 } 3237 3238 return originalXHRSend.apply( 3239 this, 3240 arguments 3241 ); 3242 }; 3243 3244 3245 evaluateInitialTemplateData(); 3246 3247 3248 document.addEventListener( 3249 'change', 3250 function (event) { 3251 3252 if ( 3253 event.target.closest( 3254 '[data-product-option-change]' 3255 ) || 3256 event.target.matches( 3257 'select' 3258 ) || 3259 event.target.matches( 3260 'input[type="radio"]' 3261 ) || 3262 event.target.matches( 3263 'input[type="checkbox"]' 3264 ) || 3265 event.target.matches( 3266 'input[name^="attribute"]' 3267 ) 3268 ) { 3269 handleOptionChange(); 3270 } 3271 }, 3272 true 3273 ); 3274 3275})(); 3276</script>
3276<script type="77683c8daf3a83c7926e58dc-text/javascript"> 3277 var css = `.z-intl .previewCartCheckout-additionalCheckoutButtons, .z-intl .previewCart-additionalCheckoutButtons, .z-intl .cart-additionalCheckoutButtons, .z-intl div.container > div > main > div:nth-child(6) > ul > li:nth-child(2), .z-intl div.container > div > main > div:nth-child(6) > ul > li:nth-child(4){ 3278 display: none; 3279 }`; //use string templates for cleaner css code - ES6 String templates 3280 head = document.head || document.getElementsByTagName('head')[0], 3281 style = document.createElement('style'); 3282 style.type = 'text/css'; 3283 if (style.styleSheet){ 3284 style.styleSheet.cssText = css; 3285 } else { 3286 style.appendChild(document.createTextNode(css)); 3287 } 3288 head.appendChild(style); 3289 </script>
3289<script type="77683c8daf3a83c7926e58dc-text/javascript">(async function () { 3290 const zonosElementsUrl = 'https://cdn.jsdelivr.net/npm/@zonos/elements'; 3291 const timestamp = new Date().getTime(); 3292 const zonosScript = document.querySelector( 3293 `script[src*="${zonosElementsUrl}/dist/scripts/loadZonos.js"]`, 3294 ); 3295 const zonosRouteUrl = 'https://alpha.route.js.zonos.com'; 3296 3297 const baseZonosHeaders = { 3298 Accept: 'application/json', 3299 'Content-Type': 'application/json', 3300 'Zonos-Is-BigCommerce': 'true', 3301 'Zonos-Referer': window.location.hostname, 3302 'Zonos-Store-Id': '542', 3303 }; 3304 3305 const inventoryCheckEnabled = 'false' === 'true'; 3306 const testModeEnabled = 'false' === 'true'; 3307 3308 // If testMode is not enabled, the script should always be enabled, or if testMode is enabled, the script should be enabled if the url includes 'zonos=true' or 'zonos=1' 3309 const shouldEnableZonos = !testModeEnabled || (window.location.search.includes('zonos=true') || window.location.search.includes('zonos=1')); 3310 3311 if (!zonosScript && shouldEnableZonos) { 3312 const script = document.createElement('script'); 3313 script.src = `${zonosElementsUrl}/dist/scripts/loadZonos.js?timestamp=${timestamp}`; 3314 script.addEventListener( 3315 'load', 3316 () => { 3317 const getCart = async () => { 3318 const options = { 3319 headers: { 'Content-Type': 'application/json' }, 3320 method: 'GET', 3321 }; 3322 const result = await fetch('/api/storefront/carts', options); 3323 const [data] = await result.json(); 3324 const { digitalItems, physicalItems } = data.lineItems; 3325 const cartDiscount = data.discountAmount; 3326 3327 return { 3328 cartDiscount, 3329 cartId: data.id, 3330 coupons: data.coupons, 3331 currencyCode: data.currency.code, 3332 items: [...digitalItems, ...physicalItems], 3333 }; 3334 }; 3335 3336 void window.Zonos.init({ 3337 checkoutSettings: { 3338 bigCommerceConfig: { 3339 storeHash: 'cftgfbe14j', 3340 }, 3341 buildCartDetail: async () => { 3342 const { cartDiscount, cartId, coupons, currencyCode, items } = 3343 await getCart(); 3344 const zonosItems = items.map(item => ({ 3345 amount: item.salePrice, 3346 cartId, 3347 currencyCode, 3348 imageUrl: item.imageUrl, 3349 metadata: [], 3350 name: item.name, 3351 productId: item.productId.toString(), 3352 quantity: item.quantity, 3353 sku: item.sku, 3354 })); 3355 3356 const couponItems = coupons 3357 .map(({ code, discountedAmount }) => { 3358 if (discountedAmount > 0) { 3359 return { 3360 amount: -discountedAmount, 3361 cartId, 3362 currencyCode, 3363 imageUrl: '', 3364 metadata: [], 3365 name: code, 3366 productId: '', 3367 quantity: 1, 3368 sku: '', 3369 }; 3370 } 3371 return null; 3372 }) 3373 .filter(Boolean); 3374 3375 const allItems = [...zonosItems, ...couponItems]; 3376 3377 if (cartDiscount > 0) { 3378 const cartDiscountItem = { 3379 amount: -cartDiscount, 3380 cartId, 3381 currencyCode, 3382 imageUrl: '', 3383 metadata: [], 3384 name: 'Discount Applied', 3385 productId: '', 3386 quantity: 1, 3387 sku: '', 3388 }; 3389 allItems.push(cartDiscountItem); 3390 } 3391 3392 return allItems; 3393 }, 3394 buildLandedCost: async ({ 3395 billingAddress, 3396 billingContact, 3397 checkoutSessionId, 3398 contact, 3399 shippingAddress, 3400 zonosApiRoute, 3401 }, helpers) => { 3402 const zonosHeaders = { 3403 ...baseZonosHeaders, 3404 credentialToken: window.Zonos.zonosApiKey || 'credential_live_e4d32559-cc9d-4a27-b83c-3c9c9b8926eb', 3405 } 3406 const { cartId } = await getCart(); 3407 const body = { 3408 billingAddress, 3409 billingContact, 3410 cartId, 3411 promoCode: helpers?.promoCode, 3412 checkoutSessionId, 3413 contact, 3414 shippingAddress, 3415 storeHash: 'cftgfbe14j', 3416 }; 3417 3418 const options = { 3419 body: JSON.stringify(body), 3420 headers: zonosHeaders, 3421 method: 'POST', 3422 }; 3423 3424 try { 3425 const landedCost = await fetch( 3426 `${zonosApiRoute}/api/bigcommerce/build-landed-cost`, 3427 options, 3428 ); 3429 const json = await landedCost.json(); 3430 3431 return json; 3432 } catch (e) { 3433 console.error('Error building landed cost', e); 3434 return null; 3435 } 3436 }, 3437 onInventoryCheck: async (_, { zonosApiRoute, translate }) => { 3438 if (!inventoryCheckEnabled) { 3439 return null; 3440 } 3441 const zonosHeaders = { 3442 ...baseZonosHeaders, 3443 credentialToken: window.Zonos.zonosApiKey || 'credential_live_e4d32559-cc9d-4a27-b83c-3c9c9b8926eb', 3444 } 3445 try { 3446 const { cartId } = await getCart(); 3447 const result = await fetch(`${zonosApiRoute || zonosRouteUrl}/api/bigcommerce/inventory-check`, { 3448 body: JSON.stringify({ cartId, storeHash: 'cftgfbe14j' }), 3449 headers: zonosHeaders, 3450 method: 'POST', 3451 }); 3452 const data = await result.json(); 3453 const outOfStockItems = data.outOfStockItems.filter(
3453Boolean).join(', '); 3454 if (outOfStockItems) { 3455 return translate?.('"[itemName]" is out of stock. Please remove it from your cart and try again.', { 3456 itemName: outOfStockItems, 3457 }) || `"${outOfStockItems}" is out of stock. Please remove it from your cart and try again.`; 3458 } 3459 return null; 3460 } catch (err) { 3461 console.error('Error checking inventory', err); 3462 return null; 3463 } 3464 }, 3465 onOrderSuccess: async ({ zonosApiRoute, zonosOrder }) => { 3466 const zonosHeaders = { 3467 ...baseZonosHeaders, 3468 credentialToken: window.Zonos.zonosApiKey || 'credential_live_e4d32559-cc9d-4a27-b83c-3c9c9b8926eb', 3469 } 3470 3471 const body = { 3472 orderId: zonosOrder.id, 3473 }; 3474 const options = { 3475 body: JSON.stringify(body), 3476 headers: zonosHeaders, 3477 method: 'POST', 3478 }; 3479 await fetch( 3480 `${zonosApiRoute}/api/bigcommerce/clear-cart`, 3481 options, 3482 ).catch(_e => {}); 3483 }, 3484 placeOrderButtonSelector: '.cart-actions a[href*="checkout"], .previewCartAction-checkout a[href*="checkout"], #previewModal > div.modal-content > div.modal-body > div > section.previewCartCheckout > a:nth-child(1)', 3485 }, 3486 storeId: Number('542'), 3487 zonosApiKey: 'credential_live_e4d32559-cc9d-4a27-b83c-3c9c9b8926eb', 3488 }); 3489 }, 3490 false, 3491 ); 3492 document.head.appendChild(script); 3493 } 3494})(); 3495</script>
3495<script type="77683c8daf3a83c7926e58dc-text/javascript"> 3496(function () { 3497 'use strict'; 3498 3499 if (window.RAMDropOutOfStockFallbackV4Loaded) { 3500 return; 3501 } 3502 3503 window.RAMDropOutOfStockFallbackV4Loaded = true; 3504 3505 /* 3506 Prevent older versions from running if they are still cached or accidentally left active. 3507 */ 3508 window.RAMDropOutOfStockFallbackLoaded = true; 3509 window.RAMDropOutOfStockFallbackV2Loaded = true; 3510 window.RAMDropOutOfStockFallbackV3Loaded = true; 3511 3512 function getInventoryValue() { 3513 var marker = document.querySelector('[data-ram-inventory]'); 3514 return marker ? String(marker.getAttribute('data-ram-inventory') || '').toLowerCase() : ''; 3515 } 3516 3517 function isDropProduct() { 3518 return getInventoryValue() === 'drop'; 3519 } 3520 3521 function getProductView() { 3522 return document.querySelector('.productView') || document; 3523 } 3524 3525 function getAddToCartForm() { 3526 return document.querySelector('form[data-cart-item-add]'); 3527 } 3528 3529 function getProductId() { 3530 var input = document.querySelector('form[data-cart-item-add] input[name="product_id"], input[name="product_id"]'); 3531 return input ? input.value : ''; 3532 } 3533 3534 function isVisible(el) { 3535 if (!el) { 3536 return false; 3537 } 3538 3539 var style = window.getComputedStyle(el); 3540 3541 if ( 3542 style.display === 'none' || 3543 style.visibility === 'hidden' || 3544 style.opacity === '0' 3545 ) { 3546 return false; 3547 } 3548 3549 return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length); 3550 } 3551 3552 function parseStock(value) { 3553 if (value === undefined || value === null || value === '') { 3554 return null; 3555 } 3556 3557 var parsed = parseInt(value, 10); 3558 return Number.isNaN(parsed) ? null : parsed; 3559 } 3560 3561 function isTruthy(value) { 3562 return value === true || value === 'true' || value === 1 || value === '1'; 3563 } 3564 3565 function isFalsey(value) { 3566 return value === false || value === 'false' || value === 0 || value === '0'; 3567 } 3568 3569 function getOnHandValue(data) { 3570 if (!data) { 3571 return null; 3572 } 3573 3574 if (data.available_on_hand !== undefined && data.available_on_hand !== null && data.available_on_hand !== '') { 3575 return parseStock(data.available_on_hand); 3576 } 3577 3578 if (data.stock !== undefined && data.stock !== null && data.stock !== '') { 3579 return parseStock(data.stock); 3580 } 3581 3582 return null; 3583 } 3584 3585 function serializeForm(form) { 3586 var pairs = []; 3587 var elements = form.querySelectorAll('input, select, textarea'); 3588 3589 elements.forEach(function (el) { 3590 if (!el.name) { 3591 return; 3592 } 3593 3594 if ((el.type === 'checkbox' || el.type === 'radio') && !el.checked) { 3595 return; 3596 } 3597 3598 pairs.push(encodeURIComponent(el.name) + '=' + encodeURIComponent(el.value)); 3599 }); 3600 3601 return pairs.join('&'); 3602 } 3603 3604 function hasVisibleNativeOutOfStockNotice() { 3605 var productView = getProductView(); 3606 3607 /* 3608 Only check actual alert containers. 3609 Do NOT use [class*="alert"] because that catches children inside our fallback, 3610 such as .alertBox-column and .alertBox-message. 3611 */ 3612 var alerts = productView.querySelectorAll('.alertBox, .alertBox--error'); 3613 3614 for (var i = 0; i < alerts.length; i += 1) { 3615 var alert = alerts[i]; 3616 3617 /* 3618 Ignore our custom fallback notice. 3619 */ 3620 if ( 3621 alert.classList.contains('ram-drop-oos-notice') || 3622 alert.closest('[data-ram-drop-oos-notice]') 3623 ) { 3624 continue; 3625 } 3626 3627 var text = String(alert.textContent || '').toLowerCase(); 3628 3629 if ( 3630 isVisible(alert) && 3631 ( 3632 text.indexOf('out of stock') !== -1 || 3633 text.indexOf('sold out') !== -1 3634 ) 3635 ) { 3636 return true; 3637 } 3638 } 3639 3640 return false;
3641 } 3642 3643 function hasVisibleAddToCartButton() { 3644 var form = getAddToCartForm(); 3645 var productView = getProductView(); 3646 var scope = form || productView; 3647 3648 if (!scope) { 3649 return false; 3650 } 3651 3652 var buttons = scope.querySelectorAll( 3653 '#form-action-addToCart, ' + 3654 'input[name="form-action-addToCart"], ' + 3655 'input[type="submit"], ' + 3656 'button[type="submit"], ' + 3657 '[data-cart-item-add] input[type="submit"], ' + 3658 '[data-cart-item-add] button[type="submit"]' 3659 ); 3660 3661 for (var i = 0; i < buttons.length; i += 1) { 3662 var button = buttons[i]; 3663 var text = String(button.value || button.textContent || '').toLowerCase(); 3664 3665 if ( 3666 text.indexOf('add to cart') !== -1 && 3667 isVisible(button) && 3668 !button.disabled && 3669 button.getAttribute('disabled') === null 3670 ) { 3671 return true; 3672 } 3673 } 3674 3675 return false; 3676 } 3677 3678 function shouldShowFromDomState() { 3679 /* 3680 If BigCommerce already rendered the native Out of Stock notice, 3681 do not show our fallback. 3682 */ 3683 if (hasVisibleNativeOutOfStockNotice()) { 3684 return false; 3685 } 3686 3687 /* 3688 Variant Drop product issue: 3689 BigCommerce can hide/remove Add to Cart without rendering native Out of Stock. 3690 */ 3691 return !hasVisibleAddToCartButton(); 3692 } 3693 3694 function shouldShowFromRemoteData(data) { 3695 if (!data) { 3696 return false; 3697 } 3698 3699 var purchasable = isTruthy(data.purchasable); 3700 var instockFalse = isFalsey(data.instock); 3701 var onHand = getOnHandValue(data); 3702 3703 return !purchasable && (instockFalse || onHand === 0); 3704 } 3705 3706 function getOrCreateDropOutOfStockNotice() { 3707 var productView = getProductView(); 3708 var existing = productView.querySelector('[data-ram-drop-oos-notice]'); 3709 3710 if (existing) { 3711 return existing; 3712 } 3713 3714 var notice = document.createElement('div'); 3715 notice.className = 'alertBox alertBox--error ram-drop-oos-notice'; 3716 notice.setAttribute('data-ram-drop-oos-notice', 'true'); 3717 notice.style.setProperty('display', 'none', 'important'); 3718 3719 notice.innerHTML = 3720 '<div class="alertBox-column alertBox-icon">' + 3721 '<icon glyph="ic-error" class="icon" aria-hidden="true">' + 3722 '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">' + 3723 '<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"></path>' + 3724 '</svg>' + 3725 '</icon>' + 3726 '</div>' + 3727 '<p class="alertBox-column alertBox-message">' + 3728 '<span>Out of Stock</span>' + 3729 '</p>'; 3730 3731 var form = getAddToCartForm(); 3732 var optionBlock = productView.querySelector('[data-product-option-change]'); 3733 var stockField = productView.querySelector('.form-field--stock'); 3734 var productInfo = productView.querySelector('.productView-info'); 3735 var wishlist = productView.querySelector('[data-wishlist-add], .form-wishlist, .wishlist-form, [class*="wishlist"]'); 3736 3737 if (optionBlock) { 3738 optionBlock.insertAdjacentElement('afterend', notice); 3739 } else if (stockField) { 3740 stockField.insertAdjacentElement('afterend', notice); 3741 } else if (form) { 3742 form.insertBefore(notice, form.firstChild); 3743 } else if (wishlist) { 3744 wishlist.insertAdjacentElement('beforebegin', notice); 3745 } else if (productInfo) { 3746 productInfo.insertAdjacentElement('afterend', notice); 3747 } else { 3748 productView.appendChild(notice); 3749 } 3750 3751 return notice; 3752 } 3753 3754 function hideExistingFallbackNotice() { 3755 var existingNotice = getProductView().querySelector('[data-ram-drop-oos-notice]'); 3756 3757 if (existingNotice) { 3758 existingNotice.style.setProperty('display', 'none', 'important'); 3759 } 3760 } 3761 3762 function setDropOutOfStockNotice(shouldShow) { 3763 /* 3764 Prevent duplicates on simple/non-variant Drop products. 3765 */
3766 if (hasVisibleNativeOutOfStockNotice()) { 3767 hideExistingFallbackNotice(); 3768 return; 3769 } 3770 3771 var notice = getOrCreateDropOutOfStockNotice(); 3772 3773 if (!notice) { 3774 return; 3775 } 3776 3777 notice.style.setProperty('display', shouldShow ? 'flex' : 'none', 'important'); 3778 } 3779 3780 function requestSelectedVariantState() { 3781 var form = getAddToCartForm(); 3782 var productId = getProductId(); 3783 3784 if (!isDropProduct()) { 3785 hideExistingFallbackNotice(); 3786 return; 3787 } 3788 3789 /* 3790 DOM fallback first. 3791 */ 3792 setDropOutOfStockNotice(shouldShowFromDomState()); 3793 3794 /* 3795 Then use BigCommerce selected variant response if available. 3796 */ 3797 if (!form || !productId) { 3798 return; 3799 } 3800 3801 fetch('/remote/v1/product-attributes/' + productId, { 3802 method: 'POST', 3803 credentials: 'include', 3804 headers: { 3805 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', 3806 'x-requested-with': 'stencil-utils' 3807 }, 3808 body: serializeForm(form) 3809 }) 3810 .then(function (response) { 3811 return response.clone().json(); 3812 }) 3813 .then(function (payload) { 3814 var data = payload && payload.data ? payload.data : null; 3815 3816 setDropOutOfStockNotice( 3817 shouldShowFromRemoteData(data) || shouldShowFromDomState() 3818 ); 3819 }) 3820 .catch(function () { 3821 setDropOutOfStockNotice(shouldShowFromDomState()); 3822 }); 3823 } 3824 3825 function scheduleCheck() { 3826 requestSelectedVariantState(); 3827 3828 setTimeout(requestSelectedVariantState, 100); 3829 setTimeout(requestSelectedVariantState, 400); 3830 setTimeout(requestSelectedVariantState, 900); 3831 setTimeout(requestSelectedVariantState, 1500); 3832 } 3833 3834 if (!isDropProduct()) { 3835 hideExistingFallbackNotice(); 3836 return; 3837 } 3838 3839 scheduleCheck(); 3840 3841 window.addEventListener('load', scheduleCheck); 3842 3843 document.addEventListener('change', function (event) { 3844 if ( 3845 event.target.closest('[data-product-option-change]') || 3846 event.target.matches('select') || 3847 event.target.matches('input[type="radio"]') || 3848 event.target.matches('input[type="checkbox"]') || 3849 event.target.matches('input[name^="attribute"]') 3850 ) { 3851 scheduleCheck(); 3852 } 3853 }, true); 3854 3855 document.addEventListener('click', function (event) { 3856 if ( 3857 event.target.closest('[data-product-option-change]') || 3858 event.target.closest('.form-option') || 3859 event.target.matches('input[name^="attribute"]') 3860 ) { 3861 scheduleCheck(); 3862 } 3863 }, true); 3864})(); 3865</script>
3865 3866 3867
3867<script type="application/ld+json"> 3868{ 3869 "@context": "https://schema.org", 3870 "@type": "PetStore", 3871 "name": "J&J Dog Supplies", 3872 "image": "https://cdn11.bigcommerce.com/s-cftgfbe14j/images/stencil/183x110/new-logo-horizontal_1590511746__09058.original.jpg", 3873 "@id": "https://www.jjdog.com/", 3874 "url": "https://www.jjdog.com/", 3875 "telephone": "+18006422050", 3876 "priceRange": "$$", 3877 "address": { 3878 "@type": "PostalAddress", 3879 "streetAddress": "975 Ford St.", 3880 "addressLocality": "Colorado Springs", 3881 "addressRegion": "CO", 3882 "postalCode": "80915", 3883 "addressCountry": "US" 3884 }, 3885 "openingHoursSpecification": { 3886 "@type": "OpeningHoursSpecification", 3887 "dayOfWeek": [ 3888 "Monday", 3889 "Tuesday", 3890 "Wednesday", 3891 "Friday", 3892 "Thursday" 3893 ], 3894 "opens": "07:30", 3895 "closes": "16:30" 3896 } 3897} 3898</script>
3898 3899
3900<script type="application/ld+json"> 3901{ 3902 "@context": "https://schema.org/", 3903 "@type": "WebSite", 3904 "name": "J&J Dog Supplies", 3905 "url": "https://www.jjdog.com", 3906 "potentialAction": { 3907 "@type": "SearchAction", 3908 "target": "https://www.jjdog.com/search-results-page?q={search_term_string}", 3909 "query-input": "required name=search_term_string" 3910 } 3911} 3912</script>
3912 3913 3914 3915 3916 <style> 3917 .stamped-badge-caption {font-size:15px !important;} 3918 3919#stamped-rewards-widget[data-widget-type="rewards-earnings-v2"][data-logged-in="false"] .stamped-rewards-widget-item[data-campaign-id="11472"] { 3920 display: none; 3921} 3922 3923#stamped-rewards-widget[data-widget-type="rewards-earnings-v2"][data-logged-in="false"] .stamped-rewards-widget-item[data-campaign-id="11473"] { 3924 display: none; 3925} 3926@media (min-width: 801px) { 3927 .page-content--centered { 3928 width: 72.66667%; 3929 } 3930} 3931[data-widget-type="rewards-spendings-v2"] .stamped-rewards-widget-campaigns-spendings .stamped-rewards-widget-campaign-image img {display:none;} 3932 </style> 3933 3934
3934<script async src="https://kit.fontawesome.com/5f4629c86e.js" crossorigin="anonymous" type="77683c8daf3a83c7926e58dc-text/javascript"></script>
3934 3935 3936 3937 3938
3938<script type="77683c8daf3a83c7926e58dc-text/javascript">window.__CF$cv$params={r:'a40f004a9bc61891',t:'MTc5MDM5MTQ0Ng==',u:'01a0dba56bf871eda07845d14f0866db',ut:'Zf0.tECm2jE_der03nOYeQTseh1fpfJhsY26GFazAPs-1790391446-1.2.1.1-.30JNlH6F3c9Dkr5Toikh4FbfYiS4O2QgGcaN.DJFiqmNpsL2NWw8MgMizDvMpKs.F_Tt_BuzcSEaCNxSAXCkfNfZ602BQ8lQMhsuDaBhWg',i:60};(function(){if(!document.body)return;var s=document.createElement('script');s.src='/cdn-cgi/challenge-platform/scripts/precursor/main.js';document.head.appendChild(s);})();</script>
vendor: 142 bytes, line 3938
3938<script src="/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js" data-cf-settings="77683c8daf3a83c7926e58dc-|49" defer></script>
3938</body> 3939</html>
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.