PageSourceSearch

https://tokenguard.com/portal/cart

html tokenguard.com collected 2026-10-02 13:36:38 UTC 25,241 bytes, 575 lines download raw bytes

1
2<!DOCTYPE html>
3<html lang="en">
4<head>
5    <title>Your cart</title>
6    <!-- #region Render Header -->
7<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
8<link href="//fonts.googleapis.com/css?family=Open+Sans:400,700italic,700" rel="stylesheet">
9<link href="//maxcdn.bootstrapcdn.com/bootswatch/3.3.4/cerulean/bootstrap.min.css" rel="stylesheet">
10<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.3/css/all.css" integrity="sha384-SZXxX4whJ79/gErwcOYf+zWLeJdY/qpuqC4cAa9rOGUstPomtqpuNWT9wdPEn2fk" crossorigin="anonymous">
11<link href="https://www.virtualgraffiti.com/css/styles2.css?ver=1" rel="stylesheet">
12<script>document.write("<link href='/css/styles.css?v=" + Date.now() + "' rel='stylesheet'><\/link>");</script>
12
13<meta name="facebook-domain-verification" content="ym0qfdseww42s2m1qlwkyho3ujuyyc" />
14<!-- Favicon Start -->
15<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.blueally.com/tokenguard/images/favicons/apple-icon-57x57.png">
16<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.blueally.com/tokenguard/images/favicons/apple-icon-60x60.png">
17<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.blueally.com/tokenguard/images/favicons/apple-icon-72x72.png">
18<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.blueally.com/tokenguard/images/favicons/apple-icon-76x76.png">
19<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.blueally.com/tokenguard/images/favicons/apple-icon-114x114.png">
20<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.blueally.com/tokenguard/images/favicons/apple-icon-120x120.png">
21<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.blueally.com/tokenguard/images/favicons/apple-icon-144x144.png">
22<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.blueally.com/tokenguard/images/favicons/apple-icon-152x152.png">
23<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.blueally.com/tokenguard/images/favicons/apple-icon-180x180.png">
24<link rel="icon" type="image/png" sizes="192x192"  href="https://cdn.blueally.com/tokenguard/images/favicons/android-icon-192x192.png">
25<link rel="icon" type="image/png" sizes="32x32" href="https://cdn.blueally.com/tokenguard/images/favicons/favicon-32x32.png">
26<link rel="icon" type="image/png" sizes="96x96" href="https://cdn.blueally.com/tokenguard/images/favicons/favicon-96x96.png">
27<link rel="icon" type="image/png" sizes="16x16" href="https://cdn.blueally.com/tokenguard/images/favicons/favicon-16x16.png">
28<link rel="manifest" href="https://cdn.blueally.com/tokenguard/images/favicons/manifest.json">
29<meta name="msapplication-TileColor" content="#ffffff">
30<meta name="msapplication-TileImage" content="/images/favicons/ms-icon-144x144.png">
31<meta name="theme-color" content="#ffffff">
32<!-- Favicon End -->
33<!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 64 bytes, lines 33-34
33
34<script async src="https://www.googletagmanager.com/gtag/js?id=
34UA-215164-51
vendor: 12 bytes, line 34
34"></script>
35<script>
36  
vendor: 134 bytes, lines 36-40
36window.dataLayer = window.dataLayer || [];
37  function gtag(){dataLayer.push(arguments);}
38  gtag('js', new Date());
39
40  gtag('config', '
40UA-215164-51
vendor: 4 bytes, line 40
40');
41</script>
41
42<!-- Google Tag Manager -->
43<script>
vendor: 327 bytes, lines 43-47
43(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
44new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
45j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
46'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
47})(window,document,'script','dataLayer','
47GTM-K5RMCCC
vendor: 3 bytes, line 47
47');
47</script>
47
48<!-- End Google Tag Manager -->
49<!-- Google Tag Manager -->
50<script>
vendor: 327 bytes, lines 50-54
50(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
51new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
52j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
53'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
54})(window,document,'script','dataLayer','
54GTM-TDJP3SH
vendor: 3 bytes, line 54
54');
54</script>
54
55<!-- End Google Tag Manager -->
56<!-- Google Search Console -->
57<meta name="google-site-verification" content="IPLx8Nqz4rtWqtVzLwEQ02QDFW4nw3ZFLLwnvf66tNQ" />
58<!-- End Google Search Console -->
vendor: 65 bytes, lines 58-59
58
59<script src='https://www.google.com/recaptcha/api.js'></script>
60<!-- Positive SSL Code -->
61<script type="text/javascript"> //<![CDATA[
62var tlJsHost = ((window.location.protocol == "https:") ? "https://secure.trust-provider.com/" : "http://www.trustlogo.com/");
63document.write(unescape("%3Cscript src='" + tlJsHost + "trustlogo/javascript/trustlogo.js' type='text/javascript'%3E%3C/script%3E"));
64//]]>
65</script>
65
66<!-- End of Positive SSL Code 
67<!-- DYNAMIC PRICING -->
68<!-- END OF DYNAMIC PRICING -->    <!-- #endregion -->
69    <!-- #region Section other -->
70    
71    <link href="/portal/css/cart.css" rel="stylesheet" />
72
73    <!-- #endregion -->
74</head>
75<body>
76
77    <div class="container">
78        <!-- #region Render Top menu -->
79<div class="header">
80 <div class="row logo-row"> 
81  <div class="col-md-4 col-sm-6 logo-block">
82   <div class="logo"><a href="http://www.tokenguard.com/"><img src="https://cdn.blueally.com/tokenguard/images/tokenguard-logo.png" alt="tokenguard.com" class="img-responsive"></a></div>
83  <h2 class="hidden-sm hidden-md hidden-lg hidden-xl">Call a Specialist Today! <a class="tel" href="tel:877-352-0546">877-352-0546</a></h2>
84  </div>
85   <div class="col-md-8 col-sm-12">
86  <div class="row">
87  <div class="col-md-6 col-sm-12">
88  <div id="main-search">
89  <form class="top-search" role="search" action="/search.php" method="get">
90  <input id="search-input" type="text" placeholder="Search by Model, Part, or SKU" autocomplete="off" class="search-input" name="q">
91  <button type="submit" id="search-btn"><i class="fa fa-search"></i></button>
92  </form>
93  </div>
94  </div>
95  <div class="col-md-6">
96  <p class="phone-header"><span style="font-weight: 500;">Call a Specialist Today! </span><a class="tel" href="tel:877-352-0546">877-352-0546</a><br>
97  <span style="font-weight: 500;">Free Shipping!</span><img src="https://cdn.blueally.com/tokenguard/images/free-shipping/truckgrey_xsm.png" alt="Free Shipping!"></p>
98  </div>
99  </div>
100  </div>
101  </div>
102</div>
103<div class="navbar navbar-default">
104 <div class="navbar-header">
105  <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-responsive-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button>
106 </div>
107 <div class="navbar-collapse collapse navbar-responsive-collapse">
108  <ul class="nav navbar-nav">
109   <li class="productDropdown dropdown"> <a href="/products.asp" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-delay="1000">Products <b class="caret"></b></a>
110    <ul class="dropdown-menu">
111	  <li class="dropdownHeader">RSA SecurID:</li>
112		<li class="dropdown dropdown-submenu"><a href="#" class="dropdown-toggle" data-toggle="dropdown">ID Plus</a>
113		<ul class="dropdown-menu">
114		 <li><a href="/id-plus-subscription-plans.asp">Subscription Plans</a></li>
115	  <li><a href="/ds100-authenticator.asp">DS100 Authenticator</a></li>
116	  <li><a href="/rsa-mobile-lock.asp">Mobile Lock</a></li>
117	  <li><a href="/risk-ai.asp">Risk AI</a></li>
118			<li><a href="/rsa-governance-and-lifecycle-cloud.asp">RSA Governance & Lifecycle Cloud</a></li>
119		</ul>
120	  </li>
121	  <li><a href="/securid-cloud-free-trial.asp">SecurID Cloud Free Trial</a></li>
122	  </li>
123	  <li><a href="/auth-manager.asp">Authentication Manager</a></li>
124	  <li><a href="/securid-access.asp">SecurID Access</a></li>
125	  <li><a href="/securid-software.asp">Software Authenticators</a></li>
126      <li class="dropdown dropdown-submenu"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Hardware Authenticators</a>
127		<ul class="dropdown-menu">
128		 <li><a href="/securid-700.asp">SecurID 700 Token</a></li>
129		</ul>
130	  </li>
131	  <li><a href="/securid-appliance.asp">SecurID Appliance</a></li>
132	  <li><a href="/identity-governance-and-adminstration.asp">RSA Identity Governance and Administration</a></li>
133          <li><a href="/single-sign-on.asp">RSA Single Sign-On</a></li>
134	  
135	  
136	  
137	  <li><a href="/products.asp"><strong>View All Products</strong></a></li>
138    </ul>
139   </li>
140      <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown">Solutions <b class="caret"></b></a>
141    <ul class="dropdown-menu">
142        <li class="dropdownHeader">Remote Access</li>
143        <li><a href="/healthcare.asp">Healthcare Solutions</a></li>
144          </ul>
145      </li>
146   <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown">Resources <b class="caret"></b></a>
147    <ul class="dropdown-menu">
148		<li class="dropdown dropdown-submenu"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Datasheets</a>
149		<ul class="dropdown-menu">
150		 <li><a href="/rsa-governance-and-lifecycle-cloud.asp">RSA Governance & Lifecycle Cloud</a></li>
151		</ul>
152	  </li>
153     <li><a href="/consulting.asp">Consulting</a></li>
154     <li><a href="/policies/legal.asp">Leasing</a></li>
155    </ul>
156   </li>
157   <li><a href="/quoterequest.asp">Get a Quote!</a></li>
158   <li><a href="/contact.asp">Contact Us</a></li>
159  </ul>
160 <ul class="nav navbar-nav navbar-right">
161      <li class="nav-item"><a class="nav-link" href="/about-us.asp">About Us</a></li>
162      <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown"><i class="fa fa-user" aria-hidden="true"></i> Account <b class="caret"></b></a>
163        <ul class="dropdown-menu">
164          <li><a href="/portal/cart">Shopping Cart</a></li>
165          <li><a href="/portal/manage/index">Your Account</a></li>
166          <li><a href="/portal/orderhistory">Order History</a></li>
167          <li><a href="/portal/account/help">Help with checkout</a></li>
168        </ul>
169      </li>
170    </ul>
171 </div>
172</div>        <!-- #endregion -->
173
174        <div>
175            <!-- #region LoginPartial -->
176            
177
178<link href="/portal/css/loginpartial.css" rel="stylesheet" />
179
180    <div class="nav-login-menu">
181        <ul class="nav navbar-nav navbar-right nav-login">
182            <li class="dropdown">
183                <a href="#" class="dropdown-toggle a-custom" data-toggle="dropdown" data-hover="dropdown">Sign in/Register <b class="caret"></b></a>
184                <ul class="dropdown-menu">
185                    <li><a href="/portal/account/login">Sign in</a></li>
186                    <li><a href="/portal/account/register">Create an account</a></li>
187                </ul>
188            </li>
189        </ul>
190    </div>
191
192            <!-- #endregion -->
193        </div>
194
195        <!-- #region RenderBody -->
196        
197
198
199
200<div class="cart-container">
201
202    <div class="row">
203
204        <div class="col-sm-8">
205
206            <header>
207                <h1 class="page-title"><i class="fa fa-shopping-cart fa-lg"></i> Shopping Cart</h1>
208            </header>
209
210                <article id="shopping-bag">
211                    <section class="checkout-container">
212                        <h2 class="page-subtitle">
213                            Items (0)
214                        </h2>
215                        <div class="item-row clearfix">
216                            <p class="bag-empty-msg">You have no items in your shopping cart.</p>
217                        </div>
218                    </section>
219                </article>
220
221        </div>
222
223        <div class="col-sm-4">
224
225            <div></div>
226
227            <div id="orderSummaryContainer" class="summary-container">
228
229                    <h2 class="page-subtitle clearfix">Summary</h2>
230
231                    <ul class="summary clearfix">
232
233                        <li class="summary-item summary-subtotal clearfix">
234                            <span class="summary-label">Subtotal </span>
235                            <span id="summary-cart-subtotal" class="summary-value">  $0.00</span>
236                        </li>
237
238                        <li class="summary-item summary-shipping clearfix">
239                            <span class="summary-label">Estimated Shipping</span>
240                            <span id="summary-cart-shipping" class="summary-value">  $0.00</span>
241                        </li>
242
243                        <li class="summary-item clearfix">
244                            <span class="summary-label">Taxes</span>
245                            <span class="summary-value">Pending<sup>1</sup></span>
246                        </li>
247
248                        <li class="summary-item summary-total clearfix">
249                            <span class="summary-label">Estimated Total</span>
250                            <span id="summary-cart-total" class="summary-value">  $0.00</span>
251                        </li>
252
253                    </ul>
254
255                    <div class="cart-continue">
256                        <div class="button-cart-continue">
257                                <a href="/portal/account/landing?returnUrl=%2FCheckout" >
258                                    <button class="btn btn-primary" type="submit">Check out now</button>
259                                </a>
260                        </div>
261                    </div>
262                <div class="mt-4 summary-item">
263  <sup>1</sup><b>Taxes:</b> Please note that all applicable taxes will be calculated and added when your payment is processed.
264  <br><br>
265  <p>
266    <b>Have a Tax Exemption Certificate?</b><br>
267    Email it to <a href="/cdn-cgi/l/email-protection#7e091b1c17100f0b170c171b0d3e1c120b1b1f121207501d1113410d0b1c141b1d0a432a1f065e3b061b130e0a1711105e3d1b0c0a1718171d1f0a1b"><span class="__cf_email__" data-cfemail="11667473787f6064786378746251737d6474707d7d683f727e7c">[email&#160;protected]</span></a>. Learn more about our <a href="/shipping.asp#tax-certificate" target="_blank">tax exemption policy</a>.
268  </p>
269</div>
270
271
272            </div>
273        </div>
274
275    </div>
276
277</div>
278
279
280        <!-- #endregion -->
281
282    </div>
283
284    <!-- #region Render Footer -->
285<aside id="footer-widgets">
286<div class="container">
287<div class="row">
288<div class="col-md-2">
289 <h3 class="footer-widget-title">Site Map:</h3>
290 <ul class="list-unstyled">
291  <li><a href="/">Home</a></li>
292  <li><a href="/portal/cart">Shopping Cart</a></li>
293  <li><a href="/contact.asp">Contact Us</a></li>
294  <li>
295  </li>
296 </ul>
297</div>
298<div class="col-md-2">
299 <h3 class="footer-widget-title">Products:</h3>
300 <ul class="list-unstyled">
301<li><a href="/auth-manager.asp">RSA Authentication Manager</a></li>
302	  <li><a href="/securid-access.asp">RSA SecurID Access</a></li>
303	  <li><a href="/securid-software.asp">RSA Software Authenticators</a></li>
304  <li><a href="/products.asp"><strong>View all Products</strong></a></li>
305 </ul>
306</div>
307<div class="col-md-2">
308 <h3 class="footer-widget-title">Resources:</h3>
309 <ul class="list-unstyled">
310   <li><a href="/about-us.asp">About Us</a></li>
311   <li><a href="/news.asp">News</a></li>
312  <li><a href="/shipping.asp">Shipping</a></li>
313  <li><a href="/policies/return-policy.asp">Returns</a></li>
314  <li><a href="/consulting.asp">Consulting</a></li>
315 </ul>
316</div>
317<div class="col-md-3">
318<p class="phone-header" style="text-align:left">Call a Specialist Today!<br>
319 <a class="tel" href="tel:877-352-0546">877-352-0546</a></p>
320<form class="top-search" role="search" action="/search.php" method="get">
321<div class="input-group">
322 <input type="text" class="form-control" placeholder="Search by Model, Part, or SKU" name="q">
323 <div class="input-group-btn">
324  <button class="btn btn-primary" type="submit"><i class="fa fa-search"></i></button>
325 </div>
326</div>
327<br>
328<br>
329<a href="/policies/legal.asp"><img src="https://cdn.blueally.com/tokenguard/images/mastercard-visa-amex-discover.png" alt="BlueAlly accepts Mastercard, VISA, America Express and Discover Card"></a>
330</div>
331<div class="col-md-3">
332 <h3 class="footer-widget-title">Contact:</h3>
333 Prominence Tower<br>
3343475 Piedmont Road NE<br>
335Suite 900, Atlanta, GA 30305<br>
336 <i class="fa fa-phone"></i> <a class="tel" href="tel:877-352-0546">877-352-0546</a><br>
337 <i class="fa fa-envelope"></i> <a href="/cdn-cgi/l/email-protection#54073538312714003b3f313a13213526307a373b39"><span class="__cf_email__" data-cfemail="cd9eaca1a8be8d99a2a6a8a38ab8acbfa9e3aea2a0">[email&#160;protected]</span></a><br>
338 <a href="/quoterequest.asp"><strong>Get a Quote!</strong></a><br>
339 <br>
340 <div class="icons"> <a id="facebook" title="Facebook page" href="//www.facebook.com/BlueAllyTech" target="_blank"><i class="fab fa-facebook-square fa-2x"></i></a> <a id="twitter" title="Twitter page" href="//twitter.com/BlueAlly_IT"><i class="fab fa-twitter-square fa-2x"></i></a> <a id="youtube" title="Youtube page" href="//www.youtube.com/c/BlueAllyTechnologies"><i class="fab fa-youtube-square fa-2x"></i></a> <a id="linkedin" title="LinkedIn page" href="//www.linkedin.com/company/blueally"><i class="fab fa-linkedin fa-2x"></i></a> </div>
341</div>
342</div>
343</div>
344</div>
345</aside>
346<footer id="footer">
347 <p><strong>TokenGuard.com is a division of <a href="https://www.blueally.com/" target="_blank">BlueAlly, an authorized RSA reseller.</a></strong><br>
348  Copyright &copy; 2000
vendor: 108 bytes, line 348
348<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
348<script>new Date().getFullYear()>2000&&document.write("-"+new Date().getFullYear());</script>
348. All Rights Reserved. <a href="/policies/legal.asp">Site Terms</a> and <a href="/policies/privacy-policy.asp">Privacy Policy</a></p>
349</footer>
350<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
350 
351<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
vendor: 1 bytes, line 351
351
352<script src="/includes/custom.js?v=1"></script>
352
353<!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 353-354
353
354<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
354GTM-K5RMCCC
vendor: 83 bytes, lines 354-355
354"
355height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
356<!-- End Google Tag Manager (noscript) -->
357<link href="/css/poststyle.css" rel="stylesheet">    <!-- #endregion -->
358    <!-- #region Section  Scripts -->
359    
360    
360<script>
361        gtag('event', 'add_to_cart', {
362            currency: 'USD',
363            items: [
364            ],
365            value: 0,
366        });
367    </script>
367
368
369    
370
371
372<script>
373(function() {
374    'use strict';
375    
376    const CartManager = {
377        portalUrl: '/portal',
378        
379        init: function() {
380            this.bindEventHandlers();
381            this.initializePopovers();
382            this.initializeModals();
383        },
384        
385        bindEventHandlers: function() {
386            $(document).on('click', '.postLink', this.handlePostLinkClick);
387            $(document).on('click', '.RemoveLink, .HiddenRemoveLink', this.handleRemoveFromCart.bind(this));
388            $(document).on('click', '.HiddenUpdateLink', this.handleUpdateCart.bind(this));
389            $(document).on('keyup', '.quantity-input', this.handleQuantityChange);
390            $(document).on('keypress', '.quantity-input', this.restrictToNumbers);
391            $(document).on('cut copy paste contextmenu', '.quantity-input', this.preventTextManipulation);
392            $(document).on('focus', 'input', this.selectInputOnFocus);
393        },
394        
395        initializePopovers: function() {
396            $('[data-toggle=popover]').popover();
397        },
398        
399        initializeModals: function() {
400            $('#modal-container').on('show.bs.modal', function(event) {
401                const button = $(event.relatedTarget);
402                const url = button.attr('href');
403                $(this).find('.modal-content').load(url);
404            });
405        },
406        
407        handlePostLinkClick: function(e) {
408            $(this).closest('form')[0].submit();
409        },
410        
411        handleRemoveFromCart: async function(e) {
412            e.preventDefault();
413            const recordId = $(e.currentTarget).attr('data-id');
414            if (!recordId) return;
415            
416            try {
417                const response = await this.makeCartRequest('/cart/removefromcart', { id: recordId });
418                if (response) {
419                    this.updateCartUI(response);
420                }
421            } catch (error) {
422                console.error('Error removing item from cart:', error);
423            }
424        },
425        
426        handleUpdateCart: async function(e) {
427            e.preventDefault();
428            const recordId = $(e.currentTarget).attr('data-id');
429            const quantity = $(`#${recordId}`).val();
430            
431            if (!recordId) return;
432            
433            try {
434                const response = await this.makeCartRequest('/cart/updatecart', { 
435                    id: recordId, 
436                    quantity: quantity 
437                });
438                
439                if (response) {
440                    this.updateCartUI(response);
441                    if (response.itemCount > 0) {
442                        $(`#Update${response.deleteId}`).hide();
443                    }
444                    if (response.extendedPrice) {
445                        $(`#cart-extended-price-${response.deleteId}`).text(response.extendedPrice);
446                    }
447                }
448            } catch (error) {
449                console.error('Error updating cart:', error);
450            }
451        },
452        
453        makeCartRequest: function(endpoint, data) {
454            return new Promise((resolve, reject) => {
455                $.post(this.portalUrl + endpoint, data)
456                    .done(function(rawData) {
457                        const response = typeof rawData === 'string' ? JSON.parse(rawData) : rawData;
458                        
459                        if (!response) {
460                            CartManager.showEmptyCart();
461                            resolve(null);
462                            return;
463                        }
464                        
465                        resolve(response);
466                    })
467                    .fail(function(xhr, status, error) {
468                        reject(error);
469                    });
470            });
471        },
472        
473        updateCartUI: function(data) {
474            this.updateCartCount(data.cartCount);
475            
476            if (data.itemCount === 0) {
477                this.removeCartItem(data.deleteId);
478                if (data.cartCount === 0) {
479                    this.showEmptyCart();
480                }
481            }
482            
483            this.updateCartTotals(data.cartTotal);
484        },
485        
486        updateCartCount: function(count) {
487            const cartElement = document.getElementById('cartItemCount');
488            if (cartElement) {
489                cartElement.innerHTML = `ITEMS (${count})`;
490            }
491        },
492        
493        removeCartItem: function(itemId) {
494            $(`#row-${itemId}`).fadeOut('slow');
495            $(`#item-row-${itemId}`).fadeOut('fast');
496        },
497        
498        showEmptyCart: function() {
499            $('#row-header').fadeOut('slow');
500            const cartStatus = document.getElementById('cart-status');
501            if (cartStatus) {
502                cartStatus.innerHTML = '<div class="item-row"><p class="bag-empty-msg">You have no items in your shopping cart.</p></div>';
503            }
504        },
505        
506        updateCartTotals: function(total) {
507            const formattedTotal = total && total !== '0' ? total : '$0.00';
508            $('#summary-cart-subtotal').text(formattedTotal);
509            $('#summary-cart-total').text(formattedTotal);
510        },
511        
512        handleQuantityChange: function(e) {
513            const value = this.value;
514            const currentId = $(this).attr('id');
515            const deleteBtn = $(`#Delete${currentId}`);
516            const updateBtn = $(`#Update${currentId}`);
517            
518            if (value === '0') {
519                deleteBtn.show();
520                updateBtn.hide();
521            } else if (value.length === 0) {
522                deleteBtn.hide();
523                updateBtn.hide();
524            } else {
525                deleteBtn.hide();
526                updateBtn.show();
527            }
528        },
529        
530        selectInputOnFocus: function(e) {
531            const element = this;
532            if (!$(element).data('focused')) {
533                $(element).data('focused', true);
534                setTimeout(() => element.select(), 50);
535            }
536        },
537        
538        restrictToNumbers: function(e) {
539            const isControlKey = e.which === 8 || e.which === undefined || e.
539which === 0;
540            const isNonNumeric = !isControlKey && String.fromCharCode(e.which).match(/[^0-9]/);
541            if (isNonNumeric) {
542                e.preventDefault();
543            }
544        },
545        
546        preventTextManipulation: function(e) {
547            e.preventDefault();
548        }
549    };
550    
551    window.deleteFromCart = function(sku, descr, price, quantity, total) {
552        if (typeof gtag !== 'undefined') {
553            gtag('event', 'remove_from_cart', {
554                currency: 'USD',
555                items: [{
556                    id: sku,
557                    name: descr,
558                    price: price,
559                    quantity: quantity,
560                }],
561                value: total
562            });
563        }
564    };
565    
566    $(document).ready(function() {
567        CartManager.init();
568    });
569})();
570</script>
570
571
572
573    <!-- #endregion -->
574</body>
575</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.