PageSourceSearch

https://www.brewerairporttoyota.com/new-vehicles/

html brewerairporttoyota.com collected 2026-09-26 11:03:41 UTC 488,496 bytes, 10,587 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en-US">
3
4<head>
5        <meta charset="UTF-8">
6    <meta name="referrer" content="no-referrer-when-downgrade"/>
7    <meta http-equiv="Content-Language" content="en">
8<script>
9window.daSessionId = function () {
10    try {
11        var match = document.cookie.match(/(?:^|; )da_sid=([0-9a-f]{32})(?:;|$)/);
12        if (match) {
13            return match[1];
14        }
15        var bytes = new Uint8Array(16), id = '', i;
16        if (window.crypto && window.crypto.getRandomValues) {
17            window.crypto.getRandomValues(bytes);
18        } else {
19            for (i = 0; i < 16; i++) { bytes[i] = Math.floor(Math.random() * 256); }
20        }
21        for (i = 0; i < 16; i++) { id += (bytes[i] < 16 ? '0' : '') + bytes[i].toString(16); }
22        document.cookie = 'da_sid=' + id + '; path=/; SameSite=Lax' + (location.protocol === 'https:' ? '; Secure' : '');
23        return id;
24    } catch (e) {
25        return '';
26    }
27};
28</script>
vendor: 1 bytes, line 28
28
29<script>
30(function () {
31    'use strict';
32
33    var GOVERN = true;
34    var REAP   = true;
35
36    // The partial can now be emitted for the listener reaper alone - in that
37    // case leave MutationObserver untouched.
38    if (!GOVERN && !REAP) {
39        return;
40    }
41
42    var Native = window.MutationObserver;
43
44    if (!Native) {
45        return;
46    }
47
48    /**
49     * Per-origin policy. Origins absent from this map are never touched.
50     *
51     *   coalesce  - collapse a burst of callbacks into one per animation frame,
52     *               passing the accumulated records through. The vendor still
53     *               sees real records, just batched.
54     *   scopeTo   - if the vendor tries to observe document/body/html, point it
55     *               at this container instead. Falls back to the original
56     *               target when the selector is not on the page.
57     *   reap      - disconnect this origin's previous observer when it creates
58     *               a new one. For vendors that re-register per render and
59     *               never clean up.
60     *   sentinel  - retarget to a shared sentinel node and rely on notify() to
61     *               wake them once per render. Only safe for vendors that
62     *               rescan the DOM themselves; see notify() below.
63     */
64    var POLICY = {
65        'plugin.tradepending.com': { coalesce: true, reap: true },
66        'ver.ev5.ai':              { coalesce: true, scopeTo: '#srp-results' },
67        'cdn.dg.toyota.com':       { coalesce: true },
68        'cdn.userway.org':         { coalesce: true }
69    };
70
71    var newest = {};                 // origin -> most recent instance, for reap
72    var governed = [];               // every governed instance, for notify()
73    var sentinel = null;
74
75    function sentinelNode() {
76        if (!sentinel) {
77            sentinel = document.createElement('div');
78            sentinel.id = 'da-observer-sentinel';
79            sentinel.setAttribute('aria-hidden', 'true');
80            sentinel.style.display = 'none';
81            (document.body || document.documentElement).appendChild(sentinel);
82        }
83        return sentinel;
84    }
85
86    function originOf(stack) {
87        var hosts = stack.match(/https?:\/\/([^\/:)\s]+)/g) || [];
88
89        for (var i = 0; i < hosts.length; i++) {
90            var host = hosts[i].replace(/^https?:\/\//, '');
91            if (POLICY[host]) {
92                return host;
93            }
94        }
95        return null;
96    }
97
98    window.MutationObserver = function (callback) {
99        var origin;
100
101        try {
102            origin = originOf((new Error()).stack || '');
103        } catch (e) {
104            origin = null;
105        }
106
107        // Not a governed vendor - hand back the real thing and stay out of it.
108        if (!origin) {
109            return new Native(callback);
110        }
111
112        var policy = POLICY[origin];
113        var pending = [];
114        var queued = false;
115        var instance;
116
117        function flush() {
118            queued = false;
119            var batch = pending;
120            pending = [];
121
122            try {
123                callback.call(instance, batch, instance);
124            } catch (e) {
125                // A vendor throwing is their problem, not ours - never let it
126                // escape into the frame that triggered the mutation.
127                if (window.console && console.debug) {
128                    console.debug('[observer-governor] ' + origin + ' callback threw', e);
129                }
130            }
131        }
132
133        function onRecords(records) {
134            // With GOVERN off the vendor gets its records straight through,
135            // unbatched, exactly as the native observer would deliver them.
136            if (!GOVERN || !policy.coalesce) {
137                return callback.call(instance, records, instance);
138            }
139
140            pending = pending.concat(records);
141
142            if (!queued) {
143                queued = true;
144                requestAnimationFrame(flush);
145            }
146        }
147
148        instance = new Native(onRecords);
149
150        var nativeObserve = instance.observe.bind(instance);
151        var nativeDisconnect = instance.disconnect.bind(instance);
152
153        instance.observe = function (target, options) {
154            var finalTarget = target;
155            var isWide = target === document || target === document.body
156                      || target === document.documentElement;
157
158            // Retargeting is governing, not reaping. With GOVERN off the vendor
159            // observes exactly what it asked to observe.
160            if (GOVERN && policy.sentinel) {
161                finalTarget = sentinelNode();
162                options = { attributes: true };
163            } else if (GOVERN && policy.scopeTo && isWide) {
164                finalTarget = document.querySelector(policy.scopeTo) || target;
165            }
166
167            return nativeObserve(finalTarget, options);
168        };
169
170        instance.disconnect = function () {
171            pending = [];
172            queued = false;
173            return nativeDisconnect();
174        };
175
176        // Reaping is independent of governing: this is the only behaviour that runs
177        // when REAP is on and GOVERN is off.
178        if (REAP && policy.reap && newest[origin]) {
179            try { newest[origin].disconnect(); } catch (e) {}
180        }
181        newest[origin] = instance;
182
183        governed.push({ origin: origin, instance: instance, invoke: onRecords });
184
185        return instance;
186    };
187
188    window.MutationObserver.prototype = Native.prototype;
189
190    /**
191     * Tell governed vendors that a render finished, instead of letting them
192     * discover it by watching thousands of nodes change.
193     *
194     * Two mechanisms, because vendors differ:
195     *
196     *   1. The sentinel. Bumping an attribute on a hidden node produces one
197     *      genuine, browser-delivered record. Vendors that respond by rescanning
198     *      the DOM - which is most of them - work unchanged. Preferred, because
199     *      nothing is forged.
200     *
201     *   2. Synthesised records, for vendors that read addedNodes to find new
202     *      content and would see nothing from the sentinel. MutationRecord is
203     *      not constructible, so these are plain objects; addedNodes is a real
204     *      static NodeList off the container so that vendors calling NodeList
205     *      methods on it still work. This is a best-effort shim - prefer a
206     *      vendor's own documented refresh API where one exists.
207     *
208     * @param {string} containerSelector element that was re-rendered
209     * @param {boolean} synthesize also hand-deliver a childList record
210     */
211    window.DAObserverGovernor = {
212        notify: function (containerSelector, synthesize) {
213            // Inert when only reaping. Nothing is retargeted to the sentinel in
214            // that mode, and synthesising records would hand vendors notifications
215            // they would never have received natively - which is governing.
216            if (!GOVERN) {
217                return;
218            }
219
220            var node = sentinelNode();
221            node.setAttribute('data-da-render', String(Date.now()));
222
223            if (!synthesize) {
224                return;
225            }
226
227            var container = document.querySelector(containerSelector);
228
229            if (!container) {
230                return;
231            }
232
233            var record = {
234                type: 'childList',
235                target: container,
236                addedNodes: container.querySelectorAll(':scope > *'),
237                removedNodes: container.querySelectorAll('#da-observer-sentinel'),
238                previousSibling: null,
239                nextSibling: null,
240                attributeName: null,
241                attributeNamespace: null,
242                oldValue: null
243            };
244
245            governed.forEach(function (entry) {
246                try { entry.invoke([record]); } catch (e) {}
247            });
248        },
249
250        // Small surface for checking what is actually being governed at runtime.
251        inspect: function () {
252            return governed.map(function (e) { return e.origin; });
253        }
254    };
255})();
256
257/**
258 * LISTENER REAP - see the header. Its own IIFE because it patches a different
259 * API for a different vendor pathology; it shares nothing with the observer
260 * work above except the stack-origin idea.
261 */
262(function () {
263    'use strict';
264
265    var ENABLED = true;
266
267    if (!ENABLED) {
268        return;
269    }
270
271    /**
272     * Matched as substrings of any URL in the constructor stack, so the hashed
273     * build names (dg-inline-save-heart.CFRS092E.min.js) match without pinning
274     * a hash. Add here only after measuring: the vendor must re-bind per render
275     * AND never remove - a vendor that manages its own listeners would fight
276     * this for no gain.
277     */
278    var REAP_ORIGINS = ['dg-inline-save-heart'];
279    
280    var nativeAdd    = EventTarget.prototype.addEventListener;
281    var nativeRemove = EventTarget.prototype.removeEventListener;
282
283    var generation = 0;
284    var tracked = [];        // { target, type, fn, opts, gen, origin }
285    var reapedTotal = 0;
286
287    // The document's own URL, for excluding inline-script stack frames below.
288    var pageUrl = location.origin + location.pathname;
289
290    function reapOrigin(stack) {
291        var urls = stack.match(/https?:\/\/[^\s)]+/g) || [];
292
293        for (var i = 0; i < urls.length; i++) {
294            // Strip query string and line:column before matching. Without this,
295            // the ?da-listener-reap-origin probe value matches ITSELF in every
296            // inline-script frame - the document URL, probe param included, is
297            // what the stack shows for inline code - and the probe then tracks
298            // every inline listener on the page. Caught by exactly that
299            // happening on the local stack: 230 of the theme's own listeners
300            // reaped in one test run.
301            var clean = urls[i].split('?')[0].replace(/:\d+:\d+\)?$/, '');
302
303            // Inline frames report the page itself; only external script files
304            // can be a vendor. This also stops a REAP_ORIGINS entry from ever
305            // matching a path segment of the page's own URL.
306            if (clean === pageUrl) {
307                continue;
308            }
309
310            for (var j = 0; j < REAP_ORIGINS.length; j++) {
311                if (clean.indexOf(REAP_ORIGINS[j]) !== -1) {
312                    return REAP_ORIGINS[j];
313                }
314            }
315        }
316        return null;
317    }
318
319    /**
320     * Cheap attribution first: a listener bound synchronously from an external
321     * script names that script in document.currentScript, no stack parse
322     * needed - and script-evaluation time is when a page binds most of its
323     * document-level listeners, ahead of which this patch runs for ALL of
324     * them. Returns the matched origin, null for a definite "external script,
325     * not a tracked vendor" (no stack needed either), or undefined when it
326     * cannot tell - inline script or async callback, where currentScript is
327     * srcless or null - and only that case pays for new Error().stack.
328     */
329    function currentScriptOrigin() {
330        var el = document.currentScript;
331
332        if (!el || !el.src) {
333            return undefined;
334        }
335
336        var clean = el.src.split('?')[0];
337
338        for (var j = 0; j < REAP_ORIGINS.length; j++) {
339            if (clean.indexOf(REAP_ORIGINS[j]) !== -1) {
340                return REAP_ORIGINS[j];
341            }
342        }
343        return null;
344    }
345
346    // Capture is part of a listener's identity to the browser, so it is part
347    // of it here too: {capture: true} and bubble registrations of the same
348    // function are different listeners.
349    function captureOf(opts) {
350        return opts === true || !!(opts && opts.capture);
351    }
352
353    EventTarget.prototype.addEventListener = function (type, fn, opts) {
354        // Document-level targets only: the pathology is the ever-growing
355        // dispatch chain on document/window, not listeners on the cards
356        // themselves - those are garbage-collected with the card.
357        if (this === document || this === window
358            || this === document.body || this === document.documentElement) {
359            var origin = currentScriptOrigin();
360
361            if (origin === undefined) {
362                try {
363                    origin = reapOrigin((new Error()).stack || '');
364                } catch (e) {
365                    origin = null;
366                }
367            }
368
369            if (origin && typeof fn === 'function') {
370                tracked.push({ target: this, type: type, fn: fn, opts: opts, gen: generation, origin: origin });
371            }
372        }
373        return nativeAdd.call(this, type, fn, opts);
374    };
375
376    // Vendors removing their own listeners must keep working exactly as before;
377    // drop our record so a later reap does not double-remove. The scan is
378    // gated to the four tracked targets with records present - Swiper's
379    // per-render detachEvents used to walk it for every element it touched -
380    // and matches capture, since splicing the capture record while a vendor
381    // removed its bubble twin would leave a live listener untracked forever.
382    EventTarget.prototype.removeEventListener = function (type, fn, opts) {
383        if (tracked.length !== 0
384            && (this === document || this === window
385                || this === document.body || this === document.documentElement)) {
386            for (var i = tracked.length - 1; i >= 0; i--) {
387                var t = tracked[i];
388                if (t.target === this && t.type === type && t.fn === fn
389                    && captureOf(t.opts) === captureOf(opts)) {
390                    tracked.splice(i, 1);
391                    break;
392                }
393            }
394        }
395        return nativeRemove.call(this, type, fn, opts);
396    };
397
398    window.DAListenerReaper = {
399        /**
400         * Called by the theme when an SRP render settles. Keeps the newest TWO
401         * generations - the render on screen plus one back, which covers
402         * handlers a vendor adds asynchronously after its render hook fired -
403         * and removes everything older through the native removeEventListener,
404         * with the exact arguments the vendor used.
405         *
406         * Age alone is not staleness, and TWO conditions guard a removal.
407         *
408         * Generation 0 is never reaped, full stop. advance() runs at the top
409         * of the theme's settled-render handler, before the vendor is handed
410         * that render's cards, so generation 0 is what was bound before any
411         * search render completed - page-init listeners, including the
412         * delegated singleton a vendor binds once at script evaluation and
413         * never rebinds. The plain age rule removed that permanently on the
414         * shopper's second search, and the synthetic test leaker could not
415         * catch it because it has no init-time singleton. The cost of the
416         * blanket keep is that anything a vendor bound during the very first
417         * render is kept too: one render's worth of listeners held for the
418         * life of the page, against unbounded growth, which is the trade this
419         * whole mechanism exists to make.
420         *
421         * Beyond that, a record goes only when the SAME origin has bound the
422         * SAME event type in a LATER generation - the rebind that replaced
423         * it, which is the "re-binds per render" premise demanded as evidence
424         * rather than assumed. Origin+type is not listener identity and does
425         * not claim to be: a singleton bound mid-session, of the same type as
426         * a per-render batch from the same script, would still be matched by
427         * its neighbours' rebind. Generation 0 covers the case that has
428         * actually been observed in the wild; this covers the rest.
429         */
430        advance: function () {
431            generation++;
432
433            var newestGen = {};
434            var keep = [];
435            var i, key;
436
437            for (i = 0; i < tracked.length; i++) {
438                key = tracked[i].origin + '|' + tracked[i].type;
439                if (!(key in newestGen) || tracked[i].gen > newestGen[key]) {
440                    newestGen[key] = tracked[i].gen;
441                }
442            }
443
444            for (i = 0; i < tracked.length; i++) {
445                var t = tracked[i];
446
447                if (t.gen === 0) {
448                    keep.push(t);
449                    continue;
450                }
451
452                if (t.gen <= generation - 2 && newestGen[t.origin + '|' + t.type] > t.gen) {
453                    try { nativeRemove.call(t.target, t.type, t.fn, t.opts); } catch (e) {}
454                    reapedTotal++;
455                } else {
456                    keep.push(t);
457                }
458            }
459
460            tracked = keep;
461        },
462
463        stats: function () {
464            return { generation: generation, live: tracked.length, reaped: reapedTotal, origins: REAP_ORIGINS.slice() };
465        }
466    };
467})();
468</script>
468
469<link rel="icon" href="https://bucket.dealervenom.com/assets/oem/toyota/favicon/toyota-red-favicon.ico?auto=compres&#038;format&#038;ixlib=php-1.2.1&#038;width=16&#038;w=32" sizes="32x32"><link rel="apple-touch-icon" href="https://bucket.dealervenom.com/assets/oem/toyota/favicon/toyota-red-favicon.ico?auto=compres&#038;format&#038;ixlib=php-1.2.1&#038;width=16&#038;w=180">    <meta name="viewport" content="width=device-width, initial-scale=1">
470    <link rel="preload" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/js/jquery.min.js?v=1.537.43" as="script">
471    <link rel="preload" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/js/globalJs.js?v=1.789.534" as="script">
472    <link rel="preload" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/js/dv-events.js?v=1.789.527" as="script">
473    <link rel="preload" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/fontawesome/webfonts/fa-light-300.subset.woff2" as="font" type="font/woff2" crossorigin>
474    <link rel="preload" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/fontawesome/webfonts/fa-solid-900.subset.woff2" as="font" type="font/woff2" crossorigin>
475    <link rel="preload" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/fontawesome/webfonts/fa-brands-400.subset.woff2" as="font" type="font/woff2" crossorigin>
476    <link rel="preload" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/fontawesome/webfonts/fa-duotone-900.subset.woff2" as="font" type="font/woff2" crossorigin>
477    
477<script src="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/js/jquery.min.js?v=1.537.43"></script>
477
478    
478<script src="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/js/globalJs.js?v=1.789.534"></script>
478
479    
479<script src="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/js/dv-events.js?v=1.789.527"></script>
479
480    <!-- DV Google Tag Manager -->
481    
481<script>
vendor: 555 bytes, lines 481-495
481
482        (function (w, d, s, l, i) {
483            w[l] = w[l] || [];
484            w[l].push({
485                'gtm.start': new Date().getTime(),
486                event: 'gtm.js'
487            });
488            var f = d.getElementsByTagName(s)[0],
489                j = d.createElement(s),
490                dl = l != 'dataLayer' ? '&l=' + l : '';
491            j.async = true;
492            j.src =
493                'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
494            f.parentNode.insertBefore(j, f);
495        })(window, document, 'script', 'dataLayer', '
495GTM-P288V3RS
vendor: 8 bytes, lines 495-496
495');
496    
496</script>
496
497    <!-- DV End Google Tag Manager -->
vendor: 72 bytes, lines 497-498
497
498        <script async src="https://www.googletagmanager.com/gtag/js?id=
498G-PZJ9P58581
vendor: 16 bytes, lines 498-499
498"></script>
499    
499<script>
500        
vendor: 184 bytes, lines 500-507
500window.dataLayer = window.dataLayer || [];
501
502        function gtag() {
503            dataLayer.push(arguments);
504        }
505
506        gtag('js', new Date());
507                gtag('config', '
507G-PZJ9P58581
vendor: 20 bytes, lines 507-508
507');
508                
508gtag('config', 'G-M3B4B59Q4Z');
509            </script>
509
510            
510<script>
511        console.log("Enabling SD Analytics...");
512        (function (s, h, i, f, t, d, g, l) {
513            s[d] = s[d] || function () {
514                (s[d].q = s[d].q || []).push(arguments)
515            }, s[d].l = 1 * new Date(); g = h.createElement(i),
516                l = h.getElementsByTagName(i)[0]; g.async = 1; g.src = f +
517                '?containerId=' + t + '&dl=' + d; l.parentNode.insertBefore(g, l)
518        })(window, document, 'script', 'https://toyota-tagging-prod.azureedge.net/scripts/sd.js', 'Toyota', 'sd');
519        sd('create', 'TOYOTA', '37194', 'DEALERVENOM');
520                sd('dataLayer', {
521                pageType: 'Vehicle Listing',
522                websiteTier: 'Tier 3',
523                pageBrand: 'Toyota',
524                sessionId: (window.daSessionId ? window.daSessionId() : ''),
525                language: 'en', //note(ethan): need to change this to allow translations
526                trafficType: 'Organic Search',
527                dealerZipCode: '15108',
528                dealerState: 'PA',
529                dealerCity: 'Moon Township',
530                dealerName: 'Brewer Airport Toyota',
531                dealerTda: 'CAT10',
532                siteTechnologyVersion: '2.0031',
533                userZipCode: '', //note(ethan): add user location
534                userCity: '',
535                userState: ''
536            });
537                        sd('send', 'pageview');
538                    
539        if (window.location.href.includes("thank-you")) {
540            var urlSearch = new URLSearchParams(window.location.search);
541            var tradeInYear = urlSearch.get("year") || urlSearch.get("yr");
542            var tradeInMake = urlSearch.get("make");
543            var tradeInModel = urlSearch.get("model");
544            var formTitle = urlSearch.get("title") || "";
545
546            function sendThankYouFormSubmission(displayType, formVehicle, tradeIn) {
547                var payload = {
548                    leadId: urlSearch.get("leadid"),
549                    formType: getSDFormType(formTitle.replace("+", "")),
550                    leadType: 'lead',
551                    displayType: displayType,
552                    events: 'formSubmission'
553                };
554
555                if (formVehicle) {
556                    payload.formVehicle = formVehicle;
557                }
558
559                if (tradeIn) {
560                    payload.tradeIn = tradeIn;
561                }
562
563                sd('dataLayer', payload);
564                sd('send');
565            }
566
567            function getThankYouTradeIn() {
568                if (!tradeInYear || !tradeInMake || !tradeInModel) {
569                    return null;
570                }
571
572                return {
573                    year: tradeInYear,
574                    make: tradeInMake,
575                    model: tradeInModel
576                };
577            }
578
579            function requestThankYouVehicleDetails(displayType, tradeIn) {
580                $.post("/app/themes/dv-framework/ajax/sdformvehicle.php", {
581                    vin: urlSearch.get("vin")
582                }).done(function (data) {
583                    var parsedVehicle = null;
584
585                    try {
586                        parsedVehicle = JSON.parse(data);
587                    } catch (error) {
588                        parsedVehicle = null;
589                    }
590
591                    sendThankYouFormSubmission(displayType, parsedVehicle, tradeIn);
592                }).fail(function () {
593                    sendThankYouFormSubmission(displayType, null, tradeIn);
594                });
595            }
596
597            if (urlSearch.get("vin") && tradeInYear && tradeInMake && tradeInModel) {
598                requestThankYouVehicleDetails('modal', getThankYouTradeIn());
599            } else if (urlSearch.get("vin")) {
600                requestThankYouVehicleDetails('modal', null);
601            } else if (tradeInYear && tradeInMake && tradeInModel) {
602                sendThankYouFormSubmission('in-page', null, getThankYouTradeIn());
603            } else {
604                sendThankYouFormSubmission('in-page', null, null);
605            }
606        } else {
607            console.log("NO THANK YOU...");
608        }
609
610         //carousel clicks sd click
611         document.addEventListener('click', function (event) {
612            var target = event.target;
613            while (target && target !== document) {
614                if (target.classList && target.classList.contains('post-dv-offers')) {
615                    var assetName = target.querySelector('a').getAttribute('title');
616                    var assetPosition = target.getAttribute('data-slick-index');
617                    sd('dataLayer', {
618                        events: 'carouselClick',
619                        assetName: assetName,
620                        assetPosition: assetPosition
621                    });
622                    sd('send');
623                    break;
624                }
625                target = target.parentNode;
626            }
627        });
628
629    </script>
629
630        
631
632        <link rel="preload" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/srpCSS/algolia.css?v=1.790.370" as="style">
633    <link rel="stylesheet" type="text/css" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/srpCSS/algolia.css?v=1.790.370">
634        <link rel="preload" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/avgrund/avgrund.css?v=1.598.642" as="style">
635    <link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.1.25/jquery.fancybox.min.css" as="style">
636    <!--<link rel="preload" href="https://code.jquery.com/jquery-migrate-3.4.1.min.js" as="script">-->
637    <link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.1.25/jquery.fancybox.min.js" as="script">
638    <link rel="stylesheet" type="text/css" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/avgrund/avgrund.css?v=1.598.642">
639    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.1.25/jquery.fancybox.min.css"/>
640    <!--
640<script type="text/javascript" src="https://code.jquery.com/jquery-migrate-3.4.1.min.js"></script>
640-->
641    
641<script src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.1.25/jquery.fancybox.min.js"></script>
641
642            <link rel="stylesheet" type="text/css" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/srpCSS/algolia-grid.css?v=1.763.753">
643        
644    
645
646
647    <link rel="preload" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/footer.css?v=1.741.129" as="style">
648    <link rel="preload" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/slick/slick.css?v=1.536.957" as="style">
649    <link rel="preload" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/slick/slick-theme.css?v=1.536.959" as="style">
650    <link rel="stylesheet" type="text/css" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/footer.css?v=1.741.129">
651    <link rel="stylesheet" type="text/css" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/slick/slick.css?v=1.536.957">
652    <link rel="stylesheet" type="text/css" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/slick/slick-theme.css?v=1.536.959">
653    <!-- Redux Styling Below -->
654
655    <style>
656        header {
657            height: 75px !important;
658        }
659
660        .srp_cta:hover {
661            background-color: #000000;
662        }
663
664        .ginput_container_textarea textarea:hover {
665            border-color: #eb0a1e !important;
666        }
667
668        .primary_color,
669        .dv_button {
670            color: #eb0a1e;
671        }
672
673        .dv_button {
674            border-left: 10px solid#000000;
675        }
676
677        body .btn.dds-search {
678            background-color: #eb0a1e;
679        }
680
681        button,
682        .dv-button {
683            background: #eb0a1e;
684            color: #ffffff;
685        }
686
687        button:hover,
688        .dv-button:hover {
689            background: #000000;
690        }
691
692        .primary_background_color,
693        .gform_footer input.button,
694        .gform_page_footer input.button {
695            background-color: #eb0a1e;
696        }
697
698        .dv_button_reverse {
699            color: #eb0a1e;
700        }
701
702        .vdp-roadster-express {
703            background-color: #063497;
704            color: #ffffff !important;
705            border: 1px solid#ffcc00;
706        }
707
708        .vdp-roadster-express:hover {
709            background-color: #ffcc00;
710            color: #063497 !important;
711            border: 1px solid#063497;
712        }
713
714        .srp-roadster-express {
715            background-color: #063497;
716            color: #ffffff;
717        }
718
719        .srp-roadster-express:hover {
720            background-color: #ffcc00;
721        }
722
723        .vdp-content .award-honor,
724        .new-used,
725        .incentive-items h4,
726        .warranty-font-size-two,
727        .total-savings,
728        .map_title_bottom {
729            color: #eb0a1e;
730        }
731
732        .google-box-container-left-bottom,
733        .box-three-container,
734        .box-three-container-class {
735            background-color: #eb0a1e !important;
736        }
737
738        .google-circle {
739            background-color: #000000;
740        }
741
742        .secondary_color,
743        .map_title_top {
744            color: #000000;
745        }
746
747        .secondary_background_color {
748            background-color: #000000;
749        }
750
751        .srp_main .block-nav li {
752            background-color: #eb0a1e;
753        }
754
755        .dropbtn {
756            background-color: #eb0a1e !important;
757            color: #fff;
758        }
759
760        .gform_wrapper input:hover,
761        .ginput_container_select select:hover,
762        .address_state select:hover {
763            border-color: #eb0a1e !important;
764        }
765
766        .gform_footer input.button {
767            border: 0 !important;
768        }
769
770        .gform_footer input.button:hover {
771            border: 0 !important;
772        }
773
774        .gform_wrapper input[type=checkbox]:checked + label:before,
775        .gform_wrapper input[type=radio]:checked + label:before {
776            background-color: #eb0a1e !important;
777        }
778
779        #mobile-nav-subheader {
780            top: 75px;
781            background: #eb0a1e;
782        }
783
784        .brand-weight:hover {
785            color: #eb0a1e;
786        }
787
788        .sub-header,
789        .subheader,
790        .search-box {
791            top: 75px;
792        }
793
794        .customize-support .sub-header,
795        .customize-support .subheader {
796            top: calc(75px +32px);
797        }
798
799        .dv-sidenav {
800            background-color: #eb0a1e !important;
801            top: 75px !important;
802            height: calc(100vh - 75px);
803        }
804
805        .wpb_column a {
806            color: #eb0a1e;
807        }
808
809        .not-found-button > a:hover {
810            color: #eb0a1e !important;
811        }
812
813
814        .internal-btn button {
815            background-color: #eb0a1e !important;
816            color: #ffffff !important;
817        }
818
819        .internal-btn button:hover {
820            background-color: #000000 !important;
821            color: #ffffff !important;
822        }
823
824        .internal-btn a {
825            background-color: #eb0a1e !important;
826            color: #ffffff !important;
827        }
828
829        .internal-btn a:hover {
830            background-color: #000000 !important;
831            color: #ffffff !important;
832        }
833
834        .internal-header {
835            background: linear-gradient(rgba(32,30,30,0.99),rgba(32,30,30,0.99));
836        }
837
838        @media screen and (max-width: 1255px) {
839            header {
840                height: 75px !important;
841            }
842
843            .sub-header,
844            .subheader {
845                top: 75px !important;
846            }
847
848            .customize-support .sub-header,
849            .customize-support .subheader {
850                top: calc(75px +86px) !important;
851            }
852
853            .customize-support .dv-sidenav {
854                top: calc(75px +86px) !important;
855            }
856
857            .customize-support #mobile-nav-subheader {
858                top: calc(75px +46px) !important;
859            }
860
861            #mobile-nav-subheader {
862                top: 75px !important;
863            }
864
865            .dv-sidenav {
866                top: 75px !important;
867                height: calc(100vh - 75px);
868            }
869        }
870    </style>
871
872    <link rel="preload" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/js/dv-hydrate.js?v=1.772.37" as="script">
873    
873<script src="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/js/dv-hydrate.js?v=1.772.37"></script>
873
874
875    <link rel="preload" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/js/dv-modal-disclaimer.js?v=1.774.900" as="script">
876    
876<script src="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/js/dv-modal-disclaimer.js?v=1.774.900"></script>
876
877
878        <link rel="preload" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/js/da-gform-loader.js?v=1.786.483" as="script">
879    
879<script src="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/js/da-gform-loader.js?v=1.786.483"></script>
879
880
881        <link rel="preload" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/js/da-modal.js?v=1.790.314" as="script">
882    
882<script src="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/js/da-modal.js?v=1.790.314"></script>
882
883
884        <link rel="preload" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/js/da-flyout.js?v=1.789.531" as="script">
885    
885<script src="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/js/da-flyout.js?v=1.789.531"></script>
885
886
887    <link rel="preload" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css" as="style">
888    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css"/>
889
890    <link rel="preload" as="script" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js">
891    
891<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
891
892
893    <link rel="preload" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/js/slick.min.js?v=1.536.999" as="script">
894    
894<script src="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/js/slick.min.js?v=1.536.999"></script>
894
895
896    
896<script>
897        $(document).ready(function () {
898            $('body').addClass('dv-logged-out');
899        });
900    </script>
900
901
902    <style>
903        :root {
904            --primary-color: #eb0a1e;
905            --secondary-color: #000000;
906            --mobile-break-point: 1255px;
907            --header-height: 75px;
908            --mobile-header-height: 75px;
909            --header-design-background-color: #ffffff;
910            --header-design-text-color: #000000;
911            --header-design-border-color: #555555;
912            --menu-design-background-color: #ffffff;
913            --menu-design-text-color: #000000;
914            --menu-design-text-hover-color: #ffffff;
915            --menu-design-background-hover-color: #eb0a1e;
916            --brand-button-color: #eb0a1e;
917            --brand-title-color: #ffffff;
918            --brand-button-hover-color: #000000;
919            --brand-title-hover-color: #ffffff;
920            --swiper-theme-color: var(--primary-color);
921        }
922    </style>
923
924<script>
925						const _COOKIENAME = "dv_alertbar";
926					</script>
926<script>
927							sessionStorage.removeItem(_COOKIENAME);
928							window.sessionStorage;
929						</script>
929<script>
930							sessionStorage.removeItem("dv-global-modal");
931							window.sessionStorage;
932						</script>
932<!-- This site is running CAOS: Complete Analytics Optimization Suite for Wordpress -->
932<script>
933			(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
934			(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
935			m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
936			})(window,document,'script','https://www.brewerairporttoyota.com/app/plugins/dv-google-analytics-utm/cache/local-ga.js','ga');ga('create', '', 'auto');ga('send', 'pageview');</script>
936<title>New Toyota Cars &#038; Trucks in Moon Township PA | Brewer Airport Toyota</title>
937<meta name='robots' content='max-image-preview:large' />
938
939<!-- Start Dealer Alchemist - Premium SEO by: Dealer Alchemist -->
940<meta name="robots" content="noydir" />
941<meta name="description" content="Shop new Toyota vehicles at Brewer Airport Toyota in Moon Township, PA. View real-time pricing, online deals, and buy with confidence." />
942<meta property="og:image" content="" />
943<meta property="og:locale" content="en_US" />
944<meta property="og:type" content="website" />
945<meta property="og:title" content="New Toyota Cars &#038; Trucks in Moon Township PA | Brewer Airport Toyota" />
946<meta property="og:description" content="Shop new Toyota vehicles at Brewer Airport Toyota in Moon Township, PA. View real-time pricing, online deals, and buy with confidence." />
947<meta property="og:url" content="https://www.brewerairporttoyota.com/new-vehicles/" />
948<meta property="og:site_name" content="Brewer Airport Toyota" />
949<meta name="twitter:card" content="summary" />
950<meta name="twitter:site" content="@BrewerToyota" />
951<meta name="twitter:title" content="New Toyota Cars &#038; Trucks in Moon Township PA | Brewer Airport Toyota" />
952<meta name="twitter:description" content="Shop new Toyota vehicles at Brewer Airport Toyota in Moon Township, PA. View real-time pricing, online deals, and buy with confidence." />
953<!-- End Dealer Alchemist - Premium SEO by: Dealer Alchemist | 0.00204s -->
954
955<link rel='dns-prefetch' href='//s.w.org' />
956<link rel='preload' as='style' onload="this.onload=null;this.rel='stylesheet'" id='dv-team-members' href='https://www.brewerairporttoyota.com/app/plugins/dv-meet-the-team/assets/css/meet-the-team.css?ver=5.9.5' type='text/css' media='all' /><link rel='preload' as='style' onload="this.onload=null;this.rel='stylesheet'" id='wp-block-library' href='https://www.brewerairporttoyota.com/wp/wp-includes/css/dist/block-library/style.min.css?ver=5.9.5' type='text/css' media='all' /><style id='global-styles-inline-css' type='text/css'>
957body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);
957--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--duotone--dark-grayscale: url('#wp-duotone-dark-grayscale');--wp--preset--duotone--grayscale: url('#wp-duotone-grayscale');--wp--preset--duotone--purple-yellow: url('#wp-duotone-purple-yellow');--wp--preset--duotone--blue-red: url('#wp-duotone-blue-red');--wp--preset--duotone--midnight: url('#wp-duotone-midnight');--wp--preset--duotone--magenta-yellow: url('#wp-duotone-magenta-yellow');--wp--preset--duotone--purple-green: url('#wp-duotone-purple-green');--wp--preset--duotone--blue-orange: url('#wp-duotone-blue-orange');--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
957.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
958</style>
959<link rel='preload' as='style' onload="this.onload=null;this.rel='stylesheet'" id='auth0-widget' href='https://www.brewerairporttoyota.com/app/plugins/auth0/assets/css/main.css?ver=5.9.5' type='text/css' media='all' /><link rel='preload' as='style' onload="this.onload=null;this.rel='stylesheet'" id='menu-image' href='https://www.brewerairporttoyota.com/app/plugins/dv-menu-image/menu-image.css?ver=1.1' type='text/css' media='all' /><link rel='preload' as='style' onload="this.onload=null;this.rel='stylesheet'" id='dv-offers-styles' href='https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/dv-offers/dv-offers.css?ver=1.758.197' type='text/css' media='all' /><link rel='preload' as='style' onload="this.onload=null;this.rel='stylesheet'" id='globalStyle' href='https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/globalStyle.css?ver=1.785.865' type='text/css' media='all' /><link rel='preload' as='style' onload="this.onload=null;this.rel='stylesheet'" id='dv-modal-styles' href='https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/dv-modal/dv-modal.css?ver=1.790.321' type='text/css' media='all' /><link rel='preload' as='style' onload="this.onload=null;this.rel='stylesheet'" id='ag-modal-form-styles' href='https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/ag-modal-form/ag-modal-form.css?ver=1.701.907' type='text/css' media='all' /><link rel='preload' as='style' onload="this.onload=null;this.rel='stylesheet'" id='vehicle-models-menu' href='https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/vehicle-models-menu/vehicle-models-menu.css?ver=1.738.884' type='text/css' media='all' /><link rel='preload' as='style' onload="this.onload=null;this.rel='stylesheet'" id='style' href='https://www.brewerairporttoyota.com/app/themes/dv-brewer-airport-toyota/style.css?ver=1.776.843' type='text/css' media='all' /><link rel='preload' as='style' onload="this.onload=null;this.rel='stylesheet'" id='fontawesome' href='https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/fontawesome/css/all.min.css?ver=1.694.28' type='text/css' media='all' /><link rel='preload' as='style' onload="this.onload=null;this.rel='stylesheet'" id='fontawesome-subset' href='https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/fontawesome/css/fa-subset.css?ver=1.785.828' type='text/css' media='all' /><link rel="https://api.w.org/" href="https://www.brewerairporttoyota.com/wp-json/" /><link rel="alternate" type="application/json" href="https://www.brewerairporttoyota.com/wp-json/wp/v2/pages/16" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.brewerairporttoyota.com/wp/xmlrpc.php?rsd" />
960<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://www.brewerairporttoyota.com/wp/wp-includes/wlwmanifest.xml" /> 
961<link rel="alternate" type="application/json+oembed" href="https://www.brewerairporttoyota.com/w
961p-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.brewerairporttoyota.com%2Fnew-vehicles%2F" />
962<link rel="alternate" type="text/xml+oembed" href="https://www.brewerairporttoyota.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.brewerairporttoyota.com%2Fnew-vehicles%2F&#038;format=xml" />
963                   <!-- Stream WordPress user activity plugin v3.6.0 -->
964<noscript><style>.vce-row-container .vcv-lozad {display: none}</style></noscript><meta name="generator" content="Powered by Visual Composer Website Builder - fast and easy-to-use drag and drop visual editor for WordPress."/><!-- HFCM by 99 Robots - Snippet # 7: GTM Header -->
965<!-- Google Tag Manager -->  
966<script>
vendor: 339 bytes, lines 966-970
966(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':  
967new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],  
968j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=  
969'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);  
970})(window,document,'script','dataLayer','
970GTM-PQJDGJ
vendor: 3 bytes, line 970
970');
970</script>
970  
971<!-- End Google Tag Manager -->
972<!-- /end HFCM by 99 Robots -->
973<!-- HFCM by 99 Robots - Snippet # 5: DA Google Site Verification -->
974<meta name="google-site-verification" content="qpT6PY8U997RsdekNkAIC-SDo1_ABh7KkdoD7ufFa24" />
975<!-- /end HFCM by 99 Robots -->
976<!-- HFCM by 99 Robots - Snippet # 4: Gubagoo Chat -->
977<script src="https://cdn.gubagoo.io/toolbars/121057/loader_121057_1.js" async></script>
977
978<!-- /end HFCM by 99 Robots -->
979<!-- HFCM by 99 Robots - Snippet # 2: TradePending -->
980<script src="https://plugin.tradepending.com/v5/snap-5xkdxc73AfRPjaRBK.js"></script>
980
981<!-- /end HFCM by 99 Robots -->
982		<style type="text/css" id="wp-custom-css">
983			/* Hide old 2024 logo */
984img.dv-homepage-president-award-logo {
985  display: none !important;
986}
987
988/* Add new 2025 logo */
989.ag-dealer-logo a::after {
990  content: "";
991  width: 70px;
992  height: 70px;
993  margin-left: 10px;
994  flex: 0 0 70px;
995  background: url("https://bucket.dealeralchemist.com/brewer-airport-toyota/pres_logo_FINAL_clean.png?auto=compress%2Cformat&ixlib=php-3.3.1") center / contain no-repeat;
996}		</style>
997		<style type="text/css">#wpadminbar, #wpadminbar .menupop .ab-sub-wrapper, .ab-sub-secondary, #wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu {background:#2a2e35}#wpadminbar a.ab-item, #wpadminbar>#wp-toolbar span.ab-label, #wpadminbar>#wp-toolbar span.noticon, #wpadminbar .ab-icon:before,#wpadminbar .ab-item:before {color:#b7bbcc}#wpadminbar .quicklinks .menupop ul li a, #wpadminbar .quicklinks .menupop ul li a strong, #wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a {color:#b7bbcc; font-size:13px !important }#wpadminbar .ab-top-menu>li.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{background:#2a2e35; color:#ffffff}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label,#wpadminbar>#wp-toolbar li.hover span.ab-label, #wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before, #wpadminbar .quicklinks .menupop .ab-sub-secondary>li .ab-item:focus a,#wpadminbar .quicklinks .menupop .ab-sub-secondary>li>a:hover {color:#ffffff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover, #wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar{color:#ffffff}#wpadminbar .menupop .ab-sub-wrapper, #wpadminbar .shortlink-input {background:#2a2e35}#wpadminbar .ab-submenu .ab-item, #wpadminbar .quicklinks .menupop ul.ab-submenu li a,#wpadminbar .quicklinks .menupop ul.ab-submenu li a.ab-item {color:#ffffff}#wpadminbar .ab-submenu .ab-item:hover, #wpadminbar .quicklinks .menupop ul.ab-submenu li a:hover,#wpadminbar .quicklinks .menupop ul.ab-submenu li a.ab-item:hover {color:#b7bbcc}.quicklinks li.wpshapere_site_title a{ outline:none; border:none;}.quicklinks li.wpshapere_site_title {width:180px !important;margin-top:3px !important;}.quicklinks li.wpshapere_site_title a{outline:none; border:none;}.quicklinks li.wpshapere_site_title a, .quicklinks li.wpshapere_site_title a:hover, .quicklinks li.wpshapere_site_title a:focus {background:url(https://bucket.dealervenom.com/assets/autogo/logos/AutoGO-Logo-White-XL.png?auto=compress%2Cformat&#038;ixlib=php-1.2.1&#038;w=400) 15px 3px no-repeat !important; text-indent:-9999px !important; width:auto;background-size:50%!important;}</style>    
998        <link rel="canonical" href="https://www.brewerairporttoyota.com/new-vehicles/" />
999    
1000</head>
1001
1002<body class="srp_main">
1003    <style>
1004	header {
1005		background: #ffffff	}
1006
1007	header,
1008	header .ag-brand-logo,
1009	header .ag-dealer-logo,
1010	header .ag-dealer-info {
1011		border-color: #555555	}
1012
1013	header .ag-dealer-logo a,
1014	header .ag-dealer-logo h3,
1015	header .ag-dealer-info a,
1016	header .ag-dealer-nav #main_nav_menu #menu-main-nav-menu>li>a {
1017		color: #000000 !important
1018	}
1019
1020	header .ag-dealer-nav #main_nav_menu #menu-main-nav-menu>li>ul a {
1021		color: #000000 !important
1022	}
1023
1024	header .ag-dealer-nav #main_nav_menu #menu-main-nav-menu>li>ul>li.dv-submenu-model-selector .dv-submenu-dealer-models p a {
1025		color: #fff !important
1026	}
1027
1028	header .ag-dealer-nav #main_nav_menu #menu-main-nav-menu>li>ul a:hover {
1029		color: #ffffff !important
1030	}
1031
1032	header #menu-main-nav-menu li.has-sub ul {
1033		background-color: #ffffff !important;
1034	}
1035
1036	header #menu-main-nav-menu li.has-sub ul a:hover {
1037		background-color: #eb0a1e !important;
1038		color: #ffffff !important
1039	}
1040
1041	@media screen and (max-width: 1255px) {
1042		header .ag-dealer-info {
1043			border-right: 1px solid var(--header-design-border-color)
1044		}
1045
1046		header .ag-dealer-nav {
1047			display: none
1048		}
1049
1050		header .ag-dealer-logo {
1051			margin-right: auto
1052		}
1053	}
1054</style>
1055<style>
1056	.ag-top-nav {
1057		padding: 12.5px 25px;
1058		background: #000000;
1059		display: flex;
1060		display: -webkit-flex;
1061		display: -ms-flexbox;
1062		flex-flow: row nowrap;
1063		align-items: center;
1064		justify-content: flex-end;
1065		position: sticky;
1066		top: 0;
1067		z-index: 150;
1068		gap: 12.5px
1069	}
1070
1071	.ag-top-nav .ag-top-nav-item a {
1072		font-size: clamp(10px, 1vw, 12px);
1073		line-height: 100%;
1074		color: #ffffff;
1075		text-transform: uppercase;
1076		text-align: center;
1077		display: inline-block;
1078		vertical-align: center;
1079	}
1080
1081	.ag-top-nav .ag-top-nav-item span.mb-bhi-display span {
1082		font-size: clamp(10px, 1vw, 12px);
1083		line-height: 100%;
1084		color: #ffffff;
1085		text-transform: uppercase;
1086		text-align: center;
1087		display: inline-block;
1088	}
1089
1090	.ag-top-nav .ag-top-nav-item span.mb-bhi-display span b {
1091		color: #00a900;
1092		font-weight: bold;
1093		margin-right: 2px;
1094	}
1095
1096	.ag-top-nav .ag-top-nav-item span.mb-bhi-display {
1097		display: inline-block;
1098		vertical-align: top;
1099	}
1100
1101
1102	.ag-top-nav-mobile {
1103		padding: 12.5px;
1104		background: #000000;
1105		display: none;
1106		flex-flow: row nowrap;
1107		align-items: center;
1108		justify-content: center;
1109		position: sticky;
1110		top: 0;
1111		z-index: 150;
1112		gap: 12.5px
1113	}
1114
1115	.ag-top-nav-mobile .ag-top-nav-item a {
1116		font-size: clamp(9px, 1vw, 12px);
1117		line-height: 100%;
1118		color: #ffffff;
1119		text-transform: uppercase;
1120		text-align: center;
1121		display: inline-block;
1122		vertical-align: center;
1123	}
1124
1125	.ag-top-nav-mobile .ag-top-nav-item span.mb-bhi-display span {
1126		font-size: clamp(9px, 1vw, 12px);
1127		line-height: 100%;
1128		color: #ffffff;
1129		text-transform: uppercase;
1130		text-align: center;
1131		display: inline-block;
1132	}
1133
1134	.ag-top-nav-mobile .ag-top-nav-item span.mb-bhi-display span b {
1135		color: #00a900;
1136		font-weight: bold;
1137		margin-right: 2px;
1138	}
1139
1140	.ag-top-nav-mobile .ag-top-nav-item span.mb-bhi-display {
1141		display: inline-block;
1142		vertical-align: top;
1143	}
1144
1145	@media screen and (max-width: 769px) {
1146		.ag-top-nav {
1147			display: none
1148		}
1149		.ag-top-nav-mobile {
1150			display: flex;
1151			display: -webkit-flex;
1152			display: -ms-flexbox;
1153		}
1154	}
1155
1156	@media print {
1157		.ag-top-nav {
1158			display: none
1159		}
1160		.ag-top-nav-mobile {
1161			display: none;
1162		}
1163	}
1164
1165	</style>
1166
1167<header>
1168			<div class="ag-brand-logo">
1169      <a data-ag-event="media_interaction" href="/" title="Toyota">
1170        <img src="https://bucket.dealervenom.com/assets/oem/toyota/logos/toyota-logo-no-tagline.png?auto=compress&format&ixlib=php-1.2.1&w=41" alt="Toyota" />
1171      </a>
1172		</div>
1173		<div class="ag-dealer-logo">
1174    <a data-ag-event="media_interaction" href="/" title="Brewer Airport Toyota">
1175      
1176              <img class="logo-desktop" src="https://bucket.dealervenom.com/brewer-airport-toyota/logo.png?auto=compress&#038;format&#038;ixlib=php-1.2.1&#038;h=50" alt="Brewer Airport Toyota" />
1177      
1178              <img class="logo-white" src="https://bucket.dealeralchemist.com/brewer-airport-toyota/brewer-logo-white-min-rev.png?auto=compress%2Cformat&ixlib=php-3.3.1&h=50" alt="Brewer Airport Toyota" />
1179            
1180	  <img class="dv-homepage-president-award-logo" src="https://bucket.dealervenom.com/brewer-airport-toyota/president-award-logo.png?auto=compress&format&ixlib=php-1.2.1&h=70" alt="President's Award" />
1181    </a>
1182	</div>
1183	<div class="ag-dealer-nav">
1184		<nav class="ag-desktop-menu" aria-label="Desktop Menu">
1185			<div id="main_nav_menu" class="menu-main-nav-menu-container"><ul id="menu-main-nav-menu" class="menu"><li id="menu-item-76682" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children has-sub"><a data-ag-event="menu_interaction" style="" data-element_type="" href="https://www.brewerairporttoyota.com/new-vehicles/" class="menu-image-title-after"><span class="menu-image-title">New</span></a>
1186<ul>
1187	<li id="menu-item-76683" class="menu-half menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="new" href="/new-vehicles/" class="menu-image-title-after"><span class="menu-image-title">Shop All New</span></a></li>
1188	<li id="menu-item-76686" class="menu-half menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="new" href="/research/" class="menu-image-title-after"><span class="menu-image-title">
1188Toyota Model Showroom</span></a></li>
1189	<li id="menu-item-76695" class="menu-half menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="new" href="/electrified-vehicles/" class="menu-image-title-after"><span class="menu-image-title">Electrified Vehicles</span></a></li>
1190	<li id="menu-item-78074" class="menu-half menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="new" href="https://www.brewerairporttoyota.com/value-trade/" class="menu-image-title-after"><span class="menu-image-title">Sell / Trade Your Vehicle</span></a></li>
1191	<li id="menu-item-76709" class="menu-half menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="new" href="/incentives/" class="menu-image-title-after"><span class="menu-image-title">Toyota Incentives</span></a></li>
1192	<li id="menu-item-76693" class="menu-half menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="new" href="/toyotacare/" class="menu-image-title-after"><span class="menu-image-title">ToyotaCare</span></a></li>
1193	<li id="menu-item-76684" class="menu-half menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="new" href="/new-vehicles/?flags.type=Special" class="menu-image-title-after"><span class="menu-image-title">New Vehicle Specials</span></a></li>
1194	<li id="menu-item-76697" class="menu-half menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="new" href="https://www.brewerairporttoyota.com/toyotacare-plus/" class="menu-image-title-after"><span class="menu-image-title">ToyotaCare Plus</span></a></li>
1195	<li id="menu-item-76688" class="menu-half menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="new" href="/vehicle-finder-service/" class="menu-image-title-after"><span class="menu-image-title">Vehicle Finder Service</span></a></li>
1196	<li id="menu-item-76694" class="menu-half menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="new" href="/toyota-safety-sense/" class="menu-image-title-after"><span class="menu-image-title">Toyota Safety Sense</span></a></li>
1197	<li id="menu-item-76718" class="dv-submenu-model-selector menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="new" href="#!" class="menu-image-title-after"><span class="menu-image-title">	
1198		<style type='text/css'>
1199		header #menu-main-nav-menu li.has-sub ul .dv-submenu-item a:hover{ background-color: #000 !important }header #menu-main-nav-menu li.has-sub ul .dv-submenu-item a:hover span{ 
1199color: #fff !important }header #menu-main-nav-menu li.has-sub ul .dv-submenu-item a span{ color: #fff !important }#menu-main-nav-menu .dv-submenu-model-selector .dv-vehicle-menu-scroll { color: #fff !important }header #menu-main-nav-menu li.has-sub ul .dv-submenu-model-selector{ background-color: var(--primary-color) !important }
1200		</style>
1201	<style>#menu-main-nav-menu .dv-submenu-model-selector .dv-vehicle-menu-model-wrapper { overflow-y: auto !important; max-height: 300px !important; width: 100%;}</style>
1202	
1202<script>
1203		$('.dv-submenu-model-selector > a').contents().unwrap();
1204		$('.dv-submenu-model-selector > span').contents().unwrap();
1205	</script>
1205
1206	<div class="dv-vehicle-menu-model-wrapper no-scroll">
1207		<div class="dv-submenu-dealer-models toyota-cars & minivans">
1208	<p><a data-ag-event="cta_interaction" href="/new-vehicles/?make=Toyota&body=Sedan&body=Van" title="Shop Cars & Minivans" class='dv-submenu-bodystyle-link'>Cars & Minivans</a></p>
1209	<div class="dv-submenu-item-wrapper">
1210			<div class="dv-submenu-item">
1211		<a href="/new-vehicles/?make=Toyota&model=Corolla&model=Corolla%20Hatchback&model=Corolla%20Hybrid" title="Corolla" data-ag-event="cta_interaction" class='dv-submenu-item-link'>
1212			<div class="dv-submenu-item-img">
1213				<img src="https://bucket.dealeralchemist.com/assets/oem/toyota/carousel/jellies/corolla-c.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=50" alt="Corolla" style="width: 50px !important"/>
1214			</div>
1215			<div class="dv-submenu-item-modelinfo">
1216				<span class="dv-submenu-item-modelname">Corolla (7)</span>
1217			</div>
1218		</a>
1219	</div>	<div class="dv-submenu-item">
1220		<a href="/new-vehicles/?make=Toyota&model=GR Corolla" title="GR Corolla" data-ag-event="cta_interaction" class='dv-submenu-item-link'>
1221			<div class="dv-submenu-item-img">
1222				<img src="https://bucket.dealeralchemist.com/assets/oem/toyota/carousel/jellies/gr-corolla-c.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=50" alt="GR Corolla" style="width: 50px !important"/>
1223			</div>
1224			<div class="dv-submenu-item-modelinfo">
1225				<span class="dv-submenu-item-modelname">GR Corolla (1)</span>
1226			</div>
1227		</a>
1228	</div>	<div class="dv-submenu-item">
1229		<a href="/research/supra/" title="GR Supra" data-ag-event="cta_interaction" class='dv-submenu-item-link'>
1230			<div class="dv-submenu-item-img">
1231				<img src="https://bucket.dealeralchemist.com/assets/oem/toyota/carousel/jellies/supra-c.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=50" alt="GR Supra" style="width: 50px !important"/>
1232			</div>
1233			<div class="dv-submenu-item-modelinfo">
1234				<span class="dv-submenu-item-modelname">GR Supra (0)</span>
1235			</div>
1236		</a>
1237	</div>	<div class="dv-submenu-item">
1238		<a href="/new-vehicles/?make=Toyota&model=GR86" title="GR86" data-ag-event="cta_interaction" class='dv-submenu-item-link'>
1239			<div class="dv-submenu-item-img">
1240				<img src="https://bucket.dealeralchemist.com/assets/oem/toyota/carousel/jellies/gr86-c.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=50" alt="GR86" style="width: 50px !important"/>
1241			</div>
1242			<div class="dv-submenu-item-modelinfo">
1243				<span class="dv-submenu-item-modelname">GR86 (1)</span>
1244			</div>
1245		</a>
1246	</div>	<div class="dv-submenu-item">
1247		<a href="/new-vehicles/?make=Toyota&model=Sienna" title="Sienna" data-ag-event="cta_interaction" class='dv-submenu-item-link'>
1248			<div class="dv-submenu-item-img">
1249				<img src="https://bucket.dealeralchemist.com/assets/oem/toyota/carousel/jellies/sienna-c.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=50" alt="Sienna" style="width: 50px !important"/>
1250			</div>
1251			<div class="dv-submenu-item-modelinfo">
1252				<span class="dv-submenu-item-modelname">Sienna (9)</span>
1253			</div>
1254		</a>
1255	</div>
1256	</div>
1257</div><div class="dv-submenu-dealer-models toyota-electrified / hybrid">
1258	<p><a data-ag-event="cta_interaction" href="/new-vehicles/?make=Toyota&fuel=Hybrid&fuel=Electric&fuel=Battery%20Electric&fuel=Plug-in%20Hybrid" title="Shop Electrified / Hybrid" class='dv-submenu-bodystyle-link'>Electrified / Hybrid</a></p>
1259	<div class="dv-submenu-item-wrapper">
1260			<div class="dv-submenu-item">
1261		<a href="/new-vehicles/?make=Toyota&model=bZ" title="bZ" data-ag-event="cta_interaction" class='dv-submenu-item-link'>
1262			<div class="dv-submenu-item-img">
1263				<img src="https://bucket.dealeralchemist.com/assets/oem/toyota/carousel/jellies/bz4x-c.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=50" alt="bZ" style="width: 50px !important"/>
1264			</div>
1265			<div class="dv-submenu-item-modelinfo">
1266				<span class="dv-submenu-item-modelname">bZ (2)</span>
1267			</div>
1268		</a>
1269	</div>	<div class="dv-submenu-item">
1270		<a href="/research/c-hr/" title="C-HR" data-ag-event="cta_interaction" class='dv-submenu-item-link'>
1271			<div class="dv-submenu-item-img">
1272				<img src="https://bucket.dealeralchemist.com/assets/oem/toyota/carousel/jellies/c-hr-c.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=50" alt="C-HR" style="width: 50px !important"/>
1273			</div>
1274			<div class="dv-submenu-item-modelinfo">
1275				<span class="dv-submenu-item-modelname">C-HR (0)</span>
1276			</div>
1277		</a>
1278	</div>	<div class="dv-submenu-item">
1279		<a href="/new-vehicles/?make=Toyota&model=Camry" title="Camry" data-ag-event="cta_interaction" class='dv-submenu-item-link'>
1280			<div class="dv-submenu-item-img">
1281				<img src="https://bucket.dealeralchemist.com/assets/oem/toyota/carousel/jellies/camry-c.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=50" alt="Camry" style="width: 50px !important"/>
1282			</div>
1283			<div class="dv-submenu-item-modelinfo">
1284				<span class="dv-submenu-item-modelname">Camry (16)</span>
1285			</div>
1286		</a>
1287	</div>	<div class="dv-submenu-item">
1288		<a href="/new-vehicles/?make=Toyota&model=Crown" title="Crown" data-ag-event="cta_interaction" class='dv-submenu-item-link'>
1289			<div class="dv-submenu-item-img">
1290				<img src="https://bucket.dealeralchemist.com/assets/oem/toyota/carousel/jellies/crown-c.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=50" alt="Crown" style="width: 50px !important"/>
1291			</div>
1292			<div class="dv-submenu-item-modelinfo">
1293				<span class="dv-submenu-item-modelname">Crown (1)</span>
1294			</div>
1295		</a>
1296	</div>	<div class="dv-submenu-item">
1297		<a href="/new-vehicles/?make=Toyota&model=Crown Signia" title="Crown Signia" data-ag-event="cta_interaction" class='dv-submenu-item-link'>
1298			<div class="dv-submenu-item-img">
1299				<img src="https://bucket.dealeralchemist.com/assets/oem/toyota/carousel/jellies/crown-signia-c.png?auto=compress%2Cformat&ixlib=php-3.3.1&width=50" alt="Crown Signia" style="width: 50px !important"/>
1300			</div>
1301			<div class="dv-submenu-item-modelinfo">
1302				<span class="dv-submenu-item-modelname">Crown Signia (7)</span>
1303			</div>
1304		</a>
1305	</div>	<div class="dv-submenu-item">
1306		<a href="/new-vehicles/?make=Toyota&model=Prius" title="Prius" data-ag-event="cta_interaction" class='dv-submenu-item-link'>
1307			<div class="dv-submenu-item-img">
1308				<img src="https://bucket.dealeralchemist.com/assets/oem/toyota/carousel/jellies/prius-c.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=50" alt="Prius" style="width: 50px !important"/>
1309			</div>
1310			<div class="dv-submenu-item-modelinfo">
1311				<span class="dv-submenu-item-modelname">Prius (2)</span>
1312			</div>
1313		</a>
1314	</div>	<div class="dv-submenu-item">
1315		<a href="/new-vehicles/?make=Toyota&model=Prius%20Plug-in%20Hybrid" title="Prius Plug-in Hybrid" data-ag-event="cta_interaction" class='dv-submenu-item-link'>
1316			<div class="dv-submenu-item-img">
1317				<img src="https://bucket.dealeralchemist.com/assets/oem/toyota/carousel/jellies/prius-prime-c.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=50" alt="Prius Plug-in Hybrid" style="width: 50px !important"/>
1318			</div>
1319			<div class="dv-submenu-item-modelinfo">
1320				<span class="dv-submenu-item-modelname">Prius Plug-in Hybrid (1)</span>
1321			</div>
1322		</a>
1323	</div>	<div class="dv-submenu-item">
1324		<a href="/new-vehicles/?make=Toyota&model=RAV4%20Plug-in%20Hybrid" title="RAV4 Plug-in Hybrid" data-ag-event="cta_interaction" class='dv-submenu-item-link'>
1325			<div class="dv-submenu-item-img">
1326				<img src="https://bucket.dealeralchemist.com/assets/oem/toyota/carousel/jellies/rav4-prime-c.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=50" alt="RAV4 Plug-in Hybrid" style="width: 50px !important"/>
1327			</div>
1328			<div class="dv-submenu-item-modelinfo">
1329				<span class="dv-submenu-item-modelname">RAV4 Plug-in Hybrid (2)</span>
1330			</div>
1331		</a>
1332	</div>
1333	</div>
1334</div><div class="dv-submenu-dealer-models toyota-crossovers / trucks / suvs">
1335	<p><a data-ag-event="cta_interaction" href="/new-vehicles/?make=Toyota&body=SUV&body=Truck&body=Crossover" title="Shop Crossovers / Trucks / SUVs" class='dv-submenu-bodystyle-link'>Crossovers / Trucks / SUVs</a></p>
1336	<div class="dv-submenu-item-wrapper">
1337			<div class="dv-submenu-item">
1338		<a href="/new-vehicles/?make=Toyota&model=4Runner&model=4Runner%20i-FORCE%20MAX" title="4Runner" data-ag-event="cta_interaction" class='dv-submenu-item-link'>
1339			<div class="dv-submenu-item-img">
1340				<img src="https://bucket.dealeralchemist.com/assets/oem/toyota/carousel/jellies/4runner-w.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=50" alt="4Runner" style="width: 50px !important"/>
1341			</div>
1342			<div class="dv-submenu-item-modelinfo">
1343				<span class="dv-submenu-item-modelname">4Runner (12)</span>
1344			</div>
1345		</a>
1346	</div>	<div class="dv-submenu-item">
1347		<a href="/new-vehicles/?make=Toyota&model=Corolla%20Cross&model=Corolla%20Cross%20Hybrid" title="Corolla Cross" data-ag-event="cta_interaction" class='dv-submenu-item-link'>
1348			<div class="dv-submenu-item-img">
1349				<img src="https://bucket.dealeralchemist.com/assets/oem/toyota/carousel/jellies/corolla-cross-c.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=50" alt="Corolla Cross" style="width: 50px !important"/>
1350			</div>
1351			<div class="dv-submenu-item-modelinfo">
1352				<span class="dv-submenu-item-modelname">Corolla Cross (13)</span>
1353			</div>
1354		</a>
1355	</div>	<div class="dv-submenu-item">
1356		<a href="/new-vehicles/?make=Toyota&model=Grand%20Highlander&model=Grand%20Highlander%20Hybrid" title="Grand Highlander" data-ag-event="cta_interaction" class='dv-submenu-item-link'>
1357			<div class="dv-submenu-item-img">
1358				<img src="https://bucket.dealeralchemist.com/assets/oem/toyota/carousel/jellies/grand-highlander-c.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=50" alt="Grand Highlander" style="width: 50px !important"/>
1359			</div>
1360			<div class="dv-submenu-item-modelinfo">
1361				<span class="dv-submenu-item-modelname">Grand Highlander (15)</span>
1362			</div>
1363		</a>
1364	</div>	<div class="dv-submenu-item">
1365		<a href="/new-vehicles/?make=Toyota&model=Highlander&model=Highlander%20Hybrid" title="Highlander" data-ag-event="cta_interaction" class='dv-submenu-item-link'>
1366			<div class="dv-submenu-item-img">
1367				<img src="https://bucket.dealeralchemist.com/assets/oem/toyota/carousel/jellies/highlander-c.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=50" alt="Highlander" style="width: 50px !important"/>
1368			</div>
1369			<div class="dv-submenu-item-modelinfo">
1370				<span class="dv-submenu-item-modelname">Highlander (5)</span>
1371			</div>
1372		</a>
1373	</div>	<div class="dv-submenu-item">
1374		<a href="/new-vehicles/?make=Toyota&model=Land Cruiser" title="Land Cruiser" data-ag-event="cta_interaction" class='dv-submenu-item-link'>
1375			<div class="dv-submenu-item-img">
1376				<img src="https://bucket.dealeralchemist.com/assets/oem/toyota/carousel/jellies/land-cruiser-c.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=50" alt="Land Cruiser" style="width: 50px !important"/>
1377			</div>
1378			<div class="dv-submenu-item-modelinfo">
1379				<span class="dv-submenu-item-modelname">Land Cruiser (6)</span>
1380			</div>
1381		</a>
1382	</div>	<div class="dv-submenu-item">
1383		<a href="/new-vehicles/?make=Toyota&model=RAV4&model=RAV4%20Hybrid" title="RAV4" data-ag-event="cta_interaction" class='dv-submenu-item-link'>
1384			<div class="dv-submenu-item-img">
1385				<img src="https://bucket.dealeralchemist.com/assets/oem/toyota/carousel/jellies/rav4-c.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=50" alt="RAV4" style="width: 50px !important"/>
1386			</div>
1387			<div class="dv-submenu-item-modelinfo">
1388				<span class="dv-submenu-item-modelname">RAV4 (27)</span>
1389			</div>
1390		</a>
1391	</div>	<div class="dv-submenu-item">
1392		<a href="/new-vehicles/?make=Toyota&model=Sequoia" title="Sequoia" data-ag-event="cta_interaction" class='dv-submenu-item-link'>
1393			<div class="dv-submenu-item-img">
1394				<img src="https://bucket.dealeralchemist.com/assets/oem/toyota/carousel/jellies/sequoia-c.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=50" alt="Sequoia" style="width: 50px !important"/>
1395			</div>
1396			<div class="dv-submenu-item-modelinfo">
1397				<span class="dv-submenu-item-modelname">Sequoia (5)</span>
1398			</div>
1399		</a>
1400	</div>	<div class="dv-submenu-item">
1401		<a href="/new-vehicles/?make=Toyota&model=Tacoma&model=Tacoma%20i-FORCE%20MAX" title="Tacoma" data-ag-event="cta_interaction" class='dv-submenu-item-link'>
1402			<div class="dv-submenu-item-img">
1403				<img src="https://bucket.dealeralchemist.com/assets/oem/toyota/carousel/jellies/tacoma-c.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=50" alt="Tacoma" style="width: 50px !important"/>
1404			</div>
1405			<div class="dv-submenu-item-modelinfo">
1406				<span class="dv-submenu-item-modelname">Tacoma (49)</span>
1407			</div>
1408		</a>
1409	</div>	<div class="dv-submenu-item">
1410		<a href="/new-vehicles/?make=Toyota&model=Tundra&model=Tundra%20i-FORCE%20MAX" title="Tundra" data-ag-event="cta_interaction" class='dv-submenu-item-link'>
1411			<div class="dv-submenu-item-img">
1412				<img src="https://bucket.dealeralchemist.com/assets/oem/toyota/carousel/jellies/tundra-c.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=50" alt="Tundra" style="width: 50px !important"/>
1413			</div>
1414			<div class="dv-submenu-item-modelinfo">
1415				<span class="dv-submenu-item-modelname">Tundra (21)</span>
1416			</div>
1417		</a>
1418	</div>
1419	</div>
1420</div>
1421	</div>
1422	
1422<script>
1423		$('.dv-submenu-model-selector a:empty').remove();
1424		$('.dv-vehicle-menu-model-wrapper > a:first-of-type').remove();
1425		$('.dv-submenu-model-selector .dv-submenu-dealer-models > a:first-child').contents().unwrap();
1426	</script>
1426
1427	</span></a></li>
1428</ul>
1429</li>
1430<li id="menu-item-82843" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="" href="https://smartpath.brewerairporttoyota.com/how-it-works-service?dealerCd=37194&amp;source=t3" class="menu-image-title-after"><span class="menu-image-title">SmartPath</span></a></li>
1431<li id="menu-item-76703" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children has-sub"><a data-ag-event="menu_interaction" style="" data-element_type="" href="/used-vehicles/" class="menu-image-title-after"><span class="menu-image-title">Used</span></a>
1432<ul>
1433	<li id="menu-item-76719" class="menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="used" href="https://www.brewerairporttoyota.com/used-vehicles/" class="menu-image-title-after"><span class="menu-image-title">Shop All Pre-Owned</span></a></li>
1434	<li id="menu-item-76708" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="used" href="/used-vehicles/?flags.type=Special" class="menu-image-title-after"><span class="menu-image-title">Used Vehicle Specials</span></a></li>
1435	<li id="menu-item-78110" class="menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="used" href="https://www.brewerairporttoyota.com/certified-vehicle-information/" class="menu-image-title-after"><span class="menu-image-title">Why Certified?</span></a></li>
1436	<li id="menu-item-76702" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="used" href="/used-vehicles/?finalPriceRange=$10,000%20and%20Below" class="menu-image-title-after"><span class="menu-image-title">Vehicles Under $10K</span></a></li>
1437	<li id="menu-item-76710" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="used" href="/value-trade/" class="menu-image-title-after"><span class="menu-image-title">Sell / Trade Your Vehicle</span></a></li>
1438	<li id="menu-item-78072" class="menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="used" href="https://www.brewerairporttoyota.com/vehicle-finder-service/" class="menu-image-title-after"><span class="menu-image-title">Vehicle Finder Service</span></a></li>
1439</ul>
1440</li>
1441<li id="menu-item-76712" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children has-sub"><a data-ag-event="menu_interaction" style="" data-element_type="" href="/service/" class="menu-image-title-after"><span class="menu-image-title">Service &#038; Parts</span></a>
1442<ul>
1443	<li id="menu-item-76724" class="menu-half menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="service-&#038;-parts" href="/service/" class="menu-image-title-after"><span class="menu-image-title">Service Center</span></a></li>
1444	<li id="menu-item-76722" class="menu-half menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="service-&#038;-parts" href="/parts/" class="menu-image-title-after"><span class="menu-image-title">Parts Center</span></a></li>
1445	<li id="menu-item-76725" class="menu-half menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="service-&#038;-parts" href="/service/schedule-service/" class="menu-image-title-after"><span class="menu-image-title">Schedule Service</span></a></li>
1446	<li id="menu-item-76740" class="menu-half menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="service-&#038;-parts" href="/parts/order-parts/" class="menu-image-title-after"><span class="menu-image-title">Order Parts</span></a></li>
1447	<li id="menu-item-76783" class="menu-half menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="service-&#038;-parts" href="https://www.brewerairporttoyota.com/specials/service/" class="menu-image-title-after"><span class="menu-image-title">Service &amp; Parts Specials</span></a></li>
1448	<li id="menu-item-76727" class="menu-half menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="service-&#038;-parts" href="/service/tires/" class="menu-image-title-after"><span class="menu-image-title">Tires</span></a></li>
1449	<li id="menu-item-76728" class="menu-half menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="service-&#038;-parts" href="https://www.brewerairporttoyota.com/service/service-care/" class="menu-image-title-after"><span class="menu-image-title">Toyota Service Care</span></a></li>
1450	<li id="menu-item-76754" class="menu-half menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="service-&#038;-parts" href="/service/brakes/" class="menu-image-title-after"><span class="menu-image-title">Brakes</span></a></li>
1451	<li id="menu-item-76760" class="menu-half menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="service-&#038;-parts" href="https://www.brewerairporttoyota.com/toyotacare-plus/" class="menu-image-title-after"><span class="menu-image-title">ToyotaCare Plus</span></a></li>
1452	<li id="menu-item-76726" class="menu-half menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="service-&#038;-parts" href="/service/oil-change/" class="menu-image-title-after"><span class="menu-image-title">Oil Change</span></a></li>
1453	<li id="menu-item-76759" class="menu-half menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="service-&#038;-parts" href="https://www.brewerairporttoyota.com/toyota-express-maintenance/" class="menu-image-title-after"><span class="menu-image-title">Toyota Express Maintenance</span></a></li>
1454	<li id="menu-item-76755" class="menu-half menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="service-&#038;-parts" href="/service/batteries/" class="menu-image-title-after"><span class="menu-image-title">Batteries</span></a></li>
1455	<li id="menu-item-76756" class="menu-half menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="service-&#038;-parts" href="/service/recalls/" class="menu-image-title-after"><span class="menu-image-title">Check Vehicle for Recalls</span></a></li>
1456</ul>
1457</li>
1458<li id="menu-item-76707" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children has-sub"><a data-ag-event="menu_interaction" style="" data-element_type="" href="https://www.brewerairporttoyota.com/finance/" class="menu-image-title-after"><span class="menu-image-title">Finance</span></a>
1459<ul>
1460	<li id="menu-item-76713" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="finance" href="/finance/" class="menu-image-title-after"><span class="menu-image-title">Finance Center</span></a></li>
1461	<li id="menu-item-76714" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="finance" href="/finance/finance-application/" class="menu-image-title-after"><span class="menu-image-title">Finance Application</span></a></li>
1462	<li id="menu-item-76720" class="menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="finance" href="https://www.brewerairporttoyota.com/finance/payments-calculator/" class="menu-image-title-after"><span class="menu-image-title">Payment Calculator</span></a></li>
1463	<li id="menu-item-76715" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="finance" href="/lease-trade-in/" class="menu-image-title-after"><span class="menu-image-title">Lease Trade In</span></a></li>
1464	<li id="menu-item-76723" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="finance" href="/finance/buy-vs-lease/" class="menu-image-title-after"><span class="menu-image-title">Buy vs Lease</span></a></li>
1465	<li id="menu-item-76696" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="finance" href="/college-rebate-program/" class="menu-image-title-after"><span class="menu-image-title">College Rebate Program</span></a></li>
1466	<li id="menu-item-76717" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="finance" href="/military-rebate-program/" class="menu-image-title-after"><span class="menu-image-title">Military Rebate Program</span></a></li>
1467</ul>
1468</li>
1469<li id="menu-item-76745" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children has-sub"><a data-ag-event="menu_interaction" style="" data-element_type="" href="/contact/" class="menu-image-title-after"><span class="menu-image-title">About</span></a>
1470<ul>
1471	<li id="menu-item-76750" class="menu-half menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="about" href="/about/" class="menu-image-title-after"><span class="menu-image-title">About Us</span></a></li>
1472	<li id="menu-item-76757" class="menu-half menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="about" href="https://www.brewerairporttoyota.com/reviews/" class="menu-image-title-after"><span class="menu-image-title">Reviews</span></a></li>
1473	<li id="menu-item-76749" class="menu-half menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="about" href="/contact/" class="menu-image-title-after"><span class="menu-image-title">Contact Us</span></a></li>
1474	<li id="menu-item-78111" class="menu-half menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="about" href="https://www.brewerairporttoyota.com/the-brewer-airport-toyota-advantage/" class="menu-image-title-after"><span class="menu-image-title">Why Buy?</span></a></li>
1475	<li id="menu-item-77502" class="menu-half menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="about" href="https://www.brewerairporttoyota.com/hours-and-directions/" class="menu-image-title-after"><span class="menu-image-title">Hours &amp; Directions</span></a></li>
1476	<li id="menu-item-78078" class="menu-half menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="about" href="https://www.brewerairporttoyota.com/service/service-amenities/" class="menu-image-title-after"><span class="menu-image-title">VIP Program</span></a></li>
1477	<li id="menu-item-76751" class="menu-half menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="about" href="/meet-the-team/" class="menu-image-title-after"><span class="menu-image-title">Meet Our Team</span></a></li>
1478	<li id="menu-item-78077" class="menu-half menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="about" href="https://www.brewerairporttoyota.com/community/" class="menu-image-title-after"><span class="menu-image-title">Community</span></a></li>
1479	<li id="menu-item-76752" class="menu-half menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="about" href="/careers/" class="menu-image-title-after"><span class="menu-image-title">Careers</span></a></li>
1480	<li id="menu-item-78079" class="menu-half menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="about" href="https://www.brewerairporttoyota.com/community/food-drive/" class="menu-image-title-after"><span class="menu-image-title">Food Drive</span></a></li>
1481	<li id="menu-item-76753" class="menu-half menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="about" href="/privacy-policy/" class="menu-image-title-after"><span class="menu-image-title">Privacy Policy</span></a></li>
1482</ul>
1483</li>
1484</ul></div>		</nav>
1485	</div>
1486	<div class="ag-dealer-reviews">
1487		<a data-ag-event="cta_interaction" href="/reviews" title="Google Reviews">
1488							
1488<script type="application/ld+json">
1489{
1490	"@context": "https://schema.org/",
1491	"@type": "AggregateRating",
1492	"itemReviewed": {
1493		"@type": "AutomotiveBusiness",
1494		"image": "https://bucket.dealervenom.com/assets/oem/toyota/favicon/toyota-red-favicon.ico?auto=compres&format&ixlib=php-1.2.1&width=16",
1495		"name": "Brewer Airport Toyota",
1496		"telephone": "412.265.4743",
1497		"address" : {
1498			"@type": "PostalAddress",
1499			"streetAddress": "8900 University Blvd",
1500			"addressLocality": "PA",
1501			"postalCode": "15108",
1502			"addressCountry": "US"
1503		}
1504	},
1505	"ratingValue": "4.6",
1506	"bestRating": "5",
1507	"ratingCount": "2030"
1508}
1509</script>
1509
1510
1511<div class="dv-reviews-badge " style="display: none;">
1512	<div class="dv-reviews-badge-col">
1513		<img src="https://bucket.dealeralchemist.com/assets/reviews/google_small_icon.png?auto=compress%2Cformat&ixlib=php-1.2.1" alt="Google Logo">
1514		<p class="dv-reviews-badge-score">4.6</p>
1515	</div>
1516	<div class="dv-reviews-badge-col dv-reviews-badge-col-stack">
1517		<p class="dv-review-badge-rating"><i class= 'fas fa-star'></i><i class= 'fas fa-star'></i><i class= 'fas fa-star'></i><i class= 'fas fa-star'></i><i class='fas fa-star-half-alt'></i></p>
1518		<p class="dv-review-badge-count">2030 Reviews</p>
1519	</div>
1520</div>					</a>
1521	</div>
1522	<div class="ag-dealer-info">
1523		<a data-ag-event="clickToCall|Sales" href="tel:412.265.4743" title="Call Brewer Airport Toyota">
1524			412.265.4743		</a>
1525		<a data-ag-event="getDirections" href="/hours-and-directions/" title="Get hours & directions to Brewer Airport Toyota">
1526			<span data-fetch-shortcode data-code="mbhi" data-arguments="location=&quot;Dealership&quot; includetime=&quot;&quot; includeday=&quot;&quot; format=&quot;12&quot; approximation=&quot;1&quot; openingsoonmessagetime=&quot;2700&quot; closingsoonmessagetime=&quot;2700&quot; openmessage=&quot;&amp;lt;span class=&amp;quot;mbhi_dv_header mbhi_open&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Open&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt; {from} - {to}&quot; closedmessage=&quot;&amp;lt;span class=&amp;quot;mbhi_dv_header mbhi_closed&amp;quot;&amp;gt;Now Closed&amp;lt;/span&amp;gt;&quot; openingsoonmessage=&quot;Opening in {x} minutes&quot; closingsoonmessage=&quot;Closing in {x} minutes&quot; removezeroes=&quot;1&quot;  extra_classes=&quot;&quot; show_specialdate_messages=&quot;1&quot; show_vacation_messages=&quot;&quot; vacation_message_closed=&quot;&quot; specialdate_message_open=&quot;&quot; specialdate_message_closed=&quot;&quot; from=&quot;&quot; to=&quot;&quot; loading=&quot;Welcome!&quot; display=&quot;consolidated&quot;">Welcome!</span>		</a>
1527	</div>
1528		<div class="nav-below-btn-toggle">
1529		<div id="nav-icon-wrapper">
1530			<span style="background-color: #000000"></span>
1531			<span style="background-color: #000000"></span>
1532			<span style="background-color: #000000"></span>
1533			<span style="background-color: #000000"></span>
1534		</div>
1535	</div></header>
1536
1537<style>
1538	.dv-header-lower {
1539		display: none;
1540		background: var(--primary-color);
1541	}
1542
1543	.dv-header-lower:hover {
1544		cursor: pointer;
1545	}
1546
1547	@media screen and (max-width: 768px) {
1548		.dv-header-lower.dv-header-lower-closed {
1549			display: none !important
1550		}
1551
1552		.dv-header-lower {
1553			display: flex;
1554			display: -webkit-flex;
1555			display: -ms-flexbox;
1556			align-items: center;
1557			justify-content: center;
1558			text-align: center;
1559			width: 100%;
1560			height: auto;
1561			position: sticky;
1562			z-index: 100;
1563			left: 0;
1564			right: 0;
1565			top: 75px !important
1566		}
1567	}
1568
1569	.dv-header-lower .dv-header-col {
1570		flex: 1 1 33.333%;
1571		width: 33.333%;
1572	}
1573
1574	.dv-header-lower .dv-header-col.hide {
1575		display: none
1576	}
1577
1578	.dv-header-lower .dv-header-col:not(:first-child) {
1579		position: relative;
1580	}
1581
1582	.dv-header-lower .dv-header-col:not(:first-child):before {
1583		position: absolute;
1584		content: '';
1585		left: 0;
1586		height: 50%;
1587		top: 25%;
1588		z-index: 0;
1589		width: 1px;
1590		background-color: #fff;
1591	}
1592
1593	.dv-header-lower .dv-header-col a {
1594		padding: 15px 5px;
1595		font-size: 12px;
1596		display: block;
1597		color: #ffffff;
1598		text-decoration: none;
1599		font-family: inherit;
1600		text-decoration: none;
1601	}
1602
1603	.dv-header-lower .dv-header-col a i {
1604		margin-right: 5px;
1605	}
1606
1607	/*
1608	 *	Search Overlay
1609	*/
1610
1611	.ag-header-search-overlay {
1612		height: 0;
1613		width: 100%;
1614		background: var(--primary-color);
1615		opacity: 0;
1616		visibility: hidden;
1617		transition: opacity 200ms ease-out;
1618		-webkit-transition: opacity 200ms ease-out;
1619		-moz-transition: opacity 200ms ease-out;
1620		box-sizing: border-box;
1621	}
1622
1623	.ag-header-search-overlay * {
1624		box-sizing: border-box;
1625	}
1626
1627	.ag-header-search-overlay .ag-header-search-overlay-wrapper {
1628		display: flex;
1629		display: -webkit-flex;
1630		display: -ms-flexbox;
1631	}
1632
1633	.ag-header-search-overlay.active {
1634		position: fixed;
1635		height: auto;
1636		padding: 25px;
1637		top: 75px;
1638		width: 100%;
1639		z-index: 150;
1640		visibility: visible;
1641		background: #fff;
1642		display: flex;
1643		display: -webkit-flex;
1644		display: -ms-flexbox;
1645		flex-flow: column nowrap;
1646		align-items: center;
1647		justify-content: center;
1648		opacity: 1;
1649		box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.1);
1650		transition: opacity 200ms ease-in;
1651		-webkit-transition: opacity 200ms ease-in;
1652		-moz-transition: opacity 200ms ease-in;
1653	}
1654
1655	.ag-header-search-overlay .ag-header-search-overlay-container {
1656		padding: 0;
1657		margin: 0;
1658		position: relative;
1659		width: 80%
1660	}
1661
1662	.ag-header-search-overlay .ag-header-search-overlay-container .ag-header-search-overlay-close {
1663		padding: 0 12.5px;
1664		width: fit-content;
1665		background-color: var(--primary-color);
1666		display: flex;
1667		display: -webkit-flex;
1668		display: -ms-flexbox;
1669		flex-flow: column nowrap;
1670		align-items: center;
1671		justify-content: center;
1672	}
1673
1674	.ag-header-search-overlay .ag-header-search-overlay-container .ag-header-search-overlay-close:hover {
1675		cursor: pointer;
1676		background-color: var(--secondary-color)
1677	}
1678
1679	.ag-header-search-overlay .ag-header-search-overlay-container .ag-header-search-overlay-close span {
1680		color: #fff;
1681		font-size: 10px;
1682		text-transform: uppercase;
1683	}
1684
1685	.ag-header-search-overlay .ag-header-search-cta-group {
1686		display: flex;
1687		display: -webkit-flex;
1688		display: -ms-flexbox;
1689		flex-flow: row nowrap;
1690		justify-content: center;
1691		align-items: center;
1692		gap: 25px;
1693		padding-top: 25px;
1694	}
1695
1696	.ag-header-search-overlay .ag-header-search-cta-group a {
1697		display: block;
1698		background-color: var(--primary-color);
1699		color: #fff;
1700		border: 0;
1701		padding: 12.5px 25px;
1702		font-size: 12px;
1703	}
1704
1705	.ag-header-search-overlay .ag-header-search-cta-group a:hover {
1706		background-color: var(--secondary-color)
1707	}
1708
1709	@media screen and (max-width: 768px) {
1710		.ag-header-search-overlay.active {
1711			top: 75px;
1712		}
1713
1714		.ag-header-search-overlay .ag-header-search-overlay-container {
1715			width: 100%
1716		}
1717	}
1718
1719	@media screen and (max-width: 480px) {
1720		.ag-header-search-overlay .ag-header-search-cta-group a {
1721			padding: 12.5px
1722		}
1723	}
1724</style>
1725
1726<div class="dv-header-lower" style="top: 75px">
1727						<div class="dv-header-col">
1728													<a href="tel:412.265.4743"
1729					   target="_self"
1730					   title="Sales"
1731					   data-ag-event="clickToCall|Sales">
1732					   <i class="fa fa-phone"></i>
1733					   Sales					</a>
1734							</div>
1735								<div class="dv-header-col">
1736													<a href="tel:412.265.4756"
1737					   target="_self"
1738					   title="Service"
1739					   data-ag-event="clickToCall|Service">
1740					   <i class="fa fa-phone"></i>
1741					   Service					</a>
1742							</div>
1743								<div class="dv-header-col">
1744													<a href="https://maps.app.goo.gl/1J7BChWkZVkUyzg67"
1745					   target="_blank"
1746					   title="Get Directions"
1747					   data-ag-event="getDirections">
1748					   <i class="fa fas fa-map-marker-alt"></i>
1749					   Get Directions					</a>
1750							</div>
1751			</div>
1752
1753<link rel="preload" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/header/header-pulldown.css?v=1.761.775" as="style">
1754<link rel="stylesheet" href="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/header/header-pulldown.css?v=1.761.775" type="text/css">
1755<style>
1756.dv-fw-search .dv-fw-mobile-menu-wrapper>ul.dv-fw-mobile-menu-selector,
1757.dv-fw-search .dv-fw-mobile-menu-wrapper>ul .dv-fw-mobile-menu-item {
1758	background-color: #eb0a1e;
1759}
1760
1761.dv-fw-search .dv-fw-mobile-menu-wrapper>ul .dv-fw-mobile-menu-item.active {
1762	background-color: #000000;
1763}
1764
1765.dv-fw-search .dv-fw-mobile-menu-wrapper>ul .dv-fw-mobile-menu-item>a {
1766	border-color: #ffffff;
1767	color: #fff;
1768}
1769
1770.dv-fw-search .dv-fw-mobile-menu-wrapper .dv-mobile-menu-btn {
1771	color: #fff !important;
1772	background: #eb0a1e !important;
1773}
1774
1775.dv-fw-search .dv-fw-mobile-menu-wrapper .dv-mobile-menu-btn:hover {
1776	color: #fff !important;
1777	background: #000000 !important;
1778}
1779
1780@media screen and (max-width: 1255px) {
1781	.dv-fw-search {
1782		background: transparent;
1783		min-width: 400px;
1784		width: 33.333%;
1785	}
1786
1787	/* .dv-fw-search.dv-toggle-open {
1788		border-top: 1px solid transparent;
1789	} */
1790	body.mobile-menu-open {
1791		position: relative;
1792	}
1793
1794	body.mobile-menu-open:before {
1795		content: '';
1796		position: absolute;
1797		top: 0;
1798		left: 0;
1799		width: 100%;
1800		height: 100%;
1801		background: rgba(0, 0, 0, 0.5);
1802		z-index: 3;
1803	}
1804
1805	.dv-fw-search .dv-fw-search-wrapper {
1806		display: none;
1807	}
1808
1809	.dv-fw-search .dv-fw-mobile-menu-wrapper {
1810		display: flex;
1811		background: #fff;
1812	}
1813
1814	.dv-desktop-menu,
1815	#desktop-nav {
1816		display: none !important;
1817	}
1818}
1819
1820@media screen and (max-width: 768px) {
1821	.dv-fw-search {
1822		min-width: 100%;
1823		width: 100%;
1824	}
1825}
1826</style>
1827<style>
1828/* min width redux */
1829@media screen and (min-width: calc(1255px + 1px)) {
1830
1831	.dv-fw-search,
1832	.nav-below-btn-toggle {
1833		display: none !important;
1834	}
1835}
1836
1837@media screen and (max-width: 1255px) {
1838	.dv-desktop-menu #desktop-nav {
1839		display: none !important;
1840	}
1841}
1842</style>
1843
1844<div class="dv-fw-search">
1845		<div class="dv-fw-search-wrapper">
1846			</div>
1847		<div class="dv-fw-mobile-menu-wrapper">
1848		<ul class="dv-fw-mobile-menu-selector">
1849			<li class="dv-fw-mobile-menu-item active">
1850				<a href="#" title="Mobile Menu">
1851					<span><i class="fal fa-bars"></i></span>
1852					<span>Menu</span>
1853				</a>
1854			</li>
1855						<li class="dv-fw-mobile-menu-item">
1856				<a href="#" title="Mobile Menu">
1857					<span><i class="fal fa-phone"></i></span>
1858					<span>Call</span>
1859				</a>
1860			</li>
1861						<li class="dv-fw-mobile-menu-item">
1862				<a href="#" title="Mobile Menu">
1863					<span><i class="fal fa-map-marker-alt"></i></span>
1864					<span>Location</span>
1865				</a>
1866			</li>
1867						<li class="dv-fw-mobile-menu-item">
1868				<a href="#" title="Mobile Menu">
1869					<span><i class="fal fa-clock"></i></span>
1870					<span>Hours</span>
1871				</a>
1872			</li>
1873					</ul>
1874		<ul class="dv-fw-mobile-menu-content">
1875			<li class="dv-fw-mobile-menu-item-content active">
1876				<div class="dv-mobile-menu-inner">
1877					<nav class="dv-mobile-menu" aria-label="Mobile Menu">
1878						<div id="mobile_main_nav_menu" class="menu-mobile-menu-container"><ul id="menu-mobile-menu" class="menu"><li id="menu-item-76662" class="menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="" href="https://www.brewerairporttoyota.com/new-vehicles/" class="menu-image-title-after"><span class="menu-image-title">New Vehicles</span></a></li>
1879<li id="menu-item-76677" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="" href="/used-vehicles/" class="menu-image-title-after"><span class="menu-image-title">Used Vehicles</span></a></li>
1880<li id="menu-item-82844" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="" href="https://smartpath.brewerairporttoyota.com/how-it-works-service?dealerCd=37194&amp;source=t3" class="menu-image-title-after"><span class="menu-image-title">SmartPath</span></a></li>
1881<li id="menu-item-76666" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="" href="/value-trade/" class="menu-image-title-after"><span class="menu-image-title">Sell / Trade Your Vehicle</span></a></li>
1882<li id="menu-item-76665" class="menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="" href="https://www.brewerairporttoyota.com/vehicle-finder-service/" class="menu-image-title-after"><span class="menu-image-title">Vehicle Finder Service</span></a></li>
1883<li id="menu-item-76671" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children has-sub"><a data-ag-event="menu_interaction" style="" data-element_type="" href="#/" class="menu-image-title-after"><span class="menu-image-title">Service &#038; Parts</span></a>
1884<ul>
1885	<li id="menu-item-76669" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="service-&#038;-parts" href="/service/" class="menu-image-title-after"><span class="menu-image-title">Service Center</span></a></li>
1886	<li id="menu-item-76670" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="service-&#038;-parts" href="/service/schedule-service/" class="menu-image-title-after"><span class="menu-image-title">Schedule Service</span></a></li>
1887	<li id="menu-item-76672" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="service-&#038;-parts" href="/parts/" class="menu-image-title-after"><span class="menu-image-title">Parts Center</span></a></li>
1888	<li id="menu-item-76673" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="service-&#038;-parts" href="/parts/order-parts/" class="menu-image-title-after"><span class="menu-image-title">Order Parts</span></a></li>
1889	<li id="menu-item-76780" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="service-&#038;-parts" href="/service/recalls/" class="menu-image-title-after"><span class="menu-image-title">Check For Recalls</span></a></li>
1890</ul>
1891</li>
1892<li id="menu-item-76663" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children has-sub"><a data-ag-event="menu_interaction" style="" data-element_type="" href="#/" class="menu-image-title-after"><span class="menu-image-title">Finance</span></a>
1893<ul>
1894	<li id="menu-item-76668" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="finance" href="/finance/" class="menu-image-title-after"><span class="menu-image-title">Finance Center</span></a></li>
1895	<li id="menu-item-76667" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="finance" href="/finance/finance-application/" class="menu-image-title-after"><span class="menu-image-title">Finance Application</span></a></li>
1896	<li id="menu-item-77504" class="menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="finance" href="https://www.brewerairporttoyota.com/finance/payments-calculator/" class="menu-image-title-after"><span class="menu-image-title">Payment Calculator</span></a></li>
1897</ul>
1898</li>
1899<li id="menu-item-76664" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children has-sub"><a data-ag-event="menu_interaction" style="" data-element_type="" href="#/" class="menu-image-title-after"><span class="menu-image-title">Specials</span></a>
1900<ul>
1901	<li id="menu-item-76674" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="specials" href="/incentives/" class="menu-image-title-after"><span class="menu-image-title">Toyota Incentives</span></a></li>
1902	<li id="menu-item-76675" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="specials" href="/new-vehicles/?flags.type=Special" class="menu-image-title-after"><span class="menu-image-title">New Vehicle Specials</span></a></li>
1903	<li id="menu-item-76676" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="specials" href="/used-vehicles/?flags.type=Special" class="menu-image-title-after"><span class="menu-image-title">Used Vehicle Specials</span></a></li>
1904	<li id="menu-item-76784" class="menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="specials" href="https://www.brewerairporttoyota.com/specials/service/" class="menu-image-title-after"><span class="menu-image-title">Service &amp; Parts Specials</span></a></li>
1905	<li id="menu-item-78104" class="menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="specials" href="https://www.brewerairporttoyota.com/college-rebate-program/" class="menu-image-title-after"><span class="menu-image-title">College Rebate Program</span></a></li>
1906	<li id="menu-item-78105" class="menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="specials" href="https://www.brewerairporttoyota.com/military-rebate-program/" class="menu-image-title-after"><span class="menu-image-title">Military Rebate Program</span></a></li>
1907</ul>
1908</li>
1909<li id="menu-item-76685" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children has-sub"><a data-ag-event="menu_interaction" style="" data-element_type="" href="#/" class="menu-image-title-after"><span class="menu-image-title">About Us</span></a>
1910<ul>
1911	<li id="menu-item-76690" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="about-us" href="/about/" class="menu-image-title-after"><span class="menu-image-title">About Us</span></a></li>
1912	<li id="menu-item-76689" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="about-us" href="/contact/" class="menu-image-title-after"><span class="menu-image-title">Contact Us</span></a></li>
1913	<li id="menu-item-77506" class="menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="about-us" href="https://www.brewerairporttoyota.com/hours-and-directions/" class="menu-image-title-after"><span class="menu-image-title">Hours &amp; Directions</span></a></li>
1914	<li id="menu-item-76691" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="about-us" href="/meet-the-team/" class="menu-image-title-after"><span class="menu-image-title">Meet Our Team</span></a></li>
1915	<li id="menu-item-76692" class="menu-item menu-item-type-custom menu-item-object-custom"><a data-ag-event="menu_interaction" style="" data-element_type="about-us" href="/careers/" class="menu-image-title-after"><span class="menu-image-title">Careers</span></a></li>
1916	<li id="menu-item-77507" class="menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="about-us" href="https://www.brewerairporttoyota.com/reviews/" class="menu-image-title-after"><span class="menu-image-title">Reviews</span></a></li>
1917	<li id="menu-item-78112" class="menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="about-us" href="https://www.brewerairporttoyota.com/the-brewer-airport-toyota-advantage/" class="menu-image-title-after"><span class="menu-image-title">Why Buy</span></a></li>
1918	<li id="menu-item-78108" class="menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="about-us" href="https://www.brewerairporttoyota.com/service/service-amenities/" class="menu-image-title-after"><span class="menu-image-title">VIP Program</span></a></li>
1919	<li id="menu-item-78106" class="menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="about-us" href="https://www.brewerairporttoyota.com/community/" class="menu-image-title-after"><span class="menu-image-title">Community</span></a></li>
1920	<li id="menu-item-78107" class="menu-item menu-item-type-post_type menu-item-object-page"><a data-ag-event="menu_interaction" style="" data-element_type="about-us" href="https://www.brewerairporttoyota.com/community/food-drive/" class="menu-image-title-after"><span class="menu-image-title">Food Drive</span></a></li>
1921	<li id="menu-item-77505" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-privacy-policy"><a data-ag-event="menu_interaction" style="" data-element_type="about-us" href="https://www.brewerairporttoyota.com/privacy-policy/" class="menu-image-title-after"><span class="menu-image-title">Privacy Policy</span></a></li>
1922</ul>
1923</li>
1924</ul></div>					</nav>
1925				</div>
1926			</li>
1927						<li class="dv-fw-mobile-menu-item-content">
1928				<div class="dv-mobile-menu-inner">
1929					<div class="dv-mobile-menu-inner-header">Call</div>
1930					<div class="dv-mobile-menu-inner-body dv-dealer-call">
1931						<ul>
1932	<li>
1933		<span>Sales</span>
1934		<a href="tel:412.265.4743" title="Call Brewer Airport Toyota Sales 412.265.4743" data-aga-event="clickToCall" data-aga-event-set-prop="clickToCallDepartment|Sales"><i class="fal fa-mobile"></i> 412.265.4743</a>
1935	</li>
1936	<li>
1937		<span>Service</span>
1938		<a href="tel:412.265.4756" title="Call Brewer Airport Toyota Service 412.265.4756" data-aga-event="clickToCall" data-aga-event-set-prop="clickToCallDepartment|Service"><i class="fal fa-mobile"></i> 412.265.4756</a>
1939	</li>
1940	<li>
1941		<span>Parts</span>
1942		<a href="tel:412.265.4756" title="Call Brewer Airport Toyota Parts 412.265.4756" data-aga-event="clickToCall" data-aga-event-set-prop="clickToCallDepartment|Parts"><i class="fal fa-mobile"></i> 412.265.4756</a>
1943	</li>
1944	<!--<li>
1945		<span>Collision Center</span>
1946		<a href="tel:COLLISION NUMBER" title="Call Brewer Airport Toyota Collision Center COLLISION NUMBER" data-aga-event="clickToCall" data-aga-event-set-prop="clickToCallDepartment|Collision"><i class="fal fa-mobile"></i> COLLISION NUMBER</a>
1947	</li>-->
1948</ul>					</div>
1949				</div>
1950			</li>
1951						<li class="dv-fw-mobile-menu-item-content">
1952				<div class="dv-mobile-menu-inner">
1953					<div class="dv-mobile-menu-inner-header">Location</div>
1954					<div class="dv-mobile-menu-inner-body dv-dealer-location">
1955						<ul>
1956	<li>
1957		<span><i class="fal fa-map-marker-alt"></i> Brewer Airport Toyota</span>
1958		<a target='_blank' href="https://maps.app.goo.gl/1J7BChWkZVkUyzg67" title="" data-aga-event="getDirections">8900 University Blvd<br> Moon Township PA 15108</a>
1959		<a target='_blank' href="https://maps.app.goo.gl/1J7BChWkZVkUyzg67" title="" class="dv-mobile-menu-btn" data-aga-event="getDirections">Get Directions</a>
1960	</li>
1961		<!--<li>
1962		<span><i class="fal fa-map-marker-alt"></i> Brewer Airport Toyota Collision Center</span>
1963		<a target='_blank' href="" title="" data-aga-event="getDirections"></a>
1964		<a target='_blank' href="" title="" class="dv-mobile-menu-btn" data-aga-event="getDirections">Get Directions</a>
1965	</li>-->
1966	
1967</ul>					</div>
1968				</div>
1969			</li>
1970						<li class="dv-fw-mobile-menu-item-content">
1971				<div class="dv-mobile-menu-inner">
1972					<div class="dv-mobile-menu-inner-header">Hours</div>
1973					<div class="dv-mobile-menu-inner-body dv-dealer-hours">
1974						<ul>
1975	<li>
1976		<span style='font-weight:800;'>Sales <i class="fal fa-clock"></i></span>
1977		<span data-fetch-shortcode data-code="mbhi_hours" data-arguments="location=&quot;Sales&quot; format=&quot;12&quot; display=&quot;table&quot; output=&quot;1&quot; includeholidays=&quot;true&quot; includevacations=&quot;&quot; abbreviatedays=&quot;&quot; consolidationseparator=&quot; - &quot; hourseparator=&quot; - &quot; entryseparator=&quot;, &quot; mhbr=&quot;1&quot; showonlytoday=&quot;&quot; dayentryseparator=&quot; &quot; removezeroes=&quot;1&quot; seo=&quot;&quot; for_admin=&quot;&quot; hide_hours=&quot;&quot; startonsunday=&quot;&quot; extra_classes=&quot;&quot; dates_in_past=&quot;1&quot; replace_with_specials=&quot;true&quot; replace_with_vacations=&quot;&quot; date_format=&quot;day first&quot; replaced_vacations_format=&quot;{day} ({name})&quot; replaced_specials_format=&quot;{day} *({month_short} {day_of_month})&quot; included_vacations_format=&quot;{from_day_of_month} {from_month_short} - {to_day_of_month} {to_month_short}&quot; included_specials_format=&quot;{day_of_month} {month_short}&quot; day_format=&quot;{day}&quot; view=&quot;normal&quot; rollover=&quot;&quot; rollover_from=&quot;30&quot; rollover_to=&quot;14&quot; includeholiday=&quot;true&quot;">Welcome!</span>
1978		<span style='font-weight:800;'>Service <i class="fal fa-clock"></i></span>
1979		<span data-fetch-shortcode data-code="mbhi_hours" data-arguments="location=&quot;Service&quot; format=&quot;12&quot; display=&quot;table&quot; output=&quot;1&quot; includeholidays=&quot;true&quot; includevacations=&quot;&quot; abbreviatedays=&quot;&quot; consolidationseparator=&quot; - &quot; hourseparator=&quot; - &quot; entryseparator=&quot;, &quot; mhbr=&quot;1&quot; showonlytoday=&quot;&quot; dayentryseparator=&quot; &quot; removezeroes=&quot;1&quot; seo=&quot;&quot; for_admin=&quot;&quot; hide_hours=&quot;&quot; startonsunday=&quot;&quot; extra_classes=&quot;&quot; dates_in_past=&quot;1&quot; replace_with_specials=&quot;true&quot; replace_with_vacations=&quot;&quot; date_format=&quot;day first&quot; replaced_vacations_format=&quot;{day} ({name})&quot; replaced_specials_format=&quot;{day} *({month_short} {day_of_month})&quot; included_vacations_format=&quot;{from_day_of_month} {from_month_short} - {to_day_of_month} {to_month_short}&quot; included_specials_format=&quot;{day_of_month} {month_short}&quot; day_format=&quot;{day}&quot; view=&quot;normal&quot; rollover=&quot;&quot; rollover_from=&quot;30&quot; rollover_to=&quot;14&quot; includeholiday=&quot;true&quot;">Welcome!</span>
1980		<span style='font-weight:800;'>Parts <i class="fal fa-clock"></i></span>
1981		<span data-fetch-shortcode data-code="mbhi_hours" data-arguments="location=&quot;Parts&quot; format=&quot;12&quot; display=&quot;table&quot; output=&quot;1&quot; includeholidays=&quot;true&quot; includevacations=&quot;&quot; abbreviatedays=&quot;&quot; consolidationseparator=&quot; - &quot; hourseparator=&quot; - &quot; entryseparator=&quot;, &quot; mhbr=&quot;1&quot; showonlytoday=&quot;&quot; dayentryseparator=&quot; &quot; removezeroes=&quot;1&quot; seo=&quot;&quot; for_admin=&quot;&quot; hide_hours=&quot;&quot; startonsunday=&quot;&quot; extra_classes=&quot;&quot; dates_in_past=&quot;1&quot; replace_with_specials=&quot;true&quot; replace_with_vacations=&quot;&quot; date_format=&quot;day first&quot; replaced_vacations_format=&quot;{day} ({name})&quot; replaced_specials_format=&quot;{day} *({month_short} {day_of_month})&quot; included_vacations_format=&quot;{from_day_of_month} {from_month_short} - {to_day_of_month} {to_month_short}&quot; included_specials_format=&quot;{day_of_month} {month_short}&quot; day_format=&quot;{day}&quot; view=&quot;normal&quot; rollover=&quot;&quot; rollover_from=&quot;30&quot; rollover_to=&quot;14&quot; includeholiday=&quot;true&quot;">Welcome!</span>
1982		<!--<span style='font-weight:800;'>Collison <i class="fal fa-clock"></i></span>
1983		[mbhi_hours location="Collision" display="table" includeholiday="true" replace_with_specials="true"]
1984		<span style='font-weight:800;'>Rental <i class="fal fa-clock"></i></span>
1985		[mbhi_hours location="Rental" display="table" includeholiday="true" replace_with_specials="true"]
1986	</li>-->
1987</ul>					</div>
1988				</div>
1989			</li>
1990					</ul>
1991	</div>
1992</div>
1993<script>
1994var CloseMenu = function(e) {
1995	$('.nav-below-btn-toggle').each(function() {
1996		if ($(this).hasClass('open')) {
1997			$(this).removeClass('open');
1998		} else {
1999			
2000			$(this).addClass('open');
2001		}
2002	});
2003	if ($('.dv-header-lower').length) {
2004		$('.dv-header-lower').toggleClass("dv-header-lower-closed");
2005	}
2006	$(".dv-fw-search").toggleClass("dv-toggle-open");
2007	$("body").toggleClass("mobile-menu-open");
2008	$('#the-nav-below').remove();
2009};
2010$(function() {
2011
2012	// Icon Click FN
2013	$(".nav-below-btn-toggle").click(function(event) {
2014		event.preventDefault();
2015		event.stopPropagation();
2016		var lowerHeaderHeight = document.querySelector(".srp_main .dv-header-lower");
2017		if(!!lowerHeaderHeight) {
2018			$(window).scroll(function() {
2019				var scroll = $(window).scrollTop();
2020				var totalHeaderHeight = parseInt('75px', 10 ) - parseInt(lowerHeaderHeight.offsetHeight, 10 ) + 'px';
2021				if (scroll > 0) {
2022					document.querySelector(".dv-fw-search").style.top = parseInt(totalHeaderHeight, 10) + parseInt(lowerHeaderHeight.offsetHeight, 10) + 'px';
2023				} else {
2024					document.querySelector(".dv-fw-search").style.top = 'auto';
2025				}
2026			});
2027		}
2028		CloseMenu($(this));
2029	});
2030
2031	$(document).on('click', function(e) {
2032		var opened = $('body').hasClass('mobile-menu-open');
2033		var bodyContent = $('body.mobile-menu-open');
2034		var target = $(e.target);
2035		if (opened === true && target.is(bodyContent)) {
2036			CloseMenu($('.nav-below-btn-toggle'));
2037		}
2038	});
2039
2040	// Open Dropdown Menu Mobile
2041	$(".dv-mobile-menu-inner #menu-mobile-menu > li.has-sub > a").click(function() {
2042		$(".dv-mobile-menu-inner #menu-mobile-menu > li.has-sub > a").parent().find("ul").slideUp("fast");
2043
2044		var panel = this.nextElementSibling;
2045		panel.style.maxHeight = panel.style.maxHeight ? panel.scrollHeight : null;
2046		var curHeight = document.querySelector(".dv-mobile-menu-inner").style.height;
2047		curHeight = parseInt(curHeight, 10);
2048
2049		if ($(this).parent().hasClass("open-active")) {
2050			$(".dv-mobile-menu-inner #menu-mobile-menu > li.has-sub > a").parent().removeClass("open-active");
2051			$(this).parent().find("ul").slideUp("fast");
2052			
2053			document.querySelector(".dv-mobile-menu-inner").style.height = curHeight - panel.scrollHeight + 'px';
2054		} else {
2055			$(".dv-mobile-menu-inner #menu-mobile-menu > li.has-sub > a").parent().removeClass("open-active");
2056			$(this).parent().toggleClass("open-active");
2057			$(this).parent().find("ul").slideToggle("fast");
2058			
2059			document.querySelector(".dv-mobile-menu-inner").style.height = curHeight + panel.scrollHeight + 'px';
2060		}
2061
2062		this.scrollIntoView();
2063	});
2064
2065	// Mobile Menu Selector
2066	$(".dv-fw-mobile-menu-selector li").on("click", function() {
2067		$(".dv-fw-mobile-menu-selector li").removeClass("active");
2068		$(this).toggleClass("active");
2069		var idx = $(this).index();
2070		$(this).parents().find('.dv-fw-mobile-menu-item-content').removeClass('active');
2071		$(this).parents().find('.dv-fw-mobile-menu-item-content').eq(idx).addClass('active')
2072	});
2073
2074	// Mobile Menu Caret
2075	$(".dv-mobile-menu-inner #menu-mobile-menu li.has-sub > a").append('<span class="dv-mobile-menu-caret"><i class="fa fa-chevron-down"></i></span>');
2076});
2077
2078// Mobile fix for height of menu items
2079document.addEventListener("DOMContentLoaded", function() { 
2080	var elmInnerHeight = document.querySelector(".dv-mobile-menu-inner").getBoundingClientRect().height;
2081	// var header = document.querySelector("header");
2082	// var headerHeight = header.getBoundingClientRect().height;
2083	// var distanceToTop = header.getBoundingClientRect().top;
2084	var setHeight = Math.ceil((elmInnerHeight)).toString();
2085	document.querySelector(".dv-mobile-menu-inner").style.height = setHeight + 'px';
2086});
2087</script>
2087
2088
2089<div class="bread-crumbs">
2090	<div class="dv-bread-crumbs" style="display:none;" itemscope itemtype="https://schema.org/BreadcrumbList"><span itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><a href="https://www.brewerairporttoyota.com" itemprop="item"><span itemprop="name">Brewer Airport Toyota</span></a><meta itemprop="position" content="1"></span><span class="separator"> / </span><span itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><span itemprop="name">New Vehicles</span><meta itemprop="position" content="1"></span></div></div>
2091
2092<!-- da-srp-studio: switch=OFF (enable Redux → Integrations → SRP Functions → SRP Studio Config, then save options) studio=off (legacy Redux template) | clear cache: append ?srp_config_flush=1 -->
2093    <div class="srpLoading">
2094        <div class="lds-ring"><div></div><div></div><div></div><div></div></div>
2095    </div>
2096    
2097<div class="srp-header">
2098    <div id="resultsStats"></div>
2099    <div class="srp-header-results">
2100        <div class="srp-search">
2101            <div class="srp-searchbar">
2102                <i class="fas fa-search"></i>
2103                <div id="searchbox"></div>
2104            </div>
2105            <div id="clearSearchResults"><button><i class="fal fa-backspace"></i> <span>Clear<br>Search</span></button></div>
2106        </div>
2107        <div class="srp-header-right">
2108            <div class="sortFilters" id="sortByDesktop"><div class="dv-srp-search-options-wrapper"><span class="dv-srp-search-options-label"><i class="fas fa-sort-amount-up"></i> <span class="dv-srp-search-options-dynamic-label">Sort</span></span></div></div>
2109			<div id="pagination-top"></div>
2110        </div>
2111    </div>
2112    <div class="dv-srp-search-options">
2113        <div class="sortFilters" id="sortByMobile"><div class="dv-srp-search-options-wrapper"><span class="dv-srp-search-options-label"><i class="fas fa-sort-amount-up"></i> <span class="dv-srp-search-options-dynamic-label">Sort</span></span></div></div>
2114        <div class="showFiltersNonLegacy" id="showFiltersNonLegacy"></div>
2115        <div class="saveFilters"><div class="dv-srp-search-options-wrapper"><span class="dv-srp-search-options-label"><i class="fal fa-heart"></i> Save</span></div></div>
2116    </div>
2117</div>
2118
2119
2120<main>
2121    <div class="side-panel-container">
2122	<section id="srp-filters" class="srp-filters">
2123		<div class="srp-filters-close-wrapper">
2124			<div class="srp-filters-reset-btn-wrapper">
2125				<div id="srp-filters-reset-btn"></div>
2126			</div>
2127			<div class="srp-filters-close-btn">
2128				<i class="fal fa-times"></i> Close
2129			</div>
2130		</div>
2131			 <div class="range-slider-container srp-panel-toggle"> 						<div>
2132							<span>
2133							<h4>Price</h4>
2134							</span>
2135							<div id="price-range-slider"></div>
2136						</div>
2137											</div> 
2138		
2139		<div class="type-container srp-panel-toggle">
2140			<span>
2141				<h4>Type</h4>
2142			</span>
2143			<div id="type-list"></div>
2144		</div>
2145
2146				<div class="dealertag-container srp-panel-toggle hidden-filter">
2147			<span>
2148				<h4>Dealer Special</h4>
2149				<a><i class="far fa-chevron-up"></i></a>
2150			</span>
2151			<div id="dealertag-list"></div>
2152		</div>
2153
2154						<div class="make-container srp-panel-toggle">
2155					<span>
2156						<h4>Make</h4>
2157						<a><i class="far fa-chevron-up"></i></a>
2158					</span>
2159					<div id="make-list"></div>
2160				</div>
2161
2162								<div class="model-container srp-panel-toggle">
2163					<span>
2164						<h4>Model</h4>
2165						<a><i class="far fa-chevron-up"></i></a>
2166					</span>
2167					<div id="model-list"></div>
2168				</div>
2169
2170								<div class="trim-container srp-panel-toggle">
2171					<span>
2172						<h4>Trim</h4>
2173						<a><i class="far fa-chevron-up"></i></a>
2174					</span>
2175					<div id="trim-list"></div>
2176				</div>
2177
2178								<div class="year-container srp-panel-toggle">
2179					<span>
2180						<h4>Year</h4>
2181						<a><i class="far fa-chevron-up"></i></a>
2182					</span>
2183					<div id="year-list"></div>
2184				</div>
2185
2186								<div class="pricerange-container srp-panel-toggle">
2187					<span>
2188						<h4>Price Range</h4>
2189						<a><i class="far fa-chevron-up"></i></a>
2190					</span>
2191					<div id="pricerange-list"></div>
2192				</div>
2193
2194								<div class="body-container srp-panel-toggle">
2195					<span>
2196						<h4>Body</h4>
2197						<a><i class="far fa-chevron-up"></i></a>
2198					</span>
2199					<div id="body-list"></div>
2200				</div>
2201
2202									<div class="cab-container srp-panel-toggle">
2203						<span>
2204							<h4>Cab Style</h4>
2205							<a><i class="far fa-chevron-up"></i></a>
2206						</span>
2207						<div id="cab-list"></div>
2208					</div>
2209
2210					<div class="bed-container srp-panel-toggle">
2211						<span>
2212							<h4>Bed Style</h4>
2213							<a><i class="far fa-chevron-up"></i></a>
2214						</span>
2215						<div id="bed-list"></div>
2216					</div>
2217
2218								<div class="fuel-container srp-panel-toggle">
2219					<span>
2220						<h4>Fuel</h4>
2221						<a><i class="far fa-chevron-up"></i></a>
2222					</span>
2223					<div id="fuel-list"></div>
2224				</div>
2225
2226								<div class="transmission-container srp-panel-toggle">
2227					<span>
2228						<h4>Transmission</h4>
2229						<a><i class="far fa-chevron-up"></i></a>
2230					</span>
2231					<div id="transmission-list"></div>
2232				</div>
2233
2234								<div class="color-container srp-panel-toggle">
2235					<span>
2236						<h4>Color</h4>
2237						<a><i class="far fa-chevron-up"></i></a>
2238					</span>
2239					<div id="color-list"></div>
2240				</div>
2241
2242								<div class="drivetrain-container srp-panel-toggle">
2243					<span>
2244						<h4>Drivetrain</h4>
2245						<a><i class="far fa-chevron-up"></i></a>
2246					</span>
2247					<div id="drivetrain-list"></div>
2248				</div>
2249
2250								<div class="location-container srp-panel-toggle">
2251					<span>
2252						<h4>Location</h4>
2253						<a><i class="far fa-chevron-up"></i></a>
2254					</span>
2255					<div id="location-list"></div>
2256				</div>
2257
2258								<div class="mpg-hway-container srp-panel-toggle">
2259					<span>
2260						<h4>MPG Highway</h4>
2261						<a><i class="far fa-chevron-up"></i></a>
2262					</span>
2263					<div id="mpg-hway-list"></div>
2264				</div>
2265
2266								<div class="mpg-city-container srp-panel-toggle">
2267					<span>
2268						<h4>MPG City</h4>
2269						<a><i class="far fa-chevron-up"></i></a>
2270					</span>
2271					<div id="mpg-city-list"></div>
2272				</div>
2273
2274								<div class="features-container srp-panel-toggle">
2275					<span>
2276						<h4>Features</h4>
2277						<a><i class="far fa-chevron-up"></i></a>
2278					</span>
2279					<div id="features-list"></div>
2280				</div>
2281
2282								<div class="status-container srp-panel-toggle">
2283					<span>
2284						<h4>Status</h4>
2285						<a><i class="far fa-chevron-up"></i></a>
2286					</span>
2287					<div id="status-list"></div>
2288				</div>
2289
2290								<div class="range-container srp-panel-toggle">
2291					<span>
2292						<h4>Range</h4>
2293						<a><i class="far fa-chevron-up"></i></a>
2294					</span>
2295					<div id="range-list"></div>
2296				</div>
2297
2298					</section>
2299</div>
2300
2301<div class="filterResultCount"><span id="srpFilterResultCount"></span></div>
2302
2303<div class="result-wrapper ">
2304
2305  <h1 style="visibility: hidden; position: absolute; z-index: 0;">New Vehicles</h1>
2306
2307  <div class='dv-offers-top-banner-new-srp-wrapper'><div class='dv-offers-top-banner-new-srp'><div class='dv-offers-banner-disclaimer'>
2308											<div class='dv-offers-banner-disclaimer-btn' data-disclaimer='New 2026 Toyota Tundra Models OR New 2026 Toyota Tundra SR5 Crew Max 4WD *Qualified customers who finance a new 2026 Tundra can receive as low as 2.99% APR for 72 months with 72 monthly payments of $15.19 for every $1,000 financed. Terms available on approved credit through Toyota Financial Services (TFS) at participating Toyota dealers. For only very well qualified customers. Amount financed, down payment amount, and credit worthiness may impact availability of offer. Dealer contribution may vary and could affect price. Individual dealer prices, other terms and offers may vary. Must take retail delivery from dealer&#039;s stock and terms subject to vehicle availability. Offer cannot be combined with TFS Lease Cash, Down Payment Assistance, Trade-in Assistance, Customer Cash, Lease, Lease Subvention Cash. See your participating Toyota dealer for details. Dealer sets final price. Price excludes tax, title, license and $490 dealer doc fee. Offer available in DE, MD, PA, VA, WV regardless of buyer&#039;s residency; void where prohibited. Expires 09-30-2026. **Qualified lessees can lease a new 2026 Tundra 4WD Crew Max SR5 V6 10AT Model 8361 for $379 per month for 36 months with $4,999 Due At Signing. Based on 10,000 miles/yr. Security Deposit waived. Lease excludes tax, title, license, registration fees, and dealer options and charges. $490 dealer doc fee extra. Terms available on approved credit through Toyota Financial Services (TFS) at participating Toyota dealers. Not all customers qualify. Lease example based on 2026 Tundra 4WD Crew Max S
2308R5 V6 10AT Model 8361 with Total SRP of $53,804, net capitalized cost of $47,024, and a lease end purchase amount of $37,663. $4,999 Due At Signing includes $3,870 customer down payment, first month&#039;s payment of $379 of the 36 month lease offer, and $750 Acquisition Fee. Security deposit required with exception of prior Toyota Financial Services (TFS) financing history and/or TFS credit rating in which a security deposit may be waived. Tax, title, license are extra. Dealer contribution may vary and could affect lease payment. Individual dealer prices, other terms and offers may vary. Must lease from participating dealer&#039;s stock and terms are subject to vehicle availability. Lessee responsible for maintenance, excess wear and use, and will pay $0.15 per mile for all mileage over 10,000 miles per year. $350 disposition fee is due at lease end. Offer cannot be combined with TFS Finance Cash, Down Payment Assistance, Trade-in Assistance, Customer Cash, APR, Finance Subvention Cash. Offer available in DE, MD, PA, VA, WV regardless of buyer&#039;s residency; void where prohibited. Expires 09-30-2026. Dealer sets final price. See your participating Toyota dealer for details. Model shown for illustration purposes only.' onclick='DVPopUp(this);return false;'>Disclaimer</div>
2309										</div><a data-ag-event='cta_interaction' href='https://www.brewerairporttoyota.com/new-vehicles/?model=Tundra' target='_self' title='New 2026 Toyota Tundra Models OR New 2026 Toyota Tundra SR5 Crew Max 4WD | Brewer Airport Toyota' class='dv-offers-top-banner-new-srp-desktop'><span class='dv-offers-offer-title-hidden'>New 2026 Toyota Tundra Models OR New 2026 Toyota Tundra SR5 Crew Max 4WD</span><img src='https://bucket.dealeralchemist.com/brewer-airport-toyota/BrewerAirportToyota0926_SRPBanner4_Tundra.jpg?auto=compress%2Cformat&ixlib=php-3.3.1' alt='New 2026 Toyota Tundra Models OR New 2026 Toyota Tundra SR5 Crew Max 4WD'/></a><a data-ag-event='cta_interaction' href='https://www.brewerairporttoyota.com/new-vehicles/?model=Tundra' target='_self' title='New 2026 Toyota Tundra Models OR New 2026 Toyota Tundra SR5 Crew Max 4WD | Brewer Airport Toyota' class='dv-offers-top-banner-new-srp-mobile'><span class='dv-offers-offer-title-hidden'>New 2026 Toyota Tundra Models OR New 2026 Toyota Tundra SR5 Crew Max 4WD</span><img src='https://bucket.dealeralchemist.com/brewer-airport-toyota/BrewerAirportToyota0926_SRPMobile4_Tundra.jpg?auto=compress%2Cformat&ixlib=php-3.3.1' alt='New 2026 Toyota Tundra Models OR New 2026 Toyota Tundra SR5 Crew Max 4WD | Brewer Airport Toyota'/></a></div><div class='dv-offers-top-banner-new-srp'><div class='dv-offers-banner-disclaimer'>
2310											<div class='dv-offers-banner-disclaimer-btn' data-disclaimer='New 2026 Toyota Camry LE 2WD *Qualified lessees can lease a new 2026 Camry 2WD 4Dr. Sedan LE Hybrid CVT Model 2559 for $279 per month for 36 months with $3,999 Due At Signing. Based on 10,000 miles/yr. Security Deposit waived. Lease excludes tax, title, license, registration fees, and dealer options and charges. $490 dealer doc fee extra. Terms available on approved credit through Toyota Financial Services (TFS) at participating Toyota dealers. Not all customers qualify. Lease example based on 2026 Camry 2WD 4Dr. Sedan LE Hybrid CVT Model 2559 with Total SRP of $31,214, net capitalized cost of $26,420, and a lease end purchase amount of $21,538. $3,999 Due At Signing includes $2,970 customer down payment, first month&#039;s payment of $279 of the 36 month lease offer, and $750 Acquisition Fee. Security deposit required with exception of prior Toyota Financial Services (TFS) financing history and/or TFS credit rating in which a security deposit may be waived. Tax, title, license are extra. Dealer contribution may vary and could affect lease payment. Individual dealer prices, monthly payment, and other terms and offers may vary. Must lease from participating dealer&#039;s stock and terms are subject to vehicle availability. Lessee responsible for maintenance, excess wear and use, and will pay $0.15 per mile for all mileage over 10,000 miles per year. $350 disposition fee is due at lease end. Offer cannot be combined with TFS Finance Cash, Down Payment Assistance, Trade-in Assistance, Customer Cash, APR, Finance Subvention Cash. Excludes 2WD 4Dr. Sedan XSE Hybrid CVT, 2WD 4Dr. Sedan XLE Hybrid CVT, 4WD 4Dr. Sedan XLE Hybrid CVT, 4WD 4Dr. Sedan XSE Hybrid CVT, 4WD 4Dr. Sedan NIGHTSHADE Hybrid CVT, 2WD 4Dr. Sedan NIGHTSHADE Hybrid CVT. Offer available in DE, MD, PA, VA, WV regardless of buyer&#039;s residency; void where prohibited. Expires 09-30-2026. Dealer sets final price. See your participating Toyota dealer for details. Model shown for illustration purposes only.' onclick='DVPopUp(this);return false;'>Disclaimer</div>
2311										</div><a data-ag-event='cta_interaction' href='https://www.brewerairporttoyota.com/new-vehicles/?model=Camry' target='_self' title='New 2026 Toyota Camry LE 2WD | Brewer Airport Toyota' class='dv-offers-top-banner-new-srp-desktop'><span class='dv-offers-offer-title-hidden'>New 2026 Toyota Camry LE 2WD</span><img src='https://bucket.dealeralchemist.com/brewer-airport-toyota/BrewerAirportToyota0926_SRPBanner3_Camry.jpg?auto=compress%2Cformat&ixlib=php-3.3.1' alt='New 2026 Toyota Camry LE 2WD'/></a><a data-ag-event='cta_interaction' href='https://www.brewerairporttoyota.com/new-vehicles/?model=Camry' target='_self' title='New 2026 Toyota Camry LE 2WD | Brewer Airport Toyota' class='dv-offers-top-banner-new-srp-mobile'><span class='dv-offers-offer-title-hidden'>New 2026 Toyota Camry LE 2WD</span><img src='https://bucket.dealeralchemist.com/brewer-airport-toyota/BrewerAirportToyota0926_SRPMobile3_Camry.jpg?auto=compress%2Cformat&ixlib=php-3.3.1' alt='New 2026 Toyota Camry LE 2WD | Brewer Airport Toyota'/></a></div><div class='dv-offers-top-banner-new-srp'><div class='dv-offers-banner-disclaimer'>
2312											<div class='dv-offers-banner-disclaimer-btn' data-disclaimer='New 2026 Toyota Tacoma SR5 Double Cab 4WD Qualified lessees can lease a new 2026 Tacoma 4WD Double Cab SR5 L4 8AT Model 7540 for $249 per month for 36 months with $4,999 Due At Signing. Based on 10,000 miles/yr. Security Deposit waived. Lease excludes tax, title, license, registration fees, and dealer options and charges. $490 dealer doc fee extra. Terms available on approved credit through Toyota Financial Services (TFS) at participating Toyota dealers. Not all customers qualify. Lease example based on 2026 Tacoma 4WD Double Cab SR5 L4 8AT Model 7540 with Total SRP of $42,550, net capitalized cost of $36,238, and a lease end purchase amount of $32,764. $4,999 Due At Signing includes $4,000 customer down payment, first month&#039;s payment of $249 of the 36 month lease offer, and $750 Acquisition Fee. Security deposit required with exception of prior Toyota Financial Services (TFS) financing history and/or TFS credit rating in which a security deposit may be waived. Tax, title, license are extra. Dealer contribution may vary and could affect lease payment. Individual dealer prices, monthly payment, and other terms and offers may vary. Must lease from participating dealer&#039;s stock and terms are subject to vehicle availability. Lessee responsible for maintenance, excess wear and use, and will pay $0.15 per mile for all mileage over 10,000 miles per year. $350 disposition fee is due at lease end. Offer cannot be combined with TFS Finance Cash, Down Payment Assistance, Trade-in Assistance, Customer Cash, APR, Finance Subvention Cash. Excludes 4WD Double Cab SR L4 8AT, 4WD Double Cab SR L4 6MT, 4WD Extra Cab SR L4 8AT, 2WD Double Cab TRD SPORT L4 8AT, 4WD Double Cab TRD SPORT L4 6MT, 2WD Extra Cab SR L4 8AT, 2WD Extra Cab TRD PRERUN L4 8AT, 4WD Double Cab LIMITED L4 8AT, 4WD Double Cab TRD OFF RD L4 6MT, 2WD Double Cab SR L4 8AT, 4WD Double Cab TRD OFF RD L4 8AT, 4WD Double Cab TRD OFF RD L4 8AT, 2WD Double Cab TRD SPORT L4 8AT, 4WD Double Cab TRD SPORT L4 8AT, 4WD Double Cab TRD SPORT L4 8AT. Offer available in DE, MD, PA, VA, WV regardless of buyer&#039;s residency; void where prohibited. Expires 09-30-2026. Dealer sets final price. See your participating Toyota dealer for details. Model shown for illustration purposes only. ' onclick='DVPopUp(this);return false;'>Disclaimer</div>
2313										</div><a data-ag-event='cta_interaction' href='https://www.brewerairporttoyota.com/new-vehicles/?model=Tacoma' target='_self' title='New 2026 Toyota Tacoma SR5 Double Cab 4WD | Brewer Airport Toyota' class='dv-offers-top-banner-new-srp-desktop'><span class='dv-offers-offer-title-hidden'>New 2026 Toyota Tacoma SR5 Double Cab 4WD</span><img src='https://bucket.dealeralchemist.com/brewer-airport-toyota/BrewerAirportToyota0926_SRPBanner2_Tacoma.jpg?auto=compress%2Cformat&ixlib=php-3.3.1' alt='New 2026 Toyota Tacoma SR5 Double Cab 4WD'/></a><a data-ag-event='cta_interaction' href='https://www.brewerairporttoyota.com/new-vehicles/?model=Tacoma' target='_self' title='New 2026 Toyota Tacoma SR5 Double Cab 4WD | Brewer Airport Toyota' class='dv-offers-top-banner-new-srp-mobile'><span class='dv-offers-offer-title-hidden'>New 2026 Toyota Tacoma SR5 Double Cab 4WD</span><img src='https://bucket.dealeralchemist.com/brewer-airport-toyota/BrewerAirportToyota0926_SRPMobile2_Tacoma.jpg?auto=compress%2Cformat&ixlib=php-3.3.1' alt='New 2026 Toyota Tacoma SR5 Double Cab 4WD | Brewer Airport Toyota'/></a></div><div class='dv-offers-top-banner-new-srp'><div class='dv-offers-banner-disclaimer'>
2314											<div class='dv-offers-banner-disclaimer-btn' data-disclaimer='New 2026 Toyota Corolla LE 2WD *Qualified lessees can lease a new 2026 Corolla 2WD 4Dr. Sedan LE L4 CVT-F Model 1852 for $189 per month for 36 months with $3,999 Due At Signing. Based on 10,000 miles/yr. Security Deposit waived. Lease excludes tax, title, license, registration fees, and dealer options and charges. $490 dealer doc fee extra. Terms available on approved credit through Toyota Financial Services (TFS) at participating Toyota dealers. Not all customers qualify. Lease example based on 2026 Corolla 2WD 4Dr. Sedan LE L4 CVT-F Model 1852 with Total SRP of $24,729, net capitalized cost of $20,429, and a lease end purchase amount of $16,816. $3,999 Due At Signing includes $3,060 customer down payment, first month&#039;s payment of $189 of the 36 month lease offer, and $750 Acquisition Fee. Security deposit required with exception of prior Toyota Financial Services (TFS) financing history and/or TFS credit rating in which a security deposit may be waived. Tax, title, license are extra. Dealer contribution may vary and could affect lease payment. Individual dealer prices, other terms and offers may vary. Must lease from participating dealer&#039;s stock and terms are subject to vehicle availability. Lessee responsible for maintenance, excess wear and use, and will pay $0.15 per mile for all mileage over 10,000 miles per year. $350 disposition fee is due at lease end. Offer cannot be combined with TFS Finance Cash, Down Payment Assistance, Trade-in Assistance, Customer Cash, APR, Finance Subvention Cash. Offer available in DE, MD, PA, VA, WV regardless of buyer&#039;s residency; void where prohibited. Expires 09-30-2026. Dealer sets final price. See your participating Toyota dealer for details. Model shown for illustration purposes only.' onclick='DVPopUp(this);return false;'>Disclaimer</div>
2315										</div><a data-ag-event='cta_interaction' href='https://www.brewerairporttoyota.com/new-vehicles/?model=Corolla' target='_self' title='New 2026 Toyota Corolla LE 2WD | Brewer Airport Toyota' class='dv-offers-top-banner-new-srp-desktop'><span class='dv-offers-offer-title-hidden'>New 2026 Toyota Corolla LE 2WD</span><img src='https://bucket.dealeralchemist.com/brewer-airport-toyota/BrewerAirportToyota0926_SRPBanner1_Corolla.jpg?auto=compress%2Cformat&ixlib=php-3.3.1' alt='New 2026 Toyota Corolla LE 2WD'/></a><a data-ag-event='cta_interaction' href='https://www.brewerairporttoyota.com/new-vehicles/?model=Corolla' target='_self' title='New 2026 Toyota Corolla LE 2WD | Brewer Airport Toyota' class='dv-offers-top-banner-new-srp-mobile'><span class='dv-offers-offer-title-hidden'>New 2026 Toyota Corolla LE 2WD</span><img src='https://bucket.dealeralchemist.com/brewer-airport-toyota/BrewerAirportToyota0926_SRPMobile1_Corolla.jpg?auto=compress%2Cformat&ixlib=php-3.3.1' alt='New 2026 Toyota Corolla LE 2WD | Brewer Airport Toyota'/></a></div></div>
2315<script>
2316						$(document).ready(function() {
2317							$(".dv-offers-top-banner-new-srp-wrapper").slick({
2318								dots: false,
2319								autoplay: true,
2320								infinite: true,
2321								autoplaySpeed: 4500,
2322								speed: 500,
2323								slidesToShow: 1,
2324								pauseOnHover: true,
2325								pauseOnFocus: true,
2326								pauseOnDotsHover: true,
2327								arrows: true,
2328								dotsClass: "dv-offers-srp-dots",
2329							})
2330							.on("beforeChange", function(event, slick, currentSlide, nextSlide) {
2331								if (currentSlide !== nextSlide) {
2332									var elements = document.querySelectorAll(".slick-center + .slick-cloned");
2333									for (var i = 0; i < elements.length; i++) {
2334										setTimeout(function() {
2335											return elements[i].classList.add("slick-current", "slick-center");
2336										});
2337									}
2338								}
2339							});
2340						
2341						});
2342
2343						</script>
2343
2344						<style>
2345						.dv-offers-top-banner-new-srp-wrapper .slick-arrow, .dv-offers-top-banner-used-srp-wrapper .slick-arrow {
2346							background: rgba(0,0,0,0.8);
2347							width: auto;
2348							height: auto
2349						}
2350						.dv-offers-top-banner-new-srp-wrapper .slick-arrow:before, .dv-offers-top-banner-used-srp-wrapper .slick-arrow:before {
2351							color: #fff;
2352							padding: 5px;
2353							line-height: 100%;
2354							display: block;
2355							width: auto;
2356							height: auto;
2357						}
2358						</style>
2359						
2360	<div class="ag-tp-trade-srp-banner"></div>
2361	<div class="ag-tp-payments-srp-banner"></div>
2362	<div class="ag-tp-qualified-srp-banner"></div>
2363
2364	<div class="dv-srp-filter-tags">
2365		<div class="dv-srp-filter-clear-btn" id="dv-srp-clear-filters"></div>
2366		<div id="filterTags"></div>
2367	</div>
2368
2369  <div id="srp-results" class="srp-results">
2370    <div id="hit-template">
2371      <div>
2372        <div class="listing" data-vehicle-id="{{databaseID}}" data-vehicle-vin="{{vin}}" data-vehicle-condition="{{condition}}" data-vehicle-year="{{yr}}" data-vehicle-stock-number="{{stockNumber}}" data-vehicle-make-model="{{make}} {{model}}" data-vehicle-price="{{final_price}}" data-vehicle-discount="{{discount_matrix}}" data-dealer-name="{{dealer.name}}" data-ag-ext-color="{{exteriorColor}}" data-ag-price="{{finalPriceInt}}" data-ag-make="{{make}}" data-ag-model="{{model}}" data-ag-type="{{body}}" data-ag-trim="{{trim}}" data-ag-vdp-url="{{vdpUrl}}">
2373          <div class="listing-container" data-url='{{vdpUrl}}'>
2374            <div class="left-side">
2375                {{#flags.hasSoldVehicles}}
2376                <div class="srp-mc-sold-banner">
2377                    <p>SOLD</p>
2378                </div>
2379                {{/flags.hasSoldVehicles}}
2380              <div class="vehicle-image">
2381                
2382                                <div class="img-container image-ratio-perc image-aspect-ratio-4x3">
2383                  {{#flags.hasSpecial}}
2384                    <div class="vehicle-special srp-banner-overlay">{{flags.specialText}}</div>
2385                  {{/flags.hasSpecial}}
2386                                    {{#flags.isReserved}}
2387                    <div class="vehicle-special reserved-vehicle">
2388                      This vehicle has a pending sale.                                              <div class="dv-tooltip">
2389                        <p class="dv-tooltip-content">Pending Sale indicates a customer has either reserved or has begun the process to purchase this vehicle. Please contact us directly to learn about similar vehicles.</p>
2390                        <i class="fal fa-question-circle"></i>
2391                      </div>
2392                                          </div>
2393                  {{/flags.isReserved}}
2394                  <div class="vehicle-views">
2395                                          <!-- Current image carousel -->
2396                    <div id="swiper-240894" class="swiper srp-swiper-vehicles img" data-id="240894">
2397    <div class="swiper-wrapper">
2398        {{#imageUrls}}
2399        <div class="swiper-slide">
2400                        <img class="lazy srp-click-image" alt="{{condition}} {{yr}} {{make}} {{model}} {{body}}" data-src="{{.}}" />
2401            <div class="swiper-lazy-preloader"></div>
2402        </div>
2403        {{/imageUrls}}
2404    </div>
2405    <!-- Add Navigation -->
2406    <!-- Changed <div> to <button> to prevent rapid clicks from triggering native text-selection/highlight on SRP cards -->
2407    <button type="button" class="swiper-button-next swiper-button-next-240894" aria-label="Next slide"></button>
2408    <button type="button" class="swiper-button-prev swiper-button-prev-240894" aria-label="Previous slide"></button>
2409</div>                  </div>
2410                                  </div>
2411
2412                                      <div class="dv-smartpath-container">
2413                        {{#flags.hasSmartpathDisclaimer}}
2414                          <div class="dv-smartpath-disclaimer">
2415                            <p class="dv-sp-disclaimer">{{smartpathDisclaimer}}</p>
2416                          </div>
2417                        {{/flags.hasSmartpathDisclaimer}}
2418                      </div>
2419                                    <div class="vehicle-colors">
2420                  <div class="exterior-color">
2421                    {{#exteriorColor}}
2422                      {{#exteriorHex}}
2423                        <div style="background-color:{{exteriorHex}};"></div>
2424                      {{/exteriorHex}}
2425                      {{^exteriorHex}}
2426                        {{#genericColor}}
2427                        <div style="background-color:{{genericColor}};"></div>
2428                        {{/genericColor}}
2429                        {{^genericColor}}
2430                        <div style="background: url('//bucket.dealeralchemist.com/assets/images/slash-square.png');background-size: 100%;"></div>
2431                        {{/genericColor}}
2432                        {{/exteriorHex}}
2433                      <div class="color-info">
2434                        <p class="color-label">EXTERIOR</p>
2435                        <p class="color">{{exteriorColor}} {{#exteriorColorDisclaimer}}<i class="fad fa-info-circle" onclick="DVPopUp(this);return false;" data-disclaimer="{{exteriorColorDisclaimer}}"></i>{{/exteriorColorDisclaimer}}</p>
2436                      </div>
2437                    {{/exteriorColor}}
2438                  </div>
2439                  <div class="interior-color">
2440                    {{#interiorColor}}
2441                      {{#interiorHex}}
2442                        <div style="background-color:{{interiorHex}};"></div>
2443                      {{/interiorHex}}
2444                      {{^interiorHex}}
2445                        {{#genericInteriorColor}}
2446                          <div style="background-color:{{genericInteriorColor}};"></div>
2447                        {{/genericInteriorColor}}
2448                        {{^genericInteriorColor}}
2449                          <div style="background: url('//bucket.dealeralchemist.com/assets/images/slash-square.png');background-size: 100%;"></div>
2450                        {{/genericInteriorColor}}
2451                      {{/interiorHex}}
2452                      <div class="color-info">
2453                        <p class="color-label">INTERIOR</p>
2454                        <p class="color">{{interiorColor}} {{#interiorColorDisclaimer}}<i class="fad fa-info-circle" onclick="DVPopUp(this);return false;" data-disclaimer="{{interiorColorDisclaimer}}"></i>{{/interiorColorDisclaimer}}</p>
2455                      </div>
2456                    {{/interiorColor}}
2457                  </div>
2458                </div>
2459                
2460              </div>
2461            </div>
2462            <div class="right-side">
2463              <div class="right-top" style="padding-left:0px">
2464                <div class="vehicle-info">
2465                    <div class="vehicle-title-wrap">
2466                        <a href="{{vdpUrl}}">
2467                        <h2 class="car-title"><p class="category">{{condition}} {{yr}}</p>
2468<span class="new-used secondary_color">{{make}} {{model}} {{trim}} {{cab}} {{bed}} {{stylename}}</span></h2>
2469                        <div class="vin-stock">
2470                          <p class="vin">{{#mileage}}<div class='ag-srp-miles'><p  style='font-size:12px;'><i class="fa-light fa-gauge-low"></i> Mileage <span style='font-size:12px;'>{{#helpers.formatNumber}}{{mileage}}{{/helpers.formatNumber}} </span></p></div>{{/mileage}}</p>
2471                        </div>
2472                      </a>
2473                        <div class="title-actions">
2474                                                    </div>
2475                    </div>
2476                  <div class="specs">
2477                    <!--<p>Engine <span style="font-weight: bold;font-family: 'ToyotaType', sans-serif">{{engine}}</span></p>
2478<p>Drivetrain <span style="font-weight: bold;font-family: 'ToyotaType', sans-serif">{{drivetrain}}</span></p>
2479{{#range}}<p>Range <span style="font-weight: bold;font-family: 'ToyotaType', sans-serif">{{range}}</span></p>{{/range}}
2480-->
2481<div class="man-badges">
2482{{#flags.hasToyotaCare}}
2483    <a href="/toyotacare/" class="dv-tooltip"><p class="dv-tooltip-content">ToyotaCare is a no cost maintenance plan with 24-hour roadside assistance. The ToyotaCare plan covers normal factory scheduled maintenance for 2 years or 25,000 miles, whichever comes first. 24-hour roadside assistance is also included for 2 years and unlimited miles.</p><img alt="toyota care logo" src="//bucket.dealervenom.com/assets/oem/toyota/logos/toyota-care.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=100"></a>
2484{{/flags.hasToyotaCare}}
2485{{#flags.hasToyotaSafety}}
2486    <a href="/toyota-safety-sense/" class="dv-tooltip dv-toyota-safety-sense"><p class="dv-tooltip-content">Toyota Safety Sense™ (TSS) is a bundle of active safety features included on many new Toyota vehicles at no additional cost. These innovative features were designed to help protect you and your passengers from harm.</p><img alt="toyota safety sense logo" src="//bucket.dealervenom.com/assets/oem/toyota/logos/toyota-safety-sense.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=56"></a>
2487{{/flags.hasToyotaSafety}}
2488</div>                  </div>
2489                </div>
2490                                {{#certified}}
2491                  <div class="srp-tcuv-container">
2492                    <img src="https://media.dealeralchemist.com/oem/toyota/logo-certified-used-vehicles.svg?auto=compress%2Cformat" alt="TCUV Logo" width="50%"/>
2493                    {{#flags.isGoldCertified}}
2494                      <div class="srp-tcuv-gold">
2495                        <span>GOLD CERTIFIED</span>
2496                        <p>View Details <a href="/certified-vehicle-information/" target="_blank"><i class="fad fa-info-circle"></i></a></p>
2497                      </div>
2498                    {{/flags.isGoldCertified}}
2499                    {{#flags.isSilverCertified}}
2500                      <div class="srp-tcuv-silver">
2501                        <span>SILVER CERTIFIED</span>
2502                        <p>View Details <a href="/certified-vehicle-information/" target="_blank"><i class="fad fa-info-circle"></i></a></p>
2503                      </div>
2504                    {{/flags.isSilverCertified}}
2505                  </div>
2506                {{/certified}}
2507                                <div class="vehicle-price-container">
2508                  <div class="vehicle-price flex_box">
2509                    {{!-- ============================================================ --}}
2510{{!--  SRP PRICING STACK                                            --}}
2511{{!--  Renders pricing breakdown for vehicle search result cards.   --}}
2512{{!-- ============================================================ --}}
2513{{^flags.internetPriceHigher}}
2514	{{#flags.msrpFinal}}
2515		{{#flags.noFinalPrice}}
2516			<div class="dv-dealer-subtotal dv-price-stack dv-pricing-main">
2517				<p class="dv-pricing-stack-strong">
2518					<a data-aga-event="clickToCall" data-aga-event-set-prop="clickToCallDepartment|Sales" href='tel:{{dealer.phone}}'>CALL FOR PRICE</a>
2519					<span class="dv-pricing-stack-value-default">
2520						<a data-aga-event="clickToCall" data-aga-event-set-prop="clickToCallDepartment|Sales" href='tel:{{dealer.phone}}'>{{dealer.phone}}</a>
2521					</span>
2522				</p>
2523			</div>
2524		{{/flags.noFinalPrice}}
2525		{{^flags.noFinalPrice}}
2526			<div class="dv-dealer-subtotal dv-price-stack dv-pricing-main">
2527				<p class="dv-pricing-stack-strong">
2528					TSRP
2529					 <i class="fad fa-info-circle" onclick="DVPopUp(this);return false;" data-modal-title="MSRP" data-disclaimer="This is the Manufacturer Suggested Retail Price for this Vehicle."></i>
2530					
2531					<span class="dv-pricing-stack-strong">{{msrp}}</span>
2532				</p>
2533			</div>
2534		{{/flags.noFinalPrice}}
2535	{{/flags.msrpFinal}}
2536	{{^flags.msrpFinal}}
2537		<div class="dv-pricing-stack-container">
2538			{{#flags.noFinalPrice}}
2539				<div class="dv-dealer-subtotal dv-price-stack dv-pricing-main">
2540					<p class="dv-pricing-stack-strong">
2541						<a data-aga-event="clickToCall" data-aga-event-set-prop="clickToCallDepartment|Sales" href='tel:{{dealer.phone}}'>CALL FOR PRICE</a>
2542						<span class="dv-pricing-stack-value-default">
2543							<a data-aga-event="clickToCall" data-aga-event-set-prop="clickToCallDepartment|Sales" href='tel:{{dealer.phone}}'>{{dealer.phone}}</a>
2544						</span>
2545					</p>
2546				</div>
2547			{{/flags.noFinalPrice}}
2548			{{^flags.noFinalPrice}}
2549
2550				{{!-- ── MSRP (with strikethrough slash) ── --}}
2551				<div class="dv-dealer-subtotal dv-price-stack dv-pricing-main">
2552					<p class="dv-pricing-stack-strong">
2553						TSRP
2554						 <i class="fad fa-info-circle" onclick="DVPopUp(this);return false;" data-modal-title="MSRP" data-disclaimer="This is the Manufacturer Suggested Retail Price for this Vehicle."></i>
2555						
2556						<span class="dv-pricing-stack-strong">{{msrp}}</span>
2557					</p>
2558				</div>
2559
2560				{{!-- ── Custom Pricing Rule (Dealer Adjustment) ── --}}
2561				{{#flags.hasDiscountMatrix}}
2562					<div class="dv-dealer-subtotal dv-price-stack dv-pricing-main">
2563						<p class="dv-pricing-stack-strong">
2564							Dealer Adjustment
2565							<i class="fad fa-info-circle" onclick="DVPopUp(this);return false;" data-disclaimer="This is a custom dealer amount."></i>
2566							<span class="dv-pricing-stack-strong">{{discountMatrix}}</span>
2567						</p>
2568					</div>
2569				{{/flags.hasDiscountMatrix}}
2570				{{!-- ── Dealer Doc Fees ── --}}
2571				{{#flags.hasDealerFees}}
2572				{{#dealerFees}}
2573				<div class="dv-dealer-subtotal dv-price-stack dv-pricing-main">
2574				<p class="dv-pricing-stack-strong">{{name}} <i class="fad fa-info-circle" onclick="DVPopUp(this);return false;" data-modal-title="{{name}}" data-disclaimer="{{disclaimer}}"></i>
2575				<span class="dv-pricing-stack-strong">+{{displayAmount}}</span>
2576				</p>
2577				</div>
2578				{{/dealerFees}}
2579				{{/flags.hasDealerFees}}
2580
2581				{{!-- ── Dealer Installed Accessories ── --}}
2582				{{#options}}
2583					<div class="dv-dealer-subtotal dv-price-stack dv-pricing-main">
2584						<p class="dv-pricing-stack-strong">
2585							{{name}}
2586							<i class="fad fa-info-circle" onclick="DVPopUp(this);return false;" data-modal-title="Dealer Installed Options" data-disclaimer="Installed Packages by the Dealership. {{name}} - {{description}}"></i>
2587							<span class="dv-pricing-stack-strong">+{{price}}</span>
2588						</p>
2589					</div>
2590				{{/options}}
2591
2592				{{!-- ── Non-Conditional Incentives (with flyout) ── --}}
2593				{{#flags.hasIncentives}}
2594					<div class="ag-incentives-row-wrap">
2595						<div class="dv-dealer-subtotal dv-price-stack dv-pricing-main">
2596							<p class="dv-pricing-stack-strong">
2597								{{make}} Incentives
2598								<i class="fad fa-info-circle ag-incentives-icon-trigger" tabindex="0" role="button" aria-label="View incentive details"></i>
2599								<span class="dv-pricing-stack-strong">{{incentivesDiscount}}</span>
2600							</p>
2601						</div>
2602						<div class="ag-conditional-offers ag-incentives-flyout">
2603							<details class="ag-details-wrapper">
2604								<summary class="ag-incentives-hidden-summary" aria-hidden="true"></summary>
2605								<div class="ag-conditional-panel">
2606									<div class="ag-conditional-panel-inner">
2607										{{#incentives}}
2608											<div class="dv-dealer-subtotal da-srp-incentive-stack dv-pricing-main">
2609												<div class="ag-incentive-line-item">
2610													<p class="da-srp-incentive da-conditional ag-incentive-row">
2611														<span class="ag-incentive-copy-wrap">
2612															<span class="ag-incentive-title">{{programDescription}}</span>
2613															<span class="ag-incentive-disclaimer">{{disclaimerText}}</span>
2614														</span>
2615														<span class="da-conditional ag-incentive-value">-{{programValue}}</span>
2616													</p>
2617												</div>
2618											</div>
2619										{{/incentives}}
2620										{{^flags.hasIncentives}}
2621											<div class="ag-dealer-cond-incentive">
2622												<p class="ag-pricing-stack-desc">No incentive details available at this time.</p>
2623											</div>
2624										{{/flags.hasIncentives}}
2625									</div>
2626								</div>
2627							</details>
2628						</div>
2629					</div>
2630				{{/flags.hasIncentives}}
2631
2632				{{!-- ── Dealer / Feed Discount ── --}}
2633				{{#flags.hasDealerDiscount}}
2634					<div class="dv-dealer-subtotal dv-price-stack dv-pricing-main">
2635						<p class="dv-pricing-stack-strong">
2636							Dealer Discount
2637							 <i class="fad fa-info-circle" onclick="DVPopUp(this);return false;" data-modal-title="Dealer Discount" data-disclaimer="This is the discount provided by the dealership."></i>
2638							<span class="dv-pricing-stack-strong">{{dealerDiscount}}</span>
2639						</p>
2640					</div>
2641				{{/flags.hasDealerDiscount}}
2642
2643
2644				<div class="dv-dealer-subtotal dv-price-stack dv-pricing-main">
2645					<p class="dv-pricing-stack-strong">
2646						Brewer Airport Price
2647						 <i class="fad fa-info-circle" onclick="DVPopUp(this);return false;" data-modal-title="Our Price" data-disclaimer="This is our price after all discounts and incentives everyone qualifies for."></i>
2648						<span class="dv-pricing-stack-value-default" style="color: #000000 !important;">{{finalPrice}}</span>
2649					</p>
2650				</div>
2651			{{/flags.noFinalPrice}}
2652		</div>
2653	{{/flags.msrpFinal}}
2654{{/flags.internetPriceHigher}}
2655{{#flags.internetPriceHigher}}
2656	{{^flags.noFinalPrice}}
2657		<div class="dv-dealer-subtotal dv-price-stack dv-pricing-main">
2658			<p class="dv-pricing-stack-strong">
2659				TSRP
2660				 <i class="fad fa-info-circle" onclick="DVPopUp(this);return false;" data-modal-title="MSRP" data-disclaimer="This is the Manufacturer Suggested Retail Price for this Vehicle."></i>
2661				
2662				<span class="dv-pricing-stack-strong">{{msrp}}</span>
2663			</p>
2664		</div>
2665				{{!-- ── Dealer Doc Fees ── --}}
2666		{{#flags.hasDealerFees}}
2667		{{#dealerFees}}
2668		<div class="dv-dealer-subtotal dv-price-stack dv-pricing-main">
2669		<p class="dv-pricing-stack-strong">{{name}} <i class="fad fa-info-circle" onclick="DVPopUp(this);return false;" data-modal-title="{{name}}" data-disclaimer="{{disclaimer}}"></i>
2670		<span class="dv-pricing-stack-strong">+{{displayAmount}}</span>
2671		</p>
2672		</div>
2673		{{/dealerFees}}
2674		{{/flags.hasDealerFees}}
2675		<div class="dv-dealer-subtotal dv-price-stack dv-pricing-main">
2676			<p class="dv-pricing-stack-strong">
2677				Brewer Airport Price
2678				 <i class="fad fa-info-circle" onclick="DVPopUp(this);return false;" data-modal-title="Our Price" data-disclaimer="This is our price after all discounts and incentives everyone qualifies for."></i>
2679				<span class="dv-pricing-stack-value-default" style="color: #000000 !important;">{{finalPrice}}</span>
2680			</p>
2681		</div>
2682	{{/flags.noFinalPrice}}
2683{{/flags.internetPriceHigher}}
2684
2685{{!-- ============================================================ --}}
2686{{!-- FLYOUT BEHAVIOR SCRIPT --}}
2687{{!-- Handles expand/collapse for incentives and doc-fee panels. --}}
2688{{!-- Self-initializing guard prevents double-binding. --}}
2689{{!-- ============================================================ --}}
2690<script>
2691(function () {
2692if (window.agOfferFlyoutsInitialized) return;
2693window.agOfferFlyoutsInitialized = true;
2694
2695const VEHICLE_CARD_SELECTOR = '.ag-vehicle-card, .vehicle-card, .inventory-card, .srp-vehicle, .vdp-vehicle, [data-vehicle]';
2696const ANIMATION_DURATION = 250;
2697
2698/* ── Helpers ───────────────────────────────────────────── */
2699
2700function getPriceContainer(element) {
2701const card = element.closest(VEHICLE_CARD_SELECTOR);
2702return card ? card.querySelector('.vehicle-price-container') : null;
2703}
2704
2705function expandFlyout(flyout, details, panel, priceContainer) {
2706details.open = true;
2707const pushAmount = panel.scrollHeight + 10;
2708
2709requestAnimationFrame(function () {
2710requestAnimationFrame(function () {
2711flyout.classList.add('ag-is-expanded');
2712
2713if (priceContainer) {
2714priceContainer.style.transition = 'transform 250ms ease';
2715priceContainer.style.transform = 'translateY(-' + pushAmount + 'px)';
2716}
2717});
2718});
2719}
2720
2721function collapseFlyout(flyout, details, priceContainer) {
2722flyout.classList.remove('ag-is-expanded');
2723
2724if (priceContainer) {
2725priceContainer.style.transform = '';
2726}
2727
2728setTimeout(function () {
2729if (!flyout.classList.contains('ag-is-expanded')) {
2730details.open = false;
2731}
2732}, ANIMATION_DURATION);
2733}
2734
2735function toggleFlyout(flyout, details, panel, priceContainer) {
2736if (!flyout || !details || !panel) return;
2737
2738const isExpanding = !flyout.classList.contains('ag-is-expanded');
2739
2740if (isExpanding) {
2741expandFlyout(flyout, details, panel, priceContainer);
2742} else {
2743collapseFlyout(flyout, details, priceContainer);
2744}
2745}
2746
2747/* ── Click Handler ─────────────────────────────────────── */
2748
2749document.addEventListener('click', function (e) {
2750
2751/* Incentives icon trigger */
2752const incentivesIconTrigger = e.target.closest('.ag-incentives-icon-trigger');
2753if (incentivesIconTrigger) {
2754const wrap = incentivesIconTrigger.closest('.ag-incentives-row-wrap');
2755if (!wrap) return;
2756
2757const flyout = wrap.querySelector('.ag-incentives-flyout');
2758const details = wrap.querySelector('.ag-details-wrapper');
2759const panel = wrap.querySelector('.ag-conditional-panel');
2760const priceContainer = getPriceContainer(incentivesIconTrigger);
2761
2762e.preventDefault();
2763e.stopPropagation();
2764toggleFlyout(flyout, details, panel, priceContainer);
2765return;
2766}
2767
2768/* Doc fee icon trigger */
2769const docFeeIconTrigger = e.target.closest('.ag-doc-fee-icon-trigger');
2770if (docFeeIconTrigger) {
2771const wrap = docFeeIconTrigger.closest('.ag-doc-fee-row-wrap');
2772if (!wrap) return;
2773
2774const flyout = wrap.querySelector('.ag-doc-fee-flyout');
2775const details = wrap.querySelector('.ag-doc-fee-details-wrapper');
2776const panel = wrap.querySelector('.ag-doc-fee-panel');
2777const priceContainer = getPriceContainer(docFeeIconTrigger);
2778
2779e.preventDefault();
2780e.stopPropagation();
2781toggleFlyout(flyout, details, panel, priceContainer);
2782return;
2783}
2784
2785/* Close incentives flyout on outside click */
2786const openIncentivesFlyout = document.querySelector('.ag-incentives-flyout.ag-is-expanded');
2787if (openIncentivesFlyout) {
2788const wrap = openIncentivesFlyout.closest('.ag-incentives-row-wrap');
2789if (wrap && !wrap.contains(e.target)) {
2790const details = openIncentivesFlyout.querySelector('.ag-details-wrapper');
2791const priceContainer = getPriceContainer(openIncentivesFlyout);
2792if (details) collapseFlyout(openIncentivesFlyout, details, priceContainer);
2793}
2794}
2795
2796/* Close doc fee flyout on outside click */
2797const openDocFeeFlyout = document.querySelector('.ag-doc-fee-flyout.ag-is-expanded');
2798if (openDocFeeFlyout) {
2799const wrap = openDocFeeFlyout.closest('.ag-doc-fee-row-wrap');
2800if (wrap && !wrap.contains(e.target)) {
2801const details = openDocFeeFlyout.querySelector('.ag-doc-fee-details-wrapper');
2802const priceContainer = getPriceContainer(openDocFeeFlyout);
2803if (details) collapseFlyout(openDocFeeFlyout, details, priceContainer);
2804}
2805}
2806});
2807
2808/* ── Keyboard Handler (Enter / Space) ──────────────────── */
2809
2810document.addEventListener('keydown', function (e) {
2811if (e.key !== 'Enter' && e.key !== ' ') return;
2812
2813/* Incentives keyboard trigger */
2814const incentivesKeyTrigger = e.target.closest('.ag-incentives-icon-trigger');
2815if (incentivesKeyTrigger) {
2816const wrap = incentivesKeyTrigger.closest('.ag-incentives-row-wrap');
2817if (!wrap) return;
2818
2819const flyout = wrap.querySelector('.ag-incentives-flyout');
2820const details = wrap.querySelector('.ag-details-wrapper');
2821const panel = wrap.querySelector('.ag-conditional-panel');
2822const priceContainer = getPriceContainer(incentivesKeyTrigger);
2823
2824e.preventDefault();
2825toggleFlyout(flyout, details, panel, priceContainer);
2826return;
2827}
2828
2829/* Doc fee keyboard trigger */
2830const docFeeKeyTrigger = e.target.closest('.ag-doc-fee-icon-trigger');
2831if (docFeeKeyTrigger) {
2832const wrap = docFeeKeyTrigger.closest('.ag-doc-fee-row-wrap');
2833if (!wrap) return;
2834
2835const flyout = wrap.querySelector('.ag-doc-fee-flyout');
2836const details = wrap.querySelector('.ag-doc-fee-details-wrapper');
2837const panel = wrap.querySelector('.ag-doc-fee-panel');
2838const priceContainer = getPriceContainer(docFeeKeyTrigger);
2839
2840e.preventDefault();
2841toggleFlyout(flyout, details, panel, priceContainer);
2842}
2843});
2844})();
2845</script>
2845
2846
2847{{!-- ============================================================ --}}
2848{{!-- STYLES --}}
2849{{!-- ============================================================ --}}
2850<style>
2851
2852/* ── Price Stack ───────────────────────────────────────── */
2853
2854.dv-price-stack p {
2855height: 23px;
2856font-size: 14px;
2857font-weight: bold;
2858position: relative;
2859}
2860
2861.dv-price-stack p b {
2862font-size: 14px;
2863font-weight: bold;
2864}
2865
2866.dv-price-stack span {
2867font-size: 14px;
2868font-weight: bold;
2869}
2870
2871.dv-price-stack .dv-price-slash {
2872max-width: 63px;
2873z-index: 98;
2874position: absolute;
2875right: 0;
2876}
2877
2878.dv-pricing-stack-strong .dv-pricing-stack-value-default {
2879color: #00bb00;
2880}
2881
2882
2883/* ── Incentives Flyout ─────────────────────────────────── */
2884
2885.ag-incentives-row-wrap {
2886position: relative;
2887}
2888
2889.ag-incentives-hidden-summary {
2890display: none;
2891}
2892
2893.ag-incentives-icon-trigger {
2894cursor: pointer;
2895margin-left: 4px;
2896color: inherit;
2897}
2898
2899.ag-incentives-icon-trigger:focus-visible {
2900outline: 2px solid rgba(0, 0, 0, 0.18);
2901outline-offset: 2px;
2902border-radius: 2px;
2903}
2904
2905.ag-incentives-flyout {
2906width: 100%;
2907position: relative;
2908--anim-speed: 250ms;
2909margin-top: 0;
2910border-top: 0;
2911padding-top: 0;
2912}
2913
2914.ag-incentives-flyout .ag-conditional-panel {
2915display: grid;
2916grid-template-rows: 0fr;
2917position: absolute;
2918left: 0;
2919right: 0;
2920bottom: calc(100% + 10px);
2921overflow: hidden;
2922transition: grid-template-rows var(--anim-speed) ease;
2923border-radius: 10px;
2924background: rgba(255, 255, 255, 0.92);
2925backdrop-filter: blur(8px);
2926z-index: 999;
2927box-shadow: 0 10px 28px rgba(0, 0, 0, 0.16);
2928}
2929
2930.ag-incentives-flyout.ag-is-expanded .ag-conditional-panel {
2931grid-template-rows: 1fr;
2932border: 1px solid rgba(0, 0, 0, 0.08);
2933}
2934
2935.ag-incentives-flyout .ag-conditional-panel-inner {
2936min-height: 0;
2937padding: 0 14px;
2938transition: padding var(--anim-speed) ease;
2939}
2940
2941.ag-incentives-flyout.ag-is-expanded .ag-conditional-panel-inner {
2942padding: 12px 14px;
2943}
2944
2945.ag-incentives-flyout .da-srp-incentive-stack,
2946.ag-incentives-flyout .da-srp-incentive-stack .dv-pricing-stack-strong,
2947.ag-incentives-flyout .da-srp-incentive-stack p {
2948height: auto !important;
2949min-height: 0;
2950}
2951
2952
2953/* ── Doc Fee Flyout ────────────────────────────────────── */
2954
2955.ag-doc-fee-row-wrap {
2956position: relative;
2957}
2958
2959.ag-doc-fee-hidden-summary {
2960display: none;
2961}
2962
2963.ag-doc-fee-icon-trigger {
2964cursor: pointer;
2965margin-left: 4px;
2966color: inherit;
2967}
2968
2969.ag-doc-fee-icon-trigger:focus-visible {
2970outline: 2px solid rgba(0, 0, 0, 0.18);
2971outline-offset: 2px;
2972border-radius: 2px;
2973}
2974
2975.ag-doc-fee-flyout {
2976width: 100%;
2977position: relative;
2978--anim-speed: 250ms;
2979margin-top: 0;
2980border-top: 0;
2981padding-top: 0;
2982}
2983
2984.ag-doc-fee-flyout .ag-doc-fee-panel {
2985display: grid;
2986grid-template-rows: 0fr;
2987position: absolute;
2988left: 0;
2989right: 0;
2990bottom: calc(100% + 10px);
2991overflow: hidden;
2992transition: grid-template-rows var(--anim-speed) ease;
2993border-radius: 10px;
2994background: rgba(255, 255, 255, 0.92);
2995backdrop-filter: blur(8px);
2996z-index: 999;
2997box-shadow: 0 10px 28px rgba(0, 0, 0, 0.16);
2998}
2999
3000.ag-doc-fee-flyout.ag-is-expanded .ag-doc-fee-panel {
3001grid-template-rows: 1fr;
3002border: 1px solid rgba(0, 0, 0, 0.08);
3003}
3004
3005.ag-doc-fee-flyout .ag-doc-fee-panel-inner {
3006min-height: 0;
3007padding: 0 14px;
3008transition: padding var(--anim-speed) ease;
3009}
3010
3011.ag-doc-fee-flyout.ag-is-expanded .ag-doc-fee-panel-inner {
3012padding: 12px 14px;
3013}
3014
3015.ag-doc-fee-flyout .da-srp-incentive-stack,
3016.ag-doc-fee-flyout .da-srp-incentive-stack .dv-pricing-stack-strong,
3017.ag-doc-fee-flyout .da-srp-incentive-stack p {
3018height: auto !important;
3019min-height: 0;
3020}
3021
3022
3023/* ── Shared Line Item Styles (used by both flyouts) ────── */
3024
3025.ag-incentive-line-item {
3026width: 100%;
3027}
3028
3029.ag-incentive-row {
3030display: grid;
3031grid-template-columns: minmax(0, 1fr) auto;
3032align-items: start;
3033column-gap: 10px;
3034margin: 0;
3035line-height: 1.25;
3036}
3037
3038.ag-incentive-copy-wrap {
3039min-width: 0;
3040display: block;
3041}
3042
3043.ag-incentive-title {
3044display: block;
3045font-size: 0.8rem;
3046font-weight: 700;
3047color: #222;
3048line-height: 1.2;
3049}
3050
3051.ag-incentive-disclaimer {
3052display: block;
3053margin-top: 3px;
3054font-size: 0.55rem;
3055line-height: 1.25;
3056color: #666;
3057font-weight: 400;
3058white-space: normal;
3059overflow-wrap: anywhere;
3060}
3061
3062.ag-incentive-value {
3063display: inline-block;
3064white-space: nowrap;
3065font-size: 0.8rem !important;
3066font-weight: 700;
3067align-self: start;
3068}
3069
3070.da-srp-incentive-stack {
3071position: relative;
3072padding: 8px 0;
3073}
3074
3075.da-srp-incentive-stack:not(:last-child) {
3076border-bottom: 1px dashed #d7d7d7;
3077}
3078
3079.da-srp-incentive-stack:last-child {
3080border-bottom: none;
3081}
3082
3083.ag-details-wrapper summary::-webkit-details-marker,
3084.ag-doc-fee-details-wrapper summary::-webkit-details-marker {
3085display: none;
3086}
3087
3088.ag-details-wrapper summary,
3089.ag-doc-fee-details-wrapper summary {
3090list-style: none;
3091outline: none;
3092}
3093
3094</style>
3095
3096                                      </div>
3097
3098
3099
3100
3101
3102
3103                                  </div>
3104
3105                <!-- Conditional Incentives SRP card displays -->
3106                                    <style>
3107                        .incentive-items {
3108                            border-bottom: none !important;
3109                            display: flex;
3110                            padding-bottom: 5px;
3111                            width: 100%;
3112                        }
3113
3114                        .incentive-items > div:first-of-type {
3115                            /* padding-right: 5%; */
3116                        }
3117
3118                        .incentive-items > div:last-of-type {
3119                            display: flex;
3120                            flex-flow: column;
3121                            align-items: flex-end;
3122                            justify-content: space-evenly;
3123                            height: 100px;
3124                            min-width: 200px;
3125                        }
3126
3127                        .incentive-items h4 {
3128                            font-size: 16px;
3129                            font-weight: 500;
3130                        }
3131
3132                        .incentives-btn {
3133                            color: #ffffff;
3134                            background-color: #eb0a1e;
3135                            font-size: .8rem;
3136                            font-weight: 100;
3137                            cursor: pointer;
3138                            padding: 5px 10px;
3139                        }
3140
3141                        .incentives-btn:hover {
3142                            background-color: #000000;
3143                            color: #ffffff;
3144                        }
3145
3146                        .input-incentive-name,
3147                        .input-incentive-value {
3148                            display: none;
3149                        }
3150
3151                        .incentives-description {
3152                            margin: 0 !important;
3153                        }
3154
3155                        .incentive-items {
3156                            display: flex;
3157                            justify-content: space-between;
3158                            align-items: flex-start;
3159                            padding: 1rem;
3160                            border-bottom: 1px solid #eee;
3161                        }
3162
3163                        .cash-incentives {
3164                            align-items: flex-end;
3165                        }
3166
3167                        .cash-incentives-value {
3168                            margin-right: 10%;
3169                        }
3170
3171                        .incentives-btn {
3172                            white-space: nowrap;
3173                            min-width: fit-content;
3174                        }
3175
3176                        .hidden {
3177                            display: none;
3178                        }
3179
3180                        .toggle-list-item {
3181                            display: flex;
3182                            justify-content: space-between;
3183                            align-items: center;
3184                            cursor: pointer;
3185                            padding-bottom: 25px;
3186                        }
3187
3188                        #srp_incentives_form:not(.hidden) {
3189                            display: block !important;
3190                        }
3191
3192                        .ag-dealer-cond-incentive {
3193                            display: flex;
3194                            justify-content: space-between;
3195                            align-items: center;
3196                            padding: 0.25rem 0;
3197                            width: 100%;
3198                            gap: 1rem;
3199                        }
3200
3201                        .incentive-content {
3202                            display: flex;
3203                            align-items: baseline;
3204                            gap: 0.5rem;
3205                            flex: 1;
3206                        }
3207
3208                        .ag-pricing-stack-strong {
3209                            margin: 0;
3210                            font-size: 0.75rem;
3211                            line-height: 1.2;
3212                            flex: 1;
3213                        }
3214
3215                        .ag-pricing-stack-value {
3216                            font-size: 0.75rem;
3217                            text-align: right;
3218                            white-space: nowrap;
3219                            min-width: 60px;
3220                        }
3221
3222                        .ag-conditional-stack-label {
3223                            padding-bottom: 5px;
3224                        }
3225
3226                        .ag-price-stack-incentives {
3227                            padding: 25px;
3228                        }
3229                    </style>
3230
3231                    {{#flags.hasConditionalIncentives}}
3232                    <div class="ag-price-stack ag-price-stack-incentives">
3233                        <h5 class="ag-conditional-stack-label">Additional Available Offers</h5>
3234
3235                        {{#_transformed.priorityIncentives}}
3236                        <div class="ag-dealer-cond-incentive">
3237                            <div class="incentive-content">
3238                                <p class="ag-pricing-stack-strong">{{programDescription}}</p>
3239                                <i class="fad fa-info-circle"
3240                                  onclick="DVPopUp(this);return false;"
3241                                  data-disclaimer="{{disclaimerText}}</br></br>{{programRuleList.0.description}}</br></br>Effective : {{effectiveDate}} to {{expiryDate}}">
3242                                </i>
3243                            </div>
3244                            <div class="ag-pricing-stack-value">{{programValue}}</div>
3245                        </div>
3246                        {{/_transformed.priorityIncentives}}
3247
3248                        {{#_transformed.remainingIncentivesCount}}
3249                        <div class="ag-dealer-cond-incentive ag-price-stack ag-more-incentives">
3250                            <a href="javascript: void(0);"
3251                              data-vehicle-vin="{{vin}}"
3252                              data-vehicle-condition="{{condition}}"
3253                              data-vehicle-year="{{yr}}"
3254                              data-vehicle-stock-number="{{stockNumber}}"
3255                              data-vehicle-make-model="{{make}} {{model}}"
3256                              data-vehicle-price="{{finalPrice}}"
3257                              data-dealer-name="{{dealer.name}}"
3258                              data-vehicle-url="{{vdpUrl}}">
3259                                <h5 class="ag-conditional-stack-label">
3260                                    See {{_transformed.remainingIncentivesCount}} Additional Available Offers
3261                                    <i class="fal fa-chevron-right"></i>
3262                                </h5>
3263                                <span style="display:none;" class="vehicle_title_form">{{yr}} {{make}} {{model}}</span>
3264                            </a>
3265                        </div>
3266
3267                        <div style="display: none;" class="incentives-content-template">
3268                            <section style="padding:25px;" class="more-info-section vehicle-incentives">
3269                                <ul>
3270                                    <li>
3271                                        {{#_transformed.incentives.length}}
3272                                        <div class="toggle-list-item toggle-incentives">
3273                                                                                            <h3 class="toggle-header">Available Manufacturer Incentives</h3>
3274                                                                                        <i class="fa fa-chevron-down chev-incentives" aria-hidden="true"></i>
3275                                        </div>
3276                                        {{/_transformed.incentives.length}}
3277
3278                                        {{#_transformed.incentives}}
3279                                        <ul class="toggle-list-incentives list-style incentive-items">
3280                                            <li class="vdp-item incentive-items">
3281                                                <div style="line-height: 1.2;">
3282                                                    <h4 id="{{incentiveID}}">{{programDescription}}</h4>
3283                                                    <p class="incentives-description" style="font-size: 12px; font-weight: 400; color:#a9a9a9;">
3284                                                        Effective Dates: {{effectiveDate}} - {{expiryDate}}
3285                                                    </p>
3286                                                    <p class="incentives-description" style="font-size: 10px; font-weight: 400;">{{disclaimerText}} {{programRuleList.0.description}}</p>
3287                                                </div>
3288                                                <div class="cash-incentives" style="color:#5cb85c; font-weight: 600; font-size: 36px;">
3289                                                    <div class="text-right cash-incentives-value">
3290                                                        {{programValue}}
3291                                                    </div>
3292                                                                                                        <div class="text-right">
3293                                                        <a id="incentives_button_"
3294                                                          class="incentives-btn text-center"
3295                                                          name="{{programDescription}}"
3296                                                          data-value="{{programValue}}"
3297                                                          data-form-value="24"
3298                                                          data-vehicle-vin="{{vin}}"
3299                                                          data-vehicle-condition="{{condition}}"
3300                                                          data-vehicle-year="{{yr}}"
3301                                                          data-vehicle-stock-number="{{stockNumber}}"
3302                                                          data-vehicle-make-model="{{make}} {{model}}"
3303                                                          data-vehicle-price="{{finalPrice}}"
3304                                                          data-dealer-name="{{dealer.name}}"
3305                                                          data-vehicle-url="{{vdpUrl}}">
3306                                                            See if you Qualify                                                        </a>
3307                                                    </div>
3308                                                                                                    </div>
3309                                            </li>
3310                                        </ul>
3311                                        {{/_transformed.incentives}}
3312                                    </li>
3313                                    <li>
3314                                        {{#_transformed.otherIncentives.length}}
3315                                        <div class="toggle-list-item toggle-qualify">
3316                                                                                            <h3 class="toggle-header">You May Also Qualify For</h3>
3317                                                                                        <i class="fa fa-chevron-down chev-qualify" aria-hidden="true"></i>
3318                                        </div>
3319                                        {{/_transformed.otherIncentives.length}}
3320
3321                                        {{#_transformed.otherIncentives}}
3322                                        <ul class="toggle-list-qualify list-style incentive-items">
3323                                            <li class="vdp-item incentive-items">
3324                                                <div style="line-height: 1.2;">
3325                                                    <h4 id="{{incentiveID}}">{{programDescription}}</h4>
3326                                                    <p class="incentives-description" style="font-size: 12px; font-weight: 400; color:#a9a9a9;">
3327                                                        Effective Dates: {{effectiveDate}} - {{expiryDate}}
3328                                                    </p>
3329                                                    <p class="incentives-description" style="font-size: 10px; font-weight: 400;">{{disclaimerText}} {{programRuleList.0.description}}</p>
3330                                                </div>
3331                                                <div class="cash-incentives" style="color:#5cb85c; font-weight: 600; font-size: 36px;">
3332                                                    <div class="text-right cash-incentives-value">
3333                                                        {{programValue}}
3334                                                    </div>
3335                                                                                                        <div class="text-right">
3336                                                        <a id="incentives_button_1"
3337                                                          class="incentives-btn text-center"
3338                                                          name="{{programDescription}}"
3339                                                          data-value="{{programValue}}"
3340                                                          data-form-value="24"
3341                                                          data-vehicle-vin="{{vin}}"
3342                                                          data-vehicle-condition="{{condition}}"
3343                                                          data-vehicle-year="{{yr}}"
3344                                                          data-vehicle-stock-number="{{stockNumber}}"
3345                                                          data-vehicle-make-model="{{make}} {{model}}"
3346                                                          data-vehicle-price="{{finalPrice}}"
3347                                                          data-dealer-name="{{dealer.name}}"
3348                                                          data-vehicle-url="{{vdpUrl}}">
3349                                                            See if you Qualify                                                        </a>
3350                                                    </div>
3351                                                                                                    </div>
3352                                            </li>
3353                                        </ul>
3354                                        {{/_transformed.otherIncentives}}
3355                                    </li>
3356                                </ul>
3357                            </section>
3358                            <div class="srp_incentives_form hidden" id="srp_incentives_form"></div>
3359                        </div>
3360                        {{/_transformed.remainingIncentivesCount}}
3361                    </div>
3362                    {{/flags.hasConditionalIncentives}}
3363                                <!--END Conditional Incentives SRP card displays -->
3364
3365
3366              </div>
3367
3368              
3369
3370
3371              <div class="right-bottom">
3372                                <div class="srp-custom srp-custom-six" style='height:180px'>
3373                  <style>
3374        .da-quick-form-button:hover {
3375            background-color: #cc0000 !important;
3376            color: #FFFFFF !important;
3377        }
3378        .da-quick-form-button:hover svg path {
3379            stroke: #FFFFFF;
3380        }
3381        .da-quick-form-button {
3382            text-align: center;
3383            leading-trim: both;
3384            font-size: 12px;
3385            font-weight: 600;
3386            line-height: normal;
3387            font-family: inherit !important;
3388            text-transform: none;
3389        }
3390        .da-quick-form-button[disabled] {
3391            opacity: 0.7;
3392            cursor: not-allowed;
3393        }
3394        @keyframes spin {
3395            from { transform: rotate(0deg); }
3396            to { transform: rotate(360deg); }
3397        }
3398        .animate-spin {
3399            animation: spin 1s linear infinite;
3400        }
3401        .icon-container {
3402            display: inline-flex;
3403            align-items: center;
3404        }
3405        .icon-container > * {
3406            display: none;
3407        }
3408        .icon-container > *.active {
3409            display: inline-flex;
3410        }
3411        .da-quick-form input:user-invalid {
3412            background-color: #ff00001f !important;
3413        }
3414    </style><div class="da-quick-form" data-locked-pricing="false" style="margin-bottom:25px; margin-top:25px;" id="da_quick_form_6ab799c9cc741"><div class="da-quick-form-title-container" style="background-color: #231f20; color: #fff; padding: 15px; text-align:center; border-radius: 5px 5px 0px 0px; font-weight: 600;"><h5 class="gform_title quick_form_title">Quick Contact</h5></div><form method="post" class="gform_form gform_quick_form" data-form-id="41"><input type="hidden" id="da_quick_form_nonce" name="da_quick_form_nonce" value="4ad092445d" /><input type="hidden" name="_wp_http_referer" value="/new-vehicles/" /><input type="hidden" name="da_vehicle_id" class="vehicle-id-field" value="{{vin}}"><input type="hidden" name="da_vin" class="vin-field" value="{{vin}}"><input type="hidden" name="da_stock_number" class="stock-number-field" value="{{stockNumber}}"><input type="hidden" name="da_year" class="year-field" value="{{year}}"><input type="hidden" name="da_make" class="make-field" value="{{make}}"><input type="hidden" name="da_model" class="model-field" value="{{model}}"><input type="hidden" name="da_trim" class="trim-field" value="{{trim}}"><input type="hidden" name="da_msrp" class="msrp-field" value="{{msrp}}">
3414<input type="hidden" name="da_final_price" class="final-price-field" value="{{finalPrice}}"><input type="hidden" name="da_dealer_name" class="dealer-name-field" value="{{dealer.name}}"><input type="hidden" name="da_discount_matrix" class="discount-matrix-field" value="{{discountMatrix}}"><input type="hidden" name="da_discount_matrix_value" class="discount-matrix-value-field" value="{{discountmatrix_value}}"><input type="hidden" name="da_internet_price" class="internet-price-field" value="{{internet_price}}"><input type="hidden" name="da_condition" class="condition-field" value="{{condition}}"><input type="hidden" name="da_vehicle_url" class="vehicle-url-field" value="{{vdpUrl}}"><div class="gform_body"><div class="gform_fields" style="display: flex;"><div class="gfield" style="flex:1;"><input type="text" name="da_quick_form_name" placeholder="Full Name" required class="medium" style="height: 45px; background-color:#F8F8F8; border: none; border-left: 1px solid #E0E0E0;"></div><div class="gfield ginput_container ginput_container_phone" style="flex:1;"><input type="tel" name="da_quick_form_phone" placeholder="Phone" required pattern="\(\d{3}\) \d{3}-\d{4}" title="10-digit phone number. Formatting is applied automatically." class="medium da-quick-form-phone-input" style="height: 45px; background-color:#F8F8F8; border: none; border-left: 1px solid #E0E0E0; border-right: 1px solid #E0E0E0;"></div></div><div class="gform_fields da_quick_form_bottom_row" style="display: flex; align-items: stretch;"><div class="gfield da_quick_form_bottom_row" style="flex: 3;"><input type="email" name="da_quick_form_email" placeholder="Email" required class="medium" style="width: 100%; height: 45px; background-color:#F8F8F8; border:1px solid #E0E0E0; border-radius: 0 0 0 5px !important;"></div><div class="gfield gform_fields" style="flex: 1.5;"><button type="submit" name="da_quick_form_submitted" class="gform_button button da-quick-form-button" style="width: 100%; height: 45px; margin: 0; background-color: #eb0a1e; border: none; color: #FFFFFF; cursor: pointer; border-radius: 0px 0px 5px 0; display: flex; align-items: center; justify-content: center; gap: 4px;"><span class="icon-container"><span class="default-icon active"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none">
3415                <g clip-path="url(#clip0_4_59)">
3416                    <path d="M2.25 9.75C2.25 9.35218 2.40804 8.97064 2.68934 8.68934C2.97064 8.40804 3.35218 8.25 3.75 8.25H11.25C11.6478 8.25 12.0294 8.40804 12.3107 8.68934C12.592 8.97064 12.75 9.35218 12.75 9.75V14.25C12.75 14.6478 12.592 15.0294 12.3107 15.3107C12.0294 15.592 11.6478 15.75 11.25 15.75H3.75C3.35218 15.75 2.97064 15.592 2.68934 15.3107C2.40804 15.0294 2.25 14.6478 2.25 14.25V9.75Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3417                    <path d="M6.75 12C6.75 12.1989 6.82902 12.3897 6.96967 12.5303C7.11032 12.671 7.30109 12.75 7.5 12.75C7.69891 12.75 7.88968 12.671 8.03033 12.5303C8.17098 12.3897 8.25 12.1989 8.25 12C8.25 11.8011 8.17098 11.6103 8.03033 11.4697C7.88968 11.329 7.69891 11.25 7.5 11.25C7.30109 11.25 7.11032 11.329 6.96967 11.4697C6.82902 11.6103 6.75 11.8011 6.75 12Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3418                    <path d="M9.75 8.25V5.25C9.75 4.45435 10.0661 3.69129 10.6287 3.12868C11.1913 2.56607 11.9544 2.25 12.75 2.25C13.5456 2.25 14.3087 2.56607 14.8713 3.12868C15.4339 3.69129 15.75 4.45435 15.75 5.25V8.25" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3419                </g>
3420                <defs>
3421                    <clipPath id="clip0_4_59">
3422                        <rect width="18" height="18" fill="white"/>
3423                    </clipPath>
3424                </defs>
3425            </svg></span><span class="loading-icon"><svg class="animate-spin" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none">
3426                <path d="M12 4.75V6.25" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3427                <path d="M17.1266 6.87347L16.0659 7.93413" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3428                <path d="M19.25 12H17.75" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3429                <path d="M17.1266 17.1265L16.0659 16.0659" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3430                <path d="M12 17.75V19.25" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3431                <path d="M7.9342 16.0659L6.87354 17.1265" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3432                <path d="M6.25 12H4.75" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3433                <path d="M7.9342 7.93413L6.87354 6.87347" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3434            </svg></span></span><span class="button-text">Submit</span></button></div></div></div></form></div><div class="da-quick-form-unlocked" style="display:none;"></div>                </div>
3435                                <div class="srp-custom srp-custom-seven" style='height:50px'>
3436                  <button class='tp-btn-full-frame dv-tp-cta'><i class="fal fa-cars"></i> Value Your Trade</button>                </div>
3437                
3438                <div class="srp-cta">
3439
3440
3441          
3442                                                      <a href='{{vdpUrl}}'  data-vehicle-vin="{{vin}}" data-vehicle-condition="{{condition}}" data-vehicle-year="{{yr}}" data-vehicle-stock-number="{{stockNumber}}" data-vehicle-make-model="{{make}} {{model}}" data-vehicle-price="{{final_price}}" data-dealer-name="{{dealer.name}}" class="srp-cta-5-btn srp_cta_5 srp_cta">View Details</a>
3443                                    <div class="srp-extra-div"><p class="trans" style="color:#838383;font-size:.65rem;">VIN: <span class="bold-value-2" style="color:#838383; font-size:.65rem; font-weight: 600;"> {{vin}}</span></p> &nbsp;&nbsp;&nbsp;
3444{{#stockNumber}}<p class="trim" style="color:#838383;font-size:.65rem;">Stock:<span class="bold-value-2" style="color:#838383; font-size:.65rem; font-weight: 600;"> {{stockNumber}}</span></p>{{/stockNumber}}</div>
3445                                  </div>
3446                <!--End .srp-cta-->
3447                              </div>
3448            </div>
3449
3450          </div>
3451          
3452
3453                    <div class="listing-bottom-row srp-lower-bar">
3454            <div class="dealer-phone">
3455    <p style="text-transform: capitalize;"><a data-aga-event="getDirections" href="{{dealer.googleShareUrl}}" target="_blank">{{dealer.name}}</a></p>
3456    <p><a class="dv-lowerbar-used-srp-veh-phone" data-aga-event="clickToCall" data-aga-event-set-prop="clickToCallDepartment|Sales" href="tel:{{dealer.phone}}"><i class="fal fa-phone-alt"></i>{{dealer.phone}}</a></p>
3457</div>          </div>
3458                  </div>
3459      </div>
3460    </div>
3461  </div>
3462
3463  <div class='dv-offers-bottom-banner-new-srp-wrapper'><div class='dv-offers-bottom-banner-new-srp'><div class='dv-offers-banner-disclaimer'>
3464											<div class='dv-offers-banner-disclaimer-btn' data-disclaimer='See dealer for complete details.' onclick='DVPopUp(this);return false;'>Disclaimer</div>
3465										</div><a data-ag-event='cta_interaction' href='/vehicle-finder-service/' target='_self' title='Can&#8217;t Find What You&#8217;re Looking For? | Brewer Airport Toyota' class='dv-offers-bottom-banner-new-srp-desktop'><span class='dv-offers-offer-title-hidden'>Can&#8217;t Find What You&#8217;re Looking For?</span><img src='https://bucket.dealeralchemist.com/brewer-airport-toyota/find-my-car-DT.png?auto=compress%2Cformat&ixlib=php-3.3.1' alt='Can&#8217;t Find What You&#8217;re Looking For? | Brewer Airport Toyota'/></a><a data-ag-event='cta_interaction' href='/vehicle-finder-service/' target='_self' title='Can&#8217;t Find What You&#8217;re Looking For? | Brewer Airport Toyota' class='dv-offers-bottom-banner-new-srp-mobile'><span class='dv-offers-offer-title-hidden'>Can&#8217;t Find What You&#8217;re Looking For?</span><img src='https://bucket.dealeralchemist.com/brewer-airport-toyota/find-my-car-MB.png?auto=compress%2Cformat&ixlib=php-3.3.1' alt='Can&#8217;t Find What You&#8217;re Looking For? | Brewer Airport Toyota'/></a></div></div>
3465<script>
3466						$(document).ready(function() {
3467							$(".dv-offers-bottom-banner-new-srp-wrapper").slick({
3468								dots: false,
3469								autoplay: true,
3470								infinite: true,
3471								autoplaySpeed: 4500,
3472								speed: 500,
3473								slidesToShow: 1,
3474								pauseOnHover: true,
3475								pauseOnFocus: true,
3476								pauseOnDotsHover: true,
3477								arrows: true,
3478								dotsClass: "dv-offers-srp-dots",
3479							})
3480							.on("beforeChange", function(event, slick, currentSlide, nextSlide) {
3481								if (currentSlide !== nextSlide) {
3482									var elements = document.querySelectorAll(".slick-center + .slick-cloned");
3483									for (var i = 0; i < elements.length; i++) {
3484										setTimeout(function() {
3485											return elements[i].classList.add("slick-current", "slick-center");
3486										});
3487									}
3488								}
3489							});
3490						
3491						});
3492
3493						</script>
3493
3494						<style>
3495						.dv-offers-top-banner-new-srp-wrapper .slick-arrow, .dv-offers-top-banner-used-srp-wrapper .slick-arrow {
3496							background: rgba(0,0,0,0.8);
3497							width: auto;
3498							height: auto
3499						}
3500						.dv-offers-top-banner-new-srp-wrapper .slick-arrow, .dv-offers-top-banner-used-srp-wrapper .slick-arrow:before {
3501							color: #fff;
3502							padding: 5px;
3503							line-height: 100%;
3504							display: block;
3505							width: auto;
3506							height: auto;
3507						}
3508						</style>
3509						
3510  <div class="srp-footer">
3511    <div id="resultsStats-bottom"></div>
3512    <div id="pagination-bottom"></div>
3513  </div>
3514</div>
3515
3516<div id="empty-template" style='display:none;'>
3517  <div class='row srp-no-results'><h3>Don't see the vehicle you are looking for? We will find it for you!</h3></div><div class='srp-noResults-wrapper'>
3518                <div class='gf_browser_chrome gform_wrapper orderparts_wrapper' id='gform_wrapper_7' ><form data-id="7" data-type="consumer_contact" data-department="sales" data-name="Vehicle Finder Service" data-redirected="true" method='post' enctype='multipart/form-data'  id='gform_7' class='orderparts' action='/new-vehicles/'>
3519                        <div class='gform_body'><ul id='gform_fields_7' class='gform_fields left_label form_sublabel_below description_below'><li id='field_7_6'  class='gfield gsection field_sublabel_below field_description_below gfield_visibility_visible' ><h2 class='gsection_title'>Vehicle Info</h2></li><li id='field_7_35'  class='gfield gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below field_description_below gfield_visibility_visible' ></ul><ul class="formsection"></li><li id='field_7_49'  class='gfield dv-form-textbox dv-form-name gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label gfield_label_before_complex'  >Name<span class='gfield_required'>*</span></label><div class='ginput_complex ginput_container no_prefix has_first_name no_middle_name has_last_name no_suffix gf_name_has_2 ginput_container_name' id='input_7_49'>
3520                            
3521                            <span id='input_7_49_3_container' class='name_first' >
3522                                                    <input type='text' name='input_49.3' id='input_7_49_3' value='' aria-label='First name' tabindex='50'  aria-required="true" aria-invalid="false" placeholder='First'/>
3523                                                    <label for='input_7_49_3' >First</label>
3524                                                </span>
3525                            
3526                            <span id='input_7_49_6_container' class='name_last' >
3527                                                    <input type='text' name='input_49.6' id='input_7_49_6' value='' aria-label='Last name' tabindex='52'  aria-required="true" aria-invalid="false" placeholder='Last'/>
3528                                                    <label for='input_7_49_6' >Last</label>
3529                                                </span>
3530                            
3531                        </div></li><li id='field_7_3'  class='gfield dv-form-textbox field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_7_3' >Phone</label><div class='ginput_container ginput_container_phone'><input name='input_3' id='input_7_3' type='text' value='' class='medium' tabindex='54'   aria-invalid="false" /></div></li><li id='field_7_4'  class='gfield dv-form-textbox gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_7_4' >Email<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_email'>
3532                            <input name='input_4' id='input_7_4' type='text' value='' class='medium' tabindex='55'   aria-required="true" aria-invalid="false"/>
3533                        </div></li><li id='field_7_5'  class='gfield dv-form-textbox gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label'  >Contact Preference?<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_radio'><ul class='gfield_radio' id='input_7_5'><li class='gchoice_7_5_0'><input name='input_5' type='radio' value='Phone'  id='choice_7_5_0' tabindex='56'   /><label for='choice_7_5_0' id='label_7_5_0'>Phone</label></li><li class='gchoice_7_5_1'><input name='input_5' type='radio' value='Email'  id='choice_7_5_1' tabindex='57'   /><label for='choice_7_5_1' id='label_7_5_1'>Email</label></li></ul></div></li><li id='field_7_36'  class='gfield gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below field_description_below gfield_visibility_visible' ></ul><ul></li><li id='field_7_7'  class='gfield gsection field_sublabel_below field_description_below gfield_visibility_visible' ><h2 class='gsection_title'>What Are You Looking For?</h2></li><li id='field_7_37'  class='gfield gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below field_description_below gfield_visibility_visible' ></ul><ul class="formsection"></li><li id='field_7_41'  class='gfield dv-form-textbox gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label'  >Type<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_radio'><ul class='gfield_radio' id='input_7_41'><li class='gchoice_7_41_0'><input name='input_41' type='radio' value='New'  id='choice_7_41_0' tabindex='58'   /><label for='choice_7_41_0' id='label_7_41_0'>New</label></li><li class='gchoice_7_41_1'><input name='input_41' type='radio' value='Used'  id='choice_7_41_1' tabindex='59'   /><label for='choice_7_41_1' id='label_7_41_1'>Used</label></li><li class='gchoice_7_41_2'><input name='input_41' type='radio' value='Any'  id='choice_7_41_2' tabindex='60'   /><label for='choice_7_41_2' id='label_7_41_2'>Any</label></li></ul></div></li><li id='field_7_50'  class='gfield dv-form-textbox gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_7_50' >Year<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_text'><input name='input_50' id='input_7_50' type='text' value='' class='medium'   tabindex='61' placeholder='XXXX' aria-required="true" aria-invalid="false" /></div></li><li id='field_7_44'  class='gfield dv-form-textbox gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_7_44' >Mileage (Max)<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_select'><select name='input_44' id='input_7_44' class='medium gfield_select' tabindex='62'  aria-required="true" aria-invalid="false"><option value='5000' >5000</option><option value='10000' >10000</option><option value='15000' >15000</option><option value='20000' >20000</option><option value='25000' >25000</option><option value='30000' >30000</option><option value='40000' >40000</option><option value='50000' >50000</option><option value='60000' >60000</option><option value='70000' >70000</option><option value='80000' >80000</option><option value='90000' >90000</option><option value='100000' >100000</option><option value='150000' >150000</option><option value='Any' >Any</option></select></div></li><li id='field_7_45'  class='gfield dv-form-textbox gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_7_45' >Price (Max)<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_select'><select name='input_45' id='input_7_45' class='medium gfield_select' tabindex='63'  aria-required="true" aria-invalid="false"><option value='Any' >Any</option><option value='$200000' >$200000</option><option value='$150000' >$150000</option><option value='$120000' >$120000</option><option value='$100000' >$100000</option><option value='$90000' >$90000</option><option value='$80000' >$80000</option><option value='$70000' >$70000</option><option value='$60000' >$60000</option><option value='$50000' >$50000</option><option value='$40000' >$40000</option><option value='$30000' >$30000</option><option value='$25000' >$25000</option><option value='$20000' >$20000</option><option value='$15000' >$15000</option><option value='$10000' >$10000</option><option value='$5000' >$5000</option></select></div></li><li id='field_7_9'  class='gfield dv-form-textbox gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_7_9' >Make<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_text'><input name='input_9' id='input_7_9' type='text' value='' class='medium'   tabindex='64'  aria-required="true" aria-invalid="false" /></div></li><li id='field_7_10'  class='gfield dv-form-textbox gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_7_10' >
3533Model<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_text'><input name='input_10' id='input_7_10' type='text' value='' class='medium'   tabindex='65'  aria-required="true" aria-invalid="false" /></div></li><li id='field_7_11'  class='gfield dv-form-textbox field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_7_11' >Trim</label><div class='ginput_container ginput_container_text'><input name='input_11' id='input_7_11' type='text' value='' class='medium'   tabindex='66'   aria-invalid="false" /></div></li><li id='field_7_46'  class='gfield dv-form-textbox field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_7_46' >Color</label><div class='ginput_container ginput_container_text'><input name='input_46' id='input_7_46' type='text' value='' class='medium'   tabindex='67'   aria-invalid="false" /></div></li><li id='field_7_12'  class='gfield dv-form-textbox gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label'  >Transmission<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_radio'><ul class='gfield_radio' id='input_7_12'><li class='gchoice_7_12_0'><input name='input_12' type='radio' value='Automatic'  id='choice_7_12_0' tabindex='68'   /><label for='choice_7_12_0' id='label_7_12_0'>Automatic</label></li><li class='gchoice_7_12_1'><input name='input_12' type='radio' value='Manual'  id='choice_7_12_1' tabindex='69'   /><label for='choice_7_12_1' id='label_7_12_1'>Manual</label></li></ul></div></li><li id='field_7_47'  class='gfield dv-form-textbox field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_7_47' >Message</label><div class='ginput_container ginput_container_textarea'><textarea name='input_47' id='input_7_47' class='textarea small' tabindex='70'     aria-invalid="false"   rows='10' cols='50'></textarea></div></li><li id='field_7_38'  class='gfield gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below field_description_below gfield_visibility_visible' ></ul><ul></li><li id='field_7_39'  class='gfield gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below field_description_below gfield_visibility_visible' ><div class="bottomsection">By submitting this form, you agree to be contacted with information regarding the vehicle you are searching for.</div></ul></li><li id='field_7_40'  class='gfield hidden field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_7_40' >Referral ID</label></li><li id='field_7_51'  class='gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_7_51' >Name</label><div class='ginput_container'><input name='input_51' id='input_7_51' type='text' value='' /></div><div class='gfield_description' id='gfield_description__51'>This field is for validation purposes and should be left unchanged.</div></li>
3534                            </ul></div>
3535        <div class='gform_footer left_label'> <input type='submit' id='gform_submit_button_7' class='gform_button button' value='Let us find it!' tabindex='71' onclick='if(window["gf_submitting_7"]){return false;}  window["gf_submitting_7"]=true;  ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_7"]){return false;} window["gf_submitting_7"]=true;  jQuery("#gform_7").trigger("submit",[true]); }' /> 
3536            <input type='hidden' class='gform_hidden' name='is_submit_7' value='1' />
3537            <input type='hidden' class='gform_hidden' name='gform_submit' value='7' />
3538            
3539            <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' />
3540            <input type='hidden' class='gform_hidden' name='state_7' value='WyJbXSIsIjExNzhmZjIwMGMwYzVkM2UzYjE0NGUyMzc1MWQyNTczIl0=' />
3541            <input type='hidden' class='gform_hidden' name='gform_target_page_number_7' id='gform_target_page_number_7' value='0' />
3542            <input type='hidden' class='gform_hidden' name='gform_source_page_number_7' id='gform_source_page_number_7' value='1' />
3543            <input type='hidden' name='gform_field_values' value='' />
3544            
3545        </div>
3546                        <p class="gf-consent-text" style="margin-top: 12px; font-size:11px; color:#999B9F; line-height:1.1rem;">By submitting your information, you consent to receive communications from Brewer Airport Toyota, including SMS, voice calls, and/or emails, regarding our products, services, and promotional offers. These communications may be sent using automated technology. Consent is not a condition of purchase. Standard messaging and data rates may apply.</p><div class="dealer-disclaimer-container-class"></div><p style="display: none !important;"><label>&#916;<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js" value="92"/>
3546<script>document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() );</script>
3546</p></form>
3547                        </div></div></div>
3548
3549
3550			<style>
3551			.listing .vehicle-views .srp-views { 
3552				top: 10px; 
3553				right: 10px;
3554			}
3555			</style>  
3555<script>
3556  function toggleMobileButton() {
3557
3558    var isMobile = window.innerWidth <= 768;
3559    var button = document.querySelector('.srp-cta-6-btn');
3560
3561    if (!isMobile && button) {
3562        button.parentNode.removeChild(button);
3563    }
3564}
3565toggleMobileButton();
3566window.onload = toggleMobileButton;
3567window.onresize = toggleMobileButton;
3568</script>
3568
3569
3570
3571<script>
3572  /**
3573   * The loading overlay needs a deadline as well as a success condition.
3574   *
3575   * This poll had no upper bound: if results never arrived - slow connection,
3576   * Algolia error, an exception thrown earlier on the page - it retried every
3577   * 100ms indefinitely and the overlay stayed up forever. Measured on prod
3578   * throttled to Slow 3G, results had still not rendered 90 seconds in and this
3579   * was still looping.
3580   *
3581   * It went unnoticed for so long only because .srpLoading was silently unstyled:
3582   * a Stylus indentation bug folded its declarations into a selector list, so
3583   * browsers dropped the entire rule and the overlay covered nothing. See the
3584   * note in media/css/srpCSS/algolia.styl. Now that the rule compiles, this is a
3585   * genuinely opaque full-viewport layer at z-index 999, and an unbounded wait
3586   * means a shopper stuck on a grey screen with no way past it.
3587   *
3588   * Revealing a half-built page is the better failure. The above-the-fold
3589   * controls are styled from algolia.css at first paint, so what shows through is
3590   * presentable even mid-load.
3591   *
3592   * Measured from performance.now() - milliseconds since navigation start - and
3593   * NOT from a Date.now() captured when this script runs. This block sits around
3594   * line 3,260 of an 8,800-line document, so on a slow connection it executes
3595   * many seconds after the overlay first paints; anchoring the deadline to script
3596   * execution would silently stretch it by however long the HTML took to get
3597   * here. The budget is a fixed span of page life, not that span measured from
3598   * whenever-this-parsed.
3599   *
3600   * Configurable at Theme Options -> Performance -> "Maximum time to show the
3601   * loading overlay". There is deliberately no switch to turn the deadline off:
3602   * unbounded is the bug it replaced.
3603   */
3604  var SRP_LOADING_MAX_MS = 12000;
3605
3606  function checkForResults() {
3607    if ($("#srp-results .ais-Hits-item")[0] || $("#srp-results .srp-no-results").is(":visible")) {
3608      $(".srpLoading").remove();
3609    } else if (performance.now() > SRP_LOADING_MAX_MS) {
3610      $(".srpLoading").remove();
3611    } else {
3612      setTimeout(checkForResults, 100);
3613    }
3614  }
3615
3616
3617  checkForResults();
3618    //Moroney Label Click Event - SRP
3619                  function callWindowSticker(vin,year,make,model,condition) {
3620                    if (String(make).toLowerCase() === 'kia' && String(condition).toLowerCase() === 'new') {
3621                      if (window.AutoGoKiaWindowSticker) {
3622                        window.AutoGoKiaWindowSticker.open(`/wp-json/dealer/v1/kia-window-sticker/${encodeURIComponent(vin)}`);
3623                      }
3624                      return false;
3625                    }
3626
3627                    let windowSticker = `https://api.toyotainventory.com/vehicles/${vin}/monroney`;
3628
3629                    //SDIS Auth Token for Window Stickers
3630                    $.ajax({
3631                        url: windowSticker,
3632                        type: 'GET',
3633                        beforeSend: function (xhr) {
3634                            xhr.setRequestHeader('Authorization', 'Bearer RABWAGUAbgBvAG0AVABvAHkAbwB0AGEAMgAwADIAMgA=');
3635                        },
3636                    });
3637
3638                        sd('dataLayer', {
3639                            linkType: 'Monroney Label',
3640                            vehicleDetails: {
3641                                status: 'new',
3642                                year: year,
3643                                make: make,
3644                                model: model,
3645                                vin: vin,
3646                            },
3647                            events: 'linkClick'
3648                        });
3649                        sd('send');
3650                      }
3651</script>
3651
3652
3653
3654<script>
3655    /**
3656     * Begin Quick Form Event Listener Logic
3657     */
3658    var $isVDP = jQuery("#fixed-info-container");
3659
3660    function populateHiddenFields(formInstance) {
3661        if (typeof DVHydrate !== 'undefined') {
3662            DVHydrate.populateFormFields("#" + formInstance);
3663        }
3664    }
3665
3666    function getQuickFormCookies() {
3667        var cookies = {};
3668        document.cookie.split(";").forEach(cookie => {
3669            var parts = cookie.trim().split("=");
3670            var name = parts[0];
3671            var value = parts[1];
3672            if (name.startsWith("quickFormUnlocked_")) {
3673                cookies[name] = value;
3674            }
3675        });
3676        return cookies;
3677    }
3678
3679    function checkAndHideForms() {
3680        var cookies = getQuickFormCookies();
3681
3682        if (Object.keys(cookies).length === 0) return;
3683
3684
3685        var $vdpContainer = jQuery("#fixed-info-container");
3686        var isVDP = $vdpContainer.length > 0;
3687
3688        // Get the condition from the container
3689        var condition = isVDP ?
3690            $vdpContainer.data("vehicle-condition").toLowerCase() :
3691            jQuery(".listing").first().data("vehicle-condition").toLowerCase();
3692
3693        // Check for condition-specific "all" cookie
3694        if (`quickFormUnlocked_all_${condition}` in cookies) {
3695            jQuery(".da-quick-form").remove();
3696            jQuery(".da-quick-form-unlocked").show();
3697            jQuery("#da-quick-form-unlocked").show();
3698            jQuery("#vdp-pricingheader-container").remove();
3699            return;
3700        }
3701
3702        if ($vdpContainer.length > 0) {
3703            // VDP logic
3704            var vin = $vdpContainer.data("vehicle-vin");
3705            if (vin && "quickFormUnlocked_" + vin in cookies) {
3706                jQuery(".da-quick-form").remove();
3707            }
3708        } else {
3709            // SRP logic
3710            jQuery(".da-quick-form").each(function() {
3711                var $form = jQuery(this);
3712                var $parentCard = $form.closest(".listing");
3713                var vin = $parentCard.data("vehicleVin");
3714
3715                if (vin && "quickFormUnlocked_" + vin in cookies) {
3716                    $form.remove();
3717                }
3718            });
3719        }
3720    }
3721
3722    if($isVDP.length > 0) {
3723        checkAndHideForms();
3724    }
3725
3726    const handleInventoryLoad = (event) => {
3727        jQuery(".da-quick-form").each(function() {
3728            var formId = jQuery(this).attr("id");
3729            populateHiddenFields(formId);
3730        });
3731    };
3732
3733    window.addEventListener("Inventory:loaded_srp", () => {
3734        handleInventoryLoad();
3735        checkAndHideForms();
3736
3737        jQuery("#srp-filters, #pagination-top, #pagination-bottom, #filterTags, #srp-filters-reset-btn, #dv-srp-clear-filters, #clearSearchResults, #showFiltersNonLegacy, .ais-Pagination-link, .ais-Pagination").click(function(){
3738            checkAndHideForms();
3739        });
3740    });
3741
3742    window.addEventListener("Inventory:loaded_vdp", handleInventoryLoad);
3743
3744    /**
3745     * e/o: Begin Quick Form Event Listener Logic
3746     */
3747</script>
3747
3748
3749<!-- Pinned to the exact version @2 resolves to today. The stale-search
3750     canceller below assumes this version's axios/XHR transport; a CDN-resolved
3751     minor that swapped in the fetch adapter would silently disable it. The
3752     pin is also what makes integrity possible - a floating @2 changes bytes
3753     by design, so it could never carry one. Hash is sha384 of the 145,726-byte
3754     2.9.0 dist, same treatment as the instantsearch tag below. -->
3755<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/typesense-instantsearch-adapter.min.js" integrity="sha384-B47IWeyyh8xnZkeL6rPg51tYX2fWwgI6CbkJN8BYp3VKHngE3hM/2Bqn8JTE8c92" crossorigin="anonymous"></script>
vendor: 1 bytes, line 3755
3755
3756<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/instantsearch.production.min.js" integrity="sha256-r9HX5YzBrppuVpgfMA3USvgS2jEdIBPJ3ntsidyTNl8=" crossorigin="anonymous"></script>
vendor: 1 bytes, line 3756
3756
3757<script src="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/js/jquery.formatCurrency-1.4.0.min.js?v=1.598.636"></script>
vendor: 1 bytes, line 3757
3757
3758<script defer src="https://www.youtube.com/iframe_api"></script>
vendor: 1 bytes, line 3758
3758
3759<script>
3760	var srpCondition = "New";
3761	var indexName = "vehicles-TOY37194";
3762	var cityState = "Moon Township, PA";
3763	var isNexusToyota = "1";
3764  var isNexusHonda = "";
3765  var isNexusAcura = "";
3766	var isNexusEnabled = "1";
3767	var dealerRegion = "CAT10";
3768	var distanceUnit = "Mile";
3769	var haveSdAnalytics = false;
3770	 haveSdAnalytics = true; 	var searchChangedTimer = null;
3771	var lastSdSearchStateSignature = null;
3772	var lastSdFacetStateSignature = null;
3773	var sdInitialFilterSearchSent = false;
3774	var sdFormShownPending = false;
3775
3776	/**
3777	 * "formInitiation already sent for the currently shown form".
3778	 *
3779	 * Module scope on purpose. This was a `var formInitHandled = false` declared
3780	 * inside the no-results branch, immediately before binding the click handler -
3781	 * so every run of that branch bound another handler, and each one closed over
3782	 * its own copy of the flag. After N no-result renders a single click ran N
3783	 * handlers, every one of them believing it was the first, and sent N
3784	 * formInitiation events. That was duplicated analytics, not just wasted work.
3785	 *
3786	 * Still reset where the original was, so the semantics are unchanged: one
3787	 * initiation per form shown.
3788	 */
3789	var sdFormInitHandled = false;
3790
3791	/**
3792	 * A query-only search owes Shift Digital a pageview and filterSearch on top
3793	 * of typedSearch, and typedSearch has to land first.
3794	 *
3795	 * The render for a keystroke arrives long before the 800ms typedSearch
3796	 * debounce, so the render only marks the send as pending and the debounce
3797	 * flushes it. The timer is the fallback for query changes with no typing
3798	 * behind them - the clear-search and reset buttons call setQuery('') - which
3799	 * would otherwise leave the flag pending forever.
3800	 */
3801	var lastSdQuery = null;
3802	var sdQueryAnalyticsPending = false;
3803	var sdQueryAnalyticsTimer = null;
3804	var currentRefinements = {};
3805	var vehiclesList = [];
3806	let userInteractedWithFacets = false;
3807	var srpDealerId = "TOY37194";
3808	var dealerGroupSite = "GRP";
3809
3810	const showConditionalIncentives = "1";
3811
3812	//Homepage/Menu Link Model Map for correct facetting
3813	const modelFormatMap = {
3814		'bz4x': 'bZ4X',
3815		'rav4': 'RAV4',
3816		'4runner': '4Runner',
3817		'i-force': 'Tundra i-FORCE MAX',
3818		'tundra i-force max': 'Tundra i-FORCE MAX',
3819		'hr-v': 'HR-V',
3820		'cr-v': 'CR-V',
3821		'hr-v hybrid': 'HR-V Hybrid',
3822		'cr-v hybrid': 'CR-V Hybrid',
3823		'gr86': 'GR86',
3824		'rav4 prime': 'RAV4 Prime',
3825		'rav4 hybrid': 'RAV4 Hybrid',
3826		'titan xd': 'Titan XD',
3827		'gt-r': 'GT-R',
3828		'leaf': 'LEAF',
3829		'es': 'ES',
3830		'is': 'IS',
3831		'is 500': 'IS 500',
3832		'ls': 'LS',
3833		'es hybrid': 'ES Hybrid',
3834		'lc hybrid': 'LC Hybrid',
3835		'ls hybrid': 'LS Hybrid',
3836		'nx hybrid': 'NX Hybrid',
3837		'nx phev': 'NX PHEV',
3838		'rx phev': 'RX PHEV',
3839		'rx hybrid': 'RX Hybrid',
3840		'ux hybrid': 'UX Hybrid',
3841		'gx': 'GX',
3842		'lx': 'LX',
3843		'nx': 'NX',
3844		'rx': 'RX',
3845		'ux': 'UX',
3846		'lc convertible': 'LC Convertible',
3847		'rc': 'RC',
3848		'rc f': 'RC F',
3849		'lc': 'LC',
3850		'rz': 'RZ',
3851		'tx': 'TX',
3852		'tx phev': 'TX PHEV',
3853		'tx 500h': 'TX 500h',
3854		'ux phev': 'UX PHEV',
3855		'i4': 'i4',
3856		'i5': 'i5',
3857		'i7': 'i7',
3858		'ix': 'iX',
3859		'adx': 'ADX',
3860		'mdx': 'MDX',
3861		'rdx': 'RDX',
3862		'tlx': 'TLX',
3863		'zdx': 'ZDX',
3864		'sierra ev': 'Sierra EV',
3865		'sierra hd': 'Sierra HD',
3866		'hummer ev pickup': 'Hummer EV Pickup',
3867		'hummer ev suv': 'Hummer EV SUV',
3868		'yukon xl': 'Yukon XL',
3869		'outlander phev': 'Outlander PHEV',
3870		'gla': 'GLA',
3871		'glb': 'GLB',
3872		'glc': 'GLC',
3873		'gle': 'GLE',
3874		'gls': 'GLS',
3875		'glc coupe': 'GLC Coupe',
3876		'gle coupe': 'GLE Coupe',
3877		'gls coupe': 'GLS Coupe',
3878		'g-class': 'G-Class',
3879		'c-class': 'C-Class',
3880		'c-class sedan': 'C-Class Sedan',
3881		'e-class': 'E-Class',
3882		'e-class sedan': 'E-Class Sedan',
3883		's-class': 'S-Class',
3884		's-class sedan': 'S-Class Sedan',
3885		'eqb': 'EQB',
3886		'eqc': 'EQC',
3887		'eqe': 'EQE',
3888		'eqs': 'EQS',
3889		'eqs suv': 'EQS SUV',
3890		'cla': 'CLA',
3891		'c-class cabriolet': 'C-Class Cabriolet',
3892		'amg®': 'AMG®',
3893		'amg® gt': 'AMG® GT',
3894	};
3895
3896	function formatModelName(model) {
3897		const lowerCaseModel = model.toLowerCase();
3898		if (modelFormatMap[lowerCaseModel]) {
3899			return modelFormatMap[lowerCaseModel];
3900		} else {
3901			const words = model.split(' ');
3902			return words.map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(' ');
3903		}
3904	}
3905
3906	/**
3907	 *  Build the page title from the current selected refinements
3908	 */
3909	function buildTitle(refinementList)
3910	{
3911		let titleString = "";
3912		let modelString = "";
3913		let bodyString = "";
3914		let condition = srpCondition;
3915		let vehicleHistoryString = "";
3916
3917		currentRefinements = refinementList;
3918
3919		if(refinementList.body && condition == 'New'){
3920			if(refinementList.body.length == 1){
3921				titleString =  "Toyota" + " " + refinementList.body[0] + " Models";
3922			} else{
3923				for( var bod in refinementList.body)
3924				{
3925					bodyString += " " + refinementList.body[bod] + ",";
3926					titleString =  "Toyota" + " " + bodyString + " Models";
3927				}
3928			}
3929			return titleString;
3930			}
3931
3932		if(refinementList.body && condition == 'Used'){
3933			if(refinementList.body.length == 1){
3934				titleString = refinementList.body[0] + " Models";
3935			} else{
3936				for( var bod in refinementList.body)
3937				{
3938					bodyString += " " + refinementList.body[bod] + ",";
3939					titleString = bodyString + " Models";
3940				}
3941			}
3942			return titleString;
3943		}
3944
3945		if (refinementList.make && refinementList.make.length == 1)
3946		{
3947
3948			if(refinementList.body && condition == 'Used'){
3949					if(refinementList.body.length == 1){
3950						titleString =  refinementList.make + " " + refinementList.body[0] + " Models";
3951					} else{
3952						for( var bod in refinementList.body)
3953						{
3954						bodyString += " " + refinementList.body[bod] + ",";
3955						}
3956						for( var make in refinementList.make)
3957						{
3958							makeString += " " + refinementList.make[make] + ",";
3959
3960						}
3961						titleString =  makeString + " " + bodyString + " Models";
3962
3963				}
3964				return titleString;
3965				}
3966
3967			if (refinementList.model && refinementList.model.length == 1)
3968			{
3969				titleString = refinementList.make[0] + " " + refinementList.model[0] + " Vehicles";
3970
3971				return titleString;
3972			}
3973			else if (refinementList.model)
3974			{
3975				for (var model in refinementList.model)
3976				{
3977					titleString += " " + refinementList.model[model] + ",";
3978				}
3979
3980				return titleString;
3981			}
3982			else
3983			{
3984				titleString = refinementList.make[0] + " Models";
3985				return titleString;
3986			}
3987		}
3988		else if (refinementList.make)
3989		{
3990			if (refinementList.model)
3991			{
3992				if (refinementList.model.length == 1)
3993				{
3994					titleString += " " + refinementList.model[0];
3995				}
3996				else
3997				{
3998					for (var model in refinementList.model)
3999					{
4000						titleString += " " + refinementList.model[model] + ",";
4001					}
4002				}
4003
4004				titleString += " Models";
4005
4006				return titleString;
4007			}
4008			for (var make in refinementList.make)
4009			{
4010				titleString += " " + refinementList.make[make] + ",";
4011			}
4012
4013			titleString += " Models";
4014
4015			return titleString;
4016		}
4017		else{
4018			if(refinementList.model){
4019
4020				if (refinementList.model.length == 1)
4021				{
4022					modelString += " " + refinementList.model[0];
4023				}
4024				else
4025				{
4026					for (var model in refinementList.model)
4027					{
4028						modelString += " " + refinementList.model[model] + ",";
4029					}
4030				}
4031				if(condition == 'Used'){
4032					titleString += " " + modelString + " Models";
4033				} else{
4034					titleString += "Toyota" + " " + modelString + " Models";
4035				}
4036				return titleString;
4037			}
4038		}
4039
4040		//Build Title for Vehicle History
4041		if(refinementList.vehicleHistory && condition == "Used")
4042		{
4043			if(refinementList.vehicleHistory.length == 1)
4044			{
4045				titleString = refinementList.vehicleHistory[0] + " Models";
4046			}
4047			else
4048			{
4049				for (var bod in refinementList.vehicleHistory)
4050				{
4051					vehicleHistoryString += " " + refinementList.vehicleHistory[bod] + ",";
4052				}
4053				titleString = vehicleHistoryString + " Models";
4054			}
4055			return titleString;
4056		}
4057
4058		//Build title for flags.type
4059		if (refinementList["flags.type"] && refinementList["flags.type"].length > 0) {
4060			let flagsTypeString = "";
4061
4062			if (refinementList["flags.type"].length === 1) {
4063				titleString = refinementList["flags.type"][0] + " Models";
4064			} else {
4065				for (let i = 0; i < refinementList["flags.type"].length; i++) {
4066					flagsTypeString += refinementList["flags.type"][i] + ", ";
4067				}
4068				flagsTypeString = flagsTypeString.slice(0, -2);
4069				titleString = flagsTypeString + " Models";
4070			}
4071
4072			return titleString;
4073		}
4074
4075
4076		return "Toyota Vehicles";
4077	}
4078
4079	//Build meta description for SRP filters
4080	function buildDescription(refinementList){
4081
4082		modelString = "";
4083		makeString = "";
4084		featureString = "";
4085		fuelString = "";
4086		colorString = "";
4087		bodyString = "";
4088		trimString = "";
4089
4090		currentRefinements = refinementList
4091
4092		if(refinementList.body && refinementList.features){
4093			if(refinementList.body.length == 1 && refinementList.features.length == 1){
4094				bodyString += "" + refinementList.body[0] + "s";
4095				featureString +="" + refinementList.features[0] + " ";
4096			} else{
4097				for( var bod in refinementList.body)
4098				{
4099					bodyString += " " + refinementList.body[bod] + "s,";
4100				}
4101
4102				for( var feat in refinementList.features)
4103				{
4104				  featureString += " " + refinementList.features[feat] + ", ";
4105				}
4106					}
4107
4108			let newDesc = `Shop ${srpCondition} ${bodyString} with ${featureString}in Stock and Online today at Brewer Airport Toyota, ${srpCondition} Toyota dealership in ${cityState}`
4109			return document.querySelector('meta[name="description"]').setAttribute("content", newDesc);
4110
4111		}
4112
4113		if(refinementList.model){
4114
4115			if(srpCondition == "New"){
4116
4117			if( refinementList.model.length >= 1 ){
4118
4119				if (refinementList.model.length == 1)
4120				{
4121					modelString += " " + refinementList.model[0];
4122				}
4123				else
4124				{
4125					for (var model in refinementList.model)
4126					{
4127						modelString += " " + refinementList.model[model] + ",";
4128					}
4129
4130				}
4131
4132				if(refinementList.features){
4133					if(refinementList.features.length == 1){
4134						featureString += "" + refinementList.features[0];
4135					} else{
4136						for( var feat in refinementList.features)
4137						{
4138							featureString += " " + refinementList.features[feat] + ",";
4139						}
4140					}
4141
4142					let newDesc = `Shop ${srpCondition} Toyota ${modelString} vehicles with ${featureString} in Stock and Online today at Brewer Airport Toyota, ${srpCondition} Toyota dealership in ${cityState}`
4143					return document.querySelector('meta[name="description"]').setAttribute("content", newDesc);
4144				}
4145
4146				if(refinementList.fuel){
4147					fuelString += " " + refinementList.fuel[0];
4148					let newDesc = `Shop ${srpCondition}  Toyota ${modelString} ${fuelString} vehicles in Stock and Online today at Brewer Airport Toyota, ${srpCondition} Toyota dealership in ${cityState}`
4149					return document.querySelector('meta[name="description"]').setAttribute("content", newDesc);
4150				}
4151
4152				if(refinementList.generic_color){
4153				if(refinementList.generic_color.length == 1){
4154						colorString += " " + refinementList.generic_color[0] + " ";
4155					}else{
4156						for( var color in refinementList.generic_color)
4157						{
4158							colorString += " " + refinementList.generic_color[color] + ",";
4159						}
4160					}
4161
4162				let newDesc = `Shop ${srpCondition} ${colorString}  Toyota ${modelString} vehicles in Stock and Online today at Brewer Airport Toyota, ${srpCondition} Toyota dealership in ${cityState}`
4163
4164				return  document.querySelector('meta[name="description"]').setAttribute("content", newDesc)
4165				}
4166
4167				if(refinementList.trim){
4168				if(refinementList.trim.length == 1){
4169					trimString += "" + refinementList.trim[0];
4170				} else{
4171					for( var feat in refinementList.trim)
4172				{
4173					trimString += " " + refinementList.trim[feat] + ",";
4174				}
4175					}
4176
4177				let newDesc = `Shop ${srpCondition}
4177 ${modelString} in ${trimString} trim levels in Stock and Online today at Brewer Airport Toyota, ${srpCondition} Toyota dealership in ${cityState}`
4178				return document.querySelector('meta[name="description"]').setAttribute("content", newDesc);
4179				}
4180
4181				let newDesc = `Shop ${srpCondition} Toyota ${modelString} vehicles in Stock and Online today at Brewer Airport Toyota, ${srpCondition} Toyota dealership in ${cityState}`;
4182
4183				return  document.querySelector('meta[name="description"]').setAttribute("content", newDesc)
4184
4185				}
4186			}
4187		}
4188		if (refinementList.make){
4189
4190
4191			if(refinementList.make.length == 1){
4192				makeString += " " + refinementList.make[0];
4193
4194			}
4195			else
4196			{
4197
4198				for (var make in refinementList.make)
4199					{
4200						makeString += " " + refinementList.make[make] + ",";
4201					}
4202				}
4203
4204				if(refinementList.features){
4205					if(refinementList.features.length == 1){
4206						featureString += " " + refinementList.features[0];
4207					} else{
4208						for( var feat in refinementList.features)
4209						{
4210							featureString += " " + refinementList.features[feat] + ",";
4211						}
4212					}
4213
4214					let newDesc = `Shop ${srpCondition} ${makeString} vehicles with${featureString} in Stock and Online today at Brewer Airport Toyota, ${srpCondition} Toyota dealership in ${cityState}`
4215					return document.querySelector('meta[name="description"]').setAttribute("content", newDesc);
4216				}
4217
4218				if(refinementList.fuel){
4219					fuelString += " " + refinementList.fuel[0];
4220					let newDesc = `Shop ${srpCondition} ${makeString} ${fuelString} vehicles in Stock and Online today at Brewer Airport Toyota, ${srpCondition} Toyota dealership in ${cityState}`
4221					return document.querySelector('meta[name="description"]').setAttribute("content", newDesc);
4222				}
4223
4224				if(refinementList.generic_color){
4225				if(refinementList.generic_color.length == 1){
4226						colorString += " " + refinementList.generic_color[0] + " ";
4227					}else{
4228						for( var color in refinementList.generic_color)
4229						{
4230							colorString += " " + refinementList.generic_color[color] + ",";
4231						}
4232					}
4233
4234				let newDesc = `Shop ${srpCondition} ${colorString} ${makeString} vehicles in Stock and Online today at Brewer Airport Toyota, ${srpCondition} Toyota dealership in ${cityState}`
4235
4236				return  document.querySelector('meta[name="description"]').setAttribute("content", newDesc)
4237				}
4238
4239
4240				if(refinementList.body){
4241				if(refinementList.body.length == 1){
4242					bodyString += "" + refinementList.body[0] + "s";
4243				} else{
4244					for( var feat in refinementList.body)
4245				{
4246					bodyString += " " + refinementList.body[feat] + "s,";
4247				}
4248					}
4249
4250				let newDesc = `Shop ${srpCondition} ${makeString} ${bodyString} in Stock and Online today at Brewer Airport Toyota, ${srpCondition} Toyota dealership in ${cityState}`
4251				return document.querySelector('meta[name="description"]').setAttribute("content", newDesc);
4252				}
4253
4254
4255			let newDesc = `Shop ${srpCondition} ${makeString} vehicles in Stock and Online today at Brewer Airport Toyota, ${srpCondition} Toyota dealership in ${cityState}`
4256
4257			return document.querySelector('meta[name="description"]').setAttribute("content", newDesc)
4258
4259
4260		}
4261
4262		if(refinementList.genericColor){
4263				if(refinementList.genericColor.length == 1){
4264						colorString += " " + refinementList.genericColor[0] + " ";
4265					}else{
4266						for( var color in refinementList.genericColor)
4267						{
4268							colorString += " " + refinementList.genericColor[color] + ",";
4269						}
4270					}
4271
4272				let newDesc = `Shop ${srpCondition} ${colorString} Toyota vehicles in Stock and Online today at Brewer Airport Toyota, ${srpCondition} Toyota dealership in ${cityState}`;
4273
4274				return  document.querySelector('meta[name="description"]').setAttribute("content", newDesc)
4275			}
4276
4277		if(refinementList.fuel){
4278			fuelString += " " + refinementList.fuel[0];
4279			let newDesc = `Shop ${srpCondition} Toyota ${fuelString} vehicles in Stock and Online today at Brewer Airport Toyota, ${srpCondition} Toyota dealership in ${cityState}`
4280			return document.querySelector('meta[name="description"]').setAttribute("content", newDesc);
4281		}
4282
4283		if(refinementList.features){
4284			if(refinementList.features.length == 1){
4285				featureString += "" + refinementList.features[0];
4286			} else{
4287				for( var feat in refinementList.features)
4288				{
4289					featureString += " " + refinementList.features[feat] + ",";
4290				}
4291					}
4292
4293			let newDesc = `Shop ${srpCondition}
4293 Toyota ${modelString} vehicles with ${featureString} in Stock and Online today at Brewer Airport Toyota, ${srpCondition} Toyota dealership in ${cityState}`
4294			return document.querySelector('meta[name="description"]').setAttribute("content", newDesc);
4295		}
4296
4297		if(refinementList.body){
4298			if(refinementList.body.length == 1){
4299				bodyString += "" + refinementList.body[0] + "s";
4300			} else{
4301				for( var feat in refinementList.body)
4302				{
4303					bodyString += " " + refinementList.body[feat] + "s,";
4304				}
4305					}
4306
4307			let newDesc = `Shop ${srpCondition} ${bodyString} in Stock and Online today at Brewer Airport Toyota, ${srpCondition} Toyota dealership in ${cityState}`
4308			return document.querySelector('meta[name="description"]').setAttribute("content", newDesc);
4309		}
4310
4311		return
4312
4313	}
4314
4315    /**
4316     * Trigger Inventory Loaded Event
4317     */
4318    function _triggerInventoryLoaded() {
4319        const event = new Event('Inventory:loaded_srp');
4320        window.dispatchEvent(event);
4321    }
4322
4323	/**
4324	 * Search for Smart Path Disclaimer Function
4325	 * @author layth abdelqader
4326	 * @param {string} text - text to filter by
4327	 * @param {string} cname - class name of element
4328	 */
4329	function SmartPathDisclaimer(text, cname) {
4330		// set up replacement fn
4331		var doReplacement = function(interval) {
4332			// clear interval
4333			clearInterval(interval);
4334			// lets start the loop and find all classnames/text that match
4335			const container = [...document.querySelectorAll(cname)];
4336			for (let i = 0; i < container.length; i++) {
4337				var classListing = [...container[i].classList];
4338				if (container[i].textContent.includes(text) && container[i].textContent.includes("transit"))
4339				{
4340					if(!container[i].textContent.includes(text + ':')){
4341						container[i].innerHTML = container[i].innerHTML.replace(text, "<strong>
4341" + text + ':' + "</strong>");
4342					}
4343				} else if (container[i].textContent.includes(text) && container[i].textContent.includes("build phase")) {
4344					if(!container[i].textContent.includes(text + ':')){
4345						container[i].innerHTML = container[i].innerHTML.replace(text, "<strong>" + text + ':' + "</strong>");
4346					}
4347				} else if (container[i].textContent.includes(text)) {
4348					container[i].innerHTML = container[i].innerHTML.replace(text, "<strong>" + text + "</strong>");
4349				} else {
4350					container[i].classList.remove(
4351						"dv-sp-disclaimer-strong"
4352					);
4353				}
4354			}
4355		};
4356		// set up interval and wait for dgdatahub to load
4357		var interval = setInterval(function () {
4358			if (window.DGDataHub != undefined) {
4359									if (typeof window.DGDataHub.getWarningState !== "undefined" && window.DGDataHub.getWarningState().dgLoaded) {
4360						doReplacement(interval)
4361					}
4362							}
4363		}, 200);
4364	}
4365
4366	/**
4367	 * Search highlighting is computed, transferred and parsed, then thrown away.
4368	 *
4369	 * The adapter defaults highlight_full_fields to the whole query_by list, so
4370	 * every response carries per-hit highlight blocks for all sixteen fields.
4371	 * Nothing reads them: no template in this file touches _highlightResult,
4372	 * and never has. Both highlight knobs are set to "none" below: the adapter
4373	 * injects highlight_full_fields on its own, which of the two wins is
4374	 * decided server-side, and naming both removes the doubt for free.
4375	 *
4376	 * Sized honestly before assuming it mattered: on the live i95 collection
4377	 * the highlight blocks are about 1% of a 428KB keystroke response, because
4378	 * the weight is the documents themselves - imageUrls is 48% of a 25KB hit
4379	 * and conditionalIncentives another 32%, and both are genuinely rendered,
4380	 * so neither can be excluded. This trim is kept because it is free and
4381	 * strictly correct - the server skips work nobody consumes - not because
4382	 * it moves the needle. Anyone tempted to chase response size further:
4383	 * measure the per-field split first, and note that the transfer was never
4384	 * what blocked the main thread - the re-render is.
4385	 *
4386	 * Gated on Theme Options -> Performance -> "Skip unused search highlighting"
4387	 * because a dealer's custom runtime JS (srp-js-function-render-runtime)
4388	 * could in principle read _highlightResult even though the theme does not.
4389	 * ?da-search-payload=full restores the old payload for one request, which
4390	 * is the way to test that theory on a live dealer before flipping the switch.
4391	 */
4392	var daTrimSearchPayload = true		&& new URLSearchParams(window.location.search).get('da-search-payload') !== 'full';
4393
4394	/**
4395	 * Cancel a search the moment a newer one supersedes it.
4396	 *
4397	 * Michael's idea, confirmed by measurement on Slow 4G: typing "tundra" at
4398	 * a normal cadence put EIGHT multi_search requests in flight at once. The
4399	 * first two responses ate the whole link (444KB), "tun" through "tundra"
4400	 * all hit the client's 5s timeout, were retried, and timed out again - so
4401	 * the page settled with the box saying "tundra" and the results showing
4402	 * "tu". On a slow connection the stale downloads do not just waste
4403	 * transfer, they starve the one query the user actually wants and leave
4404	 * wrong results on screen.
4405	 *
4406	 * The adapter's client sends via axios/XHR, which complicates the obvious
4407	 * fix: a bare xhr.abort() fires the error path, axios rejects, and
4408	 * typesense-js treats that as a node failure and RETRIES - recreating the
4409	 * storm this exists to prevent. So a superseded request is silenced
4410	 * before it is aborted: every handler axios attached is stripped, then
4411	 * the native abort runs. Axios never learns; its promise simply never
4412	 * settles; the retry logic never fires. InstantSearch orders responses by
4413	 * query id, so the never-answered request was never going to render
4414	 * anyway.
4415	 *
4416	 * Fast connections are unaffected in practice: responses return in
4417	 * ~250ms and are done before the next keystroke, so there is rarely
4418	 * anything in flight to cancel.
4419	 */
4420	var daCancelStaleSearch = true		&& new URLSearchParams(window.location.search).get('da-cancel-stale-search') !== 'off';
4421
4422	/**
4423	 * Arm content-visibility on the result cards (rule in algolia.css, gated
4424	 * on this class so the flag lives here with the other Performance flags).
4425	 * Off-screen cards then skip style recalculation and layout entirely on
4426	 * each render - the two largest named costs in the keystroke trace after
4427	 * the render itself. See the comment block in algolia.styl for numbers.
4428	 */
4429	if (true		&& new URLSearchParams(window.location.search).get('da-content-visibility') !== 'off') {
4430		document.documentElement.classList.add('da-cv');
4431	}
4432
4433	// The header that marks a request as this SRP's own. Sent by the adapter's
4434	// client (below) and recognised by the canceller; nothing else uses it.
4435	var DA_SRP_SEARCH_HEADER = 'X-DA-SRP-Search';
4436
4437	if (daCancelStaleSearch) {
4438		(function () {
4439			var inFlight = null;
4440
4441			/**
4442			 * Ownership is carried by the request itself, not inferred.
4443			 *
4444			 * Keying on '/multi_search' alone claimed EVERY Typesense client on
4445			 * the page - the inventory-widget shortcode builds its own adapter,
4446			 * and one slot shared between it and the SRP meant each aborted the
4447			 * other's requests. A silenced request never settles its promise,
4448			 * so the loser hung forever: the widget spinning, or the SRP stuck
4449			 * in stalled with stale results.
4450			 *
4451			 * A timing-based claim (a ticket raised beside each search call)
4452			 * only narrowed that: our XHR opens several microtasks after the
4453			 * call, so a request already mid-chain in another adapter could
4454			 * drain the ticket first and invert ownership, and typesense-js
4455			 * schedules its retries on a timer, which left every retry
4456			 * unclaimable. Both go away if the request announces itself: the
4457			 * SRP's client sends DA_SRP_SEARCH_HEADER (see the adapter's server
4458			 * config), no other client on the page does, and a retry re-sends
4459			 * the same headers.
4460			 *
4461			 * The header costs no round trips. These requests already carry
4462			 * x-typesense-api-key and a JSON content type, so they are already
4463			 * preflighted; the endpoint was measured to reflect an arbitrary
4464			 * requested header back in access-control-allow-headers, with
4465			 * access-control-max-age 3600.
4466			 */
4467			var nativeSend   = XMLHttpRequest.prototype.send;
4468			var nativeAbort  = XMLHttpRequest.prototype.abort;
4469			var nativeAdd    = XMLHttpRequest.prototype.addEventListener;
4470			var nativeRem    = XMLHttpRequest.prototype.removeEventListener;
4471			var nativeHeader = XMLHttpRequest.prototype.setRequestHeader;
4472
4473			XMLHttpRequest.prototype.setRequestHeader = function (name, value) {
4474				if (String(name).toLowerCase() === DA_SRP_SEARCH_HEADER.toLowerCase()) {
4475					this.__daSearch = true;
4476					this.__daHandlers = [];
4477				}
4478				return nativeHeader.apply(this, arguments);
4479			};
4480
4481			// Record what axios attaches to a search request, so it can all be
4482			// detached at supersede time. Non-search requests skip the
4483			// bookkeeping entirely.
4484			XMLHttpRequest.prototype.addEventListener = function (type, fn, opts) {
4485				if (this.__daSearch && this.__daHandlers) {
4486					this.__daHandlers.push([type, fn, opts]);
4487				}
4488				return nativeAdd.apply(this, arguments);
4489			};
4490
4491			function silence(xhr) {
4492				(xhr.__daHandlers || []).forEach(function (h) {
4493					try { nativeRem.call(xhr, h[0], h[1], h[2]); } catch (e) {}
4494				});
4495				xhr.__daHandlers = null;
4496				// Older axios wires the on* properties instead of listeners.
4497				xhr.onreadystatechange = xhr.onload = xhr.onerror = null;
4498				xhr.onabort = xhr.ontimeout = xhr.onloadend = xhr.onprogress = null;
4499				try { nativeAbort.call(xhr); } catch (e) {}
4500			}
4501
4502			XMLHttpRequest.prototype.send = function () {
4503				if (this.__daSearch) {
4504					if (inFlight && inFlight !== this) {
4505						silence(inFlight);
4506					}
4507					inFlight = this;
4508
4509					var self = this;
4510					// Attached via the native path so silence() cannot strip it.
4511					nativeAdd.call(this, 'loadend', function () {
4512						if (inFlight === self) { inFlight = null; }
4513					});
4514				}
4515				return nativeSend.apply(this, arguments);
4516			};
4517		})();
4518	}
4519
4520	const typesenseAdapter = new TypesenseInstantSearchAdapter({
4521		server: {
4522			apiKey: "eQUa8iq30l8Tu908Drz9WKqar6tCJGd4",
4523			nodes: [{
4524				host: 'hjnrb3s21408ezpfp.a1.typesense.net',
4525				port: 443,
4526				protocol: 'https'
4527			}],
4528			// Marks this client's requests for the stale-search canceller
4529			// above, retries included. Sent only when cancellation is on, so a
4530			// dealer with the switch off sends exactly the old request.
4531			additionalHeaders: daCancelStaleSearch
4532				? (function () { var h = {}; h[DA_SRP_SEARCH_HEADER] = '1'; return h; })()
4533				: {},
4534			cacheSearchResultsForSeconds: 2 * 60,
4535		},
4536		additionalSearchParameters: Object.assign({
4537			query_by: "vin,stockNumber,lastEight,year,make,model,trim,exteriorColor,body,features,engine,transmission,drivetrain,fuel,genericColor,dealertag"
4538		}, daTrimSearchPayload ? { highlight_fields: "none", highlight_full_fields: "none" } : {})
4539	});
4540
4541const searchClient = typesenseAdapter.searchClient;
4542
4543
4544	/**
4545	 * Hold result RENDERING until typing pauses. The search itself is not
4546	 * delayed - this is the other half of the story the render split started.
4547	 *
4548	 * The field reports that prompted it (2026-08-21, three iPhone users,
4549	 * independently): results arrive fast, but LETTERS appear late. The trace
4550	 * agrees: each keystroke's re-render occupies the main thread for roughly
4551	 * two seconds on a phone (InstantSearch rebuild + style recalculation
4552	 * across ~16,000 elements on live i95), so the NEXT keypress cannot paint
4553	 * until the previous render finishes. One user narrated the mechanism
4554	 * without knowing it: "once filter(0) is reached, the lag is gone so live
4555	 * filtering seems to be lagging input."
4556	 *
4557	 * So: while keys arrive faster than the settle delay, the queryHook holds
4558	 * the QUERY too (see the BURST ADDENDUM there: calling search() moves the
4559	 * helper's state and re-renders every widget, main-thread work that the
4560	 * gated render handler cannot avoid), and this wrapper holds any RESPONSE
4561	 * still in flight when typing resumes. While the user types, nothing
4562	 * renders and every keystroke echoes instantly; the moment they pause,
4563	 * exactly one search fires and its response renders on arrival. On a slow
4564	 * connection that is one round trip after the pause - the accepted price
4565	 * of the burst hold, kept honest by cancel-stale above so nothing stale
4566	 * competes with it.
4567	 *
4568	 * Two guards keep it to exactly ONE render per pause:
4569	 *   - cancel-stale above kills superseded requests at the network layer;
4570	 *   - the sequence check here refuses to deliver any response that is no
4571	 *     longer the newest, covering dealers with cancel-stale switched off.
4572	 * A refused response returns a promise that never settles, which is also
4573	 *     how cancel-stale silences axios - InstantSearch's own query
4574	 *     ordering means it was never going to render anyway.
4575	 *
4576	 * Quiet threshold shares DA_SETTLE_MS (Theme Options -> Performance ->
4577	 * settle delay) so there is one tuning knob for "typing has paused".
4578	 */
4579	var daRenderOnSettle = true		&& new URLSearchParams(window.location.search).get('da-render-on-settle') !== 'off';
4580
4581	/**
4582	 * -Infinity, not 0: performance.now() starts near zero at page load, so a
4583	 * zero here read as "typed just now" for the first DA_SETTLE_MS of page
4584	 * life and held the bootstrap render behind whenQuiet() on warm loads.
4585	 */
4586	var daLastTypeAt = -Infinity;
4587
4588	/**
4589	 * True while the shopper is mid-burst in the search box. Shared by the
4590	 * response hold below and onRenderHandler: while this is true, responses
4591	 * are parked, so a render event can only be a loading-state churn against
4592	 * results that cannot have changed - and both halves of the handler skip.
4593	 */
4594	function daTypingActive() {
4595		var quiet = (typeof DA_SETTLE_MS === 'number') ? DA_SETTLE_MS : 250;
4596		return (performance.now() - daLastTypeAt) < quiet;
4597	}
4598
4599	if (daRenderOnSettle) {
4600		document.addEventListener('input', function (e) {
4601			if (e.target && e.target.classList && e.target.classList.contains('ais-SearchBox-input')) {
4602				daLastTypeAt = performance.now();
4603			}
4604		}, true);
4605
4606		(function () {
4607			var seq = 0;
4608
4609			function quietMs() {
4610				return (typeof DA_SETTLE_MS === 'number') ? DA_SETTLE_MS : 250;
4611			}
4612
4613			function whenQuiet(isStale) {
4614				return new Promise(function (resolve) {
4615					(function check() {
4616						// A superseded caller stops polling right away: its
4617						// .then below discards the result, and resolving now
4618						// releases the response object this promise chain was
4619						// pinning (~428KB per keystroke on live i95) instead
4620						// of reforging the closure until typing stops.
4621						if (isStale()) {
4622							resolve();
4623							return;
4624						}
4625						var since = performance.now() - daLastTypeAt;
4626						if (since >= quietMs()) {
4627							resolve();
4628						} else {
4629							setTimeout(check, Math.max(16, quietMs() - since));
4630						}
4631					})();
4632				});
4633			}
4634
4635			var origSearch = searchClient.search.bind(searchClient);
4636
4637			searchClient.search = function (requests) {
4638				var mySeq = ++seq;
4639
4640				return origSearch(requests).then(function (res) {
4641					if (mySeq !== seq) {
4642						return new Promise(function () {});
4643					}
4644					return whenQuiet(function () { return mySeq !== seq; }).then(function () {
4645						if (mySeq !== seq) {
4646							return new Promise(function () {});
4647						}
4648						return res;
4649					});
4650				});
4651			};
4652		})();
4653	}
4654function getSrpWindowTitle(refinementList) {
4655	if (!refinementList) {
4656		return srpCondition + " Toyota Vehicles in " + cityState;
4657	}
4658
4659	return srpCondition + " " + buildTitle(refinementList) + " in " + cityState;
4660}
4661
4662function syncSrpSeoState(refinementList) {
4663	$("h1").text(getSrpWindowTitle(refinementList));
4664
4665	if (refinementList) {
4666		buildDescription(refinementList);
4667	}
4668}
4669
4670const daSrpRouter = instantsearch.routers.history({
4671		/**
4672		 * One history entry per settled search, not one per keystroke.
4673		 *
4674		 * The router calls history.pushState on every UI-state write, and the
4675		 * default 400ms writeDelay is shorter than the gap between keystrokes
4676		 * for most people - so typing a six-letter model name pushed six
4677		 * entries. That is six Back presses to leave the page, and it walks
4678		 * straight at WebKit's history-call rate limit (~100 per 30s, past
4679		 * which Safari throws a SecurityError). 1000ms collapses a typed word
4680		 * into one or two entries; refinement clicks are spaced well past a
4681		 * second apart, so facet navigation keeps an entry per click exactly
4682		 * as before.
4683		 *
4684		 * The debounce has a hole the pagehide flush below plugs: the router
4685		 * never flushes a pending write when the page is left, so a shopper
4686		 * who filtered and tapped a vehicle inside one writeDelay would come
4687		 * Back to an SRP that had forgotten the filter. True at the default
4688		 * 400ms too; a full second just made it easy to hit.
4689		 */
4690		writeDelay: 1000,
4691		windowTitle: function windowTitle(routeState) {
4692			syncSrpSeoState(routeState.refinementList);
4693
4694			return getSrpWindowTitle(routeState.refinementList);
4695		},
4696		createURL: function createURL({ qsModule, location, routeState }) {
4697			const origin = location.origin;
4698			const pathname = location.pathname;
4699			const hash = location.hash;
4700
4701			const urlParams = new URLSearchParams(window.location.search);
4702			const priceBelow = urlParams.get('priceBelow');
4703
4704			/**
4705			 * Params carried onto every URL the router builds.
4706			 *
4707			 * The query string is rebuilt from route state, so anything the
4708			 * router does not model is dropped on every write. utm_* was
4709			 * already carried for that reason; the ad click IDs join it,
4710			 * because Back from a VDP onto an SRP stripped of its gclid breaks
4711			 * attribution for the traffic that costs the most to buy.
4712			 *
4713			 * Carrying them HERE rather than in the pagehide flush is what
4714			 * makes the flush safe. Its first version appended click IDs to
4715			 * the finished URL string and split on '#' and '?' to place them,
4716			 * which mis-sliced any URL whose refinement values contain those
4717			 * characters - and they can, because refinements are serialised
4718			 * with encode:false (the exteriorHex strip below exists for the
4719			 * same reason). A dealertag of "Certified #1 Dealer" truncated the
4720			 * query at the '#' and pushed every later refinement into the
4721			 * fragment. Building the URL in one place, from parts, has no
4722			 * string surgery to get wrong.
4723			 *
4724			 * Values are encoded, unlike the raw interpolation below: these
4725			 * arrive from ad platforms rather than from our own state, and an
4726			 * unencoded one would reintroduce exactly the bug above.
4727			 */
4728			const carriedParams = [
4729				'utm_campaign', 'utm_medium', 'utm_source', 'utm_term', 'utm_id', 'utm_content',
4730				'gclid', 'gbraid', 'wbraid', 'dclid', 'fbclid', 'msclkid', 'ttclid', 'gad_source', 'srsltid'
4731			];
4732			const utmQuery = carriedParams
4733				.map(param => {
4734					const value = urlParams.get(param);
4735					return value ? `${param}=${encodeURIComponent(value)}` : null;
4736				})
4737				.filter(Boolean)
4738				.join('&');
4739
4740			const queryParts = [];
4741
4742			if (routeState.refinementList) {
4743				var refinements = Object.assign({}, routeState.refinementList);
4744				// Remove # from exteriorHex values for correct URL formatting
4745				if (refinements.exteriorHex) {
4746					refinements.exteriorHex = refinements.exteriorHex.map(function(v) { return v.replace('#', ''); });
4747				}
4748				queryParts.push(qsModule.stringify(refinements, { arrayFormat: 'repeat', delimiter: '&', encode: false }));
4749			}
4750
4751			if (routeState.hierarchicalMenu) {
4752				queryParts.push(qsModule.stringify({ modelCategory: routeState.hierarchicalMenu["modelCategory.lvl0"] }, { arrayFormat: 'repeat', delimiter: '&', encode: false }));
4753			}
4754
4755			if (routeState.query) {
4756				queryParts.push(`q=${routeState.query}`);
4757			}
4758
4759			if (routeState.page) {
4760				queryParts.push(`pg=${routeState.page}`);
4761			}
4762
4763			if (routeState.range?.rangeSliderPrice) {
4764				queryParts.push(`priceRange=${routeState.range.rangeSliderPrice}`);
4765			}
4766			if (routeState.range?.mileage) {
4767				queryParts.push(`mileageRange=${routeState.range.mileage}`);
4768			}
4769			if (routeState.range?.yr) {
4770				queryParts.push(`yearRange=${routeState.range.yr}`);
4771			}
4772
4773			if (priceBelow) {
4774				queryParts.push(`priceBelow=${priceBelow}`);
4775			}
4776
4777			let queryString = queryParts.filter(Boolean).join('&');
4778
4779			if (queryString.includes('transmission_type')) {
4780				queryString = queryString.replace('_type', '');
4781			}
4782
4783			if (utmQuery) {
4784				queryString = queryString ? `${queryString}&${utmQuery}` : utmQuery;
4785			}
4786
4787			const fullURL = `${origin}${pathname}${queryString ? `?${queryString}` : ''}${hash}`;
4788
4789			return fullURL;
4790		},
4791		parseURL: function parseURL(_ref2) {
4792			var qsModule = _ref2.qsModule, location = _ref2.location;
4793			var urlSearch = new URLSearchParams(window.location.search);
4794			//Convert the current URL to JSON
4795			let refinements = qsModule.parse(location.search.slice(1), {arrayFormat: 'repeat', delimiter: '&'});
4796
4797			// Add hashtag back to exteriorHex for correct filtering
4798			if (refinements.exteriorHex) {
4799				refinements.exteriorHex = [].concat(refinements.exteriorHex).map(function(v) {
4800					return v.charAt(0) === '#' ? v : '#' + v;
4801				});
4802			}
4803
4804			var priceBelow = urlSearch.get('priceBelow');
4805			if (priceBelow) {
4806				refinements.price = refinements.price || [];
4807				refinements.price.push('<' + priceBelow);
4808			}
4809
4810			//Carousel Model Manipulation
4811			if(refinements['model']) {
4812
4813				if(Array.isArray(refinements['model'])) {
4814					for(let i = 0; i < refinements['model'].length; i++) {
4815						refinements['model'][i] = formatModelName(refinements['model'][i]);
4816					}
4817				}else{
4818					refinements['model'] = formatModelName(refinements['model']);
4819				}
4820			}
4821			//End Carousel Model Manipulation
4822
4823			if (isNexusToyota && refinements['flags.type'] == "Certified")
4824			{
4825				refinements['flags.type'] = [
4826					"Gold Certified",
4827					"Silver Certified"
4828				];
4829			} else if (isNexusHonda && refinements['flags.type'] == "Certified")
4830            {
4831                refinements['flags.type'] = [
4832                    "True Certified",
4833                    "True Used"
4834                ];
4835            } else if (isNexusAcura && refinements['flags.type'] == "Certified") {
4836                refinements['flags.type'] = [
4837                    "Precision Certified",
4838                    "Precision Used"
4839                ];
4840            }
4841
4842
4843
4844			let refinementsList = refinements;
4845
4846			for (var refinement in refinements)
4847			{
4848				if (typeof refinements[refinement] == "string")
4849				{
4850					refinementsList[refinement] = [refinements[refinement]];
4851				}
4852			}
4853
4854			const priceRange = urlSearch.get('priceRange');
4855			const mileageRange = urlSearch.get('mileageRange');
4856			const yearRange = urlSearch.get('yearRange');
4857			let range = {};
4858
4859			if (priceRange) {
4860				range.rangeSliderPrice = priceRange;
4861			}
4862
4863			if (mileageRange) {
4864				range.mileage = mileageRange;
4865			}
4866
4867			if (yearRange) {
4868				range.yr = yearRange;
4869			}
4870
4871			let hierarchicalMenu = {};
4872			if (refinements['modelCategory'])
4873			{
4874				hierarchicalMenu["modelCategory.lvl0"] = refinements['modelCategory'];
4875			}
4876
4877			//Return the corrected refinement array and current query and page (if exists)
4878			return {
4879				refinementList: refinementsList,
4880				query: urlSearch.get('q'),
4881				page: urlSearch.get('pg'),
4882				range: range,
4883				hierarchicalMenu: hierarchicalMenu
4884			}
4885		}
4886	});
4887
4888	/**
4889	 * Commit the debounced URL write before the page goes away.
4890	 *
4891	 * The history router schedules its history write on a writeDelay timer and
4892	 * never flushes it on unload (verified in the instantsearch.js bundle), so
4893	 * any navigation inside the delay - filter, tap a vehicle, Back - landed on
4894	 * an SRP without the filter.
4895	 *
4896	 * REPLACE, never push. The entry being fixed up is the SRP the shopper is
4897	 * leaving, so the correction belongs ON it: pushing would leave the
4898	 * filtered SRP in front of the unfiltered one and cost a second Back press
4899	 * to escape, which is the exact tax the writeDelay change set out to
4900	 * remove. It also sidesteps the browser-dependent question of where an
4901	 * entry pushed during pagehide lands relative to the committing navigation.
4902	 *
4903	 * The URL is captured at write() time rather than rebuilt at pagehide,
4904	 * because that is the moment the router computes its own - only the history
4905	 * call is debounced - so what is written is byte-identical to what would
4906	 * have been. It is also written UNTOUCHED: click IDs are carried by
4907	 * createURL now, so there is no string surgery here to get wrong on a
4908	 * refinement value containing '#' or '?'.
4909	 *
4910	 * pagehide rather than beforeunload: it fires only when the page is really
4911	 * being left, so a cancelled navigation cannot rewrite the URL underneath a
4912	 * shopper who stayed.
4913	 *
4914	 * ?da-url-flush=off disables it for one request. It is the only behaviour
4915	 * in this PR that writes browser history during unload, so it gets the same
4916	 * escape hatch as everything else here even though it is a bug fix.
4917	 */
4918	if (new URLSearchParams(window.location.search).get('da-url-flush') !== 'off') {
4919	(function () {
4920		var pendingUrl = null;
4921		var nativeWrite = daSrpRouter.write.bind(daSrpRouter);
4922
4923		daSrpRouter.write = function (routeState) {
4924			pendingUrl = daSrpRouter.createURL(routeState);
4925			return nativeWrite(routeState);
4926		};
4927
4928		window.addEventListener('pagehide', function () {
4929			if (pendingUrl === null || pendingUrl === window.location.href) {
4930				return; // nothing pending, or the debounced write already ran
4931			}
4932
4933			try {
4934				history.replaceState(null, '', pendingUrl);
4935			} catch (e) { /* WebKit's history rate limit; nothing left to try */ }
4936		});
4937	})();
4938	}
4939
4940const search = instantsearch({indexName: indexName, stalledSearchDelay: 1000, searchClient: searchClient, searchParameters: { clickAnalytics: true }, routing: {router: daSrpRouter, stateMapping: {
4941		stateToRoute: function stateToRoute(uiState) {
4942			//Update routeState with current uiState
4943			return {
4944				query: uiState[indexName].query,
4945				page: uiState[indexName].page,
4946				refinementList: uiState[indexName].refinementList,
4947				range: uiState[indexName].range,
4948				hierarchicalMenu: uiState[indexName].hierarchicalMenu
4949			};
4950		},
4951		routeToState: function routeToState(routeState) {
4952			//Update uiState with current routeState
4953			return {
4954				"vehicles-TOY37194": {
4955					query: routeState.query,
4956					page: routeState.page,
4957					refinementList: routeState.refinementList,
4958					range: routeState.range,
4959					hierarchicalMenu: routeState.hierarchicalMenu
4960				}
4961			};
4962		}
4963	}}});
4964
4965	const urlParams = new URLSearchParams(window.location.search);
4966	const priceBelow = urlParams.get('priceBelow');
4967
4968	let setFilters = '';
4969	if (priceBelow) {
4970		setFilters = `condition:${srpCondition} && finalPriceInt:<${priceBelow}`;
4971	} else {
4972		setFilters = "condition:" + srpCondition;
4973	}
4974
4975	//Main Search Widget
4976	search.addWidgets([
4977		instantsearch.widgets.configure({
4978			filters: setFilters,
4979			hitsPerPage: 24
4980		})
4981	]);
4982
4983
4984	//Results Widget
4985	search.addWidgets([
4986		instantsearch.widgets.hits({
4987			container: '#srp-results',
4988			templates: {
4989				item: document.getElementById('hit-template').innerHTML,
4990				empty: document.getElementById('empty-template').innerHTML
4991			},
4992			transformItems(items) {
4993				const transformedItems = items.map(item => transformIncentives(item));
4994				vehiclesList = items;
4995				return items;
4996			}
4997		})
4998	]);
4999
5000    // Listen for the render event
5001    search.on('render', () => {
5002        _triggerInventoryLoaded();
5003      // You can add any post-render logic here
5004    });
5005
5006	//Banner Widget for TOP of srp
5007	
5008	//Text Search Widget
5009	search.addWidget(
5010		instantsearch.widgets.searchBox({
5011			container: "#searchbox",
5012			placeholder: "Search Inventory",
5013			autofocus: false,
5014			showLoadingIndicator: true,
5015			queryHook: function(query, search){
5016
5017				query = query.replace(/(\b\d\b)\s+(?=\w)/g, '$1');
5018
5019				if(query?.length == 0 || query == undefined){
5020					document.querySelector('#clearSearchResults').style.display = "none";
5021				} else {
5022					document.querySelector('#clearSearchResults').style.display = "block";
5023				}
5024
5025				/**
5026				 * Coalesce keystrokes into one search.
5027				 *
5028				 * Each search replaces the whole results list - about 3,400 nodes -
5029				 * and every third-party observer watching body or document is handed
5030				 * that entire record set. Firing per character multiplied that by the
5031				 * length of the word.
5032				 *
5033				 * 100ms is deliberately short: it is below the ~150ms where typing
5034				 * starts to feel laggy, so results still land while the user is
5035				 * typing, but a burst within one word collapses into a single render.
5036				 * Clearing the box is exempt so the reset stays instant.
5037				 *
5038				 * BURST ADDENDUM (2026-08-21, the iPhone keystroke-echo reports).
5039				 * Even with the render-on-settle response hold, calling search()
5040				 * per keystroke costs: every call moves the helper's state, and
5041				 * InstantSearch re-renders every widget against it - measured at
5042				 * ~4.7s of main-thread work across one fast-typed word on the
5043				 * 4x-throttled bench, none of it produced by our render handler
5044				 * (the A/B with the handler gated read the same). So while keys
5045				 * are arriving faster than the settle delay, the timer re-arms
5046				 * instead of firing: a fast burst reaches the helper as ONE
5047				 * search when the fingers pause, and a deliberate typist whose
5048				 * gaps exceed the settle delay gets the old per-keystroke flow
5049				 * untouched. Gated on the same switch as the response hold -
5050				 * they are two halves of "nothing renders mid-burst".
5051				 */
5052				if (window.__dvSearchDebounce) {
5053					clearTimeout(window.__dvSearchDebounce);
5054				}
5055
5056				if (!query) {
5057					// Clearing must reset instantly, as promised above - but
5058					// the backspace that emptied the box also bumped
5059					// daLastTypeAt, which would hold the reset render behind
5060					// the settle delay. Declare typing over instead.
5061					daLastTypeAt = -Infinity;
5062					search(query);
5063					return;
5064				}
5065
5066				var daFireSearch = function () {
5067					if (daRenderOnSettle && daTypingActive()) {
5068						window.__dvSearchDebounce = setTimeout(daFireSearch, 100);
5069						return;
5070					}
5071					search(query);
5072				};
5073
5074				window.__dvSearchDebounce = setTimeout(daFireSearch, 100);
5075			}
5076		})
5077	);
5078
5079	//5-2-2023 customer default sorting work around while we build to admin panel
5080	let currentIndex = 'vehicles-TOY37194';
5081	currentIndex = currentIndex.split('/')[0];
5082
5083	//Sort By Widget Desktop
5084	const { connectSortBy } = instantsearch.connectors;
5085	const renderSortByDesktop = (renderOptions, isFirstRender) => {
5086		const {
5087			options,
5088			currentRefinement,
5089			refine,
5090			widgetParams,
5091			// `canRefine` is only available from v4.45.0
5092			// Use `hasNoResults` in earlier minor versions.
5093			canRefine,
5094		} = renderOptions;
5095
5096		if (isFirstRender) {
5097			const _div = document.createElement('div');
5098			_div.classList.add("dv-srp-sort-desktop");
5099
5100			_div.innerHTML = `
5101				${options.map(option =>
5102					`<a data-sort-value="${option.value}" data-sort-label="${option.label}" class="${option.value === currentRefinement ? 'dv-srp-sort-selected' : ''}">
5103						<i class="fas fa-${option.icon}"></i> ${option.label}
5104					</a>`).join('')
5105				}
5106			`;
5107			let filtered = options.filter(opt => opt.value === currentRefinement);
5108			if(filtered?.length > 0){
5109				document.querySelector('.dv-srp-search-options-dynamic-label').innerHTML = filtered[0].label;
5110			}
5111			widgetParams.container.appendChild(_div);
5112		}
5113
5114		//widgetParams.container.querySelector('div');
5115		const nodes = document.querySelectorAll('.dv-srp-sort-desktop > *');
5116		nodes.forEach(function(node) {
5117			node.addEventListener('click', function(event) {
5118				event.preventDefault();
5119				if (event?.target == undefined) { return };
5120				let _ActiveClass = 'dv-srp-sort-selected';
5121				let _value = event?.target?.dataset?.sortValue;
5122				let _label = event?.target?.dataset?.sortLabel;
5123
5124				if (_value && _value != currentRefinement) {
5125					refine(_value);
5126					if(currentRefinement){
5127						nodes.forEach(el => el.classList.remove(_ActiveClass));
5128						event?.target?.classList.add(_ActiveClass);
5129						document.querySelector('.dv-srp-search-options-dynamic-label').innerHTML = _label;
5130					}
5131				}
5132			});
5133		});
5134
5135	};
5136	// Create the custom widget
5137	const customSortByDesktop = connectSortBy(renderSortByDesktop);
5138	search.addWidgets([
5139		customSortByDesktop({
5140			container: document.querySelector('#sortByDesktop'),
5141			items: [
5142				{ label: "Most Relevant", value: `${currentIndex}`, icon: 'sort'},
5143				{ label: "Price Low to High", value: `${currentIndex}/sort/sortPrice:desc,price:asc`, icon: 'sort-numeric-down'},
5144				{ label: "Price High to Low", value: `${currentIndex}/sort/sortPrice:desc,price:desc`, icon: 'sort-numeric-up'},
5145				{ label: distanceUnit + 's Low to High', value: `${currentIndex}/sort/mileage:asc`, icon: 'sort-numeric-down'},
5146				{ label: "Year: Newest", value: `${currentIndex}/sort/yr:desc`, icon: 'long-arrow-up'},
5147				{ label: "Year: Oldest", value: `${currentIndex}/sort/yr:asc`, icon: 'long-arrow-down'}
5148			],
5149		})
5150	]);
5151
5152	// Toggle Desktop Sort Dropdown
5153	document.querySelector('#sortByDesktop').addEventListener('click', function(event) {
5154		event.stopPropagation();
5155		var el = document.querySelector('.dv-srp-sort-desktop');
5156		el.classList.toggle('dv-srp-sort-desktop-active');
5157	});
5158
5159	// Close dropdown when clicking outside
5160	document.addEventListener('click', function(event) {
5161		var el = document.querySelector('.dv-srp-sort-desktop');
5162		var button = document.querySelector('#sortByDesktop');
5163
5164		if (!el.contains(event.target) && !button.contains(event.target)) {
5165			el.classList.remove('dv-srp-sort-desktop-active');
5166		}
5167	});
5168
5169	//Sort By Widget Mobile
5170	const renderSortByMobile = (renderOptions, isFirstRender) => {
5171		const {
5172			options,
5173			currentRefinement,
5174			refine,
5175			widgetParams,
5176			// `canRefine` is only available from v4.45.0
5177			// Use `hasNoResults` in earlier minor versions.
5178			canRefine,
5179		} = renderOptions;
5180
5181		if (isFirstRender) {
5182			const _div = document.createElement('div');
5183			_div.classList.add("dv-srp-sort-mobile");
5184
5185			_div.innerHTML = `
5186				${options.map(option =>
5187					`<a data-sort-value="${option.value}" data-sort-label="${option.label}" class="${option.value === currentRefinement ? 'dv-srp-sort-selected' : ''}">
5188						<i class="fas fa-${option.icon}"></i> ${option.label}
5189					</a>`).join('')
5190				}
5191			`;
5192
5193			widgetParams.container.appendChild(_div);
5194		}
5195
5196		//widgetParams.container.querySelector('div');
5197		const nodes = document.querySelectorAll('.dv-srp-sort-mobile > *');
5198		nodes.forEach(function(node) {
5199			node.addEventListener('click', function(event) {
5200				event.preventDefault();
5201				if (event?.target == undefined) { return };
5202				let _ActiveClass = 'dv-srp-sort-selected';
5203				let _value = event?.target?.dataset?.sortValue;
5204				let _label = event?.target?.dataset?.sortLabel;
5205
5206				if (_value && _value != currentRefinement) {
5207					refine(_value);
5208					if(currentRefinement){
5209						nodes.forEach(el => el.classList.remove(_ActiveClass));
5210						event?.target?.classList.add(_ActiveClass);
5211					}
5212				}
5213			});
5214		});
5215
5216	};
5217	// Create the custom widget
5218	const customSortByMobile = connectSortBy(renderSortByMobile);
5219	search.addWidgets([
5220		customSortByMobile({
5221			container: document.querySelector('#sortByMobile'),
5222			items: [
5223				{ label: "Most Relevant", value: `${currentIndex}`, icon: 'sort'},
5224				{ label: "Price Low to High", value: `${currentIndex}/sort/sortPrice:desc,price:asc`, icon: 'sort-numeric-down'},
5225				{ label: "Price High to Low", value: `${currentIndex}/sort/sortPrice:desc,price:desc`, icon: 'sort-numeric-up'},
5226				{ label: distanceUnit + 's Low to High', value: `${currentIndex}/sort/mileage:asc`, icon: 'sort-numeric-down'},
5227				{ label: "Year: Newest", value: `${currentIndex}/sort/yr:desc`, icon: 'long-arrow-up'},
5228				{ label: "Year: Oldest", value: `${currentIndex}/sort/yr:asc`, icon: 'long-arrow-down'}
5229			],
5230		})
5231	]);
5232
5233	// Toggle Mobile Sort Dropdown
5234	document.querySelector('#sortByMobile').addEventListener('click', function(event) {
5235		event.stopPropagation(); // Prevent the event from bubbling up to the document
5236		var el = document.querySelector('.dv-srp-sort-mobile');
5237		el.classList.toggle('dv-srp-sort-mobile-active');
5238	});
5239
5240	// Close dropdown when clicking outside
5241	document.addEventListener('click', function(event) {
5242		var el = document.querySelector('.dv-srp-sort-mobile');
5243		var button = document.querySelector('#sortByMobile');
5244
5245		if (!el.contains(event.target) && !button.contains(event.target)) {
5246			el.classList.remove('dv-srp-sort-mobile-active');
5247		}
5248	});
5249			search.addWidget(
5250			instantsearch.widgets.rangeSlider({
5251				container: '#price-range-slider',
5252				attribute: 'rangeSliderPrice',
5253				step: 1000,
5254				pips: false,
5255				precision: 0,
5256				tooltips: {
5257					format(value) {
5258
5259						const newValue = Math.round(value/1000)*1000
5260					return "$" + Math.round(newValue).toLocaleString();
5261					},
5262				},
5263			})
5264		);
5265
5266		//Pin price ammounts to top and let handler move them
5267		const priceSlider = document.querySelector('#price-range-slider');
5268
5269		if (priceSlider) {
5270			/**
5271			 * Rheostat positions its handles by writing style.left, so the tooltips
5272			 * have to be repositioned in response. Watching for that write is fine;
5273			 * doing it naively is not, and the naive version was measurably the most
5274			 * expensive observer on this page.
5275			 *
5276			 * Two problems it had:
5277			 *
5278			 *  1. It observed style attributes across the slider's whole subtree and
5279			 *     then wrote styles to the tooltips *inside* that subtree, so every
5280			 *     run scheduled another run. It only ever settled because the values
5281			 *     converged.
5282			 *  2. It read offsetWidth and then wrote, synchronously, on every single
5283			 *     mutation - a forced layout each time. Typing in the SRP search box
5284			 *     re-renders the results and fires this constantly.
5285			 *
5286			 * So: coalesce to one run per frame, and disconnect around our own writes
5287			 * so they cannot feed back in. Skipping unchanged values keeps us from
5288			 * dirtying style for no reason.
5289			 */
5290			const OBSERVE_OPTIONS = {
5291				childList: true,
5292				subtree: true,
5293				attributes: true,
5294				attributeFilter: ['style']
5295			};
5296
5297			const setStyle = (el, prop, value) => {
5298				if (el.style[prop] !== value) {
5299					el.style[prop] = value;
5300				}
5301			};
5302
5303			const applyTooltipPositions = () => {
5304				const handles = priceSlider.querySelectorAll('.rheostat-handle');
5305
5306				if (handles.length !== 2) {
5307					return;
5308				}
5309
5310				const tooltip1 = handles[0].querySelector('.rheostat-tooltip');
5311				const tooltip2 = handles[1].querySelector('.rheostat-tooltip');
5312				const background = priceSlider.querySelector('.rheostat-background');
5313
5314				if (!tooltip1 || !tooltip2 || !background) {
5315					return;
5316				}
5317
5318				// every read first, then every write - one layout pass, not two
5319				const handle1Left = parseFloat(handles[0].style.left) || 0;
5320				const handle2Left = parseFloat(handles[1].style.left) || 100;
5321				const sliderWidth = background.offsetWidth;
5322
5323				const handle1Offset = (handle1Left / 100) * sliderWidth;
5324				const handle2Offset = (handle2Left / 100) * sliderWidth;
5325
5326				setStyle(tooltip1, 'left', `-${handle1Offset}px`);
5327				setStyle(tooltip1, 'transform', 'none');
5328
5329				setStyle(tooltip2, 'right', `-${sliderWidth - handle2Offset}px`);
5330				setStyle(tooltip2, 'left', 'auto');
5331				setStyle(tooltip2, 'transform', 'none');
5332			};
5333
5334			let repositionQueued = false;
5335
5336			const scheduleReposition = () => {
5337				if (repositionQueued) {
5338					return;
5339				}
5340
5341				repositionQueued = true;
5342
5343				requestAnimationFrame(() => {
5344					repositionQueued = false;
5345					// Detach first: the writes below land inside the observed subtree
5346					// and would otherwise queue another callback immediately.
5347					observer.disconnect();
5348
5349					try {
5350						applyTooltipPositions();
5351					} finally {
5352						observer.observe(priceSlider, OBSERVE_OPTIONS);
5353					}
5354				});
5355			};
5356
5357			const observer = new MutationObserver(scheduleReposition);
5358			observer.observe(priceSlider, OBSERVE_OPTIONS);
5359
5360			scheduleReposition();
5361
5362			window.addEventListener('resize', scheduleReposition);
5363		}
5364			var daFacetLimit = 100000;
5365	var daFacetShowMore = false;
5366	var daFacetShowMoreLimit = 100000;
5367	var daFacetSortLead = [];
5368			search.addWidget(
5369			instantsearch.widgets.refinementList({
5370				container: '#make-list',
5371				attribute: 'make',
5372				operator: 'or',
5373				sortBy: daFacetSortLead.concat(['count:desc']),
5374				limit: daFacetLimit,
5375				showMore: daFacetShowMore,
5376				showMoreLimit: daFacetShowMoreLimit
5377			})
5378		);
5379				search.addWidget(
5380			instantsearch.widgets.refinementList({
5381				container: '#model-list',
5382				attribute: "model",
5383				operator: 'or',
5384				sortBy(a,b) {
5385					// Comparator, so it cannot concat daFacetSortLead - same lead by hand.
5386					if (daFacetShowMore && a.isRefined !== b.isRefined) return a.isRefined ? -1 : 1;
5387					a = a.name.toLowerCase();
5388					b = b.name.toLowerCase();
5389					if( a == b) return 0;
5390					return a < b ? -1 : 1;
5391				},
5392				limit: daFacetLimit,
5393				showMore: daFacetShowMore,
5394				showMoreLimit: daFacetShowMoreLimit,
5395				transformItems(items) {
5396      				return items.filter(item => item.count > 0);
5397    			},
5398			})
5399		);
5400				search.addWidget(
5401			instantsearch.widgets.refinementList({
5402				container: '#trim-list',
5403				attribute: 'trim',
5404				operator: 'or',
5405				sortBy: daFacetSortLead.concat(['count:desc']),
5406				limit: daFacetLimit,
5407				showMore: daFacetShowMore,
5408				showMoreLimit: daFacetShowMoreLimit
5409			})
5410		);
5411				search.addWidget(
5412			instantsearch.widgets.refinementList({
5413				container: '#year-list',
5414				attribute: 'yr',
5415				operator: 'or',
5416				sortBy: daFacetSortLead.concat(['name:desc']),
5417				limit: daFacetLimit,
5418				showMore: daFacetShowMore,
5419				showMoreLimit: daFacetShowMoreLimit
5420			})
5421		);
5422				search.addWidget(
5423			instantsearch.widgets.refinementList({
5424				container: '#pricerange-list',
5425				attribute: 'finalPriceRange',
5426				operator: 'or',
5427				sortBy: function sortBy(a, b) {
5428					let priceOptions = {
5429						"$10,000 and Below": 0,
5430						"$10,000 - $20,000": 1,
5431						"$20,000 - $30,000": 2,
5432						"$30,000 - $40,000": 3,
5433						"$40,000 - $50,000": 4,
5434						"$50,000 - $60,000": 5,
5435						"$60,000 - $70,000": 6,
5436						"$70,000 - $80,000": 7,
5437						"$80,000 - $90,000": 8,
5438						"$90,000 - $100,000": 9,
5439						"$100,000 and Up": 10
5440					};
5441
5442					if (priceOptions[a.name] < priceOptions[b.name])
5443					{
5444						return -1;
5445					}
5446
5447					if (priceOptions[a.name] > priceOptions[b.name])
5448					{
5449						return 1;
5450					}
5451
5452					return 0;
5453				},
5454				limit: 100000
5455			})
5456		);
5457				search.addWidget(
5458			instantsearch.widgets.refinementList({
5459				container: '#body-list',
5460                                    attribute: 'body',
5461                    				operator: 'or',
5462				sortBy: daFacetSortLead.concat(['']),
5463				limit: daFacetLimit,
5464				showMore: daFacetShowMore,
5465				showMoreLimit: daFacetShowMoreLimit,
5466				templates: {
5467					item: "<label class=\"ais-RefinementList-label\">\n\t\t\t\t\t\t\t<input type=\"checkbox\" class=\"ais-RefinementList-checkbox\" value=\"{{value}}\">\n\t\t\t\t\t\t\t<span class=\"ais-RefinementList-labelText srp-{{value}}\">{{value}} &#183; {{count}}</span>\n\t\t\t\t\t\t</label>"
5468				}
5469			})
5470		);
5471
5472		// Cab List Widget
5473		search.addWidget(
5474			instantsearch.widgets.refinementList({
5475				container: '#cab-list',
5476				attribute: 'cab',
5477				operator: 'or',
5478				sortBy: daFacetSortLead.concat(['name:asc']),
5479				limit: daFacetLimit,
5480				showMore: daFacetShowMore,
5481				showMoreLimit: daFacetShowMoreLimit
5482			})
5483		);
5484
5485		//Bed List Widget
5486		search.addWidget(
5487			instantsearch.widgets.refinementList({
5488				container: '#bed-list',
5489				attribute: 'bed',
5490				operator: 'or',
5491				sortBy: daFacetSortLead.concat(['name:asc']),
5492				limit: daFacetLimit,
5493				showMore: daFacetShowMore,
5494				showMoreLimit: daFacetShowMoreLimit
5495			})
5496		);
5497				search.addWidget(
5498			instantsearch.widgets.refinementList({
5499				container: '#fuel-list',
5500				attribute: 'fuel',
5501				operator: 'or',
5502				sortBy: daFacetSortLead.concat(['count:desc']),
5503				limit: daFacetLimit,
5504				showMore: daFacetShowMore,
5505				showMoreLimit: daFacetShowMoreLimit
5506			})
5507		);
5508				search.addWidget(
5509			instantsearch.widgets.refinementList({
5510				container: '#transmission-list',
5511				attribute: 'transmissionType',
5512				operator: 'or',
5513				sortBy: daFacetSortLead.concat(['count:desc']),
5514				limit: daFacetLimit,
5515				showMore: daFacetShowMore,
5516				showMoreLimit: daFacetShowMoreLimit
5517			})
5518		);
5519				search.addWidget(
5520			instantsearch.widgets.refinementList({
5521				container: '#drivetrain-list',
5522				attribute: 'drivetrain',
5523				operator: 'or',
5524				sortBy: daFacetSortLead.concat(['count:desc']),
5525				limit: daFacetLimit,
5526				showMore: daFacetShowMore,
5527				showMoreLimit: daFacetShowMoreLimit,
5528				transformItems(items) {
5529					return items.filter((i) => i.value !== "");
5530				}
5531			})
5532		);
5533				search.addWidget(
5534			instantsearch.widgets.refinementList({
5535				container: '#location-list',
5536				attribute: 'dealerName',
5537				operator: 'or',
5538				sortBy: ['count:desc'],
5539				limit: 500
5540			})
5541		);
5542				search.addWidget(
5543			instantsearch.widgets.refinementList({
5544				container: '#mpg-hway-list',
5545				attribute: 'mpgHwayRange',
5546				operator: 'or',
5547				sortBy: ['count:desc'],
5548			})
5549		);
5550				search.addWidget(
5551			instantsearch.widgets.refinementList({
5552				container: '#mpg-city-list',
5553				attribute: 'mpgCityRange',
5554				operator: 'or',
5555				sortBy: ['count:desc'],
5556			})
5557		);
5558				search.addWidget(
5559			instantsearch.widgets.refinementList({
5560				container: '#features-list',
5561				attribute: 'features',
5562				operator: 'and',
5563				sortBy: daFacetSortLead.concat(['name:acs']),
5564				limit: daFacetLimit,
5565				showMore: daFacetShowMore,
5566				showMoreLimit: daFacetShowMoreLimit
5567			})
5568		);
5569				search.addWidget(
5570			instantsearch.widgets.refinementList({
5571				container: '#range-list',
5572				attribute: 'range',
5573				operator: 'or',
5574				sortBy: ['count:desc'],
5575				limit: 100000
5576			})
5577		);
5578		
5579	        
5580        /*
5581         *
5582         * OEMs require the following order for vehicle Status - NEX-1762
5583         *
5584         */
5585        const oemStatusOrder = ["In Stock", "In Transit", "In Production"];
5586
5587        search.addWidget(
5588            instantsearch.widgets.refinementList({
5589                container: '#status-list',
5590                attribute: 'status',
5591                transformItems(items) {
5592                    const sortedItems = [...items].sort((a, b) => {
5593                        const indexA = oemStatusOrder.indexOf(a.label);
5594                        const indexB = oemStatusOrder.indexOf(b.label);
5595
5596                        return (indexA === -1 ? oemStatusOrder.length : indexA) -
5597                            (indexB === -1 ? oemStatusOrder.length : indexB);
5598                    });
5599
5600                    return sortedItems; // Ensure it returns a new array
5601                },
5602                templates: {
5603                    item: `<label class="ais-RefinementList-label">
5604                            <input type="checkbox" class="ais-RefinementList-checkbox" value="{{value}}">
5605                            <div>
5606                                <span class="ais-RefinementList-labelText">{{label}}</span>
5607                            </div>
5608                            <span class="ais-RefinementList-count">{{count}}</span>
5609                          </label>`
5610                }
5611            })
5612        );
5613    
5614	//Type List Widget
5615	search.addWidget(
5616		instantsearch.widgets.refinementList({
5617			container: '#type-list',
5618			attribute: 'flags.type',
5619			operator: 'or',
5620			sortBy: daFacetSortLead.concat(['count:desc']),
5621			limit: daFacetLimit,
5622			showMore: daFacetShowMore,
5623			showMoreLimit: daFacetShowMoreLimit
5624		})
5625	);
5626
5627	search.addWidget(
5628		instantsearch.widgets.refinementList({
5629			container: '#dealertag-list',
5630			attribute: 'dealertag',
5631			operator: 'or',
5632			limit: daFacetLimit,
5633			showMore: daFacetShowMore,
5634			showMoreLimit: daFacetShowMoreLimit
5635		})
5636	);
5637
5638
5639	//Custom Pagination SRP
5640		const { connectPagination } = instantsearch.connectors;
5641
5642	const renderPagination = (renderOptions, isFirstRender) => {
5643	  	const {
5644		pages,
5645		currentRefinement,
5646		nbPages,
5647		isFirstPage,
5648		isLastPage,
5649		refine,
5650		createURL,
5651  	} = renderOptions;
5652
5653  	const container = document.querySelector('#pagination-top');
5654
5655	if (nbPages <= 1) {
5656        container.style.display = 'none';
5657        return;
5658    } else {
5659        container.style.display = '';
5660    }
5661
5662  	container.innerHTML = `
5663  		<ul class="ais-pagination-ul">
5664	${
5665  	currentRefinement >= 1
5666	? `
5667	  <li>
5668		<a class="ais-Pagination-link" href="${createURL(currentRefinement - 1)}" data-value="${currentRefinement - 1}">
5669			<i class="fa-solid fa-chevron-left"></i>
5670		</a>
5671	  </li>
5672	`
5673	: ''
5674	}
5675	<div class="ais-pagination-wrapper">
5676	Page <span class="ais-Pagination-link">${currentRefinement + 1}</span> of <span class="ais-Pagination-link">${nbPages}</span>
5677	</div>
5678	${
5679	currentRefinement < nbPages - 1
5680		? `
5681		<li>
5682			<a class="ais-Pagination-link" href="${createURL(currentRefinement + 1)}" data-value="${currentRefinement + 1}">
5683				<i class="fa-solid fa-chevron-right"></i>
5684			</a>
5685		</li>
5686		`
5687		: ''
5688		}
5689	</ul>
5690	`;
5691
5692	[...container.querySelectorAll('a')].forEach(element => {
5693		element.addEventListener('click', event => {
5694		event.preventDefault();
5695		refine(event.currentTarget.dataset.value);
5696
5697		window.scrollTo({
5698            top: 0,
5699            left: 0,
5700            behavior: 'smooth'
5701        });
5702		});
5703	});
5704	};
5705
5706	const customPagination = connectPagination(
5707		renderPagination
5708	);
5709
5710	search.addWidgets([
5711		customPagination({
5712		container: document.querySelector('#pagination-top'),
5713		})
5714	]);
5715
5716	//Bottom Pagination
5717
5718	const renderPaginationBottom = (renderOptions, isFirstRender) => {
5719		const {
5720		pages,
5721		currentRefinement,
5722		nbPages,
5723		isFirstPage,
5724		isLastPage,
5725		refine,
5726		createURL,
5727	} = renderOptions;
5728
5729	const containerBottom= document.querySelector('#pagination-bottom');
5730
5731	if (nbPages <= 1) {
5732        containerBottom.style.visibility = 'hidden';
5733        return;
5734    } else {
5735        containerBottom.style.visibility = 'visible';
5736    }
5737
5738	containerBottom.innerHTML = `
5739	<ul class="ais-pagination-ul">
5740	${
5741	currentRefinement >= 1
5742		? `
5743		<li>
5744			<a class="ais-Pagination-link" href="${createURL(currentRefinement - 1)}" data-value="${currentRefinement - 1}">
5745				<i class="fa-solid fa-chevron-left"></i>
5746			</a>
5747		</li>
5748		`
5749		: ''
5750	}
5751	<div class="ais-pagination-wrapper">
5752	Page <span class="ais-Pagination-link">${currentRefinement + 1}</span> of <span class="ais-Pagination-link">${nbPages}</span>
5753	</div>
5754	${
5755	currentRefinement < nbPages - 1
5756		? `
5757		<li>
5758			<a class="ais-Pagination-link" href="${createURL(currentRefinement + 1)}" data-value="${currentRefinement + 1}">
5759				<i class="fa-solid fa-chevron-right"></i>
5760			</a>
5761		</li>
5762		`
5763		: ''
5764		}
5765	</ul>
5766	`;
5767
5768	[...containerBottom.querySelectorAll('a')].forEach(element => {
5769		element.addEventListener('click', event => {
5770		event.preventDefault();
5771		refine(event.currentTarget.dataset.value);
5772
5773		window.scrollTo({
5774            top: 0,
5775            left: 0,
5776            behavior: 'smooth'
5777        });
5778		});
5779	});
5780	};
5781
5782	const customPaginationBottom = connectPagination(
5783		renderPaginationBottom
5784	);
5785
5786	search.addWidgets([
5787		customPaginationBottom({
5788		container: document.querySelector('#pagination-bottom'),
5789		})
5790	]);
5791
5792//End Customer Pagination SRP
5793	
5794	// Clear Results Button Widget
5795	//search.addWidget(
5796	//	instantsearch.widgets.clearRefinements({
5797	//		container: '#clearSearchResults',
5798	//		templates: {
5799	//			resetLabel: '<i class="fal fa-backspace"></i> <span>Clear<br>Search</span>'
5800	//		}
5801	//	})
5802	//);
5803
5804	search.addWidget(
5805		instantsearch.widgets.clearRefinements({
5806			container: '#dv-srp-clear-filters',
5807			templates: {
5808				resetLabel: 'Clear All'
5809			}
5810		})
5811	);
5812
5813	search.addWidget(
5814		instantsearch.widgets.clearRefinements({
5815			container: '#srp-filters-reset-btn',
5816			templates: {
5817				resetLabel: 'Clear Filters'
5818			}
5819		})
5820	);
5821
5822	//Results Stats Widget (Top)
5823	//  in {{processingTimeMS}}ms
5824	const { connectStats } = instantsearch.connectors;
5825
5826	let renderStats = (renderOptions, isFirstRender) => {
5827	let {
5828		page,
5829		nbPages,
5830		nbSortedHits,
5831		hitsPerPage,
5832		nbHits,
5833		isLastPage,
5834	} = renderOptions;
5835
5836	const containerStats = document.querySelector('#resultsStats');
5837
5838	let pageNumber = page + 1;
5839	let lastPage = nbPages - 1;
5840	let nextPage = page + 1;
5841
5842	containerStats.innerHTML =`
5843		<div class="ais-Stats">
5844		${nbHits === 0 ?`
5845		\n\t\t\t\t\tNo results\n\t\t\t\t\t
5846		` : '' }
5847		${page === 0 && nbHits > hitsPerPage ? `
5848			\n\t\t\t\t\tShowing <span id=\"numberHits\">${pageNumber}</span> - <span id=\"numberHits\">${hitsPerPage * pageNumber}</span> of <span id=\"numberHits\">${nbHits}</span>\n  results found\n\t\t\t\t\t`
5849			: ''}
5850		${page >= 1 && page !== lastPage && nbHits > hitsPerPage ? `
5851			\n\t\t\t\t\tShowing <span id=\"numberHits\">${page * hitsPerPage}</span> - <span id=\"numberHits\">${hitsPerPage * nextPage}</span> of <span id=\"numberHits\">${nbHits}</span>\n  results found\n\t\t\t\t\t
5852			` : ''}
5853		${page === lastPage && nbHits < hitsPerPage ? `
5854			\n\t\t\t\t\tShowing <span id=\"numberHits\">${pageNumber}</span> - <span id=\"numberHits\">${nbHits}</span> of <span id=\"numberHits\">${nbHits}</span>\n  results found\n\t\t\t\t\t
5855			` : ''}
5856		${page === lastPage && nbPages != 1  ? `
5857			\n\t\t\t\t\tShowing <span id=\"numberHits\">${lastPage * hitsPerPage}</span> - <span id=\"numberHits\">${nbHits}</span> of <span id=\"numberHits\">${nbHits}</span>\n  results found\n\t\t\t\t\t
5858		` : ''}
5859		`;
5860
5861	};
5862
5863	const customStats = connectStats(
5864	renderStats
5865	);
5866
5867	search.addWidgets([
5868	customStats({
5869		container: document.querySelector('#resultsStats'),
5870	})
5871	]);
5872
5873	//Result Stats Widget (Bottom)
5874	//  in {{processingTimeMS}}ms
5875	search.addWidget(
5876		instantsearch.widgets.stats({
5877			container: '#resultsStats-bottom',
5878			templates: {
5879				text: "\n\t\t\t\t\t{{#hasNoResults}}No results{{/hasNoResults}}\n\t\t\t\t\t{{#hasOneResult}}<span id=\"numberHits\">1</span> result{{/hasOneResult}}\n\t\t\t\t\t{{#hasManyResults}}<span id=\"numberHits\">{{#helpers.formatNumber}}{{nbHits}}{{/helpers.formatNumber}}</span> results{{/hasManyResults}} found"
5880			}
5881		})
5882	);
5883
5884	//Mobile Show Filters Buttom Stats Widget
5885	search.addWidget(
5886		instantsearch.widgets.stats({
5887			container: '#showFiltersNonLegacy',
5888			templates: {
5889				text: "\n\t\t\t\t\t<div class='dv-srp-search-options-wrapper'><span class='showFilters-label'><i class='fas fa-sort-amount-up'></i> Filter</span> <span class='showFilters-value'>{{#hasNoResults}}(0){{/hasNoResults}}\n\t\t\t\t\t{{#hasOneResult}}(1){{/hasOneResult}}\n\t\t\t\t\t{{#hasManyResults}} ({{#helpers.formatNumber}} {{nbHits}} {{/helpers.formatNumber}}) {{/hasManyResults}}</span></div>"
5890			}
5891		})
5892	);
5893	search.addWidget(
5894		instantsearch.widgets.stats({
5895			container: '#srpFilterResultCount',
5896			templates: {
5897				text: "\n\t\t\t\t\t{{#hasNoResults}}No Results{{/hasNoResults}}\n\t\t\t\t\t{{#hasOneResult}}Show 1 Result{{/hasOneResult}}\n\t\t\t\t\t{{#hasManyResults}}Show {{#helpers.formatNumber}}{{nbHits}}{{/helpers.formatNumber}} Results{{/hasManyResults}}"
5898			}
5899		})
5900	);
5901
5902	search.addWidget(
5903		instantsearch.widgets.currentRefinements({
5904			container: '#filterTags',
5905			transformItems: function transformItems(items) {
5906				items.forEach(function (item) {
5907					if (item.label == "dealer.name")
5908					{
5909						item.label = "Dealer Name";
5910					};
5911
5912					if (item.label == "flags.type")
5913					{
5914						item.label = "Type";
5915					};
5916
5917					if (item.label == "yr")
5918					{
5919						item.label = "Year";
5920					};
5921
5922					if (item.label == "finalPriceRange" || item.label == "FinalPriceRange")
5923					{
5924						item.label = "Price Range";
5925					};
5926
5927					if (item.label == "monthlyPaymentRange")
5928					{
5929						item.label = "Monthly Payment";
5930					}
5931
5932					if (item.label == "genericColor")
5933					{
5934						item.label = "Color";
5935					};
5936
5937					if (item.label == "mileageRange")
5938					{
5939						item.label = distanceUnit + " Range";
5940					};
5941
5942					if (item.label == "vehiclehistory")
5943					{
5944						item.label = "Vehicle History";
5945					};
5946					if (item.label == "finalPriceInt")
5947					{
5948						item.label = "Price Range";
5949					};
5950					if(item.label == "transmissionType")
5951					{
5952						item.label = "Transmission";
5953					}
5954					if (item.label == "rangeSliderPrice")
5955					{
5956						item.label = "Price";
5957					};
5958
5959					if (item.label == "modelCategory.lvl1")
5960					{
5961						item.label = "Model";
5962						item.refinements = item.refinements.map((ref) => ({ ...ref, label: ref.label.split(" > ")[1]}));
5963					}
5964				});
5965				return items;
5966			}
5967		})
5968	);
5969
5970    /**
5971     * Remove previous and next arrows if there's only 1 image in the stack.
5972     * Swiper has this functionality supposedly with watchOverflow: true
5973     * but it was not working when set
5974     *
5975     * @param sliderElm
5976     * @private
5977     */
5978    function _maybeRemoveSwiperNavigation(sliderElm) {
5979        let imageCount = 0;
5980        const slides = sliderElm.querySelectorAll('.swiper-slide')
5981
5982        if (slides.length <= 1) {
5983            let navElements = sliderElm.querySelectorAll('.swiper-button-next,.swiper-button-prev')
5984            if (navElements.length) {
5985                navElements.forEach( (el) => {
5986                    el.remove()
5987                })
5988            }
5989        }
5990    }
5991
5992    /**
5993     * Limit the amount of images per vehicle card by using the SRP max images option in AG Options
5994     *
5995     * Two fixes, 2026-08-21, hunting the DOM weight behind the keystroke-lag
5996     * reports:
5997     *
5998     * 1. This used to run only when a carousel first scrolled INTO VIEW, so
5999     *    every off-screen card kept its full slide stack in the DOM through
6000     *    every re-render - the trim only ever helped cards the shopper had
6001     *    already reached. It now also runs as part of the render rebuild
6002     *    (_buildSRPImageCarousel), so excess slides leave the DOM the moment
6003     *    the cards do exist, on every card, every render. Style recalculation
6004     *    and layout pay per node whether or not a card is on screen (unless
6005     *    content-visibility hides it, which older Safari lacks).
6006     *
6007     * 2. The gate was hard-coded "length > 5", which silently ignored a
6008     *    configured cap below five. It now gates on the cap itself.
6009     *
6010     * ?da-slide-cap=N overrides the cap for one request - the way to measure
6011     * "what would a tighter cap buy" on a live dealer without touching their
6012     * setting.
6013     *
6014     * @private
6015     */
6016    // The ?da-slide-cap=N override, read once per page instead of once per
6017    // trim call - it cannot change while the page lives.
6018    var daSlideCapOverride = parseInt(new URLSearchParams(window.location.search).get('da-slide-cap'), 10);
6019
6020    function _limitSlidesPerVehicleCard(scope) {
6021        // With a scope, trim just that carousel; without one, sweep the page.
6022        let vehicleCardCarousels = scope ? [scope] : document.querySelectorAll('.srp-swiper-vehicles');
6023
6024        let srpMaxImageLength = 5;
6025        if (daSlideCapOverride > 0) {
6026            srpMaxImageLength = daSlideCapOverride;
6027        }
6028
6029        vehicleCardCarousels.forEach(slider => {
6030
6031            let swiperWrapper = slider.querySelector('.swiper-wrapper');
6032            let swiperSlides = swiperWrapper.querySelectorAll('.swiper-slide');
6033
6034            if (swiperSlides.length > srpMaxImageLength && ! swiperWrapper.dataset.maximages) {
6035
6036                for (let i = srpMaxImageLength; i < swiperSlides.length; i++) {
6037                    swiperWrapper.removeChild(swiperSlides[i]);
6038                }
6039
6040                swiperWrapper.setAttribute('data-maximages', srpMaxImageLength);
6041            }
6042        });
6043    }
6044
6045
6046	/**
6047     * Transform the incentives data to be more easily accessible in the template
6048     *
6049     * @private
6050     */
6051	function transformIncentives(item) {
6052
6053        if (!showConditionalIncentives || !item.conditionalIncentives) return item;
6054
6055		const formatDate = (dateString) => {
6056			if (!dateString) return null;
6057			const date = new Date(dateString);
6058			const month = (date.getMonth() + 1).toString().padStart(2, '0');
6059			const day = date.getDate().toString().padStart(2, '0');
6060			const year = date.getFullYear();
6061			return `${month}-${day}-${year}`;
6062		};
6063
6064		const mapNexusIncentive = inc => {
6065			if (!inc.value || inc.value === 0) return null;
6066
6067			const incentive = {};
6068			if (inc.title) incentive.programDescription = inc.title;
6069			if (inc.title) incentive.programName = inc.title;
6070			if (inc.value) incentive.programValue = inc.value;
6071			if (inc.disclaimer) incentive.disclaimerText = inc.disclaimer;
6072			if (inc.effectiveDate) incentive.effectiveDate = formatDate(inc.effectiveDate);
6073    		if (inc.expiryDate) incentive.expiryDate = formatDate(inc.expiryDate);
6074			if (inc.description) {
6075			incentive.programRuleList = [{
6076				description: inc.description
6077			}];
6078			}
6079			return incentive;
6080		};
6081
6082		if (isNexusToyota || isNexusAcura || isNexusHonda || isNexusEnabled) {
6083			item.conditionalIncentives = Array.isArray(item.conditionalIncentives)
6084			? item.conditionalIncentives
6085				.map(mapNexusIncentive)
6086				.filter(incentive => incentive !== null && Object.keys(incentive).length > 0)
6087			: [];
6088
6089			item.incentives = Array.isArray(item.incentives)
6090				? item.incentives
6091					.map(mapNexusIncentive)
6092					.filter(incentive => incentive !== null && Object.keys(incentive).length > 0)
6093				: [];
6094		}
6095
6096
6097		let priorityIncentives = item.conditionalIncentives.filter(incentive => {
6098			const desc = (incentive.programDescription || '').toString().toLowerCase();
6099			return desc.includes('military') || desc.includes('college') ||
6100				desc.includes('graduate') || desc.includes('first responder');
6101		});
6102
6103		let otherIncentives = item.conditionalIncentives.filter(incentive => {
6104			const desc = (incentive.programDescription || '').toString().toLowerCase();
6105			return !desc.includes('military') && !desc.includes('college') &&
6106				!desc.includes('graduate') && !desc.includes('first responder');
6107		});
6108
6109		if (priorityIncentives.length === 0)
6110		{
6111			priorityIncentives = item.conditionalIncentives.slice(0, 3);
6112			otherIncentives = otherIncentives.slice(3, otherIncentives.length);
6113		}
6114
6115		const regularIncentives = item.incentives || [];
6116
6117		const remainingIncentivesCount = otherIncentives.length + regularIncentives.length;
6118
6119		item._transformed = {
6120			priorityIncentives,
6121			otherIncentives,
6122			incentives: item.incentives || [],
6123			hasAdditionalIncentives: otherIncentives.length > 0,
6124			remainingIncentivesCount
6125		};
6126
6127		return item;
6128	}
6129
6130    /**
6131     * Live Swiper instances and the observer that lazily creates them, kept so
6132     * the NEXT render can tear them down.
6133     *
6134     * Swiper attaches its drag-tracking listeners (touchmove, pointermove,
6135     * touchend and friends) to document, per instance - it has to, to keep
6136     * tracking a drag that leaves the container. InstantSearch replaces the
6137     * whole results list on every render, so the containers those instances
6138     * were built on are discarded, but the instances themselves - and their
6139     * document-level listeners - were never destroyed. Measured on the live
6140     * i95 SRP: ~220 document/window listeners added per six-character search
6141     * by swiper-bundle alone, none ever removed, 1,873 net after six searches.
6142     * Every tap on the page then runs the whole accumulated chain, which is
6143     * the path WebKit dispatches slowest.
6144     *
6145     * Same shape for the IntersectionObserver: a fresh one per render,
6146     * observing the new cards, with the old one left alive holding the old
6147     * ones. destroy() + disconnect() at the top of the rebuild is the whole
6148     * fix. Not behind a Theme Options switch for the same reason the delegated
6149     * click handlers were not: removing a leak has no behaviour to opt out of.
6150     */
6151    var daSwipers = [];
6152    var daSwiperObserver = null;
6153
6154    /**
6155     * Builds the SRP vehicle image carousel on the vehicle card
6156     *
6157     * @private
6158     */
6159    function _buildSRPImageCarousel() {
6160        // Tear down the previous render's carousels before building this one.
6161        // cleanStyles stays false: the old containers are already detached,
6162        // so restyling them is wasted work.
6163        daSwipers.forEach(function (s) {
6164            try { s.destroy(true, false); } catch (e) { /* already dead is fine */ }
6165        });
6166        daSwipers.length = 0;
6167
6168        if (daSwiperObserver) {
6169            daSwiperObserver.disconnect();
6170        }
6171
6172        // Trim excess slides from EVERY card now, not on first intersection -
6173        // see the note on _limitSlidesPerVehicleCard. The in-intersect call
6174        // below stays as a belt for slides added late by anything else.
6175        _limitSlidesPerVehicleCard();
6176
6177        /**
6178         * b/o: Allow the loading of Swipers when needed and scrolled into view
6179         * using the javascript intersection Observer API
6180         */
6181        const observerOptions = {
6182            root: null,
6183            rootMargin: '0px',
6184            threshold: 0.2 // when 20% of the element is in view proceed with loading the swiper
6185        };
6186
6187        function handleIntersect(entries, observer) {
6188            entries.forEach(entry => {
6189                if (entry.isIntersecting) {
6190                    // Belt for slides added late by anything else, scoped to
6191                    // the one carousel entering view - the unscoped call here
6192                    // re-walked every wrapper on the page per intersecting
6193                    // card, ~576 wrapper scans across one scrolled 24-card
6194                    // page, all duplicating the render-time trim above.
6195                    _limitSlidesPerVehicleCard(entry.target);
6196                    _maybeRemoveSwiperNavigation(entry.target)
6197                    // Initialize Swiper for this container
6198                     daSwipers.push(new Swiper(entry.target, {
6199                        loop: true,
6200                        /**
6201                         * Swiper's default touchAngle is 45 degrees, meaning it claims
6202                         * any drag within 45 degrees of horizontal as a carousel swipe.
6203                         * A thumb flick is rarely perfectly vertical, so on a phone -
6204                         * where these cards fill most of the screen - a large share of
6205                         * scroll attempts get swallowed by the carousel and the page
6206                         * does not move. That reads exactly as "scrolling is stuck".
6207                         *
6208                         * 25 degrees keeps deliberate horizontal swipes working while
6209                         * letting anything steeper scroll the page.
6210                         */
6211                        touchAngle: 25,
6212                        navigation: {
6213                            nextEl: `.swiper-button-next`,
6214                            prevEl: `.swiper-button-prev`
6215                        }
6216                    }));
6217
6218                    observer.unobserve(entry.target);
6219                }
6220            });
6221        }
6222
6223        daSwiperObserver = new IntersectionObserver(handleIntersect, observerOptions);
6224        // Get all of the swipers on the page
6225        let vehicleCardCarousels = document.querySelectorAll('.srp-swiper-vehicles');
6226
6227        vehicleCardCarousels.forEach(slider => {
6228            daSwiperObserver.observe(slider);
6229        });
6230    }
6231
6232    /* b/o: Image Aspect Ratio Fix */
6233
6234    /**
6235     * Calculate a new height based on previous values as well as a new width
6236     *
6237     * @param newWidth the new width of the element to calulcate the height
6238     * @param originalWidth the original width of the item to find aspect ratio
6239     * @param originalHeight the original height of the item to find aspect ratio
6240     * @returns number
6241     */
6242    function calculateHeight(newWidth, originalWidth, originalHeight) {
6243        const aspectRatio = originalWidth / originalHeight;
6244        const newHeight = newWidth / aspectRatio;
6245        return parseFloat(newHeight.toFixed(1));
6246    }
6247
6248    /*
6249     * e/o: Image Aspect Ratio Fix
6250     *
6251     * _debounce/_onResize/_constrainImageAspectRatio were removed here. The
6252     * resize handler measured every card with jQuery .width() and then did
6253     * nothing with the result - the two lines that used it had been commented
6254     * out - so all it did was force a synchronous layout per vehicle card on
6255     * every render. It was also called from onRenderHandler, and each call
6256     * added another window resize listener that was never removed.
6257     *
6258     * It was the single largest remaining cost on this page: 2,863ms of forced
6259     * reflow attributed to jQuery's dimension getter while typing one search.
6260     *
6261     * Note: shortcodes/inventory-widget/sc.inventory-widget.php still carries a
6262     * copy of the same dead pattern.
6263     */
6264
6265	/**
6266	 * Render is deliberately split in two.
6267	 *
6268	 * instantsearch re-renders roughly 1.7 times per keystroke - measured at ten
6269	 * renders for six typed characters on the used-vehicles SRP. The tail of this
6270	 * handler re-initialises against the freshly built card DOM: Swiper carousels,
6271	 * lazy-image observers, SmartPath, and the forms. None of that is incremental
6272	 * state - every one rebuilds from the current result set - so running them on
6273	 * an intermediate render produces work the next keystroke immediately throws
6274	 * away.
6275	 *
6276	 * onRenderImmediate() is everything that keeps what is on screen truthful:
6277	 * result counts, facet container visibility, filter tags. Delaying any of it
6278	 * would leave stale numbers on screen while the user types.
6279	 *
6280	 * onRenderSettled() is everything that re-initialises, trailing-debounced so
6281	 * it runs once when typing stops. 250ms rather than the 100ms used for the
6282	 * search debounce above, because this work is an order of magnitude heavier
6283	 * and none of it is visible state.
6284	 *
6285	 * Gated on Theme Options -> Performance -> "Defer post-render work on the SRP",
6286	 * on by default, with the settle delay configurable there too.
6287	 * ?da-render-split=off still runs both halves inline for this request only, so
6288	 * support can rule it in or out on a live page without changing the setting.
6289	 */
6290	// Floor 100, matching the spinner: its old min of 0 made daTypingActive()
6291	// always false, which switched render-on-settle off while its switch still
6292	// read on. Below about 100ms neither feature does anything useful anyway.
6293	var DA_SETTLE_MS = 250;
6294	var daSettleTimer = null;
6295	var daRenderSplit = true		&& new URLSearchParams(window.location.search).get('da-render-split') !== 'off';
6296
6297	function onRenderHandler()
6298	{
6299		/**
6300		 * Cleared before the mid-burst return on purpose: a timer armed by
6301		 * the last pre-burst render would otherwise fire DURING the typing
6302		 * window the gate below exists to protect - full Swiper rebuild,
6303		 * slide trims, a burned reaper generation, all for a render that
6304		 * never happened. The settled render that follows the held response
6305		 * re-arms it, so nothing is lost by clearing here.
6306		 */
6307		clearTimeout(daSettleTimer);
6308
6309		/**
6310		 * Mid-burst, this render can only be loading-state churn: responses
6311		 * are being held by the render-on-settle gate, so nothing on screen
6312		 * has changed and both halves would run for nothing - measured at
6313		 * ~4.7s of main-thread time across one fast-typed word on the
6314		 * 4x-throttled bench, all of it between keystrokes the user was
6315		 * still typing. The render that matters fires when the held response
6316		 * delivers at settle, and typing is quiet by definition then, so
6317		 * this guard is never true for it.
6318		 */
6319		if (daRenderOnSettle && daTypingActive())
6320		{
6321			return;
6322		}
6323
6324		onRenderImmediate();
6325
6326		if (!daRenderSplit)
6327		{
6328			onRenderSettled();
6329			return;
6330		}
6331
6332		daSettleTimer = setTimeout(onRenderSettled, DA_SETTLE_MS);
6333	}
6334
6335	function onRenderImmediate()
6336	{
6337		// Update smartpath disclaimer
6338		SmartPathDisclaimer("Sale Pending", ".dv-sp-disclaimer");
6339
6340		/**
6341		 * If no card is in the view, and we are not on mobile, scroll to top.
6342		 *
6343		 * Delegated off document and namespaced, because onRenderHandler runs on
6344		 * every render: the previous .click() bound a fresh handler to every
6345		 * refinement label each time, so after N searches a single click ran N
6346		 * copies - N viewport measurements and N scroll animations. Binding once
6347		 * by delegation also survives the labels being replaced on re-render.
6348		 */
6349		var mobile = window.matchMedia("(max-width: 1024px)");
6350		$(document)
6351			.off("click.daSrpScrollTop")
6352			.on("click.daSrpScrollTop", ".ais-RefinementList-label", function() {
6353				if (!$('.listing-container').isInViewport() && !mobile.matches)
6354				{
6355					$("html,body").animate({scrollTop:$(".result-wrapper").offset().top - 200},"1000");
6356				}
6357			});
6358
6359		// Lazy-image observers and the card carousels are built in
6360		// onRenderSettled() - see the note on the split above.
6361
6362		/**
6363		 * Filter panel visibility, by class rather than jQuery show()/hide().
6364		 *
6365		 * jQuery hide() is cheap - it just writes display:none - but show() has to
6366		 * work out the element's default display, which means getComputedStyle
6367		 * against a DOM the render has just dirtied. That is a forced synchronous
6368		 * layout per call, and there are twenty calls here. Measured at 686ms for
6369		 * 34 elements while typing a single search; hide() over the same run cost
6370		 * 1ms. Toggling a class invalidates style without forcing a read.
6371		 *
6372		 * Equivalent because none of these containers is hidden by a stylesheet -
6373		 * every one resolves to display:block from CSS alone, in the parent theme
6374		 * and in every child theme - so removing the class lands them exactly
6375		 * where show() would have.
6376		 */
6377		var daShow = function (sel) { $(sel).removeClass("da-srp-hidden"); };
6378		var daHide = function (sel) { $(sel).addClass("da-srp-hidden"); };
6379
6380		//If a filter list does not have no items in it, be sure it is shown
6381		$(".ais-RefinementList").not(".ais-RefinementList--noRefinement").each(function () {
6382			daShow($(this).parents().eq(1));
6383		});
6384
6385		//Hide any filter list that has no items in it
6386		$(".ais-RefinementList--noRefinement").each(function () {
6387			daHide($(this).parents().eq(1));
6388		});
6389
6390		if ($("#status-list > div > ul").children().length == 1)
6391		{
6392			daHide(".status-container");
6393		}
6394		else
6395		{
6396			daShow(".status-container");
6397		}
6398
6399		if ($("#engine-list > div > ul").children().length == 1)
6400		{
6401			daHide(".engine-container");
6402		}
6403		else
6404		{
6405			daShow(".engine-container");
6406		}
6407
6408		//If a make is selected, show the model filter list.
6409		if ($("#make-list ul li").hasClass("ais-RefinementList-item--selected"))
6410		{
6411			daShow(".model-container");
6412		}
6413		else if ($("#make-list ul li").length > 1)
6414		{
6415			//If a make is not selected, and there is more than one make in the list, hide the model list
6416			daHide(".model-container");
6417		}
6418		else
6419		{
6420			//Only one make is in the list, so keep model list showing, and hide the make list.
6421			daHide(".make-container");
6422		}
6423
6424		//If a model is selected, show the trim filter list.
6425		if ($("#model-list ul li").hasClass("ais-RefinementList-item--selected") || $("#modelCategory-list ul li").hasClass("ais-RefinementList-item--selected"))
6426		{
6427			daShow(".trim-container");
6428		}
6429		else
6430		{
6431			//
6432			daHide(".trim-container");
6433		}
6434
6435		//If a truck is selected, show the cab/bed filter list.
6436		var child = $(".srp-Truck");
6437
6438		if ($(child).parent().parent().parent().hasClass("ais-RefinementList-item--selected"))
6439		{
6440			daShow(".bed-container, .cab-container");
6441		}
6442		else{
6443			daHide(".bed-container, .cab-container");
6444		}
6445
6446		//Show bed and cab info if Model name of truck is selected
6447		if($("#body-list div > ul").find("li").length === 1){
6448			if ($(child).parent().parent().parent().hasClass("ais-RefinementList-item"))
6449			{
6450				daShow(".bed-container, .cab-container");
6451			}
6452			else{
6453				daHide(".bed-container, .cab-container");
6454			}
6455		}
6456
6457		if ($(".fuel-container input[value='Electric']").is(":checked"))
6458		{
6459			$(".range.container").show();
6460		}
6461		else
6462		{
6463			$(".range-container").hide();
6464		}
6465
6466		/**
6467		 * Change mobile filter bar color when a filter is selected.
6468		 *
6469		 * Delegated and namespaced for the same reason as the scroll-top handler
6470		 * above: .click() bound a fresh handler on every render, so after N renders
6471		 * one tap ran N copies. Typing six characters is ten renders.
6472		 */
6473		$(document)
6474			.off("click.daSrpFilterBar")
6475			.on("click.daSrpFilterBar", ".ais-RefinementList-item", function () {
6476				$('.showFiltersNonLegacy').css('background-color', '#000000');
6477				$('.showFiltersNonLegacy').css('color', '#FFFFFF');
6478			});
6479
6480		//Results X of X Text
6481		if(parseInt($("#numberHits").text().replace(/,/g,''), 10) < 24)
6482		{
6483			$('#hitsPage').text($("#numberHits").text());
6484		}
6485		else if (parseInt($('.ais-Pagination-item--selected > .ais-Pagination-link').attr('aria-label'), 10) > 1)
6486		{
6487			var page = parseInt($('.ais-Pagination-item--selected > .ais-Pagination-link').attr('aria-label'), 10);
6488			var hits = 24 * (page - 1);
6489			$('#hitsStart').text(hits);
6490			var hitsOnPage = parseInt($('#numberHits').text().replace(/,/g,''), 10);
6491			if ((hitsOnPage - (hits)) < 24)
6492			{
6493				$('#hitsPage').text(hitsOnPage);
6494			}
6495			else
6496			{
6497				$('#hitsPage').text((hits) + 24);
6498			}
6499		}
6500		else
6501		{
6502			$("#hitsStart").text(1);
6503			$("#hitsPage").text(24);
6504		}
6505
6506
6507		//Deselection of facets based on hierarchy - delegated, same reasoning as above.
6508		$(document)
6509			.off("click.daSrpFacetHierarchy")
6510			.on("click.daSrpFacetHierarchy", "#make-list ul li, #trim-list ul li, #model-list ul li", function () {
6511				if ($(this).hasClass("ais-RefinementList-item--selected")) {
6512					userInteractedWithFacets = true;
6513					checkAndRemoveFacets();
6514				}
6515			});
6516
6517		// $(".srp-integrations-video").click(function() {
6518		// 	showVideo(event, $(this).attr('data-video-url'));
6519		// });
6520
6521		//Hide filter tags if there are no current selected filters
6522		if ($("#filterTags .ais-CurrentRefinements-list").has('li').length == 0)
6523		{
6524			$("#filterTags").hide();
6525			$(".dv-srp-filter-clear-btn").hide();
6526			$(".dv-srp-filter-tags").hide();
6527		}
6528		else
6529		{
6530			$("#filterTags").show();
6531			$(".dv-srp-filter-clear-btn").css('display', 'inline-flex');
6532			$(".dv-srp-filter-tags").show();
6533		}
6534
6535			}
6536
6537	/**
6538	 * Watch an image for the moment it can first paint.
6539	 *
6540	 * <img> exposes only load and error, and both fire when the LAST byte arrives.
6541	 * naturalWidth, by contrast, becomes non-zero as soon as the browser has parsed
6542	 * the image header - well before the download finishes, and the point from which
6543	 * it has both dimensions and pixels to draw. That is the closest thing the
6544	 * platform gives us to a "started rendering" signal.
6545	 *
6546	 * It is also exactly when the CSS placeholder box stops being needed: until
6547	 * naturalWidth is known the image cannot size itself, and after it can. So the
6548	 * same signal clears the spinner and releases the reserved box.
6549	 *
6550	 * One shared rAF loop rather than a timer per image: a 24-card page has ~120
6551	 * images in flight, and this is one callback per frame instead of 120.
6552	 */
6553	var daPainting = [];
6554	var daPaintRaf = null;
6555
6556	function daPaintTick()
6557	{
6558		for (var i = daPainting.length - 1; i >= 0; i--)
6559		{
6560			var watch = daPainting[i];
6561
6562			if (!watch.img.isConnected || watch.img.naturalWidth > 0)
6563			{
6564				daPainting.splice(i, 1);
6565				watch.done();
6566			}
6567		}
6568
6569		daPaintRaf = daPainting.length ? requestAnimationFrame(daPaintTick) : null;
6570	}
6571
6572	function daWatchFirstPaint(img, done)
6573	{
6574		daPainting.push({ img: img, done: done });
6575
6576		if (daPaintRaf === null)
6577		{
6578			daPaintRaf = requestAnimationFrame(daPaintTick);
6579		}
6580	}
6581
6582	/**
6583	 * Trailing-debounced half of the render.
6584	 *
6585	 * Everything here re-initialises against the freshly rendered cards and
6586	 * rebuilds from the current result set, so running it once after typing stops
6587	 * is equivalent to running it on every intermediate render - minus the work
6588	 * that was being discarded. Anything added here must be idempotent.
6589	 */
6590	function onRenderSettled()
6591	{
6592		/**
6593		 * A settled render is a listener generation boundary.
6594		 *
6595		 * The reaper (template/partials/observer-governor.php, on by default)
6596		 * tracks document-level listeners bound by vendors that re-decorate the
6597		 * cards on every render and never unbind - dg-inline-save-heart being
6598		 * the measured one. Telling it a render settled lets it retire the
6599		 * batches serving cards that no longer exist. No-op when the partial
6600		 * did not emit the reaper.
6601		 */
6602		if (window.DAListenerReaper)
6603		{
6604			window.DAListenerReaper.advance();
6605		}
6606
6607		//Image lazy loading
6608		var lazyImages = [].slice.call(document.querySelectorAll("img.lazy"));
6609		if ("IntersectionObserver" in window)
6610		{
6611			let lazyImageObserver = new IntersectionObserver(function (entires, observer) {
6612				entires.forEach(function (entry) {
6613					if (entry.isIntersecting)
6614					{
6615						let lazyImage = entry.target;
6616
6617						/**
6618						 * Clear the Swiper preloader once the image resolves.
6619						 *
6620						 * Bound BEFORE src is assigned: a cached image can fire load
6621						 * synchronously on assignment, and a listener attached after
6622						 * that would never run - leaving the spinner going forever.
6623						 *
6624						 * Error is handled too. A dead image URL should show the
6625						 * browser's own broken state rather than spin indefinitely,
6626						 * which at least reads as 'failed' instead of 'still trying'.
6627						 */
6628						let clearPreloader = function () {
6629							let slide = lazyImage.parentElement;
6630							let preloader = slide && slide.querySelector(".swiper-lazy-preloader");
6631
6632							if (preloader)
6633							{
6634								preloader.remove();
6635							}
6636
6637							lazyImage.classList.remove("da-img-loading");
6638						};
6639
6640						lazyImage.addEventListener("load", clearPreloader, { once: true });
6641						lazyImage.addEventListener("error", clearPreloader, { once: true });
6642
6643						lazyImage.src = lazyImage.dataset.src;
6644
6645						/**
6646						 * Hand the reserved box from .lazy to .da-img-loading rather
6647						 * than dropping it here.
6648						 *
6649						 * Removing .lazy on its own released the placeholder box the
6650						 * instant src was assigned - before a single byte had arrived,
6651						 * so the image still had no intrinsic size and the slide
6652						 * collapsed back to its 16px alt-text line box. The spinner
6653						 * centres on the slide, so it visibly jumped to the top and
6654						 * then returned once the photo landed.
6655						 *
6656						 * .da-img-loading keeps the box but not the visibility:hidden,
6657						 * so a progressive image paints as it arrives instead of
6658						 * appearing all at once at the end.
6659						 */
6660						lazyImage.classList.remove("lazy");
6661						lazyImage.classList.add("da-img-loading");
6662
6663						daWatchFirstPaint(lazyImage, clearPreloader);
6664
6665						lazyImageObserver.unobserve(lazyImage);
6666					}
6667				});
6668			});
6669
6670			lazyImages.forEach(function (lazyImage) {
6671				lazyImageObserver.observe(lazyImage);
6672			});
6673		}
6674
6675		// Initialize vehicle images carousel
6676		_buildSRPImageCarousel();
6677
6678		
6679		//Disable then reenabled the forms.
6680		disableForms();
6681
6682		initForms();
6683
6684		
6685		//SD Analytics
6686		if (haveSdAnalytics && typeof(sd) !== "undefined")
6687		{
6688			var numberHits = $("#numberHits").text();
6689
6690			if (numberHits === '0' || numberHits === "") {
6691
6692				if (sdInitialFilterSearchSent) {
6693					sd('dataLayer', {
6694						formType: getSDFormType($(".gform_title", $(".popup_form#srp_form_container")).text(), $(".popup_form#srp_form_container form")[0]),
6695						displayType: 'modal',
6696						events: 'formShown'
6697					});
6698					sd('send');
6699				} else {
6700					sdFormShownPending = true;
6701				}
6702
6703				/**
6704				 * Delegated and namespaced so re-running this branch replaces the
6705				 * handler instead of stacking another one. See sdFormInitHandled
6706				 * at the top of the file for what the stacking actually cost.
6707				 *
6708				 * Bound off document rather than the wrapper because the form markup
6709				 * is replaced when the modal is rebuilt, which would strip a handler
6710				 * bound directly to the inputs.
6711				 */
6712				sdFormInitHandled = false;
6713
6714				$(document)
6715					.off("click.daSrpSdFormInit")
6716					.on("click.daSrpSdFormInit", ".gform_wrapper input", function () {
6717						if (sdFormInitHandled)
6718						{
6719							return;
6720						}
6721
6722						sendShiftDigitalFormEvent({
6723							formType: getSDFormType($(".gform_title", $(".popup_form#srp_form_container")).text(), $(".popup_form#srp_form_container form")[0]),
6724							displayType: 'modal',
6725							eventName: 'formInitiation'
6726						});
6727
6728						sdFormInitHandled = true;
6729					});
6730
6731				$(document)
6732					.off("input.daSrpSdField change.daSrpSdField")
6733					.on("input.daSrpSdField change.daSrpSdField", ".gform_wrapper input, .gform_wrapper textarea, .gform_wrapper select", function () {
6734						if (shouldTrackShiftDigitalFieldInteraction(this))
6735						{
6736							sendShiftDigitalFormEvent({
6737								formType: getSDFormType($(".gform_title", $(".popup_form#srp_form_container")).text(), $(".popup_form#srp_form_container form")[0]),
6738								displayType: 'modal',
6739								eventName: 'formFieldInteraction',
6740								fieldTarget: this
6741							});
6742						}
6743					});
6744			}
6745
6746		}
6747	}
6748
6749	
6750search.on('render', onRenderHandler);
6751search.on('render', handleSdSrpRenderAnalytics);
6752
6753/**
6754 * Tell governed third parties a render happened, rather than leaving them to
6755 * infer it from thousands of mutation records. See
6756 * template/partials/observer-governor.php - a no-op if that is not loaded.
6757 *
6758 * Second argument stays false: the sentinel wakes anything that rescans the DOM
6759 * on its own, which covers the vendors currently governed. Only pass true for a
6760 * vendor that reads addedNodes to find new content, and verify it there first.
6761 */
6762search.on('render', function () {
6763    if (window.DAObserverGovernor) {
6764        window.DAObserverGovernor.notify('#srp-results', false);
6765    }
6766});
6767
6768search.on('render', (() => {
6769  let timer;
6770  return () => {
6771    clearTimeout(timer);
6772    timer = setTimeout(() => {
6773      document.dispatchEvent(new CustomEvent('srp:renderStart'));
6774      // give time for the instantsearch lib to render
6775      requestAnimationFrame(() => {
6776        document.dispatchEvent(new CustomEvent('srp:renderComplete'));
6777      });
6778    }, 200);
6779  };
6780})());
6781
6782searchClient.search([{indexName: indexName, params: {query: '', hitsPerPage: 0, facets: ['exteriorHex']}}])
6783	.then(function(res) {
6784		var colorAttr = (res.results[0].facets && res.results[0].facets['exteriorHex']) ? 'exteriorHex' : 'genericColor';
6785		search.addWidget(instantsearch.widgets.refinementList({
6786			container: '#color-list',
6787			attribute: colorAttr,
6788			operator: 'or',
6789			// Swatches opt out of daFacetLimit - a Show more button would land
6790			// inside the flex grid - but still need a limit over the default 10.
6791			limit: 100000,
6792			templates: { item: "<i style=\"background: {{value}};\" class=far fa-check\"></i>" }
6793		}));
6794		search.start();
6795	})
6796	.catch(function() {
6797		search.addWidget(instantsearch.widgets.refinementList({
6798			container: '#color-list',
6799			attribute: 'genericColor',
6800			operator: 'or',
6801			limit: 100000,
6802			templates: { item: "<i style=\"background: {{value}};\" class=far fa-check\"></i>" }
6803		}));
6804		search.start();
6805	});
6806
6807/**
6808 * Mobile keyboard affordances for the search box.
6809 *
6810 * InstantSearch renders the field itself, so these are applied after start().
6811 * Two problems on a phone: the Return key had no clear meaning, and once the
6812 * keyboard was up there was no obvious way down - the field sits near the top
6813 * of the page with no surrounding tappable dead space.
6814 *
6815 *  - enterkeyhint labels the Return key "Search" on iOS and Android.
6816 *  - Submitting blurs, so Return actually closes the keyboard. InstantSearch
6817 *    already suppresses the form's default submit, so nothing navigates.
6818 *  - Scrolling the results blurs too. This is the usual mobile search pattern:
6819 *    once you scroll, you are reading results rather than typing. Gated on a
6820 *    real scroll distance so a stray pixel of movement does not dismiss it,
6821 *    and on touch input so desktop is unaffected.
6822 */
6823function daSetupSearchBoxKeyboard() {
6824    var searchInput = document.querySelector('#searchbox .ais-SearchBox-input');
6825
6826    // Depending on the branch above, start() happens inside a promise, so the
6827    // field may not exist yet. Bound off 'render' and guarded, rather than run
6828    // inline - an earlier inline version silently did nothing for exactly this
6829    // reason, and looked like it worked because InstantSearch blurs on submit
6830    // by itself.
6831    if (!searchInput || searchInput.dataset.daKeyboardReady) {
6832        return;
6833    }
6834
6835    searchInput.dataset.daKeyboardReady = '1';
6836    searchInput.setAttribute('enterkeyhint', 'search');
6837
6838    if (window.matchMedia('(hover: none)').matches) {
6839        // Anchor on focus, not on the first scroll event. Anchoring on the first
6840        // event measures the delta from wherever that event already landed, which
6841        // is zero for anything but a slow drag.
6842        var scrollAnchor = null;
6843
6844        /**
6845         * Only a scroll the user actually drove should dismiss the keyboard.
6846         *
6847         * The first version of this compared scroll distance alone, which broke
6848         * tapping the field on iOS whenever the page was scrolled even slightly.
6849         * Focusing an input on iOS makes the BROWSER scroll: the keyboard shrinks
6850         * the visual viewport, and a collapsed address bar expands. Both move
6851         * window.scrollY well past this threshold within a frame or two of focus,
6852         * so the handler blurred the field the moment it was tapped. It worked at
6853         * the very top of the page only because there was nothing to adjust.
6854         *
6855         * A drag produces touchmove. Browser-driven scroll does not, so requiring
6856         * a recent touchmove separates the two. Anything else re-anchors instead
6857         * of dismissing, which also covers the keyboard opening mid-session.
6858         */
6859        var lastTouchMove = 0;
6860
6861        document.addEventListener('touchmove', function () {
6862            lastTouchMove = Date.now();
6863        }, { passive: true });
6864
6865        searchInput.addEventListener('focus', function () {
6866            scrollAnchor = window.scrollY;
6867        });
6868
6869        searchInput.addEventListener('blur', function () {
6870            scrollAnchor = null;
6871        });
6872
6873        // Keyboard show/hide relays out the page. Re-anchor rather than reading it
6874        // as the shopper scrolling away from the field.
6875        if (window.visualViewport) {
6876            window.visualViewport.addEventListener('resize', function () {
6877                if (scrollAnchor !== null) {
6878                    scrollAnchor = window.scrollY;
6879                }
6880            });
6881        }
6882
6883        window.addEventListener('scroll', function () {
6884            if (scrollAnchor === null || document.activeElement !== searchInput) {
6885                return;
6886            }
6887
6888            if (Date.now() - lastTouchMove > 500) {
6889                scrollAnchor = window.scrollY;
6890                return;
6891            }
6892
6893            if (Math.abs(window.scrollY - scrollAnchor) > 40) {
6894                searchInput.blur();
6895            }
6896        }, { passive: true });
6897    }
6898}
6899
6900search.on('render', daSetupSearchBoxKeyboard);
6901daSetupSearchBoxKeyboard();
6902
6903$.fn.isInViewport = function() {
6904    var elementTop = $(this).offset().top;
6905    var elementBottom = elementTop + $(this).outerHeight();
6906
6907    var viewportTop = $(window).scrollTop();
6908    var viewportBottom = viewportTop + $(window).height();
6909
6910    return elementBottom > viewportTop && elementTop < viewportBottom;
6911};
6912
6913/**
6914 * Reads the current InstantSearch helper state for the supported Shift Digital
6915 * filterSearch fields and returns a pipe-delimited value string.
6916 *
6917 * We intentionally read from the live helper refinements instead of the URL
6918 * because the router can lag one render behind on select/deselect interactions.
6919 *
6920 * @param {object} state
6921 * @param {string[]} keys
6922 * @returns {string}
6923 */
6924function getSdStateFilterValues(state, keys) {
6925	var refinementSources = [
6926		state.disjunctiveFacetsRefinements || {},
6927		state.facetsRefinements || {},
6928		state.hierarchicalFacetsRefinements || {}
6929	];
6930
6931	for (var sourceIndex = 0; sourceIndex < refinementSources.length; sourceIndex++) {
6932		var source = refinementSources[sourceIndex];
6933
6934		for (var keyIndex = 0; keyIndex < keys.length; keyIndex++) {
6935			var key = keys[keyIndex];
6936			var values = source[key];
6937
6938			if (!values) {
6939				continue;
6940			}
6941
6942			if (!Array.isArray(values)) {
6943				values = [values];
6944			}
6945
6946			values = values.filter(Boolean);
6947
6948			if (values.length > 0) {
6949				return values.join("|");
6950			}
6951		}
6952	}
6953
6954	return "All";
6955}
6956
6957/**
6958 * Reads a numeric range slider value from the InstantSearch helper state,
6959 * falling back to the facet stats (full inventory bounds) when the user
6960 * has not moved the slider.
6961 *
6962 * @param {object} helperState  search.helper.state
6963 * @param {string} attribute    The Algolia attribute name (e.g. 'rangeSliderPrice', 'yr')
6964 * @param {function|null} formatter  Optional formatter for min/max values
6965 * @returns {string}
6966 */
6967function getSdNumericRangeValue(helperState, attribute, formatter) {
6968	var refinements = (helperState.numericRefinements || {})[attribute] || {};
6969	var stats = {};
6970
6971	if (search.helper && search.helper.lastResults && search.helper.lastResults.disjunctiveFacets) {
6972		var facet = search.helper.lastResults.disjunctiveFacets.find(function(f) { return f.name === attribute; });
6973		if (facet && facet.stats) {
6974			stats = facet.stats;
6975		}
6976	}
6977
6978	var min = refinements[">="] ? refinements[">="][0] : (stats.min != null ? stats.min : null);
6979	var max = refinements["<="] ? refinements["<="][0] : (stats.max != null ? stats.max : null);
6980
6981	if (min === null && max === null) {
6982		return "All";
6983	}
6984
6985	if (formatter) {
6986		return formatter(min) + " - " + formatter(max);
6987	}
6988
6989	return min + " - " + max;
6990}
6991
6992/**
6993 * Returns the year for the Shift Digital filterSearch payload.
6994 *
6995 * Shift Digital wants a single year only when the shopper has actually narrowed
6996 * to one. Every "more than one year is showing" case reports "All" - including a
6997 * year slider spanning a range, which previously reported a shared "2015 - 2026"
6998 * string that read as two values in one prop.
6999 *
7000 * @param {object} helperState  search.helper.state
7001 * @returns {string}
7002 */
7003function getSdYearValue(helperState) {
7004	var yearFacetSelection = getSdStateFilterValues(helperState, ["year", "yr"]);
7005
7006	if (yearFacetSelection !== "All") {
7007		return yearFacetSelection.indexOf("|") === -1 ? yearFacetSelection : "All";
7008	}
7009
7010	// Only a slider collapsed onto one year counts as picking a year.
7011	var sliderRefinements = (helperState.numericRefinements || {})["yr"] || {};
7012	var min = sliderRefinements[">="] ? sliderRefinements[">="][0] : null;
7013	var max = sliderRefinements["<="] ? sliderRefinements["<="][0] : null;
7014
7015	if (min !== null && max !== null && Number(min) === Number(max)) {
7016		return String(Math.round(min));
7017	}
7018
7019	return "All";
7020}
7021
7022/**
7023 * Returns the min and max price as plain integers for the Shift Digital
7024 * filterSearch payload. Checks finalPriceRange bucket selections first,
7025 * then falls back to the rangeSliderPrice numeric refinements, then to
7026 * the full facet stats (inventory bounds) when no filter is active.
7027 *
7028 * @returns {{min: number|null, max: number|null}}
7029 */
7030function getSdPriceBounds(helperState) {
7031	var refinementSources = [
7032		helperState.disjunctiveFacetsRefinements || {},
7033		helperState.facetsRefinements || {}
7034	];
7035
7036	for (var i = 0; i < refinementSources.length; i++) {
7037		var buckets = refinementSources[i]["finalPriceRange"];
7038		if (buckets && buckets.length > 0) {
7039			var vals = Array.isArray(buckets) ? buckets : [buckets];
7040			var mins = [];
7041			var maxes = [];
7042
7043			vals.forEach(function(bucket) {
7044				var s = bucket.replace(/[$,]/g, '');
7045				var below = s.match(/^(\d+)\s+and\s+Below$/i);
7046				var above = s.match(/^(\d+)\s+and\s+Up$/i);
7047				var range = s.match(/^(\d+)\s+-\s+(\d+)$/);
7048
7049				if (below)      { mins.push(0);                    maxes.push(parseInt(below[1], 10)); }
7050				else if (above) { mins.push(parseInt(above[1], 10)); }
7051				else if (range) { mins.push(parseInt(range[1], 10)); maxes.push(parseInt(range[2], 10)); }
7052			});
7053
7054			if (mins.length > 0 || maxes.length > 0) {
7055				return {
7056					min: mins.length > 0 ? Math.min.apply(null, mins) : null,
7057					max: maxes.length > 0 ? Math.max.apply(null, maxes) : null
7058				};
7059			}
7060		}
7061	}
7062
7063	var sliderRefinements = (helperState.numericRefinements || {})["rangeSliderPrice"] || {};
7064	var stats = {};
7065
7066	if (search.helper && search.helper.lastResults && search.helper.lastResults.disjunctiveFacets) {
7067		var priceFacet = search.helper.lastResults.disjunctiveFacets.find(function(f) {
7068			return f.name === "rangeSliderPrice";
7069		});
7070		if (priceFacet && priceFacet.stats) {
7071			stats = priceFacet.stats;
7072		}
7073	}
7074
7075	var min = sliderRefinements[">="] ? sliderRefinements[">="][0] : (stats.min != null ? stats.min : null);
7076	var max = sliderRefinements["<="] ? sliderRefinements["<="][0] : (stats.max != null ? stats.max : null);
7077
7078	return {
7079		min: min !== null ? Math.round(min) : null,
7080		max: max !== null ? Math.round(max) : null
7081	};
7082}
7083
7084/**
7085 * Builds the Shift Digital filterSearch payload from the current InstantSearch
7086 * helper state.
7087 *
7088 * This keeps supported facet values in sync with the interaction that triggered
7089 * the render instead of relying on URL parameters that may still reflect the
7090 * previous refinement state.
7091 *
7092 * @returns {{status: string, minPrice: number|null, maxPrice: number|null, year: string, mileage: string, make: string, model: string, color: string, trim: string, bodyStyle: string, features: string, drivetrain: string}}
7093 */
7094function buildSdFilterSearchPayload() {
7095	var helperState = search.helper && search.helper.state ? search.helper.state : {};
7096	var status = "All";
7097	var certificationRefinements = getSdStateFilterValues(helperState, ["flags.type"]);
7098
7099	if (certificationRefinements !== "All") {
7100		var selectedCount = certificationRefinements.split("|").length;
7101		var totalCount = 0;
7102
7103		if (search.helper && search.helper.lastResults) {
7104			var facetValues = search.helper.lastResults.getFacetValues("flags.type");
7105			if (Array.isArray(facetValues)) {
7106				totalCount = facetValues.length;
7107			}
7108		}
7109
7110		if (totalCount > 0 && selectedCount >= totalCount) {
7111			status = "Mixed";
7112		} else {
7113			status = "CPO";
7114		}
7115	} else if (srpCondition) {
7116		status = srpCondition;
7117	}
7118
7119	/**
7120	 * Handle price, year, and mileage as special cases since they can be either a range facet refinement or a numeric slider refinement depending on how the user has interacted with the filters.
7121	 */
7122	var priceBounds = getSdPriceBounds(helperState);
7123	var year = getSdYearValue(helperState);
7124
7125	var mileageRangeSelection = getSdStateFilterValues(helperState, ["mileageRange"]);
7126	var mileage = mileageRangeSelection !== "All" ? mileageRangeSelection : getSdNumericRangeValue(helperState, "mileage", function(v) { return Number(v).toLocaleString(); });
7127
7128	return {
7129		status: status,
7130		minPrice: priceBounds.min,
7131		maxPrice: priceBounds.max,
7132		year: year,
7133		mileage: mileage,
7134		make: getSdStateFilterValues(helperState, ["make"]),
7135		model: getSdStateFilterValues(helperState, ["model"]),
7136		color: getSdStateFilterValues(helperState, ["genericColor", "generic_color"]),
7137		trim: getSdStateFilterValues(helperState, ["trim"]),
7138		bodyStyle: getSdStateFilterValues(helperState, ["body"]),
7139		features: getSdStateFilterValues(helperState, ["features"]),
7140		drivetrain: getSdStateFilterValues(helperState, ["drivetrain"])
7141	};
7142}
7143
7144/**
7145 * Creates a stable signature for the current search helper state so we can
7146 * detect real SRP refinement changes across renders.
7147 *
7148 * This is used only as change detection. The actual Shift Digital payload is
7149 * still built separately from the supported helper refinements.
7150 *
7151 * @returns {string}
7152 */
7153function buildSdSearchStateSignature() {
7154	if (!search.helper || !search.helper.state) {
7155		return JSON.stringify({
7156			query: "",
7157			disjunctiveFacetsRefinements: {},
7158			facetsRefinements: {},
7159			hierarchicalFacetsRefinements: {},
7160			numericRefinements: {}
7161		});
7162	}
7163
7164	return JSON.stringify({
7165		query: search.helper.state.query || "",
7166		disjunctiveFacetsRefinements: search.helper.state.disjunctiveFacetsRefinements || {},
7167		facetsRefinements: search.helper.state.facetsRefinements || {},
7168		hierarchicalFacetsRefinements: search.helper.state.hierarchicalFacetsRefinements || {},
7169		numericRefinements: search.helper.state.numericRefinements || {}
7170	});
7171}
7172
7173/**
7174 * Builds a signature of only the facet/numeric refinement state (excludes
7175 * the search query) so facet-only changes can be distinguished from
7176 * query-only changes.
7177 *
7178 * @returns {string}
7179 */
7180function buildSdFacetStateSignature() {
7181	if (!search.helper || !search.helper.state) {
7182		return JSON.stringify({
7183			disjunctiveFacetsRefinements: {},
7184			facetsRefinements: {},
7185			hierarchicalFacetsRefinements: {},
7186			numericRefinements: {}
7187		});
7188	}
7189
7190	return JSON.stringify({
7191		disjunctiveFacetsRefinements: search.helper.state.disjunctiveFacetsRefinements || {},
7192		facetsRefinements: search.helper.state.facetsRefinements || {},
7193		hierarchicalFacetsRefinements: search.helper.state.hierarchicalFacetsRefinements || {},
7194		numericRefinements: search.helper.state.numericRefinements || {}
7195	});
7196}
7197
7198/**
7199 * Sends the SRP pageview and filterSearch payload to Shift Digital for the
7200 * current search state.
7201 *
7202 * @returns {void}
7203 */
7204function sendSdSrpPageViewAndFilterSearch() {
7205	sd('dataLayer', {
7206		pageType: 'Vehicle Listing',
7207		websiteTier: 'Tier 3',
7208		pageBrand: 'Toyota',
7209		sessionId: (window.daSessionId ? window.daSessionId() : ''),
7210		language: 'en', //note(ethan): need to change this to allow translations
7211		trafficType: 'Organic Search',
7212		dealerZipCode: '15108',
7213		dealerState: 'PA',
7214		dealerCity: 'Moon Township',
7215		dealerName: 'Brewer Airport Toyota',
7216		dealerTda: 'CAT10',
7217		siteTechnologyVersion: '2.0031',
7218		userZipCode: '', //note(ethan): add user location
7219		userCity: '',
7220		userState: ''
7221	});
7222	sd('send', 'pageview');
7223
7224	sd('dataLayer', {
7225		countSearchResults: $("#numberHits").text(),
7226		filterSearch: buildSdFilterSearchPayload(),
7227		events: 'filterSearch'
7228	});
7229	sd('send');
7230}
7231
7232/**
7233 * Sends the pageview and filterSearch owed to a query-only search.
7234 *
7235 * Called straight after typedSearch so Shift Digital sees
7236 * typedSearch -> pageview -> filterSearch, and off a timer when the query
7237 * changed without anything being typed.
7238 *
7239 * @returns {void}
7240 */
7241function flushSdQueryAnalytics() {
7242	clearTimeout(sdQueryAnalyticsTimer);
7243	sdQueryAnalyticsTimer = null;
7244
7245	if (!sdQueryAnalyticsPending) {
7246		return;
7247	}
7248
7249	sdQueryAnalyticsPending = false;
7250	sendSdSrpPageViewAndFilterSearch();
7251}
7252
7253/**
7254 * Watches InstantSearch render cycles and dispatches Shift Digital analytics
7255 * only when the underlying helper state has actually changed.
7256 *
7257 * The helper state signature prevents duplicate sends on unrelated renders
7258 * while still allowing select and deselect facet actions to be tracked.
7259 *
7260 * Facet changes send immediately. Query changes defer to flushSdQueryAnalytics
7261 * so typedSearch keeps its place at the front of the sequence.
7262 *
7263 * @returns {void}
7264 */
7265function handleSdSrpRenderAnalytics() {
7266	if (!(haveSdAnalytics && typeof(sd) !== "undefined")) {
7267		return;
7268	}
7269
7270	if (!search.helper || !search.helper.lastResults) {
7271		return;
7272	}
7273
7274	var nextSdSearchStateSignature = buildSdSearchStateSignature();
7275	var nextSdFacetStateSignature = buildSdFacetStateSignature();
7276	var nextSdQuery = search.helper.state.query || "";
7277
7278	if (lastSdSearchStateSignature === null) {
7279		lastSdSearchStateSignature = nextSdSearchStateSignature;
7280		lastSdFacetStateSignature = nextSdFacetStateSignature;
7281		lastSdQuery = nextSdQuery;
7282		return;
7283	}
7284
7285	var facetsChanged = nextSdFacetStateSignature !== lastSdFacetStateSignature;
7286	var queryChanged = nextSdQuery !== lastSdQuery;
7287	lastSdSearchStateSignature = nextSdSearchStateSignature;
7288	lastSdFacetStateSignature = nextSdFacetStateSignature;
7289	lastSdQuery = nextSdQuery;
7290
7291	if (facetsChanged) {
7292		// The facet send carries the current query too, so one send covers both.
7293		sdQueryAnalyticsPending = false;
7294		clearTimeout(sdQueryAnalyticsTimer);
7295		sdQueryAnalyticsTimer = null;
7296
7297		var deferAnalyticsUpdate = window.requestIdleCallback || function(callback) {
7298			setTimeout(callback, 0);
7299		};
7300
7301		deferAnalyticsUpdate(function () {
7302			sendSdSrpPageViewAndFilterSearch();
7303		});
7304
7305		return;
7306	}
7307
7308	if (queryChanged) {
7309		sdQueryAnalyticsPending = true;
7310		clearTimeout(sdQueryAnalyticsTimer);
7311		sdQueryAnalyticsTimer = setTimeout(flushSdQueryAnalytics, 1200);
7312	}
7313}
7314
7315$(document).ready(function () {
7316
7317		// srp filter toggle buttons
7318		$(".srp-panel-toggle > span").click(function () {
7319			$(this).siblings("div").slideToggle("slow");
7320			$(this).find("a > i").toggleClass("chevron-flip");
7321		});
7322
7323		$(document).on("input", ".ais-SearchBox-input", function() {
7324			clearTimeout(searchChangedTimer);
7325			searchChangedTimer = setTimeout(function() {
7326				if (haveSdAnalytics && typeof(sd) !== "undefined") {
7327					sd('dataLayer', {
7328						typedSearchContent: $(".ais-SearchBox-input").val().replace(/ /g, "|"),
7329						events: 'typedSearch'
7330					});
7331					sd('send');
7332
7333					// typedSearch is out the door, so the query's pageview and
7334					// filterSearch can follow it.
7335					flushSdQueryAnalytics();
7336				}
7337			}, 800);
7338		});
7339
7340		$(".showFiltersNonLegacy").click(function() {
7341			toggleFilters();
7342		});
7343
7344		$(".srp-filters-close-btn, .filterResultCount, .srpFilterResultCount").click(function() {
7345			toggleFilters();
7346		});
7347
7348		//Close mobile filters when a search is entered
7349		$('input[type=search]').on('search', function () {
7350			if ($('.side-panel-container').hasClass('mobileFilters'))
7351			{
7352				toggleFilters();
7353			}
7354		});
7355
7356		// Clear filters and set the filters bar back to the normal color
7357		$("#dv-srp-clear-filters, #srp-filters-reset-btn").click(function() {
7358			search.helper.setQuery('').search();
7359		});
7360
7361		// Clear Search bar
7362		$("#clearSearchResults").click(function() {
7363			document.querySelector('#clearSearchResults').style.display = "none";
7364			search.helper.setQuery('').search();
7365		});
7366
7367		var placeholderText = [
7368					];
7369
7370		var placeholderTextVoice = [
7371							"Listening, Say \"Show Me a Red " + new Date().getFullYear() + " Toyota with Navigation\"",
7372					];
7373
7374		//Change mobile filters bar when text is typed in the searchbar
7375		$('.ais-SearchBox-input').change(function () {
7376			$('.showFiltersNonLegacy').css('background-color', '#000000');
7377			$('.showFiltersNonLegacy').css('color', '#FFFFFF');
7378		})
7379
7380		//Make vehicle cars click into the VDP
7381        $(document.body).on("click", ".car-title, .srp-slider-buttons, .srp-click-image", function (e) {
7382            var vehicle_url = $(this).parents(".listing-container").attr("data-url")
7383            if (vehicle_url) {
7384                window.location = vehicle_url;
7385            } else {
7386                console.warn("`vehicle_url` was not found on the .listing-container");
7387            }
7388        });
7389
7390		
7391			$('.year-container > div').slideToggle("slow");
7392			$(".year-container > span > a > i").toggleClass("chevron-flip");
7393
7394			
7395			$('.pricerange-container > div').slideToggle("slow");
7396			$(".pricerange-container > span > a > i").toggleClass("chevron-flip");
7397
7398			
7399			$('.mileagerange-container > div').slideToggle("slow");
7400			$(".mileagerange-container > span > a > i").toggleClass("chevron-flip");
7401
7402			
7403			$('.body-container > div').slideToggle("slow");
7404			$(".body-container > span > a > i").toggleClass("chevron-flip");
7405
7406			
7407			$('.fuel-container > div').slideToggle("slow");
7408			$(".fuel-container > span > a > i").toggleClass("chevron-flip");
7409
7410			
7411			$('.transmission-container > div').slideToggle("slow");
7412			$(".transmission-container > span > a > i").toggleClass("chevron-flip");
7413
7414			
7415			$('.color-container > div').slideToggle("slow");
7416			$(".color-container > span > a > i").toggleClass("chevron-flip");
7417
7418			
7419			$('.drivetrain-container > div').slideToggle("slow");
7420			$(".drivetrain-container > span > a > i").toggleClass("chevron-flip");
7421
7422			
7423			$('.location-container > div').slideToggle("slow");
7424			$(".location-container > span > a > i").toggleClass("chevron-flip");
7425
7426			
7427			$('.mpg-hway-container > div').slideToggle("slow");
7428			$(".mpg-hway-container > span > a > i").toggleClass("chevron-flip");
7429
7430			
7431			$('.mpg-city-container > div').slideToggle("slow");
7432			$(".mpg-city-container > span > a > i").toggleClass("chevron-flip");
7433
7434			
7435			$('.features-container > div').slideToggle("slow");
7436			$(".features-container > span > a > i").toggleClass("chevron-flip");
7437
7438			
7439					$('.fa-microphone').toggleClass('fal fas fa-microphone fa-search');
7440			//$('.ais-SearchBox-input').placeholderTypewriter({text: placeholderText});
7441			
7442		if (haveSdAnalytics  && typeof(sd) !== "undefined")
7443		{
7444			// header.php has already sent the pageview for this load, so this
7445			// keeps the pageview -> filterSearch order Shift Digital asked for.
7446			sd('dataLayer', {
7447				countSearchResults: $("#numberHits").text(),
7448				filterSearch: buildSdFilterSearchPayload(),
7449				events: 'filterSearch'
7450			});
7451			sd('send');
7452
7453			sdInitialFilterSearchSent = true;
7454
7455			if (sdFormShownPending) {
7456				sd('dataLayer', {
7457					formType: getSDFormType($(".gform_title", $(".popup_form#srp_form_container")).text(), $(".popup_form#srp_form_container form")[0]),
7458					displayType: 'modal',
7459					events: 'formShown'
7460				});
7461				sd('send');
7462				sdFormShownPending = false;
7463			}
7464		}
7465	});
7466
7467	function voiceSearch(term)
7468	{
7469		term = term.toLowerCase();
7470		let searchBox = document.querySelector('.ais-SearchBox-input');
7471		searchBox.value = term;
7472		searchBox.dispatchEvent(new Event('input'));
7473	}
7474</script>
vendor: 1 bytes, line 7474
7474
7475<script>
7476
7477var popupFormCalled = false;
7478var currentVehicleData = null;
7479var currentFormType = null;
7480
7481	//Open the form
7482	function popupForm(vin) {
7483
7484		if (popupFormCalled) {
7485			console.log('Prevented duplicate popupForm call');
7486			return;
7487		}
7488
7489		popupFormCalled = true;
7490		setTimeout(function() {
7491			popupFormCalled = false;
7492		}, 500);
7493
7494		$(".cd-panel").addClass("cd-panel--is-visible");
7495		$("body").delay(300).queue(function (next) {
7496		$(this).addClass("cd-panel-no-scroll");
7497			next();
7498		});
7499		$(".right-half, #nav-icon1, #nav-icon2, #nav-icon3, #nav-icon4").delay(300).queue(function (next) {
7500			$(this).addClass("cd-panel-subheader-no-scroll");
7501			next();
7502		});
7503
7504		if (vin === "payment_calculator_container") {
7505			$(".popup_form#srp_form_container").hide();
7506			$("#payment_calculator_container").show();
7507			calculate();
7508			var selected_form_title = $(".gform_title", selected_form).text();
7509			$("#popup_left_title").html(selected_form_title);
7510		} else {
7511			var selected_form = $(".popup_form#srp_form_container");
7512			var selected_form_title = $(".gform_title", selected_form).text();
7513			$("#popup_left_title").html(selected_form_title);
7514		}
7515
7516		if (haveSdAnalytics  && typeof(sd) !== "undefined" && vin !== 'payment_calculator_container')
7517		{
7518			window.currentVin = vin;
7519
7520			$.post("/app/themes/dv-framework/ajax/sdformvehicle.php", {vin: vin}, function (data) {
7521
7522				setTimeout(function() {
7523
7524				sd('dataLayer', {
7525					formType: getSDFormType($(".gform_title", $(".popup_form#srp_form_container")).text()),
7526					displayType: 'modal',
7527					events: 'formShown'
7528				});
7529				sd('send');
7530
7531					currentVehicleData = JSON.parse(data);
7532					currentFormType = getSDFormType($(".gform_title", $(".popup_form#srp_form_container")).text(), $(".popup_form#srp_form_container form")[0])
7533
7534					var formInitHandled = false;
7535					$('.gform_wrapper input').click(function() {
7536						if (!formInitHandled)
7537						{
7538						sendShiftDigitalFormEvent({
7539							formType: getSDFormType($(".gform_title", $(".popup_form#srp_form_container")).text(), $(".popup_form#srp_form_container form")[0]),
7540							displayType: 'modal',
7541							eventName: 'formInitiation'
7542						});
7543
7544							formInitHandled = true;
7545						}
7546					});
7547					$('.gform_wrapper input, .gform_wrapper textarea, .gform_wrapper select').on('input change', function() {
7548						if (shouldTrackShiftDigitalFieldInteraction(this))
7549						{
7550						sendShiftDigitalFormEvent({
7551							formType: getSDFormType($(".gform_title", $(".popup_form#srp_form_container")).text(), $(".popup_form#srp_form_container form")[0]),
7552							displayType: 'modal',
7553							eventName: 'formFieldInteraction',
7554							fieldTarget: this
7555						});
7556						}
7557					});
7558				}, 1000);
7559			});
7560		}
7561	}
7562
7563	//Non confirmation page form submission for SD Analytics
7564	jQuery(document).ready(function(){
7565		jQuery(document).on("gform_confirmation_loaded.vehicleForm", function(event, formId){
7566
7567			if (haveSdAnalytics  && typeof(sd) !== "undefined" && currentVehicleData) {
7568
7569				sd('dataLayer', {
7570					formType: currentFormType,
7571					displayType: 'modal',
7572					events: 'formSubmission',
7573					formVehicle: currentVehicleData,
7574					leadType: 'lead'
7575				});
7576				sd('send');
7577
7578				currentVehicleData = null;
7579				currentFormType = null;
7580			}
7581		});
7582	});
7583
7584	//Incentives Slide out
7585	// Wait for element to become available
7586    function waitForElement(selector) {
7587        return new Promise(resolve => {
7588            if (document.querySelector(selector)) {
7589                return resolve(document.querySelector(selector));
7590            }
7591
7592			console.log("waiting for element");
7593
7594            const observer = new MutationObserver(mutations => {
7595                if (document.querySelector(selector)) {
7596                    observer.disconnect();
7597                    resolve(document.querySelector(selector));
7598                }
7599            });
7600
7601            // If you get "parameter 1 is not of type 'Node'" error, see https://stackoverflow.com/a/77855838/492336
7602            observer.observe(document.body, {
7603                childList: true,
7604                subtree: true
7605            });
7606        });
7607    }
7608
7609	function initForms()
7610	{
7611		disableForms();
7612		
7613		$('.srp_cta_1').click(function () {
7614			var vin = $(this).attr("data-vehicle-vin");
7615			$("#popup_left_dealer").html($(this).attr("data-dealer-name"));
7616			$("#popup_left_price").html($(this).attr("data-vehicle-price"));
7617			$("#popup_left_stock_number").html($(this).attr("data-vehicle-stock-number"));
7618			$("#popup_left_vin").html($(this).attr("data-vehicle-vin"));
7619			$("#popup_left_vehicle_title").html($(".vehicle_title_form", $(this)).text());
7620			getCTAForm($(this).attr("data-vehicle-id"), $(this).attr("data-vehicle-vin"), $(this).attr("data-vehicle-discount"), 1);
7621			popupForm(vin);
7622			event.stopPropagation();
7623		});
7624					$('.srp_cta_2').click(function () {
7625				var vin = $(this).attr("data-vehicle-vin");
7626				$("#popup_left_dealer").html($(this).attr("data-dealer-name"));
7627				$("#popup_left_price").html($(this).attr("data-vehicle-price"));
7628				$("#popup_left_stock_number").html($(this).attr("data-vehicle-stock-number"));
7629				$("#popup_left_vin").html($(this).attr("data-vehicle-vin"));
7630				$("#popup_left_vehicle_title").html($(".vehicle_title_form", $(this)).text());
7631				getCTAForm($(this).attr("data-vehicle-id"), $(this).attr("data-vehicle-vin"), $(this).attr("data-vehicle-discount"), 27);
7632				popupForm(vin);
7633				event.stopPropagation();
7634			});
7635					//slideout with all incentives for srp
7636			function popupIncentivesBox(vin){
7637				$(".cd-panel").addClass("cd-panel--is-visible");
7638				$("body").delay(300).queue(function (next) {
7639				$(this).addClass("cd-panel-no-scroll");
7640					next();
7641				});
7642				$(".right-half, #nav-icon1, #nav-icon2, #nav-icon3, #nav-icon4").delay(300).queue(function (next) {
7643					$(this).addClass("cd-panel-subheader-no-scroll");
7644					next();
7645				});
7646				var selected_form = $(".popup_form#srp_form_container");
7647				var selected_form_title = $(".gform_title", selected_form).text();
7648				$("#popup_left_title").html(selected_form_title);
7649			}
7650
7651			 //Open incentives form from incentives list
7652			 function popupIncentives(containerName, incentiveName, incentiveValue, formValue, vehicleData) {
7653
7654				$('.vehicle-incentives').addClass('hidden');
7655
7656				waitForElement('.popup_form#srp_incentives_form div').then((elm) => {
7657				    $('#srp_incentives_form').removeClass('hidden');
7658				});
7659
7660				$(".cd-panel").addClass("cd-panel--is-visible");
7661				$("body").delay(300).queue(function (next) {
7662					$(this).addClass("cd-panel-no-scroll");
7663					next();
7664				});
7665				$(".right-half, #nav-icon1, #nav-icon2, #nav-icon3, #nav-icon4").delay(300).queue(function (next) {
7666					$(this).addClass("cd-panel-subheader-no-scroll");
7667					next();
7668				});
7669
7670				var selected_form = $(".popup_form#srp_form_container");
7671				var selected_form_title = $(".gform_title", selected_form).text();
7672				$("#popup_left_title").html(selected_form_title);
7673
7674				getIncentivesForm(vehicleData.vehicleVin, vehicleData.vehicleVin, vehicleData.vehiclePrice, vehicleData.formValue, vehicleData.vehicleUrl);
7675				popupForm(vehicleData.vehicleVin);
7676
7677			}
7678			//End incentives slideout
7679
7680			//Additional incentives button to open slideout
7681			$('.ag-more-incentives a').click(function() {
7682				var $currentButton = $(this);
7683				var vin = $currentButton.attr("data-vehicle-vin");
7684				$('.vehicle-incentives').removeClass('hidden');
7685				if (!$('.srp_incentives_form').hasClass('hidden')) {
7686					$('.srp_incentives_form').addClass('hidden');
7687				}
7688
7689				var vin = $(this).attr("data-vehicle-vin");
7690				$("#popup_left_dealer").html($currentButton.attr("data-dealer-name"));
7691				$("#popup_left_price").html($currentButton.attr("data-vehicle-price"));
7692				$("#popup_left_stock_number").html($currentButton.attr("data-vehicle-stock-number"));
7693				$("#popup_left_vin").html($currentButton.attr("data-vehicle-vin"));
7694				$("#popup_left_vehicle_title").html($(".vehicle_title_form", $currentButton).text());
7695				$(".popup_form").show();
7696				$(".cd-panel__subheader-right").hide();
7697				var incentivesContent = $currentButton.closest('.ag-more-incentives')
7698					.next('.incentives-content-template')
7699					.html();
7700				var customLayout = `
7701					<div class="incentives-popup-container">
7702						<div class="incentives-list">
7703							${incentivesContent}
7704
7705					</div>
7706				`;
7707
7708				var form_container = $("#srp_form_container");
7709				form_container.html(customLayout);
7710				var selected_form_title = $(".gform_title", form_container).text();
7711				$("#popup_left_title").html(selected_form_title);
7712				$(".gform_title", form_container).hide();
7713				$(".gform_description", form_container).hide();
7714
7715				popupIncentivesBox(vin);
7716				event.stopPropagation();
7717			});
7718
7719			//toggle Lists
7720			$(document).on('click', '.toggle-incentives', function(event) {
7721				event.preventDefault();
7722				event.stopImmediatePropagation();
7723				let $lists = $('.toggle-list-incentives');
7724				let $icon = $(this).find("i");
7725				$lists.stop(true, false).slideToggle(400);
7726				$icon.toggleClass("fa-chevron-down fa-chevron-up");
7727				return false;
7728			});
7729
7730			//toggle lists
7731			$(document).on('click', '.toggle-qualify', function(event) {
7732				event.preventDefault();
7733				event.stopImmediatePropagation();
7734				let $lists = $('.toggle-list-qualify');
7735				let $icon = $(this).find("i");
7736				$lists.stop(true, false).slideToggle(400);
7737				$icon.toggleClass("fa-chevron-down fa-chevron-up");
7738				return false;
7739			});
7740
7741			$(document).on('click', '.incentives-btn', function(event) {
7742
7743				var buttonData = $(this);
7744				var vehicleData = buttonData[0];
7745
7746				if(event.target.attributes['data-value'] !== undefined){
7747				}
7748				if (event.target.name !== undefined || event.target.attributes['data-value'] !== undefined){
7749					var incentiveName = event.target.name;
7750					var incentiveValue = '';
7751					var formValue = event.target.attributes['data-value'].value;
7752
7753					if (event.target.attributes['data-value'] !== undefined){
7754						incentiveValue = event.target.attributes['data-value'].value;
7755					}
7756
7757					popupIncentives("incentives_container", incentiveName, incentiveValue, formValue, vehicleData.dataset);
7758					event.stopPropagation();
7759				} else {
7760					console.log('error! missing attributes')
7761				}
7762			});
7763		
7764		$(".autocheck_button").on("click", function () {
7765			var vin = $(this).attr("data-vehicle-vin");
7766			$("#popup_left_dealer").html($(this).attr("data-dealer-name"));
7767			$("#popup_left_price").html($(this).attr("data-vehicle-price"));
7768			$("#popup_left_stock_number").html($(this).attr("data-vehicle-stock-number"));
7769			$("#popup_left_vin").html($(this).attr("data-vehicle-vin"));
7770			$("#popup_left_vehicle_title").html($(".vehicle_title_form", $(this)).text());
7771			$(".cd-panel__content").css({"padding-top": "114px"});
7772			$(".cd-panel__container").css({"width": "100%"});
7773			$(".cd-panel__header").css({"width": "100%"});
7774			getAutoCheckReport($(this).attr("data-vehicle-id"));
7775			popupForm(vin);
7776			event.stopPropagation();
7777		});
7778
7779		$('.srp-cta-calculate-payment-btn').click(function () {
7780			const parentListing = $(this).closest('.listing');
7781			const priceVal = parentListing.data('ag-price');
7782			$('#carPrice').val(priceVal || 0);
7783			$("#popup_left_vin").html($(this).attr("data-vehicle-vin"));
7784			$("#popup_left_vehicle_title").html($(".vehicle_title_form", $(this)).text());
7785            popupForm("payment_calculator_container");
7786            event.stopPropagation();
7787        });
7788
7789
7790		//Button click to close, click outside form to close
7791		$(".cd-panel__close, .cd-panel__otherside").click(function () {
7792			$(".cd-panel").removeClass("cd-panel--is-visible");
7793			$("#payment_calculator_container").delay(400).hide(0);
7794			$(".popup_form").delay(400).hide(0);
7795			$(".popup_form").delay(400).queue(function (next) {
7796				$(this).empty();
7797				next();
7798			});
7799			$("body").delay(400).queue(function (next) {
7800				$(this).removeClass("cd-panel-no-scroll");
7801				next();
7802			});
7803			$(".right-half, #nav-icon1, #nav-icon2, #nav-icon3, #nav-icon4").delay(400).queue(function (next) {
7804				$(this).removeClass("cd-panel-subheader-no-scroll");
7805				next();
7806			});
7807			$(".cd-panel__content").removeAttr('style');
7808			$(".listing").removeAttr('style');
7809			$(".cd-panel__subheader-right").show();
7810			setTimeout(function () {
7811				$(".cd-panel__container").removeAttr('style');
7812			}, 300);
7813		});
7814	}
7815
7816	function disableForms()
7817	{
7818		
7819		$('.srp_cta_1').off("click");
7820					$('.srp_cta_2').off("click");
7821		
7822		$(".autocheck_button").off("click");
7823		$(".cd-panel__close, .cd-panel__otherside").off("click");
7824	}
7825
7826	function toggleFilters()
7827	{
7828		$(".side-panel-container").toggleClass("mobileFilters");
7829		$(".showFiltersNonLegacy i").toggleClass("chevron-flip");
7830		$(".result-wrapper").toggleClass("filtersOpen");
7831		$("body").toggleClass("filtersOpen");
7832		$(".filterResultCount").toggleClass("filter-result-count-active");
7833	}
7834
7835	/**
7836	 * Retry counter lives outside the function on purpose.
7837	 *
7838	 * It used to be `let tries = 0` as the first statement inside, which reset it
7839	 * to zero on every call - so `tries < 10` could never fail and the "retry ten
7840	 * times" guard was in fact an unbounded one-second loop for as long as the page
7841	 * stayed open. It does not fire where DG loads normally, but it does on any
7842	 * dealer where DG is slow, blocked, or absent.
7843	 *
7844	 * Logging is behind ?spdebug=1 for the same reason the rest of this moved to
7845	 * onRenderSettled: console.log of a populated vehicle array on every render is
7846	 * not free, and it is markedly worse in Safari with an inspector attached -
7847	 * which is exactly the situation anyone debugging this on an iPhone is in.
7848	 */
7849	var smartPathTries = 0;
7850	var smartPathDebug = new URLSearchParams(window.location.search).get('spdebug') === '1';
7851
7852	function renderSmartPath()
7853	{
7854		if (smartPathDebug) console.log("Trying to render smartpath objects...");
7855
7856		if (typeof window.DGDataHub.getWarningState !== "undefined" && (window.DGDataHub.getWarningState().dgLoaded || smartPathDebug))
7857		{
7858			var smartPathVehicles = vehiclesList.map(veh => ({
7859				type: 'inv',
7860				brand: veh.make,
7861				modelCd: veh.modelCode,
7862				dealerCd: '37194',
7863				advertisedPrice: parseFloat(veh.internetPrice.replace("$", "").replace(",", "")), // Advertised Price
7864				imageHref: veh.imageUrls[0],
7865				imagePrice: 0,
7866				marketingSeries: veh.model,
7867				marketingName: veh.model,
7868				year: veh.yr,
7869				vin: veh.vin,
7870				price: parseFloat(veh.msrp.replace("$", "").replace(",", "")), // MSRP
7871				ePrice: parseFloat(veh.finalPrice.replace("$", "").replace(",", "")), // Selling Price
7872				vdpHref: veh.vdpUrl,
7873				vlpHref: `http://www.toyota.com/${veh.model.toLowerCase()}/`,
7874				salesClass: veh.certified == "yes" ? 'cpo' : veh.condition.toLowerCase(), // value options are 'new', 'used' and 'cpo' (certified pre-owned),
7875				vehicleType: veh.certified == "yes" ? 'cpo' : veh.condition.toLowerCase() // value options are 'new', 'used' and 'cpo' (certified pre-owned),
7876			}));
7877
7878			var saveItemsObj = {}
7879
7880			smartPathVehicles.map(veh => saveItemsObj[`dg-inline-save-inv-${veh.vin}`] = veh);
7881
7882			if (smartPathDebug) console.log(smartPathVehicles);
7883
7884			window.DGDataHub.renderInlineSaves(saveItemsObj);
7885
7886
7887							if (smartPathDebug) console.log(window.DGDataHub.getDgid());
7888
7889				fetch("https://mobile-api.rti.toyota.com/leads/garage/eprice?dgid=" + window.DGDataHub.getDgid() + "&dealerCd=" + "37194").then(response => response.json()).then(data => {
7890					if (data.includes("37194") && srpCondition != "Used")
7891					{
7892						if (smartPathDebug) console.log("Unlocking smartprice...");
7893						$(".dv-pricinggate").show();
7894						$(".dv-pricing-main").hide();
7895						$(".srp_cta_pricinggate").hide();
7896						$(".srp-cta-smartpath1-btn").hide();
7897						$(".srp-cta-smartpathunlocked-btn").attr('style', 'display: inline !important');
7898
7899						$(".vehicle-price-container").css('height', '');
7900					}
7901
7902					return data;
7903				}).then(data => { if (smartPathDebug) console.log(data); });
7904						}
7905		else
7906		{
7907			if (smartPathTries < 10)
7908			{
7909				smartPathTries++;
7910				setTimeout(renderSmartPath, 1000);
7911			}
7912		}
7913	}
7914
7915	function checkAndRemoveFacets() {
7916
7917		if (!userInteractedWithFacets) return;
7918
7919		// Remove child facet if parent facet is unclicked
7920		if(srpCondition === "Used" || srpDealerId.includes(dealerGroupSite)){
7921			if($("#model-list ul li input[type='checkbox']:checked").length > 0 && $("#make-list ul li input[type='checkbox']:checked").length === 0){
7922				search.helper.removeDisjunctiveFacetRefinement('model');
7923				search.helper.removeDisjunctiveFacetRefinement('trim');
7924				search.helper.search();
7925				userInteractedWithFacets = false;
7926			}
7927		}
7928
7929		if($("#trim-list ul li input[type='checkbox']:checked").length > 0 && $("#model-list ul li input[type='checkbox']:checked").length === 0){
7930			search.helper.removeDisjunctiveFacetRefinement('trim');
7931			search.helper.search();
7932			userInteractedWithFacets = false;
7933		}
7934	}
7935
7936	function getUrlParams() {
7937
7938		const params = new URLSearchParams(window.location.search);
7939		const paramObj = {};
7940		params.forEach((value, key) => {
7941
7942			if (!paramObj[key]) {
7943
7944				paramObj[key] = [];
7945			}
7946			paramObj[key].push(value);
7947		});
7948		return paramObj;
7949	}
7950
7951	// Function to dynamically toggle filters based on URL params
7952	function toggleFiltersDynamically() {
7953		const params = getUrlParams();
7954
7955		Object.keys(params).forEach(function(filterVar) {
7956
7957			filterVar = filterVar.toLowerCase();
7958
7959			if(filterVar == "genericcolor"){
7960				filterVar = "color";
7961			}
7962
7963			if(filterVar == "finalpricerange"){
7964				filterVar = "pricerange";
7965			}
7966
7967			if(filterVar == "yr"){
7968				filterVar = "year";
7969			}
7970
7971			if(filterVar == "transmissiontype"){
7972				filterVar = "transmission";
7973			}
7974
7975			const containerSelector = $(`.${filterVar}-container > div`);
7976
7977			if (containerSelector.length > 0) {
7978				containerSelector.show();
7979			}
7980		});
7981	}
7982
7983
7984	//Nexus Fuse Payments Start
7985	
7986	//Fuse Payments Button - Nexus
7987	function nexusPaymentButtons(){
7988
7989			}
7990
7991
7992    function updateFuseButton(buttonContainer, data, offerTypeId) {
7993
7994	if (!data || !Array.isArray(data)) {
7995        console.error('Error in updateFuseButton: "data" is either undefined or not an array.', { data, buttonContainer, offerTypeId });
7996        buttonContainer.style.display = 'none';
7997		return;
7998	}
7999
8000      const matchedOffer = data.find(offer => offer.fuse.OfferTypeID == offerTypeId);
8001
8002      if (matchedOffer) {
8003
8004		//Used for Fuse SinglePaymentOption
8005        const fuseOfferOne = "5";
8006
8007		//Used for Fuse APR
8008        const fuseOfferTwo = "7";
8009
8010		//Used for Fuse PaymentNoTax
8011		const fuseOfferThree = "5";
8012
8013        let ctaText = "";
8014        let buttonHtml = "";
8015		let ctaDisclaimer = "";
8016
8017		if(matchedOffer.fuse.OfferTypeID == fuseOfferOne && fuseOfferOne !== "1") {
8018          const ctaFuseText = "Single Payment Option";
8019		  const singlePayment = matchedOffer.fuse.SinglePayment;
8020
8021		function formatAsCurrency(amount) {
8022		return amount.toLocaleString('en-US', {
8023			minimumFractionDigits: 0,
8024			maximumFractionDigits: 0
8025		});
8026		}
8027
8028		const formattedPayment = formatAsCurrency(singlePayment);
8029
8030		ctaFuseAmount = formattedPayment
8031		ctaDisclaimer = matchedOffer.fuse.Disclaimer;
8032
8033          buttonHtml = `
8034          <a href='javascript: void(0);' data-vehicle-id="${matchedOffer.vin}" data-vehicle-vin="${buttonContainer.getAttribute('data-vehicle-vin')}" data-vehicle-condition="${buttonContainer.getAttribute('data-vehicle-condition')}" data-vehicle-year="${buttonContainer.getAttribute('data-vehicle-year')}" data-vehicle-make="${buttonContainer.getAttribute('data-vehicle-make')}" data-vehicle-model="${buttonContainer.getAttribute('data-vehicle-model')}" data-vehicle-stock-number="${buttonContainer.getAttribute('data-vehicle-stock-number')}" data-vehicle-price="${buttonContainer.getAttribute('data-vehicle-price')}" data-vehicle-discount="${buttonContainer.getAttribute('data-vehicle-discount')}" data-dealer-name="${buttonContainer.getAttribute('data-dealer-name')}" data-dealer-id="${buttonContainer.getAttribute('data-dealer-id')}" data-form-id="${buttonContainer.getAttribute('data-form-id')}" data-offer-type-id="${offerTypeId}" data-customer-disclaimer="${ctaDisclaimer}" class="${buttonContainer.className}">
8035		   	<span class="option-title">${ctaFuseText}</span>
8036    		<span class="option-value">$${ctaFuseAmount}</span>
8037            <span style="display:none;" class="vehicle_title_form">${buttonContainer.getAttribute('data-vehicle-year')} ${buttonContainer.getAttribute('data-vehicle-make')} ${buttonContainer.getAttribute('data-vehicle-model')} </span>
8038          </a>
8039        `;
8040        }
8041
8042        if(matchedOffer.fuse.OfferTypeID == fuseOfferTwo){
8043          const ctaFuseText = "APR";
8044          const ctaFuseAmount = `${matchedOffer.fuse.APR}%`;
8045		  ctaDisclaimer = matchedOffer.fuse.Disclaimer;
8046
8047          buttonHtml = `
8048          <a href='javascript: void(0);' data-vehicle-id="${matchedOffer.vin}" data-vehicle-vin="${buttonContainer.getAttribute('data-vehicle-vin')}" data-vehicle-condition="${buttonContainer.getAttribute('data-vehicle-condition')}" data-vehicle-year="${buttonContainer.getAttribute('data-vehicle-year')}" data-vehicle-make="${buttonContainer.getAttribute('data-vehicle-make')}" data-vehicle-model="${buttonContainer.getAttribute('data-vehicle-model')}" data-vehicle-stock-number="${buttonContainer.getAttribute('data-vehicle-stock-number')}" data-vehicle-price="${buttonContainer.getAttribute('data-vehicle-price')}" data-vehicle-discount="${buttonContainer.getAttribute('data-vehicle-discount')}" data-dealer-name="${buttonContainer.getAttribute('data-dealer-name')}" data-dealer-id="${buttonContainer.getAttribute('data-dealer-id')}" data-form-id="${buttonContainer.getAttribute('data-form-id')}" data-offer-type-id="${offerTypeId}" data-customer-disclaimer="${ctaDisclaimer}" class="${buttonContainer.className}">
8049			<span class="option-title">${ctaFuseText}</span>
8050    		<span class="option-value">${ctaFuseAmount}</span>
8051            <span style="display:none;" class="vehicle_title_form">${buttonContainer.getAttribute('data-vehicle-year')} ${buttonContainer.getAttribute('data-vehicle-make')} ${buttonContainer.getAttribute('data-vehicle-model')} </span>
8052          </a>
8053        `;
8054        }
8055
8056		//Fuse option 3 used for offerTypeId 1 PaymentNoTax
8057		if(matchedOffer.fuse.OfferTypeID == fuseOfferThree && (matchedOffer.fuse.OfferTypeID == 1 && fuseOfferOne === "1")){
8058			const ctaFuseText = "Single Payment Option";
8059			const ctaFuseAmount = `${matchedOffer.fuse.PaymentNoTax}`;
8060			ctaDisclaimer = matchedOffer.fuse.Disclaimer;
8061			
8062			const textResult = replaceAmountPlaceholder(ctaFuseText, ctaFuseAmount);
8063			
8064			if (textResult.hasPlaceholder) {
8065				buttonHtml = `
8066				<a href='javascript: void(0);' data-vehicle-id="${matchedOffer.vin}" data-vehicle-vin="${buttonContainer.getAttribute('data-vehicle-vin')}" data-vehicle-condition="${buttonContainer.getAttribute('data-vehicle-condition')}" data-vehicle-year="${buttonContainer.getAttribute('data-vehicle-year')}" data-vehicle-make="${buttonContainer.getAttribute('data-vehicle-make')}" data-vehicle-model="${buttonContainer.getAttribute('data-vehicle-model')}" data-vehicle-stock-number="${buttonContainer.getAttribute('data-vehicle-stock-number')}" data-vehicle-price="${buttonContainer.getAttribute('data-vehicle-price')}" data-vehicle-discount="${buttonContainer.getAttribute('data-vehicle-discount')}" data-dealer-name="${buttonContainer.getAttribute('data-dealer-name')}" data-dealer-id="${buttonContainer.getAttribute('data-dealer-id')}" data-form-id="${buttonContainer.getAttribute('data-form-id')}" data-offer-type-id="${offerTypeId}" data-customer-disclaimer="${ctaDisclaimer}" class="${buttonContainer.className}">
8067					<span class="option-title">${textResult.displayText}</span>
8068					<span style="display:none;" class="vehicle_title_form">${buttonContainer.getAttribute('data-vehicle-year')} ${buttonContainer.getAttribute('data-vehicle-make')} ${buttonContainer.getAttribute('data-vehicle-model')} </span>
8069				</a>
8070				`;
8071			} else {
8072				buttonHtml = `
8073				<a href='javascript: void(0);' data-vehicle-id="${matchedOffer.vin}" data-vehicle-vin="${buttonContainer.getAttribute('data-vehicle-vin')}" data-vehicle-condition="${buttonContainer.getAttribute('data-vehicle-condition')}" data-vehicle-year="${buttonContainer.getAttribute('data-vehicle-year')}" data-vehicle-make="${buttonContainer.getAttribute('data-vehicle-make')}" data-vehicle-model="${buttonContainer.getAttribute('data-vehicle-model')}" data-vehicle-stock-number="${buttonContainer.getAttribute('data-vehicle-stock-number')}" data-vehicle-price="${buttonContainer.getAttribute('data-vehicle-price')}" data-vehicle-discount="${buttonContainer.getAttribute('data-vehicle-discount')}" data-dealer-name="${buttonContainer.getAttribute('data-dealer-name')}" data-dealer-id="${buttonContainer.getAttribute('data-dealer-id')}" data-form-id="${buttonContainer.getAttribute('data-form-id')}" data-offer-type-id="${offerTypeId}" data-customer-disclaimer="${ctaDisclaimer}" class="${buttonContainer.className}">
8074					<span class="option-title">${textResult.displayText}</span>
8075					<span class="option-value">$${ctaFuseAmount}</span>
8076					<span style="display:none;" class="vehicle_title_form">${buttonContainer.getAttribute('data-vehicle-year')} ${buttonContainer.getAttribute('data-vehicle-make')} ${buttonContainer.getAttribute('data-vehicle-model')} </span>
8077				</a>
8078				`;
8079			}
8080		}
8081
8082        let newButtonElement = document.createRange().createContextualFragment(buttonHtml).firstElementChild;
8083		buttonContainer.replaceWith(newButtonElement);
8084
8085		fuseButtonBinding();
8086      } else {
8087        console.log("No matching offer found for OfferTypeID:", offerTypeId);
8088      }
8089    }
8090
8091
8092	function replaceAmountPlaceholder(text, amount) {
8093		if (text.includes('{amount}')) {
8094			return {
8095				hasPlaceholder: true,
8096				displayText: text.replace('{amount}', `<span class="option-value">$${amount}</span>`)
8097			};
8098		}
8099		return {
8100			hasPlaceholder: false,
8101			displayText: text
8102		};
8103	}
8104
8105	function fuseButtonBinding(){
8106			}
8107	//Nexus Fuse Payments End
8108
8109
8110
8111	$(document).ready(function () {
8112		// if (navigator.platform == "MacIntel")
8113		// {
8114		// 	$(".srp-results").css("width", "calc(100vw - 376px)");
8115		// }
8116
8117
8118		setTimeout(function(){
8119
8120			toggleFiltersDynamically();
8121			nexusPaymentButtons();
8122			initForms();
8123      registerSmartpathCTAOverrides(jQuery("#srp-results"));
8124		}, 1000);
8125	});
8126</script>
8126
8127
8128
8129
8130
8131</main>
8132<div class="srp-bottom-disclaimers">
8133<h4>Disclaimer</h4>
8134<p>*Pricing of vehicles on this web site may include options that may have been installed at the Dealership. Pricing includes $490 PA Doc Fee, and may include current promotions, incentives, and/or bonus cash from Toyota Financial Services. Monthly payment calculator does not include tax, title, license. Please contact the Dealership for latest pricing and monthly payment. Published price subject to change without notice to correct errors or omissions or in the event of inventory fluctuations. Price good for 2 days only, please contact store by email or phone for details.
8135</p>
8136<br>
8137<p>
8138While every effort has been made to ensure display of accurate data, the vehicle listings within this web site may not reflect all accurate vehicle items. Accessories and color may vary. All Inventory listed is subject to prior sale. The vehicle photo displayed may be an example only. Vehicle Photos may not match exact vehicle. Please confirm vehicle price with Dealership. See Dealership for details. 
8139</p>
8140</div>
8140<script src="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/js/video.js?v=1.648.51"></script>
8140
8141<style>
8142    /*****************************************************************************************************************************/
8143    /* CTA 1 Button */
8144    /*****************************************************************************************************************************/
8145    .srp-cta-1-btn {
8146        color: #ffffff !important;
8147        background-color: #eb0a1e !important;
8148    }
8149
8150    .srp-cta-1-btn:hover {
8151        background-color: #383838 !important;
8152    }
8153
8154    /*****************************************************************************************************************************/
8155    /* CTA 2 Button */
8156    /*****************************************************************************************************************************/
8157    .srp-cta-2-btn {
8158        color: #ffffff !important;
8159        background-color: #d50000 !important;
8160    }
8161
8162    .srp-cta-2-btn:hover {
8163        background-color: #000000 !important;
8164    }
8165
8166    /*****************************************************************************************************************************/
8167    /* CTA 3 Button */
8168    /*****************************************************************************************************************************/
8169    .srp-cta-3-btn {
8170        color: #ffffff !important;
8171        background-color: #000000 !important;
8172    }
8173
8174    .srp-cta-3-btn:hover {
8175        background-color: #eeeeee !important;
8176    }
8177
8178
8179    /*****************************************************************************************************************************/
8180    /* CTA 4 Button */
8181    /*****************************************************************************************************************************/
8182    .srp-cta-4-btn {
8183        color: #ffffff !important;
8184        background-color: #000000 !important;
8185    }
8186
8187    .srp-cta-4-btn:hover {
8188        background-color: #eeeeee !important;
8189    }
8190
8191    /*****************************************************************************************************************************/
8192    /* CTA 5 Button */
8193    /*****************************************************************************************************************************/
8194    .srp-cta-5-btn {
8195        color: #ffffff !important;
8196        background-color: #262626 !important;
8197    }
8198
8199    .srp-cta-5-btn:hover {
8200        background-color: #0a0a0a !important;
8201    }
8202
8203    /*****************************************************************************************************************************/
8204    /* CTA 6 Button */
8205    /*****************************************************************************************************************************/
8206    .srp-cta-6-btn {
8207        color: #ffffff !important;
8208        background-color: #262626 !important;
8209    }
8210
8211    .srp-cta-6-btn:hover {
8212        background-color: #0a0a0a !important;
8213    }
8214
8215    /*****************************************************************************************************************************/
8216    /* Roadster CTA Button */
8217    /*****************************************************************************************************************************/
8218    .srp-cta-roadster-btn {
8219        color: #063497 !important;
8220        background-color: #ffcc00 !important;
8221    }
8222
8223    /*****************************************************************************************************************************/
8224    /* Custom Modal CTA Button */
8225    /*****************************************************************************************************************************/
8226    .srp-cta-modal-btn {
8227        color: #ffffff;
8228        background-color: #000000;
8229    }
8230
8231    .srp-cta-modal-btn:hover {
8232        color: #000000;
8233        background-color: #000000;
8234    }
8235
8236    .srp-cta-modal-btn-two {
8237        color: #000000;
8238        background-color: #eb0a1e;
8239    }
8240
8241    .srp-cta-modal-btn-two:hover {
8242        color: #000000;
8243        background-color: #eb0a1e;
8244    }
8245
8246    /*****************************************************************************************************************************/
8247    /* Pricing Gate Button */
8248    /*****************************************************************************************************************************/
8249    .srp-cta-pricinggate-btn {
8250        color: #ffffff !important;
8251        background-color: #000000 !important;
8252    }
8253
8254    .srp-cta-pricinggate-btn:hover {
8255        color: #eeeeee !important;
8256        background-color: #eeeeee !important;
8257    }
8258
8259    /*****************************************************************************************************************************/
8260    /* CTA Calculate Payment Button */
8261    /*****************************************************************************************************************************/
8262    .srp-cta-calculate-payment-btn {
8263        color: white;
8264        background-color: var(--primary-color);
8265        border-color: var(--primary-color);
8266    }
8267
8268    .srp-cta-calculate-payment-btn:hover {
8269        color: white;
8270        background-color: var(--secondary-color);
8271        border-color: var(--secondary-color);
8272    }
8273
8274    
8275    /*****************************************************************************************************************************/
8276    /* Instant Search Styles */
8277    /*****************************************************************************************************************************/
8278
8279    .ais-Pagination-item--firstPage .ais-Pagination-link, .ais-Pagination-item--previousPage .ais-Pagination-link, .ais-Pagination-item--nextPage .ais-Pagination-link, .ais-Pagination-item--lastPage .ais-Pagination-link {
8280        color: #eb0a1e;
8281    }
8282
8283    .ais-RefinementList-count {
8284        color: #eb0a1e;
8285		font-weight: bold;
8286    }
8287
8288    .srp-SUV {
8289        background: url(https://bucket.dealervenom.com/assets/oem/toyota/filters/suv.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=120&height=100);
8290    }
8291
8292    .srp-Van {
8293        background: url(https://bucket.dealervenom.com/assets/oem/toyota/filters/van.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=120&height=100);
8294    }
8295
8296    .srp-Truck {
8297        background: url(https://bucket.dealervenom.com/assets/oem/toyota/filters/truck.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=120&height=100);
8298    }
8299
8300    .srp-Hatchback {
8301        background: url(https://bucket.dealervenom.com/assets/oem/toyota/filters/hatch.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=120&height=100);
8302    }
8303
8304    .srp-Wagon {
8305        background: url(https://bucket.dealervenom.com/assets/oem/toyota/filters/wagon.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=120&height=100);
8306    }
8307
8308    .srp-Coupe {
8309        background: url(https://bucket.dealervenom.com/assets/oem/toyota/filters/coupe.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=120&height=100);
8310    }
8311
8312    .srp-Sedan {
8313        background: url(https://bucket.dealervenom.com/assets/oem/toyota/filters/sedan.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=120&height=100);
8314    }
8315
8316    .srp-Convertible {
8317        background: url(https://bucket.dealervenom.com/assets/oem/toyota/filters/convertible.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=120&height=100);
8318    }
8319
8320    .srp-Crossover {
8321        background : url(https://bucket.dealervenom.com/assets/oem/toyota/filters/crossover.png?auto=compress%2Cformat&ixlib=php-1.2.1&width=140);
8322    }
8323
8324        .vehicle-special {
8325        background-color: #f00f00 !important;
8326    }
8327    
8328
8329    .srp-header {
8330        top: 75px;
8331    }
8332
8333    .car-title > p {
8334        color: #eb0a1e;
8335    }
8336
8337    .listing-bottom-row {
8338        background-color: #000000;
8339        color: #ffffff;
8340    }
8341
8342    .specs {
8343        height: 60px;
8344    }
8345
8346    .img-container {
8347        padding-bottom: 75%;
8348    }
8349
8350    #clearSearchResults button {
8351        color: #eb0a1e;
8352    }
8353
8354    .srp-windowsticker.srp_cta:hover {
8355        background-color: #ffffff;
8356        color: #eb0a1e;
8357        border-color: #eb0a1e;
8358    }
8359
8360    .reserved-vehicle {
8361        background-color: #EB0A11;
8362        color: ;
8363    }
8364
8365    
8366            .vehicle-price-container {
8367            height: 120px;
8368        }
8369    
8370    @media screen and (max-width: 1024px)
8371    {   
8372			.srp-header {
8373				top: 75px;
8374				height: auto;
8375				flex-flow: column nowrap;
8376				padding: 25px;
8377				box-sizing: border-box;
8378			}
8379			
8380			.srp-search {
8381				position: relative;
8382			}
8383			#clearSearchResults {
8384				position: absolute;
8385				right: 10px;
8386				background: #fff;
8387			}
8388			#clearSearchResults button {
8389				padding-right: 0;
8390			}
8391			.mobileFilters {
8392				bottom: 0
8393			}
8394
8395        .dv-logged-in .srp-filters {
8396            padding-top: 75px 
8397        }
8398    }
8399
8400		.filterResultCount {
8401			display: none
8402		}
8403		@media screen and (max-width: 1024px){
8404			.filterResultCount {
8405				background-color: #EB0A1E;
8406				color: #FFFFFF;
8407				display: none;
8408				position: fixed;
8409				bottom: 0;
8410				z-index: 2147483647;
8411				width: 100%;
8412				text-align: center;
8413				padding: 12.5px 0;
8414			}
8415			.filterResultCount:hover {
8416				cursor: pointer;
8417			}
8418			.filterResultCount.filter-result-count-active {
8419				display: block
8420			}	
8421		}
8422		.dv-srp-search-options {
8423			display: none;
8424			position: relative;
8425			box-sizing: border-box
8426		}
8427
8428		.dv-srp-search-options * {
8429			box-sizing: border-box
8430		}
8431
8432		.sortFilters .dv-srp-sort-mobile {
8433			position: absolute;
8434			width: 100%;
8435			min-width: 160px;
8436			left: 0;
8437			top: 100%;
8438			padding: 0;
8439			background: #fff;
8440			box-shadow: 0 8px 16px 0 rgba(0,0,0,.2);
8441			z-index: 1;
8442			text-align: left;
8443			overflow: hidden;
8444			visibility: hidden;
8445			opacity: 0;
8446			height: 0
8447		}
8448
8449		.sortFilters .dv-srp-sort-desktop {
8450			position: absolute;
8451			width: 100%;
8452			min-width: 160px;
8453			left: 0;
8454			top: 80%;
8455			padding: 0;
8456			background: #fff;
8457			box-shadow: 0 8px 16px 0 rgba(0,0,0,.2);
8458			z-index: 1;
8459			text-align: left;
8460			overflow: hidden;
8461			visibility: hidden;
8462			opacity: 0;
8463			height: 0
8464		}
8465
8466		.sortFilters .dv-srp-sort-mobile.dv-srp-sort-mobile-active,
8467		.sortFilters .dv-srp-sort-desktop.dv-srp-sort-desktop-active {
8468			overflow: auto;
8469			visibility: visible;
8470			opacity: 1;
8471			height: fit-content;
8472			padding: 12.5px
8473		}
8474
8475		.sortFilters .dv-srp-sort-mobile a,
8476		.sortFilters .dv-srp-sort-desktop a {
8477			font-size: 12px;
8478			display: block;
8479			margin: 12.5px 0;
8480			color: #000;
8481			display: flex;
8482			display: -webkit-flex;
8483			display: -ms-flexbox;
8484			justify-content: flex-start;
8485			align-items: center;
8486			gap: 6.25px;
8487			text-transform: capitalize
8488		}
8489
8490		.sortFilters .dv-srp-sort-mobile a:hover,
8491		.sortFilters .dv-srp-sort-desktop a:hover {
8492			cursor: pointer;
8493		}
8494
8495		.sortFilters .dv-srp-sort-mobile a.dv-srp-sort-selected,
8496		.sortFilters .dv-srp-sort-desktop a.dv-srp-sort-selected {
8497			color: var(--primary-color)
8498		}
8499
8500		.sortFilters .dv-srp-sort-mobile a i,
8501		.sortFilters .dv-srp-sort-desktop a i {
8502			display: block;
8503			color: var(--primary-color);
8504			width: 15px;
8505			text-align: center
8506		}
8507		
8508		#sortByDesktop {
8509			position: relative;
8510			box-sizing: border-box;
8511			margin-right: 25px
8512		}
8513
8514		#sortByDesktop * {
8515			box-sizing: border-box;
8516		}
8517
8518		@media screen and (min-width: 1024px) {
8519			.dv-srp-search-options-wrapper {
8520				/* background: var(--primary-color); */
8521				color: #505050;
8522				padding: 12.5px;
8523				min-width: 100%;
8524				white-space: nowrap;
8525			}
8526
8527			.dv-srp-search-options-wrapper:hover {
8528				cursor: pointer;
8529			}
8530
8531			.dv-srp-search-options-wrapper .dv-srp-search-options-label {
8532				display: inline-block;
8533				vertical-align: bottom;
8534				font-size: 14px;
8535				font-weight: 600
8536			}
8537
8538			.dv-srp-search-options-wrapper .dv-srp-search-options-label i {
8539				margin-right: 6.25px
8540			}
8541		}
8542		
8543		@media screen and (max-width: 1024px) {
8544			.srp-header {
8545				background: #f8f8f8;
8546			}
8547			.srp-header .dv-srp-search-options {
8548				display: flex;
8549				display: -webkit-flex;
8550				display: -ms-flexbox;
8551				margin-top: 12.5px;
8552				gap: 25px;
8553			}
8554			.srp-header .dv-srp-search-options .sortFilters,
8555			.srp-header .dv-srp-search-options .showFiltersNonLegacy,
8556			.srp-header .dv-srp-search-options .saveFilters {
8557				width: 33.333%;
8558				flex: 1 1 33.333%;
8559				background: var(--primary-color);
8560				color: #fff;
8561				padding: 6.25px;
8562				display: flex;
8563				display: -webkit-flex;
8564				display: -ms-flexbox;
8565				text-align: center;
8566				justify-content: center;
8567				align-items: center;
8568				font-size: 12px;
8569				text-transform: uppercase;
8570			}
8571			.srp-header .dv-srp-search-options .sortFilters:hover,
8572			.srp-header .dv-srp-search-options .showFiltersNonLegacy:hover,
8573			.srp-header .dv-srp-search-options .saveFilters:hover {
8574				cursor: pointer;
8575			}
8576			.srp-header .dv-srp-search-options .saveFilters {
8577				display: none !important
8578			}
8579			.srp-searchbar {
8580				background: #fff;
8581				flex-basis: 100%;
8582				border: 1px solid #e9e9e9;
8583			}
8584			.srp-searchbar input {
8585				background-color: #fff !important;
8586			}
8587			.srp-searchbar > .fa-search {
8588				padding: 0 12.5px;
8589			}
8590			#searchbox {
8591				width: 100%;
8592			}
8593		}
8594		@media screen and (max-width: 480px) {
8595			.srp-header .dv-srp-search-options {
8596				gap: 12.5px;
8597			}
8598			.srp-header .dv-srp-search-options .sortFilters,
8599			.srp-header .dv-srp-search-options .showFiltersNonLegacy,
8600			.srp-header .dv-srp-search-options .saveFilters {
8601				font-size: 10px
8602			}
8603		}
8604
8605    .ag-srp-miles { 
8606    background: #eee;
8607    border-radius: 15px;
8608    font-weight: 500;
8609    display:block;
8610    padding:4px;
8611    color:#000;
8612    line-height:16px;
8613    font-size:12px !important;
8614}
8615
8616.srp-bottom-disclaimers {
8617    font-size: 12px;
8618    color: #bcc4cc;
8619}
8620.srp-bottom-disclaimers h4 {
8621    text-transform: none;
8622    padding-bottom: 12.5px;
8623    color: #000;
8624}
8625/*Pricing Slash*/
8626.dv-price-stack p {
8627    position: relative;
8628}
8629.dv-price-stack .dv-price-slash {
8630    z-index: 98;
8631    position: absolute;
8632    right: 0;
8633    max-width: 50px;
8634}
8635/*Pricing Slash*/
8636
8637/*Vin-Stock Container styles*/
8638 .srp-extra-div { 
8639    display: flex;
8640    margin: auto;
8641    padding-bottom: 5px;
8642    padding-bottom: 12.5px !important;
8643    padding-top: 12.5px !important;
8644 }
8645 .srp-cta a:last-of-type {
8646    margin-bottom: 0px !important;
8647}
8648/*Vin-Stock Container styles*/
8649/*TP CTA*/
8650.dv-tp-cta {
8651    width: 100%;
8652    display: block;
8653    border: 0;
8654    padding: 14px;
8655    box-sizing: border-box;
8656    margin-bottom: 12.5px;
8657    font-size:0.8rem;
8658}
8659
8660.dv-tp-cta:hover {
8661    cursor: pointer;
8662    background: #000;
8663}
8664/*TP CTA*/</style>
8665<!-- Modals -->
8666<!-- Twilio Modal -->
8667
8668<!-- Youtube Player Modal -->
8669<div class="modal fade" tabindex="-1" role="dialog" id="youtube_modal">
8670    <div class="modal-dialog youtube-embed" role="document">
8671        <div class="modal-content youtube-embed">
8672            <div class="modal-body youtube-modal-body">
8673                <div id="ytplayer"></div>
8674            </div>
8675        </div><!-- /.modal-content -->
8676    </div><!-- /.modal-dialog -->
8677</div><!-- /.modal -->
8678
8679<!-- compare Player Modal -->
8680<div class="modal fade" tabindex="-1" role="dialog" id="compare_modal">
8681    <div class="modal-dialog compare-embed" role="document">
8682        <div class="modal-content compare-embed">
8683            <div class="modal-body compare-modal-body">
8684                <div id="ytplayer"></div>
8685            </div>
8686        </div><!-- /.modal-content -->
8687    </div><!-- /.modal-dialog -->
8688</div><!-- /.modal -->
8689
8690<div class="modal fade" tabindex="-1" role="dialog" id="custom_modal" style="padding: 20px">
8691    <div class="modal-dialog custom-embed" role="document">
8692        <div class="modal-content custom-embed">
8693            <div class="modal-body custom-modal-body">
8694                <div id="custom_player"></div>
8695            </div>
8696        </div><!-- /.modal-content -->
8697    </div><!-- /.modal-dialog -->
8698</div><!-- /.modal -->
8699
8700<div class="cd-panel cd-panel--from-right js-cd-panel-main">
8701    <section class="cd-panel__header">
8702        <p id="popup_left_title"></p>
8703        <a href="javascript:void(0);" class="cd-panel__close js-cd-close">Close</a>
8704    </section>
8705    <div class="cd-panel__container">
8706        <div class="cd-panel__subheader">
8707            <div class="cd-panel__subheader-left">
8708                <h4 id="popup_left_vehicle_title"></h4>
8709                <p>Stock: <span id="popup_left_stock_number"></span> <span>|</span> Vin: <span id="popup_left_vin"></span></p>
8710            </div>
8711        </div>
8712        <div class="cd-panel__content">
8713            <div class="forms_container">
8714                <div class="popup_form" id="srp_form_container" style="display: none;">
8715                </div>
8716
8717                <div id="payment_calculator_container" style="display: none;">
8718					                        <style>
8719                            .dv-payment-calculator {
8720                                max-width: 1428.75px;
8721                                margin: 0 auto;
8722                                font-family: inherit;
8723                                background: #fff;
8724                            }
8725                            .dv-payment-calculator .dv-calculator-disclaimer {
8726                                padding: 25px;
8727                                font-size: 14px;
8728                                color: #879099;
8729                            }
8730                            @media screen and (max-width: 768px) {
8731                                .dv-payment-calculator {
8732                                    padding: 25px;
8733                                }
8734                            }
8735                            .dv-payment-calculator h2 {
8736                                font-size: 24px;
8737                                font-weight: bold;
8738                                padding: 25px 50px
8739                            }
8740                            .dv-payment-calculator * {
8741                                box-sizing: border-box;
8742                            }
8743                            .dv-payment-calculator .dv-payment-calculator-container {
8744                                display: block;
8745                            }
8746                            .dv-payment-calculator .dv-payment-calculator-container .dv-payment-calculator-calc {
8747                                background: #fff;
8748                                padding: 0 50px;
8749                            }
8750                            @media screen and (max-width: 768px) {
8751                                .dv-payment-calculator .dv-payment-calculator-container .dv-payment-calculator-calc {
8752                                    margin-bottom: 50px;
8753                                }
8754                            }
8755                            .dv-payment-calculator .dv-payment-calculator-container .dv-payment-calculator-col {
8756                                width: 100%;
8757                            }
8758                            .dv-payment-calculator .dv-payment-calculator-wrapper {
8759                                display: -webkit-box;
8760                                display: flex;
8761                                width: 100%;
8762                            }
8763                            .dv-payment-calculator .dv-payment-calculator-results .dv-payment-calculator-wrapper {
8764                                padding: 0 50px;
8765                            }
8766                            .dv-payment-calculator .dv-payment-calculator-wrapper .dv-payment-calculator-col-12 {
8767                                width: 100%;
8768                                -webkit-box-flex: 1;
8769                                flex: 1 1 100%;
8770                            }
8771                            .dv-payment-calculator .dv-payment-calculator-wrapper .dv-payment-calculator-col-8 {
8772                                width: 66.66666667%;
8773                                -webkit-box-flex: 1;
8774                                flex: 1 1 66.66666667%;
8775                            }
8776                            .dv-payment-calculator .dv-payment-calculator-wrapper .dv-payment-calculator-col-6 {
8777                                margin: 0px 25px 0 0;
8778                                width: calc(1 / 2 * 100% - (1 - 1 / 2) * 25px);
8779                                -webkit-box-flex: 1;
8780                                flex: 1 1 calc(1 / 2 * 100% - (1 - 1 / 2) * 25px);
8781                            }
8782                            .dv-payment-calculator .dv-payment-calculator-wrapper .dv-payment-calculator-col-6:nth-child(2n) {
8783                                margin-right: 0;
8784                            }
8785                            .dv-payment-calculator .dv-payment-calculator-wrapper .dv-payment-calculator-col-4 {
8786                                width: 33.33333%;
8787                                -webkit-box-flex: 1;
8788                                flex: 1 1 33.33333%;
8789                                }
8790                            .dv-payment-calculator .dv-payment-calculator-wrapper .dv-payment-calculator-col-3 {
8791                                width: 25%;
8792                                -webkit-box-flex: 1;
8793                                flex: 1 1 25%;
8794                                margin: 0 25px;
8795                            }
8796                            .dv-payment-calculator .dv-payment-calculator-input-group {
8797                                position: relative;
8798                                margin: 25px 0;
8799                            }
8800                            .dv-payment-calculator .dv-payment-calculator-input-group label {
8801                                display: block;
8802                                padding: 0 0 10px 0;
8803                                font-size: 16px;
8804                                color: #879099;
8805                                font-weight: 500;
8806                                width: 100%;
8807                            }
8808                            .dv-payment-calculator .dv-payment-calculator-input-group label #dv-payment-calculator-range-value {
8809                                display: block;
8810                                float: right;
8811                                margin: 0;
8812                            }
8813                            .dv-payment-calculator .dv-payment-calculator-input-group .dv-payment-calculator-range-list {
8814                                display: -webkit-box;
8815                                display: flex;
8816                                width: 100%;
8817                                -webkit-box-pack: justify;
8818                                justify-content: space-between;
8819                                margin-top: 0px;
8820                                padding-top: 0px;
8821                            }
8822                            .dv-payment-calculator .dv-payment-calculator-input-group .dv-payment-calculator-range-list option {
8823                                width: 3ex;
8824                                display: -webkit-box;
8825                                display: flex;
8826                                -webkit-box-pack: center;
8827                                justify-content: center;
8828                                height: 42px;
8829                                -webkit-box-align: end;
8830                                align-items: end;
8831                                height: 4ex;
8832                            }
8833                            .dv-payment-calculator .dv-payment-calculator-input-group .dv-payment-calculator-range-list option:before {
8834                                content: attr(value);
8835                                font-size: 12px;
8836                                color: rgba(0,0,0,0.32);
8837                                display: block;
8838                            }
8839                            .dv-payment-calculator .dv-payment-calculator-input-group input {
8840                                border: none;
8841                                border-bottom: 1px solid #e1e6eb;
8842                                padding-left: 15px;
8843                                color: #879099;
8844                                padding: 5px 5px 5px 25px;
8845                                font-size: 14px;
8846                                font-family: inherit;
8847                                outline: none;
8848                                line-height: 1;
8849                                width: 100%;
8850                            }
8851                            .dv-payment-calculator .dv-payment-calculator-input-group input[type=range] {
8852                                padding: 10px 0 0 0;
8853                                border-bottom: 0;
8854                                -webkit-appearance: none;
8855                                -moz-appearance: none;
8856                                margin: 10px 0 0 0;
8857                                width: 100%;
8858                            }
8859                            .dv-payment-calculator .dv-payment-calculator-input-group input[type=range]:focus {
8860                                outline: none;
8861                            }
8862                            .dv-payment-calculator .dv-payment-calculator-input-group input[type=range]:focus::-webkit-slider-runnable-track {
8863                                background: #2fd566;
8864                            }
8865                            .dv-payment-calculator .dv-payment-calculator-input-group input[type=range]:focus::-ms-fill-lower {
8866                                background: #2fd566;
8867                            }
8868                            .dv-payment-calculator .dv-payment-calculator-input-group input[type=range]:focus::-ms-fill-upper {
8869                                background: #2fd566;
8870                            }
8871                            .dv-payment-calculator .dv-payment-calculator-input-group input[type=range]::-webkit-slider-runnable-track {
8872                                width: 100%;
8873                                height: 5px;
8874                                cursor: pointer;
8875                                animate: 0.2s;
8876                                box-shadow: 0px 0px 0px #000;
8877                                background: #2fd566;
8878                                border-radius: 1px;
8879                                border: 0px solid #000;
8880                            }
8881                            .dv-payment-calculator .dv-payment-calculator-input-group input[type=range]::-webkit-slider-thumb {
8882                                box-shadow: 0px 0px 0px #000;
8883                                border: 1px solid #171a1d;
8884                                height: 18px;
8885                                width: 18px;
8886                                border-radius: 25px;
8887                                background: #fff;
8888                                cursor: pointer;
8889                                -webkit-appearance: none;
8890                                margin-top: -7px;
8891                            }
8892                            .dv-payment-calculator .dv-payment-calculator-input-group input[type=range]::-moz-range-track {
8893                                width: 100%;
8894                                height: 5px;
8895                                cursor: pointer;
8896                                animate: 0.2s;
8897                                box-shadow: 0px 0px 0px #000;
8898                                background: #2fd566;
8899                                border-radius: 1px;
8900                                border: 0px solid #000;
8901                            }
8902                            .dv-payment-calculator .dv-payment-calculator-input-group input[type=range]::-moz-range-thumb {
8903                                box-shadow: 0px 0px 0px #000;
8904                                border: 1px solid #171a1d;
8905                                height: 18px;
8906                                width: 18px;
8907                                border-radius: 25px;
8908                                background: #fff;
8909                                cursor: pointer;
8910                            }
8911                            .dv-payment-calculator .dv-payment-calculator-input-group input[type=range]::-ms-track {
8912                                width: 100%;
8913                                height: 5px;
8914                                cursor: pointer;
8915                                animate: 0.2s;
8916                                background: transparent;
8917                                border-color: transparent;
8918                                color: transparent;
8919                            }
8920                            .dv-payment-calculator .dv-payment-calculator-input-group input[type=range]::-ms-fill-lower {
8921                                background: #2fd566;
8922                                border: 0px solid #000;
8923                                border-radius: 2px;
8924                                box-shadow: 0px 0px 0px #000;
8925                            }
8926                            .dv-payment-calculator .dv-payment-calculator-input-group input[type=range]::-ms-fill-upper {
8927                                background: #2fd566;
8928                                border: 0px solid #000;
8929                                border-radius: 2px;
8930                                box-shadow: 0px 0px 0px #000;
8931                            }
8932                            .dv-payment-calculator .dv-payment-calculator-input-group input[type=range]::-ms-thumb {
8933                                margin-top: 1px;
8934                                box-shadow: 0px 0px 0px #000;
8935                                border: 1px solid #171a1d;
8936                                height: 18px;
8937                                width: 18px;
8938                                border-radius: 25px;
8939                                background: #fff;
8940                                cursor: pointer;
8941                            }
8942                            .dv-payment-calculator .dv-payment-calculator-input-group span {
8943                                position: absolute;
8944                                left: 0;
8945                                bottom: 11px;
8946                                color: #879099;
8947                                font-size: 14px;
8948                                line-height: 1;
8949                            }
8950                            .dv-payment-calculator .dv-payment-calculator-results {
8951                                background: #141518;
8952                                padding-bottom: 25px;
8953                            }
8954                            .dv-payment-calculator .dv-payment-calculator-results .dv-payment-calculator-results-header {
8955                                padding: 25px 50px;
8956                            }
8957                            .dv-payment-calculator .dv-payment-calculator-results p {
8958                                font-size: 18px;
8959                                color: #fff;
8960                                margin: 0;
8961                            }
8962                            .dv-payment-calculator .dv-payment-calculator-results .dv-payment-calculator-col-3 {
8963                                margin: 0;
8964                            }
8965                            .dv-payment-calculator .dv-payment-calculator-results .dv-payment-calculator-input-group {
8966                                margin-top: 0;
8967                                margin-bottom: 0;
8968                            }
8969                            .dv-payment-calculator .dv-payment-calculator-results .dv-payment-calculator-input-group label {
8970                                font-size: 10px;
8971                                font-weight: bold;
8972                                padding-bottom: 5px;
8973                            }
8974                            .dv-payment-calculator .dv-payment-calculator-results .dv-payment-calculator-input-group p {
8975                                background: transparent;
8976                                color: #fff;
8977                                border-bottom: none;
8978                                font-size: 20px;
8979                                font-weight: 600;
8980                                letter-spacing: 1px;
8981                                font-family: inherit;
8982                                margin: 0;
8983                            }
8984                            @media screen and (max-width: 768px) {
8985                                .dv-payment-calculator .dv-payment-calculator-wrapper {
8986                                    display: block;
8987                                }
8988                                .dv-payment-calculator .dv-payment-calculator-wrapper [class*='dv-payment-calculator-col'] {
8989                                    width: 100%;
8990                                    -webkit-box-flex: 1;
8991                                    flex: 1 1 100%;
8992                                }
8993                            }
8994                            @media screen and (max-width: 768px) {
8995                                .dv-payment-calculator .dv-payment-calculator-wrapper {
8996                                    font-size: 0;
8997                                }
8998                                .dv-payment-calculator .dv-payment-calculator-wrapper .dv-payment-calculator-col-3 {
8999                                    font-size: 0;
9000                                    display: inline-block;
9001                                    width: 50%;
9002                                }
9003                                .dv-payment-calculator .dv-payment-calculator-wrapper [class*='dv-payment-calculator-col'] {
9004                                    margin-bottom: 25px;
9005                                }
9006                                .dv-payment-calculator .dv-payment-calculator-wrapper [class*='dv-payment-calculator-col']:last-child {
9007                                    margin-bottom: 0;
9008                                }
9009                            }
9010
9011                        </style>
9012
9013                        <div class="dv-payment-calculator">
9014                            <div class="dv-payment-calculator-container">
9015                                <div class="dv-payment-calculator-col">
9016                                    <h2>Payment Calculator</h2>
9017                                    <div class="dv-payment-calculator-calc">
9018                                        <div class="dv-payment-calculator-wrapper">
9019                                            <div class="dv-payment-calculator-col-6">
9020                                                <div class="dv-payment-calculator-input-group">
9021                                                    <label for="Purchase Price">Purchase Price</label>
9022                                                    <span>$</span>
9023                                                    <input type="text" value="0" id="carPrice" placeholder="0" onChange="calculate()" tabindex="2" onkeypress="return (event.charCode !=8 && event.charCode ==0 || ( event.charCode == 46 || (event.charCode >= 48 && event.charCode <= 57)))">
9024                                                </div>
9025                                                <div class="dv-payment-calculator-input-group">
9026                                                    <label for="Tax Rate">Tax Rate</label>
9027                                                    <span>%</span>
9028                                                    <input type="text" id="taxRate" value="6" placeholder="0" onChange="calculate()" tabindex="4" onkeypress="return (event.charCode !=8 && event.charCode ==0 || ( event.charCode == 46 || (event.charCode >= 48 && event.charCode <= 57)))">
9029                                                </div>
9030                                                <div class="dv-payment-calculator-input-group">
9031                                                    <label for="APR">APR</label>
9032                                                    <span>%</span>
9033                                                    <input type="text" value="5.99" id="intRate" placeholder="0" onChange="calculate()" tabindex="6" onkeypress="return (event.charCode !=8 && event.charCode ==0 || ( event.charCode == 46 || (event.charCode >= 48 && event.charCode <= 57)))">
9034                                                </div>
9035                                            </div>
9036                                            <div class="dv-payment-calculator-col-6">
9037                                                <div class="dv-payment-calculator-input-group">
9038                                                    <label for="Trade-in Value">Trade-in Value</label>
9039                                                    <span>$</span>
9040                                                    <input type="text" value="0" id="tradeValue" placeholder="0" onChange="calculate()" tabindex="3" onkeypress="return (event.charCode !=8 && event.charCode ==0 || ( event.charCode == 46 || (event.charCode >= 48 && event.charCode <= 57)))">
9041                                                </div>
9042                                                <div class="dv-payment-calculator-input-group">
9043                                                    <label for="Trade-in Payoff Amount">Trade-in Payoff Amount</label>
9044                                                    <span>$</span>
9045                                                    <input type="text" value="0" id="tradePayoff" placeholder="0" onChange="calculate()" tabindex="4" onkeypress="return (event.charCode !=8 && event.charCode ==0 || ( event.charCode == 46 || (event.charCode >= 48 && event.charCode <= 57)))">
9046                                                </div>
9047                                                <div class="dv-payment-calculator-input-group">
9048                                                    <label for="Down Payment">Down Payment</label>
9049                                                    <span>$</span>
9050                                                    <input type="text" value="0" id="downPay" placeholder="0" onChange="calculate()" tabindex="5" onkeypress="return (event.charCode !=8 && event.charCode ==0 || ( event.charCode == 46 || (event.charCode >= 48 && event.charCode <= 57)))">
9051                                                </div>
9052                                            </div>
9053                                        </div>
9054                                        <div class="dv-payment-calculator-input-group">
9055                                            <label for="Loan Term">Loan Term <p id="dv-payment-calculator-range-value"></p></label>
9056                                            <input type="range" value="72" step="12" min="12" max="84" list="dv-range-list-options" id="termRate" class="dv-payment-calculator-range-input" onChange="calculate()" tabindex="7">
9057
9058                                            <datalist class="dv-payment-calculator-range-list" id="dv-range-list-options">
9059                                                <option value="12"> </option>
9060                                                <option value="24"> </option>
9061                                                <option value="36"> </option>
9062                                                <option value="48"> </option>
9063                                                <option value="60"> </option>
9064                                                <option value="72"> </option>
9065                                                <option value="84"> </option>
9066                                            </datalist>
9067                                        </div>
9068                                    </div>
9069                                </div>
9070                                <div class="dv-payment-calculator-col">
9071                                    <div class="dv-payment-calculator-results">
9072                                        <div class="dv-payment-calculator-results-header">
9073                                            <p>Payment Options</p>
9074                                        </div>
9075                                        <div class="dv-payment-calculator-wrapper">
9076                                            <div class="dv-payment-calculator-col-3">
9077                                                <div class="dv-payment-calculator-input-group">
9078                                                    <label for="Monthly Payment">Monthly Payment</label>
9079                                                    <p id="result">$0.00</p>
9080                                                </div>
9081                                            </div>
9082                                            <div class="dv-payment-calculator-col-3">
9083                                                <div class="dv-payment-calculator-input-group">
9084                                                    <label for="Bi-Weekly Payment">Bi-Weekly Payment</label>
9085                                                    <p id="result0">$0.00</p>
9086                                                </div>
9087                                            </div>
9088                                            <div class="dv-payment-calculator-col-3">
9089                                                <div class="dv-payment-calculator-input-group">
9090                                                    <label for="Weekly Payment">Weekly Payment</label>
9091                                                    <p id="result2">$0.00</p>
9092                                                </div>
9093                                            </div>
9094                                            <div class="dv-payment-calculator-col-3">
9095                                                <div class="dv-payment-calculator-input-group">
9096                                                    <label for="Total Amount Financed">Total Amount Financed</label>
9097                                                    <p id="principal">$0.00</p>
9098                                                </div>
9099                                            </div>
9100                                        </div>
9101                                        <div class="dv-payment-calculator-wrapper">
9102                                            <div class="dv-payment-calculator-col-3">
9103                                                <div class="dv-payment-calculator-input-group">
9104                                                    <label for="Total Amount Down">Total Amount Down</label>
9105                                                    <p id="totalAmountDown">$0.00</p>
9106                                                </div>
9107                                            </div>
9108                                        </div>
9109                                    </div>
9110                                </div>
9111                            </div>
9112                            <div class="dv-calculator-disclaimer">
9113                                <p>*Calculated payments are estimated. Title and other fees and incentives may not be included in this calculation, which is an estimate only. Monthly payment estimates are for informational purpose and do not represent a financing offer from the seller of this vehicle. Other taxes may apply. Please complete a finance application for rates that you qual
9113ify for.</p>
9114                            </div>
9115                        </div>
9116                        
9116<script>
9117                            $(function () {
9118                                // Term Range Selector
9119                                var PaymentCalcRange = function () {
9120                                    var SliderValueHTML = $("#dv-payment-calculator-range-value");
9121                                    var Slider = $(".dv-payment-calculator-range-input");
9122                                    SliderValueHTML.html(Slider.val() + " mo");
9123                                    $(document).on("input", ".dv-payment-calculator-range-input", function () {
9124                                        SliderValueHTML.html($(this).val() + " mo");
9125                                    });
9126                                };
9127                                PaymentCalcRange();
9128                                calculate();
9129                            });
9130
9131                            function calculate() {
9132                                //Get the values of all of elements, convert the strings into ints, create decimals for values that are percentages.
9133                                var carPrice = parseFloat(
9134                                    document.getElementById("carPrice").value.replace(/\$|,/g, "")
9135                                ) || 0;
9136                                var taxRate = (parseFloat(document.getElementById("taxRate").value) || 0) / 100;
9137                                var tradeValue = parseFloat(
9138                                    document.getElementById("tradeValue").value.replace(/\$|,/g, "")
9139                                ) || 0;
9140                                var tradePayoff = parseFloat(
9141                                    document.getElementById("tradePayoff").value.replace(/\$|,/g, "")
9142                                ) || 0;
9143                                var downPay = parseFloat(
9144                                    document.getElementById("downPay").value.replace(/\$|,/g, "")
9145                                ) || 0;
9146                                var intRate = parseFloat(document.getElementById("intRate").value) || 0;
9147                                var termRate = parseFloat(document.getElementById("termRate").value);
9148
9149                                //Calculate the principal
9150                                // Trade-in equity offsets the down payment; the combined amount is subtracted once.
9151                                var taxAmount = carPrice * taxRate;
9152                                var carWithTax = carPrice + taxAmount;
9153                                var tradeEquity = parseFloat((tradeValue - tradePayoff).toFixed(2));
9154                                var totalAmountDown = parseFloat((downPay + tradeEquity).toFixed(2));
9155                                var carPrincipal = (carWithTax - totalAmountDown).toFixed(2);
9156                                var intMonth = (intRate/100) / 12;
9157
9158                                // Calculate Monthly/Bi-Weekly/Weekly Payments
9159                                var monthly =
9160                                    intMonth === 0
9161                                        ? parseInt(carPrincipal / termRate).toFixed(2)
9162                                        : interest(carPrincipal, intMonth, termRate);
9163                                var biWeekly = parseFloat(monthly / 2).toFixed(2);
9164                                var weekly = parseFloat(monthly / 4).toFixed(2);
9165
9166                                //Update the principal element with the new value.
9167                                var carPrincipalFormatted = carPrincipal < 0
9168                                    ? "-$" + numberWithCommas(Math.abs(carPrincipal).toFixed(2).toString())
9169                                    : "$" + numberWithCommas(carPrincipal.toString());
9170                                document.getElementById("principal").innerHTML = carPrincipalFormatted;
9171
9172                                //Set the final calculated payment to the result element.
9173                                document.getElementById("result").innerHTML = "$" + monthly;
9174                                document.getElementById("result0").innerHTML = "$" + biWeekly;
9175                                document.getElementById("result2").innerHTML = "$" + weekly;
9176
9177                                var totalAmountDownFormatted = totalAmountDown < 0
9178                                    ? "-$" + numberWithCommas(Math.abs(totalAmountDown).toFixed(2).toString())
9179                                    : "$" + numberWithCommas(totalAmountDown.toFixed(2).toString());
9180                                document.getElementById("totalAmountDown").innerHTML = totalAmountDownFormatted;
9181                            }
9182
9183                            function numberWithCommas(x) {
9184                                return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
9185                            }
9186
9187                            function interest(principal, intRate, term) {
9188                                var int1 = 1 + intRate;
9189                                var intEx = int1 * int1;
9190                                for (var i = 0; i < term - 2; i++) {
9191                                    intEx = intEx * int1;
9192                                }
9193                                var intEx1 = intEx - 1;
9194                                var intEx2 = intRate / intEx1;
9195                                var intEx3 = intEx2 + intRate;
9196                                var pay = intEx3 * principal;
9197                                return pay.toFixed(2);
9198                            }
9199
9200                        </script>
9200
9201                </div>
9202            </div>
9203        </div> <!-- cd-panel__content -->
9204    </div> <!-- cd-panel__container -->
9205    <div class="cd-panel__otherside">
9206    </div>
9207</div> <!-- cd-panel -->
9208    <footer>
9209        <!-- sub-footer -->
9210<div class="row">
9211    <div class="footer_top"
9212        style="background: linear-gradient(rgba(0,0,0,0.7), rgba(0,0,0,0.7)), url(); background-position:center center; background-size: cover;">
9213        <div class="footer_container">
9214            <div class="row footer-links">
9215
9216                <div class="foot3 footer-soc-icons footer-bar1">
9217                    <div id="footer-sidebar1">
9218                        <h5>Stay Connected</h5>
9219<a href="https://www.facebook.com/BrewerAirportToyota/" target='_blank'><i class="fab fa-facebook fa-2x" style="color:#3C5A99;"></i></a>
9220<a href="https://twitter.com/BrewerToyota" target='_blank'><i class="fa-brands fa-x-twitter fa-2x" style="color:#FFF;"></i></a>
9221<!--<a href="" target='_blank'><i class="fab fa-instagram fa-2x" style="color:#C13584;"></i></a> 
9222<a href="" target='_blank'><i class="fab fa-youtube fa-2x" style="color:#FF0000;"></i></a>-->
9223
9224<!--<h5>Stay Connected</h5>
9225<a href="/facebook/" data-lity><i class="fab fa-facebook-f fa-2x" style="color:#3C5A99;"></i></a>
9226<a href="/twitter/" data-lity><i class="fab fa-twitter fa-2x" style="color:#1DA1F2;"></i></a>
9227<a href="/instagram/" data-lity><i class="fab fa-instagram fa-2x" style="color:#C13584;"></i></a> 
9228<a href="/youtube/" data-lity><i class="fab fa-youtube fa-2x" style="color:#FF0000;"></i></a>-->                                            </div>
9229                </div>
9230
9231                <div class="foot3 footer-middle-sec">
9232                    <div id="footer-sidebar2">
9233                        <h5>Call Us</h5>
9234<a data-ag-event="clickToCall" data-ag-event-set-prop="clickToCallDepartment|Sales" href="tel:412.265.4743" class="telephone">412.265.4743</a>
9235<div>
9236<h5>Get Directions</h5>
9237<a data-ag-event="getDirections" target="_blank" href="https://maps.app.goo.gl/1J7BChWkZVkUyzg67"><span class='dealer-full-address'><span>8900 University Blvd </span><span> </span><span></span><span>Moon Township, </span><span>PA </span><span>15108 </span></span></a>
9238</div>                    </div>
9239                </div>
9240
9241                <div class="foot3 quicklinks">
9242                    <h5>Quick Links</h5>
9243                    <div id="footer-sidebar3">
9244                        <aside id="nav_menu-2" class="widget widget_nav_menu"><div class="menu-quick-links-container"><ul id="menu-quick-links" class="menu"><li id="menu-item-76742" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-76742"><a data-ag-event="menu_interaction" style="" data-element_type="new-vehicles" href="https://www.brewerairporttoyota.com/" class="menu-image-title-after"><span class="menu-image-title">Home</span></a></li>
9245<li id="menu-item-76763" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-76763"><a data-ag-event="menu_interaction" style="" data-element_type="new-vehicles" href="/service/" class="menu-image-title-after"><span class="menu-image-title">Service Center</span></a></li>
9246<li id="menu-item-76762" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-76762"><a data-ag-event="menu_interaction" style="" data-element_type="new-vehicles" href="https://www.brewerairporttoyota.com/about/" class="menu-image-title-after"><span class="menu-image-title">About Us</span></a></li>
9247<li id="menu-item-76743" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-16 current_page_item menu-item-76743"><a data-ag-event="menu_interaction" style="" data-element_type="new-vehicles" href="https://www.brewerairporttoyota.com/new-vehicles/" class="menu-image-title-after"><span class="menu-image-title">New Vehicles</span></a></li>
9248<li id="menu-item-77508" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-77508"><a data-ag-event="menu_interaction" style="" data-element_type="new-vehicles" href="https://www.brewerairporttoyota.com/service/schedule-service/" class="menu-image-title-after"><span class="menu-image-title">Schedule Service</span></a></li>
9249<li id="menu-item-76746" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-76746"><a data-ag-event="menu_interaction" style="" data-element_type="new-vehicles" href="https://www.brewerairporttoyota.com/contact/" class="menu-image-title-after"><span class="menu-image-title">Contact Us</span></a></li>
9250<li id="menu-item-77509" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-77509"><a data-ag-event="menu_interaction" style="" data-element_type="new-vehicles" href="/new-vehicles/?flags.type=Special" class="menu-image-title-after"><span class="menu-image-title">New Vehicle Specials</span></a></li>
9251<li id="menu-item-76747" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-76747"><a data-ag-event="menu_interaction" style="" data-element_type="new-vehicles" href="https://www.brewerairporttoyota.com/finance/" class="menu-image-title-after"><span class="menu-image-title">Finance Center</span></a></li>
9252<li id="menu-item-77510" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-77510"><a data-ag-event="menu_interaction" style="" data-element_type="new-vehicles" href="https://www.brewerairporttoyota.com/hours-and-directions/" class="menu-image-title-after"><span class="menu-image-title">Hours &amp; Directions</span></a></li>
9253<li id="menu-item-76744" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-76744"><a data-ag-event="menu_interaction" style="" data-element_type="new-vehicles" href="https://www.brewerairporttoyota.com/used-vehicles/" class="menu-image-title-after"><span class="menu-image-title">Pre-Owned Vehicles</span></a></li>
9254<li id="menu-item-77511" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-77511"><a data-ag-event="menu_interaction" style="" data-element_type="new-vehicles" href="https://www.brewerairporttoyota.com/finance/finance-application/" class="menu-image-title-after"><span class="menu-image-title">Finance Application</span></a></li>
9255<li id="menu-item-76767" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-76767"><a data-ag-event="menu_interaction" style="" data-element_type="new-vehicles" href="https://www.brewerairporttoyota.com/meet-the-team/" class="menu-image-title-after"><span class="menu-image-title">Meet The Team</span></a></li>
9256<li id="menu-item-76764" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-76764"><a data-ag-event="menu_interaction" style="" data-element_type="new-vehicles" href="/parts/" class="menu-image-title-after"><span class="menu-image-title">Parts Center</span></a></li>
9257<li id="menu-item-76765" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-76765"><a data-ag-event="menu_interaction" style="" data-element_type="new-vehicles" href="/value-trade/" class="menu-image-title-after"><span class="menu-image-title">Value Your Trade</span></a></li>
9258<li id="menu-item-76748" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-privacy-policy menu-item-76748"><a data-ag-event="menu_interaction" style="" data-element_type="new-vehicles" href="https://www.brewerairporttoyota.com/privacy-policy/" class="menu-image-title-after"><span class="menu-image-title">Privacy Policy</span></a></li>
9259<li id="menu-item-77512" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-77512"><a data-ag-event="menu_interaction" style="" data-element_type="new-vehicles" href="https://www.brewerairporttoyota.com/vehicle-finder-service/" class="menu-image-title-after"><span class="menu-image-title">Vehicle Finder Service</span></a></li>
9260<li id="menu-item-76766" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-76766"><a data-ag-event="menu_interaction" style="" data-element_type="new-vehicles" target="_blank" href="https://www.toyota.com/recall/" class="menu-image-title-after"><span class="menu-image-title">Safety Recalls &#038; Service Campaigns</span></a></li>
9261</ul></div></aside>                    </div>
9262                </div>
9263            </div>
9264
9265            <div class="row">
9266                <div class="footer_bottom-light"
9267                >
9268                    <div class="footer-powered-container">
9269                        <div class="footer-copyright">
9270                            <h6><p>&copy; 2026 Brewer Airport Toyota.&nbsp;</p>
9271                                <a href="/sitemap.xml">Sitemap</a> <p>|</p>
9272                                <a href="/privacy-policy/">Privacy Policy</a>
9273                            </h6>
9274                        </div>
9275                        <div class="footer-powered">
9276                            <h6>
9277                                <p>Advanced Automotive Websites By</p>
9278                                <a href="https://dealeralchemist.com" target="_blank">
9279                                    <h6>Dealer Alchemist</h6>
9280                                </a>
9281                            </h6>
9282                        </div>
9283                    </div>
9284                </div>
9285            </div>
9286        </div>
9287    </div>
9288</div>
9289
9290<style>table.mabel-bhi-businesshours tr.mbhi-is-current {
9291background: #E9E9E9;
9292}
9293
9294.dv-alertbar {
9295    display: flex !important;
9296    top: 0 !important;
9297}
9298</style><!-- DV Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 9298-9299
9298
9299<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
9299GTM-P288V3RS
vendor: 91 bytes, lines 9299-9300
9299" height="0" width="0"
9300        style="display:none;visibility:hidden"></iframe></noscript>
9301<!-- DV End Google Tag Manager (noscript) -->
9302
9303<script type='text/javascript' src='https://www.brewerairporttoyota.com/wp/wp-includes/js/jquery/jquery.min.js?ver=3.6.0' id='jquery-core-js'></script>
vendor: 1 bytes, line 9303
9303
9304<script type='text/javascript' id='wp-api-request-js-extra'>
9305/* <![CDATA[ */
9306var wpApiSettings = {"root":"https:\/\/www.brewerairporttoyota.com\/wp-json\/","nonce":"aa9508e6a2","versionString":"wp\/v2\/"};
9307/* ]]> */
9308</script>
vendor: 1 bytes, line 9308
9308
9309<script type='text/javascript' src='https://www.brewerairporttoyota.com/wp/wp-includes/js/api-request.min.js?ver=5.9.5' id='wp-api-request-js'></script>
vendor: 1 bytes, line 9309
9309
9310<script type='text/javascript' id='mabel-business-hours-indicator-pro-js-extra'>
9311/* <![CDATA[ */
9312var mabel_script_vars = {"ajaxurl":"https:\/\/www.brewerairporttoyota.com\/wp\/wp-admin\/admin-ajax.php","locations":[{"Name":"Parts","Timezone":"America\/New_York","Type":"AutoPartsStore","Days":[{"Day":"Monday","Hours":[{"From":"7:00","To":"7:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Tuesday","Hours":[{"From":"7:00","To":"7:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Wednesday","Hours":[{"From":"7:00","To":"7:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Thursday","Hours":[{"From":"7:00","To":"7:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Friday","Hours":[{"From":"7:00","To":"5:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Saturday","Hours":[{"From":"7:30","To":"4:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Sunday","Hours":[{"From":"0","To":"0","ToIndication":"PM","FromIndication":"AM"}]}],"Holidays":[],"Vacations":[]},{"Name":"Collision Center","Timezone":"America\/New_York","Type":"AutoBodyShop","Days":[{"Day":"Monday","Hours":[{"From":"0","To":"0","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Tuesday","Hours":[{"From":"0","To":"0","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Wednesday","Hours":[{"From":"0","To":"0","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Thursday","Hours":[{"From":"0","To":"0","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Friday","Hours":[{"From":"0","To":"0","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Saturday","Hours":[{"From":"0","To":"0","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Sunday","Hours":[{"From":"0","To":"0","ToIndication":"PM","FromIndication":"AM"}]}],"Holidays":[],"Vacations":[]},{"Name":"Sales","Timezone":"America\/New_York","Type":"AutoDealer","Days":[{"Day":"Monday","Hours":[{"From":"9:00","To":"8:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Tuesday","Hours":[{"From":"9:00","To":"8:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Wednesday","Hours":[{"From":"9:00","To":"8:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Thursday","Hours":[{"From":"9:00","To":"8:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Friday","Hours":[{"From":"9:00","To":"6:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Saturday","Hours":[{"From":"9:00","To":"5:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Sunday","Hours":[{"From":"0","To":"0","ToIndication":"PM","FromIndication":"AM"}]}],"Holidays":[],"Vacations":[],"Image":""},{"Name":"Service","Timezone":"America\/New_York","Type":"AutoRepair","Days":[{"Day":"Monday","Hours":[{"From":"7:00","To":"7:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Tuesday","Hours":[{"From":"7:00","To":"7:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Wednesday","Hours":[{"From":"7:00","To":"7:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Thursday","Hours":[{"From":"7:00","To":"7:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Friday","Hours":[{"From":"7:00","To":"5:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Saturday","Hours":[{"From":"7:30","To":"4:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Sunday","Hours":[{"From":"0","To":"0","ToIndication":"PM","FromIndication":"AM"}]}],"Holidays":[],"Vacations":[],"Image":""},{"Name":"Rental","Timezone":"America\/New_York","Type":"AutoRental","Days":[{"Day":"Monday","Hours":[{"From":"0","To":"0","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Tuesday","Hours":[{"From":"0","To":"0","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Wednesday","Hours":[{"From":"0","To":"0","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Thursday","Hours":[{"From":"0","To":"0","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Friday","Hours":[{"From":"0","To":"0","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Saturday","Hours":[{"From":"0","To":"0","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Sunday","Hours":[{"From":"0","To":"0","ToIndication":"PM","FromIndication":"AM"}]}],"Holidays":[],"Vacations":[],"Image":""},{"Name":"Dealership","Timezone":"America\/New_York","Type":"LocalBusiness","Days":[{"Day":"Monday","Hours":[{"From":"7:00","To":"8:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Tuesday","Hours":[{"From":"7:00","To":"8:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Wednesday","Hours":[{"From":"7:00","To":"8:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Thursday","Hours":[{"From":"7:00","To":"8:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Friday","Hours":[{"From":"7:00","To":"6:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Saturday","Hours":[{"From":"7:30","To":"5:00","ToIndication":"PM","FromIndication":"AM"}]},{"Day":"Sunday","Hours":[{"From":"0","To":"0","ToIndication":"PM","FromIndication":"AM"}]}],"Holidays":[],"Vacations":[],"Image":""}],"settings":{"dayentryseparator":" ","time_format":"12","warning":"45","warningclosing":"45","removezeroes":true,"includetime":false,"includeday":false,"approximation":true,"loading":"Welcome!","timezone":"America\/New_York"},"i18n":{"days":{"Monday":"Monday","Tuesday":"Tuesday","Wednesday":"Wednesday","Thursday":"Thursday","Frid
9312ay":"Friday","Saturday":"Saturday","Sunday":"Sunday"},"days_short":{"Monday":"Mon","Tuesday":"Tue","Wednesday":"Wed","Thursday":"Thu","Friday":"Fri","Saturday":"Sat","Sunday":"Sun"},"months":{"January":"January","February":"February","March":"March","April":"April","May":"May","June":"June","July":"July","August":"August","September":"September","October":"October","November":"November","December":"December"},"months_short":{"Jan":"Jan","Feb":"Feb","Mar":"Mar","Apr":"Apr","May":"May","Jun":"Jun","Jul":"Jul","Aug":"Aug","Sep":"Sept","Oct":"Oct","Nov":"Nov","Dec":"Dec"},"day":"day","days_text":"days","hour":"hour","hours":"hours","minute":"minute","minutes":"minutes","closed":"Closed"}};
9313/* ]]> */
9314</script>
vendor: 1 bytes, line 9314
9314
9315<script type='text/javascript' src='https://www.brewerairporttoyota.com/app/plugins/mabel-business-hours-indicator-pro/public/js/public.js?ver=3.3.9' id='mabel-business-hours-indicator-pro-js'></script>
vendor: 1 bytes, line 9315
9315
9316<script type='text/javascript' id='dds-scripts-js-extra'>
9317/* <![CDATA[ */
9318var get_dds_data = {"ajax_url":"https:\/\/www.brewerairporttoyota.com\/wp\/wp-admin\/admin-ajax.php"};
9319/* ]]> */
9320</script>
vendor: 1 bytes, line 9320
9320
9321<script type='text/javascript' src='https://www.brewerairporttoyota.com/app/themes/dv-framework/shortcodes/dropdown-search/dropdown-search.js?ver=1.620.828' id='dds-scripts-js'></script>
vendor: 1 bytes, line 9321
9321
9322<script type='text/javascript' src='https://www.brewerairporttoyota.com/app/themes/dv-framework/shortcodes/searchbox/searchbox.js?ver=1.533.837' id='dv-searchbox-scripts-js'></script>
vendor: 1 bytes, line 9322
9322
9323<script type='text/javascript' id='platform-shadow-js-after'>
9324(function () {
9325  function hydrate() {
9326    // Only act on hosts we mark, and only when the shadow root isn't already present.
9327    var hosts = document.querySelectorAll('.platform-linked-content[data-platform-shadow="1"]');
9328    for (var i = 0; i < hosts.length; i++) {
9329      var host = hosts[i];
9330      if (host.shadowRoot || !host.attachShadow) continue;
9331
9332      var t = host.querySelector('template[shadowrootmode]');
9333      if (!t) continue;
9334
9335      var mode = t.getAttribute('shadowrootmode') || 'open';
9336      var root = host.attachShadow({ mode: mode });
9337
9338      root.appendChild(t.content.cloneNode(true));
9339      t.remove();
9340    }
9341  }
9342
9343  if (document.readyState === 'loading') {
9344    document.addEventListener('DOMContentLoaded', hydrate);
9345  } else {
9346    hydrate();
9347  }
9348})();
9349</script>
vendor: 1 bytes, line 9349
9349
9350<script type='text/javascript' id='da-merge-tags-js-extra'>
9351/* <![CDATA[ */
9352var daMergeTags = {"timezone":"America\/New_York"};
9353/* ]]> */
9354</script>
vendor: 1 bytes, line 9354
9354
9355<script type='text/javascript' src='https://www.brewerairporttoyota.com/app/themes/dv-framework/components/Utils/merge-tags.min.js?ver=1.784.48' id='da-merge-tags-js'></script>
vendor: 1 bytes, line 9355
9355
9356<script type='text/javascript' id='get_srp_form-js-extra'>
9357/* <![CDATA[ */
9358var get_srp_form = {"ajax_url":"https:\/\/www.brewerairporttoyota.com\/wp\/wp-admin\/admin-ajax.php"};
9359/* ]]> */
9360</script>
vendor: 1 bytes, line 9360
9360
9361<script type='text/javascript' src='https://www.brewerairporttoyota.com/app/themes/dv-framework/media/js/srp-ajax.js?ver=1.776.838' id='get_srp_form-js'></script>
vendor: 1 bytes, line 9361
9361
9362<script type='text/javascript' id='script-ga4-js-extra'>
9363/* <![CDATA[ */
9364var AGEventManagerOptions = {"debug":"","trackingIDs":["G-PZJ9P58581","G-M3B4B59Q4Z"]};
9365/* ]]> */
9366</script>
vendor: 1 bytes, line 9366
9366
9367<script type="module" src="https://www.brewerairporttoyota.com/app/themes/dv-framework/components/EventsManager/public/latest.js?ver=1790226195"></script>
9367<script type='text/javascript' src='https://www.brewerairporttoyota.com/app/plugins/gravityforms/js/jquery.maskedinput.min.js?ver=2.4.6' id='gform_masked_input-js'></script>
vendor: 1 bytes, line 9367
9367
9368<script type='text/javascript' src='https://www.brewerairporttoyota.com/app/plugins/gravityforms/js/placeholders.jquery.min.js?ver=2.4.6' id='gform_placeholder-js'></script>
9368
9369        <div class="ag-kia-window-sticker-modal" data-kia-window-sticker-modal aria-hidden="true">
9370            <div class="ag-kia-window-sticker-modal__backdrop" data-kia-window-sticker-close></div>
9371            <div class="ag-kia-window-sticker-modal__dialog" role="dialog" aria-modal="true" aria-label="Factory Window Sticker">
9372                <button class="ag-kia-window-sticker-modal__close" type="button" data-kia-window-sticker-close aria-label="Close window sticker">&times;</button>
9373                <iframe class="ag-kia-window-sticker-modal__iframe" data-kia-window-sticker-frame title="Factory Window Sticker"></iframe>
9374            </div>
9375        </div>
9376        <style>
9377            .ag-kia-window-sticker-modal {
9378                position: fixed;
9379                z-index: 999999;
9380                top: 0;
9381                right: 0;
9382                bottom: 0;
9383                left: 0;
9384                display: none;
9385            }
9386            .ag-kia-window-sticker-modal.is-open {
9387                display: block;
9388            }
9389            .ag-kia-window-sticker-modal__backdrop {
9390                position: absolute;
9391                top: 0;
9392                right: 0;
9393                bottom: 0;
9394                left: 0;
9395                background: rgba(0, 0, 0, 0.72);
9396            }
9397            .ag-kia-window-sticker-modal__dialog {
9398                position: absolute;
9399                top: 50%;
9400                left: 50%;
9401                width: 82vw;
9402                max-width: 1560px;
9403                height: 88vh;
9404                max-height: 980px;
9405                transform: translate(-50%, -50%);
9406                background: #fff;
9407                box-shadow: 0 18px 48px rgba(0, 0, 0, 0.35);
9408            }
9409            .ag-kia-window-sticker-modal__close {
9410                position: absolute;
9411                z-index: 1;
9412                top: 8px;
9413                right: 10px;
9414                width: 34px;
9415                height: 34px;
9416                border: 0;
9417                border-radius: 50%;
9418                background: #222;
9419                color: #fff;
9420                font-size: 26px;
9421                line-height: 30px;
9422                cursor: pointer;
9423            }
9424            .ag-kia-window-sticker-modal__iframe {
9425                width: 100%;
9426                height: 100%;
9427                border: 0;
9428            }
9429            body.ag-kia-window-sticker-modal-open {
9430                overflow: hidden;
9431            }
9432            @media (max-width: 767px) {
9433                .ag-kia-window-sticker-modal__dialog {
9434                    width: calc(100vw - 20px);
9435                    height: calc(100vh - 20px);
9436                    max-height: none;
9437                }
9438            }
9439        </style>
9440        
9440<script>
9441            (function () {
9442                var modal = document.querySelector('[data-kia-window-sticker-modal]');
9443                var frame = document.querySelector('[data-kia-window-sticker-frame]');
9444                var activeTrigger = null;
9445
9446                if (!modal || !frame) {
9447                    return;
9448                }
9449
9450                function open(url, trigger) {
9451                    activeTrigger = trigger || null;
9452                    frame.setAttribute('src', url);
9453                    modal.classList.add('is-open');
9454                    modal.setAttribute('aria-hidden', 'false');
9455                    document.body.classList.add('ag-kia-window-sticker-modal-open');
9456                }
9457
9458                function close() {
9459                    modal.classList.remove('is-open');
9460                    modal.setAttribute('aria-hidden', 'true');
9461                    frame.removeAttribute('src');
9462                    document.body.classList.remove('ag-kia-window-sticker-modal-open');
9463
9464                    if (activeTrigger && typeof activeTrigger.focus === 'function') {
9465                        activeTrigger.focus();
9466                    }
9467                }
9468
9469                function closest(element, selector) {
9470                    while (element && element !== document) {
9471                        if (element.matches && element.matches(selector)) {
9472                            return element;
9473                        }
9474
9475                        element = element.parentNode;
9476                    }
9477
9478                    return null;
9479                }
9480
9481                window.AutoGoKiaWindowSticker = {
9482                    open: open,
9483                    close: close
9484                };
9485
9486                document.addEventListener('click', function (event) {
9487                    var link = closest(event.target, '[data-kia-window-sticker-link]');
9488
9489                    if (!link) {
9490                        link = closest(event.target, 'a[href*="/kia-window-sticker/"]');
9491                    }
9492
9493                    if (link) {
9494                        event.preventDefault();
9495                        event.stopImmediatePropagation();
9496                        open(link.href, link);
9497                    }
9498                }, true);
9499
9500                document.addEventListener('click', function (event) {
9501                    if (!closest(event.target, '[data-kia-window-sticker-close]')) {
9502                        return;
9503                    }
9504
9505                    event.preventDefault();
9506                    close();
9507                });
9508
9509                document.addEventListener('keyup', function (event) {
9510                    if ((event.key === 'Escape' || event.keyCode === 27) && modal.classList.contains('is-open')) {
9511                        close();
9512                    }
9513                });
9514            })();
9515        </script>
9515
9516        <!-- HFCM by 99 Robots - Snippet # 8: GTM Footer -->
9517<!-- Google Tag Manager (noscript) -->
vendor: 71 bytes, lines 9517-9518
9517  
9518<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
9518GTM-PQJDGJ
vendor: 89 bytes, lines 9518-9519
9518"  
9519height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>  
9520<!-- End Google Tag Manager (noscript) -->
9521<!-- /end HFCM by 99 Robots -->
9522<!-- HFCM by 99 Robots - Snippet # 3: USERway -->
9523<script src="https://cdn.userway.org/widget.js" data-account="SNSTzAU4BD"></script>
9523
9524<!-- /end HFCM by 99 Robots -->
9525<!-- Dealer Alchemist -->
9526<script>
9527  var _paq = window._paq = window._paq || [];
9528  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
9529  _paq.push(['trackPageView']);
9530  _paq.push(['enableLinkTracking']);
9531  (function() {
9532    var u="https://analytics.autogo.ai/";
9533    _paq.push(['setTrackerUrl', u+'js/tracker.php']);
9534    _paq.push(['setSiteId', '340']);
9535    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
9536    g.async=true; g.src=u+'js/tracker.php'; s.parentNode.insertBefore(g,s);
9537  })();
9538</script>
9538
9539<!-- End Dealer Alchemist Code -->
9540
9541<script type="application/ld+json" data-type="generalSchema">
9542{
9543    "@context": "https://www.schema.org",
9544    "@type": "AutoDealer",
9545    "@id":  "https://www.brewerairporttoyota.com/#brewerairporttoyota",
9546    "priceRange": "$-$$$",
9547    "name": "Brewer Airport Toyota",
9548    "url": "https://www.brewerairporttoyota.com",
9549    "telephone": "412.265.4743",
9550    "image": "https://bucket.dealervenom.com/brewer-airport-toyota/logo.png?auto=compress&amp;format=&amp;ixlib=php-1.2.1&amp;h=50&amp;w=200",
9551    "logo": "https://bucket.dealervenom.com/brewer-airport-toyota/logo.png?auto=compress&amp;format=&amp;ixlib=php-1.2.1&amp;h=50&amp;w=200",
9552    "address": {
9553    "@type": "PostalAddress",
9554    "streetAddress": "8900 University Blvd",
9555    "addressLocality": "Moon Township",
9556    "addressRegion": "PA",
9557    "postalCode": "15108",
9558    "addressCountry": "US"
9559},
9560    "openingHoursSpecification": [
9561    {
9562        "@type": "OpeningHoursSpecification",
9563        "dayOfWeek": [
9564            "Monday",
9565            "Tuesday",
9566            "Wednesday",
9567            "Thursday"
9568        ],
9569        "opens": "07:00",
9570        "closes": "19:00"
9571    },
9572    {
9573        "@type": "OpeningHoursSpecification",
9574        "dayOfWeek": [
9575            "Friday"
9576        ],
9577        "opens": "07:00",
9578        "closes": "17:00"
9579    },
9580    {
9581        "@type": "OpeningHoursSpecification",
9582        "dayOfWeek": [
9583            "Saturday"
9584        ],
9585        "opens": "07:30",
9586        "closes": "16:00"
9587    },
9588    {
9589        "@type": "OpeningHoursSpecification",
9590        "dayOfWeek": [
9591            "Sunday"
9592        ],
9593        "opens": "00:00",
9594        "closes": "12:00"
9595    },
9596    {
9597        "@type": "OpeningHoursSpecification",
9598        "dayOfWeek": [
9599            "Monday",
9600            "Tuesday",
9601            "Wednesday",
9602            "Thursday",
9603            "Friday",
9604            "Saturday",
9605            "Sunday"
9606        ],
9607        "opens": "00:00",
9608        "closes": "12:00"
9609    },
9610    {
9611        "@type": "OpeningHoursSpecification",
9612        "dayOfWeek": [
9613            "Monday",
9614            "Tuesday",
9615            "Wednesday",
9616            "Thursday"
9617        ],
9618        "opens": "09:00",
9619        "closes": "20:00"
9620    },
9621    {
9622        "@type": "OpeningHoursSpecification",
9623        "dayOfWeek": [
9624            "Friday"
9625        ],
9626        "opens": "09:00",
9627        "closes": "18:00"
9628    },
9629    {
9630        "@type": "OpeningHoursSpecification",
9631        "dayOfWeek": [
9632            "Saturday"
9633        ],
9634        "opens": "09:00",
9635        "closes": "17:00"
9636    },
9637    {
9638        "@type": "OpeningHoursSpecification",
9639        "dayOfWeek": [
9640            "Sunday"
9641        ],
9642        "opens": "00:00",
9643        "closes": "12:00"
9644    },
9645    {
9646        "@type": "OpeningHoursSpecification",
9647        "dayOfWeek": [
9648            "Monday",
9649            "Tuesday",
9650            "Wednesday",
9651            "Thursday"
9652        ],
9653        "opens": "07:00",
9654        "closes": "19:00"
9655    },
9656    {
9657        "@type": "OpeningHoursSpecification",
9658        "dayOfWeek": [
9659            "Friday"
9660        ],
9661        "opens": "07:00",
9662        "closes": "17:00"
9663    },
9664    {
9665        "@type": "OpeningHoursSpecification",
9666        "dayOfWeek": [
9667            "Saturday"
9668        ],
9669        "opens": "07:30",
9670        "closes": "16:00"
9671    },
9672    {
9673        "@type": "OpeningHoursSpecification",
9674        "dayOfWeek": [
9675            "Sunday"
9676        ],
9677        "opens": "00:00",
9678        "closes": "12:00"
9679    },
9680    {
9681        "@type": "OpeningHoursSpecification",
9682        "dayOfWeek": [
9683            "Monday",
9684            "Tuesday",
9685            "Wednesday",
9686            "Thursday",
9687            "Friday",
9688            "Saturday",
9689            "Sunday"
9690        ],
9691        "opens": "00:00",
9692        "closes": "12:00"
9693    },
9694    {
9695        "@type": "OpeningHoursSpecification",
9696        "dayOfWeek": [
9697            "Monday",
9698            "Tuesday",
9699            "Wednesday",
9700            "Thursday"
9701        ],
9702        "opens": "07:00",
9703        "closes": "20:00"
9704    },
9705    {
9706        "@type": "OpeningHoursSpecification",
9707        "dayOfWeek": [
9708            "Friday"
9709        ],
9710        "opens": "07:00",
9711        "closes": "18:00"
9712    },
9713    {
9714        "@type": "OpeningHoursSpecification",
9715        "dayOfWeek": [
9716            "Saturday"
9717        ],
9718        "opens": "07:30",
9719        "closes": "17:00"
9720    },
9721    {
9722        "@type": "OpeningHoursSpecification",
9723        "dayOfWeek": [
9724            "Sunday"
9725        ],
9726        "opens": "00:00",
9727        "closes": "12:00"
9728    }
9729],
9730    "department": [
9731    {
9732        "@type": "AutoPartsStore",
9733        "priceRange": "$-$$$",
9734        "name": "Parts",
9735        "address": {
9736            "@type": "PostalAddress",
9737            "streetAddress": "8900 University Blvd",
9738            "addressLocality": "Moon Township",
9739            "addressRegion": "PA",
9740            "postalCode": "15108",
9741            "addressCountry": "US"
9742        },
9743        "telephone": "412.265.4743",
9744        "openingHoursSpecification": [
9745            {
9746                "@type": "OpeningHoursSpecification",
9747                "dayOfWeek": [
9748                    "Monday",
9749                    "Tuesday",
9750                    "Wednesday",
9751                    "Thursday"
9752                ],
9753                "opens": "07:00",
9754                "closes": "19:00"
9755            },
9756            {
9757                "@type": "OpeningHoursSpecification",
9758                "dayOfWeek": [
9759                    "Friday"
9760                ],
9761                "opens": "07:00",
9762                "closes": "17:00"
9763            },
9764            {
9765                "@type": "OpeningHoursSpecification",
9766                "dayOfWeek": [
9767                    "Saturday"
9768                ],
9769                "opens": "07:30",
9770                "closes": "16:00"
9771            },
9772            {
9773                "@type": "OpeningHoursSpecification",
9774                "dayOfWeek": [
9775                    "Sunday"
9776                ],
9777                "opens": "00:00",
9778                "closes": "12:00"
9779            }
9780        ],
9781        "image": "https:\/\/bucket.dealervenom.com\/brewer-airport-toyota\/logo.png?auto=compress&format=&ixlib=php-1.2.1&h=50&w=200"
9782    },
9783    {
9784        "@type": "AutoBodyShop",
9785        "priceRange": "$-$$$",
9786        "name": "Collision Center",
9787        "address": {
9788            "@type": "PostalAddress",
9789            "streetAddress": "8900 University Blvd",
9790            "addressLocality": "Moon Township",
9791            "addressRegion": "PA",
9792            "postalCode": "15108",
9793            "addressCountry": "US"
9794        },
9795        "telephone": "412.265.4743",
9796        "openingHoursSpecification": [
9797            {
9798                "@type": "OpeningHoursSpecification",
9799                "dayOfWeek": [
9800                    "Monday",
9801                    "Tuesday",
9802                    "Wednesday",
9803                    "Thursday",
9804                    "Friday",
9805                    "Saturday",
9806                    "Sunday"
9807                ],
9808                "opens": "00:00",
9809                "closes": "12:00"
9810            }
9811        ],
9812        "image": "https:\/\/bucket.dealervenom.com\/brewer-airport-toyota\/logo.png?auto=compress&format=&ixlib=php-1.2.1&h=50&w=200"
9813    },
9814    {
9815        "@type": "AutoDealer",
9816        "priceRange": "$-$$$",
9817        "name": "Sales",
9818        "address": {
9819            "@type": "PostalAddress",
9820            "streetAddress": "8900 University Blvd",
9821            "addressLocality": "Moon Township",
9822            "addressRegion": "PA",
9823            "postalCode": "15108",
9824            "addressCountry": "US"
9825        },
9826        "telephone": "412.265.4743",
9827        "openingHoursSpecification": [
9828            {
9829                "@type": "OpeningHoursSpecification",
9830                "dayOfWeek": [
9831                    "Monday",
9832                    "Tuesday",
9833                    "Wednesday",
9834                    "Thursday"
9835                ],
9836                "opens": "09:00",
9837                "closes": "20:00"
9838            },
9839            {
9840                "@type": "OpeningHoursSpecification",
9841                "dayOfWeek": [
9842                    "Friday"
9843                ],
9844                "opens": "09:00",
9845                "closes": "18:00"
9846            },
9847            {
9848                "@type": "OpeningHoursSpecification",
9849                "dayOfWeek": [
9850                    "Saturday"
9851                ],
9852                "opens": "09:00",
9853                "closes": "17:00"
9854            },
9855            {
9856                "@type": "OpeningHoursSpecification",
9857                "dayOfWeek": [
9858                    "Sunday"
9859                ],
9860                "opens": "00:00",
9861                "closes": "12:00"
9862            }
9863        ],
9864        "image": "https:\/\/bucket.dealervenom.com\/brewer-airport-toyota\/logo.png?auto=compress&format=&ixlib=php-1.2.1&h=50&w=200"
9865    },
9866    {
9867        "@type": "AutoRepair",
9868        "priceRange": "$-$$$",
9869        "name": "Service",
9870        "address": {
9871            "@type": "PostalAddress",
9872            "streetAddress": "8900 University Blvd",
9873            "addressLocality": "Moon Township",
9874            "addressRegion": "PA",
9875            "postalCode": "15108",
9876            "addressCountry": "US"
9877        },
9878        "telephone": "412.265.4743",
9879        "openingHoursSpecification": [
9880            {
9881                "@type": "OpeningHoursSpecification",
9882                "dayOfWeek": [
9883                    "Monday",
9884                    "Tuesday",
9885                    "Wednesday",
9886                    "Thursday"
9887                ],
9888                "opens": "07:00",
9889                "closes": "19:00"
9890            },
9891            {
9892                "@type": "OpeningHoursSpecification",
9893                "dayOfWeek": [
9894                    "Friday"
9895                ],
9896                "opens": "07:00",
9897                "closes": "17:00"
9898            },
9899            {
9900                "@type": "OpeningHoursSpecification",
9901                "dayOfWeek": [
9902                    "Saturday"
9903                ],
9904                "opens": "07:30",
9905                "closes": "16:00"
9906            },
9907            {
9908                "@type": "OpeningHoursSpecification",
9909                "dayOfWeek": [
9910                    "Sunday"
9911                ],
9912                "opens": "00:00",
9913                "closes": "12:00"
9914            }
9915        ],
9916        "image": "https:\/\/bucket.dealervenom.com\/brewer-airport-toyota\/logo.png?auto=compress&format=&ixlib=php-1.2.1&h=50&w=200"
9917    },
9918    {
9919        "@type": "AutoRental",
9920        "priceRange": "$-$$$",
9921        "name": "Rental",
9922        "address": {
9923            "@type": "PostalAddress",
9924            "streetAddress": "8900 University Blvd",
9925            "addressLocality": "Moon Township",
9926            "addressRegion": "PA",
9927            "postalCode": "15108",
9928            "addressCountry": "US"
9929        },
9930        "telephone": "412.265.4743",
9931        "openingHoursSpecification": [
9932            {
9933                "@type": "OpeningHoursSpecification",
9934                "dayOfWeek": [
9935                    "Monday",
9936                    "Tuesday",
9937                    "Wednesday",
9938                    "Thursday",
9939                    "Friday",
9940                    "Saturday",
9941                    "Sunday"
9942                ],
9943                "opens": "00:00",
9944                "closes": "12:00"
9945            }
9946        ],
9947        "image": "https:\/\/bucket.dealervenom.com\/brewer-airport-toyota\/logo.png?auto=compress&format=&ixlib=php-1.2.1&h=50&w=200"
9948    },
9949    {
9950        "@type": "LocalBusiness",
9951        "priceRange": "$-$$$",
9952        "name": "Dealership",
9953        "address": {
9954            "@type": "PostalAddress",
9955            "streetAddress": "8900 University Blvd",
9956            "addressLocality": "Moon Township",
9957            "addressRegion": "PA",
9958            "postalCode": "15108",
9959            "addressCountry": "US"
9960        },
9961        "telephone": "412.265.4743",
9962        "openingHoursSpecification": [
9963            {
9964                "@type": "OpeningHoursSpecification",
9965                "dayOfWeek": [
9966                    "Monday",
9967                    "Tuesday",
9968                    "Wednesday",
9969                    "Thursday"
9970                ],
9971                "opens": "07:00",
9972                "closes": "20:00"
9973            },
9974            {
9975                "@type": "OpeningHoursSpecification",
9976                "dayOfWeek": [
9977                    "Friday"
9978                ],
9979                "opens": "07:00",
9980                "closes": "18:00"
9981            },
9982            {
9983                "@type": "OpeningHoursSpecification",
9984                "dayOfWeek": [
9985                    "Saturday"
9986                ],
9987                "opens": "07:30",
9988                "closes": "17:00"
9989            },
9990            {
9991                "@type": "OpeningHoursSpecification",
9992                "dayOfWeek": [
9993                    "Sunday"
9994                ],
9995                "opens": "00:00",
9996                "closes": "12:00"
9997            }
9998        ],
9999        "image": "https:\/\/bucket.dealervenom.com\/brewer-airport-toyota\/logo.png?auto=compress&format=&ixlib=php-1.2.1&h=50&w=200"
10000    }
10001]}
10002</script>
vendor: 1 bytes, line 10002
10002
10003<script type="text/javascript">
10004    
10005  jQuery(document).ready(function($) {
10006        
10007    let submittedVins = [];
10008    let vdpContainer = jQuery("#fixed-info-container");
10009    let isVDP = vdpContainer.length > 0;
10010    
10011    // Per Kyle / analytics team, quick form submissions should be considered
10012    // sales forms — set directly (rather than starting as 'Lead' and mutating
10013    // to 'sales' only after the first submission, which used to leak the
10014    // mutated state into engagement events and into any other quick form
10015    // sharing this same script instance on the page, e.g. one-per-listing-card
10016    // on an SRP).
10017    const ascFormDetails = {
10018      name: 'Quick Form',
10019      type: 'sales',
10020      department: 'sales'
10021    };
10022
10023    // Check if SD Analytics is available
10024    let haveSdAnalytics = true;
10025
10026    // Capture form input clicks
10027    jQuery(document).on("input", ".gform_quick_form input", function(e) {
10028      const form = $(e.target).closest("form")[0];
10029      QFFormInitiated(getFormData(e), form, e.target);
10030    });
10031
10032    function getFormData(e) {
10033      let form;
10034      if ( e !== null ) {
10035        form = $(e.target).closest("form");
10036      } else {
10037        form = $(this).closest("form");
10038      }
10039
10040      return {
10041        name: form.find("[name=da_quick_form_name]").val(),
10042        phone: form.find("[name=da_quick_form_phone]").val(),
10043        email: form.find("[name=da_quick_form_email]").val(),
10044        vin: form.find(".vin-field").val(),
10045        stockNumber: form.find(".stock-number-field").val(),
10046        year: form.find(".year-field").val(),
10047        make: form.find(".make-field").val(),
10048        model: form.find(".model-field").val(),
10049        trim: form.find(".trim-field").val(),
10050        msrp: form.find(".msrp-field").val(),
10051        finalPrice: form.find(".final-price-field").val(),
10052        dealerName: form.find(".dealer-name-field").val(),
10053        discountMatrix: form.find(".discount-matrix-field").val(),
10054        internetPrice: form.find(".internet-price-field").val(),
10055        condition: form.find(".condition-field").val(),
10056        vehicleUrl: form.find(".vehicle-url-field").val(),
10057      };
10058    }
10059
10060    function validatePhoneNumber(phone) {
10061      const cleaned = phone.replace(/[^0-9]/g, "");
10062
10063      if (cleaned.length < 10 || cleaned.length > 11) {
10064        return false;
10065      }
10066
10067      if (cleaned.length === 11 && cleaned[0] !== "1") {
10068        return false;
10069      }
10070
10071      const suspiciousPatterns = [
10072        /^(.)�{9,}$/,
10073        /^(12345678\d{2})$/,
10074        /^(98765432\d{2})$/,
10075        /^(0{10})$/
10076      ];
10077
10078      for (let pattern of suspiciousPatterns) {
10079        if (pattern.test(cleaned)) {
10080          return false;
10081        }
10082      }
10083
10084      return true;
10085    }
10086
10087    function validateEmail(email) {
10088      if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
10089        return false;
10090      }
10091
10092      const disposableDomains = [
10093        "tempmail.com", "throwaway.com", "mailinator.com",
10094        "temp-mail.org", "fakeinbox.com", "guerrillamail.com",
10095        "yopmail.com", "10minutemail.com", "trashmail.com",
10096        "test.com"
10097      ];
10098
10099      const domain = email.split("@")[1].toLowerCase();
10100      if (disposableDomains.includes(domain)) {
10101        return false;
10102      }
10103
10104      const suspiciousPatterns = [
10105        /^test/,
10106        /^[0-9]+@/,
10107        /^admin@/,
10108        /^info@/,
10109        /^no-?reply@/
10110      ];
10111
10112      for (let pattern of suspiciousPatterns) {
10113        if (pattern.test(email.toLowerCase())) {
10114          return false;
10115        }
10116      }
10117
10118      return true;
10119    }
10120
10121    function formatPhoneNumber(input) {
10122      let numbers = input.replace(/\D/g, "");
10123      numbers = numbers.substring(0, 10);
10124
10125      if (numbers.length === 0) return "";
10126      if (numbers.length <= 3) return "(" + numbers;
10127      if (numbers.length <= 6) return "(" + numbers.substring(0,3) + ") " + numbers.substring(3);
10128      return "(" + numbers.substring(0,3) + ") " + numbers.substring(3,6) + "-" + numbers.substring(6);
10129    }
10130
10131    $(document).on("input", ".da-quick-form-phone-input", function(e) {
10132      let input = $(this);
10133      let formatted = formatPhoneNumber(input.val());
10134      input.val(formatted);
10135    });
10136
10137    $(document).on("paste", ".da-quick-form-phone-input", function(e) {
10138      e.preventDefault();
10139      let input = $(this);
10140      let pastedText = (e.originalEvent.clipboardData || window.clipboardData).getData("text");
10141      input.val(formatPhoneNumber(pastedText));
10142    });
10143
10144    function populateHiddenFields(formInstance) {
10145      if (typeof DVHydrate !== 'undefined') {
10146        DVHydrate.populateFormFields("#" + formInstance);
10147      }
10148    }
10149
10150    function QFFormShown(formData)
10151    {
10152      if (haveSdAnalytics  && typeof(sd) !== "undefined") {
10153        sd("dataLayer", {
10154          formType: "General Contact",
10155          displayType: "in-page",
10156          events: "formShown",
10157          formVehicle: formData
10158        });
10159
10160        sd("send");
10161      }
10162    }
10163
10164    const isSRP = $("body").hasClass("srp_main");
10165
10166    let quickFormTitle = $(".quick_form_title");
10167    if (!isSRP && quickFormTitle && quickFormTitle.is(":visible")) {
10168      QFFormShown(getFormData(null));
10169    }
10170
10171    function QFFormInitiated(formData, form, fieldTarget)
10172    {
10173      try {
10174          if (haveSdAnalytics  && typeof(sd) !== "undefined") {
10175            if (form && form.dataset.sdFormInitiationTracked !== "true") {
10176              sendShiftDigitalFormEvent({
10177                formType: "General Contact",
10178                displayType: "in-page",
10179                eventName: "formInitiation",
10180                formVehicle: formData
10181              });
10182
10183              form.dataset.sdFormInitiationTracked = "true";
10184            }
10185
10186            if (shouldTrackShiftDigitalFieldInteraction(fieldTarget)) {
10187              sendShiftDigitalFormEvent({
10188                formType: "General Contact",
10189                displayType: "in-page",
10190                eventName: "formFieldInteraction",
10191                fieldTarget: fieldTarget,
10192                formVehicle: formData
10193              });
10194            }
10195          }
10196      } catch (e) {
10197        console.error(e);
10198      }
10199      
10200      if (window.DAForms) {
10201        window.DAForms.formEngagement('asc_form_engagement', ascFormDetails, 'start', getVehicleFromForm(form));
10202      }
10203    }
10204    
10205    function getVehicleFromForm(form)
10206    {
10207      let vehicle = {};
10208      const formData = getFormData({target: form});
10209      vehicle.vin = formData.vin;
10210      vehicle.make = formData.make;
10211      vehicle.model = formData.model;
10212      vehicle.displayedPrice = parseFloat(formData.finalPrice.replace(/[^\d.]/g, ''));
10213      vehicle.status = formData.condition;
10214      vehicle.year = formData.year;
10215      vehicle.trim = formData.trim;
10216      
10217      return vehicle;
10218    }
10219
10220    function QFFormSubmitted(formData, form)
10221    {
10222      if ( submittedVins.includes(formData.vin)) {
10223        return;
10224      } else {
10225        submittedVins.push(formData.vin);
10226      }
10227
10228      try {
10229          if (haveSdAnalytics  && typeof(sd) !== "undefined" && formData.vin ) {
10230            sd("dataLayer", {
10231              formType: "General Contact",
10232              displayType: "in-page",
10233              events: "formSubmission",
10234              formVehicle: formData,
10235              leadType: "lead"
10236            });
10237            sd("send");
10238          }
10239      } catch (e) {
10240        console.error(e);
10241      }
10242
10243      if (window.DAForms) {
10244        window.DAForms.formSubmission('asc_form_submission', ascFormDetails, formData.buttonText, 'unknown', getVehicleFromForm(form));
10245        window.DAForms.addDepartmentSpecificSubmission(ascFormDetails, formData.buttonText);
10246      }
10247    }
10248
10249    function getQuickFormCookies() {
10250      let cookies = {};
10251      document.cookie.split(";").forEach(cookie => {
10252        let parts = cookie.trim().split("=");
10253        let name = parts[0];
10254        let value = parts[1];
10255        if (name.startsWith("quickFormUnlocked_")) {
10256          cookies[name] = value;
10257        }
10258      });
10259      return cookies;
10260    }
10261
10262    function checkAndHideForms() {
10263      let cookies = getQuickFormCookies();
10264
10265      if (Object.keys(cookies).length === 0) return;
10266
10267      // Get the condition from the container
10268      let condition = isVDP ?
10269          vdpContainer.data("vehicle-condition").toLowerCase() :
10270          jQuery(".listing").first().data("vehicle-condition").toLowerCase();
10271
10272      // Check for condition-specific "all" cookie
10273      if (`quickFormUnlocked_all_` + condition in cookies) {
10274        jQuery(".da-quick-form").remove();
10275        jQuery(".da-quick-form-unlocked").show();
10276        jQuery("#da-quick-form-unlocked").show();
10277        jQuery("#vdp-pricingheader-container").remove();
10278        return;
10279      }
10280
10281      if (vdpContainer.length > 0) {
10282        // VDP logic
10283        let vin = vdpContainer.data("vehicle-vin");
10284        if (vin && "quickFormUnlocked_" + vin in cookies) {
10285          jQuery(".da-quick-form").remove();
10286        }
10287      } else {
10288        // SRP logic
10289        jQuery(".da-quick-form").each(function() {
10290          let form = jQuery(this);
10291          let parentCard = form.closest(".listing");
10292          let vin = parentCard.data("vehicleVin");
10293
10294          if (vin && "quickFormUnlocked_" + vin in cookies) {
10295            form.remove();
10296          }
10297        });
10298      }
10299    }
10300
10301    if(isVDP) {
10302      checkAndHideForms();
10303      setTimeout(function() {
10304        jQuery(".da-quick-form").each(function() {
10305          let formId = jQuery(this).attr("id");
10306          populateHiddenFields(formId);
10307        });
10308      }, 2000);
10309    }
10310
10311    // submitQuickForm will trigger this event after it has submitted to the WP backend
10312    document.addEventListener("form:quick-form-submit", function(e) {
10313      QFFormSubmitted(e.detail.data, e.detail.form);
10314    });
10315
10316    $(document).on("submit", ".da-quick-form form", function(e) {
10317      e.preventDefault();
10318
10319      const form = $(this);
10320      const button = form.find(".da-quick-form-button");
10321      const defaultIcon = button.find(".default-icon");
10322      const loadingIcon = button.find(".loading-icon");
10323      const buttonText = button.find(".button-text");
10324
10325      button.prop("disabled", true);
10326      defaultIcon.removeClass("active");
10327      loadingIcon.addClass("active");
10328      const originalButtonText = buttonText.text();
10329      buttonText.text("SUBMITTING...");
10330
10331      const email = form.find("[name=da_quick_form_email]").val();
10332      const phone = form.find("[name=da_quick_form_phone]").val();
10333
10334      const status = (validateEmail(email) && validatePhoneNumber(phone)) ? "active" : "spam";
10335      let vehicleCard = form.closest(".listing");
10336
10337      const qfData = {
10338        name: form.find("[name=da_quick_form_name]").val(),
10339        security: form.find("[name=da_quick_form_nonce]").val(),
10340        phone: phone,
10341        email: email,
10342        status: status,
10343        id: form.find(".vin-field").val(),
10344        vin: form.find(".vin-field").val(),
10345        stockNumber: form.find(".stock-number-field").val(),
10346        year: form.find(".year-field").val(),
10347        make: form.find(".make-field").val(),
10348        model: form.find(".model-field").val(),
10349        trim: form.find(".trim-field").val(),
10350        msrp: form.find(".msrp-field").val(),
10351        finalPrice: form.find(".final-price-field").val(),
10352        dealerName: form.find(".dealer-name-field").val(),
10353        discountMatrix: form.find(".discount-matrix-field").val(),
10354        discountMatrixValue: form.find(".discount-matrix-value-field").val(),
10355        internetPrice: form.find(".internet-price-field").val(),
10356        condition: isVDP ? form.find(".condition-field").val() : $(vehicleCard).attr("data-vehicle-condition"),
10357        vehicleUrl: form.find(".vehicle-url-field").val(),
10358        formId: parseInt(form.data("form-id")),
10359        formLocation: isVDP ? "VDP" : "SRP",
10360        buttonText: originalButtonText
10361      };
10362
10363      form.find("input, button").prop("disabled", true);
10364
10365      submitQuickForm(qfData, form);
10366    });
10367  });
10368</script>
10368<link rel='preload' as='style' onload="this.onload=null;this.rel='stylesheet'" id='dv-dealer-reviews-badge-css' href='https://www.brewerairporttoyota.com/app/themes/dv-framework/media/css/dv-reviews/badge/dv-reviews-badge.css?ver=1.771.862' type='text/css' media='all' /><link rel='preload' as='style' onload="this.onload=null;this.rel='stylesheet'" id='itsg_progresszero_css' href='https://www.brewerairporttoyota.com/app/plugins/gravity-forms-start-progress-bar-at-zero-percent/css/itsg_progresszero_css.min.css?ver=1.2.0' type='text/css' media='all' />
10368<script type='text/javascript' src='https://www.brewerairporttoyota.com/app/plugins/gravityforms/js/jquery.json.min.js?ver=2.4.6' id='gform_json-js'></script>
vendor: 1 bytes, line 10368
10368
10369<script type='text/javascript' id='gform_gravityforms-js-extra'>
10370/* <![CDATA[ */
10371var gform_gravityforms = {"strings":{"invalid_file_extension":"This type of file is not allowed. Must be one of the following: ","delete_file":"Delete this file","in_progress":"in progress","file_exceeds_limit":"File exceeds size limit","illegal_extension":"This type of file is not allowed.","max_reached":"Maximum number of files reached","unknown_error":"There was a problem while saving the file on the server","currently_uploading":"Please wait for the uploading to complete","cancel":"Cancel","cancel_upload":"Cancel this upload","cancelled":"Cancelled"},"vars":{"images_url":"https:\/\/www.brewerairporttoyota.com\/app\/plugins\/gravityforms\/images"}};
10372var gform_gravityforms = {"strings":{"invalid_file_extension":"This type of file is not allowed. Must be one of the following: ","delete_file":"Delete this file","in_progress":"in progress","file_exceeds_limit":"File exceeds size limit","illegal_extension":"This type of file is not allowed.","max_reached":"Maximum number of files reached","unknown_error":"There was a problem while saving the file on the server","currently_uploading":"Please wait for the uploading to complete","cancel":"Cancel","cancel_upload":"Cancel this upload","cancelled":"Cancelled"},"vars":{"images_url":"https:\/\/www.brewerairporttoyota.com\/app\/plugins\/gravityforms\/images"}};
10373var gform_gravityforms = {"strings":{"invalid_file_extension":"This type of file is not allowed. Must be one of the following: ","delete_file":"Delete this file","in_progress":"in progress","file_exceeds_limit":"File exceeds size limit","illegal_extension":"This type of file is not allowed.","max_reached":"Maximum number of files reached","unknown_error":"There was a problem while saving the file on the server","currently_uploading":"Please wait for the uploading to complete","cancel":"Cancel","cancel_upload":"Cancel this upload","cancelled":"Cancelled"},"vars":{"images_url":"https:\/\/www.brewerairporttoyota.com\/app\/plugins\/gravityforms\/images"}};
10374var gform_gravityforms = {"strings":{"invalid_file_extension":"This type of file is not allowed. Must be one of the following: ","delete_file":"Delete this file","in_progress":"in progress","file_exceeds_limit":"File exceeds size limit","illegal_extension":"This type of file is not allowed.","max_reached":"Maximum number of files reached","unknown_error":"There was a problem while saving the file on the server","currently_uploading":"Please wait for the uploading to complete","cancel":"Cancel","cancel_upload":"Cancel this upload","cancelled":"Cancelled"},"vars":{"images_url":"https:\/\/www.brewerairporttoyota.com\/app\/plugins\/gravityforms\/images"}};
10375var gform_gravityforms = {"strings":{"invalid_file_extension":"This type of file is not allowed. Must be one of the following: ","delete_file":"Delete this file","in_progress":"in progress","file_exceeds_limit":"File exceeds size limit","illegal_extension":"This type of file is not allowed.","max_reached":"Maximum number of files reached","unknown_error":"There was a problem while saving the file on the server","currently_uploading":"Please wait for the uploading to complete","cancel":"Cancel","cancel_upload":"Cancel this upload","cancelled":"Cancelled"},"vars":{"images_url":"https:\/\/www.brewerairporttoyota.com\/app\/plugins\/gravityforms\/images"}};
10376/* ]]> */
10377</script>
vendor: 1 bytes, line 10377
10377
10378<script type='text/javascript' src='https://www.brewerairporttoyota.com/app/plugins/gravityforms/js/gravityforms.min.js?ver=2.4.6' id='gform_gravityforms-js'></script>
vendor: 1 bytes, line 10378
10378
10379<script type='text/javascript' src='https://www.brewerairporttoyota.com/app/plugins/gravityforms/js/conditional_logic.min.js?ver=2.4.6' id='gform_conditional_logic-js'></script>
vendor: 1 bytes, line 10379
10379
10380<script type='text/javascript'> if(typeof gf_global == 'undefined') var gf_global = {"gf_currency_config":{"name":"U.S. Dollar","symbol_left":"$","symbol_right":"","symbol_padding":"","thousand_separator":",","decimal_separator":".","decimals":2},"base_url":"https:\/\/www.brewerairporttoyota.com\/app\/plugins\/gravityforms","number_formats":[],"spinnerUrl":"https:\/\/www.brewerairporttoyota.com\/app\/plugins\/gravityforms\/images\/spinner.gif"};jQuery(document).bind('gform_post_render', function(event, formId, currentPage){if(formId == 7) {if(typeof Placeholders != 'undefined'){
10381                        Placeholders.enable();
10382                    }jQuery('#input_7_3').mask('(999) 999-9999').bind('keypress', function(e){if(e.which == 13){jQuery(this).blur();} } );} } );jQuery(document).bind('gform_post_conditional_logic', function(event, formId, fields, isInit){} );</script>
10382<script type='text/javascript'> jQuery(document).ready(function(){jQuery(document).trigger('gform_post_render', [7, 1]) } ); </script>
10382<style>
10383    #browser-warning {
10384      position: fixed;
10385      top: -160px;
10386      left: 0;
10387      right: 0;
10388      background-color: #ff9800;
10389      color: white;
10390      text-align: center;
10391      padding: 15px;
10392      font-size: 16px;
10393      z-index: 1000;
10394      box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
10395      transition: top 0.5s ease-in-out;
10396    }
10397    #browser-warning a {
10398      color: #fff;
10399      text-decoration: underline;
10400      font-weight: bold;
10401    }
10402    #browser-warning .dismiss-button {
10403      background: white;
10404      padding: 5px 10px;
10405      border-radius: 2px;
10406      border: none;
10407      color: #ff9800;
10408      font-size: 16px;
10409      cursor: pointer;
10410      margin-top: 8px;
10411    }
10412  </style>
10413
10414
10415<div id="browser-warning">
10416    Your browser is out of date. Please <a href="https://browsehappy.com/" target="_blank">update your browser</a> for
10417    the best experience.
10418</div>
10419
10420  
10420<script>
10421    const OUTDATED_IOS_VERSION = 17; // iOS version considered outdated
10422
10423    function isBrowserOutdated() {
10424      const ua = navigator.userAgent;
10425      const isOldBrowser = !(
10426        'fetch' in window &&
10427        'Promise' in window &&
10428        'assign' in Object
10429      ); // Simple feature detection for modern JS APIs
10430      const isOldIE = /MSIE|Trident/.test(ua); // Detect old IE versions
10431      return isOldBrowser || isOldIE;
10432    }
10433
10434    function isIOSOutdated() {
10435      const ua = navigator.userAgent;
10436      const isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream;
10437      if (isIOS) {
10438        const iosVersion = ua.match(/OS (\d+)_/);
10439        if (iosVersion && iosVersion[1]) {
10440          return parseInt(iosVersion[1], 10) < OUTDATED_IOS_VERSION; // Assume iOS < OUTDATED_IOS_VERSION is outdated
10441        }
10442      }
10443      return false;
10444    }
10445
10446    function isAndroidOutdated() {
10447      const ua = navigator.userAgent.toLowerCase();
10448      const isAndroid = ua.includes("android");
10449      if (isAndroid) {
10450        const isOldBrowser = !('fetch' in window && 'Promise' in window && 'assign' in Object);
10451        return isOldBrowser;
10452      }
10453      return false;
10454    }
10455    
10456    function showBrowserWarning(message) {
10457      const dismissButton = document.createElement('button');
10458      dismissButton.classList = 'dismiss-button';
10459      dismissButton.innerText = 'Dismiss';
10460      dismissButton.style.marginLeft = '15px';
10461      dismissButton.onclick = function() {
10462        const warning = document.getElementById('browser-warning');
10463        warning.style.top = '-160px'; // Slide up
10464        localStorage.setItem('ag-browser-warning-dismissed', 'true');
10465      };      
10466      const warning = document.getElementById('browser-warning');
10467      warning.innerHTML = message;
10468      warning.appendChild(document.createElement('br'));
10469      warning.appendChild(dismissButton);
10470      warning.style.top = '0'; // Slide down
10471    }
10472    
10473    function checkBrowser() {
10474        if (localStorage.getItem('ag-browser-warning-dismissed') === 'true') {
10475            return;
10476        }
10477      if (isBrowserOutdated()) {
10478        showBrowserWarning(
10479          'Your browser is out of date.<br/>Please <a href="https://browsehappy.com/" target="_blank">update your browser</a> for the best experience.'
10480        );
10481      } else if (isIOSOutdated()) {
10482        showBrowserWarning(
10483          'Your iOS version is outdated.<br/>Please update your iOS version to get the latest browser updates.'
10484        );
10485      } else if (isAndroidOutdated()) {
10486        showBrowserWarning(
10487          'Your Android browser is outdated.<br/>Please update your browser from the <a href="https://play.google.com/store/apps/details?id=com.android.chrome" target="_blank">Google Play Store</a>.'
10488        );
10489      }
10490    }
10491    
10492    window.onload = checkBrowser;
10493  </script>
10493
10494
10495<!-- <style>
10496body .buorg {
10497    border-color: #646464;
10498    color: #fff;
10499    background-color: #141518;
10500}
10501</style>
10502
10503<script>
10504var $buoop = {required:{e:-4,f:-4,o:-4,s:-2,c:-4},insecure:true,api:2021.10 };
10505function $buo_f(){
10506 var e = document.createElement("script");
10507 e.src = "//browser-update.org/update.min.js";
10508 document.body.appendChild(e);
10509};
10510try {document.addEventListener("DOMContentLoaded", $buo_f,false)}
10511catch(e){window.attachEvent("onload", $buo_f)}
10512</script>
10512 -->
10513</script>
vendor: 1 bytes, line 10513
10513
10514<script type="text/javascript">
10515// Toggle nav-below hamburger icon
10516jQuery(document).ready(function() {
10517    jQuery('.roll-out-btn').click(function() {
10518        jQuery('.roll-out-btn').toggleClass('roll-out-btn-open');
10519        jQuery('.roll-out-menu').toggleClass('roll-out-open');
10520        jQuery('.rollout-frame').toggleClass('rollout-frame-open');
10521        jQuery('.save-btn').toggleClass('save-btn-saved');
10522
10523    });
10524
10525    // Toggle Side Menu
10526    $('#nav-icon3').click(function() {
10527        $("body").toggleClass('menu-open');
10528        $("#dv-sidenav").toggleClass("dv-sidenav-open");
10529    });
10530
10531    });
10532
10533</script>
10533
10534
10535<script>
10536/**
10537 * Removing SDA events on all anchors
10538 * Due to an issue with android issue
10539 */
10540var removeSDCTAEvent = function(){
10541	var el = document.querySelectorAll('a');
10542	for (i = 0; i < el.length; ++i) {
10543		if(el[i].hasAttribute("data-sda-event")) {
10544			if(el[i].getAttribute("data-sda-event") == 'clickToCall'){
10545				var propVal = '';
10546				if(el[i].getAttribute("data-sda-event-set-prop")){
10547					propVal = el[i].getAttribute("data-sda-event-set-prop");
10548					propVal = propVal.split("|");
10549					propVal = propVal[1];
10550				}
10551				el[i].removeAttribute("data-sda-event");
10552				el[i].removeAttribute("data-sda-event-set-prop");
10553				el[i].setAttribute("data-ag-event", 'clickToCall|'+propVal)
10554			}
10555            if(el[i].getAttribute("data-sda-event") == 'getDirections'){
10556				el[i].removeAttribute("data-sda-event");
10557				el[i].setAttribute("data-ag-event", 'getDirections');
10558			}
10559		}
10560	}
10561};
10562
10563// removeSDCTAEvent();
10564//setInterval(removeSDCTAEvent, 10000);
10565</script>
10565
10566
10567
10568
10569    
10569<script>/*Copyright 2011-2015 iPerceptions, Inc. All rights reserved. Do not distribute.iPerceptions provides this code 'as is' without warranty of any kind, either express or implied. */ window.iperceptionskey = '6d1fdf1a-2979-42c3-82c9-6ae3384d9f05';(function () { var a = document.createElement('script'),b = document.getElementsByTagName('body')[0]; a.type = 'text/javascript'; a.async = true;a.src = '//universal.iperceptions.com/wrapper.js';b.appendChild(a);})();</script>
10569
10570
10571    
10571<script>
10572        var scheduleServiceIframeURL = "https://service.connectcdk.com/?cid=3000517";
10573    </script>
10573
10574    
10574<script src="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/js/catch-schedule-service-btn.js"></script>
10574
10575
10576
10577
10578
10579    
10579<script>
10580        var customModalsLinks = [{"trigger_slug":"schedule","target_url":"https:\/\/service.connectcdk.com\/?cid=3000517"}];
10581    </script>
10581
10582    
10583    
10583<script src="https://www.brewerairporttoyota.com/app/themes/dv-framework/media/js/auto-modal.js" defer></script>
10583
10584    </footer>
10585    </body>
10586
10587</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.