1 2 3 4<!DOCTYPE html> 5<html lang="en"> 6 7<head> 8 <meta charset="UTF-8"> 9 <title>Contact EV Quotes</title> 10 <meta name="viewport" content="width=device-width, initial-scale=1"> 11 <link rel="icon" type="image/png" href="/static/images/favicon.png"> 12 <link rel="manifest" href="/static/manifest.json"> 13 <meta name="theme-color" content="#47bac1"> 14 <meta name="mobile-web-app-capable" content="yes"> 15 <meta name="apple-mobile-web-app-capable" content="yes"> 16 <meta name="apple-mobile-web-app-status-bar-style" content="default"> 17 <meta name="apple-mobile-web-app-title" content="EV Quotes"> 18 19 <!-- SEO Meta Tags --> 20 <meta name="title" content="Contact EV Quotes"> 21 <meta name="description" content=""> 22 <meta name="keywords" content=""> 23 24 25 26 27 <!-- Open Graph and Twitter Card Meta Tags --> 28 29 <meta property="og:image" content="https://evquotes.ca/static/images/evquotes.png" /> 30 <meta property="og:image:secure_url" content="https://evquotes.ca/static/images/evquotes.png" /> 31 <meta name="twitter:image" content="https://evquotes.ca/static/images/evquotes.png" /> 32 33 34 <!-- Bootstrap 5 CSS --> 35 <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"> 36 <!-- Bootstrap Icons --> 37 <link href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css" rel="stylesheet" media="print" onload="this.media='all'"> 38 <noscript><link href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css" rel="stylesheet"></noscript> 39 40 <!-- other cdn --> 41 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/fonts/remixicon.css" media="print" onload="this.media='all'"> 42 <noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/fonts/remixicon.css"></noscript> 43 44 <!-- fonts cdn --> 45 <link rel="preconnect" href="https://fonts.googleapis.com"> 46 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 47 <link href="https://fonts.googleapis.com/css2?family=Public+Sans:ital@0;1&display=swap" rel="stylesheet" media="print" onload="this.media='all'"> 48 <noscript><link href="https://fonts.googleapis.com/css2?family=Public+Sans:ital@0;1&display=swap" rel="stylesheet"></noscript> 49 50 51 52 <!-- Optional Custom CSS --> 53 <link rel="stylesheet" href="/static/css/style.css"> 54 55 56<link rel="stylesheet" href="/static/css/blog-post.css"> 57 58 59 <!-- Defer menu CSS loading for better performance --> 60
60<script> 61 // Load menu-related CSS after page load for better performance 62 function loadDeferredCSS() { 63 const cssFiles = [ 64 '/static/css/mobile-menu.css', 65 '/static/css/avatar-dropdown.css' 66 ]; 67 68 cssFiles.forEach(function(href) { 69 const link = document.createElement('link'); 70 link.rel = 'stylesheet'; 71 link.href = href; 72 link.media = 'print'; // Load as non-blocking 73 link.onload = function() { 74 this.media = 'all'; // Apply styles after loading 75 }; 76 document.head.appendChild(link); 77 }); 78 } 79 80 // Load CSS after DOM is ready or immediately if already loaded 81 if (document.readyState === 'loading') { 82 document.addEventListener('DOMContentLoaded', loadDeferredCSS); 83 } else { 84 loadDeferredCSS(); 85 } 86 </script>
86 87 88 <!-- Link Swiper's CSS without blocking first paint --> 89 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css" media="print" onload="this.media='all'"> 90 <noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css"></noscript> 91</head> 92 93<body> 94 <!-- Schema.org JSON-LD Structured Data --> 95 96 97 98 <!-- Footer --> 99 100 101 102<!-- Top Strip --> 103<div class="top-strip"> 104 <div class="container"> 105 <div class="row align-items-center"> 106 <div class="col-12"> 107 108 <!-- Default: Show authentication content --> 109 <div class="top-strip-right d-flex align-items-center justify-content-end"> 110 111 <!-- Not logged in state --> 112 <div class="d-flex w-100 justify-content-between align-items-center"> 113 114 <a href="/quotes" class="top-strip-link" style="text-decoration: none;"> 115 116 117 </a> 118 <a href="/accounts/login/" class="top-strip-link"> 119 SIGN IN 120 </a> 121 </div> 122 123 </div> 124 125 </div> 126 </div> 127 </div> 128</div> 129 130<header class="container bg-white" style="max-width: 1200px;"> 131 <nav class="navbar navbar-expand-md navbar-light py-4"> 132 <div class="container-fluid px-0"> 133 <a class="navbar-brand" href="/"> 134 <div class="flex items-center space-x-2"> 135 <img src="/static/images/logo.png" alt="EV Logo" class="logo-img" width="248" height="62"> 136 </div> 137 </a> 138 139 <button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#navbarListDiv" 140 aria-controls="navbarListDiv" aria-expanded="false" aria-label="Toggle navigation"> 141 <span class="navbar-toggler-icon"></span> 142 </button> 143 <div class="offcanvas offcanvas-start" tabindex="-1" id="navbarListDiv"> 144 <div class="offcanvas-header"> 145 <h5 class="offcanvas-title">Menu</h5> 146 <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button> 147 </div> 148 <div class="offcanvas-body align-items-center"> 149 <ul class="navbar-nav ms-auto me-3 mb-2 mb-lg-0" style="justify-content: right;"> 150 151 152 153 <!-- Regular navigation item without children --> 154 <li class="nav-item"> 155 <a class="nav-link header-list-tab fs-18 fw-bold primary-text-color " 156 aria-current="page" 157 href="/"> 158 Home 159 <hr> 160 </a> 161 </li> 162 163 164 165 166 167 <!-- Parent item with children - dropdown --> 168 <li class="nav-item dropdown"> 169 <a class="nav-link header-list-tab fs-18 fw-bold primary-text-color" href="#" 170 id="navbarDropdown8" role="button" data-bs-toggle="dropdown" aria-expanded="false"> 171 How It Works 172 </a> 173 <ul class="dropdown-menu shadow-sm border-0" aria-labelledby="navbarDropdown8" 174 style="border-radius: 12px; padding: 8px 0; margin-top: 8px;"> 175 176 <li> 177 <a class="dropdown-item px-4 py-3 fs-16 fw-medium text-dark" 178 href="/homeowners" 179 style="transition: all 0.2s ease; "> 180 For EV Owners 181 </a> 182 </li> 183 184 <li> 185 <a class="dropdown-item px-4 py-3 fs-16 fw-medium text-dark" 186 href="/installers" 187 style="transition: all 0.2s ease; "> 188 For EV Installers 189 </a> 190 </li> 191 192 </ul> 193 </li> 194 195 196 197 198 199 200 201 202 203 <!-- Regular navigation item without children --> 204 <li class="nav-item"> 205 <a class="nav-link header-list-tab fs-18 fw-bold primary-text-color " 206 aria-current="page" 207 href="https://evquotes.ca/guides"> 208 Guides 209 <hr> 210 </a> 211 </li> 212 213 214 215 </ul> 216 <!-- <form class="d-flex"> --> 217 <!-- <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> --> 218 <a href="/quotes" class="btn justify-content-center get-quote-btn choose-button align-items-center d-flex" 219 style="width: 170px; height: 50px;">Get a Quote</a> 220 <!-- </form> --> 221 </div> 222 223 </div> 224 225 </div> 226 </nav> 227</header> 228 229 <!-- Page content --> 230 <main class="min-vh-100"> 231 232 233<section class="ev-section"> 234 <div class="container"> 235 <h2 class="ev-title"></h2> 236 <p class="ev-subtitle"></p> 237 238 </div> 239</section> 240 241<div class="container pb-4"> 242 <!-- Content Centered --> 243 <div class="row justify-content-center mb-5"> 244 <div class="col-lg-8 col-md-10"> 245 <!-- Breadcrumb --> 246 <nav class="mb-4 mt-3" style="--bs-breadcrumb-divider: '>'; --bs-breadcrumb-divider-color: black;" aria-label="breadcrumb"> 247 <ol class="breadcrumb mb-0"> 248 <li class="breadcrumb-item"><a class="text-decoration-none text-black" href="/">Home</a></li> 249 <li class="breadcrumb-item active text-primary" aria-current="page">Contact Us</li> 250 </ol> 251 </nav> 252 253 <p>Get in touch with the EV Quotes head office for general inquiries, partnerships, or media requests. Our team is here to assist with anything related to EV charger installations and services across Canada.</p> 254 255<p>Head office:</p> 256 257<p>EV Quotes </p> 258 259<p>Address:</p> 260 261<p>2987 Rutherford Rd #202, <br> 262Vaughan, ON L4K 2N7</p> 263 264<p>Phone: +1 844-645-6560</p> 265<br /> 266<!-- Elfsight Contact Form | EV Quotes Contact -->
266<script src="https://elfsightcdn.com/platform.js" async></script>
266 267<div class="elfsight-app-807e36c9-8a1d-4de1-9b6a-f9aa12b2b6b7" data-elfsight-app-lazy=""> </div> 268 </div> 269 </div> 270</div> 271 272 273 </main> 274 275 <!-- Modal --> 276 <!-- Modal --> 277<div class="modal fade quote-modal" id="quoteModal" tabindex="-1" aria-labelledby="quoteModalLabel" aria-hidden="true"> 278 <div class="modal-dialog"> 279 <div class="modal-content quote-modal-content"> 280 281 <div class="modal-header quote-modal-header border-0"> 282 <h5 class="modal-title quote-modal-title" id="quoteModalLabel"> 283 <!-- Get A Quote From <span class="text-primary">[Name of Installer]</span> --> 284 Get A Quote 285 </h5> 286 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> 287 </div> 288 289 <div class="modal-body"> 290 <form id="quoteForm"> 291 <label for="postcode" class="form-label quote-modal-label">Enter Your Postcode Now</label> 292 <input type="text" id="postcode" class="form-control quote-form-control" placeholder="e.g. SW1A 1AA" required> 293 <div id="postcodeError" class="text-danger mt-2" style="display: none;">Please enter your postcode to continue</div> 294 <a class="btn quote-btn" href="#" onclick="submitQuoteForm(event)" role="button"> 295 Get a Quote 296 </a> 297 </form> 298 </div> 299 300 </div> 301 </div> 302</div> 303
304<script> 305let currentInstallerId = null; 306let currentQuoteType = null; 307 308function openQuoteModal(installerId = null, quoteType = 'general') { 309 currentInstallerId = installerId; 310 currentQuoteType = quoteType; 311 312 // Update modal title based on quote type 313 const modalTitle = document.getElementById('quoteModalLabel'); 314 if (quoteType === 'exclusive' && installerId) { 315 modalTitle.innerHTML = 'Get A Quote From <span class="text-primary">Selected Installer</span>'; 316 } else if (quoteType === 'hybrid') { 317 modalTitle.innerHTML = 'Get Multiple Quotes'; 318 } else { 319 modalTitle.innerHTML = 'Get A Quote'; 320 } 321} 322 323function submitQuoteForm(event) { 324 event.preventDefault(); 325 const postcode = document.getElementById('postcode').value.trim(); 326 const errorDiv = document.getElementById('postcodeError'); 327 328 if (!postcode) { 329 errorDiv.style.display = 'block'; 330 document.getElementById('postcode').classList.add('is-invalid'); 331 return; 332 } 333 334 errorDiv.style.display = 'none'; 335 document.getElementById('postcode').classList.remove('is-invalid'); 336 337 // Construct professional URL with parameters 338 let url = "/quotes?postcode=" + encodeURIComponent(postcode); 339 340 if (currentQuoteType) { 341 url += "&type=" + encodeURIComponent(currentQuoteType); 342 } 343 344 if (currentInstallerId) { 345 url += "&installer=" + encodeURIComponent(currentInstallerId); 346 } 347 348 window.location.href = url; 349} 350 351// Add input event listener to hide error when user starts typing 352document.getElementById('postcode').addEventListener('input', function() { 353 const errorDiv = document.getElementById('postcodeError'); 354 if (this.value.trim()) { 355 errorDiv.style.display = 'none'; 356 this.classList.remove('is-invalid'); 357 } 358}); 359</script>
359 360 361 <!-- Footer --> 362 363 364<link rel="stylesheet" href="/static/css/footer.css"> 365 366 367 368<footer class="bg-white font-size-16"> 369 370 371 <!-- Top Section: Find Pros by Province --> 372 <div class="footer-middle-section mt-5" style="border-bottom: 1px solid #e5e7eb !important; padding-bottom: 3rem;"> 373 <div class="container pt-1 pb-3 py-md-3"> 374 375 <h4 class="mb-3 mb-md-4 fw-semibold" style="color: #012152 !important;" hidden>Find EV Charger Installers near you</h4> 376 377 378 <!-- Mobile Accordion --> 379 <div class="d-md-none"> 380 <div class="accordion" id="regionAccordion"> 381 382 <div class="accordion-item border-0 bg-primary rounded-3 mb-2"> 383 <h2 class="accordion-header"> 384 <button class="accordion-button collapsed bg-primary text-white rounded-3 py-2" 385 type="button" 386 data-bs-toggle="collapse" 387 data-bs-target="#region1" 388 style="box-shadow: none;"> 389 Ontario 390 </button> 391 </h2> 392 <div id="region1" class="accordion-collapse collapse" data-bs-parent="#regionAccordion"> 393 <div class="accordion-body bg-white rounded-bottom-3"> 394 <ul class="list-unstyled mb-0"> 395 396 <li class="border-bottom py-2"> 397 <a href="/ev-charger-installation/ajax/" 398 class="text-decoration-none text-dark d-block"> 399 Ajax 400 </a> 401 </li> 402 403 <li class="border-bottom py-2"> 404 <a href="/ev-charger-installation/barrie/" 405 class="text-decoration-none text-dark d-block"> 406 Barrie 407 </a> 408 </li> 409 410 <li class="border-bottom py-2"> 411 <a href="/ev-charger-installation/brampton/" 412 class="text-decoration-none text-dark d-block"> 413 Brampton 414 </a> 415 </li> 416 417 <li class="border-bottom py-2"> 418 <a href="/ev-charger-installation/burlington/" 419 class="text-decoration-none text-dark d-block"> 420 Burlington 421 </a> 422 </li> 423 424 <li class="border-bottom py-2"> 425 <a href="/ev-charger-installation/caledon/" 426 class="text-decoration-none text-dark d-block"> 427 Caledon 428 </a> 429 </li> 430 431 <li class="border-bottom py-2"> 432 <a href="/ev-charger-installation/cambridge/" 433 class="text-decoration-none text-dark d-block"> 434 Cambridge 435 </a> 436 </li> 437 438 <li class="border-bottom py-2"> 439 <a href="/ev-charger-installation/collingwood/" 440 class="text-decoration-none text-dark d-block"> 441 Collingwood 442 </a> 443 </li> 444 445 <li class="border-bottom py-2"> 446 <a href="/ev-charger-installation/etobicoke/" 447 class="text-decoration-none text-dark d-block"> 448 Etobicoke 449 </a> 450 </li> 451 452 <li class="border-bottom py-2"> 453 <a href="/ev-charger-installation/hamilton/" 454 class="text-decoration-none text-dark d-block"> 455 Hamilton 456 </a> 457 </li> 458 459 <li class="border-bottom py-2"> 460 <a href="/ev-charger-installation/innisfil/" 461 class="text-decoration-none text-dark d-block"> 462 Innisfil 463 </a> 464 </li> 465 466 <li class="border-bottom py-2"> 467 <a href="/ev-charger-installation/king-city/" 468 class="text-decoration-none text-dark d-block"> 469 King City 470 </a> 471 </li> 472 473 <li class="border-bottom py-2"> 474 <a href="/ev-charger-installation/kitchener/" 475 class="text-decoration-none text-dark d-block"> 476 Kitchener 477 </a> 478 </li> 479 480 <li class="border-bottom py-2"> 481 <a href="/ev-charger-installation/markham/" 482 class="text-decoration-none text-dark d-block"> 483 Markham 484 </a> 485 </li> 486 487 <li class="border-bottom py-2"> 488 <a href="/ev-charger-installation/milton/" 489 class="text-decoration-none text-dark d-block"> 490 Milton 491 </a> 492 </li> 493 494 <li class="border-bottom py-2"> 495 <a href="/ev-charger-installation/mississauga/" 496 class="text-decoration-none text-dark d-block"> 497 Mississauga 498 </a> 499 </li> 500 501 <li class="border-bottom py-2"> 502 <a href="/ev-charger-installation/newmarket/" 503 class="text-decoration-none text-dark d-block"> 504 Newmarket 505 </a> 506 </li> 507 508 <li class="border-bottom py-2"> 509 <a href="/ev-charger-installation/north-york/" 510 class="text-decoration-none text-dark d-block"> 511 North York 512 </a> 513 </li> 514 515 <li class="border-bottom py-2"> 516 <a href="/ev-charger-installation/oakville/" 517 class="text-decoration-none text-dark d-block"> 518 Oakville 519 </a> 520 </li> 521 522 <li class="border-bottom py-2"> 523 <a href="/ev-charger-installation/oshawa/" 524 class="text-decoration-none text-dark d-block"> 525 Oshawa 526 </a> 527 </li> 528 529 <li class="border-bottom py-2"> 530 <a href="/ev-charger-installation/ottawa/" 531 class="text-decoration-none text-dark d-block"> 532 Ottawa 533 </a> 534 </li> 535 536 <li class="border-bottom py-2"> 537 <a href="/ev-charger-installation/pickering/" 538 class="text-decoration-none text-dark d-block"> 539 Pickering 540 </a> 541 </li> 542 543 <li class="border-bottom py-2"> 544 <a href="/ev-charger-installation/richmond-hill/" 545 class="text-decoration-none text-dark d-block"> 546 Richmond Hill 547 </a> 548 </li> 549 550 <li class="border-bottom py-2"> 551 <a href="/ev-charger-installation/scarborough/" 552 class="text-decoration-none text-dark d-block"> 553 Scarborough 554 </a> 555 </li> 556 557 <li class="border-bottom py-2"> 558 <a href="/ev-charger-installation/thornhill/" 559 class="text-decoration-none text-dark d-block"> 560 Thornhill 561 </a> 562 </li> 563 564 <li class="border-bottom py-2"> 565 <a href="/ev-charger-installation/toronto/" 566 class="text-decoration-none text-dark d-block"> 567 Toronto 568 </a> 569 </li> 570 571 <li class="border-bottom py-2"> 572 <a href="/ev-charger-installation/vaughan/" 573 class="text-decoration-none text-dark d-block"> 574 Vaughan 575 </a> 576 </li> 577 578 <li class="border-bottom py-2"> 579 <a href="/ev-charger-installation/wasaga-beach/" 580 class="text-decoration-none text-dark d-block"> 581 Wasaga Beach 582 </a> 583 </li> 584 585 <li class="border-bottom py-2"> 586 <a href="/ev-charger-installation/waterloo/" 587 class="text-decoration-none text-dark d-block"> 588 Waterloo 589 </a> 590 </li> 591 592 <li class="border-bottom py-2"> 593 <a href="/ev-charger-installation/whitby/" 594 class="text-decoration-none text-dark d-block"> 595 Whitby 596 </a> 597 </li> 598 599 <li class="border-bottom py-2"> 600 <a href="/ev-charger-installation/whitchurch-stouffville/" 601 class="text-decoration-none text-dark d-block"> 602 Whitchurch-Stouffville 603 </a> 604 </li> 605 606 </ul> 607 </div> 608 </div> 609 </div> 610 611 </div> 612 </div> 613 614 <!-- Desktop Tabbed Interface --> 615 <div class="d-none d-md-block"> 616 <!-- Region Tabs --> 617 <div class="region-tabs"> 618 <nav class="nav nav-tabs border-0" id="regionTabs" role="tablist"> 619
620 <button class="nav-link region-tab active" 621 id="region-tab-1" 622 data-bs-toggle="tab" 623 data-bs-target="#region-pane-1" 624 type="button" 625 role="tab" 626 aria-controls="region-pane-1" 627 aria-selected="true"> 628 Ontario 629 </button> 630 631 </nav> 632 </div> 633 634 <!-- Tab Content --> 635 <div class="tab-content" id="regionTabContent"> 636 637 <div class="tab-pane fade show active" 638 id="region-pane-1" 639 role="tabpanel" 640 aria-labelledby="region-tab-1"> 641 642 <!-- Cities Grid --> 643 <div class="row cities-grid g-0"> 644 645 <div class="col-md-3 col-lg-2"> 646 <a href="/ev-charger-installation/ajax/" 647 class="text-decoration-none city-link"> 648 Ajax 649 </a> 650 </div> 651 652 <div class="col-md-3 col-lg-2"> 653 <a href="/ev-charger-installation/barrie/" 654 class="text-decoration-none city-link"> 655 Barrie 656 </a> 657 </div> 658 659 <div class="col-md-3 col-lg-2"> 660 <a href="/ev-charger-installation/brampton/" 661 class="text-decoration-none city-link"> 662 Brampton 663 </a> 664 </div> 665 666 <div class="col-md-3 col-lg-2"> 667 <a href="/ev-charger-installation/burlington/" 668 class="text-decoration-none city-link"> 669 Burlington 670 </a> 671 </div> 672 673 <div class="col-md-3 col-lg-2"> 674 <a href="/ev-charger-installation/caledon/" 675 class="text-decoration-none city-link"> 676 Caledon 677 </a> 678 </div> 679 680 <div class="col-md-3 col-lg-2"> 681 <a href="/ev-charger-installation/cambridge/" 682 class="text-decoration-none city-link"> 683 Cambridge 684 </a> 685 </div> 686 687 <div class="col-md-3 col-lg-2"> 688 <a href="/ev-charger-installation/collingwood/" 689 class="text-decoration-none city-link"> 690 Collingwood 691 </a> 692 </div> 693 694 <div class="col-md-3 col-lg-2"> 695 <a href="/ev-charger-installation/etobicoke/" 696 class="text-decoration-none city-link"> 697 Etobicoke 698 </a> 699 </div> 700 701 <div class="col-md-3 col-lg-2"> 702 <a href="/ev-charger-installation/hamilton/" 703 class="text-decoration-none city-link"> 704 Hamilton 705 </a> 706 </div> 707 708 <div class="col-md-3 col-lg-2"> 709 <a href="/ev-charger-installation/innisfil/" 710 class="text-decoration-none city-link"> 711 Innisfil 712 </a> 713 </div> 714 715 <div class="col-md-3 col-lg-2"> 716 <a href="/ev-charger-installation/king-city/" 717 class="text-decoration-none city-link"> 718 King City 719 </a> 720 </div> 721 722 <div class="col-md-3 col-lg-2"> 723 <a href="/ev-charger-installation/kitchener/" 724 class="text-decoration-none city-link"> 725 Kitchener 726 </a> 727 </div> 728 729 <div class="col-md-3 col-lg-2"> 730 <a href="/ev-charger-installation/markham/" 731 class="text-decoration-none city-link"> 732 Markham 733 </a> 734 </div> 735 736 <div class="col-md-3 col-lg-2"> 737 <a href="/ev-charger-installation/milton/" 738 class="text-decoration-none city-link"> 739 Milton 740 </a> 741 </div> 742 743 <div class="col-md-3 col-lg-2"> 744 <a href="/ev-charger-installation/mississauga/" 745 class="text-decoration-none city-link"> 746 Mississauga 747 </a> 748 </div> 749 750 <div class="col-md-3 col-lg-2"> 751 <a href="/ev-charger-installation/newmarket/" 752 class="text-decoration-none city-link"> 753 Newmarket 754 </a> 755 </div> 756 757 <div class="col-md-3 col-lg-2"> 758 <a href="/ev-charger-installation/north-york/" 759 class="text-decoration-none city-link"> 760 North York 761 </a> 762 </div> 763 764 <div class="col-md-3 col-lg-2"> 765 <a href="/ev-charger-installation/oakville/" 766 class="text-decoration-none city-link"> 767 Oakville 768 </a> 769 </div> 770 771 <div class="col-md-3 col-lg-2"> 772 <a href="/ev-charger-installation/oshawa/" 773 class="text-decoration-none city-link"> 774 Oshawa 775 </a> 776 </div> 777 778 <div class="col-md-3 col-lg-2"> 779 <a href="/ev-charger-installation/ottawa/" 780 class="text-decoration-none city-link"> 781 Ottawa 782 </a> 783 </div> 784 785 <div class="col-md-3 col-lg-2"> 786 <a href="/ev-charger-installation/pickering/" 787 class="text-decoration-none city-link"> 788 Pickering 789 </a> 790 </div> 791 792 <div class="col-md-3 col-lg-2"> 793 <a href="/ev-charger-installation/richmond-hill/" 794 class="text-decoration-none city-link"> 795 Richmond Hill 796 </a> 797 </div> 798 799 <div class="col-md-3 col-lg-2"> 800 <a href="/ev-charger-installation/scarborough/" 801 class="text-decoration-none city-link"> 802 Scarborough 803 </a> 804 </div> 805 806 <div class="col-md-3 col-lg-2"> 807 <a href="/ev-charger-installation/thornhill/" 808 class="text-decoration-none city-link"> 809 Thornhill 810 </a> 811 </div> 812 813 <div class="col-md-3 col-lg-2"> 814 <a href="/ev-charger-installation/toronto/" 815 class="text-decoration-none city-link"> 816 Toronto 817 </a> 818 </div> 819 820 <div class="col-md-3 col-lg-2"> 821 <a href="/ev-charger-installation/vaughan/" 822 class="text-decoration-none city-link"> 823 Vaughan 824 </a> 825 </div> 826 827 <div class="col-md-3 col-lg-2"> 828 <a href="/ev-charger-installation/wasaga-beach/" 829 class="text-decoration-none city-link"> 830 Wasaga Beach 831 </a> 832 </div> 833 834 <div class="col-md-3 col-lg-2"> 835 <a href="/ev-charger-installation/waterloo/" 836 class="text-decoration-none city-link"> 837 Waterloo 838 </a> 839 </div> 840 841 <div class="col-md-3 col-lg-2"> 842 <a href="/ev-charger-installation/whitby/" 843 class="text-decoration-none city-link"> 844 Whitby 845 </a> 846 </div> 847 848 <div class="col-md-3 col-lg-2"> 849 <a href="/ev-charger-installation/whitchurch-stouffville/" 850 class="text-decoration-none city-link"> 851 Whitchurch-Stouffville 852 </a> 853 </div> 854 855 </div> 856 </div> 857 858 </div> 859 </div> 860 861 862 </div> 863 </div> 864 865 866 <!-- Middle Section: Newsletter, Logo, Links --> 867 <div class="footer-top-section container mt-5"> 868 <div class="row align-items-start mb-3 mb-md-5"> 869 <!-- Newsletter Form and Logo --> 870 <div class="col-12 newsletter-column mt-3"> 871 <div class="row justify-content-between"> 872 <!-- Newsletter and Logo - Always Visible --> 873 874 <div class="col-md-4 mb-4 ms-4 ms-md-0"> 875 <h4 class="mb-3 mb-md-5 fs-24 fw-semibold">Subscribe to our newsletter</h4> 876 <form class="d-flex mt-2 footer-email-form mb-4" role="form"> 877 <input type="email" class="form-control footer-email-input p-0" placeholder="Email address"> 878 <button type="submit" 879 class="btn btn-primary footer-email-button rounded-top-3 ">></button> 880 </form> 881 <!-- Logo placed below subscribe field --> 882 <div class="footer-logo-img"> 883 <img src="/static/images/logo.png" alt="" width="248" height="62" style="height: 40px; width: auto;" loading="lazy" decoding="async"> 884 </div> 885 </div> 886 887 888 <!-- Mobile Accordion --> 889 890 <div class="col-md-8 d-md-none"> 891 <div class="accordion" id="footerAccordion"> 892 893 894 <div class="accordion-item border-0 bg-primary rounded-3 mb-2"> 895 <h2 class="accordion-header"> 896 <button class="accordion-button collapsed bg-primary text-white rounded-3 py-2" 897 type="button" 898 data-bs-toggle="collapse" 899 data-bs-target="#how-it-worksCollapse" 900 style="box-shadow: none;"> 901 How It Works 902 </button> 903 </h2> 904 <div id="how-it-worksCollapse" class="accordion-collapse collapse" data-bs-parent="#footerAccordion"> 905 <div class="accordion-body bg-white rounded-bottom-3"> 906 <ul class="list-unstyled mb-0"> 907 908 <li class="border-bottom py-2"><a href="/homeowners" class="text-decoration-none text-dark d-block">For EV Owners</a></li> 909 910 <li class="border-bottom py-2">
910<a href="/installers" class="text-decoration-none text-dark d-block">For Installers</a></li> 911 912 <li class="border-bottom py-2"><a href="https://evquotes.ca/guides-category/category/car-guides/" class="text-decoration-none text-dark d-block">Car Guides</a></li> 913 914 <li class="border-bottom py-2"><a href="https://evquotes.ca/guides-category/category/ev-charger-guides/" class="text-decoration-none text-dark d-block">EV Charger Guides</a></li> 915 916 </ul> 917 </div> 918 </div> 919 </div> 920 921 922 923 924 925 926 927 928 929 930 931 <div class="accordion-item border-0 bg-primary rounded-3 mb-2"> 932 <h2 class="accordion-header"> 933 <button class="accordion-button collapsed bg-primary text-white rounded-3 py-2" 934 type="button" 935 data-bs-toggle="collapse" 936 data-bs-target="#aboutCollapse" 937 style="box-shadow: none;"> 938 About 939 </button> 940 </h2> 941 <div id="aboutCollapse" class="accordion-collapse collapse" data-bs-parent="#footerAccordion"> 942 <div class="accordion-body bg-white rounded-bottom-3"> 943 <ul class="list-unstyled mb-0"> 944 945 <li class="border-bottom py-2"><a href="/page/our-story/" class="text-decoration-none text-dark d-block">Our Story</a></li> 946 947 <li class="border-bottom py-2"><a href="/page/careers/" class="text-decoration-none text-dark d-block">Careers</a></li> 948 949 </ul> 950 </div> 951 </div> 952 </div> 953 954 955 956 957 958 959 960 <div class="accordion-item border-0 bg-primary rounded-3 mb-2"> 961 <h2 class="accordion-header"> 962 <button class="accordion-button collapsed bg-primary text-white rounded-3 py-2" 963 type="button" 964 data-bs-toggle="collapse" 965 data-bs-target="#helpCollapse" 966 style="box-shadow: none;"> 967 Help 968 </button> 969 </h2> 970 <div id="helpCollapse" class="accordion-collapse collapse" data-bs-parent="#footerAccordion"> 971 <div class="accordion-body bg-white rounded-bottom-3"> 972 <ul class="list-unstyled mb-0"> 973 974 <li class="border-bottom py-2"><a href="/page/support-desk/" class="text-decoration-none text-dark d-block">Support Desk</a></li> 975 976 <li class="border-bottom py-2"><a href="/page/contact-us/" class="text-decoration-none text-dark d-block">Contact Us</a></li> 977 978 </ul> 979 </div> 980 </div> 981 </div> 982 983 984 985 986 987 988 </div> 989 </div> 990 991 992 <!-- Desktop Links from FooterNavigation (MPTT roots as columns) --> 993 994 995 996 <div class="col-md-2 mb-4 d-none d-md-block"> 997 <h4 class="mb-3 mb-md-5 fs-24 fw-semibold">How It Works</h4> 998 <ul class="list-unstyled d-flex flex-column gap-3"> 999 1000 <li><a href="/homeowners" class="text-decoration-none">For EV Owners</a></li> 1001 1002 <li>
1002<a href="/installers" class="text-decoration-none">For Installers</a></li> 1003 1004 <li><a href="https://evquotes.ca/guides-category/category/car-guides/" class="text-decoration-none">Car Guides</a></li> 1005 1006 <li><a href="https://evquotes.ca/guides-category/category/ev-charger-guides/" class="text-decoration-none">EV Charger Guides</a></li> 1007 1008 </ul> 1009 </div> 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 <div class="col-md-2 mb-4 d-none d-md-block"> 1022 <h4 class="mb-3 mb-md-5 fs-24 fw-semibold">About</h4> 1023 <ul class="list-unstyled d-flex flex-column gap-3"> 1024 1025 <li><a href="/page/our-story/" class="text-decoration-none">Our Story</a></li> 1026 1027 <li><a href="/page/careers/" class="text-decoration-none">Careers</a></li> 1028 1029 </ul> 1030 </div> 1031 1032 1033 1034 1035 1036 1037 1038 <div class="col-md-2 mb-4 d-none d-md-block"> 1039 <h4 class="mb-3 mb-md-5 fs-24 fw-semibold">Help</h4> 1040 <ul class="list-unstyled d-flex flex-column gap-3"> 1041 1042 <li><a href="/page/support-desk/" class="text-decoration-none">Support Desk</a></li> 1043 1044 <li><a href="/page/contact-us/" class="text-decoration-none">Contact Us</a></li> 1045 1046 </ul> 1047 </div> 1048 1049 1050 1051 1052 1053 1054 1055 </div> 1056 </div> 1057 </div> 1058 </div> 1059 1060 1061 <!-- External JavaScript Reference --> 1062
1062<script defer src="/static/js/footer-cities.js"></script>
1062 1063 1064 <!-- Bottom Section --> 1065 <div class="footer-bottom-section"> 1066 <div class="container py-3 py-md-5"> 1067 <div class="d-flex flex-column flex-md-row justify-content-between gap-3 align-items-center"> 1068 <div class="small d-flex align-items-center gap-5"> 1069 1070 1071 <a href="/page/privacy-policy/" class="text-decoration-none blue-footer-text-color fs-16">Privacy Policy</a> 1072 1073 1074 1075 <a href="/page/terms-conditions/" class="text-decoration-none blue-footer-text-color fs-16">General Use Terms</a> 1076 1077 1078 1079 <a href="/page/installer-terms-conditions/" class="text-decoration-none blue-footer-text-color fs-16">Installer Terms & Conditions</a> 1080 1081 1082 1083 <a href="/page/copyright/" class="text-decoration-none blue-footer-text-color fs-16">© 2026 EV Quotes. All Rights Reserved.</a> 1084 1085 1086 </div> 1087 <div class="mt-3 mt-md-0 d-flex align-items-center gap-3"> 1088 <a href="#" class="blue-footer-text-color"><i class="bi bi-facebook"></i></a> 1089 <a href="#" class="blue-footer-text-color"><i class="bi bi-instagram"></i></a> 1090 </div> 1091 </div> 1092 </div> 1093 </div> 1094 1095 1096 1097</footer> 1098 1099 1100
1100<script> 1101 window.addEventListener('load', function() { 1102 if ( 1103 !document.querySelector('.mySwiper') && 1104 !document.querySelector('.testimonialSwiper') && 1105 !document.querySelector('.myBlogSlider') && 1106 !document.querySelector('.freeChargerReviewSwiper') && 1107 !document.querySelector('.project-section-swiper') 1108 ) { 1109 return; 1110 } 1111 1112 var script = document.createElement('script'); 1113 script.src = 'https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js'; 1114 script.onload = function() { 1115 if (document.querySelector('.mySwiper')) { 1116 new Swiper(".mySwiper", { 1117 slidesPerView: 1, 1118 spaceBetween: 40, 1119 pagination: { 1120 el: ".swiper-pagination", 1121 clickable: true, 1122 dynamicMainBullets: 1, 1123 }, 1124 breakpoints: { 1125 768: { 1126 slidesPerView: 1, 1127 spaceBetween: 50, 1128 }, 1129 1024: { 1130 slidesPerView: 4, 1131 spaceBetween: 30, 1132 }, 1133 1400: { 1134 slidesPerView: 4, 1135 spaceBetween: 40, 1136 }, 1137 }, 1138 autoplay: { 1139 delay: 5000, 1140 disableOnInteraction: false, 1141 pauseOnMouseEnter: true, 1142 }, 1143 loop: true, 1144 grabCursor: true, 1145 }); 1146 } 1147 1148 if (document.querySelector('.testimonialSwiper')) { 1149 new Swiper(".testimonialSwiper", { 1150 slidesPerView: 1, 1151 spaceBetween: 0, 1152 pagination: { 1153 el: ".testimonial-mobile-pagination", 1154 clickable: true, 1155 dynamicMainBullets: 1, 1156 }, 1157 breakpoints: { 1158 768: { 1159 slidesPerView: 1, 1160 spaceBetween: 0, 1161 }, 1162 1024: { 1163 slidesPerView: 4, 1164 spaceBetween: 30, 1165 }, 1166 1400: { 1167 slidesPerView: 4, 1168 spaceBetween: 40, 1169 }, 1170 }, 1171 autoplay: { 1172 delay: 5000, 1173 disableOnInteraction: false, 1174 pauseOnMouseEnter: true, 1175 }, 1176 loop: true, 1177 grabCursor: true, 1178 }); 1179 } 1180 1181 if (document.querySelector('.myBlogSlider')) { 1182 new Swiper(".myBlogSlider", { 1183 slidesPerView: 1, 1184 spaceBetween: 30, 1185 pagination: { 1186 el: ".swiper-pagination", 1187 clickable: true, 1188 dynamicMainBullets: 1, 1189 }, 1190 breakpoints: { 1191 768: { 1192 slidesPerView: 2, 1193 spaceBetween: 25, 1194 }, 1195 1024: { 1196 slidesPerView: 3, 1197 spaceBetween: 30, 1198 }, 1199 1200: { 1200 slidesPerView: 3, 1201 spaceBetween: 35, 1202 }, 1203 1400: { 1204 slidesPerView: 4, 1205 spaceBetween: 40, 1206 }, 1207 }, 1208 autoplay: { 1209 delay: 5000, 1210 disableOnInteraction: false, 1211 pauseOnMouseEnter: true, 1212 }, 1213 loop: true, 1214 grabCursor: true, 1215 }); 1216 } 1217 1218 var freeChargerReviewSwiper = document.querySelector('.freeChargerReviewSwiper'); 1219 if (freeChargerReviewSwiper) { 1220 var freeChargerReviewSlides = freeChargerReviewSwiper.querySelectorAll('.swiper-slide').length; 1221 new Swiper(".freeChargerReviewSwiper", { 1222 slidesPerView: 1, 1223 spaceBetween: 16, 1224 breakpoints: { 1225 768: { 1226 slidesPerView: 2, 1227 spaceBetween: 20, 1228 }, 1229 1024: { 1230 slidesPerView: 3, 1231 spaceBetween: 24, 1232 }, 1233 }, 1234 autoplay: freeChargerReviewSlides > 3 ? { 1235 delay: 5000, 1236 disableOnInteraction: false, 1237 pauseOnMouseEnter: true, 1238 } : false, 1239 loop: freeChargerReviewSlides > 3, 1240 grabCursor: true, 1241 }); 1242 } 1243 1244 if (document.querySelector('.project-section-swiper')) { 1245 new Swiper(".project-section-swiper", { 1246 slidesPerView: 1, 1247 spaceBetween: 30, 1248 pagination: { 1249 el: ".swiper-pagination-sm", 1250 clickable: true, 1251 dynamicMainBullets: 1, 1252 }, 1253 breakpoints: { 1254 768: { 1255 slidesPerView: 2, 1256 spaceBetween: 25, 1257 }, 1258 1024: { 1259 slidesPerView: 3, 1260 spaceBetween: 30, 1261 }, 1262 }, 1263 }); 1264 } 1265 }; 1266 document.body.appendChild(script); 1267 }); 1268 </script>
1268 1269 1270 <!-- Bootstrap JS Bundle --> 1271
1271<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
1271 1272 <!-- Toaster Notification System - Reusable Component --> 1273<!-- Include this in any template where you want toaster notifications --> 1274 1275<!-- Toast Container --> 1276<div id="toast-container" class="toast-container"></div> 1277 1278<!-- Toaster Styles --> 1279<style> 1280 /* Toaster Notification Styles */ 1281 .toast-container { 1282 position: fixed; 1283 top: 20px; 1284 right: 20px; 1285 z-index: 1000; 1286 max-width: 400px; 1287 pointer-events: none; 1288 } 1289 1290 .toast { 1291 display: flex; 1292 align-items: center; 1293 gap: 12px; 1294 margin-bottom: 12px; 1295 padding: 16px; 1296 border-radius: 8px; 1297 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); 1298 font-weight: 500; 1299 pointer-events: auto; 1300 transform: translateX(100%); 1301 opacity: 0; 1302 transition: all 0.3s ease; 1303 max-width: 100%; 1304 word-wrap: break-word; 1305 } 1306 1307 .toast.show { 1308 transform: translateX(0); 1309 opacity: 1; 1310 } 1311 1312 .toast.success { 1313 background-color: #10b981; 1314 color: white; 1315 border-left: 4px solid #059669; 1316 } 1317 1318 .toast.error { 1319 background-color: #ef4444; 1320 color: white; 1321 border-left: 4px solid #dc2626; 1322 } 1323 1324 .toast.warning { 1325 background-color: #f59e0b; 1326 color: white; 1327 border-left: 4px solid #d97706; 1328 } 1329 1330 .toast.info { 1331 background-color: #3b82f6; 1332 color: white; 1333 border-left: 4px solid #2563eb; 1334 } 1335 1336 .toast-icon { 1337 flex-shrink: 0; 1338 width: 20px; 1339 height: 20px; 1340 } 1341 1342 .toast-content { 1343 flex: 1; 1344 font-size: 14px; 1345 line-height: 1.4; 1346 } 1347 1348 .toast-close { 1349 background: none; 1350 border: none; 1351 color: inherit; 1352 cursor: pointer; 1353 padding: 0; 1354 width: 20px; 1355 height: 20px; 1356 display: flex; 1357 align-items: center; 1358 justify-content: center; 1359 border-radius: 4px; 1360 transition: background-color 0.2s ease; 1361 flex-shrink: 0; 1362 } 1363 1364 .toast-close:hover { 1365 background-color: rgba(255, 255, 255, 0.2); 1366 } 1367 1368 @media (max-width: 640px) { 1369 .toast-container { 1370 top: 10px; 1371 right: 10px; 1372 left: 10px; 1373 max-width: none; 1374 } 1375 } 1376</style> 1377 1378<!-- Toaster JavaScript -->
1379<script> 1380 // Toaster Notification System 1381 class ToastManager { 1382 constructor() { 1383 this.container = document.getElementById('toast-container'); 1384 this.toasts = []; 1385 } 1386 1387 show(message, type = 'info', duration = 5000) { 1388 const toast = this.createToast(message, type); 1389 this.container.appendChild(toast); 1390 this.toasts.push(toast); 1391 1392 // Trigger animation 1393 setTimeout(() => { 1394 toast.classList.add('show'); 1395 }, 10); 1396 1397 // Auto remove 1398 setTimeout(() => { 1399 this.remove(toast); 1400 }, duration); 1401 1402 return toast; 1403 } 1404 1405 createToast(message, type) { 1406 const toast = document.createElement('div'); 1407 toast.className = `toast ${type}`; 1408 1409 const icon = this.getIcon(type); 1410 1411 toast.innerHTML = ` 1412 <div class="toast-icon">${icon}</div> 1413 <div class="toast-content">${message}</div> 1414 <button class="toast-close" onclick="window.toastManager.remove(this.parentElement)"> 1415 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 1416 <line x1="18" y1="6" x2="6" y2="18"></line> 1417 <line x1="6" y1="6" x2="18" y2="18"></line> 1418 </svg> 1419 </button> 1420 `; 1421 1422 return toast; 1423 } 1424 1425 getIcon(type) { 1426 const icons = { 1427 success: `<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 1428 <polyline points="20,6 9,17 4,12"></polyline> 1429 </svg>`, 1430 error: `<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 1431 <circle cx="12" cy="12" r="10"></circle> 1432 <line x1="15" y1="9" x2="9" y2="15"></line> 1433 <line x1="9" y1="9" x2="15" y2="15"></line> 1434 </svg>`, 1435 warning: `<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 1436 <path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"></path> 1437 <line x1="12" y1="9" x2="12" y2="13"></line> 1438 <line x1="12" y1="17" x2="12.01" y2="17"></line> 1439 </svg>`, 1440 info: `<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 1441 <circle cx="12" cy="12" r="10"></circle> 1442 <line x1="12" y1="16" x2="12" y2="12"></line> 1443 <line x1="12" y1="8" x2="12.01" y2="8"></line> 1444 </svg>` 1445 }; 1446 return icons[type] || icons.info; 1447 } 1448 1449 remove(toast) { 1450 if (!toast || !toast.parentElement) return; 1451 1452 toast.classList.remove('show'); 1453 1454 setTimeout(() => { 1455 if (toast.parentElement) { 1456 toast.parentElement.removeChild(toast); 1457 } 1458 this.toasts = this.toasts.filter(t => t !== toast); 1459 }, 300); 1460 } 1461 1462 success(message, duration = 5000) { 1463 return this.show(message, 'success', duration); 1464 } 1465 1466 error(message, duration = 7000) { 1467 return this.show(message, 'error', duration); 1468 } 1469 1470 warning(message, duration = 6000) { 1471 return this.show(message, 'warning', duration); 1472 } 1473 1474 info(message, duration = 5000) { 1475 return this.show(message, 'info', duration); 1476 } 1477 } 1478 1479 // Initialize toast manager globally 1480 if (typeof window.toastManager === 'undefined') { 1481 window.toastManager = new ToastManager(); 1482 } 1483 1484 // Global helper functions 1485 window.showSuccessToast = function(message, duration) { 1486 return window.toastManager.success(message, duration); 1487 }; 1488 1489 window.showErrorToast = function(message, duration) { 1490 return window.toastManager.error(message, duration); 1491 }; 1492 1493 window.showWarningToast = function(message, duration) { 1494 return window.toastManager.warning(message, duration); 1495 }; 1496 1497 window.showInfoToast = function(message, duration) { 1498 return window.toastManager.info(message, duration); 1499 }; 1500</script>
1500 1501 <!-- Include Django Messages Integration --> 1502 <!-- Django Messages to Toaster Integration --> 1503<!-- Include this AFTER including toaster.html to automatically show Django messages as toasts --> 1504 1505 1506 1507 <!-- PWA Registration - Service worker and install button available across entire app --> 1508 <!-- Push subscriptions only enabled in dashboard pages (installer_base.html, homeowner_base.html) --> 1509 1510 1511 1512 <template id="delayed-header-scripts"> 1513
1513<script type="text/javascript"> 1514 (function(c,l,a,r,i,t,y){ 1515 c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; 1516 t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i; 1517 y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); 1518 })(window, document, "clarity", "script", "vm6y569o5p"); 1519</script>
1519 1520 1521<!-- Google tag (gtag.js) -->
vendor: 65 bytes, lines 1521-1522
1521 1522<script async src="https://www.googletagmanager.com/gtag/js?id=
1522AW-10996390203
vendor: 13 bytes, line 1522
1522"></script>
1523<script> 1524
vendor: 138 bytes, lines 1524-1528
1524window.dataLayer = window.dataLayer || []; 1525 function gtag(){dataLayer.push(arguments);} 1526 gtag('js', new Date()); 1527 1528 gtag('config', '
1528AW-10996390203
vendor: 5 bytes, line 1528
1528');
1529</script>
1529 1530 1531<!-- Google tag (gtag.js) -->
vendor: 65 bytes, lines 1531-1532
1531 1532<script async src="https://www.googletagmanager.com/gtag/js?id=
1532G-2ZKMMGQKY8
vendor: 13 bytes, line 1532
1532"></script>
1533<script> 1534
vendor: 138 bytes, lines 1534-1538
1534window.dataLayer = window.dataLayer || []; 1535 function gtag(){dataLayer.push(arguments);} 1536 gtag('js', new Date()); 1537 1538 gtag('config', '
1538G-2ZKMMGQKY8
vendor: 5 bytes, line 1538
1538');
1539</script>
1539 1540 1541<!-- Affiliatable Base Code -->
1541<script src="https://cdn.affiliatable.io/5670e55e4d3459091885818c74beba82.js" async></script>
1541 <!-- /Affiliatable Base Code --> 1542 1543 1544<!-- Meta Pixel Code -->
1545<script>
vendor: 408 bytes, lines 1545-1554
1545 1546!function(f,b,e,v,n,t,s) 1547{if(f.fbq)return;n=f.fbq=function(){n.callMethod? 1548n.callMethod.apply(n,arguments):n.queue.push(arguments)}; 1549if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; 1550n.queue=[];t=b.createElement(e);t.async=!0; 1551t.src=v;s=b.getElementsByTagName(e)[0]; 1552s.parentNode.insertBefore(t,s)}(window, document,'script', 1553'https://connect.facebook.net/en_US/fbevents.js'); 1554fbq('init', '
1554379186429790656
vendor: 32 bytes, lines 1554-1555
1554'); 1555fbq('track', 'PageView');
1556</script>
1556 1557<noscript><img height="1" width="1" style="display:none" 1558src="https://www.facebook.com/tr?id=1746627840101898&ev=PageView&noscript=1" 1559/></noscript> 1560<!-- End Meta Pixel Code --> 1561 </template> 1562
1562<script> 1563 window.addEventListener('load', function() { 1564 function loadDelayedHeaderScripts() { 1565 var template = document.getElementById('delayed-header-scripts'); 1566 if (!template || window.__delayedHeaderScriptsLoaded) return; 1567 window.__delayedHeaderScriptsLoaded = true; 1568 1569 Array.prototype.forEach.call(template.content.childNodes, function(node) { 1570 if (node.tagName && node.tagName.toLowerCase() === 'script') { 1571 var script = document.createElement('script'); 1572 Array.prototype.forEach.call(node.attributes, function(attr) { 1573 script.setAttribute(attr.name, attr.value); 1574 }); 1575 script.text = node.textContent; 1576 document.body.appendChild(script); 1577 return; 1578 } 1579 1580 document.body.appendChild(node.cloneNode(true)); 1581 }); 1582 } 1583 1584 setTimeout(loadDelayedHeaderScripts, 2500); 1585 }); 1586 </script>
1586 1587 1588 1589 1590 1591</body> 1592 1593</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.