PageSourceSearch

https://www.stringswing.com/shop-all/stringed-instruments/guitar/

html stringswing.com collected 2026-09-26 16:48:27 UTC 285,140 bytes, 5,653 lines download raw bytes

1
2
3<!DOCTYPE html>
4<html class="no-js" lang="en">
5    <head>
6        <title>Guitar Wall Hangers, Mounts, Stands, &amp; Racks | Guitar Storage</title>
7        <link rel="dns-prefetch preconnect" href="https://cdn11.bigcommerce.com/s-5r2w8tg1gb" crossorigin><link rel="dns-prefetch preconnect" href="https://fonts.googleapis.com/" crossorigin><link rel="dns-prefetch preconnect" href="https://fonts.gstatic.com/" crossorigin>
8        	<meta name="description" content="String Swing manufactures storage solutions for any guitar, any number of guitars, &amp; any guitarist. Explore our innovative guitar hangers &amp; guitar displays."><link rel='canonical' href='https://www.stringswing.com/shop-all/stringed-instruments/guitar/' /><meta name='platform' content='bigcommerce.stencil' />
9        
10                <link rel="next" href="https://www.stringswing.com/shop-all/stringed-instruments/guitar/?page=2">
11
12        <meta name="google-site-verification" content="88aPcnKpXQOM7DeF_O-v_VMxC2rRJkM5tg7eVU7fbqc" />
13        <meta name="google-site-verification" content="lOvPFDlYTEILhuYgZnqP_-xXDAciHoMQTo-7MSWWX3I" />
14        
15        <!-- Start this type of method at 13-Jan-2025 To in process -->
16        <link rel="icon" type="image/x-icon" href="https://www.stringswing.com/product_images/favicon.ico">
17        <link rel="shortcut icon" href="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/product_images/favicon.jpg">
18        
19        
20        
21        <meta name="viewport" content="width=device-width, initial-scale=1">
22        
23        <meta name="facebook-domain-verification" content="mcm6d3ubi3mxz24op2xmgspkopa676" />
24        
25        
25<script nonce="">
26            document.documentElement.className = document.documentElement.className.replace('no-js', 'js');
27        </script>
27
28        
29        
29<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js?v=3" type="text/javascript" ></script>
29
30        
31        
32        
32<script nonce="">
33    function browserSupportsAllFeatures() {
34        return window.Promise
35            && window.fetch
36            && window.URL
37            && window.URLSearchParams
38            && window.WeakMap
39            // object-fit support
40            && ('objectFit' in document.documentElement.style);
41    }
42
43    function loadScript(src) {
44        var js = document.createElement('script');
45        js.src = src;
46        js.onerror = function () {
47            console.error('Failed to load polyfill script ' + src);
48        };
49        document.head.appendChild(js);
50    }
51
52    if (!browserSupportsAllFeatures()) {
53        loadScript('https://cdn11.bigcommerce.com/s-5r2w8tg1gb/stencil/c5819130-30ff-013f-db21-0604126aaccc/e/21435df0-9971-013f-45bc-4e388f6f202b/dist/theme-bundle.polyfills.js');
54    }
55</script>
55
56        
56<script nonce="">window.consentManagerTranslations = `{"locale":"en","locales":{"consent_manager.data_collection_warning":"en","consent_manager.accept_all_cookies":"en","consent_manager.gdpr_settings":"en","consent_manager.data_collection_preferences":"en","consent_manager.manage_data_collection_preferences":"en","consent_manager.use_data_by_cookies":"en","consent_manager.data_categories_table":"en","consent_manager.allow":"en","consent_manager.accept":"en","consent_manager.deny":"en","consent_manager.dismiss":"en","consent_manager.reject_all":"en","consent_manager.category":"en","consent_manager.purpose":"en","consent_manager.functional_category":"en","consent_manager.functional_purpose":"en","consent_manager.analytics_category":"en","consent_manager.analytics_purpose":"en","consent_manager.targeting_category":"en","consent_manager.advertising_category":"en","consent_manager.advertising_purpose":"en","consent_manager.essential_category":"en","consent_manager.esential_purpose":"en","consent_manager.yes":"en","consent_manager.no":"en","consent_manager.not_available":"en","consent_manager.cancel":"en","consent_manager.save":"en","consent_manager.back_to_preferences":"en","consent_manager.close_without_changes":"en","consent_manager.unsaved_changes":"en","consent_manager.by_using":"en","consent_manager.agree_on_data_collection":"en","consent_manager.change_preferences":"en","consent_manager.cancel_dialog_title":"en","consent_manager.privacy_policy":"en","consent_manager.allow_category_tracking":"en","consent_manager.disallow_category_tracking":"en"},"translations":{"consent_manager.data_collection_warning":"We use cookies (and other similar technologies) to collect data to improve your shopping experience.","consent_manager.accept_all_cookies":"Accept All Cookies","consent_manager.gdpr_settings":"Settings","consent_manager.data_collection_preferences":"Website Data Collection Preferences","consent_manager.manage_data_collection_preferences":"Manage Website Data Collection Preferences","consent_manager.use_data_by_cookies":" uses data collected by cookies and JavaScript libraries to improve your shopping experience.","consent_manager.data_categories_table":"The table below outlines how we use this data by category. To opt out of a category of data collection, select 'No' and save your preferences.","consent_manager.allow":"Allow","consent_manager.accept":"Accept","consent_manager.deny":"Deny","consent_manager.dismiss":"Dismiss","consent_manager.reject_all":"Reject all","consent_manager.category":"Category","consent_manager.purpose":"Purpose","consent_manager.functional_category":"Functional","consent_manager.functional_purpose":"Enables enhanced functionality, such as videos and live chat. If you do not allow these, then some or all of these functions may not work properly.","consent_manager.analytics_category":"Analytics","consent_manager.analytics_purpose":"Provide statistical information on site usage, e.g., web analytics so we can improve this website over time.","consent_manager.targeting_category":"Targeting","consent_manager.advertising_category":"Advertising","consent_manager.advertising_purpose":"Used to create profiles or personalize content to enhance your shopping experience.","consent_manager.essential_category":"Essential","consent_manager.esential_purpose":"Essential for the site and any requested services to work, but do not perform any additional or secondary function.","consent_manager.yes":"Yes","consent_manager.no":"No","consent_manager.not_available":"N/A","consent_manager.cancel":"Cancel","consent_manager.save":"Save","consent_manager.back_to_preferences":"Back to Preferences","consent_manager.close_without_changes":"You have unsaved changes to your data collection preferences. Are you sure you want to close without saving?","consent_manager.unsaved_changes":"You have unsaved changes","consent_manager.by_using":"By using our website, you're agreeing to our","consent_manager.agree_on_data_collection":"By using our website, you're agreeing to the collection of data as described in our ","consent_manager.change_preferences":"You can change your preferences at any time","consent_manager.cancel_dialog_title":"Are you sure you want to cancel?","consent_manager.privacy_policy":"Privacy Policy","consent_manager.allow_category_tracking":"Allow [CATEGORY_NAME] tracking","consent_manager.disallow_category_tracking":"Disallow [CATEGORY_NAME] tracking"}}`;</script>
56
57
58        
58<script nonce="">
59            window.lazySizesConfig = window.lazySizesConfig || {};
60            window.lazySizesConfig.loadMode = 1;
61        </script>
61
62        
62<script nonce="" async src="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/stencil/c5819130-30ff-013f-db21-0604126aaccc/e/21435df0-9971-013f-45bc-4e388f6f202b/dist/theme-bundle.head_async.js"></script>
62
63        
64        <link href="https://fonts.googleapis.com/css?family=Montserrat:700,500,400%7CKarla:400&display=block" rel="stylesheet">
65        
66        
66<script nonce="" async src="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/stencil/c5819130-30ff-013f-db21-0604126aaccc/e/21435df0-9971-013f-45bc-4e388f6f202b/dist/theme-bundle.font.js"></script>
66
67
68        <link data-stencil-stylesheet href="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/stencil/c5819130-30ff-013f-db21-0604126aaccc/e/21435df0-9971-013f-45bc-4e388f6f202b/css/theme-1ecdf6a0-3100-013f-bf88-427d0abff2cb.css" rel="stylesheet">
69        
70        <!-- Start Tracking Code for analytics_facebook -->
71
72<script>
73!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');
74
75fbq('set', 'autoConfig', 'false', '567723480372508');
76fbq('dataProcessingOptions', ['LDU'], 0, 0);
77fbq('init', '567723480372508', {"external_id":"68106a8b-69b6-456a-b114-80a129188a3e"});
78fbq('set', 'agent', 'bigcommerce', '567723480372508');
79
80function trackEvents() {
81    var pathName = window.location.pathname;
82
83    
84
85    // Search events start -- only fire if the shopper lands on the /search.php page
86    if (pathName.indexOf('/search.php') === 0 && getUrlParameter('search_query')) {
87        fbq('trackSingle', '567723480372508', 'Search', {
88            content_type: 'product_group',
89            content_ids: [],
90            search_string: getUrlParameter('search_query')
91        });
92    }
93    // Search events end
94
95    // Wishlist events start -- only fire if the shopper attempts to add an item to their wishlist
96    if (pathName.indexOf('/wishlist.php') === 0 && getUrlParameter('added_product_id')) {
97        fbq('trackSingle', '567723480372508', 'AddToWishlist', {
98            content_type: 'product_group',
99            content_ids: []
100        });
101    }
102    // Wishlist events end
103
104    // Lead events start -- only fire if the shopper subscribes to newsletter
105    if (pathName.indexOf('/subscribe.php') === 0 && getUrlParameter('result') === 'success') {
106        fbq('trackSingle', '567723480372508', 'Lead', {});
107    }
108    // Lead events end
109
110    // Registration events start -- only fire if the shopper registers an account
111    if (pathName.indexOf('/login.php') === 0 && getUrlParameter('action') === 'account_created') {
112        fbq('trackSingle', '567723480372508', 'CompleteRegistration', {}, "");
113    }
114    // Registration events end
115
116    
117
118    function getUrlParameter(name) {
119        var cleanName = name.replace(/[\[]/, '\[').replace(/[\]]/, '\]');
120        var regex = new RegExp('[\?&]' + cleanName + '=([^&#]*)');
121        var results = regex.exec(window.location.search);
122        return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
123    }
124}
125
126if (window.addEventListener) {
127    window.addEventListener("load", trackEvents, false)
128}
129</script>
129
130<noscript><img height="1" width="1" style="display:none" alt="null" src="https://www.facebook.com/tr?id=567723480372508&ev=PageView&noscript=1&a=plbigcommerce1.2&eid="/></noscript>
131
132<!-- End Tracking Code for analytics_facebook -->
133
134<!-- Start Tracking Code for analytics_googleanalytics4 -->
135
136<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 136
136
137<script data-cfasync="false">
138  (function () {
139    window.dataLayer = window.dataLayer || [];
140
141    function gtag(){
142        dataLayer.push(arguments);
143    }
144
145    function initGA4(event) {
146         function setupGtag() {
147            function configureGtag() {
148                gtag('js', new Date());
149                gtag('set', 'developer_id.dMjk3Nj', true);
150                gtag('config', 'G-QBGB93N37G');
151            }
152
153            var script = document.createElement('script');
154
155            script.src = 'https://www.googletagmanager.com/gtag/js?id=G-QBGB93N37G';
156            script.async = true;
157            script.onload = configureGtag;
158
159            document.head.appendChild(script);
160        }
161
162        setupGtag();
163
164        if (typeof subscribeOnBodlEvents === 'function') {
165            subscribeOnBodlEvents('G-QBGB93N37G', false);
166        }
167
168        window.removeEventListener(event.type, initGA4);
169    }
170
171    
172
173    var eventName = document.readyState === 'complete' ? 'consentScriptsLoaded' : 'DOMContentLoaded';
174    window.addEventListener(eventName, initGA4, false);
175  })()
176</script>
176
177
178<!-- End Tracking Code for analytics_googleanalytics4 -->
179
180<!-- Start Tracking Code for analytics_siteverification -->
vendor: 65 bytes, lines 180-182
180
181
182<script async src="https://www.googletagmanager.com/gtag/js?id=
182UA-147015641-2
vendor: 12 bytes, line 182
182"></script>
183<script>
184  
vendor: 134 bytes, lines 184-188
184window.dataLayer = window.dataLayer || [];
185  function gtag(){dataLayer.push(arguments);}
186  gtag('js', new Date());
187
188  gtag('config', '
188UA-147015641-2
vendor: 6 bytes, lines 188-189
188');
189  
189gtag('config', 'AW-869051340');
190
191function trackEcommerce() {
192    function gaAddTrans(orderID, store, total, tax, shipping, city, state, country, currency, channelInfo) {
193        var transaction = {
194            id: orderID,
195            affiliation: store,
196            revenue: total,
197            tax: tax,
198            shipping: shipping,
199            city: city,
200            state: state,
201            country: country
202        };
203
204        if (currency) {
205            transaction.currency = currency;
206        }
207
208        ga('ecommerce:addTransaction', transaction);
209    }
210    
211    function gaAddItems(orderID, sku, product, variation, price, qty) {
212        ga('ecommerce:addItem', {
213            id: orderID,
214            sku: sku,
215            name: product,
216            category: variation,
217            price: price,
218            quantity: qty
219        });
220    }
221
222    function gaTrackTrans() {
223        ga('ecommerce:send');
224    }
225
226    function gtagAddTrans(orderID, store, total, tax, shipping, city, state, country, currency, channelInfo) {
227        this.transaction = {
228            transaction_id: orderID,
229            affiliation: store,
230            value: total,
231            tax: tax,
232            shipping: shipping,
233            items: []
234        };
235
236        if (currency) {
237            this.transaction.currency = currency;
238        }
239    }
240
241    function gtagAddItem(orderID, sku, product, variation, price, qty) {
242        this.transaction.items.push({
243            id: sku,
244            name: product,
245            category: variation,
246            price: price,
247            quantity: qty
248        });
249    }
250
251    function gtagTrackTrans() {
252        gtag('event', 'purchase', this.transaction);
253        gtag('event', 'conversion', {
254            'send_to': 'AW-869051340',
255            'value': this.transaction.value,
256            'transaction_id': this.transaction.transaction_id,
257        });
258        this.transaction = null;
259    }
260
261    if (typeof gtag === 'function') {
262        this._addTrans = gtagAddTrans;
263        this._addItem = gtagAddItem;
264        this._trackTrans = gtagTrackTrans;
265    } else if (typeof ga === 'function') {
266        this._addTrans = gaAddTrans;
267        this._addItem = gaAddItems;
268        this._trackTrans = gaTrackTrans;
269    }
270}
271
272var pageTracker = new trackEcommerce();
273</script>
273
274
275<!-- End Tracking Code for analytics_siteverification -->
276
277
278<script type="text/javascript" src="https://checkout-sdk.bigcommerce.com/v1/loader.js" defer ></script>
vendor: 1 bytes, line 278
278
279<script type="text/javascript">
280fbq('trackSingle', '567723480372508', 'ViewCategory', {"content_ids":["473","411","322","483","478","475","366","474","354","329","439"],"content_type":"product_group","content_category":"Guitar"});
281</script>
vendor: 1 bytes, line 281
281
282<script type="text/javascript">
283var BCData = {};
284</script>
vendor: 1 bytes, line 284
284
285<script src='https://cdn-redirector.glopal.com/common/js/webinterpret-loader.js?bigcommerce_store_hash=5r2w8tg1gb' async></script>
285<script>var _d_site = _d_site || '130EB3698DB2035BC86AD337';</script>
285<!-- Hotjar Tracking Code for https://www.stringswing.com/ -->
286<script>
vendor: 125 bytes, lines 286-289
286
287    (function(h,o,t,j,a,r){
288        h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};
289        h._hjSettings={hjid:
2892681667
vendor: 258 bytes, lines 289-294
289,hjsv:6};
290        a=o.getElementsByTagName('head')[0];
291        r=o.createElement('script');r.async=1;
292        r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;
293        a.appendChild(r);
294    })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');
295</script>
295<script async defer src="https://tools.luckyorange.com/core/lo.js?site-id=f6c59d6f"></script>
295<!-- Begin: Northbeam pixel -->
296<script>// async type="text/javascript" src="//j.northbeam.io/ota-sp/4e89b810-838d-41dc-ad3f-d1aacb33c3fd.js"></script>
296
297<!-- End: Northbeam pixel -->
298
299<!-- Begin: Northbeam pixel -->
300<script>(function(){var r;(n=r=r||{}).A="identify",n.B="trackPageView",n.C="fireEmailCaptureEvent",n.D="fireCustomGoal",n.E="firePurchaseEvent";var n="//j.northbeam.io/ota-sp/4e89b810-838d-41dc-ad3f-d1aacb33c3fd.js";function t(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];a.push({fnName:n,args:e})}var a=[],e=((e={_q:a})[r.A]=function(n,e){return t(r.A,n,e)},e[r.B]=function(){return t(r.B)},e[r.C]=function(n,e){return t(r.C,n,e)},e[r.D]=function(n,e){return t(r.D,n,e)},e[r.E]=function(n){return t(r.E,n)},window.Northbeam=e,document.createElement("script"));e.async=!0,e.src=n,document.head.appendChild(e);})()</script>
300
301<!-- End: Northbeam pixel -->
301<script>
302function z_getParameterByName(name) {
303    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
304    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
305        results = regex.exec(location.search);
306    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
307}
308
309if(z_getParameterByName("adid") !== "gshopping"){
310    var head= document.getElementsByTagName('head')[0];
311    var script= document.createElement('script');
312    script.type= 'text/javascript';
313    script.src= 'https://hello.zonos.com/hello.js?siteKey=1G242Z618CXDS';
314    head.appendChild(script);
315}
316</script>
316<script type="text/javascript" src="https://appdevelopergroup.co/apps/bc_smartbar/js/smartbar.js?shop=04bf39fdfc62786cd897caa0ce4b3749"></script>
316<!-- Google Tag Manager -->
317<script>
vendor: 327 bytes, lines 317-321
317(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
318new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
319j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
320'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
321})(window,document,'script','dataLayer','
321GTM-W434G2T
vendor: 3 bytes, line 321
321');
321</script>
321
322<!-- End Google Tag Manager -->
322<script src="https://us1-config.doofinder.com/2.x/e7f58881-2a64-4f14-9f3b-c304e50628f3.js" async></script>
322<script>
323var b2bHideBodyStyle = document.createElement('style');
324b2bHideBodyStyle.id = 'b2b-account-page-hide-body';
325 const removeCart = () => {
326   const style = document.createElement('style');
327   style.type = 'text/css';
328   style.id = 'b2bPermissions-cartElement-id'
329   style.innerHTML='[href="/cart.php"], #form-action-addToCart, [data-button-type="add-cart"], .button--cardAdd, .card-figcaption-button, [data-emthemesmodez-cart-item-add], .add-to-cart-button { display: none !important }'
330   document.getElementsByTagName('head').item(0).appendChild(style); 
331 }
332 removeCart()
333</script>
333<script>/* >> Heatmap.com :: Snippet << */(function (h,e,a,t,m,ap) { (h._heatmap_paq = []).push([ 'setTrackerUrl', (h.heatUrl = e) + a]); h.hErrorLogs=h.hErrorLogs || []; ap=t.createElement('script');  ap.src=h.heatUrl+'preprocessor.min.js?sid='+m;  ap.defer=true; t.head.appendChild(ap); ['error', 'unhandledrejection'].forEach(function (ty) {     h.addEventListener(ty, function (et) { h.hErrorLogs.push({ type: ty, event: et }); }); });})(window,'https://dashboard.heatmap.com/','heatmap.php',document,6164);</script>
333<script nonce="">
334if(typeof fbq === 'function') {
335  fbq('trackSingle', '567723480372508', 'PageView', {}, {"eventID":"b6168f79-e068-472c-9d38-88473e11a03b"});
336} else if (typeof window.addEventListener === 'function') {
337  window.addEventListener("load", function() { fbq('trackSingle', '567723480372508', 'PageView', {}, {"eventID":"b6168f79-e068-472c-9d38-88473e11a03b"}); }, false)
338}
339</script>
339
340 
340<script data-cfasync="false" src="https://microapps.bigcommerce.com/bodl-events/1.9.4/index.js" integrity="sha256-Y0tDj1qsyiKBRibKllwV0ZJ1aFlGYaHHGl/oUFoXJ7Y=" nonce="" crossorigin="anonymous"></script>
340
341 
341<script data-cfasync="false" nonce="">
342
343 (function() {
344    function decodeBase64(base64) {
345       const text = atob(base64);
346       const length = text.length;
347       const bytes = new Uint8Array(length);
348       for (let i = 0; i < length; i++) {
349          bytes[i] = text.charCodeAt(i);
350       }
351       const decoder = new TextDecoder();
352       return decoder.decode(bytes);
353    }
354    window.bodl = JSON.parse(decodeBase64("eyJzZXNzaW9uIjp7ImlkIjoiMzk4NDAzYTItZmM2MC00YjYwLWI2ZDgtM2EzZjc5ZTBmOGIzIiwiZmlyc3RfdG91Y2hfdGltZXN0YW1wIjoiMjAyNi0wOS0yNlQxNjo0ODoyNiIsImZpcnN0X3RvdWNoX3JlZmVycmFsX3VybCI6IiIsImZpcnN0X3RvdWNoX3JlcXVlc3RfdXJsIjoiaHR0cHM6Ly93d3cuc3RyaW5nc3dpbmcuY29tL3Nob3AtYWxsL3N0cmluZ2VkLWluc3RydW1lbnRzL2d1aXRhci8ifSwic2hvcHBlciI6eyJ2aXNpdG9yX2lkIjoiIiwiY3VzdG9tZXJfaWQiOm51bGwsImVtYWlsIjpudWxsLCJmaXJzdF9uYW1lIjpudWxsLCJsYXN0X25hbWUiOm51bGx9LCJkYXRhX2NvbnNlbnQiOnsiZnVuY3Rpb25hbCI6dHJ1ZSwiYW5hbHl0aWNzIjp0cnVlLCJhZHZlcnRpc2luZyI6dHJ1ZX0sImV2ZW50cyI6W3siYm9kbF92MV9wcm9kdWN0X2NhdGVnb3J5X3ZpZXdlZCI6eyJldmVudF9pZCI6ImVhMzI3MTU3LWQwODYtNDY2Ni1iOTUwLTU0OWI3MTliMDUxMyIsImNoYW5uZWxfaWQiOjEsImNhdGVnb3J5X2lkIjo2MSwiY2F0ZWdvcnlfbmFtZSI6Ikd1aXRhciIsImxpbmVfaXRlbXMiOlt7InByb2R1Y3RfaWQiOiI0NzMiLCJza3UiOiJTVzEwUkwtSyIsInZhcmlhbnRfaWQiOm51bGwsInByb2R1Y3RfbmFtZSI6Ikd1aXRhciBXYWxsIFJhY2sgZm9yIDEwIEd1aXRhcnMiLCJnaWZ0X2NlcnRpZmljYXRlX2lkIjpudWxsLCJnaWZ0X2NlcnRpZmljYXRlX25hbWUiOm51bGwsImdpZnRfY2VydGlmaWNhdGVfdGhlbWUiOm51bGwsInB1cmNoYXNlX3ByaWNlIjozNDcuNzgsInNhbGVfcHJpY2UiOm51bGwsImJhc2VfcHJpY2UiOm51bGwsInJldGFpbF9wcmljZSI6NDE3LjM0LCJxdWFudGl0eSI6bnVsbCwiZGlzY291bnQiOjY5LjU2LCJjb3Vwb25fYW1vdW50IjpudWxsLCJpbmRleCI6MCwiYnJhbmRfbmFtZSI6bnVsbCwiY2F0ZWdvcnlfbmFtZXMiOlsiR3VpdGFyIl0sImN1cnJlbmN5IjoiVVNEIn0seyJwcm9kdWN0X2lkIjoiNDExIiwic2t1IjoiU1c1UkwtSyIsInZhcmlhbnRfaWQiOm51bGwsInByb2R1Y3RfbmFtZSI6Ik11bHRpcGxlIEd1aXRhciBXYWxsIFJhY2siLCJnaWZ0X2NlcnRpZmljYXRlX2lkIjpudWxsLCJnaWZ0X2NlcnRpZmljYXRlX25hbWUiOm51bGwsImdpZnRfY2VydGlmaWNhdGVfdGhlbWUiOm51bGwsInB1cmNoYXNlX3ByaWNlIjoxNzMuODksInNhbGVfcHJpY2UiOm51bGwsImJhc2VfcHJpY2UiOm51bGwsInJldGFpbF9wcmljZSI6MjA4LjY3LCJxdWFudGl0eSI6bnVsbCwiZGlzY291bnQiOjM0Ljc4LCJjb3Vwb25fYW1vdW50IjpudWxsLCJpbmRleCI6MSwiYnJhbmRfbmFtZSI6bnVsbCwiY2F0ZWdvcnlfbmFtZXMiOlsiR3VpdGFyIl0sImN1cnJlbmN5IjoiVVNEIn0seyJwcm9kdWN0X2lkIjoiMzIyIiwic2t1IjoiQ0MwMUsuIiwidmFyaWFudF9pZCI6bnVsbCwicHJvZHVjdF9uYW1lIjoiV29vZGVuIEd1aXRhciBXYWxsIE1vdW50IiwiZ2lmdF9jZXJ0aWZpY2F0ZV9pZCI6bnVsbCwiZ2lmdF9jZXJ0aWZpY2F0ZV9uYW1lIjpudWxsLCJnaWZ0X2NlcnRpZmljYXRlX3RoZW1lIjpudWxsLCJwdXJjaGFzZV9wcmljZSI6MTguOTksInNhbGVfcHJpY2UiOm51bGwsImJhc2VfcHJpY2UiOm51bGwsInJldGFpbF9wcmljZSI6MjIuNzksInF1YW50aXR5IjpudWxsLCJkaXNjb3VudCI6My44LCJjb3Vwb25fYW1vdW50IjpudWxsLCJpbmRleCI6MiwiYnJhbmRfbmFtZSI6bnVsbCwiY2F0ZWdvcnlfbmFtZXMiOlsiR3VpdGFyIl0sImN1cnJlbmN5IjoiVVNEIn0seyJwcm9kdWN0X2lkIjoiNDgzIiwic2t1IjoiUExVU0hDUkFETEVDT1ZFUiIsInZhcmlhbnRfaWQiOm51bGwsInByb2R1Y3RfbmFtZSI6IlBsdXNoIENyYWRsZSBDb3ZlciBmb3IgTml0cm8gU2FmZSBHdWl0YXIgSGFuZ2VyIiwiZ2lmdF9jZXJ0aWZpY2F0ZV9pZCI6bnVsbCwiZ2lmdF9jZXJ0aWZpY2F0ZV9uYW1lIjpudWxsLCJnaWZ0X2NlcnRpZmljYXRlX3RoZW1lIjpudWxsLCJwdXJjaGFzZV9wcmljZSI6MTguOTksInNhbGVfcHJpY2UiOm51bGwsImJhc2VfcHJpY2UiOm51bGwsInJldGFpbF9wcmljZSI6MjIuNzksInF1YW50aXR5IjpudWxsLCJkaXNjb3VudCI6My44LCJjb3Vwb25fYW1vdW50IjpudWxsLCJpbmRleCI6MywiYnJhbmRfbmFtZSI6bnVsbCwiY2F0ZWdvcnlfbmFtZXMiOlsiR3VpdGFyIl0sImN1cnJlbmN5IjoiVVNEIn0seyJwcm9kdWN0X2lkIjoiNDc4Iiwic2t1IjpudWxsLCJ2YXJpYW50X2lkIjpudWxsLCJwcm9kdWN0X25hbWUiOiJHdWl0YXIgUmFjayBmb3IgMyBHdWl0YXJzIiwiZ2lmdF9jZXJ0aWZpY2F0ZV9pZCI6bnVsbCwiZ2lmdF9jZXJ0aWZpY2F0ZV9uYW1lIjpudWxsLCJnaWZ0X2NlcnRpZmljYXRlX3RoZW1lIjpudWxsLCJwdXJjaGFzZV9wcmljZSI6OTUuOTQsInNhbGVfcHJpY2UiOm51bGwsImJhc2VfcHJpY2UiOm51bGwsInJldGFpbF9wcmljZSI6MTE1LjEzLCJxdWFudGl0eSI6bnVsbCwiZGlzY291bnQiOjE5LjE5LCJjb3Vwb25fYW1vdW50IjpudWxsLCJpbmRleCI6NCwiYnJhbmRfbmFtZSI6bnVsbCwiY2F0ZWdvcnlfbmFtZXMiOlsiR3VpdGFyIl0sImN1cnJlbmN5IjoiVVNEIn0seyJwcm9kdWN0X2lkIjoiNDc1Iiwic2t1IjpudWxsLCJ2YXJpYW50X2lkIjpudWxsLCJwcm9kdWN0X25hbWUiOiJHdWl0YXIgYW5kIEd1aXRhciBDYXNlIFN0b3JhZ2UgUmFjayBTZXQiLCJnaWZ0X2NlcnRpZmljYXRlX2lkIjpudWxsLCJnaWZ0X2NlcnRpZmljYXRlX25hbWUiOm51bGwsImdpZnRfY2VydGlmaWNhdGVfdGhlbWUiOm51bGwsInB1cmNoYXNlX3ByaWNlIjoyNTEuOTgsInNhbGVfcHJpY2UiOm51bGwsImJhc2VfcHJpY2UiOm51bGwsInJldGFpbF9wcmljZSI6bnVsbCwicXVhbnRpdHkiOm51bGwsImRpc2NvdW50IjpudWxsLCJjb3Vwb25fYW1vdW50IjpudWxsLCJpbmRleCI6NSwiYnJhbmRfbmFtZSI6bnVsbCwiY2F0ZWdvcnlfbmFtZXMiOlsiR3VpdGFyIl0sIm
354N1cnJlbmN5IjoiVVNEIn0seyJwcm9kdWN0X2lkIjoiMzY2Iiwic2t1IjoiQ0MzNC4iLCJ2YXJpYW50X2lkIjpudWxsLCJwcm9kdWN0X25hbWUiOiJXb29kZW4gR3VpdGFyIFN0YW5kIFJhY2siLCJnaWZ0X2NlcnRpZmljYXRlX2lkIjpudWxsLCJnaWZ0X2NlcnRpZmljYXRlX25hbWUiOm51bGwsImdpZnRfY2VydGlmaWNhdGVfdGhlbWUiOm51bGwsInB1cmNoYXNlX3ByaWNlIjoxNDIuOTksInNhbGVfcHJpY2UiOm51bGwsImJhc2VfcHJpY2UiOm51bGwsInJldGFpbF9wcmljZSI6MjI5LjE5LCJxdWFudGl0eSI6bnVsbCwiZGlzY291bnQiOjg2LjIsImNvdXBvbl9hbW91bnQiOm51bGwsImluZGV4Ijo2LCJicmFuZF9uYW1lIjpudWxsLCJjYXRlZ29yeV9uYW1lcyI6WyJHdWl0YXIiXSwiY3VycmVuY3kiOiJVU0QifSx7InByb2R1Y3RfaWQiOiI0NzQiLCJza3UiOm51bGwsInZhcmlhbnRfaWQiOm51bGwsInByb2R1Y3RfbmFtZSI6IkRvdWJsZSBHdWl0YXIgU3RhbmQgUmFjayBCdW5kbGUiLCJnaWZ0X2NlcnRpZmljYXRlX2lkIjpudWxsLCJnaWZ0X2NlcnRpZmljYXRlX25hbWUiOm51bGwsImdpZnRfY2VydGlmaWNhdGVfdGhlbWUiOm51bGwsInB1cmNoYXNlX3ByaWNlIjoyODUuOTgsInNhbGVfcHJpY2UiOm51bGwsImJhc2VfcHJpY2UiOm51bGwsInJldGFpbF9wcmljZSI6bnVsbCwicXVhbnRpdHkiOm51bGwsImRpc2NvdW50IjpudWxsLCJjb3Vwb25fYW1vdW50IjpudWxsLCJpbmRleCI6NywiYnJhbmRfbmFtZSI6bnVsbCwiY2F0ZWdvcnlfbmFtZXMiOlsiR3VpdGFyIl0sImN1cnJlbmN5IjoiVVNEIn0seyJwcm9kdWN0X2lkIjoiMzU0Iiwic2t1IjoiQ0MyOS4iLCJ2YXJpYW50X2lkIjpudWxsLCJwcm9kdWN0X25hbWUiOiJHdWl0YXIgQ2FzZSBSYWNrIFN0YW5kIiwiZ2lmdF9jZXJ0aWZpY2F0ZV9pZCI6bnVsbCwiZ2lmdF9jZXJ0aWZpY2F0ZV9uYW1lIjpudWxsLCJnaWZ0X2NlcnRpZmljYXRlX3RoZW1lIjpudWxsLCJwdXJjaGFzZV9wcmljZSI6MTA4Ljk5LCJzYWxlX3ByaWNlIjpudWxsLCJiYXNlX3ByaWNlIjpudWxsLCJyZXRhaWxfcHJpY2UiOjE5MS45OSwicXVhbnRpdHkiOm51bGwsImRpc2NvdW50Ijo4My4wLCJjb3Vwb25fYW1vdW50IjpudWxsLCJpbmRleCI6OCwiYnJhbmRfbmFtZSI6bnVsbCwiY2F0ZWdvcnlfbmFtZXMiOlsiR3VpdGFyIl0sImN1cnJlbmN5IjoiVVNEIn0seyJwcm9kdWN0X2lkIjoiMzI5Iiwic2t1IjoiQ0MwMS4iLCJ2YXJpYW50X2lkIjpudWxsLCJwcm9kdWN0X25hbWUiOiJHdWl0YXIgV2FsbCBIYW5nZXI6IE9yaWdpbmFsIFN0eWxlIiwiZ2lmdF9jZXJ0aWZpY2F0ZV9pZCI6bnVsbCwiZ2lmdF9jZXJ0aWZpY2F0ZV9uYW1lIjpudWxsLCJnaWZ0X2NlcnRpZmljYXRlX3RoZW1lIjpudWxsLCJwdXJjaGFzZV9wcmljZSI6MTguOTksInNhbGVfcHJpY2UiOm51bGwsImJhc2VfcHJpY2UiOm51bGwsInJldGFpbF9wcmljZSI6MjIuNzksInF1YW50aXR5IjpudWxsLCJkaXNjb3VudCI6My44LCJjb3Vwb25fYW1vdW50IjpudWxsLCJpbmRleCI6OSwiYnJhbmRfbmFtZSI6bnVsbCwiY2F0ZWdvcnlfbmFtZXMiOlsiR3VpdGFyIl0sImN1cnJlbmN5IjoiVVNEIn0seyJwcm9kdWN0X2lkIjoiNDM5Iiwic2t1IjoiQ0MxMSIsInZhcmlhbnRfaWQiOm51bGwsInByb2R1Y3RfbmFtZSI6IkNsYXNzaWNhbCBHdWl0YXIgSGFuZ2VyIFdhbGwgTW91bnQiLCJnaWZ0X2NlcnRpZmljYXRlX2lkIjpudWxsLCJnaWZ0X2NlcnRpZmljYXRlX25hbWUiOm51bGwsImdpZnRfY2VydGlmaWNhdGVfdGhlbWUiOm51bGwsInB1cmNoYXNlX3ByaWNlIjoxOC45OSwic2FsZV9wcmljZSI6bnVsbCwiYmFzZV9wcmljZSI6bnVsbCwicmV0YWlsX3ByaWNlIjoyMi43OSwicXVhbnRpdHkiOm51bGwsImRpc2NvdW50IjozLjgsImNvdXBvbl9hbW91bnQiOm51bGwsImluZGV4IjoxMCwiYnJhbmRfbmFtZSI6bnVsbCwiY2F0ZWdvcnlfbmFtZXMiOlsiR3VpdGFyIl0sImN1cnJlbmN5IjoiVVNEIn1dfX1dfQ=="));
355 })()
356
357 </script>
357
358
359<script nonce="">
360(function () {
361    var xmlHttp = new XMLHttpRequest();
362    
363    xmlHttp.open('POST', 'https://bes.gcp.data.bigcommerce.com/nobot');
364    xmlHttp.setRequestHeader('Content-Type', 'application/json');
365    xmlHttp.send('{"store_id":"1000954513","timezone_offset":"-5.0","timestamp":"2026-09-26T16:48:26.86416400Z","visit_id":"0d5713be-2776-44d3-b0a7-300f2ab57c7b","channel_id":1}');
366})();
367</script>
367
368
369        
vendor: 1,039 bytes, lines 369-376
369<script>
370    		!function (w, d, t) {
371    		  w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i<ttq.methods.length;i++)ttq.setAndDefer(ttq,ttq.methods[i]);ttq.instance=function(t){for(var e=ttq._i[t]||[],n=0;n<ttq.methods.length;n++)ttq.setAndDefer(e,ttq.methods[n]);return e},ttq.load=function(e,n){var i="https://analytics.tiktok.com/i18n/pixel/events.js";ttq._i=ttq._i||{},ttq._i[e]=[],ttq._i[e]._u=i,ttq._t=ttq._t||{},ttq._t[e]=+new Date,ttq._o=ttq._o||{},ttq._o[e]=n||{};var o=document.createElement("script");o.type="text/javascript",o.async=!0,o.src=i+"?sdkid="+e+"&lib="+t;var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(o,a)};
372    		
373    		  ttq.load('C54RJ0BG5HFBPDLNJJA0');
374    		  ttq.page();
375    		}(window, document, 'ttq');
376    	</script>
376
377    </head>
378    <body>
379        <svg data-src="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/stencil/c5819130-30ff-013f-db21-0604126aaccc/e/21435df0-9971-013f-45bc-4e388f6f202b/img/icon-sprite.svg" class="icons-svg-sprite"></svg>
380
381        
382<div id="announcement-bar">
383    <div class="page-section full announcement-bar-wrapper ss-global">
384        <div class="announcement-bar">
385            <div class="body-text2">Save Up to $200</div>
386            <a href="/discounts/#spend-save" class="body-text2 black link">Learn More</a>
387        </div>
388    </div>
389</div>
390
391<script>
392$(document).ready(function() {
393    // 1. Handle clicks when the user is already on the /discounts/ page
394    $("#announcement-bar a").click(function(e) {
395        if (window.location.pathname.includes("/discounts")) {
396            e.preventDefault();
397            $('html, body').animate({
398                scrollTop: $("#spend-save").offset().top - 150
399            }, 'slow');
400        }
401        // If on another page, it naturally follows href="/discounts/#spend-save"
402    });
403    // 2. Handle page loads when arriving from ANOTHER page with the #spend-save hash
404    if (window.location.pathname.includes("/discounts") && window.location.hash === "#spend-save") {
405        // Temporarily clear the hash so the browser doesn't do its default instant jump
406        history.replaceState(null, null, window.location.pathname);
407        
408        // Immediately trigger your exact smooth animation with the 150px offset
409        setTimeout(function() {
410            if ($("#spend-save").length) {
411                $('html, body').animate({
412                    scrollTop: $("#spend-save").offset().top - 150
413                }, 'slow');
414            }
415        }, 50);
416    }
417});
418</script>
418
419
420
421
422
423
424
425
426<header id="nav-bar">
427    <div class="nav-bar ss-global">
428        <!-- Nav Wrapper Desktop -->
429        <div class="section-wrapper nav-bar-wrapper nav-scroll-top">
430            <!-- Nav Bar - Left -->
431            <div class="nav-left heading4">
432                <a href="/" title="STRING SWING">STRING SWING<span style="color: #646464;">.</span></a>
433            </div>
434            <!-- Nav Bar - Center -->
435            <div class="nav-center header-tabs">
436                <div class="header-tab nav-menu-toggle heading6">
437                    <a href="javascript:void(0);" title="Shop All">
438                        Shop All
439                        <div class="svg-plus small thin">
440                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 49.12 49.12">
441                              <g fill='none' stroke='#000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.12px'>
442                                <path d="M24.56.56v48M48.56,24.56H.56"></path>
443                              </g>
444                            </svg>
445                        </div>
446                    </a>
447                </div>
448                <div class="header-tab heading6">
449                	<a href="/contact-us-1/" title="Contact Us">Contact Us</a>
450                </div>
451                <div class="header-tab heading6">
452                	<a href="/gallery/" title="Gallery">Gallery</a>
453                </div>
454            </div>
455            <!-- Nav Bar - Right -->
456            <div class="nav-right header-tabs">
457                <div id="header-region" class="header-region" style="display:none;">
458    <div class="region-inner">
459        <div class="custom-zonos-country">
460			<!-- Following span add to show country select option value as a text -->
461            <!---->
462            <span class="zonos-value-text"></span>
463            
464			<svg id="flagDropDownArrow" xmlns="http://www.w3.org/2000/svg" width="49.592" height="25.357" viewBox="0 0 49.592 25.357">
465            	<path id="Path_780" data-name="Path 780" d="M48.563.563l-24,24-24-24" transform="translate(0.233 0.232)" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.125"></path>
466            </svg>
467        </div>
468    </div>
469</div>
470
471<!-- Following script show country select option value as a text -->
472<script>
473$(document).ready(function () {
474
475  $(".header-region").css("display", "none");
476
477  function restoreScrollAfter(fn) {
478    var scrollTop = $(window).scrollTop();
479    fn();
480    $(window).scrollTop(scrollTop);
481  }
482
483  var checkZonos = setInterval(function () {
484    if ($("#zonos select").length) {
485      clearInterval(checkZonos);
486
487      setTimeout(function () {
488        $(".header-region").css("display", "flex");
489      }, 500);
490
491      var $containers = $(".custom-zonos-country");
492
493      /* -----------------------------
494         UPDATE TEXT FROM OPTION VALUE
495      ------------------------------ */
496      function updateOptionValueText($selects) {
497        $selects.each(function () {
498          var val = $(this).val();
499          $(this)
500            .closest(".custom-zonos-country")
501            .find(".zonos-value-text")
502            .text(val);
503        });
504      }
505
506      /* -----------------------------
507         SYNC ORIGINAL → CUSTOM
508      ------------------------------ */
509      function syncFromOriginal(callback) {
510        $(".region-inner").hide();
511
512        var $original = $("#zonos select");
513        if (!$original.length) return;
514
515        var newVal = $original.val();
516        var optionsHtml = $original.html();
517
518        $(".custom-zonos-country select").each(function () {
519          $(this).html(optionsHtml).val(newVal);
520        });
521
522        updateOptionValueText($(".custom-zonos-country select"));
523
524        if (typeof callback === "function") callback();
525
526        $(".region-inner").show();
527      }
528
529      /* -----------------------------
530         CREATE CUSTOM SELECTS
531      ------------------------------ */
532      $containers.each(function (i, el) {
533        var $container = $(el);
534
535        if ($container.find("select").length === 0) {
536          var $original = $("#zonos select");
537
538          var $clonedSelect = $original
539            .clone()
540            .attr("id", "custom-zonos-select-" + i);
541
542          $container.append($clonedSelect).show();
543
544          /* custom → original */
545          $clonedSelect.on("change", function () {
546            $(".region-inner").hide();
547
548            var newVal = $(this).val();
549            var $originalNative = $("#zonos select");
550
551            restoreScrollAfter(function () {
552              // Fix: jQuery trigger use karein jo automated event handling karta hai
553              // Aur Native event dispatch ke liye purana method (no curly braces)
554              $originalNative.val(newVal).trigger("change");
555              
556              var ev = document.createEvent('HTMLEvents');
557              ev.initEvent('change', true, true);
558              $originalNative[0].dispatchEvent(ev);
559            });
560
561            updateOptionValueText($(this));
562
563            setTimeout(function () {
564              $(".region-inner").show();
565            }, 500);
566          });
567        }
568      });
569
570      /* -----------------------------
571         ORIGINAL → CUSTOM CHANGE
572      ------------------------------ */
573      $(document).on("change", "#zonos select", function () {
574        restoreScrollAfter(function () {
575          syncFromOriginal();
576        });
577      });
578
579      /* -----------------------------
580         INITIAL SYNC
581      ------------------------------ */
582      syncFromOriginal();
583
584      /* -----------------------------
585         OBSERVE ZONOS RE-RENDER
586      ------------------------------ */
587      var targetNode = document.querySelector("#zonos.left");
588      if (targetNode) {
589        var observer = new MutationObserver(function () {
590          var scrollTop = $(window).scrollTop();
591          updateOptionValueText($(".custom-zonos-country select"));
592          $(window).scrollTop(scrollTop);
593        });
594
595        observer.observe(targetNode, {
596          childList: true,
597          subtree: true,
598          attributes: true
599        });
600      }
601
602      /* -----------------------------
603         OUTSIDE CLICK → CLOSE POPUP
604      ------------------------------ */
605      $(document).on("click", function (e) {
606        if (
607          $(e.target).closest(".custom-zonos-country").length ||
608          $(e.target).closest("#zonos").length
609        ) return;
610
611        var $closeBtn = $("#zonos .z-close");
612        if ($closeBtn.length) {
613          restoreScrollAfter(function () {
614            $closeBtn.trigger("click");
615          });
616        }
617      });
618    }
619  }, 300);
620});
621</script>
621
622
623
624
625<!-- This script use for showing zonos in local development -->
626                <div class="--header-tab icon search">
627    <div class="svg-search small3 thin">
628        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 49.13 49.13">
629          <g fill='none' stroke='#000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.12px'>
630            <path d="M35.43,35.43h0c-7.98,7.98-20.91,7.98-28.89,0h0C-1.43,27.46-1.43,14.52,6.55,6.55h0c7.98-7.98,20.91-7.98,28.89,0h0c7.98,7.98,7.98,20.91,0,28.89ZM35.43,35.43l13.13,13.13"></path>
631          </g>
632        </svg>
633    </div>
634</div>
635                <div class="-header-tab icon account navUser-item--account">
636    <a class="navUser-action" href="##" aria-label="Log in">
637    <div class="svg-account small3 thin">
638        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 49.12 49.13">
639          <g fill='none' stroke='#000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.12px'>
640            <path d="M.56,48.56c4.79-7.65,13.75-12.8,24-12.8s19.21,5.15,24,12.8M24.56.56c-7.07,0-12.8,5.73-12.8,12.8s5.73,12.8,12.8,12.8,12.8-5.73,12.8-12.8S31.63.56,24.56.56Z"></path>
641          </g>
642        </svg>
643    </div>
644    </a>
645</div>
646
647
648
649
650                <div class="--header-tab icon cart navUser-item--cart">
651    <a class="navUser-action body-text2"
652       data-cart-preview
653       data-dropdown="cart-preview-dropdown"
654       data-options="align:right"
655       href="https://www.stringswing.com/cart.php"
656       aria-label="Cart with 0 items"
657    >
658        <span class="countPill cart-quantity">0</span>
659    </a>
660</div>
661            </div>
662            <!-- Search Bar -->
663            <div class="search-bar">
664    <form class="search-input form" onsubmit="return false" data-url="https://www.stringswing.com/search.php" data-quick-search-form>
665        <fieldset class="form-fieldset">
666            <div class="form-field">
667                <input class="form-input heading3"
668                	id="search_query_adv"
669                    name="search_query_adv"
670                    placeholder="Search StringSwing.com..."
671                    data-error-message="Search field cannot be empty."
672                    autocomplete="off"
673                >
674            </div>
675        </fieldset>
676    </form>
677    <div class="search-close svg-x small2 thin">
678        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 49.12 49.12">
679          <g fill='none' stroke='#000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.12px'>
680            <path d="M.56.56l48,48M48.56.56L.56,48.56"></path>
681          </g>
682        </svg>
683    </div>
684</div>
685
686
687
688
689
690
691
692
693
694
695
696
697            <!-- Nav Bar End --> 
698        </div>
699        <!-- Mobile Nav Wrapper -->
700        <div class="header-tabs section-wrapper mobile-nav-wrapper nav-scroll-top">
701            <div class="ss-logo">
702                <div class="heading4">
703                    <a href="/" title="STRING SWING">STRING SWING<span style="color: #646464;">.</span></a>
704                </div>
705            </div>
706            <div class="search-bar">
707                <div class="search-bar">
708    <form class="search-input form" onsubmit="return false" data-url="https://www.stringswing.com/search.php" data-quick-search-form>
709        <fieldset class="form-fieldset">
710            <div class="form-field">
711                <input class="form-input heading3"
712                	id="search_query_adv"
713                    name="search_query_adv"
714                    placeholder="Search StringSwing.com..."
715                    data-error-message="Search field cannot be empty."
716                    autocomplete="off"
717                >
718            </div>
719        </fieldset>
720    </form>
721    <div class="search-close svg-x small2 thin">
722        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 49.12 49.12">
723          <g fill='none' stroke='#000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.12px'>
724            <path d="M.56.56l48,48M48.56.56L.56,48.56"></path>
725          </g>
726        </svg>
727    </div>
728</div>
729
730
731
732
733
734
735
736
737
738
739
740
741            </div>
742            <div id="header-region" class="header-region" style="display:none;">
743    <div class="region-inner">
744        <div class="custom-zonos-country">
745			<!-- Following span add to show country select option value as a text -->
746            <!---->
747            <span class="zonos-value-text"></span>
748            
749			<svg id="flagDropDownArrow" xmlns="http://www.w3.org/2000/svg" width="49.592" height="25.357" viewBox="0 0 49.592 25.357">
750            	<path id="Path_780" data-name="Path 780" d="M48.563.563l-24,24-24-24" transform="translate(0.233 0.232)" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.125"></path>
751            </svg>
752        </div>
753    </div>
754</div>
755
756<!-- Following script show country select option value as a text -->
757<script>
758$(document).ready(function () {
759
760  $(".header-region").css("display", "none");
761
762  function restoreScrollAfter(fn) {
763    var scrollTop = $(window).scrollTop();
764    fn();
765    $(window).scrollTop(scrollTop);
766  }
767
768  var checkZonos = setInterval(function () {
769    if ($("#zonos select").length) {
770      clearInterval(checkZonos);
771
772      setTimeout(function () {
773        $(".header-region").css("display", "flex");
774      }, 500);
775
776      var $containers = $(".custom-zonos-country");
777
778      /* -----------------------------
779         UPDATE TEXT FROM OPTION VALUE
780      ------------------------------ */
781      function updateOptionValueText($selects) {
782        $selects.each(function () {
783          var val = $(this).val();
784          $(this)
785            .closest(".custom-zonos-country")
786            .find(".zonos-value-text")
787            .text(val);
788        });
789      }
790
791      /* -----------------------------
792         SYNC ORIGINAL → CUSTOM
793      ------------------------------ */
794      function syncFromOriginal(callback) {
795        $(".region-inner").hide();
796
797        var $original = $("#zonos select");
798        if (!$original.length) return;
799
800        var newVal = $original.val();
801        var optionsHtml = $original.html();
802
803        $(".custom-zonos-country select").each(function () {
804          $(this).html(optionsHtml).val(newVal);
805        });
806
807        updateOptionValueText($(".custom-zonos-country select"));
808
809        if (typeof callback === "function") callback();
810
811        $(".region-inner").show();
812      }
813
814      /* -----------------------------
815         CREATE CUSTOM SELECTS
816      ------------------------------ */
817      $containers.each(function (i, el) {
818        var $container = $(el);
819
820        if ($container.find("select").length === 0) {
821          var $original = $("#zonos select");
822
823          var $clonedSelect = $original
824            .clone()
825            .attr("id", "custom-zonos-select-" + i);
826
827          $container.append($clonedSelect).show();
828
829          /* custom → original */
830          $clonedSelect.on("change", function () {
831            $(".region-inner").hide();
832
833            var newVal = $(this).val();
834            var $originalNative = $("#zonos select");
835
836            restoreScrollAfter(function () {
837              // Fix: jQuery trigger use karein jo automated event handling karta hai
838              // Aur Native event dispatch ke liye purana method (no curly braces)
839              $originalNative.val(newVal).trigger("change");
840              
841              var ev = document.createEvent('HTMLEvents');
842              ev.initEvent('change', true, true);
843              $originalNative[0].dispatchEvent(ev);
844            });
845
846            updateOptionValueText($(this));
847
848            setTimeout(function () {
849              $(".region-inner").show();
850            }, 500);
851          });
852        }
853      });
854
855      /* -----------------------------
856         ORIGINAL → CUSTOM CHANGE
857      ------------------------------ */
858      $(document).on("change", "#zonos select", function () {
859        restoreScrollAfter(function () {
860          syncFromOriginal();
861        });
862      });
863
864      /* -----------------------------
865         INITIAL SYNC
866      ------------------------------ */
867      syncFromOriginal();
868
869      /* -----------------------------
870         OBSERVE ZONOS RE-RENDER
871      ------------------------------ */
872      var targetNode = document.querySelector("#zonos.left");
873      if (targetNode) {
874        var observer = new MutationObserver(function () {
875          var scrollTop = $(window).scrollTop();
876          updateOptionValueText($(".custom-zonos-country select"));
877          $(window).scrollTop(scrollTop);
878        });
879
880        observer.observe(targetNode, {
881          childList: true,
882          subtree: true,
883          attributes: true
884        });
885      }
886
887      /* -----------------------------
888         OUTSIDE CLICK → CLOSE POPUP
889      ------------------------------ */
890      $(document).on("click", function (e) {
891        if (
892          $(e.target).closest(".custom-zonos-country").length ||
893          $(e.target).closest("#zonos").length
894        ) return;
895
896        var $closeBtn = $("#zonos .z-close");
897        if ($closeBtn.length) {
898          restoreScrollAfter(function () {
899            $closeBtn.trigger("click");
900          });
901        }
902      });
903    }
904  }, 300);
905});
906</script>
906
907
908
909
910<!-- This script use for showing zonos in local development -->
911 
912            <!--<div class="header-tab icon cart body-text2">0</div>-->
913            <div class="header-tab icon cart body-text2 navUser-item--cart">
914                <a class="navUser-action body2"
915                   data-cart-preview
916                   data-dropdown="cart-preview-dropdown"
917                   data-options="align:right"
918                   href="https://www.stringswing.com/cart.php"
919                   aria-label="Cart with 0 items"
920                >
921                    <span class="countPill cart-quantity">0</span>
922                </a>
923            </div>
924            <div class="header-tab icon menu body-text">
925                <div class="svg-hamburger small2 thin">
926                	<svg viewBox="0 0 49.12 37.12">
927						<line class="line top" x1=".56" y1=".56" x2="48.56" y2=".56"></line>
928						<line class="line middle" x1=".56" y1="18.56" x2="48.56" y2="18.56"></line>
929						<line class="line bottom" x1=".56" y1="36.56" x2="48.56" y2="36.56"></line>
930					</svg>
931                </div>
932            </div>
933        </div>
934        
935        <!-- Nav Menu -->
936        <div class="section-wrapper nav-menu">
937
938    <div class="tabs-hover cat-mains text-box3"></div>
939    
940    <div class="cat-sets"></div>
941    
942    <div class="cat-hover-media"></div>
943
944</div>
945
946<script>
947
948$(document).ready(function () {
949    $(document).on('mouseenter', '.nav-menu-toggle a', function () {
950		$(this).parent($('.nav-menu-toggle')).addClass('active');
951	});
952    // fetch('https://cdn11.bigcommerce.com/s-5r2w8tg1gb/content/custom/ss_root/json/mainCategoryNavMenu.json?c=9985295')
953    fetch('https://cdn11.bigcommerce.com/s-5r2w8tg1gb/content/custom/ss_root/json/UpdatedNavMenu.json?c=4266285')
954        .then(res => res.json())
955        .then(data => {
956
957            const $nav = $('.nav-menu .cat-mains');
958            const $catSets = $('.nav-menu .cat-sets');
959            const $media = $('.nav-menu .cat-hover-media');
960
961            // ===== BUILD EVERYTHING FROM JSON =====
962            data.mainCategories.forEach(cat => {
963
964                // ===== MAIN CATEGORY =====
965                $nav.append(`
966                    <div class="tab-hover heading2" data-cat="${cat.id}">
967                        <a href="${cat.url}" title="${cat.label}">${cat.label}</a>
968                    </div>
969                `);
970
971                // ===== SUB CATEGORY =====
972                const $subSet = $(`<div class="cat-set tabs text-box5" data-cat="${cat.id}-sub"></div>`);
973
974                (cat.subCategories || []).forEach(sub => {
975                    $subSet.append(`
976                        <div class="tab body-text" data-cat="${sub.id}">
977                            <a class="link" href="${sub.url}" title="${sub.label}">${sub.label}</a>
978                        </div>
979                    `);
980                });
981
982                $catSets.append($subSet);
983
984                // ===== MEDIA (IMAGE + LINK) =====
985                $media.append(`
986                    <div class="cat-media-wrapper" data-cat="${cat.id}">
987                        <a href="${cat.media.link}" title="${cat.label}">
988							<img src="${cat.media.image}" alt="${cat.label}">
989						</a>
990						
991                        <div class="nav-view-products">
992                            <a href="${cat.media.link}" title="${cat.label}" class="body-text link">View Products</a>
993                        </div>
994                    </div>
995                `);
996
997            });
998
999            // ===== DEFAULT LOAD =====
1000            const defaultCat = data.mainCategories[0].id;
1001            activateMain(defaultCat);
1002
1003            // ===== MAIN HOVER =====
1004            $('.tab-hover').on('mouseenter click', function (e) {
1005                // e.preventDefault();
1006                activateMain($(this).data('cat'));
1007            });
1008
1009            // ===== SUB HOVER =====
1010            $('.cat-sets').on('mouseenter click', '.tab', function () {
1011                $(this).siblings().removeClass('active');
1012                $(this).addClass('active');
1013            });
1014
1015            // ===== FUNCTION =====
1016            function activateMain(cat) {
1017
1018                // main active
1019                $('.tab-hover').removeClass('active');
1020                $(`.tab-hover[data-cat="${cat}"]`).addClass('active');
1021
1022                // sub category switch
1023                $('.cat-set').removeClass('active');
1024                const $subSet = $(`.cat-set[data-cat="${cat}-sub"]`);
1025                $subSet.addClass('active');
1026
1027                // first sub active
1028                const $firstSub = $subSet.find('.tab').first();
1029                $subSet.find('.tab').removeClass('active');
1030                if ($firstSub.length) {
1031                    $firstSub.addClass('active');
1032                }
1033
1034                // ===== MEDIA SWITCH =====
1035                $('.cat-media-wrapper').removeClass('active');
1036                $(`.cat-media-wrapper[data-cat="${cat}"]`).addClass('active');
1037            }
1038
1039        })
1040        .catch(err => {
1041            console.error('JSON Load Failed', err);
1042            $('.nav-menu').hide();
1043        });
1044
1045});
1046</script>
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057<!-- 27-03-2026 -->
1058 
1059
1060        <!-- Mobile Nav Menu -->
1061        <div class="section-wrapper mobile-nav-menu">
1062    <div class="tabs navigation">
1063        <!-- JSON se yahan content inject hoga -->
1064    </div>
1065    <div class="sub-navigation">
1066    	<div class="inner text-box4">
1067        	<a class="body-text" href="/gallery/" title="">Gallery</a>
1068            <a class="body-text" href="/discounts/" title="">Discounts</a>
1069            <a class="body-text" href="/contact-us-1/" title="">Contact Us</a>
1070        </div>
1071    </div>
1072    <div class="sub-navigation mobile-user">
1073        <div class="button-outer text-box4">
1074            	<div class="-button-n -sign-up body-text2"><a class="button-n sign-up body-text2" href="https://www.stringswing.com/login.php?action&#x3D;create_account">Sign Up</a></div>
1075            	<div class="-button-n -sign-in body-text2"><a class="button-n sign-in body-text2" href="https://www.stringswing.com/login.php">Log In</a></div>
1076        </div>
1077    </div>
1078</div>
1079
1080<script>
1081$(document).ready(function () {
1082
1083    // const jsonUrl = 'https://cdn11.bigcommerce.com/s-5r2w8tg1gb/content/custom/ss_root/json/mainCategoryNavMenu.json?c=9832068';
1084    const jsonUrl = 'https://cdn11.bigcommerce.com/s-5r2w8tg1gb/content/custom/ss_root/json/UpdatedNavMenu.json?c=6402079';
1085    const $nav = $('.mobile-nav-menu .navigation');
1086
1087    fetch(jsonUrl)
1088        .then(res => res.json())
1089        .then(data => {
1090
1091            data.mainCategories.forEach((cat, index) => {
1092
1093                const hasSub = cat.subCategories && cat.subCategories.length;
1094				const hasRealSub = cat.subCategories && cat.subCategories.length > 1;
1095                // MAIN CATEGORY
1096                const $mainTab = $(`
1097					<div class="tab heading3 cat-header ${!hasRealSub ? 'no-subcategories' : ''}" data-cat="${cat.id}">
1098						${!hasRealSub ? `<a href="${cat.url}" class="cat-title">${cat.label}</a>` : `<span class="cat-title">${cat.label}</span>`}
1099						${hasRealSub ? '<div class="svg-plus small3 thin"><svg id="b" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 49.12 49.12"><g><path d="M24.56.56v48M48.56,24.56H.56" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.12px"></path></g></svg></div>' : ''}
1100					</div>
1101				`);
1102
1103                $nav.append($mainTab);
1104
1105                // SUB CATEGORIES
1106                if (hasSub) {
1107                    const $subWrap = $(`<div class="cat-collapse" data-cat="${cat.id}-sub"></div>`);
1108
1109                    cat.subCategories.forEach(sub => {
1110                        $subWrap.append(`
1111                            <div class="body-text sub-cat" data-cat="${sub.id}">
1112                                <a href="${sub.url}">${sub.label}</a>
1113                            </div>
1114                        `);
1115                    });
1116
1117                    $nav.append($subWrap);
1118                }
1119            });
1120
1121            // ===== MAIN CATEGORY CLICK =====
1122            $nav.on('click', '.cat-header', function (e) {
1123				// If NO real subcategories → let link work normally
1124				if ($(this).hasClass('no-subcategories')) {
1125					return; // no active, no toggle
1126				}
1127				e.preventDefault();
1128				const cat = $(this).data('cat');
1129				const $collapse = $(`.cat-collapse[data-cat="${cat}-sub"]`);
1130				$('.cat-header').not(this).removeClass('active');
1131				// $('.cat-collapse').not($collapse).slideUp(200);
1132				$('.cat-collapse').not($collapse).hide();
1133				$('.svg-plus').removeClass('active');
1134				$(this).toggleClass('active');
1135				$(this).find('.svg-plus').toggleClass('active');
1136				if ($collapse.length) {
1137					// $collapse.stop(true, true).slideToggle(200);
1138					$collapse.toggle();
1139					const $firstSub = $collapse.find('.sub-cat').first();
1140					$collapse.find('.sub-cat').removeClass('active');
1141					$firstSub.addClass('active');
1142				}
1143			});
1144            // ===== SUB CATEGORY ACTIVE SWITCH =====
1145            $nav.on('click', '.sub-cat', function () {
1146                $(this).siblings().removeClass('active');
1147                $(this).addClass('active');
1148            });
1149        })
1150        .catch(err => {
1151            console.error('Mobile Nav JSON Error', err);
1152            $('.mobile-nav-menu').hide();
1153        });
1154    
1155    // $(document).on('click', '.mobile-nav-menu .sign-up', function () {
1156    
1157    //     $('body')
1158    //         .removeClass('sign-in-active sign-up-active')
1159    //         .addClass('sign-up-active');
1160    
1161    // });
1162    
1163    // $(document).on('click', '.mobile-nav-menu .sign-in', function () {
1164    
1165    //     $('body')
1166    //         .removeClass('sign-in-active sign-up-active')
1167    //         .addClass('sign-in-active');
1168    
1169    // });
1170    // Sign Up click
1171    $(document).on('click', '.mobile-nav-menu .sign-up', function () {
1172        const $body = $('body');
1173        const $mobileUser = $('.mobile-user');
1174        const $logoutBtn = $('.account-popup .header-tabs .logout-btn');
1175        // Body & mobile user classes
1176        $mobileUser.removeClass('sign-in-active sign-up-active').addClass('active sign-up-active');
1177        $body.removeClass('sign-in-active sign-up-active').addClass('sign-up-active');
1178        // Remove active from other tabs inside header-tabs
1179        $('.account-popup .header-tabs .header-tab').removeClass('active');
1180        // Add active to logout-btn
1181        $logoutBtn.addClass('active');
1182    });
1183    // Sign In click
1184    $(document).on('click', '.mobile-nav-menu .sign-in', function () {
1185        const $body = $('body');
1186        const $mobileUser = $('.mobile-user');
1187        const $logoutBtn = $('.account-popup .header-tabs .login-btn');
1188        // Body & mobile user classes
1189        $mobileUser.removeClass('sign-in-active sign-up-active').addClass('active sign-in-active');
1190        $body.removeClass('sign-in-active sign-up-active').addClass('sign-in-active');
1191        // Remove active from other tabs inside header-tabs
1192        $('.account-popup .header-tabs .header-tab').removeClass('active');
1193        // Add active to logout-btn
1194        $logoutBtn.addClass('active');
1195    });
1196    $(document).on('click', '.account-popup-close', function () {
1197        $('.mobile-user').removeClass('sign-up-active');
1198        $('.mobile-user').removeClass('sign-in-active');
1199        $('body').removeClass('sign-in-active');
1200        $('body').removeClass('sign-up-active');
1201    });
1202});
1203</script>
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223<!--<div class="section-wrapper mobile-nav-menu">
1224    <div class="tabs text-box4 navigation">
1225        <div class="tab heading2 cat-header-0">Guitar</div>
1226        <div class="tab heading2 cat-header-1">
1227            String Instruments
1228            <div class="svg-plus small3 thin"></div>
1229        </div>
1230        <div class="tab heading2 cat-header-2">
1231            Brass &amp; Wind
1232            <div class="svg-plus small3 thin"></div>
1233        </div>
1234        <div class="tab heading2 cat-header-3">
1235            Miscellaneous
1236            <div class="svg-plus small3 thin"></div>
1237        </div>
1238        <div class="tab heading2 cat-header-4">Stage Hangers</div>
1239        <div class="tab heading2 cat-header-5">
1240            Store Displays
1241            <div class="svg-plus small3 thin"></div>
1242        </div>
1243    </div>
1244</div>-->
1245 
1246        
1247        <!-- Account Popup-->
1248        <div class="account-popup">
1249    
1250    <div class="page-section wide account-popup-wrapper">
1251        <div class="meta">
1252            <div class="account-popup-top">
1253                    <div class="header-tabs">
1254                        <div class="login-btn header-tab heading7 active">
1255                            Log In
1256                        </div>
1257                        <div class="logout-btn header-tab heading7">
1258                            Sign Up
1259                        </div>
1260                    </div>
1261                    <div class="svg-x small thin account-popup-close">
1262                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 49.12 49.12">
1263                          <g fill='none' stroke='#000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.12px'>
1264                            <path d="M.56.56l48,48M48.56.56L.56,48.56"></path>
1265                          </g>
1266                        </svg>
1267                    </div>
1268            </div>
1269            <!-- Sign In Form -->
1270            <!-- Sign In Form -->
1271            <div class="text-box1 sign-in-form">
1272                <div class="heading">Welcome Back.</div>
1273                <div class="text-box4 input-field-group">
1274                    <form class="login-form form" id="LoginForm" onsubmit="ExpressSigninPopup.Login(); return false;">
1275                        <div class="form-fields-wrap text-box4">
1276                            <div class="LoadingIndicator" style="display: none">
1277                                <img src="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/stencil/c5819130-30ff-013f-db21-0604126aaccc/e/21435df0-9971-013f-45bc-4e388f6f202b/img/loading.svg" alt="Loading" />
1278                            </div>
1279                            <div style="display: none" class="ErrorMessage" id="CheckoutLoginError"> </div>
1280                            <div class="form-field">
1281                                <div class="form-input-field">
1282                                    <div class="form-icon">
1283                                        <div class="svg-at thin">
1284                                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 49.125 49.125">
1285                                            <g>
1286                                            <path d="M35.062,24.562c0,5.799-4.701,10.5-10.5,10.5s-10.5-4.701-10.5-10.5,4.701-10.5,10.5-10.5,10.5,4.701,10.5,10.5ZM35.062,24.562v3.75c0,3.728,3.022,6.75,6.75,6.75h0c3.728,0,6.75-3.022,6.75-6.75v-3.196c0-12.827-10.469-24.174-23.291-24.544C11.023.162-.53,12.174.645,26.578c.935,11.456,10.111,20.777,21.553,21.871,4.176.4,8.16-.272,11.707-1.773" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.125px"></path>
1287                                            </g>
1288                                            </svg>
1289                                        </div>
1290                                    </div>
1291                                    <div class="v-line-break"></div>
1292                                    <div class="detail-info text-box6">
1293                                        <div class="body-text3">Email Address</div>
1294                                        <div class="input-outer heading7">
1295                                        	<input class="heading7" name="login_email" id="header_login_email" type="email" placeholder="[email protected]">
1296                                        </div>
1297                                    </div>
1298                                </div>
1299                                <span style="display:none;" class="form-inlineMessage">You must enter a valid email.</span>
1300                            </div>
1301                            <div class="form-field">
1302                                <div class="form-input-field">
1303                                    <div class="form-icon">
1304                                        <div class="svg-at thin">
1305                                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 23.483 26.5">
1306                                              <g>
1307                                                <g>
1308                                                  <line x1="11.642" y1="25.25" x2="11.642" y2="1.25" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5px"></line>
1309                                                  <line x1="1.449" y1="19.176" x2="22.233" y2="7.176" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5px"></line>
1310                                                  <line x1="22.035" y1="19.25" x2="1.25" y2="7.25" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5px"></line>
1311                                                </g>
1312                                              </g>
1313                                            </svg>
1314                                        </div>
1315                                    </div>
1316                                    <div class="v-line-break"></div>
1317                                    <div class="detail-info text-box6">
1318                                        <div class="body-text3">Password</div>
1319                                        <div class="input-outer heading7">
1320                                        	<input class="heading7" id="header_login_pass" type="password" name="login_pass" autocomplete="off" placeholder="••••••••••••••••••">
1321                                        </div>
1322                                    </div>
1323                                </div>
1324                                <span style="display:none;" class="form-inlineMessage">You must enter a password.</span>
1325                            </div>
1326                        </div>
1327                        <div class="text-box4">
1328                            <button type="submit" class="form-button purple heading7" value="Sign In">Sign In</button>
1329                            <div class="body-text2">
1330                                <a class="ul link body-text2" href="/login.php?action&#x3D;reset_password" title="Forgot Password">Forgot Password</a>
1331                            </div>
1332                        </div>
1333                    </form>
1334                </div>
1335            </div>
1336            <!-- Sign Up Form -->
1337            <div class="text-box1 sign-up-form">
1338                <div class="heading">Let's Get Started.</div>
1339                <div class="text-box4 input-field-group">
1340                    <div class="text-box4">
1341                        <div class="LoadingIndicator" style="display: none">
1342                            <img src="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/stencil/c5819130-30ff-013f-db21-0604126aaccc/e/21435df0-9971-013f-45bc-4e388f6f202b/img/loading.svg" alt="Loading" />
1343                        </div>
1344                        <div style="display: none" class="ErrorMessage" id="CheckoutLoginError"> </div>
1345                        <!-- Input Box -->
1346                        <div class="text-box5">
1347                            <div class="heading8">Email Address</div>
1348                            <div class="form-input-wrapper">
1349                                <div class="form-input">
1350                                    <input id="email" class="heading7" type="email" placeholder="[email protected]">
1351                                </div>
1352                            </div>
1353                            <span style="display:none;" class="form-inlineMessage">You must enter a valid email.</span>
1354                        </div>
1355                        <!-- Input Box -->
1356                        <div class="text-box5">
1357                            <div class="heading8">Password</div>
1358                            <div class="form-input-wrapper">
1359                                <div class="form-input">
1360                                    <input id="password" class="heading7" type="password" placeholder="••••••••••">
1361                                </div>
1362                            </div>
1363                            <span style="display:none;" class="form-inlineMessage">Passwords must be at least 7 characters and contain both alphabetic and numeric characters.</span>
1364                        </div>
1365                        <!-- Input Box -->
1366                        <div class="text-box5">
1367                            <div class="heading8">Confirm Password</div>
1368                            <div class="form-input-wrapper">
1369                                <div class="form-input">
1370                                    <input id="confirm_password" class="heading7" type="password" placeholder="••••••••••">
1371                                </div>
1372                            </div>
1373                            <span style="display:none;" class="form-inlineMessage">Your passwords do not match.</span>
1374                        </div>
1375                        <!-- Input Box End -->
1376                    </div>
1377                    <div id="continueBtn" class="form-button green heading7">Continue</div>
1378                </div>
1379            </div>
1380            
1381            <div class="body-text">Hey there musician – sign in to save time at checkout, track orders, and more.</div>
1382        </div>
1383        <div class="media">
1384        	<div class="media">
1385                <div class="media-text heading">You Belong Here</div>
1386                <img src="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/content/custom/ss_root/nav-bar/account-hero-w.webp" alt="Account Hero">
1387            </div>
1388        </div>
1389    </div>
1390    
1391    
1391<script>
1392		// For Sign in Form
1393        var ExpressSigninPopup = {
1394            Login: function(){
1395                $('#CheckoutLoginError').hide();
1396                ExpressSigninPopup.anonymousCheckout = 0;
1397                ExpressSigninPopup.createAccount = 0;
1398                
1399            if(ExpressSigninPopup.validateEmailAddress($('#header_login_email').val()) === false) {
1400                // alert('Please type in a valid email address, such as [email protected]');
1401                $('#LoginForm #header_login_email').parent().closest('.form-field').addClass('form-field--error');
1402                $('#LoginForm #header_login_email + .form-inlineMessage').show();
1403                $('#LoginForm #header_login_email').focus();
1404                $('#LoginForm #header_login_email').select();
1405                return false;
1406            }else{
1407                $('#LoginForm #header_login_email').parent().closest('.form-field').removeClass('form-field--error');
1408                $('#LoginForm #header_login_email + .form-inlineMessage').hide()
1409            }
1410            if($('#LoginForm #header_login_pass').val() === '') {
1411                // alert('Please type in your password.');
1412        
1413                $('#LoginForm #header_login_pass').parent().closest('.form-field').addClass('form-field--error');
1414                $('#LoginForm #header_login_pass + .form-inlineMessage').show();
1415                $('#LoginForm #header_login_pass').focus();
1416                return false;
1417            }else{
1418                $('#LoginForm #header_login_pass').parent().closest('.form-field').removeClass('form-field--error');
1419                $('#LoginForm #header_login_pass + .form-inlineMessage').hide()
1420            }
1421            ExpressSigninPopup.ShowLoadingIndicator('#LoginForm');
1422            u = window.location.port ? window.location.protocol + "//" + window.location.hostname + ":" + window.location.port : window.location.protocol + "//" + window.location.hostname;
1423            $.ajax({
1424                url: u + "/login.php?action=check_login",
1425                type: 'post',
1426                data: $('#LoginForm').serialize(),
1427                success: ExpressSigninPopup.HandleResponse
1428            });
1429            return false;
1430        },
1431            HandleResponse: function(response){
1432                ExpressSigninPopup.HideLoadingIndicators();
1433                ExpressSigninPopup.HandleResponseStatus(response);
1434            },
1435            HandleResponseStatus: function(response){
1436                var $errorboxlen = $(response).find('.alertBox--error').length;
1437                if( $errorboxlen > 0) {
1438                    var $errorbox = $(response).find('.alertBox--error').html();
1439                    console.log($errorbox)
1440                    $('#LoginForm #CheckoutLoginError').html($errorbox).addClass('alertBox alertBox--error').show();
1441                }else{
1442                    // location.reload();
1443                    window.location.href = "/account.php?action=order_status";
1444                }
1445            },
1446            ShowLoadingIndicator: function() {
1447                $('body').find('#LoginForm .LoadingIndicator').show();
1448            },
1449            HideLoadingIndicators: function(){
1450                $('#LoginForm .LoadingIndicator').hide();
1451            },
1452            validateEmailAddress: function(email){
1453                if(email.indexOf('@') === -1 || email.indexOf('.') === -1) {
1454                    return false;
1455                }
1456                return true;
1457            },
1458        };
1459		// For Signup Form create local storage base email password confirm password field values passed into the account page  and account page also have the script which use to get local storage content values and put them into the accoun form page and remove local storage cookie.
1460		$(document).ready(function () {
1461			function validateEmail() {
1462				const $email = $('#email');
1463				const val = $email.val().trim();
1464				const $msg = $email.closest('.text-box5').find('.form-inlineMessage');
1465				if (!val || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(val)) {
1466					$msg.show();
1467					return false;
1468				} else {
1469					$msg.hide();
1470					return true;
1471				}
1472			}
1473			function validatePassword() {
1474				const $password = $('#password');
1475				const val = $password.val().trim();
1476				const $msg = $password.closest('.text-box5').find('.form-inlineMessage');
1477				if (!val || val.length < 7 || !/\d/.test(val) || !/[a-zA-Z]/.test(val)) {
1478					$msg.show();
1479					return false;
1480				} else {
1481					$msg.hide();
1482					return true;
1483				}
1484			}
1485			function validateConfirm() {
1486				const $confirm = $('#confirm_password');
1487				const val = $confirm.val().trim();
1488				const $password = $('#password').val().trim();
1489				const $msg = $confirm.closest('.text-box5').find('.form-inlineMessage');
1490				if (val !== $password || val === '') {
1491					$msg.show();
1492					return false;
1493				} else {
1494					$msg.hide();
1495					return true;
1496				}
1497			}
1498			// Real-time validation on input
1499			$('#email').on('input', validateEmail);
1500			$('#password').on('input', function() {
1501				validatePassword();
1502				validateConfirm(); // also check confirm in case password changed
1503			});
1504			$('#confirm_password').on('input', validateConfirm);
1505			// On continue button click
1506			$('#continueBtn').on('click', function () {
1507				const emailValid = validateEmail();
1508				const passValid = validatePassword();
1509				const confirmValid = validateConfirm();
1510			
1511				if (emailValid && passValid && confirmValid) {
1512					const accountData = {
1513						email: $('#email').val().trim(),
1514						password: $('#password').val().trim()
1515					};
1516					
1517					$('.LoadingIndicator').addClass('is-active').show();
1518			
1519					// Set a flag to indicate form was submitted from custom popup
1520					localStorage.setItem('signupData', JSON.stringify(accountData));
1521					localStorage.setItem('signupFromCustom', 'true');
1522			
1523					// Redirect to account page
1524					window.location.href = '/login.php?action=create_account';
1525				}
1526			});
1527		});
1528    </script>
1528
1529</div>
1530
1531        <!-- Background Fade -->
1532        <div class="bg-fade"></div>
1533    </div>
1534</header>
1535
1536<div data-content-region="header_bottom--global"></div>
1537<div data-content-region="header_bottom"></div>
1538
1539
1540
1541
1542
1543        <div class="body custom-category" id="main-content" data-currency-code="USD">
1544     
1545    
1546<div class="page-section ss-global">
1547</div>
1548
1549<div class="page collection-page ss-global">
1550	<div class="body-flexed">
1551    	<div class="collection-page-wrapper">
1552            <!-- specific name base hero section from en.json -->
1553
1554        
1555
1556
1557
1558    	
1559    
1560
1561
1562<div id="collection-hero">
1563    <div class="page-section wide collection-hero ss-global">
1564        <div class="collection-hero-wrapper">
1565        	<nav aria-label="Breadcrumb">
1566    <ol class="breadcrumbs">
1567                <li class="breadcrumb ">
1568                    <a class="link body-text2 breadcrumb-label"
1569                       href="https://www.stringswing.com/"
1570                       
1571                    >
1572                        <span>Home</span>
1573                    </a>
1574                </li>
1575                <li class="breadcrumb ">
1576                    <a class="link body-text2 breadcrumb-label"
1577                       href="https://www.stringswing.com/shop-all/"
1578                       
1579                    >
1580                        <span>Shop All</span>
1581                    </a>
1582                </li>
1583                <li class="breadcrumb ">
1584                    <a class="link body-text2 breadcrumb-label"
1585                       href="https://www.stringswing.com/shop-all/string-instruments-1/"
1586                       
1587                    >
1588                        <span>String Instruments</span>
1589                    </a>
1590                </li>
1591                <li class="breadcrumb is-active">
1592                    <a class="link body-text2 breadcrumb-label"
1593                       href="https://www.stringswing.com/shop-all/stringed-instruments/guitar/"
1594                       aria-current="page"
1595                    >
1596                        <span>All Guitar</span>
1597                    </a>
1598                </li>
1599    </ol>
1600</nav>
1601
1602<script type="application/ld+json"  nonce="">
1603{
1604    "@context": "https://schema.org",
1605    "@type": "BreadcrumbList",
1606    "itemListElement":
1607    [
1608        {
1609            "@type": "ListItem",
1610            "position": 1,
1611            "item": {
1612                "@id": "https:\u002f\u002fwww.stringswing.com\u002f",
1613                "name": "Home"
1614            }
1615        },
1616        {
1617            "@type": "ListItem",
1618            "position": 2,
1619            "item": {
1620                "@id": "https:\u002f\u002fwww.stringswing.com\u002fshop-all\u002f",
1621                "name": "Shop All"
1622            }
1623        },
1624        {
1625            "@type": "ListItem",
1626            "position": 3,
1627            "item": {
1628                "@id": "https:\u002f\u002fwww.stringswing.com\u002fshop-all\u002fstring-instruments-1\u002f",
1629                "name": "String Instruments"
1630            }
1631        },
1632        {
1633            "@type": "ListItem",
1634            "position": 4,
1635            "item": {
1636                "@id": "https:\u002f\u002fwww.stringswing.com\u002fshop-all\u002fstringed-instruments\u002fguitar\u002f",
1637                "name": "Guitar"
1638            }
1639        }
1640    ]
1641}
1642</script>
1642
1643
1644
1645
1646
1647
1648
1649            <div class="collection-hero-copy">
1650                    <h1 class="collection-title heading2">String Instruments</h1>
1651                    <div class="body-text">
1652                        <p>Every string instrument deserves a home on your wall. We’ve designed hangers for violins, cellos, basses, dulcimers, mandolins and ukuleles, so no part of your ensemble is left out.</p>
1653                    </div>
1654            </div>
1655            <hr>
1656            <div class="category-navigation-wrapper">
1657                <div class="category-navigation body-text3">
1658                    <div class="category-navigation-item">
1659                    	<a href="/guitars/">Guitars</a>
1660                    </div>
1661                    <div class="category-navigation-item">
1662                    	<a href="/shop-all/string-instruments-1/">String Instruments</a>
1663                    </div>
1664                    <div class="category-navigation-item">
1665                    	<a href="/shop-all/wind-instruments/">Brass &amp; Wind</a>
1666                    </div>
1667                    <div class="category-navigation-item">
1668                    	<a href="/shop/miscellaneous/">Miscellaneous</a>
1669                    </div>
1670                    <div class="category-navigation-item">
1671                    	<a href="/shop/stage-hangers/">Stage Hangers</a>
1672                    </div>
1673                    <div class="category-navigation-item">
1674                    	<a href="/store-displays/">Store Displays</a>
1675                    </div>
1676                </div>
1677            </div>
1678        </div>
1679    </div>
1680    <div data-content-region="category_below_header"></div>
1681</div>
1682
1683
1684<script>
1685$(document).ready(function () {
1686	var currentUrl = window.location.pathname.toLowerCase();
1687	// -----------------------------
1688	// CATEGORY MAPPING (UNCHANGED)
1689	// -----------------------------
1690	var categoryMap = {
1691		"stringed-instruments": "String Instruments",
1692		"brass-wind-instruments": "Brass & Wind"
1693	};
1694	function setActiveByName(categoryName) {
1695		$('.category-navigation-item a').each(function () {
1696			var $link = $(this);
1697			var linkText = $link.text().trim().toLowerCase();
1698
1699			if (linkText === categoryName.toLowerCase()) {
1700				$link.closest('.category-navigation-item').addClass('active');
1701			}
1702		});
1703	}
1704	// -----------------------------------
1705	// 1. STORE DISPLAYS RULES (EXPANDED)
1706	// -----------------------------------
1707	if (
1708		currentUrl.includes('/miscelaneous') &&
1709		!currentUrl.includes('/shop/miscelaneous') &&
1710		!currentUrl.includes('/all-shop/miscelaneous')
1711	) {
1712		setActiveByName('Store Displays');
1713	}
1714	else if (
1715		currentUrl.includes('/floor-racks') ||
1716		currentUrl.includes('/slatwall-displays') ||
1717		currentUrl.includes('/store-displays')
1718	) {
1719		setActiveByName('Store Displays');
1720	}
1721	// -----------------------------------
1722	// 2. SHOP / ALL-SHOP MISC RULE
1723	// -----------------------------------
1724	else if (
1725		currentUrl.includes('/shop/miscelaneous') ||
1726		currentUrl.includes('/all-shop/miscelaneous')
1727	) {
1728		setActiveByName('Miscellaneous');
1729	}
1730	// -----------------------------------
1731	// 3. OLD LOGIC (SAFE FALLBACK)
1732	// -----------------------------------
1733	else {
1734		$('.category-navigation-item a').each(function () {
1735			var $link = $(this);
1736			var href = ($link.attr('href') || '').toLowerCase();
1737			if (href && currentUrl.includes(href)) {
1738				$link.closest('.category-navigation-item').addClass('active');
1739			}
1740			$.each(categoryMap, function (keyword, categoryName) {
1741				if (currentUrl.includes(keyword)) {
1742					if ($link.text().trim().toLowerCase() === categoryName.toLowerCase()) {
1743						$link.closest('.category-navigation-item').addClass('active');
1744					}
1745				}
1746			});
1747		});
1748	}
1749});
1750/* Scroll state for category navigation at 10-09-2026 Start */
1751function updateScrollState(el) {
1752    const isAtEnd = Math.ceil(el.scrollLeft + el.clientWidth) >= el.scrollWidth;
1753    const wrapper = el.closest('.category-navigation-wrapper') || el;
1754    wrapper.classList.toggle('not-scrolled-end', !isAtEnd);
1755}
1756
1757document.querySelectorAll('.category-navigation').forEach((el) => {
1758    // set initial state
1759    updateScrollState(el);
1760
1761    el.addEventListener('scroll', () => updateScrollState(el));
1762});
1763
1764// re-check on resize too, since scrollWidth can change
1765window.addEventListener('resize', () => {
1766    document.querySelectorAll('.category-navigation').forEach(updateScrollState);
1767});
1768/* Scroll state for category navigation at 10-09-2026 End */
1769</script>
1769
1770
1771
1772<script>
1773//$(document).ready(function () {
1774//	var currentUrl = window.location.pathname.toLowerCase();
1775//	$('.category-navigation-item a').each(function () {
1776//		var linkUrl = $(this).attr('href').toLowerCase();
1777//		// Check if current URL contains the link URL
1778//		if (linkUrl !== "" && currentUrl.includes(linkUrl)) {
1779//			$(this).closest('.category-navigation-item').addClass('active');
1780//		}
1781//	});
1782//});
1783</script>
1783
1784 
1785            <div id="collection-main">
1786    <div class="page-section wide collection-main ss-global">
1787            <div class="collection-nav">
1788                <form class="actionBar" method="get" data-sort-by="product">
1789    <div class="dropdown SortWrap">
1790    <div class="dropdown-button">
1791        <div class="svg-filter small2 thin">
1792        	<svg id="a" data-name="all" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
1793			  <line x1="0" y1="6" x2="48" y2="6" stroke-width= "1.125px" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round"></line>
1794			  <line x1="10.5" y1="24" x2="37.5" y2="24" stroke-width= "1.193px" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round"></line>
1795			  <line x1="27" y1="42" x2="21" y2="42" stroke-width= "1.125px" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round"></line>
1796			</svg>
1797        </div>
1798        <div class="body-text2">Sort By: <span class="select-option-selected body-text2 black">Featured Items</span></div>
1799    </div>
1800    <div class="dropdown-content text-box5 custom-tabs select-options">
1801        <div class="select-option dropdown-item body-text2 custom-tab active"><a href="?sort=featured&search_query=">Featured Items</a></div>
1802        <div class="select-option dropdown-item body-text2 custom-tab"><a href="?sort=newest&search_query=">Newest</a></div>
1803        <div class="select-option dropdown-item body-text2 custom-tab"><a href="?sort=bestselling&search_query=">Best Selling</a></div>
1804        <div class="select-option dropdown-item body-text2 custom-tab"><a href="?sort=alphaasc&search_query=">A–Z</a></div>
1805        <div class="select-option dropdown-item body-text2 custom-tab"><a href="?sort=alphadesc&search_query=">Z–A</a></div>
1806        <div class="select-option dropdown-item body-text2 custom-tab"><a href="?sort=avgcustomerreview&search_query=">Top Rated</a></div>
1807        <div class="select-option dropdown-item body-text2 custom-tab"><a href="?sort=priceasc&search_query=">Price (Ascending)</a></div>
1808        <div class="select-option dropdown-item body-text2 custom-tab"><a href="?sort=pricedesc&search_query=">Price (Descending)</a></div>
1809    </div>
1810</div>
1811
1812<script>
1813(function ($) {
1814    // Map sort values to labels
1815    const sortMap = {
1816        featured: 'Featured Items',
1817        newest: 'Newest',
1818        bestselling: 'Best Selling',
1819        alphaasc: 'A–Z',
1820        alphadesc: 'Z–A',
1821        avgcustomerreview: 'Top Rated',
1822        priceasc: 'Price (Ascending)',
1823        pricedesc: 'Price (Descending)'
1824    };
1825    // Function to get URL param
1826    function getUrlParam(param) {
1827        const params = new URLSearchParams(window.location.search);
1828        return params.get(param);
1829    }
1830    // Update dropdown based on URL
1831    function updateSortFromUrl() {
1832        const sortValue = getUrlParam('sort') || 'featured';
1833        $('.dropdown').each(function () {
1834            const $dropdown = $(this);
1835            const label = sortMap[sortValue];
1836            if (!label) return;
1837            // Update button text
1838            $dropdown.find('.select-option-selected').text(label);
1839            // Update active state
1840            $dropdown.find('.select-option').removeClass('active');
1841            $dropdown.find(`a[href*="sort=${sortValue}"]`)
1842                .closest('.select-option')
1843                .addClass('active');
1844        });
1845    }
1846    // Run on page load
1847    $(document).ready(function () {
1848        updateSortFromUrl();
1849    });
1850    // Handle click (instant UI update before reload)
1851    $(document).on('click', '.dropdown .select-option a', function () {
1852        const text = $.trim($(this).text());
1853        const $dropdown = $(this).closest('.dropdown');
1854        $dropdown.find('.select-option-selected').text(text);
1855        $dropdown.find('.select-option').removeClass('active');
1856        $(this).closest('.select-option').addClass('active');
1857    });
1858})(jQuery);
1859</script>
1859
1860
1861
1862</form>
1863                <div class="body-text product-amount"><span id="product-val"></span><span id="product-val-default">21</span> Products</div>
1864            </div>
1865        <div class="products-wrapper">
1866            <aside class="page-sidebar" id="faceted-search-container">
1867                
1868
1869
1870            
1871                
1872
1873
1874<nav>
1875                            <div class="dropdown black plus sidebarBlock">
1876                        <div class="dropdown-button">
1877                            <div class="body-text2 black mm">Shop All</div>
1878                            <div class="svg-plus small thin">
1879                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 49.12 49.12">
1880                                    <g>
1881                                        <path d="M24.56.56v48M48.56,24.56H.56" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.12px"></path>
1882                                    </g>
1883                                </svg>
1884                            </div>
1885                        </div>
1886                    <div class="dropdown-content text-box5 tabs -navList">
1887                    <div class="body-text2 dropdown-item -navList-item main-cat is-active">
1888                        <a class="-body-text2 -navList-action" href="#product-listing-container" title="All String Instruments" data-categoryUrl="https://www.stringswing.com/shop-all/string-instruments-1/?limit=99">All String Instruments</a>
1889                    </div>
1890                    <div class="body-text2 special-item -navList-item">
1891                        <a class="-body-text2 -navList-action" href="/guitars/" aria-label="Guitars">
1892                            Guitars
1893                        </a>
1894                    </div>
1895                        <div class="body-text2 dropdown-item -navList-item" data-categoryUrl="https://www.stringswing.com/shop-all/stringed-instruments/ukulele/?limit=99">
1896                            <a class="-body-text2 -navList-action" href="#subcat-ukulele" title="Ukulele">Ukulele</a>
1897                        </div>
1898                        <div class="body-text2 dropdown-item -navList-item" data-categoryUrl="https://www.stringswing.com/shop-all/stringed-instruments/violin/?limit=99">
1899                            <a class="-body-text2 -navList-action" href="#subcat-violin" title="Violin">Violin</a>
1900                        </div>
1901                        <div class="body-text2 dropdown-item -navList-item" data-categoryUrl="https://www.stringswing.com/shop-all/stringed-instruments/banjo/?limit=99">
1902                            <a class="-body-text2 -navList-action" href="#subcat-banjo" title="Banjo">Banjo</a>
1903                        </div>
1904                        <div class="body-text2 dropdown-item -navList-item" data-categoryUrl="https://www.stringswing.com/shop-all/stringed-instruments/cello/?limit=99">
1905                            <a class="-body-text2 -navList-action" href="#subcat-cello" title="Cello">Cello</a>
1906                        </div>
1907                        <div class="body-text2 dropdown-item -navList-item" data-categoryUrl="https://www.stringswing.com/shop-all/stringed-instruments/dulcimer/?limit=99">
1908                            <a class="-body-text2 -navList-action" href="#subcat-dulcimer" title="Dulcimer">Dulcimer</a>
1909                        </div>
1910                    </div>
1911                </div>
1912                </nav>
1913
1914
1915<script>
1916$(document).ready(function () {
1917    $(function () {
1918		if (
1919			$('.sidebarBlock .dropdown-content .dropdown-item.is-active').length &&
1920			$('.sidebarBlock .dropdown-content .dropdown-item.is-active').not('.main-cat').length
1921		) {
1922			$('.sidebarBlock .dropdown-content .dropdown-item.main-cat').removeClass('is-active');
1923		}
1924	});
1925	
1926	// Check karein ke .main-cat ke ilawa koi aur dropdown-item .is-active hai ya nahi
1927    const $otherActiveItem = $('.sidebarBlock .dropdown-content .dropdown-item.is-active:not(.main-cat)');
1928    // Sirf tab hi .main-cat ka href update karein
1929    if ($otherActiveItem.length) {
1930        // Collection page se active category link find karein
1931        let $activeLink = $('.collection-page .collection-hero .category-navigation > .active');
1932        // Agar .active parent element par hai to us ka <a> lein
1933        if ($activeLink.length && !$activeLink.is('a')) {
1934            $activeLink = $activeLink.find('a').first();
1935        }
1936        // Fallback: direct <a class="active">
1937        if (!$activeLink.length) {
1938            $activeLink = $('.collection-page .collection-hero .category-navigation a.active').first();
1939        }
1940        // href hasil karein
1941        const mainCatUrl = $activeLink.attr('href');
1942        // Agar valid href mil jaye to .main-cat ke anchor ko update karein
1943        if (mainCatUrl) {
1944            $('.sidebarBlock .dropdown-content .dropdown-item.main-cat > a').attr('href', mainCatUrl);
1945        }
1946    }
1947});
1948</script>
1948
1949
1950
1951
1952
1953
1954            </aside>
1955            <div class="page-content collection-products is-active" id="product-listing-container">
1956                
1957
1958
1959
1960
1961    <div data-list-name="Category: Guitar" role="region" aria-label="Filtered products">
1962            <ul class="productGrid">
1963            <li class="product">
1964                    <article
1965    class="card
1966    "
1967    data-product-id="473"
1968    product-id="473"
1969    data-test="card-473"
1970    data-event-type="list"
1971    data-entity-id="473"
1972    data-position="1"
1973    data-name="Guitar Wall Rack for 10 Guitars"
1974    data-product-category="
1975            Shop All,
1976                Shop All/String Instruments,
1977                Shop All/String Instruments/Guitar,
1978                Guitars,
1979                Guitars/Multi-Guitar Racks
1980    "
1981    data-product-brand=""
1982    data-product-price="
1983            347.78
1984"
1985>
1986    <!-- Sku base section show hide compare with en.json and custom field both -->
1987    
1988    <!-- Product Description -->
1989    
1990    <figure class="card-figure">
1991
1992        <a href="https://www.stringswing.com/multi-guitar-wall-rack-for-10-guitars-sw10rl-k/"
1993           class="card-figure__link"
1994           aria-label="Guitar Wall Rack for 10 Guitars, Price range from $347.78 to $387.78
1995
1996"
1997           data-event-type="product-click"
1998        >
1999            <div class="card-img-container">
2000                <img src="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/500x659/products/473/1496/SW10RL-B-K-Main_1__11040.1774887786.png?c=1" alt="Black | 1" title="Black | 1" data-sizes="auto"
2001    srcset="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/80w/products/473/1496/SW10RL-B-K-Main_1__11040.1774887786.png?c=1"
2002data-srcset="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/80w/products/473/1496/SW10RL-B-K-Main_1__11040.1774887786.png?c=1 80w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/160w/products/473/1496/SW10RL-B-K-Main_1__11040.1774887786.png?c=1 160w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/320w/products/473/1496/SW10RL-B-K-Main_1__11040.1774887786.png?c=1 320w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/640w/products/473/1496/SW10RL-B-K-Main_1__11040.1774887786.png?c=1 640w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/960w/products/473/1496/SW10RL-B-K-Main_1__11040.1774887786.png?c=1 960w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/1280w/products/473/1496/SW10RL-B-K-Main_1__11040.1774887786.png?c=1 1280w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/1920w/products/473/1496/SW10RL-B-K-Main_1__11040.1774887786.png?c=1 1920w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/2560w/products/473/1496/SW10RL-B-K-Main_1__11040.1774887786.png?c=1 2560w"
2003
2004class="lazyload card-image"
2005
2006 />
2007            </div>
2008        </a>
2009    </figure>
2010    <div class="card-body text-box4">
2011        <h3 class="card-title heading4 black">
2012            <a 
2013            	class="heading4 black"
2014            	aria-label="Guitar Wall Rack for 10 Guitars, Price range from $347.78 to $387.78
2015
2016"
2017            	href="https://www.stringswing.com/multi-guitar-wall-rack-for-10-guitars-sw10rl-k/"
2018            	data-event-type="product-click"
2019            >
2020                    Guitar Wall Rack for 10 Guitars
2021            </a>
2022        </h3>
2023        <hr>
2024        <div class="bottom">
2025            <div class="card-text product-price body-text" data-test-info-type="price">
2026                    
2027            <div class="price-section price-section--withoutTax rrp-price--withoutTax" style="display: none;">
2028            <span>
2029                    MSRP:
2030            </span>
2031            <span data-product-rrp-price-without-tax class="price price--rrp">
2032                $417.34
2033            </span>
2034        </div>
2035    <div class="price-section price-section--withoutTax non-sale-price--withoutTax" style="display: none;">
2036        <span>
2037                Was:
2038        </span>
2039        <span data-product-non-sale-price-without-tax class="price price--non-sale">
2040            
2041        </span>
2042    </div>
2043    <div class="price-section price-section--withoutTax">
2044        <span class="price-label"></span>
2045        <span class="price-now-label" style="display: none;">
2046                Now:
2047        </span>
2048        <span class="range-price-with-from">
2049        	<span class="form-text">From</span>
2050        	<span data-product-price-without-tax class="price price--withoutTax">$347.78</span>
2051        </span>
2052    </div>
2053
2054            </div>
2055            <!-- Customer Rating -->
2056            <div class="customer-rating">
2057                <span class="stamped-product-reviews-badge" data-id="473" style="display:block;"></span>
2058            </div>
2059        </div>
2060    </div>
2061    
2062    <div class="view-product-wrapper">
2063        <div class="view-product">
2064            <a href="https://www.stringswing.com/multi-guitar-wall-rack-for-10-guitars-sw10rl-k/" class="view-product-inner body-text3">
2065                View Product
2066                <span class="svg-right-arrow small thin">
2067                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48.71 30.71">
2068                        <g>
2069                            <g>
2070                                <line y1="15.35" x2="48" y2="15.35" stroke-miterlimit="10"></line>
2071                                <polyline points="33 .35 48 15.35 33 30.35" stroke-miterlimit="10"></polyline>
2072                            </g>
2073                        </g>
2074                    </svg>
2075                </span>
2076            </a>
2077        </div>
2078    </div>
2079</article>
2080            </li>
2081            <li class="product">
2082                    <article
2083    class="card
2084    "
2085    data-product-id="411"
2086    product-id="411"
2087    data-test="card-411"
2088    data-event-type="list"
2089    data-entity-id="411"
2090    data-position="2"
2091    data-name="Multiple Guitar Wall Rack"
2092    data-product-category="
2093            Shop All,
2094                Shop All/String Instruments,
2095                Shop All/String Instruments/Guitar,
2096                Guitars,
2097                Guitars/Multi-Guitar Racks
2098    "
2099    data-product-brand=""
2100    data-product-price="
2101            173.89
2102"
2103>
2104    <!-- Sku base section show hide compare with en.json and custom field both -->
2105    
2106    <!-- Product Description -->
2107    
2108    <figure class="card-figure">
2109
2110        <a href="https://www.stringswing.com/rack-for-5-acoustic-or-electric-guitars/"
2111           class="card-figure__link"
2112           aria-label="Multiple Guitar Wall Rack, Price range from $173.89 to $193.89
2113
2114"
2115           data-event-type="product-click"
2116        >
2117            <div class="card-img-container">
2118                <img src="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/500x659/products/411/1851/SW5RL-B-K-Main__59195.1775508483.png?c=1" alt="Black | 1" title="Black | 1" data-sizes="auto"
2119    srcset="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/80w/products/411/1851/SW5RL-B-K-Main__59195.1775508483.png?c=1"
2120data-srcset="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/80w/products/411/1851/SW5RL-B-K-Main__59195.1775508483.png?c=1 80w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/160w/products/411/1851/SW5RL-B-K-Main__59195.1775508483.png?c=1 160w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/320w/products/411/1851/SW5RL-B-K-Main__59195.1775508483.png?c=1 320w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/640w/products/411/1851/SW5RL-B-K-Main__59195.1775508483.png?c=1 640w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/960w/products/411/1851/SW5RL-B-K-Main__59195.1775508483.png?c=1 960w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/1280w/products/411/1851/SW5RL-B-K-Main__59195.1775508483.png?c=1 1280w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/1920w/products/411/1851/SW5RL-B-K-Main__59195.1775508483.png?c=1 1920w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/2560w/products/411/1851/SW5RL-B-K-Main__59195.1775508483.png?c=1 2560w"
2121
2122class="lazyload card-image"
2123
2124 />
2125            </div>
2126        </a>
2127    </figure>
2128    <div class="card-body text-box4">
2129        <h3 class="card-title heading4 black">
2130            <a 
2131            	class="heading4 black"
2132            	aria-label="Multiple Guitar Wall Rack, Price range from $173.89 to $193.89
2133
2134"
2135            	href="https://www.stringswing.com/rack-for-5-acoustic-or-electric-guitars/"
2136            	data-event-type="product-click"
2137            >
2138                    Multiple Guitar Wall Rack
2139            </a>
2140        </h3>
2141        <hr>
2142        <div class="bottom">
2143            <div class="card-text product-price body-text" data-test-info-type="price">
2144                    
2145            <div class="price-section price-section--withoutTax rrp-price--withoutTax" style="display: none;">
2146            <span>
2147                    MSRP:
2148            </span>
2149            <span data-product-rrp-price-without-tax class="price price--rrp">
2150                $208.67
2151            </span>
2152        </div>
2153    <div class="price-section price-section--withoutTax non-sale-price--withoutTax" style="display: none;">
2154        <span>
2155                Was:
2156        </span>
2157        <span data-product-non-sale-price-without-tax class="price price--non-sale">
2158            
2159        </span>
2160    </div>
2161    <div class="price-section price-section--withoutTax">
2162        <span class="price-label"></span>
2163        <span class="price-now-label" style="display: none;">
2164                Now:
2165        </span>
2166        <span class="range-price-with-from">
2167        	<span class="form-text">From</span>
2168        	<span data-product-price-without-tax class="price price--withoutTax">$173.89</span>
2169        </span>
2170    </div>
2171
2172            </div>
2173            <!-- Customer Rating -->
2174            <div class="customer-rating">
2175                <span class="stamped-product-reviews-badge" data-id="411" style="display:block;"></span>
2176            </div>
2177        </div>
2178    </div>
2179    
2180    <div class="view-product-wrapper">
2181        <div class="view-product">
2182            <a href="https://www.stringswing.com/rack-for-5-acoustic-or-electric-guitars/" class="view-product-inner body-text3">
2183                View Product
2184                <span class="svg-right-arrow small thin">
2185                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48.71 30.71">
2186                        <g>
2187                            <g>
2188                                <line y1="15.35" x2="48" y2="15.35" stroke-miterlimit="10"></line>
2189                                <polyline points="33 .35 48 15.35 33 30.35" stroke-miterlimit="10"></polyline>
2190                            </g>
2191                        </g>
2192                    </svg>
2193                </span>
2194            </a>
2195        </div>
2196    </div>
2197</article>
2198            </li>
2199                    <li class="product testimony space-between">
2200                        <div class="testimony-quote heading2">"I ordered tuba, alto saxophone, soprano saxophone, clarinet and trumpet mounts ... I get compliments from all our friends and most importantly, my husband can grab them from the mount and <span class="bold">play anytime he wants.</span>"</div>
2201                        <div class="text-box6">
2202                            <div class="testimony-name heading4">Olga B.</div>
2203                            <div class="testimony-position body-text2 black">
2204                                <div class="svg-verified small2 thin">
2205                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 49.12 49.12">
2206                                      <g id="c" data-name="all">
2207                                        <path d="M18.3,1.12l4.24,2.49c1.25.73,2.8.73,4.05,0l4.24-2.49c2.29-1.34,5.22-.13,5.89,2.44l1.23,4.76c.36,1.4,1.46,2.5,2.86,2.86l4.76,1.23c2.57.67,3.78,3.6,2.44,5.89l-2.49,4.24c-.73,1.25-.73,2.8,0,4.05l2.49,4.24c1.34,2.29.13,5.22-2.44,5.89l-4.76,1.23c-1.4.36-2.5,1.46-2.86,2.86l-1.23,4.76c-.67,2.57-3.6,3.78-5.89,2.44l-4.24-2.49c-1.25-.73-2.8-.73-4.05,0l-4.24,2.49c-2.29,1.34-5.22.13-5.89-2.44l-1.23-4.76c-.36-1.4-1.46-2.5-2.86-2.86l-4.76-1.23c-2.57-.67-3.78-3.6-2.44-5.89l2.49-4.24c.73-1.25.73-2.8,0-4.05l-2.49-4.24c-1.34-2.29-.13-5.22,2.44-5.89l4.76-1.23c1.4-.36,2.5-1.46,2.86-2.86l1.23-4.76c.67-2.57,3.6-3.78,5.89-2.44ZM15.58,24.56l5.99,5.99,11.97-11.97" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.12px"></path>
2208                                      </g>
2209                                    </svg>
2210                                </div>
2211                                Verified Customer
2212                            </div>
2213                        </div>
2214                    </li>
2215            <li class="product">
2216                    <article
2217    class="card
2218    "
2219    data-product-id="322"
2220    product-id="322"
2221    data-test="card-322"
2222    data-event-type="list"
2223    data-entity-id="322"
2224    data-position="3"
2225    data-name="Wooden Guitar Wall Mount"
2226    data-product-category="
2227            Shop All,
2228                Shop All/String Instruments,
2229                Shop All/String Instruments/Guitar,
2230                Guitars,
2231                Guitars/Single Guitar Racks
2232    "
2233    data-product-brand=""
2234    data-product-price="
2235            18.99
2236"
2237>
2238    <!-- Sku base section show hide compare with en.json and custom field both -->
2239    
2240    <!-- Product Description -->
2241    
2242    <figure class="card-figure">
2243
2244        <a href="https://www.stringswing.com/guitar-hanger-hardwood-wall-mount-for-acoustic-and-electric-guitars/"
2245           class="card-figure__link"
2246           aria-label="Wooden Guitar Wall Mount, $18.99
2247
2248"
2249           data-event-type="product-click"
2250        >
2251            <div class="card-img-container">
2252                <img src="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/500x659/products/322/1513/CC01K-BWThumb__04593.1774986321.png?c=1" alt="Wooden Guitar Wall Mount" title="Wooden Guitar Wall Mount" data-sizes="auto"
2253    srcset="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/80w/products/322/1513/CC01K-BWThumb__04593.1774986321.png?c=1"
2254data-srcset="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/80w/products/322/1513/CC01K-BWThumb__04593.1774986321.png?c=1 80w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/160w/products/322/1513/CC01K-BWThumb__04593.1774986321.png?c=1 160w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/320w/products/322/1513/CC01K-BWThumb__04593.1774986321.png?c=1 320w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/640w/products/322/1513/CC01K-BWThumb__04593.1774986321.png?c=1 640w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/960w/products/322/1513/CC01K-BWThumb__04593.1774986321.png?c=1 960w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/1280w/products/322/1513/CC01K-BWThumb__04593.1774986321.png?c=1 1280w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/1920w/products/322/1513/CC01K-BWThumb__04593.1774986321.png?c=1 1920w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/2560w/products/322/1513/CC01K-BWThumb__04593.1774986321.png?c=1 2560w"
2255
2256class="lazyload card-image"
2257
2258 />
2259            </div>
2260        </a>
2261    </figure>
2262    <div class="card-body text-box4">
2263        <h3 class="card-title heading4 black">
2264            <a 
2265            	class="heading4 black"
2266            	aria-label="Wooden Guitar Wall Mount, $18.99
2267
2268"
2269            	href="https://www.stringswing.com/guitar-hanger-hardwood-wall-mount-for-acoustic-and-electric-guitars/"
2270            	data-event-type="product-click"
2271            >
2272                    Wooden Guitar Wall Mount
2273            </a>
2274        </h3>
2275        <hr>
2276        <div class="bottom">
2277            <div class="card-text product-price body-text" data-test-info-type="price">
2278                    
2279        <div class="price-section price-section--withoutTax rrp-price--withoutTax" >
2280            <span class="price-label">
2281                    MSRP:
2282            </span>
2283            <span data-product-rrp-price-without-tax class="price price--rrp">
2284                $22.79
2285            </span>
2286        </div>
2287        <div class="price-section price-section--withoutTax non-sale-price--withoutTax" style="display: none;">
2288            <span class="price-label">
2289                    Was:
2290            </span>
2291            <span data-product-non-sale-price-without-tax class="price price--non-sale">
2292                
2293            </span>
2294        </div>
2295        <div class="price-section price-section--withoutTax">
2296            <span class="price-label" >
2297                
2298            </span>
2299            <span class="price-now-label" style="display: none;">
2300                    Now:
2301            </span>
2302            <span data-product-price-without-tax class="price price--withoutTax">$18.99</span>
2303        </div>
2304            </div>
2305            <!-- Customer Rating -->
2306            <div class="customer-rating">
2307                <span class="stamped-product-reviews-badge" data-id="322" style="display:block;"></span>
2308            </div>
2309        </div>
2310    </div>
2311    
2312    <div class="view-product-wrapper">
2313        <div class="view-product">
2314            <a href="https://www.stringswing.com/guitar-hanger-hardwood-wall-mount-for-acoustic-and-electric-guitars/" class="view-product-inner body-text3">
2315                View Product
2316                <span class="svg-right-arrow small thin">
2317                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48.71 30.71">
2318                        <g>
2319                            <g>
2320                                <line y1="15.35" x2="48" y2="15.35" stroke-miterlimit="10"></line>
2321                                <polyline points="33 .35 48 15.35 33 30.35" stroke-miterlimit="10"></polyline>
2322                            </g>
2323                        </g>
2324                    </svg>
2325                </span>
2326            </a>
2327        </div>
2328    </div>
2329</article>
2330            </li>
2331            <li class="product">
2332                    <article
2333    class="card
2334    "
2335    data-product-id="483"
2336    product-id="483"
2337    data-test="card-483"
2338    data-event-type="list"
2339    data-entity-id="483"
2340    data-position="4"
2341    data-name="Plush Cradle Cover for Nitro Safe Guitar Hanger"
2342    data-product-category="
2343            Shop All,
2344                Shop All/String Instruments,
2345                Shop All/String Instruments/Guitar,
2346                Guitars,
2347                Guitars/Guitar Add-Ons
2348    "
2349    data-product-brand=""
2350    data-product-price="
2351            18.99
2352"
2353>
2354    <!-- Sku base section show hide compare with en.json and custom field both -->
2355    
2356    <!-- Product Description -->
2357    
2358    <figure class="card-figure">
2359
2360        <a href="https://www.stringswing.com/nitro-safe-guitar-stand-plush-cradle-cover/"
2361           class="card-figure__link"
2362           aria-label="Plush Cradle Cover for Nitro Safe Guitar Hanger, $18.99
2363
2364"
2365           data-event-type="product-click"
2366        >
2367            <div class="card-img-container">
2368                <img src="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/500x659/products/483/1362/Plush_cover5745_0000__57280.1701721290.jpg?c=1" alt="Plush Cradle Cover for Nitro Safe Guitar Hanger" title="Plush Cradle Cover for Nitro Safe Guitar Hanger" data-sizes="auto"
2369    srcset="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/80w/products/483/1362/Plush_cover5745_0000__57280.1701721290.jpg?c=1"
2370data-srcset="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/80w/products/483/1362/Plush_cover5745_0000__57280.1701721290.jpg?c=1 80w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/160w/products/483/1362/Plush_cover5745_0000__57280.1701721290.jpg?c=1 160w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/320w/products/483/1362/Plush_cover5745_0000__57280.1701721290.jpg?c=1 320w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/640w/products/483/1362/Plush_cover5745_0000__57280.1701721290.jpg?c=1 640w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/960w/products/483/1362/Plush_cover5745_0000__57280.1701721290.jpg?c=1 960w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/1280w/products/483/1362/Plush_cover5745_0000__57280.1701721290.jpg?c=1 1280w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/1920w/products/483/1362/Plush_cover5745_0000__57280.1701721290.jpg?c=1 1920w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/2560w/products/483/1362/Plush_cover5745_0000__57280.1701721290.jpg?c=1 2560w"
2371
2372class="lazyload card-image"
2373
2374 />
2375            </div>
2376        </a>
2377    </figure>
2378    <div class="card-body text-box4">
2379        <h3 class="card-title heading4 black">
2380            <a 
2381            	class="heading4 black"
2382            	aria-label="Plush Cradle Cover for Nitro Safe Guitar Hanger, $18.99
2383
2384"
2385            	href="https://www.stringswing.com/nitro-safe-guitar-stand-plush-cradle-cover/"
2386            	data-event-type="product-click"
2387            >
2388                    Plush Cradle Cover
2389            </a>
2390        </h3>
2391        <hr>
2392        <div class="bottom">
2393            <div class="card-text product-price body-text" data-test-info-type="price">
2394                    
2395        <div class="price-section price-section--withoutTax rrp-price--withoutTax" >
2396            <span class="price-label">
2397                    MSRP:
2398            </span>
2399            <span data-product-rrp-price-without-tax class="price price--rrp">
2400                $22.79
2401            </span>
2402        </div>
2403        <div class="price-section price-section--withoutTax non-sale-price--withoutTax" style="display: none;">
2404            <span class="price-label">
2405                    Was:
2406            </span>
2407            <span data-product-non-sale-price-without-tax class="price price--non-sale">
2408                
2409            </span>
2410        </div>
2411        <div class="price-section price-section--withoutTax">
2412            <span class="price-label" >
2413                
2414            </span>
2415            <span class="price-now-label" style="display: none;">
2416                    Now:
2417            </span>
2418            <span data-product-price-without-tax class="price price--withoutTax">$18.99</span>
2419        </div>
2420            </div>
2421            <!-- Customer Rating -->
2422            <div class="customer-rating">
2423                <span class="stamped-product-reviews-badge" data-id="483" style="display:block;"></span>
2424            </div>
2425        </div>
2426    </div>
2427    
2428    <div class="view-product-wrapper">
2429        <div class="view-product">
2430            <a href="https://www.stringswing.com/nitro-safe-guitar-stand-plush-cradle-cover/" class="view-product-inner body-text3">
2431                View Product
2432                <span class="svg-right-arrow small thin">
2433                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48.71 30.71">
2434                        <g>
2435                            <g>
2436                                <line y1="15.35" x2="48" y2="15.35" stroke-miterlimit="10"></line>
2437                                <polyline points="33 .35 48 15.35 33 30.35" stroke-miterlimit="10"></polyline>
2438                            </g>
2439                        </g>
2440                    </svg>
2441                </span>
2442            </a>
2443        </div>
2444    </div>
2445</article>
2446            </li>
2447            <li class="product">
2448                    <article
2449    class="card
2450    "
2451    data-product-id="478"
2452    product-id="478"
2453    data-test="card-478"
2454    data-event-type="list"
2455    data-entity-id="478"
2456    data-position="5"
2457    data-name="Guitar Rack for 3 Guitars"
2458    data-product-category="
2459            Shop All,
2460                Shop All/String Instruments,
2461                Shop All/String Instruments/Guitar,
2462                Guitars,
2463                Guitars/Multi-Guitar Racks
2464    "
2465    data-product-brand=""
2466    data-product-price="
2467            95.94
2468"
2469>
2470    <!-- Sku base section show hide compare with en.json and custom field both -->
2471    
2472    <!-- Product Description -->
2473    
2474    <figure class="card-figure">
2475
2476        <a href="https://www.stringswing.com/3-guitar-wall-rack-sw3rl/"
2477           class="card-figure__link"
2478           aria-label="Guitar Rack for 3 Guitars, Price range from $95.94 to $105.94
2479
2480"
2481           data-event-type="product-click"
2482        >
2483            <div class="card-img-container">
2484                <img src="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/500x659/products/478/1858/SW3RL-B-K-Main__38528.1775673820.png?c=1" alt="Black" title="Black" data-sizes="auto"
2485    srcset="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/80w/products/478/1858/SW3RL-B-K-Main__38528.1775673820.png?c=1"
2486data-srcset="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/80w/products/478/1858/SW3RL-B-K-Main__38528.1775673820.png?c=1 80w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/160w/products/478/1858/SW3RL-B-K-Main__38528.1775673820.png?c=1 160w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/320w/products/478/1858/SW3RL-B-K-Main__38528.1775673820.png?c=1 320w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/640w/products/478/1858/SW3RL-B-K-Main__38528.1775673820.png?c=1 640w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/960w/products/478/1858/SW3RL-B-K-Main__38528.1775673820.png?c=1 960w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/1280w/products/478/1858/SW3RL-B-K-Main__38528.1775673820.png?c=1 1280w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/1920w/products/478/1858/SW3RL-B-K-Main__38528.1775673820.png?c=1 1920w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/2560w/products/478/1858/SW3RL-B-K-Main__38528.1775673820.png?c=1 2560w"
2487
2488class="lazyload card-image"
2489
2490 />
2491            </div>
2492        </a>
2493    </figure>
2494    <div class="card-body text-box4">
2495        <h3 class="card-title heading4 black">
2496            <a 
2497            	class="heading4 black"
2498            	aria-label="Guitar Rack for 3 Guitars, Price range from $95.94 to $105.94
2499
2500"
2501            	href="https://www.stringswing.com/3-guitar-wall-rack-sw3rl/"
2502            	data-event-type="product-click"
2503            >
2504                    Guitar Rack for 3 Guitars
2505            </a>
2506        </h3>
2507        <hr>
2508        <div class="bottom">
2509            <div class="card-text product-price body-text" data-test-info-type="price">
2510                    
2511        <div class="price-section price-section--withoutTax rrp-price--withoutTax">
2512        <span>
2513                MSRP:
2514        </span>
2515        <span data-product-rrp-price-without-tax class="price price--rrp">$107.99 - $115.13</span>
2516    </div>
2517    <div class="price-section price-section--withoutTax non-sale-price--withoutTax" style="display: none;">
2518        <span>
2519                Was:
2520        </span>
2521        <span data-product-non-sale-price-without-tax class="price price--non-sale">
2522            
2523        </span>
2524    </div>
2525    <div class="price-section price-section--withoutTax">
2526        <span class="price-label"></span>
2527        <span class="price-now-label" style="display: none;">
2528                Now:
2529        </span>
2530        <span class="range-price-with-from">
2531        	<span class="form-text">From</span>
2532        	<span data-product-price-without-tax class="price price--withoutTax">$95.94</span>
2533        </span>
2534    </div>
2535
2536            </div>
2537            <!-- Customer Rating -->
2538            <div class="customer-rating">
2539                <span class="stamped-product-reviews-badge" data-id="478" style="display:block;"></span>
2540            </div>
2541        </div>
2542    </div>
2543    
2544    <div class="view-product-wrapper">
2545        <div class="view-product">
2546            <a href="https://www.stringswing.com/3-guitar-wall-rack-sw3rl/" class="view-product-inner body-text3">
2547                View Product
2548                <span class="svg-right-arrow small thin">
2549                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48.71 30.71">
2550                        <g>
2551                            <g>
2552                                <line y1="15.35" x2="48" y2="15.35" stroke-miterlimit="10"></line>
2553                                <polyline points="33 .35 48 15.35 33 30.35" stroke-miterlimit="10"></polyline>
2554                            </g>
2555                        </g>
2556                    </svg>
2557                </span>
2558            </a>
2559        </div>
2560    </div>
2561</article>
2562            </li>
2563            <li class="product">
2564                    <article
2565    class="card
2566    "
2567    data-product-id="475"
2568    product-id="475"
2569    data-test="card-475"
2570    data-event-type="list"
2571    data-entity-id="475"
2572    data-position="6"
2573    data-name="Guitar and Guitar Case Storage Rack Set"
2574    data-product-category="
2575            Shop All,
2576                Shop All/String Instruments,
2577                Shop All/String Instruments/Guitar,
2578                Guitars,
2579                Guitars/Freestanding Displays
2580    "
2581    data-product-brand=""
2582    data-product-price="
2583            251.98
2584"
2585>
2586    <!-- Sku base section show hide compare with en.json and custom field both -->
2587    
2588    <!-- Product Description -->
2589    
2590    <figure class="card-figure">
2591
2592        <a href="https://www.stringswing.com/guitar-and-case-floor-rack-set-cc34-29/"
2593           class="card-figure__link"
2594           aria-label="Guitar and Guitar Case Storage Rack Set, Price range from $251.98 to $350.98
2595
2596"
2597           data-event-type="product-click"
2598        >
2599            <div class="card-img-container">
2600                <img src="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/500x659/products/475/1375/CC34-29__49230.1732220277.jpg?c=1" alt="Ash-Oak" title="Ash-Oak" data-sizes="auto"
2601    srcset="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/80w/products/475/1375/CC34-29__49230.1732220277.jpg?c=1"
2602data-srcset="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/80w/products/475/1375/CC34-29__49230.1732220277.jpg?c=1 80w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/160w/products/475/1375/CC34-29__49230.1732220277.jpg?c=1 160w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/320w/products/475/1375/CC34-29__49230.1732220277.jpg?c=1 320w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/640w/products/475/1375/CC34-29__49230.1732220277.jpg?c=1 640w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/960w/products/475/1375/CC34-29__49230.1732220277.jpg?c=1 960w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/1280w/products/475/1375/CC34-29__49230.1732220277.jpg?c=1 1280w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/1920w/products/475/1375/CC34-29__49230.1732220277.jpg?c=1 1920w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/2560w/products/475/1375/CC34-29__49230.1732220277.jpg?c=1 2560w"
2603
2604class="lazyload card-image"
2605
2606 />
2607            </div>
2608        </a>
2609    </figure>
2610    <div class="card-body text-box4">
2611        <h3 class="card-title heading4 black">
2612            <a 
2613            	class="heading4 black"
2614            	aria-label="Guitar and Guitar Case Storage Rack Set, Price range from $251.98 to $350.98
2615
2616"
2617            	href="https://www.stringswing.com/guitar-and-case-floor-rack-set-cc34-29/"
2618            	data-event-type="product-click"
2619            >
2620                    Guitar and Guitar Case Storage Rack Set
2621            </a>
2622        </h3>
2623        <hr>
2624        <div class="bottom">
2625            <div class="card-text product-price body-text" data-test-info-type="price">
2626                    
2627            <div class="price-section price-section--withoutTax rrp-price--withoutTax" style="display: none;">
2628            <span>
2629                    MSRP:
2630            </span>
2631            <span data-product-rrp-price-without-tax class="price price--rrp">
2632                
2633            </span>
2634        </div>
2635    <div class="price-section price-section--withoutTax non-sale-price--withoutTax" style="display: none;">
2636        <span>
2637                Was:
2638        </span>
2639        <span data-product-non-sale-price-without-tax class="price price--non-sale">
2640            
2641        </span>
2642    </div>
2643    <div class="price-section price-section--withoutTax">
2644        <span class="price-label"></span>
2645        <span class="price-now-label" style="display: none;">
2646                Now:
2647        </span>
2648        <span class="range-price-with-from">
2649        	<span class="form-text">From</span>
2650        	<span data-product-price-without-tax class="price price--withoutTax">$251.98</span>
2651        </span>
2652    </div>
2653
2654            </div>
2655            <!-- Customer Rating -->
2656            <div class="customer-rating">
2657                <span class="stamped-product-reviews-badge" data-id="475" style="display:block;"></span>
2658            </div>
2659        </div>
2660    </div>
2661    
2662    <div class="view-product-wrapper">
2663        <div class="view-product">
2664            <a href="https://www.stringswing.com/guitar-and-case-floor-rack-set-cc34-29/" class="view-product-inner body-text3">
2665                View Product
2666                <span class="svg-right-arrow small thin">
2667                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48.71 30.71">
2668                        <g>
2669                            <g>
2670                                <line y1="15.35" x2="48" y2="15.35" stroke-miterlimit="10"></line>
2671                                <polyline points="33 .35 48 15.35 33 30.35" stroke-miterlimit="10"></polyline>
2672                            </g>
2673                        </g>
2674                    </svg>
2675                </span>
2676            </a>
2677        </div>
2678    </div>
2679</article>
2680            </li>
2681            <li class="product">
2682                    <article
2683    class="card
2684    "
2685    data-product-id="366"
2686    product-id="366"
2687    data-test="card-366"
2688    data-event-type="list"
2689    data-entity-id="366"
2690    data-position="7"
2691    data-name="Wooden Guitar Stand Rack"
2692    data-product-category="
2693            Shop All,
2694                Shop All/String Instruments,
2695                Shop All/String Instruments/Guitar,
2696                Guitars,
2697                Guitars/Freestanding Displays,
2698                Guitars/Multi-Guitar Racks
2699    "
2700    data-product-brand=""
2701    data-product-price="
2702            142.99
2703"
2704>
2705    <!-- Sku base section show hide compare with en.json and custom field both -->
2706    
2707    <!-- Product Description -->
2708    
2709    <figure class="card-figure">
2710
2711        <a href="https://www.stringswing.com/guitar-floor-rack-hardwood/"
2712           class="card-figure__link"
2713           aria-label="Wooden Guitar Stand Rack, Price range from $142.99 to $190.99
2714
2715"
2716           data-event-type="product-click"
2717        >
2718            <div class="card-img-container">
2719                <img src="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/500x659/products/366/1543/CC34Oak_Thumbnail__95561.1770054869.png?c=1" alt="Wooden Guitar Stand Rack" title="Wooden Guitar Stand Rack" data-sizes="auto"
2720    srcset="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/80w/products/366/1543/CC34Oak_Thumbnail__95561.1770054869.png?c=1"
2721data-srcset="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/80w/products/366/1543/CC34Oak_Thumbnail__95561.1770054869.png?c=1 80w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/160w/products/366/1543/CC34Oak_Thumbnail__95561.1770054869.png?c=1 160w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/320w/products/366/1543/CC34Oak_Thumbnail__95561.1770054869.png?c=1 320w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/640w/products/366/1543/CC34Oak_Thumbnail__95561.1770054869.png?c=1 640w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/960w/products/366/1543/CC34Oak_Thumbnail__95561.1770054869.png?c=1 960w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/1280w/products/366/1543/CC34Oak_Thumbnail__95561.1770054869.png?c=1 1280w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/1920w/products/366/1543/CC34Oak_Thumbnail__95561.1770054869.png?c=1 1920w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/2560w/products/366/1543/CC34Oak_Thumbnail__95561.1770054869.png?c=1 2560w"
2722
2723class="lazyload card-image"
2724
2725 />
2726            </div>
2727        </a>
2728    </figure>
2729    <div class="card-body text-box4">
2730        <h3 class="card-title heading4 black">
2731            <a 
2732            	class="heading4 black"
2733            	aria-label="Wooden Guitar Stand Rack, Price range from $142.99 to $190.99
2734
2735"
2736            	href="https://www.stringswing.com/guitar-floor-rack-hardwood/"
2737            	data-event-type="product-click"
2738            >
2739                    Wooden Guitar Stand Rack
2740            </a>
2741        </h3>
2742        <hr>
2743        <div class="bottom">
2744            <div class="card-text product-price body-text" data-test-info-type="price">
2745                    
2746            <div class="price-section price-section--withoutTax rrp-price--withoutTax" style="display: none;">
2747            <span>
2748                    MSRP:
2749            </span>
2750            <span data-product-rrp-price-without-tax class="price price--rrp">
2751                $229.19
2752            </span>
2753        </div>
2754    <div class="price-section price-section--withoutTax non-sale-price--withoutTax" style="display: none;">
2755        <span>
2756                Was:
2757        </span>
2758        <span data-product-non-sale-price-without-tax class="price price--non-sale">
2759            
2760        </span>
2761    </div>
2762    <div class="price-section price-section--withoutTax">
2763        <span class="price-label"></span>
2764        <span class="price-now-label" style="display: none;">
2765                Now:
2766        </span>
2767        <span class="range-price-with-from">
2768        	<span class="form-text">From</span>
2769        	<span data-product-price-without-tax class="price price--withoutTax">$142.99</span>
2770        </span>
2771    </div>
2772
2773            </div>
2774            <!-- Customer Rating -->
2775            <div class="customer-rating">
2776                <span class="stamped-product-reviews-badge" data-id="366" style="display:block;"></span>
2777            </div>
2778        </div>
2779    </div>
2780    
2781    <div class="view-product-wrapper">
2782        <div class="view-product">
2783            <a href="https://www.stringswing.com/guitar-floor-rack-hardwood/" class="view-product-inner body-text3">
2784                View Product
2785                <span class="svg-right-arrow small thin">
2786                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48.71 30.71">
2787                        <g>
2788                            <g>
2789                                <line y1="15.35" x2="48" y2="15.35" stroke-miterlimit="10"></line>
2790                                <polyline points="33 .35 48 15.35 33 30.35" stroke-miterlimit="10"></polyline>
2791                            </g>
2792                        </g>
2793                    </svg>
2794                </span>
2795            </a>
2796        </div>
2797    </div>
2798</article>
2799            </li>
2800            <li class="product">
2801                    <article
2802    class="card
2803    "
2804    data-product-id="474"
2805    product-id="474"
2806    data-test="card-474"
2807    data-event-type="list"
2808    data-entity-id="474"
2809    data-position="8"
2810    data-name="Double Guitar Stand Rack Bundle"
2811    data-product-category="
2812            Shop All,
2813                Shop All/String Instruments,
2814                Shop All/String Instruments/Guitar,
2815                Guitars,
2816                Guitars/Freestanding Displays
2817    "
2818    data-product-brand=""
2819    data-product-price="
2820            285.98
2821"
2822>
2823    <!-- Sku base section show hide compare with en.json and custom field both -->
2824    
2825    <!-- Product Description -->
2826    
2827    <figure class="card-figure">
2828
2829        <a href="https://www.stringswing.com/double-floor-guitar-rack-cc34x2/"
2830           class="card-figure__link"
2831           aria-label="Double Guitar Stand Rack Bundle, Price range from $285.98 to $381.98
2832
2833"
2834           data-event-type="product-click"
2835        >
2836            <div class="card-img-container">
2837                <img src="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/500x659/products/474/1268/CC34X2__19648.1643058226.jpg?c=1" alt="Oak" title="Oak" data-sizes="auto"
2838    srcset="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/80w/products/474/1268/CC34X2__19648.1643058226.jpg?c=1"
2839data-srcset="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/80w/products/474/1268/CC34X2__19648.1643058226.jpg?c=1 80w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/160w/products/474/1268/CC34X2__19648.1643058226.jpg?c=1 160w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/320w/products/474/1268/CC34X2__19648.1643058226.jpg?c=1 320w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/640w/products/474/1268/CC34X2__19648.1643058226.jpg?c=1 640w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/960w/products/474/1268/CC34X2__19648.1643058226.jpg?c=1 960w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/1280w/products/474/1268/CC34X2__19648.1643058226.jpg?c=1 1280w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/1920w/products/474/1268/CC34X2__19648.1643058226.jpg?c=1 1920w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/2560w/products/474/1268/CC34X2__19648.1643058226.jpg?c=1 2560w"
2840
2841class="lazyload card-image"
2842
2843 />
2844            </div>
2845        </a>
2846    </figure>
2847    <div class="card-body text-box4">
2848        <h3 class="card-title heading4 black">
2849            <a 
2850            	class="heading4 black"
2851            	aria-label="Double Guitar Stand Rack Bundle, Price range from $285.98 to $381.98
2852
2853"
2854            	href="https://www.stringswing.com/double-floor-guitar-rack-cc34x2/"
2855            	data-event-type="product-click"
2856            >
2857                    Double Guitar Stand Rack Bundle
2858            </a>
2859        </h3>
2860        <hr>
2861        <div class="bottom">
2862            <div class="card-text product-price body-text" data-test-info-type="price">
2863                    
2864            <div class="price-section price-section--withoutTax rrp-price--withoutTax" style="display: none;">
2865            <span>
2866                    MSRP:
2867            </span>
2868            <span data-product-rrp-price-without-tax class="price price--rrp">
2869                
2870            </span>
2871        </div>
2872    <div class="price-section price-section--withoutTax non-sale-price--withoutTax" style="display: none;">
2873        <span>
2874                Was:
2875        </span>
2876        <span data-product-non-sale-price-without-tax class="price price--non-sale">
2877            
2878        </span>
2879    </div>
2880    <div class="price-section price-section--withoutTax">
2881        <span class="price-label"></span>
2882        <span class="price-now-label" style="display: none;">
2883                Now:
2884        </span>
2885        <span class="range-price-with-from">
2886        	<span class="form-text">From</span>
2887        	<span data-product-price-without-tax class="price price--withoutTax">$285.98</span>
2888        </span>
2889    </div>
2890
2891            </div>
2892            <!-- Customer Rating -->
2893            <div class="customer-rating">
2894                <span class="stamped-product-reviews-badge" data-id="474" style="display:block;"></span>
2895            </div>
2896        </div>
2897    </div>
2898    
2899    <div class="view-product-wrapper">
2900        <div class="view-product">
2901            <a href="https://www.stringswing.com/double-floor-guitar-rack-cc34x2/" class="view-product-inner body-text3">
2902                View Product
2903                <span class="svg-right-arrow small thin">
2904                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48.71 30.71">
2905                        <g>
2906                            <g>
2907                                <line y1="15.35" x2="48" y2="15.35" stroke-miterlimit="10"></line>
2908                                <polyline points="33 .35 48 15.35 33 30.35" stroke-miterlimit="10"></polyline>
2909                            </g>
2910                        </g>
2911                    </svg>
2912                </span>
2913            </a>
2914        </div>
2915    </div>
2916</article>
2917            </li>
2918            <li class="product">
2919                    <article
2920    class="card
2921    "
2922    data-product-id="354"
2923    product-id="354"
2924    data-test="card-354"
2925    data-event-type="list"
2926    data-entity-id="354"
2927    data-position="9"
2928    data-name="Guitar Case Rack Stand"
2929    data-product-category="
2930            Shop All,
2931                Shop All/String Instruments,
2932                Shop All/String Instruments/Guitar,
2933                Guitars,
2934                Guitars/Freestanding Displays,
2935                Guitars/Multi-Guitar Racks
2936    "
2937    data-product-brand=""
2938    data-product-price="
2939            108.99
2940"
2941>
2942    <!-- Sku base section show hide compare with en.json and custom field both -->
2943    
2944    <!-- Product Description -->
2945    
2946    <figure class="card-figure">
2947
2948        <a href="https://www.stringswing.com/cc29-guitar-case-rack/"
2949           class="card-figure__link"
2950           aria-label="Guitar Case Rack Stand, Price range from $108.99 to $159.99
2951
2952"
2953           data-event-type="product-click"
2954        >
2955            <div class="card-img-container">
2956                <img src="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/500x659/products/354/1557/Thumbnail__88439.1775726934.png?c=1" alt="Guitar Case Rack Stand" title="Guitar Case Rack Stand" data-sizes="auto"
2957    srcset="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/80w/products/354/1557/Thumbnail__88439.1775726934.png?c=1"
2958data-srcset="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/80w/products/354/1557/Thumbnail__88439.1775726934.png?c=1 80w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/160w/products/354/1557/Thumbnail__88439.1775726934.png?c=1 160w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/320w/products/354/1557/Thumbnail__88439.1775726934.png?c=1 320w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/640w/products/354/1557/Thumbnail__88439.1775726934.png?c=1 640w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/960w/products/354/1557/Thumbnail__88439.1775726934.png?c=1 960w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/1280w/products/354/1557/Thumbnail__88439.1775726934.png?c=1 1280w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/1920w/products/354/1557/Thumbnail__88439.1775726934.png?c=1 1920w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/2560w/products/354/1557/Thumbnail__88439.1775726934.png?c=1 2560w"
2959
2960class="lazyload card-image"
2961
2962 />
2963            </div>
2964        </a>
2965    </figure>
2966    <div class="card-body text-box4">
2967        <h3 class="card-title heading4 black">
2968            <a 
2969            	class="heading4 black"
2970            	aria-label="Guitar Case Rack Stand, Price range from $108.99 to $159.99
2971
2972"
2973            	href="https://www.stringswing.com/cc29-guitar-case-rack/"
2974            	data-event-type="product-click"
2975            >
2976                    Guitar Case Rack Stand
2977            </a>
2978        </h3>
2979        <hr>
2980        <div class="bottom">
2981            <div class="card-text product-price body-text" data-test-info-type="price">
2982                    
2983            <div class="price-section price-section--withoutTax rrp-price--withoutTax" style="display: none;">
2984            <span>
2985                    MSRP:
2986            </span>
2987            <span data-product-rrp-price-without-tax class="price price--rrp">
2988                $191.99
2989            </span>
2990        </div>
2991    <div class="price-section price-section--withoutTax non-sale-price--withoutTax" style="display: none;">
2992        <span>
2993                Was:
2994        </span>
2995        <span data-product-non-sale-price-without-tax class="price price--non-sale">
2996            
2997        </span>
2998    </div>
2999    <div class="price-section price-section--withoutTax">
3000        <span class="price-label"></span>
3001        <span class="price-now-label" style="display: none;">
3002                Now:
3003        </span>
3004        <span class="range-price-with-from">
3005        	<span class="form-text">From</span>
3006        	<span data-product-price-without-tax class="price price--withoutTax">$108.99</span>
3007        </span>
3008    </div>
3009
3010            </div>
3011            <!-- Customer Rating -->
3012            <div class="customer-rating">
3013                <span class="stamped-product-reviews-badge" data-id="354" style="display:block;"></span>
3014            </div>
3015        </div>
3016    </div>
3017    
3018    <div class="view-product-wrapper">
3019        <div class="view-product">
3020            <a href="https://www.stringswing.com/cc29-guitar-case-rack/" class="view-product-inner body-text3">
3021                View Product
3022                <span class="svg-right-arrow small thin">
3023                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48.71 30.71">
3024                        <g>
3025                            <g>
3026                                <line y1="15.35" x2="48" y2="15.35" stroke-miterlimit="10"></line>
3027                                <polyline points="33 .35 48 15.35 33 30.35" stroke-miterlimit="10"></polyline>
3028                            </g>
3029                        </g>
3030                    </svg>
3031                </span>
3032            </a>
3033        </div>
3034    </div>
3035</article>
3036            </li>
3037            <li class="product">
3038                    <article
3039    class="card
3040    "
3041    data-product-id="329"
3042    product-id="329"
3043    data-test="card-329"
3044    data-event-type="list"
3045    data-entity-id="329"
3046    data-position="10"
3047    data-name="Guitar Wall Hanger: Original Style"
3048    data-product-category="
3049            Shop All,
3050                Shop All/String Instruments,
3051                Shop All/String Instruments/Guitar,
3052                Guitars,
3053                Guitars/Single Guitar Racks
3054    "
3055    data-product-brand=""
3056    data-product-price="
3057            18.99
3058"
3059>
3060    <!-- Sku base section show hide compare with en.json and custom field both -->
3061    
3062    <!-- Product Description -->
3063    
3064    <figure class="card-figure">
3065
3066        <a href="https://www.stringswing.com/original-style-hardwood-wall-mount-guitar-hanger-1/"
3067           class="card-figure__link"
3068           aria-label="Guitar Wall Hanger: Original Style, $18.99
3069
3070"
3071           data-event-type="product-click"
3072        >
3073            <div class="card-img-container">
3074                <img src="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/500x659/products/329/2067/CC01--BWMainNG__71607.1781118955.png?c=1" alt="Guitar Wall Hanger: Original Style" title="Guitar Wall Hanger: Original Style" data-sizes="auto"
3075    srcset="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/80w/products/329/2067/CC01--BWMainNG__71607.1781118955.png?c=1"
3076data-srcset="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/80w/products/329/2067/CC01--BWMainNG__71607.1781118955.png?c=1 80w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/160w/products/329/2067/CC01--BWMainNG__71607.1781118955.png?c=1 160w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/320w/products/329/2067/CC01--BWMainNG__71607.1781118955.png?c=1 320w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/640w/products/329/2067/CC01--BWMainNG__71607.1781118955.png?c=1 640w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/960w/products/329/2067/CC01--BWMainNG__71607.1781118955.png?c=1 960w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/1280w/products/329/2067/CC01--BWMainNG__71607.1781118955.png?c=1 1280w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/1920w/products/329/2067/CC01--BWMainNG__71607.1781118955.png?c=1 1920w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/2560w/products/329/2067/CC01--BWMainNG__71607.1781118955.png?c=1 2560w"
3077
3078class="lazyload card-image"
3079
3080 />
3081            </div>
3082        </a>
3083    </figure>
3084    <div class="card-body text-box4">
3085        <h3 class="card-title heading4 black">
3086            <a 
3087            	class="heading4 black"
3088            	aria-label="Guitar Wall Hanger: Original Style, $18.99
3089
3090"
3091            	href="https://www.stringswing.com/original-style-hardwood-wall-mount-guitar-hanger-1/"
3092            	data-event-type="product-click"
3093            >
3094                    Guitar Wall Hanger: Original Style
3095            </a>
3096        </h3>
3097        <hr>
3098        <div class="bottom">
3099            <div class="card-text product-price body-text" data-test-info-type="price">
3100                    
3101        <div class="price-section price-section--withoutTax rrp-price--withoutTax" >
3102            <span class="price-label">
3103                    MSRP:
3104            </span>
3105            <span data-product-rrp-price-without-tax class="price price--rrp">
3106                $22.79
3107            </span>
3108        </div>
3109        <div class="price-section price-section--withoutTax non-sale-price--withoutTax" style="display: none;">
3110            <span class="price-label">
3111                    Was:
3112            </span>
3113            <span data-product-non-sale-price-without-tax class="price price--non-sale">
3114                
3115            </span>
3116        </div>
3117        <div class="price-section price-section--withoutTax">
3118            <span class="price-label" >
3119                
3120            </span>
3121            <span class="price-now-label" style="display: none;">
3122                    Now:
3123            </span>
3124            <span data-product-price-without-tax class="price price--withoutTax">$18.99</span>
3125        </div>
3126            </div>
3127            <!-- Customer Rating -->
3128            <div class="customer-rating">
3129                <span class="stamped-product-reviews-badge" data-id="329" style="display:block;"></span>
3130            </div>
3131        </div>
3132    </div>
3133    
3134    <div class="view-product-wrapper">
3135        <div class="view-product">
3136            <a href="https://www.stringswing.com/original-style-hardwood-wall-mount-guitar-hanger-1/" class="view-product-inner body-text3">
3137                View Product
3138                <span class="svg-right-arrow small thin">
3139                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48.71 30.71">
3140                        <g>
3141                            <g>
3142                                <line y1="15.35" x2="48" y2="15.35" stroke-miterlimit="10"></line>
3143                                <polyline points="33 .35 48 15.35 33 30.35" stroke-miterlimit="10"></polyline>
3144                            </g>
3145                        </g>
3146                    </svg>
3147                </span>
3148            </a>
3149        </div>
3150    </div>
3151</article>
3152            </li>
3153            <li class="product">
3154                    <article
3155    class="card
3156    "
3157    data-product-id="439"
3158    product-id="439"
3159    data-test="card-439"
3160    data-event-type="list"
3161    data-entity-id="439"
3162    data-position="11"
3163    data-name="Classical Guitar Hanger Wall Mount"
3164    data-product-category="
3165            Shop All,
3166                Shop All/String Instruments,
3167                Shop All/String Instruments/Guitar,
3168                Guitars,
3169                Guitars/Single Guitar Racks
3170    "
3171    data-product-brand=""
3172    data-product-price="
3173            18.99
3174"
3175>
3176    <!-- Sku base section show hide compare with en.json and custom field both -->
3177    
3178    <!-- Product Description -->
3179    
3180    <figure class="card-figure">
3181
3182        <a href="https://www.stringswing.com/classical-guitar-hanger-wall-mount/"
3183           class="card-figure__link"
3184           aria-label="Classical Guitar Hanger Wall Mount, $18.99
3185
3186"
3187           data-event-type="product-click"
3188        >
3189            <div class="card-img-container">
3190                <img src="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/500x659/products/439/2076/BCC11-MainEG__70766.1781129503.png?c=1" alt="Classical Guitar Hanger Wall Mount" title="Classical Guitar Hanger Wall Mount" data-sizes="auto"
3191    srcset="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/80w/products/439/2076/BCC11-MainEG__70766.1781129503.png?c=1"
3192data-srcset="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/80w/products/439/2076/BCC11-MainEG__70766.1781129503.png?c=1 80w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/160w/products/439/2076/BCC11-MainEG__70766.1781129503.png?c=1 160w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/320w/products/439/2076/BCC11-MainEG__70766.1781129503.png?c=1 320w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/640w/products/439/2076/BCC11-MainEG__70766.1781129503.png?c=1 640w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/960w/products/439/2076/BCC11-MainEG__70766.1781129503.png?c=1 960w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/1280w/products/439/2076/BCC11-MainEG__70766.1781129503.png?c=1 1280w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/1920w/products/439/2076/BCC11-MainEG__70766.1781129503.png?c=1 1920w, https://cdn11.bigcommerce.com/s-5r2w8tg1gb/images/stencil/2560w/products/439/2076/BCC11-MainEG__70766.1781129503.png?c=1 2560w"
3193
3194class="lazyload card-image"
3195
3196 />
3197            </div>
3198        </a>
3199    </figure>
3200    <div class="card-body text-box4">
3201        <h3 class="card-title heading4 black">
3202            <a 
3203            	class="heading4 black"
3204            	aria-label="Classical Guitar Hanger Wall Mount, $18.99
3205
3206"
3207            	href="https://www.stringswing.com/classical-guitar-hanger-wall-mount/"
3208            	data-event-type="product-click"
3209            >
3210                    Classical Guitar Hanger Wall Mount
3211            </a>
3212        </h3>
3213        <hr>
3214        <div class="bottom">
3215            <div class="card-text product-price body-text" data-test-info-type="price">
3216                    
3217        <div class="price-section price-section--withoutTax rrp-price--withoutTax" >
3218            <span class="price-label">
3219                    MSRP:
3220            </span>
3221            <span data-product-rrp-price-without-tax class="price price--rrp">
3222                $22.79
3223            </span>
3224        </div>
3225        <div class="price-section price-section--withoutTax non-sale-price--withoutTax" style="display: none;">
3226            <span class="price-label">
3227                    Was:
3228            </span>
3229            <span data-product-non-sale-price-without-tax class="price price--non-sale">
3230                
3231            </span>
3232        </div>
3233        <div class="price-section price-section--withoutTax">
3234            <span class="price-label" >
3235                
3236            </span>
3237            <span class="price-now-label" style="display: none;">
3238                    Now:
3239            </span>
3240            <span data-product-price-without-tax class="price price--withoutTax">$18.99</span>
3241        </div>
3242            </div>
3243            <!-- Customer Rating -->
3244            <div class="customer-rating">
3245                <span class="stamped-product-reviews-badge" data-id="439" style="display:block;"></span>
3246            </div>
3247        </div>
3248    </div>
3249    
3250    <div class="view-product-wrapper">
3251        <div class="view-product">
3252            <a href="https://www.stringswing.com/classical-guitar-hanger-wall-mount/" class="view-product-inner body-text3">
3253                View Product
3254                <span class="svg-right-arrow small thin">
3255                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48.71 30.71">
3256                        <g>
3257                            <g>
3258                                <line y1="15.35" x2="48" y2="15.35" stroke-miterlimit="10"></line>
3259                                <polyline points="33 .35 48 15.35 33 30.35" stroke-miterlimit="10"></polyline>
3260                            </g>
3261                        </g>
3262                    </svg>
3263                </span>
3264            </a>
3265        </div>
3266    </div>
3267</article>
3268            </li>
3269</ul>
3270    </div>
3271
3272    <nav class="pagination" aria-label="pagination">
3273    <div class="pagination-list">
3274        <div class="pagination-numbers">
3275                <div class="pagination-item pagination-item--current">
3276                    <a class="pagination-link"
3277                       href="https://www.stringswing.com/shop-all/stringed-instruments/guitar/?page&#x3D;1"
3278                       data-faceted-search-facet
3279                       aria-current="page"
3280                       data-pagination-current-page-link
3281                       aria-label="Page 1 of 2"
3282                    >
3283                        1
3284                    </a>
3285                </div>
3286                <div class="pagination-item ">
3287                    <a class="pagination-link"
3288                       href="https://www.stringswing.com/shop-all/stringed-instruments/guitar/?page&#x3D;2"
3289                       data-faceted-search-facet
3290                       aria-label="Page 2 of 2"
3291                    >
3292                        2
3293                    </a>
3294                </div>
3295        </div>
3296        <div class="pagination-arrows">
3297                <div class="pagination-item pagination-item--next">
3298                    <a class="pagination-link"
3299                       href="https://www.stringswing.com/shop-all/stringed-instruments/guitar/?page&#x3D;2"
3300                       data-faceted-search-facet
3301                       aria-label="Next"
3302                    >
3303                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48.71 30.71">
3304                          <g data-name="all">
3305                            <g data-name="right-arrow">
3306                              <line y1="15.35" x2="48" y2="15.35" stroke-miterlimit="10"></line>
3307                              <polyline points="33 .35 48 15.35 33 30.35" stroke-miterlimit="10"></polyline>
3308                            </g>
3309                          </g>
3310                        </svg>
3311                    </a>
3312                </div>
3313        </div>
3314    </div>
3315</nav>
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325            </div>
3326            
3327                                                        <div class="page-content collection-
3327products getProduct" id="subcat-guitar">
3328                                    <div class="get-products">
3329                                        <div class="collection-loader">
3330                                            <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin: auto; display: block;" width="100px" height="100px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
3331                                                <circle cx="84" cy="50" r="10" fill="#2c2c2c">
3332                                                    <animate attributeName="r" repeatCount="indefinite" dur="0.25s" calcMode="spline" keyTimes="0;1" values="10;0" keySplines="0 0.5 0.5 1" begin="0s"></animate>
3333                                                    <animate attributeName="fill" repeatCount="indefinite" dur="1s" calcMode="discrete" keyTimes="0;0.25;0.5;0.75;1" values="#2c2c2c;#2c2c2c;#e4fe9f;#2c2c2c;#e4fe9f" begin="0s"></animate>
3334                                                </circle><circle cx="16" cy="50" r="10" fill="#2c2c2c">
3335                                                  <animate attributeName="r" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="0s"></animate>
3336                                                  <animate attributeName="cx" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="0s"></animate>
3337                                                </circle><circle cx="50" cy="50" r="10" fill="#e4fe9f">
3338                                                  <animate attributeName="r" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.25s"></animate>
3339                                                  <animate attributeName="cx" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.25s"></animate>
3340                                                </circle><circle cx="84" cy="50" r="10" fill="#2c2c2c">
3341                                                  <animate attributeName="r" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.5s"></animate>
3342                                                  <animate attributeName="cx" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.5s"></animate>
3343                                                </circle><circle cx="16" cy="50" r="10" fill="#e4fe9f">
3344                                                  <animate attributeName="r" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.75s"></animate>
3345                                                  <animate attributeName="cx" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.75s"></animate>
3346                                                </circle>
3347                                            </svg>
3348                                        </div>
3349                                    </div>
3350                                </div>
3351                                <div class="page-content collection-products getProduct" id="subcat-ukulele">
3352                                    <div class="get-products">
3353                                        <div class="collection-loader">
3354                                            <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin: auto; display: block;" width="100px" height="100px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
3355                                                <circle cx="84" cy="50" r="10" fill="#2c2c2c">
3356                                                    <animate attributeName="r" repeatCount="indef
3356inite" dur="0.25s" calcMode="spline" keyTimes="0;1" values="10;0" keySplines="0 0.5 0.5 1" begin="0s"></animate>
3357                                                    <animate attributeName="fill" repeatCount="indefinite" dur="1s" calcMode="discrete" keyTimes="0;0.25;0.5;0.75;1" values="#2c2c2c;#2c2c2c;#e4fe9f;#2c2c2c;#e4fe9f" begin="0s"></animate>
3358                                                </circle><circle cx="16" cy="50" r="10" fill="#2c2c2c">
3359                                                  <animate attributeName="r" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="0s"></animate>
3360                                                  <animate attributeName="cx" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="0s"></animate>
3361                                                </circle><circle cx="50" cy="50" r="10" fill="#e4fe9f">
3362                                                  <animate attributeName="r" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.25s"></animate>
3363                                                  <animate attributeName="cx" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.25s"></animate>
3364                                                </circle><circle cx="84" cy="50" r="10" fill="#2c2c2c">
3365                                                  <animate attributeName="r" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.5s"></animate>
3366                                                  <animate attributeName="cx" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.5s"></animate>
3367                                                </circle><circle cx="16" cy="50" r="10" fill="#e4fe9f">
3368                                                  <animate attributeName="r" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.75s"></animate>
3369                                                  <animate attributeName="cx" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.75s"></animate>
3370                                                </circle>
3371                                            </svg>
3372                                        </div>
3373                                    </div>
3374                                </div>
3375                                <div class="page-content collection-products getProduct" id="subcat-violin">
3376                                    <div class="get-products">
3377                                        <div class="collection-loader">
3378                                            <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin: auto; display: block;" width="100px" height="100px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
3379                                                <circle cx="84" cy="50" r="10" fill="#2c2c2c">
3380                                                    <animate attributeName="r" repeatCount="indefinite" dur="0.25s" calcMode="spline" keyTimes="0;1" values="10;0" keySplines="0 0.5 0.5 1" begin="0s"></animate>
3381                                                    <animate attributeName="fill" repeatCount="indefinite" dur="1s" calcMode="discrete" keyTimes="0;0.25;0.5;0.75;1" values="#2c2c2c;#2c2c2c;#e4fe9f;#2c2c2c;#e4fe9f" begin="0s"></animate>
3382                                                </circle><circle cx="16" cy="50" r="10" fill="#2c2c2c">
3383                                                  <animate attributeName="r" repeatCount="indef
3383inite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="0s"></animate>
3384                                                  <animate attributeName="cx" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="0s"></animate>
3385                                                </circle><circle cx="50" cy="50" r="10" fill="#e4fe9f">
3386                                                  <animate attributeName="r" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.25s"></animate>
3387                                                  <animate attributeName="cx" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.25s"></animate>
3388                                                </circle><circle cx="84" cy="50" r="10" fill="#2c2c2c">
3389                                                  <animate attributeName="r" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.5s"></animate>
3390                                                  <animate attributeName="cx" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.5s"></animate>
3391                                                </circle><circle cx="16" cy="50" r="10" fill="#e4fe9f">
3392                                                  <animate attributeName="r" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.75s"></animate>
3393                                                  <animate attributeName="cx" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.75s"></animate>
3394                                                </circle>
3395                                            </svg>
3396                                        </div>
3397                                    </div>
3398                                </div>
3399                                <div class="page-content collection-products getProduct" id="subcat-banjo">
3400                                    <div class="get-products">
3401                                        <div class="collection-loader">
3402                                            <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin: auto; display: block;" width="100px" height="100px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
3403                                                <circle cx="84" cy="50" r="10" fill="#2c2c2c">
3404                                                    <animate attributeName="r" repeatCount="indefinite" dur="0.25s" calcMode="spline" keyTimes="0;1" values="10;0" keySplines="0 0.5 0.5 1" begin="0s"></animate>
3405                                                    <animate attributeName="fill" repeatCount="indefinite" dur="1s" calcMode="discrete" keyTimes="0;0.25;0.5;0.75;1" values="#2c2c2c;#2c2c2c;#e4fe9f;#2c2c2c;#e4fe9f" begin="0s"></animate>
3406                                                </circle><circle cx="16" cy="50" r="10" fill="#2c2c2c">
3407                                                  <animate attributeName="r" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="0s"></animate>
3408                                                  <animate attributeName="cx" repeatCount="indef
3408inite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="0s"></animate>
3409                                                </circle><circle cx="50" cy="50" r="10" fill="#e4fe9f">
3410                                                  <animate attributeName="r" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.25s"></animate>
3411                                                  <animate attributeName="cx" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.25s"></animate>
3412                                                </circle><circle cx="84" cy="50" r="10" fill="#2c2c2c">
3413                                                  <animate attributeName="r" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.5s"></animate>
3414                                                  <animate attributeName="cx" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.5s"></animate>
3415                                                </circle><circle cx="16" cy="50" r="10" fill="#e4fe9f">
3416                                                  <animate attributeName="r" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.75s"></animate>
3417                                                  <animate attributeName="cx" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.75s"></animate>
3418                                                </circle>
3419                                            </svg>
3420                                        </div>
3421                                    </div>
3422                                </div>
3423                                <div class="page-content collection-products getProduct" id="subcat-cello">
3424                                    <div class="get-products">
3425                                        <div class="collection-loader">
3426                                            <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin: auto; display: block;" width="100px" height="100px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
3427                                                <circle cx="84" cy="50" r="10" fill="#2c2c2c">
3428                                                    <animate attributeName="r" repeatCount="indefinite" dur="0.25s" calcMode="spline" keyTimes="0;1" values="10;0" keySplines="0 0.5 0.5 1" begin="0s"></animate>
3429                                                    <animate attributeName="fill" repeatCount="indefinite" dur="1s" calcMode="discrete" keyTimes="0;0.25;0.5;0.75;1" values="#2c2c2c;#2c2c2c;#e4fe9f;#2c2c2c;#e4fe9f" begin="0s"></animate>
3430                                                </circle><circle cx="16" cy="50" r="10" fill="#2c2c2c">
3431                                                  <animate attributeName="r" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="0s"></animate>
3432                                                  <animate attributeName="cx" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="0s"></animate>
3433                                                </circle><circle cx="50" cy="50" r="10" fill="#e4fe9f">
3434                                                  <animate attributeName="r" repeatCount="indef
3434inite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.25s"></animate>
3435                                                  <animate attributeName="cx" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.25s"></animate>
3436                                                </circle><circle cx="84" cy="50" r="10" fill="#2c2c2c">
3437                                                  <animate attributeName="r" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.5s"></animate>
3438                                                  <animate attributeName="cx" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.5s"></animate>
3439                                                </circle><circle cx="16" cy="50" r="10" fill="#e4fe9f">
3440                                                  <animate attributeName="r" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.75s"></animate>
3441                                                  <animate attributeName="cx" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.75s"></animate>
3442                                                </circle>
3443                                            </svg>
3444                                        </div>
3445                                    </div>
3446                                </div>
3447                                <div class="page-content collection-products getProduct" id="subcat-dulcimer">
3448                                    <div class="get-products">
3449                                        <div class="collection-loader">
3450                                            <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin: auto; display: block;" width="100px" height="100px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
3451                                                <circle cx="84" cy="50" r="10" fill="#2c2c2c">
3452                                                    <animate attributeName="r" repeatCount="indefinite" dur="0.25s" calcMode="spline" keyTimes="0;1" values="10;0" keySplines="0 0.5 0.5 1" begin="0s"></animate>
3453                                                    <animate attributeName="fill" repeatCount="indefinite" dur="1s" calcMode="discrete" keyTimes="0;0.25;0.5;0.75;1" values="#2c2c2c;#2c2c2c;#e4fe9f;#2c2c2c;#e4fe9f" begin="0s"></animate>
3454                                                </circle><circle cx="16" cy="50" r="10" fill="#2c2c2c">
3455                                                  <animate attributeName="r" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="0s"></animate>
3456                                                  <animate attributeName="cx" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="0s"></animate>
3457                                                </circle><circle cx="50" cy="50" r="10" fill="#e4fe9f">
3458                                                  <animate attributeName="r" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.25s"></animate>
3459                                                  <animate attributeName="cx" repeatCount="indef
3459inite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.25s"></animate>
3460                                                </circle><circle cx="84" cy="50" r="10" fill="#2c2c2c">
3461                                                  <animate attributeName="r" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.5s"></animate>
3462                                                  <animate attributeName="cx" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.5s"></animate>
3463                                                </circle><circle cx="16" cy="50" r="10" fill="#e4fe9f">
3464                                                  <animate attributeName="r" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="0;0;10;10;10" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.75s"></animate>
3465                                                  <animate attributeName="cx" repeatCount="indefinite" dur="1s" calcMode="spline" keyTimes="0;0.25;0.5;0.75;1" values="16;16;16;50;84" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" begin="-0.75s"></animate>
3466                                                </circle>
3467                                            </svg>
3468                                        </div>
3469                                    </div>
3470                                </div>
3471                                                        </div>
3472    </div>
3473</div>
3474
3475<!-- Following var assign use inside the following script to change lang base quote boxes information -->
3476
3477
3478
3479
3480<script>
3481    // $(document).on('click', '#faceted-search-container .sidebarBlock .navList-item .navList-action', function (e) {
3482	$(document).on('click', '#faceted-search-container .sidebarBlock .dropdown-content .dropdown-item a', function (e) {
3483        const href = $(this).attr('href');
3484		
3485		// sirf wahi allow karo jisme # ho
3486		if (!href || href.indexOf('#') === -1) {
3487			return; // ignore normal links
3488		}
3489		
3490		e.preventDefault();
3491		
3492		const categoryId = href;
3493		// e.preventDefault();
3494        // const categoryId = $(this).attr('href')
3495		
3496        
3497        $('.page-sidebar .dropdown-item').removeClass('is-active');
3498        $(this).parent().addClass('is-active');
3499
3500        $('#product-listing-container').hide();
3501        $('.getProduct').hide(); 
3502        $(categoryId).fadeIn();
3503        
3504		const categoryUrl = $(this).closest('.dropdown-item').data('categoryurl');
3505        getProductsFromCategory(categoryUrl, categoryId);
3506    });
3507    function getProductsFromCategory(categoryUrl, categoryId) {
3508        const templatePath = 'category/product-listing-collection';
3509        if (categoryUrl) {
3510            window.stencilUtils.api.getPage(categoryUrl, { template: templatePath }, (err, response) => {
3511                if (response) {
3512                    $(categoryId+' .get-products').html(response);
3513                    if (window.StampedFn && typeof StampedFn.loadBadges === 'function') {
3514                        StampedFn.loadBadges();
3515                    }
3516                    setTimeout(function(){
3517                        const totalCollectionProducts = $(categoryId+' .get-products .productGrid .product').length;
3518						// $('.collection-main .product-amount').html(totalCollectionProducts+ ' Products');
3519						$('.collection-main .product-amount #product-val').html(totalCollectionProducts);
3520                        $('.collection-nav .product-amount #product-val').show();
3521                        $('.collection-nav .product-amount #product-val-default').hide();
3522                        $('.collection-main .collection-nav .actionBar .SortWrap').hide();
3523                        if ($(categoryId+' .get-products .productGrid .product').length >= 1) {
3524                            const adHTML = `
3525									<li class="product testimony space-between">
3526										<div class="testimony-quote heading2">"I ordered tuba, alto saxophone, soprano saxophone, clarinet and trumpet mounts ... I get compliments from all our friends and most importantly, my husband can grab them from the mount and <span class="bold">play anytime he wants.</span>"</div>
3527										<div class="text-box6">
3528											<div class="testimony-name heading4">Olga B.</div>
3529											<div class="testimony-position body-text2 black">
3530												<div class="svg-verified small2 thin">
3531													<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 49.12 49.12">
3532													  <g id="c" data-name="all">
3533														<path d="M18.3,1.12l4.24,2.49c1.25.73,2.8.73,4.05,0l4.24-2.49c2.29-1.34,5.22-.13,5.89,2.44l1.23,4.76c.36,1.4,1.46,2.5,2.86,2.86l4.76,1.23c2.57.67,3.78,3.6,2.44,5.89l-2.49,4.24c-.73,1.25-.73,2.8,0,4.05l2.49,4.24c1.34,2.29.13,5.22-2.44,5.89l-4.76,1.23c-1.4.36-2.5,1.46-2.86,2.86l-1.23,4.76c-.67,2.57-3.6,3.78-5.89,2.44l-4.24-2.49c-1.25-.73-2.8-.73-4.05,0l-4.24,2.49c-2.29,1.34-5.22.13-5.89-2.44l-1.23-4.76c-.36-1.4-1.46-2.5-2.86-2.86l-4.76-1.23c-2.57-.67-3.78-3.6-2.44-5.89l2.49-4.24c.73-1.25.73-2.8,0-4.05l-2.49-4.24c-1.34-2.29-.13-5.22,2.44-5.89l4.76-1.23c1.4-.36,2.5-1.46,2.86-2.86l1.23-4.76c.67-2.57,3.6-3.78,5.89-2.44ZM15.58,24.56l5.99,5.99,11.97-11.97" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.12px"></path>
3534													  </g>
3535													</svg>
3536												</div>
3537												Verified Customer
3538											</div>
3539										</div>
3540									</li>
3541							`;
3542							// const adHTML = $('#testimonial-template').html();
3543                            // Insert after the 3rd item (index 2)
3544                            $(categoryId+' .get-products .productGrid .product').eq(1).after(adHTML);
3545                        }
3546						if ($(categoryId+' .get-products .productGrid .product').length >= 5) {
3547                            const adHTML = `
3548									<li class="product testimony space-between">
3549										<div class="testimony-quote heading2">"I ordered tuba, alto saxophone, soprano saxophone, clarinet and trumpet mounts ... I get compliments from all our friends and most importantly, my husband can grab them from the mount and <span class="bold">
3549play anytime he wants.</span>"</div>
3550										<div class="text-box6">
3551											<div class="testimony-name heading4">Olga B.</div>
3552											<div class="testimony-position body-text2 black">
3553												<div class="svg-verified small2 thin">
3554													<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 49.12 49.12">
3555													  <g id="c" data-name="all">
3556														<path d="M18.3,1.12l4.24,2.49c1.25.73,2.8.73,4.05,0l4.24-2.49c2.29-1.34,5.22-.13,5.89,2.44l1.23,4.76c.36,1.4,1.46,2.5,2.86,2.86l4.76,1.23c2.57.67,3.78,3.6,2.44,5.89l-2.49,4.24c-.73,1.25-.73,2.8,0,4.05l2.49,4.24c1.34,2.29.13,5.22-2.44,5.89l-4.76,1.23c-1.4.36-2.5,1.46-2.86,2.86l-1.23,4.76c-.67,2.57-3.6,3.78-5.89,2.44l-4.24-2.49c-1.25-.73-2.8-.73-4.05,0l-4.24,2.49c-2.29,1.34-5.22.13-5.89-2.44l-1.23-4.76c-.36-1.4-1.46-2.5-2.86-2.86l-4.76-1.23c-2.57-.67-3.78-3.6-2.44-5.89l2.49-4.24c.73-1.25.73-2.8,0-4.05l-2.49-4.24c-1.34-2.29-.13-5.22,2.44-5.89l4.76-1.23c1.4-.36,2.5-1.46,2.86-2.86l1.23-4.76c.67-2.57,3.6-3.78,5.89-2.44ZM15.58,24.56l5.99,5.99,11.97-11.97" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.12px"></path>
3557													  </g>
3558													</svg>
3559												</div>
3560												Verified Customer
3561											</div>
3562										</div>
3563									</li>
3564							`;
3565							// const adHTML = $('#testimonial-template').html();
3566                            // Insert after the 3rd item (index 2)
3567                            $(categoryId+' .get-products .productGrid .product').eq(5).after(adHTML);
3568                        }
3569                        
3570                    },500)
3571                } else {
3572                    // console.error('Error fetching category products:', err);
3573                }
3574            });
3575        } else {
3576            $('#product-val').hide();
3577            $('#product-val-default').show();
3578            $('.collection-main .collection-nav .actionBar .SortWrap').show();
3579        }
3580    }
3581    
3582    
3583    /* following script use for load stamped reviews after pagination */
3584    (function() {
3585        var checkInterval;
3586        function runStampedValidation() {
3587            var grid = document.querySelector('.productGrid');
3588            if (!grid) return;
3589    
3590            var badges = grid.querySelectorAll('.stamped-product-reviews-badge');
3591            if (badges.length === 0) return;
3592            var missingRatings = Array.from(badges).filter(function(badge) {
3593                return badge.innerHTML.trim() === "";
3594            });
3595    
3596            if (missingRatings.length > 0) {
3597                if (window.StampedFn && typeof window.StampedFn.loadBadges === 'function') {
3598                    window.StampedFn.loadBadges();
3599                }
3600            } else {
3601                clearInterval(checkInterval);
3602                // console.log('Success: Tamam products ki ratings load ho chuki hain.');
3603            }
3604        }
3605        var observer = new MutationObserver(function(mutations) {
3606            clearInterval(checkInterval);
3607            checkInterval = setInterval(runStampedValidation, 800);
3608        });
3609        observer.observe(document.body, { childList: true, subtree: true });
3610    })();
3611</script>
3611
3612
3613        </div>
3614        <div id="spend-save">
3615    <div class="page-section normal spend-save ss-global">
3616        <div class="section-header4">
3617            <div class="text-box4">
3618                <!--<div class="subheading1">Why Trust Us</div>-->
3619                <div class="heading2">Spend &amp; Save</div>
3620            </div>
3621            <div class="body-text">Earn cash back with each purchase using String Swing’s savings tier system. Follow the chart to see how close you are to the next savings level, or check your progress on the Spend & Save bar in your cart.</div>
3622        </div>
3623        <div class="spend-save-wrapper">
3624            <div class="spend-save-grid">
3625                <div class="content-rows">
3626                    <div class="content-row">
3627                        <div class="body-text2">Spend $500</div>
3628                        <div class="right-side">
3629                            <div class="bar"></div>
3630                            <div class="body-text2">Save $40*</div>
3631                        </div>
3632                    </div>
3633                    <div class="content-row">
3634                        <div class="body-text2">Spend $750</div>
3635                        <div class="right-side">
3636                            <div class="bar"></div>
3637                            <div class="body-text2">Save $75*</div>
3638                        </div>
3639                    </div>
3640                    <div class="content-row">
3641                        <div class="body-text2">Spend $1,000</div>
3642                        <div class="right-side">
3643                            <div class="bar"></div>
3644                            <div class="body-text2">Save $100*</div>
3645                        </div>
3646                    </div>
3647                    <div class="content-row">
3648                        <div class="body-text2">Spend $2,000</div>
3649                        <div class="right-side">
3650                            <div class="bar"></div>
3651                            <div class="body-text2">Save $200*</div>
3652                        </div>
3653                    </div>
3654                </div>
3655            </div>
3656            <div class="body-text2 black">*Only valid on retail priced orders.</div>
3657        </div>
3658    </div>
3659</div>
3660        
3661        
3662
3663
3664
3665
3666        
3667            </div>
3668</div>
3669
3670
3671
3672    <div class="container">
3673         
3674    </div>
3675    <div id="modal" class="modal" data-reveal data-prevent-quick-search-close>
3676    <button class="modal-close"
3677        type="button"
3678        title="Close"
3679        
3680>
3681    <span class="aria-description--hidden">Close</span>
3682    <span aria-hidden="true">&#215;</span>
3683</button>
3684    <div id="modal-content" class="modal-content"></div>
3685    <div class="loadingOverlay"></div>
3686</div>
3687    <div id="alert-modal" class="modal modal--alert modal--small" data-reveal data-prevent-quick-search-close>
3688    <div class="alert-icon error-icon">
3689        <span class="icon-content">
3690            <span class="line line-left"></span>
3691            <span class="line line-right"></span>
3692        </span>
3693    </div>
3694
3695    <div class="alert-icon warning-icon">
3696        <div class="icon-content">!</div>
3697    </div>
3698
3699    <div class="modal-content"></div>
3700
3701    <div class="button-container">
3702        <button type="button" class="confirm button" data-reveal-close>OK</button>
3703        <button type="button" class="cancel button" data-reveal-close>Cancel</button>
3704    </div>
3705</div>
3706</div>
3707        
3708<footer class="footer" role="contentinfo">
3709    <div class="page-section wide ss-global">
3710        <div class="footer-wrapper">
3711            <!-- Footer Top -->
3712            <div class="footer-top">
3713                <div class="text-box2">
3714                    <div class="heading2 black">Sign up for our monthly giveaway!</div>
3715                    <!-- BC Orignal Form: -->
3716                    <!-- Klaviyo Form ID: -->
3717                    
3717<script src='https://static.klaviyo.com/onsite/js/W2Z4PW/klaviyo.js?company_id=W2Z4PW' async ></script>
3717
3718
3719<div class="klaviyo-form-ULR9Lp"></div>
3720
3721
3722                </div>
3723                <div class="scroll-to-top body-text2 black link-wrapper">
3724                    <div class="link">Back To Top</div>
3725                    <div class="svg-up-arrow small2 thin">
3726                    	<!--?xml version="1.0" encoding="UTF-8"?-->
3727                        <svg id="b" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30.707 48.707">
3728                          <g data-name="all">
3729                            <g data-name="right-arrow">
3730                              <line x1="15.354" y1="48.707" x2="15.354" y2=".707" fill="none" stroke="#000" stroke-miterlimit="10"></line>
3731                              <polyline points=".354 15.707 15.354 .707 30.354 15.707" fill="none" stroke="#000" stroke-miterlimit="10"></polyline>
3732                            </g>
3733                          </g>
3734                        </svg>
3735                    </div>
3736                </div>
3737            </div>
3738            <!-- Footer Main -->
3739            <div class="footer-main">
3740                <div class="address text-box7">
3741                    <div class="body-text2">27515 State Hwy 131</div>
3742                    <div class="body-text2">Ontario, WI 54651</div>
3743                    <div class="body-text2">United States</div>
3744                </div>
3745                <div class="contact-info text-box7">
3746                    <a href="tel:1 (888) 455-6628" class="link body-text2">+1 (888) 455-6628</a>
3747                    <a href="mailto:[email protected]" class="link body-text2">[email protected]</a>
3748                    <div class="body-text2">M–F: 8am–5pm CST</div>
3749                </div>
3750                <div class="pages-1 text-box5">
3751                    <div class="body-text2">
3752                        <a href="https://www.stringswing.com/about-us/" title="About Us" class="link body-text2">
3753                            About Us
3754                        </a>
3755                    </div>
3756                        <div class="body-text2">
3757                                <a id="loginForDealerRequest" href="##" data-reveal-id="modalLoginForm" title="Dealer Request Form">Dealer Request Form</a>
3758                        </div>
3759                    <div class="body-text2">
3760                        <a href="https://www.stringswing.com/sales-tax-exemption-form/" title="Tax Exempt Form" class="link body-text2">
3761                            Tax Exempt Form
3762                        </a>
3763                    </div>
3764                    <div class="body-text2">
3765                        <a href="https://www.stringswing.com/nitrocellulose-statement/" title="Nitro. Statement" class="link body-text2">
3766                            Nitro. Statement
3767                        </a>
3768                    </div>
3769                    <div class="body-text2">
3770                            <a id="loginForMemberRequest" class="link body-text2" href="##" data-reveal-id="modalLoginForm" title="Request of Service Member Pricing">Service Member Pricing</a>
3771                    </div>
3772                </div>
3773                <div class="pages-2 text-box5">
3774                    <div class="body-text2">
3775                        <a href="https://www.stringswing.com/shipping-policies/" class="link body-text2">
3776                            Shipping &amp; Returns
3777                        </a>
3778                    </div>
3779                    <div class="body-text2">
3780                        <a href="https://www.stringswing.com/terms-conditions-of-sale/" class="link body-text2">
3781                            Terms &amp; Conditions
3782                        </a>
3783                    </div>
3784                    <div class="body-text2">
3785                        <a href="https://www.stringswing.com/disclaimer/" class="link body-text2">
3786                            Disclaimer
3787                        </a>
3788                    </div>
3789                    <div class="body-text2">
3790                        <a href="https://www.stringswing.com/warranty/" class="link body-text2">
3791                            Warranty
3792                        </a>
3793                    </div>
3794                    <div class="body-text2">
3795                        <a href="https://www.stringswing.com/privacy/" class="link body-text2">
3796                            Privacy Policy
3797                        </a>
3798                    </div>
3799                </div>
3800                <div class="social text-box5">
3801                    <div class="body-text2">
3802                        <a href="https://www.instagram.com/stringswing/" class="link body-text2" target="_blank">Instagram</a>
3803                    </div>
3804                    <div class="body-text2">
3805                        <a href="https://www.facebook.com/StringSwing/" class="link body-text2" target="_blank">Facebook</a>
3806                    </div>
3807                </div>
3808            </div>
3809            <div class="footer-bottom text-box3">
3810                <hr>
3811                <div class="space-between">
3812                    <div class="body-text2 black">
3812Copyright &copy; String Swing 2026</div>
3813                    <div class="body-text2 black">
3814                        <a href="https://www.stringswing.com/privacy/" class="body-text2 black link">
3815                            Privacy Policy
3816                        </a>
3817                    </div>
3818                </div>
3819            </div>
3820        </div>
3821    </div>
3822    
3823    <div data-content-region="ssl_site_seal--global"></div>
3824    
3824<script>
3825	$(document).ready(function () {
3826		const addOnsVideoModal = $("#add-ons-videoModal");
3827		const addOnsVideoPlayer = $("#add-ons-videoPlayer");
3828		const addOnsCloseModal = $("#add-ons-closeModal");
3829	
3830		// Click on the whole add-on box (inside <a>)
3831		$(".video-link .add-on.video-popup").on("click", function (e) {
3832			e.preventDefault();
3833	
3834			// Find the parent <a> tag and get href = video link
3835			const videoURL = $(this).closest("a.video-link").attr("href");
3836	
3837			if (videoURL) {
3838				addOnsVideoPlayer.attr("src", videoURL);
3839				addOnsVideoModal.css("display", "flex");
3840			}
3841		});
3842	
3843		// Close popup
3844		addOnsCloseModal.on("click", function () {
3845			addOnsVideoModal.css("display", "none");
3846			addOnsVideoPlayer.attr("src", "");
3847		});
3848	
3849		// Close when clicking outside modal content
3850		addOnsVideoModal.on("click", function (e) {
3851			if (e.target === this) {
3852				addOnsVideoModal.css("display", "none");
3853				addOnsVideoPlayer.attr("src", "");
3854			}
3855		});
3856	
3857	});
3858	</script>
3858
3859    
3860</footer>
3861
3862<div id="modalLoginForm" class="login-popup modal modal--small ss-global" data-reveal>
3863    <div class="SignInPopupInner">
3864        <div class="popup-header">
3865                <div class="text-box6">
3866                    <div class="modal-header-title body-text black bold">Service Member</div>
3867                    <div class="modal-header-description body-text2">Please sign in or create an account to request service member pricing.</div>
3868                </div>
3869                <div class="svg-x small thin modal-close">
3870					<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 49.12 49.12">
3871                      <g>
3872                        <path d="M.56.56l48,48M48.56.56L.56,48.56" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.12px"></path>
3873                      </g>
3874                    </svg>
3875                </div>
3876		</div>
3877        <div class="line-break"></div>
3878        <div class="SignInPopupForm">
3879            <form action="#" id="headerLoginForm" method="post" onsubmit="ExpressCheckout.Login(); return false;">
3880                <div class="LoadingIndicator" style="display: none"><img src="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/stencil/c5819130-30ff-013f-db21-0604126aaccc/e/21435df0-9971-013f-45bc-4e388f6f202b/img/loading.svg" alt="Loading" /></div>
3881                <div style="display: none" class="ErrorMessage" id="CheckoutLoginError"> </div>
3882                <div class="input-column">
3883                    <div class="form-field">
3884                        <input class="form-input body-text2" name="login_email" id="footer_login_email" type="email" placeholder="Email Address">
3885                        <span style="display:none;" class="form-inlineMessage">You must enter a valid email.</span>
3886                    </div>
3887                    <div class="form-field">
3888                        <input class="form-input body-text2" id="footer_login_pass" type="password" name="login_pass" placeholder="Password">
3889                        <span style="display:none;" class="form-inlineMessage">You must enter a password.</span>
3890                    </div>
3891                    <a class="body-text2 link ul black forgot-password" href="https://www.stringswing.com/login.php?action&#x3D;reset_password" title="Forgot your password">Forgot Password</a>
3892                </div>
3893                <div class="button-row">
3894                	<input id="LoginButton" value="Sign in" class="button-n body-text2" type="submit">
3895                	<a href="https://www.stringswing.com/login.php?action&#x3D;create_account" class="button-n body-text2" title="Create New Account">Sign Up</a>
3896                </div>
3897            </form>
3898            
3899            
3899<script>
3900			var ExpressCheckout = {
3901				Login: function(){
3902					$('#headerLoginForm #CheckoutLoginError').hide();
3903					ExpressCheckout.anonymousCheckout = 0;
3904					ExpressCheckout.createAccount = 0;
3905					
3906					if (ExpressCheckout.validateEmailAddress($('#headerLoginForm #footer_login_email').val()) === false) {
3907						$('#headerLoginForm #footer_login_email')
3908							.parent().closest('.form-field')
3909							.addClass('form-field--error');
3910			
3911						$('#headerLoginForm #footer_login_email')
3912							.siblings('.form-inlineMessage')
3913							.show();
3914			
3915						$('#headerLoginForm #footer_login_email').focus().select();
3916						return false;
3917					} else {
3918						$('#headerLoginForm #footer_login_email')
3919							.parent().closest('.form-field')
3920							.removeClass('form-field--error');
3921			
3922						$('#headerLoginForm #footer_login_email')
3923							.siblings('.form-inlineMessage')
3924							.hide();
3925					}
3926			
3927					if ($('#headerLoginForm #footer_login_pass').val() === '') {
3928						$('#headerLoginForm #footer_login_pass')
3929							.parent().closest('.form-field')
3930							.addClass('form-field--error');
3931			
3932						$('#headerLoginForm #footer_login_pass')
3933							.siblings('.form-inlineMessage')
3934							.show();
3935			
3936						$('#headerLoginForm #footer_login_pass').focus();
3937						return false;
3938					} else {
3939						$('#headerLoginForm #footer_login_pass')
3940							.parent().closest('.form-field')
3941							.removeClass('form-field--error');
3942			
3943						$('#headerLoginForm #footer_login_pass')
3944							.siblings('.form-inlineMessage')
3945							.hide();
3946					}
3947			
3948					ExpressCheckout.ShowLoadingIndicator('#headerLoginForm ');
3949					u = window.location.port
3950						? window.location.protocol + "//" + window.location.hostname + ":" + window.location.port
3951						: window.location.protocol + "//" + window.location.hostname;
3952			
3953					$.ajax({
3954						url: u + "/login.php?action=check_login",
3955						type: 'post',
3956						data: $('#headerLoginForm').serialize(),
3957						success: ExpressCheckout.HandleResponse
3958					});
3959					return false;
3960				},
3961			
3962				HandleResponse: function(response){
3963					ExpressCheckout.HideLoadingIndicators();
3964					ExpressCheckout.HandleResponseStatus(response);
3965				},
3966			
3967				HandleResponseStatus: function(response){
3968					var $errorboxlen = $(response).find('.alertBox--error').length;
3969					if ($errorboxlen > 0) {
3970						var $errorbox = $(response).find('.alertBox--error').html();
3971			
3972						$('#headerLoginForm #footer_login_pass')
3973							.parent().closest('.form-field')
3974							.addClass('form-field--error server-error')
3975							.find('.form-inlineMessage')
3976							.show();
3977			
3978						$('#headerLoginForm #CheckoutLoginError')
3979							.html($errorbox)
3980							.addClass('alertBox alertBox--error')
3981							.show();
3982					} else {
3983						location.reload();
3984					}
3985				},
3986			
3987				ShowLoadingIndicator: function() {
3988					$('body').find('#headerLoginForm .LoadingIndicator').show();
3989				},
3990			
3991				HideLoadingIndicators: function(){
3992					$('#headerLoginForm .LoadingIndicator').hide();
3993				},
3994			
3995				validateEmailAddress: function(email){
3996					if (email.indexOf('@') === -1 || email.indexOf('.') === -1) {
3997						return false;
3998					}
3999					return true;
4000				},
4001			};
4002			
4003			/* =====================
4004			   BLUR HANDLERS (ADDED)
4005			   ===================== */
4006			
4007			$('#headerLoginForm #footer_login_email').on('blur', function () {
4008				if ($(this).val() !== '') {
4009					$(this).closest('.form-field')
4010						.removeClass('form-field--error')
4011						.find('.form-inlineMessage')
4012						.hide();
4013				}
4014			});
4015			
4016			$('#headerLoginForm #footer_login_pass').on('blur', function () {
4017				const $field = $(this);
4018				const $formField = $field.closest('.form-field');
4019			
4020				if ($field.val() !== '' && !$formField.hasClass('server-error')) {
4021					$formField
4022						.removeClass('form-field--error')
4023						.find('.form-inlineMessage')
4024						.hide();
4025				}
4026			});
4027			</script>
4027
4028
4029        </div>
4030    </div>
4031</div>
4032
4033<script>
4034$(document).ready(function(e) {
4035	deleteCookie("popupFor");
4036	$('#loginForDealerRequest').click(function(){
4037		setCookie("popupFor", 'dealer', 1);
4038		$('#modalLoginForm .popup-header .modal-header-title').text('Dealer Request Form');
4039		$('#modalLoginForm .popup-header .modal-header-description').text('Please sign in or create an account to request industry pricing');
4040		$('body').addClass('dealer-footer-form');
4041		$('body').removeClass('member-footer-form');
4042	});
4043	$('#loginForMemberRequest').click(function(){
4044		setCookie("popupFor", 'member', 1);
4045		$('#modalLoginForm .popup-header .modal-header-title').text('Service Member');
4046		$('#modalLoginForm .popup-header .modal-header-description').text('Please sign in or create an account to request service member pricing.');
4047		$('body').addClass('member-footer-form');
4048		$('body').removeClass('dealer-footer-form');
4049	});
4050});
4051
4052$(document).on('click', '#modalLoginForm .modal-close', function(){
4053    deleteCookie("popupFor");
4054	$('body').removeClass('dealer-footer-form');
4055	$('body').removeClass('member-footer-form');
4056});
4057$(document).on('click', '#modalDealerRequest .modal-close', function(){
4058    deleteCookie("popupFor");
4059	$('body').removeClass('dealer-footer-form');
4060	$('body').removeClass('member-footer-form');
4061});
4062$(document).on('click', '#modalServiceMemberRequest .modal-close', function(){
4063    deleteCookie("popupFor");
4064	$('body').removeClass('dealer-footer-form');
4065	$('body').removeClass('member-footer-form');
4066});
4067$(document).on('click', '.modal-background', function(){
4068    deleteCookie("popupFor");
4069	$('body').removeClass('footer-modal-bg');
4070	$('body').removeClass('dealer-footer-form');
4071	$('body').removeClass('member-footer-form');
4072});
4073
4074function setCookie(cname, cvalue, exdays) {
4075	var d = new Date();
4076	d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
4077	var expires = "expires="+d.toUTCString();
4078	document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
4079}
4080function getCookie(cname) {
4081	var name = cname + "=";
4082	var ca = document.cookie.split(';');
4083	for(var i = 0; i < ca.length; i++) {
4084		var c = ca[i];
4085		while (c.charAt(0) == ' ') {
4086			c = c.substring(1);
4087		}
4088		if (c.indexOf(name) == 0) {
4089			return c.substring(name.length, c.length);
4090		}
4091	}
4092	return "";
4093}
4094function deleteCookie(cname) {
4095    cvalue = "No value";
4096    document.cookie = cname + "=" +cvalue+ "; expires=Thu, 01 Jan 1970 00:00:00 GMT";
4097}
4098</script>
4098
4099
4100<div class="add-ons-video-link-modal" id="add-ons-videoModal" style="display: none;">
4101    <div class="add-ons-modal-content">
4102        <div class="add-ons-close-button" id="add-ons-closeModal">
4103            <svg xmlns="http://www.w3.org/2000/svg" width="13.435" height="13.435" viewBox="0 0 13.435 13.435">
4104                <g id="Icon_feather-arrow-down" data-name="Icon feather-arrow-down" transform="translate(-9.782 23.218) rotate(-90)">
4105                    <path id="Path_153" data-name="Path 153" d="M18,7.5v18" transform="translate(-7.895 17.561) rotate(-45)" fill="none" stroke="#191919" stroke-linejoin="round" stroke-width="1"></path>
4106                    <path id="Path_154" data-name="Path 154" d="M25.5,18H7.5" transform="translate(-7.895 15.439) rotate(-45)" fill="none" stroke="#191919" stroke-linejoin="bevel" stroke-width="1"></path>
4107                </g>
4108            </svg>
4109        </div>
4110        <iframe id="add-ons-videoPlayer" src="" frameborder="0" allow="autoplay; fullscreen" allowfullscreen="" data-gtm-yt-inspected-11="true"></iframe>
4111    </div>
4112</div>
4113
4114<!-- following model for cart preview content (Cart Popup) -->
4115<div id="previewModal" class="modal modal--large ss-global" data-reveal>
4116    <button class="modal-close"
4117        type="button"
4118        title="Close"
4119        
4120>
4121    <span class="aria-description--hidden">Close</span>
4122    <span aria-hidden="true">&#215;</span>
4123</button>
4124    <div class="modal-content"></div>
4125    <div class="loadingOverlay"></div>
4126</div>
4127
4128<!-- other scripting put at the script manager by name: StoreCredit - Display Script by WEP -->
4129
4130
4131
4132
4133
4134
4135
4136
4137        
4137<script nonce="">window.__webpack_public_path__ = "https://cdn11.bigcommerce.com/s-5r2w8tg1gb/stencil/c5819130-30ff-013f-db21-0604126aaccc/e/21435df0-9971-013f-45bc-4e388f6f202b/dist/";</script>
4137
4138        
4138<script nonce="">
4139            function onThemeBundleMain() {
4140                window.stencilBootstrap("category", "{\"categoryProductsPerPage\":11,\"zoomSize\":\"1280x1280\",\"productSize\":\"500x659\",\"genericError\":\"Oops! Something went wrong.\",\"urls\":{\"home\":\"https://www.stringswing.com/\",\"brands\":\"https://www.stringswing.com/brands/\",\"search\":\"https://www.stringswing.com/search.php\",\"compare\":\"https://www.stringswing.com/compare\",\"sitemap\":\"https://www.stringswing.com/sitemap.php\",\"contact_us_submit\":\"https://www.stringswing.com/pages.php?action=sendContactForm\",\"subscribe\":{\"action\":\"https://www.stringswing.com/subscribe.php\"},\"checkout\":{\"single_address\":\"https://www.stringswing.com/checkout\",\"multiple_address\":\"https://www.stringswing.com/checkout.php?action=multiple\"},\"account\":{\"orders\":{\"all\":\"https://www.stringswing.com/account.php?action=order_status\",\"completed\":\"https://www.stringswing.com/account.php?action=view_orders\",\"save_new_return\":\"https://www.stringswing.com/account.php?action=save_new_return\"},\"returns\":\"https://www.stringswing.com/account.php?action=view_returns\",\"addresses\":\"https://www.stringswing.com/account.php?action=address_book\",\"inbox\":\"https://www.stringswing.com/account.php?action=inbox\",\"send_message\":\"https://www.stringswing.com/account.php?action=send_message\",\"add_address\":\"https://www.stringswing.com/account.php?action=add_shipping_address\",\"update_action\":\"https://www.stringswing.com/account.php?action=update_account\",\"details\":\"https://www.stringswing.com/account.php?action=account_details\",\"recent_items\":\"https://www.stringswing.com/account.php?action=recent_items\",\"index\":\"https://www.stringswing.com/account.php\",\"wishlists\":{\"all\":\"https://www.stringswing.com/wishlist.php\",\"add\":\"https://www.stringswing.com/wishlist.php?action=addwishlist\",\"edit\":\"https://www.stringswing.com/wishlist.php?action=editwishlist\",\"delete\":\"https://www.stringswing.com/wishlist.php?action=deletewishlist\"}},\"auth\":{\"login\":\"https://www.stringswing.com/login.php\",\"check_login\":\"https://www.stringswing.com/login.php?action=check_login\",\"create_account\":\"https://www.stringswing.com/login.php?action=create_account\",\"save_new_account\":\"https://www.stringswing.com/login.php?action=save_new_account\",\"forgot_password\":\"https://www.stringswing.com/login.php?action=reset_password\",\"send_password_email\":\"https://www.stringswing.com/login.php?action=send_password_email\",\"save_new_password\":\"https://www.stringswing.com/login.php?action=save_new_password\",\"logout\":\"https://www.stringswing.com/login.php?action=logout\"},\"cart\":\"https://www.stringswing.com/cart.php\",\"product\":{\"post_review\":\"https://www.stringswing.com/postreview.php\"},\"gift_certificate\":{\"purchase\":\"https://www.stringswing.com/giftcertificates.php\",\"redeem\":\"https://www.stringswing.com/giftcertificates.php?action=redeem\",\"balance\":\"https://www.stringswing.com/giftcertificates.php?action=balance\"},\"rss\":{\"products\":[]}},\"secureBaseUrl\":\"https://www.stringswing.com\",\"cartId\":null,\"template\":\"pages/category\",\"validationDictionaryJSON\":\"{\\\"locale\\\":\\\"en\\\",\\\"locales\\\":{\\\"validation_messages.valid_email\\\":\\\"en\\\",\\\"validation_messages.password\\\":\\\"en\\\",\\\"validation_messages.password_match\\\":\\\"en\\\",\\\"validation_messages.invalid_password\\\":\\\"en\\\",\\\"validation_messages.field_not_blank\\\":\\\"en\\\",\\\"validation_messages.certificate_amount\\\":\\\"en\\\",\\\"validation_messages.certificate_amount_range\\\":\\\"en\\\",\\\"validation_messages.price_min_evaluation\\\":\\\"en\\\",\\\"validation_messages.price_max_evaluation\\\":\\\"en\\\",\\\"validation_messages.price_min_not_entered\\\":\\\"en\\\",\\\"validation_messages.price_max_not_entered\\\":\\\"en\\\",\\\"validation_messages.price_invalid_value\\\":\\\"en\\\",\\\"validation_messages.invalid_gift_certificate\\\":\\\"en\\\"}
4140,\\\"translations\\\":{\\\"validation_messages.valid_email\\\":\\\"You must enter a valid email.\\\",\\\"validation_messages.password\\\":\\\"You must enter a password.\\\",\\\"validation_messages.password_match\\\":\\\"Your passwords do not match.\\\",\\\"validation_messages.invalid_password\\\":\\\"Passwords must be at least 7 characters and contain both alphabetic and numeric characters.\\\",\\\"validation_messages.field_not_blank\\\":\\\" field cannot be blank.\\\",\\\"validation_messages.certificate_amount\\\":\\\"You must enter a gift certificate amount.\\\",\\\"validation_messages.certificate_amount_range\\\":\\\"You must enter a certificate amount between [MIN] and [MAX]\\\",\\\"validation_messages.price_min_evaluation\\\":\\\"Min. price must be less than max. price.\\\",\\\"validation_messages.price_max_evaluation\\\":\\\"Min. price must be less than max. price.\\\",\\\"validation_messages.price_min_not_entered\\\":\\\"Min. price is required.\\\",\\\"validation_messages.price_max_not_entered\\\":\\\"Max. price is required.\\\",\\\"validation_messages.price_invalid_value\\\":\\\"Input must be greater than 0.\\\",\\\"validation_messages.invalid_gift_certificate\\\":\\\"Please enter your valid certificate code.\\\"}}\",\"validationFallbackDictionaryJSON\":\"{\\\"locale\\\":\\\"en\\\",\\\"locales\\\":{\\\"validation_fallback_messages.valid_email\\\":\\\"en\\\",\\\"validation_fallback_messages.password\\\":\\\"en\\\",\\\"validation_fallback_messages.password_match\\\":\\\"en\\\",\\\"validation_fallback_messages.invalid_password\\\":\\\"en\\\",\\\"validation_fallback_messages.field_not_blank\\\":\\\"en\\\",\\\"validation_fallback_messages.certificate_amount\\\":\\\"en\\\",\\\"validation_fallback_messages.certificate_amount_range\\\":\\\"en\\\",\\\"validation_fallback_messages.price_min_evaluation\\\":\\\"en\\\",\\\"validation_fallback_messages.price_max_evaluation\\\":\\\"en\\\",\\\"validation_fallback_messages.price_min_not_entered\\\":\\\"en\\\",\\\"validation_fallback_messages.price_max_not_entered\\\":\\\"en\\\",\\\"validation_fallback_messages.price_invalid_value\\\":\\\"en\\\",\\\"validation_fallback_messages.invalid_gift_certificate\\\":\\\"en\\\"},\\\"translations\\\":{\\\"validation_fallback_messages.valid_email\\\":\\\"You must enter a valid email.\\\",\\\"validation_fallback_messages.password\\\":\\\"You must enter a password.\\\",\\\"validation_fallback_messages.password_match\\\":\\\"Your passwords do not match.\\\",\\\"validation_fallback_messages.invalid_password\\\":\\\"Passwords must be at least 7 characters and contain both alphabetic and numeric characters.\\\",\\\"validation_fallback_messages.field_not_blank\\\":\\\" field cannot be blank.\\\",\\\"validation_fallback_messages.certificate_amount\\\":\\\"You must enter a gift certificate amount.\\\",\\\"validation_fallback_messages.certificate_amount_range\\\":\\\"You must enter a certificate amount between [MIN] and [MAX]\\\",\\\"validation_fallback_messages.price_min_evaluation\\\":\\\"Min. price must be less than max. price.\\\",\\\"validation_fallback_messages.price_max_evaluation\\\":\\\"Min. price must be less than max. price.\\\",\\\"validation_fallback_messages.price_min_not_entered\\\":\\\"Min. price is required.\\\",\\\"validation_fallback_messages.price_max_not_entered\\\":\\\"Max. price is required.\\\",\\\"validation_fallback_messages.price_invalid_value\\\":\\\"Input must be greater than 0.\\\",\\\"validation_fallback_messages.invalid_gift_certificate\\\":\\\"Please enter your valid certificate code.\\\"}}\",\"validationDefaultDictionaryJSON\":\"{\\\"locale\\\":\\\"en\\\",\\\"locales\\\":{\\\"validation_default_messages.valid_email\\\":\\\"en\\\",\\\"validation_default_messages.password\\\":\\\"en\\\",\\\"validation_default_messages.password_match\\\":\\\"en\\\",\\\"validation_default_messages.invalid_password\\\":\\\"en\\\",\\\"validation_default_messages.field_not_blank\\\":\\\"en\\\",\\\"validation_default_messages.certificate_amount\\\":\\\"en\\\",\\\"validation_default_messages.certificate_amount_range\\\":\\\"en\\\",\\\"validation_default_messages.price_min_evaluation\\\":\\\"en\\\",\\\"validation_default_messages.price_max_evaluation\\\":\\\"en\\\",\\\"validation_default_messages.price_min_not_entered\\\":\\\"en\\\",\\\"validation_default_messages.price_max_n
4140ot_entered\\\":\\\"en\\\",\\\"validation_default_messages.price_invalid_value\\\":\\\"en\\\",\\\"validation_default_messages.invalid_gift_certificate\\\":\\\"en\\\"},\\\"translations\\\":{\\\"validation_default_messages.valid_email\\\":\\\"You must enter a valid email.\\\",\\\"validation_default_messages.password\\\":\\\"You must enter a password.\\\",\\\"validation_default_messages.password_match\\\":\\\"Your passwords do not match.\\\",\\\"validation_default_messages.invalid_password\\\":\\\"Passwords must be at least 7 characters and contain both alphabetic and numeric characters.\\\",\\\"validation_default_messages.field_not_blank\\\":\\\"The field cannot be blank.\\\",\\\"validation_default_messages.certificate_amount\\\":\\\"You must enter a gift certificate amount.\\\",\\\"validation_default_messages.certificate_amount_range\\\":\\\"You must enter a certificate amount between [MIN] and [MAX]\\\",\\\"validation_default_messages.price_min_evaluation\\\":\\\"Min. price must be less than max. price.\\\",\\\"validation_default_messages.price_max_evaluation\\\":\\\"Min. price must be less than max. price.\\\",\\\"validation_default_messages.price_min_not_entered\\\":\\\"Min. price is required.\\\",\\\"validation_default_messages.price_max_not_entered\\\":\\\"Max. price is required.\\\",\\\"validation_default_messages.price_invalid_value\\\":\\\"Input must be greater than 0.\\\",\\\"validation_default_messages.invalid_gift_certificate\\\":\\\"Please enter your valid certificate code.\\\"}}\",\"carouselArrowAndDotAriaLabel\":\"Go to slide [SLIDE_NUMBER] of [SLIDES_QUANTITY]\",\"carouselActiveDotAriaLabel\":\"active\",\"carouselContentAnnounceMessage\":\"You are currently on slide [SLIDE_NUMBER] of [SLIDES_QUANTITY]\",\"giftWrappingRemoveMessage\":\"Are you sure you want to remove the gift wrapping from this item?\",\"noCompareMessage\":\"You must select at least two products to compare\"}").load();
4141
4142                function browserSupportsFormData() {
4143                    return typeof FormData !== 'undefined' 
4144                        && !!FormData.prototype.keys;
4145                }
4146                function loadFormDataPolyfillScript(src) {
4147                    var formDataPolyfillScript = document.createElement('script');
4148                    formDataPolyfillScript.src = src;
4149                    formDataPolyfillScript.onerror = function () {
4150                        console.error('Failed to load formData polyfill script ' + src);
4151                    };
4152                    document.body.appendChild(formDataPolyfillScript);
4153                }
4154
4155                if (!browserSupportsFormData()) {
4156                    loadFormDataPolyfillScript('https://cdn11.bigcommerce.com/s-5r2w8tg1gb/stencil/c5819130-30ff-013f-db21-0604126aaccc/e/21435df0-9971-013f-45bc-4e388f6f202b/dist/theme-bundle.polyfill_form_data.js');
4157                }
4158            }
4159        </script>
4159
4160        
4160<script id="theme-bundle-main" nonce="" async defer src="https://cdn11.bigcommerce.com/s-5r2w8tg1gb/stencil/c5819130-30ff-013f-db21-0604126aaccc/e/21435df0-9971-013f-45bc-4e388f6f202b/dist/theme-bundle.main.js"></script>
4160
4161        
4161<script nonce="">
4162            const scriptElement = document.getElementById('theme-bundle-main');
4163
4164            if (scriptElement) {
4165                addEventListener('load', onThemeBundleMain);
4166            } else {
4167                console.error('Could not find script element with id "theme-bundle-main"');
4168            }
4169        </script>
4169
4170        
4170<script type="text/javascript" src="https://cdn11.bigcommerce.com/shared/js/csrf-protection-header-5eeddd5de78d98d146ef4fd71b2aedce4161903e.js"></script>
vendor: 1 bytes, line 4170
4170
4171<script src='https://widget.privy.com/assets/widget.js' defer></script>
4171<script src='https://na.shgcdn3.com/collector.js' async ></script>
4171<script src='https://static.klaviyo.com/onsite/js/W2Z4PW/klaviyo.js?company_id=W2Z4PW' async ></script>
4171<script type='text/javascript'>
4172</script>
4172
4173
4174<script async id='stamped-script-widget' data-store-hash='5r2w8tg1gb' src='https://cdn1.stamped.io/files/bigcommerce.min.js'></script>
4174<!-- Reddit Pixel -->
4175<script>
4176!function(w,d){if(!w.rdt){var p=w.rdt=function(){p.sendEvent?p.sendEvent.apply(p,arguments):p.callQueue.push(arguments)};p.callQueue=[];var t=d.createElement("script");t.src="https://www.redditstatic.com/ads/pixel.js",t.async=!0;var s=d.getElementsByTagName("script")[0];s.parentNode.insertBefore(t,s)}}(window,document);rdt('init','t2_5uu5nizt');rdt('track', 'PageVisit');rdt('track', 'ViewContent');rdt('track', 'AddToCart');rdt('track', 'Purchase');
4177</script>
4177
4178<!-- DO NOT MODIFY -->
4179<!-- End Reddit Pixel -->
4179<script type="text/javascript">
4180</script>
4180<script>
4181var css = `.z-intl .GiftCard,
4182		   .z-intl .cart-totals li:nth-child(1),
4183		   .z-intl .cart-totals li:nth-child(2),
4184		   .z-intl .cart-totals li:nth-child(3),
4185		   .z-intl .cart-totals li:nth-child(4),
4186		   .z-intl .cart-additionalCheckoutButtons, 
4187		   .z-intl .previewCartCheckout-additionalCheckoutButtons { display: none; }`;
4188    //use string templates for cleaner css code - ES6 String templates
4189 head = document.head || document.getElementsByTagName('head')[0],
4190 style = document.createElement('style');
4191 style.type = 'text/css';
4192 if (style.styleSheet){
4193     style.styleSheet.cssText = css;
4194 } else {
4195     style.appendChild(document.createTextNode(css));
4196 }
4197 head.appendChild(style);
4198 </script>
4198<script>
4199    var CallbackRegistry = {};
4200
4201var urlParam=function(e,n){n||(n=window.location.href),e=e.replace(/[\[\]]/g,"\\$&");var r=new RegExp("[?&]"+e+"(=([^&#]*)|&|#|$)").exec(n);return r?r[2]?decodeURIComponent(r[2].replace(/\+/g," ")):"":null};
4202
4203function changeCurrency(id){
4204    try {
4205        var currencyId = localStorage.getItem('currencyId'); //getCookie('currencyId');
4206        if(currencyId && currencyId == id){ return; }
4207
4208        var xhr = new XMLHttpRequest();
4209        var proto = window.location.toString().indexOf('https') == -1 ? 'http' : 'https',
4210            url = proto + "://" + window.location.hostname + "?setCurrencyId=" + id;
4211
4212        xhr.open('POST', url);
4213        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
4214        xhr.onload = function () {
4215            if (xhr.status === 200) {
4216                try {
4217                    localStorage.setItem('currencyId', id); // setCookie('currencyId', id, 1);
4218                    window.location.reload(true);
4219                } catch (e) {
4220                    //console.log(e);
4221                }
4222            }
4223        };
4224        xhr.send();
4225    } catch (e) {
4226        //console.log(e);
4227    }
4228}
4229
4230function setCookie(cname, cvalue, exdays) {
4231    var d = new Date();
4232    d.setTime(d.getTime() + (exdays*24*60*60*1000));
4233    var expires = "expires="+ d.toUTCString();
4234    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
4235}
4236
4237function getCookie(cname) {
4238    var name = cname + "=";
4239    var decodedCookie = decodeURIComponent(document.cookie);
4240    var ca = decodedCookie.split(';');
4241    for(var i = 0; i <ca.length; i++) {
4242        var c = ca[i];
4243        while (c.charAt(0) == ' ') {
4244            c = c.substring(1);
4245        }
4246        if (c.indexOf(name) == 0) {
4247            return c.substring(name.length, c.length);
4248        }
4249    }
4250    return "";
4251}
4252
4253function scriptRequest(url, onSuccess, onError) {
4254    var scriptOk = false;
4255    // generating JSONP function name
4256    var callbackName = 'cb' + String(Math.random()).slice(-6);
4257    // add name in url
4258    url += ~url.indexOf('?') ? '&' : '?';
4259    url += 'callback=CallbackRegistry.' + callbackName;
4260    CallbackRegistry[callbackName] = function (data) {
4261        scriptOk = true;
4262        delete CallbackRegistry[callbackName];
4263        onSuccess(data);
4264    };
4265    function checkCallback() {
4266        if (scriptOk) return;
4267        delete CallbackRegistry[callbackName];
4268        onError(url);
4269    }
4270    var script = document.createElement('script');
4271    // for IE
4272    script.onreadystatechange = function () {
4273        if (this.readyState == 'complete' || this.readyState == 'loaded') {
4274            this.onreadystatechange = null;
4275            setTimeout(checkCallback, 0);
4276        }
4277    }
4278
4279    script.onload = script.onerror = checkCallback;
4280    script.src = url;
4281    document.head.appendChild(script);
4282}
4283
4284function afterSuccess(data) {
4285    changeCurrency(data);
4286}
4287
4288function afterError(data) {
4289    changeCurrency('1');
4290}
4291
4292
4293if (getCookie('currencyId') === '') {
4294    setCookie('currencyId', localStorage.getItem('currencyId'), 1);
4295}
4296
4297document.addEventListener("z-country-change", function(e){
4298    var currencyObj = JSON.stringify(e.detail.data.currency);
4299
4300    setCookie('currencyCode', e.detail.data.currency.currency, 1);
4301    if(window.location.href.indexOf("/checkout") == -1) {
4302        scriptRequest("https://bigcommerce-hello-prod.herokuapp.com/bigcommerce/getCurrencyId?sh=5r2w8tg1gb&currencyObj=" + currencyObj, afterSuccess, afterError);
4303    }
4304});
4305</script>
4305<script>function waitForZonos(callback) {
4306    var interval = setInterval(function() {
4307      if (typeof zonos !== 'undefined') {
4308        clearInterval(interval);
4309        callback();
4310      }
4311    }, 100); // check every 100ms
4312  }
4313
4314  waitForZonos(
4315    (function () {
4316        var urlParam=function(e,n){n||(n=window.location.href),e=e.replace(/[\[\]]/g,"\\$&");var r=new RegExp("[?&]"+e+"(=([^&#]*)|&|#|$)").exec(n);return r?r[2]?decodeURIComponent(r[2].replace(/\+/g," ")):"":null};
4317
4318        var css = ".z-intl .paypal-button { display: none; }, .z-intl .PayPalExpressCheckout { display: none; }, .z-intl .PayPalExpressCreditCheckout { display: none; }",
4319            head = document.head || document.getElementsByTagName('head')[0],
4320            style = document.createElement('style');
4321
4322            style.type = 'text/css';
4323            if (style.styleSheet){
4324                style.styleSheet.cssText = css;
4325            } else {
4326                style.appendChild(document.createTextNode(css));
4327            }
4328            head.appendChild(style);
4329
4330        //Very handy for ajax created buttons. Does not need JQuery to run. see https://github.com/uzairfarooq/arrive for more info
4331        var Arrive=function(e,t,n){"use strict";function r(e,t,n){l.addMethod(t,n,e.unbindEvent),l.addMethod(t,n,e.unbindEventWithSelectorOrCallback),l.addMethod(t,n,e.unbindEventWithSelectorAndCallback)}function i(e){e.arrive=f.bindEvent,r(f,e,"unbindArrive"),e.leave=d.bindEvent,r(d,e,"unbindLeave")}if(e.MutationObserver&&"undefined"!=typeof HTMLElement){var o=0,l=function(){var t=HTMLElement.prototype.matches||HTMLElement.prototype.webkitMatchesSelector||HTMLElement.prototype.mozMatchesSelector||HTMLElement.prototype.msMatchesSelector;return{matchesSelector:function(e,n){return e instanceof HTMLElement&&t.call(e,n)},addMethod:function(e,t,r){var i=e[t];e[t]=function(){return r.length==arguments.length?r.apply(this,arguments):"function"==typeof i?i.apply(this,arguments):n}},callCallbacks:function(e,t){t&&t.options.onceOnly&&1==t.firedElems.length&&(e=[e[0]]);for(var n,r=0;n=e[r];r++)n&&n.callback&&n.callback.call(n.elem,n.elem);t&&t.options.onceOnly&&1==t.firedElems.length&&t.me.unbindEventWithSelectorAndCallback.call(t.target,t.selector,t.callback)},checkChildNodesRecursively:function(e,t,n,r){for(var i,o=0;i=e[o];o++)n(i,t,r)&&r.push({callback:t.callback,elem:i}),i.childNodes.length>0&&l.checkChildNodesRecursively(i.childNodes,t,n,r)},mergeArrays:function(e,t){var n,r={};for(n in e)e.hasOwnProperty(n)&&(r[n]=e[n]);for(n in t)t.hasOwnProperty(n)&&(r[n]=t[n]);return r},toElementsArray:function(t){return n===t||"number"==typeof t.length&&t!==e||(t=[t]),t}}}(),c=function(){var e=function(){this._eventsBucket=[],this._beforeAdding=null,this._beforeRemoving=null};return e.prototype.addEvent=function(e,t,n,r){var i={target:e,selector:t,options:n,callback:r,firedElems:[]};return this._beforeAdding&&this._beforeAdding(i),this._eventsBucket.push(i),i},e.prototype.removeEvent=function(e){for(var t,n=this._eventsBucket.length-1;t=this._eventsBucket[n];n--)if(e(t)){this._beforeRemoving&&this._beforeRemoving(t);var r=this._eventsBucket.splice(n,1);r&&r.length&&(r[0].callback=null)}},e.prototype.beforeAdding=function(e){this._beforeAdding=e},e.prototype.beforeRemoving=function(e){this._beforeRemoving=e},e}(),a=function(t,r){var i=new c,o=this,a={fireOnAttributesModification:!1};return i.beforeAdding(function(n){var i,l=n.target;(l===e.document||l===e)&&(l=document.getElementsByTagName("html")[0]),i=new MutationObserver(function(e){r.call(this,e,n)});var c=t(n.options);i.observe(l,c),n.observer=i,n.me=o}),i.beforeRemoving(function(e){e.observer.disconnect()}),this.bindEvent=function(e,t,n){t=l.mergeArrays(a,t);for(var r=l.toElementsArray(this),o=0;o<r.length;o++)i.addEvent(r[o],e,t,n)},this.unbindEvent=function(){var e=l.toElementsArray(this);i.removeEvent(function(t){for(var r=0;r<e.length;r++)if(this===n||t.target===e[r])return!0;return!1})},this.unbindEventWithSelectorOrCallback=function(e){var t,r=l.toElementsArray(this),o=e;t="function"==typeof e?function(e){for(var t=0;t<r.length;t++)if((this===n||e.target===r[t])&&e.callback===o)return!0;return!1}:function(t){for(var i=0;i<r.length;i++)if((this===n||t.target===r[i])&&t.selector===e)return!0;return!1},i.removeEvent(t)},this.unbindEventWithSelectorAndCallback=function(e,t){var r=l.toElementsArray(this);i.removeEvent(function(i){for(var o=0;o<r.length;o++)if((this===n||i.target===r[o])&&i.selector===e&&i.callback===t)return!0;return!1})},this},s=function(){function e(e){var t={attributes:!1,childList:!0,subtree:!0};return e.fireOnAttributesModification&&(t.attributes=!0),t}function t(e,t){e.forEach(function(e){var n=e.addedNodes,i=e.target,o=[];null!==n&&n.length>0?l.checkChildNodesRecursively(n,t,r,o):"attributes"===e.type&&r(i,t,o)&&o.push({callback:t.callback,elem:i}),l.callCallbacks(o,t)})}function r(e,t){return l.matchesSelector(e,t.selector)&&(e._id===n&&(e._id=o++),-1==t.firedElems.indexOf(e._id))?(t.firedElems.push(e._id),!0):!1}var i={fireOnAttributesModification:!1,onceOnly:!1,existing:!1};f=new a(e,t);var c=f.bindEvent;return f.bindEvent=function(e,t,r){n===r?(r=t,t=i):t=l.mergeArrays(i,t);var o=l.toElementsArray(this);if(t.existing){for(var a=[],s=0;s<o.length;s++)for(var u=o[s].querySelectorAll(e),f=0;f<u.length;f++)a.push({callback:r,elem:u[f]});if(t.onceOnly&&a.length)return r.call(a[0].elem,a[0].elem);setTimeout(l.callCallbacks,1,a)}c.call(this,e,t,r)},f},u=function(){function e(){var e={childList:!0,subtree:!0};return e}function t(e,t){e.forEach(function(e){var n=e.removedNodes,i=[];null!==n&&n.length>0&&l.checkChildNodesRecursively(n,t,r,i),l.callCallbacks(i,t)})}function r(e,t){return l.matchesSelector(e,t.selector)}var i={};d=new a(e,t);var o=d.bindEvent;return d.bindEvent=function(e,t,r){n===r?(r=t,t=i):t=l.mergeArrays(i,t),o.call(this,e,t,r)},d},f=new s,d=new u;t&&i(t.fn),i(HTMLElement.prototype),i(NodeList.prototype),i(HTMLCollection.prototype),i(HTMLDocument.prototype),i(Window.prototype);var h={};return r(f,h,"unbindAllArrive"),r(d,h,"unbindAllLeave"),h}}(window,"undefined"==typeof jQuery?null:jQuery,void 0);
4332
4333        var Zonos = {
4334            api: "https://bigcommerce-v3.zonos.com/bigcommerceV3/checkout",
4335            cid: '',
4336            clientId: "",
4337            cartData: {
4338                domesticShippingCharge: "",
4339                misc1: "",
4340                misc2: "",
4341                misc3: "",
4342                misc4: "",
4343                misc5: "",
4344                misc6: "",
4345                shippingAmountOverride: "",
4346                vendorPassedCurrencyCode: "USD",
4347                customFields: ""
4348            },
4349            checkout: function() {
4350                function n(n, i, t, e) { if (o) return o[n]; for (i = document.cookie.split("; "), o = {}, e = i.length - 1; e >= 0; e--) t = i[e].split("="), o[t[0]] = t[1]; return o[n] }
4351                var o;
4352                var f = document.createElement("form");
4353                var d = { cartId: Zonos.cid, cartData: JSON.stringify(Zonos.cartData), country: n("zCountry"), sh: '5r2w8tg1gb', site: window.location.origin ,clientId: Zonos.clientId, returnUrl: "true"};
4354                f.setAttribute('method',"post");
4355                f.setAttribute('action',Zonos.api);
4356
4357                for (var i in d) {
4358                    var c = document.createElement("input");
4359                    c.setAttribute('type',"hidden");
4360                    c.setAttribute('name', i);
4361                    c.setAttribute('value', d[i]);
4362
4363                    f.appendChild(c);
4364                }
4365                document.body.appendChild(f);
4366                f.submit();
4367            }
4368        };
4369
4370        window.zonosIsLoading = false
4371        function zonosCheckout(e) {
4372            if (window.zonosIsLoading) return
4373            window.zonosIsLoading = true
4374            
4375            e = (e === undefined) ? null : e;
4376            let testMode = false;
4377
4378            if (!zonos.isDomestic() && (!testMode || urlParam('zonos'))) {
4379                if(e){
4380                    e.preventDefault();
4381                }
4382                document.body.style.cursor='wait';
4383
4384                try {
4385                    var xhr = new XMLHttpRequest();
4386                    var i = 0;
4387                    xhr.open('GET', '/api/storefront/carts');
4388                    xhr.setRequestHeader('Content-Type', 'application/json');
4389                    xhr.onload = function () {
4390                        if (xhr.status === 200) {
4391                            try {
4392                                var cid = JSON.parse(xhr.responseText);
4393                                Zonos.cid = cid[0].id;
4394                                Zonos.checkout();
4395                            } catch (e) {
4396                                alert("No items in cart found. Please add an item to cart before checkout.");
4397                            }
4398                        }
4399                    };
4400                    xhr.send();
4401                    xhr.onreadystatechange = function() {
4402                        if(xhr.status === 0 || xhr.status === 400){//catch for cross domain issue with test sites on bigcommerce
4403                            setTimeout(function(){window.location.href = "/cart.php"}, 20000); //adding a wait time for Firefox sending multiple requests at once
4404                        }
4405                    };
4406                } catch (e) {
4407                    alert("No items in cart found. Please add an item to cart before checkout.");
4408                }
4409            }
4410            isLoading = false
4411        };
4412
4413        function getButtons() {
4414            let selectors = {
4415                '.previewCartCheckout .button--primary': 'checkout',
4416                '.cart-actions .button--primary': 'Check out',
4417                '.previewCartAction-checkout': 'Check out now',
4418                '.ProceedToCheckout .btn': 'Proceed To Checkout',
4419                '.CheckoutLink': 'Checkout',
4420                '.button--primary': 'Checkout',
4421                '.button-primary': 'Checkout',
4422                '.button': 'Check out',
4423                '.btn': 'Proceed To Checkout',
4424                '.CheckoutButton': 'Proceed To Checkout'
4425            };
4426
4427            for (let key in selectors) {
4428                let button = contains(key,selectors[key]);
4429                for (i = 0; i < button.length; i++) {
4430                    button[i].addEventListener("click", function(e) { zonosCheckout(e); }, true);
4431                }
4432            }
4433        };
4434
4435        function changeGetButtons(newSelectors) {
4436            getButtons = function() {
4437                let selectors = newSelectors;
4438
4439                for (let key in selectors) {
4440                    let button = contains(key,selectors[key]);
4441                    for (i = 0; i < button.length; i++) {
4442                        button[i].addEventListener("click", function(e) { zonosCheckout(e); }, true);
4443                    }
4444                }
4445            }
4446        }
4447
4448        function contains(selector, text) {
4449            var elements = document.querySelectorAll(selector);
4450            return [].filter.call(elements, function(element){
4451                return RegExp(text, 'i').test(element.textContent);
4452            });
4453        };
4454
4455        try {
4456            document.arrive(".previewCartAction-checkout", function() {
4457                getButtons();
4458            });
4459            document.arrive(".previewCartCheckout", function() {
4460                getButtons();
4461            });
4462            if(window.location.href.indexOf("cart") > -1) {
4463                document.arrive(".cart-actions", function() {
4464                    getButtons();
4465                });
4466            }
4467            if(window.location.href.indexOf("/checkout") > -1) {
4468                document.arrive("#countryCodeInput", {existing: true}, function() {
4469                    var elementExists = document.getElementById("checkoutBillingAddress");
4470                    if(!elementExists){
4471                        document.getElementById("countryCodeInput").addEventListener("focusout", function(e){
4472                            var countryCode = document.getElementById("countryCodeInput").value;
4473                            countryCode = countryCode.replace("string:", "");
4474
4475                            zonos.changeCountry(countryCode);
4476                            if(!zonos.isDomestic()){
4477                                domesticCheckoutRedirect();
4478                            }
4479
4480                        });
4481                    }
4482                });
4483            }
4484            getButtons();
4485        }catch(e){}
4486
4487        function domesticCheckoutRedirect(){
4488            var halfWindowHeight = Math.round(window.innerHeight / 2);
4489            var obj = document.createElement('div');
4490            obj.id = "loading";
4491            obj.style.cssText = 'position:fixed;top:0px;left: 0px;width:100%;height:100%;background: white; text-align: center;padding: '+halfWindowHeight+'px 10px; font-size: 20px';
4492            obj.innerHTML = 'Redirecting to International Checkout';
4493            
4494            if(document.getElementById("appBody") != null){
4495                document.getElementById("appBody").appendChild(obj);
4496            }else{
4497                document.getElementById("checkout-app").appendChild(obj);
4498            }
4499            
4500            //loading bar
4501            var loadingBar = document.createElement('div');
4502            loadingBar.id = 'load-bar';
4503            var bar = document.createElement('div');
4504            bar.className = 'bar';
4505            
4506            document.getElementById("loading").appendChild(loadingBar);
4507            document.getElementById('load-bar').appendChild(bar);
4508            var bar = document.createElement('div');
4509            bar.className = 'bar';
4510            document.getElementById('load-bar').appendChild(bar);
4511            var bar = document.createElement('div');
4512            bar.className = 'bar';
4513            document.getElementById('load-bar').appendChild(bar);
4514
4515
4516            var css = "#load-bar { position: relative; margin-top: 20px; width: 100%; height: 6px; background-color: #46CAE5; } .bar { content: ''; display: inline; position: absolute; width: 0; height: 100%; left: 50%; text-align: center; } .bar:nth-child(1) { background-color: #288AE3; animation: loading 3s linear infinite; } .bar:nth-child(2) { background-color: #E4E4E4; animation: loading 3s linear 1s infinite; } .bar:nth-child(3) { background-color: #46CAE5; animation: loading 3s linear 2s infinite; } @keyframes loading { from {left: 50%; width: 0;z-index:100;} 33.3333% {left: 0; width: 100%;z-index: 10;} to {left: 0; width: 100%;} }";
4517            head = document.head || document.getElementsByTagName('head')[0],
4518            style = document.createElement('style');
4519
4520            style.type = 'text/css';
4521            if (style.styleSheet){
4522                style.styleSheet.cssText = css;
4523            } else {
4524                style.appendChild(document.createTextNode(css));
4525            }
4526            head.appendChild(style);
4527            
4528            setTimeout(function(){ zonosCheckout(); },1000);
4529        }
4530
4531        let shippingObserve = new MutationObserver(() => {
4532            shippingObserve.disconnect();
4533            let observer = new MutationObserver((element, observer) => {
4534                let countryCode = document.getElementById("countryCodeInput").value;
4535                countryCode = countryCode.replace("string:", "");
4536
4537                zonos.changeCountry(countryCode);
4538                if(!zonos.isDomestic()){
4539                    domesticCheckoutRedirect();
4540                }
4541            });
4542        
4543            let interval = window.setInterval(() => {
4544            let shippingOptions = document.getElementById("checkout-shipping-options");
4545            if (shippingOptions) {
4546                window.clearInterval(interval);
4547                observer.observe(shippingOptions, {
4548                childList: true,
4549                subtree: true
4550                });
4551            }
4552            }, 200);
4553        });
4554        
4555        shippingObserve.observe(document.querySelector(".checkout-step.optimizedCheckout-checkoutStep.checkout-step--shipping"), {
4556            childList: true,
4557            subtree: true
4558        });
4559    })()
4560);</script>
4560<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
4560
4561
4562<script>
4563
4564var modal_html = `<div id="get-store-hash" data-store_hash="5r2w8tg1gb"></div>
4565<div id="ult-upsell-popup-modal" class="tds-new-modal new-modal">
4566    <div class="new-modal-content ult-upsell-modal-body">
4567        
4568    </div>
4569</div>`;
4570
4571var product_id = $("input[name='product_id']").val();
4572var store_hash = "5r2w8tg1gb";
4573var product_qty = 1;
4574var trigger_product_variant_id = 0;
4575var trigger_product_variants = [];
4576var offer_id = null;
4577var cart_id = '';
4578var cart_items = [];
4579var hasOffer = false;
4580var apiUri = "https://peasisoft.com";
4581var position = 1;
4582var offer_showed = false;
4583var trigger_product_ids = [];
4584var products_in_cart = [];
4585var req_data;
4586var currency_v1 = {
4587    token_location: "left",
4588    token: "$",
4589    decimal_token: ".",
4590    thousands_token: ",",
4591    decimal_places: 2,
4592    is_transactional: true,
4593};
4594var base_currency_code = "USD";
4595var dest_currency_code = base_currency_code;
4596var rate = 1;
4597var trigger_clicked = false;
4598var loading = true;
4599var cartValue = 0;
4600var qtyCart = 0;
4601var is_has_coupons_in_cart = 0;
4602var is_user_logged_in = 0;
4603var token_user = ''
4604
4605$(function() {
4606    $('body').prepend(modal_html);
4607
4608    var start_time = new Date().getTime();
4609
4610    if (window.location.pathname.includes("order-confirmation")) {
4611        position = 3;
4612    } else if (window.location.pathname.includes("checkout")) {
4613        position = 2;
4614    } else if (window.location.pathname.includes("cart.php")) {
4615        position = 4;
4616    }
4617
4618    $('head').append('<link rel="stylesheet" href="https://peasisoft.com/storefront/css/loader.css?v=' + new Date().getTime() +'" type="text/css" media="all" />');
4619    $('head').append('<link rel="stylesheet" href="https://peasisoft.com/css/css/app.css?v=' + new Date().getTime() +'"" type="text/css" media="all" />');
4620
4621    req_data = {
4622        id: product_id,
4623        store_hash: store_hash,
4624        position: position,
4625        trigger_product_ids: trigger_product_ids,
4626        products_in_cart: products_in_cart,
4627        cartValue : cartValue,
4628        qtyCart : qtyCart,
4629        is_has_coupons_in_cart: is_has_coupons_in_cart,
4630        offerIDs: [],
4631        is_user_logged_in: is_user_logged_in,
4632        user_token: token_user,
4633        triggerVariantIds: [],
4634        currency_code: ''
4635    };
4636
4637    $.getScript("https://peasisoft.com/storefront/js/popup-widget.js", () => {
4638
4639        $.get({
4640            url: '/customer/current.jwt?app_client_id=qbwksajte9ec5bceih54u0207z7j6sv',
4641            success: function (response) {
4642                req_data.is_user_logged_in = 1
4643                req_data.user_token = response
4644                getPopupContent();
4645            },
4646            error: function (error) {
4647                console.log('failed to get current user')
4648                console.log(error);
4649                getPopupContent();
4650            }
4651        })
4652
4653        function getPopupContent() {
4654            $.get('/api/storefront/carts', function(cart_data) {
4655                if (cart_data && cart_data.length > 0) {
4656                    for (var cart_item of cart_data) {
4657                        if (cart_item.coupons.length > 0) {
4658                            req_data.is_has_coupons_in_cart = 1;
4659                            break;
4660                        }
4661                    }
4662                    cart_id = cart_data[0]['id'];
4663                    cart_items = cart_data[0]["lineItems"]["physicalItems"].concat(cart_data[0]["lineItems"]["digitalItems"].concat(cart_data[0]["lineItems"]["customItems"]));
4664                    req_data.products_in_cart = cart_items.map(x => x.productId);
4665
4666                    req_data.cartValue = cart_data[0]['baseAmount'];
4667                    req_data.qtyCart = getQtyCart(cart_items);
4668                    if (position == 2) {
4669                        req_data.trigger_product_ids = cart_items.map(x => x.productId);
4670                        localStorage.setItem('cart_items', req_data.trigger_product_ids);
4671                        localStorage.setItem('cartValue', req_data.cartValue);
4672                        localStorage.setItem('qtyCart', req_data.qtyCart);
4673                        if (localStorage.getItem('offer_showed_before_co')) {
4674                            return false;
4675                        }
4676                    }
4677
4678                    if (position == 4) {
4679                        req_data.trigger_product_ids = cart_items.map(x => x.productId);
4680                        if (localStorage.getItem('offer_showed_in_cart')) {
4681                            return false;
4682                        }
4683                    }
4684
4685                    if(position == 2 || position == 4) {
4686                        req_data.triggerVariantIds = getTriggerProductsVariants(cart_items)
4687                        localStorage.setItem('triggerVariantIds',JSON.stringify(req_data.triggerVariantIds))
4688                    }
4689                }
4690
4691                localStorage.removeItem('offer_showed_before_co');
4692                localStorage.removeItem('offer_showed_in_cart');
4693
4694                if (position == 3 && localStorage.getItem('cart_items')) {
4695                    req_data.trigger_product_ids = localStorage.getItem('cart_items').split(",");
4696                    req_data.products_in_cart = req_data.trigger_product_ids.slice();
4697                    req_data.cartValue = localStorage.getItem('cartValue');
4698                    req_data.qtyCart = localStorage.getItem('qtyCart');
4699                    req_data.triggerVariantIds = JSON.parse(localStorage.getItem('triggerVariantIds'));
4700                    localStorage.removeItem('cart_items');
4701                    localStorage.removeItem('cartValue');
4702                    localStorage.removeItem('cart_items');
4703                    localStorage.removeItem('triggerVariantIds');
4704                }
4705
4706                // dest_currency_code = $('#currencySelection strong').parent().attr('data-currency-code')
4707                dest_currency_code = $('.body').attr('data-currency-code');
4708
4709                console.log(dest_currency_code);
4710                if (typeof dest_currency_code !== "undefined" && dest_currency_code !== base_currency_code) {
4711                    req_data.currency_code = dest_currency_code;
4712                    localStorage.setItem('dest_currency_code', dest_currency_code);
4713                }
4714                else if (typeof dest_currency_code !== "undefined" && dest_currency_code === base_currency_code) {
4715                    dest_currency_code = base_currency_code;
4716                    localStorage.setItem('dest_currency_code', dest_currency_code);
4717                }
4718                else {
4719                    if (localStorage.getItem('dest_currency_code') && localStorage.getItem('dest_currency_code') !== base_currency_code) {
4720                        dest_currency_code = localStorage.getItem('dest_currency_code');
4721                        req_data.currency_code = dest_currency_code;
4722                    }
4723                    else {
4724                        dest_currency_code = base_currency_code;
4725                    }
4726                }
4727                req_data.currency_code = dest_currency_code
4728                let offerIDs = getCookieMatch('_v1_offerId_');
4729                req_data.offerIDs = offerIDs;
4730                if (req_data.trigger_product_ids.length < 1 && product_id == null) {
4731                    console.log('Request data invalid. Request fail.');
4732                    hasOffer = false;
4733                    return false;
4734                }
4735
4736                $.ajax({
4737                    url: apiUri + "/api/popup-content",
4738                    headers: {
4739                        "Access-Control-Allow-Headers": "*"
4740                    },
4741                    type: "GET",
4742                    crossDomain: true,
4743                    data: req_data,
4744                    dataType: "json",
4745                    success: function(res) {
4746                        if (res.responseText) {
4747                            handleOfferExist(res);
4748                        }
4749                        console.log("Load completed. Request time: ", new Date().getTime() - start_time);
4750                    },
4751                    error: function(res) {
4752                        $('.ult-upsell-modal-body').html(res.responseText);
4753                        console.log("Error occured. Request time: ", new Date().getTime() - start_time);
4754                        console.log(res);
4755                    },
4756                });
4757            })
4758        }
4759    })
4760});
4761</script>
4761
4762      
4762<script>
4763        (function() {
4764          window.shogunVariables = {};
4765          window.shogunVariables.orderId = '';
4766        })();
4767      </script>
4767
4768    
4768<script>function myInit(){ StampedFn.init({ apiKey: 'pubkey-K3ERbXi418zz93I5El195sg43N1d5B', storeUrl: '118950' }); }</script>
vendor: 1 bytes, line 4768
4768
4769<script async onload="myInit()" type="text/javascript" src="https://cdn1.stamped.io/files/widget.min.js"></script>
4769<script>
4770  var dfCurrencyCode = 'USD';
4771  var dfGroupId = parseInt("");
4772  var dfChannelId = parseInt("1");
4773  var dfPageType = 'category';
4774  var dfProductId = '';
4775
4776  var dfCategoryName = '';
4777  var dfBreadcrumbs = [{"url":"https:\u002f\u002fwww.stringswing.com\u002f","name":"Home"},{"url":"https:\u002f\u002fwww.stringswing.com\u002fshop-all\u002f","name":"Shop All"},{"url":"https:\u002f\u002fwww.stringswing.com\u002fshop-all\u002fstring-instruments-1\u002f","name":"String Instruments"},{"url":"https:\u002f\u002fwww.stringswing.com\u002fshop-all\u002fstringed-instruments\u002fguitar\u002f","name":"Guitar"}];
4778  var items = dfBreadcrumbs.slice(1);
4779  if (dfPageType === 'product') {
4780    items = items.slice(0, -1);
4781  }
4782  if (items.length > 0) {
4783    dfCategoryName = items
4784      .map(function(item) { return item.name; })
4785      .join(' > ');
4786  }
4787
4788</script>
vendor: 1 bytes, line 4788
4788
4789<script src="https://us1-config.doofinder.com/2.x/e7f58881-2a64-4f14-9f3b-c304e50628f3.js" async></script>
4789<script>
4790 window.b3CheckoutConfig = {
4791 routes: {
4792 dashboard: "/account.php?action=order_status",
4793 },
4794 };
4795 window.B3 = {
4796 setting: {
4797 store_hash: "5r2w8tg1gb",
4798 channel_id: 1,
4799 platform: "bigcommerce",
4800 b2b_client_id: "dl7c39mdpul6hyc489yk0vzxl6jesyx",
4801 b2b_url: "https://api.bundleb2b.net",
4802 captcha_setkey: "6LdGN_sgAAAAAGYFg1lmVoakQ8QXxbhWqZ1GpYaJ",environment: "production"
4803 },
4804 "dom.checkoutRegisterParentElement": "#checkout-app",
4805 "dom.registerElement": '[href^="/login.php"], #checkout-customer-login, [href="/login.php"] .navUser-item-loginLabel, #checkout-customer-returning .form-legend-container [href="#"]',
4806 "dom.openB3Checkout": "checkout-customer-continue",
4807 before_login_goto_page: "/account.php?action=order_status",
4808 checkout_super_clear_session: "true",
4809 "dom.navUserLoginElement": ".navUser-item.navUser-item--account",
4810 };
4811</script>
vendor: 1 bytes, line 4811
4811
4812<script type="module" crossorigin integrity="sha384-lT06KoRDvQ2ik89FrgEDWAO5SsoaU1JCdXvHIWsGieXbViV+VW3QcBI6dakyl93C" src="https://microapps.bigcommerce.com/b2b-buyer-portal/polyfills.BwIfQWgi.js"></script>
vendor: 1 bytes, line 4812
4812
4813<script type="module" crossorigin integrity="sha384-6i3cXr5vlFEyTWQ58OUkfUz5hnxizTmWhwVfDuALuiq+JpdMIsGRvhfp2Jv++9ZY" src="https://microapps.bigcommerce.com/b2b-buyer-portal/index.BZhersGa.js"></script>
vendor: 1 bytes, line 4813
4813
4814<script>
4815(function () {
4816// Rendered by BigCommerce (Handlebars) when this page was served to a logged-in customer.
4817// Empty when the page was served to a guest, for example the login page the portal takes over.
4818
4819var pageCustomerId = '';
4820var pageValue = Number('');
4821var pageText = '';
4822var storefrontToken = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJjaWQiOlsxXSwiY29ycyI6WyJodHRwczovL3d3dy5zdHJpbmdzd2luZy5jb20iXSwiZWF0IjoxNzkwNTk5MDE3LCJpYXQiOjE3OTA0MjYyMTcsImlzcyI6IkJDIiwic2lkIjoxMDAwOTU0NTEzLCJzdWIiOiJCQyIsInN1Yl90eXBlIjowLCJ0b2tlbl90eXBlIjoxfQ.yl-KKelpkCXk0NKLpTeAPFjOez5yoLciM5OtVmy86Cjc-awlbOQYTJnVbyre3oKPSr26__0hBE2F0uDhpQre6g';
4823var FRAME = '.bundle-namespace .bundle-app > iframe';
4824var NAV = 'nav[aria-labelledby="nested-list-subheader"]';
4825var BLOCK_ID = 'hud-store-credit';
4826var FLOATING_ID = 'floating-store-credit'; // the card rendered in the parent page, after the iframe
4827var balance = null; // { value: number, text: string } once known for the current login
4828var generation = 0; // bumped whenever a login may change, so late replies are ignored
4829var fetching = false;
4830var fetchAttempts = 0;
4831var lastAttempt = 0;
4832var observedDoc = null;
4833var hooked = false;
4834function portalDoc() {
4835var frame = document.querySelector(FRAME);
4836return frame && frame.contentDocument; // same-origin: the frame has no src and no sandbox
4837}
4838function portalFrame() {
4839return document.querySelector(FRAME);
4840}
4841function removeBlock() {
4842var doc = portalDoc();
4843var old = doc && doc.getElementById(BLOCK_ID);
4844if (old) { old.parentNode.removeChild(old); }
4845}
4846// The portal logs customers out and back in without reloading the page, so a balance must never
4847// outlive a login. Forget everything, including the page's own values, whenever the portal shows
4848// its login or registration page in this document. The next balance is then fetched for whoever logs in.
4849function forgetBalance() {
4850generation += 1;
4851balance = null;
4852pageCustomerId = '';
4853fetching = false;
4854fetchAttempts = 0;
4855removeBlock();
4856}
4857function hookPortalEvents() {
4858if (hooked || !(window.b2b && window.b2b.callbacks && typeof window.b2b.callbacks.addEventListener ===
4859'function')) { return; }
4860hooked = true;
4861window.b2b.callbacks.addEventListener('on-logout', forgetBalance);
4862}
4863function haveBalance(callback) {
4864if (balance) { callback(balance); return; }
4865if (pageCustomerId) { // page was rendered logged in: use the page's
4866values
4867balance = { value: isNaN(pageValue) ? 0 : pageValue, text: pageText };
4868callback(balance);
4869return;
4870}
4871if (fetching || fetchAttempts >= 20 || !storefrontToken) { return; }
4872if (Date.now() - lastAttempt < 1000) { return; } // at most one attempt per second
4873
4874lastAttempt = Date.now();
4875fetching = true;
4876fetchAttempts += 1;
4877var gen = generation;
4878fetch('/graphql', { // same native balance, for the logged-in customer
4879method: 'POST',
4880credentials: 'same-origin', // the session cookie identifies the customer
4881headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + storefrontToken },
4882body: JSON.stringify({ query: '{ customer { storeCredit { value currencyCode } } }' })
4883}).then(function (r) { return r.json(); }).then(function (d) {
4884fetching = false;
4885if (gen !== generation) { return; } // a logout happened meanwhile: ignore this reply
4886var c = d && d.data && d.data.customer;
4887if (!c) { return; } // not logged in yet: try again on a later pass
4888var m = (c.storeCredit || [])[0];
4889var v = m ? Number(m.value) : 0;
4890var text = m ? new Intl.NumberFormat(undefined, { style: 'currency', currency: m.currencyCode || 'USD'
4891}).format(v) : '';
4892balance = { value: isNaN(v) ? 0 : v, text: text };
4893callback(balance);
4894}).catch(function () { fetching = false; });
4895}
4896function menuLabel(doc, label) {
4897var nav = doc.querySelector(NAV);
4898if (!nav) { return null; }
4899var nodes = nav.getElementsByTagName('*');
4900var i;
4901for (i = 0; i < nodes.length; i++) {
4902if (nodes[i].childElementCount) { continue; }
4903var text = (nodes[i].textContent || '').replace(/\s+/g, ' ').trim().toLowerCase();
4904if (text !== label) { continue; }
4905var node = nodes[i];
4906return node.closest ? (node.closest('.MuiButtonBase-root, a, button, li') || node.parentElement) : node.parentElement;
4907}
4908return null;
4909}
4910function accountLink(doc) {
4911return menuLabel(doc, 'account settings');
4912}
4913function ordersButton(doc) {
4914var nav = doc.querySelector(NAV);
4915var selected = nav && nav.querySelector('.Mui-selected');
4916if (selected && selected.getBoundingClientRect().width > 40) { return selected; }
4917return menuLabel(doc, 'my orders');
4918}
4919function fitAmount(el) {
4920var nodes = el.getElementsByTagName('*');
4921var i;
4922var amountNode = null;
4923for (i = 0; i < nodes.length; i++) {
4924if (/\$[\d,]+\.\d{2}/.test(nodes[i].textContent || '')) { amountNode = nodes[i]; }
4925}
4926if (!amountNode || amountNode === el) { return; }
4927var line = amountNode;
4928var own = amountNode.childElementCount ? '' : (amountNode.textContent || '').replace(/\s+/g, ' ').trim();
4929if (/^\$[\d,]+\.\d{2}$/.test(own) && amountNode.parentElement && amountNode.parentElement !== el) {
4930line = amountNode.parentElement;
4931}
4932line.style.setProperty('font-size', '22px', 'important');
4933line.style.setProperty('line-height', '1.2', 'important');
4934line.style.setProperty('white-space', 'nowrap', 'important');
4935line.style.setProperty('display', 'block', 'important');
4936for (i = 0; i < line.children.length; i++) {
4937line.children[i].style.setProperty('display', 'inline', 'important');
4938line.children[i].style.setProperty('font-size', '22px', 'important');
4939line.children[i].style.setProperty('white-space', 'nowrap', 'important');
4940}
4941}
4942// The blue card stays in the parent page. Only its screen position is updated, and only
4943// when that position actually changes, so nothing observes or rewrites it in a loop.
4944function placeCard() {
4945var el = document.getElementById(FLOATING_ID);
4946var frame = portalFrame();
4947var doc = frame && frame.contentDocument;
4948var anchor = doc && accountLink(doc);
4949var orders = doc && ordersButton(doc);
4950if (!el || !anchor) { return; }
4951var a = anchor.getBoundingClientRect();
4952var box = (orders || anchor).getBoundingClientRect();
4953var f = frame.getBoundingClientRect();
4954if (a.width < 8 || a.height < 8 || box.width < 40) { return; }
4955if (a.bottom < 0 || a.top > window.innerHeight) { return; }
4956var top = Math.round(f.top + a.bottom + 12);
4957var left = Math.round(f.left + box.left);
4958var width = Math.round(box.width);
4959if (top < 0 || left < 0 || top > window.innerHeight) { return; }
4960// The card's own markup is display:none. Keep it shown, and above the portal iframe,
4961// or it sits under the menu and looks gone. Do not observe these writes.
4962el.style.setProperty('display', 'block');
4963el.style.setProperty('visibility', 'visible');
4964el.style.setProperty('opacity', '1');
4965// el.style.setProperty('display', 'block', 'important');
4966// el.style.setProperty('visibility', 'visible', 'important');
4967// el.style.setProperty('opacity', '1', 'important');
4968el.style.setProperty('height', 'auto', 'important');
4969el.style.setProperty('box-sizing', 'border-box', 'important');
4970el.style.setProperty('z-index', '2147483647', 'important');
4971fitAmount(el);
4972var mark = top + ',' + left + ',' + width;
4973if (el.getAttribute('data-hud-at') === mark) { return; }
4974el.setAttribute('data-hud-at', mark);
4975el.style.setProperty('position', 'fixed', 'important');
4976el.style.setProperty('top', top + 'px', 'important');
4977el.style.setProperty('left', left + 'px', 'important');
4978el.style.setProperty('right', 'auto', 'important');
4979el.style.setProperty('bottom', 'auto', 'important');
4980el.style.setProperty('width', width + 'px', 'important');
4981el.style.setProperty('margin', '0', 'important');
4982el.style.setProperty('transform', 'none', 'important');
4983}
4984function selectedLinkColor(doc) {
4985if (doc.getElementById('hud-selected-link')) { return; }
4986var style = doc.createElement('style');
4987style.id = 'hud-selected-link';
4988style.textContent = NAV + ' .Mui-selected,' + NAV + ' .Mui-selected *{color:#fff !important;}';
4989(doc.head || doc.documentElement).appendChild(style);
4990}
4991function inject() {
4992var doc = portalDoc();
4993var nav = doc && doc.querySelector(NAV);
4994if (!nav) { return; }
4995if (document.getElementById(FLOATING_ID)) { return; } // the blue card is the balance on screen
4996var next = nav.nextElementSibling;
4997if (next && next.id === BLOCK_ID) { return; } // already in place
4998var stale = doc.getElementById(BLOCK_ID);
4999if (stale) { stale.parentNode.removeChild(stale); }
5000haveBalance(function (b) {
5001if (!(b.value > 0)) { return; } // nothing to show
5002var doc2 = portalDoc();
5003var nav2 = doc2 && doc2.querySelector(NAV); // re-query: the balance may have arrived later
5004if (!nav2 || doc2.getElementById(BLOCK_ID) || document.getElementById(FLOATING_ID)) { return; }
5005var block = doc2.createElement('div'); // inline styles: parent-page CSS does not reach in
5006here
5007block.id = BLOCK_ID;
5008block.style.cssText = 'margin:16px 0 0;padding:12px 16px;border-top:1px solid #e0e0e0;font-family:Roboto,Helvetica,Arial,sans-serif;color:#333;box-sizing:border-box;';
5009var title = doc2.createElement('div');
5010title.style.cssText = 'font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:#757575;';
5011title.textContent = 'Store credit';
5012var amount = doc2.createElement('div');
5013amount.style.cssText = 'font-size:18px;font-weight:600;margin:2px 0;';
5014amount.textContent = b.text;
5015var note = doc2.createElement('div');
5016note.style.cssText = 'font-size:12px;color:#757575;';
5017note.textContent = 'Available at checkout';
5018block.appendChild(title);
5019block.appendChild(amount);
5020block.appendChild(note);
5021var link = accountLink(doc2);
5022if (link) { link.insertAdjacentElement('afterend', block); }
5023else { nav2.insertAdjacentElement('afterend', block); }
5024});
5025}
5026function tick() {
5027hookPortalEvents(); // the portal's own script may load after this one
5028if (/^#\/(login|register)/.test(window.location.hash)) { forgetBalance(); return; }
5029var doc = portalDoc();
5030if (!doc) { return; }
5031if (doc !== observedDoc) {
5032// Watch the Document itself. The portal re-runs document.open/write/close on this frame when
5033// its styles load; that keeps the Document object but throws away <body>, so an observer on
5034// <body> or <html> would go dead.
5035observedDoc = doc;
5036new MutationObserver(inject).observe(doc, { childList: true, subtree: true });
5037var frameWindow = portalFrame() && portalFrame().contentWindow;
5038if (frameWindow) { frameWindow.addEventListener('scroll', placeCard, true); }
5039}
5040selectedLinkColor(doc);
5041inject();
5042placeCard();
5043}
5044tick();
5045window.addEventListener('scroll', placeCard, true);
5046window.addEventListener('resize', placeCard);
5047setInterval(tick, 750); // keep polling: the frame can be created or recreated later
5048})();
5049</script>
5049
5050        
5051        
5051<script>
5052            var pageBuilderBG = setInterval(function(){
5053            	$('div[data-layout-name="Layout-BlkBg"]').wrap('<div class="BlkBg"></div>');
5054            	$('div[data-layout-name="Layout-GryBg"]').wrap('<div class="GryBg"></div>');
5055            	$('div[data-layout-name="Layout-DgryBg"]').wrap('<div class="DgryBg"></div>');
5056            	clearInterval(pageBuilderBG);
5057            },100);
5058        </script>
5058
5059		
5060        
5061        
5061<script>
5062/* Header Tabs */
5063document.addEventListener('click', event => {
5064    const clickedTab = event.target.closest('.header-tab');
5065    const tabsGroup = event.target.closest('.header-tabs');
5066    
5067    if (!clickedTab || !tabsGroup) return; // Clicked outside .tab or not inside .tabs
5068
5069    // Check if the clicked tab was already active
5070    const isActive = clickedTab.classList.contains('active');
5071
5072    // Remove .active from all .tab children inside this .tabs
5073    tabsGroup.querySelectorAll('.header-tab').forEach(tabButton => {
5074        tabButton.classList.remove('active');
5075    });
5076
5077    // If it was not already active, add .active to the clicked .tab
5078    if (!isActive) {
5079        clickedTab.classList.add('active');
5080    }
5081});
5082/* So many issues due to add a tag inside the header-tab that's why we roll back it into the orignal code width out a tag*/
5083//document.addEventListener('click', event => {
5084//    const clickedLink = event.target.closest('.header-tab a');
5085//    const tabsGroup = event.target.closest('.header-tabs');
5086//    if (!clickedLink || !tabsGroup) return; // Clicked outside .tab or not inside .tabs
5087//    const clickedTab = clickedLink.closest('.header-tab');
5088//    // Check if already active
5089//    const isActive = clickedTab.classList.contains('active');
5090//    // Remove active from all tabs
5091//    tabsGroup.querySelectorAll('.header-tab').forEach(tab => {
5092//        tab.classList.remove('active');
5093//    });
5094//    // Add active only if it wasn't already active
5095//    if (!isActive) {
5096//        clickedTab.classList.add('active');
5097//    }
5098//});
5099/* nav- Tabs End */
5100
5101/* Header Tabs Hover */
5102document.addEventListener('pointerover', (e) => {
5103    const tab = e.target.closest('.header-tab-hover');
5104    const group = e.target.closest('.header-tabs-hover');
5105    if (!tab || !group) return;
5106
5107    // Remove .active from all tabs in the same group
5108    group.querySelectorAll('.header-tab-hover.active').forEach(t => t.classList.remove('active'));
5109
5110    // Add .active to the hovered tab
5111    tab.classList.add('active');
5112});
5113/* Header Tabs Hover End */
5114
5115/* Search Close */
5116/*document.addEventListener('click', function (e) {
5117    if (!e.target.closest('.search-close')) return;
5118    document.querySelectorAll('.icon.search').forEach(function (icon) {
5119        icon.classList.remove('active');
5120    });
5121});*/
5122/*$(document).on('click', '.search-close', function () {
5123    $('.icon.search').removeClass('active');
5124});*/
5125// Close button click
5126$(document).on('click', '.search-close', function (e) {
5127    e.stopPropagation();
5128    $('.icon.search').removeClass('active');
5129});
5130// Search bar ke andar click ho to close na ho
5131$(document).on('click', '.search-bar', function (e) {
5132    e.stopPropagation();
5133});
5134// Search icon click (agar yahan se open hoti hai)
5135$(document).on('click', '.icon.search', function (e) {
5136    e.stopPropagation();
5137    $(this).addClass('active');
5138});
5139// Search bar ke ilawa kahin bhi click ho
5140$(document).on('click', function () {
5141    $('.icon.search').removeClass('active');
5142});
5143
5144
5145
5146/* Search Close End */
5147
5148/* Search Closes Nav Menu */
5149/*document.addEventListener('click', function (e) {
5150    if (!e.target.closest('.icon.search')) return;
5151    document.querySelectorAll('.nav-menu-toggle').forEach(function (icon) {
5152        icon.classList.remove('active');
5153    });
5154});*/
5155$(document).on('click', '.icon.search', function () {
5156    $('.nav-menu-toggle').removeClass('active');
5157	setTimeout(function () {
5158        const $input = $('.search-input input');
5159        if ($input.length) {
5160            $input.focus();
5161        }
5162    }, 300);
5163});
5164/* Search Closes Nav Menu End */
5165
5166/* Account Closes Nav Menu */
5167/*document.addEventListener('click', function (e) {
5168    if (!e.target.closest('.icon.account')) return;
5169    document.querySelectorAll('.nav-menu-toggle').forEach(function (icon) {
5170        icon.classList.remove('active');
5171    });
5172});*/
5173$(document).on('click', '.icon.account', function () {
5174    $('.nav-menu-toggle').removeClass('active');
5175});
5176/* Account Closes Nav Menu End */
5177
5178/* Cart Closes Nav Menu */
5179/*document.addEventListener('click', function (e) {
5180    if (!e.target.closest('.icon.cart')) return;
5181    document.querySelectorAll('.nav-menu-toggle').forEach(function (icon) {
5182        icon.classList.remove('active');
5183    });
5184});*/
5185/* Cart Closes Nav Menu End */
5186
5187/* Account Popup Close */
5188/*document.addEventListener('click', function (e) {
5189    if (!e.target.closest('.account-popup-close')) return;
5190    document.querySelectorAll('.icon.account').forEach(function (icon) {
5191        icon.classList.remove('active');
5192    });
5193});*/
5194$(document).on('click', '.account-popup-close', function () {
5195    $('.icon.account').removeClass('active');
5196});
5197/* Account Popup Close End */
5198
5199/* Cart Popup Close */
5200/*document.addEventListener('click', function (e) {
5201    if (!e.target.closest('.cart-popup-close')) return;
5202    document.querySelectorAll('.icon.cart.active').forEach(function (icon) {
5203        icon.classList.remove('active');
5204    });
5205});*/
5206/* Cart Popup Close End */
5207
5208/* BG Fade Closes All */
5209/*document.addEventListener('click', function (e) {
5210    if (!e.target.closest('.bg-fade')) return;
5211    document.querySelectorAll('.nav-menu-toggle').forEach(function (icon) {
5212        icon.classList.remove('active');
5213    });
5214    document.querySelectorAll('.icon.search').forEach(function (icon) {
5215        icon.classList.remove('active');
5216    });
5217    document.querySelectorAll('.icon.account').forEach(function (icon) {
5218        icon.classList.remove('active');
5219    });
5220    document.querySelectorAll('.icon.cart').forEach(function (icon) {
5221        icon.classList.remove('active');
5222    });
5223});*/
5224$(document).on('click', '.bg-fade', function () {
5225    $('.nav-menu-toggle, .icon.search, .icon.account, .icon.cart')
5226        .removeClass('active');
5227});
5228
5229/* BG Fade Closes All End */
5230
5231/* Nav Scroll Color Change */
5232/*const navWrappers = document.querySelectorAll('.nav-bar-wrapper, .mobile-nav-wrapper');
5233function updateNavColor() {
5234    const atTop = window.scrollY === 0;
5235    navWrappers.forEach(el => {
5236        el.classList.toggle('nav-scroll-top', atTop);
5237        el.classList.toggle('nav-scrolled', !atTop);
5238    });
5239}*/
5240const $navWrappers = $('.nav-bar-wrapper, .mobile-nav-wrapper');
5241function updateNavColor() {
5242    const atTop = $(window).scrollTop() === 0;
5243    $navWrappers
5244        .toggleClass('nav-scroll-top', atTop)
5245        .toggleClass('nav-scrolled', !atTop);
5246}
5247
5248// run once and on scroll
5249updateNavColor();
5250// window.addEventListener('scroll', updateNavColor, { passive: true });
5251$(window).on('scroll', updateNavColor);
5252/* Nav Scroll Color Change End */
5253
5254
5255
5256
5257
5258/* Custom Tabs Product Description - jQuery */
5259$(document).on('click', '.pro-description-custom-tab .dropdown-header', function (e) {
5260    const $clickedTab = $(this);
5261    const $tabsGroup = $clickedTab.closest('.pro-description-custom-tabs');
5262    if ($tabsGroup.length === 0) return; // Not inside a .custom-tabs group
5263    const isActive = $clickedTab.hasClass('active');
5264    // Remove .active from all .custom-tab in this group
5265    $tabsGroup.find('.pro-description-custom-tab .dropdown-header').removeClass('active');
5266    // If not already active, add .active to clicked tab
5267    if (!isActive) {
5268        $clickedTab.addClass('active');
5269    }
5270});
5271/* Custom Tabs Product Description End */
5272
5273/* Custom Tabs General - jQuery */
5274/*$(document).on('click', '.custom-tab', function (e) {
5275    const $clickedTab = $(this);
5276    const $tabsGroup = $clickedTab.closest('.custom-tabs');
5277    if ($tabsGroup.length === 0) return; // Not inside a .custom-tabs group
5278    const isActive = $clickedTab.hasClass('active');
5279    // Remove .active from all .custom-tab in this group
5280    $tabsGroup.find('.custom-tab').removeClass('active');
5281    // If not already active, add .active to clicked tab
5282    if (!isActive) {
5283        $clickedTab.addClass('active');
5284    }
5285});*/
5286$(document).on('click', '.custom-tab', function () {
5287    const $clickedTab = $(this);
5288    const $tabsGroup = $clickedTab.closest('.custom-tabs');
5289    if (!$tabsGroup.length) return;
5290    // If the clicked tab is already active, do nothing
5291    if ($clickedTab.hasClass('active')) {
5292        return;
5293    }
5294    // Remove active from all tabs in this group
5295    $tabsGroup.find('.custom-tab').removeClass('active');
5296    // Activate the clicked tab
5297    $clickedTab.addClass('active');
5298});
5299$('.offers-thumnail-tabs').each(function () {
5300    const $tabsGroup = $(this);
5301    $tabsGroup.on('click', '.offers-thumnail-tab', function () {
5302        const $clickedTab = $(this);
5303        if ($clickedTab.hasClass('active')) return;
5304        $tabsGroup.find('.offers-thumnail-tab').removeClass('active');
5305        $clickedTab.addClass('active');
5306    });
5307});
5308$('.multiOffers-tabs').each(function () {
5309    const $tabsGroup = $(this);
5310    $tabsGroup.on('click', '.multiOffers-tab', function () {
5311        const $clickedTab = $(this);
5312        if ($clickedTab.hasClass('active')) return;
5313        $tabsGroup.find('.multiOffers-tab').removeClass('active');
5314        $clickedTab.addClass('active');
5315    });
5316});
5317
5318/*following code will use for toggle tabs mean active class add whenever click on tab specially use it in the feature section in home page*/
5319$(document).on('click', '.toggle-tab', function () {
5320    const $clickedTab = $(this);
5321    const $tabsGroup = $clickedTab.closest('.toggle-tabs');
5322    if (!$tabsGroup.length) return;
5323    if ($clickedTab.hasClass('active')) {
5324        $clickedTab.removeClass('active');
5325    } else {
5326        $tabsGroup.find('.toggle-tab').removeClass('active');
5327        $clickedTab.addClass('active');
5328    }
5329});
5330
5331// following custom tab using for FAQ
5332$(document).on('click', '.faq-custom-tab', function (e) {
5333    const $clickedTab = $(this);
5334    const $tabsGroup = $clickedTab.closest('.faq-custom-tabs');
5335    if ($tabsGroup.length === 0) return; // Not inside a .custom-tabs group
5336    const isActive = $clickedTab.hasClass('active');
5337    // Remove .active from all .custom-tab in this group
5338    $tabsGroup.find('.faq-custom-tab').removeClass('active');
5339    // If not already active, add .active to clicked tab
5340    if (!isActive) {
5341        $clickedTab.addClass('active');
5342    }
5343});
5344/* Custom Tabs General End */
5345
5346/* review-scroller Infinite (Manual) Horizontal Scroller */
5347// Apply to all scrollers
5348$(document).ready(function () {
5349    // following commented code use for with out infinit mean last slide have disable class
5350	/*$('.reviews-infinite-scroller').each(function () {
5351		const $scroller = $(this);
5352		const $wrapper = $scroller.closest('.reviews-wrapper');
5353		const $reviews = $scroller.find('.review');
5354		const $leftArrow = $wrapper.find('.left-arrow');
5355		const $rightArrow = $wrapper.find('.right-arrow');
5356		const total = $reviews.length;
5357		let currentIndex = 0;
5358	
5359		function updateActiveHeading($activeReview) {
5360			const text = $.trim($activeReview.find('.heading5').text());
5361			if (text) {
5362				$('.review-scroller .section-wrapper .meta #currentQuoteHeading').text(`"${text}"`);
5363			}
5364		}
5365	
5366		function setActive(index) {
5367			const reviewWidth = $reviews.outerWidth(true);
5368			$scroller.scrollLeft(reviewWidth * index);
5369			$reviews.removeClass('active');
5370			const $activeReview = $reviews.eq(index).addClass('active');
5371			updateActiveHeading($activeReview);
5372			$leftArrow.toggleClass('disabled', index === 0);
5373			$rightArrow.toggleClass('disabled', index === total - 1);
5374			currentIndex = index;
5375		}
5376	
5377		function scrollToIndex(index) {
5378			const reviewWidth = $reviews.outerWidth(true);
5379			const scrollPosition = reviewWidth * index;
5380			$scroller.stop().animate({
5381				scrollLeft: scrollPosition
5382			}, 100, function() {
5383				// Update heading after animation completes
5384				updateActiveHeading($reviews.eq(index));
5385			});
5386			$reviews.removeClass('active').eq(index).addClass('active');
5387			$leftArrow.toggleClass('disabled', index === 0);
5388			$rightArrow.toggleClass('disabled', index === total - 1);
5389			currentIndex = index;
5390		}
5391	
5392		$rightArrow.on('click', function () {
5393			if (currentIndex < total - 1) {
5394				scrollToIndex(currentIndex + 1);
5395			}
5396		});
5397	
5398		$leftArrow.on('click', function () {
5399			if (currentIndex > 0) {
5400				scrollToIndex(currentIndex - 1);
5401			}
5402		});
5403	
5404		$reviews.on('click', function () {
5405			scrollToIndex($(this).index());
5406		});
5407	
5408		// Initialize first slide
5409		scrollToIndex(0);
5410		updateActiveHeading($reviews.eq(0));
5411	});*/
5412	
5413	// following commented code use for with infinit mean last slide NO have disable class
5414	$('.reviews-infinite-scroller').each(function () {
5415		const $scroller = $(this);
5416		const $wrapper = $scroller.closest('.reviews-wrapper');
5417		const $leftArrow = $wrapper.find('.left-arrow');
5418		const $rightArrow = $wrapper.find('.right-arrow');
5419		let $reviews = $scroller.find('.review');
5420		const realTotal = $reviews.length;
5421		// ==============================
5422		// 1- CLONE FIRST & LAST SLIDES
5423		// ==============================
5424		const $firstClone = $reviews.first().clone().addClass('clone');
5425		const $lastClone  = $reviews.last().clone().addClass('clone');
5426		$scroller.append($firstClone);
5427		$scroller.prepend($lastClone);
5428		$reviews = $scroller.find('.review');
5429		const total = $reviews.length;
5430		let currentIndex = 1; // real first slide index
5431		// ==============================
5432		// 2- UPDATE HEADING
5433		// ==============================
5434		function updateActiveHeading($activeReview) {
5435			const text = $.trim($activeReview.find('.heading5').text());
5436			if (text) {
5437				$('.review-scroller .section-wrapper .meta #currentQuoteHeading')
5438					.text(`"${text}"`);
5439			}
5440		}
5441		// ==============================
5442		// 3- REAL INDEX FINDER
5443		// ==============================
5444		function getRealIndex(index) {
5445			if (index === 0) return realTotal - 1;
5446			if (index === total - 1) return 0;
5447			return index - 1;
5448		}
5449		// ==============================
5450		// 4- HANDLE INFINITE EDGES
5451		// ==============================
5452		function handleInfiniteEdges(index) {
5453			const reviewWidth = $reviews.outerWidth(true);
5454			// After last real > jump to first real
5455			if (index === total - 1) {
5456				currentIndex = 1;
5457				$scroller.scrollLeft(reviewWidth * currentIndex);
5458			}
5459			// Before first real > jump to last real
5460			if (index === 0) {
5461				currentIndex = total - 2;
5462				$scroller.scrollLeft(reviewWidth * currentIndex);
5463			}
5464		}
5465		// ==============================
5466		// 5- SCROLL FUNCTION
5467		// ==============================
5468		function scrollToIndex(index, animate = true) {
5469			const reviewWidth = $reviews.outerWidth(true);
5470			const scrollPosition = reviewWidth * index;
5471			if (animate) {
5472				$scroller.stop().animate(
5473					{ scrollLeft: scrollPosition },
5474					300,
5475					function () {
5476						handleInfiniteEdges(index);
5477					}
5478				);
5479			} else {
5480				$scroller.scrollLeft(scrollPosition);
5481			}
5482			$reviews.removeClass('active');
5483			$reviews.eq(index).addClass('active');
5484			const realIndex = getRealIndex(index);
5485			updateActiveHeading($scroller.find('.review').eq(index));
5486			currentIndex = index;
5487		}
5488		// ==============================
5489		// 6- ARROWS (NEVER DISABLE)
5490		// ==============================
5491		$rightArrow.on('click', function () {
5492			scrollToIndex(currentIndex + 1);
5493		});
5494		$leftArrow.on('click', function () {
5495			scrollToIndex(currentIndex - 1);
5496		});
5497		// ==============================
5498		// 7- CLICK ON REVIEW
5499		// ==============================
5500		$reviews.on('click', function () {
5501			scrollToIndex($(this).index());
5502		});
5503		// ==============================
5504		// 8- INITIAL POSITION
5505		// ==============================
5506		const reviewWidth = $reviews.outerWidth(true);
5507		$scroller.scrollLeft(reviewWidth); // start from real first slide
5508		$reviews.removeClass('active').eq(1).addClass('active');
5509		updateActiveHeading($reviews.eq(1));
5510	});
5511});
5512
5513/* review-scroller Infinite (Manual) Horizontal Scroller End */
5514
5515
5516
5517
5518
5519
5520
5521
5522/* ############################ */
5523	// New js added //
5524/* ############################ */
5525/* Dropdown Toggle */
5526(function () {
5527  document.addEventListener('click', function (e) {
5528    // toggle dropdown
5529    const ddButton = e.target.closest('.ss-global .dropdown .dropdown-button');
5530    if (ddButton) {
5531      const dropdown = ddButton.closest('.ss-global .dropdown');
5532      if (dropdown) {
5533        // only one dropdown open at a time
5534        document.querySelectorAll('.ss-global .dropdown.active').forEach(d => { if (d !== dropdown) d.classList.remove('active'); });
5535        dropdown.classList.toggle('active');
5536      }
5537      return;
5538    }
5539
5540    // clicking a .dropdown-item removes .active from .dropdown
5541    const content = e.target.closest('.ss-global .dropdown .dropdown-content');
5542    if (content) {
5543      const dropdown = content.closest('.ss-global .dropdown');
5544      if (!dropdown) return;
5545
5546      // close dropdown after running tab script
5547      const ddTab = e.target.closest('.ss-gobal .tab');
5548      if (ddTab) {
5549        setTimeout(() => dropdown.classList.remove('active'), 0);
5550      } else {
5551        dropdown.classList.remove('active');
5552      }
5553      return;
5554    }
5555
5556    // clicking ouside of .dropdown removes .active
5557    if (!e.target.closest('.ss-global .dropdown')) {
5558      document.querySelectorAll('.ss-global .dropdown.active')
5559        .forEach(d => d.classList.remove('active'));
5560    }
5561  }, false);
5562})();
5563/* Dropdown Toggle End */
5564
5565
5566/* Scroll to Top */
5567/*$(document).on('click', '.scroll-to-top', function (e) {
5568    if ($(this).is('a')) {
5569        e.preventDefault();
5570    }
5571    $('html, body').animate({ scrollTop: 0 }, 'slow');
5572});*/
5573/* Scroll to Top */
5574document.addEventListener('click', (e) => {
5575    const scrollToTop = e.target.closest('.scroll-to-top');
5576    if (!scrollToTop) return;
5577
5578    // prevent <a> jumps if you ever make it a link
5579    if (scrollToTop.tagName === 'A') e.preventDefault();
5580
5581    (document.scrollingElement || document.documentElement)
5582    .scrollTo({ top: 0, behavior: 'smooth' });
5583}, { capture: true }); // resists earlier stopPropagation()
5584/* Scroll to Top End */
5585/* Scroll to Top End */
5586
5587
5588/*Following function use for cart popup instantly show start here*/
5589$(document).on('click', '.navUser-item--cart', function () {
5590	$('body').addClass('cartPopupOpen');
5591});
5592$(document).on('click', '.cart-popup .cart-header .modal-close', function () {
5593	$('body').removeClass('cartPopupOpen');
5594});
5595$(document).on('click', '.modal-background', function () {
5596	$('body').removeClass('cartPopupOpen');
5597});
5598/*Following function use for cart popup instantly show END here*/
5599
5600/* Ticker Track scroller for (2/18)) Start Here*/
5601document.querySelectorAll('.ss-global .ticker-track').forEach(track => {
5602    if (track.dataset.duplicated === 'true') return;
5603    const items = Array.from(track.querySelectorAll('.ticker-item'));
5604    const copies = 4; // Number of copies   // (3/23)
5605    for (let i = 0; i < copies; i++) {
5606        items.forEach(item => {
5607            track.appendChild(item.cloneNode(true));
5608        });
5609    }
5610    track.dataset.duplicated = 'true';
5611});
5612/* Ticker Track scroller (2/18) End Here*/
5613
5614/* Off Screen Element currently use in product page for add to cart section after scrolling added at 23-02-2026 */
5615(function () {
5616    function initOffScreenObserver(root = document) {
5617        root.querySelectorAll('.ss-global .off-screen-element').forEach(el => {
5618            if (el.dataset.offScreenInit === "1") return;
5619
5620            const observer = new IntersectionObserver(
5621                ([entry]) => {
5622                    // Add .off-screen when NOT visible; remove when visible
5623                    el.classList.toggle('off-screen', !entry.isIntersecting || entry.intersectionRatio === 0);
5624                },
5625                { threshold: 0 } // fire as soon as it leaves/enters the viewport
5626                );
5627
5628                observer.observe(el);
5629                el.dataset.offScreenInit = "1";
5630                el._offScreenObserver = observer; // (optional) keep a handle if you ever want to disconnect
5631                });
5632            }
5633
5634            // Case 1: elements already in DOM (e.g., viewing a component directly)
5635            if (document.readyState === "loading") {
5636                document.addEventListener("DOMContentLoaded", () => initOffScreenObserver());
5637            } else {
5638                initOffScreenObserver();
5639            }
5640
5641            // Case 2: elements injected later via loadSection(...)
5642            document.addEventListener("section:loaded", (e) => {
5643                const id = e?.detail?.targetId;
5644                const host = id ? document.getElementById(id) : document;
5645                if (host) initOffScreenObserver(host);
5646            });
5647        })();
5648/* Off Screen Element End */
5649
5650</script>
5650
5651    
5651<script>window.__CF$cv$params={r:'a413c197ae7152a6',t:'MTc5MDQ0MTMwNg==',u:'01a0de9e3c6872eeb728e92affaea4e0',ut:'FWP1gfgv3Ox0XcJwpqXH33L4zOD3GRm2ezepZAszk4Q-1790441307-1.2.1.1-agjLHaS.Ybw8AqaQp4J1hbzWmS3Mw7aR1zxrUy43hB3hEXOgxVOqh1zUwzLNtTS8B9hHHLWLGznRbEz3BaaMNkduLHvXiKq.gdE_G3pJR2Q',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>
5651</body>
5652</html>
5653 

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.