{"id":14,"date":"2023-07-25T10:34:20","date_gmt":"2023-07-25T14:34:20","guid":{"rendered":"https:\/\/c340f6e8a7.nxcli.io\/?page_id=14"},"modified":"2026-01-20T14:43:18","modified_gmt":"2026-01-20T19:43:18","slug":"carepatrol-of-huntsville-birmingham-montgomery","status":"publish","type":"page","link":"https:\/\/carepatrol.ca\/central-toronto\/","title":{"rendered":"Home"},"content":{"rendered":"\n<h2>\n\t\t\tOur Trusted Experts Are <br \/>Here to Help.\t<\/h2>\n\t<p>In a moment, life changes. Speak with our Local Senior Care Advisors to get started. <strong>Contact<\/strong> our team to learn more.<\/p>\n\t<div class=\"fl-builder-content fl-builder-content-5721 fl-builder-template fl-builder-layout-template fl-builder-global-templates-locked\" data-post-id=\"5721\"><div class=\"fl-row fl-row-full-width fl-row-bg-none fl-node-lokngzi5bpcq fl-row-default-height fl-row-align-center\" data-node=\"lokngzi5bpcq\">\n\t<div class=\"fl-row-content-wrap\">\n\t\t\t\t\t\t<div class=\"fl-row-content fl-row-fixed-width fl-node-content\">\n\t\t\n<div class=\"fl-col-group fl-node-v65ogqs347ec\" data-node=\"v65ogqs347ec\">\n\t\t\t<div id=\"ConnectFormContainer\" class=\"fl-col fl-node-9xio8gty4pkh fl-col-bg-color\" data-node=\"9xio8gty4pkh\">\n\t<div class=\"fl-col-content fl-node-content\"><div id=\"ConnectFormHeading\" class=\"fl-module fl-module-heading fl-node-t8ko7gxa0ci3\" data-node=\"t8ko7gxa0ci3\">\n\t<div class=\"fl-module-content fl-node-content\">\n\t\t<h2 class=\"fl-heading\">\n\t\t<span class=\"fl-heading-text\">Looking for Senior Care Options?<\/span>\n\t<\/h2>\n\t<\/div>\n<\/div>\n<div id=\"ConnectFormHeading\" class=\"fl-module fl-module-heading fl-node-6ajldv0xnhzp\" data-node=\"6ajldv0xnhzp\">\n\t<div class=\"fl-module-content fl-node-content\">\n\t\t<h2 class=\"fl-heading\">\n\t\t<span class=\"fl-heading-text\">We'll find your perfect solution.<\/span>\n\t<\/h2>\n\t<\/div>\n<\/div>\n<div id=\"ConnectForm\" class=\"fl-module fl-module-html fl-node-4sv6lc7w1p9z\" data-node=\"4sv6lc7w1p9z\">\n\t<div class=\"fl-module-content fl-node-content\">\n\t\t<div class=\"fl-html\">\n\t<script charset=\"utf-8\" type=\"text\/javascript\" src=\"\/\/js.hsforms.net\/forms\/embed\/v2.js\"><\/script>\n<script data-hubspot-rendered=\"true\">\n  hbspt.forms.create({\n    region: \"na1\",\n    portalId: \"289861\",\n    formId: \"c99c2486-2237-409e-829c-bc56f5a3b3ea\",\n  });\n<\/script>\n\n<script>\n  document.addEventListener(\"DOMContentLoaded\", function () {\n    setTimeout(function () {\n      var customSubmitButton = document.querySelector(\"#CustomSubmit\");\n      var mainHubspotForm = document.querySelector(\"#hsForm_c99c2486-2237-409e-829c-bc56f5a3b3ea\");\n      var spinner = document.querySelector(\"#ConnectForm .form-overlay\");\n\n      if (customSubmitButton) {\n        customSubmitButton.addEventListener(\"click\", function (e) {\n          e.preventDefault(); \/\/ Prevent form submission until validation passes\n\n          if (spinner) {\n            spinner.style.display = \"flex\"; \/\/ Show overlay with flex to center spinner\n          }\n\n          var isValid = validateForm(mainHubspotForm);\n\n          if (isValid) {\n            \/\/ Get the zip code value\n            var mainZipCode = mainHubspotForm.querySelector('input[name=\"zip\"]').value;\n\n            \/\/ Make an Ajax request to the WordPress admin-ajax.php file\n            makeAjaxRequest(mainZipCode, function (response) {\n              \/\/ Check if the response contains a valid HubSpot ID\n              if (response && response.hubspot_id) {\n                \/\/ Update the franchise_id input field\n                mainHubspotForm.querySelector('input[name=\"franchise_id\"]').value = response.hubspot_id;\n\n                \/\/ Simulate clicking the actual form submit button\n                if (mainHubspotForm) {\n                  \/\/ Update the franchise_id input field before submitting\n                  mainHubspotForm.querySelector('input[name=\"franchise_id\"]').value = response.hubspot_id;\n                  mainHubspotForm.submit();\n                }\n\n                \/\/ Check for the presence of .submitted-message continuously\n                var intervalId = setInterval(function () {\n                  var mainSubmittedMessage = document.querySelector(\".hs-form-c99c2486-2237-409e-829c-bc56f5a3b3ea\");\n\n                  if (mainSubmittedMessage) {\n                    \/\/ Hide or remove the submit button\n                    customSubmitButton.style.display = \"none\"; \/\/ You can use 'none' to hide, or 'remove()' to completely remove\n\n                    \/\/ Hide the overlay once the form is submitted\n                    if (spinner) {\n                      spinner.style.display = \"none\"; \/\/ Hide the overlay\n                    }\n\n                    clearInterval(intervalId); \/\/ Stop the interval once .submitted-message is found\n                  }\n                }, 500); \/\/ Check every 500 milliseconds\n              } else {\n                console.error(\"Error: Unable to retrieve HubSpot ID from server.\");\n                \/\/ Hide overlay if there was an error\n                if (spinner) {\n                  spinner.style.display = \"none\"; \/\/ Hide the overlay\n                }\n              }\n            });\n\n            \/\/ Continue with your existing form submission logic\n            \/\/ mainHubspotForm.submit();\n          } else {\n            \/\/ Hide the spinner if validation fails\n            spinner.style.display = \"none\";\n          }\n        });\n      } else {\n        console.error(\"#CustomSubmit button not found on the page.\");\n      }\n    }, 1500);\n  });\n\n  function makeAjaxRequest(mainZipCode, callback) {\n    var xhr = new XMLHttpRequest();\n    xhr.open(\"POST\", \"\/wp-admin\/admin-ajax.php\");\n    xhr.setRequestHeader(\"Content-Type\", \"application\/x-www-form-urlencoded\");\n\n    xhr.onload = function () {\n      if (xhr.status === 200) {\n        var response = JSON.parse(xhr.responseText);\n        callback(response);\n      } else {\n        console.error(\"Error during AJAX request:\", xhr.status, xhr.statusText);\n      }\n    };\n\n    xhr.onerror = function () {\n      console.error(\"Network error during AJAX request\");\n    };\n\n    \/\/ Use the correct action parameter\n    xhr.send(\"action=handle_zipcode_request&zip_code=\" + encodeURIComponent(mainZipCode));\n  }\n\n  function validateForm(form) {\n    var isValid = true;\n\n    \/\/ Clear all previous error messages before starting validation\n    clearAllErrorMessages(form);\n\n    \/\/ Validate First Name (required field)\n    var firstNameInput = form.querySelector('input[name=\"firstname\"]');\n    var firstNameError = getErrorElement(firstNameInput);\n    if (firstNameInput.value.trim() === \"\") {\n      firstNameError.textContent = \"First name is required.\";\n      isValid = false;\n    }\n\n    \/\/ Validate Last Name (required field)\n    var lastNameInput = form.querySelector('input[name=\"lastname\"]');\n    var lastNameError = getErrorElement(lastNameInput);\n    if (lastNameInput.value.trim() === \"\") {\n      lastNameError.textContent = \"Last name is required.\";\n      isValid = false;\n    }\n\n    \/\/ Validate Postal Code (Canadian format: alternating letter-number)\nvar zipInput = form.querySelector('input[name=\"zip\"]');\nvar zipError = getErrorElement(zipInput);\nif (!\/^[A-Za-z]\\d[A-Za-z](?: ?\\d[A-Za-z]\\d)?$\/.test(zipInput.value)) {\n  zipError.textContent = \"Please enter a valid Canadian postal code (e.g., A1A 1A1 or A1A).\";\n  isValid = false;\n}\n\n    \/\/ Validate Phone Number (US phone number)\n    var phoneInput = form.querySelector('input[name=\"phone\"]');\n    var phoneError = getErrorElement(phoneInput);\n    if (!\/^\\(?([0-9]{3})\\)?[-.\u25cf]?([0-9]{3})[-.\u25cf]?([0-9]{4})$\/.test(phoneInput.value)) {\n      phoneError.textContent = \"Please enter a valid Canadian phone number.\";\n      isValid = false;\n    }\n\n    \/\/ Validate Email\n    var emailInput = form.querySelector('input[name=\"email\"]');\n    var emailError = getErrorElement(emailInput);\n    if (!\/^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$\/.test(emailInput.value)) {\n      emailError.textContent = \"Please enter a valid email address.\";\n      isValid = false;\n    }\n\n    \/\/ Validate Dropdown\n    var dropdownInput = form.querySelector('select[name=\"how_can_we_help_you_2025\"]');\n    var dropdownError = getErrorElement(dropdownInput);\n    if (dropdownInput.value === \"\") {\n      dropdownError.textContent = \"Please select an option.\";\n      isValid = false;\n    }\n\n    \/\/ Validate Text Input (required field)\n    var textInput = form.querySelector('textarea[name=\"other_information_you_want_to_share_\"]');\n    var textError = getErrorElement(textInput);\n    if (textInput.value.trim() === \"\") {\n      textError.textContent = \"This field is required.\";\n      isValid = false;\n    }\n\n    return isValid;\n  }\n\n  \/\/ Function to clear all error messages\n  function clearAllErrorMessages(form) {\n    var errorMessages = form.querySelectorAll(\".error-message\");\n    errorMessages.forEach(function (errorMessage) {\n      errorMessage.textContent = \"\"; \/\/ Clear the error text\n    });\n  }\n\n  \/\/ Function to create or get the error message element\n  function getErrorElement(inputElement) {\n    \/\/ Check for an existing error message\n    var errorElement = inputElement.nextElementSibling;\n\n    \/\/ If it exists but isn't the error message, create a new one\n    if (!errorElement || !errorElement.classList.contains(\"error-message\")) {\n      errorElement = document.createElement(\"div\");\n      errorElement.className = \"error-message\";\n      errorElement.style.color = \"red\";\n      inputElement.parentNode.insertBefore(errorElement, inputElement.nextSibling);\n    }\n    return errorElement;\n  }\n<\/script>\n<div class=\"asterisk\">*Indicates required questions<\/div>\n<button id=\"CustomSubmit\">Send Request<\/button>\n<div class=\"ConnectPhone\">\n    <div>or call<\/div>\n    <div class=\"phone\"><a href=\"tel:(416) 399-5806\">(416) 399-5806<\/a><\/div>\n<\/div>\n\n<div class=\"ConnectFormCallout\">Services vary by community. With CarePatrol on your side, you\u2019ll know your needs will be met.<\/div>\n<div class=\"form-overlay\">\n  <div class=\"spinner\"><\/div>\n<\/div>\n\n<\/div>\n\t<\/div>\n<\/div>\n<\/div>\n<\/div>\n\t<\/div>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n<\/div>\n<h2>\n\t\t\tWe are your trusted <br \/>guide in this process\t<\/h2>\n<h2>\n\t\t\tWe help families find:\t<\/h2>\n<figure itemscope itemtype=\"https:\/\/schema.org\/ImageObject\">\n\t\t\t\t<img decoding=\"async\" src=\"https:\/\/carepatrol.ca\/central-toronto\/wp-content\/uploads\/sites\/393\/2024\/07\/GettyImages-1071065744-3.jpg\" alt=\"GettyImages-1071065744 (3)\" height=\"1649\" width=\"2256\" title=\"GettyImages-1071065744 (3)\" onerror=\"this.style.display='none'\" loading=\"lazy\" \/>\n\t<\/figure>\n<h2>\n\t\t\tTestimonials from Our Verified Customers\t<\/h2>\n\t\t\t<a href=\"https:\/\/app.listen360.com\/organizations\/2835632886631181125\/reviews\/public\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t\t\t\tRead More Reviews\n\t\t\t\t\t<\/a>\n<h2>\n\t\t\tLatest Articles\t<\/h2>\n<h2>\n\t\t\tCertifications\t<\/h2>\n\t<style id=\"sp_lcp_dynamic_css1677\">div#logo-carousel-free-1677.logo-carousel-free .sp-lc-logo{border: 0px none #dddddd;border-radius: 0px;overflow: hidden;}div#logo-carousel-free-1677.logo-carousel-free .sp-lc-logo:hover{border-color: #16a08b;}@media only screen and (max-width: 576px) {#logo-carousel-free-1677.sp-lc-container .sp-lc-button-prev,#logo-carousel-free-1677.sp-lc-container .sp-lc-button-next {display: none;}#logo-carousel-free-1677.sp-lc-container .sp-lc-pagination .swiper-pagination-bullet {display: none;}} .logo-carousel-free-area#logo-carousel-free-1677{position: relative;}#lcp-preloader-1677{position: absolute;left: 0;top: 0;height: 100%;width: 100%;text-align: center;display: flex;align-items: center;justify-content: center;background: #fff;z-index: 9999;} .logo-carousel-free-area#logo-carousel-free-1677 .sp-logo-carousel-section-title{margin-bottom: 30px;}#logo-carousel-free-1677 .sp-lc-grid-container { justify-content: left; align-items: center; } #logo-carousel-free-1677 .swiper-wrapper .swiper-slide { align-self: center; }#logo-carousel-free-1677 .sp-lc-grid-container {margin-left: -20px;margin-right: -20px;width: calc( 100% + 40px);}#logo-carousel-free-1677 .sp-lc-grid-container [class*=\"lc-col\"] {padding-left: 20px;padding-right: 20px;padding-bottom: 0px;}@media screen and (min-width: 1200px ){.logo-carousel-free-area#logo-carousel-free-1677 .sp-logo-carousel:not([class*=\"-initialized\"]) > .swiper-wrapper {display: flex;width: calc( 100% + 40px );}.logo-carousel-free-area#logo-carousel-free-1677 .sp-logo-carousel:not([class*=\"-initialized\"]) > .swiper-wrapper > .swiper-slide {width: 25%;padding-right: 40px;}}<\/style>\n<div id='logo-carousel-free-1677' class=\"logo-carousel-free logo-carousel-free-area sp-lc-container\">\n\t\t\t<div id=\"lcp-preloader-1677\" class=\"sp-logo-carousel-preloader\"><img decoding=\"async\" src=\"https:\/\/carepatrol.ca\/central-toronto\/wp-content\/plugins\/logo-carousel-free\/admin\/assets\/images\/spinner.svg\" class=\"skip-lazy\" alt=\"Loader Image\"\/><\/div>\n\t\t\t<div id=\"sp-logo-carousel-id-1677\" class=\"swiper-container sp-logo-carousel  lcp-preloader\" dir=\"ltr\" data-carousel='{ \"speed\":600,\"spaceBetween\": 40, \"autoplay\": true, \"infinite\":false, \"autoplay_speed\": 3000, \"stop_onHover\": true, \"pagination\": false, \"navigation\": false, \"MobileNav\": false, \"MobilePagi\": false, \"simulateTouch\": true,\"freeMode\": false,\"swipeToSlide\": false, \"carousel_accessibility\": true,\"adaptiveHeight\": false,\"allowTouchMove\": true, \"slidesPerView\": { \"lg_desktop\": 4, \"desktop\": 4, \"tablet\": 3, \"mobile\": 1, \"mobile_landscape\": 2 } }' data-carousel-starts-onscreen=\"false\">\n\t\t<div class=\"swiper-wrapper\">\n\t\t\t\t<div class=\"swiper-slide\"><div class=\"sp-lc-logo\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/carepatrol.ca\/central-toronto\/wp-content\/uploads\/sites\/393\/2024\/07\/CPCA_1337by746CC-2.png\" title=\"\" alt=\"Certified Professional Consultant on Aging CPCA\" width=\"1180\" height=\"568\" class=\"sp-lc-image\"><\/div><\/div>\n\t\t<div class=\"swiper-slide\"><div class=\"sp-lc-logo\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/carepatrol.ca\/central-toronto\/wp-content\/uploads\/sites\/393\/2024\/07\/AFB_Logo_MASTER_withAlliance_trans-.png\" title=\"\" alt=\"AFB Age-Friendly Business Alliance\" width=\"763\" height=\"365\" class=\"sp-lc-image\"><\/div><\/div>\n\t\t\t<\/div>\n\n\t\t\t<\/div>\n<\/div>\n\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":200,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"class_list":["post-14","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/carepatrol.ca\/central-toronto\/wp-json\/wp\/v2\/pages\/14","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/carepatrol.ca\/central-toronto\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/carepatrol.ca\/central-toronto\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/carepatrol.ca\/central-toronto\/wp-json\/wp\/v2\/users\/200"}],"replies":[{"embeddable":true,"href":"https:\/\/carepatrol.ca\/central-toronto\/wp-json\/wp\/v2\/comments?post=14"}],"version-history":[{"count":11,"href":"https:\/\/carepatrol.ca\/central-toronto\/wp-json\/wp\/v2\/pages\/14\/revisions"}],"predecessor-version":[{"id":8178,"href":"https:\/\/carepatrol.ca\/central-toronto\/wp-json\/wp\/v2\/pages\/14\/revisions\/8178"}],"wp:attachment":[{"href":"https:\/\/carepatrol.ca\/central-toronto\/wp-json\/wp\/v2\/media?parent=14"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}