PageSourceSearch

https://martelelectronics.com/about/

html martelelectronics.com collected 2026-09-25 05:21:48 UTC 354,108 bytes, 7,795 lines download raw bytes

1
2<!DOCTYPE html>
3<html class="no-js" lang="en">
4        <head>
5        <title>About Us | Martel Electronics Since 1957</title>
6        <link rel="dns-prefetch preconnect" href="https://cdn11.bigcommerce.com/s-m0o7bk" crossorigin><link rel="dns-prefetch preconnect" href="https://fonts.googleapis.com/" crossorigin><link rel="dns-prefetch preconnect" href="https://fonts.gstatic.com/" crossorigin>
7        <meta name="keywords" content=" "><meta name="description" content="Martel Electronics is the premeire source for dcitation and transcription equipment. We are the first choice for lawyers and Government. "><link rel='canonical' href='https://martelelectronics.com/about/' /><meta name='platform' content='bigcommerce.stencil' />
8        
9         
10
11        <link href="https://cdn11.bigcommerce.com/s-m0o7bk/product_images/Martel%20Fav.png?t=1592514199" rel="shortcut icon">
12        <meta name="viewport" content="width=device-width, initial-scale=1">
13
14        
14<script nonce="">
15            document.documentElement.className = document.documentElement.className.replace('no-js', 'js');
16        </script>
16
17
18        
18<script nonce="">
19    function browserSupportsAllFeatures() {
20        return window.Promise
21            && window.fetch
22            && window.URL
23            && window.URLSearchParams
24            && window.WeakMap
25            // object-fit support
26            && ('objectFit' in document.documentElement.style);
27    }
28
29    function loadScript(src) {
30        var js = document.createElement('script');
31        js.src = src;
32        js.nonce = '';
33        js.onerror = function () {
34            console.error('Failed to load polyfill script ' + src);
35        };
36        document.head.appendChild(js);
37    }
38
39    if (!browserSupportsAllFeatures()) {
40        loadScript('https://cdn11.bigcommerce.com/s-m0o7bk/stencil/dcff4430-4df6-013e-0d67-161549aa1a0e/e/cb041bf0-7fe1-013f-b400-5291dc9d1300/dist/theme-bundle.polyfills.js');
41    }
42</script>
42
43        
43<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>
43
44
45        
45<script nonce="">
46            window.lazySizesConfig = window.lazySizesConfig || {};
47            window.lazySizesConfig.loadMode = 1;
48        </script>
48
49        
49<script async src="https://cdn11.bigcommerce.com/s-m0o7bk/stencil/dcff4430-4df6-013e-0d67-161549aa1a0e/e/cb041bf0-7fe1-013f-b400-5291dc9d1300/dist/theme-bundle.head_async.js" nonce=""></script>
49
50
51            
51<script nonce="">
52                (function() {
53                    var el = document.createElement('head');
54                    el.innerHTML = '<link href="https://fonts.googleapis.com/css?family=Roboto:700,400&display=swap" rel="stylesheet">'.replace('rel="stylesheet"', 'rel="preload" as="style" onload="this.onload=null;this.rel=\'stylesheet\'"');
55                    el.children && el.children[0] && document.head.appendChild(el.children[0]);
56                })();
57            </script>
57
58            <noscript><link href="https://fonts.googleapis.com/css?family=Roboto:700,400&display=swap" rel="stylesheet"></noscript>
59
60            <link data-stencil-stylesheet href="https://cdn11.bigcommerce.com/s-m0o7bk/stencil/dcff4430-4df6-013e-0d67-161549aa1a0e/e/cb041bf0-7fe1-013f-b400-5291dc9d1300/css/theme-7f1539f0-5baf-013f-58a6-6e8db226ea8e.css" rel="stylesheet">
61
62            
62<script nonce="">
63                window.lazySizesConfig.loadHidden = false;
64                window.lazySizesConfig.expand = 0;
65            </script>
65
66            
vendor: 1,210 bytes, line 66
66<script nonce="">!function(n){"use strict";n.loadCSS||(n.loadCSS=function(){});var o=loadCSS.relpreload={};if(o.support=function(){var e;try{e=n.document.createElement("link").relList.supports("preload")}catch(t){e=!1}return function(){return e}}(),o.bindMediaToggle=function(t){var e=t.media||"all";function a(){t.addEventListener?t.removeEventListener("load",a):t.attachEvent&&t.detachEvent("onload",a),t.setAttribute("onload",null),t.media=e}t.addEventListener?t.addEventListener("load",a):t.attachEvent&&t.attachEvent("onload",a),setTimeout(function(){t.rel="stylesheet",t.media="only x"}),setTimeout(a,3e3)},o.poly=function(){if(!o.support())for(var t=n.document.getElementsByTagName("link"),e=0;e<t.length;e++){var a=t[e];"preload"!==a.rel||"style"!==a.getAttribute("as")||a.getAttribute("data-loadcss")||(a.setAttribute("data-loadcss",!0),o.bindMediaToggle(a))}},!o.support()){o.poly();var t=n.setInterval(o.poly,500);n.addEventListener?n.addEventListener("load",function(){o.poly(),n.clearInterval(t)}):n.attachEvent&&n.attachEvent("onload",function(){o.poly(),n.clearInterval(t)})}"undefined"!=typeof exports?exports.loadCSS=loadCSS:n.loadCSS=loadCSS}("undefined"!=typeof global?global:this);</script>
66            <!-- Start Tracking Code for analytics_googleanalytics4 -->
67
68<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 68
68
69<script data-cfasync="false">
70  (function () {
71    window.dataLayer = window.dataLayer || [];
72
73    function gtag(){
74        dataLayer.push(arguments);
75    }
76
77    function initGA4(event) {
78         function setupGtag() {
79            function configureGtag() {
80                gtag('js', new Date());
81                gtag('set', 'developer_id.dMjk3Nj', true);
82                gtag('config', 'G-RV08FZST7N');
83            }
84
85            var script = document.createElement('script');
86
87            script.src = 'https://www.googletagmanager.com/gtag/js?id=G-RV08FZST7N';
88            script.async = true;
89            script.onload = configureGtag;
90
91            document.head.appendChild(script);
92        }
93
94        setupGtag();
95
96        if (typeof subscribeOnBodlEvents === 'function') {
97            subscribeOnBodlEvents('G-RV08FZST7N', true);
98        }
99
100        window.removeEventListener(event.type, initGA4);
101    }
102
103    gtag('consent', 'default', {"ad_storage":"denied","ad_user_data":"denied","ad_personalization":"denied","analytics_storage":"denied","functionality_storage":"denied"})
104            
105
106    var eventName = document.readyState === 'complete' ? 'consentScriptsLoaded' : 'DOMContentLoaded';
107    window.addEventListener(eventName, initGA4, false);
108  })()
109</script>
109
110
111<!-- End Tracking Code for analytics_googleanalytics4 -->
112
113
114<script type="text/javascript" src="https://checkout-sdk.bigcommerce.com/v1/loader.js" defer ></script>
vendor: 1 bytes, line 114
114
115<script>window.consentManagerStoreConfig = function () { return {"storeName":"Martel Electronics","privacyPolicyUrl":"https:\/\/martelelectronics.com\/privacy-policy\/","writeKey":null,"improvedConsentManagerEnabled":true,"AlwaysIncludeScriptsWithConsentTag":true}; };</script>
vendor: 1 bytes, line 115
115
116<script type="text/javascript" src="https://cdn11.bigcommerce.com/shared/js/bodl-consent-32a446f5a681a22e8af09a4ab8f4e4b6deda6487.js" integrity="sha256-uitfaufFdsW9ELiQEkeOgsYedtr3BuhVvA4WaPhIZZY=" crossorigin="anonymous" defer></script>
vendor: 1 bytes, line 116
116
117<script type="text/javascript" src="https://cdn11.bigcommerce.com/shared/js/storefront/consent-manager-config-d53a4773861141b0624d84967b4c0a379d13a5fe.js" defer></script>
vendor: 1 bytes, line 117
117
118<script type="text/javascript" src="https://cdn11.bigcommerce.com/shared/js/storefront/consent-manager-08633fe15aba542118c03f6d45457262fa9fac88.js" defer></script>
vendor: 1 bytes, line 118
118
119<script type="text/javascript">
120var BCData = {};
121</script>
121
122<!-- Google tag (gtag.js) -->
vendor: 64 bytes, lines 122-123
122
123<script async src="https://www.googletagmanager.com/gtag/js?id=
123G-RV08FZST7N
vendor: 13 bytes, lines 123-124
123">
124</script>
125<script>
126  
vendor: 134 bytes, lines 126-130
126window.dataLayer = window.dataLayer || [];
127  function gtag(){dataLayer.push(arguments);}
128  gtag('js', new Date());
129
130  gtag('config', '
130G-RV08FZST7N
vendor: 4 bytes, line 130
130');
131</script>
131<script>
132(function () {
133  "use strict";
134
135  var STYLE_ID = "martel-header-gap-fix-v3-style";
136  var ROOT_CLASS = "martel-header-gap-fix-v3-active";
137
138  function addStyle() {
139    if (document.getElementById(STYLE_ID)) {
140      return;
141    }
142
143    var css = ""
144      + "html." + ROOT_CLASS + ","
145      + "html." + ROOT_CLASS + " body{"
146      + "margin-top:0!important;"
147      + "padding-top:0!important;"
148      + "}"
149      + "html." + ROOT_CLASS + " .header,"
150      + "html." + ROOT_CLASS + " header.header,"
151      + "html." + ROOT_CLASS + " .header-bottom,"
152      + "html." + ROOT_CLASS + " .navPages-container,"
153      + "html." + ROOT_CLASS + " .navPages{"
154      + "margin-bottom:0!important;"
155      + "padding-bottom:0!important;"
156      + "}"
157      + "html." + ROOT_CLASS + " body>.body,"
158      + "html." + ROOT_CLASS + " .body,"
159      + "html." + ROOT_CLASS + " main.body,"
160      + "html." + ROOT_CLASS + " main[role='main'],"
161      + "html." + ROOT_CLASS + " #main-content{"
162      + "margin-top:0!important;"
163      + "padding-top:0!important;"
164      + "}"
165      + "html." + ROOT_CLASS + " .body>.container,"
166      + "html." + ROOT_CLASS + " main.body>.container,"
167      + "html." + ROOT_CLASS + " main[role='main']>.container,"
168      + "html." + ROOT_CLASS + " #main-content>.container,"
169      + "html." + ROOT_CLASS + " .container.page,"
170      + "html." + ROOT_CLASS + " .page{"
171      + "margin-top:0!important;"
172      + "padding-top:0!important;"
173      + "}"
174      + "html." + ROOT_CLASS + " .breadcrumbs,"
175      + "html." + ROOT_CLASS + " .page-heading{"
176      + "margin-top:0!important;"
177      + "padding-top:0!important;"
178      + "}"
179      + "html." + ROOT_CLASS + " [data-content-region='header_top']:empty,"
180      + "html." + ROOT_CLASS + " [data-content-region='header_bottom']:empty,"
181      + "html." + ROOT_CLASS + " [data-content-region='home_below_menu']:empty,"
182      + "html." + ROOT_CLASS + " [data-content-region='home_below_carousel']:empty,"
183      + "html." + ROOT_CLASS + " [data-content-region='page_builder_content']:empty{"
184      + "display:none!important;"
185      + "height:0!important;"
186      + "min-height:0!important;"
187      + "max-height:0!important;"
188      + "margin:0!important;"
189      + "padding:0!important;"
190      + "border:0!important;"
191      + "overflow:hidden!important;"
192      + "}";
193
194    var style = document.createElement("style");
195    style.id = STYLE_ID;
196    style.type = "text/css";
197    style.appendChild(document.createTextNode(css));
198    document.head.appendChild(style);
199  }
200
201  function setImportant(el, property, value) {
202    if (!el) {
203      return;
204    }
205
206    try {
207      el.style.setProperty(property, value, "important");
208    } catch (e) {}
209  }
210
211  function hasRealContent(el) {
212    if (!el) {
213      return true;
214    }
215
216    var text = (el.textContent || "").replace(/\s|\u00a0/g, "");
217
218    if (text.length > 0) {
219      return true;
220    }
221
222    return !!el.querySelector("img,svg,picture,video,iframe,canvas,object,embed,input,button,select,textarea,a[href]");
223  }
224
225  function collapseElement(el) {
226    setImportant(el, "display", "none");
227    setImportant(el, "height", "0");
228    setImportant(el, "min-height", "0");
229    setImportant(el, "max-height", "0");
230    setImportant(el, "margin", "0");
231    setImportant(el, "padding", "0");
232    setImportant(el, "border", "0");
233    setImportant(el, "overflow", "hidden");
234  }
235
236  function collapseIfEmpty(el) {
237    if (!el || hasRealContent(el)) {
238      return;
239    }
240
241    collapseElement(el);
242  }
243
244  function collapseEmptyRegions() {
245    var selectors = [
246      "[data-content-region='header_top']",
247      "[data-content-region='header_bottom']",
248      "[data-content-region='home_below_menu']",
249      "[data-content-region='home_below_carousel']",
250      "[data-content-region='page_builder_content']",
251      ".advTopHeader",
252      ".adv-top-header",
253      ".afterHeader",
254      ".after-header",
255      ".topBanner",
256      ".top-banner",
257      ".header-top-banner",
258      ".header-bottom-banner"
259    ];
260
261    document.querySelectorAll(selectors.join(",")).forEach(collapseIfEmpty);
262  }
263
264  function tightenKnownThemeSpacing() {
265    var selectors = [
266      "html",
267      "body",
268      "header.header",
269      ".header",
270      ".header-bottom",
271      ".navPages-container",
272      ".navPages",
273      "body > .body",
274      ".body",
275      "main.body",
276      "main[role='main']",
277      "#main-content",
278      ".body > .container",
279      "main.body > .container",
280      "main[role='main'] > .container",
281      "#main-content > .container",
282      ".container.page",
283      ".page",
284      ".page-content",
285      ".breadcrumbs",
286      ".page-heading"
287    ];
288
289    document.querySelectorAll(selectors.join(",")).forEach(function (el) {
290      setImportant(el, "margin-top", "0");
291      setImportant(el, "padding-top", "0");
292    });
293
294    document.querySelectorAll("header.header,.header,.header-bottom,.navPages-container,.navPages").forEach(function (el) {
295      setImportant(el, "margin-bottom", "0");
296      setImportant(el, "padding-bottom", "0");
297    });
298  }
299
300  function getHeaderBottom() {
301    var headerCandidates = [
302      ".navPages-container",
303      ".navPages",
304      ".header-bottom",
305      "header.header",
306      ".header"
307    ];
308
309    var bottom = 0;
310
311    headerCandidates.forEach(function (selector) {
312      document.querySelectorAll(selector).forEach(function (el) {
313        var rect = el.getBoundingClientRect();
314
315        if (rect && rect.height > 10) {
316          bottom = Math.max(bottom, rect.bottom + window.pageYOffset);
317        }
318      });
319    });
320
321    return bottom;
322  }
323
324  function getFirstContentElement() {
325    var candidates = [
326      ".breadcrumbs",
327      ".page-heading",
328      ".page-content",
329      ".body > .container",
330      "main.body > .container",
331      "main[role='main'] > .container",
332      "#main-content > .container",
333      ".body",
334      "main.body",
335      "main[role='main']",
336      "#main-content"
337    ];
338
339    for (var i = 0; i < candidates.length; i++) {
340      var list = document.querySelectorAll(candidates[i]);
341
342      for (var j = 0; j < list.length; j++) {
343        var el = list[j];
344        var rect = el.getBoundingClientRect();
345
346        if (rect && rect.height > 5 && rect.top > 0) {
347          return el;
348        }
349      }
350    }
351
352    return null;
353  }
354
355  function pullContentUpToHeader() {
356    var headerBottom = getHeaderBottom();
357    var firstContent = getFirstContentElement();
358
359    if (!headerBottom || !firstContent) {
360      return;
361    }
362
363    var contentTop = firstContent.getBoundingClientRect().top + window.pageYOffset;
364    var gap = Math.round(contentTop - headerBottom);
365
366    if (gap > 8 && gap < 140) {
367      var target = document.querySelector("body > .body") ||
368                   document.querySelector("main.body") ||
369                   document.querySelector("main[role='main']") ||
370                   document.querySelector("#main-content") ||
371                   firstContent;
372
373      setImportant(target, "margin-top", "-" + gap + "px");
374      setImportant(target, "padding-top", "0");
375    }
376  }
377
378  function runFix() {
379    document.documentElement.classList.add(ROOT_CLASS);
380    addStyle();
381    collapseEmptyRegions();
382    tightenKnownThemeSpacing();
383    pullContentUpToHeader();
384  }
385
386  runFix();
387
388  if (document.readyState === "loading") {
389    document.addEventListener("DOMContentLoaded", runFix);
390  }
391
392  window.addEventListener("load", runFix);
393  window.addEventListener("resize", runFix);
394
395  setTimeout(runFix, 100);
396  setTimeout(runFix, 300);
397  setTimeout(runFix, 750);
398  setTimeout(runFix, 1500);
399})();
400</script>
400
401 
401<script data-cfasync="false" src="https://microapps.bigcommerce.com/bodl-events/1.9.4/index.js" integrity="sha256-Y0tDj1qsyiKBRibKllwV0ZJ1aFlGYaHHGl/oUFoXJ7Y=" nonce="" crossorigin="anonymous"></script>
401
402 
402<script data-cfasync="false" nonce="">
403
404 (function() {
405    function decodeBase64(base64) {
406       const text = atob(base64);
407       const length = text.length;
408       const bytes = new Uint8Array(length);
409       for (let i = 0; i < length; i++) {
410          bytes[i] = text.charCodeAt(i);
411       }
412       const decoder = new TextDecoder();
413       return decoder.decode(bytes);
414    }
415    window.bodl = JSON.parse(decodeBase64("eyJzZXNzaW9uIjp7ImlkIjoiMzRjYWI5Y2EtZTBlOC00NGVhLWIzMGYtNzViYmM5MzdkZmMyIiwiZmlyc3RfdG91Y2hfdGltZXN0YW1wIjoiMjAyNi0wOS0yNVQwNToyMTo0OCIsImZpcnN0X3RvdWNoX3JlZmVycmFsX3VybCI6IiIsImZpcnN0X3RvdWNoX3JlcXVlc3RfdXJsIjoiaHR0cHM6Ly9tYXJ0ZWxlbGVjdHJvbmljcy5jb20vYWJvdXQvIn0sInNob3BwZXIiOnsidmlzaXRvcl9pZCI6IiIsImN1c3RvbWVyX2lkIjpudWxsLCJlbWFpbCI6bnVsbCwiZmlyc3RfbmFtZSI6bnVsbCwibGFzdF9uYW1lIjpudWxsfSwiZGF0YV9jb25zZW50Ijp7ImZ1bmN0aW9uYWwiOmZhbHNlLCJhbmFseXRpY3MiOmZhbHNlLCJhZHZlcnRpc2luZyI6ZmFsc2V9LCJldmVudHMiOlt7ImJvZGxfdjFfY29uc2VudF9sb2FkZWQiOnsiZXZlbnRfaWQiOiIzN2E3NDIwNS1lN2M5LTQwYjYtOGJkYy01YTA3ZDBiNmQ2YWUiLCJhZHZlcnRpc2luZyI6ZmFsc2UsImFuYWx5dGljcyI6ZmFsc2UsImZ1bmN0aW9uYWwiOmZhbHNlfX1dfQ=="));
416 })()
417
418 </script>
418
419
420<script nonce="">
421(function () {
422    var xmlHttp = new XMLHttpRequest();
423    
424    xmlHttp.open('POST', 'https://bes.gcp.data.bigcommerce.com/nobot');
425    xmlHttp.setRequestHeader('Content-Type', 'application/json');
426    xmlHttp.send('{"store_id":"500022","timezone_offset":"-7.0","timestamp":"2026-09-25T05:21:48.34599300Z","visit_id":"2c1f524c-4cda-4b98-a3e6-6a256fcc2f6f","channel_id":1}');
427})();
428</script>
428
429
430
431
432        <!-- snippet location htmlhead -->
433
434         
435    </head>
436    <body class="csscolumns papaSupermarket-layout--default
437        papaSupermarket-style--modern
438        papaSupermarket-pageType--page
439        papaSupermarket-page--pages-page
440        emthemesModez-productUniform
441        
442        papaSupermarket--showAllCategoriesMenu
443        papaSupermarket--showSubcategoriesMenu
444        
445        
446        
447        
448        
449        " id="topOfPage">
450
451
452        <!-- snippet location header -->
453        <svg data-src="https://cdn11.bigcommerce.com/s-m0o7bk/stencil/dcff4430-4df6-013e-0d67-161549aa1a0e/e/cb041bf0-7fe1-013f-b400-5291dc9d1300/img/icon-sprite.svg" class="icons-svg-sprite"></svg>
454
455        <div class="banners" data-banner-location="top">
456</div>
457    <div data-emthemesmodez-remote-banner="emthemesModezBannersBlockAdvTopHeader"></div>
458<header class="header" role="banner" >
459    <a href="#" class="mobileMenu-toggle" data-mobile-menu-toggle="menu">
460        <span class="mobileMenu-toggleIcon">Toggle menu</span>
461    </a>
462
463
464    <div class="emthemesModez-header-userSection emthemesModez-header-userSection--logo-left">
465        <div class="container">
466                <div class="header-logo header-logo--left">
467                    <a href="https://martelelectronics.com/" data-instantload='{"page":"home"}'>
468            <img class="header-logo-image-unknown-size" src="https://cdn11.bigcommerce.com/s-m0o7bk/images/stencil/original/download_1783128589__55035.original.png" alt="Martel Electronics Since 1957" title="Martel Electronics Since 1957">
469</a>
470                </div>
471
472            <nav class="navUser">
473    
474    <ul class="navUser-section navUser-section--alt">
475        <li class="navUser-item navUser-item--recentlyViewed">
476            <a class="navUser-action navUser-action--recentlyViewed" href="#recently-viewed" data-dropdown="recently-viewed-dropdown" data-options="align:right" title="Recently Viewed" style="display:none">
477                <i class="icon"><svg><use href="#icon-recent-list" /></svg></i>
478                <span class="navUser-item-recentlyViewedLabel"><span class='firstword'>Recently </span>Viewed</span>
479            </a>
480            <div class="dropdown-menu" id="recently-viewed-dropdown" data-dropdown-content aria-hidden="true"></div>
481        </li>
482
483
484        
485
486            <li class="navUser-item navUser-item--account">
487                <i class="icon"><svg><use href="#icon-user" /></svg></i>
488                <span class="navUser-actions">
489                        <span class="navUser-subtitle">
490                            <a class="navUser-action" href="https://martelelectronics.com/login.php">
491                                <span class="navUser-item-loginLabel">Sign In</span>
492                            </a>
493                        </span>
494                            <a class="navUser-action" href="https://martelelectronics.com/login.php?action=create_account">Register</a>
495                </span>
496            </li>
497
498        <li class="navUser-item navUser-item--cart">
499            <a
500                class="navUser-action navUser-action--cart"
501                data-cart-preview
502                data-dropdown="cart-preview-dropdown"
503                data-options="align:right"
504                href="https://martelelectronics.com/cart.php"
505                title="Cart">
506                <i class="icon"><svg><use href="#icon-cart" /></svg></i>
507                <span class="_rows">
508                    <span class="countPill cart-quantity"></span>
509                    <span class="navUser-item-cartLabel">Cart</span>
510                </span>
511            </a>
512
513            <div class="dropdown-menu" id="cart-preview-dropdown" data-dropdown-content aria-hidden="true"></div>
514        </li>
515    </ul>
516</nav>
517
518            <div class="emthemesModez-quickSearch" data-prevent-quick-search-close>
519    <!-- snippet location forms_search -->
520    <form class="form" action="https://martelelectronics.com/search.php">
521        <fieldset class="form-fieldset">
522            <div class="form-field">
523                <label class="is-srOnly" for="search_query">Search</label>
524                <div class="form-prefixPostfix wrap">
525                    <input class="form-input" data-search-quick name="search_query" id="search_query" data-error-message="Search f
525ield cannot be empty." placeholder="Search the store" autocomplete="off">
526                    <input type="submit" class="button button--primary form-prefixPostfix-button--postfix" value="Search" />
527                </div>
528            </div>
529        </fieldset>
530    </form>
531</div>        </div>
532    </div>
533
534    <div class="navPages-container" id="menu" data-menu>
535        <div class="container">
536            <nav class="navPages">
537
538        <div class="emthemesModez-navPages-verticalCategories-container">
539            <a class="navPages-action has-subMenu" role="none">Categories</a>
540            <div class="emthemesModez-verticalCategories is-open " id="emthemesModez-verticalCategories" data-emthemesmodez-fix-height="emthemesModez-section1-container">
541                <ul class="navPages-list navPages-list--categories">
542
543                            <li class="navPages-item">
544                                <a class="navPages-action" href="https://martelelectronics.com/court-reporter-laptop/" data-instantload >Elite Court Reporter Laptop </a>
545                            </li>
546                            <li class="navPages-item">
547                                <a class="navPages-action" href="https://martelelectronics.com/voice-writers-vox-dragon-laptops/" data-instantload >Voice Writers Vox Dragon Laptops</a>
548                            </li>
549                            <li class="navPages-item">
550                                <a class="navPages-action" href="https://martelelectronics.com/digital-court-reporter-5000-recorders/" data-instantload >Digital Court Reporter 5000 Recorders</a>
551                            </li>
552                            <li class="navPages-item">
553                                <a class="navPages-action" href="https://martelelectronics.com/court-reporter-microphones/" data-instantload >Court Reporter Microphones</a>
554                            </li>
555                            <li class="navPages-item">
556                                <a class="navPages-action" href="https://martelelectronics.com/court-reporter-digital-recorders-1/" data-instantload >Court Reporter Digital Recorders</a>
557                            </li>
558                            <li class="navPages-item">
559                                <a class="navPages-action has-subMenu " href="https://martelelectronics.com/court-reporting-recorders-microphones-equipment/"
560    data-instantload
561    
562    data-collapsible="navPages-19"
563    data-collapsible-disabled-breakpoint="medium"
564    data-collapsible-disabled-state="open"
565    data-collapsible-enabled-state="closed">
566    Court Reporting Recorders &amp; Microphones <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use href="#icon-caret-down" /></svg></i>
567</a>
568<div class="navPage-subMenu
569    " id="navPages-19" aria-hidden="true" tabindex="-1">
570    <ul class="navPage-subMenu-list">
571        <li class="navPage-subMenu-item">
572            <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/court-reporting-recorders-microphones-equipment/" data-instantload>All Court Reporting Recorders &amp; Microphones</a>
573        </li>
574            <li class="navPage-subMenu-item">
575                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/court-reporter-steno-writer-microphones/" data-instantload >Court Reporter Steno Writer Microphones</a>
576            </li>
577            <li class="navPage-subMenu-item">
578                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/stenomask-equipment-packages/" data-instantload >Stenomask Equipment Packages</a>
579            </li>
580            <li class="navPage-subMenu-item">
581                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/courtroom-recorders/" data-instantload >Courtroom Recorders</a>
582            </li>
583            <li class="navPage-subMenu-item">
584                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/dm246-courtroom-recorder-system-for-courts/" data-instantload >DM246 Courtroom Recorder System for Courts</a>
585            </li>
586            <li class="navPage-subMenu-item">
587                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/stenomask-microphones-for-court-reporters/" data-instantload >Stenomask Microphones for Court Reporters</a>
588            </li>
589            <li class="navPage-subMenu-item">
590                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/court-reporter-wireless-microphones/" data-instantload >Court Reporter Wireless Microphones</a>
591            </li>
592    </ul>
593</div>
594                            </li>
595                            <li class="navPages-item">
596                                <a class="navPages-action" href="https://martelelectronics.com/stenomask-microphones/" data-instantload >Stenomask  | Microphones</a>
597                            </li>
598                            <li class="navPages-item">
599                                <a class="navPages-action" href="https://martelelectronics.com/transcription/" data-instantload >Transcription kits </a>
600                            </li>
601                            <li class="navPages-item">
602                                <a class="navPages-action" href="https://martelelectronics.com/zoom-court-reporting/" data-instantload >Zoom Court Reporting</a>
603                            </li>
604                            <li class="navPages-item">
605                                <a class="navPages-action" href="https://martelelectronics.com/hybrid-deposition-audio-setup-for-court-reporters/" data-instantload >
605Hybrid Deposition Audio Setup for Court Reporters</a>
606                            </li>
607                            <li class="navPages-item">
608                                <a class="navPages-action has-subMenu " href="https://martelelectronics.com/voice-recorders/"
609    data-instantload
610    
611    data-collapsible="navPages-40"
612    data-collapsible-disabled-breakpoint="medium"
613    data-collapsible-disabled-state="open"
614    data-collapsible-enabled-state="closed">
615    Voice Recorders <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use href="#icon-caret-down" /></svg></i>
616</a>
617<div class="navPage-subMenu
618    " id="navPages-40" aria-hidden="true" tabindex="-1">
619    <ul class="navPage-subMenu-list">
620        <li class="navPage-subMenu-item">
621            <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/voice-recorders/" data-instantload>All Voice Recorders</a>
622        </li>
623            <li class="navPage-subMenu-item">
624                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/conference-recorders/" data-instantload >Conference Recorders</a>
625            </li>
626            <li class="navPage-subMenu-item">
627                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/dictation-machine-/" data-instantload >Dictation Machine </a>
628            </li>
629            <li class="navPage-subMenu-item">
630                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/professional-dictation-recorders/" data-instantload >Professional Dictation Recorders</a>
631            </li>
632            <li class="navPage-subMenu-item">
633                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/consumer-dictation-recorders-1/" data-instantload >Consumer Dictation Recorders</a>
634            </li>
635            <li class="navPage-subMenu-item">
636                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/legal-dictation-recorders/" data-instantload >Legal Dictation Recorders</a>
637            </li>
638            <li class="navPage-subMenu-item">
639                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/court-reporter-digital-recorders/" data-instantload >Court Reporter Digital Recorders</a>
640            </li>
641            <li class="navPage-subMenu-item">
642                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/dictaphone-1/" data-instantload >Dictaphone</a>
643            </li>
644    </ul>
645</div>
646                            </li>
647                            <li class="navPages-item">
648                                <a class="navPages-action" href="https://martelelectronics.com/zoom-multiple-microphones/" data-instantload >Zoom Multiple Microphones </a>
649                            </li>
650                            <li class="navPages-item">
651                                <a class="navPages-action" href="https://martelelectronics.com/courtroom-recording-software/" data-instantload >Courtroom Recording Software </a>
652                            </li>
653                            <li class="navPages-item">
654                                <a class="navPages-action has-subMenu " href="https://martelelectronics.com/dictation-recorders/"
655    data-instantload
656    
657    data-collapsible="navPages-3"
658    data-collapsible-disabled-breakpoint="medium"
659    data-collapsible-disabled-state="open"
660    data-collapsible-enabled-state="closed">
661    Dictation Recorders <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use href="#icon-caret-down" /></svg></i>
662</a>
663<div class="navPage-subMenu
664    " id="navPages-3" aria-hidden="true" tabindex="-1">
665    <ul class="navPage-subMenu-list">
666        <li class="navPage-subMenu-item">
667            <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/dictation-recorders/" data-instantload>All Dictation Recorders</a>
668        </li>
669            <li class="navPage-subMenu-item">
670                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/dictation-transcription-packages/" data-instantload >Dictation &amp; Transcription Packages</a>
671            </li>
672            <li class="navPage-subMenu-item">
673                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/dictation-machines/" data-instantload >Dictation Machines </a>
674            </li>
675            <li class="navPage-subMenu-item">
676                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/consumer-dictation-recorders/" data-instantload >Consumer Dictation Recorders</a>
677            </li>
678            <li class="navPage-subMenu-item">
679                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/dictation-recorder-management-software/" data-instantload >Dictation Recorder Management Software</a>
680            </li>
681            <li class="navPage-subMenu-item">
682                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/dictation-microphones/" data-instantload >Dictation Microphones</a>
683            </li>
684    </ul>
685</div>
686                            </li>
687                            <li class="navPages-item">
688                                <a class="navPages-action" href="https://martelelectronics.com/police-car-cameras/" data-instantload >Police Car Cameras Systems</a>
689                            </li>
690                            <li class="navPages-item">
691                                <a class="navPages-action" href="https://martelelectronics.com/police-body-camera-packages/" data-instantload >Police Body Camera Packages</a>
692                            </li>
693                            <li class="navPages-item">
694                                <a class="navPages-action has-subMenu " href="https://martelelectronics.com/accessories/"
695    data-instantload
696    
697    data-collapsible="navPages-21"
698    data-collapsible-disabled-breakpoint="medium"
699    data-collapsible-disabled-state="open"
700    data-collapsible-enabled-state="closed">
701    Accessories <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use href="#icon-caret-down" /></svg></i>
702</a>
703<div class="navPage-subMenu
704    " id="navPages-21" aria-hidden="true" tabindex="-1">
705    <ul class="navPage-subMenu-list">
706        <li class="navPage-subMenu-item">
707            <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/accessories/" data-instantload>All Accessories</a>
708        </li>
709            <li class="navPage-subMenu-item">
710                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/headsets/" data-instantload >Headsets</a>
711            </li>
712            <li class="navPage-subMenu-item">
713                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/transcription-foot-pedals/" data-instantload >Transcription Foot Pedals</a>
714            </li>
715            <li class="navPage-subMenu-item">
716                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/ac-power-cables/" data-instantload >AC Power Cables</a>
717            </li>
718            <li class="navPage-subMenu-item">
719                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/wireless-microphone-systems-for-courts-meetings/" data-instantload >Wireless Microphone Systems for Courts/Meetings </a>
720            </li>
721            <li class="navPage-subMenu-item">
722                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/docking-cradles-for-dictation-machines-recorders/" data-instantload >Docking Cradles for Dictation Machines Recorders</a>
723            </li>
724            <li class="navPage-subMenu-item">
725                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/telephone-recording-microphones-h
725ookups/" data-instantload >Telephone Recording Microphones &amp; Hookups</a>
726            </li>
727            <li class="navPage-subMenu-item">
728                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/memory-cards/" data-instantload >Memory Cards</a>
729            </li>
730            <li class="navPage-subMenu-item">
731                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/cables/" data-instantload >Cables</a>
732            </li>
733            <li class="navPage-subMenu-item">
734                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/batteries/" data-instantload >Batteries</a>
735            </li>
736            <li class="navPage-subMenu-item">
737                    <a class="navPage-subMenu-action navPages-action" href="https://martelelectronics.com/bonus/" data-instantload >Bonus </a>
738            </li>
739            <li class="navPage-subMenu-item">
740                    <a
741                        class="navPage-subMenu-action navPages-action has-subMenu"
742                        href="https://martelelectronics.com/learning/"
743                        data-instantload
744                        
745                        data-collapsible="navPages-64"
746                        data-collapsible-disabled-breakpoint="medium"
747                        data-collapsible-disabled-state="open"
748                        data-collapsible-enabled-state="closed">
749                        Learning  <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use href="#icon-caret-down" /></svg></i>
750                    </a>
751                    <ul class="navPage-childList" id="navPages-64">
752                        <li class="navPage-childList-item">
753                            <a class="navPage-childList-action navPages-action" href="https://martelelectronics.com/learning/" data-instantload>All Learning </a>
754                        </li>
755                        <li class="navPage-childList-item">
756                                <a class="navPage-childList-action navPages-action" data-instantload href="https://martelelectronics.com/other-items/" >Other Items</a>
757                        </li>
758                    </ul>
759            </li>
760    </ul>
761</div>
762                            </li>
763                    
764                </ul>
765            </div>
766        </div>
767    
768    
769        <ul class="navPages-list">
770                <li class="navPages-item">
771                    
772        <a class="navPages-action" data-instantload href="https://martelelectronics.com/warranty/">warranty</a>
773    
774                </li>
775                <li class="navPages-item">
776                    
777        <a class="navPages-action" data-instantload href="https://martelelectronics.com/help/">Help</a>
778
779
780                </li>
781                <li class="navPages-item">
782                    
783        <a class="navPages-action" data-instantload href="https://martelelectronics.com/about/">About</a>
784
785
786                </li>
787                <li class="navPages-item">
788                    
789        <a class="navPages-action" data-instantload href="https://martelelectronics.com/dc7/">DC7</a>
790
791
792                </li>
793                <li class="navPages-item">
794                    
795        <a class="navPages-action has-subMenu" href="https://martelelectronics.com/purchase-order/" 
796            data-instantload
797            data-collapsible="navPages-page-4"
798            data-collapsible-disabled-breakpoint="medium"
799            data-collapsible-disabled-state="open"
800            data-collapsible-enabled-state="closed">
801            Purchase Order  <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use href="#icon-caret-down" /></svg></i>
802        </a>
803        <div class="navPage-subMenu navPage-subMenu--standard" id="navPages-page-4" aria-hidden="true" tabindex="-1">
804            <ul class="navPage-subMenu-list">
805                <li class="navPage-subMenu-item">
806                    <a class="navPage-subMenu-action navPages-action" data-instantload href="https://martelelectronics.com/purchase-order/">Purchase Order </a>
807                </li>
808                    <li class="navPage-subMenu-item">
809                            <a class="navPage-subMenu-action navPages-action" data-instantload href="https://martelelectronics.com/written-quotes/">Written Quotes </a>
810                    </li>
811            </ul>
812        </div>
813
814                </li>
815                <li class="navPages-item">
816                    
817        <a class="navPages-action has-subMenu" href="https://martelelectronics.com/contact-us/" 
818            data-instantload
819            data-collapsible="navPages-page-5"
820            data-collapsible-disabled-breakpoint="medium"
821            data-collapsible-disabled-state="open"
822            data-collapsible-enabled-state="closed">
823            Contact Us <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use href="#icon-caret-down" /></svg></i>
824        </a>
825        <div class="navPage-subMenu navPage-subMenu--standard" id="navPages-page-5" aria-hidden="true" tabindex="-1">
826            <ul class="navPage-subMenu-list">
827                <li class="navPage-subMenu-item">
828                    <a class="navPage-subMenu-action navPages-action" data-instantload href="https://martelelectronics.com/contact-us/">Contact Us</a>
829                </li>
830                <li class="navPage-subMenu-item">
831                    <a class="navPage-subMenu-action navPages-action" data-instantload href="/help/">Technical Support</a>
832                </li>
833                <li class="navPage-subMenu-item">
834                    <a class="navPage-subMenu-action navPages-action" data-instantload href="/written-quotes/">Written Quotes</a>
835                </li>
836                <li class="navPage-subMenu-item">
837                    <a class="navPage-subMenu-action navPages-action" data-instantload href="/purchase-order/">Purchase Orders</a>
838                </li>
839                <li class="navPage-subMenu-item">
840                    <a class="navPage-subMenu-action navPages-action" data-instantload href="/police-car-cameras/">Police Car Cameras</a>
841                </li>
842                <li class="navPage-subMenu-item">
843                    <a class="navPage-subMenu-action navPages-action" data-instantload href="/police-body-camera-packages/">Police Body Camera Packages</a>
844                </li>
845                <li class="navPage-subMenu-item">
846                    <a class="navPage-subMenu-action navPages-action" data-instantload href="/expert-advice-free-support/">Expert Advice &amp; Free Support</a>
847                </li>
848                <li class="navPage-subMenu-item">
849                    <a class="navPage-subMenu-action navPages-action" data-instantload href="/support/">Support</a>
850                </li>
851                <li class="navPage-subMenu-item">
852                    <a class="navPage-subMenu-action navPages-action" data-instantload href="/repair-forms/">Repair Forms</a>
853                </li>
854                <li class="navPage-subMenu-item">
855                    <a class="navPage-subMenu-action navPages-action" data-instantload href="/terms-conditions/">Terms &amp; Conditions</a>
856                </li>
857                <li class="navPage-subMenu-item">
858                    <a class="navPage-subMenu-action navPages-action" data-instantload href="/privacy-policy/">Privacy Policy</a>
859                </li>
860                <li class="navPage-subMenu-item">
861                    <a class="navPage-subMenu-action navPages-action" data-instantload href="/return-exchange/">Return Policy</a>
862                </li>
863                <li class="navPage-subMenu-item">
864                    <a class="navPage-subMenu-action navPages-action" data-instantload href="/login.php">Buy Again</a>
865                </li>
866            </ul>
867        </div>
868
869
870                </li>
871                <li class="navPages-item">
872                    
873        <a class="navPages-action" data-instantload href="https://martelelectronics.com/accessibility-statement/">Accessibility Statement</a>
874
875
876                </li>
877                <li class="navPages-item">
878                    
879        <a class="navPages-action has-subMenu" href="https://martelelectronics.com/30-day-return-policy/" 
880            data-instantload
881            data-collapsible="navPages-page-7"
882            data-collapsible-disabled-breakpoint="medium"
883            data-collapsible-disabled-state="open"
884            data-collapsible-enabled-state="closed">
885            30-Day Return Policy <i class="icon navPages-action-moreIcon" aria-hidden="true"><svg><use href="#icon-caret-down" /></svg></i>
886        </a>
887        <div class="navPage-subMenu navPage-subMenu--standard" id="navPages-p
887age-7" aria-hidden="true" tabindex="-1">
888            <ul class="navPage-subMenu-list">
889                <li class="navPage-subMenu-item">
890                    <a class="navPage-subMenu-action navPages-action" data-instantload href="https://martelelectronics.com/30-day-return-policy/">30-Day Return Policy</a>
891                </li>
892                    <li class="navPage-subMenu-item">
893                            <a class="navPage-subMenu-action navPages-action" data-instantload href="https://martelelectronics.com/free-shipping/">Free Shipping</a>
894                    </li>
895            </ul>
896        </div>
897
898                </li>
899        </ul>
900    <ul class="navPages-list navPages-list--user _showTopHeader">
901            <li class="navPages-item">
902                <a class="navPages-action" href="https://martelelectronics.com/login.php">Sign In</a>
903                    <a class="navPages-action" href="https://martelelectronics.com/login.php?action=create_account">Register</a>
904            </li>
905
906        <li class="navPages-item navPages-item--phone">
907            <a class="navPages-action" href="tel:(800) 553-5536">
908                <i class="icon"><svg><use href="#icon-phone-solid" /></svg></i>
909                <span>(800) 553-5536</span>
910            </a>
911        </li>
912    </ul>
913
914</nav>        </div>
915    </div>
916
917    <div data-content-region="header_navigation_bottom--global"><div data-layout-id="9535a5c1-e6b7-4d7a-9bff-acdfbd6713ca">       <div data-sub-layout-container="f3d3b33a-e83b-4218-9bba-01df3d5658ec" data-layout-name="Layout">
918    <style data-container-styling="f3d3b33a-e83b-4218-9bba-01df3d5658ec">
919        [data-sub-layout-container="f3d3b33a-e83b-4218-9bba-01df3d5658ec"] {
920            box-sizing: border-box;
921            display: flex;
922            flex-wrap: wrap;
923            z-index: 0;
924            position: relative;
925            height: ;
926            padding-top: 0px;
927            padding-right: 0px;
928            padding-bottom: 0px;
929            padding-left: 0px;
930            margin-top: 0px;
931            margin-right: 0px;
932            margin-bottom: 0px;
933            margin-left: 0px;
934            border-width: 0px;
935            border-style: solid;
936            border-color: #333333;
937        }
938
939        [data-sub-layout-container="f3d3b33a-e83b-4218-9bba-01df3d5658ec"]:after {
940            display: block;
941            position: absolute;
942            top: 0;
943            left: 0;
944            bottom: 0;
945            right: 0;
946            background-size: cover;
947            z-index: auto;
948        }
949    </style>
950
951    <div data-sub-layout="8339cea4-e354-40a5-aae8-9d30f106557c">
952        <style data-column-styling="8339cea4-e354-40a5-aae8-9d30f106557c">
953            [data-sub-layout="8339cea4-e354-40a5-aae8-9d30f106557c"] {
954                display: flex;
955                flex-direction: column;
956                box-sizing: border-box;
957                flex-basis: 100%;
958                max-width: 100%;
959                z-index: 0;
960                position: relative;
961                height: ;
962                padding-top: 0px;
963                padding-right: 10.5px;
964                padding-bottom: 0px;
965                padding-left: 10.5px;
966                margin-top: 0px;
967                margin-right: 0px;
968                margin-bottom: 0px;
969                margin-left: 0px;
970                border-width: 0px;
971                border-style: solid;
972                border-color: #333333;
973                justify-content: center;
974            }
975            [data-sub-layout="8339cea4-e354-40a5-aae8-9d30f106557c"]:after {
976                display: block;
977                position: absolute;
978                top: 0;
979                left: 0;
980                bottom: 0;
981                right: 0;
982                background-size: cover;
983                z-index: auto;
984            }
985            @media only screen and (max-width: 700px) {
986                [data-sub-layout="8339cea4-e354-40a5-aae8-9d30f106557c"] {
987                    flex-basis: 100%;
988                    max-width: 100%;
989                }
990            }
991        </style>
992    </div>
993</div>
994
995</div></div>
996</header>
997
998<div class="emthemesModez-quickSearch emthemesModez-quickSearch--mobileOnly" data-prevent-quick-search-close>
999    <!-- snippet location forms_search -->
1000    <form class="form" action="https://martelelectronics.com/search.php">
1001        <fieldset class="form-fieldset">
1002            <div class="form-field">
1003                <label class="is-srOnly" for="search_query_mobile">Search</label>
1004                <div class="form-prefixPostfix wrap">
1005                    <input class="form-input" data-search-quick name="search_query" id="search_query_mobile" data-error-message="Search f
1005ield cannot be empty." placeholder="Search the store" autocomplete="off">
1006                    <input type="submit" class="button button--primary form-prefixPostfix-button--postfix" value="Search" />
1007                </div>
1008            </div>
1009        </fieldset>
1010    </form>
1011</div>
1012<div class="dropdown dropdown--quickSearch" id="quickSearch" aria-hidden="true" tabindex="-1" data-prevent-quick-search-close>
1013    <div class="container">
1014        <section class="quickSearchResults" data-bind="html: results"></section>
1015    </div>
1016</div>
1017<div class="emthemesModez-overlay"></div>
1018
1019<div data-content-region="header_bottom--global"></div>
1020<div data-content-region="header_bottom"><div data-layout-id="7184fc46-3907-45c5-a57d-7729654eafe6">       <div data-sub-layout-container="708a2357-2545-4cf5-a6d2-6bd1d2b38f79" data-layout-name="Layout">
1021    <style data-container-styling="708a2357-2545-4cf5-a6d2-6bd1d2b38f79">
1022        [data-sub-layout-container="708a2357-2545-4cf5-a6d2-6bd1d2b38f79"] {
1023            box-sizing: border-box;
1024            display: flex;
1025            flex-wrap: wrap;
1026            z-index: 0;
1027            position: relative;
1028            height: ;
1029            padding-top: 0px;
1030            padding-right: 0px;
1031            padding-bottom: 0px;
1032            padding-left: 0px;
1033            margin-top: 0px;
1034            margin-right: 0px;
1035            margin-bottom: 0px;
1036            margin-left: 0px;
1037            border-width: 0px;
1038            border-style: solid;
1039            border-color: #333333;
1040        }
1041
1042        [data-sub-layout-container="708a2357-2545-4cf5-a6d2-6bd1d2b38f79"]:after {
1043            display: block;
1044            position: absolute;
1045            top: 0;
1046            left: 0;
1047            bottom: 0;
1048            right: 0;
1049            background-size: cover;
1050            z-index: auto;
1051        }
1052    </style>
1053
1054    <div data-sub-layout="7a34c50e-85bf-4ef7-b6bf-9da70d529d2a">
1055        <style data-column-styling="7a34c50e-85bf-4ef7-b6bf-9da70d529d2a">
1056            [data-sub-layout="7a34c50e-85bf-4ef7-b6bf-9da70d529d2a"] {
1057                display: flex;
1058                flex-direction: column;
1059                box-sizing: border-box;
1060                flex-basis: 100%;
1061                max-width: 100%;
1062                z-index: 0;
1063                position: relative;
1064                height: ;
1065                padding-top: 0px;
1066                padding-right: 10.5px;
1067                padding-bottom: 0px;
1068                padding-left: 10.5px;
1069                margin-top: 0px;
1070                margin-right: 0px;
1071                margin-bottom: 0px;
1072                margin-left: 0px;
1073                border-width: 0px;
1074                border-style: solid;
1075                border-color: #333333;
1076                justify-content: center;
1077            }
1078            [data-sub-layout="7a34c50e-85bf-4ef7-b6bf-9da70d529d2a"]:after {
1079                display: block;
1080                position: absolute;
1081                top: 0;
1082                left: 0;
1083                bottom: 0;
1084                right: 0;
1085                background-size: cover;
1086                z-index: auto;
1087            }
1088            @media only screen and (max-width: 700px) {
1089                [data-sub-layout="7a34c50e-85bf-4ef7-b6bf-9da70d529d2a"] {
1090                    flex-basis: 100%;
1091                    max-width: 100%;
1092                }
1093            }
1094        </style>
1095    </div>
1096</div>
1097
1098</div></div>
1099
1100    <div data-emthemesmodez-remote-banner="emthemesModezBannersBlockAfterHeader"></div>
1101        <div class="body" data-currency-code="USD">
1102     
1103    <div class="container">
1104        
1105<main class="page">
1106
1107
1108    <div class="page-content page-content--centered">
1109        <nav aria-label="Breadcrumb">
1110    <ol class="breadcrumbs">
1111            <li class="breadcrumb ">
1112                    <a data-instantload href="https://martelelectronics.com/" class="breadcrumb-label">
1113                        <span>Home</span>
1114                    </a>
1115            </li>
1116            <li class="breadcrumb is-active">
1117                    <span class="breadcrumb-label" aria-current="page">
1118                        <span>About</span>
1119                    </span>
1120            </li>
1121    </ol>
1122</nav>
1123
1124<script type="application/ld+json" nonce="">
1125{
1126    "@context": "https://schema.org",
1127    "@type": "BreadcrumbList",
1128    "itemListElement": [
1129        {
1130            "@type": "ListItem",
1131            "position": 1,
1132            "name": "Home",
1133            "item": "https:\u002f\u002fmartelelectronics.com\u002f"
1134        },
1135        {
1136            "@type": "ListItem",
1137            "position": 2,
1138            "name": "About"
1139        }
1140    ]
1141}
1142</script>
1142        <h1 class="page-heading">About</h1>
1143
1144        <div data-content-region="page_builder_content--global"><div data-layout-id="4ba2b79d-fc24-4a53-a08c-bc7c247f0d58">       <div data-sub-layout-container="7634e96e-4ac2-4df3-a73b-cdef9f329477" data-layout-name="Layout">
1145    <style data-container-styling="7634e96e-4ac2-4df3-a73b-cdef9f329477">
1146        [data-sub-layout-container="7634e96e-4ac2-4df3-a73b-cdef9f329477"] {
1147            box-sizing: border-box;
1148            display: flex;
1149            flex-wrap: wrap;
1150            z-index: 0;
1151            position: relative;
1152            height: ;
1153            padding-top: 0px;
1154            padding-right: 0px;
1155            padding-bottom: 0px;
1156            padding-left: 0px;
1157            margin-top: 0px;
1158            margin-right: 0px;
1159            margin-bottom: 0px;
1160            margin-left: 0px;
1161            border-width: 0px;
1162            border-style: solid;
1163            border-color: #333333;
1164        }
1165
1166        [data-sub-layout-container="7634e96e-4ac2-4df3-a73b-cdef9f329477"]:after {
1167            display: block;
1168            position: absolute;
1169            top: 0;
1170            left: 0;
1171            bottom: 0;
1172            right: 0;
1173            background-size: cover;
1174            z-index: auto;
1175        }
1176    </style>
1177
1178    <div data-sub-layout="20c85e26-7e45-421a-8000-53430ffce83f">
1179        <style data-column-styling="20c85e26-7e45-421a-8000-53430ffce83f">
1180            [data-sub-layout="20c85e26-7e45-421a-8000-53430ffce83f"] {
1181                display: flex;
1182                flex-direction: column;
1183                box-sizing: border-box;
1184                flex-basis: 100%;
1185                max-width: 100%;
1186                z-index: 0;
1187                position: relative;
1188                height: ;
1189                padding-top: 0px;
1190                padding-right: 10.5px;
1191                padding-bottom: 0px;
1192                padding-left: 10.5px;
1193                margin-top: 0px;
1194                margin-right: 0px;
1195                margin-bottom: 0px;
1196                margin-left: 0px;
1197                border-width: 0px;
1198                border-style: solid;
1199                border-color: #333333;
1200                justify-content: center;
1201            }
1202            [data-sub-layout="20c85e26-7e45-421a-8000-53430ffce83f"]:after {
1203                display: block;
1204                position: absolute;
1205                top: 0;
1206                left: 0;
1207                bottom: 0;
1208                right: 0;
1209                background-size: cover;
1210                z-index: auto;
1211            }
1212            @media only screen and (max-width: 700px) {
1213                [data-sub-layout="20c85e26-7e45-421a-8000-53430ffce83f"] {
1214                    flex-basis: 100%;
1215                    max-width: 100%;
1216                }
1217            }
1218        </style>
1219    </div>
1220</div>
1221
1222</div></div>
1223        <div data-content-region="page_builder_content"><div data-layout-id="81231f78-839b-413d-97f0-904868a42b4b">       <div data-sub-layout-container="58d1a9ea-7087-43be-8724-0c02080c1497" data-layout-name="Layout">
1224    <style data-container-styling="58d1a9ea-7087-43be-8724-0c02080c1497">
1225        [data-sub-layout-container="58d1a9ea-7087-43be-8724-0c02080c1497"] {
1226            box-sizing: border-box;
1227            display: flex;
1228            flex-wrap: wrap;
1229            z-index: 0;
1230            position: relative;
1231            height: ;
1232            padding-top: 0px;
1233            padding-right: 0px;
1234            padding-bottom: 0px;
1235            padding-left: 0px;
1236            margin-top: 0px;
1237            margin-right: 0px;
1238            margin-bottom: 0px;
1239            margin-left: 0px;
1240            border-width: 0px;
1241            border-style: solid;
1242            border-color: #333333;
1243        }
1244
1245        [data-sub-layout-container="58d1a9ea-7087-43be-8724-0c02080c1497"]:after {
1246            display: block;
1247            position: absolute;
1248            top: 0;
1249            left: 0;
1250            bottom: 0;
1251            right: 0;
1252            background-size: cover;
1253            z-index: auto;
1254        }
1255    </style>
1256
1257    <div data-sub-layout="f9860a76-a2fb-4be0-8456-6e070a9c6317">
1258        <style data-column-styling="f9860a76-a2fb-4be0-8456-6e070a9c6317">
1259            [data-sub-layout="f9860a76-a2fb-4be0-8456-6e070a9c6317"] {
1260                display: flex;
1261                flex-direction: column;
1262                box-sizing: border-box;
1263                flex-basis: 100%;
1264                max-width: 100%;
1265                z-index: 0;
1266                position: relative;
1267                height: ;
1268                padding-top: 0px;
1269                padding-right: 10.5px;
1270                padding-bottom: 0px;
1271                padding-left: 10.5px;
1272                margin-top: 0px;
1273                margin-right: 0px;
1274                margin-bottom: 0px;
1275                margin-left: 0px;
1276                border-width: 0px;
1277                border-style: solid;
1278                border-color: #333333;
1279                justify-content: center;
1280            }
1281            [data-sub-layout="f9860a76-a2fb-4be0-8456-6e070a9c6317"]:after {
1282                display: block;
1283                position: absolute;
1284                top: 0;
1285                left: 0;
1286                bottom: 0;
1287                right: 0;
1288                background-size: cover;
1289                z-index: auto;
1290            }
1291            @media only screen and (max-width: 700px) {
1292                [data-sub-layout="f9860a76-a2fb-4be0-8456-6e070a9c6317"] {
1293                    flex-basis: 100%;
1294                    max-width: 100%;
1295                }
1296            }
1297        </style>
1298    </div>
1299</div>
1300
1301</div></div>
1302
1303            <div style="max-width: 1440px; margin: 0 auto; padding: 34px 14px; background: #eef3f8; font-family: Arial, Helvetica, sans-serif; color: #0f172a;">
1304<div style="display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 18px;">
1305<div style="flex: 1 1 220px; background: #ffffff; border: 1px solid #d7e0ea; border-radius: 18px; padding: 14px 16px; box-shadow: 0 10px 24px rgba(15,23,42,0.04);">
1306<div style="font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; color: #123f83; margin-bottom: 4px;">Martel History</div>
1307<div style="font-size: 16px; font-weight: 800; color: #0b1f3a; line-height: 1.35;">Serving customers since 1957</div>
1308</div>
1309<div style="flex: 1 1 220px; background: #ffffff; border: 1px solid #d7e0ea; border-radius: 18px; padding: 14px 16px; box-shadow: 0 10px 24px rgba(15,23,42,0.04);">
1310<div style="font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; color: #123f83; margin-bottom: 4px;">Headquarters</div>
1311<div style="font-size: 16px; font-weight: 800; color: #0b1f3a; line-height: 1.35;">Yorba Linda, California</div>
1312</div>
1313<div style="flex: 1 1 220px; background: #ffffff; border: 1px solid #d7e0ea; border-radius: 18px; padding: 14px 16px; box-shadow: 0 10px 24px rgba(15,23,42,0.04);">
1314<div style="font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; color: #123f83; margin-bottom: 4px;">Government &amp; Professional Buyers</div>
1315<div style="font-size: 16px; font-weight: 800; color: #0b1f3a; line-height: 1.35;">Decades of specialty equipment support</div>
1316</div>
1317<div style="flex: 1 1 220px; background: #ffffff; border: 1px solid #d7e0ea; border-radius: 18px; padding: 14px 16px; box-shadow: 0 10px 24px rgba(15,23,42,0.04);">
1318<div style="font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; color: #123f83; margin-bottom: 4px;">Direct Support</div>
1319<div style="font-size: 16px; font-weight: 800; color: #0b1f3a; line-height: 1.35;">Expert product knowledge and customer response</div>
1320</div>
1321</div>
1322<div style="display: flex; flex-wrap: wrap; gap: 22px; align-items: stretch; margin-bottom: 22px;">
1323<div style="flex: 1 1 760px; min-width: 320px; background: linear-gradient(180deg,#0f2f67 0%,#173f87 100%); border: 1px solid #0e346f; border-radius: 30px; padding: 34px; box-shadow: 0 18px 42px rgba(12,33,74,0.18); color: #ffffff;">
1324<div style="display: inline-block; background: #ffd23b; color: #0f2f67; font-size: 12px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; border-radius: 999px; padding: 9px 14px; margin-bottom: 16px;">About</div>
1325<h1 style="margin: 0 0 14px; font-size: 50px; line-height: 1.04; font-weight: 800; color: #ffffff; max-width: 920px;">About Martel Electronics Since 1957</h1>
1326<div style="font-size: 23px; line-height: 1.42; color: #e7eef8; font-weight: bold; margin-bottom: 16px; max-width: 930px;">More Than 65 Years of Specialty Recording Equipment History</div>
1327<p style="margin: 0 0 18px; font-size: 17px; line-height: 1.82; color: #dce7f5; max-width: 960px;">Martel Electronics has served customers for more than 65 years with professional dictation, transcription, recording, court reporting, and specialty electronics solutions. Our history includes early work with professional tape recorder systems, including Uher reel-to-reel recorders, and decades of support for customers who need dependable equipment and knowledgeable service.</p>
1328<div style="display: flex; flex-wrap: wrap; gap: 16px; margin-top: 8px;">
1329<div style="flex: 1 1 220px; background: rgba(255,255,255,0.10); border: 1px solid rgba(255,255,255,0.12); border-radius: 20px; padding: 18px;">
1330<div style="font-size: 18px; font-weight: 800; color: #ffffff; margin-bottom: 7px;">Since 1957</div>
1331<div style="font-size: 15px; line-height: 1.65; color: #dce7f5;">A long history of helping professional customers choose the right recording and dictation equipment.</div>
1332</div>
1333<div style="flex: 1 1 220px; background: rgba(255,255,255,0.10); border: 1px solid rgba(255,255,255,0.12); border-radius: 20px; padding: 18px;">
1334<div style="font-size: 18px; font-weight: 800; color: #ffffff; margin-bottom: 7px;">Specialty Equipment</div>
1335<div style="font-size: 15px; line-height: 1.65; color: #dce7f5;">Professional recording, dictation, transcription, court reporting, and government purchasing solutions.</div>
1336</div>
1337<div style="flex: 1 1 220px; background: rgba(255,255,255,0.10); border: 1px solid rgba(255,255,255,0.12); border-radius: 20px; padding: 18px;">
1338<div style="font-size: 18px; font-weight: 800; color: #ffffff; margin-bottom: 7px;">Martel Headquarters</div>
1339<div style="font-size: 15px; line-height: 1.65; color: #dce7f5;">Located in Yorba Linda, California.</div>
1340</div>
1341</div>
1342</div>
1343<div style="flex: 1 1 420px; min-width: 320px; display: flex; flex-direction: column; gap: 16px;">
1344<div style="background: #ffffff; border: 1px solid #d7e0ea; border-radius: 28px; box-shadow: 0 16px 36px rgba(15,23,42,0.07); overflow: hidden;">
1345<div style="padding: 18px 18px 0 18px;">
1346<div style="font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; color: #123f83; margin-bottom: 6px;">Headquarters</div>
1347<div style="font-size: 24px; line-height: 1.2; font-weight: 800; color: #0b1f3a; margin-bottom: 12px;">Martel Electronics Headquarters in Yorba Linda, California</div>
1348</div>
1349<div style="padding: 0 18px 18px 18px; background: linear-gradient(180deg,#f8fbff 0%,#edf4fb 100%);">
1350<div style="background: #ffffff; border: 1px solid #dde6ef; border-radius: 22px; padding: 16px; text-align: center;"><img src="https://cdn2.bigcommerce.com/server2600/m0o7bk/product_images/uploaded_images/martel-electronics-world-headquarters.gif" alt="Martel Electronics headquarters in Yorba Linda, California" style="width: 100%; height: auto; max-height: 420px; object-fit: contain; border-radius: 16px; margin: 0 auto; display: block;" /></div>
1351</div>
1352</div>
1353<div style="background: linear-gradient(180deg,#0b1f3a 0%,#12345d 100%); color: #ffffff; border-radius: 24px; padding: 22px; box-shadow: 0 16px 32px rgba(15,23,42,0.14);">
1354<div style="font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; opacity: .82; margin-bottom: 6px;">About Martel</div>
1355<div style="font-size: 32px; font-weight: 800; line-height: 1.05; margin-bottom: 10px;">More Than 65 Years of Specialty Electronics Experience</div>
1356<div style="font-size: 15px; line-height: 1.75; color: #dbe8f7;">
1356Martel Electronics supports professional, government, legal, court reporting, transcription, and recording customers with specialty equipment and direct product knowledge.</div>
1357</div>
1358</div>
1359</div>
1360<div style="background: #ffffff; border: 1px solid #d7e0ea; border-radius: 28px; box-shadow: 0 16px 34px rgba(15,23,42,0.06); padding: 32px; margin-bottom: 22px;">
1361<div style="max-width: 1020px; margin: 0 auto;">
1362<div style="font-size: 13px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; color: #123f83; margin-bottom: 8px; text-align: center;">Company History</div>
1363<h2 style="margin: 0 0 12px; font-size: 40px; line-height: 1.12; color: #0b1f3a; font-weight: 800; text-align: center;">About Martel Electronics</h2>
1364<p style="margin: 0 0 16px; font-size: 18px; line-height: 1.9; color: #475569;">Martel Electronics has a long history of serving customers who need dependable specialty electronics, recording equipment, dictation systems, transcription solutions, court reporting equipment, and government purchasing support. In 1999, the company moved into its own building in Yorba Linda, California, as customer demand and product support needs continued to grow.</p>
1365<p style="margin: 0; font-size: 18px; line-height: 1.9; color: #475569;">We pride ourselves on helping customers choose the right equipment for their work and supporting them before and after the sale. Our goal is to provide practical product knowledge, responsive service, and reliable solutions for professional customers.</p>
1366</div>
1367</div>
1368<div style="background: linear-gradient(180deg,#0b1f3a 0%,#12345d 100%); border-radius: 28px; padding: 36px 30px; box-shadow: 0 18px 38px rgba(15,23,42,0.14);">
1369<div style="max-width: 980px; margin: 0 auto; text-align: center;">
1370<div style="font-size: 13px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; color: #9fc2ff; margin-bottom: 8px;">Martel Electronics</div>
1371<h2 style="margin: 0 0 14px; font-size: 42px; line-height: 1.12; color: #ffffff; font-weight: 800;">About Martel Electronics Since 1957</h2>
1372<p style="margin: 0 auto; font-size: 18px; line-height: 1.85; color: #dce7f5; max-width: 900px;">Martel Electronics has served professional customers for more than 65 years with specialty recording, dictation, transcription, court reporting, and electronics solutions. We continue to focus on practical equipment guidance, direct customer support, and dependable products for the people and organizations that rely on us.</p>
1373</div>
1374</div>
1375</div>
1376
1377
1378        <div data-content-region="page_builder_bottom"><div data-layout-id="73581b8b-547a-448a-b1d6-89e5578de5ef">       <div data-sub-layout-container="30947b43-1f86-45b8-945c-9c53eb62e3da" data-layout-name="Layout">
1379    <style data-container-styling="30947b43-1f86-45b8-945c-9c53eb62e3da">
1380        [data-sub-layout-container="30947b43-1f86-45b8-945c-9c53eb62e3da"] {
1381            box-sizing: border-box;
1382            display: flex;
1383            flex-wrap: wrap;
1384            z-index: 0;
1385            position: relative;
1386            height: ;
1387            padding-top: 0px;
1388            padding-right: 0px;
1389            padding-bottom: 0px;
1390            padding-left: 0px;
1391            margin-top: 0px;
1392            margin-right: 0px;
1393            margin-bottom: 0px;
1394            margin-left: 0px;
1395            border-width: 0px;
1396            border-style: solid;
1397            border-color: #333333;
1398        }
1399
1400        [data-sub-layout-container="30947b43-1f86-45b8-945c-9c53eb62e3da"]:after {
1401            display: block;
1402            position: absolute;
1403            top: 0;
1404            left: 0;
1405            bottom: 0;
1406            right: 0;
1407            background-size: cover;
1408            z-index: auto;
1409        }
1410    </style>
1411
1412    <div data-sub-layout="0c01198c-8a83-421b-9176-bebc2803ab9a">
1413        <style data-column-styling="0c01198c-8a83-421b-9176-bebc2803ab9a">
1414            [data-sub-layout="0c01198c-8a83-421b-9176-bebc2803ab9a"] {
1415                display: flex;
1416                flex-direction: column;
1417                box-sizing: border-box;
1418                flex-basis: 100%;
1419                max-width: 100%;
1420                z-index: 0;
1421                position: relative;
1422                height: ;
1423                padding-top: 0px;
1424                padding-right: 10.5px;
1425                padding-bottom: 0px;
1426                padding-left: 10.5px;
1427                margin-top: 0px;
1428                margin-right: 0px;
1429                margin-bottom: 0px;
1430                margin-left: 0px;
1431                border-width: 0px;
1432                border-style: solid;
1433                border-color: #333333;
1434                justify-content: center;
1435            }
1436            [data-sub-layout="0c01198c-8a83-421b-9176-bebc2803ab9a"]:after {
1437                display: block;
1438                position: absolute;
1439                top: 0;
1440                left: 0;
1441                bottom: 0;
1442                right: 0;
1443                background-size: cover;
1444                z-index: auto;
1445            }
1446            @media only screen and (max-width: 700px) {
1447                [data-sub-layout="0c01198c-8a83-421b-9176-bebc2803ab9a"] {
1448                    flex-basis: 100%;
1449                    max-width: 100%;
1450                }
1451            }
1452        </style>
1453    </div>
1454</div>
1455
1456</div></div>
1457        <div data-content-region="page_builder_bottom--global"><div data-layout-id="c0fd307a-ea01-407c-822e-5e6dd653fe29">       <div data-sub-layout-container="9fb6a54f-dd67-4188-8eef-2e34fe1ac435" data-layout-name="Layout">
1458    <style data-container-styling="9fb6a54f-dd67-4188-8eef-2e34fe1ac435">
1459        [data-sub-layout-container="9fb6a54f-dd67-4188-8eef-2e34fe1ac435"] {
1460            box-sizing: border-box;
1461            display: flex;
1462            flex-wrap: wrap;
1463            z-index: 0;
1464            position: relative;
1465            height: ;
1466            padding-top: 0px;
1467            padding-right: 0px;
1468            padding-bottom: 0px;
1469            padding-left: 0px;
1470            margin-top: 0px;
1471            margin-right: 0px;
1472            margin-bottom: 0px;
1473            margin-left: 0px;
1474            border-width: 0px;
1475            border-style: solid;
1476            border-color: #333333;
1477        }
1478
1479        [data-sub-layout-container="9fb6a54f-dd67-4188-8eef-2e34fe1ac435"]:after {
1480            display: block;
1481            position: absolute;
1482            top: 0;
1483            left: 0;
1484            bottom: 0;
1485            right: 0;
1486            background-size: cover;
1487            z-index: auto;
1488        }
1489    </style>
1490
1491    <div data-sub-layout="47f58620-d66d-44ac-b8db-ee9520d39b45">
1492        <style data-column-styling="47f58620-d66d-44ac-b8db-ee9520d39b45">
1493            [data-sub-layout="47f58620-d66d-44ac-b8db-ee9520d39b45"] {
1494                display: flex;
1495                flex-direction: column;
1496                box-sizing: border-box;
1497                flex-basis: 100%;
1498                max-width: 100%;
1499                z-index: 0;
1500                position: relative;
1501                height: ;
1502                padding-top: 0px;
1503                padding-right: 10.5px;
1504                padding-bottom: 0px;
1505                padding-left: 10.5px;
1506                margin-top: 0px;
1507                margin-right: 0px;
1508                margin-bottom: 0px;
1509                margin-left: 0px;
1510                border-width: 0px;
1511                border-style: solid;
1512                border-color: #333333;
1513                justify-content: center;
1514            }
1515            [data-sub-layout="47f58620-d66d-44ac-b8db-ee9520d39b45"]:after {
1516                display: block;
1517                position: absolute;
1518                top: 0;
1519                left: 0;
1520                bottom: 0;
1521                right: 0;
1522                background-size: cover;
1523                z-index: auto;
1524            }
1525            @media only screen and (max-width: 700px) {
1526                [data-sub-layout="47f58620-d66d-44ac-b8db-ee9520d39b45"] {
1527                    flex-basis: 100%;
1528                    max-width: 100%;
1529                }
1530            }
1531        </style>
1532    </div>
1533</div>
1534
1535       <div data-sub-layout-container="4018bc71-66d9-428e-b184-b30633983ead" data-layout-name="Layout">
1536    <style data-container-styling="4018bc71-66d9-428e-b184-b30633983ead">
1537        [data-sub-layout-container="4018bc71-66d9-428e-b184-b30633983ead"] {
1538            box-sizing: border-box;
1539            display: flex;
1540            flex-wrap: wrap;
1541            z-index: 0;
1542            position: relative;
1543            height: ;
1544            padding-top: 0px;
1545            padding-right: 0px;
1546            padding-bottom: 0px;
1547            padding-left: 0px;
1548            margin-top: 0px;
1549            margin-right: 0px;
1550            margin-bottom: 0px;
1551            margin-left: 0px;
1552            border-width: 0px;
1553            border-style: solid;
1554            border-color: #333333;
1555        }
1556
1557        [data-sub-layout-container="4018bc71-66d9-428e-b184-b30633983ead"]:after {
1558            display: block;
1559            position: absolute;
1560            top: 0;
1561            left: 0;
1562            bottom: 0;
1563            right: 0;
1564            background-size: cover;
1565            z-index: auto;
1566        }
1567    </style>
1568
1569    <div data-sub-layout="1d5e814a-579a-45a7-8678-baa7ce2a804d">
1570        <style data-column-styling="1d5e814a-579a-45a7-8678-baa7ce2a804d">
1571            [data-sub-layout="1d5e814a-579a-45a7-8678-baa7ce2a804d"] {
1572                display: flex;
1573                flex-direction: column;
1574                box-sizing: border-box;
1575                flex-basis: 50%;
1576                max-width: 50%;
1577                z-index: 0;
1578                position: relative;
1579                height: ;
1580                padding-top: 0px;
1581                padding-right: 10.5px;
1582                padding-bottom: 0px;
1583                padding-left: 10.5px;
1584                margin-top: 0px;
1585                margin-right: 0px;
1586                margin-bottom: 0px;
1587                margin-left: 0px;
1588                border-width: 0px;
1589                border-style: solid;
1590                border-color: #333333;
1591                justify-content: center;
1592            }
1593            [data-sub-layout="1d5e814a-579a-45a7-8678-baa7ce2a804d"]:after {
1594                display: block;
1595                position: absolute;
1596                top: 0;
1597                left: 0;
1598                bottom: 0;
1599                right: 0;
1600                background-size: cover;
1601                z-index: auto;
1602            }
1603            @media only screen and (max-width: 700px) {
1604                [data-sub-layout="1d5e814a-579a-45a7-8678-baa7ce2a804d"] {
1605                    flex-basis: 100%;
1606                    max-width: 100%;
1607                }
1608            }
1609        </style>
1610    </div>
1611    <div data-sub-layout="e2736043-a26e-481a-a147-023c1037c97d">
1612        <style data-column-styling="e2736043-a26e-481a-a147-023c1037c97d">
1613            [data-sub-layout="e2736043-a26e-481a-a147-023c1037c97d"] {
1614                display: flex;
1615                flex-direction: column;
1616                box-sizing: border-box;
1617                flex-basis: 50%;
1618                max-width: 50%;
1619                z-index: 0;
1620                position: relative;
1621                height: ;
1622                padding-top: 0px;
1623                padding-right: 10.5px;
1624                padding-bottom: 0px;
1625                padding-left: 10.5px;
1626                margin-top: 0px;
1627                margin-right: 0px;
1628                margin-bottom: 0px;
1629                margin-left: 0px;
1630                border-width: 0px;
1631                border-style: solid;
1632                border-color: #333333;
1633                justify-content: center;
1634            }
1635            [data-sub-layout="e2736043-a26e-481a-a147-023c1037c97d"]:after {
1636                display: block;
1637                position: absolute;
1638                top: 0;
1639                left: 0;
1640                bottom: 0;
1641                right: 0;
1642                background-size: cover;
1643                z-index: auto;
1644            }
1645            @media only screen and (max-width: 700px) {
1646                [data-sub-layout="e2736043-a26e-481a-a147-023c1037c97d"] {
1647                    flex-basis: 100%;
1648                    max-width: 100%;
1649                }
1650            }
1651        </style>
1652    </div>
1653</div>
1654
1655       <div data-sub-layout-container="14af40d8-2aa0-4a93-8ea0-269d9f864335" data-layout-name="Layout">
1656    <style data-container-styling="14af40d8-2aa0-4a93-8ea0-269d9f864335">
1657        [data-sub-layout-container="14af40d8-2aa0-4a93-8ea0-269d9f864335"] {
1658            box-sizing: border-box;
1659            display: flex;
1660            flex-wrap: wrap;
1661            z-index: 0;
1662            position: relative;
1663            height: ;
1664            padding-top: 0px;
1665            padding-right: 0px;
1666            padding-bottom: 0px;
1667            padding-left: 0px;
1668            margin-top: 0px;
1669            margin-right: 0px;
1670            margin-bottom: 0px;
1671            margin-left: 0px;
1672            border-width: 0px;
1673            border-style: solid;
1674            border-color: #333333;
1675        }
1676
1677        [data-sub-layout-container="14af40d8-2aa0-4a93-8ea0-269d9f864335"]:after {
1678            display: block;
1679            position: absolute;
1680            top: 0;
1681            left: 0;
1682            bottom: 0;
1683            right: 0;
1684            background-size: cover;
1685            z-index: auto;
1686        }
1687    </style>
1688
1689    <div data-sub-layout="9831f93a-021c-4441-92dc-34f254d5704c">
1690        <style data-column-styling="9831f93a-021c-4441-92dc-34f254d5704c">
1691            [data-sub-layout="9831f93a-021c-4441-92dc-34f254d5704c"] {
1692                display: flex;
1693                flex-direction: column;
1694                box-sizing: border-box;
1695                flex-basis: 100%;
1696                max-width: 100%;
1697                z-index: 0;
1698                position: relative;
1699                height: ;
1700                padding-top: 0px;
1701                padding-right: 10.5px;
1702                padding-bottom: 0px;
1703                padding-left: 10.5px;
1704                margin-top: 0px;
1705                margin-right: 0px;
1706                margin-bottom: 0px;
1707                margin-left: 0px;
1708                border-width: 0px;
1709                border-style: solid;
1710                border-color: #333333;
1711                justify-content: center;
1712            }
1713            [data-sub-layout="9831f93a-021c-4441-92dc-34f254d5704c"]:after {
1714                display: block;
1715                position: absolute;
1716                top: 0;
1717                left: 0;
1718                bottom: 0;
1719                right: 0;
1720                background-size: cover;
1721                z-index: auto;
1722            }
1723            @media only screen and (max-width: 700px) {
1724                [data-sub-layout="9831f93a-021c-4441-92dc-34f254d5704c"] {
1725                    flex-basis: 100%;
1726                    max-width: 100%;
1727                }
1728            }
1729        </style>
1730    </div>
1731</div>
1732
1733</div></div>
1734    </div>
1735</main>
1736
1737
1738    </div>
1739    <div id="modal" class="modal" data-reveal data-prevent-quick-search-close>
1740    <a href="#" class="modal-close" aria-label="Close" role="button">
1741        <svg class="icon"><use href="#icon-close" /></svg>
1742    </a>
1743    <div class="modal-content"></div>
1744    <div class="loadingOverlay"></div>
1745</div>
1746
1747<div id="previewModal" class="modal modal--large" data-reveal>
1748    <a href="#" class="modal-close" aria-label="Close" role="button">
1749        <svg class="icon"><use href="#icon-close" /></svg>
1750    </a>
1751    <div class="modal-content"></div>
1752    <div class="loadingOverlay"></div>
1753</div>
1754    <div id="alert-modal" class="modal modal--alert modal--small" data-reveal data-prevent-quick-search-close>
1755    <div class="swal2-icon swal2-error swal2-icon-show"><span class="swal2-x-mark"><span class="swal2-x-mark-line-left"></span><span class="swal2-x-mark-line-right"></span></span></div>
1756
1757    <div class="modal-content"></div>
1758
1759    <div class="button-container"><button type="button" class="confirm button" data-reveal-close>OK</button></div>
1760</div>
1761</div>
1762
1763<div class="scrollToTop">
1764    <a href="#topOfPage" class="button u-hiddenVisually" id="scrollToTopFloatingButton" title="Top of Page"><i class="fa fa-chevron-up"></i></a>
1765</div>        
1766<footer class="footer" role="contentinfo">
1767    <h2 class="is-srOnly">Footer</h2>
1768
1769            <div class="emthemesModez-footer-topColumns-wrapper">
1770                <div class="container">
1771                    <div class="emthemesModez-f
1771ooter-topColumns">
1772                        <div class="emthemesModez-footer-newsletter">
1773                            <div class="emthemesModez-newsletterSection emthemesModez-newsletterSection--hasSocials">
1774    <article class="emthemesModez-newsletterForm" data-section-type="newsletterSubscription">
1775        <h3 class="footer-info-heading">Subscribe to our newsletter</h3>
1776
1777<form class="form" action="https://martelelectronics.com/subscribe.php" method="post">
1778    <fieldset class="form-fieldset">
1779        <input type="hidden" name="action" value="subscribe">
1780        <input type="hidden" name="nl_first_name" value="bc">
1781        <input type="hidden" name="check" value="1">
1782        <div class="form-field">
1783            <label class="form-label is-srOnly" for="nl_email">Email Address</label>
1784            <div class="form-prefixPostfix wrap">
1785                <input class="form-input form-prefixPostfix-input" id="nl_email" name="nl_email" type="email" value="" placeholder="Your email address" aria-required="true" required>
1786                <input class="button form-prefixPostfix-button--postfix" type="submit" value="Subscribe">
1787            </div>
1788        </div>
1789    </fieldset>
1790</form>
1791    </article>
1792</div>                        </div>
1793                    </div>
1794                </div>
1795            </div>
1796
1797    <div class="container">
1798        <section class="footer-info">
1799
1800                <article class="footer-info-col footer-info-col--about" data-section-type="storeInfo">
1801                    <h3 class="footer-info-heading">
1802                        <div class="footer-logo">
1803                            <a href="https://martelelectronics.com/" data-instantload='{"page":"home"}'>
1804            <img class="header-logo-image-unknown-size" src="https://cdn11.bigcommerce.com/s-m0o7bk/images/stencil/original/download_1783128589__55035.original.png" alt="Martel Electronics Since 1957" title="Martel Electronics Since 1957">
1805</a>
1806                        </div>
1807                    </h3>
1808
1809                        <ul class="fa-ul">
1810                            <li>
1811                                <i class="fa fa-li fa-map-marker"></i>
1812                                <address>
1813                                    <strong>Martel Electronics Sales Inc.</strong><br>
1814                                    23221 La Palma Ave.<br>
1815                                    Yorba Linda, CA 92887
1816                                </address>
1817                            </li>
1818
1819                            <li>
1820                                <i class="fa fa-li fa-phone"></i>
1821                                <a href="tel:+18005535536">Call us at (800) 553-5536</a>
1822                            </li>
1823                        </ul>
1824
1825                            <ul class="socialLinks socialLinks--alt">
1826                <li class="socialLinks-item">
1827                    <a class="icon icon--facebook"
1828                    href="https://www.facebook.com/martelelectronics"
1829                    target="_blank"
1830                    rel="noopener"
1831                    title="Facebook"
1832                    >
1833                        <span class="aria-description--hidden">Facebook</span>
1834                        <svg>
1835                            <use href="#icon-facebook"/>
1836                        </svg>
1837                    </a>
1838                </li>
1839                <li class="socialLinks-item">
1840                    <a class="icon icon--pinterest"
1841                    href="http://www.pinterest.com/marteldirect"
1842                    target="_blank"
1843                    rel="noopener"
1844                    title="Pinterest"
1845                    >
1846                        <span class="aria-description--hidden">Pinterest</span>
1847                        <svg>
1848                            <use href="#icon-pinterest"/>
1849                        </svg>
1850                    </a>
1851                </li>
1852                <li class="socialLinks-item">
1853                    <a class="icon icon--x"
1854                    href="https://x.com/marteldirect"
1855                    target="_blank"
1856                    rel="noopener"
1857                    title="X"
1858                    >
1859                        <span class="aria-description--hidden">X</span>
1860                        <svg>
1861                            <use href="#icon-x"/>
1862                        </svg>
1863                    </a>
1864                </li>
1865                <li class="socialLinks-item">
1866                    <a class="icon icon--instagram"
1867                    href="https://www.instagram.com/martelelectronics/"
1868                    target="_blank"
1869                    rel="noopener"
1870                    title="Instagram"
1871                    >
1872                        <span class="aria-description--hidden">Instagram</span>
1873                        <svg>
1874                            <use href="#icon-instagram"/>
1875                        </svg>
1876                    </a>
1877                </li>
1878    </ul>
1879                </article>
1880
1881            <article class="footer-info-col" data-section-type="footer-webPages">
1882                <h3 class="footer-info-heading">Navigate</h3>
1883                <ul class="footer-info-list">
1884                    <li><a href="/">Home</a></li>
1885                    <li><a href="/help/">Help</a></li>
1886                    <li><a href="/about/">About</a></li>
1887                    <li><a href="/dc7-police-car-camera-system/">DC7</a></li>
1888                    <li><a href="/purchase-order/">Purchase Order</a></li>
1889                    <li><a href="/written-quotes/">Written Quotes</a></li>
1890                    <li><a href="/contact-us/">Contact Us</a></li>
1891                    <li><a href="/accessibility-statement/">Accessibility Statement</a></li>
1892                    <li><a href="/free-shipping/">Free Shipping</a></li>
1893                    <li><a href="/30-day-money-back-guarantee/">30-Day Money-Back Guarantee</a></li>
1894                </ul>
1895            </article>
1896
1897            <article class="footer-info-col" data-section-type="footer-categories">
1898                <h3 class="footer-info-heading">Categories</h3>
1899                <ul class="footer-info-list">
1900                    <li><a href="/voice-recorders/">Voice Recorders</a></li>
1901                    <li><a href="/court-reporter-microphones/">Court Reporter Microphones</a></li>
1902                    <li><a href="/court-reporting-recorders-microphones-equipment/">Court Reporting Recorders &amp; Microphones</a></li>
1903                    <li><a href="/stenomask-microphones-for-court-reporters/">Stenomask Microphones</a></li>
1904                    <li><a href="/zoom-multiple-microphones/">Zoom Multiple Microphones</a></li>
1905                    <li><a href="/conference-recorders/">Conference Recorders</a></li>
1906                    <li><a href="/dictation-machine-/">Dictation Machines</a></li>
1907                    <li><a href="/transcription-foot-pedals/">Transcription Foot Pedals</a></li>
1908                    <li><a href="/court-reporter-laptop/">Court Reporter Laptops</a></li>
1909                    <li><a href="/police-car-cameras/">Police Car Cameras</a></li>
1910                    <li><a href="/police-body-camera-packages/">Police Body Camera Packages</a></li>
1911                </ul>
1912            </article>
1913
1914        </section>
1915    </div>
1916
1917    <p style="font-size: 10px; color: #6b7280; line-height: 1.4; font-family: sans-serif; text-align: center; margin: 20px 0; padding: 10px;">
1918        Payment options through Affirm are subject to an eligibility check and provided by
1919        <a href="https://www.affirm.com/lenders" target="_blank" rel="noopener noreferrer nofollow" style="color: #6b7280; text-decoration: underline;">these lending partners: affirm.com/lenders</a>.
1920        Rates from 0–36% APR.
1921        <strong>CA Residents:</strong> Loans by Affirm Loan Services, LLC are made or arranged pursuant to a California Financing Law license.
1922        <strong>NY Residents:</strong> Affirm is licensed to offer BNPL loans by the New York State Department of Financial Services.
1923        For licenses and disclosures, see
1924        <a href="https://www.affirm.com/licenses" target="_blank" rel="noopener noreferrer nofollow" style="color: #6b7280; text-decoration: underline;">affirm.com/licenses</a>.
1925    </p>
1926
1927    <div class="footer-copyright">
1928        <div class="container">
1929            <p class="powered-by">
1930
1931            </p>
1932
1933                    <div class="footer-payment-icons">
1934                <svg class="footer-payment-icon"><use href="#icon-logo-american-express-dark"></use></svg>
1935                <svg class="footer-payment-icon"><use href="#icon-logo-discover-dark"></use></svg>
1936                <svg class="footer-payment-icon"><use href="#icon-logo-mastercard-dark"></use></svg>
1937                <svg class="footer-payment-icon"><use href="#icon-logo-paypal-dark"></use></svg>
1938                <svg class="footer-payment-icon"><use href="#icon-logo-visa-dark"></use></svg>
1939                <svg class="footer-payment-icon"><use href="#icon-logo-applepay-dark"></use></svg>
1940                <svg class="footer-payment-icon"><use href="#icon-logo-amazon-dark"></use></svg>
1941                <svg class="footer-payment-icon"><use href="#icon-logo-googlepay-dark"></use></svg>
1942                <svg class="footer-payment-icon"><use href="#icon-logo-klarna-dark"></use></svg>
1943        </div>
1944
1945            <div data-content-region="ssl_site_seal--global"></div>
1946        </div>
1947    </div>
1948</footer>
1949        
1949<script nonce="">window.__webpack_public_path__ = "https://cdn11.bigcommerce.com/s-m0o7bk/stencil/dcff4430-4df6-013e-0d67-161549aa1a0e/e/cb041bf0-7fe1-013f-b400-5291dc9d1300/dist/";</script>
1949
1950        
1950<script nonce="">window.__webpack_nonce__ = "";</script>
1950
1951        
1951<script src="https://cdn11.bigcommerce.com/s-m0o7bk/stencil/dcff4430-4df6-013e-0d67-161549aa1a0e/e/cb041bf0-7fe1-013f-b400-5291dc9d1300/dist/theme-bundle.main.js" nonce=""></script>
1951
1952        
1952<script nonce="">
1953            window.stencilBootstrap("page", "{\"themeSettings\":{\"optimizedCheckout-formChecklist-color\":\"#333333\",\"banner3x_1_style\":\"\",\"paymentbuttons-paypal-cart-page-add-cart-color\":\"gold\",\"footer-secondary-backgroundColor\":\"#37475a\",\"paymentbuttons-paypal-cart-page-add-cart-label\":\"checkout\",\"optimizedCheckout-buttonPrimary-backgroundColorActive\":\"#989898\",\"paymentbuttons-paypal-checkout-payment-label\":\"checkout\",\"show_accept_amex\":true,\"optimizedCheckout-buttonPrimary-borderColorDisabled\":\"transparent\",\"categoriesList_count\":0,\"brandpage_products_per_page\":20,\"color-secondaryDarker\":\"#e8e8e8\",\"banner_half_1_style\":\"\",\"card--alternate-color--hover\":\"#ffffff\",\"productsByCategory-heading-backgroundColor3\":\"#00a6ed\",\"optimizedCheckout-colorFocus\":\"#4496f6\",\"alsobought_product\":\"similar\",\"navUser-color\":\"#ffffff\",\"bannerAdvTopHeader\":\"nothome\",\"social_icon_placement_bottom\":true,\"productpage_bulk_price_table\":true,\"show_powered_by\":false,\"topHeader-borderColor\":\"#565656\",\"productsByCategory-heading-color2\":\"#ffffff\",\"checkRadio-borderColor\":\"#dcdcdc\",\"product_custom_badges\":true,\"color-primaryDarker\":\"#000000\",\"optimizedCheckout-buttonPrimary-colorHover\":\"#ffffff\",\"brand_size\":\"300x150\",\"optimizedCheckout-logo-position\":\"center\",\"carousel_video_autoplay\":true,\"optimizedCheckout-discountBanner-backgroundColor\":\"#f5f5f5\",\"color-textLink--hover\":\"#c45500\",\"pdp-sale-price-label\":\"Now:\",\"nl_popup_show\":\"\",\"navPages-categoriesItem-color\":\"#ffffff\",\"optimizedCheckout-buttonSecondary-backgroundColorHover\":\"#f5f5f5\",\"show_sku\":true,\"optimizedCheckout-headingPrimary-font\":\"Google_Roboto_700\",\"icon--alt-color-hover\":\"#edbb6e\",\"productpage_description_type\":\"full\",\"footer-backgroundColor\":\"#232f3e\",\"navPages-color\":\"#cccccc\",\"productpage_reviews_count\":12,\"optimizedCheckout-step-borderColor\":\"#dddddd\",\"logo_size\":\"original\",\"product_options_column\":3,\"blog_style\":\"featured\",\"fontSizeH2\":\"18\",\"optimizedCheckout-formField-backgroundColor\":\"#ffffff\",\"show_accept_paypal\":true,\"footer-secondary-button-backgroundColor\":\"#edbb6e\",\"paymentbuttons-paypal-shape\":\"rect\",\"color_badge_product_custom_badges\":\"#FFA500\",\"optimizedCheckout-discountBanner-textColor\":\"#FFFFFF\",\"section4\":\"categories_list\",\"pdp-retail-price-label\":\"MSRP:\",\"optimizedCheckout-buttonPrimary-font\":\"Google_Roboto_400\",\"topHeader_banner1\":true,\"paymentbuttons-paypal-label\":\"checkout\",\"productsByCategorySortingTabs-heading-backgroundColor2\":\"#3278f0\",\"banner_half_2_style\":\"\",\"navPages-borderColor\":\"#565656\",\"optimizedCheckout-backgroundImage-size\":\"1000x200\",\"carousel-dot-color\":\"#9c9c9c\",\"button--disabled-backgroundColor\":\"#dcdcdc\",\"header_sticky\":false,\"footer_show_pages\":-1,\"topBanner-backgroundColor\":\"#FF0106\",\"show_subcategories_grid\":false,\"navPages_categoriesMenu\":\"group\",\"blockquote-cite-font-color\":\"#a5a5a5\",\"topBanner-color\":\"#ffffff\",\"banner_half_2_backgroundColor\":\"transparent\",\"optimizedCheckout-formField-shadowColor\":\"#e5e5e5\",\"categorypage_products_per_page\":12,\"banner_one_1_backgroundColor\":\"transparent\",\"button--default-color\":\"#454545\",\"icon--alt-color\":\"#282828\",\"productpage_vertical_thumbnails\":true,\"section7\":\"special_products_columns\",\"specialProductsTab-heading-color\":\"ffffff\",\"fontSizeH6\":\"11\",\"optimizedCheckout-loadingToaster-backgroundColor\":\"#333333\",\"color-textHeading\":\"#282828\",\"show_accept_discover\":true,\"footer_show_links_2\":false,\"specialProductsTab_show_featured\":true,\"container-fill-base\":\"#ffffff\",\"paymentbuttons-paylater-cart-page-add-cart-color\":\"gold\",\"productsByCategorySortingTabs_count\":3,\"optimizedCheckout-formField-errorColor\":\"#d14343\",\"spinner-borderColor-dark\":\"#989898\",\"input-font-color\":\"#454545\",\"footer-secondary-headingColor\":\"#ffffff\",\"select-bg-color\":\"#ffffff\",\"banner3x_2_backgroundColor\":\"transparent\",\"banner_one_1_style\":\"\",\"show_accept_mastercard\":true,\"topHeader-bgColor\":\"#232f3e\",\"style\":\"modern\",\"optimizedCheckout-link-font\":\"Google_Roboto_400\",\"supported_payment_methods\":[\"card\",\"paypal\"],\"carousel-arrow-bgColor\":\"#ffffff\",\"lazyload_mode\":\"lazyload\",\"carousel-title-color\":\"#edbb6e\",\"categorypage_search\":\"show\",\"color_text_product_sale_badges\":\"#ffffff\",\"specialProductsTab_lazy_count\":8,\"show_accept_googlepay\":true,\"card--alternate-borderColor\":\"#ffffff\",\"icon--alt-backgroundColor-hover\":\"transparent\",\"button--disabled-color\":\"#ffffff\",\"carousel-slide0-position\":\"center\",\"color-primaryDark\":\"#2d2d2d\",\"categoriesList_showBanner\":false,\"product_outstock_badge\":true,\"navPages_autoFit\":false,\"color_hover_product_sale_badges\":\"#e74c3c\",\"color-price\":\"#b12704\",\"optimizedCheckout-buttonPrimary-borderColorActive\":\"#989898\",\"navPages-subMenu-backgroundColor\":\"#ffffff\",\"productpage_layout\":\"\",\"topHeader_show\":false,\"color-grey\":\"#4f4f4f\",\"homepage_expand_categories_menu\":true,\"footer_show_contact\":true,\"body-font\":\"Google_Roboto_400\",\"banner_one_2_backgroundColor\":\"transparent\",\"paymentbuttons-bolt-shape\":\"rect\",\"show_quick_payment_buttons\":false,\"optimizedCheckout-step-textColor\":\"#ffffff\",\"button--primary-backgroundColor\":\"#edbb6e\",\"optimizedCheckout-formField-borderColor\":\"#989898\",\"checkRadio-color\":\"#4f4f4f\",\"show_product_dimensions\":false,\"optimizedCheckout-link-color\":\"#4496f6\",\"optimizedCheckout-headingSecondary-font\":\"Google_Roboto_400\",\"headings-font\":\"Google_Roboto_700\",\"paymentbuttons-venmo-checkout-on-top-color\":\"blue\",\"label-backgroundColor\":\"#bfbfbf\",\"button--primary-backgroundColorHover\":\"#ffa700\",\"card-figcaption-button-background\":\"#ffffff\",\"banner_half_3_style\":\"\",\"show_welcome_text\":true,\"button--default-borderColor\":\"#dcdcdc\",\"pdp-non-sale-price-label\":\"Was:\",\"button--disabled-borderColor\":\"#dcdcdc\",\"label-color\":\"#ffffff\",\"specialProductsColumns_show_to
1953p\":true,\"select-arrow-color\":\"#999999\",\"payment_icons_style\":\"dark\",\"optimizedCheckout-logo-size\":\"250x50\",\"navPages_banners\":false,\"categoriesList_subCount\":0,\"footer-color\":\"#dddddd\",\"card-title-color\":\"#0066c0\",\"productsByCategory-heading-color1\":\"#ffffff\",\"carousel_video_mute\":false,\"optimizedCheckout-headingSecondary-color\":\"#2d2d2d\",\"banner_one_2_style\":\"\",\"logo_fontSize\":28,\"alert-backgroundColor\":\"#ffffff\",\"productsByCategorySortingTabs_show_new\":false,\"product_uniform\":true,\"show_shop_by_price\":true,\"default_image_brand\":\"img/BrandDefault.gif\",\"productsByCategorySubcategoriesTabs-heading-color3\":\"#ffffff\",\"paymentbuttons-venmo-cart-page-add-cart-color\":\"blue\",\"productsByCategorySubcategoriesTabs-heading-backgroundColor1\":\"#009688\",\"show_allcategories_menu\":true,\"specialProductsColumns_products_count\":3,\"bannerAfterAddToCartButton\":\"all\",\"section5\":\"bc_banner_home_2\",\"product_list_display_mode\":\"grid\",\"navPages_bg_stretch\":false,\"paymentbanners-cartpage-logo-type\":\"primary\",\"quickSearch-color\":\"#282828\",\"carousel_banners\":false,\"navPages-rootMenu-backgroundColor\":\"#232f3e\",\"optimizedCheckout-link-hoverColor\":\"#002fe1\",\"product_size\":\"608x608\",\"paymentbuttons-paypal-color\":\"gold\",\"homepage_show_carousel\":true,\"optimizedCheckout-body-backgroundColor\":\"#ffffff\",\"section1\":\"bc_banner_home_1\",\"ajax_add_to_cart\":false,\"carousel_vid0\":\"\",\"fontSizeH3\":\"16\",\"color-greyDarkest\":\"#2d2d2d\",\"color_badge_product_sale_badges\":\"#e74c3c\",\"price_ranges\":true,\"container-border-global-color-dark\":\"#454545\",\"color-greyDark\":\"#666666\",\"navPages_animation\":\"fade\",\"header-backgroundColor\":\"#232f3e\",\"banner3x_3_backgroundColor\":\"transparent\",\"optimizedCheckout-buttonSecondary-borderColorHover\":\"#999999\",\"optimizedCheckout-discountBanner-iconColor\":\"#FFFFFF\",\"productpage_thumbnails_count\":5,\"optimizedCheckout-buttonSecondary-borderColor\":\"#dcdcdc\",\"subcategories_menu_vertical\":true,\"optimizedCheckout-loadingToaster-textColor\":\"#ffffff\",\"color-errorLight\":\"#ffdddd\",\"optimizedCheckout-buttonPrimary-colorDisabled\":\"#ffffff\",\"optimizedCheckout-formField-placeholderColor\":\"#999999\",\"navUser-color-hover\":\"#edbb6e\",\"icon-ratingFull\":\"#ffb400\",\"default_image_gift_certificate\":\"img/GiftCertificate.png\",\"paymentbuttons-paylater-checkout-on-top-color\":\"gold\",\"carousel-slide4-position\":\"center\",\"add_to_cart_popup\":\"default\",\"homepage_blog_posts_position\":\"content\",\"social_icon_placement_top\":false,\"productsByCategorySortingTabs_show_reviews\":true,\"section6\":\"bc_banner_home_3\",\"fontSizeRoot\":\"13\",\"footer-secondary-color\":\"#cccccc\",\"brandspage_layout\":\"\",\"manual_content_nav\":false,\"paymentbanners-proddetailspage-color\":\"white\",\"bannerAfterRating\":\"all\",\"instantload\":true,\"blog_size\":\"1193x795\",\"color-warningLight\":\"#fffdea\",\"show_product_weight\":false,\"font-smoothing\":\"antialiased\",\"paymentbuttons-paypal-checkout-payment-color\":\"gold\",\"alsobought_position\":\"wide\",\"optimizedCheckout-buttonSecondary-colorActive\":\"#000000\",\"paymentbuttons-provider-sorting\":[\"paypal\",\"paypal-credit\",\"paypal-venmo\",\"applepay\"],\"optimizedCheckout-orderSummary-backgroundColor\":\"#ffffff\",\"specialProductsTab_init_count\":4,\"masterpass-button-color\":\"black\",\"color-info\":\"#666666\",\"copyright-backgroundColor\":\"#131a22\",\"show_bulk_order_mode\":false,\"show_product_quick_view\":false,\"button--default-borderColorHover\":\"#989898\",\"card--alternate-backgroundColor\":\"#ffffff\",\"banner_half_1_backgroundColor\":\"transparent\",\"hide_content_navigation\":false,\"amazon-button-color\":\"Gold\",\"optimizedCheckout-formChecklist-backgroundColorSelected\":\"#f5f5f5\",\"nl_popup_start\":\"10\",\"show_copyright_footer\":false,\"swatch_option_size\":\"24x24\",\"optimizedCheckout-orderSummary-borderColor\":\"#dddddd\",\"productsByCategorySortingTabs-heading-backgroundColor3\":\"#cd4784\",\"optimizedCheckout-show-logo\":\"custom\",\"carousel-description-color\":\"#000000\",\"optimizedCheckout-step-backgroundColor\":\"#4f4f4f\",\"optimizedCheckout-formChecklist-backgroundColor\":\"#ffffff\",\"footer_show_links_3\":false,\"pdp-price-label\":\"Sale Price\",\"specialProductsColumns_show_featured\":true,\"footer_show_links_4\":false,\"optimizedCheckout-headingPrimary-color\":\"#2d2d2d\",\"banner_one_3_backgroundColor\":\"transparent\",\"color-textBase\":\"#333333\",\"color-warning\":\"#d4cb49\",\"paymentbuttons-paypal-checkout-on-top-color\":\"gold\",\"paymentbuttons-venmo-product-details-page-color\":\"blue\",\"productgallery_size\":\"350x350\",\"blog_count\":5,\"quickSearch-borderColor\":\"#edbb6e\",\"show_accept_applepay\":true,\"alert-color\":\"#4f4f4f\",\"footer_show_newsletter\":true,\"topHeader-color\":\"#cccccc\",\"searchpage_products_per_page\":18,\"optimizedCheckout-formField-inputControlColor\":\"#476bef\",\"optimizedCheckout-contentPrimary-color\":\"#4f4f4f\",\"optimizedCheckout-buttonSecondary-font\":\"Google_Roboto_400\",\"storeName-color\":\"#EDBB6E\",\"optimizedCheckout-backgroundImage\":\"\",\"form-label-font-color\":\"#000000\",\"footer_show_location\":true,\"card-figcaption-button-color\":\"#333333\",\"show_shop_by_brand\":0,\"productsByCategorySubcategoriesTabs-heading-color2\":\"#ffffff\",\"color_badge_product_outstock_badges\":\"#eeeeee\",\"productsByCategorySortingTabs_subcategories\":6,\"navUser_wishlist\":false,\"paymentbuttons-paypal-product-details-page-color\":\"gold\",\"color-greyLightest\":\"#e8e8e8\",\"productsByCategorySortingTabs-heading-color1\":\"#ffffff\",\"productpage_related_products_count\":12,\"color-secondary
1953Dark\":\"#e8e8e8\",\"fb_page\":\"\",\"optimizedCheckout-buttonSecondary-backgroundColorActive\":\"#e5e5e5\",\"color-textLink\":\"#0066c0\",\"paymentbuttons-paypal-checkout-on-top-payment-label\":\"checkout\",\"color-greyLighter\":\"#dfdfdf\",\"carousel_vid3\":\"\",\"paymentbanners-homepage-ratio\":\"8x1\",\"topHeader_address\":true,\"fontSizeH4\":\"14\",\"optimizedCheckout-header-backgroundColor\":\"#f7f7f7\",\"paymentbuttons-paypal-product-details-page-label\":\"checkout\",\"carousel_vid2\":\"\",\"carousel-arrow-color\":\"#989898\",\"productpage_similar_by_views_count\":12,\"card_info\":\"\",\"show_accept_amazon\":true,\"afterpay-button-color\":\"black-mint\",\"productsByCategorySubcategoriesTabs-heading-backgroundColor2\":\"#fe5621\",\"input-bg-color\":\"#ffffff\",\"loadingOverlay-backgroundColor\":\"#ffffff\",\"paymentbanners-proddetailspage-ratio\":\"8x1\",\"color_text_product_outstock_badges\":\"#282828\",\"optimizedCheckout-buttonPrimary-color\":\"#ffffff\",\"navPages-subMenu-separatorColor\":\"#e6e6e6\",\"navPages-color-hover\":\"#ffffff\",\"color-infoLight\":\"#dfdfdf\",\"paymentbanners-homepage-color\":\"white\",\"googlepay-button-color\":\"black\",\"product_sale_badges\":\"topright\",\"category_size\":\"original\",\"navUser-dropdown-borderColor\":\"#dcdcdc\",\"color-greyMedium\":\"#989898\",\"topHeader_banner2\":true,\"footer_show_aboutus\":true,\"optimizedCheckout-formChecklist-borderColor\":\"#cccccc\",\"footer-headingColor\":\"#ffffff\",\"paymentbuttons-paylater-product-details-page-color\":\"gold\",\"default_image_product\":\"img/ProductDefault.gif\",\"image_product_loading\":\"/assets/img/product-loading.gif\",\"optimizedCheckout-buttonPrimary-colorActive\":\"#ffffff\",\"footer-secondary-linkColor-hover\":\"#ffffff\",\"section9\":\"instagram_carousel\",\"color-greyLight\":\"#a5a5a5\",\"optimizedCheckout-logo\":\"\",\"icon-ratingEmpty\":\"#dfdfdf\",\"specialProductsTab-heading-color-inactive\":\"#cccccc\",\"icon-color\":\"#ffffff\",\"icon--alt-backgroundColor\":\"transparent\",\"copyright-color\":\"#999999\",\"checkout-paymentbuttons-paypal-shape\":\"rect\",\"max_shop_by_brand\":10,\"carousel-video-ratio\":\"56.25%\",\"redirect_cart\":false,\"section2\":\"special_products_tabs\",\"overlay-backgroundColor\":\"#2d2d2d\",\"input-border-color-active\":\"#edbb6e\",\"topHeader_account\":true,\"nl_popup_hide\":\"60\",\"show_subcategories_menu\":true,\"container-fill-dark\":\"#f2f2f2\",\"optimizedCheckout-buttonPrimary-backgroundColorDisabled\":\"#cccccc\",\"productsByCategorySortingTabs_show_bestselling\":true,\"optimizedCheckout-buttonPrimary-borderColorHover\":\"#666666\",\"topHeader-icon-color\":\"#FFB400\",\"topBanner-backgroundColorGradient\":\"#FF0106\",\"color-successLight\":\"#d5ffd8\",\"specialProductsTab_more\":true,\"navPages_categoriesItem_text\":\"Categories\",\"color-greyDarker\":\"#454545\",\"productsByCategorySortingTabs_showBanner\":false,\"paymentbuttons-number-of-buttons\":1,\"carousel-slide3-position\":\"center\",\"button--primary-color\":\"#282828\",\"banner3x_1_backgroundColor\":\"transparent\",\"banner_one_3_style\":\"\",\"categoriesGrid-heading-backgroundColor\":\"#00a6ed\",\"color_text_product_custom_badges\":\"#ffffff\",\"color-success\":\"#69d66f\",\"color-white\":\"#ffffff\",\"spinner-borderColor-light\":\"#ffffff\",\"card_showHoverImage\":false,\"optimizedCheckout-header-borderColor\":\"#dddddd\",\"container-border-radius2\":\"4\",\"paymentbuttons-container\":\"medium\",\"productsByCategory-heading-backgroundColor1\":\"#009688\",\"zoom_size\":\"1280x1280\",\"productsByCategorySortingTabs-heading-color2\":\"#ffffff\",\"button-radius2\":\"4\",\"optimizedCheckout-buttonSecondary-backgroundColor\":\"#ffffff\",\"navPages-subMenu-color\":\"#282828\",\"topHeader_phone\":true,\"color-textSecondary--hover\":\"#666666\",\"paymentbuttons-paypal-checkout-payment-size\":\"medium\",\"input-border-color\":\"#dcdcdc\",\"optimizedCheckout-buttonPrimary-backgroundColor\":\"#454545\",\"bannerAfterHeader\":\"all\",\"footer_show_categories\":6,\"banner_half_3_backgroundColor\":\"transparent\",\"footer-linkColor\":\"#dddddd\",\"productsByCategorySortingTabs_catIDs\":\"\",\"bannerBeforeDescription\":\"all\",\"icon-backgroundColor-hover\":\"#ffa500\",\"carousel-bgColor\":\"#ffffff\",\"checkout-paymentbuttons-paypal-color\":\"black\",\"specialProductsTab_show_new\":false,\"carousel-dot-color-active\":\"#edbb6e\",\"color-secondary\":\"#ffffff\",\"categoriesGrid-heading-color\":\"#ffffff\",\"productsByCategorySubcategoriesTabs-heading-color1\":\"#ffffff\",\"bannerBeforeCategory\":\"all\",\"color-whitesBase\":\"#f8f8f8\",\"productpage_custom_fields_tab\":true,\"body-bg\":\"#ffffff\",\"dropdown--quickSearch-backgroundColor\":\"#dcdcdc\",\"navUser-dropdown-backgroundColor\":\"#ffffff\",\"color-primary\":\"#edbb6e\",\"product_image_responsive\":true,\"productsByCategory-heading-backgroundColor2\":\"#fe5621\",\"optimizedCheckout-contentSecondary-font\":\"Google_Roboto_400\",\"card-figcaption-button-borderColor\":\"#dcdcdc\",\"optimizedCheckout-contentPrimary-font\":\"Google_Roboto_400\",\"productsByCategorySortingTabs-heading-backgroundColor1\":\"#097276\",\"csspreload\":\"speedtest\",\"layout\":\"default\",\"productsByCategory-heading-color3\":\"#ffffff\",\"supported_card_type_icons\":[\"american_express\",\"diners\",\"discover\",\"mastercard\",\"visa\"],\"navPages_standard\":false,\"fontSizeH1\":\"22\",\"categorypage_search_subs\":false,\"footer_show_links_1\":false,\"paymentbuttons-paylater-checkout-payment-color\":\"gold\",\"carousel-slide1-position\":\"center\",\"color-black\":\"#000000\",\"footer-secondary-linkColor\":\"#edbb6e\",\"footer-secondary-button-color\":\"#000000\",\"optimizedCheckout-formField-textColor\":\"#333333\",\"brand_main_size\":\"500x250\",\"checkout-paymentbuttons-paypal-size\":\"large\",\"carousel_vid4\":\"\",\"optimizedCheckout-buttonSecondary-colorHover\":\"#333333\",\"show_accept_klarna\":true,\"card-textAlign\":\"left\",\"paymentbanners-cartpage-logo-position\":\"left\",\"optimizedCheckout-contentSecondary-color\":\"#989898\",\"navPages-subMenu-color-hover\":\"#c45500\",\"productsByCategorySortingTabs_active\":\"featured\",\"checkout-paymentbuttons-paypal-label\":\"pay\",\"applePay-button\":\"black\",\"carousel_vid1\":\"\",\"card-title-color-hover\":\"#c45500\",\"optimizedCheckout-buttonPrimary-borderColor\":\"#454545\",\"section3\":\"products_by_category_sorting_tabs\",\"navUser-indicator-backgroundColor\":\"#e74c3c\",\"o
1953ptimizedCheckout-buttonSecondary-borderColorActive\":\"#757575\",\"fontSizeH5\":\"12\",\"productsByCategorySortingTabs-heading-color3\":\"#ffffff\",\"footer-linkColor-hover\":\"#edbb6e\",\"category_card_size\":\"300x300\",\"banner3x_3_style\":\"\",\"productsByCategorySortingTabs_show_featured\":true,\"color-primaryLight\":\"#a5a5a5\",\"topHeader-color-hover\":\"#FFB400\",\"icon-backgroundColor\":\"#edbb6e\",\"specialProductsTab_active_tab\":\"top\",\"carousel-bgColor-opacity2\":\"0\",\"optimizedCheckout-header-textColor\":\"#333333\",\"optimizedCheckout-show-backgroundImage\":true,\"productpage_videos_position\":\"tab\",\"navPages-categoriesItem-backgroundColor\":\"#414c62\",\"show_accept_visa\":true,\"logo-position\":\"left\",\"show_product_reviews_tabs\":false,\"carousel-dot-bgColor\":\"#ffffff\",\"optimizedCheckout-form-textColor\":\"#666666\",\"carousel-slide2-position\":\"center\",\"optimizedCheckout-buttonSecondary-color\":\"#4f4f4f\",\"button--icon-svg-color\":\"#4f4f4f\",\"banner3x_2_style\":\"\",\"input-radius2\":\"4\",\"button--default-colorHover\":\"#666666\",\"checkRadio-backgroundColor\":\"#ffffff\",\"optimizedCheckout-buttonPrimary-backgroundColorHover\":\"#666666\",\"homepage_carousel_style\":\"fullwidth\",\"input-disabled-bg\":\"#ffffff\",\"section8\":\"blog_recent\",\"alert-color-alt\":\"#ffffff\",\"paymentbuttons-venmo-checkout-payment-color\":\"blue\",\"productsByCategorySortingTabs_lazy\":false,\"paymentbanners-cartpage-text-color\":\"black\",\"footer-color-hover\":\"#edbb6e\",\"dropdown--wishList-backgroundColor\":\"#ffffff\",\"container-border-global-color-base\":\"#dcdcdc\",\"productthumb_size\":\"100x100\",\"specialProductsTab_show_top\":true,\"productsByCategorySubcategoriesTabs-heading-backgroundColor3\":\"#00a6ed\",\"button--primary-colorHover\":\"#000000\",\"color-error\":\"#ff7d7d\",\"homepage_blog_posts_count\":1,\"productpage_custom_fields_hide_special\":true,\"color-textSecondary\":\"#a5a5a5\",\"gallery_size\":\"300x300\",\"specialProductsColumns_show_new\":true,\"productsByCategorySortingTabs_products\":8},\"genericError\":\"Oops! Something went wrong.\",\"urls\":{\"home\":\"https://martelelectronics.com/\",\"brands\":\"https://martelelectronics.com/brands/\",\"search\":\"https://martelelectronics.com/search.php\",\"compare\":\"https://martelelectronics.com/compare\",\"sitemap\":\"https://martelelectronics.com/sitemap.php\",\"contact_us_submit\":\"https://martelelectronics.com/pages.php?action=sendContactForm\",\"subscribe\":{\"action\":\"https://martelelectronics.com/subscribe.php\"},\"checkout\":{\"single_address\":\"https://martelelectronics.com/checkout\",\"multiple_address\":\"https://martelelectronics.com/checkout.php?action=multiple\"},\"account\":{\"orders\":{\"all\":\"https://martelelectronics.com/account.php?action=order_status\",\"completed\":\"https://martelelectronics.com/account.php?action=view_orders\",\"save_new_return\":\"https://martelelectronics.com/account.php?action=save_new_return\"},\"returns\":\"https://martelelectronics.com/account.php?action=view_returns\",\"addresses\":\"https://martelelectronics.com/account.php?action=address_book\",\"inbox\":\"https://martelelectronics.com/account.php?action=inbox\",\"send_message\":\"https://martelelectronics.com/account.php?action=send_message\",\"add_address\":\"https://martelelectronics.com/account.php?action=add_shipping_address\",\"update_action\":\"https://martelelectronics.com/account.php?action=update_account\",\"details\":\"https://martelelectronics.com/account.php?action=account_details\",\"recent_items\":\"https://martelelectronics.com/account.php?action=recent_items\",\"index\":\"https://martelelectronics.com/account.php\",\"wishlists\":{\"all\":\"https://martelelectronics.com/wishlist.php\",\"add\":\"https://martelelectronics.com/wishlist.php?action=addwishlist\",\"edit\":\"https://martelelectronics.com/wishlist.php?action=editwishlist\",\"delete\":\"https://martelelectronics.com/wishlist.php?action=deletewishlist\"},\"payment_methods\":{\"all\":\"https://martelelectronics.com/account.php?action=payment_methods\"}},\"auth\":{\"login\":\"https://martelelectronics.com/login.php\",\"check_login\":\"https://martelelectronics.com/login.php?action=check_login\",\"create_account\":\"https://martelelectronics.com/login.php?action=create_account\",\"save_new_account\":\"https://martelelectronics.com/login.php?action=save_new_account\",\"forgot_password\":\"https://martelelectronics.com/login.php?action=reset_password\",\"send_password_email\":\"https://martelelectronics.com/login.php?action=send_password_email\",\"save_new_password\":\"https://martelelectronics.com/login.php?action=save_new_password\",\"logout\":\"https://martelelectronics.com/login.php?action=logout\"},\"cart\":\"https://martelelectronics.com/cart.php\",\"product\":{\"post_review\":\"https://martelelectronics.com/postreview.php\"},\"gift_certificate\":{\"purchase\":\"https://martelelectronics.com/giftcertificates.php\",\"redeem\":\"https://martelelectronics.com/giftcertificates.php?action=redeem\",\"balance\":\"https://martelelectronics.com/giftcertificates.php?action=balance\"},\"rss\":{\"products\":{\"new\":\"https://martelelectronics.com/rss.php?type=rss\",\"new_atom\":\"https://martelelectronics.com/rss.php?type=atom\",\"popular\":\"https://martelelectronics.com/rss.php?action=popularproducts&type=rss\",\"popular_atom\":\"https://martelelectronics.com/rss.php?action=popularproducts&type=atom\",\"featured\":\"https://martelelectronics.com/rss.php?action=featuredproducts&type=rss\",\"featured_atom\":\"https://martelelectronics.com/rss.php?action=featuredproducts&type=atom\",\"search\":\"https://martelelectronics.com/rss.php?action=searchproducts&type=rss\",\"search_atom\":\"https://martelelectronics.com/rss.php?action=searchproducts&type=atom\"},\"blog\":\"https://martelelectronics.com/rss.php?action=newblogs&type=rss\",\"blog_atom\":\"https://martelelectronics.com/rss.php?action=newblogs&type=atom\"}},\"secureBaseUrl\":\"https://martelelectronics.com\",\"cartId\":null,\"template\":\"pages/page\",\"pageType\":\"page\",\"validationDictionaryJSON\":\"{\\\"locale\\\":\\\"en\\\",\\\"locales\\\":{\\\"validation_messages.val
1953id_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\\\"},\\\"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.val
1953id_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_not_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.\\\"}}\",\"ajaxAddToCartEnterQty\":\"Please enter quantity\",\"bulkOrderEnterQty\":\"Please enter quantity\",\"bulkOrderChooseOptions\":\"Please choose options\",\"txtMinQty\":\"The minimum purchasable quantity is %qty%\",\"txtMaxQty\":\"The maximum purchasable quantity is %qty%\",\"compareAddonLang_compare\":\"Compare\",\"compareAddonLang_quick_view\":\"Quick view\",\"compareAddonLang_remove\":\"Remove\",\"compareAddonLang_clear_all\":\"Clear All\",\"customerRecentlyViewedProductIds\":[],\"customerId\":null,\"graphQLToken\":\"eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJjaWQiOlsxXSwiY29ycyI6WyJodHRwczovL21hcnRlbGVsZWN0cm9uaWNzLmNvbSJdLCJlYXQiOjE3OTA0MjQ2NDAsImlhdCI6MTc5MDI1MTg0MCwiaXNzIjoiQkMiLCJzaWQiOjUwMDAyMiwic3ViIjoiQkMiLCJzdWJfdHlwZSI6MCwidG9rZW5fdHlwZSI6MX0.CO4sztcul2sFgf0qGY_VnSOzY7QCkgwm47ITn8nXkdf8OJleLlSemGP7e-YyUsNf6T87VWBdU-VxlPRd2NtBeA\",\"currencyCode\":\"USD\",\"hidePriceFromGuests\":false,\"showProductRating\":false,\"defaultProductImage\":\"https://cdn11.bigcommerce.com/s-m0o7bk/stencil/dcff4430-4df6-013e-0d67-161549aa1a0e/e/cb041bf0-7fe1-013f-b400-5291dc9d1300/img/ProductDefault.gif\",\"card_show_sku\":true,\"card_show_hover_image\":false,\"show_product_quick_view\":false,\"ajax_add_to_cart\":false,\"product_outstock_badge\":true,\"product_sale_badges\":\"topright\",\"product_sale_label\":\"On Sale\",\"product_custom_badges\":true,\"pdp_price_label\":\"Sale Price\",\"pdp_sale_price_label\":\"Now:\",\"pdp_non_sale_price_label\":\"Was:\",\"pdp_retail_price_label\":\"MSRP:\",\"price_ranges\":true,\"pbcst_show_bestselling\":true,\"pbcst_show_featured\":true,\"pbcst_show_new\":false,\"pbcst_show_reviews\":true,\"pbcst_show_banner\":false,\"pbcst_subcategories\":6,\"pbcst_products\":8,\"loadingImage\":\"https://cdn11.bigcommerce.com/s-m0o7bk/stencil/dcff4430-4df6-013e-0d67-161549aa1a0e/e/cb041bf0-7fe1-013f-b400-5291dc9d1300/img/loading.svg\",\"productLoadingImage\":\"https://cdn11.bigcommerce.com/s-m0o7bk/stencil/dcff4430-4df6-013e-0d67-161549aa1a0e/e/cb041bf0-7fe1-013f-b400-5291dc9d1300/img/product-loading.gif\",\"txtPriceWithTax\":\"Inc. Tax\",\"txtPriceWithoutTax\":\"Ex. Tax\",\"txtLoginForPricing\":\"Log in for pricing\",\"txtQuickView\":\"Quick view\",\"txtCompare\":\"Compare\",\"txtChooseOptions\":\"Choose Options\",\"txtPreOrder\":\"Pre-Order Now\",\"txtAddToCart\":\"Add to Cart\",\"txtQuantity\":\"Quantity:\",\"txtQuantityDecrease\":\"Decrease Quantity of undefined\",\"txtQuantityIncrease\":\"Increase Quantity of undefined\",\"txtBestsellingTab\":\"Be
1953stselling\",\"txtFeaturedTab\":\"Highlighted\",\"txtNewTab\":\"Newest\",\"txtReviewsTab\":\"Top Reviewed\",\"txtSubcategoryHeading\":\"Categories\",\"txtLoadMore\":\"Show More\",\"txtCollapse\":\"Collapse\",\"outOfStockDefaultMessage\":\"Sold Out\",\"configurationId\":\"7f1539f0-5baf-013f-58a6-6e8db226ea8e\"}").load();
1954        </script>
1954
1955
1956            
1956<script type="text/javascript" src="https://cdn11.bigcommerce.com/shared/js/csrf-protection-header-5eeddd5de78d98d146ef4fd71b2aedce4161903e.js"></script>
vendor: 1 bytes, line 1956
1956
1957<script src='https://cdn.userway.org/widget.js?account=999Bb8vQYO&platfAppInstalledSiteId=2653869' ></script>
1957<script data-bc-cookie-consent="2" type="text/plain" src='https://martel-cart-activity.martelsales.workers.dev/storefront.js' defer  ></script>
1957<!-- Lime Talk Live Chat start --> 
1957<script type="text/javascript"> var limetalk = (function () { var lc = document.createElement("script"); lc.type = "text/javascript"; lc.async = true; lc.src = "//www.limetalk.com/livechat/6eb372120e7c7809be571eda9bc7cb07"; document.getElementsByTagName("head")[0].appendChild(lc); var fnr = function(fn) { var l = limetalk; if (l.readyList) { l.ready(fn); } else { l.rl = l.rl || []; l.rl.push(fn); } }; fnr.ready = fnr; return fnr; })(); </script>
1957 <!-- Lime Talk Live Chat end -->
1957<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
1957<script src="https://www.meggnoapps.com/client/assets/popquick/rmyIzDtbmDihCxr/js/widget.js" async="async"></script>
1957<script nonce="">if (!window.__webpack_nonce__) window.__webpack_nonce__ = '';window.PapaThemesWidgetCategoryIcons_graphQLToken = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJjaWQiOlsxXSwiY29ycyI6WyJodHRwczovL21hcnRlbGVsZWN0cm9uaWNzLmNvbSJdLCJlYXQiOjE3OTA0MjQ2NDAsImlhdCI6MTc5MDI1MTg0MCwiaXNzIjoiQkMiLCJzaWQiOjUwMDAyMiwic3ViIjoiQkMiLCJzdWJfdHlwZSI6MCwidG9rZW5fdHlwZSI6MX0.CO4sztcul2sFgf0qGY_VnSOzY7QCkgwm47ITn8nXkdf8OJleLlSemGP7e-YyUsNf6T87VWBdU-VxlPRd2NtBeA'</script>
1957<script nonce="">if (!window.__webpack_nonce__) window.__webpack_nonce__ = '';window.PapaThemesDinosaurWidgetProductTags_graphQLToken = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJjaWQiOlsxXSwiY29ycyI6WyJodHRwczovL21hcnRlbGVsZWN0cm9uaWNzLmNvbSJdLCJlYXQiOjE3OTA0MjQ2NDAsImlhdCI6MTc5MDI1MTg0MCwiaXNzIjoiQkMiLCJzaWQiOjUwMDAyMiwic3ViIjoiQkMiLCJzdWJfdHlwZSI6MCwidG9rZW5fdHlwZSI6MX0.CO4sztcul2sFgf0qGY_VnSOzY7QCkgwm47ITn8nXkdf8OJleLlSemGP7e-YyUsNf6T87VWBdU-VxlPRd2NtBeA'</script>
1957<script>
1958(function(){
1959  if(window.__martelQuoteV2Ready && typeof window.__martelQuoteV2Ready === "function"){
1960    window.__martelQuoteV2Ready("script-manager-reload");
1961    return;
1962  }
1963  if(window.__martelQuoteV2Loading)return;
1964  window.__martelQuoteV2Loading=true;
1965  window.__martelQuoteV2=true;
1966  window.__martelQuoteV2Version="2026-05-02-instantload-safe-v3";
1967
1968  var WORKER_URL="https://dc7-quote.martelsales.workers.dev";
1969  var STORAGE_KEY="martel_saved_quote_items";
1970  var DRAFT_KEY="martel_quote_customer_draft_v1";
1971  var WRAP_ID="martelQuoteWrap";
1972  var STYLE_ID="martelQuoteStyles";
1973  var QUOTE_MODAL_ID="martelQuoteModal";
1974  var SAVED_MODAL_ID="martelSavedQuoteModal";
1975  var INLINE_MSG_ID="martelQuoteInlineMsg";
1976  var COUNT_ID="martelSavedQuoteCount";
1977  var MAX_TRIES=40,TRY_DELAY=500;
1978  var ensureTimer=null, ensureActive=false, bootInterval=null, lastUrl=location.href, savedCloseTimer=null;
1979  var mutationObserver=null, mutationQueued=false;
1980
1981  function q(s,r){return (r||document).querySelector(s);}
1982  function qa(s,r){return Array.prototype.slice.call((r||document).querySelectorAll(s));}
1983  function txt(el){return el?(el.textContent||"").trim():"";}
1984  function esc(s){return String(s==null?"":s).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;");}
1985  function n(v,f){var x=parseInt(String(v||"").replace(/[^\d-]/g,""),10);return Number.isFinite(x)?x:f;}
1986  function money(v){return Number.isFinite(v)?"$"+v.toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g,","):"-";}
1987  function price(s){if(!s)return NaN;var x=parseFloat(String(s).replace(/[^\d.,-]/g,"").replace(/,/g,""));return Number.isFinite(x)?x:NaN;}
1988  function ready(fn){if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",fn,{once:true});else fn();}
1989  function pageQtyEl(){return q('input[name="qty[]"], input[name="qty"]');}
1990  function isProductPage(){return !!(q('input[name="product_id"]')||q(".productView")||q('[data-cart-item-add]'));}
1991
1992  function productForm(){
1993    return q('[data-cart-item-add]') ||
1994      (q('input[name="product_id"]') && q('input[name="product_id"]').closest("form")) ||
1995      q(".productView form") || null;
1996  }
1997
1998  function insertAnchor(){
1999    var form=productForm();
2000    return (q("#form-action-addToCart")&&q("#form-action-addToCart").closest(".form-action")) ||
2001      (q("#form-action-buyNow")&&q("#form-action-buyNow").closest(".form-action")) ||
2002      q("#add-to-cart-wrapper .form-action") ||
2003      q('[id^="add-to-cart-wrapper"] .form-action') ||
2004      q(".add-to-cart-buttons .form-action") ||
2005      q(".productView-options .form-action") ||
2006      (q('[data-button-type="add-cart"]')&&q('[data-button-type="add-cart"]').closest(".form-action")) ||
2007      (form&&(q(".form-action",form)||q(".add-to-cart-wrapper",form))) || null;
2008  }
2009
2010  function selectedOptions(){
2011    var form=productForm(); if(!form)return "";
2012    var out=[];
2013    qa("select",form).forEach(function(el){
2014      if(!el.name)return;
2015      var op=el.options&&el.selectedIndex>=0?el.options[el.selectedIndex]:null;
2016      var val=op?txt(op):""; if(!val)return;
2017      var field=el.closest(".form-field");
2018      var label=field?txt(q(".form-label",field)):"";
2019      out.push(label?label+": "+val:val);
2020    });
2021    qa('input[type="radio"]:checked,input[type="checkbox"]:checked',form).forEach(function(el){
2022      var val=el.value||""; if(!val)return;
2023      var field=el.closest(".form-field");
2024      var label=field?txt(q(".form-label",field)):"";
2025      var next=el.nextElementSibling;
2026      var opt=next&&/label/i.test(next.tagName)?txt(next):"";
2027      out.push(label?label+": "+(opt||val):(opt||val));
2028    });
2029    return out.join(" | ");
2030  }
2031
2032  function currentUnitPrice(){
2033    var sels=[
2034      ".productView-price .price--withTax",
2035      ".productView-price .price--withoutTax",
2036      ".productView-price .price",
2037      ".price.price--withTax",
2038      ".price.price--withoutTax",
2039      ".productView .price"
2040    ];
2041    for(var i=0;i<sels.length;i++){
2042      var el=q(sels[i]);
2043      var v=price(txt(el));
2044      if(Number.isFinite(v))return v;
2045    }
2046    return NaN;
2047  }
2048
2049  function productData(){
2050    var title=txt(q(".productView-title"))||txt(q("h1.page-heading"))||document.title.replace(/\s*\|.*$/,"").trim();
2051    var pid=q('input[name="product_id"]');
2052    var skuEl=q("[data-product-sku]");
2053    var sku=skuEl?(skuEl.getAttribute("data-product-sku")||txt(skuEl)):txt(q('.productView-info [data-product-sku], .productSKU, [itemprop="sku"]'));
2054    var qty=pageQtyEl(); qty=qty&&qty.value?qty.value:"1";
2055    return {
2056      product_id:pid?String(pid.value||"").trim():"",
2057      product_name:title,
2058      product_url:location.href,
2059      sku:String(sku||"").trim(),
2060      quantity:String(Math.max(1,n(qty,1))),
2061      option_summary:selectedOptions(),
2062      unit_price:currentUnitPrice()
2063    };
2064  }
2065
2066  function productKey(){var p=productData(); return p.product_id||p.product_url||location.href;}
2067
2068  function getItems(){try{var x=JSON.parse(localStorage.getItem(STORAGE_KEY)||"[]");return Array.isArray(x)?x:[];}catch(e){return [];}}
2069  function setItems(items){try{localStorage.setItem(STORAGE_KEY,JSON.stringify(items));return true;}catch(e){return false;}}
2070  function getDraft(){try{var x=JSON.parse(localStorage.getItem(DRAFT_KEY)||"{}");return x&&typeof x==="object"?x:{};}catch(e){return {};}}
2071  function setDraft(d){try{localStorage.setItem(DRAFT_KEY,JSON.stringify(d||{}));return true;}catch(e){return false;}}
2072  function itemKey(i){return [i.product_id||"",i.sku||"",i.option_summary||"",i.product_url||""].join("||");}
2073  function savedLineCount(){return getItems().length;}
2074  function savedUnitCount(){return getItems().reduce(function(sum,it){return sum+Math.max(1,n(it.quantity,1));},0);}
2075  function roundMoney(v){return Math.round(v*100)/100;}
2076  function safeMoneyValue(v){return Number.isFinite(v)?roundMoney(v):null;}
2077
2078  function getItemPricing(item){
2079    var qty=Math.max(1,n(item&&item.quantity,1));
2080    var unit=Number.isFinite(item&&item.unit_price)?Number(item.unit_price):NaN;
2081    return {qty:qty,unit_price:safeMoneyValue(unit),line_total:safeMoneyValue(unit*qty)};
2082  }
2083
2084  function getSavedQuotePricing(items){
2085    var list=Array.isArray(items)?items:[];
2086    var subtotal=0, hasPrice=false;
2087    list.forEach(function(item){
2088      var p=getItemPricing(item);
2089      if(Number.isFinite(p.line_total)){
2090        subtotal+=p.line_total;
2091        hasPrice=true;
2092      }
2093    });
2094    subtotal=safeMoneyValue(subtotal);
2095    return {
2096      items_subtotal:hasPrice?subtotal:null,
2097      quote_total:hasPrice?subtotal:null
2098    };
2099  }
2100
2101  function showInline(msg,type){
2102    var el=q("#"+INLINE_MSG_ID); if(!el)return;
2103    el.className="martel-quote-inline-msg "+(type==="ok"?"is-ok":"is-err");
2104    el.textContent=msg||"";
2105    setTimeout(function(){if(el.textContent===msg){el.className="martel-quote-inline-msg";el.textContent="";}},3600);
2106  }
2107
2108  function showSavedMsg(msg,type){
2109    var el=q("#msqMsg"); if(!el)return;
2110    el.className="msq-msg "+(type==="ok"?"is-ok":"is-err");
2111    el.textContent=msg||"";
2112    try{if(msg)el.scrollIntoView({behavior:"smooth",block:"nearest"});}catch(e){}
2113    setTimeout(function(){if(el.textContent===msg){el.className="msq-msg";el.textContent="";}},4200);
2114  }
2115
2116  function updateCounts(){
2117    var count=q("#"+COUNT_ID);
2118    if(count)count.textContent="Saved Quote Items: "+savedLineCount();
2119    var t=q("#mqSavedBasketCount"); if(t)t.textContent="Saved quote basket: "+savedLineCount();
2120    var open=q("#mqOpenSavedBtn"); if(open)open.textContent="Open Saved Multi-Item Quote"+(savedLineCount()?" ("+savedLineCount()+")":"");
2121    var email=q("#mqEmailSavedBtn"); if(email)email.textContent="Email Saved Items Quote"+(savedLineCount()?" ("+savedLineCount()+")":"");
2122  }
2123
2124  function saveCurrentProduct(){
2125    var p=productData();
2126    if(!p.product_name||!p.product_url){showInline("Could not save this item right now.","err");return false;}
2127    var items=getItems(), k=itemKey(p), found=-1;
2128    for(var i=0;i<items.length;i++){if(itemKey(items[i])===k){found=i;break;}}
2129    if(found>-1){
2130      items[found].product_id=p.product_id;
2131      items[found].product_name=p.product_name;
2132      items[found].product_url=p.product_url;
2133      items[found].sku=p.sku;
2134      items[found].option_summary=p.option_summary;
2135      items[found].unit_price=safeMoneyValue(p.unit_price);
2136      items[found].quantity=String(Math.max(1,n(items[found].quantity,1))+Math.max(1,n(p.quantity,1)));
2137      items[found].saved_at=new Date().toISOString();
2138    }else{
2139      items.push({
2140        product_id:p.product_id,
2141        product_name:p.product_name,
2142        product_url:p.product_url,
2143        sku:p.sku,
2144        option_summary:p.option_summary,
2145        unit_price:safeMoneyValue(p.unit_price),
2146        quantity:String(Math.max(1,n(p.quantity,1))),
2147        saved_at:new Date().toISOString()
2148      });
2149    }
2150    if(!setItems(items)){showInline("Could not save this item in your browser.","err");return false;}
2151    updateCounts();
2152    showInline("Item saved to quote.","ok");
2153    if(savedOpen()){renderSavedModal();showSavedMsg("Saved quote updated.","ok");}
2154    return true;
2155  }
2156
2157  function addStyles(){
2158    if(q("#"+STYLE_ID))return;
2159    var css=`
2160#${WRAP_ID}{margin-top:10px}
2161#${WRAP_ID} .martel-quote-btns{display:flex;flex-wrap:wrap;gap:10px}
2162#martelQuoteBtn,#martelSaveQuoteBtn,#martelViewSavedQuoteBtn{display:inline-block;min-width:180px;padding:14px 18px;border-radius:6px;cursor:pointer;font-weight:700;font-size:16px;line-height:1.2;text-align:center}
2163#martelQuoteBtn{border:0;background:#f4c400;color:#111}
2164#martelSaveQuoteBtn{border:1px solid #17365d;background:#17365d;color:#fff}
2165#martelViewSavedQuoteBtn{border:1px solid #999;background:#fff;color:#111}
2166#martelViewSavedQuoteBtn:hover{background:#f7f7f7}
2167#${COUNT_ID}{flex:0 0 100%;margin:2px 0 0 0;font-size:13px;font-weight:700;color:#17365d;line-height:1.25;text-align:left}
2168.martel-quote-inline-msg{margin-top:6px;min-height:18px;font-size:13px;line-height:1.35}
2169.martel-quote-inline-msg.is-ok,.mq-ok,.msq-msg.is-ok{color:#0a6b2d}
2170.martel-quote-inline-msg.is-err,.mq-err,.msq-msg.is-err{color:#b42318}
2171#${QUOTE_MODAL_ID},#${SAVED_MODAL_ID}{position:fixed;inset:0;z-index:99999;background:rgba(0,0,0,.55);display:none;align-items:center;justify-content:center;padding:16px}
2172#${QUOTE_MODAL_ID} .mq-box{background:#fff;width:100%;max-width:960px;border-radius:16px;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.28);box-sizing:border-box;max-height:92vh;display:flex;flex-direction:column}
2173#${QUOTE_MODAL_ID} .mq-head{background:#17365d;color:#fff;padding:18px 22px 14px;display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
2174#${QUOTE_MODAL_ID} .mq-head-left{min-width:0}
2175#${QUOTE_MODAL_ID} .mq-title{font-size:34px;font-weight:800;line-height:1.1;margin:0 0 6px;color:#fff}
2176#${QUOTE_MODAL_ID} .mq-sub{font-size:14px;line-height:1.45;margin:0;color:#dbe7f7}
2177#${QUOTE_MODAL_ID} .mq-saved-top{font-size:13px;font-weight:700;color:#dbe7f7;margin-top:6px}
2178#${QUOTE_MODAL_ID} .mq-close{background:rgba(255,255,255,.12);border:0;color:#fff;border-radius:999px;font-size:26px;line-height:1;cursor:pointer;width:40px;height:40px;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
2179#${QUOTE_MODAL_ID} .mq-content{padding:18px 18px 16px;overflow:auto}
2180#${QUOTE_MODAL_ID} .mq-grid-top{display:grid;grid-template-columns:1.2fr .9fr;gap:12px;margin-bottom:12px}
2181#${QUOTE_MODAL_ID} .mq-card{background:#f8fafc;border:1px solid #dbe4ef;border-radius:10px;padding:14px}
2182#${QUOTE_MODAL_ID} .mq-card-title,#${QUOTE_MODAL_ID} .mq-section-title,#${SAVED_MODAL_ID} .msq-section-title{font-size:13px;font-weight:800;color:#17365d;margin:0 0 10px}
2183#${QUOTE_MODAL_ID} .mq-item-name{font-size:15px;font-weight:800;line-height:1.35;color:#17365d;margin-bottom:6px}
2184#${QUOTE_MODAL_ID} .mq-item-meta,#${SAVED_MODAL_ID} .msq-meta{font-size:13px;line-height:1.45;color:#444;word-break:break-word}
2185#${QUOTE_MODAL_ID} .mq-est-row{display:flex;justify-content:space-between;gap:16px;font-size:13px;line-height:1.6;color:#445166}
2186#${QUOTE_MODAL_ID} .mq-est-row strong{color:#17365d}
2187#${QUOTE_MODAL_ID} .mq-est-note{font-size:11px;color:#66758a;margin-top:6px;line-height:1.45}
2188#${QUOTE_MODAL_ID} .mq-form-grid,#${SAVED_MODAL_ID} .msq-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
2189#${QUOTE_MODAL_ID} .mq-field-full,#${SAVED_MODAL_ID} .msq-full{grid-column:1 / -1}
2190#${QUOTE_MODAL_ID} .mq-section-box,#${SAVED_MODAL_ID} .msq-section-box{border:1px solid #dbe4ef;border-radius:10px;background:#f8fafc;padding:14px 14px 12px}
2191#${SAVED_MODAL_ID} .msq-section-box{background:#fff}
2192#${QUOTE_MODAL_ID} .mq-checkbox-row,#${SAVED_MODAL_ID} .msq-checkbox-row{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-size:13px;font-weight:700;color:#17365d}
2193#${QUOTE_MODAL_ID} .mq-checkbox-row input,#${SAVED_MODAL_ID} .msq-checkbox-row input{width:auto;margin:0}
2194#${QUOTE_MODAL_ID} label{display:block;font-size:13px;font-weight:800;color:#17365d;margin:0 0 5px}
2195#${SAVED_MODAL_ID} .msq-field label{display:block;font-size:13px;font-weight:700;color:#222;margin:0 0 5px}
2196#${QUOTE_MODAL_ID} input,#${QUOTE_MODAL_ID} textarea,#${SAVED_MODAL_ID} .msq-field input,#${SAVED_MODAL_ID} .msq-field textarea{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid #ccc;border-radius:8px;font-size:14px;background:#fff}
2197#${QUOTE_MODAL_ID} textarea,#${SAVED_MODAL_ID} .msq-field textarea{min-height:90px;resize:vertical}
2198#${QUOTE_MODAL_ID} .mq-inline-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:4px}
2199#${QUOTE_MODAL_ID} .mq-add,#${QUOTE_MODAL_ID} .mq-open,#${QUOTE_MODAL_ID} .mq-continue,#${QUOTE_MODAL_ID} .mq-email-saved,#${QUOTE_MODAL_ID} .mq-send,#${SAVED_MODAL_ID} .msq-clear,#${SAVED_MODAL_ID} .msq-update,#${SAVED_MODAL_ID} .msq-submit,#${SAVED_MODAL_ID} .msq-close-btn{border-radius:8px;padding:11px 14px;font-weight:700;cursor:pointer}
2200#${QUOTE_MODAL_ID} .mq-add,#${QUOTE_MODAL_ID} .mq-open{background:#eef4fb;color:#17365d;border:1px solid #cdd8e7}
2201#${QUOTE_MODAL_ID} .mq-email-saved{background:#17365d;color:#fff;border:1px solid #17365d}
2202#${QUOTE_MODAL_ID} .mq-continue{background:#fff;border:1px solid #cfd8e3;color:#445166}
2203#${QUOTE_MODAL_ID} .mq-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:10px}
2204#${QUOTE_MODAL_ID} .mq-msg{flex:1 1 auto;font-size:13px;line-height:1.45;word-break:break-word;min-height:18px}
2205#${QUOTE_MODAL_ID} .mq-send,#${SAVED_MODAL_ID} .msq-submit{background:#f4c400;color:#111;border:0}
2206#${SAVED_MODAL_ID} .msq-box{background:#fff;width:100%;max-width:980px;border-radius:10px;padding:20px;box-sizing:border-box;max-height:92vh;display:flex;flex-direction:column}
2207#${SAVED_MODAL_ID} .msq-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
2208#${SAVED_MODAL_ID} .msq-title{font-size:24px;font-weight:700;line-height:1.2;margin:0;color:#111}
2209#${SAVED_MODAL_ID} .msq-close{background:none;border:0;font-size:28px;line-height:1;cursor:pointer;color:#444;padding:0 0 4px 8px}
2210#${SAVED_MODAL_ID} .msq-sub{font-size:14px;color:#444;margin:0 0 14px}
2211#${SAVED_MODAL_ID} .msq-body{overflow:auto;padding-right:4px}
2212#${SAVED_MODAL_ID} .msq-empty{padding:18px;border:1px solid #e6e6e6;border-radius:8px;background:#fafafa;font-size:15px;color:#444}
2213#${SAVED_MODAL_ID} .msq-item{display:grid;grid-template-columns:minmax(0,1fr) 170px;gap:16px;padding:16px;border:1px solid #e3e3e3;border-radius:8px;margin-bottom:12px}
2214#${SAVED_MODAL_ID} .msq-item-title{font-size:17px;font-weight:700;line-height:1.35;margin-bottom:6px}
2215#${SAVED_MODAL_ID} .msq-item-title a{color:#17365d;text-decoration:none}
2216#${SAVED_MODAL_ID}
2216 .msq-controls{display:flex;flex-direction:column;gap:8px;align-items:stretch;justify-content:center}
2217#${SAVED_MODAL_ID} .msq-controls label{display:block;font-size:12px;font-weight:700;color:#333;margin:0}
2218#${SAVED_MODAL_ID} .msq-qty{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid #ccc;border-radius:6px;font-size:14px}
2219#${SAVED_MODAL_ID} .msq-remove,#${SAVED_MODAL_ID} .msq-clear{background:#fff;border:1px solid #b42318;color:#b42318}
2220#${SAVED_MODAL_ID} .msq-update{background:#17365d;border:0;color:#fff}
2221#${SAVED_MODAL_ID} .msq-footer{border-top:1px solid #e6e6e6;padding-top:14px;margin-top:6px;overflow:auto}
2222#${SAVED_MODAL_ID} .msq-summary{font-size:14px;font-weight:700;color:#17365d;margin-bottom:10px}
2223#${SAVED_MODAL_ID} .msq-msg{min-height:18px;font-size:13px;line-height:1.35;margin-bottom:10px;word-break:break-word}
2224#${SAVED_MODAL_ID} .msq-customer{border:1px solid #dbe4ef;border-radius:8px;padding:14px;margin-bottom:12px;background:#f8fafc}
2225#${SAVED_MODAL_ID} .msq-customer-title{font-size:16px;font-weight:700;color:#111;margin-bottom:10px}
2226#${SAVED_MODAL_ID} .msq-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}
2227#${SAVED_MODAL_ID} .msq-close-btn{background:#f3f3f3;border:0;color:#222}
2228@media (max-width:760px){
2229  #${WRAP_ID} .martel-quote-btns,#${QUOTE_MODAL_ID} .mq-inline-actions,#${SAVED_MODAL_ID} .msq-actions{flex-direction:column}
2230  #martelQuoteBtn,#martelSaveQuoteBtn,#martelViewSavedQuoteBtn,#${QUOTE_MODAL_ID} .mq-send,#${QUOTE_MODAL_ID} .mq-add,#${QUOTE_MODAL_ID} .mq-open,#${QUOTE_MODAL_ID} .mq-continue,#${QUOTE_MODAL_ID} .mq-email-saved,#${SAVED_MODAL_ID} .msq-clear,#${SAVED_MODAL_ID} .msq-update,#${SAVED_MODAL_ID} .msq-submit,#${SAVED_MODAL_ID} .msq-close-btn{width:100%;min-width:0}
2231  #${QUOTE_MODAL_ID} .mq-grid-top,#${QUOTE_MODAL_ID} .mq-form-grid,#${SAVED_MODAL_ID} .msq-grid,#${SAVED_MODAL_ID} .msq-item{grid-template-columns:1fr}
2232  #${QUOTE_MODAL_ID} .mq-actions{flex-direction:column;align-items:stretch}
2233}
2234@media (max-width:640px){
2235  #${QUOTE_MODAL_ID} .mq-head{padding:16px}
2236  #${QUOTE_MODAL_ID} .mq-title{font-size:28px}
2237  #${QUOTE_MODAL_ID} .mq-content{padding:14px}
2238}`;
2239    var st=document.createElement("style");
2240    st.id=STYLE_ID;
2241    st.appendChild(document.createTextNode(css));
2242    document.head.appendChild(st);
2243  }
2244
2245  function quoteOpen(){var m=q("#"+QUOTE_MODAL_ID);return !!(m&&m.style.display==="flex");}
2246  function savedOpen(){var m=q("#"+SAVED_MODAL_ID);return !!(m&&m.style.display==="flex");}
2247  function closeQuote(){var m=q("#"+QUOTE_MODAL_ID);if(!m)return;m.style.display="none";if(!savedOpen())document.body.style.overflow="";}
2248  function closeSaved(){clearTimeout(savedCloseTimer);savedCloseTimer=null;var m=q("#"+SAVED_MODAL_ID);if(!m)return;m.style.display="none";if(!quoteOpen())document.body.style.overflow="";}
2249
2250  function fieldSuffix(k){
2251    return {name:"Name",email:"Email",second_email:"SecondEmail",company:"Company",phone:"Phone",quantity:"Qty",notes:"Notes",shipping_name:"ShipName",shipping_company:"ShipCompany",shipping_address1:"ShipAddress1",shipping_address2:"ShipAddress2",shipping_city:"ShipCity",shipping_state:"ShipState",shipping_zip:"ShipZip",billing_name:"BillName",billing_company:"BillCompany",billing_address1:"BillAddress1",billing_address2:"BillAddress2",billing_city:"BillCity",billing_state:"BillState",billing_zip:"BillZip"}[k]||k;
2252  }
2253
2254  function setFormValues(prefix,draft){
2255    draft=draft||{};
2256    ["name","email","second_email","company","phone","quantity","notes","shipping_name","shipping_company","shipping_address1","shipping_address2","shipping_city","shipping_state","shipping_zip","billing_name","billing_company","billing_address1","billing_address2","billing_city","billing_state","billing_zip"].forEach(function(k){
2257      var el=q("#"+prefix+fieldSuffix(k));if(el&&typeof draft[k]!=="undefined")el.value=draft[k];
2258    });
2259    var same=q("#"+prefix+"BillingSame");
2260    if(same){
2261      if(Object.prototype.hasOwnProperty.call(draft,"billing_same_as_shipping"))same.checked=!!draft.billing_same_as_shipping;
2262      toggleBilling(prefix);
2263    }
2264  }
2265
2266  function formData(prefix){
2267    function v(id){var el=q("#"+prefix+id);return el?String(el.value||"").trim():"";}
2268    var same=q("#"+prefix+"BillingSame");
2269    var data={
2270      name:v("Name"),email:v("Email"),second_email:v("SecondEmail"),company:v("Company"),phone:v("Phone"),quantity:v("Qty")||"1",notes:v("Notes"),
2271      shipping_name:v("ShipName"),shipping_company:v("ShipCompany"),shipping_address1:v("ShipAddress1"),shipping_address2:v("ShipAddress2"),shipping_city:v("ShipCity"),shipping_state:v("ShipState"),shipping_zip:v("ShipZip"),
2272      billing_same_as_shipping:!!(same&&same.checked),billing_name:v("BillName"),billing_company:v("BillCompany"),billing_address1:v("BillAddress1"),billing_address2:v("BillAddress2"),billing_city:v("BillCity"),billing_state:v("BillState"),billing_zip:v("BillZip")
2273    };
2274    setDraft(data);
2275    return data;
2276  }
2277
2278  function bindDraft(prefix,root){
2279    qa("input,textarea",root).forEach(function(el){
2280      el.addEventListener("input",function(){formData(prefix)});
2281      el.addEventListener("change",function(){formData(prefix)});
2282    });
2283  }
2284
2285  function toggleBilling(prefix){
2286    var cb=q("#"+prefix+"BillingSame"), sec=q("#"+prefix+"BillingSection");
2287    if(cb&&sec)sec.style.display=cb.checked?"none":"block";
2288  }
2289
2290  function applyDraftQuote(){
2291    var d=getDraft(), m=buildQuoteModal(), qty=q("#mqQty",m), p=productData();
2292    setFormValues("mq",d);
2293    if(qty&&(!qty.value||qty.value==="0"))qty.value=p.quantity||"1";
2294    toggleBilling("mq");
2295  }
2296
2297  function applyDraftSaved(){
2298    var d=getDraft(), m=buildSavedModal();
2299    setFormValues("msq",d);
2300    toggleBilling("msq");
2301  }
2302
2303  function validate(data,saved){
2304    if(!data.name)return "Please enter your full name.";
2305    if(!data.email)return "Please enter your email.";
2306    if(!data.shipping_address1||!data.shipping_city||!data.shipping_state||!data.shipping_zip)return "Please complete the shipping address.";
2307    if(!data.billing_same_as_shipping&&(!data.billing_address1||!data.billing_city||!data.billing_state||!data.billing_zip))return "Please complete the billing address.";
2308    if(!saved&&(!data.quantity||n(data.quantity,0)<1))return "Please enter a valid quantity.";
2309    return "";
2310  }
2311
2312  function commonPayload(d){
2313    return {
2314      name:d.name,email:d.email,second_email:d.second_email,company:d.company,phone:d.phone,notes:d.notes,
2315      shipping_name:d.shipping_name||d.name,shipping_company:d.shipping_company||d.company,shipping_address1:d.shipping_address1,shipping_address2:d.shipping_address2,shipping_city:d.shipping_city,shipping_state:d.shipping_state,shipping_zip:d.shipping_zip,
2316      billing_same_as_shipping:!!d.billing_same_as_shipping,billing_name:d.billing_name,billing_company:d.billing_company,billing_address1:d.billing_address1,billing_address2:d.billing_address2,billing_city:d.billing_city,billing_state:d.billing_state,billing_zip:d.billing_zip
2317    };
2318  }
2319
2320  function successText(base,ref,confirm){
2321    var out=[base];
2322    if(ref)out.push("Reference: "+ref+".");
2323    if(confirm===true)out.push("Confirmation email sent.");
2324    else if(confirm===false)out.push("Confirmation email could not be sent.");
2325    return out.join(" ");
2326  }
2327
2328  function buildQuoteModal(){
2329    var existing=q("#"+QUOTE_MODAL_ID); if(existing)return existing;
2330    var modal=document.createElement("div");
2331    modal.id=QUOTE_MODAL_ID;
2332    modal.innerHTML=`<div class="mq-box" role="dialog" aria-modal="true" aria-label="Build or email quote">
2333      <div class="mq-head"><div class="mq-head-left"><h2 class="mq-title">Build or Email Quote</h2><p class="mq-sub">Email this product, or add it to your saved quote basket.</p><div class="mq-saved-top" id="mqSavedBasketCount">Saved quote basket: 0</div></div><button type="button" class="mq-close" aria-label="Close">×</button></div>
2334      <div class="mq-content">
2335        <div class="mq-grid-top">
2336          <div class="mq-card"><div class="mq-card-title">Current Item</div><div class="mq-item-name" id="mqItemName"></div><div class="mq-item-meta" id="mqItemMeta"></div></div>
2337          <div class="mq-card"><div class="mq-card-title">Quote Estimate</div><div class="mq-est-row"><span>Items subtotal</span><strong id="mqSubtotal">-</strong></div><div class="mq-est-row"><span>Shipping estimate</span><strong id="mqShipping">-</strong></div><div class="mq-est-row"><span>Estimated total</span><strong id="mqTotal">-</strong></div><div class="mq-est-note">Shipping estimate only.</div></div>
2338        </div>
2339        <form id="martelQuoteForm" novalidate>
2340          <div class="mq-form-grid">
2341            <div><label for="mqName">Full Name</label><input id="mqName" type="text"></div>
2342            <div><label for="mqEmail">Primary Email</label><input id="mqEmail" type="email"></div>
2343            <div><label for="mqSecondEmail">Second Email</label><input id="mqSecondEmail" type="email"></div>
2344            <div><label for="mqCompany">Company / Department</label><input id="mqCompany" type="text"></div>
2345            <div><label for="mqPhone">Phone</label><input id="mqPhone" type="text"></div>
2346            <div><label for="mqQty">Quantity</label><input id="mqQty" type="number" min="1" step="1" value="1"></div>
2347            <div class="mq-field-full"><div class="mq-section-title">Shipping Address</div><div class="mq-section-box"><div class="mq-form-grid">
2348              <div><label for="mqShipName">Shipping Contact Name</label><input id="mqShipName" type="text"></div>
2349              <div><label for="mqShipCompany">Shipping Company</label><input id="mqShipCompany" type="text"></div>
2350              <div class="mq-field-full"><label for="mqShipAddress1">Shipping Address Line 1</label><input id="mqShipAddress1" type="text"></div>
2351              <div class="mq-field-full"><label for="mqShipAddress2">Shipping Address Line 2</label><input id="mqShipAddress2" type="text"></div>
2352              <div><label for="mqShipCity">City</label><input id="mqShipCity" type="text"></div>
2353              <div><label for="mqShipState">State</label>
2353<input id="mqShipState" type="text"></div>
2354              <div><label for="mqShipZip">ZIP</label><input id="mqShipZip" type="text"></div>
2355            </div></div></div>
2356            <div class="mq-field-full"><div class="mq-section-title">Billing Address</div><div class="mq-section-box">
2357              <label class="mq-checkbox-row"><input id="mqBillingSame" type="checkbox" checked> Billing same as shipping</label>
2358              <div id="mqBillingSection" style="display:none;"><div class="mq-form-grid">
2359                <div><label for="mqBillName">Billing Contact Name</label><input id="mqBillName" type="text"></div>
2360                <div><label for="mqBillCompany">Billing Company</label><input id="mqBillCompany" type="text"></div>
2361                <div class="mq-field-full"><label for="mqBillAddress1">Billing Address Line 1</label><input id="mqBillAddress1" type="text"></div>
2362                <div class="mq-field-full"><label for="mqBillAddress2">Billing Address Line 2</label><input id="mqBillAddress2" type="text"></div>
2363                <div><label for="mqBillCity">City</label><input id="mqBillCity" type="text"></div>
2364                <div><label for="mqBillState">State</label><input id="mqBillState" type="text"></div>
2365                <div><label for="mqBillZip">ZIP</label><input id="mqBillZip" type="text"></div>
2366              </div></div>
2367            </div></div>
2368            <div class="mq-field-full"><label for="mqNotes">Notes</label><textarea id="mqNotes" placeholder="Add anything to include on the quote."></textarea></div>
2369          </div>
2370          <div class="mq-inline-actions">
2371            <button type="button" class="mq-add" id="mqAddToSavedBtn">Add to Multi-Item Quote</button>
2372            <button type="button" class="mq-email-saved" id="mqEmailSavedBtn">Email Saved Items Quote</button>
2373            <button type="button" class="mq-open" id="mqOpenSavedBtn">Open Saved Multi-Item Quote</button>
2374            <button type="button" class="mq-continue" id="mqContinueBtn">Continue Shopping</button>
2375          </div>
2376          <div class="mq-actions"><div class="mq-msg" id="martelQuoteMsg"></div><button type="submit" class="mq-send">Email This Product</button></div>
2377        </form>
2378      </div></div>`;
2379    document.body.appendChild(modal);
2380    q(".mq-close",modal).addEventListener("click",closeQuote);
2381    q("#mqContinueBtn",modal).addEventListener("click",closeQuote);
2382    q("#mqBillingSame",modal).addEventListener("change",function(){toggleBilling("mq");formData("mq")});
2383    modal.addEventListener("click",function(e){if(e.target===modal)closeQuote()});
2384    q("#martelQuoteForm",modal).addEventListener("submit",submitQuote);
2385    q("#mqAddToSavedBtn",modal).addEventListener("click",function(){
2386      var qel=pageQtyEl(), qty=q("#mqQty",modal);
2387      if(qel&&qty)qel.value=qty.value||"1";
2388      formData("mq");
2389      if(saveCurrentProduct())updateCounts();
2390    });
2391    q("#mqEmailSavedBtn",modal).addEventListener("click",submitSavedQuoteFromQuoteModal);
2392    q("#mqOpenSavedBtn",modal).addEventListener("click",function(){formData("mq");closeQuote();openSavedModal();});
2393    q("#mqQty",modal).addEventListener("input",function(){hydrateQuoteModal();formData("mq");});
2394    bindDraft("mq",modal);
2395    return modal;
2396  }
2397
2398  function hydrateQuoteModal(){
2399    var modal=buildQuoteModal(), p=productData(), qtyEl=q("#mqQty",modal);
2400    var qty=Math.max(1,n(qtyEl&&qtyEl.value?qtyEl.value:p.quantity,1));
2401    var sub=Number.isFinite(p.unit_price)?p.unit_price*qty:NaN;
2402    var ship=Number.isFinite(sub)?(sub>=99?0:12):NaN;
2403    var total=Number.isFinite(sub)&&Number.isFinite(ship)?sub+ship:NaN;
2404    var meta=[];
2405    if(q("#mqItemName",modal))q("#mqItemName",modal).textContent=p.product_name||"Current product";
2406    if(p.sku)meta.push("SKU: "+p.sku);
2407    meta.push("Qty: "+qty);
2408    if(Number.isFinite(p.unit_price))meta.push("Price: "+money(p.unit_price));
2409    if(p.option_summary)meta.push(p.option_summary);
2410    if(q("#mqItemMeta",modal))q("#mqItemMeta",modal).textContent=meta.join(" | ");
2411    if(q("#mqSubtotal",modal))q("#mqSubtotal",modal).textContent=money(sub);
2412    if(q("#mqShipping",modal))q("#mqShipping",modal).textContent=Number.isFinite(ship)?(ship===0?"Free":money(ship)):"-";
2413    if(q("#mqTotal",modal))q("#mqTotal",modal).textContent=money(total);
2414    updateCounts();
2415  }
2416
2417  function buildSavedModal(){
2418    var existing=q("#"+SAVED_MODAL_ID); if(existing)return existing;
2419    var modal=document.createElement("div");
2420    modal.id=SAVED_MODAL_ID;
2421    modal.innerHTML=`<div class="msq-box" role="dialog" aria-modal="true" aria-label="Saved quote items">
2422      <div class="msq-head"><h2 class="msq-title">Saved Quote Items</h2><button type="button" class="msq-close" aria-label="Close">×</button></div>
2423      <p class="msq-sub">Review saved items. Update quantities, remove items, clear the list, or submit the full quote.</p>
2424      <div class="msq-body" id="msqBody"></div>
2425      <div class="msq-footer">
2426        <div class="msq-summary" id="msqSummary"></div>
2427        <div class="msq-msg" id="msqMsg"></div>
2428        <div class="msq-customer">
2429          <div class="msq-customer-title">Your Information</div>
2430          <div class="msq-grid">
2431            <div class="msq-field"><label for="msqName">Full Name</label><input id="msqName" type="text"></div>
2432            <div class="msq-field"><label for="msqEmail">Primary Email</label><input id="msqEmail" type="email"></div>
2433            <div class="msq-field"><label for="msqSecondEmail">Second Email</label><input id="msqSecondEmail" type="email"></div>
2434            <div class="msq-field"><label for="msqCompany">Company / Department</label><input id="msqCompany" type="text"></div>
2435            <div class="msq-field"><label for="msqPhone">Phone</label><input id="msqPhone" type="text"></div>
2436            <div class="msq-field msq-full"><div class="msq-section-title">Shipping Address</div><div class="msq-section-box"><div class="msq-grid">
2437              <div class="msq-field"><label for="msqShipName">Shipping Contact Name</label><input id="msqShipName" type="text"></div>
2438              <div class="msq-field"><label for="msqShipCompany">Shipping Company</label><input id="msqShipCompany" type="text"></div>
2439              <div class="msq-field msq-full"><label for="msqShipAddress1">Shipping Address Line 1</label><input id="msqShipAddress1" type="text"></div>
2440              <div class="msq-field msq-full"><label for="msqShipAddress2">Shipping Address Line 2</label><input id="msqShipAddress2" type="text"></div>
2441              <div class="msq-field"><label for="msqShipCity">City</label><input id="msqShipCity" type="text"></div>
2442              <div class="msq-field"><label for="msqShipState">State</label>
2442<input id="msqShipState" type="text"></div>
2443              <div class="msq-field"><label for="msqShipZip">ZIP</label><input id="msqShipZip" type="text"></div>
2444            </div></div></div>
2445            <div class="msq-field msq-full"><div class="msq-section-title">Billing Address</div><div class="msq-section-box">
2446              <label class="msq-checkbox-row"><input id="msqBillingSame" type="checkbox" checked> Billing same as shipping</label>
2447              <div id="msqBillingSection" style="display:none;"><div class="msq-grid">
2448                <div class="msq-field"><label for="msqBillName">Billing Contact Name</label><input id="msqBillName" type="text"></div>
2449                <div class="msq-field"><label for="msqBillCompany">Billing Company</label><input id="msqBillCompany" type="text"></div>
2450                <div class="msq-field msq-full"><label for="msqBillAddress1">Billing Address Line 1</label><input id="msqBillAddress1" type="text"></div>
2451                <div class="msq-field msq-full"><label for="msqBillAddress2">Billing Address Line 2</label><input id="msqBillAddress2" type="text"></div>
2452                <div class="msq-field"><label for="msqBillCity">City</label><input id="msqBillCity" type="text"></div>
2453                <div class="msq-field"><label for="msqBillState">State</label><input id="msqBillState" type="text"></div>
2454                <div class="msq-field"><label for="msqBillZip">ZIP</label><input id="msqBillZip" type="text"></div>
2455              </div></div>
2456            </div></div>
2457            <div class="msq-field msq-full"><label for="msqNotes">Notes</label><textarea id="msqNotes" placeholder="Add anything to include on the quote."></textarea></div>
2458          </div>
2459        </div>
2460        <div class="msq-actions">
2461          <button type="button" class="msq-clear">Clear All</button>
2462          <button type="button" class="msq-update">Save Changes</button>
2463          <button type="button" class="msq-submit">Submit Saved Quote</button>
2464          <button type="button" class="msq-close-btn">Close</button>
2465        </div>
2466      </div></div>`;
2467    document.body.appendChild(modal);
2468    q(".msq-close",modal).addEventListener("click",closeSaved);
2469    q(".msq-close-btn",modal).addEventListener("click",closeSaved);
2470    q("#msqBillingSame",modal).addEventListener("change",function(){toggleBilling("msq");formData("msq")});
2471    modal.addEventListener("click",function(e){if(e.target===modal)closeSaved()});
2472    q(".msq-update",modal).addEventListener("click",function(e){e.preventDefault();e.stopPropagation();try{saveSavedChanges()}catch(err){console.error(err);showSavedMsg("Could not save your changes right now.","err")}});
2473    q(".msq-clear",modal).addEventListener("click",function(e){e.preventDefault();e.stopPropagation();try{clearSaved()}catch(err){console.error(err);showSavedMsg("Could not clear saved items right now.","err")}});
2474    q(".msq-submit",modal).addEventListener("click",function(e){e.preventDefault();e.stopPropagation();try{submitSavedQuote()}catch(err){console.error(err);showSavedMsg("Could not submit your saved quote right now.","err")}});
2475    q("#msqBody",modal).addEventListener("click",function(e){
2476      var btn=e.target.closest(".msq-remove");if(!btn)return;
2477      var row=btn.closest(".msq-item");if(!row)return;
2478      var idx=n(row.getAttribute("data-index"),-1);if(idx<0)return;
2479      removeSavedItem(idx);
2480    });
2481    bindDraft("msq",modal);
2482    return modal;
2483  }
2484
2485  function renderSavedModal(){
2486    var modal=buildSavedModal(), body=q("#msqBody",modal), summary=q("#msqSummary",modal), clearBtn=q(".msq-clear",modal), updateBtn=q(".msq-update",modal), submitBtn=q(".msq-submit",modal), items=getItems();
2487    if(!items.length){
2488      body.innerHTML='<div class="msq-empty">You do not have any saved quote items yet.</div>';
2489      summary.textContent="0 saved items";
2490      [clearBtn,updateBtn,submitBtn].forEach(function(b){b.disabled=true;b.style.opacity="0.55"});
2491      return;
2492    }
2493    body.innerHTML=items.map(function(it,i){
2494      return '<div class="msq-item" data-index="'+i+'"><div class="msq-main"><div class="msq-item-title"><a href="'+esc(it.product_url)+'">'+esc(it.product_name)+'</a></div>' +
2495        (it.sku?'<div class="msq-meta"><strong>SKU:</strong> '+esc(it.sku)+'</div>':'') +
2496        (it.option_summary?'<div class="msq-meta"><strong>Options:</strong> '+esc(it.option_summary)+'</div>':'') +
2497        (it.product_id?'<div class="msq-meta"><strong>Product ID:</strong> '+esc(it.product_id)+'</div>':'') +
2498        '</div><div class="msq-controls"><label for="msqQty'+i+'">Quantity</label><input id="msqQty'+i+'" class="msq-qty" type="number" min="1" step="1" value="'+esc(it.quantity||"1")+'"><button type="button" class="msq-remove">Remove Item</button></div></div>';
2499    }).join("");
2500    summary.textContent=savedLineCount()+" saved item"+(savedLineCount()===1?"":"s")+" • "+savedUnitCount()+" total unit"+(savedUnitCount()===1?"":"s");
2501    [clearBtn,updateBtn,submitBtn].forEach(function(b){b.disabled=false;b.style.opacity=""});
2502  }
2503
2504  function openSavedModal(){
2505    clearTimeout(savedCloseTimer);
2506    savedCloseTimer=null;
2507    var m=buildSavedModal();
2508    renderSavedModal();
2509    applyDraftSaved();
2510    m.style.display="flex";
2511    document.body.style.overflow="hidden";
2512  }
2513
2514  function saveSavedChanges(){
2515    var modal=q("#"+SAVED_MODAL_ID); if(!modal)return;
2516    var items=getItems(), rows=qa(".msq-item",modal);
2517    if(!items.length||!rows.length){showSavedMsg("There are no saved items to update.","err");return;}
2518    rows.forEach(function(row){
2519      var idx=n(row.getAttribute("data-index"),-1);
2520      if(idx<0||!items[idx])return;
2521      var inp=q(".msq-qty",row);
2522      items[idx].quantity=String(Math.max(1,n(inp&&inp.value,1)));
2523    });
2524    if(!setItems(items)){showSavedMsg("Could not save your changes.","err");return;}
2525    formData("msq");
2526    updateCounts();
2527    renderSavedModal();
2528    applyDraftSaved();
2529    showSavedMsg("Saved quote quantities updated.","ok");
2530  }
2531
2532  function removeSavedItem(idx){
2533    var items=getItems();
2534    if(idx<0||idx>=items.length)return;
2535    items.splice(idx,1);
2536    if(!setItems(items)){showSavedMsg("Could not remove that item.","err");return;}
2537    updateCounts();
2538    renderSavedModal();
2539    applyDraftSaved();
2540    showSavedMsg("Item removed.","ok");
2541  }
2542
2543  function clearSaved(){
2544    var items=getItems();
2545    if(!items.length)return;
2546    if(!window.confirm("Clear all saved quote items?"))return;
2547    if(!setItems([])){showSavedMsg("Could not clear saved items.","err");return;}
2548    updateCounts();
2549    renderSavedModal();
2550    applyDraftSaved();
2551    showSavedMsg("Saved quote cleared.","ok");
2552  }
2553
2554  async function submitSavedQuoteFromQuoteModal(){
2555    var modal=q("#"+QUOTE_MODAL_ID); if(!modal)return;
2556    var items=getItems(), msg=q("#martelQuoteMsg",modal), btn=q("#mqEmailSavedBtn",modal), d=formData("mq"), err=validate(d,true), pricing=getSavedQuotePricing(items);
2557    msg.className="mq-msg";
2558    msg.textContent="";
2559    if(err){msg.className="mq-msg mq-err";msg.textContent=err;return;}
2560    if(!items.length){msg.className="mq-msg mq-err";msg.textContent="There are no saved items yet. Add products to your multi-item quote first.";return;}
2561    if(btn.disabled)return;
2562    btn.disabled=true;
2563    btn.textContent="Sending Saved Items...";
2564    try{
2565      var res=await fetch(WORKER_URL,{
2566        method:"POST",
2567        mode:"cors",
2568        credentials:"omit",
2569        headers:{"Content-Type":"application/json"},
2570        body:JSON.stringify(Object.assign(commonPayload(d),pricing,{
2571          quote_type:"saved_multi_item",
2572          source:"bigcommerce_quote_modal_saved_items",
2573          items:items.map(function(it){
2574            var p=getItemPricing(it);
2575            return {
2576              product_id:it.product_id||"",
2577              product_name:it.product_name||"",
2578              product_url:it.product_url||"",
2579              sku:it.sku||"",
2580              option_summary:it.option_summary||"",
2581              quantity:String(Math.max(1,n(it.quantity,1))),
2582              unit_price:p.unit_price,
2583              line_total:p.line_total
2584            };
2585          })
2586        }))
2587      });
2588      var json=await res.json().catch(function(){return null});
2589      if(!res.ok){
2590        var st="Request failed";
2591        if(json&&json.error)st=json.error;
2592        if(json&&json.details)st+=" | "+json.details;
2593        throw new Error(st);
2594      }
2595      if(!json||json.ok!==true)throw new Error((json&&json.error)||"Worker did not return success");
2596      var ref=json&&json.quote_reference?String(json.quote_reference):"", confirm=json&&json.customer_confirmation_sent===true?true:(json&&json.customer_confirmation_sent===false?false:null);
2597      setItems([]);
2598      updateCounts();
2599      msg.className="mq-msg mq-ok";
2600      msg.textContent=successText("Saved items quote sent successfully.",ref,confirm);
2601      setTimeout(closeQuote,1500);
2602    }catch(e){
2603      console.error("Martel Saved Items Error:",e);
2604      msg.className="mq-msg mq-err";
2605      msg.textContent=e&&e.message?e.message:"There was a problem sending your saved items quote.";
2606    }
2607    btn.disabled=false;
2608    btn.textContent="Email Saved Items Quote"+(savedLineCount()?" ("+savedLineCount()+")":"");
2609  }
2610
2611  async function submitSavedQuote(){
2612    var modal=q("#"+SAVED_MODAL_ID); if(!modal)return;
2613    var items=getItems(), btn=q(".msq-submit",modal), d=formData("msq"), err=validate(d,true), pricing=getSavedQuotePricing(items);
2614    if(err){showSavedMsg(err,"err");return;}
2615    if(!items.length){showSavedMsg("There are no saved items to submit.","err");return;}
2616    if(btn.disabled)return;
2617    clearTimeout(savedCloseTimer);
2618    savedCloseTimer=null;
2619    btn.disabled=true;
2620    btn.textContent="Sending Saved Quote...";
2621    showSavedMsg("","ok");
2622    try{
2623      var res=await fetch(WORKER_URL,{
2624        method:"POST",
2625        mode:"cors",
2626        credentials:"omit",
2627        headers:{"Content-Type":"application/json"},
2628        body:JSON.stringify(Object.assign(commonPayload(d),pricing,{
2629          quote_type:"saved_multi_item",
2630          source:"bigcommerce_saved_quote_modal",
2631          items:items.map(function(it){
2632            var p=getItemPricing(it);
2633            return {
2634              product_id:it.product_id||"",
2635              product_name:it.product_name||"",
2636              product_url:it.product_url||"",
2637              sku:it.sku||"",
2638              option_summary:it.option_summary||"",
2639              quantity:String(Math.max(1,n(it.quantity,1))),
2640              unit_price:p.unit_price,
2641              line_total:p.line_total
2642            };
2643          })
2644        }))
2645      });
2646      var json=await res.json().catch(function(){return null});
2647      if(!res.ok){
2648        var st="Request failed";
2649        if(json&&json.error)st=json.error;
2650        if(json&&json.details)st+=" | "+json.details;
2651        throw new Error(st);
2652      }
2653      if(!json||json.ok!==true)throw new Error((json&&json.error)||"Worker did not return success");
2654      var ref=json&&json.quote_reference?String(json.quote_reference):"", confirm=json&&json.customer_confirmation_sent===true?true:(json&&json.customer_confirmation_sent===false?false:null);
2655      if(!setItems([])){
2656        showSavedMsg("Saved quote sent, but saved items could not be cleared in this browser.","err");
2657        btn.disabled=false;
2658        btn.textContent="Submit Saved Quote";
2659        return;
2660      }
2661      updateCounts();
2662      var body=q("#msqBody",modal), summary=q("#msqSummary",modal), clearBtn=q(".msq-clear",modal), updateBtn=q(".msq-update",modal);
2663      if(q("#msqNotes",modal))q("#msqNotes",modal).value="";
2664      body.innerHTML='<div class="msq-empty">'+esc(successText("Saved quote sent.",ref,confirm))+'</div>';
2665      summary.textContent="0 saved items";
2666      [clearBtn,updateBtn,btn].forEach(function(b){b.disabled=true;b.style.opacity="0.55"});
2667      showSavedMsg(successText("Saved quote sent.",ref,confirm),"ok");
2668      showInline(successText("Saved quote sent.",ref,confirm),"ok");
2669      if(confirm!==false){savedCloseTimer=setTimeout(closeSaved,1700);}
2670    }catch(e){
2671      console.error("Martel Saved Quote Error:",e);
2672      btn.disabled=false;
2673      btn.textContent="Submit Saved Quote";
2674      showSavedMsg(e&&e.message?e.message:"There was a problem sending your saved quote request.","err");
2675    }
2676  }
2677
2678  async function submitQuote(e){
2679    e.preventDefault();
2680    var form=e.target, btn=q(".mq-send",form), msg=q("#martelQuoteMsg",form), p=productData(), d=formData("mq"), err=validate(d,false);
2681    if(btn.disabled)return;
2682    msg.className="mq-msg";
2683    msg.textContent="";
2684    btn.disabled=true;
2685    btn.textContent="Sending...";
2686    if(err){
2687      msg.className="mq-msg mq-err";
2688      msg.textContent=err;
2689      btn.disabled=false;
2690      btn.textContent="Email This Product";
2691      return;
2692    }
2693    var qty=Math.max(1,n(d.quantity,1)), unit=safeMoneyValue(p.unit_price), line=safeMoneyValue(Number.isFinite(p.unit_price)?p.unit_price*qty:NaN);
2694    try{
2695      var res=await fetch(WORKER_URL,{
2696        method:"POST",
2697        mode:"cors",
2698        credentials:"omit",
2699        headers:{"Content-Type":"application/json"},
2700        body:JSON.stringify(Object.assign(commonPayload(d),{
2701          source:"bigcommerce_product_page",
2702          product_id:p.product_id,
2703          product_name:p.product_name,
2704          product_url:p.product_url,
2705          sku:p.sku,
2706          option_summary:p.option_summary,
2707          quantity:String(qty),
2708          unit_price:unit,
2709          line_total:line,
2710          quote_total:line
2711        }))
2712      });
2713      var json=await res.json().catch(function(){return null});
2714      if(!res.ok){
2715        var st="Request failed";
2716        if(json&&json.error)st=json.error;
2717        if(json&&json.details)st+=" | "+json.details;
2718        throw new Error(st);
2719      }
2720      if(!json||json.ok!==true)throw new Error((json&&json.error)||"Worker did not return success");
2721      var ref=json&&json.quote_reference?String(json.quote_reference):"", confirm=json&&json.customer_confirmation_sent===true?true:(json&&json.customer_confirmation_sent===false?false:null);
2722      msg.className="mq-msg mq-ok";
2723      msg.textContent=successText("Quote request sent.",ref,confirm);
2724      var notes=q("#mqNotes",form);
2725      if(notes)notes.value="";
2726      formData("mq");
2727      hydrateQuoteModal();
2728      if(confirm!==false)setTimeout(closeQuote,1300);
2729    }catch(e2){
2730      console.error("Martel Quote Error:",e2);
2731      msg.className="mq-msg mq-err";
2732      msg.textContent=e2&&e2.message?e2.message:"There was a problem sending your quote request.";
2733    }
2734    btn.disabled=false;
2735    btn.textContent="Email This Product";
2736  }
2737
2738  function liveWrap(){var w=q("#"+WRAP_ID);return w&&w.isConnected?w:null;}
2739
2740  function cleanupWrap(){
2741    var w=q("#"+WRAP_ID);
2742    if(!w)return;
2743    if(!isProductPage()){w.remove();return;}
2744    var k=productKey();
2745    if(w.dataset.productKey&&w.dataset.productKey!==k)w.remove();
2746  }
2747
2748  function insertButtons(){
2749    cleanupWrap();
2750    if(!isProductPage())return true;
2751    var k=productKey(), w=liveWrap();
2752    if(w&&w.dataset.productKey===k){
2753      updateCounts();
2754      return true;
2755    }
2756    var anchor=insertAnchor();
2757    if(!anchor||!anchor.parentNode)return false;
2758    addStyles();
2759    var wrap=document.createElement("div");
2760    wrap.id=WRAP_ID;
2761    wrap.dataset.productKey=k;
2762    wrap.innerHTML='<div class="martel-quote-btns"><button type="button" id="martelQuoteBtn">Get Quote</button><button type="button" id="martelSaveQuoteBtn">Save to Quote</button><div id="'+COUNT_ID+'">Saved Quote Items: 0</div><button type="button" id="martelViewSavedQuoteBtn">View Saved Quote</button></div><div id="'+INLINE_MSG_ID+'" class="martel-quote-inline-msg"></div>';
2763    anchor.insertAdjacentElement("afterend",wrap);
2764    q("#martelQuoteBtn",wrap).addEventListener("click",function(){
2765      var m=buildQuoteModal();
2766      m.style.display="flex";
2767      document.body.style.overflow="hidden";
2768      var qty=q("#mqQty",m), p=productData();
2769      if(qty)qty.value=p.quantity||"1";
2770      applyDraftQuote();
2771      hydrateQuoteModal();
2772    });
2773    q("#martelSaveQuoteBtn",wrap).addEventListener("click",saveCurrentProduct);
2774    q("#martelViewSavedQuoteBtn",wrap).addEventListener("click",openSavedModal);
2775    updateCounts();
2776    return true;
2777  }
2778
2779  function scheduleEnsure(delay){
2780    if(ensureTimer)clearTimeout(ensureTimer);
2781    ensureTimer=setTimeout(function(){
2782      ensureTimer=null;
2783      tryEnsure();
2784    },typeof delay==="number"?delay:80);
2785  }
2786
2787  function scheduleEnsurePasses(reason){
2788    var delays=[0,60,160,350,700,1200,2200,3600,5200];
2789    for(var i=0;i<delays.length;i++){
2790      (function(delay){
2791        setTimeout(function(){scheduleEnsure(delay===0?20:80);},delay);
2792      })(delays[i]);
2793    }
2794  }
2795
2796  function tryEnsure(){
2797    if(ensureActive)return;
2798    ensureActive=true;
2799    cleanupWrap();
2800    var tries=0;
2801    (function run(){
2802      if(insertButtons()){
2803        ensureActive=false;
2804        return;
2805      }
2806      tries++;
2807      if(tries<MAX_TRIES)setTimeout(run,TRY_DELAY);
2808      else ensureActive=false;
2809    })();
2810  }
2811
2812  function bootWatchdog(){
2813    if(bootInterval)return;
2814    bootInterval=setInterval(function(){
2815      if(document.hidden)return;
2816      if(location.href!==lastUrl){
2817        lastUrl=location.href;
2818        closeQuote();
2819        closeSaved();
2820        scheduleEnsurePasses("url-change");
2821        return;
2822      }
2823      if(isProductPage()&&!liveWrap())scheduleEnsure(120);
2824    },500);
2825  }
2826
2827  function startMutationObserver(){
2828    if(mutationObserver||!window.MutationObserver||!document.body)return;
2829    mutationObserver=new MutationObserver(function(mutations){
2830      if(mutationQueued)return;
2831      var relevant=false;
2832      for(var i=0;i<mutations.length;i++){
2833        if(mutations[i].addedNodes&&mutations[i].addedNodes.length){
2834          relevant=true;
2835          break;
2836        }
2837      }
2838      if(!relevant)return;
2839      mutationQueued=true;
2840      setTimeout(function(){
2841        mutationQueued=false;
2842        if(isProductPage()&&!liveWrap())scheduleEnsure(80);
2843      },120);
2844    });
2845    mutationObserver.observe(document.body,{childList:true,subtree:true});
2846  }
2847
2848  function bindInstantLoadHooks(){
2849    if(window.__martelQuoteV2HooksBound)return;
2850    window.__martelQuoteV2HooksBound=true;
2851
2852    document.addEventListener("readystatechange",function(){
2853      if(document.readyState==="interactive"||document.readyState==="complete")scheduleEnsurePasses("readystatechange");
2854    });
2855
2856    window.addEventListener("pageshow",function(){scheduleEnsurePasses("pageshow")});
2857    window.addEventListener("popstate",function(){scheduleEnsurePasses("popstate")});
2858    window.addEventListener("hashchange",function(){scheduleEnsurePasses("hashchange")});
2859    window.addEventListener("load",function(){scheduleEnsurePasses("load")});
2860    document.addEventListener("visibilitychange",function(){if(!document.hidden)scheduleEnsurePasses("visibility")});
2861
2862    var instantEvents=["loaded.instantload","instantload:loaded","instantload:end","page:loaded","stencilBootstrap.load","cart-item-add-remote"];
2863    for(var i=0;i<instantEvents.length;i++){
2864      (function(evt){
2865        document.addEventListener(evt,function(){lastUrl=location.href;scheduleEnsurePasses(evt);},true);
2866        window.addEventListener(evt,function(){lastUrl=location.href;scheduleEnsurePasses(evt);},true);
2867      })(instantEvents[i]);
2868    }
2869
2870    document.addEventListener("click",function(e){
2871      var a=e.target&&e.target.closest?e.target.closest("a[href], [data-instantload]"):null;
2872      if(a)setTimeout(function(){scheduleEnsurePasses("link-click")},80);
2873    },true);
2874
2875    var $=window.jQuerySupermarket||window.jQuery||window.$;
2876    if($&&$.fn&&!window.__martelQuoteV2JqHooksBound){
2877      window.__martelQuoteV2JqHooksBound=true;
2878      $(document).on("loaded.instantload opened.fndtn.reveal",function(){lastUrl=location.href;scheduleEnsurePasses("jquery-instantload")});
2879      $(document).ajaxComplete(function(){lastUrl=location.href;scheduleEnsurePasses("ajaxComplete")});
2880    }
2881  }
2882
2883  function initGlobal(){
2884    if(!window.__martelQuoteV2EscapeBound){
2885      window.__martelQuoteV2EscapeBound=true;
2886      document.addEventListener("keydown",function(e){
2887        if(e.key!=="Escape")return;
2888        if(savedOpen())closeSaved();
2889        else if(quoteOpen())closeQuote();
2890      });
2891    }
2892    bindInstantLoadHooks();
2893    startMutationObserver();
2894  }
2895
2896  function start(){
2897    addStyles();
2898    initGlobal();
2899    lastUrl=location.href;
2900    tryEnsure();
2901    scheduleEnsurePasses("start");
2902    bootWatchdog();
2903  }
2904
2905  window.__martelQuoteV2Ready=function(reason){
2906    lastUrl=location.href;
2907    try{cleanupWrap();}catch(e){}
2908    try{addStyles();}catch(e){}
2909    try{initGlobal();}catch(e){}
2910    scheduleEnsurePasses(reason||"manual-ready");
2911    bootWatchdog();
2912  };
2913
2914  ready(start);
2915  window.__martelQuoteV2Loading=false;
2916})();
2917</script>
2917<script>
2918(function () {
2919  "use strict";
2920
2921  var PUBLIC_API_KEY = "39UON6S33NIH06DU";
2922  var AFFIRM_JS_URL = "https://cdn1.affirm.com/js/v2/affirm.js";
2923  var STYLE_ID = "martel-affirm-product-message-master-v13-cross-browser-safe";
2924
2925  var OLD_STYLE_IDS = [
2926    "martel-bigger-affirm-product-message-v1",
2927    "martel-bigger-affirm-product-message-v2",
2928    "martel-safe-affirm-text-size-v3",
2929    "martel-affirm-product-message-master-v4-style",
2930    "martel-affirm-product-message-master-v5-large-style",
2931    "martel-affirm-product-message-master-v6-larger-clean-style",
2932    "martel-affirm-product-message-master-v7-larger-clean-tight-spacing-style",
2933    "martel-affirm-product-message-master-v8-close-price-gap-style",
2934    "martel-affirm-product-message-master-v9-no-jiggle-style",
2935    "martel-affirm-product-message-master-v10-no-jiggle-guard-style",
2936    "martel-affirm-product-message-master-v11-clean-spacing-no-jiggle-style",
2937    "martel-affirm-product-message-master-v12-final-spacing-no-jiggle-style"
2938  ];
2939
2940  var ns = window.__martelAffirmProductMessageMasterV13 || {};
2941  window.__martelAffirmProductMessageMasterV13 = ns;
2942
2943  if (ns.loaded) {
2944    return;
2945  }
2946
2947  ns.loaded = true;
2948  ns.version = "2026-06-18-v13-cross-browser-safe";
2949  ns.lastAllowedAmount = null;
2950  ns.forceAllowRefresh = false;
2951  ns.guardStarted = false;
2952  ns.refreshTimer = null;
2953  ns.retryTimer = null;
2954  ns.retryCount = 0;
2955
2956  function q(selector, scope) {
2957    return (scope || document).querySelector(selector);
2958  }
2959
2960  function ready(fn) {
2961    if (document.readyState === "loading") {
2962      document.addEventListener("DOMContentLoaded", fn, { once: true });
2963    } else {
2964      fn();
2965    }
2966  }
2967
2968  function isProductPage() {
2969    return !!(
2970      q(".productView") ||
2971      q('input[name="product_id"]') ||
2972      (document.body && String(document.body.className || "").indexOf("papaSupermarket-pageType--product") !== -1)
2973    );
2974  }
2975
2976  function removeOldStyles() {
2977    OLD_STYLE_IDS.forEach(function (id) {
2978      var el = document.getElementById(id);
2979      if (el && el.parentNode) {
2980        el.parentNode.removeChild(el);
2981      }
2982    });
2983  }
2984
2985  function addStyle() {
2986    if (document.getElementById(STYLE_ID)) {
2987      return;
2988    }
2989
2990    var css = ""
2991      + "body.papaSupermarket-pageType--product .productView-price{"
2992      + "margin-bottom:0!important;"
2993      + "padding-bottom:0!important;"
2994      + "}"
2995
2996      + "body.papaSupermarket-pageType--product .productView-price .price-section--saving{"
2997      + "margin-bottom:0!important;"
2998      + "padding-bottom:0!important;"
2999      + "line-height:1.15!important;"
3000      + "}"
3001
3002      + "body.papaSupermarket-pageType--product #customAffirmPromoContainer,"
3003      + "body.papaSupermarket-pageType--product .productView-affirmPromo{"
3004      + "margin:7px 0 14px!important;"
3005      + "min-height:26px!important;"
3006      + "line-height:1.35!important;"
3007      + "display:block!important;"
3008      + "visibility:visible!important;"
3009      + "opacity:1!important;"
3010      + "clear:both!important;"
3011      + "}"
3012
3013      + "body.papaSupermarket-pageType--product #customAffirmPromoContainer .affirm-as-low-as,"
3014      + "body.papaSupermarket-pageType--product .productView-affirmPromo .affirm-as-low-as{"
3015      + "display:block!important;"
3016      + "visibility:visible!important;"
3017      + "opacity:1!important;"
3018      + "font-size:17px!important;"
3019      + "line-height:1.35!important;"
3020      + "font-weight:700!important;"
3021      + "color:#111827!important;"
3022      + "margin:0!important;"
3023      + "padding:0!important;"
3024      + "background:transparent!important;"
3025      + "border:0!important;"
3026      + "box-shadow:none!important;"
3027      + "white-space:normal!important;"
3028      + "transition:none!important;"
3029      + "animation:none!important;"
3030      + "}"
3031
3032      + "body.papaSupermarket-pageType--product #customAffirmPromoContainer .affirm-as-low-as a,"
3033      + "body.papaSupermarket-pageType--product .productView-affirmPromo .affirm-as-low-as a,"
3034      + "body.papaSupermarket-pageType--product #customAffirmPromoContainer .affirm-modal-trigger,"
3035      + "body.papaSupermarket-pageType--product .productView-affirmPromo .affirm-modal-trigger{"
3036      + "font-size:17px!important;"
3037      + "font-weight:800!important;"
3038      + "color:#1d4ed8!important;"
3039      + "text-decoration:underline!important;"
3040      + "transition:none!important;"
3041      + "animation:none!important;"
3042      + "}"
3043
3044      + "body.papaSupermarket-pageType--product .productView-price > .affirm-as-low-as,"
3045      + "body.papaSupermarket-pageType--product .productView-price .affirm-site-modal,"
3046      + "body.papaSupermarket-pageType--product .productView-price .affirm-product-modal{"
3047      + "display:none!important;"
3048      + "}"
3049
3050      + "@media(max-width:800px){"
3051      + "body.papaSupermarket-pageType--product #customAffirmPromoContainer,"
3052      + "body.papaSupermarket-pageType--product .productView-affirmPromo{"
3053      + "margin:5px 0 13px!important;"
3054      + "min-height:23px!important;"
3055      + "}"
3056      + "body.papaSupermarket-pageType--product #customAffirmPromoContainer .affirm-as-low-as,"
3057      + "body.papaSupermarket-pageType--product .productView-affirmPromo .affirm-as-low-as,"
3058      + "body.papaSupermarket-pageType--product #customAffirmPromoContainer .affirm-as-low-as a,"
3059      + "body.papaSupermarket-pageType--product .productView-affirmPromo .affirm-as-low-as a,"
3060      + "body.papaSupermarket-pageType--product #customAffirmPromoContainer .affirm-modal-trigger,"
3061      + "body.papaSupermarket-pageType--product .productView-affirmPromo .affirm-modal-trigger{"
3062      + "font-size:15px!important;"
3063      + "line-height:1.35!important;"
3064      + "}"
3065      + "}";
3066
3067    var style = document.createElement("style");
3068    style.id = STYLE_ID;
3069    style.type = "text/css";
3070    style.appendChild(document.createTextNode(css));
3071    document.head.appendChild(style);
3072  }
3073
3074  function ensureAffirmLoader() {
3075    if (window.affirm && window.affirm.ui) {
3076      return;
3077    }
3078
3079    if (window.__martelAffirmLoaderStartedV13) {
3080      return;
3081    }
3082
3083    window.__martelAffirmLoaderStartedV13 = true;
3084
3085    window._affirm_config = window._affirm_config || {
3086      public_api_key: PUBLIC_API_KEY,
3087      script: AFFIRM_JS_URL,
3088      locale: "en_US",
3089      country_code: "USA"
3090    };
3091
3092    if (document.querySelector('script[src*="cdn1.affirm.com/js/v2/affirm.js"]')) {
3093      return;
3094    }
3095
3096    (function (l, g, m, e, a, f, b) {
3097      var d, c = l[m] || {};
3098      var h = document.createElement(f);
3099      var n = document.getElementsByTagName(f)[0];
3100      var k = function (a2, b2, c2) {
3101        return function () {
3102          a2[b2]._.push([c2, arguments]);
3103        };
3104      };
3105
3106      c[e] = k(c, e, "set");
3107      d = c[e];
3108      c[a] = {};
3109      c[a]._ = [];
3110      d._ = [];
3111      c._ = [];
3112
3113      c[a][b] = k(c, a, b);
3114
3115      var checkoutMethods = "set add save post open empty reset on off trigger ready setProduct".split(" ");
3116      var noopMethods = ["get", "token", "url", "items"];
3117      var i;
3118
3119      for (i = 0; i < checkoutMethods.length; i++) {
3120        d[checkoutMethods[i]] = k(c, e, checkoutMethods[i]);
3121      }
3122
3123      for (i = 0; i < noopMethods.length; i++) {
3124        d[noopMethods[i]] = function () {};
3125      }
3126
3127      h.async = true;
3128      h.src = g[f];
3129      n.parentNode.insertBefore(h, n);
3130      delete g[f];
3131      d(g);
3132      l[m] = c;
3133    })(window, window._affirm_config, "affirm", "checkout", "ui", "script", "ready");
3134  }
3135
3136  function cleanPriceToCents(text) {
3137    if (!text) {
3138      return null;
3139    }
3140
3141    var normalized = String(text).replace(/,/g, "");
3142    var match = normalized.match(/(\d+(?:\.\d{1,2})?)/);
3143
3144    if (!match) {
3145      return null;
3146    }
3147
3148    var amount = parseFloat(match[1]);
3149
3150    if (!isFinite(amount) || amount <= 0) {
3151      return null;
3152    }
3153
3154    return Math.round(amount * 100);
3155  }
3156
3157  function getRoot() {
3158    return q(".productView") || document;
3159  }
3160
3161  function getCentsFromDom(root) {
3162    var selectors = [
3163      ".productView-price [data-product-sale-price-with-tax] .price",
3164      ".productView-price [data-product-sale-price-without-tax] .price",
3165      ".productView-price [data-product-price-with-tax] .price",
3166      ".productView-price [data-product-price-without-tax] .price",
3167      ".productView-price [data-product-sale-price-with-tax]",
3168      ".productView-price [data-product-sale-price-without-tax]",
3169      ".productView-price [data-product-price-with-tax]",
3170      ".productView-price [data-product-price-without-tax]",
3171      ".productView-price .price.price--withTax",
3172      ".productView-price .price.price--withoutTax",
3173      ".productView-price .price--main",
3174      ".productView-price .price"
3175    ];
3176
3177    for (var i = 0; i < selectors.length; i++) {
3178      var el = q(selectors[i], root);
3179      if (el && el.textContent && el.textContent.trim()) {
3180        var cents = cleanPriceToCents(el.textContent);
3181        if (cents) {
3182          return cents;
3183        }
3184      }
3185    }
3186
3187    return null;
3188  }
3189
3190  function getCentsFromBCData() {
3191    try {
3192      if (!window.BCData || !window.BCData.product_attributes || !window.BCData.product_attributes.price) {
3193        return null;
3194      }
3195
3196      var price = window.BCData.product_attributes.price;
3197      var value = null;
3198
3199      if (price.sale_price_with_tax && typeof price.sale_price_with_tax.value === "number") {
3200        value = price.sale_price_with_tax.value;
3201      } else if (price.sale_price_without_tax && typeof price.sale_price_without_tax.value === "number") {
3202        value = price.sale_price_without_tax.value;
3203      } else if (price.with_tax && typeof price.with_tax.value === "number") {
3204        value = price.with_tax.value;
3205      } else if (price.without_tax && typeof price.without_tax.value === "number") {
3206        value = price.without_tax.value;
3207      }
3208
3209      if (!value || !isFinite(value) || value <= 0) {
3210        return null;
3211      }
3212
3213      return Math.round(value * 100);
3214    } catch (e) {
3215      return null;
3216    }
3217  }
3218
3219  function getCentsFromMeta() {
3220    var meta = q('meta[property="product:price:amount"]');
3221    if (!meta) {
3222      return null;
3223    }
3224
3225    return cleanPriceToCents(meta.getAttribute("content"));
3226  }
3227
3228  function getCurrentPriceCents(root) {
3229    return getCentsFromDom(root) || getCentsFromBCData() || getCentsFromMeta();
3230  }
3231
3232  function ensurePromoContainer(root) {
3233    var container = q("#customAffirmPromoContainer", root) || q(".productView-affirmPromo", root);
3234
3235    if (!container) {
3236      var priceWrap = q(".productView-price", root);
3237      if (!priceWrap || !priceWrap.parentNode) {
3238        return null;
3239      }
3240
3241      container = document.createElement("div");
3242      container.id = "customAffirmPromoContainer";
3243      container.className = "productView-affirmPromo";
3244      priceWrap.parentNode.insertBefore(container, priceWrap.nextSibling);
3245    }
3246
3247    container.style.display = "";
3248    container.style.visibility = "";
3249    container.style.opacity = "";
3250
3251    return container;
3252  }
3253
3254  function ensurePromoElement(root) {
3255    var container = ensurePromoContainer(root);
3256    if (!container) {
3257      return null;
3258    }
3259
3260    var promo = q(".affirm-as-low-as", container);
3261
3262    if (!promo) {
3263      promo = document.createElement("p");
3264      promo.className = "affirm-as-low-as";
3265      container.appendChild(promo);
3266    }
3267
3268    promo.setAttribute("data-page-type", "product");
3269    promo.style.display = "";
3270    promo.style.visibility = "";
3271    promo.style.opacity = "";
3272
3273    if (!promo.textContent || !promo.textContent.trim()) {
3274      promo.textContent = "Pay over time with Affirm. See if you qual
3274ify at checkout.";
3275    }
3276
3277    return promo;
3278  }
3279
3280  function getPromoAmount() {
3281    var promo = q("#customAffirmPromoContainer .affirm-as-low-as") || q(".productView-affirmPromo .affirm-as-low-as");
3282    return promo ? String(promo.getAttribute("data-amount") || "") : "";
3283  }
3284
3285  function syncAffirmAmount() {
3286    if (!isProductPage()) {
3287      return null;
3288    }
3289
3290    var root = getRoot();
3291    var cents = getCurrentPriceCents(root);
3292    var promo = ensurePromoElement(root);
3293
3294    if (!promo || !cents) {
3295      return null;
3296    }
3297
3298    promo.setAttribute("data-page-type", "product");
3299    promo.setAttribute("data-amount", String(cents));
3300
3301    ns.lastAmount = cents;
3302    return cents;
3303  }
3304
3305  function installRefreshGuard() {
3306    try {
3307      if (!window.affirm || !window.affirm.ui || typeof window.affirm.ui.refresh !== "function") {
3308        return false;
3309      }
3310
3311      var currentRefresh = window.affirm.ui.refresh;
3312
3313      if (currentRefresh.__martelV13Guarded === true) {
3314        return true;
3315      }
3316
3317      var originalRefresh = currentRefresh.__martelV13Original || currentRefresh;
3318
3319      var guardedRefresh = function () {
3320        var amount = getPromoAmount();
3321
3322        if (ns.forceAllowRefresh === true) {
3323          ns.forceAllowRefresh = false;
3324          ns.lastAllowedAmount = amount;
3325          return originalRefresh.apply(this, arguments);
3326        }
3327
3328        ns.lastAllowedAmount = amount;
3329        return originalRefresh.apply(this, arguments);
3330      };
3331
3332      guardedRefresh.__martelV13Guarded = true;
3333      guardedRefresh.__martelV13Original = originalRefresh;
3334
3335      window.affirm.ui.refresh = guardedRefresh;
3336      return true;
3337    } catch (e) {
3338      return false;
3339    }
3340  }
3341
3342  function safeAffirmRefresh() {
3343    try {
3344      syncAffirmAmount();
3345      installRefreshGuard();
3346
3347      if (!window.affirm || !window.affirm.ui) {
3348        return false;
3349      }
3350
3351      var doRefresh = function () {
3352        syncAffirmAmount();
3353        installRefreshGuard();
3354
3355        if (window.affirm && window.affirm.ui && typeof window.affirm.ui.refresh === "function") {
3356          ns.forceAllowRefresh = true;
3357          ns.lastAllowedAmount = getPromoAmount();
3358          window.affirm.ui.refresh();
3359          return true;
3360        }
3361
3362        return false;
3363      };
3364
3365      if (typeof window.affirm.ui.ready === "function") {
3366        window.affirm.ui.ready(function () {
3367          doRefresh();
3368        });
3369        return true;
3370      }
3371
3372      return doRefresh();
3373    } catch (e) {
3374      return false;
3375    }
3376  }
3377
3378  function requestSafeRefresh(delay) {
3379    if (ns.refreshTimer) {
3380      clearTimeout(ns.refreshTimer);
3381      ns.refreshTimer = null;
3382    }
3383
3384    ns.refreshTimer = setTimeout(function () {
3385      ns.refreshTimer = null;
3386      safeAffirmRefresh();
3387    }, typeof delay === "number" ? delay : 250);
3388  }
3389
3390  function startRetryRefreshes() {
3391    if (ns.retryTimer) {
3392      clearInterval(ns.retryTimer);
3393    }
3394
3395    ns.retryCount = 0;
3396
3397    ns.retryTimer = setInterval(function () {
3398      ns.retryCount += 1;
3399      safeAffirmRefresh();
3400
3401      if (ns.retryCount >= 12) {
3402        clearInterval(ns.retryTimer);
3403        ns.retryTimer = null;
3404      }
3405    }, 750);
3406  }
3407
3408  function boot() {
3409    if (!isProductPage()) {
3410      return;
3411    }
3412
3413    removeOldStyles();
3414    addStyle();
3415    syncAffirmAmount();
3416    ensureAffirmLoader();
3417    requestSafeRefresh(250);
3418    startRetryRefreshes();
3419  }
3420
3421  ready(boot);
3422
3423  window.addEventListener("load", function () {
3424    requestSafeRefresh(500);
3425  });
3426
3427  document.addEventListener("change", function (event) {
3428    if (
3429      event.target &&
3430      (
3431        event.target.closest(".form--addToCart") ||
3432        event.target.closest("[data-product-option-change]") ||
3433        event.target.matches(".form-input--incrementTotal")
3434      )
3435    ) {
3436      requestSafeRefresh(250);
3437    }
3438  }, true);
3439
3440})();
3441</script>
3441
3442				
3442<script src="https://cdn.shopify.com/s/javascripts/currencies.js"></script>
3442
3443				
3443<script>
3444					(function() {
3445						window.crData = {
3446							
3447							channelId: '1',
3448							shop: {
3449								id: 293,
3450								createdAt: '2025-05-31T17:45:57.226Z',
3451								storeHash: 'm0o7bk',
3452								plan: 'trial',
3453								effectiveDate: 'basic_annual 2026-12-18T19:40:38.491966Z',
3454								data: {
3455									activeSupportDismissed: true,
3456									reviewRequestDismissed: true,
3457								}
3458							},
3459							schema: {
3460								settings: {"channel_id":1,"site_id":1000,"show_wishlist":false,"request":{"referer":"","host":"martelelectronics.com","origin":"https:\u002f\u002fmartelelectronics.com","locale":"en_US","absolute_path":"\u002fabout\u002f","user_agent":"Mozilla\u002f5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit\u002f601.3.9 (KHTML, like Gecko) Version\u002f9.0.2 Safari\u002f601.3.9 bc-storefront","is_crawler":false},"facebook_like_button":{"enabled":true,"href":"https%3A%2F%2Fmartelelectronics.com%2Fabout%2F","verb":"like"},"add_this":{"buttons":[{"service":"facebook","annotation":""},{"service":"email","annotation":""},{"service":"print","annotation":""},{"service":"twitter","annotation":""},{"service":"pinterest","annotation":""}]},"store_name":"Martel Electronics","theme_version_id":"dcff4430-4df6-013e-0d67-161549aa1a0e","storefront_api":{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJjaWQiOlsxXSwiY29ycyI6WyJodHRwczovL21hcnRlbGVsZWN0cm9uaWNzLmNvbSJdLCJlYXQiOjE3OTA0MjQ2NDAsImlhdCI6MTc5MDI1MTg0MCwiaXNzIjoiQkMiLCJzaWQiOjUwMDAyMiwic3ViIjoiQkMiLCJzdWJfdHlwZSI6MCwidG9rZW5fdHlwZSI6MX0.CO4sztcul2sFgf0qGY_VnSOzY7QCkgwm47ITn8nXkdf8OJleLlSemGP7e-YyUsNf6T87VWBdU-VxlPRd2NtBeA"},"base_url":"https:\u002f\u002fmartelelectronics.com","rss_item_limit":10,"show_newsletter_box":1,"general":{"fastCart":true,"storeId":500022},"money":{"currency_token":"$","currency_location":"left","decimal_token":".","decimal_places":2,"thousands_token":","},"theme_session_id":"cb041bf0-7fe1-013f-b400-5291dc9d1300","client_ip_address":"0.0.0.0","theme_config_id":"7f1539f0-5baf-013f-58a6-6e8db226ea8e","phone_number":"
3460(800) 553-5536","returns_v2_enabled":0,"store_logo":{"title":"Martel Electronics Since 1957","image":{"data":"https:\u002f\u002fcdn11.bigcommerce.com\u002fs-m0o7bk\u002fimages\u002fstencil\u002f{:size}\u002fdownload_1783128589__55035.original.png","alt":"Martel Electronics Since 1957","width":420,"height":107}},"hide_price_from_guests":false,"shopper_consent_tracking_enabled":true,"display_date_format":"jS M Y","bulk_discount_enabled":true,"show_product_reviews":false,"measurements":{"length":"Inches","weight":"LBS"},"gift_certificates_enabled":false,"maintenance":[],"secure_host":"martelelectronics.com","store_hash":"m0o7bk","newsletter_summary":"","country_code":null,"is_eu_ip_address":false,"account_creation_enabled":true,"extended_display_date_format":"jS M Y @ g:i A","show_product_rating":false,"region_code":"","secure_base_url":"https:\u002f\u002fmartelelectronics.com","address":"23221 La Palma Ave.\nYorba Linda, CA 92887","store_time_zone":"-8","privacy_cookie":false,"returns_enabled":0,"store_dst_correction":1,"data_tag_enabled":false,"tax_label":"Tax","blog_enabled":true,"cdn_url":"https:\u002f\u002fcdn11.bigcommerce.com\u002fs-m0o7bk","payments_url":"https:\u002f\u002fpayments.bigcommerce.com","password_requirements":{"alpha":"[A-Za-z]","numeric":"[0-9]","minlength":7,"error":"Passwords must be at least 7 characters and contain both alphabetic and numeric characters."},"show_newsletter_summary":0,"show_payment_methods":true},
3461								page_type: 'page',
3462								head: {
3463									favicon: 'https://cdn11.bigcommerce.com/s-m0o7bk/product_images/Martel%20Fav.png?t=1592514199',
3464									title: 'About Us | Martel Electronics Since 1957'
3465								},
3466								product: 
3467										undefined,
3468								categories: 
3469										[{"url":"https:\u002f\u002fmartelelectronics.com\u002fcourt-reporter-laptop\u002f","image":{},"description":{},"id":"65","name":"Elite Court Reporter Laptop ","count":"2"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fvoice-writers-vox-dragon-laptops\u002f","image":{},"description":{},"id":"79","name":"Voice Writers Vox Dragon Laptops","count":"2"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fdigital-court-reporter-5000-recorders\u002f","image":{},"description":{},"id":"91","name":"Digital Court Reporter 5000 Recorders","count":"0"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fcourt-reporter-microphones\u002f","image":{},"description":{},"id":"22","name":"Court Reporter Microphones","count":"36"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fcourt-reporter-digital-recorders-1\u002f","image":{},"description":{},"id":"25","name":"Court Reporter Digital Recorders","count":"19"},{"children":[{"url":"https:\u002f\u002fmartelelectronics.com\u002fcourt-reporter-steno-writer-microphones\u002f","image":{},"description":{},"id":"90","name":"Court Reporter Steno Writer Microphones","count":"5"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fstenomask-equipment-packages\u002f","image":{},"description":{},"id":"26","name":"Stenomask Equipment Packages","count":"16"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fcourtroom-recorders\u002f","image":{},"description":{},"id":"27","name":"Courtroom Recorders","count":"14"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fdm246-courtroom-recorder-system-for-courts\u002f","image":{},"description":{},"id":"89","name":"DM246 Courtroom Recorder System for Courts","count":"4"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fstenomask-microphones-for-court-reporters\u002f","image":{},"description":{},"id":"23","name":"Stenomask Microphones for Court Reporters","count":"20"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fcourt-reporter-wireless-microphones\u002f","image":{},"description":{},"id":"73","name":"Court Reporter Wireless Microphones","count":"1"}],"url":"https:\u002f\u002fmartelelectronics.com\u002fcourt-reporting-recorders-microphones-equipment\u002f","image":{},"description":{},"id":"19","name":"Court Reporting Recorders & Microphones","count":"84"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fstenomask-microphones\u002f","image":{},"description":{},"id":"77","name":"Stenomask  | Microphones","count":"11"},{"url":"https:\u002f\u002fmartelelectronics.com\u002ftranscription\u002f","image":{},"description":{}
3469,"id":"18","name":"Transcription kits ","count":"10"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fzoom-court-reporting\u002f","image":{},"description":{},"id":"66","name":"Zoom Court Reporting","count":"12"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fhybrid-deposition-audio-setup-for-court-reporters\u002f","image":{},"description":{},"id":"92","name":"Hybrid Deposition Audio Setup for Court Reporters","count":"9"},{"children":[{"url":"https:\u002f\u002fmartelelectronics.com\u002fconference-recorders\u002f","image":{},"description":{},"id":"41","name":"Conference Recorders","count":"9"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fdictation-machine-\u002f","image":{},"description":{},"id":"56","name":"Dictation Machine ","count":"2"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fprofessional-dictation-recorders\u002f","image":{},"description":{},"id":"17","name":"Professional Dictation Recorders","count":"10"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fconsumer-dictation-recorders-1\u002f","image":{},"description":{},"id":"45","name":"Consumer Dictation Recorders","count":"7"},{"url":"https:\u002f\u002fmartelelectronics.com\u002flegal-dictation-recorders\u002f","image":{},"description":{},"id":"69","name":"Legal Dictation Recorders","count":"6"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fcourt-reporter-digital-recorders\u002f","image":{},"description":{},"id":"43","name":"Court Reporter Digital Recorders","count":"6"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fdictaphone-1\u002f","image":{},"description":{},"id":"83","name":"Dictaphone","count":"1"}],"url":"https:\u002f\u002fmartelelectronics.com\u002fvoice-recorders\u002f","image":{"data":"https:\u002f\u002fcdn11.bigcommerce.com\u002fs-m0o7bk\u002fimages\u002fstencil\u002f{:size}\u002fv\u002fcategory%20voice%20recorders%20__12236.original.png","alt":"Voice Recorders"},"description":{},"id":"40","name":"Voice Recorders","count":"43"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fzoom-multiple-microphones\u002f","image":{},"description":{},"id":"72","name":"Zoom Multiple Microphones ","count":"11"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fcourtroom-recording-software\u002f","image":{"data":"https:\u002f\u002fcdn11.bigcommerce.com\u002fs-m0o7bk\u002fimages\u002fstencil\u002f{:size}\u002fr\u002fcategory%20courtroom%20recording%20software%20__99997.original.png","alt":"Courtroom Recording Software "},"description":{},"id":"61","name":"Courtroom Recording Software ","count":"6"},{"children":[{"url":"https:\u002f\u002fmartelelectronics.com\u002fdictation-transcription-packages\u002f","image":{},"description":{},"id":"2","name":"Dictation & Transcription Packages","count":"5"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fdictation-machines\u002f","image":{},"description":{},"id":"44","name":"Dictation Machines ","count":"9"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fconsumer-dictation-recorders\u002f","image":{},"description":{},"id":"8","name":"Consumer Dictation Recorders","count":"7"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fdictation-recorder-management-software\u002f","image":{},"description":{},"id":"50","name":"Dictation Recorder Management Software","count":"3"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fdictation-microphones\u002f","image":{},"description":{},"id":"39","name":"Dictation Microphones","count":"0"}],"url":"https:\u002f\u002fmartelelectronics.com\u002fdictation-recorders\u002f","image":{"data":"https:\u002f\u002fcdn11.bigcommerce.com\u002fs-m0o7bk\u002fimages\u002fstencil\u002f{:size}\u002fq\u002fcategory%20dictation%20recorders__50667.original.png","alt":"Dictation Recorders"},"description":{},"id":"3","name":"Dictation Recorders","count":"30"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fpolice-car-cameras\u002f","image":{},"description":{},"id":"20","name":"Police Car Cameras Systems","count":"3"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fpolice-body-camera-packages\u002f","image":{},"description":{}
3469,"id":"71","name":"Police Body Camera Packages","count":"6"},{"children":[{"url":"https:\u002f\u002fmartelelectronics.com\u002fheadsets\u002f","image":{},"description":{},"id":"33","name":"Headsets","count":"6"},{"url":"https:\u002f\u002fmartelelectronics.com\u002ftranscription-foot-pedals\u002f","image":{},"description":{},"id":"34","name":"Transcription Foot Pedals","count":"7"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fac-power-cables\u002f","image":{},"description":{},"id":"35","name":"AC Power Cables","count":"1"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fwireless-microphone-systems-for-courts-meetings\u002f","image":{},"description":{},"id":"51","name":"Wireless Microphone Systems for Courts\u002fMeetings ","count":"1"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fdocking-cradles-for-dictation-machines-recorders\u002f","image":{},"description":{},"id":"47","name":"Docking Cradles for Dictation Machines Recorders","count":"1"},{"url":"https:\u002f\u002fmartelelectronics.com\u002ftelephone-recording-microphones-hookups\u002f","image":{},"description":{},"id":"49","name":"Telephone Recording Microphones & Hookups","count":"0"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fmemory-cards\u002f","image":{},"description":{},"id":"48","name":"Memory Cards","count":"2"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fcables\u002f","image":{},"description":{},"id":"36","name":"Cables","count":"9"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fbatteries\u002f","image":{},"description":{},"id":"37","name":"Batteries","count":"2"},{"url":"https:\u002f\u002fmartelelectronics.com\u002fbonus\u002f","image":{},"description":{},"id":"58","name":"Bonus ","count":"3"},{"children":[{"url":"https:\u002f\u002fmartelelectronics.com\u002fother-items\u002f","image":{},"description":{},"id":"60","name":"Other Items","count":"10"}],"url":"https:\u002f\u002fmartelelectronics.com\u002flearning\u002f","image":{},"description":{},"id":"64","name":"Learning ","count":"10"}],"url":"https:\u002f\u002fmartelelectronics.com\u002faccessories\u002f","image":{"data":"https:\u002f\u002fcdn11.bigcommerce.com\u002fs-m0o7bk\u002fimages\u002fstencil\u002f{:size}\u002fs\u002fcategory%20accessories__94224.original.png","alt":"Accessories"},"description":{},"id":"21","name":"Accessories","count":"54"}],
3470								currency_selector: {"currencies":[{"id":1,"name":"US Dollar","code":"USD","flag":"\u003cimg src=\"https:\u002f\u002fcdn11.bigcommerce.com\u002fs-m0o7bk\u002flib\u002fflags\u002fus.gif\" border=\"0\" alt=\"\" role=\"presentation\" \u002f\u003e","is_active":true,"switch_url":"https:\u002f\u002fmartelelectronics.com\u002fabout\u002f?setCurrencyId=1","cart_currency_switch_url":"https:\u002f\u002fmartelelectronics.com\u002fcart\u002fchange-currency"}],"active_currency_id":1,"active_currency_flag":"\u003cimg src=\"https:\u002f\u002fcdn11.bigcommerce.com\u002fs-m0o7bk\u002flib\u002fflags\u002fus.gif\" border=\"0\" alt=\"\" role=\"presentation\" \u002f\u003e","active_currency_name":"US Dollar","active_currency_code":"USD","default_currency_code":"USD"},
3471							}
3472						};
3473					
3474						var script = document.createElement('script');
3475						script.defer = true;
3476						script.src = 'https://app.crucials.io/bc/script.js?storeHash=m0o7bk&channelId=1&v=1789499931061';
3477						document.head.appendChild(script);
3478					})();
3479				</script>
3479
3480				
3481						
3481<script type="application/ld+json" class="cr-rich-snippets">
3482
3483
3484						</script>
3484
3485					
3486			
3486<script>
3487(function () {
3488    var path = window.location.pathname || "";
3489
3490    if (path.indexOf("/police-dash-cam-system-mdp6/") === -1) {
3491        return;
3492    }
3493
3494    if (document.getElementById("martel-mdp6-faq-breadcrumb-schema")) {
3495        return;
3496    }
3497
3498    var schema = {
3499        "@context": "https://schema.org",
3500        "@graph": [
3501            {
3502                "@type": "BreadcrumbList",
3503                "@id": "https://martelelectronics.com/police-dash-cam-system-mdp6/#breadcrumb",
3504                "itemListElement": [
3505                    {
3506                        "@type": "ListItem",
3507                        "position": 1,
3508                        "name": "Home",
3509                        "item": "https://martelelectronics.com/"
3510                    },
3511                    {
3512                        "@type": "ListItem",
3513                        "position": 2,
3514                        "name": "Police Car Cameras",
3515                        "item": "https://martelelectronics.com/police-car-cameras/"
3516                    },
3517                    {
3518                        "@type": "ListItem",
3519                        "position": 3,
3520                        "name": "Police Dash Cam System MDP6",
3521                        "item": "https://martelelectronics.com/police-dash-cam-system-mdp6/"
3522                    }
3523                ]
3524            },
3525            {
3526                "@type": "FAQPage",
3527                "@id": "https://martelelectronics.com/police-dash-cam-system-mdp6/#faq",
3528                "mainEntity": [
3529                    {
3530                        "@type": "Question",
3531                        "name": "What is the MDP6 police dash cam system?",
3532                        "acceptedAnswer": {
3533                            "@type": "Answer",
3534                            "text": "The Martel MDP6 is a portable police dash cam system for law enforcement agencies that combines an HD evidence camera, wireless officer microphone, remote camera control, Micro SD recording, light bar activation cable, and police vehicle recording workflow."
3535                        }
3536                    },
3537                    {
3538                        "@type": "Question",
3539                        "name": "Can the MDP6 be used inside and outside the police car?",
3540                        "acceptedAnswer": {
3541                            "@type": "Answer",
3542                            "text": "Yes. The MDP6 is designed as a dual-purpose police dash camera system that can be used inside the police vehicle and removed for crime scene, vehicle search, interview, or evidence documentation."
3543                        }
3544                    },
3545                    {
3546                        "@type": "Question",
3547                        "name": "Does the MDP6 require monthly storage fees?",
3548                        "acceptedAnswer": {
3549                            "@type": "Answer",
3550                            "text": "No. The MDP6 records directly to removable memory card storage and is positioned as a one-time purchase without required monthly cloud storage fees."
3551                        }
3552                    },
3553                    {
3554                        "@type": "Question",
3555                        "name": "What comes with the MDP6 police dash cam system?",
3556                        "acceptedAnswer": {
3557                            "@type": "Answer",
3558                            "text": "The MDP6 package includes a Sony HD camera, Martel wireless microphone receiver, Martel wireless officer transmitter, Micro SD memory card, officer remote control for zoom and photo capture, light bar record activation trigger cable, instruction manual, installation diagram, and 2-year warranty."
3559                        }
3560                    },
3561                    {
3562                        "@type": "Question",
3563                        "name": "Who should buy the MDP6 instead of the DC7?",
3564                        "acceptedAnswer": {
3565                            "@type": "Answer",
3566                            "text": "The MDP6 is best for smaller departments that want a budget-friendly portable police dash cam system. Agencies that need a stronger dedicated patrol vehicle system with front and rear vehicle camera coverage should compare the DC7 Police Car Camera System."
3567                        }
3568                    }
3569                ]
3570            }
3571        ]
3572    };
3573
3574    var script = document.createElement("script");
3575    script.id = "martel-mdp6-faq-breadcrumb-schema";
3576    script.type = "application/ld+json";
3577    script.textContent = JSON.stringify(schema);
3578    document.head.appendChild(script);
3579})();
3580</script>
3580<script>
3581(function () {
3582    var path = window.location.pathname || "";
3583
3584    if (path.indexOf("/police-car-cameras/") === -1) {
3585        return;
3586    }
3587
3588    if (document.getElementById("martel-police-car-cameras-category-schema")) {
3589        return;
3590    }
3591
3592    var schema = {
3593        "@context": "https://schema.org",
3594        "@graph": [
3595            {
3596                "@type": "BreadcrumbList",
3597                "@id": "https://martelelectronics.com/police-car-cameras/#breadcrumb",
3598                "itemListElement": [
3599                    {
3600                        "@type": "ListItem",
3601                        "position": 1,
3602                        "name": "Home",
3603                        "item": "https://martelelectronics.com/"
3604                    },
3605                    {
3606                        "@type": "ListItem",
3607                        "position": 2,
3608                        "name": "Police Car Cameras",
3609                        "item": "https://martelelectronics.com/police-car-cameras/"
3610                    }
3611                ]
3612            },
3613            {
3614                "@type": "ItemList",
3615                "@id": "https://martelelectronics.com/police-car-cameras/#police-camera-systems",
3616                "name": "Police Car Camera Systems",
3617                "description": "Compare Martel police car camera systems for law enforcement, including the DC7 dedicated patrol vehicle camera system and the MDP6 portable police dash cam system.",
3618                "itemListElement": [
3619                    {
3620                        "@type": "ListItem",
3621                        "position": 1,
3622                        "url": "https://martelelectronics.com/dc7-police-car-camera-system/",
3623                        "name": "DC7 Police Car Camera System"
3624                    },
3625                    {
3626                        "@type": "ListItem",
3627                        "position": 2,
3628                        "url": "https://martelelectronics.com/police-dash-cam-system-mdp6/",
3629                        "name": "MDP6 Police Dash Cam System"
3630                    }
3631                ]
3632            },
3633            {
3634                "@type": "FAQPage",
3635                "@id": "https://martelelectronics.com/police-car-cameras/#faq",
3636                "mainEntity": [
3637                    {
3638                        "@type": "Question",
3639                        "name": "What is the best police car camera system for a full patrol vehicle setup?",
3640                        "acceptedAnswer": {
3641                            "@type": "Answer",
3642                            "text": "The DC7 is the better choice for departments that want a stronger dedicated police car camera system with front and rear camera coverage, touchscreen control, MP4 files, wireless officer audio, and optional station upload."
3643                        }
3644                    },
3645                    {
3646                        "@type": "Question",
3647                        "name": "What is the best police dash cam for portable evidence recording?",
3648                        "acceptedAnswer": {
3649                            "@type": "Answer",
3650                            "text": "The MDP6 is the better choice when a department wants a portable police dash cam that can be used inside the police vehicle and outside the car for scene video, vehicle searches, still photos, and officer audio."
3651                        }
3652                    },
3653                    {
3654                        "@type": "Question",
3655                        "name": "Do Martel police car camera systems require monthly storage fees?",
3656                        "acceptedAnswer": {
3657                            "@type": "Answer",
3658                            "text": "The DC7 core system is positioned with no monthly storage fees, no annual support contracts, and no required software license burden. The MDP6 records to removable Micro SD storage without a required monthly cloud storage fee."
3659                        }
3660                    },
3661                    {
3662                        "@type": "Question",
3663                        "name": "Can police departments request written quotes?",
3664                        "acceptedAnswer": {
3665                            "@type": "Answer",
3666                            "text": "Yes. Martel provides written quote options for police departments, sheriff's offices, municipalities, city agencies, and government purchasing teams that need pricing for review, approval, or purchase-order processing."
3667                        }
3668                    },
3669                    {
3670                        "@type": "Question",
3671                        "name": "Should a small department choose DC7 or MDP6?",
3672                        "acceptedAnswer": {
3673                            "@type": "Answer",
3674                            "text": "Small departments should choose DC7 when they want a stronger fixed patrol vehicle camera system. They should choose MDP6 when they want a lower-cost portable police dash cam that can also be used for field evidence video outside the vehicle."
3675                        }
3676                    }
3677                ]
3678            }
3679        ]
3680    };
3681
3682    var script = document.createElement("script");
3683    script.id = "martel-police-car-cameras-category-schema";
3684    script.type = "application/ld+json";
3685    script.text = JSON.stringify(schema);
3686    document.head.appendChild(script);
3687})();
3688</script>
3688<script type="text/javascript">// <![CDATA[
3689(function () {
3690  function initDc7TwoBudgetYearQuoteFixed() {
3691    var form = document.getElementById("dc7QuoteForm");
3692    if (!form) return;
3693    if (form.getAttribute("data-dc7-two-budget-year-fixed-ready") === "1") return;
3694    form.setAttribute("data-dc7-two-budget-year-fixed-ready", "1");
3695
3696    var UNIT_PRICE = 3999.99;
3697    var UNIT_YEAR_ONE_PRICE = 2000.00;
3698    var UNIT_YEAR_TWO_PRICE = 1999.99;
3699    var WIRELESS_UPLOAD_PRICE = 399.99;
3700    var WIRELESS_YEAR_ONE_PRICE = 200.00;
3701    var WIRELESS_YEAR_TWO_PRICE = 199.99;
3702    var CA_TAX_RATE = 0.0775;
3703    var ENDPOINT = "https://dc7-quote.martelsales.workers.dev";
3704
3705    var qtyInput = document.getElementById("dc7_quantity");
3706    var wirelessCheckbox = document.getElementById("dc7_wireless_upload");
3707    var billingSameCheckbox = document.getElementById("dc7_billing_same");
3708    var billingSection = document.getElementById("dc7BillingSection");
3709    var totalEl = document.getElementById("dc7Total");
3710    var qtyTextEl = document.getElementById("dc7QtyText");
3711    var wirelessSummaryRow = document.getElementById("dc7WirelessSummaryRow");
3712    var wirelessSummaryText = document.getElementById("dc7WirelessSummaryText");
3713    var statusEl = document.getElementById("dc7Status");
3714    var submitBtn = document.getElementById("dc7SubmitBtn");
3715    var submitting = false;
3716
3717    function getPageSource() {
3718      var path = String(window.location.pathname || "").toLowerCase();
3719
3720      if (path === "/dc7/" || path === "/dc7") {
3721        return "dc7_landing_page";
3722      }
3723
3724      if (path.indexOf("dc7") !== -1) {
3725        return "dc7_product_page";
3726      }
3727
3728      return "dc7_quote_page";
3729    }
3730
3731    if (qtyInput) {
3732      qtyInput.setAttribute("min", "1");
3733      qtyInput.setAttribute("max", "100");
3734      qtyInput.setAttribute("step", "1");
3735    }
3736
3737    function money(value) {
3738      return new Intl.NumberFormat("en-US", {
3739        style: "currency",
3740        currency: "USD"
3741      }).format(Number(value) || 0);
3742    }
3743
3744    function roundMoney(value) {
3745      return Math.round((Number(value || 0) + Number.EPSILON) * 100) / 100;
3746    }
3747
3748    function clean(value) {
3749      return String(value || "").replace(/^\s+|\s+$/g, "");
3750    }
3751
3752    function val(id) {
3753      var el = document.getElementById(id);
3754      return el ? clean(el.value) : "";
3755    }
3756
3757    function setText(id, value) {
3758      var el = document.getElementById(id);
3759      if (el) el.textContent = value;
3760    }
3761
3762    function setHTML(id, value) {
3763      var el = document.getElementById(id);
3764      if (el) el.innerHTML = value;
3765    }
3766
3767    function normalizeQty(value) {
3768      var qty = parseInt(value, 10);
3769      if (isNaN(qty)) qty = 1;
3770      if (qty < 1) qty = 1;
3771      if (qty > 100) qty = 100;
3772      return qty;
3773    }
3774
3775    function validEmail(value) {
3776      return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(clean(value));
3777    }
3778
3779    function isCalifornia(stateValue) {
3780      var state = clean(stateValue).toLowerCase();
3781      return state === "ca" || state === "california";
3782    }
3783
3784    function getQuotePlan() {
3785      var selectedPlan = form.querySelector('input[name="quote_plan"]:checked');
3786      if (selectedPlan && selectedPlan.value) {
3787        return selectedPlan.value;
3788      }
3789
3790      var selectedQuoteType = form.querySelector('input[name="quote_type"]:checked');
3791      if (selectedQuoteType && selectedQuoteType.value) {
3792        var value = String(selectedQuoteType.value).toLowerCase();
3793        if (value.indexOf("standard") !== -1 || value.indexOf("full") !== -1) {
3794          return "standard_purchase";
3795        }
3796      }
3797
3798      return "two_year_budget";
3799    }
3800
3801    function quotePlanLabel(plan) {
3802      return plan === "standard_purchase" ? "Standard Full Purchase Quote" : "Two-Budget-Year Department Quote";
3803    }
3804
3805    function ensureAfter(anchor, el) {
3806      if (!anchor || !el || !anchor.parentNode) return;
3807      if (anchor.nextSibling) anchor.parentNode.insertBefore(el, anchor.nextSibling);
3808      else anchor.parentNode.appendChild(el);
3809    }
3810
3811    function ensureSummaryLine(id, afterEl) {
3812      var el = document.getElementById(id);
3813      if (el) return el;
3814
3815      el = document.createElement("div");
3816      el.id = id;
3817      el.style.cssText = "margin-top:8px;font-size:13px;line-height:1.45;color:#ffffff;";
3818
3819      if (afterEl && afterEl.parentNode) ensureAfter(afterEl, el);
3820      else if (totalEl && totalEl.parentNode) totalEl.parentNode.appendChild(el);
3821
3822      return el;
3823    }
3824
3825    function getTotals() {
3826      var qty = normalizeQty(qtyInput ? qtyInput.value : 1);
3827      if (qtyInput) qtyInput.value = qty;
3828
3829      var quotePlan = getQuotePlan();
3830      var isTwoYear = quotePlan !== "standard_purchase";
3831      var wirelessEnabled = !!(wirelessCheckbox && wirelessCheckbox.checked);
3832
3833      var baseTotal = roundMoney(qty * UNIT_PRICE);
3834      var baseYearOneTotal = roundMoney(qty * UNIT_YEAR_ONE_PRICE);
3835      var baseYearTwoTotal = roundMoney(qty * UNIT_YEAR_TWO_PRICE);
3836
3837      var wirelessTotal = wirelessEnabled ? roundMoney(qty * WIRELESS_UPLOAD_PRICE) : 0;
3838      var wirelessYearOneTotal = wirelessEnabled ? roundMoney(qty * WIRELESS_YEAR_ONE_PRICE) : 0;
3839      var wirelessYearTwoTotal = wirelessEnabled ? roundMoney(qty * WIRELESS_YEAR_TWO_PRICE) : 0;
3840
3841      var productSubtotal = roundMoney(baseTotal + wirelessTotal);
3842      var taxApplies = isCalifornia(val("dc7_ship_state"));
3843      var salesTax = taxApplies ? roundMoney(productSubtotal * CA_TAX_RATE) : 0;
3844      var grandTotal = roundMoney(productSubtotal + salesTax);
3845
3846      var budgetYearOneTotal = isTwoYear ? roundMoney(baseYearOneTotal + wirelessYearOneTotal) : productSubtotal;
3847      var budgetYearTwoTotal = isTwoYear ? roundMoney(baseYearTwoTotal + wirelessYearTwoTotal) : 0;
3848
3849      var budgetYearOneTax = 0;
3850      var budgetYearTwoTax = 0;
3851
3852      if (taxApplies) {
3853        if (isTwoYear) {
3854          budgetYearOneTax = roundMoney(budgetYearOneTotal * CA_TAX_RATE);
3855          budgetYearTwoTax = roundMoney(salesTax - budgetYearOneTax);
3856        } else {
3857          budgetYearOneTax = salesTax;
3858          budgetYearTwoTax = 0;
3859        }
3860      }
3861
3862      var budgetYearOneGrandTotal = roundMoney(budgetYearOneTotal + budgetYearOneTax);
3863      var budgetYearTwoGrandTotal = roundMoney(budgetYearTwoTotal + budgetYearTwoTax);
3864
3865      return {
3866        qty: qty,
3867        quotePlan: quotePlan,
3868        isTwoYear: isTwoYear,
3869        wirelessEnabled: wirelessEnabled,
3870
3871        baseTotal: baseTotal,
3872        baseYearOneTotal: baseYearOneTotal,
3873        baseYearTwoTotal: baseYearTwoTotal,
3874
3875        wirelessTotal: wirelessTotal,
3876        wirelessYearOneTotal: wirelessYearOneTotal,
3877        wirelessYearTwoTotal: wirelessYearTwoTotal,
3878
3879        productSubtotal: productSubtotal,
3880        taxApplies: taxApplies,
3881        salesTax: salesTax,
3882        grandTotal: grandTotal,
3883
3884        budgetYearOneTotal: budgetYearOneTotal,
3885        budgetYearTwoTotal: budgetYearTwoTotal,
3886        budgetYearOneTax: budgetYearOneTax,
3887        budgetYearTwoTax: budgetYearTwoTax,
3888        budgetYearOneGrandTotal: budgetYearOneGrandTotal,
3889        budgetYearTwoGrandTotal: budgetYearTwoGrandTotal
3890      };
3891    }
3892
3893    function quoteItems(totals) {
3894      var items = [];
3895
3896      if (totals.isTwoYear) {
3897        items.push({
3898          sku: "2078",
3899          item_number: "2078",
3900          product_name: "DC7 Ultimate Police Car Camera System - Due This Budget Year",
3901          name: "DC7 Ultimate Police Car Camera System - Due This Budget Year",
3902          quantity: String(totals.qty),
3903          unit_price: UNIT_YEAR_ONE_PRICE.toFixed(2),
3904          line_total: totals.baseYearOneTotal.toFixed(2),
3905          option_summary: "First-year DC7 system portion. Two-budget-year department quote. No financing charges. Not a loan."
3906        });
3907
3908        items.push({
3909          sku: "2078",
3910          item_number: "2078",
3911          product_name: "DC7 Ultimate Police Car Camera System - Due Next Budget Year",
3912          name: "DC7 Ultimate Police Car Camera System - Due Next Budget Year",
3913          quantity: String(totals.qty),
3914          unit_price: UNIT_YEAR_TWO_PRICE.toFixed(2),
3915          line_total: totals.baseYearTwoTotal.toFixed(2),
3916          option_summary: "Next-year DC7 system portion. Two-budget-year department quote. No financing charges. Not a loan."
3917        });
3918
3919        if (totals.wirelessEnabled) {
3920          items.push({
3921            sku: "1180",
3922            item_number: "1180",
3923            product_name: "Automatic Wireless Video Uploading to Police Station Computer - Due This Budget Year",
3924            name: "Automatic Wireless Video Uploading to Police Station Computer - Due This Budget Year",
3925            quantity: String(totals.qty),
3926            unit_price: WIRELESS_YEAR_ONE_PRICE.toFixed(2),
3927            line_total: totals.wirelessYearOneTotal.toFixed(2),
3928            option_summary: "First-year wireless upload add-on portion. One-time upgrade split across the two-budget-year quote. No monthly fees. No cloud. Uses the department's own station computer and routers."
3929          });
3930
3931          items.push({
3932            sku: "1180",
3933            item_number: "1180",
3934            product_name: "Automatic Wireless Video Uploading to Police Station Computer - Due Next Budget Year",
3935            name: "Automatic Wireless Video Uploading to Police Station Computer - Due Next Budget Year",
3936            quantity: String(totals.qty),
3937            unit_price: WIRELESS_YEAR_TWO_PRICE.toFixed(2),
3938            line_total: totals.wirelessYearTwoTotal.toFixed(2),
3939            option_summary: "Next-year wireless upload add-on portion. One-time upgrade split across the two-budget-year quote. No monthly fees. No cloud. Uses the department's own station computer and routers."
3940          });
3941        }
3942      } else {
3943        items.push({
3944          sku: "2078",
3945          item_number: "2078",
3946          product_name: "DC7 Ultimate Police Car Camera System",
3947          name: "DC7 Ultimate Police Car Camera System",
3948          quantity: String(totals.qty),
3949          unit_price: UNIT_PRICE.toFixed(2),
3950          line_total: totals.baseTotal.toFixed(2),
3951          option_summary: "Standard full purchase quote."
3952        });
3953
3954        if (totals.wirelessEnabled) {
3955          items.push({
3956            sku: "1180",
3957            item_number: "1180",
3958            product_name: "Automatic Wireless Video Uploading to Police Station Computer",
3959            name: "Automatic Wireless Video Uploading to Police Station Computer",
3960            quantity: String(totals.qty),
3961            unit_price: WIRELESS_UPLOAD_PRICE.toFixed(2),
3962            line_total: totals.wirelessTotal.toFixed(2),
3963            option_summary: "One-time optional wireless upload upgrade. No monthly fees. No cloud. Uses the department's own station computer and routers."
3964          });
3965        }
3966      }
3967
3968      return items;
3969    }
3970
3971    function toggleBilling() {
3972      if (!billingSameCheckbox || !billingSection) return;
3973      billingSection.style.display = billingSameCheckbox.checked ? "none" : "block";
3974    }
3975
3976    function updateTotal() {
3977      var totals = getTotals();
3978
3979      if (totalEl) totalEl.textContent = money(totals.grandTotal);
3980      if (qtyTextEl) qtyTextEl.textContent = String(totals.qty);
3981
3982      if (totals.wirelessEnabled) {
3983        if (wirelessSummaryRow) wirelessSummaryRow.style.display = "block";
3984        if (wirelessSummaryText) {
3985          if (totals.isTwoYear) {
3986            wirelessSummaryText.textContent = "Automatic wireless uploading added (" + totals.qty + " × " + money(WIRELESS_UPLOAD_PRICE) + " = " + money(totals.wirelessTotal) + "). Wireless split: " + money(totals.wirelessYearOneTotal) + " this budget year + " + money(totals.wirelessYearTwoTotal) + " next budget year.";
3987          } else {
3988            wirelessSummaryText.textContent = "Automatic wireless uploading added (" + totals.qty + " × " + money(WIRELESS_UPLOAD_PRICE) + " = " + money(totals.wirelessTotal) + ").";
3989          }
3990        }
3991      } else {
3992        if (wirelessSummaryRow) wirelessSummaryRow.style.display = "none";
3993        if (wirelessSummaryText) wirelessSummaryText.textContent = "";
3994      }
3995
3996      var budgetRow = ensureSummaryLine("dc7BudgetSplitSummaryRow", wirelessSummaryRow || totalEl);
3997      var subtotalRow = ensureSummaryLine("dc7SubtotalSummaryRow", budgetRow);
3998      var taxRow = ensureSummaryLine("dc7TaxSummaryRow", subtotalRow);
3999      var afterTaxSplitRow = ensureSummaryLine("dc7AfterTaxSplitSummaryRow", taxRow);
4000
4001      if (budgetRow) {
4002        budgetRow.style.display = "block";
4003
4004        if (totals.isTwoYear) {
4005          budgetRow.innerHTML = "<strong>Two-Budget-Year Quote:</strong> " + money(totals.budgetYearOneTotal) + " due this budget year + " + money(totals.budgetYearTwoTotal) + " due next budget year before applicable sales tax.";
4006        } else {
4007          budgetRow.innerHTML = "<strong>Standard Full Purchase Quote:</strong> " + money(totals.productSubtotal) + " before applicable sales tax.";
4008        }
4009      }
4010
4011      if (subtotalRow) {
4012        subtotalRow.style.display = "block";
4013        subtotalRow.innerHTML = "<strong>Product Subtotal:</strong> " + money(totals.productSubtotal);
4014      }
4015
4016      if (taxRow) {
4017        taxRow.style.display = "block";
4018
4019        if (totals.taxApplies) {
4020          taxRow.innerHTML = "<strong>California Sales Tax 7.75%:</strong> " + money(totals.salesTax);
4021        } else {
4022          taxRow.innerHTML = "<strong>Sales Tax:</strong> " + money(0) + " <span style=\"color:#dbe7f7;\">(only charged for California shipping addresses)</span>";
4023        }
4024      }
4025
4026      if (afterTaxSplitRow) {
4027        if (totals.isTwoYear && totals.taxApplies) {
4028          afterTaxSplitRow.style.display = "block";
4029          afterTaxSplitRow.innerHTML = "<strong>Estimated CA-tax split:</strong> " + money(totals.budgetYearOneGrandTotal) + " this budget year including CA tax + " + money(totals.budgetYearTwoGrandTotal) + " next budget year including CA tax.";
4030        } else {
4031          afterTaxSplitRow.style.display = "none";
4032          afterTaxSplitRow.innerHTML = "";
4033        }
4034      }
4035
4036      var qtyLabel = totals.qty === 1 ? "1 DC7 system" : totals.qty + " DC7 systems";
4037      var yearOneDisplay = totals.isTwoYear ? money(totals.budgetYearOneTotal) : money(totals.grandTotal);
4038      var yearTwoDisplay = totals.isTwoYear ? money(totals.budgetYearTwoTotal) : "$0.00";
4039
4040      setText("dc7YearOneSummaryText", yearOneDisplay);
4041      setText("dc7YearTwoSummaryText", yearTwoDisplay);
4042
4043      setText("dc7HeroTotal", money(totals.grandTotal));
4044      setText("dc7HeroThis", yearOneDisplay);
4045      setText("dc7HeroYearOne", yearOneDisplay);
4046      setText("dc7HeroYearTwo", yearTwoDisplay);
4047      setText("dc7SideTotal", money(totals.grandTotal));
4048      setText("dc7SideSmall", qtyLabel + " selected");
4049      setText("dc7BannerTotal", money(totals.grandTotal));
4050      setText("dc7BannerYearOne", yearOneDisplay);
4051      setText("dc7BannerYearTwo", yearTwoDisplay);
4052
4053      if (totals.isTwoYear) {
4054        setHTML("dc7HeroSplitText", "Two-Budget-Year Department Quote: " + yearOneDisplay + " due this budget year + " + yearTwoDisplay + " due next budget year before applicable sales tax. Available for qualifying government agencies with approved purchase-order/payment terms. No financing charges. Not a loan.");
4055        setHTML("dc7SideYellowText", "<strong style=\"display:block;font-size:15px;margin-bottom:5px;font-weight:900;\">Two-Budget-Year Quote Available</strong>" + yearOneDisplay + " due this budget year + " + yearTwoDisplay + " due next budget year before applicable sales tax. No financing charges. Not a loan.");
4056      } else {
4057        setHTML("dc7HeroSplitText", "Standard Full Purchase Quote: " + money(totals.grandTotal) + " total calculated quote for " + qtyLabel + ". Optional wireless uploading is included only if selected.");
4058        setHTML("dc7SideYellowText", "<strong style=\"display:block;font-size:15px;margin-bottom:5px;font-weight:900;\">Standard Full Purchase Quote Selected</strong>" + money(totals.grandTotal) + " total calculated quote. No next-budget-year balance shown.");
4059      }
4060    }
4061
4062    function setStatus(type, message) {
4063      if (!statusEl) return;
4064
4065      if (!type) {
4066        statusEl.style.display = "none";
4067        statusEl.textContent = "";
4068        statusEl.style.background = "";
4069        statusEl.style.color = "";
4070        statusEl.style.border = "";
4071        return;
4072      }
4073
4074      statusEl.style.display = "block";
4075      statusEl.textContent = message;
4076
4077      if (type === "success") {
4078        statusEl.style.background = "#ecfdf5";
4079        statusEl.style.color = "#065f46";
4080        statusEl.style.border = "1px solid #a7f3d0";
4081      } else {
4082        statusEl.style.background = "#fef2f2";
4083        statusEl.style.color = "#991b1b";
4084        statusEl.style.border = "1px solid #fecaca";
4085      }
4086    }
4087
4088    function validateForm() {
4089      if (val("dc7_website")) return "Please refresh the page and try again.";
4090      if (!val("dc7_name")) return "Please enter Full Name.";
4091      if (!val("dc7_agency")) return "Please enter Agency / Department.";
4092      if (!val("dc7_email")) return "Please enter Business Email.";
4093      if (!validEmail(val("dc7_email"))) return "Please enter a valid Business Email.";
4094      if (!qtyInput || normalizeQty(qtyInput.value) < 1) return "Please enter how many DC7 systems you need.";
4095      if (!val("dc7_ship_address1")) return "Please enter Shipping Address Line 1.";
4096      if (!val("dc7_ship_city")) return "Please enter Shipping City.";
4097      if (!val("dc7_ship_state")) return "Please enter Shipping State.";
4098      if (!val("dc7_ship_zip")) return "Please enter Shipping ZIP.";
4099
4100      if (billingSameCheckbox && !billingSameCheckbox.checked) {
4101        if (!val("dc7_bill_address1")) return "Please enter Billing Address Line 1.";
4102        if (!val("dc7_bill_city")) return "Please enter Billing City.";
4103        if (!val("dc7_bill_state")) return "Please enter Billing State.";
4104        if (!val("dc7_bill_zip")) return "Please enter Billing ZIP.";
4105      }
4106
4107      return "";
4108    }
4109
4110    function buildPaymentSummary(totals) {
4111      var wirelessPart = totals.wirelessEnabled
4112        ? " Wireless upload add-on split: " + money(totals.wirelessYearOneTotal) + " due this budget year and " + money(totals.wirelessYearTwoTotal) + " due next budget year. Total wireless add-on: " + money(totals.wirelessTotal) + "."
4113        : " No optional wireless upload selected.";
4114
4115      if (totals.isTwoYear) {
4116        return "Two-Budget-Year Department Quote. DC7 system split: " + money(totals.baseYearOneTotal) + " due this budget year and " + money(totals.baseYearTwoTotal) + " due next budget year." + wirelessPart + " Combined two-budget-year split before applicable sales tax: " + money(totals.budgetYearOneTotal) + " due this budget year and " + money(totals.budgetYearTwoTotal) + " due next budget year. Product subtotal before tax: " + money(totals.productSubtotal) + ". Sales tax: " + money(totals.salesTax) + ". Grand total: " + money(totals.grandTotal) + ". " + (totals.taxApplies ? "California sales tax is shown separately and is collected with the first invoice." : "Sales tax is not charged unless shipping to California.");
4117      }
4118
4119      return "Standard Full Purchase Quote. Full calculated quote before applicable sales tax: " + money(totals.productSubtotal) + ". Sales tax: " + money(totals.salesTax) + ". Grand total: " + money(totals.grandTotal) + ".";
4120    }
4121
4122    function buildPayload(totals) {
4123      var sameBilling = billingSameCheckbox ? billingSameCheckbox.checked : true;
4124      var items = quoteItems(totals);
4125      var paymentSummary = buildPaymentSummary(totals);
4126      var paymentOption = quotePlanLabel(totals.quotePlan);
4127      var pageSource = getPageSource();
4128
4129      return {
4130        quote_type: "saved_multi_item",
4131        saved_multi_item: "dc7_written_quote_page",
4132        request_type: "dc7_instant_written_quote",
4133        quote_cycle: totals.isTwoYear ? "two_budget_year" : "standard_purchase",
4134        source: pageSource,
4135        source_url: window.location.href,
4136        product_url: window.location.href,
4137
4138        product_name: totals.isTwoYear ? "DC7 Ultimate Police Car Camera System - Two-Budget-Year Department Quote" : "DC7 Ultimate Police Car Camera System",
4139        sku: "2078",
4140        item_number: "2078",
4141        quantity: String(totals.qty),
4142        unit_price: UNIT_PRICE.toFixed(2),
4143        line_total: totals.baseTotal.toFixed(2),
4144
4145        product_subtotal: totals.productSubtotal.toFixed(2),
4146        subtotal: totals.productSubtotal.toFixed(2),
4147        sales_tax_rate: totals.taxApplies ? "7.75%" : "0%",
4148        sales_tax_amount: totals.salesTax.toFixed(2),
4149        tax_state_basis: val("dc7_ship_state"),
4150        grand_total: totals.grandTotal.toFixed(2),
4151        quote_total: totals.grandTotal.toFixed(2),
4152        total: totals.grandTotal.toFixed(2),
4153
4154        payment_option: paymentOption,
4155        payment_option_summary: paymentSummary,
4156        option_summary: paymentSummary,
4157        quote_notes: paymentSummary,
4158
4159        budget_year_1_unit_price: totals.isTwoYear ? UNIT_YEAR_ONE_PRICE.toFixed(2) : "",
4160        budget_year_2_unit_price: totals.isTwoYear ? UNIT_YEAR_TWO_PRICE.toFixed(2) : "",
4161        budget_year_1_total: totals.budgetYearOneTotal.toFixed(2),
4162        budget_year_2_total: totals.budgetYearTwoTotal.toFixed(2),
4163        budget_year_1_tax: totals.budgetYearOneTax.toFixed(2),
4164        budget_year_2_tax: totals.budgetYearTwoTax.toFixed(2),
4165        budget_year_1_grand_total: totals.budgetYearOneGrandTotal.toFixed(2),
4166        budget_year_2_grand_total: totals.budgetYearTwoGrandTotal.toFixed(2),
4167
4168        dc7_budget_year_1_total: totals.baseYearOneTotal.toFixed(2),
4169        dc7_budget_year_2_total: totals.baseYearTwoTotal.toFixed(2),
4170
4171        wireless_upload_budget_year_1_unit_price: totals.wirelessEnabled && totals.isTwoYear ? WIRELESS_YEAR_ONE_PRICE.toFixed(2) : "",
4172        wireless_upload_budget_year_2_unit_price: totals.wirelessEnabled && totals.isTwoYear ? WIRELESS_YEAR_TWO_PRICE.toFixed(2) : "",
4173        wireless_upload_budget_year_1_total: totals.wirelessEnabled && totals.isTwoYear ? totals.wirelessYearOneTotal.toFixed(2) : "",
4174        wireless_upload_budget_year_2_total: totals.wirelessEnabled && totals.isTwoYear ? totals.wirelessYearTwoTotal.toFixed(2) : "",
4175
4176        notes: val("dc7_message"),
4177        message: val("dc7_message"),
4178
4179        name: val("dc7_name"),
4180        title: val("dc7_title"),
4181        agency: val("dc7_agency"),
4182        company: val("dc7_agency"),
4183        email: val("dc7_email"),
4184        second_email: "",
4185        phone: val("dc7_phone"),
4186        timeframe: val("dc7_timeframe"),
4187        city: val("dc7_ship_city"),
4188        state: val("dc7_ship_state"),
4189
4190        shipping_name: val("dc7_ship_name") || val("dc7_name"),
4191        shipping_company: val("dc7_ship_company") || val("dc7_agency"),
4192        shipping_address1: val("dc7_ship_address1"),
4193        shipping_address2: val("dc7_ship_address2"),
4194        shipping_city: val("dc7_ship_city"),
4195        shipping_state: val("dc7_ship_state"),
4196        shipping_zip: val("dc7_ship_zip"),
4197
4198        billing_same_as_shipping: sameBilling,
4199        billing_name: sameBilling ? (val("dc7_ship_name") || val("dc7_name")) : val("dc7_bill_name"),
4200        billing_company: sameBilling ? (val("dc7_ship_company") || val("dc7_agency")) : val("dc7_bill_company"),
4201        billing_address1: sameBilling ? val("dc7_ship_address1") : val("dc7_bill_address1"),
4202        billing_address2: sameBilling ? val("dc7_ship_address2") : val("dc7_bill_address2"),
4203        billing_city: sameBilling ? val("dc7_ship_city") : val("dc7_bill_city"),
4204        billing_state: sameBilling ? val("dc7_ship_state") : val("dc7_bill_state"),
4205        billing_zip: sameBilling ? val("dc7_ship_zip") : val("dc7_bill_zip"),
4206
4207        wireless_upload_enabled: totals.wirelessEnabled,
4208        wireless_upload_price: totals.wirelessEnabled ? WIRELESS_UPLOAD_PRICE.toFixed(2) : "",
4209        wireless_upload_total: totals.wirelessEnabled ? totals.wirelessTotal.toFixed(2) : "",
4210
4211        items: items,
4212        line_items: items,
4213        item_count: String(items.length),
4214        website: val("dc7_website")
4215      };
4216    }
4217
4218    function handleSubmit(event) {
4219      if (event) {
4220        event.preventDefault();
4221        if (event.stopPropagation) event.stopPropagation();
4222        if (event.stopImmediatePropagation) event.stopImmediatePropagation();
4223      }
4224
4225      if (submitting) return false;
4226
4227      updateTotal();
4228
4229      var error = validateForm();
4230      if (error) {
4231        setStatus("error", error);
4232        return false;
4233      }
4234
4235      var totals = getTotals();
4236      var payload = buildPayload(totals);
4237
4238      submitting = true;
4239
4240      if (submitBtn) {
4241        submitBtn.disabled = true;
4242        submitBtn.textContent = "Sending Quote...";
4243      }
4244
4245      setStatus(null, "");
4246
4247      fetch(ENDPOINT, {
4248        method: "POST",
4249        headers: {
4250          "Content-Type": "application/json"
4251        },
4252        body: JSON.stringify(payload)
4253      })
4254        .then(function (response) {
4255          return response.text().then(function (text) {
4256            var result = {};
4257            try {
4258              result = JSON.parse(text);
4259            } catch (e) {}
4260
4261            if (!response.ok || result.ok === false) {
4262              var message = result.error || result.message || "Unable to send quote right now.";
4263              if (result.details) message += " " + result.details;
4264              throw new Error(message);
4265            }
4266
4267            var successMessage = "Your written quotation has been emailed. Please check your inbox. If you do not see it, check your spam folder or contact Martel Electronics.";
4268            if (result.quote_reference) successMessage += " Quote reference: " + result.quote_reference + ".";
4269            setStatus("success", successMessage);
4270          });
4271        })
4272        .catch(function (err) {
4273          setStatus("error", err && err.message ? err.message : "Unable to send quote right now. Please try again or contact Martel Electronics.");
4274        })
4275        .then(function () {
4276          submitting = false;
4277          if (submitBtn) {
4278            submitBtn.disabled = false;
4279            submitBtn.textContent = "Email Me My Instant Written Quote";
4280          }
4281        });
4282
4283      return false;
4284    }
4285
4286    if (qtyInput) {
4287      qtyInput.addEventListener("input", updateTotal);
4288      qtyInput.addEventListener("change", updateTotal);
4289      qtyInput.addEventListener("keyup", updateTotal);
4290      qtyInput.addEventListener("blur", updateTotal);
4291    }
4292
4293    if (wirelessCheckbox) {
4294      wirelessCheckbox.addEventListener("change", updateTotal);
4295      wirelessCheckbox.addEventListener("click", function () { setTimeout(updateTotal, 0); });
4296    }
4297
4298    if (billingSameCheckbox) {
4299      billingSameCheckbox.addEventListener("change", toggleBilling);
4300      billingSameCheckbox.addEventListener("click", function () { setTimeout(toggleBilling, 0); });
4301    }
4302
4303    var stateInput = document.getElementById("dc7_ship_state");
4304    if (stateInput) {
4305      stateInput.addEventListener("input", updateTotal);
4306      stateInput.addEventListener("change", updateTotal);
4307      stateInput.addEventListener("keyup", updateTotal);
4308      stateInput.addEventListener("blur", updateTotal);
4309    }
4310
4311    var quotePlanRadios = form.querySelectorAll('input[name="quote_plan"], input[name="quote_type"]');
4312    for (var i = 0; i < quotePlanRadios.length; i++) {
4313      quotePlanRadios[i].addEventListener("change", updateTotal);
4314      quotePlanRadios[i].addEventListener("click", function () { setTimeout(updateTotal, 0); });
4315    }
4316
4317    form.onsubmit = handleSubmit;
4318    form.addEventListener("submit", handleSubmit, true);
4319
4320    if (submitBtn) {
4321      submitBtn.setAttribute("type", "button");
4322      submitBtn.addEventListener("click", handleSubmit, true);
4323    }
4324
4325    toggleBilling();
4326    updateTotal();
4327  }
4328
4329  if (document.readyState === "loading") {
4330    document.addEventListener("DOMContentLoaded", initDc7TwoBudgetYearQuoteFixed);
4331  } else {
4332    initDc7TwoBudgetYearQuoteFixed();
4333  }
4334
4335  window.addEventListener("load", function () {
4336    initDc7TwoBudgetYearQuoteFixed();
4337    setTimeout(initDc7TwoBudgetYearQuoteFixed, 250);
4338  });
4339})();
4340// ]]></script>
4340<script>
4341(function () {
4342  var path = window.location.pathname || "";
4343
4344  if (path.indexOf("/zoom-multiple-microphones/") === -1) {
4345    return;
4346  }
4347
4348  var schemaId = "martel-zoom-multiple-microphones-category-schema-fixed";
4349
4350  function removeOldZoomSchemas() {
4351    var scripts = document.querySelectorAll('script[type="application/ld+json"]');
4352
4353    for (var i = 0; i < scripts.length; i++) {
4354      var script = scripts[i];
4355      var text = String(script.textContent || "");
4356
4357      if (script.id === schemaId) {
4358        if (script.parentNode) {
4359          script.parentNode.removeChild(script);
4360        }
4361        continue;
4362      }
4363
4364      if (
4365        text.indexOf("https://martelelectronics.com/zoom-multiple-microphones/#faq") !== -1 ||
4366        text.indexOf("https://martelelectronics.com/zoom-multiple-microphones/#itemlist") !== -1 ||
4367        text.indexOf("martel-zoom-multiple-microphones-category-schema") !== -1
4368      ) {
4369        if (script.parentNode) {
4370          script.parentNode.removeChild(script);
4371        }
4372      }
4373    }
4374  }
4375
4376  removeOldZoomSchemas();
4377
4378  var schema = {
4379    "@context": "https://schema.org",
4380    "@graph": [
4381      {
4382        "@type": "BreadcrumbList",
4383        "@id": "https://martelelectronics.com/zoom-multiple-microphones/#breadcrumb",
4384        "itemListElement": [
4385          {
4386            "@type": "ListItem",
4387            "position": 1,
4388            "name": "Home",
4389            "item": "https://martelelectronics.com/"
4390          },
4391          {
4392            "@type": "ListItem",
4393            "position": 2,
4394            "name": "Zoom Multiple Microphones",
4395            "item": "https://martelelectronics.com/zoom-multiple-microphones/"
4396          }
4397        ]
4398      },
4399      {
4400        "@type": "CollectionPage",
4401        "@id": "https://martelelectronics.com/zoom-multiple-microphones/#webpage",
4402        "url": "https://martelelectronics.com/zoom-multiple-microphones/",
4403        "name": "Zoom Multiple Microphones for Zoom, Teams & Hybrid Meetings",
4404        "description": "Compare Martel Zoom multiple microphone systems for conference rooms, boardrooms, courtrooms, city meetings, Microsoft Teams, Webex, and hybrid meetings.",
4405        "isPartOf": {
4406          "@type": "WebSite",
4407          "@id": "https://martelelectronics.com/#website",
4408          "name": "Martel Electronics",
4409          "url": "https://martelelectronics.com/"
4410        },
4411        "breadcrumb": {
4412          "@id": "https://martelelectronics.com/zoom-multiple-microphones/#breadcrumb"
4413        },
4414        "mainEntity": {
4415          "@id": "https://martelelectronics.com/zoom-multiple-microphones/#itemlist"
4416        }
4417      },
4418      {
4419        "@type": "ItemList",
4420        "@id": "https://martelelectronics.com/zoom-multiple-microphones/#itemlist",
4421        "name": "Zoom Multiple Microphone Systems",
4422        "description": "Four Martel USB multiple microphone systems for Zoom, Teams, Webex, conference rooms, boardrooms, courtrooms, city meetings, and hybrid meetings.",
4423        "numberOfItems": 4,
4424        "itemListElement": [
4425          {
4426            "@type": "ListItem",
4427            "position": 1,
4428            "name": "4 Microphone USB System for Zoom",
4429            "url": "https://martelelectronics.com/zoom-usb-multiple-microphones-system/"
4430          },
4431          {
4432            "@type": "ListItem",
4433            "position": 2,
4434            "name": "8 Microphone USB System for Zoom and Hybrid Meetings",
4435            "url": "https://martelelectronics.com/zoom-usb-multiple-microphones-system-8-microphone-mixer-package-hybrid-meetings/"
4436          },
4437          {
4438            "@type": "ListItem",
4439            "position": 3,
4440            "name": "12 Microphone USB System for Boardrooms",
4441            "url": "https://martelelectronics.com/zoom-usb-multiple-microphones-system-12-microphone-mixer-package-boardrooms/"
4442          },
4443          {
4444            "@type": "ListItem",
4445            "position": 4,
4446            "name": "16 Microphone USB System for Large Meeting Rooms",
4447            "url": "https://martelelectronics.com/zoom-usb-multiple-microphones-system-16-microphone-mixer/"
4448          }
4449        ]
4450      },
4451      {
4452        "@type": "FAQPage",
4453        "@id": "https://martelelectronics.com/zoom-multiple-microphones/#faq",
4454        "mainEntity": [
4455          {
4456            "@type": "Question",
4457            "name": "Can Zoom use multiple microphones at the same time?",
4458            "acceptedAnswer": {
4459              "@type": "Answer",
4460              "text": "Zoom normally selects one microphone input, so Martel USB multiple microphone systems combine several microphones into one USB audio input for the computer. This lets several microphones work together as one unified microphone system for Zoom meetings."
4461            }
4462          },
4463          {
4464            "@type": "Question",
4465            "name": "Which Zoom multiple microphone system should I choose?",
4466            "acceptedAnswer": {
4467              "@type": "Answer",
4468              "text": "Choose the 4 microphone system for up to 6 people, the 8 microphone system for 7 to 11 people, the 12 microphone system for 12 to 20 people, and the 16 microphone system for 20 or more people."
4469            }
4470          },
4471          {
4472            "@type": "Question",
4473            "name": "Will these microphone systems work with Microsoft Teams and Webex?",
4474            "acceptedAnswer": {
4475              "@type": "Answer",
4476              "text": "Yes. Martel USB multiple microphone systems are designed for Zoom and hybrid meetings and are also strong fits for Microsoft Teams, Webex, and other video conferencing software that uses a computer USB microphone input."
4477            }
4478          },
4479          {
4480            "@type": "Question",
4481            "name": "Do Zoom multiple microphone systems need software?",
4482            "acceptedAnswer": {
4483              "@type": "Answer",
4484              "text": "No. These are plug-and-play USB microphone systems designed to connect to the computer without complicated software setup."
4485            }
4486          },
4487          {
4488            "@type": "Question",
4489            "name": "Why not use one microphone in the middle of the table?",
4490            "acceptedAnswer": {
4491              "@type": "Answer",
4492              "text": "One center microphone may not pick up everyone clearly in a larger room, especially when people sit farther away, speak softly, or sit around a long table. Multiple microphones spread around the table help reduce weak pickup and dead zones."
4493            }
4494          },
4495          {
4496            "@type": "Question",
4497            "name": "Do Martel Zoom multiple microphone systems include support?",
4498            "acceptedAnswer": {
4499              "@type": "Answer",
4500              "text": "Yes. Martel Zoom multiple microphone systems include real Martel support, and the product pages list a 30-day money-back guarantee and a 3-year warranty."
4501            }
4502          }
4503        ]
4504      }
4505    ]
4506  };
4507
4508  var script = document.createElement("script");
4509  script.id = schemaId;
4510  script.type = "application/ld+json";
4511  script.textContent = JSON.stringify(schema);
4512  document.head.appendChild(script);
4513})();
4514</script>
4514<script>
4515(function () {
4516  var path = window.location.pathname || "";
4517
4518  if (path.indexOf("/court-reporter-microphones/") === -1) {
4519    return;
4520  }
4521
4522  var schemaId = "martel-court-reporter-microphones-category-schema";
4523
4524  function removeOldCourtReporterMicSchemas() {
4525    var scripts = document.querySelectorAll('script[type="application/ld+json"]');
4526
4527    for (var i = 0; i < scripts.length; i++) {
4528      var script = scripts[i];
4529      var text = String(script.textContent || "");
4530
4531      if (script.id === schemaId) {
4532        if (script.parentNode) {
4533          script.parentNode.removeChild(script);
4534        }
4535        continue;
4536      }
4537
4538      if (
4539        text.indexOf("https://martelelectronics.com/court-reporter-microphones/#faq") !== -1 ||
4540        text.indexOf("https://martelelectronics.com/court-reporter-microphones/#itemlist") !== -1 ||
4541        text.indexOf("martel-court-reporter-microphones-category-schema") !== -1
4542      ) {
4543        if (script.parentNode) {
4544          script.parentNode.removeChild(script);
4545        }
4546      }
4547    }
4548  }
4549
4550  removeOldCourtReporterMicSchemas();
4551
4552  var schema = {
4553    "@context": "https://schema.org",
4554    "@graph": [
4555      {
4556        "@type": "BreadcrumbList",
4557        "@id": "https://martelelectronics.com/court-reporter-microphones/#breadcrumb",
4558        "itemListElement": [
4559          {
4560            "@type": "ListItem",
4561            "position": 1,
4562            "name": "Home",
4563            "item": "https://martelelectronics.com/"
4564          },
4565          {
4566            "@type": "ListItem",
4567            "position": 2,
4568            "name": "Court Reporter Microphones",
4569            "item": "https://martelelectronics.com/court-reporter-microphones/"
4570          }
4571        ]
4572      },
4573      {
4574        "@type": "CollectionPage",
4575        "@id": "https://martelelectronics.com/court-reporter-microphones/#webpage",
4576        "url": "https://martelelectronics.com/court-reporter-microphones/",
4577        "name": "Court Reporter Microphones | USB, Writer & Courtroom Mics",
4578        "description": "Shop court reporter microphones for laptops, steno writers, Zoom depositions, and courtroom recording. Compare USB, wireless, writer, and multi-mic options from Martel.",
4579        "isPartOf": {
4580          "@type": "WebSite",
4581          "@id": "https://martelelectronics.com/#website",
4582          "name": "Martel Electronics",
4583          "url": "https://martelelectronics.com/"
4584        },
4585        "breadcrumb": {
4586          "@id": "https://martelelectronics.com/court-reporter-microphones/#breadcrumb"
4587        },
4588        "mainEntity": {
4589          "@id": "https://martelelectronics.com/court-reporter-microphones/#itemlist"
4590        }
4591      },
4592      {
4593        "@type": "ItemList",
4594        "@id": "https://martelelectronics.com/court-reporter-microphones/#itemlist",
4595        "name": "Court Reporter Microphones",
4596        "description": "Compare Martel court reporter microphones for USB laptop recording, steno writers, Zoom depositions, wireless courtroom audio, and multi-microphone courtroom coverage.",
4597        "numberOfItems": 6,
4598        "itemListElement": [
4599          {
4600            "@type": "ListItem",
4601            "position": 1,
4602            "name": "HGM-2 Court Reporter Microphone with Battery Tester Built In",
4603            "url": "https://martelelectronics.com/hgm-2-court-reporter-microphone-w-battery-tester-built-in/"
4604          },
4605          {
4606            "@type": "ListItem",
4607            "position": 2,
4608            "name": "Elite Court Reporter USB Microphone HGM-USB",
4609            "url": "https://martelelectronics.com/elite-court-reporter-usb-microphone-hgm-usb/"
4610          },
4611          {
4612            "@type": "ListItem",
4613            "position": 3,
4614            "name": "Zoom Compatible Court Reporter Teleconference and Recording Kit",
4615            "url": "https://martelelectronics.com/zoom-compatible-court-reporter-teleconference-and-recording-kit-compatible-with-all-cat-programs/"
4616          },
4617          {
4618            "@type": "ListItem",
4619            "position": 4,
4620            "name": "Luminex Steno Writer Microphone Ultimate Edition Kit",
4621            "url": "https://martelelectronics.com/luminex-steno-writer-microphone-ultimate-edition-kit-no-battery-only-from-martel/"
4622          },
4623          {
4624            "@type": "ListItem",
4625            "position": 5,
4626            "name": "Elite Court Reporter USB 3 Microphone Package",
4627            "url": "https://martelelectronics.com/elite-court-reporter-usb-3-microphone-package/"
4628          },
4629          {
4630            "@type": "ListItem",
4631            "position": 6,
4632            "name": "Sidebar Wireless Microphone for Court Reporters",
4633            "url": "https://martelelectronics.com/sidebar-wireless-microphone-for-court-reporters/"
4634          }
4635        ]
4636      },
4637      {
4638        "@type": "FAQPage",
4639        "@id": "https://martelelectronics.com/court-reporter-microphones/#faq",
4640        "mainEntity": [
4641          {
4642            "@type": "Question",
4643            "name": "What is the best court reporter microphone?",
4644            "acceptedAnswer": {
4645              "@type": "Answer",
4646              "text": "The best court reporter microphone depends on your setup. HGMUSB is best for USB laptop recording, HGM-2 is a strong battery-powered option, Luminex Mic is for steno writer audio, and Elite USB 3 is best for multi-microphone courtroom coverage."
4647            }
4648          },
4649          {
4650            "@type": "Question",
4651            "name": "Do I need a USB court reporter microphone?",
4652            "acceptedAnswer": {
4653              "@type": "Answer",
4654              "text": "Choose a USB court reporter microphone when you want laptop recording, AudioSync, or software-based recording without relying on a battery-powered microphone connection."
4655            }
4656          },
4657          {
4658            "@type": "Question",
4659            "name": "Will a steno writer microphone work with my laptop?",
4660            "acceptedAnswer": {
4661              "@type": "Answer",
4662              "text": "Not always. Some microphones are designed for steno writer input, while USB microphones are designed for laptop input. Check compatibility before choosing."
4663            }
4664          },
4665          {
4666            "@type": "Question",
4667            "name": "Which microphone is best for Zoom depositions?",
4668            "acceptedAnswer": {
4669              "@type": "Answer",
4670              "text": "For Zoom depositions and remote court reporting jobs, start with the Zoom Court Reporter Kit or visit the Zoom Court Reporting category for remote audio setups."
4671            }
4672          },
4673          {
4674            "@type": "Question",
4675            "name": "Why would I need a multi-microphone package?",
4676            "acceptedAnswer": {
4677              "@type": "Answer",
4678              "text": "A multi-microphone package can help when you need broader courtroom or deposition room coverage instead of relying on one microphone in one location."
4679            }
4680          },
4681          {
4682            "@type": "Question",
4683            "name": "Should I keep a backup recording microphone?",
4684            "acceptedAnswer": {
4685              "@type": "Answer",
4686              "text": "Many reporters prefer backup audio options because transcript confidence depends on dependable audio. Choose a microphone that matches your software, writer, and backup recording workflow."
4687            }
4688          }
4689        ]
4690      }
4691    ]
4692  };
4693
4694  var script = document.createElement("script");
4695  script.id = schemaId;
4696  script.type = "application/ld+json";
4697  script.textContent = JSON.stringify(schema);
4698  document.head.appendChild(script);
4699})();
4700</script>
4700<script>
4701(function () {
4702  var path = window.location.pathname || "";
4703
4704  if (path.indexOf("/court-reporting-recorders-microphones-equipment/") === -1) {
4705    return;
4706  }
4707
4708  var schemaId = "martel-court-reporting-equipment-category-schema";
4709
4710  function removeOldCourtReportingEquipmentSchemas() {
4711    var scripts = document.querySelectorAll('script[type="application/ld+json"]');
4712
4713    for (var i = 0; i < scripts.length; i++) {
4714      var script = scripts[i];
4715      var text = String(script.textContent || "");
4716
4717      if (script.id === schemaId) {
4718        if (script.parentNode) {
4719          script.parentNode.removeChild(script);
4720        }
4721        continue;
4722      }
4723
4724      if (
4725        text.indexOf("https://martelelectronics.com/court-reporting-recorders-microphones-equipment/#faq") !== -1 ||
4726        text.indexOf("https://martelelectronics.com/court-reporting-recorders-microphones-equipment/#itemlist") !== -1 ||
4727        text.indexOf("martel-court-reporting-equipment-category-schema") !== -1
4728      ) {
4729        if (script.parentNode) {
4730          script.parentNode.removeChild(script);
4731        }
4732      }
4733    }
4734  }
4735
4736  removeOldCourtReportingEquipmentSchemas();
4737
4738  var schema = {
4739    "@context": "https://schema.org",
4740    "@graph": [
4741      {
4742        "@type": "BreadcrumbList",
4743        "@id": "https://martelelectronics.com/court-reporting-recorders-microphones-equipment/#breadcrumb",
4744        "itemListElement": [
4745          {
4746            "@type": "ListItem",
4747            "position": 1,
4748            "name": "Home",
4749            "item": "https://martelelectronics.com/"
4750          },
4751          {
4752            "@type": "ListItem",
4753            "position": 2,
4754            "name": "Court Reporting Recorders & Microphones",
4755            "item": "https://martelelectronics.com/court-reporting-recorders-microphones-equipment/"
4756          }
4757        ]
4758      },
4759      {
4760        "@type": "CollectionPage",
4761        "@id": "https://martelelectronics.com/court-reporting-recorders-microphones-equipment/#webpage",
4762        "url": "https://martelelectronics.com/court-reporting-recorders-microphones-equipment/",
4763        "name": "Court Reporting Equipment | Recorders, Microphones & Stenomasks",
4764        "description": "Shop court reporting equipment including court reporter microphones, digital recorders, stenomasks, Zoom court reporting kits, wireless microphones, and voice writing tools from Martel.",
4765        "isPartOf": {
4766          "@type": "WebSite",
4767          "@id": "https://martelelectronics.com/#website",
4768          "name": "Martel Electronics",
4769          "url": "https://martelelectronics.com/"
4770        },
4771        "breadcrumb": {
4772          "@id": "https://martelelectronics.com/court-reporting-recorders-microphones-equipment/#breadcrumb"
4773        },
4774        "mainEntity": {
4775          "@id": "https://martelelectronics.com/court-reporting-recorders-microphones-equipment/#itemlist"
4776        }
4777      },
4778      {
4779        "@type": "ItemList",
4780        "@id": "https://martelelectronics.com/court-reporting-recorders-microphones-equipment/#itemlist",
4781        "name": "Court Reporting Equipment Categories",
4782        "description": "Martel court reporting equipment categories including court reporter microphones, digital recorders, stenomasks, Zoom court reporting kits, wireless microphones, steno writer microphones, and reporting laptops.",
4783        "numberOfItems": 8,
4784        "itemListElement": [
4785          {
4786            "@type": "ListItem",
4787            "position": 1,
4788            "name": "Court Reporter Microphones",
4789            "url": "https://martelelectronics.com/court-reporter-microphones/"
4790          },
4791          {
4792            "@type": "ListItem",
4793            "position": 2,
4794            "name": "Court Reporter Digital Recorders",
4795            "url": "https://martelelectronics.com/court-reporter-digital-recorders/"
4796          },
4797          {
4798            "@type": "ListItem",
4799            "position": 3,
4800            "name": "Court Reporter Steno Writer Microphones",
4801            "url": "https://martelelectronics.com/court-reporter-steno-writer-microphones/"
4802          },
4803          {
4804            "@type": "ListItem",
4805            "position": 4,
4806            "name": "Stenomask Microphones",
4807            "url": "https://martelelectronics.com/stenomask-microphones/"
4808          },
4809          {
4810            "@type": "ListItem",
4811            "position": 5,
4812            "name": "Court Reporter Wireless Microphones",
4813            "url": "https://martelelectronics.com/court-reporter-wireless-microphones/"
4814          },
4815          {
4816            "@type": "ListItem",
4817            "position": 6,
4818            "name": "Zoom Court Reporting",
4819            "url": "https://martelelectronics.com/zoom-court-reporting/"
4820          },
4821          {
4822            "@type": "ListItem",
4823            "position": 7,
4824            "name": "Elite Court Reporter Laptop",
4825            "url": "https://martelelectronics.com/court-reporter-laptop/"
4826          },
4827          {
4828            "@type": "ListItem",
4829            "position": 8,
4830            "name": "Government Written Quotes",
4831            "url": "https://martelelectronics.com/written-quotes/"
4832          }
4833        ]
4834      },
4835      {
4836        "@type": "FAQPage",
4837        "@id": "https://martelelectronics.com/court-reporting-recorders-microphones-equipment/#faq",
4838        "mainEntity": [
4839          {
4840            "@type": "Question",
4841            "name": "What court reporting equipment should I buy first?",
4842            "acceptedAnswer": {
4843              "@type": "Answer",
4844              "text": "Start with the equipment that matches your primary workflow. Laptop reporters usually start with a USB microphone, voice writers start with a stenomask setup, and reporters needing backup audio often add a digital recorder."
4845            }
4846          },
4847          {
4848            "@type": "Question",
4849            "name": "Do court reporters need a separate digital recorder?",
4850            "acceptedAnswer": {
4851              "@type": "Answer",
4852              "text": "Many reporters prefer a dedicated digital recorder as a backup audio source because it records separately from the laptop, writer, or remote meeting software."
4853            }
4854          },
4855          {
4856            "@type": "Question",
4857            "name": "What is the difference between court reporter microphones and stenomasks?",
4858            "acceptedAnswer": {
4859              "@type": "Answer",
4860              "text": "Court reporter microphones capture room audio or software audio input. Stenomasks are used by voice writers who dictate into a mask for voice writing and speech recognition workflows."
4861            }
4862          },
4863          {
4864            "@type": "Question",
4865            "name": "Which equipment is best for Zoom court reporting?",
4866            "acceptedAnswer": {
4867              "@type": "Answer",
4868              "text": "For remote depositions and Zoom jobs, use the Zoom Court Reporting category or a Zoom-compatible court reporter teleconference and recording kit."
4869            }
4870          },
4871          {
4872            "@type": "Question",
4873            "name": "Should I choose a USB microphone or a writer microphone?",
4874            "acceptedAnswer": {
4875              "@type": "Answer",
4876              "text": "Choose a USB microphone for laptop recording and software audio input. Choose a compatible writer microphone when the audio needs to go directly into a steno writer."
4877            }
4878          },
4879          {
4880            "@type": "Question",
4881            "name": "Can Martel help me choose the right setup?",
4882            "acceptedAnswer": {
4883              "@type": "Answer",
4884              "text": "Yes. Martel specializes in court reporting audio equipment and can help match microphones, recorders, stenomasks, laptops, and Zoom kits to your reporting workflow."
4885            }
4886          }
4887        ]
4888      }
4889    ]
4890  };
4891
4892  var script = document.createElement("script");
4893  script.id = schemaId;
4894  script.type = "application/ld+json";
4895  script.textContent = JSON.stringify(schema);
4896  document.head.appendChild(script);
4897})();
4898</script>
4898<script>
4899(function () {
4900    if (document.getElementById('martel-5000-master-css')) {
4901        return;
4902    }
4903
4904    var css = `
4905.m5000-page{--blue:#08264a;--blue2:#0d3767;--blue3:#114983;--gold:#f2b84b;--gold2:#ffd36d;--text:#17212b;--muted:#5f6f7f;--soft:#f5f8fc;--line:#dbe5ef;--green:#1f7a4d;font-family:Arial,Helvetica,sans-serif;color:var(--text);line-height:1.62;max-width:1180px;margin:0 auto;font-size:16px}
4906.m5000-page *{box-sizing:border-box}
4907.m5000-page a{color:#0b4f93;text-decoration:underline;text-underline-offset:2px}
4908.m5000-hero{position:relative;overflow:hidden;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(250px,.7fr);gap:28px;align-items:center;border-radius:24px;background:radial-gradient(circle at top right,rgba(255,211,109,.22) 0,rgba(255,211,109,0) 32%),linear-gradient(135deg,#08264a 0%,#0d3767 56%,#114983 100%);border:1px solid rgba(242,184,75,.38);box-shadow:0 20px 46px rgba(8,38,74,.18);padding:36px 34px 34px;margin:0 0 28px;color:#fff}
4909.m5000-hero:before{content:"";position:absolute;left:0;top:0;bottom:0;width:7px;background:linear-gradient(to bottom,var(--gold),var(--gold2))}
4910.m5000-kicker{display:inline-flex;align-items:center;color:var(--gold2);background:rgba(255,255,255,.1);border:1px solid rgba(255,211,109,.44);border-radius:999px;padding:7px 13px;font-weight:900;font-size:13px;text-transform:uppercase;letter-spacing:.03em;margin:0 0 16px}
4911.m5000-hero h2{color:#fff;font-size:clamp(31px,4.2vw,50px);line-height:1.06;margin:0 0 15px;font-weight:900;letter-spacing:-.035em}
4912.m5000-hero p{color:#e8f1fb;max-width:900px;font-size:19px;line-height:1.62;margin:0 0 16px}
4913.m5000-hero strong{color:#fff}
4914.m5000-hero-badges{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}
4915.m5000-badge{display:inline-flex;align-items:center;min-height:40px;border-radius:999px;padding:9px 14px;background:#fff;color:var(--blue);font-size:14px;font-weight:900;box-shadow:0 10px 24px rgba(0,0,0,.13)}
4916.m5000-hero-image-card{position:relative;z-index:1;width:100%;max-width:320px;margin:0 auto;border-radius:22px;padding:18px;background:#fff;border:1px solid rgba(255,211,109,.38);box-shadow:0 20px 44px rgba(0,0,0,.24);text-align:center}
4917.m5000-hero-image-card img{display:block;width:auto;max-width:100%;max-height:250px;object-fit:contain;margin:0 auto}
4918.m5000-hero-image-card span{display:block;margin-top:12px;color:var(--blue);font-size:13px;font-weight:900}
4919.m5000-alert{border:1px solid rgba(242,184,75,.55);background:#fff8e8;color:#4b3507;border-radius:18px;padding:18px 20px;font-size:17px;line-height:1.55;font-weight:800;margin:0 0 26px}
4920.m5000-alert strong{color:var(--blue)}
4921.m5000-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:24px 0 30px}
4922.m5000-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:21px;box-shadow:0 12px 28px rgba(16,48,83,.08)}
4923.m5000-card h3{color:var(--blue);margin:0 0 9px;font-size:21px;line-height:1.24;font-weight:900}
4924.m5000-card p{color:var(--muted);margin:0;font-size:16px;line-height:1.56}
4925.m5000-section{background:#fff;border:1px solid var(--line);border-radius:22px;padding:28px;margin:26px 0;box-shadow:0 12px 30px rgba(16,48,83,.06)}
4926.m5000-section h2{color:var(--blue);font-size:clamp(26px,3vw,37px);line-height:1.15;margin:0 0 14px;font-weight:900;letter-spacing:-.02em}
4927.m5000-section h3{color:var(--blue);font-size:22px;line-height:1.24;margin:24px 0 10px;font-weight:900}
4928.m5000-section p{margin:0 0 15px;font-size:17px;line-height:1.62;color:var(--text)}
4929.m5000-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:0;margin:18px 0 0;list-style:none}
4930.m5000-list li{position:relative;min-height:54px;background:var(--soft);border:1px solid var(--line);border-radius:14px;padding:14px 15px 14px 44px;font-size:16px;line-height:1.48}
4931.m5000-list li:before{content:"✓";position:absolute;left:14px;top:14px;width:21px;height:21px;border-radius:50%;background:var(--green);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:900}
4932.m5000-chooser{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:18px}
4933.m5000-choice{border:1px solid var(--line);border-radius:18px;background:#f8fbff;padding:18px;box-shadow:0 10px 24px rgba(16,48,83,.06)}
4934.m5000-choice-current{background:#fff6de;border:2px solid var(--gold)}
4935.m5000-choice h3{margin:0 0 8px;color:var(--blue);font-size:20px;line-height:1.22;font-weight:900}
4936.m5000-choice p{margin:0 0 12px;color:var(--text);font-size:16px;line-height:1.5}
4937.m5000-choice a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;border-radius:999px;padding:10px 14px;background:var(--blue);color:#fff!important;text-decoration:none!important;font-weight:900;font-size:14px}
4938.m5000-choice-current a{background:var(--gold);color:#10253a!important}
4939.m5000-table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:0 12px 28px rgba(16,48,83,.06);margin:18px 0 0}
4940.m5000-table{width:100%;min-width:1120px;border-collapse:collapse;font-size:15.5px}
4941.m5000-table th{background:var(--blue);color:#fff;padding:16px 14px;text-align:left;vertical-align:top;border-right:1px solid rgba(255,255,255,.16);line-height:1.35;font-size:15px}
4942.m5000-table td{padding:16px 14px;border-top:1px solid var(--line);border-right:1px solid var(--line);vertical-align:top;color:var(--text);line-height:1.55}
4943.m5000-table tr:nth-child(even) td{background:#f8fbff}
4944.m5000-table strong{color:var(--blue)}
4945.m5000-table th a{color:#fff!important;text-decoration:none!important}
4946.m5000-table-product{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:8px;text-align:center}
4947.m5000-table-thumb-wrap{display:flex;align-items:center;justify-content:center;width:116px;height:92px;padding:7px;margin:0 auto 4px;border-radius:14px;background:#fff;border:1px solid rgba(255,255,255,.52);box-shadow:0 8px 18px rgba(0,0,0,.14)}
4948.m5000-table-thumb{display:block;width:auto;max-width:102px;max-height:78px;object-fit:contain;margin:0 auto}
4949.m5000-table-title{display:block;color:#fff;font-weight:900;line-height:1.25}
4950.m5000-table-price{display:inline-flex;align-items:center;justify-content:center;min-height:25px;border-radius:999px;padding:5px 11px;background:var(--gold);color:#10253a;font-size:13px;font-weight:900}
4951.m5000-current-head{background:radial-gradient(circle at top,rgba(255,211,109,.32),transparent 52%),var(--blue3)!important;box-shadow:inset 0 0 0 2px rgba(242,184,75,.75)}
4952.m5000-current-pill{display:inline-flex;align-items:center;justify-content:center;margin-top:2px;border-radius:999px;padding:4px 9px;background:#fff;color:var(--blue);font-size:11px;font-weight:900}
4953.m5000-chart-group td{background:#fff1c7!important;color:#10253a;font-weight:900;text-transform:uppercase;letter-spacing:.03em;font-size:13px}
4954.m5000-feature-label{display:block;color:var(--blue);font-weight:900;line-height:1.25}
4955.m5000-feature-note{display:block;margin-top:4px;color:var(--muted);font-size:13px;font-weight:500;line-height:1.35}
4956.m5000-special td{background:#fffdf7}
4957.m5000-special td:first-child{background:#fff6de;border-left:4px solid var(--gold)}
4958.m5000-check{color:var(--green);font-weight:900}
4959.m5000-no{color:#8b98a6;font-weight:700}
4960.m5000-current{background:#fff6de!important;font-weight:800}
4961.m5000-safe{display:block;margin-top:4px;color:#5f6f7f;font-size:13px;line-height:1.35}
4962.m5000-cta{border-radius:22px;background:radial-gradient(circle at top left,rgba(255,211,109,.22),transparent 34%),linear-gradient(135deg,var(--blue),var(--blue2));color:#fff;padding:28px;margin:26px 0;border:1px solid rgba(242,184,75,.35)}
4963.m5000-cta h2{color:#fff;margin:0 0 12px;font-size:31px;line-height:1.15;font-weight:900}
4964.m5000-cta p{color:#e8f1fb;margin:0 0 18px;font-size:17px;line-height:1.6;max-width:900px}
4965.m5000-buttons{display:flex;flex-wrap:wrap;gap:12px}
4966.m5000-button{display:inline-flex;align-items:center;justify-content:center;min-height:50px;border-radius:999px;padding:13px 19px;font-size:15.5px;font-weight:900;text-decoration:none!important}
4967.m5000-button-gold{background:var(--gold);color:#10253a!important}
4968.m5000-button-white{background:#fff;color:var(--blue)!important}
4969.m5000-button-blue{background:#0b4f93;color:#fff!important;border:1px solid rgba(255,255,255,.28)}
4970.m5000-faq{border-top:1px solid var(--line);padding-top:18px;margin-top:18px}
4971.m5000-faq h3{margin-top:0;font-size:20px}
4972.m5000-note{font-size:14px;color:var(--muted);margin-top:12px}
4973@media(max-width:980px){.m5000-hero{grid-template-columns:1fr}.m5000-grid-3,.m5000-chooser{grid-template-columns:repeat(2,minmax(0,1fr))}}
4974@media(max-width:680px){.m5000-hero,.m5000-section,.m5000-cta{padding:22px 18px;border-radius:18px}.m5000-hero p{font-size:17px}.m5000-grid-3,.m5000-chooser,.m5000-list{grid-template-columns:1fr}.m5000-button{width:100%}}
4975`;
4976
4977    var style = document.createElement('style');
4978    style.id = 'martel-5000-master-css';
4979    style.type = 'text/css';
4980    style.appendChild(document.createTextNode(css));
4981    document.head.appendChild(style);
4982})();
4983</script>
4983<script>
4984(function () {
4985    'use strict';
4986
4987    var css = `
4988        /* Martel Premium Product Section Spacing Controller */
4989        .productView-description .martel-premium-section,
4990        .productView-description .martel-premium-layout,
4991        .productView-description .martel-premium-hero,
4992        .productView-description .martel-product-premium,
4993        .productView-description [class*="martel-premium"] {
4994            max-width: 1180px !important;
4995            width: calc(100% - 48px) !important;
4996            margin-left: auto !important;
4997            margin-right: auto !important;
4998            box-sizing: border-box !important;
4999        }
5000
5001        .productView-description .martel-premium-section:first-child,
5002        .productView-description .martel-premium-layout:first-child,
5003        .productView-description .martel-premium-hero:first-child,
5004        .productView-description .martel-product-premium:first-child,
5005        .productView-description [class*="martel-premium"]:first-child {
5006            margin-top: 24px !important;
5007        }
5008
5009        .productView-description .martel-premium-section,
5010        .productView-description .martel-premium-layout,
5011        .productView-description .martel-premium-hero,
5012        .productView-description .martel-product-premium {
5013            margin-bottom: 28px !important;
5014        }
5015
5016        @media (max-width: 900px) {
5017            .productView-description .martel-premium-section,
5018            .productView-description .martel-premium-layout,
5019            .productView-description .martel-premium-hero,
5020            .productView-description .martel-product-premium,
5021            .productView-description [class*="martel-premium"] {
5022                width: calc(100% - 28px) !important;
5023                margin-left: auto !important;
5024                margin-right: auto !important;
5025            }
5026        }
5027
5028        @media (max-width: 600px) {
5029            .productView-description .martel-premium-section,
5030            .productView-description .martel-premium-layout,
5031            .productView-description .martel-premium-hero,
5032            .productView-description .martel-product-premium,
5033            .productView-description [class*="martel-premium"] {
5034                width: calc(100% - 20px) !important;
5035            }
5036        }
5037    `;
5038
5039    if (document.getElementById('martel-premium-spacing-controller')) {
5040        return;
5041    }
5042
5043    var style = document.createElement('style');
5044    style.id = 'martel-premium-spacing-controller';
5045    style.textContent = css;
5046    document.head.appendChild(style);
5047})();
5048</script>
5048<script>
5049(function () {
5050  'use strict';
5051
5052  function martelPremiumProductWidthFix() {
5053    var premiumSection = document.querySelector('.martel-premium-section');
5054
5055    if (!premiumSection) {
5056      return;
5057    }
5058
5059    if (document.getElementById('martel-premium-product-width-fix')) {
5060      return;
5061    }
5062
5063    document.body.classList.add('martel-premium-product-width-active');
5064
5065    var style = document.createElement('style');
5066    style.id = 'martel-premium-product-width-fix';
5067    style.type = 'text/css';
5068
5069    style.appendChild(document.createTextNode(
5070      '\n' +
5071      'body.martel-premium-product-width-active .productView-descriptionWrapper,\n' +
5072      'body.martel-premium-product-width-active .productView-description,\n' +
5073      'body.martel-premium-product-width-active .tabs,\n' +
5074      'body.martel-premium-product-width-active .tabs-contents,\n' +
5075      'body.martel-premium-product-width-active .tab-content,\n' +
5076      'body.martel-premium-product-width-active .productView-description-tabContent,\n' +
5077      'body.martel-premium-product-width-active [data-tab-content],\n' +
5078      'body.martel-premium-product-width-active .tab-content.is-active {\n' +
5079      '  width: 100% !important;\n' +
5080      '  max-width: none !important;\n' +
5081      '  box-sizing: border-box !important;\n' +
5082      '  overflow: visible !important;\n' +
5083      '}\n' +
5084      '\n' +
5085      'body.martel-premium-product-width-active .productView-description-tabContent,\n' +
5086      'body.martel-premium-product-width-active .tab-content,\n' +
5087      'body.martel-premium-product-width-active [data-tab-content] {\n' +
5088      '  padding-left: 0 !important;\n' +
5089      '  padding-right: 0 !important;\n' +
5090      '}\n' +
5091      '\n' +
5092      'body.martel-premium-product-width-active .productView-description-tabContent > div:first-child,\n' +
5093      'body.martel-premium-product-width-active .tab-content > div:first-child,\n' +
5094      'body.martel-premium-product-width-active [data-tab-content] > div:first-child,\n' +
5095      'body.martel-premium-product-width-active .martel-premium-section,\n' +
5096      'body.martel-premium-product-width-active .martel-premium-section > div {\n' +
5097      '  width: 100% !important;\n' +
5098      '  max-width: none !important;\n' +
5099      '  margin-left: 0 !important;\n' +
5100      '  margin-right: 0 !important;\n' +
5101      '  box-sizing: border-box !important;\n' +
5102      '}\n' +
5103      '\n' +
5104      'body.martel-premium-product-width-active .productView-descriptionWrapper table,\n' +
5105      'body.martel-premium-product-width-active .productView-description table,\n' +
5106      'body.martel-premium-product-width-active .tabs-contents table,\n' +
5107      'body.martel-premium-product-width-active .tab-content table,\n' +
5108      'body.martel-premium-product-width-active .productView-description-tabContent table,\n' +
5109      'body.martel-premium-product-width-active .martel-premium-section table {\n' +
5110      '  max-width: none !important;\n' +
5111      '}\n' +
5112      '\n' +
5113      'body.martel-premium-product-width-active .productView-descriptionWrapper td,\n' +
5114      'body.martel-premium-product-width-active .productView-description td,\n' +
5115      'body.martel-premium-product-width-active .tabs-contents td,\n' +
5116      'body.martel-premium-product-width-active .tab-content td,\n' +
5117      'body.martel-premium-product-width-active .productView-description-tabContent td,\n' +
5118      'body.martel-premium-product-width-active .martel-premium-section td {\n' +
5119      '  box-sizing: border-box !important;\n' +
5120      '}\n' +
5121      '\n' +
5122      '@media (min-width: 1000px) {\n' +
5123      '  body.martel-premium-product-width-active .productView-descriptionWrapper {\n' +
5124      '    width: 100vw !important;\n' +
5125      '    max-width: 100vw !important;\n' +
5126      '    margin-left: calc(50% - 50vw) !important;\n' +
5127      '    margin-right: calc(50% - 50vw) !important;\n' +
5128      '    padding-left: 28px !important;\n' +
5129      '    padding-right: 28px !important;\n' +
5130      '    box-sizing: border-box !important;\n' +
5131      '  }\n' +
5132      '\n' +
5133      '  body.martel-premium-product-width-active .productView-description,\n' +
5134      '  body.martel-premium-product-width-active .tabs,\n' +
5135      '  body.martel-premium-product-width-active .tabs-contents,\n' +
5136      '  body.martel-premium-product-width-active .tab-content,\n' +
5137      '  body.martel-premium-product-width-active .productView-description-tab
5137Content,\n' +
5138      '  body.martel-premium-product-width-active [data-tab-content],\n' +
5139      '  body.martel-premium-product-width-active .tab-content.is-active {\n' +
5140      '    max-width: 1540px !important;\n' +
5141      '    margin-left: auto !important;\n' +
5142      '    margin-right: auto !important;\n' +
5143      '    box-sizing: border-box !important;\n' +
5144      '  }\n' +
5145      '}\n' +
5146      '\n' +
5147      '@media (min-width: 1600px) {\n' +
5148      '  body.martel-premium-product-width-active .productView-description,\n' +
5149      '  body.martel-premium-product-width-active .tabs,\n' +
5150      '  body.martel-premium-product-width-active .tabs-contents,\n' +
5151      '  body.martel-premium-product-width-active .tab-content,\n' +
5152      '  body.martel-premium-product-width-active .productView-description-tabContent,\n' +
5153      '  body.martel-premium-product-width-active [data-tab-content],\n' +
5154      '  body.martel-premium-product-width-active .tab-content.is-active {\n' +
5155      '    max-width: 1620px !important;\n' +
5156      '  }\n' +
5157      '}\n' +
5158      '\n' +
5159      '@media (max-width: 999px) {\n' +
5160      '  body.martel-premium-product-width-active .productView-descriptionWrapper {\n' +
5161      '    width: 100% !important;\n' +
5162      '    max-width: 100% !important;\n' +
5163      '    margin-left: 0 !important;\n' +
5164      '    margin-right: 0 !important;\n' +
5165      '    padding-left: 8px !important;\n' +
5166      '    padding-right: 8px !important;\n' +
5167      '    box-sizing: border-box !important;\n' +
5168      '  }\n' +
5169      '\n' +
5170      '  body.martel-premium-product-width-active .productView-description,\n' +
5171      '  body.martel-premium-product-width-active .tabs,\n' +
5172      '  body.martel-premium-product-width-active .tabs-contents,\n' +
5173      '  body.martel-premium-product-width-active .tab-content,\n' +
5174      '  body.martel-premium-product-width-active .productView-description-tabContent,\n' +
5175      '  body.martel-premium-product-width-active [data-tab-content],\n' +
5176      '  body.martel-premium-product-width-active .tab-content.is-active {\n' +
5177      '    max-width: 100% !important;\n' +
5178      '  }\n' +
5179      '}\n'
5180    ));
5181
5182    document.head.appendChild(style);
5183  }
5184
5185  if (document.readyState === 'loading') {
5186    document.addEventListener('DOMContentLoaded', martelPremiumProductWidthFix);
5187  } else {
5188    martelPremiumProductWidthFix();
5189  }
5190})();
5191</script>
5191<script>
5192(function () {
5193  if (window.__martelRemoveBadCrucialsSchemaLoaded === true) {
5194    return;
5195  }
5196
5197  window.__martelRemoveBadCrucialsSchemaLoaded = true;
5198
5199  var RUN_DELAYS = [0, 250, 750, 1500, 3000, 5000, 8000, 12000];
5200
5201  function isProductPage() {
5202    var bodyClass = document.body ? String(document.body.className || "") : "";
5203
5204    return !!(
5205      document.querySelector(".productView") ||
5206      document.querySelector('input[name="product_id"]') ||
5207      bodyClass.indexOf("papaSupermarket-pageType--product") !== -1 ||
5208      bodyClass.indexOf("pageType--product") !== -1
5209    );
5210  }
5211
5212  function isCrucialsRichSnippet(script) {
5213    if (!script) {
5214      return false;
5215    }
5216
5217    var className = String(script.getAttribute("class") || script.className || "");
5218    var scriptId = String(script.id || "");
5219    var text = String(script.textContent || "");
5220
5221    if (className.indexOf("cr-rich-snippets") !== -1) {
5222      return true;
5223    }
5224
5225    if (scriptId.indexOf("cr-rich-snippets") !== -1) {
5226      return true;
5227    }
5228
5229    if (
5230      text.indexOf("cr-rich-snippets") !== -1 &&
5231      text.indexOf("Product") !== -1
5232    ) {
5233      return true;
5234    }
5235
5236    return false;
5237  }
5238
5239  function removeBadCrucialsSchema() {
5240    if (!isProductPage()) {
5241      return;
5242    }
5243
5244    var scripts = document.querySelectorAll('script[type="application/ld+json"]');
5245
5246    for (var i = 0; i < scripts.length; i++) {
5247      var script = scripts[i];
5248
5249      if (isCrucialsRichSnippet(script)) {
5250        if (script.parentNode) {
5251          script.parentNode.removeChild(script);
5252        }
5253      }
5254    }
5255  }
5256
5257  function scheduleRuns() {
5258    for (var i = 0; i < RUN_DELAYS.length; i++) {
5259      (function (delay) {
5260        setTimeout(removeBadCrucialsSchema, delay);
5261      })(RUN_DELAYS[i]);
5262    }
5263  }
5264
5265  function startObserver() {
5266    if (!window.MutationObserver || !document.documentElement) {
5267      return;
5268    }
5269
5270    var pending = false;
5271
5272    var observer = new MutationObserver(function () {
5273      if (pending) {
5274        return;
5275      }
5276
5277      pending = true;
5278
5279      setTimeout(function () {
5280        pending = false;
5281        removeBadCrucialsSchema();
5282      }, 250);
5283    });
5284
5285    observer.observe(document.documentElement, {
5286      childList: true,
5287      subtree: true
5288    });
5289  }
5290
5291  if (document.readyState === "loading") {
5292    document.addEventListener("DOMContentLoaded", function () {
5293      scheduleRuns();
5294      startObserver();
5295    });
5296  } else {
5297    scheduleRuns();
5298    startObserver();
5299  }
5300
5301  window.addEventListener("load", scheduleRuns);
5302  window.addEventListener("pageshow", scheduleRuns);
5303
5304  document.addEventListener("readystatechange", function () {
5305    if (document.readyState === "interactive" || document.readyState === "complete") {
5306      scheduleRuns();
5307    }
5308  });
5309})();
5310</script>
5310<script>
5311(function () {
5312  'use strict';
5313
5314  var MARTEL_HIDDEN_SEARCH_SKUS = [
5315    '119',
5316    '582',
5317    '1176',
5318    '827',
5319    '353',
5320    '840',
5321    '556',
5322    '461'
5323  ];
5324
5325  var MARTEL_HIDDEN_SEARCH_URL_PARTS = [];
5326  var HIDE_UNKNOWN_RESULT_CARDS_WHILE_CHECKING = true;
5327  var PRODUCT_CHECK_TIMEOUT_MS = 1600;
5328  var MAX_PRODUCT_PAGE_CHECKS_PER_LOAD = 120;
5329  var CACHE_PREFIX = 'martel_hidden_search_sku_url_';
5330  var HIDDEN_SKU_LOOKUP = {};
5331  var HIDDEN_URL_PARTS = [];
5332  var URL_CHECK_PROMISES = {};
5333  var productPageChecksThisLoad = 0;
5334  var scanTimer = null;
5335
5336  MARTEL_HIDDEN_SEARCH_SKUS.forEach(function (sku) {
5337    HIDDEN_SKU_LOOKUP[normalizeSku(sku)] = true;
5338  });
5339
5340  MARTEL_HIDDEN_SEARCH_URL_PARTS.forEach(function (urlPart) {
5341    var normalized = normalizeUrlPart(urlPart);
5342    if (normalized) {
5343      HIDDEN_URL_PARTS.push(normalized);
5344    }
5345  });
5346
5347  addFilterStyle();
5348
5349  function normalizeSku(value) {
5350    return String(value || '')
5351      .replace(/\u00a0/g, ' ')
5352      .replace(/^SKU\s*[:#-]?\s*/i, '')
5353      .trim()
5354      .toUpperCase();
5355  }
5356
5357  function isHiddenSku(value) {
5358    return !!HIDDEN_SKU_LOOKUP[normalizeSku(value)];
5359  }
5360
5361  function normalizeUrlPart(value) {
5362    return String(value || '')
5363      .replace(window.location.origin, '')
5364      .replace(/^https?:\/\/[^/]+/i, '')
5365      .trim()
5366      .toLowerCase();
5367  }
5368
5369  function safeSessionGet(key) {
5370    try {
5371      return window.sessionStorage.getItem(key);
5372    } catch (e) {
5373      return null;
5374    }
5375  }
5376
5377  function safeSessionSet(key, value) {
5378    try {
5379      window.sessionStorage.setItem(key, value);
5380    } catch (e) {}
5381  }
5382
5383  function addFilterStyle() {
5384    var style;
5385
5386    if (document.getElementById('martel-hide-search-sku-style')) {
5387      return;
5388    }
5389
5390    style = document.createElement('style');
5391    style.id = 'martel-hide-search-sku-style';
5392    style.textContent =
5393      '[data-martel-hidden-from-search="true"]{' +
5394      'display:none!important;' +
5395      'visibility:hidden!important;' +
5396      '}' +
5397      '[data-martel-search-card-checking="true"]{' +
5398      'opacity:0!important;' +
5399      'visibility:hidden!important;' +
5400      'pointer-events:none!important;' +
5401      '}';
5402
5403    (document.head || document.documentElement).appendChild(style);
5404  }
5405
5406  function isSearchPage() {
5407    var path = String(window.location.pathname || '').toLowerCase();
5408    var search = String(window.location.search || '').toLowerCase();
5409
5410    return (
5411      path.indexOf('/search.php') !== -1 ||
5412      path.indexOf('/search') !== -1 ||
5413      search.indexOf('search_query=') !== -1 ||
5414      search.indexOf('search=') !== -1
5415    );
5416  }
5417
5418  function textHasHiddenSkuLabel(text) {
5419    var cleanText;
5420    var skuLabelRegex;
5421    var match;
5422
5423    if (!text) {
5424      return false;
5425    }
5426
5427    cleanText = String(text).replace(/\u00a0/g, ' ');
5428    skuLabelRegex = /(?:SKU|Item\s*#|Product\s*Code|Part\s*Number)\s*[:#-]?\s*([A-Za-z0-9._-]+)/gi;
5429
5430    while ((match = skuLabelRegex.exec(cleanText)) !== null) {
5431      if (match[1] && isHiddenSku(match[1])) {
5432        return true;
5433      }
5434    }
5435
5436    return false;
5437  }
5438
5439  function directSkuFromElement(element) {
5440    var attrNames;
5441    var skuNodes;
5442
5443    if (!element || !element.getAttribute) {
5444      return null;
5445    }
5446
5447    attrNames = [
5448      'data-sku',
5449      'data-product-sku',
5450      'data-product-sku-value',
5451      'data-item-sku'
5452    ];
5453
5454    for (var i = 0; i < attrNames.length; i++) {
5455      var attrValue = element.getAttribute(attrNames[i]);
5456      if (attrValue && isHiddenSku(attrValue)) {
5457        return normalizeSku(attrValue);
5458      }
5459    }
5460
5461    skuNodes = element.querySelectorAll(
5462      '[itemprop="sku"], [data-sku], [data-product-sku], [data-product-sku-value], [data-item-sku]'
5463    );
5464
5465    for (var n = 0; n < skuNodes.length; n++) {
5466      var node = skuNodes[n];
5467
5468      for (var a = 0; a < attrNames.length; a++) {
5469        var nodeAttrValue = node.getAttribute(attrNames[a]);
5470        if (nodeAttrValue && isHiddenSku(nodeAttrValue)) {
5471          return normalizeSku(nodeAttrValue);
5472        }
5473      }
5474
5475      if (node.textContent && isHiddenSku(node.textContent)) {
5476        return normalizeSku(node.textContent);
5477      }
5478    }
5479
5480    return null;
5481  }
5482
5483  function findSkuInProductInfo(documentOrElement) {
5484    var directSku;
5485    var labelNodes;
5486
5487    if (!documentOrElement || !documentOrElement.querySelectorAll) {
5488      return null;
5489    }
5490
5491    directSku = directSkuFromElement(documentOrElement);
5492    if (directSku) {
5493      return directSku;
5494    }
5495
5496    labelNodes = documentOrElement.querySelectorAll(
5497      '.productView-info-name, .productView-info-title, dt, th, label, span, div'
5498    );
5499
5500    for (var i = 0; i < labelNodes.length; i++) {
5501      var label = labelNodes[i];
5502      var labelText = String(label.textContent || '').replace(/\u00a0/g, ' ').trim();
5503
5504      if (!/^(SKU|Item\s*#|Product\s*Code|Part\s*Number)\b/i.test(labelText)) {
5505        continue;
5506      }
5507
5508      var combinedText = labelText;
5509
5510      if (label.nextElementSibling) {
5511        combinedText += ' ' + String(label.nextElementSibling.textContent || '');
5512      }
5513
5514      if (label.parentElement) {
5515        combinedText += ' ' + String(label.parentElement.textContent || '');
5516      }
5517
5518      if (textHasHiddenSkuLabel(combinedText)) {
5519        var match = combinedText.match(/(?:SKU|Item\s*#|Product\s*Code|Part\s*Number)\s*[:#-]?\s*([A-Za-z0-9._-]+)/i);
5520        if (match && match[1]) {
5521          return normalizeSku(match[1]);
5522        }
5523      }
5524    }
5525
5526    return null;
5527  }
5528
5529  function objectHasHiddenSku(value) {
5530    var key;
5531
5532    if (!value) {
5533      return false;
5534    }
5535
5536    if (Array.isArray(value)) {
5537      for (var i = 0; i < value.length; i++) {
5538        if (objectHasHiddenSku(value[i])) {
5539          return true;
5540        }
5541      }
5542      return false;
5543    }
5544
5545    if (typeof value === 'object') {
5546      if (value.sku && isHiddenSku(value.sku)) {
5547        return true;
5548      }
5549
5550      for (key in value) {
5551        if (Object.prototype.hasOwnProperty.call(value, key)) {
5552          if (objectHasHiddenSku(value[key])) {
5553            return true;
5554          }
5555        }
5556      }
5557    }
5558
5559    return false;
5560  }
5561
5562  function htmlHasHiddenSku(html) {
5563    var parser;
5564    var doc;
5565    var jsonLdScripts;
5566    var skuJsonRegex;
5567    var match;
5568
5569    if (!html) {
5570      return false;
5571    }
5572
5573    parser = new DOMParser();
5574    doc = parser.parseFromString(html, 'text/html');
5575
5576    if (findSkuInProductInfo(doc)) {
5577      return true;
5578    }
5579
5580    jsonLdScripts = doc.querySelectorAll('script[type="application/ld+json"]');
5581
5582    for (var i = 0; i < jsonLdScripts.length; i++) {
5583      var jsonText = jsonLdScripts[i].textContent || '';
5584
5585      try {
5586        var json = JSON.parse(jsonText);
5587        if (objectHasHiddenSku(json)) {
5588          return true;
5589        }
5590      } catch (e) {}
5591    }
5592
5593    skuJsonRegex = /"sku"\s*:\s*"([^"]+)"/gi;
5594
5595    while ((match = skuJsonRegex.exec(html)) !== null) {
5596      if (match[1] && isHiddenSku(match[1])) {
5597        return true;
5598      }
5599    }
5600
5601    return textHasHiddenSkuLabel(doc.body ? doc.body.textContent : html);
5602  }
5603
5604  function normalizedUrlForCache(url) {
5605    try {
5606      var parsed = new URL(url, window.location.origin);
5607      return parsed.origin + parsed.pathname.replace(/\/$/, '');
5608    } catch (e) {
5609      return String(url || '');
5610    }
5611  }
5612
5613  function urlMatchesHiddenUrlPart(url) {
5614    var normalized;
5615
5616    if (!url || !HIDDEN_URL_PARTS.length) {
5617      return false;
5618    }
5619
5620    normalized = normalizeUrlPart(url);
5621
5622    for (var i = 0; i < HIDDEN_URL_PARTS.length; i++) {
5623      if (normalized.indexOf(HIDDEN_URL_PARTS[i]) !== -1) {
5624        return true;
5625      }
5626    }
5627
5628    return false;
5629  }
5630
5631  function isLikelyProductUrl(href) {
5632    var url;
5633    var path;
5634
5635    if (!href) {
5636      return false;
5637    }
5638
5639    try {
5640      url = new URL(href, window.location.origin);
5641    } catch (e) {
5642      return false;
5643    }
5644
5645    if (url.origin !== window.location.origin) {
5646      return false;
5647    }
5648
5649    path = String(url.pathname || '').toLowerCase();
5650
5651    if (
5652      path.indexOf('/search.php') !== -1 ||
5653      path.indexOf('/cart.php') !== -1 ||
5654      path.indexOf('/checkout') !== -1 ||
5655      path.indexOf('/login.php') !== -1 ||
5656      path.indexOf('/account.php') !== -1 ||
5657      path.indexOf('/wishlist.php') !== -1 ||
5658      path.indexOf('/compare') !== -1 ||
5659      path.indexOf('/contact') !== -1 ||
5660      path.indexOf('/giftcertificates') !== -1
5661    ) {
5662      return false;
5663    }
5664
5665    return true;
5666  }
5667
5668  function getProductLinkFromCard(card) {
5669    var selectors;
5670
5671    if (!card || !card.querySelectorAll) {
5672      return null;
5673    }
5674
5675    selectors = [
5676      '.card-title a[href]',
5677      '.product-title a[href]',
5678      '.quickSearchResult-title a[href]',
5679      '.quickSearchResults-title a[href]',
5680      '.search-result-title a[href]',
5681      'h3 a[href]',
5682      'h4 a[href]',
5683      'a[href]'
5684    ];
5685
5686    for (var i = 0; i < selectors.length; i++) {
5687      var links = card.querySelectorAll(selectors[i]);
5688
5689      for (var n = 0; n < links.length; n++) {
5690        var href = links[n].getAttribute('href');
5691        if (isLikelyProductUrl(href)) {
5692          return new URL(href, window.location.origin).href;
5693        }
5694      }
5695    }
5696
5697    return null;
5698  }
5699
5700  function promiseWithTimeout(promise, milliseconds) {
5701    var timeout;
5702
5703    return Promise.race([
5704      promise,
5705      new Promise(function (resolve) {
5706        timeout = window.setTimeout(function () {
5707          resolve(false);
5708        }, milliseconds);
5709      })
5710    ]).then(function (result) {
5711      if (timeout) {
5712        window.clearTimeout(timeout);
5713      }
5714      return result;
5715    }).catch(function () {
5716      if (timeout) {
5717        window.clearTimeout(timeout);
5718      }
5719      return false;
5720    });
5721  }
5722
5723  function productUrlShouldBeHidden(url) {
5724    var cacheKey = CACHE_PREFIX + normalizedUrlForCache(url);
5725    var cached = safeSessionGet(cacheKey);
5726    var fetchPromise;
5727
5728    if (urlMatchesHiddenUrlPart(url)) {
5729      safeSessionSet(cacheKey, '1');
5730      return Promise.resolve(true);
5731    }
5732
5733    if (cached === '1') {
5734      return Promise.resolve(true);
5735    }
5736
5737    if (cached === '0') {
5738      return Promise.resolve(false);
5739    }
5740
5741    if (URL_CHECK_PROMISES[cacheKey]) {
5742      return URL_CHECK_PROMISES[cacheKey];
5743    }
5744
5745    if (productPageChecksThisLoad >= MAX_PRODUCT_PAGE_CHECKS_PER_LOAD) {
5746      return Promise.resolve(false);
5747    }
5748
5749    productPageChecksThisLoad++;
5750
5751    fetchPromise = fetch(url, {
5752      method: 'GET',
5753      credentials: 'same-origin',
5754      cache: 'force-cache'
5755    })
5756      .then(function (response) {
5757        if (!response || !response.ok) {
5758          safeSessionSet(cacheKey, '0');
5759          return false;
5760        }
5761
5762        return response.text();
5763      })
5764      .then(function (html) {
5765        var shouldHide;
5766
5767        if (html === false) {
5768          return false;
5769        }
5770
5771        shouldHide = htmlHasHiddenSku(html);
5772        safeSessionSet(cacheKey, shouldHide ? '1' : '0');
5773        return shouldHide;
5774      })
5775      .catch(function () {
5776        safeSessionSet(cacheKey, '0');
5777        return false;
5778      });
5779
5780    URL_CHECK_PROMISES[cacheKey] = promiseWithTimeout(fetchPromise, PRODUCT_CHECK_TIMEOUT_MS);
5781    return URL_CHECK_PROMISES[cacheKey];
5782  }
5783
5784  function hideCard(card) {
5785    if (!card) {
5786      return;
5787    }
5788
5789    card.removeAttribute('data-martel-search-card-checking');
5790    card.setAttribute('data-martel-hidden-from-search', 'true');
5791    card.setAttribute('aria-hidden', 'true');
5792    card.style.display = 'none';
5793    card.style.visibility = 'hidden';
5794  }
5795
5796  function revealCard(card) {
5797    if (!card) {
5798      return;
5799    }
5800
5801    card.removeAttribute('data-martel-search-card-checking');
5802
5803    if (card.getAttribute('data-martel-hidden-from-search') !== 'true') {
5804      card.removeAttribute('aria-hidden');
5805      card.style.display = '';
5806      card.style.visibility = '';
5807    }
5808  }
5809
5810  function markCardChecking(card) {
5811    if (!card || !HIDE_UNKNOWN_RESULT_CARDS_WHILE_CHECKING) {
5812      return;
5813    }
5814
5815    if (card.getAttribute('data-martel-hidden-from-search') === 'true') {
5816      return;
5817    }
5818
5819    card.setAttribute('data-martel-search-card-checking', 'true');
5820  }
5821
5822  function unhideCardForRecheck(card) {
5823    if (!card) {
5824      return;
5825    }
5826
5827    card.removeAttribute('data-martel-hidden-from-search');
5828    card.removeAttribute('data-martel-search-card-checking');
5829    card.removeAttribute('aria-hidden');
5830    card.style.display = '';
5831    card.style.visibility = '';
5832  }
5833
5834  function getSearchContainers(root) {
5835    var containers = [];
5836    var seen = [];
5837    var selectors = [
5838      '.quickSearchResults',
5839      '.quick-search-results',
5840      '#quickSearchResults',
5841      '[data-quick-search-results]',
5842      '[data-search-quick]',
5843      '[data-test="quick-search-results"]'
5844    ];
5845
5846    if (isSearchPage()) {
5847      selectors = selectors.concat([
5848        'main',
5849        '.page-content',
5850        '.searchResults',
5851        '.search-results',
5852        '[data-search-results]',
5853        '.productGrid',
5854        '.productList',
5855        '.body'
5856      ]);
5857    }
5858
5859    function addContainer(container) {
5860      if (!container || seen.indexOf(container) !== -1) {
5861        return;
5862      }
5863
5864      seen.push(container);
5865      containers.push(container);
5866    }
5867
5868    for (var i = 0; i < selectors.length; i++) {
5869      if (root.matches && root.matches(selectors[i])) {
5870        addContainer(root);
5871      }
5872
5873      if (root.querySelectorAll) {
5874        var found = root.querySelectorAll(selectors[i]);
5875        for (var n = 0; n < found.length; n++) {
5876          addContainer(found[n]);
5877        }
5878      }
5879    }
5880
5881    return containers;
5882  }
5883
5884  function getCandidateCards(root) {
5885    var candidates = [];
5886    var seen = [];
5887
5888    function addCard(card) {
5889      if (!card || seen.indexOf(card) !== -1) {
5890        return;
5891      }
5892
5893      seen.push(card);
5894      candidates.push(card);
5895    }
5896
5897    function scanContainer(container) {
5898      var cardSelectors;
5899
5900      if (!container || !container.querySelectorAll) {
5901        return;
5902      }
5903
5904      cardSelectors = [
5905        '.productGrid > .product',
5906        '.productList > .product',
5907        '.quickSearchResults-item',
5908        '.quickSearchResult',
5909        '.searchResults-item',
5910        '.search-result',
5911        'article.product',
5912        'li.product',
5913        '.product',
5914        '.card'
5915      ];
5916
5917      for (var i = 0; i < cardSelectors.length; i++) {
5918        var found = container.querySelectorAll(cardSelectors[i]);
5919
5920        for (var n = 0; n < found.length; n++) {
5921          var item = found[n];
5922          var preferredParent =
5923            item.closest('.quickSearchResults-item') ||
5924            item.closest('.quickSearchResult') ||
5925            item.closest('.searchResults-item') ||
5926            item.closest('.search-result') ||
5927            item.closest('.product') ||
5928            item.closest('article') ||
5929            item.closest('li') ||
5930            item;
5931
5932          addCard(preferredParent);
5933        }
5934      }
5935    }
5936
5937    var containers = getSearchContainers(root || document);
5938
5939    for (var c = 0; c < containers.length; c++) {
5940      scanContainer(containers[c]);
5941    }
5942
5943    return candidates;
5944  }
5945
5946  function scanCard(card) {
5947    var productUrl;
5948    var lastCheckedUrl;
5949    var capturedUrl;
5950    var cacheKey;
5951    var cached;
5952
5953    if (!card) {
5954      return;
5955    }
5956
5957    productUrl = getProductLinkFromCard(card) || '';
5958    lastCheckedUrl = card.getAttribute('data-martel-last-checked-url') || '';
5959
5960    if (productUrl && lastCheckedUrl && productUrl !== lastCheckedUrl) {
5961      unhideCardForRecheck(card);
5962      card.removeAttribute('data-martel-search-check-pending');
5963    }
5964
5965    if (directSkuFromElement(card)) {
5966      card.setAttribute('data-martel-last-checked-url', productUrl || 'direct-sku');
5967      hideCard(card);
5968      return;
5969    }
5970
5971    if (textHasHiddenSkuLabel(card.textContent || '')) {
5972      card.setAttribute('data-martel-last-checked-url', productUrl || 'text-sku');
5973      hideCard(card);
5974      return;
5975    }
5976
5977    if (!productUrl) {
5978      revealCard(card);
5979      return;
5980    }
5981
5982    if (urlMatchesHiddenUrlPart(productUrl)) {
5983      card.setAttribute('data-martel-last-checked-url', productUrl);
5984      hideCard(card);
5985      return;
5986    }
5987
5988    cacheKey = CACHE_PREFIX + normalizedUrlForCache(productUrl);
5989    cached = safeSessionGet(cacheKey);
5990    card.setAttribute('data-martel-last-checked-url', productUrl);
5991
5992    if (cached === '1') {
5993      hideCard(card);
5994      return;
5995    }
5996
5997    if (cached === '0') {
5998      revealCard(card);
5999      return;
6000    }
6001
6002    if (card.getAttribute('data-martel-search-check-pending') === productUrl) {
6003      return;
6004    }
6005
6006    capturedUrl = productUrl;
6007    card.setAttribute('data-martel-search-check-pending', capturedUrl);
6008    markCardChecking(card);
6009
6010    productUrlShouldBeHidden(capturedUrl).then(function (shouldHide) {
6011      card.removeAttribute('data-martel-search-check-pending');
6012
6013      if ((getProductLinkFromCard(card) || '') !== capturedUrl) {
6014        revealCard(card);
6015        return;
6016      }
6017
6018      if (shouldHide) {
6019        hideCard(card);
6020      } else {
6021        revealCard(card);
6022      }
6023    }).catch(function () {
6024      card.removeAttribute('data-martel-search-check-pending');
6025      revealCard(card);
6026    });
6027  }
6028
6029  function scanSearchAreas(root) {
6030    var cards;
6031
6032    addFilterStyle();
6033    cards = getCandidateCards(root || document);
6034
6035    for (var i = 0; i < cards.length; i++) {
6036      scanCard(cards[i]);
6037    }
6038  }
6039
6040  function scheduleScan(root, delay) {
6041    if (scanTimer) {
6042      window.clearTimeout(scanTimer);
6043    }
6044
6045    scanTimer = window.setTimeout(function () {
6046      scanSearchAreas(root || document);
6047    }
6047, typeof delay === 'number' ? delay : 15);
6048  }
6049
6050  function isSearchInput(target) {
6051    return !!(
6052      target &&
6053      target.matches &&
6054      target.matches('input[name="search_query"], input[type="search"], .form-input')
6055    );
6056  }
6057
6058  function start() {
6059    addFilterStyle();
6060    scanSearchAreas(document);
6061
6062    window.setTimeout(function () {
6063      scanSearchAreas(document);
6064    }, 75);
6065
6066    window.setTimeout(function () {
6067      scanSearchAreas(document);
6068    }, 250);
6069
6070    window.setTimeout(function () {
6071      scanSearchAreas(document);
6072    }, 800);
6073
6074    window.setTimeout(function () {
6075      scanSearchAreas(document);
6076    }, 1800);
6077
6078    var observer = new MutationObserver(function (mutations) {
6079      for (var i = 0; i < mutations.length; i++) {
6080        if (mutations[i].addedNodes && mutations[i].addedNodes.length) {
6081          scanSearchAreas(document);
6082          scheduleScan(document, 20);
6083          break;
6084        }
6085      }
6086    });
6087
6088    observer.observe(document.documentElement, {
6089      childList: true,
6090      subtree: true
6091    });
6092
6093    document.addEventListener('keydown', function (event) {
6094      if (isSearchInput(event.target)) {
6095        scheduleScan(document, 1);
6096      }
6097    }, true);
6098
6099    document.addEventListener('keyup', function (event) {
6100      if (isSearchInput(event.target)) {
6101        scheduleScan(document, 1);
6102      }
6103    }, true);
6104
6105    document.addEventListener('input', function (event) {
6106      if (isSearchInput(event.target)) {
6107        scheduleScan(document, 1);
6108      }
6109    }, true);
6110
6111    document.addEventListener('search', function (event) {
6112      if (isSearchInput(event.target)) {
6113        scheduleScan(document, 1);
6114      }
6115    }, true);
6116  }
6117
6118  if (document.readyState === 'loading') {
6119    document.addEventListener('DOMContentLoaded', start);
6120  } else {
6121    start();
6122  }
6123})();
6124</script>
6124<script id="martel-crucials-waitlist-v5">
6125(function () {
6126  'use strict';
6127
6128  if (window.__martelCrucialsWaitlistV5) return;
6129  window.__martelCrucialsWaitlistV5 = true;
6130
6131  const VERSION = '5.3.0';
6132  const PREFIX = '[Martel Crucials Waitlist V5]';
6133  const RETRY_PARAM = 'martel_crucials_retry';
6134  const WAIT_MS = 7000;
6135  const POLL_MS = 250;
6136
6137  let poll = null;
6138  let pollPath = '';
6139  let observerDebounce = null;
6140  let instantLoadBound = false;
6141
6142  const log = (...args) => console.info(PREFIX, ...args);
6143  const warn = (...args) => console.warn(PREFIX, ...args);
6144
6145  function text(el) {
6146    return el && el.textContent
6147      ? el.textContent.replace(/\s+/g, ' ').trim().toLowerCase()
6148      : '';
6149  }
6150
6151  function productRoot() {
6152    return document.querySelector('.productView, [data-product-view]');
6153  }
6154
6155  function soldOut() {
6156    const root = productRoot();
6157    if (!root) return false;
6158
6159    const pageText = text(root);
6160
6161    /*
6162     * The pink Martel sold-out notice is the primary trigger.
6163     * The cosmetic Availability field does not control this helper.
6164     */
6165    if (
6166      pageText.includes('currently sold out') ||
6167      pageText.includes('join the priority waitlist') ||
6168      /\bout of stock\b/.test(pageText) ||
6169      /\btemporarily unavailable\b/.test(pageText)
6170    ) {
6171      return true;
6172    }
6173
6174    const button = root.querySelector(
6175      '#form-action-addToCart, ' +
6176      '[data-button-type="add-cart"], ' +
6177      'form[data-cart-item-add] button[type="submit"], ' +
6178      'form[data-cart-item-add] input[type="submit"]'
6179    );
6180
6181    return !!(
6182      button &&
6183      (
6184        button.disabled ||
6185        button.getAttribute('aria-disabled') === 'true' ||
6186        button.classList.contains('disabled') ||
6187        button.classList.contains('is-disabled')
6188      )
6189    );
6190  }
6191
6192  function isRealWaitlist(container) {
6193    if (!container || !container.querySelector('input[type="email"]')) {
6194      return false;
6195    }
6196
6197    /*
6198     * Never mistake the footer newsletter field for
6199     * the Crucials Back in Stock form.
6200     */
6201    if (
6202      container.closest(
6203        'footer, .footer, .footer-info, ' +
6204        '[data-newsletter-subscription-form], ' +
6205        'form[action*="subscribe"]'
6206      )
6207    ) {
6208      return false;
6209    }
6210
6211    const containerText = text(container);
6212
6213    /*
6214     * Reject huge ancestors such as .productView or body.
6215     * The old helper climbed too far up the page and generated
6216     * a false positive from unrelated waitlist wording.
6217     */
6218    if (!containerText || containerText.length > 1800) return false;
6219
6220    const submit = container.querySelector(
6221      'button[type="submit"], input[type="submit"], button'
6222    );
6223
6224    const submitText = submit
6225      ? String(submit.value || submit.textContent || '')
6226          .replace(/\s+/g, ' ')
6227          .trim()
6228          .toLowerCase()
6229      : '';
6230
6231    if (
6232      /priority restock/.test(submitText) ||
6233      /join.*waitlist/.test(submitText) ||
6234      /notify me/.test(submitText) ||
6235      /back in stock/.test(submitText)
6236    ) {
6237      return true;
6238    }
6239
6240    const signals = [
6241      /priority waitlist/.test(containerText),
6242      /available again/.test(containerText),
6243      /back in stock/.test(containerText),
6244      /agree to receive your newsletter/.test(containerText),
6245      /restock access/.test(containerText)
6246    ].filter(Boolean).length;
6247
6248    return signals >= 2;
6249  }
6250
6251  function findWaitlist() {
6252    const root = productRoot();
6253    if (!root) return null;
6254
6255    /*
6256     * Only inspect email fields inside the product panel.
6257     * Footer, popup, and general newsletter fields are excluded.
6258     */
6259    const inputs = root.querySelectorAll('input[type="email"]');
6260
6261    for (const input of inputs) {
6262      let node = input.closest('form') || input.parentElement;
6263
6264      for (let depth = 0; node && depth < 7; depth += 1) {
6265        if (!root.contains(node)) break;
6266
6267        if (isRealWaitlist(node)) {
6268          return node;
6269        }
6270
6271        if (node === root) break;
6272
6273        node = node.parentElement;
6274      }
6275    }
6276
6277    return null;
6278  }
6279
6280  function reveal(widget) {
6281    const root = productRoot();
6282    let node = widget;
6283
6284    /*
6285     * If Crucials created the correct form but one of its
6286     * wrappers remained hidden, reveal those wrappers.
6287     */
6288    for (let depth = 0; root && node && depth < 4; depth += 1) {
6289      if (!root.contains(node)) break;
6290
6291      node.hidden = false;
6292      node.removeAttribute('aria-hidden');
6293      node.style.removeProperty('visibility');
6294      node.style.removeProperty('opacity');
6295
6296      if (getComputedStyle(node).display === 'none') {
6297        node.style.setProperty('display', 'block', 'important');
6298      }
6299
6300      if (node === root) break;
6301
6302      node = node.parentElement;
6303    }
6304
6305    widget.setAttribute('data-martel-crucials-ready', 'true');
6306  }
6307
6308  function retryKey() {
6309    return 'martel-crucials-v5:' +
6310      location.pathname.replace(/\/+$/, '').toLowerCase();
6311  }
6312
6313  function readRetry() {
6314    try {
6315      return parseInt(sessionStorage.getItem(retryKey()), 10) || 0;
6316    } catch (_) {
6317      return 0;
6318    }
6319  }
6320
6321  function writeRetry(value) {
6322    try {
6323      sessionStorage.setItem(retryKey(), String(value));
6324    } catch (_) {
6325      /*
6326       * The retry URL parameter still prevents a reload loop
6327       * when session storage is unavailable.
6328       */
6329    }
6330  }
6331
6332  function clearRetry() {
6333    let url;
6334
6335    try {
6336      sessionStorage.removeItem(retryKey());
6337      url = new URL(location.href);
6338    } catch (_) {
6339      return;
6340    }
6341
6342    /*
6343     * Remove the temporary retry marker once the genuine
6344     * Crucials form has loaded successfully.
6345     */
6346    if (url.searchParams.has(RETRY_PARAM) && history.replaceState) {
6347      url.searchParams.delete(RETRY_PARAM);
6348
6349      history.replaceState(
6350        history.state,
6351        document.title,
6352        url.pathname + url.search + url.hash
6353      );
6354    }
6355  }
6356
6357  function formReady(widget, reason) {
6358    reveal(widget);
6359    clearRetry();
6360
6361    log(
6362      'Real Crucials waitlist loaded.',
6363      reason,
6364      'Version:',
6365      VERSION
6366    );
6367  }
6368
6369  function reloadOnce(reason) {
6370    let url;
6371
6372    try {
6373      url = new URL(location.href);
6374    } catch (error) {
6375      warn('Could not build the retry URL.', error);
6376      return;
6377    }
6378
6379    /*
6380     * A retry marker already in the URL means the single
6381     * permitted recovery load has already occurred.
6382     */
6383    if (url.searchParams.has(RETRY_PARAM)) {
6384      warn(
6385        'The form is still missing after the one full-page retry. ' +
6386        'No reload loop will occur.',
6387        reason
6388      );
6389
6390      return;
6391    }
6392
6393    const now = Date.now();
6394    const previous = readRetry();
6395
6396    /*
6397     * Do not repeat a recovery load for the same product
6398     * within five minutes in the current browser tab.
6399     */
6400    if (previous && now - previous < 5 * 60 * 1000) {
6401      warn(
6402        'A retry was already attempted recently.',
6403        reason
6404      );
6405
6406      return;
6407    }
6408
6409    writeRetry(now);
6410
6411    /*
6412     * The timestamp creates a fresh URL and forces a real
6413     * product-page render so the original Crucials script
6414     * receives the current product data.
6415     */
6416    url.searchParams.set(RETRY_PARAM, String(now));
6417
6418    warn(
6419      'Sold-out page found without the Crucials form. ' +
6420      'Performing one clean full-page load.',
6421      reason
6422    );
6423
6424    location.replace(url.href);
6425  }
6426
6427  function stopPoll() {
6428    if (poll) {
6429      clearInterval(poll);
6430    }
6431
6432    poll = null;
6433  }
6434
6435  function check(reason) {
6436    const path = location.pathname;
6437
6438    /*
6439     * Keep an existing check running instead of resetting its
6440     * seven-second timer whenever another widget changes the DOM.
6441     */
6442    if (poll && pollPath === path) return;
6443
6444    stopPoll();
6445
6446    if (!productRoot() || !soldOut()) return;
6447
6448    const existing = findWaitlist();
6449
6450    if (existing) {
6451      formReady(existing, reason);
6452      return;
6453    }
6454
6455    pollPath = path;
6456    const started = Date.now();
6457
6458    poll = setInterval(() => {
6459      if (!productRoot() || !soldOut()) {
6460        stopPoll();
6461        return;
6462      }
6463
6464      const widget = findWaitlist();
6465
6466      if (widget) {
6467        stopPoll();
6468        formReady(widget, reason);
6469        return;
6470      }
6471
6472      if (Date.now() - started >= WAIT_MS) {
6473        stopPoll();
6474        reloadOnce(reason);
6475      }
6476    }, POLL_MS);
6477  }
6478
6479  function later(reason, delay = 0) {
6480    setTimeout(() => check(reason), delay);
6481  }
6482
6483  function bindInstantLoad() {
6484    const $ =
6485      window.jQuerySupermarket ||
6486      window.chiarajQuery ||
6487      window.jQueryTheme ||
6488      window.jQuery;
6489
6490    if (
6491      instantLoadBound ||
6492      !$ ||
6493      !$.fn ||
6494      !document.body
6495    ) {
6496      return false;
6497    }
6498
6499    /*
6500     * PapaThemes' documented event after an Instant Load
6501     * category-to-product or product-to-product navigation.
6502     */
6503    $(document.body)
6504      .off('loaded.instantload.martelCrucialsV5')
6505      .on('loaded.instantload.martelCrucialsV5', () => {
6506        pollPath = '';
6507
6508        later(
6509          'PapaThemes loaded.instantload',
6510          500
6511        );
6512      });
6513
6514    instantLoadBound = true;
6515
6516    return true;
6517  }
6518
6519  function start() {
6520    /*
6521     * PapaThemes may not have exposed its jQuery instance yet
6522     * when Script Manager first runs, so retry the event binding
6523     * briefly without blocking the page.
6524     */
6525    if (!bindInstantLoad()) {
6526      let attempts = 0;
6527
6528      const bindTimer = setInterval(() => {
6529        attempts += 1;
6530
6531        if (
6532          bindInstantLoad() ||
6533          attempts >= 40
6534        ) {
6535          clearInterval(bindTimer);
6536        }
6537      }, 250);
6538    }
6539
6540    /*
6541     * Detect both the Crucials form being inserted and
6542     * PapaThemes replacing the product panel through AJAX.
6543     */
6544    if (window.MutationObserver && document.body) {
6545      new MutationObserver(() => {
6546        clearTimeout(observerDebounce);
6547
6548        observerDebounce = setTimeout(() => {
6549          const widget = findWaitlist();
6550
6551          if (widget) {
6552            stopPoll();
6553
6554            formReady(
6555              widget,
6556              'product DOM update'
6557            );
6558
6559            return;
6560          }
6561
6562          if (!poll && soldOut()) {
6563            check('product DOM update');
6564          }
6565        }, 350);
6566      }).observe(document.body, {
6567        childList: true,
6568        subtree: true
6569      });
6570    }
6571
6572    later(
6573      'initial product-page load',
6574      600
6575    );
6576
6577    addEventListener('pageshow', () => {
6578      pollPath = '';
6579
6580      later(
6581        'browser pageshow',
6582        500
6583      );
6584    });
6585
6586    log(
6587      'Helper active; original read-only Crucials script untouched.',
6588      'Version:',
6589      VERSION
6590    );
6591  }
6592
6593  /*
6594   * Optional console controls for testing:
6595   *
6596   * MartelCrucialsWaitlistV5.checkNow()
6597   * MartelCrucialsWaitlistV5.findWidget()
6598   * MartelCrucialsWaitlistV5.isSoldOutPage()
6599   */
6600  window.MartelCrucialsWaitlistV5 = {
6601    version: VERSION,
6602
6603    checkNow: () => {
6604      pollPath = '';
6605      check('manual checkNow');
6606    },
6607
6608    findWidget: findWaitlist,
6609
6610    isSoldOutPage: soldOut
6611  };
6612
6613  if (document.readyState === 'loading') {
6614    document.addEventListener(
6615      'DOMContentLoaded',
6616      start,
6617      { once: true }
6618    );
6619  } else {
6620    start();
6621  }
6622}());
6623</script>
6623<script>
6624(function () {
6625    'use strict';
6626
6627    /*
6628    ============================================================
6629    MARTEL ELECTRONICS
6630    BIGCOMMERCE VERIFIED CART STATUS — FINAL MASTER
6631    ============================================================
6632
6633    100% BIGCOMMERCE
6634    NO CLOUD
6635    NO EXTERNAL SERVER
6636    NO API TOKEN
6637    NO FAKE NUMBERS
6638    NO EXTERNAL JAVASCRIPT
6639    ============================================================
6640    */
6641
6642    const CONFIG = {
6643
6644        enabled: true,
6645
6646        /*
6647        Leave empty [] to run on ALL product pages.
6648
6649        To limit this later to certain products, enter the
6650        BigCommerce PRODUCT IDs, for example:
6651
6652        targetProductIds: [123, 456]
6653
6654        IMPORTANT:
6655        These are BigCommerce Product IDs, not SKUs.
6656        */
6657        targetProductIds: [],
6658
6659        singleMessage:
6660            '✓ This item is already in your cart.',
6661
6662        multipleMessage: function (quantity) {
6663            return '✓ You currently have ' +
6664                quantity +
6665                ' of this item in your cart.';
6666        },
6667
6668        background: '#f2fff5',
6669        border: '#16843b',
6670        text: '#12652e',
6671
6672        /*
6673        Leave FALSE on the live store.
6674        Change to true only for troubleshooting.
6675        */
6676        debug: false
6677    };
6678
6679
6680    const BOX_ID = 'martelVerifiedCartStatus';
6681
6682    let refreshNumber = 0;
6683
6684
6685    /* ========================================================
6686       DEBUG
6687       ======================================================== */
6688
6689    function log() {
6690
6691        if (!CONFIG.debug || !window.console) {
6692            return;
6693        }
6694
6695        const args =
6696            Array.prototype.slice.call(arguments);
6697
6698        args.unshift('[Martel Cart Status]');
6699
6700        console.log.apply(console, args);
6701    }
6702
6703
6704    /* ========================================================
6705       FIND BIGCOMMERCE PRODUCT FORM
6706       ======================================================== */
6707
6708    function getProductForm() {
6709
6710        return document.querySelector(
6711            'form[data-cart-item-add]'
6712        );
6713    }
6714
6715
6716    /* ========================================================
6717       GET BIGCOMMERCE PRODUCT ID
6718       ======================================================== */
6719
6720    function getCurrentProductId() {
6721
6722        const form = getProductForm();
6723
6724        if (!form) {
6725            return null;
6726        }
6727
6728
6729        /*
6730        PRIMARY METHOD
6731
6732        Current BigCommerce Cornerstone product forms contain:
6733
6734        <input type="hidden"
6735               name="product_id"
6736               value="PRODUCT-ID">
6737        */
6738
6739        const input =
6740            form.querySelector(
6741                'input[name="product_id"]'
6742            );
6743
6744        if (input) {
6745
6746            const productId =
6747                parseInt(input.value, 10);
6748
6749            if (
6750                !Number.isNaN(productId) &&
6751                productId > 0
6752            ) {
6753                return productId;
6754            }
6755        }
6756
6757
6758        /*
6759        SAFE FALLBACK
6760
6761        Standard Cornerstone also places the product ID
6762        on .productView as data-entity-id.
6763        */
6764
6765        const productView =
6766            document.querySelector(
6767                '.productView[data-entity-id]'
6768            );
6769
6770        if (productView) {
6771
6772            const fallbackId =
6773                parseInt(
6774                    productView.getAttribute(
6775                        'data-entity-id'
6776                    ),
6777                    10
6778                );
6779
6780            if (
6781                !Number.isNaN(fallbackId) &&
6782                fallbackId > 0
6783            ) {
6784                return fallbackId;
6785            }
6786        }
6787
6788
6789        return null;
6790    }
6791
6792
6793    /* ========================================================
6794       PRODUCT TARGETING
6795       ======================================================== */
6796
6797    function isTargetProduct(productId) {
6798
6799        if (
6800            !Array.isArray(
6801                CONFIG.targetProductIds
6802            ) ||
6803            CONFIG.targetProductIds.length === 0
6804        ) {
6805            return true;
6806        }
6807
6808
6809        return CONFIG.targetProductIds.some(
6810            function (id) {
6811
6812                return Number(id) === productId;
6813
6814            }
6815        );
6816    }
6817
6818
6819    /* ========================================================
6820       MESSAGE BOX
6821       ======================================================== */
6822
6823    function getMessageBox() {
6824
6825        return document.getElementById(
6826            BOX_ID
6827        );
6828    }
6829
6830
6831    function removeMessage() {
6832
6833        const box = getMessageBox();
6834
6835        if (box) {
6836            box.remove();
6837        }
6838    }
6839
6840
6841    function createMessageBox() {
6842
6843        let box = getMessageBox();
6844
6845        if (box) {
6846            return box;
6847        }
6848
6849
6850        box = document.createElement('div');
6851
6852        box.id = BOX_ID;
6853
6854        box.setAttribute(
6855            'role',
6856            'status'
6857        );
6858
6859        box.setAttribute(
6860            'aria-live',
6861            'polite'
6862        );
6863
6864
6865        box.style.cssText = [
6866
6867            'display:none',
6868
6869            'box-sizing:border-box',
6870
6871            'width:100%',
6872
6873            'margin:10px 0 12px',
6874
6875            'padding:11px 14px',
6876
6877            'border:1px solid ' +
6878                CONFIG.border,
6879
6880            'border-radius:7px',
6881
6882            'background:' +
6883                CONFIG.background,
6884
6885            'color:' +
6886                CONFIG.text,
6887
6888            'font-family:Arial,Helvetica,sans-serif',
6889
6890            'font-size:15px',
6891
6892            'font-weight:700',
6893
6894            'line-height:1.35',
6895
6896            'text-align:center'
6897
6898        ].join(';');
6899
6900
6901        return box;
6902    }
6903
6904
6905    /* ========================================================
6906       PLACE MESSAGE UNDER ADD TO CART AREA
6907       ======================================================== */
6908
6909    function placeMessage(box) {
6910
6911        const form =
6912            getProductForm();
6913
6914        if (!form) {
6915            return false;
6916        }
6917
6918
6919        const button =
6920            form.querySelector(
6921                '#form-action-addToCart'
6922            );
6923
6924
6925        /*
6926        Use BigCommerce's standard Add to Cart wrapper first.
6927
6928        This avoids disturbing the actual Add to Cart button,
6929        wallet buttons, PayPal buttons, etc.
6930        */
6931
6932        const anchor =
6933
6934            form.querySelector(
6935                '#add-to-cart-wrapper'
6936            ) ||
6937
6938            (
6939                button &&
6940                button.closest(
6941                    '.add-to-cart-buttons'
6942                )
6943            ) ||
6944
6945            (
6946                button &&
6947                button.closest(
6948                    '.form-action'
6949                )
6950            );
6951
6952
6953        if (anchor) {
6954
6955            if (
6956                box.parentNode !==
6957                    anchor.parentNode ||
6958
6959                box.previousElementSibling !==
6960                    anchor
6961            ) {
6962
6963                anchor.insertAdjacentElement(
6964                    'afterend',
6965                    box
6966                );
6967            }
6968
6969            return true;
6970        }
6971
6972
6973        /*
6974        Last-resort safe fallback.
6975        */
6976
6977        if (box.parentNode !== form) {
6978
6979            form.appendChild(box);
6980        }
6981
6982        return true;
6983    }
6984
6985
6986    /* ========================================================
6987       DISPLAY MESSAGE
6988       ======================================================== */
6989
6990    function showMessage(quantity) {
6991
6992        const box =
6993            createMessageBox();
6994
6995
6996        if (!placeMessage(box)) {
6997            return;
6998        }
6999
7000
7001        box.textContent =
7002
7003            quantity > 1
7004
7005                ? CONFIG.multipleMessage(
7006                    quantity
7007                )
7008
7009                : CONFIG.singleMessage;
7010
7011
7012        box.style.display = 'block';
7013    }
7014
7015
7016    /* ========================================================
7017       BIGCOMMERCE CART LINE ITEMS
7018       ======================================================== */
7019
7020    function getAllProductLineItems(cart) {
7021
7022        if (
7023            !cart ||
7024            !cart.lineItems
7025        ) {
7026            return [];
7027        }
7028
7029
7030        const physical =
7031            Array.isArray(
7032                cart.lineItems.physicalItems
7033            )
7034                ? cart.lineItems.physicalItems
7035                : [];
7036
7037
7038        const digital =
7039            Array.isArray(
7040                cart.lineItems.digitalItems
7041            )
7042                ? cart.lineItems.digitalItems
7043                : [];
7044
7045
7046        return physical.concat(
7047            digital
7048        );
7049    }
7050
7051
7052    /* ========================================================
7053       FIND QUANTITY OF CURRENT PRODUCT
7054       ======================================================== */
7055
7056    function quantityForProduct(
7057        carts,
7058        productId
7059    ) {
7060
7061        let quantity = 0;
7062
7063
7064        (
7065            Array.isArray(carts)
7066                ? carts
7067                : []
7068        ).forEach(
7069            function (cart) {
7070
7071                getAllProductLineItems(
7072                    cart
7073                ).forEach(
7074                    function (item) {
7075
7076                        if (
7077                            Number(
7078                                item.productId
7079                            ) === productId
7080                        ) {
7081
7082                            quantity +=
7083                                Number(
7084                                    item.quantity
7085                                ) || 0;
7086                        }
7087
7088                    }
7089                );
7090
7091            }
7092        );
7093
7094
7095        return quantity;
7096    }
7097
7098
7099    /* ========================================================
7100       GET CURRENT SHOPPER'S REAL BIGCOMMERCE CART
7101       ======================================================== */
7102
7103    async function getBigCommerceCarts() {
7104
7105        const response =
7106            await fetch(
7107                '/api/storefront/carts',
7108                {
7109                    method: 'GET',
7110
7111                    credentials:
7112                        'same-origin',
7113
7114                    cache:
7115                        'no-store',
7116
7117                    headers: {
7118                        'Accept':
7119                            'application/json'
7120                    }
7121                }
7122            );
7123
7124
7125        if (!response.ok) {
7126
7127            throw new Error(
7128                'BigCommerce cart request failed: ' +
7129                response.status
7130            );
7131        }
7132
7133
7134        const data =
7135            await response.json();
7136
7137
7138        return Array.isArray(data)
7139            ? data
7140            : [];
7141    }
7142
7143
7144    /* ========================================================
7145       REFRESH DISPLAY
7146       ======================================================== */
7147
7148    async function refreshCartStatus() {
7149
7150        const thisRefresh =
7151            ++refreshNumber;
7152
7153
7154        if (!CONFIG.enabled) {
7155
7156            removeMessage();
7157
7158            return;
7159        }
7160
7161
7162        const productId =
7163            getCurrentProductId();
7164
7165
7166        /*
7167        If this isn't a BigCommerce product page,
7168        stop immediately.
7169        */
7170
7171        if (
7172            !productId ||
7173            !isTargetProduct(productId)
7174        ) {
7175
7176            removeMessage();
7177
7178            return;
7179        }
7180
7181
7182        try {
7183
7184            const carts =
7185                await getBigCommerceCarts();
7186
7187
7188            /*
7189            If another refresh started while this one
7190            was loading, ignore the older result.
7191            */
7192
7193            if (
7194                thisRefresh !==
7195                refreshNumber
7196            ) {
7197                return;
7198            }
7199
7200
7201            const quantity =
7202                quantityForProduct(
7203                    carts,
7204                    productId
7205                );
7206
7207
7208            if (quantity > 0) {
7209
7210                showMessage(
7211                    quantity
7212                );
7213
7214
7215                log(
7216                    'Verified product',
7217                    productId,
7218                    'quantity',
7219                    quantity
7220                );
7221
7222            } else {
7223
7224                removeMessage();
7225            }
7226
7227
7228        } catch (error) {
7229
7230            /*
7231            FAIL SAFE
7232
7233            If BigCommerce's cart endpoint is ever unavailable,
7234            show nothing.
7235
7236            Never interfere with shopping or checkout.
7237            */
7238
7239            if (
7240                thisRefresh !==
7241                refreshNumber
7242            ) {
7243                return;
7244            }
7245
7246
7247            removeMessage();
7248
7249            log(error);
7250        }
7251    }
7252
7253
7254    /* ========================================================
7255       AFTER ADD TO CART
7256       ======================================================== */
7257
7258    function scheduleRefreshes() {
7259
7260        /*
7261        These are fallbacks.
7262
7263        They are NOT permanent polling.
7264        They run only after the product form is submitted.
7265        */
7266
7267        window.setTimeout(
7268            refreshCartStatus,
7269            700
7270        );
7271
7272        window.setTimeout(
7273            refreshCartStatus,
7274            1600
7275        );
7276
7277        window.setTimeout(
7278            refreshCartStatus,
7279            3000
7280        );
7281    }
7282
7283
7284    /* ========================================================
7285       INITIALIZE
7286       ======================================================== */
7287
7288    function initialize() {
7289
7290        if (!CONFIG.enabled) {
7291            return;
7292        }
7293
7294
7295        /*
7296        Do absolutely nothing unless this page has
7297        BigCommerce's product Add to Cart form.
7298        */
7299
7300        if (!getProductForm()) {
7301            return;
7302        }
7303
7304
7305        /*
7306        Check cart when product page loads.
7307        */
7308
7309        refreshCartStatus();
7310
7311
7312        /*
7313        Catch the standard BigCommerce product form submit.
7314
7315        This also works when the shopper submits using
7316        the keyboard rather than clicking the button.
7317        */
7318
7319        document.addEventListener(
7320            'submit',
7321            function (event) {
7322
7323                const form =
7324                    event.target;
7325
7326
7327                if (
7328                    form &&
7329                    form.matches &&
7330                    form.matches(
7331                        'form[data-cart-item-add]'
7332                    )
7333                ) {
7334
7335                    scheduleRefreshes();
7336                }
7337
7338            },
7339            true
7340        );
7341
7342
7343        /*
7344        CURRENT BIGCOMMERCE CORNERSTONE EVENT
7345
7346        Cornerstone triggers cart-quantity-update after
7347        its cart content has successfully refreshed.
7348
7349        Use it when jQuery is available.
7350
7351        Script does NOT depend on this event because the
7352        timed refreshes above remain as the fallback.
7353        */
7354
7355        if (window.jQuery) {
7356
7357            window.jQuery(
7358                document.body
7359            ).on(
7360
7361                'cart-quantity-update.martelVerifiedCartStatus',
7362
7363                function () {
7364
7365                    window.setTimeout(
7366                        refreshCartStatus,
7367                        50
7368                    );
7369
7370                }
7371            );
7372        }
7373
7374
7375        /*
7376        Shopper may change the cart in another tab.
7377        Recheck when they return.
7378        */
7379
7380        window.addEventListener(
7381            'focus',
7382            refreshCartStatus
7383        );
7384
7385
7386        /*
7387        Handles browser Back / Forward cache.
7388        */
7389
7390        window.addEventListener(
7391            'pageshow',
7392            refreshCartStatus
7393        );
7394
7395
7396        /*
7397        Recheck when hidden tab becomes visible.
7398        */
7399
7400        document.addEventListener(
7401            'visibilitychange',
7402            function () {
7403
7404                if (!document.hidden) {
7405
7406                    refreshCartStatus();
7407                }
7408
7409            }
7410        );
7411    }
7412
7413
7414    /* ========================================================
7415       START
7416       ======================================================== */
7417
7418    if (
7419        document.readyState ===
7420        'loading'
7421    ) {
7422
7423        document.addEventListener(
7424            'DOMContentLoaded',
7425            initialize,
7426            {
7427                once: true
7428            }
7429        );
7430
7431    } else {
7432
7433        initialize();
7434    }
7435
7436})();
7437</script>
7437
7438<style>
7439.estimator-form--ups {
7440  display: block !important;
7441  clip: auto !important;
7442  height: auto !important;
7443  width: auto !important;
7444  position: static !important;
7445}
7446.estimator-form-toggleUPSRate { display: none; }
7447
7448.productCarousel .card-buttons,
7449.productGrid .card-buttons {
7450  opacity: 1;
7451  clip: auto;
7452  visibility: visible;
7453}
7454.card-figcaption { opacity: 1; }
7455.card-figcaption-button.quickview { opacity: 0; }
7456.card:hover .card-figcaption-button.quickview { opacity: 1; }
7457
7458.alertBox--info {
7459  background-color: #f16722 !important;
7460  border-color: #f16722 !important;
7461}
7462
7463.card-figcaption-button--compare:hover:after {
7464  content: 'Compare';
7465  position: absolute;
7466  padding: 4px 8px;
7467  background: #fff;
7468  display: inline-block;
7469  font-size: 12px;
7470  color: #666666;
7471  bottom: calc(100% + 4px);
7472  right: 0;
7473  text-indent: 0;
7474}
7475
7476@media (max-width: 800px) {
7477  .productView-description-tabContent.emthemesModez-mobile-collapse-content {
7478    max-height: none;
7479    overflow: auto;
7480  }
7481
7482  .productView-description-tabContent .emthemesModez-mobile-collapse-handle {
7483    display: none;
7484  }
7485}
7486
7487@media (max-width: 800px) {
7488  .emthemesModez-header-topSection .navUser:last-child .navUser-section .navUser-item:last-child {
7489    display: block;
7490    margin-right: 50px;
7491    border: 0;
7492  }
7493}
7494
7495.pagination-item .pagination-link {
7496  font-size: 16px;
7497  font-weight: bold;
7498  min-width: 40px;
7499}
7500
7501.pagination-item,
7502.pagination-item.pagination-item--current {
7503  border-color: #f0790b;
7504  border-radius: 4px;
7505}
7506
7507.pagination-item--current .pagination-link,
7508.pagination-item--current .pagination-link:hover {
7509  background: #f0790b;
7510  color: #fff;
7511}
7512
7513@media (min-width: 801px) {
7514  .card {
7515    padding-bottom: 50px !important;
7516  }
7517  .card-figure {
7518    overflow: visible;
7519    position: static;
7520  }
7521  .card-img-container {
7522    position: relative;
7523  }
7524  .card-figcaption-button.quickview-alt {
7525    bottom: 0;
7526  }
7527}
7528
7529table.customTable {
7530  width: 100%;
7531  background-color: #FFFFFF;
7532  border-collapse: collapse;
7533  border-width: 1px;
7534  border-color: #D3D3D3;
7535  border-style: solid;
7536  color: #000000;
7537}
7538
7539table.customTable td,
7540table.customTable th {
7541  border-width: 1px;
7542  border-color: #D3D3D3;
7543  border-style: solid;
7544  padding: 3px;
7545}
7546
7547table.customTable thead {
7548  background-color: #D3D3D3;
7549}
7550</style>
7551
7552<script>
7553(function () {
7554  var style = document.createElement('style');
7555  style.innerHTML = '.shippingOptionLabel .shippingOption-price { min-width: 10rem; max-width: 10rem; }';
7556  document.head.appendChild(style);
7557})();
7558</script>
7558
7559
7560<script>
7561(function ($) {
7562  if (!$) return;
7563
7564  $(function () {
7565    function addConditionBadgeToProductPage() {
7566      var $el = $('.productView-info-value--condition');
7567      if (!$el.length || $('.productView-images .sale-flag-side--custom').length) return;
7568
7569      var $condBadge = $('<div class="sale-flag-side sale-flag-side--custom"><span class="sale-text">' + $el.text() + '</span></div>');
7570      var $image = $('.productView-imageCarousel-main');
7571      var $lastBadge = $('.productView-images .sale-flag-side').last();
7572
7573      if ($lastBadge.length > 0) {
7574        $lastBadge.before($condBadge);
7575      } else if ($image.length) {
7576        $image.after($condBadge);
7577      }
7578    }
7579
7580    function requestCardCondition(id, $cardFigure) {
7581      $.ajax({
7582        url: '/products.php?productId=' + id,
7583        headers: {
7584          'stencil-options': '{"render_with":"products/quick-view"}'
7585        },
7586        success: function (data) {
7587          var $html = $(data);
7588          var $cond = $html.find('.productView-info-value--condition');
7589
7590          if ($cond.length > 0 && !$cardFigure.find('.sale-flag-side--custom').length) {
7591            var $condBadge = $('<div class="sale-flag-side sale-flag-side--custom"><span class="sale-text">' + $cond.text() + '</span></div>');
7592            var $lastBadge = $cardFigure.find('.sale-flag-side').last();
7593
7594            if ($lastBadge.length > 0) {
7595              $lastBadge.after($condBadge);
7596            } else {
7597              $cardFigure.prepend($condBadge);
7598            }
7599          }
7600        }
7601      });
7602    }
7603
7604    function requestAllConditionBadges($scope) {
7605      $('[data-emthemesmodez-cart-item-add]', $scope).each(function (_, a) {
7606        var match = a.href && a.href.match(/product_id=([0-9]+)/);
7607        if (!match) return;
7608
7609        var $cardFigure = $(a).closest('.card-figure');
7610        if (!$cardFigure.length || $cardFigure.find('.sale-flag-side--custom').length) return;
7611
7612        requestCardCondition(match[1], $cardFigure);
7613      });
7614    }
7615
7616    addConditionBadgeToProductPage();
7617    requestAllConditionBadges($('body'));
7618
7619    setInterval(function () {
7620      $('.emthemesModez-productsByCategoryTabs-products').each(function (_, el) {
7621        var $el = $(el);
7622        if (!$el.data('conditionBadgeAdded')) {
7623          $el.data('conditionBadgeAdded', true);
7624          requestAllConditionBadges($el);
7625        }
7626      });
7627    }, 800);
7628  });
7629})(window.jQuerySupermarket || window.jQuery);
7630</script>
7630
7631
7632<script>
7633(function ($) {
7634  if (!$) return;
7635
7636  $(function () {
7637    $('#facetedSearch-navList--bool .navList-action').each(function (_, el) {
7638      var $el = $(el);
7639      if ($el.text().indexOf('In Stock') !== -1 && !$el.hasClass('is-selected')) {
7640        setTimeout(function () {
7641          $el.click();
7642        }, 400);
7643      }
7644    });
7645  });
7646})(window.jQuerySupermarket || window.jQuery);
7647</script>
7647
7648
7649<script>
7650(function ($) {
7651  if (!$ || typeof stencilUtils === 'undefined' || !stencilUtils.hooks) return;
7652
7653  $(function () {
7654    function cloneCheckoutShippingTips() {
7655      var $tipsEl = $('#checkout-shipping-options-tips');
7656
7657      if (!$tipsEl.length || $('#checkout-shipping-options-tips-clone').length) return;
7658
7659      var $shippingOptionsEl = $('#checkout-shipping-options');
7660      if ($shippingOptionsEl.length > 0) {
7661        $tipsEl.clone()
7662          .attr('id', 'checkout-shipping-options-tips-clone')
7663          .show()
7664          .insertBefore($shippingOptionsEl.children('legend'));
7665      }
7666    }
7667
7668    if (!$('#checkout-shipping-options-tips').length) {
7669      $('body').append(
7670        '<div id="checkout-shipping-options-tips" style="display:none;">' +
7671          '<ul>' +
7672            '<li>We are shipping Online Orders Monday - Friday. | Free Shipping takes 3-7 days and is not time guaranteed. We ship from California. Free Shipping does not include international orders. 2 Day Air &amp; Next Day Air are reliable!</li>' +
7673          '</ul>' +
7674        '</div>'
7675      );
7676    }
7677
7678    cloneCheckoutShippingTips();
7679    setInterval(cloneCheckoutShippingTips, 500);
7680  });
7681})(window.jQuerySupermarket || window.jQuery);
7682</script>
7682
7683
7684<script>
7685(function ($) {
7686  if (!$) return;
7687
7688  $(function () {
7689    $('input[data-search-quick]').attr('placeholder', 'Search by product name,sku and keyword');
7690  });
7691})(window.jQuerySupermarket || window.jQuery);
7692</script>
7692
7693
7694<script>
7695(function ($) {
7696  if (!$ || typeof stencilUtils === 'undefined' || !stencilUtils.api || !stencilUtils.api.product) return;
7697
7698  function debounce(fn, wait) {
7699    var timeout;
7700    return function () {
7701      var context = this;
7702      var args = arguments;
7703      clearTimeout(timeout);
7704      timeout = setTimeout(function () {
7705        fn.apply(context, args);
7706      }, wait);
7707    };
7708  }
7709
7710  function isInViewport(el) {
7711    var rect = el.getBoundingClientRect();
7712    return rect.top < window.innerHeight && rect.bottom > 0;
7713  }
7714
7715  function main() {
7716    var $cards = $('.card');
7717
7718    var update = debounce(function () {
7719      $cards.each(function (_, el) {
7720        var $scope = $(el);
7721
7722        if ($scope.data('stockLoaded') || !isInViewport(el)) {
7723          return;
7724        }
7725
7726        var id = $scope.find('.quickview[data-product-id]').data('productId');
7727        if (!id) return;
7728
7729        stencilUtils.api.product.getById(id, { template: 'products/quick-view' }, function (err, resp) {
7730          if (err || !resp) return;
7731
7732          var stock = $(resp).find('[data-product-stock]').html();
7733          if (stock) {
7734            stock = $.trim(stock);
7735            if (stock) {
7736              $scope.find('.card-body').append('<div class="card-text cart-text--stock">Current Stock: <span class="value">' + stock + '</span></div>');
7737            }
7738          }
7739        });
7740
7741        $scope.data('stockLoaded', true);
7742      });
7743    }, 200);
7744
7745    $(window).on('scroll resize load', update);
7746    update();
7747
7748    var MutationObserverClass = window.MutationObserver || window.WebKitMutationObserver;
7749    if (MutationObserverClass) {
7750      var mo = new MutationObserverClass(function (mutations) {
7751        mutations.forEach(function (mutation) {
7752          if (mutation.type === 'childList' && mutation.addedNodes && mutation.addedNodes.length) {
7753            $cards = $cards.add($(mutation.addedNodes).find('.card'));
7754            update();
7755          }
7756        });
7757      });
7758
7759      mo.observe(document.documentElement, {
7760        childList: true,
7761        subtree: true
7762      });
7763    }
7764
7765    if (!$('#martel-stock-style').length) {
7766      $('head').append('<style id="martel-stock-style">.cart-text--stock .value { font-weight:bold; color:#000; }</style>');
7767    }
7768  }
7769
7770  $(document).ready(main);
7771})(window.jQuerySupermarket || window.jQuery);
7772</script>
7772
7773
7774<script>
7775(function () {
7776  var style = document.createElement('style');
7777  style.innerHTML =
7778    ".productCarousel .card-buttons .card-figcaption-button:before, .productGrid .card-buttons .card-figcaption-button:before { content: '\\f07a'; }" +
7779    ".productCarousel .card-buttons .card-figcaption-button--compare:before, .productGrid .card-buttons .card-figcaption-button--compare:before { content: '\\f0ec'; }" +
7780    ".productCarousel .card-buttons .card-figcaption-button.quickview:before, .productGrid .card-buttons .card-figcaption-button.quickview:before { content: '\\f002'; }";
7781  document.head.appendChild(style);
7782})();
7783</script>
7783
7784
7785
7786
7787
7788
7789
7790
7791
7792
7793        <!-- snippet location footer -->
7794    
7794<script>window.__CF$cv$params={r:'a4079664fc221b3c',t:'MTc5MDMxMzcwOA==',u:'01a0d7033c5d740a8609ab88fc8fba00',ut:'0sn8_vK8oZY0r8BYeY7sTlU5ZsfcZNvm671T3zRdUNY-1790313708-1.2.1.1-hbr_U1YIpG29Sb16.Omu_WVR_ZMF7Ems2UQI04q2gwtJUzlscttpsFqnkfs_ltjIymzxxX8tfF7.rsJWMatayBM57c8MdN8yzWjHPtevM00',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>
7794</body>
7795</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.